aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig33
-rw-r--r--.gitignore13
-rw-r--r--.gitmodules3
-rw-r--r--.travis.yml64
-rw-r--r--ChangeLog1498
-rw-r--r--LICENSE2
-rw-r--r--Makefile.am23
-rw-r--r--ReleaseNotes1409
-rw-r--r--acinclude.m42
-rw-r--r--changes/bug160824
-rw-r--r--changes/bug178576
-rw-r--r--changes/bug181005
-rw-r--r--changes/bug194187
-rw-r--r--changes/bug200593
-rw-r--r--changes/bug202706
-rw-r--r--changes/bug205095
-rw-r--r--changes/bug207117
-rw-r--r--changes/bug208949
-rw-r--r--changes/bug21007_case24
-rw-r--r--changes/bug210278
-rw-r--r--changes/bug21074_downgrade4
-rw-r--r--changes/bug211163
-rw-r--r--changes/bug21278_extras3
-rw-r--r--changes/bug21278_prevention4
-rw-r--r--changes/bug21369_check3
-rw-r--r--changes/bug214154
-rw-r--r--changes/bug214203
-rw-r--r--changes/bug214474
-rw-r--r--changes/bug214504
-rw-r--r--changes/bug214715
-rw-r--r--changes/bug214723
-rw-r--r--changes/bug214925
-rw-r--r--changes/bug215075
-rw-r--r--changes/bug215537
-rw-r--r--changes/bug215624
-rw-r--r--changes/bug215764
-rw-r--r--changes/bug215815
-rw-r--r--changes/bug215945
-rw-r--r--changes/bug215965
-rw-r--r--changes/bug216823
-rw-r--r--changes/bug217205
-rw-r--r--changes/bug217715
-rw-r--r--changes/bug217996
-rw-r--r--changes/bug218256
-rw-r--r--changes/bug21894_0295
-rw-r--r--changes/bug219436
-rw-r--r--changes/bug219693
-rw-r--r--changes/bug220344
-rw-r--r--changes/bug221597
-rw-r--r--changes/bug222125
-rw-r--r--changes/bug222455
-rw-r--r--changes/bug222466
-rw-r--r--changes/bug222523
-rw-r--r--changes/bug222863
-rw-r--r--changes/bug223472
-rw-r--r--changes/bug223565
-rw-r--r--changes/bug223704
-rw-r--r--changes/bug224473
-rw-r--r--changes/bug22460_case116
-rw-r--r--changes/bug22460_case28
-rw-r--r--changes/bug22466_regenerate8
-rw-r--r--changes/bug224903
-rw-r--r--changes/bug22502_part112
-rw-r--r--changes/bug225205
-rw-r--r--changes/bug226694
-rw-r--r--changes/bug226704
-rw-r--r--changes/bug22670_024
-rw-r--r--changes/bug22670_036
-rw-r--r--changes/bug226725
-rw-r--r--changes/bug227025
-rw-r--r--changes/bug227197
-rw-r--r--changes/bug227209
-rw-r--r--changes/bug227515
-rw-r--r--changes/bug22752_simple6
-rw-r--r--changes/bug228305
-rw-r--r--changes/bug22838_0285
-rw-r--r--changes/bug22883-config7
-rw-r--r--changes/bug22883-priority8
-rw-r--r--changes/bug228924
-rw-r--r--changes/bug229276
-rw-r--r--changes/bug230535
-rw-r--r--changes/bug230715
-rw-r--r--changes/bug230774
-rw-r--r--changes/bug23105-diagnostic4
-rw-r--r--changes/bug231393
-rw-r--r--changes/bug231554
-rw-r--r--changes/bug232334
-rw-r--r--changes/bug232755
-rw-r--r--changes/bug2331811
-rw-r--r--changes/bug235334
-rw-r--r--changes/bug235513
-rw-r--r--changes/bug235684
-rw-r--r--changes/bug236084
-rw-r--r--changes/bug23693.14
-rw-r--r--changes/bug238173
-rw-r--r--changes/bug239083
-rw-r--r--changes/bug240867
-rw-r--r--changes/bug240994
-rw-r--r--changes/bug241703
-rw-r--r--changes/bug241984
-rw-r--r--changes/bug242623
-rw-r--r--changes/bug24826_0314
-rw-r--r--changes/bug248543
-rw-r--r--changes/bug248594
-rw-r--r--changes/bug248988
-rw-r--r--changes/bug24898-0296
-rw-r--r--changes/bug249525
-rw-r--r--changes/bug249693
-rw-r--r--changes/bug249787
-rw-r--r--changes/bug250703
-rw-r--r--changes/bug252234
-rw-r--r--changes/bug252493
-rw-r--r--changes/bug25249.23
-rw-r--r--changes/bug256293
-rw-r--r--changes/bug260075
-rw-r--r--changes/bug260695
-rw-r--r--changes/bug260725
-rw-r--r--changes/bug261167
-rw-r--r--changes/bug261585
-rw-r--r--changes/bug261964
-rw-r--r--changes/bug262723
-rw-r--r--changes/coveralls3
-rw-r--r--changes/diagnose_227524
-rw-r--r--changes/feature215705
-rw-r--r--changes/feature253134
-rw-r--r--changes/feature26372_0294
-rw-r--r--changes/geoip-2018-02-074
-rw-r--r--changes/geoip-2018-03-084
-rw-r--r--changes/geoip-2018-04-034
-rw-r--r--changes/geoip-2018-05-014
-rw-r--r--changes/geoip-2018-06-074
-rw-r--r--changes/geoip-april20174
-rw-r--r--changes/geoip-february20174
-rw-r--r--changes/geoip-march20174
-rw-r--r--changes/geoip-may20174
-rw-r--r--changes/more-files4
-rw-r--r--changes/more-threads3
-rw-r--r--changes/multi-priority5
-rw-r--r--changes/new_requirement_pkgconfig5
-rw-r--r--changes/prop275-minimal9
-rw-r--r--changes/task-222074
-rw-r--r--changes/ticket206563
-rw-r--r--changes/ticket215646
-rw-r--r--changes/ticket219536
-rw-r--r--changes/ticket223485
-rw-r--r--changes/ticket228705
-rw-r--r--changes/ticket243153
-rw-r--r--changes/ticket2490213
-rw-r--r--changes/ticket251224
-rw-r--r--changes/ticket251705
-rw-r--r--changes/ticket252024
-rw-r--r--changes/ticket253234
-rw-r--r--changes/ticket257144
-rw-r--r--changes/ticket260623
-rw-r--r--changes/ticket263433
-rw-r--r--changes/travis_distcheck4
-rw-r--r--changes/trove-2017-001.28
-rw-r--r--changes/trove-2017-0046
-rw-r--r--changes/trove-2017-0057
-rw-r--r--changes/trove-2018-001.16
-rw-r--r--changes/trove-2018-0048
-rw-r--r--configure.ac161
-rw-r--r--contrib/win32build/tor-mingw.nsi.in2
-rw-r--r--doc/HACKING/CodingStandards.md7
-rw-r--r--doc/HACKING/HelpfulTools.md13
-rw-r--r--doc/HACKING/ReleasingTor.md77
-rw-r--r--doc/HACKING/Tracing.md91
-rw-r--r--doc/tor.1.txt428
-rw-r--r--doc/torify.1.txt20
-rw-r--r--doc/torrc_format.txt4
-rwxr-xr-xscripts/codegen/fuzzing_include_am.py157
-rwxr-xr-xscripts/codegen/gen_server_ciphers.py2
-rwxr-xr-xscripts/codegen/get_mozilla_ciphers.py2
-rw-r--r--scripts/codegen/makedesc.py2
-rwxr-xr-xscripts/maint/analyze_callgraph.py259
-rwxr-xr-xscripts/maint/display_callgraph.py41
-rw-r--r--scripts/maint/fallback.blacklist20
-rw-r--r--scripts/maint/fallback.whitelist35
-rwxr-xr-xscripts/maint/format_changelog.py4
-rwxr-xr-xscripts/maint/generate_callgraph.sh14
-rwxr-xr-xscripts/maint/redox.py2
-rwxr-xr-xscripts/maint/sortChanges.py2
-rwxr-xr-xscripts/maint/updateCopyright.pl4
-rwxr-xr-xscripts/maint/updateFallbackDirs.py17
-rwxr-xr-xscripts/test/cov-exclude6
-rw-r--r--src/common/Makefile.nmake4
-rw-r--r--src/common/address.c45
-rw-r--r--src/common/address.h4
-rw-r--r--src/common/address_set.c129
-rw-r--r--src/common/address_set.h35
-rw-r--r--src/common/aes.c2
-rw-r--r--src/common/aes.h2
-rw-r--r--src/common/backtrace.c2
-rw-r--r--src/common/backtrace.h2
-rw-r--r--src/common/ciphers.inc21
-rw-r--r--src/common/compat.c21
-rw-r--r--src/common/compat.h6
-rw-r--r--src/common/compat_libevent.c11
-rw-r--r--src/common/compat_libevent.h3
-rw-r--r--src/common/compat_openssl.h2
-rw-r--r--src/common/compat_pthreads.c2
-rw-r--r--src/common/compat_rust.c39
-rw-r--r--src/common/compat_rust.h28
-rw-r--r--src/common/compat_threads.c116
-rw-r--r--src/common/compat_threads.h16
-rw-r--r--src/common/compat_time.c2
-rw-r--r--src/common/compat_time.h2
-rw-r--r--src/common/compat_winthreads.c2
-rw-r--r--src/common/compress.c658
-rw-r--r--src/common/compress.h89
-rw-r--r--src/common/compress_lzma.c357
-rw-r--r--src/common/compress_lzma.h43
-rw-r--r--src/common/compress_none.c53
-rw-r--r--src/common/compress_none.h20
-rw-r--r--src/common/compress_zlib.c304
-rw-r--r--src/common/compress_zlib.h43
-rw-r--r--src/common/compress_zstd.c444
-rw-r--r--src/common/compress_zstd.h43
-rw-r--r--src/common/confline.c527
-rw-r--r--src/common/confline.h53
-rw-r--r--src/common/container.c2
-rw-r--r--src/common/container.h3
-rw-r--r--src/common/crypto.c29
-rw-r--r--src/common/crypto.h6
-rw-r--r--src/common/crypto_curve25519.c2
-rw-r--r--src/common/crypto_curve25519.h2
-rw-r--r--src/common/crypto_ed25519.c18
-rw-r--r--src/common/crypto_ed25519.h2
-rw-r--r--src/common/crypto_format.c2
-rw-r--r--src/common/crypto_format.h2
-rw-r--r--src/common/crypto_pwbox.c2
-rw-r--r--src/common/crypto_s2k.c2
-rw-r--r--src/common/crypto_s2k.h2
-rw-r--r--src/common/di_ops.c2
-rw-r--r--src/common/di_ops.h2
-rw-r--r--src/common/handles.h2
-rw-r--r--src/common/include.am24
-rw-r--r--src/common/log.c6
-rw-r--r--src/common/memarea.c93
-rw-r--r--src/common/memarea.h2
-rw-r--r--src/common/procmon.c2
-rw-r--r--src/common/procmon.h2
-rw-r--r--src/common/pubsub.c2
-rw-r--r--src/common/pubsub.h2
-rw-r--r--src/common/sandbox.c125
-rw-r--r--src/common/sandbox.h2
-rw-r--r--src/common/storagedir.c586
-rw-r--r--src/common/storagedir.h51
-rw-r--r--src/common/testsupport.h2
-rw-r--r--src/common/timers.c28
-rw-r--r--src/common/timers.h6
-rw-r--r--src/common/torgzip.c586
-rw-r--r--src/common/torgzip.h72
-rw-r--r--src/common/torint.h2
-rw-r--r--src/common/torlog.h8
-rw-r--r--src/common/tortls.c82
-rw-r--r--src/common/tortls.h48
-rw-r--r--src/common/util.c296
-rw-r--r--src/common/util.h23
-rw-r--r--src/common/util_bug.c2
-rw-r--r--src/common/util_bug.h2
-rw-r--r--src/common/util_format.c101
-rw-r--r--src/common/util_format.h24
-rw-r--r--src/common/util_process.c2
-rw-r--r--src/common/util_process.h2
-rw-r--r--src/common/workqueue.c150
-rw-r--r--src/common/workqueue.h18
-rw-r--r--src/config/geoip56392
-rw-r--r--src/config/geoip68293
-rw-r--r--src/config/torrc.sample.in9
-rw-r--r--src/ext/byteorder.h67
-rw-r--r--src/ext/csiphash.c36
-rw-r--r--src/ext/ed25519/donna/ed25519-hash-custom.h31
-rw-r--r--src/ext/ed25519/ref10/crypto_hash_sha512.h30
-rw-r--r--src/ext/ht.h2
-rw-r--r--src/ext/include.am2
-rw-r--r--src/ext/keccak-tiny/keccak-tiny-unrolled.c19
m---------src/ext/rust0
-rw-r--r--src/ext/trunnel/trunnel-impl.h2
-rw-r--r--src/ext/trunnel/trunnel.c4
-rw-r--r--src/ext/trunnel/trunnel.h2
-rw-r--r--src/include.am2
-rw-r--r--src/or/Makefile.nmake1
-rw-r--r--src/or/addressmap.c2
-rw-r--r--src/or/addressmap.h2
-rw-r--r--src/or/auth_dirs.inc34
-rw-r--r--src/or/bridges.c24
-rw-r--r--src/or/bridges.h2
-rw-r--r--src/or/buffers.c50
-rw-r--r--src/or/buffers.h6
-rw-r--r--src/or/channel.c259
-rw-r--r--src/or/channel.h105
-rw-r--r--src/or/channelpadding.c793
-rw-r--r--src/or/channelpadding.h45
-rw-r--r--src/or/channeltls.c115
-rw-r--r--src/or/channeltls.h2
-rw-r--r--src/or/circpathbias.c2
-rw-r--r--src/or/circpathbias.h2
-rw-r--r--src/or/circuitbuild.c145
-rw-r--r--src/or/circuitbuild.h5
-rw-r--r--src/or/circuitlist.c64
-rw-r--r--src/or/circuitlist.h2
-rw-r--r--src/or/circuitmux.c2
-rw-r--r--src/or/circuitmux.h2
-rw-r--r--src/or/circuitmux_ewma.c2
-rw-r--r--src/or/circuitmux_ewma.h2
-rw-r--r--src/or/circuitstats.c2
-rw-r--r--src/or/circuitstats.h2
-rw-r--r--src/or/circuituse.c47
-rw-r--r--src/or/circuituse.h2
-rw-r--r--src/or/command.c26
-rw-r--r--src/or/command.h2
-rw-r--r--src/or/config.c545
-rw-r--r--src/or/config.h5
-rw-r--r--src/or/confparse.c182
-rw-r--r--src/or/confparse.h12
-rw-r--r--src/or/connection.c38
-rw-r--r--src/or/connection.h12
-rw-r--r--src/or/connection_edge.c22
-rw-r--r--src/or/connection_edge.h2
-rw-r--r--src/or/connection_or.c72
-rw-r--r--src/or/connection_or.h4
-rw-r--r--src/or/conscache.c626
-rw-r--r--src/or/conscache.h62
-rw-r--r--src/or/consdiff.c1415
-rw-r--r--src/or/consdiff.h98
-rw-r--r--src/or/consdiffmgr.c1900
-rw-r--r--src/or/consdiffmgr.h74
-rw-r--r--src/or/control.c105
-rw-r--r--src/or/control.h11
-rw-r--r--src/or/cpuworker.c39
-rw-r--r--src/or/cpuworker.h10
-rw-r--r--src/or/dircollate.c2
-rw-r--r--src/or/dircollate.h2
-rw-r--r--src/or/directory.c3223
-rw-r--r--src/or/directory.h91
-rw-r--r--src/or/dirserv.c921
-rw-r--r--src/or/dirserv.h87
-rw-r--r--src/or/dirvote.c2
-rw-r--r--src/or/dirvote.h2
-rw-r--r--src/or/dns.c11
-rw-r--r--src/or/dns.h2
-rw-r--r--src/or/dns_structs.h2
-rw-r--r--src/or/dnsserv.c2
-rw-r--r--src/or/dnsserv.h2
-rw-r--r--src/or/dos.c794
-rw-r--r--src/or/dos.h140
-rw-r--r--src/or/entrynodes.c156
-rw-r--r--src/or/entrynodes.h41
-rw-r--r--src/or/ext_orport.c2
-rw-r--r--src/or/ext_orport.h2
-rw-r--r--src/or/fp_pair.c2
-rw-r--r--src/or/fp_pair.h2
-rw-r--r--src/or/geoip.c207
-rw-r--r--src/or/geoip.h31
-rw-r--r--src/or/hibernate.c7
-rw-r--r--src/or/hibernate.h2
-rw-r--r--src/or/hs_cache.c2
-rw-r--r--src/or/hs_cache.h2
-rw-r--r--src/or/hs_circuitmap.c298
-rw-r--r--src/or/hs_circuitmap.h71
-rw-r--r--src/or/hs_common.c95
-rw-r--r--src/or/hs_common.h50
-rw-r--r--src/or/hs_descriptor.c1226
-rw-r--r--src/or/hs_descriptor.h79
-rw-r--r--src/or/hs_intropoint.c101
-rw-r--r--src/or/hs_intropoint.h6
-rw-r--r--src/or/hs_ntor.c626
-rw-r--r--src/or/hs_ntor.h77
-rw-r--r--src/or/hs_service.c47
-rw-r--r--src/or/hs_service.h6
-rw-r--r--src/or/include.am21
-rw-r--r--src/or/keypin.c2
-rw-r--r--src/or/keypin.h2
-rw-r--r--src/or/main.c150
-rw-r--r--src/or/main.h5
-rw-r--r--src/or/microdesc.c115
-rw-r--r--src/or/microdesc.h10
-rw-r--r--src/or/networkstatus.c138
-rw-r--r--src/or/networkstatus.h14
-rw-r--r--src/or/nodelist.c116
-rw-r--r--src/or/nodelist.h6
-rw-r--r--src/or/ntmain.c2
-rw-r--r--src/or/ntmain.h2
-rw-r--r--src/or/onion.c2
-rw-r--r--src/or/onion.h2
-rw-r--r--src/or/onion_fast.c2
-rw-r--r--src/or/onion_fast.h2
-rw-r--r--src/or/onion_ntor.c2
-rw-r--r--src/or/onion_ntor.h2
-rw-r--r--src/or/onion_tap.c4
-rw-r--r--src/or/onion_tap.h2
-rw-r--r--src/or/or.h270
-rw-r--r--src/or/parsecommon.c2
-rw-r--r--src/or/parsecommon.h12
-rw-r--r--src/or/periodic.c2
-rw-r--r--src/or/periodic.h2
-rw-r--r--src/or/policies.c2
-rw-r--r--src/or/policies.h2
-rw-r--r--src/or/protover.c54
-rw-r--r--src/or/protover.h2
-rw-r--r--src/or/reasons.c2
-rw-r--r--src/or/reasons.h2
-rw-r--r--src/or/relay.c138
-rw-r--r--src/or/relay.h2
-rw-r--r--src/or/rendcache.c2
-rw-r--r--src/or/rendcache.h2
-rw-r--r--src/or/rendclient.c29
-rw-r--r--src/or/rendclient.h2
-rw-r--r--src/or/rendcommon.c7
-rw-r--r--src/or/rendcommon.h2
-rw-r--r--src/or/rendmid.c30
-rw-r--r--src/or/rendmid.h2
-rw-r--r--src/or/rendservice.c515
-rw-r--r--src/or/rendservice.h14
-rw-r--r--src/or/rephist.c301
-rw-r--r--src/or/rephist.h29
-rw-r--r--src/or/replaycache.c2
-rw-r--r--src/or/replaycache.h2
-rw-r--r--src/or/router.c189
-rw-r--r--src/or/router.h5
-rw-r--r--src/or/routerkeys.c10
-rw-r--r--src/or/routerkeys.h2
-rw-r--r--src/or/routerlist.c142
-rw-r--r--src/or/routerlist.h15
-rw-r--r--src/or/routerparse.c79
-rw-r--r--src/or/routerparse.h7
-rw-r--r--src/or/routerset.c2
-rw-r--r--src/or/routerset.h2
-rw-r--r--src/or/scheduler.c2
-rw-r--r--src/or/scheduler.h2
-rw-r--r--src/or/shared_random.c10
-rw-r--r--src/or/shared_random.h11
-rw-r--r--src/or/shared_random_state.c3
-rw-r--r--src/or/shared_random_state.h2
-rw-r--r--src/or/statefile.c2
-rw-r--r--src/or/statefile.h2
-rw-r--r--src/or/status.c4
-rw-r--r--src/or/status.h2
-rw-r--r--src/or/tor_main.c2
-rw-r--r--src/or/torcert.c6
-rw-r--r--src/or/torcert.h2
-rw-r--r--src/or/transports.c2
-rw-r--r--src/or/transports.h2
-rw-r--r--src/rust/.cargo/config.in8
-rw-r--r--src/rust/.rustfmt.toml2
-rw-r--r--src/rust/Cargo.lock14
-rw-r--r--src/rust/Cargo.toml7
-rw-r--r--src/rust/include.am6
-rw-r--r--src/rust/tor_util/Cargo.toml13
-rw-r--r--src/rust/tor_util/ffi.rs56
-rw-r--r--src/rust/tor_util/include.am13
-rw-r--r--src/rust/tor_util/lib.rs13
-rw-r--r--src/rust/tor_util/rust_string.rs101
-rw-r--r--src/rust/tor_util/tests/rust_string.rs37
-rw-r--r--src/test/Makefile.nmake3
-rw-r--r--src/test/bench.c25
-rwxr-xr-xsrc/test/bt_test.py2
-rw-r--r--src/test/ed25519_exts_ref.py2
-rw-r--r--src/test/fakechans.h2
-rw-r--r--src/test/fuzz/dict/http2
-rw-r--r--src/test/fuzz/fuzz_consensus.c2
-rw-r--r--src/test/fuzz/fuzz_descriptor.c2
-rw-r--r--src/test/fuzz/fuzz_diff.c69
-rw-r--r--src/test/fuzz/fuzz_diff_apply.c65
-rw-r--r--src/test/fuzz/fuzz_extrainfo.c2
-rw-r--r--src/test/fuzz/fuzz_hsdescv2.c2
-rw-r--r--src/test/fuzz/fuzz_http.c6
-rw-r--r--src/test/fuzz/fuzz_iptsv2.c2
-rw-r--r--src/test/fuzz/fuzz_microdesc.c2
-rw-r--r--src/test/fuzz/fuzz_vrs.c2
-rw-r--r--src/test/fuzz/fuzzing.h2
-rw-r--r--src/test/fuzz/fuzzing_common.c3
-rw-r--r--src/test/fuzz/include.am135
-rwxr-xr-xsrc/test/fuzz_static_testcases.sh2
-rw-r--r--src/test/hs_ntor_ref.py425
-rw-r--r--src/test/hs_test_helpers.c263
-rw-r--r--src/test/hs_test_helpers.h22
-rw-r--r--src/test/include.am71
-rw-r--r--src/test/log_test_helpers.c2
-rw-r--r--src/test/log_test_helpers.h6
-rwxr-xr-xsrc/test/ntor_ref.py2
-rw-r--r--src/test/rend_test_helpers.c2
-rw-r--r--src/test/rend_test_helpers.h2
-rw-r--r--src/test/test-child.c2
-rwxr-xr-xsrc/test/test-network.sh185
-rw-r--r--src/test/test-timers.c2
-rw-r--r--src/test/test.c32
-rw-r--r--src/test/test.h12
-rw-r--r--src/test/test_addr.c26
-rw-r--r--src/test/test_address.c2
-rw-r--r--src/test/test_address_set.c174
-rw-r--r--src/test/test_bt_cl.c2
-rw-r--r--src/test/test_buffers.c178
-rw-r--r--src/test/test_cell_formats.c2
-rw-r--r--src/test/test_cell_queue.c2
-rw-r--r--src/test/test_channel.c2
-rw-r--r--src/test/test_channelpadding.c1128
-rw-r--r--src/test/test_channeltls.c2
-rw-r--r--src/test/test_checkdir.c2
-rw-r--r--src/test/test_circuitbuild.c133
-rw-r--r--src/test/test_circuitlist.c139
-rw-r--r--src/test/test_circuitmux.c2
-rw-r--r--src/test/test_circuituse.c2
-rw-r--r--src/test/test_compat_libevent.c2
-rw-r--r--src/test/test_config.c900
-rw-r--r--src/test/test_connection.c4
-rw-r--r--src/test/test_conscache.c340
-rw-r--r--src/test/test_consdiff.c1184
-rw-r--r--src/test/test_consdiffmgr.c896
-rw-r--r--src/test/test_containers.c2
-rw-r--r--src/test/test_controller.c42
-rw-r--r--src/test/test_controller_events.c2
-rw-r--r--src/test/test_crypto.c117
-rw-r--r--src/test/test_crypto_openssl.c107
-rw-r--r--src/test/test_crypto_slow.c2
-rw-r--r--src/test/test_data.c2
-rw-r--r--src/test/test_dir.c266
-rw-r--r--src/test/test_dir_common.c2
-rw-r--r--src/test/test_dir_common.h2
-rw-r--r--src/test/test_dir_handle_get.c147
-rw-r--r--src/test/test_dos.c497
-rw-r--r--src/test/test_entryconn.c2
-rw-r--r--src/test/test_entrynodes.c2
-rw-r--r--src/test/test_extorport.c6
-rw-r--r--src/test/test_guardfraction.c2
-rw-r--r--src/test/test_handles.c2
-rw-r--r--src/test/test_helpers.c6
-rw-r--r--src/test/test_helpers.h4
-rw-r--r--src/test/test_hs.c55
-rw-r--r--src/test/test_hs_cache.c107
-rw-r--r--src/test/test_hs_descriptor.c452
-rw-r--r--src/test/test_hs_descriptor.inc224
-rw-r--r--src/test/test_hs_intropoint.c149
-rwxr-xr-xsrc/test/test_hs_ntor.sh11
-rw-r--r--src/test/test_hs_ntor_cl.c255
-rw-r--r--src/test/test_hs_service.c155
-rw-r--r--src/test/test_introduce.c2
-rw-r--r--src/test/test_keypin.c2
-rw-r--r--src/test/test_link_handshake.c26
-rw-r--r--src/test/test_logging.c2
-rw-r--r--src/test/test_microdesc.c8
-rw-r--r--src/test/test_nodelist.c2
-rw-r--r--src/test/test_ntor_cl.c2
-rw-r--r--src/test/test_oom.c2
-rw-r--r--src/test/test_oos.c2
-rw-r--r--src/test/test_options.c396
-rw-r--r--src/test/test_policy.c2
-rw-r--r--src/test/test_procmon.c2
-rw-r--r--src/test/test_protover.c173
-rw-r--r--src/test/test_pt.c8
-rw-r--r--src/test/test_pubsub.c2
-rw-r--r--src/test/test_relay.c2
-rw-r--r--src/test/test_relaycell.c2
-rw-r--r--src/test/test_rendcache.c3
-rw-r--r--src/test/test_replay.c2
-rw-r--r--src/test/test_routerkeys.c2
-rw-r--r--src/test/test_routerlist.c2
-rw-r--r--src/test/test_rust.c31
-rwxr-xr-xsrc/test/test_rust.sh13
-rw-r--r--src/test/test_scheduler.c2
-rw-r--r--src/test/test_shared_random.c1
-rw-r--r--src/test/test_slow.c2
-rw-r--r--src/test/test_socks.c2
-rw-r--r--src/test/test_storagedir.c375
-rw-r--r--src/test/test_switch_id.c2
-rw-r--r--src/test/test_threads.c2
-rw-r--r--src/test/test_tortls.c3
-rw-r--r--src/test/test_util.c508
-rw-r--r--src/test/test_util_format.c70
-rw-r--r--src/test/test_util_process.c2
-rw-r--r--src/test/test_util_slow.c6
-rw-r--r--src/test/test_workqueue.c6
-rw-r--r--src/test/testing_common.c14
-rw-r--r--src/test/testing_rsakeys.c2
-rw-r--r--src/tools/include.am25
-rw-r--r--src/tools/tor-checkkey.c89
-rw-r--r--src/tools/tor-gencert.c2
-rw-r--r--src/tools/tor-resolve.c2
-rw-r--r--src/trace/debug.h25
-rw-r--r--src/trace/events.h45
-rw-r--r--src/trace/include.am22
-rw-r--r--src/trace/trace.c11
-rw-r--r--src/trace/trace.h10
-rw-r--r--src/trunnel/channelpadding_negotiation.c281
-rw-r--r--src/trunnel/channelpadding_negotiation.h98
-rw-r--r--src/trunnel/channelpadding_negotiation.trunnel17
-rw-r--r--src/trunnel/hs/cell_common.c179
-rw-r--r--src/trunnel/hs/cell_common.h207
-rw-r--r--src/trunnel/hs/cell_common.trunnel6
-rw-r--r--src/trunnel/hs/cell_establish_intro.c242
-rw-r--r--src/trunnel/hs/cell_establish_intro.h237
-rw-r--r--src/trunnel/hs/cell_establish_intro.trunnel10
-rw-r--r--src/trunnel/hs/cell_introduce1.c398
-rw-r--r--src/trunnel/hs/cell_introduce1.h416
-rw-r--r--src/trunnel/hs/cell_introduce1.trunnel14
-rw-r--r--src/trunnel/include.am9
-rw-r--r--src/win32/orconfig.h2
598 files changed, 79767 insertions, 27195 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..27ed90fafd
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,33 @@
+# this should work for all editors that support .editorconfig!
+#
+# on debian, emacs users should install elpa-editorconfig and vim
+# users should install vim-editorconfig.
+
+root = true
+
+[*]
+indent_style = space
+# this remove final newline in some editors, instead of inserting it
+# insert_final_newline = true
+trim_trailing_whitespace = true
+end_of_line = lf
+charset = utf-8
+max_line_length = 79
+
+[*.py]
+indent_size = 4
+# to do not have final newline in python code
+insert_final_newline = true
+
+[*.c, *.h]
+# done in tests and other cases do not use 2 spaces identations, so this
+# should be commented on those cases
+indent_size = 2
+trim_trailing_whitespace = true
+
+[Makefile, *.am]
+indent_style = tab
+
+[*-spec.txt]
+# specs seem to have 76 chars max per lines as RFCs
+max_line_length = 76 \ No newline at end of file
diff --git a/.gitignore b/.gitignore
index d33b79736d..f2a6dfb493 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,8 @@
.dirstamp
*.trs
*.log
+# Calltool stuff
+.*.graph
# Stuff made by our makefiles
*.bak
# Python droppings
@@ -123,6 +125,9 @@ uptime-*.json
/src/Makefile
/src/Makefile.in
+# /src/trace
+/src/trace/libor-trace.a
+
# /src/common/
/src/common/Makefile
/src/common/Makefile.in
@@ -168,6 +173,12 @@ uptime-*.json
/src/or/libtor-testing.a
/src/or/libtor.lib
+# /src/rust
+/src/rust/.cargo/config
+/src/rust/.cargo/registry
+/src/rust/target
+/src/rust/registry
+
# /src/test
/src/test/Makefile
/src/test/Makefile.in
@@ -179,6 +190,7 @@ uptime-*.json
/src/test/test-child
/src/test/test-memwipe
/src/test/test-ntor-cl
+/src/test/test-hs-ntor-cl
/src/test/test-switch-id
/src/test/test-timers
/src/test/test_workqueue
@@ -187,6 +199,7 @@ uptime-*.json
/src/test/test-bt-cl.exe
/src/test/test-child.exe
/src/test/test-ntor-cl.exe
+/src/test/test-hs-ntor-cl.exe
/src/test/test-memwipe.exe
/src/test/test-switch-id.exe
/src/test/test-timers.exe
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..8f80405650
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "src/ext/rust"]
+ path = src/ext/rust
+ url = https://git.torproject.org/tor-rust-dependencies
diff --git a/.travis.yml b/.travis.yml
index dd8000fe55..8dcbf1fe9d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -60,30 +60,63 @@ env:
global:
## The Travis CI environment allows us two cores, so let's use both.
- MAKEFLAGS="-j 2"
+ 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=""
matrix:
- ## If one build in the matrix fails (e.g. if building withour Rust and Clang
- ## fails, but building with Rust and GCC is still going), then cancel the
- ## entire job early and call the whole thing a failure.
- fast_finish: true
+ ## 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
+ # - 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=""
+ - compiler: gcc
+ env: COVERAGE_OPTIONS="--enable-coverage"
+ - compiler: gcc
+ env: DISTCHECK="yes"
## 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=""
before_install:
## If we're on OSX, homebrew usually needs to updated first
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
## Download rustup
- - curl -Ssf -o rustup.sh https://sh.rustup.rs
+ - if [[ "$RUST_OPTIONS" != "" ]]; then curl -Ssf -o rustup.sh https://sh.rustup.rs; fi
+ - if [[ "$COVERAGE_OPTIONS" != "" ]]; then pip install --user cpp-coveralls; fi
install:
## If we're on OSX use brew to install required dependencies (for Linux, see the "apt:" section above)
@@ -94,13 +127,28 @@ install:
- 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
+ ## 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 [[ "$RUST_OPTIONS" != "" ]]; then which rustc; fi
+ - if [[ "$RUST_OPTIONS" != "" ]]; then which cargo; fi
+ - if [[ "$RUST_OPTIONS" != "" ]]; then rustc --version; fi
+ - if [[ "$RUST_OPTIONS" != "" ]]; then cargo --version; fi
script:
- ./autogen.sh
- - ./configure $RUST_OPTIONS --disable-asciidoc --enable-fatal-warnings --disable-silent-rules --enable-fragile-hardening
+ - ./configure $RUST_OPTIONS $COVERAGE_OPTIONS --disable-asciidoc --enable-fatal-warnings --disable-silent-rules --enable-fragile-hardening
## We run `make check` because that's what https://jenkins.torproject.org does.
- - make check
+ - 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 --enable-fragile-hardening"; fi
after_failure:
## `make check` will leave a log file with more details of test failures.
- - cat test-suite.log
+ - if [[ "$DISTCHECK" == "" ]]; then cat test-suite.log; fi
+ ## `make distcheck` puts it somewhere different.
+ - if [[ "$DISTCHECK" != "" ]]; then make show-distdir-testlog; fi
+
+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
diff --git a/ChangeLog b/ChangeLog
index 7cc4f44881..b1f64c92f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,1500 @@
-Changes in version 0.3.0.4-??? - 2017-02-??
+Changes in version 0.3.1.3-alpha - 2017-06-08
+ Tor 0.3.1.3-alpha fixes a pair of bugs that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-004 and TROVE-2017-005.
+
+ Tor 0.3.1.3-alpha also includes fixes for several key management bugs
+ that sometimes made relays unreliable, as well as several other
+ bugfixes described below.
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure when a hidden service
+ handles a malformed BEGIN cell. Fixes bug 22493, tracked as
+ TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Major bugfixes (relay, link handshake):
+ - When performing the v3 link handshake on a TLS connection, report
+ that we have the x509 certificate that we actually used on that
+ connection, even if we have changed certificates since that
+ connection was first opened. Previously, we would claim to have
+ used our most recent x509 link certificate, which would sometimes
+ make the link handshake fail. Fixes one case of bug 22460; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (relays, key management):
+ - Regenerate link and authentication certificates whenever the key
+ that signs them changes; also, regenerate link certificates
+ whenever the signed key changes. Previously, these processes were
+ only weakly coupled, and we relays could (for minutes to hours)
+ wind up with an inconsistent set of keys and certificates, which
+ other relays would not accept. Fixes two cases of bug 22460;
+ bugfix on 0.3.0.1-alpha.
+ - When sending an Ed25519 signing->link certificate in a CERTS cell,
+ send the certificate that matches the x509 certificate that we
+ used on the TLS connection. Previously, there was a race condition
+ if the TLS context rotated after we began the TLS handshake but
+ before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
+ on 0.3.0.1-alpha.
+
+ o Major bugfixes (torrc, crash):
+ - Fix a crash bug when using %include in torrc. Fixes bug 22417;
+ bugfix on 0.3.1.1-alpha. Patch by Daniel Pinto.
+
+ o Minor features (code style):
+ - Add "Falls through" comments to our codebase, in order to silence
+ GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
+ Stieger. Closes ticket 22446.
+
+ o Minor features (diagnostic):
+ - Add logging messages to try to diagnose a rare bug that seems to
+ generate RSA->Ed25519 cross-certificates dated in the 1970s. We
+ think this is happening because of incorrect system clocks, but
+ we'd like to know for certain. Diagnostic for bug 22466.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+ o Minor bugfixes (directory protocol):
+ - Check for libzstd >= 1.1, because older versions lack the
+ necessary streaming API. Fixes bug 22413; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (link handshake):
+ - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
+ months, and regenerate it when it is within one month of expiring.
+ Previously, we had generated this certificate at startup with a
+ ten-year lifetime, but that could lead to weird behavior when Tor
+ was started with a grossly inaccurate clock. Mitigates bug 22466;
+ mitigation on 0.3.0.1-alpha.
+
+ o Minor bugfixes (storage directories):
+ - Always check for underflows in the cached storage directory usage.
+ If the usage does underflow, re-calculate it. Also, avoid a
+ separate underflow when the usage is not known. Fixes bug 22424;
+ bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (unit tests):
+ - The unit tests now pass on systems where localhost is misconfigured
+ to some IPv4 address other than 127.0.0.1. Fixes bug 6298; bugfix
+ on 0.0.9pre2.
+
+ o Documentation:
+ - Clarify the manpage for the (deprecated) torify script. Closes
+ ticket 6892.
+
+Changes in version 0.3.0.8 - 2017-06-08
+ Tor 0.3.0.8 fixes a pair of bugs that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-004 and TROVE-2017-005.
+
+ Tor 0.3.0.8 also includes fixes for several key management bugs
+ that sometimes made relays unreliable, as well as several other
+ bugfixes described below.
+
+ o Major bugfixes (hidden service, relay, security, backport
+ from 0.3.1.3-alpha):
+ - Fix a remotely triggerable assertion failure when a hidden service
+ handles a malformed BEGIN cell. Fixes bug 22493, tracked as
+ TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
+ - When performing the v3 link handshake on a TLS connection, report
+ that we have the x509 certificate that we actually used on that
+ connection, even if we have changed certificates since that
+ connection was first opened. Previously, we would claim to have
+ used our most recent x509 link certificate, which would sometimes
+ make the link handshake fail. Fixes one case of bug 22460; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (relays, key management, backport from 0.3.1.3-alpha):
+ - Regenerate link and authentication certificates whenever the key
+ that signs them changes; also, regenerate link certificates
+ whenever the signed key changes. Previously, these processes were
+ only weakly coupled, and we relays could (for minutes to hours)
+ wind up with an inconsistent set of keys and certificates, which
+ other relays would not accept. Fixes two cases of bug 22460;
+ bugfix on 0.3.0.1-alpha.
+ - When sending an Ed25519 signing->link certificate in a CERTS cell,
+ send the certificate that matches the x509 certificate that we
+ used on the TLS connection. Previously, there was a race condition
+ if the TLS context rotated after we began the TLS handshake but
+ before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
+ on 0.3.0.1-alpha.
+
+ o Major bugfixes (hidden service v3, backport from 0.3.1.1-alpha):
+ - Stop rejecting v3 hidden service descriptors because their size
+ did not match an old padding rule. Fixes bug 22447; bugfix on
+ tor-0.3.0.1-alpha.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor bugfixes (configuration, backport from 0.3.1.1-alpha):
+ - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
+ bug 22252; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+ o Minor bugfixes (link handshake, backport from 0.3.1.3-alpha):
+ - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
+ months, and regenerate it when it is within one month of expiring.
+ Previously, we had generated this certificate at startup with a
+ ten-year lifetime, but that could lead to weird behavior when Tor
+ was started with a grossly inaccurate clock. Mitigates bug 22466;
+ mitigation on 0.3.0.1-alpha.
+
+ o Minor bugfixes (memory leak, directory authority, backport from
+ 0.3.1.2-alpha):
+ - When directory authorities reject a router descriptor due to
+ keypinning, free the router descriptor rather than leaking the
+ memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
+
+
+Changes in version 0.2.9.11 - 2017-06-08
+ Tor 0.2.9.11 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ Tor 0.2.9.11 also backports fixes for several key management bugs
+ that sometimes made relays unreliable, as well as several other
+ bugfixes described below.
+
+ o Major bugfixes (hidden service, relay, security, backport
+ from 0.3.1.3-alpha):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
+ - When performing the v3 link handshake on a TLS connection, report
+ that we have the x509 certificate that we actually used on that
+ connection, even if we have changed certificates since that
+ connection was first opened. Previously, we would claim to have
+ used our most recent x509 link certificate, which would sometimes
+ make the link handshake fail. Fixes one case of bug 22460; bugfix
+ on 0.2.3.6-alpha.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor features (future-proofing, backport from 0.3.0.7):
+ - Tor no longer refuses to download microdescriptors or descriptors if
+ they are listed as "published in the future". This change will
+ eventually allow us to stop listing meaningful "published" dates
+ in microdescriptor consensuses, and thereby allow us to reduce the
+ resources required to download consensus diffs by over 50%.
+ Implements part of ticket 21642; implements part of proposal 275.
+
+ o Minor features (directory authorities, backport from 0.3.0.4-rc)
+ - Directory authorities now reject relays running versions
+ 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
+ suffer from bug 20499 and don't keep their consensus cache
+ up-to-date. Resolves ticket 20509.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (control port, backport from 0.3.0.6):
+ - The GETINFO extra-info/digest/<digest> command was broken because
+ of a wrong base16 decode return value check, introduced when
+ refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.0.7):
+ - The getpid() system call is now permitted under the Linux seccomp2
+ sandbox, to avoid crashing with versions of OpenSSL (and other
+ libraries) that attempt to learn the process's PID by using the
+ syscall rather than the VDSO code. Fixes bug 21943; bugfix
+ on 0.2.5.1-alpha.
+
+ o Minor bugfixes (memory leak, directory authority, backport
+ from 0.3.1.2-alpha):
+ - When directory authorities reject a router descriptor due to
+ keypinning, free the router descriptor rather than leaking the
+ memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
+
+Changes in version 0.2.8.14 - 2017-06-08
+ Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.7.8 - 2017-06-08
+ Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+
+Changes in version 0.2.6.12 - 2017-06-08
+ Tor 0.2.6.12 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.5.14 - 2017-06-08
+ Tor 0.2.5.14 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.4.29 - 2017-06-08
+ Tor 0.2.4.29 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+
+Changes in version 0.3.1.2-alpha - 2017-05-26
+ Tor 0.3.1.2-alpha is the second release in the 0.3.1.x series. It
+ fixes a few bugs found while testing 0.3.1.1-alpha, including a
+ memory corruption bug that affected relay stability.
+
+ o Major bugfixes (crash, relay):
+ - Fix a memory-corruption bug in relays that set MyFamily.
+ Previously, they would double-free MyFamily elements when making
+ the next descriptor or when changing their configuration. Fixes
+ bug 22368; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (logging):
+ - Log a better message when a directory authority replies to an
+ upload with an unexpected status code. Fixes bug 11121; bugfix
+ on 0.1.0.1-rc.
+
+ o Minor bugfixes (memory leak, directory authority):
+ - When directory authorities reject a router descriptor due to
+ keypinning, free the router descriptor rather than leaking the
+ memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
+
+
+Changes in version 0.3.1.1-alpha - 2017-05-22
+ Tor 0.3.1.1-alpha is the first release in the 0.3.1.x series. It
+ reduces the bandwidth usage for Tor's directory protocol, adds some
+ basic padding to resist netflow-based traffic analysis and to serve as
+ the basis of other padding in the future, and adds rust support to the
+ build system.
+
+ It also contains numerous other small features and improvements to
+ security, correctness, and performance.
+
+ Below are the changes since 0.3.0.7.
+
+ o Major features (directory protocol):
+ - Tor relays and authorities can now serve clients an abbreviated
+ version of the consensus document, containing only the changes
+ since an older consensus document that the client holds. Clients
+ now request these documents when available. When both client and
+ server use this new protocol, they will use far less bandwidth (up
+ to 94% less) to keep the client's consensus up-to-date. Implements
+ proposal 140; closes ticket 13339. Based on work by Daniel Martí.
+ - Tor can now compress directory traffic with lzma or with zstd
+ compression algorithms, which can deliver better bandwidth
+ performance. Because lzma is computationally expensive, it's only
+ used for documents that can be compressed once and served many
+ times. Support for these algorithms requires that tor is built
+ with the libzstd and/or liblzma libraries available. Implements
+ proposal 278; closes ticket 21662.
+ - Relays now perform the more expensive compression operations, and
+ consensus diff generation, in worker threads. This separation
+ avoids delaying the main thread when a new consensus arrives.
+
+ o Major features (experimental):
+ - Tor can now build modules written in Rust. To turn this on, pass
+ the "--enable-rust" flag to the configure script. It's not time to
+ get excited yet: currently, there is no actual Rust functionality
+ beyond some simple glue code, and a notice at startup to tell you
+ that Rust is running. Still, we hope that programmers and
+ packagers will try building Tor with Rust support, so that we can
+ find issues and solve portability problems. Closes ticket 22106.
+
+ o Major features (traffic analysis resistance):
+ - Connections between clients and relays now send a padding cell in
+ each direction every 1.5 to 9.5 seconds (tunable via consensus
+ parameters). This padding will not resist specialized
+ eavesdroppers, but it should be enough to make many ISPs' routine
+ network flow logging less useful in traffic analysis against
+ Tor users.
+
+ Padding is negotiated using Tor's link protocol, so both relays
+ and clients must upgrade for this to take effect. Clients may
+ still send padding despite the relay's version by setting
+ ConnectionPadding 1 in torrc, and may disable padding by setting
+ ConnectionPadding 0 in torrc. Padding may be minimized for mobile
+ users with the torrc option ReducedConnectionPadding. Implements
+ Proposal 251 and Section 2 of Proposal 254; closes ticket 16861.
+ - Relays will publish 24 hour totals of padding and non-padding cell
+ counts to their extra-info descriptors, unless PaddingStatistics 0
+ is set in torrc. These 24 hour totals are also rounded to
+ multiples of 10000.
+
+ o Major bugfixes (connection usage):
+ - We use NETINFO cells to try to determine if both relays involved
+ in a connection will agree on the canonical status of that
+ connection. We prefer the connections where this is the case for
+ extend cells, and try to close connections where relays disagree
+ on their canonical status early. Also, we now prefer the oldest
+ valid connection for extend cells. These two changes should reduce
+ the number of long-term connections that are kept open between
+ relays. Fixes bug 17604; bugfix on 0.2.5.5-alpha.
+ - Relays now log hourly statistics (look for
+ "channel_check_for_duplicates" lines) on the total number of
+ connections to other relays. If the number of connections per
+ relay is unexpectedly large, this log message is at notice level.
+ Otherwise it is at info.
+
+ o Major bugfixes (entry guards):
+ - Don't block bootstrapping when a primary bridge is offline and we
+ can't get its descriptor. Fixes bug 22325; fixes one case of bug
+ 21969; bugfix on 0.3.0.3-alpha.
+
+ o Major bugfixes (linux TPROXY support):
+ - Fix a typo that had prevented TPROXY-based transparent proxying
+ from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
+ Patch from "d4fq0fQAgoJ".
+
+ o Minor features (security, windows):
+ - Enable a couple of pieces of Windows hardening: one
+ (HeapEnableTerminationOnCorruption) that has been on-by-default
+ since Windows 8, and unavailable before Windows 7; and one
+ (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
+ affect us, but shouldn't do any harm. Closes ticket 21953.
+
+ o Minor features (config options):
+ - Allow "%include" directives in torrc configuration files. These
+ directives import the settings from other files, or from all the
+ files in a directory. Closes ticket 1922. Code by Daniel Pinto.
+ - Make SAVECONF return an error when overwriting a torrc that has
+ includes. Using SAVECONF with the FORCE option will allow it to
+ overwrite torrc even if includes are used. Related to ticket 1922.
+ - Add "GETINFO config-can-saveconf" to tell controllers if SAVECONF
+ will work without the FORCE option. Related to ticket 1922.
+
+ o Minor features (controller):
+ - Warn the first time that a controller requests data in the long-
+ deprecated 'GETINFO network-status' format. Closes ticket 21703.
+
+ o Minor features (defaults):
+ - The default value for UseCreateFast is now 0: clients which
+ haven't yet received a consensus document will now use a proper
+ ntor handshake to talk to their directory servers whenever they
+ can. Closes ticket 21407.
+ - Onion key rotation and expiry intervals are now defined as a
+ network consensus parameter, per proposal 274. The default
+ lifetime of an onion key is increased from 7 to 28 days. Old onion
+ keys will expire after 7 days by default. This change will make
+ consensus diffs much smaller, and save significant bandwidth.
+ Closes ticket 21641.
+
+ o Minor features (fallback directory list):
+ - Update the fallback directory mirror whitelist and blacklist based
+ on operator emails. Closes task 21121.
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor features (hidden services, logging):
+ - Log a message when a hidden service descriptor has fewer
+ introduction points than specified in
+ HiddenServiceNumIntroductionPoints. Closes tickets 21598.
+ - Log a message when a hidden service reaches its introduction point
+ circuit limit, and when that limit is reset. Follow up to ticket
+ 21594; closes ticket 21622.
+ - Warn user if multiple entries in EntryNodes and at least one
+ HiddenService are used together. Pinning EntryNodes along with a
+ hidden service can be possibly harmful; for instance see ticket
+ 14917 or 21155. Closes ticket 21155.
+
+ o Minor features (linux seccomp2 sandbox):
+ - We now have a document storage backend compatible with the Linux
+ seccomp2 sandbox. This backend is used for consensus documents and
+ diffs between them; in the long term, we'd like to use it for
+ unparseable directory material too. Closes ticket 21645
+ - Increase the maximum allowed size passed to mprotect(PROT_WRITE)
+ from 1MB to 16MB. This was necessary with the glibc allocator in
+ order to allow worker threads to allocate more memory -- which in
+ turn is necessary because of our new use of worker threads for
+ compression. Closes ticket 22096.
+
+ o Minor features (logging):
+ - Log files are no longer created world-readable by default.
+ (Previously, most distributors would store the logs in a non-
+ world-readable location to prevent inappropriate access. This
+ change is an extra precaution.) Closes ticket 21729; patch
+ from toralf.
+
+ o Minor features (performance):
+ - Our Keccak (SHA-3) implementation now accesses memory more
+ efficiently, especially on little-endian systems. Closes
+ ticket 21737.
+ - Add an O(1) implementation of channel_find_by_global_id(), to
+ speed some controller functions.
+
+ o Minor features (relay, configuration):
+ - The MyFamily option may now be repeated as many times as desired,
+ for relays that want to configure large families. Closes ticket
+ 4998; patch by Daniel Pinto.
+
+ o Minor features (safety):
+ - Add an explicit check to extrainfo_parse_entry_from_string() for
+ NULL inputs. We don't believe this can actually happen, but it may
+ help silence a warning from the Clang analyzer. Closes
+ ticket 21496.
+
+ o Minor features (testing):
+ - Add a "--disable-memory-sentinels" feature to help with fuzzing.
+ When Tor is compiled with this option, we disable a number of
+ redundant memory-safety failsafes that are intended to stop bugs
+ from becoming security issues. This makes it easier to hunt for
+ bugs that would be security issues without the failsafes turned
+ on. Closes ticket 21439.
+ - Add a general event-tracing instrumentation support to Tor. This
+ subsystem will enable developers and researchers to add fine-
+ grained instrumentation to their Tor instances, for use when
+ examining Tor network performance issues. There are no trace
+ events yet, and event-tracing is off by default unless enabled at
+ compile time. Implements ticket 13802.
+ - Improve our version parsing tests: add tests for typical version
+ components, add tests for invalid versions, including numeric
+ range and non-numeric prefixes. Unit tests 21278, 21450, and
+ 21507. Partially implements 21470.
+
+ o Minor bugfixes (bandwidth accounting):
+ - Roll over monthly accounting at the configured hour and minute,
+ rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
+ Found by Andrey Karpov with PVS-Studio.
+
+ o Minor bugfixes (code correctness):
+ - Accurately identify client connections by their lack of peer
+ authentication. This means that we bail out earlier if asked to
+ extend to a client. Follow-up to 21407. Fixes bug 21406; bugfix
+ on 0.2.4.23.
+
+ o Minor bugfixes (configuration):
+ - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
+ bug 22252; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (connection lifespan):
+ - Allow more control over how long TLS connections are kept open:
+ unify CircuitIdleTimeout and PredictedPortsRelevanceTime into a
+ single option called CircuitsAvailableTimeout. Also, allow the
+ consensus to control the default values for both this preference
+ and the lifespan of relay-to-relay connections. Fixes bug 17592;
+ bugfix on 0.2.5.5-alpha.
+ - Increase the initial circuit build timeout testing frequency, to
+ help ensure that ReducedConnectionPadding clients finish learning
+ a timeout before their orconn would expire. The initial testing
+ rate was set back in the days of TAP and before the Tor Browser
+ updater, when we had to be much more careful about new clients
+ making lots of circuits. With this change, a circuit build timeout
+ is learned in about 15-20 minutes, instead of 100-120 minutes.
+
+ o Minor bugfixes (controller):
+ - GETINFO onions/current and onions/detached no longer respond with
+ 551 on empty lists. Fixes bug 21329; bugfix on 0.2.7.1-alpha.
+ - Trigger HS descriptor events on the control port when the client
+ fails to pick a hidden service directory for a hidden service.
+ This can happen if all the hidden service directories are in
+ ExcludeNodes, or they have all been queried within the last 15
+ minutes. Fixes bug 22042; bugfix on 0.2.5.2-alpha.
+
+ o Minor bugfixes (directory authority):
+ - When rejecting a router descriptor for running an obsolete version
+ of Tor without ntor support, warn about the obsolete tor version,
+ not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
+ - Prevent the shared randomness subsystem from asserting when
+ initialized by a bridge authority with an incomplete configuration
+ file. Fixes bug 21586; bugfix on 0.2.9.8.
+
+ o Minor bugfixes (exit-side DNS):
+ - Fix an untriggerable assertion that checked the output of a
+ libevent DNS error, so that the assertion actually behaves as
+ expected. Fixes bug 22244; bugfix on 0.2.0.20-rc. Found by Andrey
+ Karpov using PVS-Studio.
+
+ o Minor bugfixes (fallback directories):
+ - Make the usage example in updateFallbackDirs.py actually work, and
+ explain what it does. Fixes bug 22270; bugfix on 0.3.0.3-alpha.
+ - Decrease the guard flag average required to be a fallback. This
+ allows us to keep relays that have their guard flag removed when
+ they restart. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
+ - Decrease the minimum number of fallbacks to 100. Fixes bug 20913;
+ bugfix on 0.2.8.1-alpha.
+ - Make sure fallback directory mirrors have the same address, port,
+ and relay identity key for at least 30 days before they are
+ selected. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
+
+ o Minor bugfixes (hidden services):
+ - Stop printing a cryptic warning when a hidden service gets a
+ request to connect to a virtual port that it hasn't configured.
+ Fixes bug 16706; bugfix on 0.2.6.3-alpha.
+ - Simplify hidden service descriptor creation by using an existing
+ flag to check if an introduction point is established. Fixes bug
+ 21599; bugfix on 0.2.7.2-alpha.
+
+ o Minor bugfixes (memory leak):
+ - Fix a small memory leak at exit from the backtrace handler code.
+ Fixes bug 21788; bugfix on 0.2.5.2-alpha. Patch from Daniel Pinto.
+
+ o Minor bugfixes (protocol, logging):
+ - Downgrade a log statement about unexpected relay cells from "bug"
+ to "protocol warning", because there is at least one use case
+ where it can be triggered by a buggy tor implementation. Fixes bug
+ 21293; bugfix on 0.1.1.14-alpha.
+
+ o Minor bugfixes (testing):
+ - Use unbuffered I/O for utility functions around the
+ process_handle_t type. This fixes unit test failures reported on
+ OpenBSD and FreeBSD. Fixes bug 21654; bugfix on 0.2.3.1-alpha.
+ - Make display of captured unit test log messages consistent. Fixes
+ bug 21510; bugfix on 0.2.9.3-alpha.
+ - Make test-network.sh always call chutney's test-network.sh.
+ Previously, this only worked on systems which had bash installed,
+ due to some bash-specific code in the script. Fixes bug 19699;
+ bugfix on 0.3.0.4-rc. Follow-up to ticket 21581.
+
+ o Minor bugfixes (voting consistency):
+ - Reject version numbers with non-numeric prefixes (such as +, -, or
+ whitespace). Disallowing whitespace prevents differential version
+ parsing between POSIX-based and Windows platforms. Fixes bug 21507
+ and part of 21508; bugfix on 0.0.8pre1.
+
+ o Minor bugfixes (windows, relay):
+ - Resolve "Failure from drain_fd: No error" warnings on Windows
+ relays. Fixes bug 21540; bugfix on 0.2.6.3-alpha.
+
+ o Code simplification and refactoring:
+ - Break up the 630-line function connection_dir_client_reached_eof()
+ into a dozen smaller functions. This change should help
+ maintainability and readability of the client directory code.
+ - Isolate our use of the openssl headers so that they are only
+ included from our crypto wrapper modules, and from tests that
+ examine those modules' internals. Closes ticket 21841.
+ - Simplify our API to launch directory requests, making it more
+ extensible and less error-prone. Now it's easier to add extra
+ headers to directory requests. Closes ticket 21646.
+ - Our base64 decoding functions no longer overestimate the output
+ space that they need when parsing unpadded inputs. Closes
+ ticket 17868.
+ - Remove unused "ROUTER_ADDED_NOTIFY_GENERATOR" internal value.
+ Resolves ticket 22213.
+ - The logic that directory caches use to spool request to clients,
+ serving them one part at a time so as not to allocate too much
+ memory, has been refactored for consistency. Previously there was
+ a separate spooling implementation per type of spoolable data. Now
+ there is one common spooling implementation, with extensible data
+ types. Closes ticket 21651.
+ - Tor's compression module now supports multiple backends. Part of
+ the implementation for proposal 278; closes ticket 21663.
+
+ o Documentation:
+ - Clarify the behavior of the KeepAliveIsolateSOCKSAuth sub-option.
+ Closes ticket 21873.
+ - Correct documentation about the default DataDirectory value.
+ Closes ticket 21151.
+ - Document the default behavior of NumEntryGuards and
+ NumDirectoryGuards correctly. Fixes bug 21715; bugfix
+ on 0.3.0.1-alpha.
+ - Document key=value pluggable transport arguments for Bridge lines
+ in torrc. Fixes bug 20341; bugfix on 0.2.5.1-alpha.
+ - Note that bandwidth-limiting options don't affect TCP headers or
+ DNS. Closes ticket 17170.
+
+ o Removed features (configuration options, all in ticket 22060):
+ - These configuration options are now marked Obsolete, and no longer
+ have any effect: AllowInvalidNodes, AllowSingleHopCircuits,
+ AllowSingleHopExits, ExcludeSingleHopRelays, FastFirstHopPK,
+ TLSECGroup, WarnUnsafeSocks. They were first marked as deprecated
+ in 0.2.9.2-alpha and have now been removed. The previous default
+ behavior is now always chosen; the previous (less secure) non-
+ default behavior is now unavailable.
+ - CloseHSClientCircuitsImmediatelyOnTimeout and
+ CloseHSServiceRendCircuitsImmediatelyOnTimeout were deprecated in
+ 0.2.9.2-alpha and now have been removed. HS circuits never close
+ on circuit build timeout; they have a longer timeout period.
+ - {Control,DNS,Dir,Socks,Trans,NATD,OR}ListenAddress were deprecated
+ in 0.2.9.2-alpha and now have been removed. Use the ORPort option
+ (and others) to configure listen-only and advertise-only addresses.
+
+ o Removed features (tools):
+ - We've removed the tor-checkkey tool from src/tools. Long ago, we
+ used it to help people detect RSA keys that were generated by
+ versions of Debian affected by CVE-2008-0166. But those keys have
+ been out of circulation for ages, and this tool is no longer
+ required. Closes ticket 21842.
+
+
+Changes in version 0.3.0.7 - 2017-05-15
+ Tor 0.3.0.7 fixes a medium-severity security bug in earlier versions
+ of Tor 0.3.0.x, where an attacker could cause a Tor relay process
+ to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
+ clients are not affected.
+
+ o Major bugfixes (hidden service directory, security):
+ - Fix an assertion failure in the hidden service directory code, which
+ could be used by an attacker to remotely cause a Tor relay process to
+ exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
+ should upgrade. This security issue is tracked as TROVE-2017-002.
+ Fixes bug 22246; bugfix on 0.3.0.1-alpha.
+
+ o Minor features:
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (future-proofing):
+ - Tor no longer refuses to download microdescriptors or descriptors
+ if they are listed as "published in the future". This change will
+ eventually allow us to stop listing meaningful "published" dates
+ in microdescriptor consensuses, and thereby allow us to reduce the
+ resources required to download consensus diffs by over 50%.
+ Implements part of ticket 21642; implements part of proposal 275.
+
+ o Minor bugfixes (Linux seccomp2 sandbox):
+ - The getpid() system call is now permitted under the Linux seccomp2
+ sandbox, to avoid crashing with versions of OpenSSL (and other
+ libraries) that attempt to learn the process's PID by using the
+ syscall rather than the VDSO code. Fixes bug 21943; bugfix
+ on 0.2.5.1-alpha.
+
+
+Changes in version 0.3.0.6 - 2017-04-26
+ Tor 0.3.0.6 is the first stable release of the Tor 0.3.0 series.
+
+ With the 0.3.0 series, clients and relays now use Ed25519 keys to
+ authenticate their link connections to relays, rather than the old
+ RSA1024 keys that they used before. (Circuit crypto has been
+ Curve25519-authenticated since 0.2.4.8-alpha.) We have also replaced
+ the guard selection and replacement algorithm to behave more robustly
+ in the presence of unreliable networks, and to resist guard-
+ capture attacks.
+
+ This series also includes numerous other small features and bugfixes,
+ along with more groundwork for the upcoming hidden-services revamp.
+
+ Per our stable release policy, we plan to support the Tor 0.3.0
+ release series for at least the next nine months, or for three months
+ after the first stable release of the 0.3.1 series: whichever is
+ longer. If you need a release with long-term support, we recommend
+ that you stay with the 0.2.9 series.
+
+ Below are the changes since 0.3.0.5-rc. For a list of all changes
+ since 0.2.9, see the ReleaseNotes file.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (control port):
+ - The GETINFO extra-info/digest/<digest> command was broken because
+ of a wrong base16 decode return value check, introduced when
+ refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (crash prevention):
+ - Fix a (currently untriggerable, but potentially dangerous) crash
+ bug when base32-encoding inputs whose sizes are not a multiple of
+ 5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
+
+
+Changes in version 0.3.0.5-rc - 2017-04-05
+ Tor 0.3.0.5-rc fixes a few remaining bugs, large and small, in the
+ 0.3.0 release series.
+
+ This is the second release candidate in the Tor 0.3.0 series, and has
+ much fewer changes than the first. If we find no new bugs or
+ regressions here, the first stable 0.3.0 release will be nearly
+ identical to it.
+
+ o Major bugfixes (crash, directory connections):
+ - Fix a rare crash when sending a begin cell on a circuit whose
+ linked directory connection had already been closed. Fixes bug
+ 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
+
+ o Major bugfixes (guard selection):
+ - Fix a guard selection bug where Tor would refuse to bootstrap in
+ some cases if the user swapped a bridge for another bridge in
+ their configuration file. Fixes bug 21771; bugfix on 0.3.0.1-alpha.
+ Reported by "torvlnt33r".
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the March 7 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfix (compilation):
+ - Fix a warning when compiling hs_service.c. Previously, it had no
+ exported symbols when compiled for libor.a, resulting in a
+ compilation warning from clang. Fixes bug 21825; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (hidden services):
+ - Make hidden services check for failed intro point connections,
+ even when they have exceeded their intro point creation limit.
+ Fixes bug 21596; bugfix on 0.2.7.2-alpha. Reported by Alec Muffett.
+ - Make hidden services with 8 to 10 introduction points check for
+ failed circuits immediately after startup. Previously, they would
+ wait for 5 minutes before performing their first checks. Fixes bug
+ 21594; bugfix on 0.2.3.9-alpha. Reported by Alec Muffett.
+
+ o Minor bugfixes (memory leaks):
+ - Fix a memory leak when using GETCONF on a port option. Fixes bug
+ 21682; bugfix on 0.3.0.3-alpha.
+
+ o Minor bugfixes (relay):
+ - Avoid a double-marked-circuit warning that could happen when we
+ receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
+ on 0.1.0.1-rc.
+
+ o Minor bugfixes (tests):
+ - Run the entry_guard_parse_from_state_full() test with the time set
+ to a specific date. (The guard state that this test was parsing
+ contained guards that had expired since the test was first
+ written.) Fixes bug 21799; bugfix on 0.3.0.1-alpha.
+
+ o Documentation:
+ - Update the description of the directory server options in the
+ manual page, to clarify that a relay no longer needs to set
+ DirPort in order to be a directory cache. Closes ticket 21720.
+
+
+
+Changes in version 0.2.8.13 - 2017-03-03
+ Tor 0.2.8.13 backports a security fix from later Tor
+ releases. Anybody running Tor 0.2.8.12 or earlier should upgrade to this
+ this release, if for some reason they cannot upgrade to a later
+ release series, and if they build Tor with the --enable-expensive-hardening
+ option.
+
+ Note that support for Tor 0.2.8.x is ending next year: we will not issue
+ any fixes for the Tor 0.2.8.x series after 1 Jan 2018. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+
+Changes in version 0.2.7.7 - 2017-03-03
+ Tor 0.2.7.7 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.7.6 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.7.x is ending this year: we will not issue
+ any fixes for the Tor 0.2.7.x series after 1 August 2017. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+
+Changes in version 0.2.6.11 - 2017-03-03
+ Tor 0.2.6.11 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.6.10 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.6.x is ending this year: we will not issue
+ any fixes for the Tor 0.2.6.x series after 1 August 2017. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+
+Changes in version 0.2.5.13 - 2017-03-03
+ Tor 0.2.5.13 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.5.13 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.5.x is ending next year: we will not issue
+ any fixes for the Tor 0.2.5.x series after 1 May 2018. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+ o Minor bugfixes (crypto error-handling, backport from 0.2.7.2-alpha):
+ - Check for failures from crypto_early_init, and refuse to continue.
+ A previous typo meant that we could keep going with an
+ uninitialized crypto library, and would have OpenSSL initialize
+ its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
+ when implementing ticket 4900. Patch by "teor".
+
+ o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
+ - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
+ a client authorized hidden service. Fixes bug 15823; bugfix
+ on 0.2.1.6-alpha.
+
+
+Changes in version 0.2.4.28 - 2017-03-03
+ Tor 0.2.4.28 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.4.27 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.4.x is ending soon: we will not issue
+ any fixes for the Tor 0.2.4.x series after 1 August 2017. If you need
+ a Tor release series with long-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (DoS-resistance, backport from 0.2.7.1-alpha):
+ - Make it harder for attackers to overload hidden services with
+ introductions, by blocking multiple introduction requests on the
+ same circuit. Resolves ticket 15515.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+ o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
+ - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
+ a client authorized hidden service. Fixes bug 15823; bugfix
+ on 0.2.1.6-alpha.
+
+
+Changes in version 0.3.0.4-rc - 2017-03-01
+ Tor 0.3.0.4-rc fixes some remaining bugs, large and small, in the
+ 0.3.0 release series, and introduces a few reliability features to
+ keep them from coming back.
+
+ This is the first release candidate in the Tor 0.3.0 series. If we
+ find no new bugs or regressions here, the first stable 0.3.0 release
+ will be nearly identical to it.
+
+ o Major bugfixes (bridges):
+ - When the same bridge is configured multiple times with the same
+ identity, but at different address:port combinations, treat those
+ bridge instances as separate guards. This fix restores the ability
+ of clients to configure the same bridge with multiple pluggable
+ transports. Fixes bug 21027; bugfix on 0.3.0.1-alpha.
+
+ o Major bugfixes (hidden service directory v3):
+ - Stop crashing on a failed v3 hidden service descriptor lookup
+ failure. Fixes bug 21471; bugfixes on tor-0.3.0.1-alpha.
+
+ o Major bugfixes (parsing):
+ - When parsing a malformed content-length field from an HTTP
+ message, do not read off the end of the buffer. This bug was a
+ potential remote denial-of-service attack against Tor clients and
+ relays. A workaround was released in October 2016, to prevent this
+ bug from crashing Tor. This is a fix for the underlying issue,
+ which should no longer matter (if you applied the earlier patch).
+ Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
+ using AFL (http://lcamtuf.coredump.cx/afl/).
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor feature (protocol versioning):
+ - Add new protocol version for proposal 224. HSIntro now advertises
+ version "3-4" and HSDir version "1-2". Fixes ticket 20656.
+
+ o Minor features (directory authorities):
+ - Directory authorities now reject descriptors that claim to be
+ malformed versions of Tor. Helps prevent exploitation of
+ bug 21278.
+ - Reject version numbers with components that exceed INT32_MAX.
+ Otherwise 32-bit and 64-bit platforms would behave inconsistently.
+ Fixes bug 21450; bugfix on 0.0.8pre1.
+ - Directory authorities now reject relays running versions
+ 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
+ suffer from bug 20499 and don't keep their consensus cache
+ up-to-date. Resolves ticket 20509.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (reliability, crash):
+ - Try better to detect problems in buffers where they might grow (or
+ think they have grown) over 2 GB in size. Diagnostic for
+ bug 21369.
+
+ o Minor features (testing):
+ - During 'make test-network-all', if tor logs any warnings, ask
+ chutney to output them. Requires a recent version of chutney with
+ the 21572 patch. Implements 21570.
+
+ o Minor bugfixes (certificate expiration time):
+ - Avoid using link certificates that don't become valid till some
+ time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
+
+ o Minor bugfixes (code correctness):
+ - Repair a couple of (unreachable or harmless) cases of the risky
+ comparison-by-subtraction pattern that caused bug 21278.
+ - Remove a redundant check for the UseEntryGuards option from the
+ options_transition_affects_guards() function. Fixes bug 21492;
+ bugfix on 0.3.0.1-alpha.
+
+ o Minor bugfixes (directory mirrors):
+ - Allow relays to use directory mirrors without a DirPort: these
+ relays need to be contacted over their ORPorts using a begindir
+ connection. Fixes one case of bug 20711; bugfix on 0.2.8.2-alpha.
+ - Clarify the message logged when a remote relay is unexpectedly
+ missing an ORPort or DirPort: users were confusing this with a
+ local port. Fixes another case of bug 20711; bugfix
+ on 0.2.8.2-alpha.
+
+ o Minor bugfixes (guards):
+ - Don't warn about a missing guard state on timeout-measurement
+ circuits: they aren't supposed to be using guards. Fixes an
+ instance of bug 21007; bugfix on 0.3.0.1-alpha.
+ - Silence a BUG() warning when attempting to use a guard whose
+ descriptor we don't know, and make this scenario less likely to
+ happen. Fixes bug 21415; bugfix on 0.3.0.1-alpha.
+
+ o Minor bugfixes (hidden service):
+ - Pass correct buffer length when encoding legacy ESTABLISH_INTRO
+ cells. Previously, we were using sizeof() on a pointer, instead of
+ the real destination buffer. Fortunately, that value was only used
+ to double-check that there was enough room--which was already
+ enforced elsewhere. Fixes bug 21553; bugfix on 0.3.0.1-alpha.
+
+ o Minor bugfixes (testing):
+ - Fix Raspbian build issues related to missing socket errno in
+ test_util.c. Fixes bug 21116; bugfix on tor-0.2.8.2. Patch
+ by "hein".
+ - Rename "make fuzz" to "make test-fuzz-corpora", since it doesn't
+ actually fuzz anything. Fixes bug 21447; bugfix on 0.3.0.3-alpha.
+ - Use bash in src/test/test-network.sh. This ensures we reliably
+ call chutney's newer tools/test-network.sh when available. Fixes
+ bug 21562; bugfix on 0.2.9.1-alpha.
+
+ o Documentation:
+ - Small fixes to the fuzzing documentation. Closes ticket 21472.
+
+
+Changes in version 0.2.9.10 - 2017-03-01
+ Tor 0.2.9.10 backports a security fix from later Tor release. It also
+ includes fixes for some major issues affecting directory authorities,
+ LibreSSL compatibility, and IPv6 correctness.
+
+ The Tor 0.2.9.x release series is now marked as a long-term-support
+ series. We intend to backport security fixes to 0.2.9.x until at
+ least January of 2020.
+
+ o Major bugfixes (directory authority, 0.3.0.3-alpha):
+ - During voting, when marking a relay as a probable sybil, do not
+ clear its BadExit flag: sybils can still be bad in other ways
+ too. (We still clear the other flags.) Fixes bug 21108; bugfix
+ on 0.2.0.13-alpha.
+
+ o Major bugfixes (IPv6 Exits, backport from 0.3.0.3-alpha):
+ - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
+ any IPv6 addresses. Instead, only reject a port over IPv6 if the
+ exit policy rejects that port on more than an IPv6 /16 of
+ addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
+ which rejected a relay's own IPv6 address by default. Fixes bug
+ 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
+
+ o Major bugfixes (parsing, also in 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (directory authorities, also in 0.3.0.4-rc):
+ - Directory authorities now reject descriptors that claim to be
+ malformed versions of Tor. Helps prevent exploitation of
+ bug 21278.
+ - Reject version numbers with components that exceed INT32_MAX.
+ Otherwise 32-bit and 64-bit platforms would behave inconsistently.
+ Fixes bug 21450; bugfix on 0.0.8pre1.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (portability, compilation, backport from 0.3.0.3-alpha):
+ - Autoconf now checks to determine if OpenSSL structures are opaque,
+ instead of explicitly checking for OpenSSL version numbers. Part
+ of ticket 21359.
+ - Support building with recent LibreSSL code that uses opaque
+ structures. Closes ticket 21359.
+
+ o Minor bugfixes (code correctness, also in 0.3.0.4-rc):
+ - Repair a couple of (unreachable or harmless) cases of the risky
+ comparison-by-subtraction pattern that caused bug 21278.
+
+ o Minor bugfixes (tor-resolve, backport from 0.3.0.3-alpha):
+ - The tor-resolve command line tool now rejects hostnames over 255
+ characters in length. Previously, it would silently truncate them,
+ which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
+ Patch by "junglefowl".
Changes in version 0.3.0.3-alpha - 2017-02-03
diff --git a/LICENSE b/LICENSE
index 56d1002251..3d0f8c121b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -13,7 +13,7 @@ Tor is distributed under this license:
Copyright (c) 2001-2004, Roger Dingledine
Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-Copyright (c) 2007-2016, The Tor Project, Inc.
+Copyright (c) 2007-2017, The Tor Project, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
diff --git a/Makefile.am b/Makefile.am
index 3d50594bf4..1a6d8e7d12 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
# Copyright (c) 2001-2004, Roger Dingledine
# Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-# Copyright (c) 2007-2015, The Tor Project, Inc.
+# Copyright (c) 2007-2017, The Tor Project, Inc.
# See LICENSE for licensing information
ACLOCAL_AMFLAGS = -I m4
@@ -16,7 +16,7 @@ noinst_PROGRAMS=
DISTCLEANFILES=
bin_SCRIPTS=
AM_CPPFLAGS=
-AM_CFLAGS=@TOR_SYSTEMD_CFLAGS@ @CFLAGS_BUGTRAP@
+AM_CFLAGS=@TOR_SYSTEMD_CFLAGS@ @CFLAGS_BUGTRAP@ @TOR_LZMA_CFLAGS@ @TOR_ZSTD_CFLAGS@
SHELL=@SHELL@
if COVERAGE_ENABLED
@@ -25,6 +25,12 @@ else
TESTING_TOR_BINARY=$(top_builddir)/src/or/tor$(EXEEXT)
endif
+if USE_RUST
+rust_ldadd=$(top_builddir)/src/rust/target/release/libtor_util.a
+else
+rust_ldadd=
+endif
+
include src/include.am
include doc/include.am
include contrib/include.am
@@ -230,3 +236,16 @@ mostlyclean-local:
rm -rf $(HTML_COVER_DIR)
rm -rf $(top_builddir)/doc/doxygen
rm -rf $(TEST_NETWORK_ALL_LOG_DIR)
+
+clean-local:
+ rm -rf $(top_builddir)/src/rust/target
+ rm -rf $(top_builddir)/src/rust/.cargo/registry
+
+# This relies on some internal details of how automake implements
+# distcheck. We check two directories because automake-1.15 changed
+# from $(distdir)/_build to $(distdir)/_build/sub.
+show-distdir-testlog:
+ @if test -d "$(distdir)/_build/sub"; then \
+ cat $(distdir)/_build/sub/$(TEST_SUITE_LOG); \
+ else \
+ cat $(distdir)/_build/$(TEST_SUITE_LOG); fi
diff --git a/ReleaseNotes b/ReleaseNotes
index d6adbe5f9b..1e56ffaf89 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -2,6 +2,1415 @@ 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.0.8 - 2017-06-08
+ Tor 0.3.0.8 fixes a pair of bugs that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-004 and TROVE-2017-005.
+
+ Tor 0.3.0.8 also includes fixes for several key management bugs
+ that sometimes made relays unreliable, as well as several other
+ bugfixes described below.
+
+ o Major bugfixes (hidden service, relay, security, backport
+ from 0.3.1.3-alpha):
+ - Fix a remotely triggerable assertion failure when a hidden service
+ handles a malformed BEGIN cell. Fixes bug 22493, tracked as
+ TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
+ - When performing the v3 link handshake on a TLS connection, report
+ that we have the x509 certificate that we actually used on that
+ connection, even if we have changed certificates since that
+ connection was first opened. Previously, we would claim to have
+ used our most recent x509 link certificate, which would sometimes
+ make the link handshake fail. Fixes one case of bug 22460; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (relays, key management, backport from 0.3.1.3-alpha):
+ - Regenerate link and authentication certificates whenever the key
+ that signs them changes; also, regenerate link certificates
+ whenever the signed key changes. Previously, these processes were
+ only weakly coupled, and we relays could (for minutes to hours)
+ wind up with an inconsistent set of keys and certificates, which
+ other relays would not accept. Fixes two cases of bug 22460;
+ bugfix on 0.3.0.1-alpha.
+ - When sending an Ed25519 signing->link certificate in a CERTS cell,
+ send the certificate that matches the x509 certificate that we
+ used on the TLS connection. Previously, there was a race condition
+ if the TLS context rotated after we began the TLS handshake but
+ before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
+ on 0.3.0.1-alpha.
+
+ o Major bugfixes (hidden service v3, backport from 0.3.1.1-alpha):
+ - Stop rejecting v3 hidden service descriptors because their size
+ did not match an old padding rule. Fixes bug 22447; bugfix on
+ tor-0.3.0.1-alpha.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor bugfixes (configuration, backport from 0.3.1.1-alpha):
+ - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
+ bug 22252; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+ o Minor bugfixes (link handshake, backport from 0.3.1.3-alpha):
+ - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
+ months, and regenerate it when it is within one month of expiring.
+ Previously, we had generated this certificate at startup with a
+ ten-year lifetime, but that could lead to weird behavior when Tor
+ was started with a grossly inaccurate clock. Mitigates bug 22466;
+ mitigation on 0.3.0.1-alpha.
+
+ o Minor bugfixes (memory leak, directory authority, backport from
+ 0.3.1.2-alpha):
+ - When directory authorities reject a router descriptor due to
+ keypinning, free the router descriptor rather than leaking the
+ memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
+
+
+Changes in version 0.2.9.11 - 2017-06-08
+ Tor 0.2.9.11 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ Tor 0.2.9.11 also backports fixes for several key management bugs
+ that sometimes made relays unreliable, as well as several other
+ bugfixes described below.
+
+ o Major bugfixes (hidden service, relay, security, backport
+ from 0.3.1.3-alpha):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
+ - When performing the v3 link handshake on a TLS connection, report
+ that we have the x509 certificate that we actually used on that
+ connection, even if we have changed certificates since that
+ connection was first opened. Previously, we would claim to have
+ used our most recent x509 link certificate, which would sometimes
+ make the link handshake fail. Fixes one case of bug 22460; bugfix
+ on 0.2.3.6-alpha.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor features (future-proofing, backport from 0.3.0.7):
+ - Tor no longer refuses to download microdescriptors or descriptors if
+ they are listed as "published in the future". This change will
+ eventually allow us to stop listing meaningful "published" dates
+ in microdescriptor consensuses, and thereby allow us to reduce the
+ resources required to download consensus diffs by over 50%.
+ Implements part of ticket 21642; implements part of proposal 275.
+
+ o Minor features (directory authorities, backport from 0.3.0.4-rc)
+ - Directory authorities now reject relays running versions
+ 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
+ suffer from bug 20499 and don't keep their consensus cache
+ up-to-date. Resolves ticket 20509.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (control port, backport from 0.3.0.6):
+ - The GETINFO extra-info/digest/<digest> command was broken because
+ of a wrong base16 decode return value check, introduced when
+ refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.0.7):
+ - The getpid() system call is now permitted under the Linux seccomp2
+ sandbox, to avoid crashing with versions of OpenSSL (and other
+ libraries) that attempt to learn the process's PID by using the
+ syscall rather than the VDSO code. Fixes bug 21943; bugfix
+ on 0.2.5.1-alpha.
+
+ o Minor bugfixes (memory leak, directory authority, backport
+ from 0.3.1.2-alpha):
+ - When directory authorities reject a router descriptor due to
+ keypinning, free the router descriptor rather than leaking the
+ memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
+
+Changes in version 0.2.8.14 - 2017-06-08
+ Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
+ - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
+ December 2016 (of which ~126 were still functional) with a list of
+ 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
+ 2017. Resolves ticket 21564.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.7.8 - 2017-06-08
+ Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+
+Changes in version 0.2.6.12 - 2017-06-08
+ Tor 0.2.6.12 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.5.14 - 2017-06-08
+ Tor 0.2.5.14 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+Changes in version 0.2.4.29 - 2017-06-08
+ Tor 0.2.4.29 backports a fix for a bug that would allow an attacker to
+ remotely crash a hidden service with an assertion failure. Anyone
+ running a hidden service should upgrade to this version, or to some
+ other version with fixes for TROVE-2017-005. (Versions before 0.3.0
+ are not affected by TROVE-2017-004.)
+
+ o Major bugfixes (hidden service, relay, security):
+ - Fix a remotely triggerable assertion failure caused by receiving a
+ BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
+ 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
+ on 0.2.2.1-alpha.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
+
+
+Changes in version 0.3.0.7 - 2017-05-15
+ Tor 0.3.0.7 fixes a medium-severity security bug in earlier versions
+ of Tor 0.3.0.x, where an attacker could cause a Tor relay process
+ to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
+ clients are not affected.
+
+ o Major bugfixes (hidden service directory, security):
+ - Fix an assertion failure in the hidden service directory code, which
+ could be used by an attacker to remotely cause a Tor relay process to
+ exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
+ should upgrade. This security issue is tracked as TROVE-2017-002.
+ Fixes bug 22246; bugfix on 0.3.0.1-alpha.
+
+ o Minor features:
+ - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (future-proofing):
+ - Tor no longer refuses to download microdescriptors or descriptors
+ if they are listed as "published in the future". This change will
+ eventually allow us to stop listing meaningful "published" dates
+ in microdescriptor consensuses, and thereby allow us to reduce the
+ resources required to download consensus diffs by over 50%.
+ Implements part of ticket 21642; implements part of proposal 275.
+
+ o Minor bugfixes (Linux seccomp2 sandbox):
+ - The getpid() system call is now permitted under the Linux seccomp2
+ sandbox, to avoid crashing with versions of OpenSSL (and other
+ libraries) that attempt to learn the process's PID by using the
+ syscall rather than the VDSO code. Fixes bug 21943; bugfix
+ on 0.2.5.1-alpha.
+
+
+Changes in version 0.3.0.6 - 2017-04-26
+ Tor 0.3.0.6 is the first stable release of the Tor 0.3.0 series.
+
+ With the 0.3.0 series, clients and relays now use Ed25519 keys to
+ authenticate their link connections to relays, rather than the old
+ RSA1024 keys that they used before. (Circuit crypto has been
+ Curve25519-authenticated since 0.2.4.8-alpha.) We have also replaced
+ the guard selection and replacement algorithm to behave more robustly
+ in the presence of unreliable networks, and to resist guard-
+ capture attacks.
+
+ This series also includes numerous other small features and bugfixes,
+ along with more groundwork for the upcoming hidden-services revamp.
+
+ Per our stable release policy, we plan to support the Tor 0.3.0
+ release series for at least the next nine months, or for three months
+ after the first stable release of the 0.3.1 series: whichever is
+ longer. If you need a release with long-term support, we recommend
+ that you stay with the 0.2.9 series.
+
+ Below are the changes since 0.2.9.10. For a list of only the changes
+ since 0.3.0.5-rc, see the ChangeLog file.
+
+ o Major features (directory authority, security):
+ - The default for AuthDirPinKeys is now 1: directory authorities
+ will reject relays where the RSA identity key matches a previously
+ seen value, but the Ed25519 key has changed. Closes ticket 18319.
+
+ o Major features (guard selection algorithm):
+ - Tor's guard selection algorithm has been redesigned from the
+ ground up, to better support unreliable networks and restrictive
+ sets of entry nodes, and to better resist guard-capture attacks by
+ hostile local networks. Implements proposal 271; closes
+ ticket 19877.
+
+ o Major features (next-generation hidden services):
+ - Relays can now handle v3 ESTABLISH_INTRO cells as specified by
+ prop224 aka "Next Generation Hidden Services". Service and clients
+ don't use this functionality yet. Closes ticket 19043. Based on
+ initial code by Alec Heifetz.
+ - Relays now support the HSDir version 3 protocol, so that they can
+ can store and serve v3 descriptors. This is part of the next-
+ generation onion service work detailled in proposal 224. Closes
+ ticket 17238.
+
+ o Major features (protocol, ed25519 identity keys):
+ - Clients now support including Ed25519 identity keys in the EXTEND2
+ cells they generate. By default, this is controlled by a consensus
+ parameter, currently disabled. You can turn this feature on for
+ testing by setting ExtendByEd25519ID in your configuration. This
+ might make your traffic appear different than the traffic
+ generated by other users, however. Implements part of ticket
+ 15056; part of proposal 220.
+ - Relays now understand requests to extend to other relays by their
+ Ed25519 identity keys. When an Ed25519 identity key is included in
+ an EXTEND2 cell, the relay will only extend the circuit if the
+ other relay can prove ownership of that identity. Implements part
+ of ticket 15056; part of proposal 220.
+ - Relays now use Ed25519 to prove their Ed25519 identities and to
+ one another, and to clients. This algorithm is faster and more
+ secure than the RSA-based handshake we've been doing until now.
+ Implements the second big part of proposal 220; Closes
+ ticket 15055.
+
+ o Major features (security):
+ - Change the algorithm used to decide DNS TTLs on client and server
+ side, to better resist DNS-based correlation attacks like the
+ DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
+ Feamster. Now relays only return one of two possible DNS TTL
+ values, and clients are willing to believe DNS TTL values up to 3
+ hours long. Closes ticket 19769.
+
+ o Major bugfixes (client, onion service, also in 0.2.9.9):
+ - Fix a client-side onion service reachability bug, where multiple
+ socks requests to an onion service (or a single slow request)
+ could cause us to mistakenly mark some of the service's
+ introduction points as failed, and we cache that failure so
+ eventually we run out and can't reach the service. Also resolves a
+ mysterious "Remote server sent bogus reason code 65021" log
+ warning. The bug was introduced in ticket 17218, where we tried to
+ remember the circuit end reason as a uint16_t, which mangled
+ negative values. Partially fixes bug 21056 and fixes bug 20307;
+ bugfix on 0.2.8.1-alpha.
+
+ o Major bugfixes (crash, directory connections):
+ - Fix a rare crash when sending a begin cell on a circuit whose
+ linked directory connection had already been closed. Fixes bug
+ 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
+
+ o Major bugfixes (directory authority):
+ - During voting, when marking a relay as a probable sybil, do not
+ clear its BadExit flag: sybils can still be bad in other ways
+ too. (We still clear the other flags.) Fixes bug 21108; bugfix
+ on 0.2.0.13-alpha.
+
+ o Major bugfixes (DNS):
+ - Fix a bug that prevented exit nodes from caching DNS records for
+ more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
+
+ o Major bugfixes (IPv6 Exits):
+ - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
+ any IPv6 addresses. Instead, only reject a port over IPv6 if the
+ exit policy rejects that port on more than an IPv6 /16 of
+ addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
+ which rejected a relay's own IPv6 address by default. Fixes bug
+ 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
+
+ o Major bugfixes (parsing):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+ - When parsing a malformed content-length field from an HTTP
+ message, do not read off the end of the buffer. This bug was a
+ potential remote denial-of-service attack against Tor clients and
+ relays. A workaround was released in October 2016, to prevent this
+ bug from crashing Tor. This is a fix for the underlying issue,
+ which should no longer matter (if you applied the earlier patch).
+ Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
+ using AFL (http://lcamtuf.coredump.cx/afl/).
+
+ o Major bugfixes (scheduler):
+ - Actually compare circuit policies in ewma_cmp_cmux(). This bug
+ caused the channel scheduler to behave more or less randomly,
+ rather than preferring channels with higher-priority circuits.
+ Fixes bug 20459; bugfix on 0.2.6.2-alpha.
+
+ o Major bugfixes (security, also in 0.2.9.9):
+ - Downgrade the "-ftrapv" option from "always on" to "only on when
+ --enable-expensive-hardening is provided." This hardening option,
+ like others, can turn survivable bugs into crashes--and having it
+ on by default made a (relatively harmless) integer overflow bug
+ into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
+ bugfix on 0.2.9.1-alpha.
+
+ o Minor feature (client):
+ - Enable IPv6 traffic on the SocksPort by default. To disable this,
+ a user will have to specify "NoIPv6Traffic". Closes ticket 21269.
+
+ o Minor feature (fallback scripts):
+ - Add a check_existing mode to updateFallbackDirs.py, which checks
+ if fallbacks in the hard-coded list are working. Closes ticket
+ 20174. Patch by haxxpop.
+
+ o Minor feature (protocol versioning):
+ - Add new protocol version for proposal 224. HSIntro now advertises
+ version "3-4" and HSDir version "1-2". Fixes ticket 20656.
+
+ o Minor features (ciphersuite selection):
+ - Allow relays to accept a wider range of ciphersuites, including
+ chacha20-poly1305 and AES-CCM. Closes the other part of 15426.
+ - Clients now advertise a list of ciphersuites closer to the ones
+ preferred by Firefox. Closes part of ticket 15426.
+
+ o Minor features (controller):
+ - Add "GETINFO sr/current" and "GETINFO sr/previous" keys, to expose
+ shared-random values to the controller. Closes ticket 19925.
+ - When HSFETCH arguments cannot be parsed, say "Invalid argument"
+ rather than "unrecognized." Closes ticket 20389; patch from
+ Ivan Markin.
+
+ o Minor features (controller, configuration):
+ - Each of the *Port options, such as SocksPort, ORPort, ControlPort,
+ and so on, now comes with a __*Port variant that will not be saved
+ to the torrc file by the controller's SAVECONF command. This
+ change allows TorBrowser to set up a single-use domain socket for
+ each time it launches Tor. Closes ticket 20956.
+ - The GETCONF command can now query options that may only be
+ meaningful in context-sensitive lists. This allows the controller
+ to query the mixed SocksPort/__SocksPort style options introduced
+ in feature 20956. Implements ticket 21300.
+
+ o Minor features (diagnostic, directory client):
+ - Warn when we find an unexpected inconsistency in directory
+ download status objects. Prevents some negative consequences of
+ bug 20593.
+
+ o Minor features (directory authorities):
+ - Directory authorities now reject descriptors that claim to be
+ malformed versions of Tor. Helps prevent exploitation of
+ bug 21278.
+ - Reject version numbers with components that exceed INT32_MAX.
+ Otherwise 32-bit and 64-bit platforms would behave inconsistently.
+ Fixes bug 21450; bugfix on 0.0.8pre1.
+
+ o Minor features (directory authority):
+ - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
+ default) to control whether authorities should try to probe relays
+ by their Ed25519 link keys. This option will go away in a few
+ releases--unless we encounter major trouble in our ed25519 link
+ protocol rollout, in which case it will serve as a safety option.
+
+ o Minor features (directory cache):
+ - Relays and bridges will now refuse to serve the consensus they
+ have if they know it is too old for a client to use. Closes
+ ticket 20511.
+
+ o Minor features (ed25519 link handshake):
+ - Advertise support for the ed25519 link handshake using the
+ subprotocol-versions mechanism, so that clients can tell which
+ relays can identity themselves by Ed25519 ID. Closes ticket 20552.
+
+ o Minor features (entry guards):
+ - Add UseEntryGuards to TEST_OPTIONS_DEFAULT_VALUES in order to not
+ break regression tests.
+ - Require UseEntryGuards when UseBridges is set, in order to make
+ sure bridges aren't bypassed. Resolves ticket 20502.
+
+ o Minor features (fallback directories):
+ - Allow 3 fallback relays per operator, which is safe now that we
+ are choosing 200 fallback relays. Closes ticket 20912.
+ - Annotate updateFallbackDirs.py with the bandwidth and consensus
+ weight for each candidate fallback. Closes ticket 20878.
+ - Display the relay fingerprint when downloading consensuses from
+ fallbacks. Closes ticket 20908.
+ - Exclude relays affected by bug 20499 from the fallback list.
+ Exclude relays from the fallback list if they are running versions
+ known to be affected by bug 20499, or if in our tests they deliver
+ a stale consensus (i.e. one that expired more than 24 hours ago).
+ Closes ticket 20539.
+ - Make it easier to change the output sort order of fallbacks.
+ Closes ticket 20822.
+ - Reduce the minimum fallback bandwidth to 1 MByte/s. Part of
+ ticket 18828.
+ - Require fallback directories to have the same address and port for
+ 7 days (now that we have enough relays with this stability).
+ Relays whose OnionOO stability timer is reset on restart by bug
+ 18050 should upgrade to Tor 0.2.8.7 or later, which has a fix for
+ this issue. Closes ticket 20880; maintains short-term fix
+ in 0.2.8.2-alpha.
+ - Require fallbacks to have flags for 90% of the time (weighted
+ decaying average), rather than 95%. This allows at least 73% of
+ clients to bootstrap in the first 5 seconds without contacting an
+ authority. Part of ticket 18828.
+ - Select 200 fallback directories for each release. Closes
+ ticket 20881.
+
+ o Minor features (fingerprinting resistence, authentication):
+ - Extend the length of RSA keys used for TLS link authentication to
+ 2048 bits. (These weren't used for forward secrecy; for forward
+ secrecy, we used P256.) Closes ticket 13752.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (geoip, also in 0.2.9.9):
+ - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (infrastructure):
+ - Implement smartlist_add_strdup() function. Replaces the use of
+ smartlist_add(sl, tor_strdup(str)). Closes ticket 20048.
+
+ o Minor features (linting):
+ - Enhance the changes file linter to warn on Tor versions that are
+ prefixed with "tor-". Closes ticket 21096.
+
+ o Minor features (logging):
+ - In several places, describe unset ed25519 keys as "<unset>",
+ rather than the scary "AAAAAAAA...AAA". Closes ticket 21037.
+
+ o Minor features (portability, compilation):
+ - Autoconf now checks to determine if OpenSSL structures are opaque,
+ instead of explicitly checking for OpenSSL version numbers. Part
+ of ticket 21359.
+ - Support building with recent LibreSSL code that uses opaque
+ structures. Closes ticket 21359.
+
+ o Minor features (relay):
+ - We now allow separation of exit and relay traffic to different
+ source IP addresses, using the OutboundBindAddressExit and
+ OutboundBindAddressOR options respectively. Closes ticket 17975.
+ Written by Michael Sonntag.
+
+ o Minor features (reliability, crash):
+ - Try better to detect problems in buffers where they might grow (or
+ think they have grown) over 2 GB in size. Diagnostic for
+ bug 21369.
+
+ o Minor features (testing):
+ - During 'make test-network-all', if tor logs any warnings, ask
+ chutney to output them. Requires a recent version of chutney with
+ the 21572 patch. Implements 21570.
+
+ o Minor bugfix (control protocol):
+ - The reply to a "GETINFO config/names" request via the control
+ protocol now spells the type "Dependent" correctly. This is a
+ breaking change in the control protocol. (The field seems to be
+ ignored by the most common known controllers.) Fixes bug 18146;
+ bugfix on 0.1.1.4-alpha.
+ - The GETINFO extra-info/digest/<digest> command was broken because
+ of a wrong base16 decode return value check, introduced when
+ refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfix (logging):
+ - Don't recommend the use of Tor2web in non-anonymous mode.
+ Recommending Tor2web is a bad idea because the client loses all
+ anonymity. Tor2web should only be used in specific cases by users
+ who *know* and understand the issues. Fixes bug 21294; bugfix
+ on 0.2.9.3-alpha.
+
+ o Minor bugfixes (bug resilience):
+ - Fix an unreachable size_t overflow in base64_decode(). Fixes bug
+ 19222; bugfix on 0.2.0.9-alpha. Found by Guido Vranken; fixed by
+ Hans Jerry Illikainen.
+
+ o Minor bugfixes (build):
+ - Replace obsolete Autoconf macros with their modern equivalent and
+ prevent similar issues in the future. Fixes bug 20990; bugfix
+ on 0.1.0.1-rc.
+
+ o Minor bugfixes (certificate expiration time):
+ - Avoid using link certificates that don't become valid till some
+ time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
+
+ o Minor bugfixes (client):
+ - Always recover from failures in extend_info_from_node(), in an
+ attempt to prevent any recurrence of bug 21242. Fixes bug 21372;
+ bugfix on 0.2.3.1-alpha.
+ - When clients that use bridges start up with a cached consensus on
+ disk, they were ignoring it and downloading a new one. Now they
+ use the cached one. Fixes bug 20269; bugfix on 0.2.3.12-alpha.
+
+ o Minor bugfixes (code correctness):
+ - Repair a couple of (unreachable or harmless) cases of the risky
+ comparison-by-subtraction pattern that caused bug 21278.
+
+ o Minor bugfixes (config):
+ - Don't assert on startup when trying to get the options list and
+ LearnCircuitBuildTimeout is set to 0: we are currently parsing the
+ options so of course they aren't ready yet. Fixes bug 21062;
+ bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (configuration):
+ - Accept non-space whitespace characters after the severity level in
+ the `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
+ - Support "TByte" and "TBytes" units in options given in bytes.
+ "TB", "terabyte(s)", "TBit(s)" and "terabit(s)" were already
+ supported. Fixes bug 20622; bugfix on 0.2.0.14-alpha.
+
+ o Minor bugfixes (configure, autoconf):
+ - Rename the configure option --enable-expensive-hardening to
+ --enable-fragile-hardening. Expensive hardening makes the tor
+ daemon abort when some kinds of issues are detected. Thus, it
+ makes tor more at risk of remote crashes but safer against RCE or
+ heartbleed bug category. We now try to explain this issue in a
+ message from the configure script. Fixes bug 21290; bugfix
+ on 0.2.5.4-alpha.
+
+ o Minor bugfixes (consensus weight):
+ - Add new consensus method that initializes bw weights to 1 instead
+ of 0. This prevents a zero weight from making it all the way to
+ the end (happens in small testing networks) and causing an error.
+ Fixes bug 14881; bugfix on 0.2.2.17-alpha.
+
+ o Minor bugfixes (crash prevention):
+ - Fix an (currently untriggerable, but potentially dangerous) crash
+ bug when base32-encoding inputs whose sizes are not a multiple of
+ 5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (dead code):
+ - Remove a redundant check for PidFile changes at runtime in
+ options_transition_allowed(): this check is already performed
+ regardless of whether the sandbox is active. Fixes bug 21123;
+ bugfix on 0.2.5.4-alpha.
+
+ o Minor bugfixes (descriptors):
+ - Correctly recognise downloaded full descriptors as valid, even
+ when using microdescriptors as circuits. This affects clients with
+ FetchUselessDescriptors set, and may affect directory authorities.
+ Fixes bug 20839; bugfix on 0.2.3.2-alpha.
+
+ o Minor bugfixes (directory mirrors):
+ - Allow relays to use directory mirrors without a DirPort: these
+ relays need to be contacted over their ORPorts using a begindir
+ connection. Fixes one case of bug 20711; bugfix on 0.2.8.2-alpha.
+ - Clarify the message logged when a remote relay is unexpectedly
+ missing an ORPort or DirPort: users were confusing this with a
+ local port. Fixes another case of bug 20711; bugfix
+ on 0.2.8.2-alpha.
+
+ o Minor bugfixes (directory system):
+ - Bridges and relays now use microdescriptors (like clients do)
+ rather than old-style router descriptors. Now bridges will blend
+ in with clients in terms of the circuits they build. Fixes bug
+ 6769; bugfix on 0.2.3.2-alpha.
+ - Download all consensus flavors, descriptors, and authority
+ certificates when FetchUselessDescriptors is set, regardless of
+ whether tor is a directory cache or not. Fixes bug 20667; bugfix
+ on all recent tor versions.
+
+ o Minor bugfixes (documentation):
+ - Update the tor manual page to document every option that can not
+ be changed while tor is running. Fixes bug 21122.
+
+ o Minor bugfixes (ed25519 certificates):
+ - Correctly interpret ed25519 certificates that would expire some
+ time after 19 Jan 2038. Fixes bug 20027; bugfix on 0.2.7.2-alpha.
+
+ o Minor bugfixes (fallback directories):
+ - Avoid checking fallback candidates' DirPorts if they are down in
+ OnionOO. When a relay operator has multiple relays, this
+ prioritizes relays that are up over relays that are down. Fixes
+ bug 20926; bugfix on 0.2.8.3-alpha.
+ - Stop failing when OUTPUT_COMMENTS is True in updateFallbackDirs.py.
+ Fixes bug 20877; bugfix on 0.2.8.3-alpha.
+ - Stop failing when a relay has no uptime data in
+ updateFallbackDirs.py. Fixes bug 20945; bugfix on 0.2.8.1-alpha.
+
+ o Minor bugfixes (hidden service):
+ - Clean up the code for expiring intro points with no associated
+ circuits. It was causing, rarely, a service with some expiring
+ introduction points to not open enough additional introduction
+ points. Fixes part of bug 21302; bugfix on 0.2.7.2-alpha.
+ - Resolve two possible underflows which could lead to creating and
+ closing a lot of introduction point circuits in a non-stop loop.
+ Fixes bug 21302; bugfix on 0.2.7.2-alpha.
+ - Stop setting the torrc option HiddenServiceStatistics to "0" just
+ because we're not a bridge or relay. Instead, we preserve whatever
+ value the user set (or didn't set). Fixes bug 21150; bugfix
+ on 0.2.6.2-alpha.
+
+ o Minor bugfixes (hidden services):
+ - Make hidden services check for failed intro point connections,
+ even when they have exceeded their intro point creation limit.
+ Fixes bug 21596; bugfix on 0.2.7.2-alpha. Reported by Alec Muffett.
+ - Make hidden services with 8 to 10 introduction points check for
+ failed circuits immediately after startup. Previously, they would
+ wait for 5 minutes before performing their first checks. Fixes bug
+ 21594; bugfix on 0.2.3.9-alpha. Reported by Alec Muffett.
+ - Stop ignoring misconfigured hidden services. Instead, refuse to
+ start tor until the misconfigurations have been corrected. Fixes
+ bug 20559; bugfix on multiple commits in 0.2.7.1-alpha
+ and earlier.
+
+ o Minor bugfixes (IPv6):
+ - Make IPv6-using clients try harder to find an IPv6 directory
+ server. Fixes bug 20999; bugfix on 0.2.8.2-alpha.
+ - When IPv6 addresses have not been downloaded yet (microdesc
+ consensus documents don't list relay IPv6 addresses), use hard-
+ coded addresses for authorities, fallbacks, and configured
+ bridges. Now IPv6-only clients can use microdescriptors. Fixes bug
+ 20996; bugfix on b167e82 from 19608 in 0.2.8.5-alpha.
+
+ o Minor bugfixes (memory leak at exit):
+ - Fix a small harmless memory leak at exit of the previously unused
+ RSA->Ed identity cross-certificate. Fixes bug 17779; bugfix
+ on 0.2.7.2-alpha.
+
+ o Minor bugfixes (onion services):
+ - Allow the number of introduction points to be as low as 0, rather
+ than as low as 3. Fixes bug 21033; bugfix on 0.2.7.2-alpha.
+
+ o Minor bugfixes (portability):
+ - Use "OpenBSD" compiler macro instead of "OPENBSD" or "__OpenBSD__".
+ It is supported by OpenBSD itself, and also by most OpenBSD
+ variants (such as Bitrig). Fixes bug 20980; bugfix
+ on 0.1.2.1-alpha.
+
+ o Minor bugfixes (portability, also in 0.2.9.9):
+ - Avoid crashing when Tor is built using headers that contain
+ CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
+ without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
+ on 0.2.9.1-alpha.
+ - Fix Libevent detection on platforms without Libevent 1 headers
+ installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (relay):
+ - Avoid a double-marked-circuit warning that could happen when we
+ receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
+ on 0.1.0.1-rc.
+ - Honor DataDirectoryGroupReadable when tor is a relay. Previously,
+ initializing the keys would reset the DataDirectory to 0700
+ instead of 0750 even if DataDirectoryGroupReadable was set to 1.
+ Fixes bug 19953; bugfix on 0.0.2pre16. Patch by "redfish".
+
+ o Minor bugfixes (testing):
+ - Fix Raspbian build issues related to missing socket errno in
+ test_util.c. Fixes bug 21116; bugfix on 0.2.8.2. Patch by "hein".
+ - Remove undefined behavior from the backtrace generator by removing
+ its signal handler. Fixes bug 21026; bugfix on 0.2.5.2-alpha.
+ - Use bash in src/test/test-network.sh. This ensures we reliably
+ call chutney's newer tools/test-network.sh when available. Fixes
+ bug 21562; bugfix on 0.2.9.1-alpha.
+
+ o Minor bugfixes (tor-resolve):
+ - The tor-resolve command line tool now rejects hostnames over 255
+ characters in length. Previously, it would silently truncate them,
+ which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
+ Patch by "junglefowl".
+
+ o Minor bugfixes (unit tests):
+ - Allow the unit tests to pass even when DNS lookups of bogus
+ addresses do not fail as expected. Fixes bug 20862 and 20863;
+ bugfix on unit tests introduced in 0.2.8.1-alpha
+ through 0.2.9.4-alpha.
+
+ o Minor bugfixes (util):
+ - When finishing writing a file to disk, if we were about to replace
+ the file with the temporary file created before and we fail to
+ replace it, remove the temporary file so it doesn't stay on disk.
+ Fixes bug 20646; bugfix on 0.2.0.7-alpha. Patch by fk.
+
+ o Minor bugfixes (Windows services):
+ - Be sure to initialize the monotonic time subsystem before using
+ it, even when running as an NT service. Fixes bug 21356; bugfix
+ on 0.2.9.1-alpha.
+
+ o Minor bugfixes (Windows):
+ - Check for getpagesize before using it to mmap files. This fixes
+ compilation in some MinGW environments. Fixes bug 20530; bugfix on
+ 0.1.2.1-alpha. Reported by "ice".
+
+ o Code simplification and refactoring:
+ - Abolish all global guard context in entrynodes.c; replace with new
+ guard_selection_t structure as preparation for proposal 271.
+ Closes ticket 19858.
+ - Extract magic numbers in circuituse.c into defined variables.
+ - Introduce rend_service_is_ephemeral() that tells if given onion
+ service is ephemeral. Replace unclear NULL-checkings for service
+ directory with this function. Closes ticket 20526.
+ - Refactor circuit_is_available_for_use to remove unnecessary check.
+ - Refactor circuit_predict_and_launch_new for readability and
+ testability. Closes ticket 18873.
+ - Refactor code to manipulate global_origin_circuit_list into
+ separate functions. Closes ticket 20921.
+ - Refactor large if statement in purpose_needs_anonymity to use
+ switch statement instead. Closes part of ticket 20077.
+ - Refactor the hashing API to return negative values for errors, as
+ is done as throughout the codebase. Closes ticket 20717.
+ - Remove data structures that were used to index or_connection
+ objects by their RSA identity digests. These structures are fully
+ redundant with the similar structures used in the
+ channel abstraction.
+ - Remove duplicate code in the channel_write_*cell() functions.
+ Closes ticket 13827; patch from Pingl.
+ - Remove redundant behavior of is_sensitive_dir_purpose, refactor to
+ use only purpose_needs_anonymity. Closes part of ticket 20077.
+ - The code to generate and parse EXTEND and EXTEND2 cells has been
+ replaced with code automatically generated by the
+ "trunnel" utility.
+
+ o Documentation (formatting):
+ - Clean up formatting of tor.1 man page and HTML doc, where <pre>
+ blocks were incorrectly appearing. Closes ticket 20885.
+
+ o Documentation (man page):
+ - Clarify many options in tor.1 and add some min/max values for
+ HiddenService options. Closes ticket 21058.
+
+ o Documentation:
+ - Change '1' to 'weight_scale' in consensus bw weights calculation
+ comments, as that is reality. Closes ticket 20273. Patch
+ from pastly.
+ - Clarify that when ClientRejectInternalAddresses is enabled (which
+ is the default), multicast DNS hostnames for machines on the local
+ network (of the form *.local) are also rejected. Closes
+ ticket 17070.
+ - Correct the value for AuthDirGuardBWGuarantee in the manpage, from
+ 250 KBytes to 2 MBytes. Fixes bug 20435; bugfix on 0.2.5.6-alpha.
+ - Include the "TBits" unit in Tor's man page. Fixes part of bug
+ 20622; bugfix on 0.2.5.1-alpha.
+ - Small fixes to the fuzzing documentation. Closes ticket 21472.
+ - Stop the man page from incorrectly stating that HiddenServiceDir
+ must already exist. Fixes 20486.
+ - Update the description of the directory server options in the
+ manual page, to clarify that a relay no longer needs to set
+ DirPort in order to be a directory cache. Closes ticket 21720.
+
+ o Removed features:
+ - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
+ limit for relays running on a single IP applies to authority IP
+ addresses as well as to non-authority IP addresses. Closes
+ ticket 20960.
+ - The UseDirectoryGuards torrc option no longer exists: all users
+ that use entry guards will also use directory guards. Related to
+ proposal 271; implements part of ticket 20831.
+
+ o Testing:
+ - Add tests for networkstatus_compute_bw_weights_v10.
+ - Add unit tests circuit_predict_and_launch_new.
+ - Extract dummy_origin_circuit_new so it can be used by other
+ test functions.
+ - New unit tests for tor_htonll(). Closes ticket 19563. Patch
+ from "overcaffeinated".
+ - Perform the coding style checks when running the tests and fail
+ when coding style violations are found. Closes ticket 5500.
+
+
+Changes in version 0.2.8.13 - 2017-03-03
+ Tor 0.2.8.13 backports a security fix from later Tor
+ releases. Anybody running Tor 0.2.8.12 or earlier should upgrade to this
+ this release, if for some reason they cannot upgrade to a later
+ release series, and if they build Tor with the --enable-expensive-hardening
+ option.
+
+ Note that support for Tor 0.2.8.x is ending next year: we will not issue
+ any fixes for the Tor 0.2.8.x series after 1 Jan 2018. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+
+Changes in version 0.2.7.7 - 2017-03-03
+ Tor 0.2.7.7 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.7.6 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.7.x is ending this year: we will not issue
+ any fixes for the Tor 0.2.7.x series after 1 August 2017. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+
+Changes in version 0.2.6.11 - 2017-03-03
+ Tor 0.2.6.11 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.6.10 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.6.x is ending this year: we will not issue
+ any fixes for the Tor 0.2.6.x series after 1 August 2017. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+
+Changes in version 0.2.5.13 - 2017-03-03
+ Tor 0.2.5.13 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.5.13 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.5.x is ending next year: we will not issue
+ any fixes for the Tor 0.2.5.x series after 1 May 2018. If you need
+ a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
+ - Stop a crash that could occur when a client running with DNSPort
+ received a query with multiple address types, and the first
+ address type was not supported. Found and fixed by Scott Dial.
+ Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+ o Minor bugfixes (crypto error-handling, backport from 0.2.7.2-alpha):
+ - Check for failures from crypto_early_init, and refuse to continue.
+ A previous typo meant that we could keep going with an
+ uninitialized crypto library, and would have OpenSSL initialize
+ its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
+ when implementing ticket 4900. Patch by "teor".
+
+ o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
+ - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
+ a client authorized hidden service. Fixes bug 15823; bugfix
+ on 0.2.1.6-alpha.
+
+
+Changes in version 0.2.4.28 - 2017-03-03
+ Tor 0.2.4.28 backports a number of security fixes from later Tor
+ releases. Anybody running Tor 0.2.4.27 or earlier should upgrade to
+ this release, if for some reason they cannot upgrade to a later
+ release series.
+
+ Note that support for Tor 0.2.4.x is ending soon: we will not issue
+ any fixes for the Tor 0.2.4.x series after 1 August 2017. If you need
+ a Tor release series with long-term support, we recommend Tor 0.2.9.x.
+
+ o Directory authority changes (backport from 0.2.8.5-rc):
+ - Urras is no longer a directory authority. Closes ticket 19271.
+
+ o Directory authority changes (backport from 0.2.9.2-alpha):
+ - The "Tonga" bridge authority has been retired; the new bridge
+ authority is "Bifroest". Closes tickets 19728 and 19690.
+
+ o Directory authority key updates (backport from 0.2.8.1-alpha):
+ - Update the V3 identity key for the dannenberg directory authority:
+ it was changed on 18 November 2015. Closes task 17906. Patch
+ by "teor".
+
+ o Major features (security fixes, backport from 0.2.9.4-alpha):
+ - Prevent a class of security bugs caused by treating the contents
+ of a buffer chunk as if they were a NUL-terminated string. At
+ least one such bug seems to be present in all currently used
+ versions of Tor, and would allow an attacker to remotely crash
+ most Tor instances, especially those compiled with extra compiler
+ hardening. With this defense in place, such bugs can't crash Tor,
+ though we should still fix them as they occur. Closes ticket
+ 20384 (TROVE-2016-10-001).
+
+ o Major bugfixes (parsing, security, backport from 0.2.9.8):
+ - Fix a bug in parsing that could cause clients to read a single
+ byte past the end of an allocated region. This bug could be used
+ to cause hardened clients (built with --enable-expensive-hardening)
+ to crash if they tried to visit a hostile hidden service. Non-
+ hardened clients are only affected depending on the details of
+ their platform's memory allocator. Fixes bug 21018; bugfix on
+ 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
+ 2016-12-002 and as CVE-2016-1254.
+
+ o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
+ - Fix an error that could cause us to read 4 bytes before the
+ beginning of an openssl string. This bug could be used to cause
+ Tor to crash on systems with unusual malloc implementations, or
+ systems with unusual hardening installed. Fixes bug 17404; bugfix
+ on 0.2.3.6-alpha.
+
+ o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
+ - Avoid a difficult-to-trigger heap corruption attack when extending
+ a smartlist to contain over 16GB of pointers. Fixes bug 18162;
+ bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
+ Reported by Guido Vranken.
+
+ o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
+ - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
+ bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
+
+ o Major bugfixes (guard selection, backport from 0.2.7.6):
+ - Actually look at the Guard flag when selecting a new directory
+ guard. When we implemented the directory guard design, we
+ accidentally started treating all relays as if they have the Guard
+ flag during guard selection, leading to weaker anonymity and worse
+ performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
+ by Mohsen Imani.
+
+ o Major bugfixes (key management, backport from 0.2.8.3-alpha):
+ - If OpenSSL fails to generate an RSA key, do not retain a dangling
+ pointer to the previous (uninitialized) key value. The impact here
+ should be limited to a difficult-to-trigger crash, if OpenSSL is
+ running an engine that makes key generation failures possible, or
+ if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
+ 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
+ Baishakhi Ray.
+
+ o Major bugfixes (parsing, backported from 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
+ - Make memwipe() do nothing when passed a NULL pointer or buffer of
+ zero size. Check size argument to memwipe() for underflow. Fixes
+ bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
+ patch by "teor".
+
+ o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
+ - Make Tor survive errors involving connections without a
+ corresponding event object. Previously we'd fail with an
+ assertion; now we produce a log message. Related to bug 16248.
+
+ o Minor features (DoS-resistance, backport from 0.2.7.1-alpha):
+ - Make it harder for attackers to overload hidden services with
+ introductions, by blocking multiple introduction requests on the
+ same circuit. Resolves ticket 15515.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor bugfixes (compilation, backport from 0.2.7.6):
+ - Fix a compilation warning with Clang 3.6: Do not check the
+ presence of an address which can never be NULL. Fixes bug 17781.
+
+ o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
+ - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
+ a client authorized hidden service. Fixes bug 15823; bugfix
+ on 0.2.1.6-alpha.
+
+
+Changes in version 0.2.9.10 - 2017-03-01
+ Tor 0.2.9.10 backports a security fix from later Tor release. It also
+ includes fixes for some major issues affecting directory authorities,
+ LibreSSL compatibility, and IPv6 correctness.
+
+ The Tor 0.2.9.x release series is now marked as a long-term-support
+ series. We intend to backport security fixes to 0.2.9.x until at
+ least January of 2020.
+
+ o Major bugfixes (directory authority, 0.3.0.3-alpha):
+ - During voting, when marking a relay as a probable sybil, do not
+ clear its BadExit flag: sybils can still be bad in other ways
+ too. (We still clear the other flags.) Fixes bug 21108; bugfix
+ on 0.2.0.13-alpha.
+
+ o Major bugfixes (IPv6 Exits, backport from 0.3.0.3-alpha):
+ - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
+ any IPv6 addresses. Instead, only reject a port over IPv6 if the
+ exit policy rejects that port on more than an IPv6 /16 of
+ addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
+ which rejected a relay's own IPv6 address by default. Fixes bug
+ 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
+
+ o Major bugfixes (parsing, also in 0.3.0.4-rc):
+ - Fix an integer underflow bug when comparing malformed Tor
+ versions. This bug could crash Tor when built with
+ --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
+ 0.2.9.8, which were built with -ftrapv by default. In other cases
+ it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
+ on 0.0.8pre1. Found by OSS-Fuzz.
+
+ o Minor features (directory authorities, also in 0.3.0.4-rc):
+ - Directory authorities now reject descriptors that claim to be
+ malformed versions of Tor. Helps prevent exploitation of
+ bug 21278.
+ - Reject version numbers with components that exceed INT32_MAX.
+ Otherwise 32-bit and 64-bit platforms would behave inconsistently.
+ Fixes bug 21450; bugfix on 0.0.8pre1.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
+ Country database.
+
+ o Minor features (portability, compilation, backport from 0.3.0.3-alpha):
+ - Autoconf now checks to determine if OpenSSL structures are opaque,
+ instead of explicitly checking for OpenSSL version numbers. Part
+ of ticket 21359.
+ - Support building with recent LibreSSL code that uses opaque
+ structures. Closes ticket 21359.
+
+ o Minor bugfixes (code correctness, also in 0.3.0.4-rc):
+ - Repair a couple of (unreachable or harmless) cases of the risky
+ comparison-by-subtraction pattern that caused bug 21278.
+
+ o Minor bugfixes (tor-resolve, backport from 0.3.0.3-alpha):
+ - The tor-resolve command line tool now rejects hostnames over 255
+ characters in length. Previously, it would silently truncate them,
+ which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
+ Patch by "junglefowl".
+
+
Changes in version 0.2.9.9 - 2017-01-23
Tor 0.2.9.9 fixes a denial-of-service bug where an attacker could
cause relays and clients to crash, even if they were not built with
diff --git a/acinclude.m4 b/acinclude.m4
index 193d3a7a08..49d4f14471 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2,7 +2,7 @@ dnl Helper macros for Tor configure.ac
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
dnl Copyright (c) 2007-2008, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2015, The Tor Project, Inc.
+dnl Copyright (c) 2007-2017, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_DEFUN([TOR_EXTEND_CODEPATH],
diff --git a/changes/bug16082 b/changes/bug16082
new file mode 100644
index 0000000000..0f2f04fb35
--- /dev/null
+++ b/changes/bug16082
@@ -0,0 +1,4 @@
+ o Documentation:
+ - Correctly note that bandwidth accounting values are stored in the
+ state file, and the bw_accounting file is now obsolete. Closes
+ ticket 16082.
diff --git a/changes/bug17857 b/changes/bug17857
new file mode 100644
index 0000000000..6c88638231
--- /dev/null
+++ b/changes/bug17857
@@ -0,0 +1,6 @@
+ o Minor features (defensive programming):
+ - Create a pair of consensus parameters nf_pad_tor2web and
+ nf_pad_single_onion that allow us to disable netflow padding in the
+ consensus for non-anonymous connections, in case the overhead is high.
+ Closes #17857.
+
diff --git a/changes/bug18100 b/changes/bug18100
deleted file mode 100644
index cd3ba2c977..0000000000
--- a/changes/bug18100
+++ /dev/null
@@ -1,5 +0,0 @@
- o Major bugfixes (linux TPROXY support):
- - Fix a typo that had prevented TPROXY-based transparent proxying from
- working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
-
diff --git a/changes/bug19418 b/changes/bug19418
new file mode 100644
index 0000000000..fb5f6ad5df
--- /dev/null
+++ b/changes/bug19418
@@ -0,0 +1,7 @@
+ o Minor bugfixes (robustness, error handling):
+ - Improve our handling of the cases where OpenSSL encounters a
+ memory error while encoding keys and certificates. We haven't
+ observed these happening in the wild, but if they do happen,
+ we now detect and respond better. Fixes bug 19418; bugfix
+ on all versions of Tor. Reported by Guido Vranken.
+
diff --git a/changes/bug20059 b/changes/bug20059
deleted file mode 100644
index 091fab06d1..0000000000
--- a/changes/bug20059
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (relay):
- - Avoid a double-marked-circuit warning that can happen when we receive
- DESTROY cells under heavy load. Fixes bug 20059; bugfix on 0.1.0.1-rc.
diff --git a/changes/bug20270 b/changes/bug20270
deleted file mode 100644
index d538a358dc..0000000000
--- a/changes/bug20270
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfixes (directory authority):
- - When rejecting a router descriptor because the relay is running an
- obsolete version of Tor without ntor support, warn about the obsolete
- tor version, not the missing ntor key. Fixes bug 20270;
- bugfix on 0.2.9.3-alpha.
-
diff --git a/changes/bug20509 b/changes/bug20509
deleted file mode 100644
index a39ca9f60b..0000000000
--- a/changes/bug20509
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features:
- - Directory authorities now reject relays running versions
- 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
- suffer from bug 20499 and don't keep their consensus cache
- up-to-date. Resolves ticket 20509.
diff --git a/changes/bug20711 b/changes/bug20711
deleted file mode 100644
index 0bc0d94fb1..0000000000
--- a/changes/bug20711
+++ /dev/null
@@ -1,7 +0,0 @@
- o Minor bugfixes (directory mirrors):
- - Allow relays to use directory mirrors without a DirPort: these relays
- need to be contacted over their ORPorts using a begindir connection.
- Fixes bug 20711; bugfix on 0.2.8.2-alpha.
- - Clarify the message logged when a remote relay is unexpectedly missing
- an ORPort or DirPort: users were confusing this with a local port.
- Fixes bug 20711; bugfix on 0.2.8.2-alpha.
diff --git a/changes/bug20894 b/changes/bug20894
deleted file mode 100644
index 2dbf9b9aa9..0000000000
--- a/changes/bug20894
+++ /dev/null
@@ -1,9 +0,0 @@
- o Major bugfixes (HTTP, parsing):
- - When parsing a malformed content-length field from an HTTP message,
- do not read off the end of the buffer. This bug was a potential
- remote denial-of-service attack against Tor clients and relays.
- A workaround was released in October 2016, which prevents this
- bug from crashing Tor. This is a fix for the underlying issue,
- which should no longer matter (if you applied the earlier patch).
- Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
- using AFL (http://lcamtuf.coredump.cx/afl/).
diff --git a/changes/bug21007_case2 b/changes/bug21007_case2
deleted file mode 100644
index 43344449ec..0000000000
--- a/changes/bug21007_case2
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (guards):
- - Don't warn about a missing guard state on timeout-measurement
- circuits: they aren't supposed to be using guards. Fixes an
- instance of bug 21007; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug21027 b/changes/bug21027
deleted file mode 100644
index d20df876fa..0000000000
--- a/changes/bug21027
+++ /dev/null
@@ -1,8 +0,0 @@
- o Major bugfixes (bridges):
-
- - When the same bridge is configured multiple times at different
- address:port combinations (but with the same identity), treat
- those bridge instances as separate guards. This allows clients to
- configure the same bridge with multiple pluggable transports, once
- again. Fixes bug 21027; bugfix on 0.3.0.1-alpha.
-
diff --git a/changes/bug21074_downgrade b/changes/bug21074_downgrade
new file mode 100644
index 0000000000..1bc1f8523a
--- /dev/null
+++ b/changes/bug21074_downgrade
@@ -0,0 +1,4 @@
+ o Minor bugfixes (portability):
+ - Don't exit the Tor process if setrlimit() fails to change the file
+ limit (which can happen sometimes on some versions of OSX). Fixes
+ bug 21074; bugfix on 0.0.9pre5.
diff --git a/changes/bug21116 b/changes/bug21116
deleted file mode 100644
index 2304ab0fd6..0000000000
--- a/changes/bug21116
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (test):
- - Fix Raspbian build missing socket errno in test util. Fixes bug 21116.;
- bugfix on tor-0.2.8.2. Patch by "hein".
diff --git a/changes/bug21278_extras b/changes/bug21278_extras
deleted file mode 100644
index ffdf4a047b..0000000000
--- a/changes/bug21278_extras
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (code correctness):
- - Repair a couple of (unreachable or harmless) cases of the risky
- comparison-by-subtraction pattern that caused bug 21278.
diff --git a/changes/bug21278_prevention b/changes/bug21278_prevention
deleted file mode 100644
index e07f0a670c..0000000000
--- a/changes/bug21278_prevention
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (directory authority):
- - Directory authorities now reject descriptors that claim to be
- malformed versions of Tor. Helps prevent exploitation of bug 21278.
-
diff --git a/changes/bug21369_check b/changes/bug21369_check
deleted file mode 100644
index 2cd808c9b6..0000000000
--- a/changes/bug21369_check
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (reliability, crash):
- - Try better to detect problems in buffers where they might grow (or
- think they have grown) over 2 GB in size. Diagnostic for bug 21369.
diff --git a/changes/bug21415 b/changes/bug21415
deleted file mode 100644
index f0aa72f81f..0000000000
--- a/changes/bug21415
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfix (entry guards):
- - Silence a BUG() warning when attempting to use a guard whose descriptor
- we don't know and make this scenario more unlikely to happen. Fixes bug
- 21415; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug21420 b/changes/bug21420
deleted file mode 100644
index 014404466a..0000000000
--- a/changes/bug21420
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (certificate expiration time):
- - Avoid using link certificates that don't become valid till
- some time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
diff --git a/changes/bug21447 b/changes/bug21447
deleted file mode 100644
index c025b92313..0000000000
--- a/changes/bug21447
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (testing):
- - Rename "make fuzz" to "make test-fuzz-corpora", since it doesn't
- actually fuzz anything. Fixes bug 21447; bugfix on 0.3.0.3-alpha.
-
diff --git a/changes/bug21450 b/changes/bug21450
deleted file mode 100644
index a1cf89ab41..0000000000
--- a/changes/bug21450
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (voting consistency):
- - Reject version numbers with components that exceed INT32_MAX.
- Otherwise 32-bit and 64-bit platforms would behave inconsistently.
- Fixes bug 21450; bugfix on 0.0.8pre1.
diff --git a/changes/bug21471 b/changes/bug21471
deleted file mode 100644
index 684035b19c..0000000000
--- a/changes/bug21471
+++ /dev/null
@@ -1,5 +0,0 @@
- o Major bugfixes (hidden service directory v3):
- - When a descriptor lookup was done and it was not found in the directory
- cache, it would crash on a NULL pointer instead of returning the 404
- code back to the client like it was suppose to. Fixes bug 21471.;
- bugfixes on tor-0.3.0.1-alpha.
diff --git a/changes/bug21472 b/changes/bug21472
deleted file mode 100644
index f31ec9157e..0000000000
--- a/changes/bug21472
+++ /dev/null
@@ -1,3 +0,0 @@
- o Documentation:
- - Small fixes to the fuzzing documentation. Closes ticket
- 21472.
diff --git a/changes/bug21492 b/changes/bug21492
deleted file mode 100644
index 2ed7947771..0000000000
--- a/changes/bug21492
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (correctness):
- - Remove a redundant check for the UseEntryGuards option from the
- options_transition_affects_guards() function. Fixes bug 21492;
- bugfix on 0.3.0.1-alpha.
-
diff --git a/changes/bug21507 b/changes/bug21507
deleted file mode 100644
index f83e291b63..0000000000
--- a/changes/bug21507
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (voting consistency):
- - Reject version numbers with non-numeric prefixes (such as +, -, and
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms.
- Fixes bug 21507 and part of 21508; bugfix on 0.0.8pre1.
diff --git a/changes/bug21553 b/changes/bug21553
deleted file mode 100644
index 6ffa3e29a2..0000000000
--- a/changes/bug21553
+++ /dev/null
@@ -1,7 +0,0 @@
- o Minor bugfixes (hidden service):
- - When encoding a legacy ESTABLISH_INTRO cell, we were using the sizeof()
- on a pointer instead of real size of the destination buffer leading to
- an overflow passing an enormous value to the signing digest function.
- Fortunately, that value was only used to make sure the destination
- buffer length was big enough for the key size and in this case it was.
- Fixes bug 21553; bugfix on tor-0.3.0.1-alpha.
diff --git a/changes/bug21562 b/changes/bug21562
deleted file mode 100644
index 48396a00e7..0000000000
--- a/changes/bug21562
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (testing):
- - Use bash in src/test/test-network.sh. This ensures we reliably call
- chutney's newer tools/test-network.sh when available.
- Fixes bug 21562; bugfix on tor-0.2.9.1-alpha.
diff --git a/changes/bug21576 b/changes/bug21576
deleted file mode 100644
index 68d8471192..0000000000
--- a/changes/bug21576
+++ /dev/null
@@ -1,4 +0,0 @@
- o Major bugfixes (crash, directory connections):
- - Fix a rare crash when sending a begin cell on a circuit whose linked
- directory connection has already been closed. Fixes bug 21576;
- bugfix on Tor 0.2.9.3-alpha. Reported by alecmuffett.
diff --git a/changes/bug21581 b/changes/bug21581
deleted file mode 100644
index 1077719856..0000000000
--- a/changes/bug21581
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (testing):
- - Restore support for test-network.sh on BSD and other systems without
- bash. (But use bash if it's available.) This is a workaround until we
- remove bash-specific code in 19699.
- Fixes bug 21581; bugfix on 21562, not in any released version of tor.
diff --git a/changes/bug21594 b/changes/bug21594
deleted file mode 100644
index e624d1226d..0000000000
--- a/changes/bug21594
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (hidden services):
- - Make hidden services with 8 to 10 introduction points check for failed
- circuits immediately after startup. Previously, they would wait for 5
- minutes before performing their first checks. Fixes bug 21594; bugfix on
- commit 190aac0eab9 in Tor 0.2.3.9-alpha. Reported by alecmuffett.
diff --git a/changes/bug21596 b/changes/bug21596
deleted file mode 100644
index ec0a46bb81..0000000000
--- a/changes/bug21596
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (hidden services):
- - Make hidden services check for failed intro point connections, even when
- they have exceeded their intro point creation limit. Fixes bug 21596;
- bugfix on commit d67bf8b2f23 in Tor 0.2.7.2-alpha. Reported by
- alecmuffett.
diff --git a/changes/bug21682 b/changes/bug21682
deleted file mode 100644
index ab7126e4d6..0000000000
--- a/changes/bug21682
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (memory leaks):
- - Fix a memory leak when using GETCONF on a port option.
- Fixes bug 21682; bugfix on 0.3.0.3-alpha.
diff --git a/changes/bug21720 b/changes/bug21720
deleted file mode 100644
index 6d2fbcf711..0000000000
--- a/changes/bug21720
+++ /dev/null
@@ -1,5 +0,0 @@
- o Documentation:
- - Update the description of the directory server options in the manual
- page, to clarify that DirPort is no longer necessary to be a directory
- cache. Closes ticket 21720.
-
diff --git a/changes/bug21771 b/changes/bug21771
deleted file mode 100644
index f814c75c0b..0000000000
--- a/changes/bug21771
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (guard selection):
- - Fix a guard selection bug where Tor would refuse to bootstrap in some
- cases if the user swapped a bridge for another bridge in their
- configuration file.
- Fixes bug 21771; bugfix on 0.3.0.1-alpha. Reported by "torvlnt33r".
diff --git a/changes/bug21799 b/changes/bug21799
deleted file mode 100644
index ee2e904a35..0000000000
--- a/changes/bug21799
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfixes (tests):
- - Run the entry_guard_parse_from_state_full test with the time set
- to a specific date. (The guard state that this test was parsing
- contained guards that had expired since the test was first
- written.) Fixes bug 21799; bugfix on 0.3.0.1-alpha.
-
diff --git a/changes/bug21825 b/changes/bug21825
deleted file mode 100644
index 8f14b32f84..0000000000
--- a/changes/bug21825
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfix (compilation):
- - Functions in hs_service.c was only compiled for unit test making the
- created object (.o) contain no symbols in src/or/libor.a resulting in a
- compilation warning from clang. We now expose those functions for the
- unit tests. This will be changed in 0.3.2 release. Fixes bug 21825.;
- bugfix on tor-0.3.0.1-alpha.
diff --git a/changes/bug21894_029 b/changes/bug21894_029
deleted file mode 100644
index e3a84fa721..0000000000
--- a/changes/bug21894_029
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (crash prevention):
- - Fix an (currently untriggerable, but potentially dangerous) crash
- bug when base32-encoding inputs whose sizes are not a multiple of
- 5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
-
diff --git a/changes/bug21943 b/changes/bug21943
deleted file mode 100644
index dbe2c726d9..0000000000
--- a/changes/bug21943
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfixes (Linux seccomp2 sandbox):
- - The getpid() system call is now permitted under the Linux seccomp2
- sandbox, to avoid crashing with versions of OpenSSL (and other
- libraries) that attempt to learn the process's PID by using the
- syscall rather than the VDSO code. Fixes bug 21943; bugfix on
- 0.2.5.1-alpha.
diff --git a/changes/bug21969 b/changes/bug21969
deleted file mode 100644
index 9b116fc4cc..0000000000
--- a/changes/bug21969
+++ /dev/null
@@ -1,3 +0,0 @@
- o Major bugfixes (entry guards):
- - Don't block bootstrapping when a primary bridge is offline and we can't
- get its descriptor. Fixes bug 21969; bugfix on 0.3.0.3-alpha.
diff --git a/changes/bug22034 b/changes/bug22034
deleted file mode 100644
index 6d9e188740..0000000000
--- a/changes/bug22034
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (control port, regression):
- - The GETINFO extra-info/digest/<digest> command was broken because of a
- wrong base16 decode return value check. In was introduced in a refactor
- of that API. Fixex bug #22034; bugfix on tor-0.2.9.1-alpha.
diff --git a/changes/bug22159 b/changes/bug22159
new file mode 100644
index 0000000000..c319c7e322
--- /dev/null
+++ b/changes/bug22159
@@ -0,0 +1,7 @@
+ o Minor bugfixes (hidden service):
+ - A service is allowed to open a maximum number of circuits for a specific
+ period of time. That value was lower than it should be (8 vs 12) in the
+ normal case of 3 introduction points. Fixes bug 22159.; bugfix on
+ tor-0.3.0.5-rc.
+ - Rate limit the log if we ever go above the maximum number of allowed
+ intro circuits. Fixes bug 22159.; bugfix on tor-0.3.1.1-alpha.
diff --git a/changes/bug22212 b/changes/bug22212
new file mode 100644
index 0000000000..f92d6701d3
--- /dev/null
+++ b/changes/bug22212
@@ -0,0 +1,5 @@
+ o Minor bugfixes (netflow padding logging):
+ - Demote a warn that was caused by libevent delays to info if
+ the padding is less than 4.5 seconds late, or notice if it is more
+ (4.5 seconds is the amount of time that a netflow record might
+ be emitted after, if we chose the maximum timeout). Fixes bug #22212.
diff --git a/changes/bug22245 b/changes/bug22245
deleted file mode 100644
index 6ae18593ea..0000000000
--- a/changes/bug22245
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (bandwidth accounting):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00.
- Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
diff --git a/changes/bug22246 b/changes/bug22246
deleted file mode 100644
index dbdf31a433..0000000000
--- a/changes/bug22246
+++ /dev/null
@@ -1,6 +0,0 @@
- o Major bugfixes (hidden service directory, security):
- - Fix an assertion failure in the hidden service directory code, which
- could be used by an attacker to remotely cause a Tor relay process to
- exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
- This security issue is tracked as tracked as
- TROVE-2017-002. Fixes bug 22246; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug22252 b/changes/bug22252
deleted file mode 100644
index 42b9d8e095..0000000000
--- a/changes/bug22252
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (configuration):
- - Do not crash when starting with LearnCircuitBuildTimeout 0.
- Fixes bug 22252; bugfix on 0.2.9.3-alpha.
diff --git a/changes/bug22286 b/changes/bug22286
new file mode 100644
index 0000000000..f72e8fe2c7
--- /dev/null
+++ b/changes/bug22286
@@ -0,0 +1,3 @@
+ o Minor features (tests):
+ - Add a couple more tests for compression backend initialization.
+ Closes ticket 22286.
diff --git a/changes/bug22347 b/changes/bug22347
new file mode 100644
index 0000000000..f294ba0a2d
--- /dev/null
+++ b/changes/bug22347
@@ -0,0 +1,2 @@
+ o Documentation:
+ - Add a manpage description for the key-pinning-journal file.
diff --git a/changes/bug22356 b/changes/bug22356
new file mode 100644
index 0000000000..0082b542be
--- /dev/null
+++ b/changes/bug22356
@@ -0,0 +1,5 @@
+ o Minor bugfixes (logging, relay):
+ - Downgrade "assigned_to_cpuworker failed" message to INFO-level
+ severity. In every case that can reach it, either a better warning
+ has already been logged, or no warning is warranted. Fixes bug 22356;
+ bugfix on 0.2.6.3-alpha.
diff --git a/changes/bug22370 b/changes/bug22370
deleted file mode 100644
index e0e87e3339..0000000000
--- a/changes/bug22370
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (memory handling):
- - When directory authorities reject a router descriptor due to keypinning,
- free the router descriptor rather than leaking the memory.
- Fixes bug 22370; bugfix on 0.2.7.2-alpha.
diff --git a/changes/bug22447 b/changes/bug22447
deleted file mode 100644
index f5649d633c..0000000000
--- a/changes/bug22447
+++ /dev/null
@@ -1,3 +0,0 @@
- o Major bugfixes (hidden service v3):
- - HSDir failed to validate the encrypted size of a v3 descriptor and thus
- rejecting it. Fixes bug 22447; bugfix on tor-0.3.0.1-alpha.
diff --git a/changes/bug22460_case1 b/changes/bug22460_case1
deleted file mode 100644
index cfe78ad791..0000000000
--- a/changes/bug22460_case1
+++ /dev/null
@@ -1,16 +0,0 @@
- o Major bugfixes (relays, key management):
- - Regenerate link and authentication certificates whenever the key that
- signs them changes; also, regenerate link certificates whenever the
- signed key changes. Previously, these processes were only weakly
- coupled, and we relays could (for minutes to hours) wind up with an
- inconsistent set of keys and certificates, which other relays
- would not accept. Fixes two cases of bug 22460; bugfix on
- 0.3.0.1-alpha.
- - When sending an Ed25519 signing->link certificate in a CERTS cell,
- send the certificate that matches the x509 certificate that we used
- on the TLS connection. Previously, there was a race condition if
- the TLS context rotated after we began the TLS handshake but
- before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
- on 0.3.0.1-alpha.
-
-
diff --git a/changes/bug22460_case2 b/changes/bug22460_case2
deleted file mode 100644
index 0a11759832..0000000000
--- a/changes/bug22460_case2
+++ /dev/null
@@ -1,8 +0,0 @@
- o Major bugfixes (relay, link handshake):
-
- - When performing the v3 link handshake on a TLS connection, report that
- we have the x509 certificate that we actually used on that connection,
- even if we have changed certificates since that connection was first
- opened. Previously, we would claim to have used our most recent x509
- link certificate, which would sometimes make the link handshake fail.
- Fixes one case of bug 22460; bugfix on 0.2.3.6-alpha.
diff --git a/changes/bug22466_regenerate b/changes/bug22466_regenerate
deleted file mode 100644
index 8dbda89c8f..0000000000
--- a/changes/bug22466_regenerate
+++ /dev/null
@@ -1,8 +0,0 @@
- o Minor bugfixes (link handshake):
- - Lower the lifetime of the RSA->Ed25519 cross-certificate to
- six months, and regenerate it when it is within one month of expiring.
- Previously, we had generated this certificate at startup with
- a ten-year lifetime, but that could lead to weird behavior when
- Tor was started with a grossly inaccurate clock. Mitigates
- bug 22466; mitigation on 0.3.0.1-alpha.
-
diff --git a/changes/bug22490 b/changes/bug22490
deleted file mode 100644
index 244dd50b36..0000000000
--- a/changes/bug22490
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
diff --git a/changes/bug22502_part1 b/changes/bug22502_part1
new file mode 100644
index 0000000000..bd95b7c7c4
--- /dev/null
+++ b/changes/bug22502_part1
@@ -0,0 +1,12 @@
+ o Major bugfixes (compression, zstd):
+ - Correctly detect a full buffer when decompessing a large
+ zstd-compressed input. Fixes bug 22628; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (compression):
+ - When compressing or decompressing a buffer, check for a failure to
+ create a compression object. Fixes bug 22626; bugfix on
+ 0.3.1.1-alpha.
+
+ - When decompressing a buffer, check for extra data after the end of
+ the compressed data. Fixes bug 22629; bugfix on 0.3.1.1-alpha.
+
diff --git a/changes/bug22520 b/changes/bug22520
new file mode 100644
index 0000000000..cc14f7214c
--- /dev/null
+++ b/changes/bug22520
@@ -0,0 +1,5 @@
+ o Minor bugfixes (error reporting, windows):
+ - When formatting Windows error messages, use the English format
+ to avoid codepage issues. Fixes bug 22520; bugfix on
+ 0.1.2.8-alpha. Patch from "Vort".
+
diff --git a/changes/bug22669 b/changes/bug22669
new file mode 100644
index 0000000000..804a39e781
--- /dev/null
+++ b/changes/bug22669
@@ -0,0 +1,4 @@
+ o Minor bugfixes (compression):
+ - When serving directory votes compressed with zlib,
+ do not claim to have compressed them with zstd. Fixes bug 22669;
+ bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug22670 b/changes/bug22670
new file mode 100644
index 0000000000..47403277d2
--- /dev/null
+++ b/changes/bug22670
@@ -0,0 +1,4 @@
+ o Minor bugfixes (logging, compression):
+ - When decompressing, do not warn if we fail to decompress using a
+ compression method that we merely guessed. Fixes part of
+ bug 22670; bugfix on 0.1.1.14-alpha.
diff --git a/changes/bug22670_02 b/changes/bug22670_02
new file mode 100644
index 0000000000..3e7a428faf
--- /dev/null
+++ b/changes/bug22670_02
@@ -0,0 +1,4 @@
+ o Minor bugfixes (logging, compression):
+ - When decompressing, treat mismatch between content-encoding and
+ actual compression type as a protocol warning. Fixes part of bug
+ 22670; bugfix on 0.1.1.9-alpha.
diff --git a/changes/bug22670_03 b/changes/bug22670_03
new file mode 100644
index 0000000000..8a7aa49bcd
--- /dev/null
+++ b/changes/bug22670_03
@@ -0,0 +1,6 @@
+ o Minor bugfixes (compression):
+ - When decompressing an object received over an anonymous directory
+ connection, if we have already successfully decompressed it using an
+ acceptable compression method, do not reject it for looking like an
+ unacceptable compression method. Fixes part of bug 22670; bugfix on
+ 0.3.1.1-alpha.
diff --git a/changes/bug22672 b/changes/bug22672
new file mode 100644
index 0000000000..ec6681149d
--- /dev/null
+++ b/changes/bug22672
@@ -0,0 +1,5 @@
+ o Minor features (compression, defensive programming):
+ - Detect and break out of infinite loops in our compression code.
+ We don't think that any such loops exist now, but it's best to be
+ safe. Closes ticket 22672.
+
diff --git a/changes/bug22702 b/changes/bug22702
new file mode 100644
index 0000000000..a2044c70bf
--- /dev/null
+++ b/changes/bug22702
@@ -0,0 +1,5 @@
+ o Major bugfixes (directory protocol):
+ - Ensure that we sent "304 Not modified" as HTTP status code when a
+ client is attempting to fetch a consensus or consensus diff that
+ matches the latest consensus we have available. Fixes bug 22702;
+ bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug22719 b/changes/bug22719
new file mode 100644
index 0000000000..bfcda0a4e1
--- /dev/null
+++ b/changes/bug22719
@@ -0,0 +1,7 @@
+ o Minor bugfixes (compression):
+ - When spooling compressed data to an output buffer, don't try to
+ spool more data when there is no more data to spool and we are
+ not trying to flush the input. Previously, we would sometimes
+ launch compression requests with nothing to do, which interferes
+ with our 22672 checks. Fixes bug 22719; bugfix on 0.2.0.16-alpha.
+
diff --git a/changes/bug22720 b/changes/bug22720
new file mode 100644
index 0000000000..4893b577f0
--- /dev/null
+++ b/changes/bug22720
@@ -0,0 +1,9 @@
+ o Minor bugfixes (process behavior):
+ - When exiting because of an error, always exit with a nonzero
+ exit status. Previously, we would fail to report an error in
+ our exit status in cases related to lockfile contention,
+ __OwningControllerProcess failure, and Ed25519 key
+ initialization. Fixes bug 22720; bugfix on versions
+ 0.2.1.6-alpha, 0.2.2.28-beta, and 0.2.7.2-alpha
+ respectively. Reported by "f55jwk4f"; patch from "huyvq".
+
diff --git a/changes/bug22751 b/changes/bug22751
new file mode 100644
index 0000000000..714525c8af
--- /dev/null
+++ b/changes/bug22751
@@ -0,0 +1,5 @@
+ o Major bugfixes (compression):
+ - Fix crash in LZMA module, when the Sandbox is enabled, where
+ liblzma would allocate more than 16 MB of memory. We solve this
+ by bumping the mprotect() limit in the Sandbox module from 16 MB
+ to 20 MB. Fixes bug 22751; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug22752_simple b/changes/bug22752_simple
new file mode 100644
index 0000000000..7e60357052
--- /dev/null
+++ b/changes/bug22752_simple
@@ -0,0 +1,6 @@
+ o Major bugfixes (windows, directory cache):
+ - On windows, do not try to delete cached consensus documents and
+ diffs, until they unmapped from memory. Allow the diff storage
+ directory to grow larger in order to handle files that might
+ need to stay around longer. Fixes bug 22752; bugfix on
+ 0.3.1.1-alpha.
diff --git a/changes/bug22830 b/changes/bug22830
new file mode 100644
index 0000000000..123b725aff
--- /dev/null
+++ b/changes/bug22830
@@ -0,0 +1,5 @@
+ o Minor bugfixes:
+ - Fix a problem with Rust toolchains not being found when building
+ without --enable-cargo-online-mode, due to setting the $HOME
+ environment variable instead of $CARGO_HOME. Fixes bug 22830;
+ fix by Chelsea Komlo. Bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug22838_028 b/changes/bug22838_028
deleted file mode 100644
index 1d0a4fbfd1..0000000000
--- a/changes/bug22838_028
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
-
diff --git a/changes/bug22883-config b/changes/bug22883-config
new file mode 100644
index 0000000000..d60594d9ae
--- /dev/null
+++ b/changes/bug22883-config
@@ -0,0 +1,7 @@
+ o Minor features (directory cache, consensus diff):
+ - Add a new MaxConsensusAgeForDiffs option to allow directory cache
+ operators with low-resource environments to adjust the number of
+ consensuses they'll store and generate diffs from. Most cache operators
+ should leave it unchanged. Helps to work around bug 22883.
+
+
diff --git a/changes/bug22883-priority b/changes/bug22883-priority
new file mode 100644
index 0000000000..4b3531c30b
--- /dev/null
+++ b/changes/bug22883-priority
@@ -0,0 +1,8 @@
+ o Major bugfixes (relay, performance):
+
+ - Perform circuit handshake operations at a higher priority than we use
+ for consensus diff creation and compression. This should prevent
+ circuits from starving when a relay or bridge receive a new consensus,
+ especially on lower-powered machines. Fixes bug 22883; bugfix on
+ 0.3.1.1-alpha.
+
diff --git a/changes/bug22892 b/changes/bug22892
new file mode 100644
index 0000000000..9a70cb0576
--- /dev/null
+++ b/changes/bug22892
@@ -0,0 +1,4 @@
+ o Minor bugfixes (compilation):
+ - Compile correctly when both openssl 1.1.0 and libscrypt are detected.
+ Previously this would cause an error. Fixes bug 22892; bugfix on
+ 0.3.1.1-alpha.
diff --git a/changes/bug22927 b/changes/bug22927
new file mode 100644
index 0000000000..6e68e6ff08
--- /dev/null
+++ b/changes/bug22927
@@ -0,0 +1,6 @@
+ o Minor bugfixes (compatibility, zstd):
+ - Write zstd epilogues correctly when the epilogue requires reallocation
+ of the output buffer, even with zstd 1.3.0. (Previously,
+ we worked on 1.2.0 and failed with 1.3.0). Fixes bug 22927; bugfix on
+ 0.3.1.1-alpha.
+
diff --git a/changes/bug23053 b/changes/bug23053
new file mode 100644
index 0000000000..082e239409
--- /dev/null
+++ b/changes/bug23053
@@ -0,0 +1,5 @@
+ o Minor bugfixes (memory leak):
+ - Fix a small memory leak when validating a configuration that
+ uses two or more AF_UNIX sockets for the same port type.
+ Fixes bug 23053; bugfix on 0.2.6.3-alpha. This is CID
+ 1415725.
diff --git a/changes/bug23071 b/changes/bug23071
new file mode 100644
index 0000000000..4756dd6252
--- /dev/null
+++ b/changes/bug23071
@@ -0,0 +1,5 @@
+ o Minor bugfixes (tests):
+ - Port the hs_ntor handshake test to work correctly with recent
+ versions of the pysha3 module. Fixes bug 23071; bugfix on
+ 0.3.1.1-alpha.
+
diff --git a/changes/bug23077 b/changes/bug23077
new file mode 100644
index 0000000000..5ed1c56742
--- /dev/null
+++ b/changes/bug23077
@@ -0,0 +1,4 @@
+ o Minor bugfixes (unit tests):
+ - Fix a channelpadding unit test failure on extremely slow systems
+ by using mocked time instead of actual time. Fixes bug 23077; bugfix on
+ 0.3.1.1-alpha.
diff --git a/changes/bug23105-diagnostic b/changes/bug23105-diagnostic
new file mode 100644
index 0000000000..8ba4931e36
--- /dev/null
+++ b/changes/bug23105-diagnostic
@@ -0,0 +1,4 @@
+ o Minor features (diagnostic):
+ - Add a stack trace to the bug warnings that can be logged when
+ trying to send an outgoing relay cell with n_chan == 0.
+ Diagnostic attempt for bug 23105.
diff --git a/changes/bug23139 b/changes/bug23139
new file mode 100644
index 0000000000..ed63ce85e2
--- /dev/null
+++ b/changes/bug23139
@@ -0,0 +1,3 @@
+ o Minor bugfixes (directory cache):
+ - Fix a memory leak in the code that recovers space in the consensus
+ directory cache. Fixes bug 23139; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug23155 b/changes/bug23155
new file mode 100644
index 0000000000..4c24ab136c
--- /dev/null
+++ b/changes/bug23155
@@ -0,0 +1,4 @@
+ o Minor bugfixes (stability):
+ - Avoid crashing on double-free when unable to load or process
+ an included file. Fixes bug 23155; bugfix on 0.3.1.1-alpha.
+ Found with the clang static analyzer.
diff --git a/changes/bug23233 b/changes/bug23233
new file mode 100644
index 0000000000..689a99a2a8
--- /dev/null
+++ b/changes/bug23233
@@ -0,0 +1,4 @@
+ o Minor bugfixes (hidden service):
+ - Fix a BUG alert during HSv3 descriptor decoding that could trigger with a
+ specially crafted descriptor. Fixes bug #23233; bugfix on 0.3.0.1-alpha.
+ Bug found by "haxxpop".
diff --git a/changes/bug23275 b/changes/bug23275
new file mode 100644
index 0000000000..d6c3c47743
--- /dev/null
+++ b/changes/bug23275
@@ -0,0 +1,5 @@
+ o Minor bugfixes (relay):
+ - When a relay is not running as a directory cache, it will no longer
+ generate compressed consensuses and consensus diff information.
+ Previously, this was a waste of disk and CPU. Fixes bug 23275;
+ bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug23318 b/changes/bug23318
new file mode 100644
index 0000000000..7fcb8d4487
--- /dev/null
+++ b/changes/bug23318
@@ -0,0 +1,11 @@
+ o Minor bugfixes (path selection):
+ - When selecting relays by bandwidth, avoid a rounding error that
+ could sometimes cause load to be imbalanced incorrectly. Previously,
+ we would always round upwards; now, we round towards the nearest
+ integer. This had the biggest effect when a relay's weight adjustments
+ should have given it weight 0, but it got weight 1 instead.
+ Fixes bug 23318; bugfix on 0.2.4.3-alpha.
+ - When calculating the fraction of nodes that have descriptors, and all
+ all nodes in the network have zero bandwidths, count the number of nodes
+ instead.
+ Fixes bug 23318; bugfix on 0.2.4.10-alpha.
diff --git a/changes/bug23533 b/changes/bug23533
new file mode 100644
index 0000000000..b5bfdc0ce2
--- /dev/null
+++ b/changes/bug23533
@@ -0,0 +1,4 @@
+ o Minor bugfixes (relay):
+ - Inform the geoip and rephist modules about all requests, even
+ on relays that are only fetching microdescriptors. Fixes a bug related
+ to 21585; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug23551 b/changes/bug23551
new file mode 100644
index 0000000000..2f918bfa3a
--- /dev/null
+++ b/changes/bug23551
@@ -0,0 +1,3 @@
+ o Minor bugfixes (compression):
+ - Handle a pathological case when decompressing Zstandard data when the
+ output buffer size is zero. Fixes bug 23551; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug23568 b/changes/bug23568
new file mode 100644
index 0000000000..cac4655687
--- /dev/null
+++ b/changes/bug23568
@@ -0,0 +1,4 @@
+ o Minor bugfixes (compilation):
+ - Fix a compilation warning when building with zstd support
+ on 32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha.
+ Found and fixed by Andreas Stieger.
diff --git a/changes/bug23608 b/changes/bug23608
new file mode 100644
index 0000000000..16cf88aa3d
--- /dev/null
+++ b/changes/bug23608
@@ -0,0 +1,4 @@
+ o Minor bugfixes (unit tests):
+ - Fix additional channelpadding unit test failures by using mocked time
+ instead of actual time for all tests. Fixes bug 23608;
+ bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug23693.1 b/changes/bug23693.1
new file mode 100644
index 0000000000..4b16788814
--- /dev/null
+++ b/changes/bug23693.1
@@ -0,0 +1,4 @@
+ o Minor bugfixes (relay, crash):
+ - Avoid a crash when running with DirPort set but ORPort tuned off.
+ Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
+
diff --git a/changes/bug23817 b/changes/bug23817
new file mode 100644
index 0000000000..4740942799
--- /dev/null
+++ b/changes/bug23817
@@ -0,0 +1,3 @@
+ o Minor bugfixes (descriptors):
+ - Don't try fetching microdescriptors from relays that have failed to
+ deliver them in the past. Fixes bug 23817; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug23908 b/changes/bug23908
new file mode 100644
index 0000000000..f641b66bb9
--- /dev/null
+++ b/changes/bug23908
@@ -0,0 +1,3 @@
+ o Minor bugfixes (directory authority, backport from 0.3.2.1-alpha):
+ - Remove the length limit on HTTP status lines that authorities can send
+ in their replies. Fixes bug 23499; bugfix on 0.3.1.6-rc.
diff --git a/changes/bug24086 b/changes/bug24086
new file mode 100644
index 0000000000..2ae0b37e65
--- /dev/null
+++ b/changes/bug24086
@@ -0,0 +1,7 @@
+ o Minor bugfixes (directory cache):
+ - When a consensus diff calculation is only partially successful, only
+ record the successful parts as having succeeded. Partial success
+ can happen if (for example) one compression method fails but
+ the others succeed. Previously we misrecorded all the calculations as
+ having succeeded, which would later cause a nonfatal assertion failure.
+ Fixes bug 24086; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug24099 b/changes/bug24099
new file mode 100644
index 0000000000..dca3992664
--- /dev/null
+++ b/changes/bug24099
@@ -0,0 +1,4 @@
+ o Minor bugfixes (directory cache):
+ - Recover better from empty or corrupt files in the consensus cache
+ directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
+
diff --git a/changes/bug24170 b/changes/bug24170
new file mode 100644
index 0000000000..d3d7347693
--- /dev/null
+++ b/changes/bug24170
@@ -0,0 +1,3 @@
+ o Minor bugfixes (path selection):
+ - Actually log the total bandwidth in compute_weighted_bandwidths().
+ Fixes bug 24170; bugfix on 0.2.4.3-alpha.
diff --git a/changes/bug24198 b/changes/bug24198
new file mode 100644
index 0000000000..6790706872
--- /dev/null
+++ b/changes/bug24198
@@ -0,0 +1,4 @@
+ o Minor bugfixes (controller, linux seccomp2 sandbox):
+ - Avoid a crash when attempting to use the seccomp2 sandbox
+ together with the OwningControllerProcess feature.
+ Fixes bug 24198; bugfix on 0.2.5.1-alpha.
diff --git a/changes/bug24262 b/changes/bug24262
new file mode 100644
index 0000000000..eee69512e4
--- /dev/null
+++ b/changes/bug24262
@@ -0,0 +1,3 @@
+ o Minor bugfixes (hidden service):
+ - Fix the consensus parameter "hsdir-interval" to "hsdir_interval" so it
+ matches the dir-spec.txt. Fixes bug 24262; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug24826_031 b/changes/bug24826_031
new file mode 100644
index 0000000000..3d4a66184a
--- /dev/null
+++ b/changes/bug24826_031
@@ -0,0 +1,4 @@
+ o Minor bugfixes (performance, fragile-hardening):
+ - Improve the performance of our consensus-diff application code when Tor
+ is built with the --enable-fragile-hardening option set. Fixes bug
+ 24826; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug24854 b/changes/bug24854
new file mode 100644
index 0000000000..64e10772e0
--- /dev/null
+++ b/changes/bug24854
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring:
+ - Move the list of default directory authorities to their own file for
+ inclusion using the C preprocessor. Closes ticket 24854. Patch by "beastr0".
diff --git a/changes/bug24859 b/changes/bug24859
new file mode 100644
index 0000000000..122109d650
--- /dev/null
+++ b/changes/bug24859
@@ -0,0 +1,4 @@
+ o Minor bugfixes (logging):
+ - Don't treat inability to store a cached consensus object as a
+ bug: it can happen normally when we are out of disk space.
+ Fixes bug 24859; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug24898 b/changes/bug24898
new file mode 100644
index 0000000000..f64340d71b
--- /dev/null
+++ b/changes/bug24898
@@ -0,0 +1,8 @@
+ o Major bugfixes (relays):
+ - Fix a set of false positives where relays would consider connections
+ to other relays as being client-only connections (and thus e.g.
+ deserving different link padding schemes) if those relays fell out
+ of the consensus briefly. Now we look only at the initial handshake
+ and whether the connection authenticated as a relay. Fixes bug
+ 24898; bugfix on 0.3.1.1-alpha.
+
diff --git a/changes/bug24898-029 b/changes/bug24898-029
new file mode 100644
index 0000000000..b33f093841
--- /dev/null
+++ b/changes/bug24898-029
@@ -0,0 +1,6 @@
+ o Minor bugfixes (relay):
+ - Make the internal channel_is_client() function look at what sort
+ of connection handshake the other side used, rather than whether
+ the other side ever sent a create_fast cell to us. Backports part
+ of the fixes from bugs 22805 and 24898.
+
diff --git a/changes/bug24952 b/changes/bug24952
new file mode 100644
index 0000000000..93174c04f5
--- /dev/null
+++ b/changes/bug24952
@@ -0,0 +1,5 @@
+ o Minor bugfix (channel connection):
+ - The accurate address of a connection is real_addr, not the addr member.
+ TLS Channel remote address is now real_addr content instead of addr
+ member. Fixes bug 24952; bugfix on 707c1e2e26 in 0.2.4.11-alpha.
+ Patch by "ffmancera".
diff --git a/changes/bug24969 b/changes/bug24969
new file mode 100644
index 0000000000..46b2bae6f4
--- /dev/null
+++ b/changes/bug24969
@@ -0,0 +1,3 @@
+ o Minor bugfixes (Linux seccomp2 sandbox):
+ - Allow the nanosleep() system call, which glibc uses to implement
+ sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
diff --git a/changes/bug24978 b/changes/bug24978
new file mode 100644
index 0000000000..5dc45c7442
--- /dev/null
+++ b/changes/bug24978
@@ -0,0 +1,7 @@
+ o Minor features (compatibility, OpenSSL):
+ - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
+ Previous versions of Tor would not have worked with OpenSSL
+ 1.1.1, since they neither disabled TLS 1.3 nor enabled any of the
+ ciphersuites it requires. Here we enable the TLS 1.3 ciphersuites.
+ Closes ticket 24978.
+
diff --git a/changes/bug25070 b/changes/bug25070
new file mode 100644
index 0000000000..c2f4e58c45
--- /dev/null
+++ b/changes/bug25070
@@ -0,0 +1,3 @@
+ o Major bugfixes (protocol versions):
+ - Add Link protocol version 5 to the supported protocols list.
+ Fixes bug 25070; bugfix on 0.3.1.1-alpha.
diff --git a/changes/bug25223 b/changes/bug25223
new file mode 100644
index 0000000000..fdd5563500
--- /dev/null
+++ b/changes/bug25223
@@ -0,0 +1,4 @@
+ o Minor bugfixes (DoS mitigation):
+ - Make sure we don't modify consensus parameters if we aren't a public
+ relay when a new consensus arrives. Fixes bug 25223; bugfix on
+ 0.3.3.2-alpha.
diff --git a/changes/bug25249 b/changes/bug25249
new file mode 100644
index 0000000000..b4153eeaef
--- /dev/null
+++ b/changes/bug25249
@@ -0,0 +1,3 @@
+ o Minor bugfixes (spec conformance):
+ - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
+ 0.2.9.4-alpha.
diff --git a/changes/bug25249.2 b/changes/bug25249.2
new file mode 100644
index 0000000000..9058c11071
--- /dev/null
+++ b/changes/bug25249.2
@@ -0,0 +1,3 @@
+ o Minor bugfixes (spec conformance):
+ - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
+ bugfix on 0.2.9.4-alpha.
diff --git a/changes/bug25629 b/changes/bug25629
new file mode 100644
index 0000000000..190928a941
--- /dev/null
+++ b/changes/bug25629
@@ -0,0 +1,3 @@
+ o Minor bugfixes (C correctness):
+ - Fix a very unlikely null pointer dereference. Fixes bug 25629;
+ bugfix on 0.2.9.15. Found by Coverity; this is CID 1430932.
diff --git a/changes/bug26007 b/changes/bug26007
new file mode 100644
index 0000000000..efcd15084d
--- /dev/null
+++ b/changes/bug26007
@@ -0,0 +1,5 @@
+ o Major bugfixes (directory authorities, security):
+ - When directory authorities read a zero-byte bandwidth file, they log
+ a warning with the contents of an uninitialised buffer. Log a warning
+ about the empty file instead.
+ Fixes bug 26007; bugfix on 0.2.2.1-alpha.
diff --git a/changes/bug26069 b/changes/bug26069
new file mode 100644
index 0000000000..192e97d782
--- /dev/null
+++ b/changes/bug26069
@@ -0,0 +1,5 @@
+ o Minor bugfixes (hidden service v3):
+ - 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.
diff --git a/changes/bug26072 b/changes/bug26072
new file mode 100644
index 0000000000..2489e4fbb5
--- /dev/null
+++ b/changes/bug26072
@@ -0,0 +1,5 @@
+ o Minor bugfixes (correctness, client):
+ - 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.
diff --git a/changes/bug26116 b/changes/bug26116
new file mode 100644
index 0000000000..3bfde74f77
--- /dev/null
+++ b/changes/bug26116
@@ -0,0 +1,7 @@
+ o Minor bugfixes (compatibility, openssl):
+ - 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.
+
diff --git a/changes/bug26158 b/changes/bug26158
new file mode 100644
index 0000000000..0d74cf1167
--- /dev/null
+++ b/changes/bug26158
@@ -0,0 +1,5 @@
+ o Minor bugfixes (relay):
+ - 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.
diff --git a/changes/bug26196 b/changes/bug26196
new file mode 100644
index 0000000000..47fcffa0f8
--- /dev/null
+++ b/changes/bug26196
@@ -0,0 +1,4 @@
+ o Minor bugfixes (hardening):
+ - Prevent a possible out-of-bounds smartlist read in
+ protover_compute_vote(). Fixes bug 26196; bugfix on
+ 0.2.9.4-alpha.
diff --git a/changes/bug26272 b/changes/bug26272
new file mode 100644
index 0000000000..9dcf42f0e1
--- /dev/null
+++ b/changes/bug26272
@@ -0,0 +1,3 @@
+ o Minor bugfixes (compilation):
+ - Silence unused-const-variable warnings in zstd.h on some gcc versions.
+ Fixes bug 26272; bugfix on 0.3.1.1-alpha.
diff --git a/changes/coveralls b/changes/coveralls
new file mode 100644
index 0000000000..7fa69bb2b4
--- /dev/null
+++ b/changes/coveralls
@@ -0,0 +1,3 @@
+ o Minor features (continuous integration):
+ - Our Travis CI configuration now integrates with the Coveralls coverage
+ analysis tool. Closes ticket 25818.
diff --git a/changes/diagnose_22752 b/changes/diagnose_22752
new file mode 100644
index 0000000000..b5bda05ec0
--- /dev/null
+++ b/changes/diagnose_22752
@@ -0,0 +1,4 @@
+ o Minor features (bug mitigation, diagnostics, logging):
+ - Avoid an assertion failure, and log a better error message,
+ when unable to remove a file from the consensus cache on
+ Windows. Attempts to mitigate and diagnose bug 22752.
diff --git a/changes/feature21570 b/changes/feature21570
deleted file mode 100644
index 40555eefa9..0000000000
--- a/changes/feature21570
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features (testing):
- - During 'make test-network-all', if tor logs any warnings, ask chutney
- to output them. Requires a recent version of chutney with the 21572
- patch.
- Implements 21570.
diff --git a/changes/feature25313 b/changes/feature25313
new file mode 100644
index 0000000000..90f421169f
--- /dev/null
+++ b/changes/feature25313
@@ -0,0 +1,4 @@
+ o Minor features (sandbox):
+ - 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.
diff --git a/changes/feature26372_029 b/changes/feature26372_029
new file mode 100644
index 0000000000..150ac30555
--- /dev/null
+++ b/changes/feature26372_029
@@ -0,0 +1,4 @@
+ 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.
diff --git a/changes/geoip-2018-02-07 b/changes/geoip-2018-02-07
new file mode 100644
index 0000000000..f45228fd76
--- /dev/null
+++ b/changes/geoip-2018-02-07
@@ -0,0 +1,4 @@
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
+ Country database.
+
diff --git a/changes/geoip-2018-03-08 b/changes/geoip-2018-03-08
new file mode 100644
index 0000000000..d9696aab53
--- /dev/null
+++ b/changes/geoip-2018-03-08
@@ -0,0 +1,4 @@
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the March 8 2018 Maxmind GeoLite2
+ Country database. Closes ticket 25469.
+
diff --git a/changes/geoip-2018-04-03 b/changes/geoip-2018-04-03
new file mode 100644
index 0000000000..987cc450bf
--- /dev/null
+++ b/changes/geoip-2018-04-03
@@ -0,0 +1,4 @@
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the April 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 25718.
+
diff --git a/changes/geoip-2018-05-01 b/changes/geoip-2018-05-01
new file mode 100644
index 0000000000..1528bb0c31
--- /dev/null
+++ b/changes/geoip-2018-05-01
@@ -0,0 +1,4 @@
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26104.
+
diff --git a/changes/geoip-2018-06-07 b/changes/geoip-2018-06-07
new file mode 100644
index 0000000000..0f8cff97af
--- /dev/null
+++ b/changes/geoip-2018-06-07
@@ -0,0 +1,4 @@
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26351.
+
diff --git a/changes/geoip-april2017 b/changes/geoip-april2017
deleted file mode 100644
index b489eaf016..0000000000
--- a/changes/geoip-april2017
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features:
- - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
- Country database.
-
diff --git a/changes/geoip-february2017 b/changes/geoip-february2017
deleted file mode 100644
index ec54b6122a..0000000000
--- a/changes/geoip-february2017
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features:
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
-
diff --git a/changes/geoip-march2017 b/changes/geoip-march2017
deleted file mode 100644
index 6dc92baa2f..0000000000
--- a/changes/geoip-march2017
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features:
- - Update geoip and geoip6 to the March 7 2017 Maxmind GeoLite2
- Country database.
-
diff --git a/changes/geoip-may2017 b/changes/geoip-may2017
deleted file mode 100644
index 4e504d7a0a..0000000000
--- a/changes/geoip-may2017
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features:
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
-
diff --git a/changes/more-files b/changes/more-files
new file mode 100644
index 0000000000..861d6a3143
--- /dev/null
+++ b/changes/more-files
@@ -0,0 +1,4 @@
+ o Documentation:
+ - Document more of the files in the Tor data directory, including
+ cached-extrainfo, secret_onion_key{,_ntor}.old, hidserv-stats,
+ approved-routers, sr-random, and diff-cache.
diff --git a/changes/more-threads b/changes/more-threads
new file mode 100644
index 0000000000..eae88b70fd
--- /dev/null
+++ b/changes/more-threads
@@ -0,0 +1,3 @@
+ o Minor features (relay, performance):
+ - Always start relays with at least two worker threads, to prevent
+ priority inversion on slow tasks. Part of the fix for bug 22883.
diff --git a/changes/multi-priority b/changes/multi-priority
new file mode 100644
index 0000000000..6f19314b53
--- /dev/null
+++ b/changes/multi-priority
@@ -0,0 +1,5 @@
+ o Minor features (relay, thread pool):
+ - Allow background work to be queued with different priorities, so
+ that a big pile of slow low-priority jobs will not starve out
+ higher priority jobs. This lays the groundwork for a fix for bug
+ 22883.
diff --git a/changes/new_requirement_pkgconfig b/changes/new_requirement_pkgconfig
new file mode 100644
index 0000000000..503ff58c9e
--- /dev/null
+++ b/changes/new_requirement_pkgconfig
@@ -0,0 +1,5 @@
+ o New dependencies:
+ - To build with zstd and lzma support, Tor now requires the
+ pkg-config tool at build time. (This requirement was new in
+ 0.3.1.1-alpha, but was not noted at the time. Noting it here to
+ close ticket 22623.)
diff --git a/changes/prop275-minimal b/changes/prop275-minimal
deleted file mode 100644
index 83d42f850b..0000000000
--- a/changes/prop275-minimal
+++ /dev/null
@@ -1,9 +0,0 @@
- o Minor features (future-proofing):
-
- - Tor no longer refuses to download microdescriptors or descriptors if
- they are listed as "published in the future". This change will
- eventually allow us to stop listing meaningful "published" dates
- in microdescriptor consensuses, and thereby allow us to reduce the
- resources required to download consensus diffs by over 50%.
- Implements part of ticket 21642; implements part of proposal 275.
-
diff --git a/changes/task-22207 b/changes/task-22207
new file mode 100644
index 0000000000..63544834bf
--- /dev/null
+++ b/changes/task-22207
@@ -0,0 +1,4 @@
+ o Minor features:
+ - Add "fingerprint" line to networkstatus-bridges produced by
+ bridge authorities. Implements #22207.
+
diff --git a/changes/ticket20656 b/changes/ticket20656
deleted file mode 100644
index 28192e8978..0000000000
--- a/changes/ticket20656
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor feature (protover):
- - Add new protocol version for proposal 224. HSIntro now advertises
- version "3-4" and HSDir version "1-2". Fixes ticket 20656.
diff --git a/changes/ticket21564 b/changes/ticket21564
deleted file mode 100644
index 7e01f41f8f..0000000000
--- a/changes/ticket21564
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor features (fallback directory list):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional), with a list of
- 151 fallbacks (32 new, 119 existing, 58 removed) generated in
- May 2017.
- Resolves ticket 21564.
diff --git a/changes/ticket21953 b/changes/ticket21953
deleted file mode 100644
index 7cc84f506d..0000000000
--- a/changes/ticket21953
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor features:
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default since
- Windows 8, and unavailable before Windows 7, and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
diff --git a/changes/ticket22348 b/changes/ticket22348
new file mode 100644
index 0000000000..49ae94cdf3
--- /dev/null
+++ b/changes/ticket22348
@@ -0,0 +1,5 @@
+ o Minor features (directory authority):
+ - Improve the message that authorities report to relays when
+ the RSA/Ed25519 key pair they present conflicts with a previously
+ pinned key. Closes ticket 22348.
+
diff --git a/changes/ticket22870 b/changes/ticket22870
new file mode 100644
index 0000000000..07cc8a1d04
--- /dev/null
+++ b/changes/ticket22870
@@ -0,0 +1,5 @@
+ o Minor bugfixes (consensus diff):
+ - test_consdiff_base64cmp would fail on OS X because while OS X
+ follows the standard of (less than zero/zero/greater than zero),
+ it doesn't follow the convention of (-1/0/+1). Make the test
+ comply with the standard. Fixes bug 22870; bugfix on 0.3.1.1-alpha.
diff --git a/changes/ticket24315 b/changes/ticket24315
new file mode 100644
index 0000000000..df34dbf412
--- /dev/null
+++ b/changes/ticket24315
@@ -0,0 +1,3 @@
+ o Major features (linux seccomp2 sandbox):
+ - Update the sandbox rules so that they should now work correctly with
+ Glibc 2.26. Closes ticket 24315.
diff --git a/changes/ticket24902 b/changes/ticket24902
new file mode 100644
index 0000000000..1a2ef95cc9
--- /dev/null
+++ b/changes/ticket24902
@@ -0,0 +1,13 @@
+ o Major features (denial of service mitigation):
+ - Give relays some defenses against the recent network overload. We start
+ with three defenses (default parameters in parentheses). First: if a
+ single client address makes too many concurrent connections (>100), hang
+ up on further connections. Second: if a single client address makes
+ circuits too quickly (more than 3 per second, with an allowed burst of
+ 90) while also having too many connections open (3), refuse new create
+ cells for the next while (1-2 hours). Third: if a client asks to
+ establish a rendezvous point to you directly, ignore the request. These
+ defenses can be manually controlled by new torrc options, but relays
+ will also take guidance from consensus parameters, so there's no need to
+ configure anything manually. Implements ticket 24902.
+
diff --git a/changes/ticket25122 b/changes/ticket25122
new file mode 100644
index 0000000000..2921811b22
--- /dev/null
+++ b/changes/ticket25122
@@ -0,0 +1,4 @@
+ o Minor feature (geoip cache):
+ - Make our OOM handler aware of the geoip client history cache so it
+ doesn't fill up the memory which is especially important for IPv6 and
+ our DoS mitigation subsystem. Closes ticket 25122.
diff --git a/changes/ticket25170 b/changes/ticket25170
new file mode 100644
index 0000000000..0652139400
--- /dev/null
+++ b/changes/ticket25170
@@ -0,0 +1,5 @@
+ o Minor bugfix (directory authority, documentation):
+ - When a fingerprint or network address is marked as rejected, the
+ returned message by the authority now explicitly mention to set a valid
+ ContactInfo address and contact the bad-relays@ mailing list. Fixes bug
+ 25170; bugfix on 0.2.9.1.
diff --git a/changes/ticket25202 b/changes/ticket25202
new file mode 100644
index 0000000000..ba64abad7b
--- /dev/null
+++ b/changes/ticket25202
@@ -0,0 +1,4 @@
+ o Minor bugfixes (DoS mitigation):
+ - Add extra safety checks when refilling the circuit creation bucket to
+ ensure we never set a value that is above the allowed burst. Fixes
+ bug 25202; bugfix on 0.3.3.2-alpha.
diff --git a/changes/ticket25323 b/changes/ticket25323
new file mode 100644
index 0000000000..836825de5d
--- /dev/null
+++ b/changes/ticket25323
@@ -0,0 +1,4 @@
+ o Code simplification and refactoring:
+ - Update the "rust dependencies" submodule to be an project-level
+ repository, rather than a user repository. Closes ticket 25323.
+
diff --git a/changes/ticket25714 b/changes/ticket25714
new file mode 100644
index 0000000000..63823fc6ca
--- /dev/null
+++ b/changes/ticket25714
@@ -0,0 +1,4 @@
+ o Minor feature (continuous integration):
+ - Update the Travis CI configuration to use the stable Rust
+ channel, now that we have decided to require that. Closes
+ ticket 25714.
diff --git a/changes/ticket26062 b/changes/ticket26062
new file mode 100644
index 0000000000..1ee49d8608
--- /dev/null
+++ b/changes/ticket26062
@@ -0,0 +1,3 @@
+ o Minor bugfixes (client):
+ - Don't consider Tor running as a client if the ControlPort is open. Fixes
+ bug 26062; bugfix on 0.2.9.4-alpha.
diff --git a/changes/ticket26343 b/changes/ticket26343
new file mode 100644
index 0000000000..ab5f332ee6
--- /dev/null
+++ b/changes/ticket26343
@@ -0,0 +1,3 @@
+ o Minor features (directory authority):
+ - Add an IPv6 address for the "dannenberg" directory
+ authority. Closes ticket 26343.
diff --git a/changes/travis_distcheck b/changes/travis_distcheck
new file mode 100644
index 0000000000..0f278fe7ee
--- /dev/null
+++ b/changes/travis_distcheck
@@ -0,0 +1,4 @@
+ o Minor features (continuous integration):
+ - 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.
diff --git a/changes/trove-2017-001.2 b/changes/trove-2017-001.2
deleted file mode 100644
index 3ef073cf9f..0000000000
--- a/changes/trove-2017-001.2
+++ /dev/null
@@ -1,8 +0,0 @@
- o Major bugfixes (parsing):
- - Fix an integer underflow bug when comparing malformed Tor versions.
- This bug is harmless, except when Tor has been built with
- --enable-expensive-hardening, which would turn it into a crash;
- or on Tor 0.2.9.1-alpha through Tor 0.2.9.8, which were built with
- -ftrapv by default.
- Part of TROVE-2017-001. Fixes bug 21278; bugfix on
- 0.0.8pre1. Found by OSS-Fuzz.
diff --git a/changes/trove-2017-004 b/changes/trove-2017-004
deleted file mode 100644
index af1567f220..0000000000
--- a/changes/trove-2017-004
+++ /dev/null
@@ -1,6 +0,0 @@
- o Major bugfixes (hidden service, relay, security):
- - Fix an assertion failure when a hidden service handles a
- malformed BEGIN cell. This bug resulted in the service crashing
- triggered by a tor_assert(). Fixes bug 22493, tracked as
- TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
- Found by armadev.
diff --git a/changes/trove-2017-005 b/changes/trove-2017-005
deleted file mode 100644
index cebb013f86..0000000000
--- a/changes/trove-2017-005
+++ /dev/null
@@ -1,7 +0,0 @@
- o Major bugfixes (hidden service, relay, security):
- - Fix an assertion failure caused by receiving a BEGIN_DIR cell on
- a hidden service rendezvous circuit. Fixes bug 22494, tracked as
- TROVE-2017-005 and CVE-2017-0376; bugfix on 0.2.2.1-alpha. Found
- by armadev.
-
-
diff --git a/changes/trove-2018-001.1 b/changes/trove-2018-001.1
new file mode 100644
index 0000000000..f0ee92f409
--- /dev/null
+++ b/changes/trove-2018-001.1
@@ -0,0 +1,6 @@
+ o Major bugfixes (denial-of-service, directory authority):
+ - Fix a protocol-list handling bug that could be used to remotely crash
+ directory authorities with a null-pointer exception. Fixes bug 25074;
+ bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001.
+
+
diff --git a/changes/trove-2018-004 b/changes/trove-2018-004
new file mode 100644
index 0000000000..37e0a89b0d
--- /dev/null
+++ b/changes/trove-2018-004
@@ -0,0 +1,8 @@
+ o Minor bugfixes (denial-of-service):
+ - Fix a possible crash on malformed consensus. If a consensus had
+ contained an unparseable protocol line, it could have made clients
+ and relays crash with a null-pointer exception. To exploit this
+ issue, however, an attacker would need to be able to subvert the
+ directory-authority system. Fixes bug 25251; bugfix on
+ 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
+
diff --git a/configure.ac b/configure.ac
index 88bc968848..7bfbcfccfc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2015, The Tor Project, Inc.
+dnl Copyright (c) 2007-2017, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_PREREQ([2.63])
-AC_INIT([tor],[0.3.0.13-dev])
+AC_INIT([tor],[0.3.1.10-dev])
AC_CONFIG_SRCDIR([src/or/main.c])
AC_CONFIG_MACRO_DIR([m4])
@@ -53,6 +53,12 @@ AC_ARG_ENABLE(libfuzzer,
AS_HELP_STRING(--enable-libfuzzer, [build extra fuzzers based on 'libfuzzer']))
AC_ARG_ENABLE(oss-fuzz,
AS_HELP_STRING(--enable-oss-fuzz, [build extra fuzzers based on 'oss-fuzz' environment]))
+AC_ARG_ENABLE(memory-sentinels,
+ AS_HELP_STRING(--disable-memory-sentinels, [disable code that tries to prevent some kinds of memory access bugs. For fuzzing only.]))
+AC_ARG_ENABLE(rust,
+ AS_HELP_STRING(--enable-rust, [enable rust integration]))
+AC_ARG_ENABLE(cargo-online-mode,
+ AS_HELP_STRING(--enable-cargo-online-mode, [Allow cargo to make network requests to fetch crates. For builds with rust only.]))
if test "x$enable_coverage" != "xyes" -a "x$enable_asserts_in_tests" = "xno" ; then
AC_MSG_ERROR([Can't disable assertions outside of coverage build])
@@ -63,6 +69,7 @@ AM_CONDITIONAL(COVERAGE_ENABLED, test "x$enable_coverage" = "xyes")
AM_CONDITIONAL(DISABLE_ASSERTS_IN_UNIT_TESTS, test "x$enable_asserts_in_tests" = "xno")
AM_CONDITIONAL(LIBFUZZER_ENABLED, test "x$enable_libfuzzer" = "xyes")
AM_CONDITIONAL(OSS_FUZZ_ENABLED, test "x$enable_oss_fuzz" = "xyes")
+AM_CONDITIONAL(USE_RUST, test "x$enable_rust" = "xyes")
if test "$enable_static_tor" = "yes"; then
enable_static_libevent="yes";
@@ -76,6 +83,11 @@ if test "$enable_system_torrc" = "no"; then
[Defined if we're not going to look for a torrc in SYSCONF])
fi
+if test "$enable_memory_sentinels" = "no"; then
+ AC_DEFINE(DISABLE_MEMORY_SENTINELS, 1,
+ [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,
@@ -182,6 +194,16 @@ AC_ARG_ENABLE(seccomp,
AC_ARG_ENABLE(libscrypt,
AS_HELP_STRING(--disable-libscrypt, [do not attempt to use libscrypt]))
+dnl Enable event tracing which are transformed to debug log statement.
+AC_ARG_ENABLE(event-tracing-debug,
+ AS_HELP_STRING(--enable-event-tracing-debug, [build with event tracing to debug log]))
+AM_CONDITIONAL([USE_EVENT_TRACING_DEBUG], [test "x$enable_event_tracing_debug" = "xyes"])
+
+if test x$enable_event_tracing_debug = xyes; then
+ AC_DEFINE([USE_EVENT_TRACING_DEBUG], [1], [Tracing framework to log debug])
+ AC_DEFINE([TOR_EVENT_TRACING_ENABLED], [1], [Compile the event tracing instrumentation])
+fi
+
dnl check for the correct "ar" when cross-compiling.
dnl (AM_PROG_AR was new in automake 1.11.2, which we do not yet require,
dnl so kludge up a replacement for the case where it isn't there yet.)
@@ -226,12 +248,78 @@ AM_PROG_CC_C_O
AC_PROG_CC_C99
AC_ARG_VAR([PYTHON], [path to Python binary])
-AC_CHECK_PROGS(PYTHON, [python python2 python2.7 python3 python3.3])
+AC_CHECK_PROGS(PYTHON, [ \
+ python3 \
+ python3.8 python3.7 python3.6 python3.5 python3.4 \
+ python \
+ python2 python2.7])
if test "x$PYTHON" = "x"; then
AC_MSG_WARN([Python unavailable; some tests will not be run.])
fi
AM_CONDITIONAL(USEPYTHON, [test "x$PYTHON" != "x"])
+dnl List all external rust crates we depend on here. Include the version
+rust_crates="libc-0.2.22"
+AC_SUBST(rust_crates)
+
+if test "x$enable_rust" = "xyes"; then
+ AC_ARG_VAR([RUSTC], [path to the rustc binary])
+ AC_CHECK_PROG([RUSTC], [rustc], [rustc],[no])
+ if test "x$RUSTC" = "xno"; then
+ AC_MSG_ERROR([rustc unavailable but rust integration requested.])
+ fi
+
+ AC_ARG_VAR([CARGO], [path to the cargo binary])
+ AC_CHECK_PROG([CARGO], [cargo], [cargo],[no])
+ if test "x$CARGO" = "xno"; then
+ AC_MSG_ERROR([cargo unavailable but rust integration requested.])
+ fi
+
+ AC_DEFINE([HAVE_RUST], 1, [have Rust])
+ if test "x$enable_cargo_online_mode" = "xyes"; then
+ CARGO_ONLINE=
+ RUST_DL=#
+ else
+ CARGO_ONLINE=--frozen
+ RUST_DL=
+
+ dnl When we're not allowed to touch the network, we need crate dependencies
+ dnl locally available.
+ AC_MSG_CHECKING([rust crate dependencies])
+ AC_ARG_VAR([RUST_DEPENDENCIES], [path to directory with local crate mirror])
+ if test "x$RUST_DEPENDENCIES" = "x"; then
+ RUST_DEPENDENCIES="$srcdir/src/ext/rust/"
+ NEED_MOD=1
+ fi
+ if test ! -d "$RUST_DEPENDENCIES"; then
+ AC_MSG_ERROR([Rust dependency directory $RUST_DEPENDENCIES does not exist. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
+ fi
+ for dep in $rust_crates; do
+ if test ! -d "$RUST_DEPENDENCIES"/"$dep"; then
+ AC_MSG_ERROR([Failure to find rust dependency $RUST_DEPENDENCIES/$dep. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
+ fi
+ done
+ if test "x$NEED_MOD" = "x1"; then
+ dnl When looking for dependencies from cargo, pick right directory
+ RUST_DEPENDENCIES="../../src/ext/rust"
+ fi
+ fi
+
+ AC_SUBST(CARGO_ONLINE)
+ AC_SUBST(RUST_DL)
+
+dnl Let's check the rustc version, too
+ AC_MSG_CHECKING([rust version])
+ RUSTC_VERSION_MAJOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 1`
+ RUSTC_VERSION_MINOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 2`
+ if test "x$RUSTC_VERSION_MAJOR" = "x" -o "x$RUSTC_VERSION_MINOR" = "x"; then
+ AC_MSG_ERROR([rustc version couldn't be identified])
+ fi
+ if test "$RUSTC_VERSION_MAJOR" -lt 2 -a "$RUSTC_VERSION_MINOR" -lt 14; then
+ AC_MSG_ERROR([rustc must be at least version 1.14])
+ fi
+fi
+
ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [
AC_C_FLEXIBLE_ARRAY_MEMBER
], [
@@ -403,6 +491,7 @@ AC_CHECK_FUNCS(
getrlimit \
gettimeofday \
gmtime_r \
+ gnu_get_libc_version \
htonll \
inet_aton \
ioctl \
@@ -725,6 +814,70 @@ else
fi
AC_SUBST(TOR_ZLIB_LIBS)
+dnl ------------------------------------------------------
+dnl Where we do we find lzma?
+
+AC_ARG_ENABLE(lzma,
+ AS_HELP_STRING(--enable-lzma, [enable support for the LZMA compression scheme.]),
+ [case "${enableval}" in
+ "yes") lzma=true ;;
+ "no") lzma=false ;;
+ * ) AC_MSG_ERROR(bad value for --enable-lzma) ;;
+ esac], [lzma=auto])
+
+if test "x$enable_lzma" = "xno"; then
+ have_lzma=no;
+else
+ PKG_CHECK_MODULES([LZMA],
+ [liblzma],
+ have_lzma=yes,
+ have_lzma=no)
+
+ if test "x$have_lzma" = "xno" ; then
+ AC_MSG_WARN([Unable to find liblzma.])
+ fi
+fi
+
+if test "x$have_lzma" = "xyes"; then
+ AC_DEFINE(HAVE_LZMA,1,[Have LZMA])
+ TOR_LZMA_CFLAGS="${LZMA_CFLAGS}"
+ TOR_LZMA_LIBS="${LZMA_LIBS}"
+fi
+AC_SUBST(TOR_LZMA_CFLAGS)
+AC_SUBST(TOR_LZMA_LIBS)
+
+dnl ------------------------------------------------------
+dnl Where we do we find zstd?
+
+AC_ARG_ENABLE(zstd,
+ AS_HELP_STRING(--enable-zstd, [enable support for the Zstandard compression scheme.]),
+ [case "${enableval}" in
+ "yes") zstd=true ;;
+ "no") zstd=false ;;
+ * ) AC_MSG_ERROR(bad value for --enable-zstd) ;;
+ esac], [zstd=auto])
+
+if test "x$enable_zstd" = "xno"; then
+ have_zstd=no;
+else
+ PKG_CHECK_MODULES([ZSTD],
+ [libzstd >= 1.1],
+ have_zstd=yes,
+ have_zstd=no)
+
+ if test "x$have_zstd" = "xno" ; then
+ AC_MSG_WARN([Unable to find libzstd.])
+ fi
+fi
+
+if test "x$have_zstd" = "xyes"; then
+ AC_DEFINE(HAVE_ZSTD,1,[Have Zstd])
+ TOR_ZSTD_CFLAGS="${ZSTD_CFLAGS}"
+ TOR_ZSTD_LIBS="${ZSTD_LIBS}"
+fi
+AC_SUBST(TOR_ZSTD_CFLAGS)
+AC_SUBST(TOR_ZSTD_LIBS)
+
dnl ----------------------------------------------------------------------
dnl Check if libcap is available for capabilities.
@@ -1025,6 +1178,7 @@ AC_CHECK_HEADERS([assert.h \
arpa/inet.h \
crt_externs.h \
execinfo.h \
+ gnu/libc-version.h \
grp.h \
ifaddrs.h \
inttypes.h \
@@ -1945,6 +2099,7 @@ AC_CONFIG_FILES([
contrib/dist/tor.service
src/config/torrc.sample
src/config/torrc.minimal
+ src/rust/.cargo/config
scripts/maint/checkOptionDocs.pl
scripts/maint/updateVersions.pl
])
diff --git a/contrib/win32build/tor-mingw.nsi.in b/contrib/win32build/tor-mingw.nsi.in
index 8cb6fb1d35..7ddb21d8a7 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
!include "LogicLib.nsh"
!include "FileFunc.nsh"
!insertmacro GetParameters
-!define VERSION "0.3.0.13-dev"
+!define VERSION "0.3.1.10-dev"
!define INSTALLER "tor-${VERSION}-win32.exe"
!define WEBSITE "https://www.torproject.org/"
!define LICENSE "LICENSE"
diff --git a/doc/HACKING/CodingStandards.md b/doc/HACKING/CodingStandards.md
index 01212a9919..c7787a72cc 100644
--- a/doc/HACKING/CodingStandards.md
+++ b/doc/HACKING/CodingStandards.md
@@ -4,9 +4,10 @@ Coding conventions for Tor
tl;dr:
- Run configure with `--enable-fatal-warnings`
- - Run `make check-spaces` to catch whitespace errors
- Document your functions
- Write unit tests
+ - Run `make test-full` to test against all unit and integration tests.
+ - Run `make distcheck` to ensure the distribution works
- Add a file in `changes` for your branch.
Patch checklist
@@ -22,10 +23,12 @@ preference)
Did you remember...
- To build your code while configured with `--enable-fatal-warnings`?
- - To run `make check-spaces` on your code?
- To run `make check-docs` to see whether all new options are on
the manpage?
- To write unit tests, as possible?
+ - To run `make test-full` to test against all unit and integration tests (or
+ `make test-full-online` if you have a working connection to the internet)?
+ - To test that the distribution will actually work via `make distcheck`?
- To base your code on the appropriate branch?
- To include a file in the `changes` directory as appropriate?
diff --git a/doc/HACKING/HelpfulTools.md b/doc/HACKING/HelpfulTools.md
index 67481ace43..b8ba2aa408 100644
--- a/doc/HACKING/HelpfulTools.md
+++ b/doc/HACKING/HelpfulTools.md
@@ -226,17 +226,10 @@ performance! See the gperftools manual for more info, but basically:
Generating and analyzing a callgraph
------------------------------------
-1. Run `./scripts/maint/generate_callgraph.sh`. This will generate a
- bunch of files in a new ./callgraph directory.
+0. Build Tor on linux or mac, ideally with -O0 or -fno-inline.
-2. Run `./scripts/maint/analyze_callgraph.py callgraph/src/*/*`. This
- will do a lot of graph operations and then dump out a new
- `callgraph.pkl` file, containing data in Python's 'pickle' format.
-
-3. Run `./scripts/maint/display_callgraph.py`. It will display:
- - the number of functions reachable from each function.
- - all strongly-connnected components in the Tor callgraph
- - the largest bottlenecks in the largest SCC in the Tor callgraph.
+1. Clone 'https://gitweb.torproject.org/user/nickm/calltool.git/' .
+ Follow the README in that repository.
Note that currently the callgraph generator can't detect calls that pass
through function pointers.
diff --git a/doc/HACKING/ReleasingTor.md b/doc/HACKING/ReleasingTor.md
index 4761ca9a37..4ece4d7a1d 100644
--- a/doc/HACKING/ReleasingTor.md
+++ b/doc/HACKING/ReleasingTor.md
@@ -26,8 +26,6 @@ new Tor release:
What about Coverity Scan?
- Is make check-spaces happy?
-
Does 'make distcheck' complain?
How about 'make test-stem' and 'make test-network'?
@@ -44,21 +42,16 @@ new Tor release:
of them and reordering to focus on what users and funders would find
interesting and understandable.
- 1. Make sure that everything that wants a bug number has one.
- Make sure that everything which is a bugfix says what version
- it was a bugfix on.
-
- 2. Concatenate them.
-
- 3. Sort them by section. Within each section, sort by "version it's
- a bugfix on", else by numerical ticket order.
-
- 4. Clean them up:
+ To do this, first run `./scripts/maint/lintChanges.py changes/*` and
+ fix as many warnings as you can. Then run `./scripts/maint/sortChanges.py
+ changes/* > changelog.in` to combine headings and sort the entries.
+ After that, it's time to hand-edit and fix the issues that lintChanges
+ can't find:
- Standard idioms:
- `Fixes bug 9999; bugfix on 0.3.3.3-alpha.`
+ 1. Within each section, sort by "version it's a bugfix on", else by
+ numerical ticket order.
- One space after a period.
+ 2. Clean them up:
Make stuff very terse
@@ -86,19 +79,23 @@ new Tor release:
maint-0.2.1), be sure to make the stanzas identical (so people can
distinguish if these are the same change).
- 5. Merge them in.
+ 3. Clean everything one last time.
- 6. Clean everything one last time.
+ 4. Run `./scripts/maint/format_changelog.py --inplace` to make it prettier
- 7. Run `./scripts/maint/format_changelog.py` to make it prettier.
2. Compose a short release blurb to highlight the user-facing
changes. Insert said release blurb into the ChangeLog stanza. If it's
a stable release, add it to the ReleaseNotes file too. If we're adding
- to a release-0.2.x branch, manually commit the changelogs to the later
+ to a release-* branch, manually commit the changelogs to the later
git branches too.
-3. If you're doing the first stable release in a series, you need to
+3. If there are changes that require or suggest operator intervention
+ before or during the update, mail operators (either dirauth or relays
+ list) with a headline that indicates that an action is required or
+ appreciated.
+
+4. If you're doing the first stable release in a series, you need to
create a ReleaseNotes for the series as a whole. To get started
there, copy all of the Changelog entries from the series into a new
file, and run `./scripts/maint/sortChanges.py` on it. That will
@@ -111,38 +108,40 @@ new Tor release:
=== III. Making the source release.
-1. In `maint-0.2.x`, bump the version number in `configure.ac` and run
+1. In `maint-0.?.x`, bump the version number in `configure.ac` and run
`scripts/maint/updateVersions.pl` to update version numbers in other
- places, and commit. Then merge `maint-0.2.x` into `release-0.2.x`.
+ places, and commit. Then merge `maint-0.?.x` into `release-0.?.x`.
(NOTE: To bump the version number, edit `configure.ac`, and then run
either `make`, or `perl scripts/maint/updateVersions.pl`, depending on
your version.)
-2. Make distcheck, put the tarball up somewhere, and tell `#tor` about
- it. Wait a while to see if anybody has problems building it. Try to
- get Sebastian or somebody to try building it on Windows.
+2. Make distcheck, put the tarball up in somewhere (how about your
+ homedir on your homedir on people.torproject.org?) , and tell `#tor`
+ about it. Wait a while to see if anybody has problems building it.
+ (Though jenkins is usually pretty good about catching these things.)
=== IV. Commit, upload, announce
1. Sign the tarball, then sign and push the git tag:
gpg -ba <the_tarball>
- git tag -u <keyid> tor-0.2.x.y-status
- git push origin tag tor-0.2.x.y-status
+ git tag -u <keyid> tor-0.3.x.y-status
+ git push origin tag tor-0.3.x.y-status
2. scp the tarball and its sig to the dist website, i.e.
`/srv/dist-master.torproject.org/htdocs/` on dist-master. When you want
it to go live, you run "static-update-component dist.torproject.org"
on dist-master.
- Edit `include/versions.wmi` and `Makefile` to note the new version.
+ In the webwml.git repository, `include/versions.wmi` and `Makefile`
+ to note the new version.
(NOTE: Due to #17805, there can only be one stable version listed at
once. Nonetheless, do not call your version "alpha" if it is stable,
or people will get confused.)
-3. Email the packagers (cc'ing tor-assistants) that a new tarball is up.
+3. Email the packagers (cc'ing tor-team) that a new tarball is up.
The current list of packagers is:
- {weasel,gk,mikeperry} at torproject dot org
@@ -151,11 +150,7 @@ new Tor release:
- {lfleischer} at archlinux dot org
- {Nathan} at freitas dot net
- {mike} at tig dot as
- - {tails-rm} at boum dot org (for pre-release announcments)
-
-
- - {tails-dev} at boum dot org (for at-release announcements)
-
+ - {tails-rm} at boum dot org
4. Add the version number to Trac. To do this, go to Trac, log in,
select "Admin" near the top of the screen, then select "Versions" from
@@ -171,17 +166,17 @@ new Tor release:
blog-formatted version of the changelog with the -B option to
format-changelog.
- When you post, include an estimate of when the next TorBrowser releases
- will come out that include this Tor release.
+ When you post, include an estimate of when the next TorBrowser
+ releases will come out that include this Tor release. This will
+ usually track https://wiki.mozilla.org/RapidRelease/Calendar , but it
+ can vary.
=== V. Aftermath and cleanup
-1. If it's a stable release, bump the version number in the `maint-x.y.z`
- branch to "newversion-dev", and do a `merge -s ours` merge to avoid
- taking that change into master. Do a similar `merge -s theirs`
- merge to get the change (and only that change) into release. (Some
- of the build scripts require that maint merge cleanly into release.)
+1. If it's a stable release, bump the version number in the
+ `maint-x.y.z` branch to "newversion-dev", and do a `merge -s ours`
+ merge to avoid taking that change into master.
2. Forward-port the ChangeLog (and ReleaseNotes if appropriate).
diff --git a/doc/HACKING/Tracing.md b/doc/HACKING/Tracing.md
new file mode 100644
index 0000000000..a5fb5165e2
--- /dev/null
+++ b/doc/HACKING/Tracing.md
@@ -0,0 +1,91 @@
+# Tracing #
+
+This document describes how the event tracing subsystem works in tor so
+developers can add events to the code base but also hook them to an event
+tracing framework.
+
+## Basics ###
+
+Event tracing is seperated in two concepts, trace events and a tracer. The
+tracing subsystem can be found in `src/trace`. The `events.h` header file is
+the main file that maps the different tracers to trace events.
+
+### Events ###
+
+A trace event is basically a function from which we can pass any data that
+we want to collect. In addition, we specify a context for the event such as
+a subsystem and an event name.
+
+A trace event in tor has the following standard format:
+
+ tor_trace(subsystem, event\_name, args...)
+
+The `subsystem` parameter is the name of the subsytem the trace event is in.
+For example that could be "scheduler" or "vote" or "hs". The idea is to add
+some context to the event so when we collect them we know where it's coming
+from. The `event_name` is the name of the event which helps a lot with
+adding some semantic to the event. Finally, `args` is any number of
+arguments we want to collect.
+
+Here is an example of a possible tracepoint in main():
+
+ tor_trace(main, init_phase, argc)
+
+The above is a tracepoint in the `main` subsystem with `init_phase` as the
+event name and the `int argc` is passed to the event as well.
+
+How `argc` is collected or used has nothing to do with the instrumentation
+(adding trace events to the code). It is the work of the tracer so this is why
+the trace events and collection framework (tracer) are decoupled. You _can_
+have trace events without a tracer.
+
+### Tracer ###
+
+In `src/trace/events.h`, we map the `tor_trace()` function to the right
+tracer. A tracer support is only enabled at compile time. For instance, the
+file `src/trace/debug.h` contains the mapping of the generic tracing function
+`tor_trace()` to the `log_debug()` function. More specialized function can be
+mapped depending on the tracepoint.
+
+## Build System ##
+
+This section describes how it is integrated into the build system of tor.
+
+By default, every tracing events are disabled in tor that is `tor_trace()`
+is a NOP.
+
+To enable a tracer, there is a configure option on the form of:
+
+ --enable-tracing-<tracer>
+
+We have an option that will send every trace events to a `log_debug()` (as
+mentionned above) which will print you the subsystem and name of the event but
+not the arguments for technical reasons. This is useful if you want to quickly
+see if your trace event is being hit or well written. To do so, use this
+configure option:
+
+ --enable-tracing-debug
+
+## Instrument Tor ##
+
+This is pretty easy. Let's say you want to add a trace event in
+`src/or/rendcache.c`, you only have to add this include statement:
+
+ #include "trace/events.h"
+
+Once done, you can add as many as you want `tor_trace()` that you need.
+Please use the right subsystem (here it would be `hs`) and a unique name that
+tells what the event is for. For example:
+
+ tor_trace(hs, store_desc_as_client, desc, desc_id);
+
+If you look in `src/trace/events.h`, you'll see that if tracing is enabled it
+will be mapped to a function called:
+
+ tor_trace_hs_store_desc_as_client(desc, desc_id)
+
+And the point of all this is for that function to be defined in a new file
+that you might want to add named `src/trace/hs.{c|h}` which would defined how
+to collect the data for the `tor_trace_hs_store_desc_as_client()` function
+like for instance sending it to a `log_debug()` or do more complex operations
+or use a userspace tracer like LTTng (https://lttng.org).
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index 7ef8920858..a6b4f2fc4b 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -153,6 +153,13 @@ values. To split one configuration entry into multiple lines, use a single
backslash character (\) before the end of the line. Comments can be used in
such multiline entries, but they must start at the beginning of a line.
+Configuration options can be imported from files or folders using the %include
+option with the value being a path. If the path is a file, the options from the
+file will be parsed as if they were written where the %include option is. If
+the path is a folder, all files on that folder will be parsed following lexical
+order. Files starting with a dot are ignored. Files on subfolders are ignored.
+The %include option can be used recursively.
+
By default, an option on the command line overrides an option found in the
configuration file, and an option in a configuration file overrides one in
the defaults file.
@@ -185,6 +192,9 @@ GENERAL OPTIONS
course, more is better; we recommend at least 250 KBytes (2 mbits) if
possible. (Default: 1 GByte) +
+
+ Note that this option, and other bandwidth-limiting options, apply to TCP
+ data only: They do not count TCP headers or DNS traffic. +
+ +
With this option, and in other options that take arguments in bytes,
KBytes, and so on, other formats are also supported. Notably, "KBytes" can
also be written as "kilobytes" or "kb"; "MBytes" can be written as
@@ -338,14 +348,6 @@ GENERAL OPTIONS
Unix domain sockets only: Do not insist that the directory
that holds the socket be read-restricted.
-[[ControlListenAddress]] **ControlListenAddress** __IP__[:__PORT__]::
- Bind the controller listener to this address. If you specify a port, bind
- to this port rather than the one specified in ControlPort. We strongly
- recommend that you leave this alone unless you know what you're doing,
- since giving attackers access to your control listener is really
- dangerous. This directive can be specified multiple
- times to bind to multiple addresses/ports. (Default: 127.0.0.1)
-
[[ControlSocket]] **ControlSocket** __Path__::
Like ControlPort, but listens on a Unix domain socket, rather than a TCP
socket. '0' disables ControlSocket (Unix and Unix-like systems only.)
@@ -391,7 +393,9 @@ GENERAL OPTIONS
[[DataDirectory]] **DataDirectory** __DIR__::
Store working data in DIR. Can not be changed while tor is running.
- (Default: @LOCALSTATEDIR@/lib/tor)
+ (Default: ~/.tor if your home directory is not /; otherwise,
+ @LOCALSTATEDIR@/lib/tor. On Windows, the default is
+ your ApplicationData folder.)
[[DataDirectoryGroupReadable]] **DataDirectoryGroupReadable** **0**|**1**::
If this option is set to 0, don't allow the filesystem group to read the
@@ -642,18 +646,19 @@ GENERAL OPTIONS
(127.0.0.0/8 and ::1).
[[OutboundBindAddressOR]] **OutboundBindAddressOR** __IP__::
- Make all outbound non-exit (=relay and other) connections originate from the IP
- address specified. This option overrides **OutboundBindAddress** for the same
- IP version. This option may be used twice, once with an IPv4 address and once
- with an IPv6 address. This setting will be ignored for connections to the
- loopback addresses (127.0.0.0/8 and ::1).
+ Make all outbound non-exit (relay and other) connections
+ originate from the IP address specified. This option overrides
+ **OutboundBindAddress** for the same IP version. This option may
+ be used twice, once with an IPv4 address and once with an IPv6
+ address. This setting will be ignored for connections to the loopback
+ addresses (127.0.0.0/8 and ::1).
[[OutboundBindAddressExit]] **OutboundBindAddressExit** __IP__::
- Make all outbound exit connections originate from the IP address specified. This
- option overrides **OutboundBindAddress** for the same IP version. This option
- may be used twice, once with an IPv4 address and once with an IPv6 address. This
- setting will be ignored for connections to the loopback addresses (127.0.0.0/8
- and ::1).
+ Make all outbound exit connections originate from the IP address
+ specified. This option overrides **OutboundBindAddress** for the
+ same IP version. This option may be used twice, once with an IPv4
+ address and once with an IPv6 address. This setting will be ignored
+ for connections to the loopback addresses (127.0.0.0/8 and ::1).
[[PidFile]] **PidFile** __FILE__::
On startup, write our PID to FILE. On clean shutdown, remove
@@ -664,12 +669,6 @@ GENERAL OPTIONS
following the Tor specification. Otherwise, they are logged with severity
\'info'. (Default: 0)
-[[PredictedPortsRelevanceTime]] **PredictedPortsRelevanceTime** __NUM__::
- Set how long, after the client has made an anonymized connection to a
- given port, we will try to make sure that we build circuits to
- exits that support that port. The maximum value for this option is 1
- hour. (Default: 1 hour)
-
[[RunAsDaemon]] **RunAsDaemon** **0**|**1**::
If 1, Tor forks and daemonizes to the background. This option has no effect
on Windows; instead you should use the --service command-line option.
@@ -768,22 +767,6 @@ CLIENT OPTIONS
The following options are useful only for clients (that is, if
**SocksPort**, **TransPort**, **DNSPort**, or **NATDPort** is non-zero):
-[[AllowInvalidNodes]] **AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
- If some Tor servers are obviously not working right, the directory
- authorities can manually mark them as invalid, meaning that it's not
- recommended you use them for entry or exit positions in your circuits. You
- can opt to use them in some circuit positions, though. The default is
- "middle,rendezvous", and other choices are not advised.
-
-[[ExcludeSingleHopRelays]] **ExcludeSingleHopRelays** **0**|**1**::
- This option controls whether circuits built by Tor will include relays with
- the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
- to 0, these relays will be included. Note that these relays might be at
- higher risk of being seized or observed, so they are not normally
- included. Also note that relatively few clients turn off this option,
- so using these relays might make your client stand out.
- (Default: 1)
-
[[Bridge]] **Bridge** [__transport__] __IP__:__ORPort__ [__fingerprint__]::
When set along with UseBridges, instructs Tor to use the relay at
"IP:ORPort" as a "bridge" relaying into the Tor network. If "fingerprint"
@@ -797,7 +780,12 @@ The following options are useful only for clients (that is, if
rather than connecting to the bridge directly. Some transports use a
transport-specific method to work out the remote address to connect to.
These transports typically ignore the "IP:ORPort" specified in the bridge
- line.
+ line. +
+ +
+ Tor passes any "key=val" settings to the pluggable transport proxy as
+ per-connection arguments when connecting to the bridge. Consult
+ the documentation of the pluggable transport for details of what
+ arguments it supports.
[[LearnCircuitBuildTimeout]] **LearnCircuitBuildTimeout** **0**|**1**::
If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
@@ -810,13 +798,15 @@ The following options are useful only for clients (that is, if
LearnCircuitBuildTimeout is 0, this value is the only value used.
(Default: 60 seconds)
-[[CircuitIdleTimeout]] **CircuitIdleTimeout** __NUM__::
- If we have kept a clean (never used) circuit around for NUM seconds, then
- close it. This way when the Tor client is entirely idle, it can expire all
- of its circuits, and then expire its TLS connections. Also, if we end up
- making a circuit that is not useful for exiting any of the requests we're
- receiving, it won't forever take up a slot in the circuit list. (Default: 1
- hour)
+[[CircuitsAvailableTimeout]] **CircuitsAvailableTimeout** __NUM__::
+ Tor will attempt to keep at least one open, unused circuit available for
+ this amount of time. This option governs how long idle circuits are kept
+ open, as well as the amount of time Tor will keep a circuit open to each
+ of the recently used ports. This way when the Tor client is entirely
+ idle, it can expire all of its circuits, and then expire its TLS
+ connections. Note that the actual timeout value is uniformly randomized
+ from the specified value to twice that amount. (Default: 30 minutes;
+ Max: 24 hours)
[[CircuitStreamTimeout]] **CircuitStreamTimeout** __NUM__::
If non-zero, this option overrides our internal timeout schedule for how
@@ -833,6 +823,22 @@ The following options are useful only for clients (that is, if
and fast enough. The current behavior is simply that Tor is a client
unless ORPort, ExtORPort, or DirPort are configured.) (Default: 0)
+[[ConnectionPadding]] **ConnectionPadding** **0**|**1**|**auto**::
+ This option governs Tor's use of padding to defend against some forms of
+ traffic analysis. If it is set to 'auto', Tor will send padding only
+ if both the client and the relay support it. If it is set to 0, Tor will
+ not send any padding cells. If it is set to 1, Tor will still send padding
+ for client connections regardless of relay support. Only clients may set
+ this option. This option should be offered via the UI to mobile users
+ for use where bandwidth may be expensive.
+ (Default: auto)
+
+[[ReducedConnectionPadding]] **ReducedConnectionPadding** **0**|**1**::
+ If set to 1, Tor will not not hold OR connections open for very long,
+ and will send less padding on these connections. Only clients may set
+ this option. This option should be offered via the UI to mobile users
+ for use where bandwidth may be expensive. (Default: 0)
+
[[ExcludeNodes]] **ExcludeNodes** __node__,__node__,__...__::
A list of identity fingerprints, country codes, and address
patterns of nodes to avoid when building a circuit. Country codes are
@@ -975,24 +981,6 @@ The following options are useful only for clients (that is, if
services can be configured to require authorization using the
**HiddenServiceAuthorizeClient** option.
-[[CloseHSClientCircuitsImmediatelyOnTimeout]] **CloseHSClientCircuitsImmediatelyOnTimeout** **0**|**1**::
- If 1, Tor will close unfinished hidden service client circuits
- which have not moved closer to connecting to their destination
- hidden service when their internal state has not changed for the
- duration of the current circuit-build timeout. Otherwise, such
- circuits will be left open, in the hope that they will finish
- connecting to their destination hidden services. In either case,
- another set of introduction and rendezvous circuits for the same
- destination hidden service will be launched. (Default: 0)
-
-[[CloseHSServiceRendCircuitsImmediatelyOnTimeout]] **CloseHSServiceRendCircuitsImmediatelyOnTimeout** **0**|**1**::
- If 1, Tor will close unfinished hidden-service-side rendezvous
- circuits after the current circuit-build timeout. Otherwise, such
- circuits will be left open, in the hope that they will finish
- connecting to their destinations. In either case, another
- rendezvous circuit for the same destination client will be
- launched. (Default: 0)
-
[[LongLivedPorts]] **LongLivedPorts** __PORTS__::
A list of ports for services that tend to have long-running connections
(e.g. chat and interactive shells). Circuits for streams that use these
@@ -1051,7 +1039,8 @@ The following options are useful only for clients (that is, if
but never attach a new stream to a circuit that is too old. For hidden
services, this applies to the __last__ time a circuit was used, not the
first. Circuits with streams constructed with SOCKS authentication via
- SocksPorts that have **KeepAliveIsolateSOCKSAuth** ignore this value.
+ SocksPorts that have **KeepAliveIsolateSOCKSAuth** also remain alive
+ for MaxCircuitDirtiness seconds after carrying the last such stream.
(Default: 10 minutes)
[[MaxClientCircuitsPending]] **MaxClientCircuitsPending** __NUM__::
@@ -1113,8 +1102,9 @@ The following options are useful only for clients (that is, if
Don't share circuits with streams targeting a different
destination address.
**KeepAliveIsolateSOCKSAuth**;;
- If **IsolateSOCKSAuth** is enabled, keep alive circuits that have
- streams with SOCKS authentication set indefinitely.
+ If **IsolateSOCKSAuth** is enabled, keep alive circuits while they have
+ at least one stream with SOCKS authentication active. After such a circuit
+ is idle for more than MaxCircuitDirtiness seconds, it can be closed.
**SessionGroup=**__INT__;;
If no other isolation rules would prevent it, allow streams
on this port to share circuits with streams from every other
@@ -1191,16 +1181,6 @@ The following options are useful only for clients (that is, if
line is used, and all earlier flags are ignored. No error is issued for
conflicting flags.
-[[SocksListenAddress]] **SocksListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for connections from Socks-speaking
- applications. (Default: 127.0.0.1) You can also specify a port (e.g.
- 192.168.0.1:9100). This directive can be specified multiple times to bind
- to multiple addresses/ports. (DEPRECATED: As of 0.2.3.x-alpha, you can
- now use multiple SocksPort entries, and provide addresses for SocksPort
- entries, so SocksListenAddress no longer has a purpose. For backward
- compatibility, SocksListenAddress is only allowed when SocksPort is just
- a port number.)
-
[[SocksPolicy]] **SocksPolicy** __policy__,__policy__,__...__::
Set an entrance policy for this server, to limit who can connect to the
SocksPort and DNSPort ports. The policies have the same form as exit
@@ -1268,16 +1248,16 @@ The following options are useful only for clients (that is, if
[[NumEntryGuards]] **NumEntryGuards** __NUM__::
If UseEntryGuards is set to 1, we will try to pick a total of NUM routers
- as long-term entries for our circuits. If NUM is 0, we try to learn
- the number from the NumEntryGuards consensus parameter, and default
- to 3 if the consensus parameter isn't set. (Default: 0)
+ as long-term entries for our circuits. If NUM is 0, we try to learn the
+ number from the guard-n-primary-guards-to-use consensus parameter, and
+ default to 1 if the consensus parameter isn't set. (Default: 0)
[[NumDirectoryGuards]] **NumDirectoryGuards** __NUM__::
- If UseEntryGuardsAsDirectoryGuards is enabled, we try to make sure we
- have at least NUM routers to use as directory guards. If this option
- is set to 0, use the value from the NumDirectoryGuards consensus
- parameter, falling back to the value from NumEntryGuards if the
- consensus parameter is 0 or isn't set. (Default: 0)
+ If UseEntryGuardsAsDirectoryGuards is enabled, we try to make sure we have
+ at least NUM routers to use as directory guards. If this option is set to
+ 0, use the value from the guard-n-primary-dir-guards-to-use consensus
+ parameter, and default to 3 if the consensus parameter isn't set.
+ (Default: 0)
[[GuardLifetime]] **GuardLifetime** __N__ **days**|**weeks**|**months**::
If nonzero, and UseEntryGuards is set, minimum time to keep a guard before
@@ -1299,12 +1279,6 @@ The following options are useful only for clients (that is, if
helps to determine whether an application using Tor is possibly leaking
DNS requests. (Default: 0)
-[[WarnUnsafeSocks]] **WarnUnsafeSocks** **0**|**1**::
- When this option is enabled, Tor will warn whenever a request is
- received that only contains an IP address instead of a hostname. Allowing
- applications to do DNS resolves themselves is usually a bad idea and
- can leak your location to attackers. (Default: 1)
-
[[VirtualAddrNetworkIPv4]] **VirtualAddrNetworkIPv4** __Address__/__bits__ +
[[VirtualAddrNetworkIPv6]] **VirtualAddrNetworkIPv6** [__Address__]/__bits__::
@@ -1336,18 +1310,6 @@ The following options are useful only for clients (that is, if
the node "foo". Disabled by default since attacking websites and exit
relays can use it to manipulate your path selection. (Default: 0)
-[[FastFirstHopPK]] **FastFirstHopPK** **0**|**1**|**auto**::
- When this option is disabled, Tor uses the public key step for the first
- hop of creating circuits. Skipping it is generally safe since we have
- already used TLS to authenticate the relay and to establish forward-secure
- keys. Turning this option off makes circuit building a little
- slower. Setting this option to "auto" takes advice from the authorities
- in the latest consensus about whether to use this feature. +
- +
- Note that Tor will always use the public key step for the first hop if it's
- operating as a relay, and it will never use the public key step if it
- doesn't yet know the onion key of the first hop. (Default: auto)
-
[[TransPort]] **TransPort** \['address':]__port__|**auto** [_isolation flags_]::
Open this port to listen for transparent proxy connections. Set this to
0 if you don't want to allow transparent proxy connections. Set the port
@@ -1358,17 +1320,7 @@ The following options are useful only for clients (that is, if
TransPort requires OS support for transparent proxies, such as BSDs' pf or
Linux's IPTables. If you're planning to use Tor as a transparent proxy for
a network, you'll want to examine and change VirtualAddrNetwork from the
- default setting. You'll also want to set the TransListenAddress option for
- the network you'd like to proxy. (Default: 0)
-
-[[TransListenAddress]] **TransListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for transparent proxy connections. (Default:
- 127.0.0.1). This is useful for exporting a transparent proxy server to an
- entire network. (DEPRECATED: As of 0.2.3.x-alpha, you can
- now use multiple TransPort entries, and provide addresses for TransPort
- entries, so TransListenAddress no longer has a purpose. For backward
- compatibility, TransListenAddress is only allowed when TransPort is just
- a port number.)
+ default setting. (Default: 0)
[[TransProxyType]] **TransProxyType** **default**|**TPROXY**|**ipfw**|**pf-divert**::
TransProxyType may only be enabled when there is transparent proxy listener
@@ -1376,9 +1328,7 @@ The following options are useful only for clients (that is, if
+
Set this to "TPROXY" if you wish to be able to use the TPROXY Linux module
to transparently proxy connections that are configured using the TransPort
- option. This setting lets the listener on the TransPort accept connections
- for all addresses, even when the TransListenAddress is configured for an
- internal address. Detailed information on how to configure the TPROXY
+ option. Detailed information on how to configure the TPROXY
feature can be found in the Linux kernel source tree in the file
Documentation/networking/tproxy.txt. +
+
@@ -1406,13 +1356,6 @@ The following options are useful only for clients (that is, if
+
This option is only for people who cannot use TransPort. (Default: 0)
-[[NATDListenAddress]] **NATDListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for NATD connections. (DEPRECATED: As of
- 0.2.3.x-alpha, you can now use multiple NATDPort entries, and provide
- addresses for NATDPort entries, so NATDListenAddress no longer has a
- purpose. For backward compatibility, NATDListenAddress is only allowed
- when NATDPort is just a port number.)
-
[[AutomapHostsOnResolve]] **AutomapHostsOnResolve** **0**|**1**::
When this option is enabled, and we get a request to resolve an address
that ends with one of the suffixes in **AutomapHostsSuffixes**, we map an
@@ -1433,13 +1376,6 @@ The following options are useful only for clients (that is, if
addresses/ports. See SocksPort for an explanation of isolation
flags. (Default: 0)
-[[DNSListenAddress]] **DNSListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for DNS connections. (DEPRECATED: As of
- 0.2.3.x-alpha, you can now use multiple DNSPort entries, and provide
- addresses for DNSPort entries, so DNSListenAddress no longer has a
- purpose. For backward compatibility, DNSListenAddress is only allowed
- when DNSPort is just a port number.)
-
[[ClientDNSRejectInternalAddresses]] **ClientDNSRejectInternalAddresses** **0**|**1**::
If true, Tor does not believe any anonymously retrieved DNS answer that
tells it that an address resolves to an internal address (like 127.0.0.1 or
@@ -1469,11 +1405,6 @@ The following options are useful only for clients (that is, if
Like WarnPlaintextPorts, but instead of warning about risky port uses, Tor
will instead refuse to make the connection. (Default: None)
-[[AllowSingleHopCircuits]] **AllowSingleHopCircuits** **0**|**1**::
- When this option is set, the attached Tor controller can use relays
- that have the **AllowSingleHopExits** option turned on to build
- one-hop Tor connections. (Default: 0)
-
[[OptimisticData]] **OptimisticData** **0**|**1**|**auto**::
When this option is set, and Tor is using an exit node that supports
the feature, it will try optimistically to send data to the exit node
@@ -1666,13 +1597,6 @@ is non-zero):
Tor client binds to. To bind to a different address, use the
*ListenAddress and OutboundBindAddress options.
-[[AllowSingleHopExits]] **AllowSingleHopExits** **0**|**1**::
- This option controls whether clients can use this server as a single hop
- proxy. If set to 1, clients can use this server as an exit even if it is
- the only hop in the circuit. Note that most clients will refuse to use
- servers that set this option, since most clients have
- ExcludeSingleHopRelays set. (Default: 0)
-
[[AssumeReachable]] **AssumeReachable** **0**|**1**::
This option is used when bootstrapping a new Tor network. If set to 1,
don't do self-reachability testing; just upload your server descriptor
@@ -1807,14 +1731,18 @@ is non-zero):
If we have more onionskins queued for processing than we can process in
this amount of time, reject new ones. (Default: 1750 msec)
-[[MyFamily]] **MyFamily** __node__,__node__,__...__::
- Declare that this Tor server is controlled or administered by a group or
- organization identical or similar to that of the other servers, defined by
- their identity fingerprints. When two servers both declare
- that they are in the same \'family', Tor clients will not use them in the
- same circuit. (Each server only needs to list the other servers in its
- family; it doesn't need to list itself, but it won't hurt.) Do not list
- any bridge relay as it would compromise its concealment. +
+[[MyFamily]] **MyFamily** __fingerprint__,__fingerprint__,...::
+ Declare that this Tor relay is controlled or administered by a group or
+ organization identical or similar to that of the other relays, defined by
+ their (possibly $-prefixed) identity fingerprints.
+ This option can be repeated many times, for
+ convenience in defining large families: all fingerprints in all MyFamily
+ lines are merged into one list.
+ When two relays both declare that they are in the
+ same \'family', Tor clients will not use them in the same circuit. (Each
+ relay only needs to list the other servers in its family; it doesn't need to
+ list itself, but it won't hurt if it does.) Do not list any bridge relay as it would
+ compromise its concealment. +
+
When listing a node, it's better to list it by fingerprint than by
nickname: fingerprints are more reliable.
@@ -1856,15 +1784,6 @@ is non-zero):
For obvious reasons, NoAdvertise and NoListen are mutually exclusive, and
IPv4Only and IPv6Only are mutually exclusive.
-[[ORListenAddress]] **ORListenAddress** __IP__[:__PORT__]::
- Bind to this IP address to listen for connections from Tor clients and
- servers. If you specify a port, bind to this port rather than the one
- specified in ORPort. (Default: 0.0.0.0) This directive can be specified
- multiple times to bind to multiple addresses/ports. +
- +
- This option is deprecated; you can get the same behavior with ORPort now
- that it supports NoAdvertise and explicit addresses.
-
[[PortForwarding]] **PortForwarding** **0**|**1**::
Attempt to automatically forward the DirPort and ORPort on a NAT router
connecting this Tor server to the Internet. If set, Tor will try both
@@ -2016,12 +1935,6 @@ is non-zero):
[[GeoIPv6File]] **GeoIPv6File** __filename__::
A filename containing IPv6 GeoIP data, for use with by-country statistics.
-[[TLSECGroup]] **TLSECGroup** **P224**|**P256**::
- What EC group should we try to use for incoming TLS connections?
- P224 is faster, but makes us stand out more. Has no effect if
- we're a client, or if our OpenSSL version lacks support for ECDHE.
- (Default: P256)
-
[[CellStatistics]] **CellStatistics** **0**|**1**::
Relays only.
When this option is enabled, Tor collects statistics about cell
@@ -2032,6 +1945,14 @@ is non-zero):
If ExtraInfoStatistics is enabled, it will published as part of
extra-info document. (Default: 0)
+[[PaddingStatistics]] **PaddingStatistics** **0**|**1**::
+ Relays only.
+ When this option is enabled, Tor collects statistics for padding cells
+ sent and received by this relay, in addition to total cell counts.
+ These statistics are rounded, and omitted if traffic is low. This
+ information is important for load balancing decisions related to padding.
+ (Default: 1)
+
[[DirReqStatistics]] **DirReqStatistics** **0**|**1**::
Relays and bridges only.
When this option is enabled, a Tor directory writes statistics on the
@@ -2140,15 +2061,6 @@ details.)
+
The same flags are supported here as are supported by ORPort.
-[[DirListenAddress]] **DirListenAddress** __IP__[:__PORT__]::
- Bind the directory service to this address. If you specify a port, bind to
- this port rather than the one specified in DirPort. (Default: 0.0.0.0)
- This directive can be specified multiple times to bind to multiple
- addresses/ports. +
- +
- This option is deprecated; you can get the same behavior with DirPort now
- that it supports NoAdvertise and explicit addresses.
-
[[DirPolicy]] **DirPolicy** __policy__,__policy__,__...__::
Set an entrance policy for this server, to limit who can connect to the
directory ports. The policies have the same form as exit policies above,
@@ -2161,6 +2073,16 @@ details.)
because clients connect via the ORPort by default. Setting either DirPort
or BridgeRelay and setting DirCache to 0 is not supported. (Default: 1)
+[[MaxConsensusAgeForDiffs]] **MaxConsensusAgeForDiffs** __N__ **minutes**|**hours**|**days**|**weeks**::
+ When this option is nonzero, Tor caches will not try to generate
+ consensus diffs for any consensus older than this amount of time.
+ If this option is set to zero, Tor will pick a reasonable default from
+ the current networkstatus document. You should not set this
+ option unless your cache is severely low on disk space or CPU.
+ If you need to set it, keeping it above 3 or 4 hours will help clients
+ much more than setting it to zero.
+ (Default: 0)
+
DIRECTORY AUTHORITY SERVER OPTIONS
----------------------------------
@@ -2486,6 +2408,101 @@ The following options are used to configure a hidden service.
including setting SOCKSPort to "0". Can not be changed while tor is
running. (Default: 0)
+DENIAL OF SERVICE MITIGATION OPTIONS
+------------------------------------
+
+The following options are useful only for a public relay. They control the
+Denial of Service mitigation subsystem.
+
+[[DoSCircuitCreationEnabled]] **DoSCircuitCreationEnabled** **0**|**1**|**auto**::
+
+ Enable circuit creation DoS mitigation. If enabled, tor will cache client
+ IPs along with statistics in order to detect circuit DoS attacks. If an
+ address is positively identified, tor will activate defenses against the
+ address. See the DoSCircuitCreationDefenseType option for more details.
+ This is a client to relay detection only. "auto" means use the consensus
+ parameter. If not defined in the consensus, the value is 0.
+ (Default: auto)
+
+[[DoSCircuitCreationMinConnections]] **DoSCircuitCreationMinConnections** __NUM__::
+
+ Minimum threshold of concurrent connections before a client address can be
+ flagged as executing a circuit creation DoS. In other words, once a client
+ address reaches the circuit rate and has a minimum of NUM concurrent
+ connections, a detection is positive. "0" means use the consensus
+ parameter. If not defined in the consensus, the value is 3.
+ (Default: 0)
+
+[[DoSCircuitCreationRate]] **DoSCircuitCreationRate** __NUM__::
+
+ The allowed circuit creation rate per second applied per client IP
+ address. If this option is 0, it obeys a consensus parameter. If not
+ defined in the consensus, the value is 3.
+ (Default: 0)
+
+[[DoSCircuitCreationBurst]] **DoSCircuitCreationBurst** __NUM__::
+
+ The allowed circuit creation burst per client IP address. If the circuit
+ rate and the burst are reached, a client is marked as executing a circuit
+ creation DoS. "0" means use the consensus parameter. If not defined in the
+ consensus, the value is 90.
+ (Default: 0)
+
+[[DoSCircuitCreationDefenseType]] **DoSCircuitCreationDefenseType** __NUM__::
+
+ This is the type of defense applied to a detected client address. The
+ possible values are:
+
+ 1: No defense.
+ 2: Refuse circuit creation for the DoSCircuitCreationDefenseTimePeriod period of time.
++
+ "0" means use the consensus parameter. If not defined in the consensus,
+ the value is 2.
+ (Default: 0)
+
+[[DoSCircuitCreationDefenseTimePeriod]] **DoSCircuitCreationDefenseTimePeriod** __N__ **seconds**|**minutes**|**hours**::
+
+ The base time period in seconds that the DoS defense is activated for. The
+ actual value is selected randomly for each activation from N+1 to 3/2 * N.
+ "0" means use the consensus parameter. If not defined in the consensus,
+ the value is 3600 seconds (1 hour). (Default: 0)
+
+[[DoSConnectionEnabled]] **DoSConnectionEnabled** **0**|**1**|**auto**::
+
+ Enable the connection DoS mitigation. For client address only, this allows
+ tor to mitigate against large number of concurrent connections made by a
+ single IP address. "auto" means use the consensus parameter. If not
+ defined in the consensus, the value is 0.
+ (Default: auto)
+
+[[DoSConnectionMaxConcurrentCount]] **DoSConnectionMaxConcurrentCount** __NUM__::
+
+ The maximum threshold of concurrent connection from a client IP address.
+ Above this limit, a defense selected by DoSConnectionDefenseType is
+ applied. "0" means use the consensus parameter. If not defined in the
+ consensus, the value is 100.
+ (Default: 0)
+
+[[DoSConnectionDefenseType]] **DoSConnectionDefenseType** __NUM__::
+
+ This is the type of defense applied to a detected client address for the
+ connection mitigation. The possible values are:
+
+ 1: No defense.
+ 2: Immediately close new connections.
++
+ "0" means use the consensus parameter. If not defined in the consensus,
+ the value is 2.
+ (Default: 0)
+
+[[DoSRefuseSingleHopClientRendezvous]] **DoSRefuseSingleHopClientRendezvous** **0**|**1**|**auto**::
+
+ Refuse establishment of rendezvous points for single hop clients. In other
+ words, if a client directly connects to the relay and sends an
+ ESTABLISH_RENDEZVOUS cell, it is silently dropped. "auto" means use the
+ consensus parameter. If not defined in the consensus, the value is 0.
+ (Default: auto)
+
TESTING NETWORK OPTIONS
-----------------------
@@ -2776,7 +2793,8 @@ FILES
__DataDirectory__**/cached-status/**::
The most recently downloaded network status document for each authority.
Each file holds one such document; the filenames are the hexadecimal
- identity key fingerprints of the directory authorities. Mostly obsolete.
+ identity key fingerprints of the directory authorities. Obsolete;
+ no longer in use.
__DataDirectory__**/cached-certs**::
This file holds downloaded directory key certificates that are used to
@@ -2792,6 +2810,13 @@ __DataDirectory__**/cached-descriptors** and **cached-descriptors.new**::
a given router. The ".new" file is an append-only journal; when it gets
too large, all entries are merged into a new cached-descriptors file.
+__DataDirectory__**/cached-extrainfo** and **cached-extrainfo.new**::
+ As "cached-descriptors", but holds optionally-downloaded "extra-info"
+ documents. Relays use these documents to send inessential information
+ about statistics, bandwidth history, and network health to the
+ authorities. They aren't fetched by default; see the DownloadExtraInfo
+ option for more info.
+
__DataDirectory__**/cached-microdescs** and **cached-microdescs.new**::
These files hold downloaded microdescriptors. Lines beginning with
@-signs are annotations that contain more information about a given
@@ -2806,18 +2831,27 @@ __DataDirectory__**/state**::
A set of persistent key-value mappings. These are documented in
the file. These include:
- The current entry guards and their status.
- - The current bandwidth accounting values (unused so far; see
- below).
+ - The current bandwidth accounting values.
- When the file was last written
- What version of Tor generated the state file
- A short history of bandwidth usage, as produced in the server
descriptors.
+__DataDirectory__**/sr-state**::
+ Authority only. State file used to record information about the current
+ status of the shared-random-value voting state.
+
+__DataDirectory__**/diff-cache**::
+ Directory cache only. Holds older consensuses, and diffs from older
+ consensuses to the most recent consensus of each type, compressed
+ in various ways. Each file contains a set of key-value arguments
+ decribing its contents, followed by a single NUL byte, followed by the
+ main file contents.
+
__DataDirectory__**/bw_accounting**::
Used to track bandwidth accounting values (when the current period starts
and ends; how much has been read and written so far this period). This file
- is obsolete, and the data is now stored in the \'state' file as well. Only
- used when bandwidth accounting is enabled.
+ is obsolete, and the data is now stored in the \'state' file instead.
__DataDirectory__**/control_auth_cookie**::
Used for cookie authentication with the controller. Location can be
@@ -2830,6 +2864,13 @@ __DataDirectory__**/lock**::
directory. If access to this file is locked, data directory is already
in use by Tor.
+__DataDirectory__**/key-pinning-journal**::
+ Used by authorities. A line-based file that records mappings between
+ RSA1024 identity keys and Ed25519 identity keys. Authorities enforce
+ these mappings, so that once a relay has picked an Ed25519 key, stealing
+ or factoring the RSA1024 key will no longer let an attacker impersonate
+ the relay.
+
__DataDirectory__**/keys/***::
Only used by servers. Holds identity keys and onion keys.
@@ -2880,13 +2921,17 @@ __DataDirectory__**/keys/ed25519_signing_cert**::
The certificate which authenticates "ed25519_signing_secret_key" as
having been signed by the Ed25519 master key.
-__DataDirectory__**/keys/secret_onion_key**::
+__DataDirectory__**/keys/secret_onion_key** and **secret_onion_key.old**::
A relay's RSA1024 short-term onion key. Used to decrypt old-style ("TAP")
- circuit extension requests.
+ circuit extension requests. The ".old" file holds the previously
+ generated key, which the relay uses to handle any requests that were
+ made by clients that didn't have the new one.
-__DataDirectory__**/keys/secret_onion_key_ntor**::
+__DataDirectory__**/keys/secret_onion_key_ntor** and **secret_onion_key_ntor.old**::
A relay's Curve25519 short-term onion key. Used to handle modern ("ntor")
- circuit extension requests.
+ circuit extension requests. The ".old" file holds the previously
+ generated key, which the relay uses to handle any requests that were
+ made by clients that didn't have the new one.
__DataDirectory__**/fingerprint**::
Only used by servers. Holds the fingerprint of the server's identity key.
@@ -2941,11 +2986,20 @@ __DataDirectory__**/stats/conn-stats**::
Only used by servers. This file is used to collect approximate connection
history (number of active connections over time).
+__DataDirectory__**/stats/hidserv-stats**::
+ Only used by servers. This file is used to collect approximate counts
+ of what fraction of the traffic is hidden service rendezvous traffic, and
+ approximately how many hidden services the relay has seen.
+
__DataDirectory__**/networkstatus-bridges**::
Only used by authoritative bridge directories. Contains information
about bridges that have self-reported themselves to the bridge
authority.
+__DataDirectory__**/approved-routers**::
+ Authorities only. This file is used to configure which relays are
+ known to be valid, invalid, and so forth.
+
__HiddenServiceDirectory__**/hostname**::
The <base32-encoded-fingerprint>.onion domain name for this hidden service.
If the hidden service is restricted to authorized clients only, this file
diff --git a/doc/torify.1.txt b/doc/torify.1.txt
index 8dca901317..7e49081cfc 100644
--- a/doc/torify.1.txt
+++ b/doc/torify.1.txt
@@ -17,25 +17,23 @@ SYNOPSIS
DESCRIPTION
-----------
-**torify** is a simple wrapper that attempts to find the best underlying Tor
-wrapper available on a system. It calls torsocks with a tor specific
-configuration file. +
+**torify** is a simple wrapper that calls torsocks with a tor-specific
+configuration file.
-torsocks is an improved wrapper that explicitly rejects UDP, safely resolves DNS
-lookups and properly socksifies your TCP connections. +
-
-Please note that since both method use LD_PRELOAD, torify cannot be applied to
-suid binaries.
+It is provided for backward compatibility; instead you should use torsocks.
WARNING
-------
-When used with torsocks, torify should not leak DNS requests or UDP data. +
+When used with torsocks, torify should not leak DNS requests or UDP data.
+
+torify can leak ICMP data.
-Both will leak ICMP data.
+torify will not ensure that different requests are processed on
+different circuits.
SEE ALSO
--------
-**tor**(1), **tor-resolve**(1), **torsocks**(1)
+**tor**(1), **torsocks**(1)
AUTHORS
-------
diff --git a/doc/torrc_format.txt b/doc/torrc_format.txt
index 7a809901d9..b175b9fb15 100644
--- a/doc/torrc_format.txt
+++ b/doc/torrc_format.txt
@@ -175,7 +175,7 @@ and\
friends
# Backslashes in the middle of a line are included as-is. The key of
-# this one is "Too" and the value is "Many\\Backsl\ashes here" (with
+# this one is "Too" and the value is "Many\\Backsl\ashes \here" (with
# backslashes in that last string as-is)
Too \
Many\\\
@@ -185,7 +185,7 @@ here
# And here's the really yucky part. If a comment appears in a multi-line
# entry, the entry is still able to continue on the next line, as in the
# following, where the key is "This" and the value is
-# "entry and some are silly"
+# "entry and some are silly"
This entry \
# has comments \
and some \
diff --git a/scripts/codegen/fuzzing_include_am.py b/scripts/codegen/fuzzing_include_am.py
new file mode 100755
index 0000000000..6e45c21926
--- /dev/null
+++ b/scripts/codegen/fuzzing_include_am.py
@@ -0,0 +1,157 @@
+#!/usr/bin/python
+
+FUZZERS = """
+ consensus
+ descriptor
+ diff
+ diff-apply
+ extrainfo
+ hsdescv2
+ http
+ iptsv2
+ microdesc
+ vrs
+"""
+
+
+PREAMBLE = r"""
+FUZZING_CPPFLAGS = \
+ $(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
+FUZZING_CFLAGS = \
+ $(AM_CFLAGS) $(TEST_CFLAGS)
+FUZZING_LDFLAG = \
+ @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
+FUZZING_LIBS = \
+ src/or/libtor-testing.a \
+ src/common/libor-crypto-testing.a \
+ $(LIBKECCAK_TINY) \
+ $(LIBDONNA) \
+ src/common/libor-testing.a \
+ src/common/libor-ctime-testing.a \
+ src/common/libor-event-testing.a \
+ src/trunnel/libor-trunnel-testing.a \
+ @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
+ @TOR_LIBEVENT_LIBS@ \
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
+ @TOR_SYSTEMD_LIBS@ \
+ @TOR_LZMA_LIBS@ \
+ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
+
+oss-fuzz-prereqs: \
+ src/or/libtor-testing.a \
+ src/common/libor-crypto-testing.a \
+ $(LIBKECCAK_TINY) \
+ $(LIBDONNA) \
+ src/common/libor-testing.a \
+ src/common/libor-ctime-testing.a \
+ src/common/libor-event-testing.a \
+ src/trunnel/libor-trunnel-testing.a
+
+noinst_HEADERS += \
+ src/test/fuzz/fuzzing.h
+
+LIBFUZZER = -lFuzzer
+LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
+LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
+LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
+LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
+
+LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
+LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
+"""
+
+POSTAMBLE = r"""
+noinst_PROGRAMS += $(FUZZERS) $(LIBFUZZER_FUZZERS)
+noinst_LIBRARIES += $(OSS_FUZZ_FUZZERS)
+oss-fuzz-fuzzers: oss-fuzz-prereqs $(OSS_FUZZ_FUZZERS)
+fuzzers: $(FUZZERS) $(LIBFUZZER_FUZZERS)
+
+test-fuzz-corpora: $(FUZZERS)
+ $(top_srcdir)/src/test/fuzz_static_testcases.sh
+"""
+
+########### No user serviceable parts will follow.
+
+PREAMBLE = PREAMBLE.strip()
+POSTAMBLE = POSTAMBLE.strip() # If I use it, it's a word!
+FUZZERS = FUZZERS.split()
+FUZZERS.sort()
+
+WARNING = """
+# This file was generated by fuzzing_include_am.py; do not hand-edit unless
+# you enjoy having your changes erased.
+""".strip()
+
+print(WARNING)
+
+print(PREAMBLE)
+
+print("\n# ===== AFL fuzzers")
+
+def get_id_name(s):
+ return s.replace("-", "_")
+
+for fuzzer in FUZZERS:
+ idname = get_id_name(fuzzer)
+ print("""\
+src_test_fuzz_fuzz_{name}_SOURCES = \\
+ src/test/fuzz/fuzzing_common.c \\
+ src/test/fuzz/fuzz_{name}.c
+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)
+""".format(name=idname))
+
+print("FUZZERS = \\")
+print(" \\\n".join("\tsrc/test/fuzz/fuzz-{name}".format(name=fuzzer)
+ for fuzzer in FUZZERS))
+
+print("\n# ===== libfuzzer")
+print("\nif LIBFUZZER_ENABLED")
+
+for fuzzer in FUZZERS:
+ idname = get_id_name(fuzzer)
+ print("""\
+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)
+""".format(name=idname))
+
+print("LIBFUZZER_FUZZERS = \\")
+print(" \\\n".join("\tsrc/test/fuzz/lf-fuzz-{name}".format(name=fuzzer)
+ for fuzzer in FUZZERS))
+
+print("""
+else
+LIBFUZZER_FUZZERS =
+endif""")
+
+print("\n# ===== oss-fuzz\n")
+print("if OSS_FUZZ_ENABLED")
+
+for fuzzer in FUZZERS:
+ idname = get_id_name(fuzzer)
+ print("""\
+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)
+""".format(name=idname))
+
+print("OSS_FUZZ_FUZZERS = \\")
+print(" \\\n".join("\tsrc/test/fuzz/liboss-fuzz-{name}.a".format(name=fuzzer)
+ for fuzzer in FUZZERS))
+
+print("""
+else
+OSS_FUZZ_FUZZERS =
+endif""")
+
+print("")
+
+print(POSTAMBLE)
diff --git a/scripts/codegen/gen_server_ciphers.py b/scripts/codegen/gen_server_ciphers.py
index 7470f8a025..7ea39c540d 100755
--- a/scripts/codegen/gen_server_ciphers.py
+++ b/scripts/codegen/gen_server_ciphers.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2015, The Tor Project, Inc
+# Copyright 2014-2017, The Tor Project, Inc
# See LICENSE for licensing information
# This script parses openssl headers to find ciphersuite names, determines
diff --git a/scripts/codegen/get_mozilla_ciphers.py b/scripts/codegen/get_mozilla_ciphers.py
index b07746c2e2..946957ac77 100755
--- a/scripts/codegen/get_mozilla_ciphers.py
+++ b/scripts/codegen/get_mozilla_ciphers.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
# coding=utf-8
-# Copyright 2011-2015, The Tor Project, Inc
+# Copyright 2011-2017, The Tor Project, Inc
# original version by Arturo Filastò
# See LICENSE for licensing information
diff --git a/scripts/codegen/makedesc.py b/scripts/codegen/makedesc.py
index d4ba21efae..8d9d4edaaf 100644
--- a/scripts/codegen/makedesc.py
+++ b/scripts/codegen/makedesc.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2015, The Tor Project, Inc.
+# Copyright 2014-2017, The Tor Project, Inc.
# See LICENSE for license information
# This is a kludgey python script that uses ctypes and openssl to sign
diff --git a/scripts/maint/analyze_callgraph.py b/scripts/maint/analyze_callgraph.py
deleted file mode 100755
index 8ce5827f07..0000000000
--- a/scripts/maint/analyze_callgraph.py
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/usr/bin/python
-
-import re
-import sys
-import copy
-import cPickle
-import os
-
-class Parser:
- def __init__(self):
- self.calls = {}
- self.definedIn = {}
-
- def enter_func(self, name):
- if self.infunc and not self.extern and self.calledfns:
- if self.infunc in self.definedIn:
- #print "{}: {} or {}?".format(
- # self.infunc, self.definedIn[self.infunc], self.module)
- self.definedIn[self.infunc] = 'nil'
- else:
- self.definedIn[self.infunc] = self.module
- self.calls.setdefault(self.infunc, set()).update( self.calledfns )
-
- self.calledfns = set()
- self.infunc = name
- self.extern = False
-
- def parse_callgraph_file(self, inp, module):
- self.infunc = None
- self.extern = False
- self.calledfns = set()
- self.module = module
-
- for line in inp:
- m = re.match(r"Call graph node for function: '([^']+)'", line)
- if m:
- self.enter_func(m.group(1))
- continue
- m = re.match(r" CS<[^>]+> calls external node", line)
- if m:
- self.extern = True
- m = re.match(r" CS<[^>]+> calls function '([^']+)'", line)
- if m:
- self.calledfns.add(m.group(1))
- self.enter_func(None)
-
- def extract_callgraph(self):
- c = self.calls
- self.calls = {}
- return c
-
-
-def transitive_closure(g):
- passno = 0
- changed = True
- g = copy.deepcopy(g)
- import random
- while changed:
- passno += 1
- changed = False
- keys = g.keys()
- idx = 0
- for k in keys:
- idx += 1
- print "Pass %d/?: %d/%d\r" %(passno, idx, len(keys)),
- sys.stdout.flush()
- newset = g[k].copy()
- for fn in g[k]:
- newset.update(g.get(fn, set()))
- if len(newset) != len(g[k]):
- g[k].update( newset )
- changed = True
-
- print
-
- return g
-
-def strongly_connected_components(g):
- # From https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm, done stupidly.
- index_of = {}
- index = [ 0 ]
- lowlink = {}
- S = []
- onStack = set()
-
- all_sccs = []
-
- def strongconnect(fn):
- index_of[fn] = index[0]
- lowlink[fn] = index[0]
- index[0] += 1
- S.append(fn)
- onStack.add(fn)
-
- for w in g.get(fn, []):
- if w not in index_of:
- strongconnect(w)
- lowlink[fn] = min(lowlink[fn], lowlink[w])
- elif w in onStack:
- lowlink[fn] = min(lowlink[fn], index_of[w])
-
- if lowlink[fn] == index_of[fn]:
- this_scc = []
- all_sccs.append(this_scc)
- while True:
- w = S.pop()
- onStack.remove(w)
- this_scc.append(w)
- if w == fn:
- break
-
- for v in g.keys():
- if v not in index_of:
- strongconnect(v)
-
- return all_sccs
-
-def biggest_component(sccs):
- return max(len(c) for c in sccs)
-
-def connection_bottlenecks(callgraph):
-
- callers = {}
- for fn in callgraph:
- for fn2 in callgraph[fn]:
- callers.setdefault(fn2, set()).add(fn)
-
- components = strongly_connected_components(callgraph)
- components.sort(key=len)
- big_component_fns = components[-1]
- size = len(big_component_fns)
-
- function_bottlenecks = fn_results = []
-
- total = len(big_component_fns)
- idx = 0
- for fn in big_component_fns:
- idx += 1
- print "Pass 1/3: %d/%d\r"%(idx, total),
- sys.stdout.flush()
- cg2 = copy.deepcopy(callgraph)
- del cg2[fn]
-
- fn_results.append( (size - biggest_component(strongly_connected_components(cg2)), fn) )
-
- print
- bcf_set = set(big_component_fns)
-
- call_bottlenecks = fn_results = []
- result_set = set()
- total = len(big_component_fns)
- idx = 0
- for fn in big_component_fns:
- fn_callers = callers[fn].intersection(bcf_set)
- idx += 1
- if len(fn_callers) != 1:
- continue
-
- print "Pass 2/3: %d/%d\r"%(idx, total),
- sys.stdout.flush()
-
- caller = fn_callers.pop()
- assert len(fn_callers) == 0
- cg2 = copy.deepcopy(callgraph)
- cg2[caller].remove(fn)
-
- fn_results.append( (size - biggest_component(strongly_connected_components(cg2)), fn, "called by", caller) )
- result_set.add( (caller, fn) )
-
- print
-
- total = len(big_component_fns)
- idx = 0
- for fn in big_component_fns:
- fn_calls = callgraph[fn].intersection(bcf_set)
- idx += 1
- if len(fn_calls) != 1:
- continue
-
- print "Pass 3/3: %d/%d\r"%(idx, total),
- sys.stdout.flush()
-
- callee = fn_calls.pop()
- if (fn, callee) in result_set:
- continue
-
- assert len(fn_calls) == 0
- cg2 = copy.deepcopy(callgraph)
- cg2[fn].remove(callee)
-
- fn_results.append( (size - biggest_component(strongly_connected_components(cg2)), callee, "called by", fn) )
-
- print
-
-
- return (function_bottlenecks, call_bottlenecks)
-
-if __name__ == '__main__':
- p = Parser()
- for fname in sys.argv[1:]:
- modname = re.sub(r'.*/', '', fname).replace('.callgraph', '.c')
- with open(fname, 'r') as f:
- p.parse_callgraph_file(f, modname)
-
- sys.stdout.flush()
-
- print "Building callgraph"
- callgraph = p.extract_callgraph()
- inModule = p.definedIn
-
- print "Deriving module callgraph"
- modCallgraph = {}
- for fn in callgraph:
- fnMod = inModule[fn]
- for called in callgraph[fn]:
- try:
- calledMod = inModule[called]
- except KeyError:
- continue
- modCallgraph.setdefault(fnMod, set()).add(calledMod)
- del modCallgraph['nil']
-
- print "Finding strongly connected components"
- sccs = strongly_connected_components(callgraph)
-
- print "Finding the transitive closure of the callgraph.."
- closure = transitive_closure(callgraph)
-
- print "Finding bottlenecks..."
- bottlenecks = connection_bottlenecks(callgraph)
-
- print "Finding module SCCs"
- modSCCS = strongly_connected_components(modCallgraph)
-
- print "Finding module TC"
- modTC = transitive_closure(modCallgraph)
-
- print "Finding module bottlenecks"
- modB = connection_bottlenecks(modCallgraph)
-
- data = {
- 'callgraph' : callgraph,
- 'sccs' : sccs,
- 'closure' : closure,
- 'bottlenecks' : bottlenecks,
- 'modules' : p.definedIn,
- 'modItems' : {
- 'callgraph' : modCallgraph,
- 'sccs' : modSCCS,
- 'closure' : modTC,
- 'bottlenecks' : modB,
- }
- }
-
- with open('callgraph.pkl', 'w') as f:
- cPickle.dump(data, f)
-
-
-
diff --git a/scripts/maint/display_callgraph.py b/scripts/maint/display_callgraph.py
deleted file mode 100755
index c9001c6d96..0000000000
--- a/scripts/maint/display_callgraph.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-
-import cPickle
-
-data = cPickle.load(open("callgraph.pkl"))
-
-# data = data['modItems']
-
-callgraph = data['callgraph']
-closure = data['closure']
-sccs = data['sccs']
-fn_bottle, call_bottle = data['bottlenecks']
-
-for n_reachable, fn in sorted(list((len(r), fn) for fn, r in closure.iteritems())):
- print "%s can reach %s other functions." %(fn, n_reachable)
-
-
-c = [ (len(component), component) for component in sccs ]
-c.sort()
-
-print "\n================================"
-
-for n, component in c:
- if n < 2:
- continue
- print "Strongly connected component of size %d:"%n
- print component
-
-
-print "\n================================"
-
-print "====== Number of functions pulled into blob, by function in blob."
-fn_bottle.sort()
-for n, fn in fn_bottle[-30:]:
- print "%3d: %s"%(n, fn)
-
-print "====== Number of functions pulled into blob, by call in blob."
-call_bottle.sort()
-for n, fn1, _, fn2 in call_bottle[-30:]:
- print "%3d: %s -> %s "%(n, fn2, fn1)
-
diff --git a/scripts/maint/fallback.blacklist b/scripts/maint/fallback.blacklist
index 974b304729..1417a13a98 100644
--- a/scripts/maint/fallback.blacklist
+++ b/scripts/maint/fallback.blacklist
@@ -252,3 +252,23 @@ id=9C8A123081EFBE022EF795630F447839DDFDDDEC
# 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
+
+# Relay changed IPv4 address, operator uncontactable
+138.201.130.32:9030 orport=9001 id=52AEA31188331F421B2EDB494DB65CD181E5B257
+
+# 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
diff --git a/scripts/maint/fallback.whitelist b/scripts/maint/fallback.whitelist
index c993be97d3..0620d6b5fe 100644
--- a/scripts/maint/fallback.whitelist
+++ b/scripts/maint/fallback.whitelist
@@ -37,8 +37,6 @@
# https://lists.torproject.org/pipermail/tor-relays/2015-December/008370.html
# https://lists.torproject.org/pipermail/tor-relays/2016-January/008517.html
# https://lists.torproject.org/pipermail/tor-relays/2016-January/008555.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
212.47.237.95:9030 orport=9001 id=3F5D8A879C58961BB45A3D26AC41B543B40236D6
212.47.237.95:9130 orport=9101 id=6FB38EB22E57EF7ED5EF00238F6A48E553735D88
@@ -49,15 +47,13 @@
# https://lists.torproject.org/pipermail/tor-relays/2015-December/008373.html
167.114.35.28:9030 orport=9001 id=E65D300F11E1DB12C534B0146BDAB6972F1A8A48
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008374.html
-104.243.35.196:9030 orport=9001 id=FA3415659444AE006E7E9E5375E82F29700CFDFD
-
# https://lists.torproject.org/pipermail/tor-relays/2015-December/008378.html
144.76.14.145:110 orport=143 id=14419131033443AE6E21DA82B0D307F7CAE42BDB ipv6=[2a01:4f8:190:9490::dead]:443
# https://lists.torproject.org/pipermail/tor-relays/2015-December/008379.html
# Email sent directly to teor, verified using relay contact info
91.121.84.137:4951 orport=4051 id=6DE61A6F72C1E5418A66BFED80DFB63E4C77668F ipv6=[2001:41d0:1:8989::1]:4051
+91.121.84.137:4952 orport=4052 id=9FBEB75E8BC142565F12CBBE078D63310236A334 ipv6=[2001:41d0:1:8989::1]:4052
# https://lists.torproject.org/pipermail/tor-relays/2015-December/008381.html
# Sent additional email to teor with more relays
@@ -95,9 +91,6 @@
# https://lists.torproject.org/pipermail/tor-relays/2016-January/008542.html
178.62.199.226:80 orport=443 id=CBEFF7BA4A4062045133C053F2D70524D8BBE5BE ipv6=[2a03:b0c0:2:d0::b7:5001]:443
-# 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
-
# Email sent directly to teor, verified using relay contact info
94.23.204.175:9030 orport=9001 id=5665A3904C89E22E971305EE8C1997BCA4123C69
@@ -330,9 +323,6 @@
37.187.102.186:9030 orport=9001 id=489D94333DF66D57FFE34D9D59CC2D97E2CB0053 ipv6=[2001:41d0:a:26ba::1]:9001
# Email sent directly to teor, verified using relay contact info
-5.35.251.247:9030 orport=9001 id=9B1F5187DFBA89DC24B37EA7BF896C12B43A27AE
-
-# Email sent directly to teor, verified using relay contact info
198.96.155.3:8080 orport=5001 id=BCEDF6C193AA687AE471B8A22EBF6BC57C2D285E
# Email sent directly to teor, verified using relay contact info
@@ -427,12 +417,10 @@
46.4.24.161:9030 orport=9001 id=DB4C76A3AD7E234DA0F00D6F1405D8AFDF4D8DED
46.4.24.161:9031 orport=9002 id=7460F3D12EBE861E4EE073F6233047AACFE46AB4
46.38.51.132:9030 orport=9001 id=810DEFA7E90B6C6C383C063028EC397A71D7214A
-163.172.194.53:9030 orport=9001 id=8C00FA7369A7A308F6A137600F0FA07990D9D451
+163.172.194.53:9030 orport=9001 id=8C00FA7369A7A308F6A137600F0FA07990D9D451 ipv6=[2001:bc8:225f:142:6c69:7461:7669:73]:9001
# Email sent directly to teor, verified using relay contact info
176.10.107.180:9030 orport=9001 id=3D7E274A87D9A89AF064C13D1EE4CA1F184F2600
-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
46.28.207.19:80 orport=443 id=5B92FA5C8A49D46D235735504C72DBB3472BA321
@@ -471,7 +459,7 @@
185.35.202.221:9030 orport=9001 id=C13B91384CDD52A871E3ECECE4EF74A7AC7DCB08 ipv6=[2a02:ed06::221]:9001
# Email sent directly to teor, verified using relay contact info
-5.9.151.241:9030 orport=4223 id=9BF04559224F0F1C3C953D641F1744AF0192543A
+5.9.151.241:9030 orport=4223 id=9BF04559224F0F1C3C953D641F1744AF0192543A ipv6=[2a01:4f8:190:34f0::2]:4223
# Email sent directly to teor, verified using relay contact info
89.40.71.149:8081 orport=8080 id=EC639EDAA5121B47DBDF3D6B01A22E48A8CB6CC7
@@ -574,6 +562,7 @@
# Email sent directly to teor, verified using relay contact info
185.100.86.100:80 orport=443 id=0E8C0C8315B66DB5F703804B3889A1DD66C67CE0
+185.100.84.82:80 orport=443 id=7D05A38E39FC5D29AFE6BE487B9B4DC9E635D09E
# Email sent directly to teor, verified using relay contact info
164.132.77.175:9030 orport=9001 id=3B33F6FCA645AD4E91428A3AF7DC736AD9FB727B
@@ -643,9 +632,6 @@
46.4.111.124:9030 orport=9001 id=D9065F9E57899B3D272AA212317AF61A9B14D204
# Email sent directly to teor, verified using relay contact info
-138.201.130.32:9030 orport=9001 id=52AEA31188331F421B2EDB494DB65CD181E5B257
-
-# Email sent directly to teor, verified using relay contact info
185.100.85.61:80 orport=443 id=025B66CEBC070FCB0519D206CF0CF4965C20C96E
# Email sent directly to teor, verified using relay contact info
@@ -828,3 +814,16 @@
# Email sent directly to teor, verified using relay contact info
95.85.8.226:80 orport=443 id=1211AC1BBB8A1AF7CBA86BCE8689AA3146B86423
+
+# Email sent directly to teor, verified using relay contact info
+85.214.151.72:9030 orport=9001 id=722D365140C8C52DBB3C9FF6986E3CEFFE2BA812
+
+# Email sent directly to teor, verified using relay contact info
+72.52.75.27:9030 orport=9001 id=1220F0F20E80D348244C5F3B6D126DAA0A446DFD
+
+# Email sent directly to teor, verified using relay contact info
+5.9.146.203:80 orport=443 id=1F45542A24A61BF9408F1C05E0DCE4E29F2CBA11
+5.9.159.14:9030 orport=9001 id=0F100F60C7A63BED90216052324D29B08CFCF797
+
+# Email sent directly to teor, verified using relay contact info
+5.9.147.226:9030 orport=9001 id=B0553175AADB0501E5A61FC61CEA3970BE130FF2
diff --git a/scripts/maint/format_changelog.py b/scripts/maint/format_changelog.py
index e909fc550a..c5a0cfc81b 100755
--- a/scripts/maint/format_changelog.py
+++ b/scripts/maint/format_changelog.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright (c) 2014-2015, The Tor Project, Inc.
+# Copyright (c) 2014-2017, The Tor Project, Inc.
# See LICENSE for licensing information
#
# This script reformats a section of the changelog to wrap everything to
@@ -205,6 +205,8 @@ def head_score(s):
score = -300
elif lw.startswith("deprecated version"):
score = -200
+ elif lw.startswith("directory auth"):
+ score = -150
elif (('new' in lw and 'requirement' in lw) or
('new' in lw and 'dependenc' in lw) or
('build' in lw and 'requirement' in lw) or
diff --git a/scripts/maint/generate_callgraph.sh b/scripts/maint/generate_callgraph.sh
deleted file mode 100755
index c6b33c0aea..0000000000
--- a/scripts/maint/generate_callgraph.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-C_FILES=`echo src/common/*.c src/or/*.c src/tools/*.c`
-CFLAGS="-Isrc/ext/trunnel -Isrc/trunnel -I. -Isrc/ext -Isrc/common -DLOCALSTATEDIR=\"\" -DSHARE_DATADIR=\"\" -Dinline="
-
-mkdir -p callgraph/src/common
-mkdir -p callgraph/src/or
-mkdir -p callgraph/src/tools
-
-for fn in $C_FILES; do
- echo $fn
- clang $CFLAGS -S -emit-llvm -fno-inline -o - $fn | \
- opt -analyze -print-callgraph >/dev/null 2> "callgraph/${fn}allgraph"
-done
diff --git a/scripts/maint/redox.py b/scripts/maint/redox.py
index 43f5b6eb16..12aed6463a 100755
--- a/scripts/maint/redox.py
+++ b/scripts/maint/redox.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
#
-# Copyright (c) 2008-2015, The Tor Project, Inc.
+# Copyright (c) 2008-2017, The Tor Project, Inc.
# See LICENSE for licensing information.
#
# Hi!
diff --git a/scripts/maint/sortChanges.py b/scripts/maint/sortChanges.py
index d6ec0e269d..22e40fd369 100755
--- a/scripts/maint/sortChanges.py
+++ b/scripts/maint/sortChanges.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright (c) 2014-2015, The Tor Project, Inc.
+# Copyright (c) 2014-2017, The Tor Project, Inc.
# See LICENSE for licensing information
"""This script sorts a bunch of changes files listed on its command
diff --git a/scripts/maint/updateCopyright.pl b/scripts/maint/updateCopyright.pl
index 8bd6a18210..beb0b8f26e 100755
--- a/scripts/maint/updateCopyright.pl
+++ b/scripts/maint/updateCopyright.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl -i -w -p
-$NEWYEAR=2016;
+$NEWYEAR=2017;
-s/Copyright(.*) (201[^6]), The Tor Project/Copyright$1 $2-${NEWYEAR}, The Tor Project/;
+s/Copyright(.*) (201[^7]), The Tor Project/Copyright$1 $2-${NEWYEAR}, The Tor Project/;
s/Copyright(.*)-(20..), The Tor Project/Copyright$1-${NEWYEAR}, The Tor Project/;
diff --git a/scripts/maint/updateFallbackDirs.py b/scripts/maint/updateFallbackDirs.py
index 117ac5cccb..82a60420b4 100755
--- a/scripts/maint/updateFallbackDirs.py
+++ b/scripts/maint/updateFallbackDirs.py
@@ -1,8 +1,13 @@
#!/usr/bin/python
# Usage:
+#
+# Regenerate the list:
# scripts/maint/updateFallbackDirs.py > src/or/fallback_dirs.inc
-# scripts/maint/updateFallbackDirs.py check_existing > src/or/fallback_dirs.inc
+#
+# Check the existing list:
+# scripts/maint/updateFallbackDirs.py check_existing > fallback_dirs.inc.ok
+# mv fallback_dirs.inc.ok src/or/fallback_dirs.inc
#
# This script should be run from a stable, reliable network connection,
# with no other network activity (and not over tor).
@@ -154,20 +159,24 @@ MAX_LIST_FILE_SIZE = 1024 * 1024
## Eligibility Settings
# Require fallbacks to have the same address and port for a set amount of time
+# We used to have this at 1 week, but that caused many fallback failures, which
+# meant that we had to rebuild the list more often.
#
# There was a bug in Tor 0.2.8.1-alpha and earlier where a relay temporarily
# submits a 0 DirPort when restarted.
# This causes OnionOO to (correctly) reset its stability timer.
# Affected relays should upgrade to Tor 0.2.8.7 or later, which has a fix
# for this issue.
-ADDRESS_AND_PORT_STABLE_DAYS = 7
+ADDRESS_AND_PORT_STABLE_DAYS = 30
# We ignore relays that have been down for more than this period
MAX_DOWNTIME_DAYS = 0 if MUST_BE_RUNNING_NOW else 7
# What time-weighted-fraction of these flags must FallbackDirs
# Equal or Exceed?
CUTOFF_RUNNING = .90
CUTOFF_V2DIR = .90
-CUTOFF_GUARD = .90
+# Tolerate lower guard flag averages, as guard flags are removed for some time
+# after a relay restarts
+CUTOFF_GUARD = .80
# What time-weighted-fraction of these flags must FallbackDirs
# Equal or Fall Under?
# .00 means no bad exits
@@ -189,7 +198,7 @@ FALLBACK_PROPORTION_OF_GUARDS = None if OUTPUT_CANDIDATES else _FB_POG
# Limit the number of fallbacks (eliminating lowest by advertised bandwidth)
MAX_FALLBACK_COUNT = None if OUTPUT_CANDIDATES else 200
# Emit a C #error if the number of fallbacks is less than expected
-MIN_FALLBACK_COUNT = 0 if OUTPUT_CANDIDATES else MAX_FALLBACK_COUNT*0.75
+MIN_FALLBACK_COUNT = 0 if OUTPUT_CANDIDATES else MAX_FALLBACK_COUNT*0.5
# The maximum number of fallbacks on the same address, contact, or family
# With 200 fallbacks, this means each operator can see 1% of client bootstraps
diff --git a/scripts/test/cov-exclude b/scripts/test/cov-exclude
index 5117f11ec4..5cb9b1282d 100755
--- a/scripts/test/cov-exclude
+++ b/scripts/test/cov-exclude
@@ -26,3 +26,9 @@ if ($excluding or $exclude_this) {
s{^\s*\#\#+:}{ x:};
s{^ (\s*)(\d+):}{$1!!!$2:};
}
+
+if (eof and $excluding) {
+ warn "Runaway LCOV_EXCL_START in $ARGV";
+ $excluding = 0;
+}
+
diff --git a/src/common/Makefile.nmake b/src/common/Makefile.nmake
index b8c5dd4fea..a1c819fffa 100644
--- a/src/common/Makefile.nmake
+++ b/src/common/Makefile.nmake
@@ -7,8 +7,8 @@ LIBOR_OBJECTS = address.obj backtrace.obj compat.obj container.obj di_ops.obj \
log.obj memarea.obj mempool.obj procmon.obj sandbox.obj util.obj \
util_codedigest.obj
-LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj crypto_format.obj torgzip.obj tortls.obj \
- crypto_curve25519.obj curve25519-donna.obj
+LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj crypto_format.obj compress.obj compress_zlib.obj \
+ tortls.obj crypto_curve25519.obj curve25519-donna.obj
LIBOR_EVENT_OBJECTS = compat_libevent.obj
diff --git a/src/common/address.c b/src/common/address.c
index 2693239146..555f63da06 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -564,8 +564,8 @@ tor_addr_parse_PTR_name(tor_addr_t *result, const char *address,
/** Convert <b>addr</b> to an in-addr.arpa name or a .ip6.arpa name,
* and store the result in the <b>outlen</b>-byte buffer at
- * <b>out</b>. Return the number of chars written to <b>out</b>, not
- * including the trailing \0, on success. Returns -1 on failure. */
+ * <b>out</b>. Returns a non-negative integer on success.
+ * Returns -1 on failure. */
int
tor_addr_to_PTR_name(char *out, size_t outlen,
const tor_addr_t *addr)
@@ -1183,6 +1183,9 @@ tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
}
}
+/** Input for siphash, to produce some output for an unspec value. */
+static const uint32_t unspec_hash_input[] = { 0x4e4df09f, 0x92985342 };
+
/** Return a hash code based on the address addr. DOCDOC extra */
uint64_t
tor_addr_hash(const tor_addr_t *addr)
@@ -1191,14 +1194,36 @@ tor_addr_hash(const tor_addr_t *addr)
case AF_INET:
return siphash24g(&addr->addr.in_addr.s_addr, 4);
case AF_UNSPEC:
- return 0x4e4d5342;
+ return siphash24g(unspec_hash_input, sizeof(unspec_hash_input));
case AF_INET6:
return siphash24g(&addr->addr.in6_addr.s6_addr, 16);
default:
/* LCOV_EXCL_START */
tor_fragile_assert();
return 0;
- /* LCOV_EXCL_END */
+ /* LCOV_EXCL_STOP */
+ }
+}
+
+/** As tor_addr_hash, but use a particular siphash key. */
+uint64_t
+tor_addr_keyed_hash(const struct sipkey *key, const tor_addr_t *addr)
+{
+ /* This is duplicate code with tor_addr_hash, since this function needs to
+ * be backportable all the way to 0.2.9. */
+
+ switch (tor_addr_family(addr)) {
+ case AF_INET:
+ return siphash24(&addr->addr.in_addr.s_addr, 4, key);
+ case AF_UNSPEC:
+ return siphash24(unspec_hash_input, sizeof(unspec_hash_input), key);
+ case AF_INET6:
+ return siphash24(&addr->addr.in6_addr.s6_addr, 16, key);
+ default:
+ /* LCOV_EXCL_START */
+ tor_fragile_assert();
+ return 0;
+ /* LCOV_EXCL_STOP */
}
}
@@ -1781,9 +1806,10 @@ free_interface_address6_list(smartlist_t *addrs)
* Returns NULL on failure.
* Use free_interface_address6_list to free the returned list.
*/
-MOCK_IMPL(smartlist_t *,get_interface_address6_list,(int severity,
- sa_family_t family,
- int include_internal))
+MOCK_IMPL(smartlist_t *,
+get_interface_address6_list,(int severity,
+ sa_family_t family,
+ int include_internal))
{
smartlist_t *addrs;
tor_addr_t addr;
@@ -2051,7 +2077,8 @@ parse_port_range(const char *port, uint16_t *port_min_out,
/** 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>.
+ * <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)
diff --git a/src/common/address.h b/src/common/address.h
index 0dc6edae37..8091f8cd7b 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -229,6 +229,8 @@ int tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
#define tor_addr_eq(a,b) (0==tor_addr_compare((a),(b),CMP_EXACT))
uint64_t tor_addr_hash(const tor_addr_t *addr);
+struct sipkey;
+uint64_t tor_addr_keyed_hash(const struct sipkey *key, const tor_addr_t *addr);
int tor_addr_is_v4(const tor_addr_t *addr);
int tor_addr_is_internal_(const tor_addr_t *ip, int for_listening,
const char *filename, int lineno);
diff --git a/src/common/address_set.c b/src/common/address_set.c
new file mode 100644
index 0000000000..4924cb65c2
--- /dev/null
+++ b/src/common/address_set.c
@@ -0,0 +1,129 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file address_set.c
+ * \brief Implementation for a set of addresses.
+ *
+ * This module was first written on a semi-emergency basis to improve the
+ * robustness of the anti-DoS module. As such, it's written in a pretty
+ * conservative way, and should be susceptible to improvement later on.
+ **/
+
+#include "orconfig.h"
+#include "address_set.h"
+#include "address.h"
+#include "compat.h"
+#include "container.h"
+#include "crypto.h"
+#include "util.h"
+#include "siphash.h"
+
+/** How many 64-bit siphash values to extract per address */
+#define N_HASHES 2
+/** How many bloom-filter bits we set per address. This is twice the N_HASHES
+ * value, since we split the siphash output into two 32-bit values. */
+#define N_BITS_PER_ITEM (N_HASHES * 2)
+
+/* XXXX This code is largely duplicated with digestset_t. We should merge
+ * them together into a common bloom-filter implementation. I'm keeping
+ * them separate for now, though, since this module needs to be backported
+ * all the way to 0.2.9.
+ *
+ * The main difference between digestset_t and this code is that we use
+ * independent siphashes rather than messing around with bit-shifts. The
+ * approach here is probably more sound, and we should prefer it if&when we
+ * unify the implementations.
+ **/
+
+struct address_set_t {
+ /** siphash keys to make N_HASHES independent hashes for each address. */
+ struct sipkey key[N_HASHES];
+ int mask; /**< One less than the number of bits in <b>ba</b>; always one less
+ * than a power of two. */
+ bitarray_t *ba; /**< A bit array to implement the Bloom filter. */
+};
+
+/**
+ * Allocate and return an address_set, suitable for holding up to
+ * <b>max_address_guess</b> distinct values.
+ */
+address_set_t *
+address_set_new(int max_addresses_guess)
+{
+ /* See digestset_new() for rationale on this equation. */
+ int n_bits = 1u << (tor_log2(max_addresses_guess)+5);
+
+ address_set_t *set = tor_malloc_zero(sizeof(address_set_t));
+ set->mask = n_bits - 1;
+ set->ba = bitarray_init_zero(n_bits);
+ crypto_rand((char*) set->key, sizeof(set->key));
+
+ return set;
+}
+
+/**
+ * Release all storage associated with <b>set</b>
+ */
+void
+address_set_free(address_set_t *set)
+{
+ if (! set)
+ return;
+
+ bitarray_free(set->ba);
+ tor_free(set);
+}
+
+/** Yield the bit index corresponding to 'val' for set. */
+#define BIT(set, val) ((val) & (set)->mask)
+
+/**
+ * Add <b>addr</b> to <b>set</b>.
+ *
+ * All future queries for <b>addr</b> in set will return true. Removing
+ * items is not possible.
+ */
+void
+address_set_add(address_set_t *set, const struct tor_addr_t *addr)
+{
+ int i;
+ for (i = 0; i < N_HASHES; ++i) {
+ uint64_t h = tor_addr_keyed_hash(&set->key[i], addr);
+ uint32_t high_bits = (uint32_t)(h >> 32);
+ uint32_t low_bits = (uint32_t)(h);
+ bitarray_set(set->ba, BIT(set, high_bits));
+ bitarray_set(set->ba, BIT(set, low_bits));
+ }
+}
+
+/** As address_set_add(), but take an ipv4 address in host order. */
+void
+address_set_add_ipv4h(address_set_t *set, uint32_t addr)
+{
+ tor_addr_t a;
+ tor_addr_from_ipv4h(&a, addr);
+ address_set_add(set, &a);
+}
+
+/**
+ * Return true if <b>addr</b> if a member of <b>set</b>. (And probably,
+ * return false if <b>addr</b> is not a member of set.)
+ */
+int
+address_set_probably_contains(address_set_t *set,
+ const struct tor_addr_t *addr)
+{
+ int i, matches = 0;
+ for (i = 0; i < N_HASHES; ++i) {
+ uint64_t h = tor_addr_keyed_hash(&set->key[i], addr);
+ uint32_t high_bits = (uint32_t)(h >> 32);
+ uint32_t low_bits = (uint32_t)(h);
+ // Note that !! is necessary here, since bitarray_is_set does not
+ // necessarily return 1 on true.
+ matches += !! bitarray_is_set(set->ba, BIT(set, high_bits));
+ matches += !! bitarray_is_set(set->ba, BIT(set, low_bits));
+ }
+ return matches == N_BITS_PER_ITEM;
+}
+
diff --git a/src/common/address_set.h b/src/common/address_set.h
new file mode 100644
index 0000000000..aedf17fc66
--- /dev/null
+++ b/src/common/address_set.h
@@ -0,0 +1,35 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file addressset.h
+ * \brief Types to handle sets of addresses.
+ *
+ * This module was first written on a semi-emergency basis to improve the
+ * robustness of the anti-DoS module. As such, it's written in a pretty
+ * conservative way, and should be susceptible to improvement later on.
+ **/
+
+#ifndef TOR_ADDRESS_SET_H
+#define TOR_ADDRESS_SET_H
+
+#include "orconfig.h"
+#include "torint.h"
+
+/**
+ * An address_set_t represents a set of tor_addr_t values. The implementation
+ * is probabilistic: false negatives cannot occur but false positives are
+ * possible.
+ */
+typedef struct address_set_t address_set_t;
+struct tor_addr_t;
+
+address_set_t *address_set_new(int max_addresses_guess);
+void address_set_free(address_set_t *set);
+void address_set_add(address_set_t *set, const struct tor_addr_t *addr);
+void address_set_add_ipv4h(address_set_t *set, uint32_t addr);
+int address_set_probably_contains(address_set_t *set,
+ const struct tor_addr_t *addr);
+
+#endif
+
diff --git a/src/common/aes.c b/src/common/aes.c
index 35c2d1e3a5..73abef143e 100644
--- a/src/common/aes.c
+++ b/src/common/aes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/aes.h b/src/common/aes.h
index 1cda53f2fa..6fd9c3ea16 100644
--- a/src/common/aes.h
+++ b/src/common/aes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Implements a minimal interface to counter-mode AES. */
diff --git a/src/common/backtrace.c b/src/common/backtrace.c
index 61096952d8..0f0fa857bf 100644
--- a/src/common/backtrace.c
+++ b/src/common/backtrace.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/backtrace.h b/src/common/backtrace.h
index b53fd2c668..8cd1dcf06c 100644
--- a/src/common/backtrace.h
+++ b/src/common/backtrace.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_BACKTRACE_H
diff --git a/src/common/ciphers.inc b/src/common/ciphers.inc
index a336e2dfa0..0084b3e325 100644
--- a/src/common/ciphers.inc
+++ b/src/common/ciphers.inc
@@ -2,8 +2,27 @@
* advertise. Before including it, you should define the CIPHER and XCIPHER
* macros.
*
- * This file was automatically generated by get_mozilla_ciphers.py.
+ * This file was automatically generated by get_mozilla_ciphers.py;
+ * TLSv1.3 ciphers were added manually.
*/
+
+/* Here are the TLS1.3 ciphers. Note that we don't have XCIPHER instances
+ * here, since we don't want to ever fake them.
+ */
+#ifdef TLS1_3_TXT_AES_128_GCM_SHA256
+ CIPHER(0x1301, TLS1_3_TXT_AES_128_GCM_SHA256)
+#endif
+#ifdef TLS1_3_TXT_AES_256_GCM_SHA384
+ CIPHER(0x1302, TLS1_3_TXT_AES_256_GCM_SHA384)
+#endif
+#ifdef TLS1_3_TXT_CHACHA20_POLY1305_SHA256
+ CIPHER(0x1303, TLS1_3_TXT_CHACHA20_POLY1305_SHA256)
+#endif
+#ifdef TLS1_3_TXT_AES_128_CCM_SHA256
+ CIPHER(0x1304, TLS1_3_TXT_AES_128_CCM_SHA256)
+#endif
+
+/* Here's the machine-generated list. */
#ifdef TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
CIPHER(0xc02b, TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
#else
diff --git a/src/common/compat.c b/src/common/compat.c
index 7ec7030ecc..4a1f0013c6 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1665,7 +1665,7 @@ get_max_sockets(void)
* fail by returning -1 and <b>max_out</b> is untouched.
*
* If we are unable to set the limit value because of setrlimit() failing,
- * return -1 and <b>max_out</b> is set to the current maximum value returned
+ * return 0 and <b>max_out</b> is set to the current maximum value returned
* by getrlimit().
*
* Otherwise, return 0 and store the maximum we found inside <b>max_out</b>
@@ -1730,13 +1730,14 @@ set_max_file_descriptors(rlim_t limit, int *max_out)
rlim.rlim_cur = rlim.rlim_max;
if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) {
- int bad = 1;
+ int couldnt_set = 1;
+ const int setrlimit_errno = errno;
#ifdef OPEN_MAX
uint64_t try_limit = OPEN_MAX - ULIMIT_BUFFER;
if (errno == EINVAL && try_limit < (uint64_t) rlim.rlim_cur) {
/* On some platforms, OPEN_MAX is the real limit, and getrlimit() is
* full of nasty lies. I'm looking at you, OSX 10.5.... */
- rlim.rlim_cur = try_limit;
+ rlim.rlim_cur = MIN((rlim_t) try_limit, rlim.rlim_cur);
if (setrlimit(RLIMIT_NOFILE, &rlim) == 0) {
if (rlim.rlim_cur < (rlim_t)limit) {
log_warn(LD_CONFIG, "We are limited to %lu file descriptors by "
@@ -1751,14 +1752,13 @@ set_max_file_descriptors(rlim_t limit, int *max_out)
(unsigned long)try_limit, (unsigned long)OPEN_MAX,
(unsigned long)rlim.rlim_max);
}
- bad = 0;
+ couldnt_set = 0;
}
}
#endif /* OPEN_MAX */
- if (bad) {
+ if (couldnt_set) {
log_warn(LD_CONFIG,"Couldn't set maximum number of file descriptors: %s",
- strerror(errno));
- return -1;
+ strerror(setrlimit_errno));
}
}
/* leave some overhead for logs, etc, */
@@ -2687,7 +2687,8 @@ static int uname_result_is_set = 0;
/** Return a pointer to a description of our platform.
*/
-MOCK_IMPL(const char *, get_uname, (void))
+MOCK_IMPL(const char *,
+get_uname,(void))
{
#ifdef HAVE_UNAME
struct utsname u;
@@ -3260,7 +3261,7 @@ format_win32_error(DWORD err)
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, err,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
(LPVOID)&str,
0, NULL);
diff --git a/src/common/compat.h b/src/common/compat.h
index ee1c9454de..473ad2b957 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_H
@@ -414,10 +414,10 @@ struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
#endif
#ifndef timercmp
-/** Replacement for timersub on platforms that do not have it: returns true
+/** Replacement for timercmp on platforms that do not have it: returns true
* iff the relational operator "op" makes the expression tv1 op tv2 true.
*
- * Note that while this definition should work for all boolean opeators, some
+ * Note that while this definition should work for all boolean operators, some
* platforms' native timercmp definitions do not support >=, <=, or ==. So
* don't use those.
*/
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index 4a3b1af922..31eb4ac496 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2016, The Tor Project, Inc. */
+/* Copyright (c) 2009-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -280,6 +280,15 @@ tor_gettimeofday_cache_set(const struct timeval *tv)
tor_assert(tv);
memcpy(&cached_time_hires, tv, sizeof(*tv));
}
+
+/** For testing: called post-fork to make libevent reinitialize
+ * kernel structures. */
+void
+tor_libevent_postfork(void)
+{
+ int r = event_reinit(tor_libevent_get_base());
+ tor_assert(r == 0);
+}
#endif
#endif
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index c2e34764e4..904938415c 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2016, The Tor Project, Inc. */
+/* Copyright (c) 2009-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_LIBEVENT_H
@@ -54,6 +54,7 @@ void tor_gettimeofday_cached(struct timeval *tv);
void tor_gettimeofday_cache_clear(void);
#ifdef TOR_UNIT_TESTS
void tor_gettimeofday_cache_set(const struct timeval *tv);
+void tor_libevent_postfork(void);
#endif
#ifdef COMPAT_LIBEVENT_PRIVATE
diff --git a/src/common/compat_openssl.h b/src/common/compat_openssl.h
index 1bfe188075..2b94fe5b4e 100644
--- a/src/common/compat_openssl.h
+++ b/src/common/compat_openssl.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_OPENSSL_H
diff --git a/src/common/compat_pthreads.c b/src/common/compat_pthreads.c
index c1ae66c1d2..8e4b833573 100644
--- a/src/common/compat_pthreads.c
+++ b/src/common/compat_pthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/compat_rust.c b/src/common/compat_rust.c
new file mode 100644
index 0000000000..366fd4037b
--- /dev/null
+++ b/src/common/compat_rust.c
@@ -0,0 +1,39 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file rust_compat.c
+ * \brief Rust FFI compatibility functions and helpers. This file is only built
+ * if Rust is not used.
+ **/
+
+#include "compat_rust.h"
+#include "util.h"
+
+/**
+ * Free storage pointed to by <b>str</b>, and itself.
+ */
+void
+rust_str_free(rust_str_t str)
+{
+ char *s = (char *)str;
+ tor_free(s);
+}
+
+/**
+ * Return zero-terminated contained string.
+ */
+const char *
+rust_str_get(const rust_str_t str)
+{
+ return (const char *)str;
+}
+
+/* If we were using Rust, we'd say so on startup. */
+rust_str_t
+rust_welcome_string(void)
+{
+ char *s = tor_malloc_zero(1);
+ return (rust_str_t)s;
+}
+
diff --git a/src/common/compat_rust.h b/src/common/compat_rust.h
new file mode 100644
index 0000000000..752a29b56c
--- /dev/null
+++ b/src/common/compat_rust.h
@@ -0,0 +1,28 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file rust_compat.h
+ * \brief Headers for rust_compat.c
+ **/
+
+#ifndef TOR_RUST_COMPAT_H
+#define TOR_RUST_COMPAT_H
+
+#include "torint.h"
+
+/**
+ * Strings allocated in Rust must be freed from Rust code again. Let's make
+ * it less likely to accidentally mess up and call tor_free() on it, because
+ * currently it'll just work but might break at any time.
+ */
+typedef uintptr_t rust_str_t;
+
+void rust_str_free(rust_str_t);
+
+const char *rust_str_get(const rust_str_t);
+
+rust_str_t rust_welcome_string(void);
+
+#endif
+
diff --git a/src/common/compat_threads.c b/src/common/compat_threads.c
index f4809060d6..c593e9af8d 100644
--- a/src/common/compat_threads.c
+++ b/src/common/compat_threads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -94,51 +94,73 @@ in_main_thread(void)
}
#if defined(HAVE_EVENTFD) || defined(HAVE_PIPE)
-/* As write(), but retry on EINTR */
+/* As write(), but retry on EINTR, and return the negative error code on
+ * error. */
static int
write_ni(int fd, const void *buf, size_t n)
{
int r;
again:
r = (int) write(fd, buf, n);
- if (r < 0 && errno == EINTR)
- goto again;
+ if (r < 0) {
+ if (errno == EINTR)
+ goto again;
+ else
+ return -errno;
+ }
return r;
}
-/* As read(), but retry on EINTR */
+/* As read(), but retry on EINTR, and return the negative error code on error.
+ */
static int
read_ni(int fd, void *buf, size_t n)
{
int r;
again:
r = (int) read(fd, buf, n);
- if (r < 0 && errno == EINTR)
- goto again;
+ if (r < 0) {
+ if (errno == EINTR)
+ goto again;
+ else
+ return -errno;
+ }
return r;
}
#endif
-/** As send(), but retry on EINTR. */
+/** As send(), but retry on EINTR, and return the negative error code on
+ * error. */
static int
send_ni(int fd, const void *buf, size_t n, int flags)
{
int r;
again:
r = (int) send(fd, buf, n, flags);
- if (r < 0 && ERRNO_IS_EINTR(tor_socket_errno(fd)))
- goto again;
+ if (r < 0) {
+ int error = tor_socket_errno(fd);
+ if (ERRNO_IS_EINTR(error))
+ goto again;
+ else
+ return -error;
+ }
return r;
}
-/** As recv(), but retry on EINTR. */
+/** As recv(), but retry on EINTR, and return the negative error code on
+ * error. */
static int
recv_ni(int fd, void *buf, size_t n, int flags)
{
int r;
again:
r = (int) recv(fd, buf, n, flags);
- if (r < 0 && ERRNO_IS_EINTR(tor_socket_errno(fd)))
- goto again;
+ if (r < 0) {
+ int error = tor_socket_errno(fd);
+ if (ERRNO_IS_EINTR(error))
+ goto again;
+ else
+ return -error;
+ }
return r;
}
@@ -149,7 +171,7 @@ eventfd_alert(int fd)
{
uint64_t u = 1;
int r = write_ni(fd, (void*)&u, sizeof(u));
- if (r < 0 && errno != EAGAIN)
+ if (r < 0 && -r != EAGAIN)
return -1;
return 0;
}
@@ -160,8 +182,8 @@ eventfd_drain(int fd)
{
uint64_t u = 0;
int r = read_ni(fd, (void*)&u, sizeof(u));
- if (r < 0 && errno != EAGAIN)
- return -1;
+ if (r < 0 && -r != EAGAIN)
+ return r;
return 0;
}
#endif
@@ -172,8 +194,8 @@ static int
pipe_alert(int fd)
{
ssize_t r = write_ni(fd, "x", 1);
- if (r < 0 && errno != EAGAIN)
- return -1;
+ if (r < 0 && -r != EAGAIN)
+ return (int)r;
return 0;
}
@@ -188,7 +210,7 @@ pipe_drain(int fd)
r = read_ni(fd, buf, sizeof(buf));
} while (r > 0);
if (r < 0 && errno != EAGAIN)
- return -1;
+ return -errno;
/* A value of r = 0 means EOF on the fd so successfully drained. */
return 0;
}
@@ -200,13 +222,13 @@ static int
sock_alert(tor_socket_t fd)
{
ssize_t r = send_ni(fd, "x", 1, 0);
- if (r < 0 && !ERRNO_IS_EAGAIN(tor_socket_errno(fd)))
- return -1;
+ if (r < 0 && !ERRNO_IS_EAGAIN(-r))
+ return (int)r;
return 0;
}
/** Drain all the input from a socket <b>fd</b>, and ignore it. Return 0 on
- * success, -1 on error. */
+ * success, -errno on error. */
static int
sock_drain(tor_socket_t fd)
{
@@ -215,8 +237,8 @@ sock_drain(tor_socket_t fd)
do {
r = recv_ni(fd, buf, sizeof(buf), 0);
} while (r > 0);
- if (r < 0 && !ERRNO_IS_EAGAIN(tor_socket_errno(fd)))
- return -1;
+ if (r < 0 && !ERRNO_IS_EAGAIN(-r))
+ return (int)r;
/* A value of r = 0 means EOF on the fd so successfully drained. */
return 0;
}
@@ -330,3 +352,49 @@ alert_sockets_close(alert_sockets_t *socks)
socks->read_fd = socks->write_fd = -1;
}
+/*
+ * XXXX We might be smart to move to compiler intrinsics or real atomic
+ * XXXX operations at some point. But not yet.
+ *
+ */
+
+/** Initialize a new atomic counter with the value 0 */
+void
+atomic_counter_init(atomic_counter_t *counter)
+{
+ memset(counter, 0, sizeof(*counter));
+ tor_mutex_init_nonrecursive(&counter->mutex);
+}
+/** Clean up all resources held by an atomic counter. */
+void
+atomic_counter_destroy(atomic_counter_t *counter)
+{
+ tor_mutex_uninit(&counter->mutex);
+ memset(counter, 0, sizeof(*counter));
+}
+/** Add a value to an atomic counter. */
+void
+atomic_counter_add(atomic_counter_t *counter, size_t add)
+{
+ tor_mutex_acquire(&counter->mutex);
+ counter->val += add;
+ tor_mutex_release(&counter->mutex);
+}
+/** Subtract a value from an atomic counter. */
+void
+atomic_counter_sub(atomic_counter_t *counter, size_t sub)
+{
+ // this relies on unsigned overflow, but that's fine.
+ atomic_counter_add(counter, -sub);
+}
+/** Return the current value of an atomic counter */
+size_t
+atomic_counter_get(atomic_counter_t *counter)
+{
+ size_t val;
+ tor_mutex_acquire(&counter->mutex);
+ val = counter->val;
+ tor_mutex_release(&counter->mutex);
+ return val;
+}
+
diff --git a/src/common/compat_threads.h b/src/common/compat_threads.h
index 171a9f93ff..9fa3d0d0b7 100644
--- a/src/common/compat_threads.h
+++ b/src/common/compat_threads.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_THREADS_H
@@ -147,5 +147,19 @@ void *tor_threadlocal_get(tor_threadlocal_t *threadlocal);
*/
void tor_threadlocal_set(tor_threadlocal_t *threadlocal, void *value);
+/**
+ * Atomic counter type; holds a size_t value.
+ */
+typedef struct atomic_counter_t {
+ tor_mutex_t mutex;
+ size_t val;
+} atomic_counter_t;
+
+void atomic_counter_init(atomic_counter_t *counter);
+void atomic_counter_destroy(atomic_counter_t *counter);
+void atomic_counter_add(atomic_counter_t *counter, size_t add);
+void atomic_counter_sub(atomic_counter_t *counter, size_t sub);
+size_t atomic_counter_get(atomic_counter_t *counter);
+
#endif
diff --git a/src/common/compat_time.c b/src/common/compat_time.c
index d044bbe1d7..2ccaa36e49 100644
--- a/src/common/compat_time.c
+++ b/src/common/compat_time.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/compat_time.h b/src/common/compat_time.h
index 2262446e57..90194c5ebc 100644
--- a/src/common/compat_time.h
+++ b/src/common/compat_time.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/compat_winthreads.c b/src/common/compat_winthreads.c
index 735be4ad17..915368b94f 100644
--- a/src/common/compat_winthreads.c
+++ b/src/common/compat_winthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/compress.c b/src/common/compress.c
new file mode 100644
index 0000000000..beeff5fcb8
--- /dev/null
+++ b/src/common/compress.c
@@ -0,0 +1,658 @@
+/* Copyright (c) 2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress.c
+ * \brief Common compression API.
+ **/
+
+#include "orconfig.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include "torint.h"
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#include "util.h"
+#include "torlog.h"
+#include "compress.h"
+#include "compress_lzma.h"
+#include "compress_none.h"
+#include "compress_zlib.h"
+#include "compress_zstd.h"
+
+/** Total number of bytes allocated for compression state overhead. */
+static atomic_counter_t total_compress_allocation;
+
+/** @{ */
+/* These macros define the maximum allowable compression factor. Anything of
+ * size greater than CHECK_FOR_COMPRESSION_BOMB_AFTER is not allowed to
+ * have an uncompression factor (uncompressed size:compressed size ratio) of
+ * any greater than MAX_UNCOMPRESSION_FACTOR.
+ *
+ * Picking a value for MAX_UNCOMPRESSION_FACTOR is a trade-off: we want it to
+ * be small to limit the attack multiplier, but we also want it to be large
+ * enough so that no legitimate document --even ones we might invent in the
+ * future -- ever compresses by a factor of greater than
+ * MAX_UNCOMPRESSION_FACTOR. Within those parameters, there's a reasonably
+ * large range of possible values. IMO, anything over 8 is probably safe; IMO
+ * anything under 50 is probably sufficient.
+ */
+#define MAX_UNCOMPRESSION_FACTOR 25
+#define CHECK_FOR_COMPRESSION_BOMB_AFTER (1024*64)
+/** @} */
+
+/** Return true if uncompressing an input of size <b>in_size</b> to an input of
+ * size at least <b>size_out</b> looks like a compression bomb. */
+int
+tor_compress_is_compression_bomb(size_t size_in, size_t size_out)
+{
+ if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER)
+ return 0;
+
+ return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR);
+}
+
+/** Guess the size that <b>in_len</b> will be after compression or
+ * decompression. */
+static size_t
+guess_compress_size(int compress, compress_method_t method,
+ compression_level_t compression_level,
+ size_t in_len)
+{
+ // ignore these for now.
+ (void)compression_level;
+ if (method == NO_METHOD) {
+ /* Guess that we'll need an extra byte, to avoid a needless realloc
+ * for nul-termination */
+ return (in_len < SIZE_MAX) ? in_len + 1 : in_len;
+ }
+
+ /* Always guess a factor of 2. */
+ if (compress) {
+ in_len /= 2;
+ } else {
+ if (in_len < SIZE_T_CEILING/2)
+ in_len *= 2;
+ }
+ return MAX(in_len, 1024);
+}
+
+/** Internal function to implement tor_compress/tor_uncompress, depending on
+ * whether <b>compress</b> is set. All arguments are as for tor_compress or
+ * tor_uncompress. */
+static int
+tor_compress_impl(int compress,
+ char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method,
+ compression_level_t compression_level,
+ int complete_only,
+ int protocol_warn_level)
+{
+ tor_compress_state_t *stream;
+ int rv;
+
+ stream = tor_compress_new(compress, method, compression_level);
+
+ if (stream == NULL) {
+ log_warn(LD_GENERAL, "NULL stream while %scompressing",
+ compress?"":"de");
+ log_debug(LD_GENERAL, "method: %d level: %d at len: %lu",
+ method, compression_level, (unsigned long)in_len);
+ return -1;
+ }
+
+ size_t in_len_orig = in_len;
+ size_t out_remaining, out_alloc;
+ char *outptr;
+
+ out_remaining = out_alloc =
+ guess_compress_size(compress, method, compression_level, in_len);
+ *out = outptr = tor_malloc(out_remaining);
+
+ const int finish = complete_only || compress;
+
+ while (1) {
+ switch (tor_compress_process(stream,
+ &outptr, &out_remaining,
+ &in, &in_len, finish)) {
+ case TOR_COMPRESS_DONE:
+ if (in_len == 0 || compress) {
+ goto done;
+ } else {
+ // More data is present, and we're decompressing. So we may need to
+ // reinitialize the stream if we are handling multiple concatenated
+ // inputs.
+ tor_compress_free(stream);
+ stream = tor_compress_new(compress, method, compression_level);
+ if (stream == NULL) {
+ log_warn(LD_GENERAL, "NULL stream while %scompressing",
+ compress?"":"de");
+ goto err;
+ }
+ }
+ break;
+ case TOR_COMPRESS_OK:
+ if (compress || complete_only) {
+ log_fn(protocol_warn_level, LD_PROTOCOL,
+ "Unexpected %s while %scompressing",
+ complete_only?"end of input":"result",
+ compress?"":"de");
+ log_debug(LD_GENERAL, "method: %d level: %d at len: %lu",
+ method, compression_level, (unsigned long)in_len);
+ goto err;
+ } else {
+ if (in_len == 0) {
+ goto done;
+ }
+ }
+ break;
+ case TOR_COMPRESS_BUFFER_FULL: {
+ if (!compress && outptr < *out+out_alloc) {
+ // A buffer error in this case means that we have a problem
+ // with our input.
+ log_fn(protocol_warn_level, LD_PROTOCOL,
+ "Possible truncated or corrupt compressed data");
+ goto err;
+ }
+ if (out_alloc >= SIZE_T_CEILING / 2) {
+ log_warn(LD_GENERAL, "While %scompresing data: ran out of space.",
+ compress?"":"un");
+ goto err;
+ }
+ if (!compress &&
+ tor_compress_is_compression_bomb(in_len_orig, out_alloc)) {
+ // This should already have been caught down in the backend logic.
+ // LCOV_EXCL_START
+ tor_assert_nonfatal_unreached();
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ const size_t offset = outptr - *out;
+ out_alloc *= 2;
+ *out = tor_realloc(*out, out_alloc);
+ outptr = *out + offset;
+ out_remaining = out_alloc - offset;
+ break;
+ }
+ case TOR_COMPRESS_ERROR:
+ log_fn(protocol_warn_level, LD_GENERAL,
+ "Error while %scompresing data: bad input?",
+ compress?"":"un");
+ goto err; // bad data.
+ default:
+ // LCOV_EXCL_START
+ tor_assert_nonfatal_unreached();
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ }
+ done:
+ *out_len = outptr - *out;
+ if (compress && tor_compress_is_compression_bomb(*out_len, in_len_orig)) {
+ log_warn(LD_BUG, "We compressed something and got an insanely high "
+ "compression factor; other Tors would think this was a "
+ "compression bomb.");
+ goto err;
+ }
+ if (!compress) {
+ // NUL-terminate our output.
+ if (out_alloc == *out_len)
+ *out = tor_realloc(*out, out_alloc + 1);
+ (*out)[*out_len] = '\0';
+ }
+ rv = 0;
+ goto out;
+
+ err:
+ tor_free(*out);
+ *out_len = 0;
+ rv = -1;
+ goto out;
+
+ out:
+ tor_compress_free(stream);
+ return rv;
+}
+
+/** Given <b>in_len</b> bytes at <b>in</b>, compress them into a newly
+ * allocated buffer, using the method described in <b>method</b>. Store the
+ * compressed string in *<b>out</b>, and its length in *<b>out_len</b>.
+ * Return 0 on success, -1 on failure.
+ */
+int
+tor_compress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method)
+{
+ return tor_compress_impl(1, out, out_len, in, in_len, method,
+ BEST_COMPRESSION,
+ 1, LOG_WARN);
+}
+
+/** Given zero or more compressed strings of total length <b>in_len</b> bytes
+ * at <b>in</b>, uncompress them into a newly allocated buffer, using the
+ * method described in <b>method</b>. Store the uncompressed string in
+ * *<b>out</b>, and its length in *<b>out_len</b>. Return 0 on success, -1 on
+ * failure.
+ *
+ * If any bytes are written to <b>out</b>, an extra byte NUL is always
+ * written at the end, but not counted in <b>out_len</b>. This is a
+ * safety feature to ensure that the output can be treated as a
+ * NUL-terminated string -- though of course, callers should check
+ * out_len anyway.
+ *
+ * If <b>complete_only</b> is true, we consider a truncated input as a
+ * failure; otherwise we decompress as much as we can. Warn about truncated
+ * or corrupt inputs at <b>protocol_warn_level</b>.
+ */
+int
+tor_uncompress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method,
+ int complete_only,
+ int protocol_warn_level)
+{
+ return tor_compress_impl(0, out, out_len, in, in_len, method,
+ BEST_COMPRESSION,
+ complete_only, protocol_warn_level);
+}
+
+/** Try to tell whether the <b>in_len</b>-byte string in <b>in</b> is likely
+ * to be compressed or not. If it is, return the likeliest compression method.
+ * Otherwise, return UNKNOWN_METHOD.
+ */
+compress_method_t
+detect_compression_method(const char *in, size_t in_len)
+{
+ if (in_len > 2 && fast_memeq(in, "\x1f\x8b", 2)) {
+ return GZIP_METHOD;
+ } else if (in_len > 2 && (in[0] & 0x0f) == 8 &&
+ (ntohs(get_uint16(in)) % 31) == 0) {
+ return ZLIB_METHOD;
+ } else if (in_len > 2 &&
+ fast_memeq(in, "\x5d\x00\x00", 3)) {
+ return LZMA_METHOD;
+ } else if (in_len > 3 &&
+ fast_memeq(in, "\x28\xb5\x2f\xfd", 4)) {
+ return ZSTD_METHOD;
+ } else {
+ return UNKNOWN_METHOD;
+ }
+}
+
+/** Return 1 if a given <b>method</b> is supported; otherwise 0. */
+int
+tor_compress_supports_method(compress_method_t method)
+{
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ return tor_zlib_method_supported();
+ case LZMA_METHOD:
+ return tor_lzma_method_supported();
+ case ZSTD_METHOD:
+ return tor_zstd_method_supported();
+ case NO_METHOD:
+ return 1;
+ case UNKNOWN_METHOD:
+ default:
+ return 0;
+ }
+}
+
+/**
+ * Return a bitmask of the supported compression types, where 1&lt;&lt;m is
+ * set in the bitmask if and only if compression with method <b>m</b> is
+ * supported.
+ */
+unsigned
+tor_compress_get_supported_method_bitmask(void)
+{
+ static unsigned supported = 0;
+ if (supported == 0) {
+ compress_method_t m;
+ for (m = NO_METHOD; m <= UNKNOWN_METHOD; ++m) {
+ if (tor_compress_supports_method(m)) {
+ supported |= (1u << m);
+ }
+ }
+ }
+ return supported;
+}
+
+/** Table of compression method names. These should have an "x-" prefix,
+ * if they are not listed in the IANA content coding registry. */
+static const struct {
+ const char *name;
+ compress_method_t method;
+} compression_method_names[] = {
+ { "gzip", GZIP_METHOD },
+ { "deflate", ZLIB_METHOD },
+ // We call this "x-tor-lzma" rather than "x-lzma", because we impose a
+ // lower maximum memory usage on the decoding side.
+ { "x-tor-lzma", LZMA_METHOD },
+ { "x-zstd" , ZSTD_METHOD },
+ { "identity", NO_METHOD },
+
+ /* Later entries in this table are not canonical; these are recognized but
+ * not emitted. */
+ { "x-gzip", GZIP_METHOD },
+};
+
+/** Return the canonical string representation of the compression method
+ * <b>method</b>, or NULL if the method isn't recognized. */
+const char *
+compression_method_get_name(compress_method_t method)
+{
+ unsigned i;
+ for (i = 0; i < ARRAY_LENGTH(compression_method_names); ++i) {
+ if (method == compression_method_names[i].method)
+ return compression_method_names[i].name;
+ }
+ return NULL;
+}
+
+/** Table of compression human readable method names. */
+static const struct {
+ compress_method_t method;
+ const char *name;
+} compression_method_human_names[] = {
+ { NO_METHOD, "uncompressed" },
+ { GZIP_METHOD, "gzipped" },
+ { ZLIB_METHOD, "deflated" },
+ { LZMA_METHOD, "LZMA compressed" },
+ { ZSTD_METHOD, "Zstandard compressed" },
+ { UNKNOWN_METHOD, "unknown encoding" },
+};
+
+/** Return a human readable string representation of the compression method
+ * <b>method</b>, or NULL if the method isn't recognized. */
+const char *
+compression_method_get_human_name(compress_method_t method)
+{
+ unsigned i;
+ for (i = 0; i < ARRAY_LENGTH(compression_method_human_names); ++i) {
+ if (method == compression_method_human_names[i].method)
+ return compression_method_human_names[i].name;
+ }
+ return NULL;
+}
+
+/** Return the compression method represented by the string <b>name</b>, or
+ * UNKNOWN_METHOD if the string isn't recognized. */
+compress_method_t
+compression_method_get_by_name(const char *name)
+{
+ unsigned i;
+ for (i = 0; i < ARRAY_LENGTH(compression_method_names); ++i) {
+ if (!strcmp(compression_method_names[i].name, name))
+ return compression_method_names[i].method;
+ }
+ return UNKNOWN_METHOD;
+}
+
+/** Return a string representation of the version of the library providing the
+ * compression method given in <b>method</b>. Returns NULL if <b>method</b> is
+ * unknown or unsupported. */
+const char *
+tor_compress_version_str(compress_method_t method)
+{
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ return tor_zlib_get_version_str();
+ case LZMA_METHOD:
+ return tor_lzma_get_version_str();
+ case ZSTD_METHOD:
+ return tor_zstd_get_version_str();
+ case NO_METHOD:
+ case UNKNOWN_METHOD:
+ default:
+ return NULL;
+ }
+}
+
+/** Return a string representation of the version of the library, found at
+ * compile time, providing the compression method given in <b>method</b>.
+ * Returns NULL if <b>method</b> is unknown or unsupported. */
+const char *
+tor_compress_header_version_str(compress_method_t method)
+{
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ return tor_zlib_get_header_version_str();
+ case LZMA_METHOD:
+ return tor_lzma_get_header_version_str();
+ case ZSTD_METHOD:
+ return tor_zstd_get_header_version_str();
+ case NO_METHOD:
+ case UNKNOWN_METHOD:
+ default:
+ return NULL;
+ }
+}
+
+/** Return the approximate number of bytes allocated for all
+ * supported compression schemas. */
+size_t
+tor_compress_get_total_allocation(void)
+{
+ return atomic_counter_get(&total_compress_allocation) +
+ tor_zlib_get_total_allocation() +
+ tor_lzma_get_total_allocation() +
+ tor_zstd_get_total_allocation();
+}
+
+/** Internal state for an incremental compression/decompression. The body of
+ * this struct is not exposed. */
+struct tor_compress_state_t {
+ compress_method_t method; /**< The compression method. */
+
+ union {
+ tor_zlib_compress_state_t *zlib_state;
+ tor_lzma_compress_state_t *lzma_state;
+ tor_zstd_compress_state_t *zstd_state;
+ } u; /**< Compression backend state. */
+};
+
+/** Construct and return a tor_compress_state_t object using <b>method</b>. If
+ * <b>compress</b>, it's for compression; otherwise it's for decompression. */
+tor_compress_state_t *
+tor_compress_new(int compress, compress_method_t method,
+ compression_level_t compression_level)
+{
+ tor_compress_state_t *state;
+
+ state = tor_malloc_zero(sizeof(tor_compress_state_t));
+ state->method = method;
+
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD: {
+ tor_zlib_compress_state_t *zlib_state =
+ tor_zlib_compress_new(compress, method, compression_level);
+
+ if (zlib_state == NULL)
+ goto err;
+
+ state->u.zlib_state = zlib_state;
+ break;
+ }
+ case LZMA_METHOD: {
+ tor_lzma_compress_state_t *lzma_state =
+ tor_lzma_compress_new(compress, method, compression_level);
+
+ if (lzma_state == NULL)
+ goto err;
+
+ state->u.lzma_state = lzma_state;
+ break;
+ }
+ case ZSTD_METHOD: {
+ tor_zstd_compress_state_t *zstd_state =
+ tor_zstd_compress_new(compress, method, compression_level);
+
+ if (zstd_state == NULL)
+ goto err;
+
+ state->u.zstd_state = zstd_state;
+ break;
+ }
+ case NO_METHOD: {
+ break;
+ }
+ case UNKNOWN_METHOD:
+ goto err;
+ }
+
+ atomic_counter_add(&total_compress_allocation,
+ sizeof(tor_compress_state_t));
+ return state;
+
+ err:
+ tor_free(state);
+ return NULL;
+}
+
+/** Compress/decompress some bytes using <b>state</b>. Read up to
+ * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
+ * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
+ * we've reached the end of the input.
+ *
+ * Return TOR_COMPRESS_DONE if we've finished the entire
+ * compression/decompression.
+ * Return TOR_COMPRESS_OK if we're processed everything from the input.
+ * Return TOR_COMPRESS_BUFFER_FULL if we're out of space on <b>out</b>.
+ * Return TOR_COMPRESS_ERROR if the stream is corrupt.
+ */
+tor_compress_output_t
+tor_compress_process(tor_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish)
+{
+ tor_assert(state != NULL);
+ const size_t in_len_orig = *in_len;
+ const size_t out_len_orig = *out_len;
+ tor_compress_output_t rv;
+
+ if (*out_len == 0 && (*in_len > 0 || finish)) {
+ // If we still have input data, but no space for output data, we might as
+ // well return early and let the caller do the reallocation of the out
+ // variable.
+ return TOR_COMPRESS_BUFFER_FULL;
+ }
+
+ switch (state->method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ rv = tor_zlib_compress_process(state->u.zlib_state,
+ out, out_len, in, in_len,
+ finish);
+ break;
+ case LZMA_METHOD:
+ rv =tor_lzma_compress_process(state->u.lzma_state,
+ out, out_len, in, in_len,
+ finish);
+ break;
+ case ZSTD_METHOD:
+ rv = tor_zstd_compress_process(state->u.zstd_state,
+ out, out_len, in, in_len,
+ finish);
+ break;
+ case NO_METHOD:
+ rv = tor_cnone_compress_process(out, out_len, in, in_len,
+ finish);
+ break;
+ default:
+ case UNKNOWN_METHOD:
+ goto err;
+ }
+ if (BUG((rv == TOR_COMPRESS_OK) &&
+ *in_len == in_len_orig &&
+ *out_len == out_len_orig)) {
+ return TOR_COMPRESS_ERROR;
+ }
+
+ return rv;
+ err:
+ return TOR_COMPRESS_ERROR;
+}
+
+/** Deallocate <b>state</b>. */
+void
+tor_compress_free(tor_compress_state_t *state)
+{
+ if (state == NULL)
+ return;
+
+ switch (state->method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ tor_zlib_compress_free(state->u.zlib_state);
+ break;
+ case LZMA_METHOD:
+ tor_lzma_compress_free(state->u.lzma_state);
+ break;
+ case ZSTD_METHOD:
+ tor_zstd_compress_free(state->u.zstd_state);
+ break;
+ case NO_METHOD:
+ break;
+ case UNKNOWN_METHOD:
+ break;
+ }
+
+ atomic_counter_sub(&total_compress_allocation,
+ sizeof(tor_compress_state_t));
+ tor_free(state);
+}
+
+/** Return the approximate number of bytes allocated for <b>state</b>. */
+size_t
+tor_compress_state_size(const tor_compress_state_t *state)
+{
+ tor_assert(state != NULL);
+
+ size_t size = sizeof(tor_compress_state_t);
+
+ switch (state->method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ size += tor_zlib_compress_state_size(state->u.zlib_state);
+ break;
+ case LZMA_METHOD:
+ size += tor_lzma_compress_state_size(state->u.lzma_state);
+ break;
+ case ZSTD_METHOD:
+ size += tor_zstd_compress_state_size(state->u.zstd_state);
+ break;
+ case NO_METHOD:
+ case UNKNOWN_METHOD:
+ break;
+ }
+
+ return size;
+}
+
+/** Initialize all compression modules. */
+void
+tor_compress_init(void)
+{
+ atomic_counter_init(&total_compress_allocation);
+
+ tor_zlib_init();
+ tor_lzma_init();
+ tor_zstd_init();
+}
+
diff --git a/src/common/compress.h b/src/common/compress.h
new file mode 100644
index 0000000000..59c8b7b9b5
--- /dev/null
+++ b/src/common/compress.h
@@ -0,0 +1,89 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress.h
+ * \brief Headers for compress.c
+ **/
+
+#ifndef TOR_COMPRESS_H
+#define TOR_COMPRESS_H
+
+/** Enumeration of what kind of compression to use. Only ZLIB_METHOD and
+ * GZIP_METHOD is guaranteed to be supported by the compress/uncompress
+ * functions here. Call tor_compress_supports_method() to check if a given
+ * compression schema is supported by Tor. */
+typedef enum {
+ NO_METHOD=0, // This method must be first.
+ GZIP_METHOD=1,
+ ZLIB_METHOD=2,
+ LZMA_METHOD=3,
+ ZSTD_METHOD=4,
+ UNKNOWN_METHOD=5, // This method must be last. Add new ones in the middle.
+} compress_method_t;
+
+/**
+ * Enumeration to define tradeoffs between memory usage and compression level.
+ * BEST_COMPRESSION saves the most bandwidth; LOW_COMPRESSION saves the most
+ * memory.
+ **/
+typedef enum {
+ BEST_COMPRESSION, HIGH_COMPRESSION, MEDIUM_COMPRESSION, LOW_COMPRESSION
+} compression_level_t;
+
+int tor_compress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method);
+
+int tor_uncompress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method,
+ int complete_only,
+ int protocol_warn_level);
+
+compress_method_t detect_compression_method(const char *in, size_t in_len);
+
+int tor_compress_is_compression_bomb(size_t size_in, size_t size_out);
+
+int tor_compress_supports_method(compress_method_t method);
+unsigned tor_compress_get_supported_method_bitmask(void);
+const char *compression_method_get_name(compress_method_t method);
+const char *compression_method_get_human_name(compress_method_t method);
+compress_method_t compression_method_get_by_name(const char *name);
+
+const char *tor_compress_version_str(compress_method_t method);
+
+const char *tor_compress_header_version_str(compress_method_t method);
+
+size_t tor_compress_get_total_allocation(void);
+
+/** Return values from tor_compress_process; see that function's documentation
+ * for details. */
+typedef enum {
+ TOR_COMPRESS_OK,
+ TOR_COMPRESS_DONE,
+ TOR_COMPRESS_BUFFER_FULL,
+ TOR_COMPRESS_ERROR
+} tor_compress_output_t;
+
+/** Internal state for an incremental compression/decompression. */
+typedef struct tor_compress_state_t tor_compress_state_t;
+
+tor_compress_state_t *tor_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t level);
+
+tor_compress_output_t tor_compress_process(tor_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+void tor_compress_free(tor_compress_state_t *state);
+
+size_t tor_compress_state_size(const tor_compress_state_t *state);
+
+void tor_compress_init(void);
+
+#endif // TOR_COMPRESS_H.
+
diff --git a/src/common/compress_lzma.c b/src/common/compress_lzma.c
new file mode 100644
index 0000000000..d453d9f718
--- /dev/null
+++ b/src/common/compress_lzma.c
@@ -0,0 +1,357 @@
+/* Copyright (c) 2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_lzma.c
+ * \brief Compression backend for LZMA.
+ *
+ * This module should never be invoked directly. Use the compress module
+ * instead.
+ **/
+
+#include "orconfig.h"
+
+#include "util.h"
+#include "torlog.h"
+#include "compress.h"
+#include "compress_lzma.h"
+
+#ifdef HAVE_LZMA
+#include <lzma.h>
+#endif
+
+/** The maximum amount of memory we allow the LZMA decoder to use, in bytes. */
+#define MEMORY_LIMIT (16 * 1024 * 1024)
+
+/** Total number of bytes allocated for LZMA state. */
+static atomic_counter_t total_lzma_allocation;
+
+#ifdef HAVE_LZMA
+/** Given <b>level</b> return the memory level. */
+static int
+memory_level(compression_level_t level)
+{
+ switch (level) {
+ default:
+ case BEST_COMPRESSION:
+ case HIGH_COMPRESSION: return 6;
+ case MEDIUM_COMPRESSION: return 4;
+ case LOW_COMPRESSION: return 2;
+ }
+}
+
+/** Convert a given <b>error</b> to a human readable error string. */
+static const char *
+lzma_error_str(lzma_ret error)
+{
+ switch (error) {
+ case LZMA_OK:
+ return "Operation completed successfully";
+ case LZMA_STREAM_END:
+ return "End of stream";
+ case LZMA_NO_CHECK:
+ return "Input stream lacks integrity check";
+ case LZMA_UNSUPPORTED_CHECK:
+ return "Unable to calculate integrity check";
+ case LZMA_GET_CHECK:
+ return "Integrity check available";
+ case LZMA_MEM_ERROR:
+ return "Unable to allocate memory";
+ case LZMA_MEMLIMIT_ERROR:
+ return "Memory limit reached";
+ case LZMA_FORMAT_ERROR:
+ return "Unknown file format";
+ case LZMA_OPTIONS_ERROR:
+ return "Unsupported options";
+ case LZMA_DATA_ERROR:
+ return "Corrupt input data";
+ case LZMA_BUF_ERROR:
+ return "Unable to progress";
+ case LZMA_PROG_ERROR:
+ return "Programming error";
+ default:
+ return "Unknown LZMA error";
+ }
+}
+#endif // HAVE_LZMA.
+
+/** Return 1 if LZMA compression is supported; otherwise 0. */
+int
+tor_lzma_method_supported(void)
+{
+#ifdef HAVE_LZMA
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+/** Return a string representation of the version of the currently running
+ * version of liblzma. Returns NULL if LZMA is unsupported. */
+const char *
+tor_lzma_get_version_str(void)
+{
+#ifdef HAVE_LZMA
+ return lzma_version_string();
+#else
+ return NULL;
+#endif
+}
+
+/** Return a string representation of the version of liblzma used at
+ * compilation time. Returns NULL if LZMA is unsupported. */
+const char *
+tor_lzma_get_header_version_str(void)
+{
+#ifdef HAVE_LZMA
+ return LZMA_VERSION_STRING;
+#else
+ return NULL;
+#endif
+}
+
+/** Internal LZMA state for incremental compression/decompression.
+ * The body of this struct is not exposed. */
+struct tor_lzma_compress_state_t {
+#ifdef HAVE_LZMA
+ lzma_stream stream; /**< The LZMA stream. */
+#endif
+
+ int compress; /**< True if we are compressing; false if we are inflating */
+
+ /** Number of bytes read so far. Used to detect compression bombs. */
+ size_t input_so_far;
+ /** Number of bytes written so far. Used to detect compression bombs. */
+ size_t output_so_far;
+
+ /** Approximate number of bytes allocated for this object. */
+ size_t allocation;
+};
+
+#ifdef HAVE_LZMA
+/** Return an approximate number of bytes stored in memory to hold the LZMA
+ * encoder/decoder state. */
+static size_t
+tor_lzma_state_size_precalc(int compress, compression_level_t level)
+{
+ uint64_t memory_usage;
+
+ if (compress)
+ memory_usage = lzma_easy_encoder_memusage(memory_level(level));
+ else
+ memory_usage = lzma_easy_decoder_memusage(memory_level(level));
+
+ if (memory_usage == UINT64_MAX) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Unsupported compression level passed to LZMA %s",
+ compress ? "encoder" : "decoder");
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+
+ if (memory_usage + sizeof(tor_lzma_compress_state_t) > SIZE_MAX)
+ memory_usage = SIZE_MAX;
+ else
+ memory_usage += sizeof(tor_lzma_compress_state_t);
+
+ return (size_t)memory_usage;
+
+ err:
+ return 0; // LCOV_EXCL_LINE
+}
+#endif // HAVE_LZMA.
+
+/** Construct and return a tor_lzma_compress_state_t object using
+ * <b>method</b>. If <b>compress</b>, it's for compression; otherwise it's for
+ * decompression. */
+tor_lzma_compress_state_t *
+tor_lzma_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t level)
+{
+ tor_assert(method == LZMA_METHOD);
+
+#ifdef HAVE_LZMA
+ tor_lzma_compress_state_t *result;
+ lzma_ret retval;
+ lzma_options_lzma stream_options;
+
+ // Note that we do not explicitly initialize the lzma_stream object here,
+ // since the LZMA_STREAM_INIT "just" initializes all members to 0, which is
+ // also what `tor_malloc_zero()` does.
+ result = tor_malloc_zero(sizeof(tor_lzma_compress_state_t));
+ result->compress = compress;
+ result->allocation = tor_lzma_state_size_precalc(compress, level);
+
+ if (compress) {
+ lzma_lzma_preset(&stream_options, memory_level(level));
+
+ retval = lzma_alone_encoder(&result->stream, &stream_options);
+
+ if (retval != LZMA_OK) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Error from LZMA encoder: %s (%u).",
+ lzma_error_str(retval), retval);
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ } else {
+ retval = lzma_alone_decoder(&result->stream, MEMORY_LIMIT);
+
+ if (retval != LZMA_OK) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Error from LZMA decoder: %s (%u).",
+ lzma_error_str(retval), retval);
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ atomic_counter_add(&total_lzma_allocation, result->allocation);
+ return result;
+
+ err:
+ tor_free(result); // LCOV_EXCL_LINE
+ return NULL;
+#else // HAVE_LZMA.
+ (void)compress;
+ (void)method;
+ (void)level;
+
+ return NULL;
+#endif // HAVE_LZMA.
+}
+
+/** Compress/decompress some bytes using <b>state</b>. Read up to
+ * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
+ * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
+ * we've reached the end of the input.
+ *
+ * Return TOR_COMPRESS_DONE if we've finished the entire
+ * compression/decompression.
+ * Return TOR_COMPRESS_OK if we're processed everything from the input.
+ * Return TOR_COMPRESS_BUFFER_FULL if we're out of space on <b>out</b>.
+ * Return TOR_COMPRESS_ERROR if the stream is corrupt.
+ */
+tor_compress_output_t
+tor_lzma_compress_process(tor_lzma_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish)
+{
+#ifdef HAVE_LZMA
+ lzma_ret retval;
+ lzma_action action;
+
+ tor_assert(state != NULL);
+ tor_assert(*in_len <= UINT_MAX);
+ tor_assert(*out_len <= UINT_MAX);
+
+ state->stream.next_in = (unsigned char *)*in;
+ state->stream.avail_in = *in_len;
+ state->stream.next_out = (unsigned char *)*out;
+ state->stream.avail_out = *out_len;
+
+ action = finish ? LZMA_FINISH : LZMA_RUN;
+
+ retval = lzma_code(&state->stream, action);
+
+ state->input_so_far += state->stream.next_in - ((unsigned char *)*in);
+ state->output_so_far += state->stream.next_out - ((unsigned char *)*out);
+
+ *out = (char *)state->stream.next_out;
+ *out_len = state->stream.avail_out;
+ *in = (const char *)state->stream.next_in;
+ *in_len = state->stream.avail_in;
+
+ if (! state->compress &&
+ tor_compress_is_compression_bomb(state->input_so_far,
+ state->output_so_far)) {
+ log_warn(LD_DIR, "Possible compression bomb; abandoning stream.");
+ return TOR_COMPRESS_ERROR;
+ }
+
+ switch (retval) {
+ case LZMA_OK:
+ if (state->stream.avail_out == 0 || finish)
+ return TOR_COMPRESS_BUFFER_FULL;
+
+ return TOR_COMPRESS_OK;
+
+ case LZMA_BUF_ERROR:
+ if (state->stream.avail_in == 0 && !finish)
+ return TOR_COMPRESS_OK;
+
+ return TOR_COMPRESS_BUFFER_FULL;
+
+ case LZMA_STREAM_END:
+ return TOR_COMPRESS_DONE;
+
+ // We list all the possible values of `lzma_ret` here to silence the
+ // `switch-enum` warning and to detect if a new member was added.
+ case LZMA_NO_CHECK:
+ case LZMA_UNSUPPORTED_CHECK:
+ case LZMA_GET_CHECK:
+ case LZMA_MEM_ERROR:
+ case LZMA_MEMLIMIT_ERROR:
+ case LZMA_FORMAT_ERROR:
+ case LZMA_OPTIONS_ERROR:
+ case LZMA_DATA_ERROR:
+ case LZMA_PROG_ERROR:
+ default:
+ log_warn(LD_GENERAL, "LZMA %s didn't finish: %s.",
+ state->compress ? "compression" : "decompression",
+ lzma_error_str(retval));
+ return TOR_COMPRESS_ERROR;
+ }
+#else // HAVE_LZMA.
+ (void)state;
+ (void)out;
+ (void)out_len;
+ (void)in;
+ (void)in_len;
+ (void)finish;
+ return TOR_COMPRESS_ERROR;
+#endif // HAVE_LZMA.
+}
+
+/** Deallocate <b>state</b>. */
+void
+tor_lzma_compress_free(tor_lzma_compress_state_t *state)
+{
+ if (state == NULL)
+ return;
+
+ atomic_counter_sub(&total_lzma_allocation, state->allocation);
+
+#ifdef HAVE_LZMA
+ lzma_end(&state->stream);
+#endif
+
+ tor_free(state);
+}
+
+/** Return the approximate number of bytes allocated for <b>state</b>. */
+size_t
+tor_lzma_compress_state_size(const tor_lzma_compress_state_t *state)
+{
+ tor_assert(state != NULL);
+ return state->allocation;
+}
+
+/** Return the approximate number of bytes allocated for all LZMA states. */
+size_t
+tor_lzma_get_total_allocation(void)
+{
+ return atomic_counter_get(&total_lzma_allocation);
+}
+
+/** Initialize the lzma module */
+void
+tor_lzma_init(void)
+{
+ atomic_counter_init(&total_lzma_allocation);
+}
+
diff --git a/src/common/compress_lzma.h b/src/common/compress_lzma.h
new file mode 100644
index 0000000000..1433c89f88
--- /dev/null
+++ b/src/common/compress_lzma.h
@@ -0,0 +1,43 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_lzma.h
+ * \brief Header for compress_lzma.c
+ **/
+
+#ifndef TOR_COMPRESS_LZMA_H
+#define TOR_COMPRESS_LZMA_H
+
+int tor_lzma_method_supported(void);
+
+const char *tor_lzma_get_version_str(void);
+
+const char *tor_lzma_get_header_version_str(void);
+
+/** Internal state for an incremental LZMA compression/decompression. */
+typedef struct tor_lzma_compress_state_t tor_lzma_compress_state_t;
+
+tor_lzma_compress_state_t *
+tor_lzma_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t compression_level);
+
+tor_compress_output_t
+tor_lzma_compress_process(tor_lzma_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+
+void tor_lzma_compress_free(tor_lzma_compress_state_t *state);
+
+size_t tor_lzma_compress_state_size(const tor_lzma_compress_state_t *state);
+
+size_t tor_lzma_get_total_allocation(void);
+
+void tor_lzma_init(void);
+
+#endif // TOR_COMPRESS_LZMA_H.
+
diff --git a/src/common/compress_none.c b/src/common/compress_none.c
new file mode 100644
index 0000000000..34314e4af7
--- /dev/null
+++ b/src/common/compress_none.c
@@ -0,0 +1,53 @@
+/* Copyright (c) 2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_none.c
+ * \brief Compression backend for identity compression.
+ *
+ * We actually define this backend so that we can treat the identity transform
+ * as another case of compression.
+ *
+ * This module should never be invoked directly. Use the compress module
+ * instead.
+ **/
+
+#include "orconfig.h"
+
+#include "util.h"
+#include "torlog.h"
+#include "compress.h"
+#include "compress_none.h"
+
+/** Transfer some bytes using the identity transformation. Read up to
+ * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
+ * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
+ * we've reached the end of the input.
+ *
+ * Return TOR_COMPRESS_DONE if we've finished the entire
+ * compression/decompression.
+ * Return TOR_COMPRESS_OK if we're processed everything from the input.
+ * Return TOR_COMPRESS_BUFFER_FULL if we're out of space on <b>out</b>.
+ * Return TOR_COMPRESS_ERROR if the stream is corrupt.
+ */
+tor_compress_output_t
+tor_cnone_compress_process(char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish)
+{
+ size_t n_to_copy = MIN(*in_len, *out_len);
+
+ memcpy(*out, *in, n_to_copy);
+ *out += n_to_copy;
+ *in += n_to_copy;
+ *out_len -= n_to_copy;
+ *in_len -= n_to_copy;
+ if (*in_len == 0) {
+ return finish ? TOR_COMPRESS_DONE : TOR_COMPRESS_OK;
+ } else {
+ return TOR_COMPRESS_BUFFER_FULL;
+ }
+}
+
diff --git a/src/common/compress_none.h b/src/common/compress_none.h
new file mode 100644
index 0000000000..d1ebb4b625
--- /dev/null
+++ b/src/common/compress_none.h
@@ -0,0 +1,20 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_none.h
+ * \brief Header for compress_none.c
+ **/
+
+#ifndef TOR_COMPRESS_NONE_H
+#define TOR_COMPRESS_NONE_H
+
+tor_compress_output_t
+tor_cnone_compress_process(char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+
+#endif // TOR_COMPRESS_NONE_H.
+
diff --git a/src/common/compress_zlib.c b/src/common/compress_zlib.c
new file mode 100644
index 0000000000..284542e885
--- /dev/null
+++ b/src/common/compress_zlib.c
@@ -0,0 +1,304 @@
+/* Copyright (c) 2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_zlib.c
+ * \brief Compression backend for gzip and zlib.
+ *
+ * This module should never be invoked directly. Use the compress module
+ * instead.
+ **/
+
+#include "orconfig.h"
+
+#include "util.h"
+#include "torlog.h"
+#include "compress.h"
+#include "compress_zlib.h"
+
+/* zlib 1.2.4 and 1.2.5 do some "clever" things with macros. Instead of
+ saying "(defined(FOO) ? FOO : 0)" they like to say "FOO-0", on the theory
+ that nobody will care if the compile outputs a no-such-identifier warning.
+
+ Sorry, but we like -Werror over here, so I guess we need to define these.
+ I hope that zlib 1.2.6 doesn't break these too.
+*/
+#ifndef _LARGEFILE64_SOURCE
+#define _LARGEFILE64_SOURCE 0
+#endif
+#ifndef _LFS64_LARGEFILE
+#define _LFS64_LARGEFILE 0
+#endif
+#ifndef _FILE_OFFSET_BITS
+#define _FILE_OFFSET_BITS 0
+#endif
+#ifndef off64_t
+#define off64_t int64_t
+#endif
+
+#include <zlib.h>
+
+#if defined ZLIB_VERNUM && ZLIB_VERNUM < 0x1200
+#error "We require zlib version 1.2 or later."
+#endif
+
+static size_t tor_zlib_state_size_precalc(int inflate,
+ int windowbits, int memlevel);
+
+/** Total number of bytes allocated for zlib state */
+static atomic_counter_t total_zlib_allocation;
+
+/** Given <b>level</b> return the memory level. */
+static int
+memory_level(compression_level_t level)
+{
+ switch (level) {
+ default:
+ case BEST_COMPRESSION: return 9;
+ case HIGH_COMPRESSION: return 8;
+ case MEDIUM_COMPRESSION: return 7;
+ case LOW_COMPRESSION: return 6;
+ }
+}
+
+/** Return the 'bits' value to tell zlib to use <b>method</b>.*/
+static inline int
+method_bits(compress_method_t method, compression_level_t level)
+{
+ /* Bits+16 means "use gzip" in zlib >= 1.2 */
+ const int flag = method == GZIP_METHOD ? 16 : 0;
+ switch (level) {
+ default:
+ case BEST_COMPRESSION:
+ case HIGH_COMPRESSION: return flag + 15;
+ case MEDIUM_COMPRESSION: return flag + 13;
+ case LOW_COMPRESSION: return flag + 11;
+ }
+}
+
+/** Return 1 if zlib/gzip compression is supported; otherwise 0. */
+int
+tor_zlib_method_supported(void)
+{
+ /* We currently always support zlib/gzip, but we keep this function around in
+ * case we some day decide to deprecate zlib/gzip support.
+ */
+ return 1;
+}
+
+/** Return a string representation of the version of the currently running
+ * version of zlib. */
+const char *
+tor_zlib_get_version_str(void)
+{
+ return zlibVersion();
+}
+
+/** Return a string representation of the version of the version of zlib
+* used at compilation. */
+const char *
+tor_zlib_get_header_version_str(void)
+{
+ return ZLIB_VERSION;
+}
+
+/** Internal zlib state for an incremental compression/decompression.
+ * The body of this struct is not exposed. */
+struct tor_zlib_compress_state_t {
+ struct z_stream_s stream; /**< The zlib stream */
+ int compress; /**< True if we are compressing; false if we are inflating */
+
+ /** Number of bytes read so far. Used to detect zlib bombs. */
+ size_t input_so_far;
+ /** Number of bytes written so far. Used to detect zlib bombs. */
+ size_t output_so_far;
+
+ /** Approximate number of bytes allocated for this object. */
+ size_t allocation;
+};
+
+/** Return an approximate number of bytes used in RAM to hold a state with
+ * window bits <b>windowBits</b> and compression level 'memlevel' */
+static size_t
+tor_zlib_state_size_precalc(int inflate_, int windowbits, int memlevel)
+{
+ windowbits &= 15;
+
+#define A_FEW_KILOBYTES 2048
+
+ if (inflate_) {
+ /* From zconf.h:
+
+ "The memory requirements for inflate are (in bytes) 1 << windowBits
+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
+ for small objects."
+ */
+ return sizeof(tor_zlib_compress_state_t) + sizeof(struct z_stream_s) +
+ (1 << 15) + A_FEW_KILOBYTES;
+ } else {
+ /* Also from zconf.h:
+
+ "The memory requirements for deflate are (in bytes):
+ (1 << (windowBits+2)) + (1 << (memLevel+9))
+ ... plus a few kilobytes for small objects."
+ */
+ return sizeof(tor_zlib_compress_state_t) + sizeof(struct z_stream_s) +
+ (1 << (windowbits + 2)) + (1 << (memlevel + 9)) + A_FEW_KILOBYTES;
+ }
+#undef A_FEW_KILOBYTES
+}
+
+/** Construct and return a tor_zlib_compress_state_t object using
+ * <b>method</b>. If <b>compress</b>, it's for compression; otherwise it's for
+ * decompression. */
+tor_zlib_compress_state_t *
+tor_zlib_compress_new(int compress_,
+ compress_method_t method,
+ compression_level_t compression_level)
+{
+ tor_zlib_compress_state_t *out;
+ int bits, memlevel;
+
+ if (! compress_) {
+ /* use this setting for decompression, since we might have the
+ * max number of window bits */
+ compression_level = BEST_COMPRESSION;
+ }
+
+ out = tor_malloc_zero(sizeof(tor_zlib_compress_state_t));
+ out->stream.zalloc = Z_NULL;
+ out->stream.zfree = Z_NULL;
+ out->stream.opaque = NULL;
+ out->compress = compress_;
+ bits = method_bits(method, compression_level);
+ memlevel = memory_level(compression_level);
+ if (compress_) {
+ if (deflateInit2(&out->stream, Z_BEST_COMPRESSION, Z_DEFLATED,
+ bits, memlevel,
+ Z_DEFAULT_STRATEGY) != Z_OK)
+ goto err; // LCOV_EXCL_LINE
+ } else {
+ if (inflateInit2(&out->stream, bits) != Z_OK)
+ goto err; // LCOV_EXCL_LINE
+ }
+ out->allocation = tor_zlib_state_size_precalc(!compress_, bits, memlevel);
+
+ atomic_counter_add(&total_zlib_allocation, out->allocation);
+
+ return out;
+
+ err:
+ tor_free(out);
+ return NULL;
+}
+
+/** Compress/decompress some bytes using <b>state</b>. Read up to
+ * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
+ * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
+ * we've reached the end of the input.
+ *
+ * Return TOR_COMPRESS_DONE if we've finished the entire
+ * compression/decompression.
+ * Return TOR_COMPRESS_OK if we're processed everything from the input.
+ * Return TOR_COMPRESS_BUFFER_FULL if we're out of space on <b>out</b>.
+ * Return TOR_COMPRESS_ERROR if the stream is corrupt.
+ */
+tor_compress_output_t
+tor_zlib_compress_process(tor_zlib_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish)
+{
+ int err;
+ tor_assert(state != NULL);
+ if (*in_len > UINT_MAX ||
+ *out_len > UINT_MAX) {
+ return TOR_COMPRESS_ERROR;
+ }
+
+ state->stream.next_in = (unsigned char*) *in;
+ state->stream.avail_in = (unsigned int)*in_len;
+ state->stream.next_out = (unsigned char*) *out;
+ state->stream.avail_out = (unsigned int)*out_len;
+
+ if (state->compress) {
+ err = deflate(&state->stream, finish ? Z_FINISH : Z_NO_FLUSH);
+ } else {
+ err = inflate(&state->stream, finish ? Z_FINISH : Z_SYNC_FLUSH);
+ }
+
+ state->input_so_far += state->stream.next_in - ((unsigned char*)*in);
+ state->output_so_far += state->stream.next_out - ((unsigned char*)*out);
+
+ *out = (char*) state->stream.next_out;
+ *out_len = state->stream.avail_out;
+ *in = (const char *) state->stream.next_in;
+ *in_len = state->stream.avail_in;
+
+ if (! state->compress &&
+ tor_compress_is_compression_bomb(state->input_so_far,
+ state->output_so_far)) {
+ log_warn(LD_DIR, "Possible zlib bomb; abandoning stream.");
+ return TOR_COMPRESS_ERROR;
+ }
+
+ switch (err)
+ {
+ case Z_STREAM_END:
+ return TOR_COMPRESS_DONE;
+ case Z_BUF_ERROR:
+ if (state->stream.avail_in == 0 && !finish)
+ return TOR_COMPRESS_OK;
+ return TOR_COMPRESS_BUFFER_FULL;
+ case Z_OK:
+ if (state->stream.avail_out == 0 || finish)
+ return TOR_COMPRESS_BUFFER_FULL;
+ return TOR_COMPRESS_OK;
+ default:
+ log_warn(LD_GENERAL, "Gzip returned an error: %s",
+ state->stream.msg ? state->stream.msg : "<no message>");
+ return TOR_COMPRESS_ERROR;
+ }
+}
+
+/** Deallocate <b>state</b>. */
+void
+tor_zlib_compress_free(tor_zlib_compress_state_t *state)
+{
+ if (state == NULL)
+ return;
+
+ atomic_counter_sub(&total_zlib_allocation, state->allocation);
+
+ if (state->compress)
+ deflateEnd(&state->stream);
+ else
+ inflateEnd(&state->stream);
+
+ tor_free(state);
+}
+
+/** Return the approximate number of bytes allocated for <b>state</b>. */
+size_t
+tor_zlib_compress_state_size(const tor_zlib_compress_state_t *state)
+{
+ tor_assert(state != NULL);
+ return state->allocation;
+}
+
+/** Return the approximate number of bytes allocated for all zlib states. */
+size_t
+tor_zlib_get_total_allocation(void)
+{
+ return atomic_counter_get(&total_zlib_allocation);
+}
+
+/** Set up global state for the zlib module */
+void
+tor_zlib_init(void)
+{
+ atomic_counter_init(&total_zlib_allocation);
+}
+
diff --git a/src/common/compress_zlib.h b/src/common/compress_zlib.h
new file mode 100644
index 0000000000..df5c196ac7
--- /dev/null
+++ b/src/common/compress_zlib.h
@@ -0,0 +1,43 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_zlib.h
+ * \brief Header for compress_zlib.c
+ **/
+
+#ifndef TOR_COMPRESS_ZLIB_H
+#define TOR_COMPRESS_ZLIB_H
+
+int tor_zlib_method_supported(void);
+
+const char *tor_zlib_get_version_str(void);
+
+const char *tor_zlib_get_header_version_str(void);
+
+/** Internal state for an incremental zlib/gzip compression/decompression. */
+typedef struct tor_zlib_compress_state_t tor_zlib_compress_state_t;
+
+tor_zlib_compress_state_t *
+tor_zlib_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t compression_level);
+
+tor_compress_output_t
+tor_zlib_compress_process(tor_zlib_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+
+void tor_zlib_compress_free(tor_zlib_compress_state_t *state);
+
+size_t tor_zlib_compress_state_size(const tor_zlib_compress_state_t *state);
+
+size_t tor_zlib_get_total_allocation(void);
+
+void tor_zlib_init(void);
+
+#endif // TOR_COMPRESS_ZLIB_H.
+
diff --git a/src/common/compress_zstd.c b/src/common/compress_zstd.c
new file mode 100644
index 0000000000..11edfffa0e
--- /dev/null
+++ b/src/common/compress_zstd.c
@@ -0,0 +1,444 @@
+/* Copyright (c) 2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_zstd.c
+ * \brief Compression backend for Zstandard.
+ *
+ * This module should never be invoked directly. Use the compress module
+ * instead.
+ **/
+
+#include "orconfig.h"
+
+#include "util.h"
+#include "torlog.h"
+#include "compress.h"
+#include "compress_zstd.h"
+
+#ifdef HAVE_ZSTD
+DISABLE_GCC_WARNING(unused-const-variable)
+#include <zstd.h>
+ENABLE_GCC_WARNING(unused-const-variable)
+#endif
+
+/** Total number of bytes allocated for Zstandard state. */
+static atomic_counter_t total_zstd_allocation;
+
+#ifdef HAVE_ZSTD
+/** Given <b>level</b> return the memory level. */
+static int
+memory_level(compression_level_t level)
+{
+ switch (level) {
+ default:
+ case BEST_COMPRESSION:
+ case HIGH_COMPRESSION: return 9;
+ case MEDIUM_COMPRESSION: return 8;
+ case LOW_COMPRESSION: return 7;
+ }
+}
+#endif // HAVE_ZSTD.
+
+/** Return 1 if Zstandard compression is supported; otherwise 0. */
+int
+tor_zstd_method_supported(void)
+{
+#ifdef HAVE_ZSTD
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+/** Return a string representation of the version of the currently running
+ * version of libzstd. Returns NULL if Zstandard is unsupported. */
+const char *
+tor_zstd_get_version_str(void)
+{
+#ifdef HAVE_ZSTD
+ static char version_str[16];
+ size_t version_number;
+
+ version_number = ZSTD_versionNumber();
+ tor_snprintf(version_str, sizeof(version_str),
+ "%d.%d.%d",
+ (int) version_number / 10000 % 100,
+ (int) version_number / 100 % 100,
+ (int) version_number % 100);
+
+ return version_str;
+#else
+ return NULL;
+#endif
+}
+
+/** Return a string representation of the version of the version of libzstd
+ * used at compilation time. Returns NULL if Zstandard is unsupported. */
+const char *
+tor_zstd_get_header_version_str(void)
+{
+#ifdef HAVE_ZSTD
+ return ZSTD_VERSION_STRING;
+#else
+ return NULL;
+#endif
+}
+
+/** Internal Zstandard state for incremental compression/decompression.
+ * The body of this struct is not exposed. */
+struct tor_zstd_compress_state_t {
+#ifdef HAVE_ZSTD
+ union {
+ /** Compression stream. Used when <b>compress</b> is true. */
+ ZSTD_CStream *compress_stream;
+ /** Decompression stream. Used when <b>compress</b> is false. */
+ ZSTD_DStream *decompress_stream;
+ } u; /**< Zstandard stream objects. */
+#endif // HAVE_ZSTD.
+
+ int compress; /**< True if we are compressing; false if we are inflating */
+ int have_called_end; /**< True if we are compressing and we've called
+ * ZSTD_endStream */
+
+ /** Number of bytes read so far. Used to detect compression bombs. */
+ size_t input_so_far;
+ /** Number of bytes written so far. Used to detect compression bombs. */
+ size_t output_so_far;
+
+ /** Approximate number of bytes allocated for this object. */
+ size_t allocation;
+};
+
+#ifdef HAVE_ZSTD
+/** Return an approximate number of bytes stored in memory to hold the
+ * Zstandard compression/decompression state. */
+static size_t
+tor_zstd_state_size_precalc(int compress, int preset)
+{
+ tor_assert(preset > 0);
+
+ size_t memory_usage = sizeof(tor_zstd_compress_state_t);
+
+ // The Zstandard library provides a number of functions that would be useful
+ // here, but they are, unfortunately, still considered experimental and are
+ // thus only available in libzstd if we link against the library statically.
+ //
+ // The code in this function tries to approximate the calculations without
+ // being able to use the following:
+ //
+ // - We do not have access to neither the internal members of ZSTD_CStream
+ // and ZSTD_DStream and their internal context objects.
+ //
+ // - We cannot use ZSTD_sizeof_CStream() and ZSTD_sizeof_DStream() since they
+ // are unexposed.
+ //
+ // In the future it might be useful to check if libzstd have started
+ // providing these functions in a stable manner and simplify this function.
+ if (compress) {
+ // We try to approximate the ZSTD_sizeof_CStream(ZSTD_CStream *stream)
+ // function here. This function uses the following fields to make its
+ // estimate:
+
+ // - sizeof(ZSTD_CStream): Around 192 bytes on a 64-bit machine:
+ memory_usage += 192;
+
+ // - ZSTD_sizeof_CCtx(stream->cctx): This function requires access to
+ // variables that are not exposed via the public API. We use a _very_
+ // simplified function to calculate the estimated amount of bytes used in
+ // this struct.
+ // memory_usage += (preset - 0.5) * 1024 * 1024;
+ memory_usage += (preset * 1024 * 1024) - (512 * 1024);
+ // - ZSTD_sizeof_CDict(stream->cdictLocal): Unused in Tor: 0 bytes.
+ // - stream->outBuffSize: 128 KB:
+ memory_usage += 128 * 1024;
+ // - stream->inBuffSize: 2048 KB:
+ memory_usage += 2048 * 1024;
+ } else {
+ // We try to approximate the ZSTD_sizeof_DStream(ZSTD_DStream *stream)
+ // function here. This function uses the following fields to make its
+ // estimate:
+
+ // - sizeof(ZSTD_DStream): Around 208 bytes on a 64-bit machine:
+ memory_usage += 208;
+ // - ZSTD_sizeof_DCtx(stream->dctx): Around 150 KB.
+ memory_usage += 150 * 1024;
+
+ // - ZSTD_sizeof_DDict(stream->ddictLocal): Unused in Tor: 0 bytes.
+ // - stream->inBuffSize: 0 KB.
+ // - stream->outBuffSize: 0 KB.
+ }
+
+ return memory_usage;
+}
+#endif // HAVE_ZSTD.
+
+/** Construct and return a tor_zstd_compress_state_t object using
+ * <b>method</b>. If <b>compress</b>, it's for compression; otherwise it's for
+ * decompression. */
+tor_zstd_compress_state_t *
+tor_zstd_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t level)
+{
+ tor_assert(method == ZSTD_METHOD);
+
+#ifdef HAVE_ZSTD
+ const int preset = memory_level(level);
+ tor_zstd_compress_state_t *result;
+ size_t retval;
+
+ result = tor_malloc_zero(sizeof(tor_zstd_compress_state_t));
+ result->compress = compress;
+ result->allocation = tor_zstd_state_size_precalc(compress, preset);
+
+ if (compress) {
+ result->u.compress_stream = ZSTD_createCStream();
+
+ if (result->u.compress_stream == NULL) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Error while creating Zstandard compression "
+ "stream");
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+
+ retval = ZSTD_initCStream(result->u.compress_stream, preset);
+
+ if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Zstandard stream initialization error: %s",
+ ZSTD_getErrorName(retval));
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ } else {
+ result->u.decompress_stream = ZSTD_createDStream();
+
+ if (result->u.decompress_stream == NULL) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Error while creating Zstandard decompression "
+ "stream");
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+
+ retval = ZSTD_initDStream(result->u.decompress_stream);
+
+ if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
+ log_warn(LD_GENERAL, "Zstandard stream initialization error: %s",
+ ZSTD_getErrorName(retval));
+ goto err;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ atomic_counter_add(&total_zstd_allocation, result->allocation);
+ return result;
+
+ err:
+ // LCOV_EXCL_START
+ if (compress) {
+ ZSTD_freeCStream(result->u.compress_stream);
+ } else {
+ ZSTD_freeDStream(result->u.decompress_stream);
+ }
+
+ tor_free(result);
+ return NULL;
+ // LCOV_EXCL_STOP
+#else // HAVE_ZSTD.
+ (void)compress;
+ (void)method;
+ (void)level;
+
+ return NULL;
+#endif // HAVE_ZSTD.
+}
+
+/** Compress/decompress some bytes using <b>state</b>. Read up to
+ * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
+ * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
+ * we've reached the end of the input.
+ *
+ * Return TOR_COMPRESS_DONE if we've finished the entire
+ * compression/decompression.
+ * Return TOR_COMPRESS_OK if we're processed everything from the input.
+ * Return TOR_COMPRESS_BUFFER_FULL if we're out of space on <b>out</b>.
+ * Return TOR_COMPRESS_ERROR if the stream is corrupt.
+ */
+tor_compress_output_t
+tor_zstd_compress_process(tor_zstd_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish)
+{
+#ifdef HAVE_ZSTD
+ size_t retval;
+
+ tor_assert(state != NULL);
+ tor_assert(*in_len <= UINT_MAX);
+ tor_assert(*out_len <= UINT_MAX);
+
+ ZSTD_inBuffer input = { *in, *in_len, 0 };
+ ZSTD_outBuffer output = { *out, *out_len, 0 };
+
+ if (BUG(finish == 0 && state->have_called_end)) {
+ finish = 1;
+ }
+
+ if (state->compress) {
+ if (! state->have_called_end)
+ retval = ZSTD_compressStream(state->u.compress_stream,
+ &output, &input);
+ else
+ retval = 0;
+ } else {
+ retval = ZSTD_decompressStream(state->u.decompress_stream,
+ &output, &input);
+ }
+
+ state->input_so_far += input.pos;
+ state->output_so_far += output.pos;
+
+ *out = (char *)output.dst + output.pos;
+ *out_len = output.size - output.pos;
+ *in = (char *)input.src + input.pos;
+ *in_len = input.size - input.pos;
+
+ if (! state->compress &&
+ tor_compress_is_compression_bomb(state->input_so_far,
+ state->output_so_far)) {
+ log_warn(LD_DIR, "Possible compression bomb; abandoning stream.");
+ return TOR_COMPRESS_ERROR;
+ }
+
+ if (ZSTD_isError(retval)) {
+ log_warn(LD_GENERAL, "Zstandard %s didn't finish: %s.",
+ state->compress ? "compression" : "decompression",
+ ZSTD_getErrorName(retval));
+ return TOR_COMPRESS_ERROR;
+ }
+
+ if (state->compress && !state->have_called_end) {
+ retval = ZSTD_flushStream(state->u.compress_stream, &output);
+
+ *out = (char *)output.dst + output.pos;
+ *out_len = output.size - output.pos;
+
+ if (ZSTD_isError(retval)) {
+ log_warn(LD_GENERAL, "Zstandard compression unable to flush: %s.",
+ ZSTD_getErrorName(retval));
+ return TOR_COMPRESS_ERROR;
+ }
+
+ // ZSTD_flushStream returns 0 if the frame is done, or >0 if it
+ // is incomplete.
+ if (retval > 0) {
+ return TOR_COMPRESS_BUFFER_FULL;
+ }
+ }
+
+ if (!finish) {
+ // The caller says we're not done with the input, so no need to write an
+ // epilogue.
+ return TOR_COMPRESS_OK;
+ } else if (state->compress) {
+ if (*in_len) {
+ // We say that we're not done with the input, so we can't write an
+ // epilogue.
+ return TOR_COMPRESS_OK;
+ }
+
+ retval = ZSTD_endStream(state->u.compress_stream, &output);
+ state->have_called_end = 1;
+ *out = (char *)output.dst + output.pos;
+ *out_len = output.size - output.pos;
+
+ if (ZSTD_isError(retval)) {
+ log_warn(LD_GENERAL, "Zstandard compression unable to write "
+ "epilogue: %s.",
+ ZSTD_getErrorName(retval));
+ return TOR_COMPRESS_ERROR;
+ }
+
+ // endStream returns the number of bytes that is needed to write the
+ // epilogue.
+ if (retval > 0)
+ return TOR_COMPRESS_BUFFER_FULL;
+
+ return TOR_COMPRESS_DONE;
+ } else /* if (!state->compress) */ {
+ // ZSTD_decompressStream returns 0 if the frame is done, or >0 if it
+ // is incomplete.
+ // We check this above.
+ tor_assert_nonfatal(!ZSTD_isError(retval));
+ // Start a new frame if this frame is done
+ if (retval == 0)
+ return TOR_COMPRESS_DONE;
+ // Don't check out_len, it might have some space left if the next output
+ // chunk is larger than the remaining space
+ else if (*in_len > 0)
+ return TOR_COMPRESS_BUFFER_FULL;
+ else
+ return TOR_COMPRESS_OK;
+ }
+
+#else // HAVE_ZSTD.
+ (void)state;
+ (void)out;
+ (void)out_len;
+ (void)in;
+ (void)in_len;
+ (void)finish;
+
+ return TOR_COMPRESS_ERROR;
+#endif // HAVE_ZSTD.
+}
+
+/** Deallocate <b>state</b>. */
+void
+tor_zstd_compress_free(tor_zstd_compress_state_t *state)
+{
+ if (state == NULL)
+ return;
+
+ atomic_counter_sub(&total_zstd_allocation, state->allocation);
+
+#ifdef HAVE_ZSTD
+ if (state->compress) {
+ ZSTD_freeCStream(state->u.compress_stream);
+ } else {
+ ZSTD_freeDStream(state->u.decompress_stream);
+ }
+#endif // HAVE_ZSTD.
+
+ tor_free(state);
+}
+
+/** Return the approximate number of bytes allocated for <b>state</b>. */
+size_t
+tor_zstd_compress_state_size(const tor_zstd_compress_state_t *state)
+{
+ tor_assert(state != NULL);
+ return state->allocation;
+}
+
+/** Return the approximate number of bytes allocated for all Zstandard
+ * states. */
+size_t
+tor_zstd_get_total_allocation(void)
+{
+ return atomic_counter_get(&total_zstd_allocation);
+}
+
+/** Initialize the zstd module */
+void
+tor_zstd_init(void)
+{
+ atomic_counter_init(&total_zstd_allocation);
+}
+
diff --git a/src/common/compress_zstd.h b/src/common/compress_zstd.h
new file mode 100644
index 0000000000..d3e65c2f16
--- /dev/null
+++ b/src/common/compress_zstd.h
@@ -0,0 +1,43 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_zstd.h
+ * \brief Header for compress_zstd.c
+ **/
+
+#ifndef TOR_COMPRESS_ZSTD_H
+#define TOR_COMPRESS_ZSTD_H
+
+int tor_zstd_method_supported(void);
+
+const char *tor_zstd_get_version_str(void);
+
+const char *tor_zstd_get_header_version_str(void);
+
+/** Internal state for an incremental Zstandard compression/decompression. */
+typedef struct tor_zstd_compress_state_t tor_zstd_compress_state_t;
+
+tor_zstd_compress_state_t *
+tor_zstd_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t compression_level);
+
+tor_compress_output_t
+tor_zstd_compress_process(tor_zstd_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+
+void tor_zstd_compress_free(tor_zstd_compress_state_t *state);
+
+size_t tor_zstd_compress_state_size(const tor_zstd_compress_state_t *state);
+
+size_t tor_zstd_get_total_allocation(void);
+
+void tor_zstd_init(void);
+
+#endif // TOR_COMPRESS_ZSTD_H.
+
diff --git a/src/common/confline.c b/src/common/confline.c
new file mode 100644
index 0000000000..15fd96bf38
--- /dev/null
+++ b/src/common/confline.c
@@ -0,0 +1,527 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * 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 "compat.h"
+#include "confline.h"
+#include "torlog.h"
+#include "util.h"
+#include "container.h"
+
+static int config_get_lines_aux(const char *string, config_line_t **result,
+ int extended, int allow_include,
+ int *has_include, int recursion_level,
+ config_line_t **last);
+static smartlist_t *config_get_file_list(const char *path);
+static int config_get_included_list(const char *path, int recursion_level,
+ int extended, config_line_t **list,
+ config_line_t **list_last);
+static int config_process_include(const char *path, int recursion_level,
+ int extended, config_line_t **list,
+ config_line_t **list_last);
+
+/** Helper: allocate a new configuration option mapping 'key' to 'val',
+ * append it to *<b>lst</b>. */
+void
+config_line_append(config_line_t **lst,
+ const char *key,
+ const char *val)
+{
+ tor_assert(lst);
+
+ config_line_t *newline;
+
+ newline = tor_malloc_zero(sizeof(config_line_t));
+ newline->key = tor_strdup(key);
+ newline->value = tor_strdup(val);
+ newline->next = NULL;
+ while (*lst)
+ lst = &((*lst)->next);
+
+ (*lst) = newline;
+}
+
+/** Helper: allocate a new configuration option mapping 'key' to 'val',
+ * and prepend it to *<b>lst</b> */
+void
+config_line_prepend(config_line_t **lst,
+ const char *key,
+ const char *val)
+{
+ tor_assert(lst);
+
+ config_line_t *newline;
+
+ newline = tor_malloc_zero(sizeof(config_line_t));
+ newline->key = tor_strdup(key);
+ newline->value = tor_strdup(val);
+ newline->next = *lst;
+ *lst = newline;
+}
+
+/** Return the first line in <b>lines</b> whose key is exactly <b>key</b>, or
+ * NULL if no such key exists.
+ *
+ * (In options parsing, this is for handling commandline-only options only;
+ * other options should be looked up in the appropriate data structure.) */
+const config_line_t *
+config_line_find(const config_line_t *lines,
+ const char *key)
+{
+ const config_line_t *cl;
+ for (cl = lines; cl; cl = cl->next) {
+ if (!strcmp(cl->key, key))
+ return cl;
+ }
+ return NULL;
+}
+
+/** Auxiliary function that does all the work of config_get_lines.
+ * <b>recursion_level</b> is the count of how many nested %includes we have.
+ * Returns the a pointer to the last element of the <b>result</b> in
+ * <b>last</b>. */
+static int
+config_get_lines_aux(const char *string, config_line_t **result, int extended,
+ int allow_include, int *has_include, int recursion_level,
+ config_line_t **last)
+{
+ config_line_t *list = NULL, **next, *list_last = NULL;
+ char *k, *v;
+ const char *parse_err;
+ int include_used = 0;
+
+ if (recursion_level > MAX_INCLUDE_RECURSION_LEVEL) {
+ log_warn(LD_CONFIG, "Error while parsing configuration: more than %d "
+ "nested %%includes.", MAX_INCLUDE_RECURSION_LEVEL);
+ return -1;
+ }
+
+ next = &list;
+ do {
+ k = v = NULL;
+ string = parse_config_line_from_str_verbose(string, &k, &v, &parse_err);
+ if (!string) {
+ log_warn(LD_CONFIG, "Error while parsing configuration: %s",
+ parse_err?parse_err:"<unknown>");
+ config_free_lines(list);
+ tor_free(k);
+ tor_free(v);
+ return -1;
+ }
+ if (k && v) {
+ unsigned command = CONFIG_LINE_NORMAL;
+ if (extended) {
+ if (k[0] == '+') {
+ char *k_new = tor_strdup(k+1);
+ tor_free(k);
+ k = k_new;
+ command = CONFIG_LINE_APPEND;
+ } else if (k[0] == '/') {
+ char *k_new = tor_strdup(k+1);
+ tor_free(k);
+ k = k_new;
+ tor_free(v);
+ v = tor_strdup("");
+ command = CONFIG_LINE_CLEAR;
+ }
+ }
+
+ if (allow_include && !strcmp(k, "%include")) {
+ tor_free(k);
+ include_used = 1;
+
+ config_line_t *include_list;
+ if (config_process_include(v, recursion_level, extended, &include_list,
+ &list_last) < 0) {
+ log_warn(LD_CONFIG, "Error reading included configuration "
+ "file or directory: \"%s\".", v);
+ config_free_lines(list);
+ tor_free(v);
+ return -1;
+ }
+ *next = include_list;
+ if (list_last)
+ next = &list_last->next;
+ tor_free(v);
+ } else {
+ /* This list can get long, so we keep a pointer to the end of it
+ * rather than using config_line_append over and over and getting
+ * n^2 performance. */
+ *next = tor_malloc_zero(sizeof(**next));
+ (*next)->key = k;
+ (*next)->value = v;
+ (*next)->next = NULL;
+ (*next)->command = command;
+ list_last = *next;
+ next = &((*next)->next);
+ }
+ } else {
+ tor_free(k);
+ tor_free(v);
+ }
+ } while (*string);
+
+ if (last) {
+ *last = list_last;
+ }
+ if (has_include) {
+ *has_include = include_used;
+ }
+ *result = list;
+ return 0;
+}
+
+/** Helper: parse the config string and strdup into key/value
+ * strings. Set *result to the list, or NULL if parsing the string
+ * failed. Set *has_include to 1 if <b>result</b> has values from
+ * %included files. Return 0 on success, -1 on failure. Warn and ignore any
+ * misformatted lines.
+ *
+ * If <b>extended</b> is set, then treat keys beginning with / and with + as
+ * indicating "clear" and "append" respectively. */
+int
+config_get_lines_include(const char *string, config_line_t **result,
+ int extended, int *has_include)
+{
+ return config_get_lines_aux(string, result, extended, 1, has_include, 1,
+ NULL);
+}
+
+/** Same as config_get_lines_include but does not allow %include */
+int
+config_get_lines(const char *string, config_line_t **result, int extended)
+{
+ return config_get_lines_aux(string, result, extended, 0, NULL, 1, NULL);
+}
+
+/** Adds a list of configuration files present on <b>path</b> to
+ * <b>file_list</b>. <b>path</b> can be a file or a directory. If it is a file,
+ * only that file will be added to <b>file_list</b>. If it is a directory,
+ * all paths for files on that directory root (no recursion) except for files
+ * whose name starts with a dot will be added to <b>file_list</b>.
+ * Return 0 on success, -1 on failure. Ignores empty files.
+ */
+static smartlist_t *
+config_get_file_list(const char *path)
+{
+ smartlist_t *file_list = smartlist_new();
+ file_status_t file_type = file_status(path);
+ if (file_type == FN_FILE) {
+ smartlist_add_strdup(file_list, path);
+ return file_list;
+ } else if (file_type == FN_DIR) {
+ smartlist_t *all_files = tor_listdir(path);
+ if (!all_files) {
+ smartlist_free(file_list);
+ return NULL;
+ }
+ smartlist_sort_strings(all_files);
+ SMARTLIST_FOREACH_BEGIN(all_files, char *, f) {
+ if (f[0] == '.') {
+ tor_free(f);
+ continue;
+ }
+
+ char *fullname;
+ tor_asprintf(&fullname, "%s"PATH_SEPARATOR"%s", path, f);
+ tor_free(f);
+
+ if (file_status(fullname) != FN_FILE) {
+ tor_free(fullname);
+ continue;
+ }
+ smartlist_add(file_list, fullname);
+ } SMARTLIST_FOREACH_END(f);
+ smartlist_free(all_files);
+ return file_list;
+ } else if (file_type == FN_EMPTY) {
+ return file_list;
+ } else {
+ smartlist_free(file_list);
+ return NULL;
+ }
+}
+
+/** Creates a list of config lines present on included <b>path</b>.
+ * Set <b>list</b> to the list and <b>list_last</b> to the last element of
+ * <b>list</b>. Return 0 on success, -1 on failure. */
+static int
+config_get_included_list(const char *path, int recursion_level, int extended,
+ config_line_t **list, config_line_t **list_last)
+{
+ char *included_conf = read_file_to_str(path, 0, NULL);
+ if (!included_conf) {
+ return -1;
+ }
+
+ if (config_get_lines_aux(included_conf, list, extended, 1, NULL,
+ recursion_level+1, list_last) < 0) {
+ tor_free(included_conf);
+ return -1;
+ }
+
+ tor_free(included_conf);
+ return 0;
+}
+
+/** Process an %include <b>path</b> in a config file. Set <b>list</b> to the
+ * list of configuration settings obtained and <b>list_last</b> to the last
+ * element of the same list. Return 0 on success, -1 on failure. */
+static int
+config_process_include(const char *path, int recursion_level, int extended,
+ config_line_t **list, config_line_t **list_last)
+{
+ config_line_t *ret_list = NULL;
+ config_line_t **next = &ret_list;
+#if 0
+ // Disabled -- we already unescape_string() on the result. */
+ char *unquoted_path = get_unquoted_path(path);
+ if (!unquoted_path) {
+ return -1;
+ }
+
+ smartlist_t *config_files = config_get_file_list(unquoted_path);
+ if (!config_files) {
+ tor_free(unquoted_path);
+ return -1;
+ }
+ tor_free(unquoted_path);
+#endif
+ smartlist_t *config_files = config_get_file_list(path);
+ if (!config_files) {
+ return -1;
+ }
+
+ int rv = -1;
+ SMARTLIST_FOREACH_BEGIN(config_files, const char *, config_file) {
+ config_line_t *included_list = NULL;
+ if (config_get_included_list(config_file, recursion_level, extended,
+ &included_list, list_last) < 0) {
+ goto done;
+ }
+
+ *next = included_list;
+ if (*list_last)
+ next = &(*list_last)->next;
+
+ } SMARTLIST_FOREACH_END(config_file);
+ *list = ret_list;
+ rv = 0;
+
+ done:
+ SMARTLIST_FOREACH(config_files, char *, f, tor_free(f));
+ smartlist_free(config_files);
+ return rv;
+}
+
+/**
+ * Free all the configuration lines on the linked list <b>front</b>.
+ */
+void
+config_free_lines(config_line_t *front)
+{
+ config_line_t *tmp;
+
+ while (front) {
+ tmp = front;
+ front = tmp->next;
+
+ tor_free(tmp->key);
+ tor_free(tmp->value);
+ tor_free(tmp);
+ }
+}
+
+/** Return a newly allocated deep copy of the lines in <b>inp</b>. */
+config_line_t *
+config_lines_dup(const config_line_t *inp)
+{
+ return config_lines_dup_and_filter(inp, NULL);
+}
+
+/** Return a newly allocated deep copy of the lines in <b>inp</b>,
+ * but only the ones that match <b>key</b>. */
+config_line_t *
+config_lines_dup_and_filter(const config_line_t *inp,
+ const char *key)
+{
+ config_line_t *result = NULL;
+ config_line_t **next_out = &result;
+ while (inp) {
+ if (key && strcasecmpstart(inp->key, key)) {
+ inp = inp->next;
+ continue;
+ }
+ *next_out = tor_malloc_zero(sizeof(config_line_t));
+ (*next_out)->key = tor_strdup(inp->key);
+ (*next_out)->value = tor_strdup(inp->value);
+ inp = inp->next;
+ next_out = &((*next_out)->next);
+ }
+ (*next_out) = NULL;
+ return result;
+}
+
+/** Return true iff a and b contain identical keys and values in identical
+ * order. */
+int
+config_lines_eq(config_line_t *a, config_line_t *b)
+{
+ while (a && b) {
+ if (strcasecmp(a->key, b->key) || strcmp(a->value, b->value))
+ return 0;
+ a = a->next;
+ b = b->next;
+ }
+ if (a || b)
+ return 0;
+ return 1;
+}
+
+/** Return the number of lines in <b>a</b> whose key is <b>key</b>. */
+int
+config_count_key(const config_line_t *a, const char *key)
+{
+ int n = 0;
+ while (a) {
+ if (!strcasecmp(a->key, key)) {
+ ++n;
+ }
+ a = a->next;
+ }
+ return n;
+}
+
+/** Given a string containing part of a configuration file or similar format,
+ * advance past comments and whitespace and try to parse a single line. If we
+ * parse a line successfully, set *<b>key_out</b> to a new string holding the
+ * key portion and *<b>value_out</b> to a new string holding the value portion
+ * of the line, and return a pointer to the start of the next line. If we run
+ * out of data, return a pointer to the end of the string. If we encounter an
+ * error, return NULL and set *<b>err_out</b> (if provided) to an error
+ * message.
+ */
+const char *
+parse_config_line_from_str_verbose(const char *line, char **key_out,
+ char **value_out,
+ const char **err_out)
+{
+ /*
+ See torrc_format.txt for a description of the (silly) format this parses.
+ */
+ const char *key, *val, *cp;
+ int continuation = 0;
+
+ tor_assert(key_out);
+ tor_assert(value_out);
+
+ *key_out = *value_out = NULL;
+ key = val = NULL;
+ /* Skip until the first keyword. */
+ while (1) {
+ while (TOR_ISSPACE(*line))
+ ++line;
+ if (*line == '#') {
+ while (*line && *line != '\n')
+ ++line;
+ } else {
+ break;
+ }
+ }
+
+ if (!*line) { /* End of string? */
+ *key_out = *value_out = NULL;
+ return line;
+ }
+
+ /* Skip until the next space or \ followed by newline. */
+ key = line;
+ while (*line && !TOR_ISSPACE(*line) && *line != '#' &&
+ ! (line[0] == '\\' && line[1] == '\n'))
+ ++line;
+ *key_out = tor_strndup(key, line-key);
+
+ /* Skip until the value. */
+ while (*line == ' ' || *line == '\t')
+ ++line;
+
+ val = line;
+
+ /* Find the end of the line. */
+ if (*line == '\"') { // XXX No continuation handling is done here
+ if (!(line = unescape_string(line, value_out, NULL))) {
+ if (err_out)
+ *err_out = "Invalid escape sequence in quoted string";
+ return NULL;
+ }
+ while (*line == ' ' || *line == '\t')
+ ++line;
+ if (*line == '\r' && *(++line) == '\n')
+ ++line;
+ if (*line && *line != '#' && *line != '\n') {
+ if (err_out)
+ *err_out = "Excess data after quoted string";
+ return NULL;
+ }
+ } else {
+ /* Look for the end of the line. */
+ while (*line && *line != '\n' && (*line != '#' || continuation)) {
+ if (*line == '\\' && line[1] == '\n') {
+ continuation = 1;
+ line += 2;
+ } else if (*line == '#') {
+ do {
+ ++line;
+ } while (*line && *line != '\n');
+ if (*line == '\n')
+ ++line;
+ } else {
+ ++line;
+ }
+ }
+
+ if (*line == '\n') {
+ cp = line++;
+ } else {
+ cp = line;
+ }
+ /* Now back cp up to be the last nonspace character */
+ while (cp>val && TOR_ISSPACE(*(cp-1)))
+ --cp;
+
+ tor_assert(cp >= val);
+
+ /* Now copy out and decode the value. */
+ *value_out = tor_strndup(val, cp-val);
+ if (continuation) {
+ char *v_out, *v_in;
+ v_out = v_in = *value_out;
+ while (*v_in) {
+ if (*v_in == '#') {
+ do {
+ ++v_in;
+ } while (*v_in && *v_in != '\n');
+ if (*v_in == '\n')
+ ++v_in;
+ } else if (v_in[0] == '\\' && v_in[1] == '\n') {
+ v_in += 2;
+ } else {
+ *v_out++ = *v_in++;
+ }
+ }
+ *v_out = '\0';
+ }
+ }
+
+ if (*line == '#') {
+ do {
+ ++line;
+ } while (*line && *line != '\n');
+ }
+ while (TOR_ISSPACE(*line)) ++line;
+
+ return line;
+}
+
diff --git a/src/common/confline.h b/src/common/confline.h
new file mode 100644
index 0000000000..eb863e8fd8
--- /dev/null
+++ b/src/common/confline.h
@@ -0,0 +1,53 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * 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 */
+
+#ifndef TOR_CONFLINE_H
+#define TOR_CONFLINE_H
+
+/** Ordinary configuration line. */
+#define CONFIG_LINE_NORMAL 0
+/** Appends to previous configuration for the same option, even if we
+ * would ordinary replace it. */
+#define CONFIG_LINE_APPEND 1
+/* Removes all previous configuration for an option. */
+#define CONFIG_LINE_CLEAR 2
+
+#define MAX_INCLUDE_RECURSION_LEVEL 31
+
+/** A linked list of lines in a config file, or elsewhere */
+typedef struct config_line_t {
+ char *key;
+ char *value;
+ struct config_line_t *next;
+
+ /** What special treatment (if any) does this line require? */
+ unsigned int command:2;
+ /** If true, subsequent assignments to this linelist should replace
+ * it, not extend it. Set only on the first item in a linelist in an
+ * or_options_t. */
+ unsigned int fragile:1;
+} config_line_t;
+
+void config_line_append(config_line_t **lst,
+ const char *key, const char *val);
+void config_line_prepend(config_line_t **lst,
+ const char *key, const char *val);
+config_line_t *config_lines_dup(const config_line_t *inp);
+config_line_t *config_lines_dup_and_filter(const config_line_t *inp,
+ const char *key);
+const config_line_t *config_line_find(const config_line_t *lines,
+ const char *key);
+int config_lines_eq(config_line_t *a, config_line_t *b);
+int config_count_key(const config_line_t *a, const char *key);
+int config_get_lines(const char *string, config_line_t **result, int extended);
+int config_get_lines_include(const char *string, config_line_t **result,
+ int extended, int *has_include);
+void config_free_lines(config_line_t *front);
+const char *parse_config_line_from_str_verbose(const char *line,
+ char **key_out, char **value_out,
+ const char **err_out);
+#endif
+
diff --git a/src/common/container.c b/src/common/container.c
index 1448ab403c..689e7e55e9 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/container.h b/src/common/container.h
index 00c3ca81ad..db68d892f5 100644
--- a/src/common/container.h
+++ b/src/common/container.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONTAINER_H
@@ -224,6 +224,7 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
#define SMARTLIST_FOREACH_END(var) \
var = NULL; \
+ (void) var ## _sl_idx; \
} STMT_END
/**
diff --git a/src/common/crypto.c b/src/common/crypto.c
index d1357182d2..d2801e0d45 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -467,7 +467,7 @@ crypto_new_pk_from_rsa_(RSA *rsa)
return env;
}
-/** Helper, used by tor-checkkey.c and tor-gencert.c. Return the RSA from a
+/** Helper, used by tor-gencert.c. Return the RSA from a
* crypto_pk_t. */
RSA *
crypto_pk_get_rsa_(crypto_pk_t *env)
@@ -479,7 +479,7 @@ crypto_pk_get_rsa_(crypto_pk_t *env)
* private is set, include the private-key portion of the key. Return a valid
* pointer on success, and NULL on failure. */
MOCK_IMPL(EVP_PKEY *,
- crypto_pk_get_evp_pkey_,(crypto_pk_t *env, int private))
+crypto_pk_get_evp_pkey_,(crypto_pk_t *env, int private))
{
RSA *key = NULL;
EVP_PKEY *pkey = NULL;
@@ -516,7 +516,7 @@ crypto_dh_get_dh_(crypto_dh_t *dh)
* be set.
*/
MOCK_IMPL(crypto_pk_t *,
- crypto_pk_new,(void))
+crypto_pk_new,(void))
{
RSA *rsa;
@@ -606,7 +606,7 @@ crypto_cipher_free(crypto_cipher_t *env)
* Return 0 on success, -1 on failure.
*/
MOCK_IMPL(int,
- crypto_pk_generate_key_with_bits,(crypto_pk_t *env, int bits))
+crypto_pk_generate_key_with_bits,(crypto_pk_t *env, int bits))
{
tor_assert(env);
@@ -653,7 +653,12 @@ pem_no_password_cb(char *buf, int size, int rwflag, void *u)
(void)size;
(void)rwflag;
(void)u;
- return 0;
+ /* The openssl documentation says that a callback "must" return 0 if an
+ * error occurred. But during the 1.1.1 series (commit c82c3462267afdbbaa5
+ * they changed the interpretation so that 0 indicates an empty password and
+ * -1 indicates an error. We want to reject any encrypted PEM buffers, so we
+ * return -1. This will work on older OpenSSL versions and LibreSSL too. */
+ return -1;
}
/** Read a PEM-encoded private key from the <b>len</b>-byte string <b>s</b>
@@ -3469,3 +3474,15 @@ crypto_global_cleanup(void)
/** @} */
+#ifdef USE_DMALLOC
+/** Tell the crypto library to use Tor's allocation functions rather than
+ * calling libc's allocation functions directly. Return 0 on success, -1
+ * on failure. */
+int
+crypto_use_tor_alloc_functions(void)
+{
+ int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
+ return r ? 0 : -1;
+}
+#endif
+
diff --git a/src/common/crypto.h b/src/common/crypto.h
index 42345f80e8..c70d91c262 100644
--- a/src/common/crypto.h
+++ b/src/common/crypto.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -131,6 +131,10 @@ int crypto_early_init(void) ATTR_WUR;
int crypto_global_init(int hardwareAccel,
const char *accelName,
const char *accelPath) ATTR_WUR;
+#ifdef USE_DMALLOC
+int crypto_use_tor_alloc_functions(void);
+#endif
+
void crypto_thread_cleanup(void);
int crypto_global_cleanup(void);
diff --git a/src/common/crypto_curve25519.c b/src/common/crypto_curve25519.c
index 5f328e124c..b99f13a93b 100644
--- a/src/common/crypto_curve25519.c
+++ b/src/common/crypto_curve25519.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/crypto_curve25519.h b/src/common/crypto_curve25519.h
index 4011820949..e7790edac0 100644
--- a/src/common/crypto_curve25519.h
+++ b/src/common/crypto_curve25519.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CRYPTO_CURVE25519_H
diff --git a/src/common/crypto_ed25519.c b/src/common/crypto_ed25519.c
index 525d25a3e0..188e18c710 100644
--- a/src/common/crypto_ed25519.c
+++ b/src/common/crypto_ed25519.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,8 +32,6 @@
#include "ed25519/ref10/ed25519_ref10.h"
#include "ed25519/donna/ed25519_donna_tor.h"
-#include <openssl/sha.h>
-
static void pick_ed25519_impl(void);
/** An Ed25519 implementation, as a set of function pointers. */
@@ -442,14 +440,16 @@ ed25519_keypair_from_curve25519_keypair(ed25519_keypair_t *out,
{
const char string[] = "Derive high part of ed25519 key from curve25519 key";
ed25519_public_key_t pubkey_check;
- SHA512_CTX ctx;
- uint8_t sha512_output[64];
+ crypto_digest_t *ctx;
+ uint8_t sha512_output[DIGEST512_LEN];
memcpy(out->seckey.seckey, inp->seckey.secret_key, 32);
- SHA512_Init(&ctx);
- SHA512_Update(&ctx, out->seckey.seckey, 32);
- SHA512_Update(&ctx, string, sizeof(string));
- SHA512_Final(sha512_output, &ctx);
+
+ ctx = crypto_digest512_new(DIGEST_SHA512);
+ crypto_digest_add_bytes(ctx, (const char*)out->seckey.seckey, 32);
+ crypto_digest_add_bytes(ctx, (const char*)string, sizeof(string));
+ crypto_digest_get_digest(ctx, (char *)sha512_output, sizeof(sha512_output));
+ crypto_digest_free(ctx);
memcpy(out->seckey.seckey + 32, sha512_output, 32);
ed25519_public_key_generate(&out->pubkey, &out->seckey);
diff --git a/src/common/crypto_ed25519.h b/src/common/crypto_ed25519.h
index f4a4adad68..77a3313adc 100644
--- a/src/common/crypto_ed25519.h
+++ b/src/common/crypto_ed25519.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CRYPTO_ED25519_H
diff --git a/src/common/crypto_format.c b/src/common/crypto_format.c
index aa2a9d1fb0..1d090a8770 100644
--- a/src/common/crypto_format.c
+++ b/src/common/crypto_format.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/crypto_format.h b/src/common/crypto_format.h
index 86c29d319c..390916cf04 100644
--- a/src/common/crypto_format.h
+++ b/src/common/crypto_format.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CRYPTO_FORMAT_H
diff --git a/src/common/crypto_pwbox.c b/src/common/crypto_pwbox.c
index 31e37c007d..db8892e376 100644
--- a/src/common/crypto_pwbox.c
+++ b/src/common/crypto_pwbox.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/crypto_s2k.c b/src/common/crypto_s2k.c
index 5dbd2ad91f..076df815a9 100644
--- a/src/common/crypto_s2k.c
+++ b/src/common/crypto_s2k.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/crypto_s2k.h b/src/common/crypto_s2k.h
index 9b186450b1..04212b868a 100644
--- a/src/common/crypto_s2k.h
+++ b/src/common/crypto_s2k.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CRYPTO_S2K_H_INCLUDED
diff --git a/src/common/di_ops.c b/src/common/di_ops.c
index 4ed49e1164..e47998107d 100644
--- a/src/common/di_ops.c
+++ b/src/common/di_ops.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/di_ops.h b/src/common/di_ops.h
index 0a154302bf..e174fcc4e4 100644
--- a/src/common/di_ops.h
+++ b/src/common/di_ops.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/handles.h b/src/common/handles.h
index 1ee2322579..6d7262ab80 100644
--- a/src/common/handles.h
+++ b/src/common/handles.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/include.am b/src/common/include.am
index 40c463c9d9..d12895b107 100644
--- a/src/common/include.am
+++ b/src/common/include.am
@@ -80,10 +80,12 @@ src_common_libor_ctime_testing_a_CFLAGS = @CFLAGS_CONSTTIME@ $(TEST_CFLAGS)
LIBOR_A_SRC = \
src/common/address.c \
+ src/common/address_set.c \
src/common/backtrace.c \
src/common/compat.c \
src/common/compat_threads.c \
src/common/compat_time.c \
+ src/common/confline.c \
src/common/container.c \
src/common/log.c \
src/common/memarea.c \
@@ -93,21 +95,31 @@ LIBOR_A_SRC = \
src/common/util_format.c \
src/common/util_process.c \
src/common/sandbox.c \
+ src/common/storagedir.c \
src/common/workqueue.c \
$(libor_extra_source) \
$(threads_impl_source) \
$(readpassphrase_source)
+if USE_RUST
+else
+LIBOR_A_SRC += src/common/compat_rust.c
+endif
+
src/common/src_common_libor_testing_a-log.$(OBJEXT) \
src/common/log.$(OBJEXT): micro-revision.i
LIBOR_CRYPTO_A_SRC = \
src/common/aes.c \
+ src/common/compress.c \
+ src/common/compress_lzma.c \
+ src/common/compress_none.c \
+ src/common/compress_zlib.c \
+ src/common/compress_zstd.c \
src/common/crypto.c \
src/common/crypto_pwbox.c \
src/common/crypto_s2k.c \
src/common/crypto_format.c \
- src/common/torgzip.c \
src/common/tortls.c \
src/common/crypto_curve25519.c \
src/common/crypto_ed25519.c
@@ -135,14 +147,22 @@ src_common_libor_event_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
COMMONHEADERS = \
src/common/address.h \
+ src/common/address_set.h \
src/common/backtrace.h \
src/common/aes.h \
src/common/ciphers.inc \
src/common/compat.h \
src/common/compat_libevent.h \
src/common/compat_openssl.h \
+ src/common/compat_rust.h \
src/common/compat_threads.h \
src/common/compat_time.h \
+ src/common/compress.h \
+ src/common/compress_lzma.h \
+ src/common/compress_none.h \
+ src/common/compress_zlib.h \
+ src/common/compress_zstd.h \
+ src/common/confline.h \
src/common/container.h \
src/common/crypto.h \
src/common/crypto_curve25519.h \
@@ -157,9 +177,9 @@ COMMONHEADERS = \
src/common/procmon.h \
src/common/pubsub.h \
src/common/sandbox.h \
+ src/common/storagedir.h \
src/common/testsupport.h \
src/common/timers.h \
- src/common/torgzip.h \
src/common/torint.h \
src/common/torlog.h \
src/common/tortls.h \
diff --git a/src/common/log.c b/src/common/log.c
index 5f7151bf0c..87c260799d 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1086,7 +1086,7 @@ add_file_log(const log_severity_list_t *severity, const char *filename,
int open_flags = O_WRONLY|O_CREAT;
open_flags |= truncate_log ? O_TRUNC : O_APPEND;
- fd = tor_open_cloexec(filename, open_flags, 0644);
+ fd = tor_open_cloexec(filename, open_flags, 0640);
if (fd<0)
return -1;
if (tor_fd_seekend(fd)<0) {
@@ -1177,7 +1177,7 @@ static const char *domain_list[] = {
"GENERAL", "CRYPTO", "NET", "CONFIG", "FS", "PROTOCOL", "MM",
"HTTP", "APP", "CONTROL", "CIRC", "REND", "BUG", "DIR", "DIRSERV",
"OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", "HEARTBEAT", "CHANNEL",
- "SCHED", "GUARD", NULL
+ "SCHED", "GUARD", "CONSDIFF", "DOS", NULL
};
/** Return a bitmask for the log domain for which <b>domain</b> is the name,
diff --git a/src/common/memarea.c b/src/common/memarea.c
index 7d16b702e3..659d1edf54 100644
--- a/src/common/memarea.c
+++ b/src/common/memarea.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2016, The Tor Project, Inc. */
+/* Copyright (c) 2008-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** \file memarea.c
@@ -12,6 +12,9 @@
#include "util.h"
#include "compat.h"
#include "torlog.h"
+#include "container.h"
+
+#ifndef DISABLE_MEMORY_SENTINELS
/** If true, we try to detect any attempts to write beyond the length of a
* memarea. */
@@ -304,3 +307,91 @@ memarea_assert_ok(memarea_t *area)
}
}
+#else
+
+struct memarea_t {
+ smartlist_t *pieces;
+};
+
+memarea_t *
+memarea_new(void)
+{
+ memarea_t *ma = tor_malloc_zero(sizeof(memarea_t));
+ ma->pieces = smartlist_new();
+ return ma;
+}
+void
+memarea_drop_all(memarea_t *area)
+{
+ memarea_clear(area);
+ smartlist_free(area->pieces);
+ tor_free(area);
+}
+void
+memarea_clear(memarea_t *area)
+{
+ SMARTLIST_FOREACH(area->pieces, void *, p, tor_free_(p));
+ smartlist_clear(area->pieces);
+}
+int
+memarea_owns_ptr(const memarea_t *area, const void *ptr)
+{
+ SMARTLIST_FOREACH(area->pieces, const void *, p, if (ptr == p) return 1;);
+ return 0;
+}
+
+void *
+memarea_alloc(memarea_t *area, size_t sz)
+{
+ void *result = tor_malloc(sz);
+ smartlist_add(area->pieces, result);
+ return result;
+}
+
+void *
+memarea_alloc_zero(memarea_t *area, size_t sz)
+{
+ void *result = tor_malloc_zero(sz);
+ smartlist_add(area->pieces, result);
+ return result;
+}
+void *
+memarea_memdup(memarea_t *area, const void *s, size_t n)
+{
+ void *r = memarea_alloc(area, n);
+ memcpy(r, s, n);
+ return r;
+}
+char *
+memarea_strdup(memarea_t *area, const char *s)
+{
+ size_t n = strlen(s);
+ char *r = memarea_alloc(area, n+1);
+ memcpy(r, s, n);
+ r[n] = 0;
+ return r;
+}
+char *
+memarea_strndup(memarea_t *area, const char *s, size_t n)
+{
+ size_t ln = strnlen(s, n);
+ char *r = memarea_alloc(area, ln+1);
+ memcpy(r, s, ln);
+ r[ln] = 0;
+ return r;
+}
+void
+memarea_get_stats(memarea_t *area,
+ size_t *allocated_out, size_t *used_out)
+{
+ (void)area;
+ *allocated_out = *used_out = 128;
+}
+void
+memarea_assert_ok(memarea_t *area)
+{
+ (void)area;
+}
+
+#endif
+
diff --git a/src/common/memarea.h b/src/common/memarea.h
index 85bca51ad3..85012c1c34 100644
--- a/src/common/memarea.h
+++ b/src/common/memarea.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2016, The Tor Project, Inc. */
+/* Copyright (c) 2008-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Tor dependencies */
diff --git a/src/common/procmon.c b/src/common/procmon.c
index c485c760c7..d49e7f18f5 100644
--- a/src/common/procmon.c
+++ b/src/common/procmon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/procmon.h b/src/common/procmon.h
index 49ead24092..b07cff2c4a 100644
--- a/src/common/procmon.h
+++ b/src/common/procmon.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/pubsub.c b/src/common/pubsub.c
index b3faf40e00..336e8a6e7f 100644
--- a/src/common/pubsub.c
+++ b/src/common/pubsub.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/pubsub.h b/src/common/pubsub.h
index bbb4f02a42..6f4ce08754 100644
--- a/src/common/pubsub.h
+++ b/src/common/pubsub.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index 2e1519e922..312cf37722 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -19,8 +19,14 @@
#define _LARGEFILE64_SOURCE
#endif
-/** Malloc mprotect limit in bytes. */
-#define MALLOC_MP_LIM 1048576
+/** Malloc mprotect limit in bytes.
+ *
+ * 28/06/2017: This value was increased from 16 MB to 20 MB after we introduced
+ * LZMA support in Tor (0.3.1.1-alpha). We limit our LZMA coder to 16 MB, but
+ * liblzma have a small overhead that we need to compensate for to avoid being
+ * killed by the sandbox.
+ */
+#define MALLOC_MP_LIM (20*1024*1024)
#include <stdio.h>
#include <string.h>
@@ -56,6 +62,9 @@
#include <time.h>
#include <poll.h>
+#ifdef HAVE_GNU_LIBC_VERSION_H
+#include <gnu/libc-version.h>
+#endif
#ifdef HAVE_LINUX_NETFILTER_IPV4_H
#include <linux/netfilter_ipv4.h>
#endif
@@ -127,6 +136,9 @@ static int filter_nopar_gen[] = {
SCMP_SYS(clone),
SCMP_SYS(epoll_create),
SCMP_SYS(epoll_wait),
+#ifdef __NR_epoll_pwait
+ SCMP_SYS(epoll_pwait),
+#endif
#ifdef HAVE_EVENTFD
SCMP_SYS(eventfd2),
#endif
@@ -179,6 +191,9 @@ static int filter_nopar_gen[] = {
SCMP_SYS(mmap),
#endif
SCMP_SYS(munmap),
+#ifdef __NR_nanosleep
+ SCMP_SYS(nanosleep),
+#endif
#ifdef __NR_prlimit
SCMP_SYS(prlimit),
#endif
@@ -241,7 +256,8 @@ static int filter_nopar_gen[] = {
SCMP_SYS(recvmsg),
SCMP_SYS(recvfrom),
SCMP_SYS(sendto),
- SCMP_SYS(unlink)
+ SCMP_SYS(unlink),
+ SCMP_SYS(poll)
};
/* These macros help avoid the error where the number of filters we add on a
@@ -421,6 +437,52 @@ sb_mmap2(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
}
#endif
+#ifdef HAVE_GNU_LIBC_VERSION_H
+#ifdef HAVE_GNU_GET_LIBC_VERSION
+#define CHECK_LIBC_VERSION
+#endif
+#endif
+
+/* Return true if we think we're running with a libc that always uses
+ * openat on linux. */
+static int
+libc_uses_openat_for_everything(void)
+{
+#ifdef CHECK_LIBC_VERSION
+ const char *version = gnu_get_libc_version();
+ if (version == NULL)
+ return 0;
+
+ int major = -1;
+ int minor = -1;
+
+ tor_sscanf(version, "%d.%d", &major, &minor);
+ if (major >= 3)
+ return 1;
+ else if (major == 2 && minor >= 26)
+ return 1;
+ else
+ return 0;
+#else
+ return 0;
+#endif
+}
+
+/** Allow a single file to be opened. If <b>use_openat</b> is true,
+ * we're using a libc that remaps all the opens into openats. */
+static int
+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_STR(1, SCMP_CMP_EQ, file));
+ } else {
+ return seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open),
+ SCMP_CMP_STR(0, SCMP_CMP_EQ, file));
+ }
+}
+
/**
* Function responsible for setting up the open syscall for
* the seccomp filter sandbox.
@@ -431,14 +493,15 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
int rc;
sandbox_cfg_t *elem = NULL;
+ int use_openat = libc_uses_openat_for_everything();
+
// for each dynamic parameter filters
for (elem = filter; elem != NULL; elem = elem->next) {
smp_param_t *param = elem->param;
if (param != NULL && param->prot == 1 && param->syscall
== SCMP_SYS(open)) {
- rc = seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open),
- SCMP_CMP_STR(0, SCMP_CMP_EQ, param->value));
+ rc = allow_file_open(ctx, use_openat, param->value);
if (rc != 0) {
log_err(LD_BUG,"(Sandbox) failed to add open syscall, received "
"libseccomp error %d", rc);
@@ -456,6 +519,15 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
return rc;
}
+ rc = seccomp_rule_add_1(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(openat),
+ SCMP_CMP_MASKED(2, O_CLOEXEC|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW,
+ O_RDONLY));
+ if (rc != 0) {
+ log_err(LD_BUG,"(Sandbox) failed to add openat syscall, received "
+ "libseccomp error %d", rc);
+ return rc;
+ }
+
return 0;
}
@@ -645,7 +717,7 @@ sb_socket(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket),
SCMP_CMP(0, SCMP_CMP_EQ, PF_NETLINK),
- SCMP_CMP(1, SCMP_CMP_EQ, SOCK_RAW),
+ SCMP_CMP_MASKED(1, SOCK_CLOEXEC, SOCK_RAW),
SCMP_CMP(2, SCMP_CMP_EQ, 0));
if (rc)
return rc;
@@ -1000,25 +1072,6 @@ sb_mremap(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
return 0;
}
-/**
- * Function responsible for setting up the poll syscall for
- * the seccomp filter sandbox.
- */
-static int
-sb_poll(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
-{
- int rc = 0;
- (void) filter;
-
- rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(poll),
- SCMP_CMP(1, SCMP_CMP_EQ, 1),
- SCMP_CMP(2, SCMP_CMP_EQ, 10));
- if (rc)
- return rc;
-
- return 0;
-}
-
#ifdef __NR_stat64
/**
* Function responsible for setting up the stat64 syscall for
@@ -1050,6 +1103,19 @@ sb_stat64(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
}
#endif
+static int
+sb_kill(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
+{
+ (void) filter;
+#ifdef __NR_kill
+ /* Allow killing anything with signal 0 -- it isn't really a kill. */
+ return seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(kill),
+ SCMP_CMP(1, SCMP_CMP_EQ, 0));
+#else
+ return 0;
+#endif
+}
+
/**
* Array of function pointers responsible for filtering different syscalls at
* a parameter level.
@@ -1080,7 +1146,6 @@ static sandbox_filter_func_t filter_func[] = {
sb_flock,
sb_futex,
sb_mremap,
- sb_poll,
#ifdef __NR_stat64
sb_stat64,
#endif
@@ -1088,7 +1153,8 @@ static sandbox_filter_func_t filter_func[] = {
sb_socket,
sb_setsockopt,
sb_getsockopt,
- sb_socketpair
+ sb_socketpair,
+ sb_kill
};
const char *
@@ -1616,7 +1682,8 @@ add_param_filter(scmp_filter_ctx ctx, sandbox_cfg_t* cfg)
// function pointer
for (i = 0; i < ARRAY_LENGTH(filter_func); i++) {
- if ((filter_func[i])(ctx, cfg)) {
+ rc = filter_func[i](ctx, cfg);
+ if (rc) {
log_err(LD_BUG,"(Sandbox) failed to add syscall %d, received libseccomp "
"error %d", i, rc);
return rc;
diff --git a/src/common/sandbox.h b/src/common/sandbox.h
index c5963e3119..a6b83153af 100644
--- a/src/common/sandbox.h
+++ b/src/common/sandbox.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/storagedir.c b/src/common/storagedir.c
new file mode 100644
index 0000000000..c471ea911f
--- /dev/null
+++ b/src/common/storagedir.c
@@ -0,0 +1,586 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "container.h"
+#include "compat.h"
+#include "confline.h"
+#include "memarea.h"
+#include "sandbox.h"
+#include "storagedir.h"
+#include "torlog.h"
+#include "util.h"
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#define FNAME_MIN_NUM 1000
+
+/** A storage_dir_t represents a directory full of similar cached
+ * files. Filenames are decimal integers. Files can be cleaned as needed
+ * to limit total disk usage. */
+struct storage_dir_t {
+ /** Directory holding the files for this storagedir. */
+ char *directory;
+ /** Either NULL, or a directory listing of the directory (as a smartlist
+ * of strings */
+ smartlist_t *contents;
+ /** The largest number of non-temporary files we'll place in the
+ * directory. */
+ int max_files;
+ /** If true, then 'usage' has been computed. */
+ int usage_known;
+ /** The total number of bytes used in this directory */
+ uint64_t usage;
+};
+
+/** Create or open a new storage directory at <b>dirname</b>, with
+ * capacity for up to <b>max_files</b> files.
+ */
+storage_dir_t *
+storage_dir_new(const char *dirname, int max_files)
+{
+ if (check_private_dir(dirname, CPD_CREATE, NULL) < 0)
+ return NULL;
+
+ storage_dir_t *d = tor_malloc_zero(sizeof(storage_dir_t));
+ d->directory = tor_strdup(dirname);
+ d->max_files = max_files;
+ return d;
+}
+
+/**
+ * Drop all in-RAM storage for <b>d</b>. Does not delete any files.
+ */
+void
+storage_dir_free(storage_dir_t *d)
+{
+ if (d == NULL)
+ return;
+ tor_free(d->directory);
+ if (d->contents) {
+ SMARTLIST_FOREACH(d->contents, char *, cp, tor_free(cp));
+ smartlist_free(d->contents);
+ }
+ tor_free(d);
+}
+
+/**
+ * Tell the sandbox (if any) configured by <b>cfg</b> to allow the
+ * operations that <b>d</b> will need.
+ *
+ * The presence of this function is why we need an upper limit on the
+ * number of files in a storage_dir_t: we need to approve file operations
+ * one by one.
+ */
+int
+storage_dir_register_with_sandbox(storage_dir_t *d, sandbox_cfg_t **cfg)
+{
+ int problems = 0;
+ int idx;
+ for (idx = FNAME_MIN_NUM; idx < FNAME_MIN_NUM + d->max_files; ++idx) {
+ char *path = NULL, *tmppath = NULL;
+ tor_asprintf(&path, "%s/%d", d->directory, idx);
+ tor_asprintf(&tmppath, "%s/%d.tmp", d->directory, idx);
+
+ problems += sandbox_cfg_allow_open_filename(cfg, tor_strdup(path));
+ problems += sandbox_cfg_allow_open_filename(cfg, tor_strdup(tmppath));
+ problems += sandbox_cfg_allow_stat_filename(cfg, tor_strdup(path));
+ problems += sandbox_cfg_allow_stat_filename(cfg, tor_strdup(tmppath));
+ problems += sandbox_cfg_allow_rename(cfg,
+ tor_strdup(tmppath), tor_strdup(path));
+
+ tor_free(path);
+ tor_free(tmppath);
+ }
+
+ return problems ? -1 : 0;
+}
+
+/**
+ * Remove all files in <b>d</b> whose names end with ".tmp".
+ *
+ * Requires that the contents field of <b>d</b> is set.
+ */
+static void
+storage_dir_clean_tmpfiles(storage_dir_t *d)
+{
+ if (!d->contents)
+ return;
+ SMARTLIST_FOREACH_BEGIN(d->contents, char *, fname) {
+ if (strcmpend(fname, ".tmp"))
+ continue;
+ char *path = NULL;
+ tor_asprintf(&path, "%s/%s", d->directory, fname);
+ if (unlink(sandbox_intern_string(path))) {
+ log_warn(LD_FS, "Unable to unlink %s while cleaning "
+ "temporary files: %s", escaped(path), strerror(errno));
+ tor_free(path);
+ continue;
+ }
+ tor_free(path);
+ SMARTLIST_DEL_CURRENT(d->contents, fname);
+ tor_free(fname);
+ } SMARTLIST_FOREACH_END(fname);
+
+ d->usage_known = 0;
+}
+
+/**
+ * Re-scan the directory <b>d</b> to learn its contents.
+ */
+static int
+storage_dir_rescan(storage_dir_t *d)
+{
+ if (d->contents) {
+ SMARTLIST_FOREACH(d->contents, char *, cp, tor_free(cp));
+ smartlist_free(d->contents);
+ }
+ d->usage = 0;
+ d->usage_known = 0;
+ if (NULL == (d->contents = tor_listdir(d->directory))) {
+ return -1;
+ }
+ storage_dir_clean_tmpfiles(d);
+ return 0;
+}
+
+/**
+ * Return a smartlist containing the filenames within <b>d</b>.
+ */
+const smartlist_t *
+storage_dir_list(storage_dir_t *d)
+{
+ if (! d->contents)
+ storage_dir_rescan(d);
+ return d->contents;
+}
+
+/**
+ * Return the total number of bytes used for storage in <b>d</b>.
+ */
+uint64_t
+storage_dir_get_usage(storage_dir_t *d)
+{
+ if (d->usage_known)
+ return d->usage;
+
+ uint64_t total = 0;
+ SMARTLIST_FOREACH_BEGIN(storage_dir_list(d), const char *, cp) {
+ char *path = NULL;
+ struct stat st;
+ tor_asprintf(&path, "%s/%s", d->directory, cp);
+ if (stat(sandbox_intern_string(path), &st) == 0) {
+ total += st.st_size;
+ }
+ tor_free(path);
+ } SMARTLIST_FOREACH_END(cp);
+
+ d->usage = total;
+ d->usage_known = 1;
+ return d->usage;
+}
+
+/** Mmap a specified file within <b>d</b>.
+ *
+ * On failure, return NULL and set errno as for tor_mmap_file(). */
+tor_mmap_t *
+storage_dir_map(storage_dir_t *d, const char *fname)
+{
+ char *path = NULL;
+ tor_asprintf(&path, "%s/%s", d->directory, fname);
+ tor_mmap_t *result = tor_mmap_file(path);
+ int errval = errno;
+ tor_free(path);
+ if (result == NULL)
+ errno = errval;
+ return result;
+}
+
+/** Read a file within <b>d</b> into a newly allocated buffer. Set
+ * *<b>sz_out</b> to its size. */
+uint8_t *
+storage_dir_read(storage_dir_t *d, const char *fname, int bin, size_t *sz_out)
+{
+ const int flags = bin ? RFTS_BIN : 0;
+
+ char *path = NULL;
+ tor_asprintf(&path, "%s/%s", d->directory, fname);
+ struct stat st;
+ char *contents = read_file_to_str(path, flags, &st);
+ if (contents && sz_out) {
+ // it fits in RAM, so we know its size is less than SIZE_MAX
+#if UINT64_MAX > SIZE_MAX
+ tor_assert((uint64_t)st.st_size <= SIZE_MAX);
+#endif
+ *sz_out = (size_t) st.st_size;
+ }
+
+ tor_free(path);
+ return (uint8_t *) contents;
+}
+
+/** Helper: Find an unused filename within the directory */
+static char *
+find_unused_fname(storage_dir_t *d)
+{
+ if (!d->contents) {
+ if (storage_dir_rescan(d) < 0)
+ return NULL;
+ }
+
+ char buf[16];
+ int i;
+ /* Yuck; this is quadratic. Fortunately, that shouldn't matter much,
+ * since disk writes are more expensive by a lot. */
+ for (i = FNAME_MIN_NUM; i < FNAME_MIN_NUM + d->max_files; ++i) {
+ tor_snprintf(buf, sizeof(buf), "%d", i);
+ if (!smartlist_contains_string(d->contents, buf)) {
+ return tor_strdup(buf);
+ }
+ }
+ return NULL;
+}
+
+/** Helper: As storage_dir_save_bytes_to_file, but store a smartlist of
+ * sized_chunk_t rather than a single byte array. */
+static int
+storage_dir_save_chunks_to_file(storage_dir_t *d,
+ const smartlist_t *chunks,
+ int binary,
+ char **fname_out)
+{
+ uint64_t total_length = 0;
+ char *fname = find_unused_fname(d);
+ if (!fname)
+ return -1;
+
+ SMARTLIST_FOREACH(chunks, const sized_chunk_t *, ch,
+ total_length += ch->len);
+
+ char *path = NULL;
+ tor_asprintf(&path, "%s/%s", d->directory, fname);
+
+ int r = write_chunks_to_file(path, chunks, binary, 0);
+ if (r == 0) {
+ if (d->usage_known)
+ d->usage += total_length;
+ if (fname_out) {
+ *fname_out = tor_strdup(fname);
+ }
+ if (d->contents)
+ smartlist_add(d->contents, tor_strdup(fname));
+ }
+ tor_free(fname);
+ tor_free(path);
+ return r;
+}
+
+/** Try to write the <b>length</b> bytes at <b>data</b> into a new file
+ * in <b>d</b>. On success, return 0 and set *<b>fname_out</b> to a
+ * newly allocated string containing the filename. On failure, return
+ * -1. */
+int
+storage_dir_save_bytes_to_file(storage_dir_t *d,
+ const uint8_t *data,
+ size_t length,
+ int binary,
+ char **fname_out)
+{
+ smartlist_t *chunks = smartlist_new();
+ sized_chunk_t chunk = { (const char *)data, length };
+ smartlist_add(chunks, &chunk);
+ int r = storage_dir_save_chunks_to_file(d, chunks, binary, fname_out);
+ smartlist_free(chunks);
+ return r;
+}
+
+/**
+ * As storage_dir_save_bytes_to_file, but saves a NUL-terminated string
+ * <b>str</b>.
+ */
+int
+storage_dir_save_string_to_file(storage_dir_t *d,
+ const char *str,
+ int binary,
+ char **fname_out)
+{
+ return storage_dir_save_bytes_to_file(d,
+ (const uint8_t*)str, strlen(str), binary, fname_out);
+}
+
+/**
+ * As storage_dir_save_bytes_to_file, but associates the data with the
+ * key-value pairs in <b>labels</b>. Files stored in this format can be
+ * recovered with storage_dir_map_labeled() or storage_dir_read_labeled().
+ */
+int
+storage_dir_save_labeled_to_file(storage_dir_t *d,
+ const config_line_t *labels,
+ const uint8_t *data,
+ size_t length,
+ char **fname_out)
+{
+ /*
+ * The storage format is to prefix the data with the key-value pairs in
+ * <b>labels</b>, and a single NUL separator. But code outside this module
+ * MUST NOT rely on that format.
+ */
+
+ smartlist_t *chunks = smartlist_new();
+ memarea_t *area = memarea_new();
+ const config_line_t *line;
+ for (line = labels; line; line = line->next) {
+ sized_chunk_t *sz = memarea_alloc(area, sizeof(sized_chunk_t));
+ sz->len = strlen(line->key) + 1 + strlen(line->value) + 1;
+ const size_t allocated = sz->len + 1;
+ char *bytes = memarea_alloc(area, allocated);
+ tor_snprintf(bytes, allocated, "%s %s\n", line->key, line->value);
+ sz->bytes = bytes;
+ smartlist_add(chunks, sz);
+ }
+
+ sized_chunk_t *nul = memarea_alloc(area, sizeof(sized_chunk_t));
+ nul->len = 1;
+ nul->bytes = "\0";
+ smartlist_add(chunks, nul);
+
+ sized_chunk_t *datachunk = memarea_alloc(area, sizeof(sized_chunk_t));
+ datachunk->bytes = (const char *)data;
+ datachunk->len = length;
+ smartlist_add(chunks, datachunk);
+
+ int r = storage_dir_save_chunks_to_file(d, chunks, 1, fname_out);
+ smartlist_free(chunks);
+ memarea_drop_all(area);
+ return r;
+}
+
+/**
+ * Map a file that was created with storage_dir_save_labeled_to_file(). On
+ * failure, return NULL. On success, write a set of newly allocated labels
+ * into *<b>labels_out</b>, a pointer to the data into *<b>data_out</b>, and
+ * the data's size into *<b>sz_out</b>. On success, also return a tor_mmap_t
+ * object whose contents should not be used -- it needs to be kept around,
+ * though, for as long as <b>data_out</b> is going to be valid.
+ *
+ * On failure, set errno as for tor_mmap_file() if the file was missing or
+ * empty, and set errno to EINVAL if the file was not in the labeled
+ * format expected.
+ */
+tor_mmap_t *
+storage_dir_map_labeled(storage_dir_t *dir,
+ const char *fname,
+ config_line_t **labels_out,
+ const uint8_t **data_out,
+ size_t *sz_out)
+{
+ tor_mmap_t *m = storage_dir_map(dir, fname);
+ int errval;
+ if (! m) {
+ errval = errno;
+ goto err;
+ }
+ const char *nulp = memchr(m->data, '\0', m->size);
+ if (! nulp) {
+ errval = EINVAL;
+ goto err;
+ }
+ if (labels_out && config_get_lines(m->data, labels_out, 0) < 0) {
+ errval = EINVAL;
+ goto err;
+ }
+ size_t offset = nulp - m->data + 1;
+ tor_assert(offset <= m->size);
+ *data_out = (const uint8_t *)(m->data + offset);
+ *sz_out = m->size - offset;
+
+ return m;
+ err:
+ tor_munmap_file(m);
+ errno = errval;
+ return NULL;
+}
+
+/** As storage_dir_map_labeled, but return a new byte array containing the
+ * data. */
+uint8_t *
+storage_dir_read_labeled(storage_dir_t *dir,
+ const char *fname,
+ config_line_t **labels_out,
+ size_t *sz_out)
+{
+ const uint8_t *data = NULL;
+ tor_mmap_t *m = storage_dir_map_labeled(dir, fname, labels_out,
+ &data, sz_out);
+ if (m == NULL)
+ return NULL;
+ uint8_t *result = tor_memdup(data, *sz_out);
+ tor_munmap_file(m);
+ return result;
+}
+
+/* Reduce the cached usage amount in <b>d</b> by <b>removed_file_size</b>.
+ * This function is a no-op if <b>d->usage_known</b> is 0. */
+static void
+storage_dir_reduce_usage(storage_dir_t *d, uint64_t removed_file_size)
+{
+ if (d->usage_known) {
+ if (! BUG(d->usage < removed_file_size)) {
+ /* This bug can also be triggered if an external process resized a file
+ * between the call to storage_dir_get_usage() that last checked
+ * actual usage (rather than relaying on cached usage), and the call to
+ * this function. */
+ d->usage -= removed_file_size;
+ } else {
+ /* If we underflowed the cached directory size, re-check the sizes of all
+ * the files in the directory. This makes storage_dir_shrink() quadratic,
+ * but only if a process is continually changing file sizes in the
+ * storage directory (in which case, we have bigger issues).
+ *
+ * We can't just reset usage_known, because storage_dir_shrink() relies
+ * on knowing the usage. */
+ storage_dir_rescan(d);
+ (void)storage_dir_get_usage(d);
+ }
+ }
+}
+
+/**
+ * Remove the file called <b>fname</b> from <b>d</b>.
+ */
+void
+storage_dir_remove_file(storage_dir_t *d,
+ const char *fname)
+{
+ char *path = NULL;
+ tor_asprintf(&path, "%s/%s", d->directory, fname);
+ const char *ipath = sandbox_intern_string(path);
+
+ uint64_t size = 0;
+ if (d->usage_known) {
+ struct stat st;
+ if (stat(ipath, &st) == 0) {
+ size = st.st_size;
+ }
+ }
+ if (unlink(ipath) == 0) {
+ storage_dir_reduce_usage(d, size);
+ } else {
+ log_warn(LD_FS, "Unable to unlink %s while removing file: %s",
+ escaped(path), strerror(errno));
+ tor_free(path);
+ return;
+ }
+ if (d->contents) {
+ smartlist_string_remove(d->contents, fname);
+ }
+
+ tor_free(path);
+}
+
+/** Helper type: used to sort the members of storage directory by mtime. */
+typedef struct shrinking_dir_entry_t {
+ time_t mtime;
+ uint64_t size;
+ char *path;
+} shrinking_dir_entry_t;
+
+/** Helper: use with qsort to sort shrinking_dir_entry_t structs. */
+static int
+shrinking_dir_entry_compare(const void *a_, const void *b_)
+{
+ const shrinking_dir_entry_t *a = a_;
+ const shrinking_dir_entry_t *b = b_;
+
+ if (a->mtime < b->mtime)
+ return -1;
+ else if (a->mtime > b->mtime)
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * Try to free space by removing the oldest files in <b>d</b>. Delete
+ * until no more than <b>target_size</b> bytes are left, and at least
+ * <b>min_to_remove</b> files have been removed... or until there is
+ * nothing left to remove.
+ *
+ * Return 0 on success; -1 on failure.
+ */
+int
+storage_dir_shrink(storage_dir_t *d,
+ uint64_t target_size,
+ int min_to_remove)
+{
+ if (d->usage_known && d->usage <= target_size && !min_to_remove) {
+ /* Already small enough. */
+ return 0;
+ }
+
+ if (storage_dir_rescan(d) < 0)
+ return -1;
+
+ const uint64_t orig_usage = storage_dir_get_usage(d);
+ if (orig_usage <= target_size && !min_to_remove) {
+ /* Okay, small enough after rescan! */
+ return 0;
+ }
+
+ const int n = smartlist_len(d->contents);
+ shrinking_dir_entry_t *ents = tor_calloc(n, sizeof(shrinking_dir_entry_t));
+ SMARTLIST_FOREACH_BEGIN(d->contents, const char *, fname) {
+ shrinking_dir_entry_t *ent = &ents[fname_sl_idx];
+ struct stat st;
+ tor_asprintf(&ent->path, "%s/%s", d->directory, fname);
+ if (stat(sandbox_intern_string(ent->path), &st) == 0) {
+ ent->mtime = st.st_mtime;
+ ent->size = st.st_size;
+ }
+ } SMARTLIST_FOREACH_END(fname);
+
+ qsort(ents, n, sizeof(shrinking_dir_entry_t), shrinking_dir_entry_compare);
+
+ int idx = 0;
+ while ((d->usage > target_size || min_to_remove > 0) && idx < n) {
+ if (unlink(sandbox_intern_string(ents[idx].path)) == 0) {
+ storage_dir_reduce_usage(d, ents[idx].size);
+ --min_to_remove;
+ }
+ ++idx;
+ }
+
+ for (idx = 0; idx < n; ++idx) {
+ tor_free(ents[idx].path);
+ }
+ tor_free(ents);
+
+ storage_dir_rescan(d);
+
+ return 0;
+}
+
+/** Remove all files in <b>d</b>. */
+int
+storage_dir_remove_all(storage_dir_t *d)
+{
+ return storage_dir_shrink(d, 0, d->max_files);
+}
+
+/**
+ * Return the largest number of non-temporary files we're willing to
+ * store in <b>d</b>.
+ */
+int
+storage_dir_get_max_files(storage_dir_t *d)
+{
+ return d->max_files;
+}
+
diff --git a/src/common/storagedir.h b/src/common/storagedir.h
new file mode 100644
index 0000000000..db25057e65
--- /dev/null
+++ b/src/common/storagedir.h
@@ -0,0 +1,51 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_STORAGEDIR_H
+#define TOR_STORAGEDIR_H
+
+typedef struct storage_dir_t storage_dir_t;
+struct config_line_t;
+struct sandbox_cfg_elem;
+
+storage_dir_t * storage_dir_new(const char *dirname, int n_files);
+void storage_dir_free(storage_dir_t *d);
+int storage_dir_register_with_sandbox(storage_dir_t *d,
+ struct sandbox_cfg_elem **cfg);
+const smartlist_t *storage_dir_list(storage_dir_t *d);
+uint64_t storage_dir_get_usage(storage_dir_t *d);
+tor_mmap_t *storage_dir_map(storage_dir_t *d, const char *fname);
+uint8_t *storage_dir_read(storage_dir_t *d, const char *fname, int bin,
+ size_t *sz_out);
+int storage_dir_save_bytes_to_file(storage_dir_t *d,
+ const uint8_t *data,
+ size_t length,
+ int binary,
+ char **fname_out);
+int storage_dir_save_string_to_file(storage_dir_t *d,
+ const char *data,
+ int binary,
+ char **fname_out);
+int storage_dir_save_labeled_to_file(storage_dir_t *d,
+ const struct config_line_t *labels,
+ const uint8_t *data,
+ size_t length,
+ char **fname_out);
+tor_mmap_t *storage_dir_map_labeled(storage_dir_t *dir,
+ const char *fname,
+ struct config_line_t **labels_out,
+ const uint8_t **data_out,
+ size_t *size_out);
+uint8_t *storage_dir_read_labeled(storage_dir_t *d, const char *fname,
+ struct config_line_t **labels_out,
+ size_t *sz_out);
+void storage_dir_remove_file(storage_dir_t *d,
+ const char *fname);
+int storage_dir_shrink(storage_dir_t *d,
+ uint64_t target_size,
+ int min_to_remove);
+int storage_dir_remove_all(storage_dir_t *d);
+int storage_dir_get_max_files(storage_dir_t *d);
+
+#endif
+
diff --git a/src/common/testsupport.h b/src/common/testsupport.h
index 9ad2ba77e0..9fc96199b4 100644
--- a/src/common/testsupport.h
+++ b/src/common/testsupport.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TESTSUPPORT_H
diff --git a/src/common/timers.c b/src/common/timers.c
index e1ad47b15b..c43c49c083 100644
--- a/src/common/timers.c
+++ b/src/common/timers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -29,6 +29,8 @@
#include "orconfig.h"
+#define TOR_TIMERS_PRIVATE
+
#include "compat.h"
#include "compat_libevent.h"
#include "timers.h"
@@ -148,6 +150,21 @@ libevent_timer_reschedule(void)
event_add(global_timer_event, &d);
}
+/** Run the callback of every timer that has expired, based on the current
+ * output of monotime_get(). */
+STATIC void
+timers_run_pending(void)
+{
+ monotime_t now;
+ monotime_get(&now);
+ timer_advance_to_cur_time(&now);
+
+ tor_timer_t *t;
+ while ((t = timeouts_get(global_timeouts))) {
+ t->callback.cb(t, t->callback.arg, &now);
+ }
+}
+
/**
* Invoked when the libevent timer has expired: see which tor_timer_t events
* have fired, activate their callbacks, and reschedule the libevent timer.
@@ -159,14 +176,7 @@ libevent_timer_callback(evutil_socket_t fd, short what, void *arg)
(void)what;
(void)arg;
- monotime_t now;
- monotime_get(&now);
- timer_advance_to_cur_time(&now);
-
- tor_timer_t *t;
- while ((t = timeouts_get(global_timeouts))) {
- t->callback.cb(t, t->callback.arg, &now);
- }
+ timers_run_pending();
libevent_timer_reschedule();
}
diff --git a/src/common/timers.h b/src/common/timers.h
index c5246a3335..d9602cd2ae 100644
--- a/src/common/timers.h
+++ b/src/common/timers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TIMERS_H
@@ -22,5 +22,9 @@ void timer_free(tor_timer_t *t);
void timers_initialize(void);
void timers_shutdown(void);
+#ifdef TOR_TIMERS_PRIVATE
+STATIC void timers_run_pending(void);
+#endif
+
#endif
diff --git a/src/common/torgzip.c b/src/common/torgzip.c
deleted file mode 100644
index 03786cc597..0000000000
--- a/src/common/torgzip.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/* Copyright (c) 2004, Roger Dingledine.
- * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-/**
- * \file torgzip.c
- * \brief A simple in-memory gzip implementation.
- **/
-
-#include "orconfig.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include "torint.h"
-
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#include "util.h"
-#include "torlog.h"
-#include "torgzip.h"
-
-/* zlib 1.2.4 and 1.2.5 do some "clever" things with macros. Instead of
- saying "(defined(FOO) ? FOO : 0)" they like to say "FOO-0", on the theory
- that nobody will care if the compile outputs a no-such-identifier warning.
-
- Sorry, but we like -Werror over here, so I guess we need to define these.
- I hope that zlib 1.2.6 doesn't break these too.
-*/
-#ifndef _LARGEFILE64_SOURCE
-#define _LARGEFILE64_SOURCE 0
-#endif
-#ifndef _LFS64_LARGEFILE
-#define _LFS64_LARGEFILE 0
-#endif
-#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 0
-#endif
-#ifndef off64_t
-#define off64_t int64_t
-#endif
-
-#include <zlib.h>
-
-#if defined ZLIB_VERNUM && ZLIB_VERNUM < 0x1200
-#error "We require zlib version 1.2 or later."
-#endif
-
-static size_t tor_zlib_state_size_precalc(int inflate,
- int windowbits, int memlevel);
-
-/** Total number of bytes allocated for zlib state */
-static size_t total_zlib_allocation = 0;
-
-/** Return a string representation of the version of the currently running
- * version of zlib. */
-const char *
-tor_zlib_get_version_str(void)
-{
- return zlibVersion();
-}
-
-/** Return a string representation of the version of the version of zlib
-* used at compilation. */
-const char *
-tor_zlib_get_header_version_str(void)
-{
- return ZLIB_VERSION;
-}
-
-/** Return the 'bits' value to tell zlib to use <b>method</b>.*/
-static inline int
-method_bits(compress_method_t method, zlib_compression_level_t level)
-{
- /* Bits+16 means "use gzip" in zlib >= 1.2 */
- const int flag = method == GZIP_METHOD ? 16 : 0;
- switch (level) {
- default:
- case HIGH_COMPRESSION: return flag + 15;
- case MEDIUM_COMPRESSION: return flag + 13;
- case LOW_COMPRESSION: return flag + 11;
- }
-}
-
-static inline int
-get_memlevel(zlib_compression_level_t level)
-{
- switch (level) {
- default:
- case HIGH_COMPRESSION: return 8;
- case MEDIUM_COMPRESSION: return 7;
- case LOW_COMPRESSION: return 6;
- }
-}
-
-/** @{ */
-/* These macros define the maximum allowable compression factor. Anything of
- * size greater than CHECK_FOR_COMPRESSION_BOMB_AFTER is not allowed to
- * have an uncompression factor (uncompressed size:compressed size ratio) of
- * any greater than MAX_UNCOMPRESSION_FACTOR.
- *
- * Picking a value for MAX_UNCOMPRESSION_FACTOR is a trade-off: we want it to
- * be small to limit the attack multiplier, but we also want it to be large
- * enough so that no legitimate document --even ones we might invent in the
- * future -- ever compresses by a factor of greater than
- * MAX_UNCOMPRESSION_FACTOR. Within those parameters, there's a reasonably
- * large range of possible values. IMO, anything over 8 is probably safe; IMO
- * anything under 50 is probably sufficient.
- */
-#define MAX_UNCOMPRESSION_FACTOR 25
-#define CHECK_FOR_COMPRESSION_BOMB_AFTER (1024*64)
-/** @} */
-
-/** Return true if uncompressing an input of size <b>in_size</b> to an input
- * of size at least <b>size_out</b> looks like a compression bomb. */
-static int
-is_compression_bomb(size_t size_in, size_t size_out)
-{
- if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER)
- return 0;
-
- return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR);
-}
-
-/** Given <b>in_len</b> bytes at <b>in</b>, compress them into a newly
- * allocated buffer, using the method described in <b>method</b>. Store the
- * compressed string in *<b>out</b>, and its length in *<b>out_len</b>.
- * Return 0 on success, -1 on failure.
- */
-int
-tor_gzip_compress(char **out, size_t *out_len,
- const char *in, size_t in_len,
- compress_method_t method)
-{
- struct z_stream_s *stream = NULL;
- size_t out_size, old_size;
- off_t offset;
-
- tor_assert(out);
- tor_assert(out_len);
- tor_assert(in);
- tor_assert(in_len < UINT_MAX);
-
- *out = NULL;
-
- stream = tor_malloc_zero(sizeof(struct z_stream_s));
- stream->zalloc = Z_NULL;
- stream->zfree = Z_NULL;
- stream->opaque = NULL;
- stream->next_in = (unsigned char*) in;
- stream->avail_in = (unsigned int)in_len;
-
- if (deflateInit2(stream, Z_BEST_COMPRESSION, Z_DEFLATED,
- method_bits(method, HIGH_COMPRESSION),
- get_memlevel(HIGH_COMPRESSION),
- Z_DEFAULT_STRATEGY) != Z_OK) {
- //LCOV_EXCL_START -- we can only provoke failure by giving junk arguments.
- log_warn(LD_GENERAL, "Error from deflateInit2: %s",
- stream->msg?stream->msg:"<no message>");
- goto err;
- //LCOV_EXCL_STOP
- }
-
- /* Guess 50% compression. */
- out_size = in_len / 2;
- if (out_size < 1024) out_size = 1024;
- *out = tor_malloc(out_size);
- stream->next_out = (unsigned char*)*out;
- stream->avail_out = (unsigned int)out_size;
-
- while (1) {
- switch (deflate(stream, Z_FINISH))
- {
- case Z_STREAM_END:
- goto done;
- case Z_OK:
- /* In case zlib doesn't work as I think .... */
- if (stream->avail_out >= stream->avail_in+16)
- break;
- /* Falls through. */
- case Z_BUF_ERROR:
- offset = stream->next_out - ((unsigned char*)*out);
- old_size = out_size;
- out_size *= 2;
- if (out_size < old_size) {
- log_warn(LD_GENERAL, "Size overflow in compression.");
- goto err;
- }
- *out = tor_realloc(*out, out_size);
- stream->next_out = (unsigned char*)(*out + offset);
- if (out_size - offset > UINT_MAX) {
- log_warn(LD_BUG, "Ran over unsigned int limit of zlib while "
- "uncompressing.");
- goto err;
- }
- stream->avail_out = (unsigned int)(out_size - offset);
- break;
- default:
- log_warn(LD_GENERAL, "Gzip compression didn't finish: %s",
- stream->msg ? stream->msg : "<no message>");
- goto err;
- }
- }
- done:
- *out_len = stream->total_out;
-#if defined(OpenBSD)
- /* "Hey Rocky! Watch me change an unsigned field to a signed field in a
- * third-party API!"
- * "Oh, that trick will just make people do unsafe casts to the unsigned
- * type in their cross-platform code!"
- * "Don't be foolish. I'm _sure_ they'll have the good sense to make sure
- * the newly unsigned field isn't negative." */
- tor_assert(stream->total_out >= 0);
-#endif
- if (deflateEnd(stream)!=Z_OK) {
- // LCOV_EXCL_START -- unreachable if we handled the zlib structure right
- tor_assert_nonfatal_unreached();
- log_warn(LD_BUG, "Error freeing gzip structures");
- goto err;
- // LCOV_EXCL_STOP
- }
- tor_free(stream);
-
- if (is_compression_bomb(*out_len, in_len)) {
- log_warn(LD_BUG, "We compressed something and got an insanely high "
- "compression factor; other Tors would think this was a zlib bomb.");
- goto err;
- }
-
- return 0;
- err:
- if (stream) {
- deflateEnd(stream);
- tor_free(stream);
- }
- tor_free(*out);
- return -1;
-}
-
-/** Given zero or more zlib-compressed or gzip-compressed strings of
- * total length
- * <b>in_len</b> bytes at <b>in</b>, uncompress them into a newly allocated
- * buffer, using the method described in <b>method</b>. Store the uncompressed
- * string in *<b>out</b>, and its length in *<b>out_len</b>. Return 0 on
- * success, -1 on failure.
- *
- * If <b>complete_only</b> is true, we consider a truncated input as a
- * failure; otherwise we decompress as much as we can. Warn about truncated
- * or corrupt inputs at <b>protocol_warn_level</b>.
- */
-int
-tor_gzip_uncompress(char **out, size_t *out_len,
- const char *in, size_t in_len,
- compress_method_t method,
- int complete_only,
- int protocol_warn_level)
-{
- struct z_stream_s *stream = NULL;
- size_t out_size, old_size;
- off_t offset;
- int r;
-
- tor_assert(out);
- tor_assert(out_len);
- tor_assert(in);
- tor_assert(in_len < UINT_MAX);
-
- *out = NULL;
-
- stream = tor_malloc_zero(sizeof(struct z_stream_s));
- stream->zalloc = Z_NULL;
- stream->zfree = Z_NULL;
- stream->opaque = NULL;
- stream->next_in = (unsigned char*) in;
- stream->avail_in = (unsigned int)in_len;
-
- if (inflateInit2(stream,
- method_bits(method, HIGH_COMPRESSION)) != Z_OK) {
- // LCOV_EXCL_START -- can only hit this if we give bad inputs.
- log_warn(LD_GENERAL, "Error from inflateInit2: %s",
- stream->msg?stream->msg:"<no message>");
- goto err;
- // LCOV_EXCL_STOP
- }
-
- out_size = in_len * 2; /* guess 50% compression. */
- if (out_size < 1024) out_size = 1024;
- if (out_size >= SIZE_T_CEILING || out_size > UINT_MAX)
- goto err;
-
- *out = tor_malloc(out_size);
- stream->next_out = (unsigned char*)*out;
- stream->avail_out = (unsigned int)out_size;
-
- while (1) {
- switch (inflate(stream, complete_only ? Z_FINISH : Z_SYNC_FLUSH))
- {
- case Z_STREAM_END:
- if (stream->avail_in == 0)
- goto done;
- /* There may be more compressed data here. */
- if ((r = inflateEnd(stream)) != Z_OK) {
- log_warn(LD_BUG, "Error freeing gzip structures");
- goto err;
- }
- if (inflateInit2(stream,
- method_bits(method,HIGH_COMPRESSION)) != Z_OK) {
- log_warn(LD_GENERAL, "Error from second inflateInit2: %s",
- stream->msg?stream->msg:"<no message>");
- goto err;
- }
- break;
- case Z_OK:
- if (!complete_only && stream->avail_in == 0)
- goto done;
- /* In case zlib doesn't work as I think.... */
- if (stream->avail_out >= stream->avail_in+16)
- break;
- /* Falls through. */
- case Z_BUF_ERROR:
- if (stream->avail_out > 0) {
- log_fn(protocol_warn_level, LD_PROTOCOL,
- "possible truncated or corrupt zlib data");
- goto err;
- }
- offset = stream->next_out - (unsigned char*)*out;
- old_size = out_size;
- out_size *= 2;
- if (out_size < old_size) {
- log_warn(LD_GENERAL, "Size overflow in uncompression.");
- goto err;
- }
- if (is_compression_bomb(in_len, out_size)) {
- log_warn(LD_GENERAL, "Input looks like a possible zlib bomb; "
- "not proceeding.");
- goto err;
- }
- if (out_size >= SIZE_T_CEILING) {
- log_warn(LD_BUG, "Hit SIZE_T_CEILING limit while uncompressing.");
- goto err;
- }
- *out = tor_realloc(*out, out_size);
- stream->next_out = (unsigned char*)(*out + offset);
- if (out_size - offset > UINT_MAX) {
- log_warn(LD_BUG, "Ran over unsigned int limit of zlib while "
- "uncompressing.");
- goto err;
- }
- stream->avail_out = (unsigned int)(out_size - offset);
- break;
- default:
- log_warn(LD_GENERAL, "Gzip decompression returned an error: %s",
- stream->msg ? stream->msg : "<no message>");
- goto err;
- }
- }
- done:
- *out_len = stream->next_out - (unsigned char*)*out;
- r = inflateEnd(stream);
- tor_free(stream);
- if (r != Z_OK) {
- log_warn(LD_BUG, "Error freeing gzip structures");
- goto err;
- }
-
- /* NUL-terminate output. */
- if (out_size == *out_len)
- *out = tor_realloc(*out, out_size + 1);
- (*out)[*out_len] = '\0';
-
- return 0;
- err:
- if (stream) {
- inflateEnd(stream);
- tor_free(stream);
- }
- if (*out) {
- tor_free(*out);
- }
- return -1;
-}
-
-/** Try to tell whether the <b>in_len</b>-byte string in <b>in</b> is likely
- * to be compressed or not. If it is, return the likeliest compression method.
- * Otherwise, return UNKNOWN_METHOD.
- */
-compress_method_t
-detect_compression_method(const char *in, size_t in_len)
-{
- if (in_len > 2 && fast_memeq(in, "\x1f\x8b", 2)) {
- return GZIP_METHOD;
- } else if (in_len > 2 && (in[0] & 0x0f) == 8 &&
- (ntohs(get_uint16(in)) % 31) == 0) {
- return ZLIB_METHOD;
- } else {
- return UNKNOWN_METHOD;
- }
-}
-
-/** Internal state for an incremental zlib compression/decompression. The
- * body of this struct is not exposed. */
-struct tor_zlib_state_t {
- struct z_stream_s stream; /**< The zlib stream */
- int compress; /**< True if we are compressing; false if we are inflating */
-
- /** Number of bytes read so far. Used to detect zlib bombs. */
- size_t input_so_far;
- /** Number of bytes written so far. Used to detect zlib bombs. */
- size_t output_so_far;
-
- /** Approximate number of bytes allocated for this object. */
- size_t allocation;
-};
-
-/** Construct and return a tor_zlib_state_t object using <b>method</b>. If
- * <b>compress</b>, it's for compression; otherwise it's for
- * decompression. */
-tor_zlib_state_t *
-tor_zlib_new(int compress_, compress_method_t method,
- zlib_compression_level_t compression_level)
-{
- tor_zlib_state_t *out;
- int bits, memlevel;
-
- if (! compress_) {
- /* use this setting for decompression, since we might have the
- * max number of window bits */
- compression_level = HIGH_COMPRESSION;
- }
-
- out = tor_malloc_zero(sizeof(tor_zlib_state_t));
- out->stream.zalloc = Z_NULL;
- out->stream.zfree = Z_NULL;
- out->stream.opaque = NULL;
- out->compress = compress_;
- bits = method_bits(method, compression_level);
- memlevel = get_memlevel(compression_level);
- if (compress_) {
- if (deflateInit2(&out->stream, Z_BEST_COMPRESSION, Z_DEFLATED,
- bits, memlevel,
- Z_DEFAULT_STRATEGY) != Z_OK)
- goto err; // LCOV_EXCL_LINE
- } else {
- if (inflateInit2(&out->stream, bits) != Z_OK)
- goto err; // LCOV_EXCL_LINE
- }
- out->allocation = tor_zlib_state_size_precalc(!compress_, bits, memlevel);
-
- total_zlib_allocation += out->allocation;
-
- return out;
-
- err:
- tor_free(out);
- return NULL;
-}
-
-/** Compress/decompress some bytes using <b>state</b>. Read up to
- * *<b>in_len</b> bytes from *<b>in</b>, and write up to *<b>out_len</b> bytes
- * to *<b>out</b>, adjusting the values as we go. If <b>finish</b> is true,
- * we've reached the end of the input.
- *
- * Return TOR_ZLIB_DONE if we've finished the entire compression/decompression.
- * Return TOR_ZLIB_OK if we're processed everything from the input.
- * Return TOR_ZLIB_BUF_FULL if we're out of space on <b>out</b>.
- * Return TOR_ZLIB_ERR if the stream is corrupt.
- */
-tor_zlib_output_t
-tor_zlib_process(tor_zlib_state_t *state,
- char **out, size_t *out_len,
- const char **in, size_t *in_len,
- int finish)
-{
- int err;
- tor_assert(*in_len <= UINT_MAX);
- tor_assert(*out_len <= UINT_MAX);
- state->stream.next_in = (unsigned char*) *in;
- state->stream.avail_in = (unsigned int)*in_len;
- state->stream.next_out = (unsigned char*) *out;
- state->stream.avail_out = (unsigned int)*out_len;
-
- if (state->compress) {
- err = deflate(&state->stream, finish ? Z_FINISH : Z_NO_FLUSH);
- } else {
- err = inflate(&state->stream, finish ? Z_FINISH : Z_SYNC_FLUSH);
- }
-
- state->input_so_far += state->stream.next_in - ((unsigned char*)*in);
- state->output_so_far += state->stream.next_out - ((unsigned char*)*out);
-
- *out = (char*) state->stream.next_out;
- *out_len = state->stream.avail_out;
- *in = (const char *) state->stream.next_in;
- *in_len = state->stream.avail_in;
-
- if (! state->compress &&
- is_compression_bomb(state->input_so_far, state->output_so_far)) {
- log_warn(LD_DIR, "Possible zlib bomb; abandoning stream.");
- return TOR_ZLIB_ERR;
- }
-
- switch (err)
- {
- case Z_STREAM_END:
- return TOR_ZLIB_DONE;
- case Z_BUF_ERROR:
- if (state->stream.avail_in == 0 && !finish)
- return TOR_ZLIB_OK;
- return TOR_ZLIB_BUF_FULL;
- case Z_OK:
- if (state->stream.avail_out == 0 || finish)
- return TOR_ZLIB_BUF_FULL;
- return TOR_ZLIB_OK;
- default:
- log_warn(LD_GENERAL, "Gzip returned an error: %s",
- state->stream.msg ? state->stream.msg : "<no message>");
- return TOR_ZLIB_ERR;
- }
-}
-
-/** Deallocate <b>state</b>. */
-void
-tor_zlib_free(tor_zlib_state_t *state)
-{
- if (!state)
- return;
-
- total_zlib_allocation -= state->allocation;
-
- if (state->compress)
- deflateEnd(&state->stream);
- else
- inflateEnd(&state->stream);
-
- tor_free(state);
-}
-
-/** Return an approximate number of bytes used in RAM to hold a state with
- * window bits <b>windowBits</b> and compression level 'memlevel' */
-static size_t
-tor_zlib_state_size_precalc(int inflate_, int windowbits, int memlevel)
-{
- windowbits &= 15;
-
-#define A_FEW_KILOBYTES 2048
-
- if (inflate_) {
- /* From zconf.h:
-
- "The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects."
- */
- return sizeof(tor_zlib_state_t) + sizeof(struct z_stream_s) +
- (1 << 15) + A_FEW_KILOBYTES;
- } else {
- /* Also from zconf.h:
-
- "The memory requirements for deflate are (in bytes):
- (1 << (windowBits+2)) + (1 << (memLevel+9))
- ... plus a few kilobytes for small objects."
- */
- return sizeof(tor_zlib_state_t) + sizeof(struct z_stream_s) +
- (1 << (windowbits + 2)) + (1 << (memlevel + 9)) + A_FEW_KILOBYTES;
- }
-#undef A_FEW_KILOBYTES
-}
-
-/** Return the approximate number of bytes allocated for <b>state</b>. */
-size_t
-tor_zlib_state_size(const tor_zlib_state_t *state)
-{
- return state->allocation;
-}
-
-/** Return the approximate number of bytes allocated for all zlib states. */
-size_t
-tor_zlib_get_total_allocation(void)
-{
- return total_zlib_allocation;
-}
-
diff --git a/src/common/torgzip.h b/src/common/torgzip.h
deleted file mode 100644
index 00f62dcb45..0000000000
--- a/src/common/torgzip.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (c) 2003, Roger Dingledine
- * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-/**
- * \file torgzip.h
- * \brief Headers for torgzip.h
- **/
-
-#ifndef TOR_TORGZIP_H
-#define TOR_TORGZIP_H
-
-/** Enumeration of what kind of compression to use. Only ZLIB_METHOD is
- * guaranteed to be supported by the compress/uncompress functions here;
- * GZIP_METHOD may be supported if we built against zlib version 1.2 or later
- * and is_gzip_supported() returns true. */
-typedef enum {
- NO_METHOD=0, GZIP_METHOD=1, ZLIB_METHOD=2, UNKNOWN_METHOD=3
-} compress_method_t;
-
-/**
- * Enumeration to define tradeoffs between memory usage and compression level.
- * HIGH_COMPRESSION saves the most bandwidth; LOW_COMPRESSION saves the most
- * memory.
- **/
-typedef enum {
- HIGH_COMPRESSION, MEDIUM_COMPRESSION, LOW_COMPRESSION
-} zlib_compression_level_t;
-
-int
-tor_gzip_compress(char **out, size_t *out_len,
- const char *in, size_t in_len,
- compress_method_t method);
-int
-tor_gzip_uncompress(char **out, size_t *out_len,
- const char *in, size_t in_len,
- compress_method_t method,
- int complete_only,
- int protocol_warn_level);
-
-int is_gzip_supported(void);
-
-const char *
-tor_zlib_get_version_str(void);
-
-const char *
-tor_zlib_get_header_version_str(void);
-
-compress_method_t detect_compression_method(const char *in, size_t in_len);
-
-/** Return values from tor_zlib_process; see that function's documentation for
- * details. */
-typedef enum {
- TOR_ZLIB_OK, TOR_ZLIB_DONE, TOR_ZLIB_BUF_FULL, TOR_ZLIB_ERR
-} tor_zlib_output_t;
-/** Internal state for an incremental zlib compression/decompression. */
-typedef struct tor_zlib_state_t tor_zlib_state_t;
-tor_zlib_state_t *tor_zlib_new(int compress, compress_method_t method,
- zlib_compression_level_t level);
-
-tor_zlib_output_t tor_zlib_process(tor_zlib_state_t *state,
- char **out, size_t *out_len,
- const char **in, size_t *in_len,
- int finish);
-void tor_zlib_free(tor_zlib_state_t *state);
-
-size_t tor_zlib_state_size(const tor_zlib_state_t *state);
-size_t tor_zlib_get_total_allocation(void);
-
-#endif
-
diff --git a/src/common/torint.h b/src/common/torint.h
index 58c30f41a8..ee31459e94 100644
--- a/src/common/torint.h
+++ b/src/common/torint.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/torlog.h b/src/common/torlog.h
index bc957858d9..0149ce9a5b 100644
--- a/src/common/torlog.h
+++ b/src/common/torlog.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -101,8 +101,12 @@
#define LD_SCHED (1u<<22)
/** Guard nodes */
#define LD_GUARD (1u<<23)
+/** Generation and application of consensus diffs. */
+#define LD_CONSDIFF (1u<<24)
+/** Denial of Service mitigation. */
+#define LD_DOS (1u<<25)
/** Number of logging domains in the code. */
-#define N_LOGGING_DOMAINS 24
+#define N_LOGGING_DOMAINS 26
/** This log message is not safe to send to a callback-based logger
* immediately. Used as a flag, not a log domain. */
diff --git a/src/common/tortls.c b/src/common/tortls.c
index e3e8830b3e..71de59896a 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -17,6 +17,7 @@
#include "orconfig.h"
#define TORTLS_PRIVATE
+#define TORTLS_OPENSSL_PRIVATE
#include <assert.h>
#ifdef _WIN32 /*wrkard for dtls1.h >= 0.9.8m of "#include <winsock.h>"*/
@@ -459,11 +460,11 @@ tor_x509_name_new(const char *cname)
* Return a certificate on success, NULL on failure.
*/
MOCK_IMPL(STATIC X509 *,
- tor_tls_create_certificate,(crypto_pk_t *rsa,
- crypto_pk_t *rsa_sign,
- const char *cname,
- const char *cname_sign,
- unsigned int cert_lifetime))
+tor_tls_create_certificate,(crypto_pk_t *rsa,
+ crypto_pk_t *rsa_sign,
+ const char *cname,
+ const char *cname_sign,
+ unsigned int cert_lifetime))
{
/* OpenSSL generates self-signed certificates with random 64-bit serial
* numbers, so let's do that too. */
@@ -565,13 +566,35 @@ MOCK_IMPL(STATIC X509 *,
/** List of ciphers that servers should select from when the client might be
* claiming extra unsupported ciphers in order to avoid fingerprinting. */
-#define SERVER_CIPHER_LIST \
- (TLS1_TXT_DHE_RSA_WITH_AES_256_SHA ":" \
- TLS1_TXT_DHE_RSA_WITH_AES_128_SHA)
+static const char SERVER_CIPHER_LIST[] =
+#ifdef TLS1_3_TXT_AES_128_GCM_SHA256
+ /* This one can never actually get selected, since if the client lists it,
+ * we will assume that the client is honest, and not use this list.
+ * Nonetheless we list it if it's available, so that the server doesn't
+ * conclude that it has no valid ciphers if it's running with TLS1.3.
+ */
+ TLS1_3_TXT_AES_128_GCM_SHA256 ":"
+#endif
+ TLS1_TXT_DHE_RSA_WITH_AES_256_SHA ":"
+ TLS1_TXT_DHE_RSA_WITH_AES_128_SHA;
/** List of ciphers that servers should select from when we actually have
* our choice of what cipher to use. */
static const char UNRESTRICTED_SERVER_CIPHER_LIST[] =
+ /* Here are the TLS 1.3 ciphers we like, in the order we prefer. */
+#ifdef TLS1_3_TXT_AES_256_GCM_SHA384
+ TLS1_3_TXT_AES_256_GCM_SHA384 ":"
+#endif
+#ifdef TLS1_3_TXT_CHACHA20_POLY1305_SHA256
+ TLS1_3_TXT_CHACHA20_POLY1305_SHA256 ":"
+#endif
+#ifdef TLS1_3_TXT_AES_128_GCM_SHA256
+ TLS1_3_TXT_AES_128_GCM_SHA256 ":"
+#endif
+#ifdef TLS1_3_TXT_AES_128_CCM_SHA256
+ TLS1_3_TXT_AES_128_CCM_SHA256 ":"
+#endif
+
/* This list is autogenerated with the gen_server_ciphers.py script;
* don't hand-edit it. */
#ifdef TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384
@@ -661,7 +684,7 @@ tor_x509_cert_free(tor_x509_cert_t *cert)
* Steals a reference to x509_cert.
*/
MOCK_IMPL(STATIC tor_x509_cert_t *,
- tor_x509_cert_new,(X509 *x509_cert))
+tor_x509_cert_new,(X509 *x509_cert))
{
tor_x509_cert_t *cert;
EVP_PKEY *pkey;
@@ -675,12 +698,7 @@ MOCK_IMPL(STATIC tor_x509_cert_t *,
length = i2d_X509(x509_cert, &buf);
cert = tor_malloc_zero(sizeof(tor_x509_cert_t));
if (length <= 0 || buf == NULL) {
- /* LCOV_EXCL_START for the same reason as the exclusion above */
- tor_free(cert);
- log_err(LD_CRYPTO, "Couldn't get length of encoded x509 certificate");
- X509_free(x509_cert);
- return NULL;
- /* LCOV_EXCL_STOP */
+ goto err;
}
cert->encoded_len = (size_t) length;
cert->encoded = tor_malloc(length);
@@ -695,13 +713,25 @@ MOCK_IMPL(STATIC tor_x509_cert_t *,
if ((pkey = X509_get_pubkey(x509_cert)) &&
(rsa = EVP_PKEY_get1_RSA(pkey))) {
crypto_pk_t *pk = crypto_new_pk_from_rsa_(rsa);
- crypto_pk_get_common_digests(pk, &cert->pkey_digests);
+ if (crypto_pk_get_common_digests(pk, &cert->pkey_digests) < 0) {
+ crypto_pk_free(pk);
+ EVP_PKEY_free(pkey);
+ goto err;
+ }
+
cert->pkey_digests_set = 1;
crypto_pk_free(pk);
EVP_PKEY_free(pkey);
}
return cert;
+ err:
+ /* LCOV_EXCL_START for the same reason as the exclusion above */
+ tor_free(cert);
+ log_err(LD_CRYPTO, "Couldn't wrap encoded X509 certificate.");
+ X509_free(x509_cert);
+ return NULL;
+ /* LCOV_EXCL_STOP */
}
/** Return a new copy of <b>cert</b>. */
@@ -2284,6 +2314,24 @@ check_cert_lifetime_internal(int severity, const X509 *cert,
return 0;
}
+#ifdef TOR_UNIT_TESTS
+/* Testing only: return a new x509 cert with the same contents as <b>inp</b>,
+ but with the expiration time <b>new_expiration_time</b>, signed with
+ <b>signing_key</b>. */
+STATIC tor_x509_cert_t *
+tor_x509_cert_replace_expiration(const tor_x509_cert_t *inp,
+ time_t new_expiration_time,
+ crypto_pk_t *signing_key)
+{
+ X509 *newc = X509_dup(inp->cert);
+ X509_time_adj(X509_get_notAfter(newc), 0, &new_expiration_time);
+ EVP_PKEY *pk = crypto_pk_get_evp_pkey_(signing_key, 1);
+ tor_assert(X509_sign(newc, pk, EVP_sha256()));
+ EVP_PKEY_free(pk);
+ return tor_x509_cert_new(newc);
+}
+#endif
+
/** Return the number of bytes available for reading from <b>tls</b>.
*/
int
diff --git a/src/common/tortls.h b/src/common/tortls.h
index bb7701cc4b..f430aff70b 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TORTLS_H
@@ -63,12 +63,17 @@ typedef enum {
} tor_tls_state_t;
#define tor_tls_state_bitfield_t ENUM_BF(tor_tls_state_t)
+struct x509_st;
+struct ssl_st;
+struct ssl_ctx_st;
+struct ssl_session_st;
+
/** Holds a SSL_CTX object and related state used to configure TLS
* connections.
*/
typedef struct tor_tls_context_t {
int refcnt;
- SSL_CTX *ctx;
+ struct ssl_ctx_st *ctx;
tor_x509_cert_t *my_link_cert;
tor_x509_cert_t *my_id_cert;
tor_x509_cert_t *my_auth_cert;
@@ -78,7 +83,7 @@ typedef struct tor_tls_context_t {
/** Structure that we use for a single certificate. */
struct tor_x509_cert_t {
- X509 *cert;
+ struct x509_st *cert;
uint8_t *encoded;
size_t encoded_len;
unsigned pkey_digests_set : 1;
@@ -92,7 +97,7 @@ struct tor_x509_cert_t {
struct tor_tls_t {
uint32_t magic;
tor_tls_context_t *context; /** A link to the context object for this tls. */
- SSL *ssl; /**< An OpenSSL SSL object. */
+ struct ssl_st *ssl; /**< An OpenSSL SSL object. */
int socket; /**< The underlying file descriptor for this TLS connection. */
char *address; /**< An address to log when describing this connection. */
tor_tls_state_bitfield_t state : 3; /**< The current SSL state,
@@ -128,35 +133,45 @@ struct tor_tls_t {
STATIC int tor_errno_to_tls_error(int e);
STATIC int tor_tls_get_error(tor_tls_t *tls, int r, int extra,
const char *doing, int severity, int domain);
-STATIC tor_tls_t *tor_tls_get_by_ssl(const SSL *ssl);
+STATIC tor_tls_t *tor_tls_get_by_ssl(const struct ssl_st *ssl);
STATIC void tor_tls_allocate_tor_tls_object_ex_data_index(void);
+#ifdef TORTLS_OPENSSL_PRIVATE
STATIC int always_accept_verify_cb(int preverify_ok, X509_STORE_CTX *x509_ctx);
-STATIC int tor_tls_classify_client_ciphers(const SSL *ssl,
+STATIC int tor_tls_classify_client_ciphers(const struct ssl_st *ssl,
STACK_OF(SSL_CIPHER) *peer_ciphers);
-STATIC int tor_tls_client_is_using_v2_ciphers(const SSL *ssl);
+#endif
+STATIC int tor_tls_client_is_using_v2_ciphers(const struct ssl_st *ssl);
MOCK_DECL(STATIC void, try_to_extract_certs_from_tls,
- (int severity, tor_tls_t *tls, X509 **cert_out, X509 **id_cert_out));
+ (int severity, tor_tls_t *tls, struct x509_st **cert_out,
+ struct x509_st **id_cert_out));
#ifndef HAVE_SSL_SESSION_GET_MASTER_KEY
-STATIC size_t SSL_SESSION_get_master_key(SSL_SESSION *s, uint8_t *out,
+STATIC size_t SSL_SESSION_get_master_key(struct ssl_session_st *s,
+ uint8_t *out,
size_t len);
#endif
-STATIC void tor_tls_debug_state_callback(const SSL *ssl, int type, int val);
-STATIC void tor_tls_server_info_callback(const SSL *ssl, int type, int val);
-STATIC int tor_tls_session_secret_cb(SSL *ssl, void *secret,
+STATIC void tor_tls_debug_state_callback(const struct ssl_st *ssl,
+ int type, int val);
+STATIC void tor_tls_server_info_callback(const struct ssl_st *ssl,
+ int type, int val);
+#ifdef TORTLS_OPENSSL_PRIVATE
+STATIC int tor_tls_session_secret_cb(struct ssl_st *ssl, void *secret,
int *secret_len,
STACK_OF(SSL_CIPHER) *peer_ciphers,
CONST_IF_OPENSSL_1_1_API SSL_CIPHER **cipher,
void *arg);
STATIC int find_cipher_by_id(const SSL *ssl, const SSL_METHOD *m,
uint16_t cipher);
-MOCK_DECL(STATIC X509*, tor_tls_create_certificate,(crypto_pk_t *rsa,
+#endif
+MOCK_DECL(STATIC struct x509_st *, tor_tls_create_certificate,
+ (crypto_pk_t *rsa,
crypto_pk_t *rsa_sign,
const char *cname,
const char *cname_sign,
unsigned int cert_lifetime));
STATIC tor_tls_context_t *tor_tls_context_new(crypto_pk_t *identity,
unsigned int key_lifetime, unsigned flags, int is_client);
-MOCK_DECL(STATIC tor_x509_cert_t *, tor_x509_cert_new,(X509 *x509_cert));
+MOCK_DECL(STATIC tor_x509_cert_t *, tor_x509_cert_new,
+ (struct x509_st *x509_cert));
STATIC int tor_tls_context_init_one(tor_tls_context_t **ppcontext,
crypto_pk_t *identity,
unsigned int key_lifetime,
@@ -172,6 +187,11 @@ extern tor_tls_context_t *client_tls_context;
extern uint16_t v2_cipher_list[];
extern uint64_t total_bytes_written_over_tls;
extern uint64_t total_bytes_written_by_tls;
+
+STATIC tor_x509_cert_t *tor_x509_cert_replace_expiration(
+ const tor_x509_cert_t *inp,
+ time_t new_expiration_time,
+ crypto_pk_t *signing_key);
#endif
#endif /* endif TORTLS_PRIVATE */
diff --git a/src/common/util.c b/src/common/util.c
index 4942ee3a9e..5b47028097 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1953,7 +1953,7 @@ parse_http_time(const char *date, struct tm *tm)
/** Given an <b>interval</b> in seconds, try to write it to the
* <b>out_len</b>-byte buffer in <b>out</b> in a human-readable form.
- * Return 0 on success, -1 on failure.
+ * Returns a non-negative integer on success, -1 on failure.
*/
int
format_time_interval(char *out, size_t out_len, long interval)
@@ -2118,7 +2118,7 @@ read_all(tor_socket_t fd, char *buf, size_t count, int isSocket)
return -1;
}
- while (numread != count) {
+ while (numread < count) {
if (isSocket)
result = tor_socket_recv(fd, buf+numread, count-numread, 0);
else
@@ -3045,135 +3045,39 @@ unescape_string(const char *s, char **result, size_t *size_out)
}
}
-/** Given a string containing part of a configuration file or similar format,
- * advance past comments and whitespace and try to parse a single line. If we
- * parse a line successfully, set *<b>key_out</b> to a new string holding the
- * key portion and *<b>value_out</b> to a new string holding the value portion
- * of the line, and return a pointer to the start of the next line. If we run
- * out of data, return a pointer to the end of the string. If we encounter an
- * error, return NULL and set *<b>err_out</b> (if provided) to an error
- * message.
- */
-const char *
-parse_config_line_from_str_verbose(const char *line, char **key_out,
- char **value_out,
- const char **err_out)
+/** Removes enclosing quotes from <b>path</b> and unescapes quotes between the
+ * enclosing quotes. Backslashes are not unescaped. Return the unquoted
+ * <b>path</b> on sucess or 0 if <b>path</b> is not quoted correctly. */
+char *
+get_unquoted_path(const char *path)
{
- /*
- See torrc_format.txt for a description of the (silly) format this parses.
- */
- const char *key, *val, *cp;
- int continuation = 0;
-
- tor_assert(key_out);
- tor_assert(value_out);
+ size_t len = strlen(path);
- *key_out = *value_out = NULL;
- key = val = NULL;
- /* Skip until the first keyword. */
- while (1) {
- while (TOR_ISSPACE(*line))
- ++line;
- if (*line == '#') {
- while (*line && *line != '\n')
- ++line;
- } else {
- break;
- }
+ if (len == 0) {
+ return tor_strdup("");
}
- if (!*line) { /* End of string? */
- *key_out = *value_out = NULL;
- return line;
+ int has_start_quote = (path[0] == '\"');
+ int has_end_quote = (len > 0 && path[len-1] == '\"');
+ if (has_start_quote != has_end_quote || (len == 1 && has_start_quote)) {
+ return NULL;
}
- /* Skip until the next space or \ followed by newline. */
- key = line;
- while (*line && !TOR_ISSPACE(*line) && *line != '#' &&
- ! (line[0] == '\\' && line[1] == '\n'))
- ++line;
- *key_out = tor_strndup(key, line-key);
-
- /* Skip until the value. */
- while (*line == ' ' || *line == '\t')
- ++line;
-
- val = line;
-
- /* Find the end of the line. */
- if (*line == '\"') { // XXX No continuation handling is done here
- if (!(line = unescape_string(line, value_out, NULL))) {
- if (err_out)
- *err_out = "Invalid escape sequence in quoted string";
- return NULL;
- }
- while (*line == ' ' || *line == '\t')
- ++line;
- if (*line == '\r' && *(++line) == '\n')
- ++line;
- if (*line && *line != '#' && *line != '\n') {
- if (err_out)
- *err_out = "Excess data after quoted string";
+ char *unquoted_path = tor_malloc(len - has_start_quote - has_end_quote + 1);
+ char *s = unquoted_path;
+ size_t i;
+ for (i = has_start_quote; i < len - has_end_quote; i++) {
+ if (path[i] == '\"' && (i > 0 && path[i-1] == '\\')) {
+ *(s-1) = path[i];
+ } else if (path[i] != '\"') {
+ *s++ = path[i];
+ } else { /* unescaped quote */
+ tor_free(unquoted_path);
return NULL;
}
- } else {
- /* Look for the end of the line. */
- while (*line && *line != '\n' && (*line != '#' || continuation)) {
- if (*line == '\\' && line[1] == '\n') {
- continuation = 1;
- line += 2;
- } else if (*line == '#') {
- do {
- ++line;
- } while (*line && *line != '\n');
- if (*line == '\n')
- ++line;
- } else {
- ++line;
- }
- }
-
- if (*line == '\n') {
- cp = line++;
- } else {
- cp = line;
- }
- /* Now back cp up to be the last nonspace character */
- while (cp>val && TOR_ISSPACE(*(cp-1)))
- --cp;
-
- tor_assert(cp >= val);
-
- /* Now copy out and decode the value. */
- *value_out = tor_strndup(val, cp-val);
- if (continuation) {
- char *v_out, *v_in;
- v_out = v_in = *value_out;
- while (*v_in) {
- if (*v_in == '#') {
- do {
- ++v_in;
- } while (*v_in && *v_in != '\n');
- if (*v_in == '\n')
- ++v_in;
- } else if (v_in[0] == '\\' && v_in[1] == '\n') {
- v_in += 2;
- } else {
- *v_out++ = *v_in++;
- }
- }
- *v_out = '\0';
- }
- }
-
- if (*line == '#') {
- do {
- ++line;
- } while (*line && *line != '\n');
}
- while (TOR_ISSPACE(*line)) ++line;
-
- return line;
+ *s = '\0';
+ return unquoted_path;
}
/** Expand any homedir prefix on <b>filename</b>; return a newly allocated
@@ -4175,10 +4079,10 @@ tor_process_get_stdout_pipe(process_handle_t *process_handle)
}
#else
/* DOCDOC tor_process_get_stdout_pipe */
-FILE *
+int
tor_process_get_stdout_pipe(process_handle_t *process_handle)
{
- return process_handle->stdout_handle;
+ return process_handle->stdout_pipe;
}
#endif
@@ -4609,10 +4513,6 @@ tor_spawn_background(const char *const filename, const char **argv,
log_warn(LD_GENERAL, "Failed to set stderror/stdout/stdin pipes "
"nonblocking in parent process: %s", strerror(errno));
}
- /* Open the buffered IO streams */
- process_handle->stdout_handle = fdopen(process_handle->stdout_pipe, "r");
- process_handle->stderr_handle = fdopen(process_handle->stderr_pipe, "r");
- process_handle->stdin_handle = fdopen(process_handle->stdin_pipe, "r");
*process_handle_out = process_handle;
return process_handle->status;
@@ -4659,14 +4559,9 @@ tor_process_handle_destroy,(process_handle_t *process_handle,
if (process_handle->stdin_pipe)
CloseHandle(process_handle->stdin_pipe);
#else
- if (process_handle->stdout_handle)
- fclose(process_handle->stdout_handle);
-
- if (process_handle->stderr_handle)
- fclose(process_handle->stderr_handle);
-
- if (process_handle->stdin_handle)
- fclose(process_handle->stdin_handle);
+ close(process_handle->stdout_pipe);
+ close(process_handle->stderr_pipe);
+ close(process_handle->stdin_pipe);
clear_waitpid_callback(process_handle->waitpid_cb);
#endif
@@ -4952,7 +4847,7 @@ tor_read_all_handle(HANDLE h, char *buf, size_t count,
if (count > SIZE_T_CEILING || count > SSIZE_MAX)
return -1;
- while (numread != count) {
+ while (numread < count) {
/* Check if there is anything to read */
retval = PeekNamedPipe(h, NULL, 0, NULL, &byte_count, NULL);
if (!retval) {
@@ -4998,19 +4893,19 @@ tor_read_all_handle(HANDLE h, char *buf, size_t count,
return (ssize_t)numread;
}
#else
-/** Read from a handle <b>h</b> into <b>buf</b>, up to <b>count</b> bytes. If
+/** Read from a handle <b>fd</b> into <b>buf</b>, up to <b>count</b> bytes. If
* <b>process</b> is NULL, the function will return immediately if there is
* nothing more to read. Otherwise data will be read until end of file, or
* <b>count</b> bytes are read. Returns the number of bytes read, or -1 on
* error. Sets <b>eof</b> to true if <b>eof</b> is not NULL and the end of the
* file has been reached. */
ssize_t
-tor_read_all_handle(FILE *h, char *buf, size_t count,
+tor_read_all_handle(int fd, char *buf, size_t count,
const process_handle_t *process,
int *eof)
{
size_t numread = 0;
- char *retval;
+ ssize_t result;
if (eof)
*eof = 0;
@@ -5018,34 +4913,28 @@ tor_read_all_handle(FILE *h, char *buf, size_t count,
if (count > SIZE_T_CEILING || count > SSIZE_MAX)
return -1;
- while (numread != count) {
- /* Use fgets because that is what we use in log_from_pipe() */
- retval = fgets(buf+numread, (int)(count-numread), h);
- if (NULL == retval) {
- if (feof(h)) {
- log_debug(LD_GENERAL, "fgets() reached end of file");
- if (eof)
- *eof = 1;
+ while (numread < count) {
+ result = read(fd, buf+numread, count-numread);
+
+ if (result == 0) {
+ log_debug(LD_GENERAL, "read() reached end of file");
+ if (eof)
+ *eof = 1;
+ break;
+ } else if (result < 0 && errno == EAGAIN) {
+ if (process)
+ continue;
+ else
break;
- } else {
- if (EAGAIN == errno) {
- if (process)
- continue;
- else
- break;
- } else {
- log_warn(LD_GENERAL, "fgets() from handle failed: %s",
- strerror(errno));
- return -1;
- }
- }
+ } else if (result < 0) {
+ log_warn(LD_GENERAL, "read() failed: %s", strerror(errno));
+ return -1;
}
- tor_assert(retval != NULL);
- tor_assert(strlen(retval) + numread <= count);
- numread += strlen(retval);
+
+ numread += result;
}
- log_debug(LD_GENERAL, "fgets() read %d bytes from handle", (int)numread);
+ log_debug(LD_GENERAL, "read() read %d bytes from handle", (int)numread);
return (ssize_t)numread;
}
#endif
@@ -5059,7 +4948,7 @@ tor_read_all_from_process_stdout(const process_handle_t *process_handle,
return tor_read_all_handle(process_handle->stdout_pipe, buf, count,
process_handle);
#else
- return tor_read_all_handle(process_handle->stdout_handle, buf, count,
+ return tor_read_all_handle(process_handle->stdout_pipe, buf, count,
process_handle, NULL);
#endif
}
@@ -5073,7 +4962,7 @@ tor_read_all_from_process_stderr(const process_handle_t *process_handle,
return tor_read_all_handle(process_handle->stderr_pipe, buf, count,
process_handle);
#else
- return tor_read_all_handle(process_handle->stderr_handle, buf, count,
+ return tor_read_all_handle(process_handle->stderr_pipe, buf, count,
process_handle, NULL);
#endif
}
@@ -5267,11 +5156,10 @@ log_from_handle(HANDLE *pipe, int severity)
#else
/** Return a smartlist containing lines outputted from
- * <b>handle</b>. Return NULL on error, and set
+ * <b>fd</b>. Return NULL on error, and set
* <b>stream_status_out</b> appropriately. */
MOCK_IMPL(smartlist_t *,
-tor_get_lines_from_handle, (FILE *handle,
- enum stream_status *stream_status_out))
+tor_get_lines_from_handle, (int fd, enum stream_status *stream_status_out))
{
enum stream_status stream_status;
char stdout_buf[400];
@@ -5280,13 +5168,13 @@ tor_get_lines_from_handle, (FILE *handle,
while (1) {
memset(stdout_buf, 0, sizeof(stdout_buf));
- stream_status = get_string_from_pipe(handle,
+ stream_status = get_string_from_pipe(fd,
stdout_buf, sizeof(stdout_buf) - 1);
if (stream_status != IO_STREAM_OKAY)
goto done;
if (!lines) lines = smartlist_new();
- smartlist_add_strdup(lines, stdout_buf);
+ smartlist_split_string(lines, stdout_buf, "\n", 0, 0);
}
done:
@@ -5294,20 +5182,20 @@ tor_get_lines_from_handle, (FILE *handle,
return lines;
}
-/** Read from stream, and send lines to log at the specified log level.
+/** Read from fd, and send lines to log at the specified log level.
* Returns 1 if stream is closed normally, -1 if there is a error reading, and
* 0 otherwise. Handles lines from tor-fw-helper and
* tor_spawn_background() specially.
*/
static int
-log_from_pipe(FILE *stream, int severity, const char *executable,
+log_from_pipe(int fd, int severity, const char *executable,
int *child_status)
{
char buf[256];
enum stream_status r;
for (;;) {
- r = get_string_from_pipe(stream, buf, sizeof(buf) - 1);
+ r = get_string_from_pipe(fd, buf, sizeof(buf) - 1);
if (r == IO_STREAM_CLOSED) {
return 1;
@@ -5332,7 +5220,7 @@ log_from_pipe(FILE *stream, int severity, const char *executable,
}
#endif
-/** Reads from <b>stream</b> and stores input in <b>buf_out</b> making
+/** Reads from <b>fd</b> and stores input in <b>buf_out</b> making
* sure it's below <b>count</b> bytes.
* If the string has a trailing newline, we strip it off.
*
@@ -5348,52 +5236,28 @@ log_from_pipe(FILE *stream, int severity, const char *executable,
* IO_STREAM_OKAY: If everything went okay and we got a string
* in <b>buf_out</b>. */
enum stream_status
-get_string_from_pipe(FILE *stream, char *buf_out, size_t count)
+get_string_from_pipe(int fd, char *buf_out, size_t count)
{
- char *retval;
- size_t len;
+ ssize_t ret;
tor_assert(count <= INT_MAX);
- retval = fgets(buf_out, (int)count, stream);
-
- if (!retval) {
- if (feof(stream)) {
- /* Program has closed stream (probably it exited) */
- /* TODO: check error */
- return IO_STREAM_CLOSED;
- } else {
- if (EAGAIN == errno) {
- /* Nothing more to read, try again next time */
- return IO_STREAM_EAGAIN;
- } else {
- /* There was a problem, abandon this child process */
- return IO_STREAM_TERM;
- }
- }
- } else {
- len = strlen(buf_out);
- if (len == 0) {
- /* this probably means we got a NUL at the start of the string. */
- return IO_STREAM_EAGAIN;
- }
+ ret = read(fd, buf_out, count);
- if (buf_out[len - 1] == '\n') {
- /* Remove the trailing newline */
- buf_out[len - 1] = '\0';
- } else {
- /* No newline; check whether we overflowed the buffer */
- if (!feof(stream))
- log_info(LD_GENERAL,
- "Line from stream was truncated: %s", buf_out);
- /* TODO: What to do with this error? */
- }
+ if (ret == 0)
+ return IO_STREAM_CLOSED;
+ else if (ret < 0 && errno == EAGAIN)
+ return IO_STREAM_EAGAIN;
+ else if (ret < 0)
+ return IO_STREAM_TERM;
- return IO_STREAM_OKAY;
- }
+ if (buf_out[ret - 1] == '\n') {
+ /* Remove the trailing newline */
+ buf_out[ret - 1] = '\0';
+ } else
+ buf_out[ret] = '\0';
- /* We should never get here */
- return IO_STREAM_TERM;
+ return IO_STREAM_OKAY;
}
/** Parse a <b>line</b> from tor-fw-helper and issue an appropriate
@@ -5630,7 +5494,7 @@ tor_check_port_forwarding(const char *filename,
#ifdef _WIN32
stderr_status = log_from_handle(child_handle->stderr_pipe, LOG_INFO);
#else
- stderr_status = log_from_pipe(child_handle->stderr_handle,
+ stderr_status = log_from_pipe(child_handle->stderr_pipe,
LOG_INFO, filename, &retval);
#endif
if (handle_fw_helper_output(filename, child_handle) < 0) {
diff --git a/src/common/util.h b/src/common/util.h
index 13fcc5142d..d56abcee2e 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -163,9 +163,9 @@ int64_t clamp_double_to_int64(double number);
void simplify_fraction64(uint64_t *numer, uint64_t *denom);
/* Compute the CEIL of <b>a</b> divided by <b>b</b>, for nonnegative <b>a</b>
- * and positive <b>b</b>. Works on integer types only. Not defined if a+b can
- * overflow. */
-#define CEIL_DIV(a,b) (((a)+(b)-1)/(b))
+ * and positive <b>b</b>. Works on integer types only. Not defined if a+(b-1)
+ * can overflow. */
+#define CEIL_DIV(a,b) (((a)+((b)-1))/(b))
/* Return <b>v</b> if it's between <b>min</b> and <b>max</b>. Otherwise
* return <b>min</b> if <b>v</b> is smaller than <b>min</b>, or <b>max</b> if
@@ -322,7 +322,7 @@ enum stream_status {
const char *stream_status_to_string(enum stream_status stream_status);
-enum stream_status get_string_from_pipe(FILE *stream, char *buf, size_t count);
+enum stream_status get_string_from_pipe(int fd, char *buf, size_t count);
MOCK_DECL(int,tor_unlink,(const char *pathname));
@@ -389,9 +389,7 @@ char *read_file_to_str_until_eof(int fd, size_t max_bytes_to_read,
size_t *sz_out)
ATTR_MALLOC;
const char *unescape_string(const char *s, char **result, size_t *size_out);
-const char *parse_config_line_from_str_verbose(const char *line,
- char **key_out, char **value_out,
- const char **err_out);
+char *get_unquoted_path(const char *path);
char *expand_filename(const char *filename);
MOCK_DECL(struct smartlist_t *, tor_listdir, (const char *dirname));
int path_is_relative(const char *filename);
@@ -463,9 +461,6 @@ struct process_handle_t {
int stdin_pipe;
int stdout_pipe;
int stderr_pipe;
- FILE *stdin_handle;
- FILE *stdout_handle;
- FILE *stderr_handle;
pid_t pid;
/** If the process has not given us a SIGCHLD yet, this has the
* waitpid_callback_t that gets invoked once it has. Otherwise this
@@ -488,7 +483,7 @@ int tor_split_lines(struct smartlist_t *sl, char *buf, int len);
ssize_t tor_read_all_handle(HANDLE h, char *buf, size_t count,
const process_handle_t *process);
#else
-ssize_t tor_read_all_handle(FILE *h, char *buf, size_t count,
+ssize_t tor_read_all_handle(int fd, char *buf, size_t count,
const process_handle_t *process,
int *eof);
#endif
@@ -502,7 +497,7 @@ int tor_process_get_pid(process_handle_t *process_handle);
#ifdef _WIN32
HANDLE tor_process_get_stdout_pipe(process_handle_t *process_handle);
#else
-FILE *tor_process_get_stdout_pipe(process_handle_t *process_handle);
+int tor_process_get_stdout_pipe(process_handle_t *process_handle);
#endif
#ifdef _WIN32
@@ -511,7 +506,7 @@ tor_get_lines_from_handle,(HANDLE *handle,
enum stream_status *stream_status));
#else
MOCK_DECL(struct smartlist_t *,
-tor_get_lines_from_handle,(FILE *handle,
+tor_get_lines_from_handle,(int fd,
enum stream_status *stream_status));
#endif
diff --git a/src/common/util_bug.c b/src/common/util_bug.c
index c7bfdefe80..3d990e3700 100644
--- a/src/common/util_bug.c
+++ b/src/common/util_bug.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/util_bug.h b/src/common/util_bug.h
index 0695806911..ae7e7a37fd 100644
--- a/src/common/util_bug.h
+++ b/src/common/util_bug.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/util_format.c b/src/common/util_format.c
index 7e8ee1b868..1f7b8b03aa 100644
--- a/src/common/util_format.c
+++ b/src/common/util_format.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -22,13 +22,16 @@
#include <stdlib.h>
/* Return the base32 encoded size in bytes using the source length srclen.
- * The NUL terminated byte is added as well since every base32 encoding
- * requires enough space for it. */
+ *
+ * (WATCH OUT: This API counts the terminating NUL byte, but
+ * base64_encode_size does not.)
+ */
size_t
base32_encoded_size(size_t srclen)
{
size_t enclen;
- enclen = CEIL_DIV(srclen*8, 5) + 1;
+ tor_assert(srclen < SIZE_T_CEILING / 8);
+ enclen = BASE32_NOPAD_BUFSIZE(srclen);
tor_assert(enclen < INT_MAX && enclen > srclen);
return enclen;
}
@@ -41,7 +44,6 @@ base32_encode(char *dest, size_t destlen, const char *src, size_t srclen)
size_t nbits = srclen * 8;
size_t bit;
- tor_assert(srclen < SIZE_T_CEILING/8);
/* We need enough space for the encoded data and the extra NUL byte. */
tor_assert(base32_encoded_size(srclen) <= destlen);
tor_assert(destlen < SIZE_T_CEILING);
@@ -134,6 +136,9 @@ base32_decode(char *dest, size_t destlen, const char *src, size_t srclen)
/** Return the Base64 encoded size of <b>srclen</b> bytes of data in
* bytes.
*
+ * (WATCH OUT: This API <em>does not</em> count the terminating NUL byte,
+ * but base32_encoded_size does.)
+ *
* If <b>flags</b>&amp;BASE64_ENCODE_MULTILINE is true, return the size
* of the encoded output as multiline output (64 character, `\n' terminated
* lines).
@@ -142,19 +147,16 @@ size_t
base64_encode_size(size_t srclen, int flags)
{
size_t enclen;
+
+ /* Use INT_MAX for overflow checking because base64_encode() returns int. */
tor_assert(srclen < INT_MAX);
+ tor_assert(CEIL_DIV(srclen, 3) < INT_MAX / 4);
- if (srclen == 0)
- return 0;
+ enclen = BASE64_LEN(srclen);
+ if (flags & BASE64_ENCODE_MULTILINE)
+ enclen += CEIL_DIV(enclen, BASE64_OPENSSL_LINELEN);
- enclen = ((srclen - 1) / 3) * 4 + 4;
- if (flags & BASE64_ENCODE_MULTILINE) {
- size_t remainder = enclen % BASE64_OPENSSL_LINELEN;
- enclen += enclen / BASE64_OPENSSL_LINELEN;
- if (remainder)
- enclen++;
- }
- tor_assert(enclen < INT_MAX && enclen > srclen);
+ tor_assert(enclen < INT_MAX && (enclen == 0 || enclen > srclen));
return enclen;
}
@@ -311,39 +313,6 @@ base64_encode_nopad(char *dest, size_t destlen,
return (int)(out - dest);
}
-/** As base64_decode, but do not require any padding on the input */
-int
-base64_decode_nopad(uint8_t *dest, size_t destlen,
- const char *src, size_t srclen)
-{
- if (srclen > SIZE_T_CEILING - 4)
- return -1;
- char *buf = tor_malloc(srclen + 4);
- memcpy(buf, src, srclen+1);
- size_t buflen;
- switch (srclen % 4)
- {
- case 0:
- default:
- buflen = srclen;
- break;
- case 1:
- tor_free(buf);
- return -1;
- case 2:
- memcpy(buf+srclen, "==", 3);
- buflen = srclen + 2;
- break;
- case 3:
- memcpy(buf+srclen, "=", 2);
- buflen = srclen + 1;
- break;
- }
- int n = base64_decode((char*)dest, destlen, buf, buflen);
- tor_free(buf);
- return n;
-}
-
#undef BASE64_OPENSSL_LINELEN
/** @{ */
@@ -393,15 +362,9 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
const char *eos = src+srclen;
uint32_t n=0;
int n_idx=0;
- char *dest_orig = dest;
+ size_t di = 0;
- /* Max number of bits == srclen*6.
- * Number of bytes required to hold all bits == (srclen*6)/8.
- * Yes, we want to round down: anything that hangs over the end of a
- * byte is padding. */
- if (!size_mul_check(srclen, 3) || destlen < (srclen*3)/4)
- return -1;
- if (destlen > SIZE_T_CEILING)
+ if (destlen > INT_MAX)
return -1;
/* Make sure we leave no uninitialized data in the destination buffer. */
@@ -429,9 +392,11 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
n = (n<<6) | v;
if ((++n_idx) == 4) {
/* We've accumulated 24 bits in n. Flush them. */
- *dest++ = (n>>16);
- *dest++ = (n>>8) & 0xff;
- *dest++ = (n) & 0xff;
+ if (destlen < 3 || di > destlen - 3)
+ return -1;
+ dest[di++] = (n>>16);
+ dest[di++] = (n>>8) & 0xff;
+ dest[di++] = (n) & 0xff;
n_idx = 0;
n = 0;
}
@@ -449,18 +414,21 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
return -1;
case 2:
/* 12 leftover bits: The last 4 are padding and the first 8 are data. */
- *dest++ = n >> 4;
+ if (destlen < 1 || di > destlen - 1)
+ return -1;
+ dest[di++] = n >> 4;
break;
case 3:
/* 18 leftover bits: The last 2 are padding and the first 16 are data. */
- *dest++ = n >> 10;
- *dest++ = n >> 2;
+ if (destlen < 2 || di > destlen - 2)
+ return -1;
+ dest[di++] = n >> 10;
+ dest[di++] = n >> 2;
}
- tor_assert((dest-dest_orig) <= (ssize_t)destlen);
- tor_assert((dest-dest_orig) <= INT_MAX);
+ tor_assert(di <= destlen);
- return (int)(dest-dest_orig);
+ return (int)di;
}
#undef X
#undef SP
@@ -476,7 +444,8 @@ base16_encode(char *dest, size_t destlen, const char *src, size_t srclen)
const char *end;
char *cp;
- tor_assert(destlen >= srclen*2+1);
+ tor_assert(srclen < SIZE_T_CEILING / 2 - 1);
+ tor_assert(destlen >= BASE16_BUFSIZE(srclen));
tor_assert(destlen < SIZE_T_CEILING);
/* Make sure we leave no uninitialized data in the destination buffer. */
diff --git a/src/common/util_format.h b/src/common/util_format.h
index 20ac711d10..4af8832bbe 100644
--- a/src/common/util_format.h
+++ b/src/common/util_format.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_UTIL_FORMAT_H
@@ -10,6 +10,26 @@
#include "testsupport.h"
#include "torint.h"
+/** @{ */
+/** These macros don't check for overflow. Use them only for constant inputs
+ * (like array declarations). The *_LEN macros are the raw encoding lengths
+ * (without terminating NUL), while the *_BUFSIZE macros count the terminating
+ * NUL. */
+#define BASE64_LEN(n) (CEIL_DIV((n), 3) * 4)
+#define BASE32_LEN(n) (CEIL_DIV((n), 5) * 8)
+#define BASE16_LEN(n) ((n) * 2)
+
+#define BASE64_BUFSIZE(n) (BASE64_LEN(n) + 1)
+#define BASE32_BUFSIZE(n) (BASE32_LEN(n) + 1)
+#define BASE16_BUFSIZE(n) (BASE16_LEN(n) + 1)
+
+#define BASE64_NOPAD_LEN(n) (CEIL_DIV((n) * 4, 3))
+#define BASE32_NOPAD_LEN(n) (CEIL_DIV((n) * 8, 5))
+
+#define BASE64_NOPAD_BUFSIZE(n) (BASE64_NOPAD_LEN(n) + 1)
+#define BASE32_NOPAD_BUFSIZE(n) (BASE32_NOPAD_LEN(n) + 1)
+/** @} */
+
#define BASE64_ENCODE_MULTILINE 1
size_t base64_encode_size(size_t srclen, int flags);
int base64_encode(char *dest, size_t destlen, const char *src, size_t srclen,
@@ -17,8 +37,6 @@ int base64_encode(char *dest, size_t destlen, const char *src, size_t srclen,
int base64_decode(char *dest, size_t destlen, const char *src, size_t srclen);
int base64_encode_nopad(char *dest, size_t destlen,
const uint8_t *src, size_t srclen);
-int base64_decode_nopad(uint8_t *dest, size_t destlen,
- const char *src, size_t srclen);
/** Characters that can appear (case-insensitively) in a base32 encoding. */
#define BASE32_CHARS "abcdefghijklmnopqrstuvwxyz234567"
diff --git a/src/common/util_process.c b/src/common/util_process.c
index abda63720c..9e9679b099 100644
--- a/src/common/util_process.c
+++ b/src/common/util_process.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/util_process.h b/src/common/util_process.h
index d38301a354..c3a63498b5 100644
--- a/src/common/util_process.h
+++ b/src/common/util_process.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/workqueue.c b/src/common/workqueue.c
index e1fb663a2a..42723224d3 100644
--- a/src/common/workqueue.c
+++ b/src/common/workqueue.c
@@ -25,11 +25,19 @@
#include "orconfig.h"
#include "compat.h"
#include "compat_threads.h"
+#include "crypto.h"
#include "util.h"
#include "workqueue.h"
#include "tor_queue.h"
#include "torlog.h"
+#define WORKQUEUE_PRIORITY_FIRST WQ_PRI_HIGH
+#define WORKQUEUE_PRIORITY_LAST WQ_PRI_LOW
+#define WORKQUEUE_N_PRIORITIES (((int) WORKQUEUE_PRIORITY_LAST)+1)
+
+TOR_TAILQ_HEAD(work_tailq_t, workqueue_entry_s);
+typedef struct work_tailq_t work_tailq_t;
+
struct threadpool_s {
/** An array of pointers to workerthread_t: one for each running worker
* thread. */
@@ -38,8 +46,12 @@ struct threadpool_s {
/** Condition variable that we wait on when we have no work, and which
* gets signaled when our queue becomes nonempty. */
tor_cond_t condition;
- /** Queue of pending work that we have to do. */
- TOR_TAILQ_HEAD(, workqueue_entry_s) work;
+ /** Queues of pending work that we have to do. The queue with priority
+ * <b>p</b> is work[p]. */
+ work_tailq_t work[WORKQUEUE_N_PRIORITIES];
+
+ /** Weak RNG, used to decide when to ignore priority. */
+ tor_weak_rng_t weak_rng;
/** The current 'update generation' of the threadpool. Any thread that is
* at an earlier generation needs to run the update function. */
@@ -66,6 +78,11 @@ struct threadpool_s {
void *new_thread_state_arg;
};
+/** Used to put a workqueue_priority_t value into a bitfield. */
+#define workqueue_priority_bitfield_t ENUM_BF(workqueue_priority_t)
+/** Number of bits needed to hold all legal values of workqueue_priority_t */
+#define WORKQUEUE_PRIORITY_BITS 2
+
struct workqueue_entry_s {
/** The next workqueue_entry_t that's pending on the same thread or
* reply queue. */
@@ -76,6 +93,8 @@ struct workqueue_entry_s {
struct threadpool_s *on_pool;
/** True iff this entry is waiting for a worker to start processing it. */
uint8_t pending;
+ /** Priority of this entry. */
+ workqueue_priority_bitfield_t priority : WORKQUEUE_PRIORITY_BITS;
/** Function to run in the worker thread. */
workqueue_reply_t (*fn)(void *state, void *arg);
/** Function to run while processing the reply queue. */
@@ -94,9 +113,7 @@ struct replyqueue_s {
alert_sockets_t alert;
};
-/** A worker thread represents a single thread in a thread pool. To avoid
- * contention, each gets its own queue. This breaks the guarantee that that
- * queued work will get executed strictly in order. */
+/** A worker thread represents a single thread in a thread pool. */
typedef struct workerthread_s {
/** Which thread it this? In range 0..in_pool->n_threads-1 */
int index;
@@ -109,6 +126,8 @@ typedef struct workerthread_s {
replyqueue_t *reply_queue;
/** The current update generation of this thread */
unsigned generation;
+ /** One over the probability of taking work from a lower-priority queue. */
+ int32_t lower_priority_chance;
} workerthread_t;
static void queue_reply(replyqueue_t *queue, workqueue_entry_t *work);
@@ -125,6 +144,7 @@ workqueue_entry_new(workqueue_reply_t (*fn)(void*, void*),
ent->fn = fn;
ent->reply_fn = reply_fn;
ent->arg = arg;
+ ent->priority = WQ_PRI_HIGH;
return ent;
}
@@ -161,8 +181,9 @@ workqueue_entry_cancel(workqueue_entry_t *ent)
int cancelled = 0;
void *result = NULL;
tor_mutex_acquire(&ent->on_pool->lock);
+ workqueue_priority_t prio = ent->priority;
if (ent->pending) {
- TOR_TAILQ_REMOVE(&ent->on_pool->work, ent, next_work);
+ TOR_TAILQ_REMOVE(&ent->on_pool->work[prio], ent, next_work);
cancelled = 1;
result = ent->arg;
}
@@ -180,8 +201,46 @@ workqueue_entry_cancel(workqueue_entry_t *ent)
static int
worker_thread_has_work(workerthread_t *thread)
{
- return !TOR_TAILQ_EMPTY(&thread->in_pool->work) ||
- thread->generation != thread->in_pool->generation;
+ unsigned i;
+ for (i = WORKQUEUE_PRIORITY_FIRST; i <= WORKQUEUE_PRIORITY_LAST; ++i) {
+ if (!TOR_TAILQ_EMPTY(&thread->in_pool->work[i]))
+ return 1;
+ }
+ return thread->generation != thread->in_pool->generation;
+}
+
+/** Extract the next workqueue_entry_t from the the thread's pool, removing
+ * it from the relevant queues and marking it as non-pending.
+ *
+ * The caller must hold the lock. */
+static workqueue_entry_t *
+worker_thread_extract_next_work(workerthread_t *thread)
+{
+ threadpool_t *pool = thread->in_pool;
+ work_tailq_t *queue = NULL, *this_queue;
+ unsigned i;
+ for (i = WORKQUEUE_PRIORITY_FIRST; i <= WORKQUEUE_PRIORITY_LAST; ++i) {
+ this_queue = &pool->work[i];
+ if (!TOR_TAILQ_EMPTY(this_queue)) {
+ queue = this_queue;
+ if (! tor_weak_random_one_in_n(&pool->weak_rng,
+ thread->lower_priority_chance)) {
+ /* Usually we'll just break now, so that we can get out of the loop
+ * and use the queue where we found work. But with a small
+ * probability, we'll keep looking for lower priority work, so that
+ * we don't ignore our low-priority queues entirely. */
+ break;
+ }
+ }
+ }
+
+ if (queue == NULL)
+ return NULL;
+
+ workqueue_entry_t *work = TOR_TAILQ_FIRST(queue);
+ TOR_TAILQ_REMOVE(queue, work, next_work);
+ work->pending = 0;
+ return work;
}
/**
@@ -217,9 +276,9 @@ worker_thread_main(void *thread_)
tor_mutex_acquire(&pool->lock);
continue;
}
- work = TOR_TAILQ_FIRST(&pool->work);
- TOR_TAILQ_REMOVE(&pool->work, work, next_work);
- work->pending = 0;
+ work = worker_thread_extract_next_work(thread);
+ if (BUG(work == NULL))
+ break;
tor_mutex_release(&pool->lock);
/* We run the work function without holding the thread lock. This
@@ -268,12 +327,14 @@ queue_reply(replyqueue_t *queue, workqueue_entry_t *work)
/** Allocate and start a new worker thread to use state object <b>state</b>,
* and send responses to <b>replyqueue</b>. */
static workerthread_t *
-workerthread_new(void *state, threadpool_t *pool, replyqueue_t *replyqueue)
+workerthread_new(int32_t lower_priority_chance,
+ void *state, threadpool_t *pool, replyqueue_t *replyqueue)
{
workerthread_t *thr = tor_malloc_zero(sizeof(workerthread_t));
thr->state = state;
thr->reply_queue = replyqueue;
thr->in_pool = pool;
+ thr->lower_priority_chance = lower_priority_chance;
if (spawn_func(worker_thread_main, thr) < 0) {
//LCOV_EXCL_START
@@ -299,24 +360,34 @@ workerthread_new(void *state, threadpool_t *pool, replyqueue_t *replyqueue)
* function's responsibility to free the work object.
*
* On success, return a workqueue_entry_t object that can be passed to
- * workqueue_entry_cancel(). On failure, return NULL.
+ * workqueue_entry_cancel(). On failure, return NULL. (Failure is not
+ * currently possible, but callers should check anyway.)
+ *
+ * Items are executed in a loose priority order -- each thread will usually
+ * take from the queued work with the highest prioirity, but will occasionally
+ * visit lower-priority queues to keep them from starving completely.
*
- * Note that because each thread has its own work queue, work items may not
+ * Note that because of priorities and thread behavior, work items may not
* be executed strictly in order.
*/
workqueue_entry_t *
-threadpool_queue_work(threadpool_t *pool,
- workqueue_reply_t (*fn)(void *, void *),
- void (*reply_fn)(void *),
- void *arg)
+threadpool_queue_work_priority(threadpool_t *pool,
+ workqueue_priority_t prio,
+ workqueue_reply_t (*fn)(void *, void *),
+ void (*reply_fn)(void *),
+ void *arg)
{
+ tor_assert(((int)prio) >= WORKQUEUE_PRIORITY_FIRST &&
+ ((int)prio) <= WORKQUEUE_PRIORITY_LAST);
+
workqueue_entry_t *ent = workqueue_entry_new(fn, reply_fn, arg);
ent->on_pool = pool;
ent->pending = 1;
+ ent->priority = prio;
tor_mutex_acquire(&pool->lock);
- TOR_TAILQ_INSERT_TAIL(&pool->work, ent, next_work);
+ TOR_TAILQ_INSERT_TAIL(&pool->work[prio], ent, next_work);
tor_cond_signal_one(&pool->condition);
@@ -325,6 +396,16 @@ threadpool_queue_work(threadpool_t *pool,
return ent;
}
+/** As threadpool_queue_work_priority(), but assumes WQ_PRI_HIGH */
+workqueue_entry_t *
+threadpool_queue_work(threadpool_t *pool,
+ workqueue_reply_t (*fn)(void *, void *),
+ void (*reply_fn)(void *),
+ void *arg)
+{
+ return threadpool_queue_work_priority(pool, WQ_PRI_HIGH, fn, reply_fn, arg);
+}
+
/**
* Queue a copy of a work item for every thread in a pool. This can be used,
* for example, to tell the threads to update some parameter in their states.
@@ -388,6 +469,14 @@ threadpool_queue_update(threadpool_t *pool,
/** Don't have more than this many threads per pool. */
#define MAX_THREADS 1024
+/** For half of our threads, choose lower priority queues with probability
+ * 1/N for each of these values. Both are chosen somewhat arbitrarily. If
+ * CHANCE_PERMISSIVE is too low, then we have a risk of low-priority tasks
+ * stalling forever. If it's too high, we have a risk of low-priority tasks
+ * grabbing half of the threads. */
+#define CHANCE_PERMISSIVE 37
+#define CHANCE_STRICT INT32_MAX
+
/** Launch threads until we have <b>n</b>. */
static int
threadpool_start_threads(threadpool_t *pool, int n)
@@ -404,8 +493,14 @@ threadpool_start_threads(threadpool_t *pool, int n)
sizeof(workerthread_t*), n);
while (pool->n_threads < n) {
+ /* For half of our threads, we'll choose lower priorities permissively;
+ * for the other half, we'll stick more strictly to higher priorities.
+ * This keeps slow low-priority tasks from taking over completely. */
+ int32_t chance = (pool->n_threads & 1) ? CHANCE_STRICT : CHANCE_PERMISSIVE;
+
void *state = pool->new_thread_state_fn(pool->new_thread_state_arg);
- workerthread_t *thr = workerthread_new(state, pool, pool->reply_queue);
+ workerthread_t *thr = workerthread_new(chance,
+ state, pool, pool->reply_queue);
if (!thr) {
//LCOV_EXCL_START
@@ -441,7 +536,15 @@ threadpool_new(int n_threads,
pool = tor_malloc_zero(sizeof(threadpool_t));
tor_mutex_init_nonrecursive(&pool->lock);
tor_cond_init(&pool->condition);
- TOR_TAILQ_INIT(&pool->work);
+ unsigned i;
+ for (i = WORKQUEUE_PRIORITY_FIRST; i <= WORKQUEUE_PRIORITY_LAST; ++i) {
+ TOR_TAILQ_INIT(&pool->work[i]);
+ }
+ {
+ unsigned seed;
+ crypto_rand((void*)&seed, sizeof(seed));
+ tor_init_weak_random(&pool->weak_rng, seed);
+ }
pool->new_thread_state_fn = new_thread_state_fn;
pool->new_thread_state_arg = arg;
@@ -510,12 +613,13 @@ replyqueue_get_socket(replyqueue_t *rq)
void
replyqueue_process(replyqueue_t *queue)
{
- if (queue->alert.drain_fn(queue->alert.read_fd) < 0) {
+ int r = queue->alert.drain_fn(queue->alert.read_fd);
+ if (r < 0) {
//LCOV_EXCL_START
static ratelim_t warn_limit = RATELIM_INIT(7200);
log_fn_ratelim(&warn_limit, LOG_WARN, LD_GENERAL,
"Failure from drain_fd: %s",
- tor_socket_strerror(tor_socket_errno(queue->alert.read_fd)));
+ tor_socket_strerror(-r));
//LCOV_EXCL_STOP
}
diff --git a/src/common/workqueue.h b/src/common/workqueue.h
index 54276767b0..d2508f5329 100644
--- a/src/common/workqueue.h
+++ b/src/common/workqueue.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_WORKQUEUE_H
@@ -16,12 +16,26 @@ typedef struct threadpool_s threadpool_t;
typedef struct workqueue_entry_s workqueue_entry_t;
/** Possible return value from a work function: */
-typedef enum {
+typedef enum workqueue_reply_t {
WQ_RPL_REPLY = 0, /** indicates success */
WQ_RPL_ERROR = 1, /** indicates fatal error */
WQ_RPL_SHUTDOWN = 2, /** indicates thread is shutting down */
} workqueue_reply_t;
+/** Possible priorities for work. Lower numeric values are more important. */
+typedef enum workqueue_priority_t {
+ WQ_PRI_HIGH = 0,
+ WQ_PRI_MED = 1,
+ WQ_PRI_LOW = 2,
+} workqueue_priority_t;
+
+workqueue_entry_t *threadpool_queue_work_priority(threadpool_t *pool,
+ workqueue_priority_t prio,
+ workqueue_reply_t (*fn)(void *,
+ void *),
+ void (*reply_fn)(void *),
+ void *arg);
+
workqueue_entry_t *threadpool_queue_work(threadpool_t *pool,
workqueue_reply_t (*fn)(void *,
void *),
diff --git a/src/config/geoip b/src/config/geoip
index 4df2c3b871..a9fa374a0d 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on January 5 2018 Maxmind GeoLite2 Country
+# Last updated based on June 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
@@ -55,7 +55,8 @@
18927616,18929663,TW
18929664,18931711,KR
18931712,18933759,JP
-18933760,18939903,SG
+18933760,18935807,SG
+18935808,18939903,HK
18939904,19005439,JP
19005440,19005440,CN
19005441,19136511,TW
@@ -93,7 +94,7 @@
33554432,34603007,FR
34604544,34605055,DE
34612224,34612479,AU
-34612480,34612735,IL
+34612480,34612735,GB
34620416,34620927,SE
34620928,34621439,IT
34621952,34622463,NL
@@ -116,14 +117,13 @@
34912256,34912511,DE
34912512,34912767,ES
34912768,34913279,DE
-34928384,34928639,DE
34930688,34938879,DE
34938880,34947071,FR
34953216,34954751,AT
34954752,34955263,NL
34955264,34959359,AT
34959360,34963455,NL
-34992128,34993151,NL
+34992384,34992639,NL
34993152,34993663,FR
34993664,34993919,AT
34993920,34994175,DE
@@ -133,7 +133,7 @@
35008512,35009023,FR
35010304,35010559,BE
35010560,35011583,FR
-35011584,35012607,SE
+35011584,35011839,SE
35020800,35037183,GB
35037184,35054335,FR
35054336,35054591,GB
@@ -148,7 +148,9 @@
36700160,36962303,AE
36962304,37224447,IL
37486592,37748735,RU
-37748736,38273023,SE
+37748736,38252543,SE
+38252544,38253567,DK
+38253568,38273023,SE
38273024,38797311,KZ
38797312,39059455,PT
39059456,39321599,GR
@@ -174,24 +176,35 @@
47710208,48234495,GB
48234496,49283071,IT
49283072,49807359,DE
-49807360,50331647,SE
+49807360,50329599,SE
50331648,68169727,US
68169728,68171775,CA
68171776,68194815,US
68194816,68194879,CA
-68194880,68305407,US
+68194880,68200447,US
+68200448,68200703,CA
+68200704,68204031,US
+68204032,68204159,CU
+68204160,68305407,US
68305408,68305919,MX
68305920,68978687,US
68978688,68980735,CA
-68980736,69109759,US
-69109760,69111807,CA
-69111808,71670208,US
+68980736,69110271,US
+69110272,69110303,CA
+69110304,71670208,US
71670209,71670209,NL
71670210,83886079,US
83886080,83951615,SY
83951616,83959807,UA
83959808,83961855,ES
-83961856,83963903,CY
+83961856,83962111,KW
+83962112,83962367,SA
+83962368,83962623,BH
+83962624,83962879,LB
+83962880,83963135,AE
+83963136,83963391,QA
+83963392,83963647,OM
+83963648,83963903,JO
83963904,83965951,RU
83965952,83967999,CZ
83968000,83969023,DE
@@ -232,7 +245,9 @@
84422528,84422655,IT
84422656,84426495,RU
84426496,84426751,US
-84426752,84434943,RU
+84426752,84432895,RU
+84432896,84433919,NL
+84433920,84434943,RU
84434944,84443135,IT
84443136,84451327,LB
84451328,84457471,RU
@@ -275,9 +290,7 @@
84672512,84934655,RO
84934656,85196799,RU
85196800,85262335,LT
-85262336,85326911,OM
-85326912,85327103,AE
-85327104,85327871,OM
+85262336,85327871,OM
85327872,85360639,IR
85360640,85362687,IL
85362688,85364735,GB
@@ -290,7 +303,8 @@
85368832,85377023,RS
85377024,85385215,IR
85385216,85387263,GB
-85387264,85389311,SE
+85387264,85388287,SE
+85388288,85389311,NO
85389312,85391359,DE
85391360,85393407,NL
85394432,85394439,IT
@@ -299,6 +313,9 @@
85395968,85396223,LU
85396480,85397503,ES
85398016,85398047,NO
+85398048,85398055,DK
+85398056,85398057,SE
+85398058,85398059,NO
85398528,85399039,SA
85399040,85399047,CH
85399552,85400063,FR
@@ -345,15 +362,14 @@
86163456,86171647,IR
86171648,86173695,DE
86173696,86175743,NL
-86175744,86177535,EE
+86175744,86177535,SE
86177536,86177791,IE
86177792,86179839,LI
-86179840,86221823,RU
-86221824,86222335,JE
-86222336,86222847,RU
-86222848,86223871,NL
-86223872,86224895,RU
-86224896,86226943,NL
+86179840,86220799,RU
+86220800,86222607,JE
+86222608,86222615,GB
+86222616,86222847,JE
+86222848,86226943,NL
86226944,86228991,SE
86228992,86231039,US
86231040,86233087,ES
@@ -363,123 +379,357 @@
86245376,86376447,OM
86376448,86409215,AE
86409216,86441983,HU
-86441984,86442700,FR
+86441984,86442239,FR
+86442240,86442243,GB
+86442244,86442291,FR
+86442292,86442295,GB
+86442296,86442495,FR
+86442496,86442499,ES
+86442500,86442507,FR
+86442508,86442511,ES
+86442512,86442687,FR
+86442688,86442691,ES
+86442692,86442695,FR
+86442696,86442700,ES
86442701,86442701,CH
-86442702,86442702,ES
-86442703,86442723,FR
+86442702,86442703,ES
+86442704,86442719,FR
+86442720,86442723,PT
86442724,86442724,PL
-86442725,86442751,FR
-86442752,86443007,GB
-86443008,86443519,FR
+86442725,86442739,FR
+86442740,86442743,ES
+86442744,86442747,IE
+86442748,86443007,GB
+86443008,86443047,FR
+86443048,86443051,ES
+86443052,86443311,FR
+86443312,86443319,ES
+86443320,86443451,FR
+86443452,86443455,ES
+86443456,86443519,FR
86443520,86443535,PL
-86443536,86444319,FR
-86444320,86444323,ES
-86444324,86446407,FR
+86443536,86443539,ES
+86443540,86443583,FR
+86443584,86443647,GB
+86443648,86443991,FR
+86443992,86443995,ES
+86443996,86444023,FR
+86444024,86444031,FI
+86444032,86444119,FR
+86444120,86444123,ES
+86444124,86444311,FR
+86444312,86444315,PL
+86444316,86444323,ES
+86444324,86444331,FR
+86444332,86444335,ES
+86444336,86444519,FR
+86444520,86444523,ES
+86444524,86444575,FR
+86444576,86444579,ES
+86444580,86444655,FR
+86444656,86444663,ES
+86444664,86444687,FR
+86444688,86444691,ES
+86444692,86444743,FR
+86444744,86444751,GB
+86444752,86444783,FR
+86444784,86444791,GB
+86444792,86444839,FR
+86444840,86444843,ES
+86444844,86444983,FR
+86444984,86444991,ES
+86444992,86445311,FR
+86445312,86445319,NL
+86445320,86445375,FR
+86445376,86445407,ES
+86445408,86445527,FR
+86445528,86445531,CZ
+86445532,86445551,FR
+86445552,86445555,ES
+86445556,86445563,FR
+86445564,86445567,ES
+86445568,86445831,FR
+86445832,86445839,ES
+86445840,86446407,FR
86446408,86446408,DE
86446409,86446411,FR
86446412,86446412,DE
86446413,86446427,FR
86446428,86446431,DE
-86446432,86446619,FR
+86446432,86446591,FR
+86446592,86446599,ES
+86446600,86446619,FR
86446620,86446620,DE
86446621,86446655,FR
86446656,86446663,ES
-86446664,86446727,FR
+86446664,86446679,FR
+86446680,86446683,ES
+86446684,86446715,FR
+86446716,86446719,DE
+86446720,86446727,FR
86446728,86446731,DE
-86446732,86446931,FR
+86446732,86446767,FR
+86446768,86446771,GB
+86446772,86446931,FR
86446932,86446935,CZ
86446936,86447095,FR
86447096,86447103,ES
86447104,86447279,FR
86447280,86447280,DE
86447281,86447287,FR
-86447288,86447288,DE
-86447289,86448559,FR
+86447288,86447291,DE
+86447292,86447335,FR
+86447336,86447339,ES
+86447340,86447351,FR
+86447352,86447355,GB
+86447356,86448559,FR
86448560,86448575,GB
86448576,86448803,FR
86448804,86448807,FI
-86448808,86448851,FR
+86448808,86448835,FR
+86448836,86448839,GB
+86448840,86448851,FR
86448852,86448855,IT
86448856,86448859,PT
86448860,86448951,FR
86448952,86448955,DE
-86448956,86449363,FR
+86448956,86449039,FR
+86449040,86449055,ES
+86449056,86449079,FR
+86449080,86449083,PL
+86449084,86449119,FR
+86449120,86449151,PT
+86449152,86449311,FR
+86449312,86449343,ES
+86449344,86449363,FR
86449364,86449367,DE
-86449368,86449883,FR
+86449368,86449379,FR
+86449380,86449383,FI
+86449384,86449387,FR
+86449388,86449391,FI
+86449392,86449499,FR
+86449500,86449503,ES
+86449504,86449675,FR
+86449676,86449679,PT
+86449680,86449759,FR
+86449760,86449791,IE
+86449792,86449883,FR
86449884,86449884,DE
-86449885,86449987,FR
-86449988,86449988,LT
-86449989,86452367,FR
+86449885,86449983,FR
+86449984,86450015,LT
+86450016,86450087,FR
+86450088,86450091,PL
+86450092,86450163,FR
+86450164,86450167,GB
+86450168,86450335,FR
+86450336,86450339,GB
+86450340,86450471,FR
+86450472,86450479,ES
+86450480,86450775,FR
+86450776,86450779,PL
+86450780,86450847,FR
+86450848,86450863,ES
+86450864,86450867,PT
+86450868,86450875,FR
+86450876,86450879,GB
+86450880,86451455,FR
+86451456,86451459,CZ
+86451460,86451531,FR
+86451532,86451535,FI
+86451536,86452059,FR
+86452060,86452063,ES
+86452064,86452067,FR
+86452068,86452071,ES
+86452072,86452347,FR
+86452348,86452351,ES
+86452352,86452367,FR
86452368,86452383,GB
-86452384,86452615,FR
+86452384,86452399,ES
+86452400,86452543,FR
+86452544,86452575,GB
+86452576,86452615,FR
86452616,86452623,ES
86452624,86452671,FR
86452672,86452735,GB
-86452736,86453836,FR
+86452736,86452943,FR
+86452944,86452959,GB
+86452960,86453199,FR
+86453200,86453203,ES
+86453204,86453231,FR
+86453232,86453247,ES
+86453248,86453311,FR
+86453312,86453319,ES
+86453320,86453327,FR
+86453328,86453339,ES
+86453340,86453343,PT
+86453344,86453435,FR
+86453436,86453439,ES
+86453440,86453836,FR
86453837,86453838,PT
-86453839,86453947,FR
+86453839,86453843,FR
+86453844,86453847,GB
+86453848,86453947,FR
86453948,86453951,IE
-86453952,86454299,FR
+86453952,86454207,FR
+86454208,86454271,ES
+86454272,86454279,FR
+86454280,86454287,ES
+86454288,86454299,FR
86454300,86454303,DE
86454304,86454335,FR
86454336,86454343,DE
-86454344,86455591,FR
+86454344,86454463,FR
+86454464,86454527,DE
+86454528,86454559,FR
+86454560,86454591,CZ
+86454592,86454607,FR
+86454608,86454611,DE
+86454612,86454615,FR
+86454616,86454619,ES
+86454620,86454751,FR
+86454752,86454783,CZ
+86454784,86454823,FR
+86454824,86454831,ES
+86454832,86454839,FR
+86454840,86454847,GB
+86454848,86454855,DE
+86454856,86454899,FR
+86454900,86454903,GB
+86454904,86455591,FR
86455592,86455595,NL
86455596,86455623,FR
86455624,86455624,DE
-86455625,86456195,FR
+86455625,86455631,FR
+86455632,86455647,CZ
+86455648,86455767,FR
+86455768,86455771,GB
+86455772,86456039,FR
+86456040,86456043,FI
+86456044,86456195,FR
86456196,86456211,DE
86456212,86456351,FR
86456352,86456367,CH
-86456368,86456943,FR
+86456368,86456371,FR
+86456372,86456375,ES
+86456376,86456655,FR
+86456656,86456671,IE
+86456672,86456943,FR
86456944,86456947,GR
-86456948,86457059,FR
+86456948,86456999,FR
+86457000,86457007,ES
+86457008,86457059,FR
86457060,86457060,DE
86457061,86457087,FR
86457088,86457091,DE
86457092,86457111,FR
86457112,86457112,DE
-86457113,86457455,FR
+86457113,86457187,FR
+86457188,86457199,ES
+86457200,86457263,FR
+86457264,86457279,ES
+86457280,86457399,FR
+86457400,86457407,ES
+86457408,86457455,FR
86457456,86457456,DE
-86457457,86467207,FR
+86457457,86457471,FR
+86457472,86457519,ES
+86457520,86457703,FR
+86457704,86457707,ES
+86457708,86457759,FR
+86457760,86457791,PL
+86457792,86457799,FR
+86457800,86457803,ES
+86457804,86458183,FR
+86458184,86458187,DE
+86458188,86458295,FR
+86458296,86458299,CZ
+86458300,86466639,FR
+86466640,86466647,ES
+86466648,86467207,FR
86467208,86467211,IE
-86467212,86467320,FR
+86467212,86467279,FR
+86467280,86467283,DE
+86467284,86467320,FR
86467321,86467321,FI
-86467322,86467999,FR
+86467322,86467871,FR
+86467872,86467903,BE
+86467904,86467999,FR
86468000,86468003,PL
86468004,86468055,FR
86468056,86468056,DE
-86468057,86468199,FR
+86468057,86468083,FR
+86468084,86468087,DE
+86468088,86468103,FR
+86468104,86468111,IT
+86468112,86468199,FR
86468200,86468200,ES
-86468201,86468447,FR
+86468201,86468407,FR
+86468408,86468415,CH
+86468416,86468447,FR
86468448,86468479,CZ
-86468480,86469183,FR
+86468480,86468587,FR
+86468588,86468591,ES
+86468592,86468671,FR
+86468672,86468675,ES
+86468676,86468799,FR
+86468800,86468831,PL
+86468832,86468883,FR
+86468884,86468887,PL
+86468888,86469183,FR
86469184,86469247,GB
86469248,86469691,FR
86469692,86469695,DE
-86469696,86469974,FR
-86469975,86469982,ES
-86469983,86469983,FR
-86469984,86469986,ES
-86469987,86469988,FR
-86469989,86469991,ES
-86469992,86469993,FR
-86469994,86469995,ES
-86469996,86470002,FR
-86470003,86470008,ES
-86470009,86470012,FR
-86470013,86470013,ES
-86470014,86470015,FR
-86470016,86470047,ES
-86470048,86471083,FR
+86469696,86469791,FR
+86469792,86469795,GB
+86469796,86469915,FR
+86469916,86469919,ES
+86469920,86469951,FR
+86469952,86470047,ES
+86470048,86470359,FR
+86470360,86470363,PT
+86470364,86470735,FR
+86470736,86470751,GB
+86470752,86470767,PT
+86470768,86470951,FR
+86470952,86470959,GB
+86470960,86471007,FR
+86471008,86471023,IT
+86471024,86471063,FR
+86471064,86471071,PL
+86471072,86471083,FR
86471084,86471087,DE
86471088,86471123,FR
86471124,86471127,GB
-86471128,86471179,FR
+86471128,86471135,FR
+86471136,86471167,FI
+86471168,86471179,FR
86471180,86471180,DE
-86471181,86474307,FR
+86471181,86471231,FR
+86471232,86471263,FI
+86471264,86471295,FR
+86471296,86471327,GB
+86471328,86471839,FR
+86471840,86471871,PT
+86471872,86471943,FR
+86471944,86471947,ES
+86471948,86472063,FR
+86472064,86472095,IT
+86472096,86472775,FR
+86472776,86472779,GB
+86472780,86472951,FR
+86472952,86472955,PL
+86472956,86473087,FR
+86473088,86473151,PT
+86473152,86473807,FR
+86473808,86473823,GB
+86473824,86473839,FR
+86473840,86473855,PT
+86473856,86474163,FR
+86474164,86474167,GB
+86474168,86474307,FR
86474308,86474311,DE
-86474312,86474475,FR
+86474312,86474467,FR
+86474468,86474475,GB
86474476,86474479,DE
86474480,86474527,FR
86474528,86474531,DE
@@ -497,7 +747,10 @@
86497280,86499327,NL
86499328,86503423,FR
86503424,86505471,DE
-86505472,86507519,GB
+86505472,86505727,GB
+86505728,86505983,US
+86505984,86507263,GB
+86507264,86507519,PK
86507520,86573055,ES
86573056,86638591,SA
86638592,86671359,RU
@@ -519,7 +772,9 @@
86769664,86773759,RU
86773760,86777855,GB
86777856,86779903,AZ
-86779904,86781183,RU
+86779904,86780671,RU
+86780672,86780927,GB
+86780928,86781183,RU
86781184,86781439,NL
86781440,86786047,RU
86786048,86788095,NO
@@ -528,7 +783,8 @@
86794240,86795775,DE
86795776,86796287,NL
86796288,86797311,US
-86797312,86798335,DE
+86797312,86797343,PY
+86797344,86798335,DE
86798336,86802431,CH
86802432,86804479,GE
86804480,86806527,DK
@@ -545,20 +801,19 @@
86833152,86835199,GB
86835200,86837247,DE
86837248,86839295,ES
-86839296,86843391,GB
+86839296,86840319,GB
+86840320,86843391,NL
86847488,86849535,GB
86849536,86850559,CZ
86850560,86851327,NL
86851328,86851583,CZ
-86851584,86853631,RU
-86853632,86855679,NL
+86851584,86855679,NL
86855680,86856703,RU
-86856704,86857727,NL
-86857728,86859775,RU
+86856704,86858751,NL
+86858752,86859775,RU
86859776,86863871,DE
86863872,86867967,EE
86867968,86872063,JO
-86872064,86874111,GB
86874112,86876159,NO
86876160,86880255,ES
86880256,86882303,DE
@@ -567,7 +822,9 @@
86900736,87031807,TR
87031808,87293951,FR
87293952,87359487,IR
-87359488,87361535,ES
+87359488,87360543,ES
+87360544,87360575,NL
+87360576,87361535,ES
87361536,87363583,CZ
87363584,87367679,RU
87367680,87375871,IR
@@ -598,8 +855,10 @@
87621632,87623679,LB
87623680,87625727,KG
87625728,87626751,NL
-87626752,87627007,GB
-87627008,87627775,NL
+87626752,87626879,GB
+87626880,87626880,NL
+87626881,87626881,GB
+87626882,87627775,NL
87627776,87629823,ES
87629824,87631871,IR
87631872,87633919,DE
@@ -608,14 +867,15 @@
87638016,87640063,UA
87640064,87642111,RS
87642112,87646207,GB
-87646208,87646463,RE
-87646464,87647231,FR
-87647232,87647487,RE
-87647488,87648255,FR
-87648256,87648767,RE
-87648768,87650047,FR
-87650048,87650303,RE
-87650304,87654399,FR
+87646208,87646463,FR
+87646464,87646719,RE
+87646720,87647999,FR
+87648000,87648639,RE
+87648640,87650559,FR
+87650560,87650815,RE
+87650816,87651455,FR
+87651456,87651839,RE
+87651840,87654399,FR
87654400,87670783,PL
87670784,87672831,DE
87672832,87674879,CH
@@ -630,29 +890,26 @@
87752704,87754751,RU
87754752,87755263,CZ
87755264,87755519,SK
-87755520,87755775,CZ
+87755520,87755775,KG
87755776,87756799,RU
87756800,87758847,ES
-87758848,87760895,CZ
-87760896,87761407,RU
+87758848,87761407,RU
87761408,87761663,CZ
87761664,87761919,RU
-87761920,87762431,CZ
+87761920,87762431,FR
87762432,87762943,UA
-87762944,87763967,CZ
-87763968,87764991,RU
-87764992,87766015,CZ
-87766016,87766527,RU
+87762944,87763967,KZ
+87763968,87766527,RU
87766528,87766783,UA
87766784,87768063,RU
-87768064,87769087,CZ
-87769088,87777279,ES
-87777280,87777791,CZ
-87777792,87778303,RU
-87778304,87779583,CZ
-87779584,87779839,UA
-87779840,87785471,CZ
-87785472,87793663,RU
+87768064,87777279,ES
+87777280,87777535,TJ
+87777536,87777791,CZ
+87777792,87779327,RU
+87779328,87779839,UA
+87779840,87781375,CZ
+87781376,87783423,ES
+87783424,87793663,RU
87793664,87818239,CZ
87818240,87883775,PL
87883776,87885823,IT
@@ -661,8 +918,7 @@
87890688,87890943,US
87890944,87891199,NL
87891200,87891967,IR
-87891968,87900159,GB
-87900160,87902207,DE
+87891968,87902207,DE
87902208,87904255,IR
87904256,87906303,DE
87906304,87908351,FI
@@ -677,60 +933,406 @@
87943168,87945215,RU
87945216,87947263,HU
87947264,87949311,NL
-87949312,87957759,GB
+87949312,87954431,GB
+87954432,87954687,BE
+87954688,87954823,AU
+87954824,87954824,GB
+87954825,87954943,AU
+87954944,87957503,GB
+87957504,87957759,ES
87957760,87958015,IN
-87958016,87958025,GB
-87958026,87958026,IN
-87958027,87958028,GB
-87958029,87958029,IN
-87958030,87959295,GB
-87959296,87959539,NL
-87959540,87959540,BE
-87959541,87959544,NL
-87959545,87959545,BE
-87959546,87959551,NL
-87959552,87959807,GB
-87959808,87959817,DE
-87959818,87959818,NL
-87959819,87959835,DE
-87959836,87959836,BE
-87959837,87960063,DE
-87960064,87960321,GB
-87960322,87960322,NL
-87960323,87961343,GB
-87961344,87961586,US
-87961587,87961587,CA
-87961588,87963647,US
-87963648,87963807,GB
-87963808,87963810,US
-87963811,87963811,KP
-87963812,87963908,GB
-87963909,87963911,US
-87963912,87963943,GB
-87963944,87963947,US
-87963948,87963976,GB
-87963977,87963979,US
-87963980,87964005,GB
-87964006,87964006,VE
-87964007,87964237,GB
-87964238,87964239,DO
-87964240,87964400,GB
-87964401,87964401,US
-87964402,87964420,GB
-87964421,87964443,US
-87964444,87964445,GB
-87964446,87964447,US
-87964448,87964449,CA
-87964450,87964455,GB
+87958016,87958023,SG
+87958024,87958031,IN
+87958032,87958039,ID
+87958040,87958047,US
+87958048,87958055,GB
+87958056,87958063,CN
+87958064,87958279,SG
+87958280,87958287,CN
+87958288,87958295,US
+87958296,87958303,GB
+87958304,87958311,KR
+87958312,87958527,SG
+87958528,87959039,CZ
+87959040,87959507,NL
+87959508,87959527,BE
+87959528,87959535,US
+87959536,87959547,BE
+87959548,87959551,NL
+87959552,87960063,DE
+87960064,87960575,GB
+87960576,87961584,US
+87961585,87961587,CA
+87961588,87961588,US
+87961589,87961591,CA
+87961592,87963652,US
+87963653,87963655,AS
+87963656,87963656,US
+87963657,87963659,AI
+87963660,87963660,US
+87963661,87963663,AG
+87963664,87963664,US
+87963665,87963667,AR
+87963668,87963668,US
+87963669,87963671,AW
+87963672,87963672,US
+87963673,87963675,BS
+87963676,87963676,US
+87963677,87963679,BB
+87963680,87963680,US
+87963681,87963683,BZ
+87963684,87963684,US
+87963685,87963687,BM
+87963688,87963688,US
+87963689,87963691,BO
+87963692,87963692,US
+87963693,87963695,VG
+87963696,87963696,US
+87963697,87963699,KY
+87963700,87963700,US
+87963701,87963703,CL
+87963704,87963708,US
+87963709,87963711,CO
+87963712,87963712,US
+87963713,87963715,CK
+87963716,87963716,US
+87963717,87963719,CR
+87963720,87963720,US
+87963721,87963723,CU
+87963724,87963724,US
+87963725,87963727,DM
+87963728,87963728,US
+87963729,87963731,DO
+87963732,87963732,US
+87963733,87963735,EC
+87963736,87963736,US
+87963737,87963739,SV
+87963740,87963740,US
+87963741,87963743,FK
+87963744,87963744,US
+87963745,87963747,FJ
+87963748,87963748,US
+87963749,87963751,GD
+87963752,87963752,US
+87963753,87963755,GP
+87963756,87963756,US
+87963757,87963759,GU
+87963760,87963760,US
+87963761,87963763,GT
+87963764,87963764,US
+87963765,87963767,GY
+87963768,87963768,US
+87963769,87963771,HT
+87963772,87963772,US
+87963773,87963775,HN
+87963776,87963776,US
+87963777,87963779,JM
+87963780,87963780,US
+87963781,87963783,KI
+87963784,87963784,US
+87963785,87963787,MS
+87963788,87963788,US
+87963789,87963791,NR
+87963792,87963792,US
+87963793,87963795,NC
+87963796,87963796,US
+87963797,87963799,NI
+87963800,87963800,US
+87963801,87963803,NU
+87963804,87963804,US
+87963805,87963807,NF
+87963808,87963808,US
+87963809,87963811,KP
+87963812,87963812,US
+87963813,87963815,PW
+87963816,87963816,US
+87963817,87963819,PA
+87963820,87963820,US
+87963821,87963823,PG
+87963824,87963824,US
+87963825,87963827,PY
+87963828,87963828,US
+87963829,87963831,PE
+87963832,87963832,US
+87963833,87963835,PH
+87963836,87963836,US
+87963837,87963839,PN
+87963840,87963840,US
+87963841,87963843,PR
+87963844,87963844,US
+87963845,87963847,KN
+87963848,87963848,US
+87963849,87963851,LC
+87963852,87963852,US
+87963853,87963855,VC
+87963856,87963856,US
+87963857,87963859,WS
+87963860,87963860,US
+87963861,87963863,SB
+87963864,87963864,US
+87963865,87963867,SR
+87963868,87963868,US
+87963869,87963871,SZ
+87963872,87963880,US
+87963881,87963883,TT
+87963884,87963884,US
+87963885,87963887,TC
+87963888,87963888,US
+87963889,87963891,TV
+87963892,87963892,US
+87963893,87963895,UY
+87963896,87963912,US
+87963913,87963915,DE
+87963916,87963956,US
+87963957,87963959,CA
+87963960,87963960,US
+87963961,87963963,GB
+87963964,87964000,US
+87964001,87964003,VU
+87964004,87964004,US
+87964005,87964007,VE
+87964008,87964164,US
+87964165,87964167,AS
+87964168,87964168,US
+87964169,87964171,AI
+87964172,87964172,US
+87964173,87964175,AG
+87964176,87964176,US
+87964177,87964179,AR
+87964180,87964180,US
+87964181,87964183,AW
+87964184,87964184,US
+87964185,87964187,BS
+87964188,87964188,US
+87964189,87964191,BB
+87964192,87964192,US
+87964193,87964195,BZ
+87964196,87964196,US
+87964197,87964199,BM
+87964200,87964200,US
+87964201,87964203,BO
+87964204,87964204,US
+87964205,87964207,VG
+87964208,87964208,US
+87964209,87964211,KY
+87964212,87964212,US
+87964213,87964215,CL
+87964216,87964216,US
+87964217,87964219,CO
+87964220,87964220,US
+87964221,87964223,CK
+87964224,87964224,US
+87964225,87964227,CR
+87964228,87964228,US
+87964229,87964231,CU
+87964232,87964232,US
+87964233,87964235,DM
+87964236,87964236,US
+87964237,87964239,DO
+87964240,87964240,US
+87964241,87964243,EC
+87964244,87964244,US
+87964245,87964247,SV
+87964248,87964248,US
+87964249,87964251,FK
+87964252,87964252,US
+87964253,87964255,FJ
+87964256,87964256,US
+87964257,87964259,GD
+87964260,87964260,US
+87964261,87964263,GP
+87964264,87964264,US
+87964265,87964267,GT
+87964268,87964268,US
+87964269,87964271,GY
+87964272,87964272,US
+87964273,87964275,HT
+87964276,87964276,US
+87964277,87964279,HN
+87964280,87964280,US
+87964281,87964283,JM
+87964284,87964284,US
+87964285,87964287,KI
+87964288,87964288,US
+87964289,87964291,MS
+87964292,87964292,US
+87964293,87964295,NR
+87964296,87964296,US
+87964297,87964299,NC
+87964300,87964300,US
+87964301,87964303,NI
+87964304,87964304,US
+87964305,87964307,NU
+87964308,87964308,US
+87964309,87964311,NF
+87964312,87964312,US
+87964313,87964315,PA
+87964316,87964316,US
+87964317,87964319,PY
+87964320,87964320,US
+87964321,87964323,PE
+87964324,87964324,US
+87964325,87964327,PN
+87964328,87964328,US
+87964329,87964331,PR
+87964332,87964332,US
+87964333,87964335,KN
+87964336,87964336,US
+87964337,87964339,LC
+87964340,87964340,US
+87964341,87964343,PM
+87964344,87964344,US
+87964345,87964347,VC
+87964348,87964348,US
+87964349,87964351,WS
+87964352,87964352,US
+87964353,87964355,SB
+87964356,87964356,US
+87964357,87964359,SR
+87964360,87964360,US
+87964361,87964363,SZ
+87964364,87964372,US
+87964373,87964375,TT
+87964376,87964376,US
+87964377,87964379,TC
+87964380,87964380,US
+87964381,87964383,TV
+87964384,87964384,US
+87964385,87964387,UY
+87964388,87964404,US
+87964405,87964407,DE
+87964408,87964447,US
+87964448,87964451,CA
+87964452,87964455,GB
87964456,87964491,US
87964492,87964495,VU
87964496,87964499,VE
-87964500,87964507,US
-87964508,87964716,GB
-87964717,87964717,BW
-87964718,87964720,GB
-87964721,87964721,BN
-87964722,87964927,GB
+87964500,87964676,US
+87964677,87964679,AD
+87964680,87964680,US
+87964681,87964683,AO
+87964684,87964684,US
+87964685,87964687,AM
+87964688,87964688,US
+87964689,87964691,AZ
+87964692,87964692,US
+87964693,87964695,BH
+87964696,87964696,US
+87964697,87964699,BD
+87964700,87964700,US
+87964701,87964703,BY
+87964704,87964704,US
+87964705,87964707,BJ
+87964708,87964708,US
+87964709,87964711,BT
+87964712,87964712,US
+87964713,87964715,BA
+87964716,87964716,US
+87964717,87964719,BW
+87964720,87964720,US
+87964721,87964723,BN
+87964724,87964724,US
+87964725,87964727,BG
+87964728,87964728,US
+87964729,87964731,BF
+87964732,87964732,US
+87964733,87964735,BI
+87964736,87964736,US
+87964737,87964739,KH
+87964740,87964740,US
+87964741,87964743,CM
+87964744,87964744,US
+87964745,87964747,CV
+87964748,87964748,US
+87964749,87964751,CF
+87964752,87964752,US
+87964753,87964755,TD
+87964756,87964760,US
+87964761,87964763,CX
+87964764,87964764,US
+87964765,87964767,CC
+87964768,87964768,US
+87964769,87964771,KM
+87964772,87964772,US
+87964773,87964775,CD
+87964776,87964776,US
+87964777,87964779,CI
+87964780,87964780,US
+87964781,87964783,CY
+87964784,87964784,US
+87964785,87964787,EG
+87964788,87964788,US
+87964789,87964791,GQ
+87964792,87964792,US
+87964793,87964795,ER
+87964796,87964796,US
+87964797,87964799,EE
+87964800,87964800,US
+87964801,87964803,ET
+87964804,87964804,US
+87964805,87964807,FO
+87964808,87964808,US
+87964809,87964811,GA
+87964812,87964812,US
+87964813,87964815,GM
+87964816,87964816,US
+87964817,87964819,GE
+87964820,87964820,US
+87964821,87964823,GH
+87964824,87964824,US
+87964825,87964827,GI
+87964828,87964828,US
+87964829,87964831,GR
+87964832,87964832,US
+87964833,87964835,GL
+87964836,87964836,US
+87964837,87964839,GU
+87964840,87964840,US
+87964841,87964843,GW
+87964844,87964844,US
+87964845,87964847,GN
+87964848,87964848,US
+87964849,87964851,IR
+87964852,87964852,US
+87964853,87964855,IQ
+87964856,87964856,US
+87964857,87964857,IE
+87964858,87964858,US
+87964859,87964859,IE
+87964860,87964860,US
+87964861,87964863,JO
+87964864,87964864,US
+87964865,87964867,KZ
+87964868,87964868,US
+87964869,87964871,KE
+87964872,87964872,US
+87964873,87964874,KW
+87964875,87964876,US
+87964877,87964879,KG
+87964880,87964880,US
+87964881,87964883,LA
+87964884,87964884,US
+87964885,87964887,LV
+87964888,87964888,US
+87964889,87964891,LB
+87964892,87964892,US
+87964893,87964895,LS
+87964896,87964896,US
+87964897,87964899,LR
+87964900,87964900,US
+87964901,87964903,LY
+87964904,87964904,US
+87964905,87964907,LI
+87964908,87964908,US
+87964909,87964911,LT
+87964912,87964912,US
+87964913,87964915,MO
+87964916,87964916,US
+87964917,87964919,MK
+87964920,87964920,US
+87964921,87964923,MG
+87964924,87964924,US
+87964925,87964927,MW
87964928,87964931,MV
87964932,87964935,ML
87964936,87964936,MN
@@ -748,7 +1350,8 @@
87964980,87964983,NP
87964984,87964987,NE
87964988,87964991,NG
-87964992,87964995,CZ
+87964992,87964992,CZ
+87964993,87964995,KP
87964996,87964999,OM
87965000,87965003,PK
87965004,87965007,PW
@@ -797,22 +1400,256 @@
87965172,87965175,DZ
87965176,87965179,AX
87965180,87965183,MN
-87965184,87965294,GB
-87965295,87965295,EG
-87965296,87965460,GB
-87965461,87965461,MN
-87965462,87965535,GB
+87965184,87965188,US
+87965189,87965191,AD
+87965192,87965192,US
+87965193,87965195,AO
+87965196,87965196,US
+87965197,87965199,AM
+87965200,87965200,US
+87965201,87965203,AZ
+87965204,87965204,US
+87965205,87965207,BH
+87965208,87965208,US
+87965209,87965211,BD
+87965212,87965212,US
+87965213,87965215,BY
+87965216,87965216,US
+87965217,87965219,BJ
+87965220,87965220,US
+87965221,87965223,BT
+87965224,87965224,US
+87965225,87965227,BA
+87965228,87965228,US
+87965229,87965231,BW
+87965232,87965232,US
+87965233,87965235,BN
+87965236,87965236,US
+87965237,87965239,BG
+87965240,87965240,US
+87965241,87965243,BF
+87965244,87965244,US
+87965245,87965247,BI
+87965248,87965248,US
+87965249,87965251,KH
+87965252,87965252,US
+87965253,87965255,CM
+87965256,87965256,US
+87965257,87965259,CV
+87965260,87965260,US
+87965261,87965263,CF
+87965264,87965264,US
+87965265,87965267,TD
+87965268,87965268,US
+87965269,87965271,CX
+87965272,87965272,US
+87965273,87965275,CC
+87965276,87965276,US
+87965277,87965279,KM
+87965280,87965280,US
+87965281,87965283,CD
+87965284,87965284,US
+87965285,87965287,CI
+87965288,87965288,US
+87965289,87965291,CY
+87965292,87965292,US
+87965293,87965295,EG
+87965296,87965296,US
+87965297,87965299,GQ
+87965300,87965300,US
+87965301,87965303,ER
+87965304,87965304,US
+87965305,87965307,EE
+87965308,87965308,US
+87965309,87965311,ET
+87965312,87965312,US
+87965313,87965315,FO
+87965316,87965316,US
+87965317,87965319,GA
+87965320,87965320,US
+87965321,87965323,GM
+87965324,87965324,US
+87965325,87965327,GE
+87965328,87965328,US
+87965329,87965331,GH
+87965332,87965332,US
+87965333,87965335,GI
+87965336,87965336,US
+87965337,87965339,GR
+87965340,87965340,US
+87965341,87965343,GL
+87965344,87965344,US
+87965345,87965347,GW
+87965348,87965348,US
+87965349,87965351,GN
+87965352,87965352,US
+87965353,87965355,IR
+87965356,87965356,US
+87965357,87965359,IQ
+87965360,87965360,US
+87965361,87965363,IE
+87965364,87965364,US
+87965365,87965367,JO
+87965368,87965368,US
+87965369,87965371,KZ
+87965372,87965372,US
+87965373,87965375,KE
+87965376,87965376,US
+87965377,87965379,KW
+87965380,87965380,US
+87965381,87965383,KG
+87965384,87965384,US
+87965385,87965387,LA
+87965388,87965389,US
+87965390,87965391,LV
+87965392,87965392,US
+87965393,87965395,LB
+87965396,87965396,US
+87965397,87965399,LS
+87965400,87965400,US
+87965401,87965403,LR
+87965404,87965404,US
+87965405,87965407,LY
+87965408,87965408,US
+87965409,87965411,LI
+87965412,87965412,US
+87965413,87965415,LT
+87965416,87965416,US
+87965417,87965419,MO
+87965420,87965420,US
+87965421,87965423,MK
+87965424,87965424,US
+87965425,87965427,MG
+87965428,87965428,US
+87965429,87965431,MW
+87965432,87965432,US
+87965433,87965435,MV
+87965436,87965436,US
+87965437,87965439,ML
+87965440,87965440,US
+87965441,87965443,MT
+87965444,87965444,US
+87965445,87965447,MR
+87965448,87965448,US
+87965449,87965451,MU
+87965452,87965452,US
+87965453,87965455,MD
+87965456,87965456,US
+87965457,87965459,MC
+87965460,87965460,US
+87965461,87965463,MN
+87965464,87965464,US
+87965465,87965467,ME
+87965468,87965468,US
+87965469,87965471,MA
+87965472,87965472,US
+87965473,87965475,MZ
+87965476,87965476,US
+87965477,87965479,MM
+87965480,87965480,US
+87965481,87965483,NA
+87965484,87965484,US
+87965485,87965487,NP
+87965488,87965488,US
+87965489,87965491,NE
+87965492,87965492,US
+87965493,87965495,NG
+87965496,87965496,US
+87965497,87965499,OM
+87965500,87965500,US
+87965501,87965503,PK
+87965504,87965504,US
+87965505,87965507,PS
+87965508,87965508,US
+87965509,87965511,QA
+87965512,87965512,US
+87965513,87965515,DJ
+87965516,87965516,US
+87965517,87965519,CG
+87965520,87965520,US
+87965521,87965523,RO
+87965524,87965524,US
+87965525,87965527,RW
+87965528,87965528,US
+87965529,87965531,SH
+87965532,87965532,US
+87965533,87965535,PM
87965536,87965539,SM
-87965540,87965562,GB
-87965563,87965563,SK
-87965564,87965664,GB
-87965665,87965665,HR
-87965666,87965695,GB
+87965540,87965540,US
+87965541,87965543,ST
+87965544,87965544,US
+87965545,87965547,SA
+87965548,87965548,US
+87965549,87965551,SN
+87965552,87965552,US
+87965553,87965555,RS
+87965556,87965556,US
+87965557,87965559,SL
+87965560,87965560,US
+87965561,87965563,SK
+87965564,87965564,US
+87965565,87965567,SI
+87965568,87965568,US
+87965569,87965571,SO
+87965572,87965572,US
+87965573,87965575,LK
+87965576,87965576,US
+87965577,87965579,SD
+87965580,87965580,US
+87965581,87965583,SJ
+87965584,87965584,US
+87965585,87965587,SY
+87965588,87965588,US
+87965589,87965591,TJ
+87965592,87965592,US
+87965593,87965595,TZ
+87965596,87965596,US
+87965597,87965599,TH
+87965600,87965600,US
+87965601,87965603,TG
+87965604,87965604,US
+87965605,87965607,TN
+87965608,87965608,US
+87965609,87965611,TM
+87965612,87965612,US
+87965613,87965615,UG
+87965616,87965616,US
+87965617,87965619,PT
+87965620,87965624,US
+87965625,87965627,UA
+87965628,87965629,US
+87965630,87965630,AE
+87965631,87965632,US
+87965633,87965635,UZ
+87965636,87965636,US
+87965637,87965639,VA
+87965640,87965640,US
+87965641,87965643,VN
+87965644,87965644,US
+87965645,87965647,YE
+87965648,87965648,US
+87965649,87965651,ZM
+87965652,87965652,US
+87965653,87965655,ZW
+87965656,87965656,US
+87965657,87965659,PT
+87965660,87965664,US
+87965665,87965667,HR
+87965668,87965672,US
+87965673,87965675,AF
+87965676,87965676,US
+87965677,87965679,AL
+87965680,87965680,US
+87965681,87965683,DZ
+87965684,87965684,US
+87965685,87965687,AX
+87965688,87965695,US
87965696,87967743,DE
87967744,87969791,IT
87969792,87970815,IM
87970816,87971071,GG
-87971072,87972863,IM
+87971072,87971839,IM
+87971840,87972863,IE
87972864,87973375,GI
87973376,87973887,IM
87973888,87981567,DE
@@ -833,8 +1670,7 @@
88020992,88023039,FR
88023040,88031231,DE
88031232,88047615,KZ
-88047616,88048639,RU
-88048640,88049663,LU
+88047616,88049663,RU
88049664,88051711,IT
88051712,88053759,GB
88053760,88055807,RU
@@ -878,7 +1714,7 @@
90456064,90472447,RU
90472448,90476543,DE
90476544,90478591,FR
-90478592,90480639,GB
+90478592,90480639,VG
90480640,90482687,YE
90482688,90484735,GB
90484736,90488831,NO
@@ -892,8 +1728,8 @@
90516992,90517503,FR
90517504,90518527,RU
90518528,90520575,KZ
-90520576,90529791,RU
-90529792,90533887,NL
+90520576,90528767,RU
+90528768,90533887,NL
90533888,90537983,EE
90537984,90540031,RU
90540032,90544127,GB
@@ -920,7 +1756,11 @@
90570752,90578943,IT
90583040,90587135,CZ
90587136,90589183,PL
-90589184,90591231,FR
+90589184,90590271,FR
+90590272,90590287,GP
+90590288,90590719,FR
+90590720,90590975,MQ
+90590976,90591231,FR
90591232,90595327,GB
90595328,90603519,PS
90603520,90605567,ES
@@ -929,8 +1769,7 @@
90609664,90611711,RU
90611712,90613759,DE
90613760,90615807,GB
-90615808,90616831,BA
-90616832,90617855,SI
+90615808,90617855,BA
90617856,90619903,GB
90619904,90636287,IL
90636288,90701823,DK
@@ -972,8 +1811,34 @@
91226112,92274687,IR
92274688,92536831,RU
92536832,92569599,NL
-92569600,92577279,AT
-92577280,92577535,DE
+92569600,92569855,SI
+92569856,92570111,FR
+92570112,92570367,DE
+92570368,92570623,GB
+92570624,92570879,IE
+92570880,92571135,GB
+92571136,92571391,SK
+92571392,92571647,BG
+92571648,92571903,DE
+92571904,92572159,AT
+92572160,92572415,IT
+92572416,92572927,RU
+92572928,92573183,CH
+92573184,92573439,CZ
+92573440,92573695,IT
+92573696,92573951,AT
+92573952,92574207,ES
+92574208,92574463,PL
+92574464,92574719,PT
+92574720,92574975,UA
+92574976,92575231,LU
+92575232,92575487,HU
+92575488,92575999,TR
+92576000,92576255,RS
+92576256,92576511,AE
+92576512,92576767,DE
+92576768,92577023,CH
+92577024,92577535,DE
92577536,92585983,AT
92585984,92602367,SA
92602368,92604415,BA
@@ -986,19 +1851,82 @@
92635136,92643327,BA
92643328,92645375,GE
92645376,92651519,GB
-92651520,92655039,SE
+92651520,92654591,SE
+92654592,92654623,US
+92654624,92654847,SE
+92654848,92654879,US
+92654880,92655039,SE
92655040,92655071,NL
-92655072,92655295,SE
+92655072,92655103,SE
+92655104,92655135,US
+92655136,92655295,SE
92655296,92655327,NL
-92655328,92657647,SE
-92657648,92657663,NL
-92657664,92657791,SE
-92657792,92657823,NL
-92657824,92658847,SE
-92658848,92658863,NL
-92658864,92659071,SE
-92659072,92659103,NL
-92659104,92659711,SE
+92655328,92655359,SE
+92655360,92655391,US
+92655392,92655615,SE
+92655616,92655647,US
+92655648,92655727,SE
+92655728,92655743,NL
+92655744,92655871,SE
+92655872,92655903,US
+92655904,92655999,SE
+92656000,92656015,NL
+92656016,92656127,SE
+92656128,92656159,US
+92656160,92656223,SE
+92656224,92656239,NL
+92656240,92656383,SE
+92656384,92656415,US
+92656416,92656591,SE
+92656592,92656607,NL
+92656608,92656639,SE
+92656640,92656671,US
+92656672,92656783,SE
+92656784,92656799,NL
+92656800,92656895,SE
+92656896,92656927,US
+92656928,92657103,SE
+92657104,92657119,NL
+92657120,92657151,SE
+92657152,92657183,US
+92657184,92657279,SE
+92657280,92657295,NL
+92657296,92657407,SE
+92657408,92657439,US
+92657440,92657631,SE
+92657632,92657663,NL
+92657664,92657695,US
+92657696,92657775,SE
+92657776,92657823,NL
+92657824,92657919,SE
+92657920,92657951,US
+92657952,92658111,SE
+92658112,92658127,NL
+92658128,92658175,SE
+92658176,92658207,US
+92658208,92658303,SE
+92658304,92658319,NL
+92658320,92658431,SE
+92658432,92658463,US
+92658464,92658575,SE
+92658576,92658591,NL
+92658592,92658687,SE
+92658688,92658719,US
+92658720,92658847,SE
+92658848,92658879,NL
+92658880,92658943,SE
+92658944,92658975,US
+92658976,92659055,SE
+92659056,92659103,NL
+92659104,92659199,SE
+92659200,92659231,US
+92659232,92659295,SE
+92659296,92659311,NL
+92659312,92659455,SE
+92659456,92659471,US
+92659472,92659631,SE
+92659632,92659647,NL
+92659648,92659711,SE
92659712,92663807,AZ
92663808,92665855,GB
92665856,92667903,PL
@@ -1020,103 +1948,389 @@
92721152,92723199,PL
92723200,92725247,RU
92725248,92733439,SY
-92733440,92734735,FR
+92733440,92733931,FR
+92733932,92733935,ES
+92733936,92734639,FR
+92734640,92734655,ES
+92734656,92734735,FR
92734736,92734739,DE
-92734740,92735103,FR
+92734740,92734831,FR
+92734832,92734847,ES
+92734848,92735103,FR
92735104,92735119,GB
-92735120,92735615,FR
+92735120,92735347,FR
+92735348,92735351,GB
+92735352,92735615,FR
92735616,92735616,DE
-92735617,92735875,FR
+92735617,92735619,FR
+92735620,92735623,ES
+92735624,92735823,FR
+92735824,92735827,ES
+92735828,92735875,FR
92735876,92735876,DE
92735877,92735999,FR
92736000,92736255,GB
92736256,92736479,FR
92736480,92736480,DE
-92736481,92738071,FR
+92736481,92736607,FR
+92736608,92736639,PT
+92736640,92737151,FR
+92737152,92737183,NL
+92737184,92737199,FR
+92737200,92737215,PL
+92737216,92737279,FR
+92737280,92737311,FI
+92737312,92737611,FR
+92737612,92737615,GB
+92737616,92737887,FR
+92737888,92737903,IT
+92737904,92738071,FR
92738072,92738075,DE
-92738076,92739199,FR
+92738076,92738239,FR
+92738240,92738271,GB
+92738272,92738659,FR
+92738660,92738679,ES
+92738680,92738783,FR
+92738784,92738815,GB
+92738816,92739039,FR
+92739040,92739043,PL
+92739044,92739199,FR
92739200,92739215,DE
-92739216,92740611,FR
+92739216,92739351,FR
+92739352,92739355,PL
+92739356,92739403,FR
+92739404,92739407,IE
+92739408,92740415,FR
+92740416,92740431,NL
+92740432,92740611,FR
92740612,92740615,CZ
-92740616,92740915,FR
+92740616,92740639,FR
+92740640,92740671,ES
+92740672,92740915,FR
92740916,92740923,DE
-92740924,92745207,FR
+92740924,92741311,FR
+92741312,92741315,CZ
+92741316,92741331,FR
+92741332,92741335,ES
+92741336,92742419,FR
+92742420,92742423,ES
+92742424,92742607,FR
+92742608,92742623,BE
+92742624,92742771,FR
+92742772,92742775,ES
+92742776,92742815,FR
+92742816,92742819,ES
+92742820,92743343,FR
+92743344,92743351,GB
+92743352,92743679,FR
+92743680,92743935,ES
+92743936,92744103,FR
+92744104,92744111,ES
+92744112,92744123,FR
+92744124,92744127,GB
+92744128,92744319,FR
+92744320,92744323,GB
+92744324,92744551,FR
+92744552,92744555,ES
+92744556,92744951,FR
+92744952,92744959,ES
+92744960,92745207,FR
92745208,92745215,ES
-92745216,92745663,FR
+92745216,92745395,FR
+92745396,92745399,GB
+92745400,92745663,FR
92745664,92745695,PL
-92745696,92747231,FR
+92745696,92746415,FR
+92746416,92746431,ES
+92746432,92746559,FR
+92746560,92746623,IT
+92746624,92747043,FR
+92747044,92747047,CH
+92747048,92747231,FR
92747232,92747247,PL
-92747248,92747711,FR
+92747248,92747255,FR
+92747256,92747263,LT
+92747264,92747547,FR
+92747548,92747567,ES
+92747568,92747711,FR
92747712,92747775,GB
92747776,92748516,FR
92748517,92748517,BE
-92748518,92748751,FR
-92748752,92748752,PT
-92748753,92748773,FR
-92748774,92748774,PT
-92748775,92748863,FR
+92748518,92748543,FR
+92748544,92748799,PT
+92748800,92748843,FR
+92748844,92748847,GB
+92748848,92748863,FR
92748864,92748879,ES
-92748880,92749067,FR
+92748880,92748983,FR
+92748984,92748991,GB
+92748992,92748999,ES
+92749000,92749007,PT
+92749008,92749011,FR
+92749012,92749015,ES
+92749016,92749023,FR
+92749024,92749039,FI
+92749040,92749055,IE
+92749056,92749067,FR
92749068,92749071,GB
-92749072,92749471,FR
+92749072,92749135,FR
+92749136,92749151,FI
+92749152,92749471,FR
92749472,92749487,PL
-92749488,92751711,FR
+92749488,92749747,FR
+92749748,92749751,ES
+92749752,92750639,FR
+92750640,92750643,ES
+92750644,92750911,FR
+92750912,92750943,PT
+92750944,92751243,FR
+92751244,92751247,ES
+92751248,92751383,FR
+92751384,92751391,ES
+92751392,92751487,FR
+92751488,92751615,IE
+92751616,92751711,FR
92751712,92751712,DE
-92751713,92753647,FR
+92751713,92751807,FR
+92751808,92751871,NL
+92751872,92752031,FR
+92752032,92752063,FI
+92752064,92753079,FR
+92753080,92753087,ES
+92753088,92753215,FR
+92753216,92753279,PT
+92753280,92753647,FR
92753648,92753663,ES
-92753664,92757311,FR
+92753664,92754031,FR
+92754032,92754047,PT
+92754048,92754367,FR
+92754368,92754431,GB
+92754432,92754447,FR
+92754448,92754463,GB
+92754464,92754551,FR
+92754552,92754555,DE
+92754556,92754579,FR
+92754580,92754583,ES
+92754584,92755135,FR
+92755136,92755199,PT
+92755200,92755439,FR
+92755440,92755455,GB
+92755456,92755743,FR
+92755744,92755775,FI
+92755776,92755839,GB
+92755840,92757311,FR
92757312,92757375,ES
-92757376,92760159,FR
+92757376,92758207,FR
+92758208,92758223,ES
+92758224,92758367,FR
+92758368,92758383,ES
+92758384,92758915,FR
+92758916,92758919,GB
+92758920,92759263,FR
+92759264,92759279,ES
+92759280,92759287,FR
+92759288,92759295,ES
+92759296,92760159,FR
92760160,92760191,DE
-92760192,92760323,FR
+92760192,92760255,CZ
+92760256,92760323,FR
92760324,92760327,DE
-92760328,92761151,FR
+92760328,92760607,FR
+92760608,92760639,GB
+92760640,92760671,LT
+92760672,92761151,FR
92761152,92761215,PT
-92761216,92761390,FR
-92761391,92761391,FI
-92761392,92762383,FR
-92762384,92762387,ES
-92762388,92764223,FR
+92761216,92761375,FR
+92761376,92761391,FI
+92761392,92762127,FR
+92762128,92762135,ES
+92762136,92762279,FR
+92762280,92762283,GB
+92762284,92762383,FR
+92762384,92762391,ES
+92762392,92762719,FR
+92762720,92762751,PT
+92762752,92762783,BE
+92762784,92762863,FR
+92762864,92762879,IT
+92762880,92763103,FR
+92763104,92763119,CZ
+92763120,92763127,FR
+92763128,92763135,ES
+92763136,92763391,FR
+92763392,92763519,IE
+92763520,92764223,FR
92764224,92764287,ES
-92764288,92777899,FR
-92777900,92777900,GB
-92777901,92778487,FR
-92778488,92778488,ES
-92778489,92782335,FR
+92764288,92764687,FR
+92764688,92764703,ES
+92764704,92764863,FR
+92764864,92764879,ES
+92764880,92764911,FR
+92764912,92764927,GB
+92764928,92765423,FR
+92765424,92765427,GB
+92765428,92766015,FR
+92766016,92766047,ES
+92766048,92776671,FR
+92776672,92776703,PL
+92776704,92776895,FR
+92776896,92776959,NL
+92776960,92777055,FR
+92777056,92777087,DE
+92777088,92777855,FR
+92777856,92777983,GB
+92777984,92778431,FR
+92778432,92778495,ES
+92778496,92782335,FR
92782336,92782457,RU
92782458,92782458,FR
92782459,92782528,RU
92782529,92782529,FR
92782530,92782591,RU
-92782592,92782687,FR
+92782592,92782623,FR
+92782624,92782655,PL
+92782656,92782687,FR
92782688,92782719,ES
-92782720,92783291,FR
+92782720,92782815,FR
+92782816,92782847,CZ
+92782848,92782879,NL
+92782880,92783155,FR
+92783156,92783159,GB
+92783160,92783291,FR
92783292,92783295,DE
-92783296,92784239,FR
+92783296,92783359,FR
+92783360,92783423,ES
+92783424,92783543,FR
+92783544,92783547,ES
+92783548,92783871,FR
+92783872,92783887,PL
+92783888,92784099,FR
+92784100,92784103,CZ
+92784104,92784239,FR
92784240,92784243,DE
92784244,92784255,FR
92784256,92784263,NL
-92784264,92785439,FR
+92784264,92784319,FR
+92784320,92784351,NL
+92784352,92784667,FR
+92784668,92784671,IE
+92784672,92784687,LT
+92784688,92784703,FI
+92784704,92784895,FR
+92784896,92784959,ES
+92784960,92785023,FR
+92785024,92785039,ES
+92785040,92785183,FR
+92785184,92785199,ES
+92785200,92785363,FR
+92785364,92785367,PT
+92785368,92785407,FR
+92785408,92785439,ES
92785440,92785455,DE
-92785456,92785735,FR
+92785456,92785611,FR
+92785612,92785615,ES
+92785616,92785735,FR
92785736,92785739,DE
-92785740,92786827,FR
+92785740,92785791,FR
+92785792,92785823,CZ
+92785824,92786175,FR
+92786176,92786179,GB
+92786180,92786239,FR
+92786240,92786255,FI
+92786256,92786295,FR
+92786296,92786299,GB
+92786300,92786415,FR
+92786416,92786419,GB
+92786420,92786527,FR
+92786528,92786535,ES
+92786536,92786655,FR
+92786656,92786671,FI
+92786672,92786827,FR
92786828,92786831,IT
-92786832,92789703,FR
+92786832,92786911,FR
+92786912,92786927,ES
+92786928,92787199,FR
+92787200,92787203,FI
+92787204,92787251,FR
+92787252,92787255,ES
+92787256,92787567,FR
+92787568,92787583,IT
+92787584,92787703,FR
+92787704,92787707,GB
+92787708,92787711,FI
+92787712,92788095,FR
+92788096,92788127,DE
+92788128,92788131,FI
+92788132,92788399,FR
+92788400,92788415,FI
+92788416,92788447,FR
+92788448,92788479,BE
+92788480,92788495,FI
+92788496,92789119,FR
+92789120,92789183,ES
+92789184,92789219,FR
+92789220,92789223,ES
+92789224,92789255,FR
+92789256,92789259,GB
+92789260,92789463,FR
+92789464,92789471,IT
+92789472,92789703,FR
92789704,92789707,DE
92789708,92790271,FR
92790272,92790275,DE
-92790276,92790671,FR
+92790276,92790279,FR
+92790280,92790283,IE
+92790284,92790671,FR
92790672,92790679,ES
-92790680,92792415,FR
+92790680,92791903,FR
+92791904,92791935,PT
+92791936,92792415,FR
92792416,92792431,ES
-92792432,92795631,FR
+92792432,92792671,FR
+92792672,92792675,GB
+92792676,92792679,NL
+92792680,92793023,FR
+92793024,92793055,DE
+92793056,92793087,ES
+92793088,92793327,FR
+92793328,92793331,PL
+92793332,92794227,FR
+92794228,92794231,PT
+92794232,92794239,ES
+92794240,92794335,FR
+92794336,92794367,NL
+92794368,92794691,FR
+92794692,92794695,ES
+92794696,92795195,FR
+92795196,92795199,BE
+92795200,92795631,FR
92795632,92795639,CZ
-92795640,92796687,FR
+92795640,92796499,FR
+92796500,92796503,PL
+92796504,92796575,FR
+92796576,92796579,GB
+92796580,92796687,FR
92796688,92796691,DE
-92796692,92797355,FR
+92796692,92796879,FR
+92796880,92796895,FI
+92796896,92796911,GB
+92796912,92797163,FR
+92797164,92797167,PT
+92797168,92797355,FR
92797356,92797359,DE
-92797360,92798975,FR
+92797360,92797567,FR
+92797568,92797599,PT
+92797600,92797619,FR
+92797620,92797623,ES
+92797624,92797679,FR
+92797680,92797695,FI
+92797696,92798211,FR
+92798212,92798215,PL
+92798216,92798255,FR
+92798256,92798271,LT
+92798272,92798591,FR
+92798592,92798623,PT
+92798624,92798975,FR
92798976,93323263,RU
93323264,93335551,CH
93335552,93339647,IL
@@ -1136,16 +2350,18 @@
93417472,93419519,IR
93419520,93421567,IT
93421568,93425663,DE
-93425664,93427085,CZ
-93427086,93427086,DE
-93427087,93427711,CZ
+93425664,93426175,US
+93426176,93426183,SE
+93426184,93427711,US
93427712,93429759,NO
93429760,93431807,RU
93431808,93433855,ES
93433856,93437951,DE
93437952,93454335,RU
93454336,93585407,DE
-93585408,93626367,GB
+93585408,93606233,GB
+93606234,93606234,US
+93606235,93626367,GB
93626368,93634559,CH
93634560,93650943,HU
93650944,93652991,CH
@@ -1157,26 +2373,25 @@
93681664,93683711,UA
93683712,93685759,AT
93685760,93687807,BE
-93687808,93691647,RU
-93691648,93691903,GB
+93687808,93691903,RU
93691904,93693951,PL
93693952,93695999,IE
93696000,93700095,FR
93700096,93702143,PL
-93702144,93708287,RU
+93702144,93704191,RU
+93704192,93708287,UA
93708288,93712383,DE
93712384,93714431,HU
-93714432,93715455,GB
+93714432,93714943,NL
+93714944,93715455,GB
93715456,93715967,CA
-93715968,93749247,GB
+93715968,93716479,NL
+93716480,93749247,GB
93749248,93753343,IT
-93753344,93755391,IE
-93755392,93756415,GI
-93756416,93757439,US
+93753344,93756415,GB
+93756416,93757439,FR
93757440,93765631,GB
-93765632,93774847,SE
-93774848,93775871,NO
-93775872,93782015,SE
+93765632,93782015,SE
93782016,93836287,GB
93836288,93836799,NL
93836800,93842351,GB
@@ -1201,18 +2416,20 @@
93929472,93939711,GB
93939712,93941759,NO
93941760,93945855,CH
-93945856,93962239,UA
+93945856,93955071,UA
+93955072,93956095,RU
+93956096,93962239,UA
93962240,93972479,GB
-93972480,93973247,EE
+93972480,93973247,SE
93973248,93973503,GB
-93973504,93973759,EE
+93973504,93973759,SE
93973760,93974015,PL
-93974016,93974527,EE
+93974016,93974527,SE
93974528,93976575,CH
93976576,93978623,GB
93978624,94011391,ES
-94011392,94019583,GB
-94019584,94021631,DE
+94011392,94015487,GB
+94015488,94021631,DE
94021632,94022143,BA
94022144,94027263,RO
94027264,94027775,MD
@@ -1222,38 +2439,39 @@
94037504,94041087,RO
94041088,94042111,SE
94042112,94043135,BA
-94043136,94109695,RO
+94043136,94044159,RO
+94044160,94109695,SY
94109696,94175231,SA
-94175232,94175487,EE
+94175232,94175487,SE
94175488,94175743,CZ
-94175744,94177535,EE
+94175744,94177535,SE
94177536,94177791,IT
94177792,94178047,DK
-94178048,94178303,EE
-94178304,94178559,IE
-94178560,94180351,EE
+94178048,94178303,SE
+94178304,94179071,IE
+94179072,94180351,SE
94180352,94180607,PT
-94180608,94181631,EE
+94180608,94181631,SE
94181632,94181887,CZ
-94181888,94182399,EE
+94181888,94182399,SE
94182400,94182655,GB
-94182656,94183423,EE
+94182656,94183423,SE
94183424,94183597,RU
94183598,94183598,IL
94183599,94183935,RU
-94183936,94184191,EE
+94183936,94184191,SE
94184192,94184447,RU
-94184448,94186239,EE
+94184448,94186239,SE
94186240,94186495,IT
-94186496,94187007,EE
+94186496,94187007,SE
94187008,94187263,GB
-94187264,94187775,EE
+94187264,94187775,SE
94187776,94188031,NO
-94188032,94188287,EE
+94188032,94188287,SE
94188288,94188543,FR
-94188544,94189311,EE
+94188544,94189311,SE
94189312,94189567,IE
-94189568,94190079,EE
+94189568,94190079,SE
94190080,94191615,NL
94191616,94193663,GB
94193664,94195711,SI
@@ -1286,7 +2504,7 @@
94339072,94355455,ES
94355456,94357503,NL
94357504,94361599,GB
-94361600,94363647,PT
+94361600,94363647,LU
94363648,94365695,GB
94365696,94367743,HU
94367744,94369791,ES
@@ -1306,6 +2524,7 @@
95191040,95195135,CH
95195136,95197183,SE
95197184,95203327,GB
+95203328,95205375,FR
95205376,95207423,PL
95207424,95211519,GR
95211520,95213567,IT
@@ -1316,7 +2535,7 @@
95365120,95367167,ES
95367168,95369215,IT
95369216,95371263,GB
-95371264,95375359,IT
+95371264,95374591,IT
95375360,95377407,NL
95377408,95387647,RU
95387648,95387903,GB
@@ -1335,7 +2554,7 @@
95393408,95393535,AE
95393536,95393663,DE
95393664,95393791,QA
-95393792,95394047,DE
+95393792,95394047,GB
95394048,95394175,AU
95394176,95394303,DE
95394304,95395327,AU
@@ -1347,11 +2566,22 @@
95398656,95398911,US
95398912,95399423,DE
95399424,95399679,US
-95399680,95400447,DE
+95399680,95399695,DE
+95399696,95399807,US
+95399808,95399951,DE
+95399952,95400063,CA
+95400064,95400207,DE
+95400208,95400319,US
+95400320,95400447,DE
95400448,95400703,GB
-95400704,95401471,DE
+95400704,95400719,DE
+95400720,95400831,US
+95400832,95400975,DE
+95400976,95401087,US
+95401088,95401471,DE
95401472,95401727,GB
-95401728,95401903,DE
+95401728,95401855,US
+95401856,95401903,DE
95401904,95401911,AT
95401912,95401983,DE
95401984,95402111,GB
@@ -1362,16 +2592,23 @@
95402696,95402703,HR
95402704,95402719,DE
95402720,95402751,US
-95402752,95403183,DE
+95402752,95403007,DE
+95403008,95403135,US
+95403136,95403183,DE
95403184,95403191,BE
-95403192,95403519,DE
+95403192,95403263,DE
+95403264,95403391,US
+95403392,95403519,DE
95403520,95403775,GB
95403776,95404031,US
95404032,95404799,DE
95404800,95405055,GB
-95405056,95405567,DE
+95405056,95405311,DE
+95405312,95405439,US
+95405440,95405567,DE
95405568,95405823,GB
-95405824,95406335,DE
+95405824,95405951,US
+95405952,95406335,DE
95406336,95407103,GB
95407104,95407359,DE
95407360,95407871,US
@@ -1401,18 +2638,20 @@
95555584,95557631,GB
95557632,95559679,RU
95559680,95561727,NL
-95561728,95563775,IT
+95561728,95563007,IT
+95563008,95563263,GB
+95563264,95563775,IT
95563776,95567871,SK
95567872,95569919,NL
95569920,95571967,SE
95571968,95574015,RU
95574016,95576063,IT
-95576064,95580159,GB
+95576064,95578624,GB
+95578625,95578879,US
+95578880,95580159,GB
95580160,95582207,NL
95582208,95584255,IT
-95584256,95604735,GE
-95604736,95608831,RU
-95608832,95617023,GE
+95584256,95617023,GE
95617024,95625215,LV
95625216,95635455,IE
95635456,95637503,GB
@@ -1437,33 +2676,49 @@
96174080,96206847,HU
96206848,96209407,RU
96209408,96209919,HR
-96209920,96210943,RU
+96209920,96210943,NL
96210944,96214015,EE
96214016,96222463,RU
96222464,96222719,UA
96222720,96223231,RU
96223232,96224255,KZ
-96224256,96228863,RU
+96224256,96224767,RU
+96224768,96225279,LU
+96225280,96228863,RU
96228864,96229119,IE
-96229120,96241663,RU
+96229120,96229375,RU
+96229376,96230399,NL
+96230400,96241663,RU
96241664,96241919,UA
96241920,96245759,RU
96245760,96246783,KZ
-96246784,96250879,RU
+96246784,96247807,RU
+96247808,96248831,NL
+96248832,96250879,RU
96250880,96251903,UA
96251904,96252159,DE
96252160,96252415,ES
-96252416,96252671,FR
-96252672,96259327,RU
+96252416,96252671,RO
+96252672,96252927,NL
+96252928,96256511,RU
+96256512,96256767,FR
+96256768,96257023,DE
+96257024,96258047,US
+96258048,96259327,RU
96259328,96259583,RO
96259584,96259839,US
-96259840,96262143,RU
+96259840,96261119,RU
+96261120,96261375,NL
+96261376,96262143,RU
96262144,96262399,NL
-96262400,96265983,RU
+96262400,96264191,RU
+96264192,96265215,NL
+96265216,96265983,RU
96265984,96266495,NL
96266496,96266751,RU
96266752,96267007,NL
-96267008,96268287,RU
+96267008,96267775,RU
+96267776,96268287,LU
96268288,96272383,KZ
96272384,96305151,RU
96305152,96321535,DE
@@ -1484,15 +2739,15 @@
96325248,96325375,FI
96325376,96325503,US
96325504,96325631,SE
-96325632,96327935,RU
+96325632,96327679,RU
+96327680,96327935,NL
96327936,96328191,RO
96328192,96328447,US
96328448,96328703,DE
96328704,96329727,UA
96329728,96336895,RU
96336896,96337151,CZ
-96337152,96337407,NL
-96337408,96337663,RU
+96337152,96337663,NL
96337664,96337919,US
96337920,96403455,IR
96403456,96468991,AZ
@@ -1503,104 +2758,308 @@
96739480,96739483,DE
96739484,96739583,FR
96739584,96739587,PT
-96739588,96740302,FR
+96739588,96739807,FR
+96739808,96739839,NL
+96739840,96740302,FR
96740303,96740303,IT
-96740304,96747343,FR
+96740304,96740431,FR
+96740432,96740447,PL
+96740448,96741039,FR
+96741040,96741043,PT
+96741044,96741351,FR
+96741352,96741359,LT
+96741360,96741375,FR
+96741376,96741391,GB
+96741392,96741839,FR
+96741840,96741843,DE
+96741844,96742815,FR
+96742816,96742831,NL
+96742832,96743951,FR
+96743952,96743967,GB
+96743968,96744015,FR
+96744016,96744031,BE
+96744032,96744319,FR
+96744320,96744335,PT
+96744336,96744467,FR
+96744468,96744471,DE
+96744472,96744559,FR
+96744560,96744567,ES
+96744568,96745071,FR
+96745072,96745087,GB
+96745088,96745935,FR
+96745936,96745951,IT
+96745952,96746867,FR
+96746868,96746871,PL
+96746872,96747291,FR
+96747292,96747295,PT
+96747296,96747323,FR
+96747324,96747327,PL
+96747328,96747343,FR
96747344,96747359,DE
96747360,96747407,FR
96747408,96747423,DE
-96747424,96755815,FR
+96747424,96747487,FR
+96747488,96747519,ES
+96747520,96755815,FR
96755816,96755819,PT
-96755820,96757375,FR
+96755820,96755967,FR
+96755968,96755999,PT
+96756000,96756071,FR
+96756072,96756079,ES
+96756080,96756095,GB
+96756096,96756159,FR
+96756160,96756175,GB
+96756176,96756427,FR
+96756428,96756431,ES
+96756432,96756543,FR
+96756544,96756551,ES
+96756552,96757375,FR
96757376,96757379,DE
-96757380,96757639,FR
+96757380,96757403,FR
+96757404,96757407,NL
+96757408,96757639,FR
96757640,96757643,CH
96757644,96757647,SE
96757648,96757663,FR
96757664,96757667,SE
-96757668,96758247,FR
+96757668,96757883,FR
+96757884,96757887,ES
+96757888,96758247,FR
96758248,96758251,DE
-96758252,96759735,FR
+96758252,96759071,FR
+96759072,96759103,CZ
+96759104,96759311,FR
+96759312,96759327,BE
+96759328,96759471,FR
+96759472,96759487,GB
+96759488,96759735,FR
96759736,96759739,ES
-96759740,96761855,FR
+96759740,96760911,FR
+96760912,96760927,GB
+96760928,96761855,FR
96761856,96761871,BE
-96761872,96762799,FR
+96761872,96762143,FR
+96762144,96762159,IT
+96762160,96762799,FR
96762800,96762815,BE
-96762816,96763551,FR
+96762816,96762943,FR
+96762944,96763007,ES
+96763008,96763163,FR
+96763164,96763167,PT
+96763168,96763495,FR
+96763496,96763503,IT
+96763504,96763551,FR
96763552,96763555,GB
-96763556,96764239,FR
+96763556,96763575,FR
+96763576,96763579,ES
+96763580,96763935,FR
+96763936,96763967,IT
+96763968,96764175,FR
+96764176,96764191,GB
+96764192,96764207,FR
+96764208,96764223,LT
+96764224,96764239,FR
96764240,96764255,DE
-96764256,96766259,FR
+96764256,96764303,FR
+96764304,96764319,DE
+96764320,96764383,FR
+96764384,96764399,FI
+96764400,96764415,CZ
+96764416,96764859,FR
+96764860,96764863,CZ
+96764864,96765327,FR
+96765328,96765335,NL
+96765336,96766063,FR
+96766064,96766079,ES
+96766080,96766259,FR
96766260,96766263,ES
96766264,96766267,FR
96766268,96766271,ES
-96766272,96767031,FR
+96766272,96766399,FR
+96766400,96766415,GB
+96766416,96767031,FR
96767032,96767035,GB
-96767036,96767823,FR
+96767036,96767243,FR
+96767244,96767247,DE
+96767248,96767823,FR
96767824,96767839,BE
-96767840,96768151,FR
+96767840,96767903,FR
+96767904,96767935,PL
+96767936,96768143,FR
+96768144,96768151,PT
96768152,96768155,FI
-96768156,96768603,FR
+96768156,96768559,FR
+96768560,96768563,PL
+96768564,96768603,FR
96768604,96768607,DE
-96768608,96770159,FR
+96768608,96769279,FR
+96769280,96769295,ES
+96769296,96770075,FR
+96770076,96770079,PT
+96770080,96770159,FR
96770160,96770175,ES
96770176,96770651,FR
96770652,96770655,PL
-96770656,96772407,FR
+96770656,96771239,FR
+96771240,96771247,ES
+96771248,96771279,FR
+96771280,96771283,PT
+96771284,96771295,FR
+96771296,96771299,CZ
+96771300,96771615,FR
+96771616,96771647,FI
+96771648,96772215,FR
+96772216,96772223,PT
+96772224,96772407,FR
96772408,96772408,GB
96772409,96773119,FR
96773120,96773375,ES
-96773376,96774719,FR
+96773376,96774631,FR
+96774632,96774635,BE
+96774636,96774719,FR
96774720,96774751,ES
-96774752,96776319,FR
+96774752,96774911,FR
+96774912,96775039,GB
+96775040,96775183,FR
+96775184,96775199,PT
+96775200,96775231,FR
+96775232,96775295,DE
+96775296,96775471,FR
+96775472,96775487,ES
+96775488,96775491,FR
+96775492,96775495,ES
+96775496,96775551,FR
+96775552,96775567,GB
+96775568,96775631,FR
+96775632,96775639,ES
+96775640,96775975,FR
+96775976,96775983,ES
+96775984,96775999,FR
+96776000,96776063,GB
+96776064,96776127,FR
+96776128,96776191,ES
+96776192,96776319,FR
96776320,96776323,ES
96776324,96776511,FR
96776512,96776543,ES
-96776544,96778015,FR
+96776544,96776891,FR
+96776892,96776895,DE
+96776896,96777023,FR
+96777024,96777087,ES
+96777088,96777951,FR
+96777952,96777983,PL
+96777984,96778015,FR
96778016,96778031,ES
-96778032,96778167,FR
+96778032,96778103,FR
+96778104,96778107,BE
+96778108,96778167,FR
96778168,96778171,LU
-96778172,96778239,FR
+96778172,96778175,PT
+96778176,96778239,FR
96778240,96778243,NL
96778244,96778255,FR
96778256,96778259,NL
-96778260,96778859,FR
+96778260,96778263,PL
+96778264,96778859,FR
96778860,96778863,NL
96778864,96778867,CZ
96778868,96778871,BE
96778872,96779007,FR
96779008,96779011,PT
-96779012,96779247,FR
+96779012,96779015,FR
+96779016,96779023,ES
+96779024,96779167,FR
+96779168,96779199,PT
+96779200,96779247,FR
96779248,96779255,CZ
96779256,96780355,FR
96780356,96780359,BE
-96780360,96782199,FR
+96780360,96780815,FR
+96780816,96780823,ES
+96780824,96780847,FR
+96780848,96780855,CZ
+96780856,96781407,FR
+96781408,96781423,FI
+96781424,96781647,FR
+96781648,96781663,IT
+96781664,96781751,FR
+96781752,96781759,ES
+96781760,96781851,FR
+96781852,96781855,ES
+96781856,96782167,FR
+96782168,96782175,ES
+96782176,96782199,FR
96782200,96782207,CZ
96782208,96782911,FR
96782912,96782915,LT
-96782916,96783771,FR
+96782916,96782999,FR
+96783000,96783007,FI
+96783008,96783119,FR
+96783120,96783135,PT
+96783136,96783299,FR
+96783300,96783303,ES
+96783304,96783519,FR
+96783520,96783551,ES
+96783552,96783771,FR
96783772,96783775,DE
96783776,96783887,FR
96783888,96783903,DE
-96783904,96785135,FR
+96783904,96784031,FR
+96784032,96784039,ES
+96784040,96784495,FR
+96784496,96784511,FI
+96784512,96784807,FR
+96784808,96784811,PL
+96784812,96784827,FR
+96784828,96784831,PL
+96784832,96785135,FR
96785136,96785151,NL
-96785152,96785407,FR
+96785152,96785183,FR
+96785184,96785199,ES
+96785200,96785407,FR
96785408,96785411,NL
96785412,96785415,FR
96785416,96785423,NL
-96785424,96786431,FR
+96785424,96785603,FR
+96785604,96785607,PT
+96785608,96786011,FR
+96786012,96786015,GB
+96786016,96786431,FR
96786432,96786495,GB
-96786496,96792319,FR
+96786496,96787743,FR
+96787744,96787751,ES
+96787752,96787999,FR
+96788000,96788031,LT
+96788032,96788143,FR
+96788144,96788159,ES
+96788160,96792283,FR
+96792284,96792287,DE
+96792288,96792319,FR
96792320,96792383,ES
-96792384,96792751,FR
+96792384,96792447,NL
+96792448,96792511,CZ
+96792512,96792575,IT
+96792576,96792751,FR
96792752,96792767,DE
-96792768,96793583,FR
+96792768,96792923,FR
+96792924,96792927,PL
+96792928,96793039,FR
+96793040,96793047,IT
+96793048,96793583,FR
96793584,96793599,DE
96793600,96793687,FR
96793688,96793688,ES
96793689,96793715,FR
96793716,96793716,ES
-96793717,96796671,FR
+96793717,96794159,FR
+96794160,96794175,ES
+96794176,96794271,FR
+96794272,96794303,PT
+96794304,96794471,FR
+96794472,96794479,ES
+96794480,96794623,FR
+96794624,96794687,CZ
+96794688,96796671,FR
96796672,96862207,AZ
96862208,96894975,GB
96894976,96897023,CZ
@@ -1610,8 +3069,7 @@
96911360,96919551,FR
96919552,96923647,IT
96923648,96925695,JO
-96925696,96927743,MT
-96927744,96960511,GB
+96925696,96960511,GB
96960512,96964607,DE
96964608,96968703,NL
96968704,96972799,LT
@@ -1632,9 +3090,10 @@
97419264,97435647,HU
97435648,97437695,DK
97437696,97439743,AT
-97439744,97443839,NL
-97443840,97445887,PT
-97445888,97447935,RS
+97439744,97444863,NL
+97444864,97445887,PT
+97445888,97447423,RS
+97447424,97447935,XK
97447936,97452031,PL
97452032,97517567,UA
97517568,98566143,IR
@@ -1652,9 +3111,10 @@
98738176,98740223,NO
98740224,98740479,ES
98740480,98740735,US
-98740736,98741503,ES
+98740736,98741247,DE
+98741248,98741503,ES
98741504,98741759,US
-98741760,98742271,ES
+98741760,98742271,DE
98742272,98744319,GB
98744320,98746367,ES
98746368,98762751,TR
@@ -1684,9 +3144,13 @@
99001856,99001871,SG
99001872,99024895,DE
99024896,99025167,GB
-99025168,99025919,DE
+99025168,99025279,DE
+99025280,99025407,US
+99025408,99025919,DE
99025920,99025935,FI
-99025936,99026303,DE
+99025936,99026047,DE
+99026048,99026175,US
+99026176,99026303,DE
99026304,99026431,US
99026432,99026559,DE
99026560,99026687,US
@@ -1697,12 +3161,14 @@
99027456,99027711,PL
99027712,99027967,DE
99027968,99027983,ES
-99027984,99028223,DE
+99027984,99028095,DE
+99028096,99028223,US
99028224,99028239,GB
-99028240,99028479,DE
-99028480,99028735,US
+99028240,99028351,DE
+99028352,99028735,US
99028736,99028751,SE
-99028752,99028991,DE
+99028752,99028863,DE
+99028864,99028991,US
99028992,99029503,GB
99029504,99029519,IE
99029520,99029887,DE
@@ -1711,17 +3177,25 @@
99030144,99030271,US
99030272,99030399,DE
99030400,99030527,US
-99030528,99031295,DE
+99030528,99030815,DE
+99030816,99030895,US
+99030896,99030911,DE
+99030912,99031039,US
+99031040,99031295,DE
99031296,99031551,GB
-99031552,99031807,DE
+99031552,99031807,CZ
99031808,99031823,GB
-99031824,99032319,DE
+99031824,99031935,DE
+99031936,99032063,US
+99032064,99032319,DE
99032320,99032575,ES
99032576,99033343,DE
99033344,99033599,IT
99033600,99043839,DE
99043840,99043847,AT
-99043848,99044351,DE
+99043848,99044111,DE
+99044112,99044223,US
+99044224,99044351,DE
99044352,99044359,BE
99044360,99044607,DE
99044608,99044615,HR
@@ -1761,12 +3235,13 @@
100329472,100331519,RU
100331520,100335615,TR
100335616,100401151,KZ
-100532224,100536063,RO
-100536064,100536319,DE
-100536320,100547839,RO
+100532224,100540415,DE
+100540416,100544511,US
+100544512,100547583,RO
+100547584,100547839,CZ
100547840,100548095,DE
-100548096,100548351,US
-100548352,100548872,RO
+100548096,100548863,US
+100548864,100548872,RO
100548873,100548873,TR
100548874,100550143,RO
100550144,100550399,NL
@@ -1774,7 +3249,7 @@
100550656,100550911,RO
100550912,100551167,NL
100551168,100551423,US
-100551424,100551679,RO
+100551424,100551679,DE
100551680,100552191,US
100552192,100552447,GB
100552448,100552703,US
@@ -1786,8 +3261,8 @@
100553984,100554495,DE
100554496,100554751,US
100554752,100555263,DE
-100555264,100555519,US
-100555520,100558847,RO
+100555264,100555775,US
+100555776,100558847,RO
100558848,100559255,DE
100559256,100559263,EG
100559264,100559359,DE
@@ -1802,16 +3277,20 @@
100564480,100564991,US
100564992,100573183,SE
100573184,100575231,GB
-100575232,100577279,SE
+100575232,100577279,DK
100577280,100579327,RU
100579328,100581375,AT
100581376,100589567,SE
100589568,100597759,RU
-100597760,100614143,TR
-100614144,100630527,NL
+100597760,100598783,TR
+100598784,100612095,US
+100612096,100630527,NL
100630528,100632575,BE
100632576,100634623,GB
-100634624,100636671,ES
+100634624,100635199,ES
+100635200,100635247,BE
+100635248,100635263,CH
+100635264,100636671,ES
100636672,100638719,NL
100638720,100646911,UA
100646912,100647679,RU
@@ -1821,7 +3300,9 @@
100662016,100662143,DE
100662144,100662271,TR
100662272,100663295,RU
-100663296,134221823,US
+100663296,121195295,US
+121195296,121195327,IT
+121195328,134221823,US
134221824,134222079,DE
134222080,134222335,US
134222336,134222379,DE
@@ -1852,7 +3333,13 @@
134247424,134247424,DE
134247425,134443007,US
134443008,134445055,MP
-134445056,134447103,GU
+134445056,134445855,GU
+134445856,134445871,MP
+134445872,134445883,GU
+134445884,134445885,MP
+134445886,134445935,GU
+134445936,134445939,MP
+134445940,134447103,GU
134447104,134738943,US
134738944,134739199,CA
134739200,135192575,US
@@ -1865,9 +3352,7 @@
135441408,135441663,CA
135441664,135556607,US
135556608,135556863,CA
-135556864,135557375,US
-135557376,135557631,CA
-135557632,135558399,US
+135556864,135558399,US
135558400,135558655,NL
135558656,135603199,US
135603200,135604223,CA
@@ -1879,15 +3364,15 @@
135792640,135794687,CA
135794688,135925759,US
135925760,135926783,VI
-135926784,135941631,US
-135941632,135942143,CA
-135942144,135945727,US
+135926784,135945727,US
135945728,135945983,CA
135945984,136054015,US
136054016,136054271,GB
136054272,136175615,US
136175616,136175871,CA
-136175872,136237055,US
+136175872,136176639,US
+136176640,136177663,CA
+136177664,136237055,US
136237056,136239103,CA
136239104,136404991,US
136404992,136407039,CA
@@ -1897,13 +3382,25 @@
136415667,136415743,CA
136415744,136702290,US
136702291,136702291,UM
-136702292,139954241,US
+136702292,136713983,US
+136713984,136714031,GB
+136714032,136714047,US
+136714048,136714239,GB
+136714240,136810503,US
+136810504,136810504,DE
+136810505,139954241,US
139954242,139954242,ES
-139954243,151521029,US
+139954243,142606335,US
+142606336,146800639,SG
+146800640,147849215,US
+147849216,148897791,SG
+148897792,151521029,US
151521030,151521030,FR
151521031,151587080,US
151587081,151587081,FR
-151587082,167772159,US
+151587082,152305663,US
+152305664,152338431,GB
+152338432,167772159,US
184549376,185405200,US
185405201,185405201,CZ
185405202,185999659,US
@@ -1914,25 +3411,38 @@
204047872,204047999,PR
204048000,204048031,US
204048032,204048047,PR
-204048048,209472767,US
+204048048,209100799,US
+209100800,209101823,VI
+209101824,209102335,US
+209102336,209102847,VI
+209102848,209472767,US
209472768,209472768,IN
-209472769,212791831,US
+209472769,212465663,US
+212465664,212466687,CA
+212466688,212791831,US
212791832,212791839,VI
-212791840,213981695,US
-213981696,213982207,CA
-213982208,214698239,US
+212791840,212794623,US
+212794624,212794879,PR
+212794880,214698239,US
214698240,214698255,VI
214698256,214698303,US
214698304,214698311,VI
-214698312,214777855,US
-214777856,214786303,PR
-214786304,214787071,US
-214787072,214788095,PR
-214788096,217809407,US
-217809408,217809663,GB
-217809664,219512063,US
-219512064,219512319,GB
-219512320,221642751,US
+214698312,214699007,US
+214699008,214700031,VI
+214700032,214777855,US
+214777856,214781951,PR
+214781952,214783487,US
+214783488,214783999,PR
+214784000,214786047,US
+214786048,214786303,PR
+214786304,214786559,US
+214786560,214788095,PR
+214788096,219242495,US
+219242496,219250687,GB
+219250688,219504639,US
+219504640,219512831,GB
+219512832,221577215,US
+221577216,221642751,SE
221642752,221773823,AU
221773824,222494719,US
222494720,222527487,SG
@@ -2000,8 +3510,7 @@
225068544,225069055,IE
225069056,225070079,US
225070080,225070591,NL
-225070592,225071103,PR
-225071104,225073151,US
+225070592,225073151,US
225073152,225073663,IE
225073664,225074687,KR
225074688,225076735,US
@@ -2010,10 +3519,9 @@
225077760,225078783,US
225078784,225079295,IE
225079296,225079807,HK
-225079808,225080319,PR
-225080320,225080831,US
-225080832,225080895,JP
-225080896,225081855,US
+225079808,225080831,US
+225080832,225081343,JP
+225081344,225081855,US
225081856,225082367,AU
225082368,225082879,GB
225082880,225084415,US
@@ -2039,15 +3547,30 @@
225098752,225099263,JP
225099264,225099775,US
225099776,225100287,SG
-225100288,225100799,AU
-225100800,225101823,US
-225101824,225102335,AU
-225102336,225443839,US
+225100288,225101823,US
+225101824,225102847,AU
+225102848,225103359,ZA
+225103360,225103871,US
+225103872,225104383,ZA
+225104384,225104895,US
+225104896,225105407,ZA
+225105408,225105919,HK
+225105920,225106943,IE
+225106944,225107455,NL
+225107456,225107967,US
+225107968,225108479,KR
+225108480,225108991,FI
+225108992,225109503,IN
+225109504,225110015,MY
+225110016,225112063,US
+225112064,225112575,SG
+225112576,225443839,US
225443840,225705983,JP
225705984,226230271,US
226230272,226361343,KR
226361344,226492415,IN
-226492416,231800831,US
+226492416,231735295,US
+231735296,231800831,JP
231800832,231866367,KR
231866368,231997439,AU
231997440,233046015,US
@@ -2055,7 +3578,9 @@
233177088,233308159,JP
233308160,233570303,IN
233570304,233832447,AU
-233832448,234487807,US
+233832448,234356735,US
+234356736,234364927,JP
+234364928,234487807,US
234487808,234618879,SG
234618880,234881023,US
234881024,234883071,CN
@@ -2125,7 +3650,7 @@
243270656,243271679,NZ
243271680,243272703,TH
243273728,243277823,JP
-243277824,243286015,AU
+243277824,243286015,SG
243286016,243302399,JP
243302400,243400703,KR
243400704,243531775,CN
@@ -2166,29 +3691,48 @@
248446976,248512511,TH
248512512,249561087,CN
249561088,251658239,VN
-251658240,257532415,US
+251658240,257531903,US
+257531904,257532415,IN
257532416,257532423,SG
257532424,257532431,US
257532432,257532671,SG
-257532672,265003519,US
-265003520,265003547,HU
+257532672,257535999,IN
+257536000,257597951,US
+257597952,257597959,ES
+257597960,257597967,US
+257597968,257598207,ES
+257598208,257598463,US
+257598464,257599487,ES
+257599488,265003547,US
265003548,265003548,FR
-265003549,265003775,HU
-265003776,265025791,US
+265003549,265005311,US
+265005312,265005567,GB
+265005568,265025791,US
265025792,265026047,GB
-265026048,265527295,US
+265026048,265525583,US
+265525584,265525599,GB
+265525600,265527295,US
265527296,265529599,JP
265529600,265529855,US
265529856,265535487,JP
-265535488,266062079,US
-266062080,266062335,GB
-266062336,266067967,US
+265535488,266059775,US
+266059776,266062159,IN
+266062160,266062161,GB
+266062162,266067967,IN
266067968,266076159,AU
266076160,266598655,US
266598656,266598911,BR
-266598912,288151551,US
-288151552,288157695,CA
-288157696,288167423,US
+266598912,279356249,US
+279356250,279356250,LT
+279356251,284354559,US
+284354560,284356607,IN
+284356608,288064511,US
+288064512,288065535,CL
+288065536,288075775,US
+288075776,288077823,BR
+288077824,288151551,US
+288151552,288161791,CA
+288161792,288167423,US
288167424,288167935,CA
288167936,288169471,US
288169472,288169983,CA
@@ -2225,7 +3769,8 @@
289624064,289628159,CH
289628160,289630207,US
289630208,289632255,SE
-289632256,289652735,US
+289632256,289636351,US
+289636352,289652735,GB
289652736,289653759,NL
289653760,289654271,DE
289654272,289654783,US
@@ -2239,7 +3784,9 @@
289665024,289667071,US
289667072,289668095,GB
289668096,289669119,DE
-289669120,289746943,US
+289669120,289734655,US
+289734656,289742847,GB
+289742848,289746943,US
289746944,289751039,GB
289751040,289767423,US
289767424,289769471,GB
@@ -2247,7 +3794,7 @@
289779712,289783807,RU
289783808,289787903,GB
289787904,289789951,DE
-289789952,289791999,US
+289789952,289791999,GB
289792000,289794047,AE
289794048,289796095,GB
289796096,289798143,TR
@@ -2383,45 +3930,75 @@
301814784,301815039,HK
301815040,301815295,US
301815296,301815551,HK
-301815552,301987839,US
-301987840,301987847,GB
-301987848,301987863,US
-301987864,301988111,GB
-301988112,301988119,US
-301988120,301988151,GB
-301988152,301988167,US
-301988168,301988191,GB
-301988192,301989023,US
+301815552,301822975,US
+301822976,301823231,TW
+301823232,301987839,US
+301987840,301988863,GB
+301988864,301989023,HK
301989024,301989031,MO
-301989032,301989119,US
-301989120,301989183,AU
-301989184,301989375,US
+301989032,301989119,HK
+301989120,301989375,AU
301989376,301989631,SG
-301989632,301989711,US
+301989632,301989711,AU
301989712,301989719,JP
-301989720,313720831,US
+301989720,301989887,AU
+301989888,310509567,US
+310509568,310575103,GB
+310575104,310902783,US
+310902784,310968319,SG
+310968320,312016895,US
+312016896,312082431,DE
+312082432,313458687,US
+313458688,313524223,GB
+313524224,313720831,US
313720832,313786367,JP
313786368,313917439,US
313917440,313982975,JP
-313982976,314703871,US
+313982976,314048511,US
+314048512,314179583,DE
+314179584,314703871,US
314703872,314966015,DE
314966016,315097087,US
-315097088,315162623,IE
-315162624,317128703,US
+315097088,315359231,IE
+315359232,316932095,US
+316932096,316997631,BR
+316997632,317128703,US
317128704,317194239,BR
317194240,322058771,US
322058772,322058772,CL
-322058773,344262655,US
-344262656,344262911,GB
-344262912,344592895,US
+322058773,323243895,US
+323243896,323243903,FR
+323243904,337919999,US
+337920000,337928191,AU
+337928192,337932287,US
+337932288,337934335,AU
+337934336,337987583,US
+337987584,337993727,AE
+337993728,338001919,JP
+338001920,338018303,US
+338018304,338026495,AU
+338026496,338051071,CH
+338051072,344260607,US
+344260608,344260863,GB
+344260864,344261119,US
+344261120,344261778,GB
+344261779,344261779,US
+344261780,344264703,GB
+344264704,344270847,US
+344270848,344272895,GB
+344272896,344588287,US
+344588288,344589311,GB
+344589312,344592895,US
344592896,344592945,GB
344592946,344592946,US
344592947,344593151,GB
-344593152,344662783,US
+344593152,344645631,US
+344645632,344653823,FR
+344653824,344662783,US
344662784,344663039,MY
-344663040,344670719,US
-344670720,344671231,IN
-344671232,344711167,US
+344663040,344670207,US
+344670208,344674303,IN
+344674304,344711167,US
344711168,344719359,AU
344719360,344881151,US
344881152,344881407,IN
@@ -2454,8 +4031,7 @@
348032128,348032255,HK
348032256,348032511,JP
348032512,348032767,AU
-348032768,348033023,GB
-348033024,348033151,US
+348032768,348033151,GB
348033152,348033279,KR
348033280,348033407,BR
348033408,348033791,IN
@@ -2469,7 +4045,13 @@
348110848,348127231,AU
348127232,353769239,US
353769240,353769240,FR
-353769241,372398271,US
+353769241,355993887,US
+355993888,355993895,IT
+355993896,358157194,US
+358157195,358157195,NO
+358157196,368674047,US
+368674048,368674303,ES
+368674304,372398271,US
372398272,372398303,AU
372398304,385884159,US
385884160,385888255,NL
@@ -2507,9 +4089,7 @@
386095616,386096127,NL
386096128,386191359,US
386191360,386195455,NL
-386195456,386201599,US
-386201600,386203135,NL
-386203136,386215935,US
+386195456,386215935,US
386215936,386220031,NL
386220032,386228223,US
386228224,386232319,NL
@@ -2535,13 +4115,7 @@
386465792,386469887,NL
386469888,386498559,US
386498560,386502655,NL
-386502656,386593279,US
-386593280,386594815,NL
-386594816,386595071,US
-386595072,386595327,NL
-386595328,386595583,US
-386595584,386596095,NL
-386596096,386656255,US
+386502656,386656255,US
386656256,386656511,NL
386656512,386662399,US
386662400,386666495,NL
@@ -2566,9 +4140,7 @@
386862336,386862591,KR
386862592,386868735,US
386868736,386868991,NL
-386868992,386875391,US
-386875392,386879487,NL
-386879488,386892799,US
+386868992,386892799,US
386892800,386893311,NL
386893312,386923519,US
386923520,386924543,NL
@@ -2582,8 +4154,8 @@
387825664,387833855,CA
387833856,387975167,US
387975168,387976191,NL
-387976192,387977215,US
-387977216,387978239,NL
+387976192,387977727,US
+387977728,387978239,NL
387978240,387979263,US
387979264,387980287,NL
387980288,387994623,US
@@ -2596,22 +4168,22 @@
388035072,388035583,NL
388035584,388038655,US
388038656,388042751,NL
-388042752,388050943,US
-388050944,388051967,NL
-388051968,388055039,US
+388042752,388055039,US
388055040,388059135,NL
-388059136,388091903,US
+388059136,388084735,US
+388084736,388085759,NL
+388085760,388086783,US
+388086784,388087807,NL
+388087808,388091903,US
388091904,388095999,NL
388096000,388100095,US
388100096,388101119,NL
-388101120,388139007,US
-388139008,388139263,NL
-388139264,388139519,US
+388101120,388139519,US
388139520,388140031,NL
388140032,388149247,US
388149248,388153343,NL
-388153344,388194303,US
-388194304,388202495,NL
+388153344,388198399,US
+388198400,388202495,NL
388202496,388206591,US
388206592,388207103,NL
388207104,388207871,US
@@ -2620,7 +4192,9 @@
388224000,388225023,NL
388225024,388272127,US
388272128,388280319,NL
-388280320,388288511,US
+388280320,388282367,US
+388282368,388283391,NL
+388283392,388288511,US
388288512,388293631,NL
388293632,388294143,US
388294144,388296703,NL
@@ -2650,20 +4224,16 @@
388521984,388523007,NL
388523008,388526079,US
388526080,388530175,NL
-388530176,388538367,US
-388538368,388542463,NL
-388542464,388550655,US
+388530176,388550655,US
388550656,388554751,NL
388554752,388558847,US
388558848,388562943,NL
-388562944,388567039,US
-388567040,388571135,NL
-388571136,388617215,US
+388562944,388617215,US
388617216,388620287,NL
388620288,388632575,US
388632576,388636671,NL
-388636672,388665343,US
-388665344,388668415,NL
+388636672,388666367,US
+388666368,388668415,NL
388668416,388677631,US
388677632,388681727,NL
388681728,388698111,US
@@ -2682,19 +4252,17 @@
388843520,388844543,NL
388844544,388849663,US
388849664,388853759,NL
-388853760,388856831,US
-388856832,388857343,NL
-388857344,388862975,US
-388862976,388865023,NL
-388865024,388866047,US
-388866048,388870143,NL
-388870144,388885503,US
+388853760,388856575,US
+388856576,388857343,NL
+388857344,388857599,US
+388857600,388857855,NL
+388857856,388863999,US
+388864000,388865023,NL
+388865024,388885503,US
388885504,388890623,NL
388890624,388893695,US
388893696,388894719,NL
-388894720,388896767,US
-388896768,388897279,NL
-388897280,388897791,US
+388894720,388897791,US
388897792,388898815,NL
388898816,388919295,US
388919296,388923391,NL
@@ -2705,16 +4273,14 @@
388945920,388956159,US
388956160,388960255,NL
388960256,388964351,US
-388964352,388973567,NL
-388973568,388996095,US
+388964352,388972543,NL
+388972544,388996095,US
388996096,388997119,NL
388997120,389044223,US
389044224,389045247,NL
389045248,389060607,US
389060608,389061631,NL
-389061632,389076479,US
-389076480,389078015,NL
-389078016,389102079,US
+389061632,389102079,US
389102080,389102591,NL
389102592,389136383,US
389136384,389140479,NL
@@ -2724,8 +4290,8 @@
389165056,389169151,NL
389169152,389177343,US
389177344,389181439,NL
-389181440,389185535,US
-389185536,389201919,NL
+389181440,389189631,US
+389189632,389201919,NL
389201920,389242879,US
389242880,389251071,NL
389251072,389273599,US
@@ -2734,29 +4300,25 @@
389286912,389293055,NL
389293056,389296127,US
389296128,389300223,NL
-389300224,389319167,US
-389319168,389319679,NL
-389319680,389320191,US
-389320192,389320447,NL
-389320448,389327359,US
+389300224,389311231,US
+389311232,389311487,NL
+389311488,389327359,US
389327360,389327615,NL
-389327616,389350143,US
-389350144,389350399,NL
+389327616,389349375,US
+389349376,389350399,NL
389350400,389350655,US
389350656,389351423,NL
389351424,389351935,US
-389351936,389352959,NL
-389352960,389353215,US
-389353216,389365759,NL
-389365760,389391359,US
-389391360,389394431,NL
+389351936,389365759,NL
+389365760,389392383,US
+389392384,389394431,NL
389394432,389413375,US
389413376,389413887,NL
389413888,389414911,US
389414912,389419007,NL
389419008,389435391,US
-389435392,389445119,NL
-389445120,389447679,US
+389435392,389445631,NL
+389445632,389447679,US
389447680,389451775,NL
389451776,389455359,US
389455360,389455615,NL
@@ -2767,9 +4329,7 @@
389521408,389554175,US
389554176,389562367,NL
389562368,389570559,US
-389570560,389571071,NL
-389571072,389571583,US
-389571584,389571839,NL
+389570560,389571839,NL
389571840,389572095,US
389572096,389572607,NL
389572608,389572863,US
@@ -2869,9 +4429,7 @@
390276864,390277375,NL
390277376,390278911,US
390278912,390279167,NL
-390279168,390281727,US
-390281728,390281983,NL
-390281984,390286847,US
+390279168,390286847,US
390286848,390287359,NL
390287360,390299647,US
390299648,390303743,NL
@@ -2881,17 +4439,18 @@
390972928,390973951,NL
390973952,390975487,US
390975488,390976511,NL
-390976512,390995967,US
+390976512,390985727,US
+390985728,390987775,NL
+390987776,390995967,US
390995968,391020543,NL
391020544,391110655,US
391110656,391110911,IL
391110912,391111167,GB
-391111168,391111679,NL
-391111680,391111935,US
+391111168,391111935,US
391111936,391112063,AU
391112064,391112703,US
-391112704,391113471,NL
-391113472,391116543,US
+391112704,391112959,CR
+391112960,391116543,US
391116544,391116799,NL
391116800,391331839,US
391331840,391333887,NL
@@ -2911,19 +4470,27 @@
391937536,391937791,CA
391937792,391938047,IE
391938048,391946239,CA
-391946240,391960335,US
+391946240,391960023,US
+391960024,391960031,AE
+391960032,391960335,US
391960336,391960351,GB
391960352,392044351,US
392044352,392044359,CA
392044360,392055943,US
392055944,392055951,GB
-392055952,392103471,US
+392055952,392097279,US
+392097280,392097295,GB
+392097296,392103471,US
392103472,392103479,GB
392103480,392112815,US
392112816,392112823,GB
392112824,392114895,US
392114896,392114903,TH
-392114904,392245247,US
+392114904,392119039,US
+392119040,392119551,HR
+392119552,392119807,US
+392119808,392120319,HR
+392120320,392245247,US
392245248,392249343,SG
392249344,392257535,HK
392257536,392265727,BR
@@ -2962,12 +4529,7 @@
392611840,392612351,HK
392612352,392617983,US
392617984,392626175,HK
-392626176,392658943,US
-392658944,392659199,JP
-392659200,392659455,AU
-392659456,392659583,JP
-392659584,392659711,AU
-392659712,392659807,US
+392626176,392659807,US
392659808,392659823,IE
392659824,392659871,SG
392659872,392659903,NL
@@ -2977,8 +4539,8 @@
392660416,392660447,AT
392660448,392660607,US
392660608,392660671,GB
-392660672,392660767,US
-392660768,392660799,FR
+392660672,392660735,US
+392660736,392660799,FR
392660800,392661887,US
392661888,392661951,JP
392661952,392662143,US
@@ -2995,7 +4557,10 @@
392663360,392663391,IE
392663392,392663487,US
392663488,392663519,IE
-392663520,392665855,US
+392663520,392664383,US
+392664384,392664415,IE
+392664416,392664431,NL
+392664432,392665855,US
392665856,392665887,HK
392665888,392665983,US
392665984,392666015,HK
@@ -3047,8 +4612,8 @@
392685056,392685087,IE
392685088,392685103,NL
392685104,392685119,US
-392685120,392685151,IE
-392685152,392686607,US
+392685120,392685135,IE
+392685136,392686607,US
392686608,392686623,AT
392686624,392686639,FI
392686640,392686655,IE
@@ -3220,13 +4785,37 @@
393213952,394264575,US
394264576,394264831,CA
394270720,394271231,NL
-394280960,394281215,US
+394272768,394273023,US
+394280960,394281471,US
+394289152,394289407,US
394296320,394296831,NL
-394297344,394559743,US
-394575872,394576127,CA
+394297344,394297855,US
+394305536,394305791,CA
+394313728,394313983,US
+394321920,394322175,CA
+394330112,394330367,US
+394338304,394338559,CA
+394346496,394362879,US
+394362880,394363135,GB
+394363136,394395903,US
+394403840,394404095,CA
+394412032,394445055,US
+394452992,394453247,VG
+394461184,394461439,US
+394469376,394469631,CA
+394477568,394559743,US
+394567680,394567935,CA
+394575872,394576383,CA
+394584064,394584319,US
394592256,394593279,US
-394608640,394608895,CA
-394625024,394756351,US
+394600448,394600703,US
+394608640,394608703,CA
+394608704,394608711,US
+394608712,394608895,CA
+394616832,394617087,US
+394625024,394665983,US
+394665984,394666239,CA
+394666240,394756351,US
394772480,394772735,CA
394788864,394854399,US
394854400,394854655,CA
@@ -3234,7 +4823,7 @@
394887168,394887423,US
394903552,394903807,CA
394919936,394920191,US
-394936320,394936575,CA
+394936320,394936831,CA
394952704,394953215,CA
394969088,394969343,US
394985472,395018239,US
@@ -3242,24 +4831,17 @@
395034624,395034879,US
395051008,395051263,CA
395067392,395067647,US
-395083776,395084031,US
-395100160,395100415,US
-395116544,395116799,US
-395132928,395133183,US
+395083776,395149311,US
395149312,395149567,CA
395165696,395165951,US
395182080,395182335,CA
395198464,395198719,US
-395214848,395215103,US
-395231232,395231487,US
-395247616,395313407,US
-395329536,395329791,US
+395214848,395345919,US
395345920,395346175,CA
395362304,395362559,US
-395378688,395493375,US
+395378688,395477247,US
395493376,395493631,CA
-395493632,395576319,US
-395591680,395591935,US
+395509760,395608063,US
395608064,395640831,CA
395657216,395657471,US
395673600,395673855,CA
@@ -3267,16 +4849,16 @@
395706368,395706623,CA
395722752,395723007,US
395739136,395771903,US
-395771904,395788287,CA
+395771904,395772159,CA
395788288,395788543,US
-395788544,395837439,CA
+395804672,395837439,CA
395837440,395903231,US
395919360,395919615,CA
395935744,395935999,CA
395952128,395952383,US
-395968512,395984895,CA
+395968512,395969535,CA
395984896,395985151,US
-395985152,396034047,CA
+396001280,396034047,CA
396034048,396034303,US
396050432,396050687,CA
396066816,396067071,CA
@@ -3284,45 +4866,66 @@
396099584,396263423,US
396263424,396263679,CA
396279808,396280063,US
-396296192,396443647,US
+396296192,396427519,US
396443648,396443903,CA
-396443904,396509183,US
+396460032,396493055,US
396509184,396509439,PR
-396509440,396607487,US
+396525568,396591359,US
396607488,396607743,CA
-396607744,396754943,US
+396623872,396754943,US
396754944,396755199,CA
-396787712,396787967,US
-396820480,397082879,US
+396771328,396771583,US
+396787712,396820735,US
+396836864,396837119,CA
+396853248,397115391,US
397115392,397115647,CA
-397148160,397345023,US
+397131776,397132031,US
+397148160,397377535,US
397377536,397377791,CA
+397393920,397394175,US
397410304,397410559,CA
+397426688,397426943,US
397443072,397443327,US
+397459456,397459711,CA
397475840,397541375,US
-397541376,397541887,CA
+397541376,397574143,CA
397574144,397574399,US
+397590528,397590783,LC
397606912,397607423,CA
+397623296,397623551,US
397639680,397639935,US
-397672448,397738239,US
+397656064,397656319,PR
+397672448,397672703,US
+397688832,397689087,CA
+397705216,397770751,US
397770752,397771007,CA
-397803520,397869055,CA
-397869056,398065663,US
+397787136,397787391,US
+397803520,397803775,CA
+397819904,397820159,US
+397836288,397836799,CA
+397852672,397852927,US
+397869056,397902079,US
+397918208,397918463,CA
+397934592,398065663,US
398065664,398065919,CA
+398082048,398082303,JP
398098432,398098687,US
+398114816,398115071,CA
398131200,398196735,US
398196736,398196991,KY
-398229504,398229759,US
-398262272,398327807,US
+398213120,398213375,US
+398229504,398295295,US
+398311424,398311679,LC
398327808,398328063,PR
+398344192,398344447,US
398360576,398360831,CA
-398393344,398393599,US
+398376960,398377215,US
+398393344,398426111,US
398426112,398426367,CA
+398442496,398442751,US
398458880,398500351,US
398500352,398500863,NL
-398500864,398532607,US
-398532608,398536703,NL
-398536704,398566911,US
+398500864,398566911,US
398566912,398567423,NL
398567424,398640127,US
398640128,398641151,NL
@@ -3376,44 +4979,50 @@
399172864,399173119,NL
399173120,399175679,US
399175680,399179775,NL
-399179776,399280127,US
+399179776,399243519,US
+399243520,399243775,NL
+399243776,399280127,US
399280128,399280639,NL
399280640,399280895,US
399280896,399281151,NL
399281152,399331327,US
399331328,399335423,NL
-399335424,399353855,US
+399335424,399342335,US
+399342336,399342591,NL
+399342592,399353855,US
399353856,399354879,NL
-399354880,399355391,US
-399355392,399359999,NL
+399354880,399355903,US
+399355904,399359999,NL
399360000,399367167,US
399367168,399367679,NL
-399367680,399368191,US
-399368192,399378943,NL
+399367680,399377407,US
+399377408,399378943,NL
399378944,399380479,US
399380480,399388671,NL
399388672,399396863,US
399396864,399407103,NL
-399407104,399458303,US
-399458304,399466495,NL
-399466496,399484927,US
+399407104,399433727,US
+399433728,399434751,NL
+399434752,399484927,US
399484928,399485183,NL
399485184,399486975,US
399486976,399491071,NL
399491072,399495167,US
399495168,399503359,NL
-399503360,399590399,US
+399503360,399526911,US
+399526912,399527935,NL
+399527936,399590399,US
399590400,399591935,NL
399591936,399594495,US
399594496,399595519,NL
399595520,399598591,US
-399598592,399599615,NL
-399599616,399642623,US
+399598592,399599871,NL
+399599872,399642623,US
399642624,399643647,NL
399643648,399644671,US
399644672,399647231,NL
-399647232,399648767,US
-399648768,399650815,NL
+399647232,399647743,US
+399647744,399650815,NL
399650816,399688191,US
399688192,399689727,NL
399689728,399702015,US
@@ -3427,10 +5036,8 @@
399739648,399740927,US
399740928,399749119,NL
399749120,399769855,US
-399769856,399770111,NL
-399770112,399782911,US
-399782912,399783167,NL
-399783168,399797247,US
+399769856,399770367,NL
+399770368,399797247,US
399797248,399797759,NL
399797760,399826943,US
399826944,399830015,NL
@@ -3446,17 +5053,13 @@
399951616,399952895,NL
399952896,399953919,US
399953920,399958015,NL
-399958016,399968511,US
-399968512,399968767,NL
-399968768,399969279,US
+399958016,399969279,US
399969280,399969535,NL
399969536,399970303,US
399970304,399980031,NL
399980032,399981567,US
399981568,399982079,NL
-399982080,399998975,US
-399998976,399999487,NL
-399999488,400021247,US
+399982080,400021247,US
400021248,400021503,NL
400021504,400056319,US
400056320,400064511,NL
@@ -3472,7 +5075,9 @@
400112640,400113663,NL
400113664,400121855,US
400121856,400122367,NL
-400122368,400124927,US
+400122368,400122623,US
+400122624,400122879,NL
+400122880,400124927,US
400124928,400125951,NL
400125952,400130559,US
400130560,400131071,NL
@@ -3482,26 +5087,26 @@
400144384,400145407,NL
400145408,400154623,US
400154624,400162815,NL
-400162816,400201215,US
+400162816,400186367,US
+400186368,400187391,NL
+400187392,400201215,US
400201216,400202751,NL
400202752,400203775,US
400203776,400211967,NL
400211968,400222719,US
400222720,400223231,NL
-400223232,400249855,US
-400249856,400250879,NL
-400250880,400251647,US
-400251648,400251903,NL
-400251904,400261119,US
+400223232,400261119,US
400261120,400261887,NL
400261888,400263167,US
400263168,400263679,NL
400263680,400264703,US
400264704,400265215,NL
-400265216,400267263,US
-400267264,400268287,NL
-400268288,400400383,US
-400400384,400430079,NL
+400265216,400400383,US
+400400384,400410111,NL
+400410112,400411647,US
+400411648,400412671,NL
+400412672,400420863,US
+400420864,400430079,NL
400430080,400432639,US
400432640,400442367,NL
400442368,400482303,US
@@ -3510,11 +5115,17 @@
400494592,400527359,NL
400527360,400543743,US
400543744,400551935,NL
-400551936,400697343,US
+400551936,400687103,US
+400687104,400688767,HK
+400688768,400688768,US
+400688769,400691199,HK
+400691200,400697343,US
400697344,400697599,MX
400697600,400740351,US
-400740352,400740607,MX
-400740608,400760831,US
+400740352,400740607,CA
+400740608,400743167,US
+400743168,400743423,CA
+400743424,400760831,US
400760832,400769023,CA
400769024,400794111,US
400794112,400794239,IT
@@ -3545,7 +5156,9 @@
400884256,400884287,US
400884288,400884319,CA
400884320,400884359,US
-400884360,400884455,CA
+400884360,400884415,CA
+400884416,400884431,US
+400884432,400884455,CA
400884456,400884463,US
400884464,400884471,CA
400884472,400884479,US
@@ -3554,7 +5167,7 @@
400884992,400885007,US
400885008,400885095,CA
400885096,400885103,US
-400885104,400885111,GB
+400885104,400885111,CA
400885112,400885119,US
400885120,400885223,CA
400885224,400885227,US
@@ -3564,9 +5177,11 @@
400885408,400885439,US
400885440,400885783,CA
400885784,400885791,US
-400885792,400885903,CA
-400885904,400885919,US
-400885920,400886031,CA
+400885792,400885887,CA
+400885888,400885919,US
+400885920,400885999,CA
+400886000,400886015,US
+400886016,400886031,CA
400886032,400886047,US
400886048,400886095,CA
400886096,400886111,US
@@ -3581,14 +5196,17 @@
400886200,400886303,CA
400886304,400886335,US
400886336,400886351,CA
-400886352,400886383,US
-400886384,400886407,CA
+400886352,400886399,US
+400886400,400886407,CA
400886408,400886415,US
-400886416,400886463,CA
+400886416,400886455,CA
+400886456,400886463,SE
400886464,400886527,US
400886528,400886583,CA
400886584,400886591,US
-400886592,400886695,CA
+400886592,400886623,CA
+400886624,400886639,US
+400886640,400886695,CA
400886696,400886703,FI
400886704,400886719,CA
400886720,400886767,US
@@ -3598,7 +5216,9 @@
400887152,400887175,US
400887176,400887231,CA
400887232,400887263,US
-400887264,400887335,CA
+400887264,400887311,CA
+400887312,400887327,US
+400887328,400887335,CA
400887336,400887343,US
400887344,400887351,SE
400887352,400887503,CA
@@ -3619,25 +5239,25 @@
400888064,400888319,US
400888320,400888575,CA
400888576,400888831,GB
-400888832,400889359,CA
-400889360,400889367,US
-400889368,400889439,CA
-400889440,400889503,US
+400888832,400889343,CA
+400889344,400889367,US
+400889368,400889407,CA
+400889408,400889503,US
400889504,400889511,CA
400889512,400889599,US
400889600,400889647,CA
-400889648,400889663,US
-400889664,400889711,CA
-400889712,400889727,US
-400889728,400889775,CA
-400889776,400889791,US
-400889792,400889855,CA
+400889648,400889679,US
+400889680,400889711,CA
+400889712,400889743,US
+400889744,400889775,CA
+400889776,400889807,US
+400889808,400889855,CA
400889856,400890111,US
400890112,400890143,CA
400890144,400890151,US
400890152,400890159,CA
-400890160,400890207,US
-400890208,400890263,CA
+400890160,400890223,US
+400890224,400890263,CA
400890264,400890271,US
400890272,400890335,CA
400890336,400890367,US
@@ -3645,30 +5265,32 @@
400890384,400890391,US
400890392,400890399,CA
400890400,400890407,US
-400890408,400890527,CA
+400890408,400890447,CA
+400890448,400890463,US
+400890464,400890527,CA
400890528,400890543,US
-400890544,400890591,CA
-400890592,400890623,US
+400890544,400890559,CA
+400890560,400890623,US
400890624,400890639,CA
400890640,400890655,US
400890656,400890783,CA
400890784,400890831,US
-400890832,400891263,CA
+400890832,400890847,CA
+400890848,400890863,US
+400890864,400891263,CA
400891264,400891343,US
-400891344,400891383,CA
+400891344,400891359,CA
+400891360,400891375,US
+400891376,400891383,CA
400891384,400891407,US
400891408,400891415,CA
-400891416,400891455,US
-400891456,400891471,CA
-400891472,400891487,US
+400891416,400891487,US
400891488,400891535,CA
-400891536,400891583,US
-400891584,400891615,CA
-400891616,400891631,US
-400891632,400891695,CA
+400891536,400891647,US
+400891648,400891695,CA
400891696,400891703,US
-400891704,400891791,CA
-400891792,400891807,US
+400891704,400891775,CA
+400891776,400891807,US
400891808,400891887,CA
400891888,400892159,US
400892160,400892479,CA
@@ -3677,11 +5299,13 @@
400892568,400892575,US
400892576,400892591,CA
400892592,400892607,US
-400892608,400892671,CA
-400892672,400892767,US
-400892768,400892863,CA
-400892864,400892895,US
-400892896,400893055,CA
+400892608,400892639,CA
+400892640,400892655,US
+400892656,400892671,CA
+400892672,400892783,US
+400892784,400892863,CA
+400892864,400892927,US
+400892928,400893055,CA
400893056,400893087,US
400893088,400893095,CA
400893096,400893311,US
@@ -3692,19 +5316,18 @@
400894048,400894079,CA
400894080,400894335,US
400894336,400894463,CA
-400894464,400894719,US
-400894720,400894783,CA
+400894464,400894767,US
+400894768,400894783,CA
400894784,400894815,US
400894816,400894903,CA
400894904,400894911,US
-400894912,400895231,CA
-400895232,400895295,US
+400894912,400894975,CA
+400894976,400895295,US
400895296,400895359,CA
400895360,400895407,US
400895408,400895455,CA
-400895456,400895551,US
-400895552,400895615,GB
-400895616,400895663,CA
+400895456,400895567,US
+400895568,400895663,CA
400895664,400895679,US
400895680,400895711,CA
400895712,400896511,US
@@ -3722,42 +5345,46 @@
400896952,400896959,US
400896960,400897023,CA
400897024,400897279,US
-400897280,400897423,CA
+400897280,400897311,CA
+400897312,400897327,US
+400897328,400897423,CA
400897424,400897439,US
-400897440,400897503,CA
-400897504,400897519,US
+400897440,400897471,CA
+400897472,400897519,US
400897520,400897535,CA
400897536,400897791,US
400897792,400897847,CA
400897848,400897855,US
400897856,400897887,CA
400897888,400897903,US
-400897904,400897935,CA
-400897936,400897967,US
+400897904,400897919,CA
+400897920,400897967,US
400897968,400897983,CA
400897984,400898047,US
400898048,400898063,CA
400898064,400898079,US
-400898080,400898175,CA
-400898176,400898303,US
+400898080,400898159,CA
+400898160,400898303,US
400898304,400898311,CA
400898312,400898319,US
-400898320,400898463,CA
-400898464,400898495,US
-400898496,400898703,CA
-400898704,400898735,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,400898783,US
-400898784,400898807,CA
+400898752,400898799,US
+400898800,400898807,CA
400898808,400898815,US
-400898816,400898911,CA
-400898912,400898927,US
-400898928,400898943,CA
-400898944,400899039,US
+400898816,400898879,CA
+400898880,400898887,SE
+400898888,400898911,CA
+400898912,400899039,US
400899040,400899047,CA
-400899048,400899055,US
-400899056,400899071,CA
-400899072,400899327,US
+400899048,400899327,US
400899328,400899591,CA
400899592,400899599,US
400899600,400899623,CA
@@ -3767,42 +5394,36 @@
400899744,400899759,CA
400899760,400899807,US
400899808,400899815,CA
-400899816,400899823,US
-400899824,400899847,CA
+400899816,400899839,US
+400899840,400899847,CA
400899848,400899855,US
400899856,400899967,CA
400899968,400899999,US
400900000,400900031,CA
400900032,400900255,US
400900256,400900263,CA
-400900264,400900271,US
-400900272,400900287,CA
-400900288,400900319,US
+400900264,400900319,US
400900320,400900391,CA
400900392,400900399,US
-400900400,400900447,CA
-400900448,400900479,US
+400900400,400900415,CA
+400900416,400900479,US
400900480,400900487,CA
400900488,400900495,US
-400900496,400900559,CA
-400900560,400900575,US
+400900496,400900527,CA
+400900528,400900575,US
400900576,400900607,CA
400900608,400901119,US
400901120,400901487,CA
400901488,400901495,US
400901496,400901567,CA
-400901568,400901583,US
-400901584,400901615,CA
-400901616,400901631,US
+400901568,400901631,US
400901632,400901759,CA
-400901760,400901807,US
-400901808,400901823,CA
-400901824,400901887,US
+400901760,400901887,US
400901888,400902143,CA
400902144,400902399,US
400902400,400902431,CA
-400902432,400902479,US
-400902480,400902527,CA
+400902432,400902495,US
+400902496,400902527,CA
400902528,400902623,US
400902624,400902639,CA
400902640,400902655,US
@@ -3811,18 +5432,20 @@
400902672,400902719,CA
400902720,400902783,US
400902784,400902911,CA
-400902912,400902943,US
-400902944,400903271,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
400903936,400904479,US
400904480,400904487,CA
400904488,400904591,US
400904592,400904599,CA
-400904600,400904607,US
-400904608,400904623,CA
-400904624,400904671,US
-400904672,400905271,CA
+400904600,400904687,US
+400904688,400905271,CA
400905272,400905279,US
400905280,400905335,CA
400905336,400905343,US
@@ -3842,13 +5465,17 @@
400906232,400906239,US
400906240,400906255,CA
400906256,400906263,US
-400906264,400906399,CA
+400906264,400906367,CA
+400906368,400906383,US
+400906384,400906399,CA
400906400,400906463,US
400906464,400906471,CA
400906472,400906815,US
400906816,400906831,CA
400906832,400906879,US
-400906880,400907263,CA
+400906880,400906959,CA
+400906960,400907007,US
+400907008,400907263,CA
400907264,400907519,US
400907520,400907775,CA
400907776,400908031,US
@@ -3949,19 +5576,15 @@
401375744,401376095,US
401376096,401376103,SE
401376104,401376111,CA
-401376112,401376143,US
-401376144,401376175,CA
-401376176,401376191,US
+401376112,401376191,US
401376192,401376223,CA
401376224,401376255,US
401376256,401376327,CA
401376328,401376335,US
401376336,401376351,CA
-401376352,401376367,US
-401376368,401376447,CA
-401376448,401376479,US
-401376480,401376495,CA
-401376496,401376511,US
+401376352,401376415,US
+401376416,401376447,CA
+401376448,401376511,US
401376512,401377791,CA
401377792,401378303,US
401378304,401378559,EG
@@ -3969,9 +5592,7 @@
401378688,401378815,CA
401378816,401379071,US
401379072,401380351,CA
-401380352,401380383,US
-401380384,401380431,CA
-401380432,401380447,US
+401380352,401380447,US
401380448,401380479,CA
401380480,401380503,US
401380504,401380527,CA
@@ -3981,19 +5602,21 @@
401380864,401381119,CA
401381120,401381247,US
401381248,401381375,CA
-401381376,401381407,US
-401381408,401381423,CA
-401381424,401381887,US
-401381888,401382015,CA
+401381376,401381887,US
+401381888,401381951,CA
+401381952,401381959,US
+401381960,401382015,CA
401382016,401382023,US
401382024,401382063,CA
401382064,401382087,US
-401382088,401382479,CA
+401382088,401382463,CA
+401382464,401382471,US
+401382472,401382479,CA
401382480,401382527,US
401382528,401382543,CA
401382544,401382575,US
-401382576,401382623,CA
-401382624,401382655,US
+401382576,401382591,CA
+401382592,401382655,US
401382656,401384423,CA
401384424,401384431,US
401384432,401384799,CA
@@ -4003,11 +5626,7 @@
401385216,401385295,CA
401385296,401385375,US
401385376,401385391,CA
-401385392,401385407,US
-401385408,401385423,CA
-401385424,401385439,US
-401385440,401385455,CA
-401385456,401385983,US
+401385392,401385983,US
401385984,401386303,CA
401386304,401386399,US
401386400,401386415,CA
@@ -4028,19 +5647,30 @@
401388672,401388687,US
401388688,401389567,CA
401389568,401390079,US
-401390080,401390591,CA
-401390592,401390847,US
+401390080,401390335,CA
+401390336,401390847,US
401390848,401393151,CA
401393152,401393407,US
-401393408,401395455,CA
+401393408,401393663,CA
+401393664,401393919,US
+401393920,401394527,CA
+401394528,401394559,US
+401394560,401395455,CA
401395456,401395711,US
-401395712,401396351,CA
-401396352,401396383,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,401396399,US
-401396400,401396415,CA
-401396416,401396447,US
-401396448,401397247,CA
+401396392,401396447,US
+401396448,401396463,CA
+401396464,401396479,US
+401396480,401397247,CA
401397248,401397311,US
401397312,401397327,CA
401397328,401397359,US
@@ -4049,74 +5679,70 @@
401397440,401397487,CA
401397488,401397503,US
401397504,401399063,CA
-401399064,401399071,US
-401399072,401399103,CA
-401399104,401399135,US
+401399064,401399135,US
401399136,401399167,CA
401399168,401399199,US
401399200,401399215,CA
401399216,401399263,US
401399264,401399279,CA
401399280,401399295,US
-401399296,401399583,CA
-401399584,401399599,US
+401399296,401399551,CA
+401399552,401399599,US
401399600,401399607,CA
401399608,401399647,US
401399648,401399663,CA
401399664,401399679,US
401399680,401399711,CA
-401399712,401399743,US
-401399744,401399759,CA
-401399760,401399775,US
+401399712,401399775,US
401399776,401400063,CA
401400064,401400319,US
-401400320,401400655,CA
-401400656,401400671,US
+401400320,401400623,CA
+401400624,401400671,US
401400672,401400703,CA
401400704,401400735,US
401400736,401400751,CA
-401400752,401400783,US
-401400784,401400815,CA
+401400752,401400799,US
+401400800,401400815,CA
401400816,401400863,US
401400864,401400871,CA
401400872,401400879,NO
-401400880,401400895,US
-401400896,401400975,CA
-401400976,401400991,US
-401400992,401401039,CA
-401401040,401401055,US
-401401056,401401111,CA
-401401112,401401135,US
-401401136,401401151,CA
-401401152,401401215,US
+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
401401216,401401247,CA
401401248,401401279,US
-401401280,401401359,CA
-401401360,401401375,US
-401401376,401401391,CA
-401401392,401401439,US
+401401280,401401295,CA
+401401296,401401343,US
+401401344,401401359,CA
+401401360,401401439,US
401401440,401401455,CA
401401456,401401463,US
401401464,401401471,CA
401401472,401401503,US
401401504,401401511,CA
-401401512,401401519,US
-401401520,401401535,CA
-401401536,401401567,US
-401401568,401401615,CA
+401401512,401401567,US
+401401568,401401583,CA
+401401584,401401599,US
+401401600,401401615,CA
401401616,401401623,US
-401401624,401401663,CA
-401401664,401401679,US
+401401624,401401647,CA
+401401648,401401679,US
401401680,401401687,CA
401401688,401401695,US
401401696,401401727,CA
401401728,401401855,US
-401401856,401401935,CA
+401401856,401401903,CA
+401401904,401401919,US
+401401920,401401935,CA
401401936,401401983,US
-401401984,401402031,CA
-401402032,401402047,US
-401402048,401402079,CA
-401402080,401402095,US
+401401984,401401999,CA
+401402000,401402095,US
401402096,401402111,CA
401402112,401402207,US
401402208,401402223,CA
@@ -4127,24 +5753,28 @@
401402336,401402343,US
401402344,401402623,CA
401402624,401402879,US
-401402880,401403407,CA
-401403408,401403423,US
+401402880,401403391,CA
+401403392,401403423,US
401403424,401403455,CA
401403456,401403503,US
401403504,401403583,CA
401403584,401403615,US
-401403616,401403663,CA
-401403664,401403679,US
+401403616,401403647,CA
+401403648,401403679,US
401403680,401403695,CA
-401403696,401403743,US
-401403744,401403807,CA
+401403696,401403775,US
+401403776,401403807,CA
401403808,401403839,US
401403840,401403903,CA
-401403904,401419775,US
+401403904,401413887,US
+401413888,401414143,AR
+401414144,401419775,US
401419776,401420031,CA
401420032,401420287,US
401420288,401420543,CA
-401420544,401547263,US
+401420544,401425407,US
+401425408,401426431,CA
+401426432,401547263,US
401547264,401555455,CA
401555456,402096639,US
402096640,402096895,FR
@@ -4204,12 +5834,22 @@
402169856,402170111,KR
402170112,402170879,US
402170880,402171135,JP
-402171136,402173695,US
-402173696,402174463,SG
-402174464,402175743,US
+402171136,402171391,BR
+402171392,402171903,US
+402171904,402172927,ID
+402172928,402173183,US
+402173184,402173439,SG
+402173440,402173951,ID
+402173952,402174463,TW
+402174464,402174719,ID
+402174720,402175743,US
402175744,402175999,ES
402176000,402176255,AE
-402176256,402223103,US
+402176256,402176511,US
+402176512,402177023,NL
+402177024,402177535,US
+402177536,402178047,JP
+402178048,402223103,US
402223104,402227199,CA
402227200,402231295,PR
402235392,402239301,US
@@ -4220,10 +5860,14 @@
402243584,402247679,CA
402247680,402249215,US
402249216,402249727,GB
-402249728,402259967,US
+402249728,402253823,US
+402253824,402255871,NL
+402255872,402259967,US
402259968,402260031,CA
402260032,402260039,FI
-402260040,402260159,CA
+402260040,402260127,CA
+402260128,402260143,US
+402260144,402260159,CA
402260160,402260167,US
402260168,402260199,CA
402260200,402260231,US
@@ -4231,14 +5875,18 @@
402260272,402260279,GB
402260280,402260295,CA
402260296,402260303,US
-402260304,402260431,CA
+402260304,402260367,CA
+402260368,402260383,US
+402260384,402260431,CA
402260432,402260439,US
402260440,402260479,CA
402260480,402260511,US
-402260512,402260575,CA
+402260512,402260527,CA
+402260528,402260543,US
+402260544,402260575,CA
402260576,402260655,US
-402260656,402260767,CA
-402260768,402260831,US
+402260656,402260751,CA
+402260752,402260831,US
402260832,402260863,CA
402260864,402260895,US
402260896,402260911,CA
@@ -4248,19 +5896,21 @@
402260992,402260999,CA
402261000,402261087,US
402261088,402261119,CA
-402261120,402261151,US
-402261152,402261183,CA
-402261184,402261215,US
-402261216,402262015,CA
+402261120,402261247,US
+402261248,402262015,CA
402262016,402262271,US
402262272,402262351,CA
402262352,402262359,US
-402262360,402262455,CA
+402262360,402262431,CA
+402262432,402262439,SE
+402262440,402262447,CA
+402262448,402262455,US
402262456,402262463,FI
-402262464,402262519,CA
+402262464,402262479,US
+402262480,402262519,CA
402262520,402262527,US
-402262528,402262591,CA
-402262592,402262599,US
+402262528,402262575,CA
+402262576,402262599,US
402262600,402262663,CA
402262664,402262671,US
402262672,402262695,CA
@@ -4269,38 +5919,40 @@
402262752,402262759,US
402262760,402262847,CA
402262848,402262855,US
-402262856,402262927,CA
+402262856,402262871,CA
+402262872,402262879,US
+402262880,402262927,CA
402262928,402262935,US
402262936,402262943,CA
402262944,402262951,US
402262952,402262975,CA
402262976,402262983,US
-402262984,402263295,CA
+402262984,402263023,CA
+402263024,402263039,US
+402263040,402263295,CA
402263296,402263311,US
402263312,402263335,CA
402263336,402263343,US
402263344,402263359,CA
402263360,402263391,US
402263392,402263423,CA
-402263424,402263455,US
-402263456,402263471,CA
-402263472,402263487,US
+402263424,402263487,US
402263488,402263807,CA
402263808,402264063,US
402264064,402264079,CA
402264080,402264095,US
402264096,402264111,CA
-402264112,402264127,US
-402264128,402264175,CA
-402264176,402264319,US
-402264320,402264447,CA
-402264448,402264559,US
-402264560,402265471,CA
-402265472,402265535,US
-402265536,402265551,CA
-402265552,402265583,US
-402265584,402265615,CA
-402265616,402265631,US
+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
402265664,402265690,US
402265691,402265691,BD
@@ -4308,11 +5960,9 @@
402265792,402265879,CA
402265880,402265887,US
402265888,402265919,CA
-402265920,402265951,US
-402265952,402265967,CA
-402265968,402266143,US
-402266144,402266175,CA
-402266176,402266215,US
+402265920,402266143,US
+402266144,402266159,CA
+402266160,402266215,US
402266216,402266287,CA
402266288,402266303,US
402266304,402266311,CA
@@ -4322,49 +5972,55 @@
402266344,402266351,CA
402266352,402266359,US
402266360,402266367,CA
-402266368,402266655,US
-402266656,402266671,CA
-402266672,402266703,US
+402266368,402266703,US
402266704,402266727,CA
402266728,402266735,NO
402266736,402266751,US
-402266752,402266831,CA
-402266832,402266847,US
+402266752,402266815,CA
+402266816,402266847,US
402266848,402267391,CA
402267392,402267423,US
402267424,402267439,CA
-402267440,402267455,US
-402267456,402267471,CA
-402267472,402267487,US
+402267440,402267487,US
402267488,402267519,CA
402267520,402267647,US
-402267648,402269199,CA
+402267648,402267903,CA
+402267904,402268159,US
+402268160,402269199,CA
402269200,402269207,US
402269208,402269215,CA
402269216,402269223,US
-402269224,402269263,CA
+402269224,402269231,CA
+402269232,402269247,US
+402269248,402269263,CA
402269264,402269455,US
-402269456,402269519,CA
+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,402269631,CA
-402269632,402269647,US
-402269648,402269983,CA
+402269592,402269599,CA
+402269600,402269647,US
+402269648,402269663,CA
+402269664,402269679,US
+402269680,402269983,CA
402269984,402270031,US
402270032,402270047,CA
402270048,402270207,US
-402270208,402270335,CA
+402270208,402270223,CA
+402270224,402270239,US
+402270240,402270255,CA
+402270256,402270303,US
+402270304,402270335,CA
402270336,402270463,US
402270464,402270719,CA
402270720,402270783,US
402270784,402270879,CA
-402270880,402270895,US
-402270896,402270911,CA
-402270912,402270927,US
-402270928,402270975,CA
+402270880,402270943,US
+402270944,402270975,CA
402270976,402271103,US
402271104,402271119,CA
402271120,402271135,US
@@ -4387,10 +6043,10 @@
402272672,402272703,CA
402272704,402272895,US
402272896,402273279,CA
-402273280,402273327,US
-402273328,402273375,CA
-402273376,402273391,US
-402273392,402273471,CA
+402273280,402273407,US
+402273408,402273423,CA
+402273424,402273439,US
+402273440,402273471,CA
402273472,402273503,US
402273504,402273519,CA
402273520,402273535,US
@@ -4409,11 +6065,11 @@
402274288,402274295,CA
402274296,402274463,US
402274464,402274479,CA
-402274480,402274543,US
-402274544,402275351,CA
+402274480,402274559,US
+402274560,402275351,CA
402275352,402275359,US
-402275360,402275407,CA
-402275408,402275839,US
+402275360,402275391,CA
+402275392,402275839,US
402275840,402276095,CA
402276096,402276223,US
402276224,402277375,CA
@@ -4429,9 +6085,7 @@
402280192,402280207,CA
402280208,402280223,US
402280224,402280319,CA
-402280320,402280383,US
-402280384,402280399,CA
-402280400,402280415,US
+402280320,402280415,US
402280416,402280959,CA
402280960,402281087,US
402281088,402281199,CA
@@ -4451,9 +6105,7 @@
402282848,402282879,CA
402282880,402282911,US
402282912,402282927,CA
-402282928,402282943,US
-402282944,402282959,CA
-402282960,402282975,US
+402282928,402282975,US
402282976,402283263,CA
402283264,402283519,US
402283520,402284039,CA
@@ -4462,16 +6114,18 @@
402284160,402284287,US
402284288,402284799,CA
402284800,402285055,US
-402285056,402285327,CA
-402285328,402285343,US
-402285344,402285407,CA
+402285056,402285311,CA
+402285312,402285343,US
+402285344,402285375,CA
+402285376,402285391,US
+402285392,402285407,CA
402285408,402285439,US
402285440,402285567,CA
402285568,402285823,US
-402285824,402286335,CA
-402286336,402286847,US
-402286848,402286863,CA
-402286864,402286895,US
+402285824,402286095,CA
+402286096,402286143,US
+402286144,402286319,CA
+402286320,402286895,US
402286896,402286911,CA
402286912,402286927,US
402286928,402286935,CA
@@ -4482,18 +6136,18 @@
402287208,402287215,US
402287216,402287263,CA
402287264,402287279,US
-402287280,402287343,CA
-402287344,402287391,US
+402287280,402287295,CA
+402287296,402287391,US
402287392,402287423,CA
402287424,402287487,US
402287488,402287551,CA
402287552,402287583,US
402287584,402287743,CA
402287744,402287799,US
-402287800,402287823,CA
-402287824,402287839,US
-402287840,402287887,CA
-402287888,402287903,US
+402287800,402287807,CA
+402287808,402287839,US
+402287840,402287871,CA
+402287872,402287903,US
402287904,402288007,CA
402288008,402288015,US
402288016,402288031,CA
@@ -4501,11 +6155,9 @@
402288064,402288135,CA
402288136,402288143,US
402288144,402288159,CA
-402288160,402288175,US
-402288176,402288223,CA
-402288224,402288255,US
-402288256,402288271,CA
-402288272,402288287,US
+402288160,402288191,US
+402288192,402288223,CA
+402288224,402288287,US
402288288,402288319,CA
402288320,402288383,US
402288384,402288391,CA
@@ -4518,7 +6170,9 @@
402288608,402288623,US
402288624,402288631,CA
402288632,402288895,US
-402288896,402289119,CA
+402288896,402289063,CA
+402289064,402289071,CN
+402289072,402289119,CA
402289120,402289151,US
402289152,402289407,CA
402289408,402289471,US
@@ -4532,10 +6186,10 @@
402289744,402289759,US
402289760,402289775,CA
402289776,402289791,US
-402289792,402289983,CA
-402289984,402290047,US
-402290048,402290239,CA
-402290240,402290255,US
+402289792,402289919,CA
+402289920,402290047,US
+402290048,402290175,CA
+402290176,402290255,US
402290256,402290271,CA
402290272,402290287,US
402290288,402290399,CA
@@ -4589,14 +6243,14 @@
402374656,402399231,US
402399232,402403327,CA
402403328,402407935,US
-402407936,402408703,TR
-402408704,402409215,US
-402409216,402409727,TR
-402409728,402410239,US
-402410240,402410751,TR
-402410752,402411263,US
-402411264,402411519,TR
-402411520,402522111,US
+402407936,402408191,TR
+402408192,402408447,US
+402408448,402408703,TR
+402408704,402409470,US
+402409471,402409471,TR
+402409472,402410495,US
+402410496,402410751,TR
+402410752,402522111,US
402522112,402522175,CA
402522176,402522183,US
402522184,402522223,CA
@@ -4608,21 +6262,15 @@
402522336,402522399,CA
402522400,402522407,US
402522408,402522479,CA
-402522480,402522559,US
-402522560,402522591,CA
-402522592,402522607,US
-402522608,402522623,CA
-402522624,402522655,US
+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,402523007,US
-402523008,402523023,CA
-402523024,402523039,US
-402523040,402523071,CA
-402523072,402523103,US
+402522992,402523103,US
402523104,402523111,CA
402523112,402523135,US
402523136,402523167,CA
@@ -4642,11 +6290,9 @@
402524256,402524263,CA
402524264,402524271,FI
402524272,402524279,CA
-402524280,402524351,US
-402524352,402524383,CA
-402524384,402524415,US
-402524416,402524431,CA
-402524432,402524447,US
+402524280,402524367,US
+402524368,402524383,CA
+402524384,402524447,US
402524448,402524479,CA
402524480,402524575,US
402524576,402524591,CA
@@ -4662,15 +6308,9 @@
402524960,402524991,CA
402524992,402525007,US
402525008,402525023,CA
-402525024,402525055,US
-402525056,402525087,CA
-402525088,402525103,US
+402525024,402525103,US
402525104,402525119,CA
-402525120,402525167,US
-402525168,402525183,CA
-402525184,402525279,US
-402525280,402525295,CA
-402525296,402525375,US
+402525120,402525375,US
402525376,402525415,CA
402525416,402525423,NO
402525424,402525439,CA
@@ -4678,21 +6318,19 @@
402525696,402525951,CA
402525952,402526079,US
402526080,402526207,CA
-402526208,402526527,US
-402526528,402526655,CA
+402526208,402526559,US
+402526560,402526655,CA
402526656,402526671,US
402526672,402526687,CA
402526688,402526719,US
402526720,402526975,CA
402526976,402527359,US
402527360,402527391,CA
-402527392,402527615,US
-402527616,402528255,CA
-402528256,402528383,US
-402528384,402528767,CA
-402528768,402529023,US
-402529024,402529279,CA
-402529280,402529535,US
+402527392,402527647,US
+402527648,402528255,CA
+402528256,402528415,US
+402528416,402528511,CA
+402528512,402529535,US
402529536,402529791,CA
402529792,402530047,US
402530048,402530303,CA
@@ -4701,11 +6339,15 @@
402531584,402531839,US
402531840,402531935,CA
402531936,402532031,US
-402532032,402532159,CA
+402532032,402532063,CA
+402532064,402532095,US
+402532096,402532159,CA
402532160,402532231,US
402532232,402532247,CA
402532248,402532255,US
-402532256,402532351,CA
+402532256,402532271,CA
+402532272,402532287,US
+402532288,402532351,CA
402532352,402532607,US
402532608,402532887,CA
402532888,402532895,US
@@ -4715,45 +6357,42 @@
402532984,402532991,US
402532992,402533015,CA
402533016,402533023,US
-402533024,402533039,CA
+402533024,402533031,CA
+402533032,402533039,SE
402533040,402533055,US
402533056,402533111,CA
402533112,402533279,US
402533280,402533295,CA
-402533296,402533311,US
-402533312,402533327,CA
-402533328,402533343,US
-402533344,402533631,CA
-402533632,402533759,US
+402533296,402533343,US
+402533344,402533375,CA
+402533376,402533759,US
402533760,402533791,CA
402533792,402533887,US
402533888,402533903,CA
-402533904,402533919,US
-402533920,402533935,CA
-402533936,402534015,US
+402533904,402534015,US
402534016,402534079,CA
402534080,402534095,US
402534096,402534111,CA
402534112,402534143,US
402534144,402534175,CA
-402534176,402534255,US
-402534256,402534271,CA
-402534272,402534319,US
-402534320,402534399,CA
+402534176,402534335,US
+402534336,402534399,CA
402534400,402534479,US
402534480,402534487,CA
402534488,402534655,US
-402534656,402535935,CA
+402534656,402535167,CA
+402535168,402535423,US
+402535424,402535935,CA
402535936,402536191,US
402536192,402536255,CA
-402536256,402536287,US
-402536288,402536303,CA
-402536304,402536351,US
+402536256,402536351,US
402536352,402536367,CA
402536368,402536383,US
402536384,402536391,CA
402536392,402536399,US
-402536400,402536455,CA
+402536400,402536431,CA
+402536432,402536447,US
+402536448,402536455,CA
402536456,402536463,US
402536464,402536479,CA
402536480,402536527,US
@@ -4765,27 +6404,33 @@
402536960,402537215,US
402537216,402537279,CA
402537280,402537367,US
-402537368,402538495,CA
+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,402538863,US
-402538864,402538879,CA
-402538880,402538895,US
+402538816,402538895,US
402538896,402538911,CA
402538912,402538927,US
-402538928,402538959,CA
-402538960,402538975,US
+402538928,402538943,CA
+402538944,402538975,US
402538976,402539071,CA
402539072,402539087,US
-402539088,402539135,CA
+402539088,402539095,SE
+402539096,402539135,CA
402539136,402539199,US
402539200,402539327,CA
402539328,402539455,US
-402539456,402539775,CA
+402539456,402539535,CA
+402539536,402539551,US
+402539552,402539567,CA
+402539568,402539583,US
+402539584,402539647,CN
+402539648,402539775,CA
402539776,402540031,US
402540032,402541119,CA
402541120,402541247,US
@@ -4808,13 +6453,11 @@
402543376,402543391,CA
402543392,402543487,US
402543488,402543551,CA
-402543552,402543583,US
-402543584,402543607,CA
+402543552,402543599,US
+402543600,402543607,CA
402543608,402544415,US
402544416,402544423,CA
-402544424,402544479,US
-402544480,402544495,CA
-402544496,402544511,US
+402544424,402544511,US
402544512,402544551,CA
402544552,402544591,US
402544592,402544607,CA
@@ -4864,7 +6507,8 @@
405143552,405180415,US
405180416,405184511,CA
405184512,405364735,US
-405364736,405372927,CA
+405364736,405368831,CA
+405368832,405372927,JP
405372928,405422079,PR
405422080,405798911,US
405798912,405831679,CA
@@ -4933,8 +6577,8 @@
411303936,411369471,NL
411369472,411435007,TR
411435008,411500543,DE
-411500544,411509759,RS
-411509760,411510783,XK
+411500544,411509247,RS
+411509248,411510783,XK
411510784,411566079,RS
411566080,411639807,US
411639808,411664383,CA
@@ -5006,9 +6650,7 @@
418062336,418070527,CA
418070528,418078719,US
418078720,418119679,CA
-418119680,418164095,US
-418164096,418164223,AS
-418164224,418316287,US
+418119680,418316287,US
418316288,418320383,CA
418320384,418643967,US
418643968,418668543,CA
@@ -5064,13 +6706,7 @@
455081984,455213055,AU
455213056,455245823,NP
455245824,455258111,JP
-455258112,455258623,SG
-455258624,455258688,KH
-455258689,455260671,SG
-455260672,455260674,KH
-455260675,455260927,SG
-455260928,455260960,KH
-455260961,455262207,SG
+455258112,455262207,SG
455262208,455270399,JP
455270400,455272447,AU
455272448,455274495,CN
@@ -5178,7 +6814,9 @@
460275712,460277759,AU
460277760,460278783,IN
460278784,460279807,JP
-460279808,460283903,AU
+460279808,460280831,AU
+460280832,460281087,PH
+460281088,460283903,AU
460283904,460292095,KR
460292096,460300287,JP
460300288,460312575,HK
@@ -5355,15 +6993,15 @@
520323072,520325119,CH
520325120,520327167,FR
520327168,520329215,DE
-520329216,520330495,SE
-520330496,520330751,NL
+520329216,520330239,SE
+520330240,520330751,NL
520330752,520331263,SE
520331264,520339455,IT
520339456,520343551,UA
520343552,520355839,GB
520355840,520421375,ES
520421376,520486911,RO
-520486912,520488959,GB
+520486912,520488959,NL
520488960,520489215,UA
520489216,520489471,CH
520489472,520489727,EG
@@ -5375,7 +7013,7 @@
520490752,520491007,RU
520491008,520491263,LI
520491264,520491391,IS
-520491392,520491647,GB
+520491392,520491647,AE
520491648,520491775,IS
520491776,520492031,IE
520492032,520492799,IT
@@ -5457,7 +7095,9 @@
520888320,520896511,DE
520896512,520898303,BE
520898304,520898559,US
-520900608,520912895,GB
+520900608,520902655,GB
+520902656,520902784,NL
+520902785,520912895,GB
520912896,520945663,UA
520945664,520947711,GB
520947712,520949759,SE
@@ -5484,7 +7124,9 @@
520990720,520992767,RU
520994816,521011199,BG
521011200,521013247,FR
-521013248,521014015,RO
+521013248,521013503,RO
+521013504,521013759,PL
+521013760,521014015,RO
521014016,521014271,NL
521014272,521018367,RO
521018368,521018623,IT
@@ -5507,9 +7149,10 @@
521028608,521028863,RU
521028864,521029119,RO
521029120,521029375,ES
-521029376,521029631,US
-521029632,521030655,CZ
-521030656,521031679,PL
+521029376,521029631,RO
+521029632,521030399,GB
+521030400,521030655,TR
+521030656,521031679,FR
521031680,521035775,IR
521035776,521037567,RO
521037568,521037823,TH
@@ -5517,7 +7160,9 @@
521039872,521043967,IR
521043968,521048063,IT
521048064,521052159,IR
-521052160,521053183,RO
+521052160,521052671,RO
+521052672,521052927,PL
+521052928,521053183,RO
521053184,521054207,SY
521054208,521056255,GR
521056256,521057279,LT
@@ -5529,9 +7174,9 @@
521066496,521072639,RO
521072640,521074687,GR
521074688,521074943,EG
-521074944,521075199,RO
+521074944,521075199,GB
521075200,521075327,FR
-521075328,521075455,RO
+521075328,521075455,GB
521075456,521075711,EG
521075712,521076479,RO
521076480,521076735,IN
@@ -5561,7 +7206,8 @@
521555968,521558015,NL
521558016,521560063,CY
521560064,521562111,PL
-521562112,521564159,GB
+521562112,521563135,GB
+521563136,521564159,NL
521564160,521565183,GR
521565184,521565439,GB
521565440,521566207,GR
@@ -5570,7 +7216,9 @@
521601024,521666559,RU
521666560,521668607,GB
521668608,521670655,CH
-521670656,521672703,HU
+521670656,521670911,HU
+521670912,521671935,DE
+521671936,521672703,HU
521672704,521674751,RU
521674752,521676799,GB
521676800,521678847,ES
@@ -5595,17 +7243,14 @@
521711616,521713663,SK
521713664,521715711,HU
521715712,521717759,LV
-521717760,521719807,IR
+521717760,521718783,IQ
+521718784,521719807,IR
521719808,521721855,UA
-521721856,521723903,GB
-521723904,521724159,SA
+521721856,521724159,GB
521724160,521724415,AU
521724416,521724671,GB
521724672,521724927,NL
-521724928,521725523,SA
-521725524,521725524,GB
-521725525,521725887,SA
-521725888,521725951,GB
+521724928,521725951,GB
521725952,521727999,IR
521728000,521732095,FR
521732096,521736191,GB
@@ -5631,7 +7276,7 @@
521777152,521779199,ES
521779200,521783295,GB
521783296,521785343,RU
-521785344,521787391,ES
+521785344,521787391,GB
521787392,521789439,NO
521789440,521791487,RU
521791488,521793535,IR
@@ -5644,7 +7289,9 @@
521945088,521953279,GB
521953280,521961471,RU
521961472,521969663,CZ
-521969664,521977855,UA
+521969664,521970089,UA
+521970090,521970090,BV
+521970091,521977855,UA
521977856,521986047,RU
521986048,521994239,UA
521994240,522002431,KG
@@ -5677,8 +7324,8 @@
522721280,522723327,UZ
522723328,522741759,RU
522741760,522743807,UA
-522743808,522747903,RU
-522747904,522758143,UA
+522743808,522751999,RU
+522752000,522758143,UA
522758144,522759167,RU
522759168,522764287,UA
522780672,522782719,RU
@@ -5739,7 +7386,7 @@
523024896,523025407,DE
523025408,523025663,UA
523025664,523025919,CH
-523025920,523026175,RU
+523025920,523026175,UA
523026176,523026431,GB
523026432,523030527,TR
523030528,523034623,FR
@@ -5788,7 +7435,7 @@
528664576,528666623,BY
528666624,528668671,RU
528668672,528670719,PL
-528670720,528674815,SG
+528670720,528674815,CA
528674816,528676863,RO
528676864,528678911,RU
528678912,528680959,MD
@@ -5796,7 +7443,9 @@
528683008,528684031,UA
528684032,528684543,NL
528684544,528685823,UA
-528685824,528687103,US
+528685824,528687023,US
+528687024,528687024,UA
+528687025,528687103,US
528687104,528689151,UA
528689152,528691199,RO
528691200,528695295,PL
@@ -5813,9 +7462,7 @@
528744448,528746495,GB
528748544,528752639,CZ
528760832,528762879,PL
-528762880,528763903,RU
-528763904,528764159,AM
-528764160,528764927,RU
+528762880,528764927,AM
528764928,528769023,KZ
528769024,528793599,RU
528793600,528795647,RO
@@ -5827,17 +7474,16 @@
528816128,528818175,RO
528818176,528834559,UA
528836608,528838655,RU
-528838656,528840703,UA
+528838656,528840703,PL
528840704,528842751,RU
-528842752,528859135,SG
+528842752,528859135,CA
528859136,528861183,RO
528861184,528863231,RU
528863232,528867327,KZ
528867328,528887807,RU
528887808,528891903,PL
528891904,528900095,UA
-528900096,528901119,SL
-528901120,528902143,SK
+528900096,528902143,SK
528902144,528908287,UA
528908288,528926719,RU
528926720,528928767,NL
@@ -5863,7 +7509,11 @@
529661952,529727487,GE
529727488,529793023,HR
529793024,529793279,CZ
-529793280,529798655,RU
+529793280,529798143,RU
+529798144,529798172,UA
+529798173,529798173,RU
+529798174,529798399,UA
+529798400,529798655,RU
529798656,529798911,KZ
529798912,529799167,UA
529799168,529799423,RU
@@ -5880,10 +7530,10 @@
529826816,529827327,MD
529827328,529827839,UA
529827840,529828863,RU
-529828864,529829887,CZ
+529828864,529829887,KZ
529829888,529830911,UZ
529830912,529831935,RU
-529831936,529833983,CZ
+529831936,529833983,SY
529833984,529838079,RU
529838080,529842175,UA
529842176,529843199,ES
@@ -5892,7 +7542,8 @@
529844224,529844735,CZ
529844736,529845503,RU
529845504,529846271,UA
-529846272,529848319,CZ
+529846272,529847295,UZ
+529847296,529848319,GB
529848320,529848575,NL
529848576,529848831,CZ
529848832,529849087,UA
@@ -5901,7 +7552,9 @@
529849856,529850111,CZ
529850112,529850367,RU
529850368,529855487,ES
-529855488,529856511,CZ
+529855488,529855743,CZ
+529855744,529855999,UA
+529856000,529856511,CZ
529856512,529856530,BY
529856531,529856531,RU
529856532,529857535,BY
@@ -5943,7 +7596,9 @@
531263488,531265535,RU
531265536,531267583,GB
531267584,531275775,UA
-531275776,531277823,US
+531275776,531276799,US
+531276800,531277311,GB
+531277312,531277823,US
531277824,531279871,RU
531279872,531281919,CZ
531281920,531283967,RU
@@ -5951,8 +7606,8 @@
531292160,531333119,AZ
531333120,531334143,NL
531334144,531334399,US
-531334400,531334655,NL
-531334656,531335167,US
+531334400,531334527,NL
+531334528,531335167,US
531335168,531337215,IT
531337216,531339263,CH
531339264,531341311,AL
@@ -5961,8 +7616,20 @@
531351552,531355647,NL
531355648,531357695,IR
531357696,531361791,HU
-531361792,531365887,CH
-531365888,531398655,DE
+531361792,531367935,CH
+531367936,531369983,DE
+531369984,531372031,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
@@ -5971,7 +7638,29 @@
531410944,531415039,PL
531415040,531423231,RU
531425280,531427327,FR
-531427328,531431423,GB
+531427328,531427503,GB
+531427504,531427511,IT
+531427512,531427967,GB
+531427968,531427983,IT
+531427984,531428191,GB
+531428192,531428199,IT
+531428200,531428263,GB
+531428264,531428271,IT
+531428272,531428279,GB
+531428280,531428287,IT
+531428288,531428351,GB
+531428352,531428359,IT
+531428360,531428599,GB
+531428600,531428607,IT
+531428608,531430319,GB
+531430320,531430327,IT
+531430328,531430407,GB
+531430408,531430415,IT
+531430416,531430823,GB
+531430824,531430831,IT
+531430832,531430911,GB
+531430912,531430919,IT
+531430920,531431423,GB
531431424,531496959,RU
531496960,531628031,PL
531628032,531660799,TR
@@ -6022,16 +7711,20 @@
532305920,532307967,NO
532307968,532310015,RU
532310016,532312063,GR
-532312064,532314111,JE
+532312064,532312983,JE
+532312984,532312991,GB
+532312992,532314111,JE
532314112,532316159,DE
532316160,532324351,RU
532324352,532328447,NL
532328448,532330495,PS
532330496,532332543,CZ
-532332544,532340735,PL
+532332544,532340735,SK
532340736,532341503,GB
532341504,532341759,DE
-532341760,532344319,GB
+532341760,532343967,GB
+532343968,532343983,US
+532343984,532344319,GB
532344320,532344371,FR
532344372,532344372,GB
532344373,532344575,FR
@@ -6052,7 +7745,7 @@
532366240,532366271,PA
532366272,532366847,DE
532366848,532367359,GB
-532367360,532368383,DE
+532367360,532368383,US
532368384,532368639,NL
532368640,532370431,DE
532370432,532371455,FI
@@ -6075,15 +7768,13 @@
532377600,532381695,DE
532381696,532414463,NL
532414464,532676607,IT
-532676608,532684799,GE
-532684800,532689919,RU
-532689920,532690943,GE
-532690944,532692991,RU
-532692992,532701153,CZ
-532701154,532701154,SK
-532701155,532701183,CZ
+532676608,532692991,GE
+532692992,532700927,CZ
+532700928,532701183,SK
532701184,532703231,GB
-532703232,532705279,RU
+532703232,532704511,RU
+532704512,532704767,NL
+532704768,532705279,RU
532705280,532709375,NL
532709376,532725759,RU
532725760,532729855,SE
@@ -6094,9 +7785,9 @@
532738048,532740095,GB
532740096,532742143,KG
532742144,532746239,GB
-532746240,532750335,IT
-532750336,532751359,SM
-532751360,532752383,IT
+532746240,532750636,IT
+532750637,532750637,SM
+532750638,532752383,IT
532752384,532754431,BE
532754432,532756479,FR
532756480,532758527,IT
@@ -6152,8 +7843,7 @@
533512192,533528575,ME
533528576,533594111,GB
533594112,533659647,TR
-533659648,533661695,US
-533661696,533667839,GB
+533659648,533667839,US
533667840,533669887,FR
533669888,533670911,GB
533670912,533673983,NL
@@ -6166,10 +7856,17 @@
533692416,533725183,RU
533725184,533734393,SE
533734394,533734394,DK
-533734395,533807103,SE
+533734395,533765631,SE
+533765632,533765887,DK
+533765888,533807103,SE
533807104,533811199,LT
533811200,533815295,DE
-533815296,533819391,CY
+533815296,533815296,TR
+533815297,533816319,CY
+533816320,533816320,TR
+533816321,533817343,CY
+533817344,533817344,TR
+533817345,533819391,CY
533819392,533823487,DE
533823488,533825535,BE
533825536,533831679,IS
@@ -6178,22 +7875,26 @@
533837824,533839871,DE
533839872,533856255,IS
533856256,533858303,FR
-533858304,533858751,HU
+533858304,533858671,TR
+533858672,533858687,AT
+533858688,533858751,TR
533858752,533858815,AT
-533858816,533858895,HU
+533858816,533858895,TR
533858896,533858903,AT
-533858904,533859071,HU
-533859072,533859087,AT
-533859088,533859231,HU
-533859232,533859263,TR
-533859264,533860351,HU
+533858904,533859071,TR
+533859072,533859091,AT
+533859092,533859647,TR
+533859648,533859663,AT
+533859664,533860351,TR
533862400,533864447,GB
533864448,533889023,TR
533889024,533891071,GB
533891072,533893119,RU
533895168,533897215,TR
533897216,533899263,DE
-533899264,533901311,RU
+533899264,533899775,RU
+533899776,533900799,NL
+533900800,533901311,RU
533901312,533905407,IL
533905408,533913599,RU
533913600,533915647,ES
@@ -6208,7 +7909,7 @@
533970944,533987327,SE
533987328,534118399,DE
534118400,534151167,KW
-534151168,534151423,DE
+534151168,534151423,US
534151424,534151679,TR
534151680,534152191,DE
534152192,534152703,IR
@@ -6259,7 +7960,9 @@
534348288,534348543,US
534348544,534348831,GB
534348832,534348847,CA
-534348848,534355967,GB
+534348848,534349071,GB
+534349072,534349079,US
+534349080,534355967,GB
534355968,534364159,GR
534364160,534366207,FI
534366208,534368255,IT
@@ -6270,17 +7973,21 @@
534376448,534378495,IE
534380544,534511615,AE
534511616,534511871,NL
-534511872,534512639,DE
+534511872,534512639,BZ
534512640,534512895,NL
534512896,534513151,SE
534513152,534513215,BS
534513216,534513279,VG
534513280,534513407,NL
534513408,534513663,SE
-534513664,534515199,DE
+534513664,534514687,US
+534514688,534515199,DE
534515200,534515455,US
534515456,534515711,SE
-534515712,534517759,LT
+534515712,534515967,GB
+534515968,534516735,US
+534516736,534516991,GB
+534516992,534517759,US
534517760,534518783,NL
534518784,534518847,ES
534518848,534518911,FI
@@ -6300,13 +8007,14 @@
534519488,534519519,MX
534519520,534519551,CN
534519552,534519807,NL
-534519808,534522367,DE
+534519808,534521855,US
+534521856,534522367,DE
534522368,534523391,NL
-534523392,534523903,US
-534523904,534527999,LT
-534528000,534530047,DE
+534523392,534530047,US
534530048,534538239,ES
-534538240,534540287,LT
+534538240,534538751,US
+534538752,534539007,GB
+534539008,534540287,US
534540288,534544383,DE
534544384,534546431,RO
534546432,534548479,DE
@@ -6314,11 +8022,7 @@
534550528,534560767,RU
534560768,534573823,GB
534573824,534574079,NL
-534574080,534597887,GB
-534597888,534598095,US
-534598096,534598111,GB
-534598112,534598143,US
-534598144,534609919,GB
+534574080,534609919,GB
534609920,534642687,ES
534642688,534645759,CZ
534645760,534646271,PL
@@ -6327,11 +8031,13 @@
534648832,534650879,CH
534650880,534652927,RU
534652928,534654975,AL
-534654976,534663167,GB
+534654976,534661119,GB
+534661120,534663167,US
534663168,534675455,ES
534675456,534691839,GB
534691840,534693887,FR
-534693888,534700031,GB
+534693888,534695935,NL
+534695936,534700031,GB
534700032,534708223,JO
534708224,534740991,TR
534740992,534749183,BA
@@ -6344,7 +8050,13 @@
534769664,534773759,IT
534773760,536870911,DE
536870912,539623423,US
-539623424,539627519,AU
+539623424,539624447,NL
+539624448,539624577,HU
+539624578,539624578,NL
+539624579,539624703,HU
+539624704,539626751,NL
+539626752,539627007,GB
+539627008,539627519,NL
539627520,539629455,GB
539629456,539629463,BE
539629464,539629975,GB
@@ -6367,15 +8079,17 @@
539666432,539668479,JP
539668480,539668819,AU
539668820,539668823,NZ
-539668824,539670527,AU
-539670528,539672575,JP
+539668824,539671103,AU
+539671104,539671135,JP
+539671136,539672575,AU
539672576,540725247,US
540725248,540727295,FR
540727296,540729343,DE
-540729344,540731391,US
-540731392,540733439,GB
+540729344,540733439,GB
540733440,540737535,NL
-540737536,540803071,BR
+540737536,540753919,BR
+540753920,540754175,AR
+540754176,540803071,BR
540803072,540811263,US
540811264,540813639,SG
540813640,540813647,US
@@ -6392,7 +8106,9 @@
540825348,540825348,CA
540825349,540826383,US
540826384,540826399,CA
-540826400,540832575,US
+540826400,540829695,US
+540829696,540831743,CA
+540831744,540832575,US
540832576,540832591,CA
540832592,543524607,US
543524608,543524863,CA
@@ -6402,7 +8118,9 @@
543590144,543590399,CA
543590400,543690751,US
543690752,543691007,AR
-543691008,543817727,US
+543691008,543691263,US
+543691264,543691775,BR
+543691776,543817727,US
543817728,543818239,DE
543818240,543819263,US
543819264,543820287,DE
@@ -6457,9 +8175,7 @@
544250532,544436771,US
544436772,544436775,CA
544436776,586153983,US
-586153984,586975999,IE
-586976000,586976255,US
-586976256,587006719,IE
+586153984,587006719,IE
587006720,587006975,GB
587006976,587202559,IE
587202560,597295103,US
@@ -6468,14 +8184,28 @@
597426176,597688319,DE
597688320,598736895,US
598736896,598999039,GB
-598999040,599261183,CA
+598999040,599064575,FR
+599064576,599130111,US
+599130112,599261183,CA
599261184,599608829,US
599608830,599608830,GB
599608831,599609659,US
599609660,599609660,GB
599609661,599615125,US
599615126,599615126,GB
-599615127,603979775,US
+599615127,600164504,US
+600164505,600164505,IE
+600164506,600169106,US
+600169107,600169107,GB
+600169108,600171164,US
+600171165,600171165,GB
+600171166,600342898,US
+600342899,600342899,IN
+600342900,600374233,US
+600374234,600374234,IN
+600374235,600376938,US
+600376939,600376939,AU
+600376940,603979775,US
603979776,603980799,CN
603980800,603981823,NP
603981824,604110847,CN
@@ -6506,20 +8236,18 @@
620701312,620701439,HK
620701440,620701695,JP
620701696,620703743,PK
-620703744,620704767,NZ
+620703744,620704767,AU
620704768,620705791,BD
620705792,620706815,HK
620707840,620708863,IN
620708864,620709887,HK
620709888,620711935,AU
-620711936,620712959,HK
620712960,620715007,IN
620715008,620716031,AU
620716032,620716287,TW
620716288,620716543,PH
620716544,620716799,BE
-620716800,620717055,LU
-620717056,620718079,PK
+620716800,620718079,PK
620718080,620720127,IN
620720128,620721151,AU
620721152,620722175,CN
@@ -6561,11 +8289,17 @@
620777472,620781567,NL
620781568,620783615,GB
620783616,620785663,ES
-620785664,620787711,DE
+620785664,620785919,DE
+620785920,620786175,GB
+620786176,620786687,DE
+620786688,620787199,IE
+620787200,620787711,DE
620787712,620789503,RU
620789504,620789631,KZ
620789632,620789759,RU
-620789760,620822527,SE
+620789760,620810239,HR
+620810240,620812287,SE
+620812288,620822527,LT
620822528,620845055,RU
620845056,620845191,GB
620845192,620845199,DE
@@ -6575,15 +8309,16 @@
620849152,620851199,NL
620851200,620855295,DE
620855296,620859391,RU
-620859392,620861439,TR
+620859392,620861439,NL
620861440,620863487,GB
620863488,620865535,DE
620865536,620867583,FR
620867584,620869631,ES
620869632,620871679,FI
-620871680,620871807,UA
-620871808,620871808,DE
-620871809,620879871,UA
+620871680,620873727,DE
+620873728,620875775,NL
+620875776,620877823,US
+620877824,620879871,DE
620879872,620881919,GB
620881920,620888063,FR
620888064,621019135,SE
@@ -6618,9 +8353,22 @@
621404160,621408255,IT
621408256,621410303,RU
621410304,621412351,IR
-621412352,621418495,NL
-621418496,621418752,US
-621418753,621428735,NL
+621412352,621414399,NL
+621414400,621414655,HK
+621414656,621416447,NL
+621416448,621416703,GB
+621416704,621417471,NL
+621417472,621417727,DE
+621417728,621418495,NL
+621418496,621420543,US
+621420544,621420799,NL
+621420800,621421055,SG
+621421056,621421567,US
+621421568,621422591,NL
+621422592,621422847,HK
+621422848,621423103,SG
+621423104,621423615,US
+621423616,621428735,NL
621428736,621429759,IR
621429760,621430271,DE
621430272,621430527,ES
@@ -6653,56 +8401,25 @@
621918208,621920255,GB
621920256,621924351,JO
621924352,621928447,NL
-621928448,621932543,DE
+621928448,621930495,DE
+621930496,621932543,CH
621932544,621934591,UA
621934592,621936639,SE
-621936640,621938687,NL
+621936640,621938687,RU
621938688,621939458,GE
621939459,621939459,RU
621939460,621939711,GE
-621939712,621940735,RU
-621940736,621941247,NL
-621941248,621941503,RU
-621941504,621942015,NL
-621942016,621942271,RU
-621942272,621942527,NL
-621942528,621943551,RU
-621943552,621947135,NL
-621947136,621947391,RU
-621947392,621951743,NL
-621951744,621951999,RU
-621952000,621952255,NL
-621952256,621952511,RU
-621952512,621958911,NL
-621958912,621959167,RU
-621959168,621960703,NL
-621960704,621960959,RU
-621960960,621963263,NL
-621963264,621963519,RU
-621963520,621969407,NL
-621971456,621972991,IM
-621972992,621973119,GB
-621973120,621973121,IM
-621973122,621973124,GB
-621973125,621973125,IM
-621973126,621973127,GB
-621973128,621973128,IM
-621973129,621973149,GB
-621973150,621973150,IM
-621973151,621973152,GB
-621973153,621973153,IM
-621973154,621973162,GB
-621973163,621973163,IM
-621973164,621973177,GB
-621973178,621973178,IM
-621973179,621973247,GB
-621973248,621973503,IM
+621939712,621969407,RU
+621971456,621973503,IM
621973504,621975551,IE
621975552,621977599,RU
621977600,621981695,FR
-621981696,621983743,US
-621983744,621985791,RS
-621985792,621993983,SE
+621981696,621982719,CH
+621982720,621983743,US
+621983744,621985791,GB
+621985792,621987839,US
+621987840,621989887,DE
+621989888,621993983,SE
621993984,621998079,SI
621998080,622000127,ES
622000128,622004223,RU
@@ -6727,9 +8444,23 @@
622411776,622413823,DE
622413824,622415871,FR
622415872,622417919,MK
-622417920,622419967,GB
+622417920,622419967,IM
622419968,622428159,UA
-622428160,622460927,DE
+622428160,622430207,DE
+622430208,622432255,IE
+622432256,622434303,IT
+622434304,622436351,DE
+622436352,622438399,IE
+622438400,622439423,IT
+622439424,622444543,DE
+622444544,622449663,IE
+622449664,622451711,ES
+622451712,622452735,DE
+622452736,622454783,IT
+622454784,622456831,DE
+622456832,622458879,IT
+622458880,622459903,ES
+622459904,622460927,IE
622460928,622477311,AZ
622477312,622479359,AL
622479360,622481407,GB
@@ -6749,9 +8480,7 @@
622514176,622518271,NO
622518272,622518783,GB
622518784,622519039,DE
-622519040,622519281,NL
-622519282,622519282,GB
-622519283,622519295,NL
+622519040,622519295,GB
622519296,622519551,FR
622519552,622520319,NL
622520320,622522367,RU
@@ -6830,7 +8559,7 @@
623654912,623656959,IR
623656960,623673343,BY
623673344,623689727,NO
-623689728,623706111,RU
+623689728,623693823,RU
623706112,623771647,BY
623771648,623773695,GB
623775744,623777791,IE
@@ -6843,13 +8572,12 @@
623794176,623796223,ES
623796224,623798271,GB
623798272,623800319,GE
-623800320,623800575,SE
+623800320,623800575,NL
623800576,623800831,LU
623800832,623801087,BG
-623801088,623802111,NL
-623802112,623802879,SE
-623802880,623803391,NL
-623803392,623804415,SE
+623801088,623802367,NL
+623802368,623802879,SE
+623802880,623804415,NL
623804416,623806463,RU
623806464,623808511,NL
623810560,623812607,ES
@@ -6860,7 +8588,9 @@
623822592,623822847,DE
623822848,623824895,GB
623824896,623826943,CZ
-623826944,623837183,UA
+623826944,623827967,UA
+623827968,623828991,BG
+623828992,623837183,UA
623837184,623902719,PL
623902720,623919103,CZ
623919104,623935487,NL
@@ -6890,100 +8620,549 @@
624574464,624590847,NL
624590848,624625848,FR
624625849,624625849,CA
-624625850,624640255,FR
+624625850,624640071,FR
+624640072,624640075,PL
+624640076,624640187,FR
+624640188,624640191,GB
+624640192,624640255,FR
624640256,624640259,GB
624640260,624640527,FR
624640528,624640543,GB
-624640544,624642711,FR
+624640544,624640615,FR
+624640616,624640619,IE
+624640620,624640639,FR
+624640640,624640703,ES
+624640704,624640751,FR
+624640752,624640755,GB
+624640756,624640783,FR
+624640784,624640787,ES
+624640788,624640811,FR
+624640812,624640815,GB
+624640816,624640823,FR
+624640824,624640827,GB
+624640828,624640931,FR
+624640932,624640935,ES
+624640936,624641183,FR
+624641184,624641187,CZ
+624641188,624641191,ES
+624641192,624641295,FR
+624641296,624641299,CZ
+624641300,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
+624642036,624642039,ES
+624642040,624642079,FR
+624642080,624642095,GB
+624642096,624642299,FR
+624642300,624642303,ES
+624642304,624642479,FR
+624642480,624642483,GB
+624642484,624642711,FR
624642712,624642719,PL
-624642720,624643231,FR
+624642720,624642815,FR
+624642816,624642831,LT
+624642832,624642911,FR
+624642912,624642943,IE
+624642944,624643091,FR
+624643092,624643095,FI
+624643096,624643107,FR
+624643108,624643111,GB
+624643112,624643211,FR
+624643212,624643215,CH
+624643216,624643231,FR
624643232,624643235,DE
-624643236,624644667,FR
+624643236,624643243,FR
+624643244,624643247,ES
+624643248,624643263,FR
+624643264,624643295,DE
+624643296,624643343,FR
+624643344,624643351,ES
+624643352,624643423,FR
+624643424,624643459,ES
+624643460,624643811,FR
+624643812,624643815,CH
+624643816,624644031,FR
+624644032,624644063,FI
+624644064,624644095,ES
+624644096,624644115,FR
+624644116,624644119,GB
+624644120,624644283,FR
+624644284,624644287,ES
+624644288,624644303,FR
+624644304,624644307,IE
+624644308,624644667,FR
624644668,624644671,DK
-624644672,624645479,FR
+624644672,624644939,FR
+624644940,624644943,ES
+624644944,624645183,FR
+624645184,624645215,ES
+624645216,624645479,FR
624645480,624645487,CZ
-624645488,624646235,FR
+624645488,624645583,FR
+624645584,624645591,GB
+624645592,624645663,FR
+624645664,624645695,PT
+624645696,624646231,FR
+624646232,624646235,CZ
624646236,624646239,IT
624646240,624646255,DE
-624646256,624646651,FR
+624646256,624646267,FR
+624646268,624646271,PL
+624646272,624646347,FR
+624646348,624646351,IE
+624646352,624646643,FR
+624646644,624646647,ES
+624646648,624646651,FR
624646652,624646655,PT
-624646656,624647459,FR
+624646656,624646671,FR
+624646672,624646687,GB
+624646688,624646719,FR
+624646720,624646735,ES
+624646736,624646791,FR
+624646792,624646795,IE
+624646796,624646911,FR
+624646912,624646927,LT
+624646928,624647171,FR
+624647172,624647183,ES
+624647184,624647459,FR
624647460,624647463,GB
-624647464,624656863,FR
+624647464,624647675,FR
+624647676,624647679,ES
+624647680,624648139,FR
+624648140,624648143,ES
+624648144,624656727,FR
+624656728,624656731,PT
+624656732,624656751,FR
+624656752,624656755,GB
+624656756,624656863,FR
624656864,624656867,CZ
-624656868,624657543,FR
+624656868,624656975,FR
+624656976,624656979,PT
+624656980,624657023,FR
+624657024,624657055,FI
+624657056,624657327,FR
+624657328,624657331,ES
+624657332,624657359,FR
+624657360,624657363,GB
+624657364,624657543,FR
624657544,624657547,ES
-624657548,624657923,FR
+624657548,624657615,FR
+624657616,624657631,GB
+624657632,624657711,FR
+624657712,624657715,ES
+624657716,624657719,PL
+624657720,624657759,FR
+624657760,624657767,ES
+624657768,624657831,FR
+624657832,624657839,ES
+624657840,624657883,FR
+624657884,624657887,ES
+624657888,624657923,FR
624657924,624657927,DE
-624657928,624658323,FR
+624657928,624658187,FR
+624658188,624658191,ES
+624658192,624658271,FR
+624658272,624658279,PT
+624658280,624658323,FR
624658324,624658327,IE
624658328,624658479,FR
624658480,624658483,DE
-624658484,624660103,FR
+624658484,624658487,ES
+624658488,624658535,FR
+624658536,624658539,ES
+624658540,624658559,FR
+624658560,624658591,LT
+624658592,624658803,FR
+624658804,624658807,CZ
+624658808,624658863,FR
+624658864,624658879,ES
+624658880,624659071,FR
+624659072,624659135,ES
+624659136,624659599,FR
+624659600,624659607,ES
+624659608,624659611,FR
+624659612,624659615,PL
+624659616,624659975,FR
+624659976,624659983,LT
+624659984,624660103,FR
624660104,624660107,PT
-624660108,624661787,FR
+624660108,624660127,FR
+624660128,624660131,IE
+624660132,624660607,FR
+624660608,624660639,IE
+624660640,624660703,FR
+624660704,624660719,PL
+624660720,624660827,FR
+624660828,624660839,ES
+624660840,624660927,FR
+624660928,624660991,GB
+624660992,624661175,FR
+624661176,624661183,ES
+624661184,624661247,FR
+624661248,624661251,ES
+624661252,624661787,FR
624661788,624661788,RO
-624661789,624661955,FR
+624661789,624661863,FR
+624661864,624661871,ES
+624661872,624661887,FR
+624661888,624661903,ES
+624661904,624661955,FR
624661956,624661959,PL
-624661960,624663503,FR
+624661960,624662315,FR
+624662316,624662319,ES
+624662320,624662327,FR
+624662328,624662331,PT
+624662332,624662895,FR
+624662896,624662911,ES
+624662912,624663407,FR
+624663408,624663423,FI
+624663424,624663503,FR
624663504,624663519,ES
-624663520,624663863,FR
+624663520,624663567,FR
+624663568,624663583,ES
+624663584,624663687,FR
+624663688,624663695,GB
+624663696,624663759,FR
+624663760,624663767,ES
+624663768,624663787,FR
+624663788,624663791,ES
+624663792,624663863,FR
624663864,624663867,DE
-624663868,624664676,FR
-624664677,624664677,IE
-624664678,624665587,FR
+624663868,624663951,FR
+624663952,624663955,ES
+624663956,624664047,FR
+624664048,624664063,IE
+624664064,624664067,FR
+624664068,624664071,ES
+624664072,624664351,FR
+624664352,624664367,ES
+624664368,624664495,FR
+624664496,624664511,ES
+624664512,624664527,FR
+624664528,624664531,ES
+624664532,624664599,FR
+624664600,624664603,GB
+624664604,624664607,IE
+624664608,624664623,FR
+624664624,624664627,ES
+624664628,624664671,FR
+624664672,624664703,IE
+624664704,624664767,FR
+624664768,624664775,GB
+624664776,624665271,FR
+624665272,624665275,CZ
+624665276,624665471,FR
+624665472,624665475,LT
+624665476,624665587,FR
624665588,624665591,DE
-624665592,624666167,FR
-624666168,624666168,GB
-624666169,624666172,FR
-624666173,624666173,GB
-624666174,624666219,FR
+624665592,624665611,FR
+624665612,624665615,ES
+624665616,624665663,FR
+624665664,624665695,ES
+624665696,624665887,FR
+624665888,624665903,PL
+624665904,624665919,FI
+624665920,624665999,FR
+624666000,624666015,GB
+624666016,624666167,FR
+624666168,624666175,GB
+624666176,624666219,FR
624666220,624666223,DE
-624666224,624666695,FR
+624666224,624666375,FR
+624666376,624666379,GB
+624666380,624666591,FR
+624666592,624666607,ES
+624666608,624666691,FR
+624666692,624666695,ES
624666696,624666703,DE
-624666704,624668063,FR
+624666704,624666791,FR
+624666792,624666795,ES
+624666796,624666799,GB
+624666800,624666879,FR
+624666880,624666883,DE
+624666884,624666975,FR
+624666976,624666991,ES
+624666992,624667111,FR
+624667112,624667115,ES
+624667116,624667263,FR
+624667264,624667279,IE
+624667280,624667711,FR
+624667712,624667775,ES
+624667776,624667951,FR
+624667952,624667967,GB
+624667968,624668055,FR
+624668056,624668063,IE
624668064,624668079,BE
-624668080,624670915,FR
+624668080,624668111,FR
+624668112,624668127,GB
+624668128,624668207,FR
+624668208,624668211,CZ
+624668212,624668239,FR
+624668240,624668255,NL
+624668256,624668643,FR
+624668644,624668647,IE
+624668648,624668667,FR
+624668668,624668671,PT
+624668672,624668927,FR
+624668928,624668931,GB
+624668932,624669459,FR
+624669460,624669463,FI
+624669464,624669711,FR
+624669712,624669727,ES
+624669728,624669795,FR
+624669796,624669799,ES
+624669800,624669959,FR
+624669960,624669963,ES
+624669964,624669987,FR
+624669988,624669991,ES
+624669992,624670171,FR
+624670172,624670175,ES
+624670176,624670315,FR
+624670316,624670319,ES
+624670320,624670659,FR
+624670660,624670663,IE
+624670664,624670871,FR
+624670872,624670875,BE
+624670876,624670915,FR
624670916,624670919,ES
-624670920,624671455,FR
+624670920,624670935,FR
+624670936,624670939,GB
+624670940,624671287,FR
+624671288,624671291,ES
+624671292,624671295,PL
+624671296,624671455,FR
624671456,624671471,ES
-624671472,624673287,FR
+624671472,624672095,FR
+624672096,624672127,CZ
+624672128,624672547,FR
+624672548,624672551,ES
+624672552,624672951,FR
+624672952,624672959,ES
+624672960,624673287,FR
624673288,624673295,DE
-624673296,624673535,FR
+624673296,624673451,FR
+624673452,624673455,ES
+624673456,624673535,FR
624673536,624673791,ES
624673792,624673803,FR
624673804,624673807,NL
624673808,624673903,FR
624673904,624673919,ES
-624673920,624676003,FR
+624673920,624673931,FR
+624673932,624673935,GB
+624673936,624674411,FR
+624674412,624674415,ES
+624674416,624674447,FR
+624674448,624674451,GB
+624674452,624674463,FR
+624674464,624674479,ES
+624674480,624675019,FR
+624675020,624675023,DE
+624675024,624675027,BE
+624675028,624675047,FR
+624675048,624675055,ES
+624675056,624675647,FR
+624675648,624675651,FI
+624675652,624675655,ES
+624675656,624675683,FR
+624675684,624675687,PT
+624675688,624675691,FR
+624675692,624675695,ES
+624675696,624675775,FR
+624675776,624675779,ES
+624675780,624676003,FR
624676004,624676007,DE
-624676008,624676087,FR
+624676008,624676015,FR
+624676016,624676019,GB
+624676020,624676071,FR
+624676072,624676075,ES
+624676076,624676087,FR
624676088,624676091,DE
-624676092,624677769,FR
+624676092,624676115,FR
+624676116,624676119,IT
+624676120,624676627,FR
+624676628,624676631,GB
+624676632,624676715,FR
+624676716,624676719,ES
+624676720,624677463,FR
+624677464,624677467,ES
+624677468,624677471,GB
+624677472,624677583,FR
+624677584,624677587,ES
+624677588,624677769,FR
624677770,624677770,NL
-624677771,624681535,FR
+624677771,624677855,FR
+624677856,624677887,BE
+624677888,624677891,PL
+624677892,624678015,FR
+624678016,624678023,ES
+624678024,624678199,FR
+624678200,624678239,ES
+624678240,624678263,FR
+624678264,624678279,ES
+624678280,624678463,FR
+624678464,624678479,IE
+624678480,624678483,FR
+624678484,624678487,ES
+624678488,624678671,FR
+624678672,624678679,ES
+624678680,624678847,FR
+624678848,624678855,GB
+624678856,624678863,FR
+624678864,624678879,PT
+624678880,624678899,FR
+624678900,624678903,GB
+624678904,624679199,FR
+624679200,624679203,ES
+624679204,624679259,FR
+624679260,624679263,ES
+624679264,624679327,FR
+624679328,624679335,ES
+624679336,624679743,FR
+624679744,624679747,CZ
+624679748,624679843,FR
+624679844,624679847,ES
+624679848,624680063,FR
+624680064,624680191,ES
+624680192,624680455,FR
+624680456,624680463,ES
+624680464,624680747,FR
+624680748,624680751,NL
+624680752,624680767,FR
+624680768,624680783,CZ
+624680784,624680799,GB
+624680800,624680895,FR
+624680896,624680927,ES
+624680928,624681023,FR
+624681024,624681055,ES
+624681056,624681083,FR
+624681084,624681087,ES
+624681088,624681095,FR
+624681096,624681103,NL
+624681104,624681363,FR
+624681364,624681367,CZ
+624681368,624681535,FR
624681536,624681599,ES
624681600,624681807,FR
624681808,624681823,BE
-624681824,624682495,FR
+624681824,624682263,FR
+624682264,624682267,ES
+624682268,624682319,FR
+624682320,624682323,ES
+624682324,624682367,FR
+624682368,624682383,LT
+624682384,624682495,FR
624682496,624682527,ES
-624682528,624683295,FR
+624682528,624682623,FR
+624682624,624682639,ES
+624682640,624683007,FR
+624683008,624683011,GB
+624683012,624683015,FR
+624683016,624683023,ES
+624683024,624683031,FR
+624683032,624683039,GB
+624683040,624683135,FR
+624683136,624683151,PL
+624683152,624683295,FR
624683296,624683311,DE
-624683312,624683775,FR
+624683312,624683339,FR
+624683340,624683343,ES
+624683344,624683631,FR
+624683632,624683647,ES
+624683648,624683775,FR
624683776,624683779,DE
624683780,624683783,FR
624683784,624683787,DE
-624683788,624683975,FR
+624683788,624683807,FR
+624683808,624683811,ES
+624683812,624683875,FR
+624683876,624683879,PL
+624683880,624683975,FR
624683976,624683983,GB
-624683984,624684799,FR
+624683984,624684043,FR
+624684044,624684047,PT
+624684048,624684051,FR
+624684052,624684055,ES
+624684056,624684063,FR
+624684064,624684071,PT
+624684072,624684191,FR
+624684192,624684195,CH
+624684196,624684339,FR
+624684340,624684343,NL
+624684344,624684479,FR
+624684480,624684511,FI
+624684512,624684639,FR
+624684640,624684655,ES
+624684656,624684799,FR
624684800,624684803,DE
-624684804,624685375,FR
+624684804,624684907,FR
+624684908,624684911,ES
+624684912,624685375,FR
624685376,624685439,ES
-624685440,624686783,FR
+624685440,624685535,FR
+624685536,624685539,PT
+624685540,624685683,FR
+624685684,624685687,FI
+624685688,624685711,FR
+624685712,624685715,ES
+624685716,624685799,FR
+624685800,624685803,ES
+624685804,624685815,FR
+624685816,624685823,GB
+624685824,624685919,FR
+624685920,624685923,ES
+624685924,624686627,FR
+624686628,624686631,ES
+624686632,624686667,FR
+624686668,624686671,ES
+624686672,624686711,FR
+624686712,624686719,ES
+624686720,624686783,FR
624686784,624686815,ES
-624686816,624687343,FR
+624686816,624686895,FR
+624686896,624686911,IE
+624686912,624687343,FR
624687344,624687346,CZ
-624687347,624689076,FR
+624687347,624687347,ES
+624687348,624687783,FR
+624687784,624687791,PT
+624687792,624687827,FR
+624687828,624687831,ES
+624687832,624688007,FR
+624688008,624688015,ES
+624688016,624688031,GB
+624688032,624688307,FR
+624688308,624688311,ES
+624688312,624688315,FR
+624688316,624688319,GB
+624688320,624688435,FR
+624688436,624688439,IE
+624688440,624688443,ES
+624688444,624688487,FR
+624688488,624688491,ES
+624688492,624688495,GB
+624688496,624688639,FR
+624688640,624688643,ES
+624688644,624688663,FR
+624688664,624688671,ES
+624688672,624688691,FR
+624688692,624688695,ES
+624688696,624688775,FR
+624688776,624688779,PL
+624688780,624688783,ES
+624688784,624688791,FR
+624688792,624688795,ES
+624688796,624688831,FR
+624688832,624688835,ES
+624688836,624689071,FR
+624689072,624689075,ES
+624689076,624689076,FR
624689077,624689078,BE
624689079,624689151,FR
624689152,624691199,DE
@@ -6998,7 +9177,8 @@
624723968,624726015,BG
624726016,624728063,PS
624728064,624730111,FR
-624730112,624732159,DK
+624730112,624731135,DK
+624731136,624732159,US
624732160,624734207,DE
624734208,624736255,RU
624736256,624738303,FR
@@ -7019,7 +9199,8 @@
624799744,624801791,RU
624801792,624803839,AT
624803840,624812031,DE
-624812032,624814079,IL
+624812032,624813055,US
+624813056,624814079,IL
624814080,624816127,GB
624816128,624818175,FR
624818176,624820223,ES
@@ -7039,18 +9220,22 @@
625512448,625514495,DE
625514496,625516543,GG
625516544,625518591,BE
-625518592,625520447,PL
-625520448,625520479,US
-625520480,625520639,PL
+625518592,625518847,NL
+625518848,625519103,US
+625519104,625520135,NL
+625520136,625520511,US
+625520512,625520639,NL
625520640,625522687,RU
-625522688,625523455,EE
+625522688,625523455,SE
625523456,625523711,NO
-625523712,625523967,EE
+625523712,625523967,SE
625523968,625524223,GR
-625524224,625524735,EE
+625524224,625524735,SE
625524736,625541119,FR
625541120,625606655,UA
-625606656,625672191,NL
+625606656,625616127,NL
+625616128,625616383,GB
+625616384,625672191,NL
625672192,625674239,RU
625674240,625676287,TR
625676288,625680383,MD
@@ -7073,7 +9258,9 @@
625786880,625795071,PS
625795072,625803263,SA
625803264,625811455,TR
-625811456,625815551,FR
+625811712,625811967,FR
+625812224,625812479,FR
+625814272,625815551,FR
625815552,625817599,IQ
625817600,625817911,NL
625817912,625817915,GB
@@ -7121,7 +9308,7 @@
627572736,627834879,SA
627834880,627965951,PL
627965952,628006911,RU
-628006912,628015103,JO
+628006912,628015103,GE
628015104,628017151,FR
628017152,628019199,CH
628019200,628021247,UZ
@@ -7172,11 +9359,19 @@
628847360,628847615,FR
628847616,628848639,GB
628848640,628850687,DE
-628850688,628852723,NO
+628850688,628850943,NO
+628850944,628851486,SE
+628851487,628851487,NO
+628851488,628851489,SE
+628851490,628851490,NO
+628851491,628852479,SE
+628852480,628852607,NO
+628852608,628852671,SE
+628852672,628852723,NO
628852724,628852727,SE
628852728,628852735,NO
628852736,628867071,SE
-628867072,628869119,IR
+628867072,628869119,AU
628869120,628871167,PL
628871168,628873215,US
628873216,628875263,RU
@@ -7206,7 +9401,9 @@
629313536,629315583,ES
629315584,629317631,IT
629317632,629325823,FI
-629325824,629327871,RU
+629325824,629326591,US
+629326592,629326847,RU
+629326848,629327871,US
629327872,629329919,IR
629329920,629331967,ES
629331968,629334015,IT
@@ -7270,9 +9467,7 @@
629991424,629993471,NL
629993472,629997567,JO
629997568,630063103,SA
-630063104,630073479,IL
-630073480,630073487,FR
-630073488,630128639,IL
+630063104,630128639,IL
630128640,630130687,BE
630130688,630136831,RU
630136832,630138879,NL
@@ -7313,9 +9508,11 @@
630720512,630722559,NL
630722560,630726655,PL
630726656,630732799,GB
-630732800,630734847,SE
+630732800,630734079,SE
+630734080,630734847,US
630734848,630736895,IS
-630736896,630738943,TR
+630736896,630737919,TR
+630737920,630738943,NL
630738944,630743039,ES
630743040,630751231,SK
630751232,630759423,ES
@@ -7332,12 +9529,13 @@
630818048,630818303,RO
630818304,630818431,CN
630818432,630818559,KR
-630818560,630819327,RO
+630818560,630818815,IT
+630818816,630819327,RO
630819328,630819839,SE
630819840,630820095,GR
630820096,630820351,RO
630820352,630820607,ES
-630820608,630820863,US
+630820608,630820863,RO
630820864,630822911,GR
630822912,630824959,RO
630824960,630827007,GR
@@ -7353,7 +9551,9 @@
630982272,630982399,KR
630982400,630982655,RO
630982656,630988799,IR
-630988800,630990335,RO
+630988800,630989311,RO
+630989312,630989567,PL
+630989568,630990335,RO
630990336,630990847,JE
630990848,630992895,RO
630992896,630996991,IR
@@ -7363,17 +9563,15 @@
630998272,630998783,MD
630998784,630999039,RO
630999040,630999295,CN
-630999296,630999551,RO
-630999552,630999679,GB
-630999680,631000063,RO
+630999296,631000063,GB
631000064,631001087,ES
631001088,631005183,DE
631005184,631006207,IT
631006208,631007231,IR
631007232,631007487,KR
-631007488,631007743,RO
+631007488,631007743,IQ
631007744,631007871,GB
-631007872,631008255,RO
+631007872,631008255,IQ
631008256,631009279,ES
631009280,631018495,IR
631018496,631019519,IT
@@ -7385,17 +9583,17 @@
631025664,631026687,IR
631026688,631027711,RO
631027712,631027967,KR
-631027968,631028223,RO
+631027968,631028223,CZ
631028224,631028351,GB
-631028352,631028735,RO
+631028352,631028735,US
631028736,631029759,ES
631029760,631033855,SE
631033856,631034879,IT
631034880,631035903,IR
631035904,631036159,JP
-631036160,631036415,NC
+631036160,631036415,LT
631036416,631036543,GB
-631036544,631037951,NC
+631036544,631037951,LT
631037952,631038207,BG
631038208,631038975,RO
631038976,631039999,NL
@@ -7429,7 +9627,9 @@
631177216,631242751,IT
631242752,631408581,FR
631408582,631408582,RE
-631408583,632291327,FR
+631408583,631824425,FR
+631824426,631824426,BE
+631824427,632291327,FR
632291328,632815615,IT
632815616,632946687,BE
632946688,632954879,AT
@@ -7438,9 +9638,15 @@
632979456,633012223,IT
633012224,633059983,FR
633059984,633059987,GB
-633059988,633062504,FR
-633062505,633062506,BE
-633062507,633063679,FR
+633059988,633060359,FR
+633060360,633060367,ES
+633060368,633060423,FR
+633060424,633060427,CZ
+633060428,633061247,FR
+633061248,633061311,NL
+633061312,633062463,FR
+633062464,633062527,BE
+633062528,633063679,FR
633063680,633063935,PL
633063936,633064191,FR
633064192,633064447,GB
@@ -7452,12 +9658,19 @@
633065472,633065727,GB
633065728,633065983,DE
633065984,633066239,FR
-633066240,633066495,ES
-633066496,633066751,FR
+633066240,633066751,ES
633066752,633067007,IT
-633067008,633069251,FR
+633067008,633067455,FR
+633067456,633067471,ES
+633067472,633068695,FR
+633068696,633068703,ES
+633068704,633068735,FR
+633068736,633068799,BE
+633068800,633069251,FR
633069252,633069255,ES
-633069256,633074760,FR
+633069256,633069263,FR
+633069264,633069271,ES
+633069272,633074760,FR
633074761,633074761,ES
633074762,633077759,FR
633077760,633094143,RU
@@ -7502,10 +9715,10 @@
634109952,634111999,IE
634112000,634114047,RU
634114048,634114303,FR
-634114304,634114559,EE
+634114304,634114559,SE
634114560,634114815,FR
634114816,634115071,FI
-634115072,634115839,EE
+634115072,634115839,SE
634115840,634116095,IT
634116096,634118143,NL
634118144,634122239,IT
@@ -7548,18 +9761,17 @@
634507264,634511359,GB
634511360,634517503,RU
634517504,634519551,LB
-634519552,634639103,QA
-634639104,634639359,AE
-634639360,634650623,QA
+634519552,634650623,QA
634650624,634912767,BY
634912768,635043839,SA
635043840,635076607,ES
635076608,635092991,KG
-635092992,635097087,TR
+635092992,635097087,CY
635097088,635101183,PS
635101184,635103231,AE
635103232,635105279,HU
-635105280,635107327,NL
+635105280,635106815,NL
+635107072,635107327,NL
635107328,635109375,DE
635109376,635174911,FI
635174912,635183103,GB
@@ -7568,7 +9780,23 @@
635187200,635191295,FR
635191296,635195391,RS
635195392,635197439,RU
-635197440,635203583,GB
+635197440,635199775,GB
+635199776,635199783,IT
+635199784,635200167,GB
+635200168,635200175,IT
+635200176,635200335,GB
+635200336,635200343,IT
+635200344,635200631,GB
+635200632,635200639,IT
+635200640,635200727,GB
+635200728,635200735,IT
+635200736,635200847,GB
+635200848,635200855,IT
+635200856,635201159,GB
+635201160,635201167,IT
+635201168,635201295,GB
+635201296,635201303,IT
+635201304,635203583,GB
635203584,635207679,JO
635207680,635211775,HU
635211776,635213823,NL
@@ -7620,62 +9848,44 @@
635846656,635854847,ES
635854848,635856895,NL
635856896,635858943,TR
-635858944,635860991,LU
+635858944,635860479,RU
+635860480,635860991,NL
635860992,635863039,BE
635863040,635863551,GB
635863552,635864063,NL
-635864064,635864319,IQ
-635864320,635864575,RU
+635864064,635864319,IT
+635864320,635864575,SI
635864576,635864831,LB
635864832,635865087,ES
635865088,635865855,RU
-635865856,635866111,NL
-635866112,635866367,RU
-635866368,635867135,NL
-635867136,635867391,RU
-635867392,635867647,NL
-635867648,635868415,RU
-635868416,635870463,NL
-635870464,635870719,RU
-635870720,635870975,NL
-635870976,635871231,RU
-635871232,635873279,NL
-635873280,635873791,LU
-635873792,635874303,SE
+635865856,635866111,US
+635866112,635871487,RU
+635871488,635871743,UA
+635871744,635873279,RU
+635873280,635873535,LU
+635873536,635873791,US
+635873792,635874047,SE
+635874048,635874303,AR
635874304,635874815,SG
-635874816,635875327,FR
-635875328,635875839,IT
-635875840,635876351,CH
+635874816,635875071,FR
+635875072,635875327,US
+635875328,635875583,IT
+635875584,635876095,US
+635876096,635876351,CH
635876352,635876863,DK
635876864,635877119,MY
635877120,635877375,BN
635877376,635877631,NO
635877632,635877887,JP
635877888,635878143,ES
-635878144,635878399,BO
+635878144,635878399,US
635878400,635878655,RU
-635878656,635878911,AM
+635878656,635878911,US
635878912,635879167,FI
635879168,635879423,AT
-635879424,635881983,NL
-635881984,635882495,RU
-635882496,635883007,NL
-635883008,635883775,RU
-635883776,635888639,NL
-635888640,635888895,RU
-635888896,635890687,NL
-635890688,635891199,RU
-635891200,635892223,NL
-635892224,635892735,RU
-635892736,635892991,NL
-635892992,635893247,RU
-635893248,635893503,NL
-635893504,635893759,RU
-635893760,635894527,NL
+635879424,635894527,RU
635894528,635894783,KZ
-635894784,635895295,RU
-635895296,635895551,NL
-635895552,635895807,RU
+635894784,635895807,RU
635895808,635961343,KW
635961344,635994111,GE
635994112,636026879,RU
@@ -7731,15 +9941,13 @@
636952576,636956671,NL
636956672,636958719,IT
636958720,636960767,PL
-636960768,636965631,DE
-636965632,636965887,BE
-636965888,636966655,DE
-636966656,636966911,IT
+636960768,636965887,DE
+636965888,636966911,IT
636966912,636967167,DE
-636967168,636967423,FR
-636967424,636967679,DE
-636967680,636967935,FR
-636967936,636968455,DE
+636967168,636967935,FR
+636967936,636968191,DE
+636968192,636968447,ES
+636968448,636968455,DE
636968456,636968456,BE
636968457,636968959,DE
636968960,636974079,TR
@@ -7750,23 +9958,25 @@
637140992,637206527,SE
637206528,637239295,NL
637239296,637251583,RO
-637251584,637251839,GB
+637251584,637251839,US
637251840,637252095,AU
-637252096,637255167,GB
+637252096,637255167,US
637255168,637255423,AU
-637255424,637255679,GB
+637255424,637255679,US
637255680,637257727,RO
-637257728,637257983,GB
+637257728,637257983,US
637257984,637258239,AU
-637258240,637259775,GB
+637258240,637259775,US
637259776,637263871,RO
637263872,637267967,DE
-637267968,637268735,GB
+637267968,637268735,US
637268736,637268991,AU
-637268992,637270015,GB
+637268992,637270015,US
637270016,637272063,RO
637272064,637272831,RU
-637272832,637275135,GB
+637272832,637274111,DE
+637274112,637274623,SE
+637274624,637275135,DE
637275136,637275391,RU
637275392,637276159,NL
637276160,637278207,RU
@@ -7786,10 +9996,10 @@
637326080,637326335,DE
637326336,637326591,HK
637326592,637326847,AU
-637326848,637327359,NO
-637329408,637329663,AT
-637329664,637329919,FR
-637329920,637330175,AT
+637326848,637327103,JP
+637327104,637327359,NO
+637329408,637329663,SI
+637329664,637330175,FR
637330176,637330431,DE
637330432,637330943,JP
637330944,637331199,GB
@@ -7808,7 +10018,9 @@
637335296,637335551,BG
637335552,637335807,DE
637335808,637336063,HK
-637336064,637336831,AT
+637336064,637336319,AT
+637336320,637336575,CL
+637336576,637336831,AT
637336832,637337087,IT
637337088,637337599,RU
637337600,637403135,NO
@@ -7817,30 +10029,32 @@
638730240,638738431,CA
638738432,638754815,US
638754816,638763007,CA
-638763008,639242239,US
+638763008,638914559,US
+638914560,638918655,CA
+638918656,639242239,US
639242240,639246335,CA
639246336,639320063,US
639320064,639328255,CA
639328256,639442943,US
-639442944,639451135,CA
-639451136,641738239,US
+639442944,639444991,CA
+639444992,641738239,US
641738240,641738495,CA
641738496,641761535,US
641761536,641761791,CA
641761792,641763327,US
641763328,641764351,CA
641764352,641765375,US
-641765376,641767423,CA
+641765376,641765887,CA
+641765888,641766015,US
+641766016,641767423,CA
641767424,641769471,US
641769472,641769727,CA
641769728,641770495,US
-641770496,641772031,CA
-641772032,641772287,US
-641772288,641772543,CA
+641770496,641771903,CA
+641771904,641772031,US
+641772032,641772543,CA
641772544,641773055,US
-641773056,641773567,CA
-641773568,641774079,US
-641774080,641774641,CA
+641773056,641774641,CA
641774642,641774642,US
641774643,641776639,CA
641776640,641777663,US
@@ -7850,30 +10064,36 @@
641778688,641779199,US
641779200,641779327,CA
641779328,641779711,US
-641779712,641781759,CA
-641781760,641789951,US
-641789952,641790975,CA
+641779712,641783807,CA
+641783808,641790463,US
+641790464,641790975,CA
641790976,641791999,US
-641792000,641793023,CA
-641793024,641828863,US
-641828864,641829375,MX
+641792000,641794047,CA
+641794048,641826815,US
+641826816,641827839,MX
+641827840,641828351,US
+641828352,641829375,MX
641829376,641829887,US
-641829888,641832959,MX
-641832960,642093055,US
-642093056,642095103,CA
-642095104,642096127,US
-642096128,642096639,CA
+641829888,641837055,MX
+641837056,642091519,US
+642091520,642092031,CA
+642092032,642095103,US
+642095104,642096639,CA
642096640,642097151,US
-642097152,642105343,CA
-642105344,642113535,US
+642097152,642101247,CA
+642101248,642113535,US
642113536,642115583,AU
642115584,642385919,US
642385920,642400255,CA
642400256,642793471,US
642793472,642794495,CA
-642794496,642799615,US
+642794496,642797567,US
+642797568,642797823,CA
+642797824,642799615,US
642799616,642801663,CA
-642801664,643219519,US
+642801664,642806015,US
+642806016,642806271,CA
+642806272,643219519,US
643219520,643219523,CA
643219524,643219526,US
643219527,643219527,CA
@@ -7886,10 +10106,8 @@
643294208,643294719,US
643294720,643294975,RU
643294976,643295231,DE
-643295232,643295487,PR
-643295488,643295743,US
-643295744,643296767,PR
-643296768,643299583,US
+643295232,643297279,PR
+643297280,643299583,US
643299584,643299839,HK
643299840,643302911,US
643302912,643303423,CA
@@ -7897,7 +10115,11 @@
643317760,643330047,CA
643330048,643346431,US
643346432,643346943,CA
-643346944,644051967,US
+643346944,643362815,US
+643362816,643363327,CA
+643363328,643691519,US
+643691520,643691775,VI
+643691776,644051967,US
644051968,644052479,MF
644052480,644052735,GP
644052736,644052991,MF
@@ -7906,7 +10128,9 @@
644057600,644058111,US
644058112,644059647,CA
644059648,644060159,US
-644060160,644061631,CA
+644060160,644061183,CA
+644061184,644061439,US
+644061440,644061631,CA
644061632,644061663,US
644061664,644062975,CA
644062976,644063231,US
@@ -7918,12 +10142,14 @@
644066816,644067072,US
644067073,644067073,CA
644067074,644067327,US
-644067328,644071423,CA
-644071424,644072805,US
+644067328,644071679,CA
+644071680,644072805,US
644072806,644072806,CA
-644072807,644084479,US
-644084480,644084607,GU
-644084608,644210431,US
+644072807,644084223,US
+644084224,644084735,GU
+644084736,644207359,US
+644207360,644207391,NL
+644207392,644210431,US
644210432,644210687,MX
644210688,644239615,US
644239616,644239871,CA
@@ -7935,72 +10161,92 @@
644268571,644268613,CA
644268614,644268614,US
644268615,644268799,CA
-644268800,644321279,US
-644321280,644325375,CA
+644268800,644323327,US
+644323328,644323839,CA
+644323840,644324095,US
+644324096,644325375,CA
644325376,644388863,US
644388864,644390911,CA
644390912,644399103,US
644399104,644399359,CA
644399360,644403199,US
644403200,644403455,CA
-644403456,644413439,US
+644403456,644403583,US
+644403584,644403695,CA
+644403696,644403703,US
+644403704,644403711,CA
+644403712,644407807,US
+644407808,644408319,CA
+644408320,644413439,US
644413440,644413951,MX
644413952,644414463,CA
644414464,644422911,US
644422912,644423423,JP
644423424,644569087,US
-644569088,644570111,PR
-644570112,644570367,US
-644570368,644570623,PR
-644570624,644582399,US
+644569088,644571135,PR
+644571136,644582399,US
644582400,644582655,CA
-644582656,644628799,US
-644628800,644628807,CA
-644628808,644629759,US
+644582656,644582911,US
+644582912,644583167,CA
+644583168,644628735,US
+644628736,644629503,CA
+644629504,644629759,US
644629760,644630015,CA
644630016,644630527,US
644630528,644631551,CA
-644631552,644635647,US
-644635648,644636671,CA
+644631552,644633087,US
+644633088,644633599,CA
+644633600,644634623,US
+644634624,644636671,CA
644636672,644718719,US
644718720,644718783,CA
644718784,644718847,US
644718848,644718943,CA
-644718944,644720127,US
+644718944,644719359,US
+644719360,644719615,CA
+644719616,644720127,US
644720128,644720639,CA
644720640,644759551,US
-644759552,644761599,CA
-644761600,644763647,US
-644763648,644765695,CA
-644765696,644767878,US
-644767879,644767879,CA
-644767880,644773887,US
+644759552,644759807,CA
+644759808,644760575,US
+644760576,644761599,CA
+644761600,644763135,US
+644763136,644763391,CA
+644763392,644763647,US
+644763648,644771839,CA
+644771840,644772607,US
+644772608,644772863,CA
+644772864,644773887,US
644773888,644775935,CA
644775936,644833279,US
644833280,644834815,CA
-644834816,644835071,US
+644834816,644834817,US
+644834818,644834818,CA
+644834819,644835071,US
644835072,644835327,CA
-644835328,644838143,US
-644838144,644841471,CA
+644835328,644836351,US
+644836352,644837375,CA
+644837376,644837887,US
+644837888,644841471,CA
644841472,644845839,US
644845840,644845840,RU
644845841,644845841,US
644845842,644845855,RU
644845856,644845863,US
644845864,644846079,RU
-644846080,644874751,US
-644874752,644875263,CA
-644875264,644877311,US
-644877312,644877439,CA
+644846080,644874495,US
+644874496,644874751,CA
+644874752,644875007,US
+644875008,644875263,CA
+644875264,644876799,US
+644876800,644877439,CA
644877440,644896767,US
-644896768,644902911,CA
-644902912,644981759,US
+644896768,644907007,CA
+644907008,644981759,US
644981760,644982399,CA
644982400,644982527,US
-644982528,644982783,CA
-644982784,644983295,US
-644983296,644983551,CA
-644983552,644986111,US
+644982528,644984831,CA
+644984832,644986111,US
644986112,644986367,CA
644986368,644987135,US
644987136,644987903,CA
@@ -8008,20 +10254,22 @@
645185536,645185791,CA
645185792,645186559,US
645186560,645187583,CA
-645187584,645221375,US
-645221376,645222399,CA
-645222400,645224959,US
+645187584,645221119,US
+645221120,645222399,CA
+645222400,645222655,US
+645222656,645222911,CA
+645222912,645224959,US
645224960,645225215,CA
645225216,645225471,US
645225472,645225983,CA
-645225984,645228031,US
-645228032,645228287,CA
-645228288,645480447,US
-645480448,645481471,CA
-645481472,645481727,US
-645481728,645481983,CA
-645481984,645482239,US
-645482240,645482495,AU
+645225984,645227519,US
+645227520,645228287,CA
+645228288,645228543,US
+645228544,645228799,CA
+645228800,645229567,US
+645229568,645230079,CA
+645230080,645480447,US
+645480448,645482495,CA
645482496,645483775,US
645483776,645484031,CA
645484032,645484543,US
@@ -8029,32 +10277,39 @@
645488640,645525503,US
645525504,645529599,CA
645529600,645539839,US
-645539840,645540863,CA
-645540864,645547007,US
-645547008,645548031,CA
-645548032,645576703,US
+645539840,645540351,MX
+645540352,645540863,CA
+645540864,645547391,US
+645547392,645547519,CA
+645547520,645561343,US
+645561344,645561471,MX
+645561472,645576703,US
645576704,645576997,CA
645576998,645576998,US
645576999,645577215,CA
645577216,645611519,US
-645611520,645615615,MX
+645611520,645612799,MX
+645612800,645613055,US
+645613056,645614079,MX
+645614080,645614591,US
+645614592,645615615,MX
645615616,645644351,US
645644352,645644415,MX
645644416,645644927,US
645644928,645645055,MX
645645056,645646335,US
-645646336,645646847,MX
-645646848,645647615,US
-645647616,645647871,MX
-645647872,645703679,US
+645646336,645648383,MX
+645648384,645703679,US
645703680,645705727,MX
645705728,645709823,US
645709824,645718015,MX
-645718016,645873663,US
+645718016,645744639,US
+645744640,645746687,IT
+645746688,645873663,US
645873664,645877759,CA
645877760,645980159,US
-645980160,645982719,CA
-645982720,645984255,US
+645980160,645983231,CA
+645983232,645984255,US
645984256,645988351,CA
645988352,645989450,US
645989451,645989451,CA
@@ -8066,40 +10321,44 @@
646084608,646086655,CA
646086656,646160383,US
646160384,646164479,CA
-646164480,646166527,US
-646166528,646168575,CA
+646164480,646165503,US
+646165504,646168575,CA
646168576,646194175,US
646194176,646194943,CA
-646194944,646195560,US
-646195561,646195561,CA
-646195562,646197247,US
+646194944,646195199,US
+646195200,646195711,CA
+646195712,646197247,US
646197248,646198783,CA
-646198784,646199384,US
-646199385,646199385,CA
-646199386,646250495,US
+646198784,646199295,US
+646199296,646201343,CA
+646201344,646250495,US
646250496,646258687,CA
646258688,646262783,US
646262784,646264831,CA
646264832,646711807,US
646711808,646712319,CA
-646712320,646734847,US
+646712320,646721023,US
+646721024,646721535,CA
+646721536,646734847,US
646734848,646735359,CA
646735360,646765567,US
-646765568,646765887,CA
-646765888,646766079,US
-646766080,646766591,CA
+646765568,646765951,CA
+646765952,646766015,US
+646766016,646766591,CA
646766592,646840319,US
646840320,646841343,CA
-646841344,654311423,US
+646841344,646855679,US
+646855680,646856703,CA
+646856704,646862847,US
+646862848,646863871,CA
+646863872,654311423,US
654311424,654311679,CN
654311680,654311935,AU
654311936,654376959,CN
654376960,654442495,TW
654442496,654573567,JP
654573568,654835711,KR
-654835712,654999551,TW
-654999552,655001599,CN
-655001600,655359999,TW
+654835712,655359999,TW
655360000,656408575,KR
656408576,658505727,PK
658505728,661454847,CN
@@ -8154,7 +10413,14 @@
675454400,675454463,AU
675454464,675454719,NL
675454720,675454847,AT
-675454848,675463167,US
+675454848,675455359,US
+675455360,675455487,JP
+675455488,675455615,GB
+675455616,675455743,AT
+675455744,675455871,NL
+675455872,675455999,FI
+675456000,675456255,ZA
+675456256,675463167,US
675463168,675463295,KR
675463296,675463423,US
675463424,675463807,KR
@@ -8202,15 +10468,12 @@
676195328,676195359,IE
676195360,676249599,US
676249600,676251647,IN
-676251648,676253731,US
-676253732,676254207,AU
+676251648,676254207,US
676254208,676254463,NL
676254464,676254719,IE
676254720,676254975,FI
676254976,676255231,AT
-676255232,676255487,US
-676255488,676255743,AU
-676255744,676257535,US
+676255232,676257535,US
676257536,676257791,SG
676257792,676259839,US
676259840,676261887,SG
@@ -8222,7 +10485,7 @@
676313088,676317183,JP
676317184,676317439,MY
676317440,676317951,GB
-676317952,676319231,IE
+676317952,676319231,US
676319232,676319743,JP
676319744,676319999,HK
676320000,676320511,AU
@@ -8233,7 +10496,7 @@
676322048,676322303,IN
676322304,676322815,KR
676322816,676323327,FR
-676323328,676331519,IE
+676323328,676331519,US
676331520,676332543,GB
676332544,676333567,FI
676333568,676334591,MY
@@ -8242,9 +10505,7 @@
676338688,676339711,AT
676339712,676341759,KR
676341760,676343807,CA
-676343808,676347903,NL
-676347904,676368383,JP
-676368384,676388863,US
+676343808,676388863,US
676388864,676392959,KR
676392960,676397055,CA
676397056,676401151,US
@@ -8255,16 +10516,19 @@
676421632,676442111,GB
676442112,676454399,JP
676454400,676462591,IN
-676462592,676463103,US
-676463104,676463615,NL
-676463616,676464639,US
-676464640,676495359,NL
+676462592,676465663,US
+676465664,676466687,AU
+676466688,676469759,US
+676469760,676470783,SG
+676470784,676471807,AU
+676471808,676495359,US
676495360,676503551,KR
676503552,676511743,CA
676511744,676519935,AU
676519936,676524031,FR
-676524032,676528127,NL
-676528128,676544511,US
+676524032,676525055,US
+676525056,676526079,AU
+676526080,676544511,US
676544512,676560895,HK
676560896,676659199,US
676659200,676696063,IE
@@ -8288,11 +10552,18 @@
676929536,676954111,US
676954112,676970495,FR
676970496,676978687,KR
-676978688,677020095,US
+676978688,677019647,US
+677019648,677019663,CA
+677019664,677020095,US
677020096,677020127,IE
677020128,677020159,US
677020160,677020191,NL
-677020192,677020351,US
+677020192,677020207,AU
+677020208,677020239,US
+677020240,677020255,AU
+677020256,677020271,US
+677020272,677020303,GB
+677020304,677020351,US
677020352,677020367,CA
677020368,677020383,AU
677020384,677020399,IN
@@ -8302,7 +10573,9 @@
677020544,677020607,KR
677020608,677020671,US
677020672,677020719,FR
-677020720,677020927,US
+677020720,677020735,US
+677020736,677020751,JP
+677020752,677020927,US
677020928,677020959,NL
677020960,677020991,BR
677020992,677021023,IE
@@ -8310,7 +10583,8 @@
677021056,677021087,SG
677021088,677021759,US
677021760,677021855,FR
-677021856,677021887,US
+677021856,677021871,US
+677021872,677021887,IE
677021888,677021919,FR
677021920,677021951,US
677021952,677021983,JP
@@ -8340,7 +10614,18 @@
677023136,677023167,NL
677023168,677023199,US
677023200,677023231,SG
-677023232,677023935,US
+677023232,677023263,JP
+677023264,677023295,US
+677023296,677023327,AU
+677023328,677023391,US
+677023392,677023423,AU
+677023424,677023455,JP
+677023456,677023471,NL
+677023472,677023519,US
+677023520,677023583,GB
+677023584,677023647,US
+677023648,677023679,CA
+677023680,677023935,US
677023936,677023967,NL
677023968,677023999,BR
677024000,677024031,IE
@@ -8349,7 +10634,9 @@
677024160,677024191,US
677024192,677024223,NL
677024224,677024255,IE
-677024256,677024383,US
+677024256,677024271,US
+677024272,677024287,NL
+677024288,677024383,US
677024384,677024415,NL
677024416,677024447,SG
677024448,677024479,US
@@ -8359,11 +10646,23 @@
677024576,677024607,AU
677024608,677024639,IN
677024640,677024767,FR
-677024768,677027839,US
+677024768,677024927,US
+677024928,677024943,IE
+677024944,677024991,US
+677024992,677025023,JP
+677025024,677025055,US
+677025056,677025087,AU
+677025088,677025151,US
+677025152,677025279,IE
+677025280,677025311,AU
+677025312,677025343,US
+677025344,677025407,GB
+677025408,677025535,NL
+677025536,677025631,US
+677025632,677025663,CA
+677025664,677027839,US
677027840,677036031,SG
-677036032,677054463,US
-677054464,677054719,PR
-677054720,677057535,US
+677036032,677057535,US
677057536,677058559,IE
677058560,677059583,US
677059584,677060607,NL
@@ -8379,7 +10678,11 @@
677135872,677136127,NL
677136128,677136383,IE
677136384,677136639,AT
-677136640,677182975,US
+677136640,677136895,FI
+677136896,677137151,IE
+677137152,677137407,AT
+677137408,677137919,FR
+677137920,677182975,US
677182976,677183231,KR
677183232,677199871,US
677199872,677200127,IE
@@ -8391,7 +10694,11 @@
677201408,677201663,NL
677201664,677201919,IE
677201920,677202175,AT
-677202176,677248511,US
+677202176,677202431,FI
+677202432,677202687,IE
+677202688,677202943,AT
+677202944,677203455,FR
+677203456,677248511,US
677248512,677248767,KR
677248768,677380095,US
677380096,677380127,AU
@@ -8655,8 +10962,7 @@
677776384,677781503,US
677781504,677783551,CL
677783552,677784575,ZA
-677784576,677785599,PR
-677785600,677838847,US
+677784576,677838847,US
677838848,677838863,NL
677838864,677838879,IE
677838880,677838895,FI
@@ -8926,70 +11232,63 @@
677853952,677853967,AT
677853968,677853983,IE
677853984,677853999,FI
-677854000,677854031,NL
-677854032,677854047,FI
-677854048,677854063,IE
-677854064,677854079,AT
-677854080,677854095,NL
-677854096,677854111,FI
-677854112,677854127,IE
-677854128,677854143,AT
-677854144,677854159,NL
+677854000,677854015,NL
+677854016,677854159,US
677854160,677854175,FI
-677854176,677854191,IE
-677854192,677854207,AT
-677854208,677854223,NL
-677854224,677854239,FI
-677854240,677854255,IE
-677854256,677854271,AT
-677854272,677854287,NL
+677854176,677854287,US
677854288,677854303,FI
-677854304,677854319,IE
-677854320,677854335,AT
-677854336,677854975,US
-677854976,677854991,KR
-677854992,677855007,HK
-677855008,677855023,SG
-677855024,677855039,MY
-677855040,677855055,KR
-677855056,677855071,HK
-677855072,677855087,SG
-677855088,677855103,MY
-677855104,677855119,KR
-677855120,677855135,HK
-677855136,677855151,SG
-677855152,677855167,MY
-677855168,678100991,US
+677854304,678100991,US
678100992,678101247,NL
678101248,678101503,FI
678101504,678101759,AT
678101760,678102015,NL
678102016,678102271,IE
678102272,678102527,AT
-678102528,678103551,US
-678103552,678104063,GB
+678102528,678102783,IE
+678102784,678103039,FI
+678103040,678103295,AT
+678103296,678103807,FR
+678103808,678104063,GB
678104064,678117887,US
678117888,678118399,CA
678118400,678150143,US
678150144,678150399,FI
678150400,678150655,IE
678150656,678150911,FI
-678150912,678151167,US
-678151168,678151295,NL
-678151296,678152447,US
+678150912,678151167,AT
+678151168,678151423,NL
+678151424,678151679,FI
+678151680,678151935,FR
+678151936,678152191,US
+678152192,678152447,FI
678152448,678152703,AT
678152704,678153215,NL
-678153216,678158335,US
-678158336,678158847,KR
-678158848,678160127,US
+678153216,678153471,FI
+678153472,678153727,FR
+678153728,678153983,NL
+678153984,678158335,US
+678158336,678159103,KR
+678159104,678160127,US
678160128,678160383,HK
-678160384,678160639,KR
-678160640,678170623,US
+678160384,678160639,SG
+678160640,678160895,KR
+678160896,678170623,US
678170624,678170815,IE
678170816,678171007,NL
678171008,678171391,IE
678171392,678171775,NL
-678171776,678200831,US
+678171776,678174911,US
+678174912,678175103,IE
+678175104,678175295,NL
+678175296,678177791,US
+678177792,678178175,IE
+678178176,678178367,US
+678178368,678178751,NL
+678178752,678181103,US
+678181104,678181199,IE
+678181200,678181247,US
+678181248,678181343,NL
+678181344,678200831,US
678200832,678201087,BR
678201088,678202111,US
678202112,678202367,NL
@@ -9036,7 +11335,8 @@
678223616,678224127,US
678224128,678224639,IE
678224640,678224895,JP
-678224896,678225407,US
+678224896,678225151,HK
+678225152,678225407,GB
678225408,678225663,NL
678225664,678225919,IE
678225920,678226175,GB
@@ -9052,7 +11352,23 @@
678228992,678229247,IE
678229248,678229503,HK
678229504,678229759,SG
-678229760,678428671,US
+678229760,678230271,US
+678230272,678230527,AU
+678230528,678230783,US
+678230784,678231039,NL
+678231040,678231295,IE
+678231296,678231551,BR
+678231552,678231807,AU
+678231808,678232063,NL
+678232064,678248959,US
+678248960,678252031,IE
+678252032,678253567,US
+678253568,678256639,NL
+678256640,678290367,US
+678290368,678290751,IE
+678290752,678290943,US
+678290944,678291327,NL
+678291328,678428671,US
678428672,678436863,IE
678436864,678437887,US
678437888,678438015,IE
@@ -9075,9 +11391,24 @@
678641664,678649855,AU
678649856,678658047,IE
678658048,678690815,JP
-678690816,678821887,US
+678690816,678756351,US
+678756352,678764543,AU
+678764544,678821887,US
678821888,678854655,NL
-678854656,679313407,US
+678854656,678905855,US
+678905856,678907903,AE
+678907904,678908927,CH
+678908928,678920191,US
+678920192,678928383,NL
+678928384,678930431,US
+678930432,678936575,AE
+678936576,678952959,SG
+678952960,678955007,AE
+678955008,679198719,US
+679198720,679215103,AE
+679215104,679280639,US
+679280640,679297023,AE
+679297024,679313407,US
679313408,679346175,CN
679346176,679346431,US
679346432,679346687,IE
@@ -9089,8 +11420,7 @@
679349376,679349503,HK
679349504,679349759,JP
679349760,679350015,AU
-679350016,679350271,GB
-679350272,679350399,US
+679350016,679350399,GB
679350400,679350527,KR
679350528,679350655,BR
679350656,679351039,IN
@@ -9098,7 +11428,10 @@
679351296,679351551,KR
679351552,679362559,US
679362560,679378943,CN
-679378944,679403519,US
+679378944,679395327,AU
+679395328,679395839,AE
+679395840,679396095,CH
+679396096,679403519,US
679403520,679411711,AU
679411712,679428095,US
679428096,679436287,AU
@@ -9160,7 +11493,9 @@
692625408,692626687,KE
692626688,692626943,AO
692626944,692633599,KE
-692633600,692637135,MU
+692633600,692635135,MU
+692635136,692635647,KE
+692635648,692637135,MU
692637136,692637139,KE
692637140,692637903,MU
692637904,692637911,KE
@@ -9208,7 +11543,9 @@
692850688,692852735,LS
692852736,692854783,GH
692854784,692856831,ZA
-692856832,692858879,MU
+692856832,692857599,MU
+692857600,692857855,GB
+692857856,692858879,MU
692858880,692860927,UG
692860928,692862975,ZA
692862976,692869119,NG
@@ -9273,12 +11610,11 @@
692998144,692999167,NG
692999168,693000191,SL
693000192,693001215,NG
-693001216,693002239,BW
693002240,693002505,GA
693002506,693002506,CM
693002507,693003263,GA
693003264,693004287,NG
-693004288,693005311,CD
+693004288,693004543,CD
693005312,693006335,SD
693006336,693007359,ZM
693007360,693008383,NE
@@ -9289,7 +11625,7 @@
693013504,693014527,ZA
693014528,693015551,GH
693015552,693016575,EG
-693016576,693017599,GA
+693016576,693017087,GA
693017600,693018623,NG
693019648,693020671,ZA
693020672,693021695,TZ
@@ -9361,15 +11697,12 @@
693103616,693104639,GN
693104640,693105663,ZA
693105664,693106687,MZ
-693106688,693106951,TZ
-693106952,693106959,ZA
-693106960,693107711,TZ
+693106688,693107455,TZ
+693107456,693107711,ZA
693107712,693239807,KE
693239808,693370879,SN
693370880,693403647,ZA
-693403648,693411583,KE
-693411584,693411839,MU
-693411840,693420031,NG
+693403648,693411839,KE
693420032,693423103,UG
693423104,693424127,KE
693424128,693428223,UG
@@ -9379,9 +11712,7 @@
693485568,693493759,ZW
693493760,693501951,ZA
693501952,693510143,LR
-693510144,693511167,SC
-693511168,693511423,RU
-693511424,693518335,SC
+693510144,693518335,SC
693518336,693534719,ZA
693534720,693542911,NG
693542912,693551103,TZ
@@ -9471,8 +11802,8 @@
700341248,700342271,MW
700342272,700350463,NA
700350464,700351487,MU
-700351488,700352511,UG
-700352512,700358655,MU
+700351488,700353535,UG
+700353536,700358655,MU
700358656,700366847,MZ
700366848,700375039,UG
700375040,700376063,CM
@@ -9502,7 +11833,9 @@
700437504,700438527,MU
700438528,700439551,BW
700439552,700440575,GN
-700440576,700442623,MU
+700440576,700441835,MU
+700441836,700441839,KE
+700441840,700442623,MU
700442624,700444671,ZW
700444672,700446719,GH
700446720,700447743,SL
@@ -9569,9 +11902,8 @@
701382656,701390847,CI
701390848,701391871,MU
701391872,701392127,KE
-701392128,701392383,MU
-701392384,701392639,ZA
-701392640,701399039,MU
+701392128,701392383,TZ
+701392384,701399039,MU
701399040,701407231,EG
701407232,701423615,ZA
701431808,701439999,CI
@@ -9606,7 +11938,7 @@
701710336,701718527,MU
701718528,701726719,CM
701726720,701743103,GA
-701743104,701759487,NG
+701755392,701759487,NG
701759488,701792255,KE
701792256,701825023,MU
701825024,701857791,ZA
@@ -9619,7 +11951,6 @@
702001152,702005247,ZM
702005248,702009343,KE
702009344,702013439,CV
-702013440,702015487,KE
702015488,702017535,ZA
702017536,702018559,EG
702018560,702019583,NG
@@ -9637,7 +11968,9 @@
702066944,702067199,NL
702067200,702067711,PL
702067712,702068735,NL
-702068736,702069759,ZA
+702068736,702068991,ZA
+702068992,702069247,RU
+702069248,702069759,ZA
702069760,702070271,US
702070272,702070783,RU
702070784,702074879,ZA
@@ -9661,7 +11994,9 @@
702146560,702148607,UG
702148608,702150655,ZA
702152704,702169087,SD
-702169088,702181375,NA
+702169088,702173183,NA
+702173184,702175231,ZM
+702175232,702181375,NA
702181376,702185471,AO
702185472,702201855,EG
702201856,702218239,GH
@@ -9699,7 +12034,9 @@
702386176,702390271,ZW
702390272,702394367,NG
702394368,702398463,ML
-702398464,702402559,CV
+702398464,702400255,CV
+702400256,702400511,GB
+702400512,702402559,CV
702402560,702407167,ZA
702407168,702407423,BJ
702407424,702410751,ZA
@@ -9895,9 +12232,7 @@
713031680,714080255,CN
714080256,714604543,JP
714604544,714866687,MY
-714866688,714874879,CN
-714874880,714875903,MY
-714875904,716930047,CN
+714866688,716930047,CN
716930048,716931071,JP
716931072,716963839,CN
716963840,717225983,MY
@@ -9950,8 +12285,8 @@
736133120,736136191,IN
736136192,736137215,JP
736137216,736138239,CN
-736138240,736139263,HK
-736139264,736140287,SG
+736138240,736140032,HK
+736140033,736140287,SG
736140288,736141311,IN
736141312,736142335,CN
736142336,736143359,IN
@@ -9998,7 +12333,7 @@
736190464,736191487,PK
736191488,736193535,HK
736193536,736194559,MY
-736194560,736195583,NZ
+736194560,736195583,US
736195584,736196607,IN
736196608,736198655,CN
736198656,736199679,AU
@@ -10035,15 +12370,13 @@
736264192,736286719,CN
736286720,736287743,NZ
736287744,736288767,MV
-736288768,736289791,MY
736289792,736289919,KR
736289920,736290047,JP
736290048,736290303,AU
736290304,736290559,MY
736290560,736290815,KR
736290816,736291839,TW
-736291840,736300031,CN
-736300032,736301055,HK
+736291840,736301055,CN
736301056,736303103,IN
736303104,736304127,TW
736304128,736305151,HK
@@ -10073,7 +12406,9 @@
736389120,736390143,JP
736390144,736391167,LK
736391168,736392191,IN
-736392192,736394239,CN
+736392192,736392447,CN
+736392448,736392703,SC
+736392704,736394239,CN
736394240,736395007,SG
736395008,736395263,HK
736395264,736396287,MN
@@ -10392,7 +12727,7 @@
737359872,737361919,NZ
737361920,737364991,HK
737364992,737367039,IN
-737367040,737367807,GB
+737367040,737367807,US
737367808,737368063,DE
737368064,737369087,CN
737369088,737370111,HK
@@ -10536,7 +12871,7 @@
737618944,737620991,CN
737620992,737622015,IN
737622016,737623039,TH
-737623040,737624063,GU
+737623040,737624063,MP
737624064,737625087,AU
737625088,737626111,CN
737626112,737627135,CA
@@ -10600,8 +12935,7 @@
737753088,737757183,TH
737757184,737757439,JP
737757440,737757695,HK
-737757696,737757951,AU
-737757952,737758207,SG
+737757696,737758207,AU
737758208,737760255,HK
737760256,737761279,IN
737761280,737762303,HK
@@ -10699,7 +13033,9 @@
737882112,737883135,JP
737883136,737884159,AU
737884160,737886207,TW
-737886208,737887231,PH
+737886208,737886463,HK
+737886464,737886975,PH
+737886976,737887231,HK
737887232,737888255,KR
737888256,737889279,IN
737889280,737890303,HK
@@ -10724,8 +13060,8 @@
737912320,737912575,AU
737912576,737912703,SG
737912704,737912831,MY
-737912832,737915903,IN
-737915904,737916927,US
+737912832,737916159,IN
+737916160,737916927,US
737916928,737917951,JP
737917952,737918975,IN
737918976,737919999,CN
@@ -10739,7 +13075,6 @@
737931264,737932287,AU
737932288,737933311,CN
737933312,737934335,HK
-737934336,737935359,TH
737935360,737936383,AU
737936384,737937407,IN
737937408,737938431,ID
@@ -10757,11 +13092,7 @@
737951744,737953791,NZ
737953792,737954815,ID
737954816,737955839,AU
-737955840,737956351,US
-737956352,737956479,CH
-737956480,737956607,AT
-737956608,737956735,BE
-737956736,737956863,NL
+737955840,737956863,KH
737956864,737957887,HK
737957888,737959935,IN
737959936,737960959,AU
@@ -10776,7 +13107,7 @@
737971200,737972223,IN
737972224,737973247,ID
737973248,737974271,HK
-737974272,737975295,IN
+737974272,737975295,MY
737975296,737976319,ID
737976320,737981439,HK
737981440,737981695,US
@@ -10885,7 +13216,8 @@
738177024,738178047,CN
738178048,738179071,TW
738179072,738180095,CN
-738180096,738180607,HK
+738180096,738180351,JP
+738180352,738180607,HK
738180608,738180863,US
738180864,738181119,HK
738181120,738182143,CN
@@ -10906,9 +13238,15 @@
747175936,747241471,NL
747241472,747372543,US
747372544,747438079,SE
-747438080,747671807,US
+747438080,747634687,US
+747634688,747671807,BE
747671808,747672063,GB
-747672064,755105791,US
+747672064,747700223,BE
+747700224,750649855,US
+750649856,750650111,AT
+750650112,750651391,US
+750651392,750651647,AU
+750651648,755105791,US
755105792,755179519,CA
755179520,755236863,US
755236864,755237673,CL
@@ -10923,7 +13261,8 @@
755261952,755262463,BO
755262464,755263487,AR
755263488,755269631,BR
-755269632,755270655,HN
+755269632,755270143,HN
+755270144,755270655,US
755270656,755271679,BR
755271680,755272703,HN
755272704,755277823,BR
@@ -10931,7 +13270,8 @@
755279872,755280895,CL
755280896,755281919,HN
755281920,755287039,BR
-755287040,755288063,HN
+755287040,755287551,US
+755287552,755288063,HN
755288064,755289087,EC
755289088,755290111,HN
755290112,755292159,BR
@@ -10951,7 +13291,7 @@
755315712,755316735,MX
755316736,755317759,PE
755317760,755318783,CR
-755318784,755319807,HN
+755318784,755319807,US
755319808,755320831,PE
755320832,755321855,BR
755321856,755322879,HN
@@ -11047,9 +13387,11 @@
757088256,757096447,US
757096448,757104639,SG
757104640,757108223,US
-757108224,757108415,NL
-757108416,757108671,US
-757108672,757108735,NL
+757108224,757108287,NL
+757108288,757108351,US
+757108352,757108415,NL
+757108416,757108703,US
+757108704,757108735,NL
757108736,757110523,FR
757110524,757110524,TF
757110525,757110783,FR
@@ -11062,19 +13404,25 @@
757125120,757125151,NL
757125152,757125215,US
757125216,757125247,NL
-757125248,757125535,US
-757125536,757125631,NL
+757125248,757125599,US
+757125600,757125631,NL
757125632,757131263,US
757131264,757133311,NL
757133312,757135359,AU
757135360,757137407,JP
757137408,757176319,US
757176320,757176575,FR
-757176576,757186559,US
-757186560,757190655,CA
-757190656,757600255,US
+757176576,757178111,US
+757178112,757178367,IT
+757178368,757188607,US
+757188608,757189119,CA
+757189120,757600255,US
757600256,757604351,CA
-757604352,757612543,US
+757604352,757608447,US
+757608448,757609471,SG
+757609472,757610495,TH
+757610496,757611519,IN
+757611520,757612543,JP
757612544,757616639,CA
757616640,757645311,US
757645312,757645567,NZ
@@ -11085,9 +13433,11 @@
757662976,757686271,US
757686272,757694463,CA
757694464,757696255,US
-757696256,757696511,JP
+757696256,757696511,AU
757696512,757697535,DE
-757697536,757711871,US
+757697536,757699327,US
+757699328,757699583,TW
+757699584,757711871,US
757711872,757712127,AU
757712128,757714175,US
757714176,757714431,JP
@@ -11096,7 +13446,9 @@
757716992,757721599,US
757721600,757721855,PH
757721856,757727231,US
-757727232,757728255,VI
+757727232,757727487,VI
+757727488,757727743,US
+757727744,757728255,VI
757728256,757729279,US
757729280,757731327,CA
757731328,757733375,US
@@ -11185,7 +13537,12 @@
757789440,757789567,NP
757789568,757790975,US
757790976,757791231,WS
-757791232,757809151,US
+757791232,757800959,US
+757800960,757801983,HK
+757801984,757803007,TW
+757803008,757807871,US
+757807872,757808127,RU
+757808128,757809151,US
757809152,757809407,CA
757809408,757809663,RO
757809664,757809919,GB
@@ -11225,13 +13582,14 @@
758684160,758684671,US
758684672,758684927,BR
758684928,758685183,IN
-758685184,758685439,AU
-758685440,758685695,JP
+758685184,758685695,AU
758685696,758691839,US
-758691840,758693887,DE
-758693888,758700031,US
+758691840,758692863,DE
+758692864,758700031,US
758700032,758702079,CA
-758702080,758710271,NL
+758702080,758704127,GR
+758704128,758706175,NL
+758706176,758710271,GR
758710272,758743039,US
758743040,758744679,CA
758744680,758744687,US
@@ -11246,9 +13604,7 @@
758745824,758745831,CA
758745832,758745855,US
758745856,758747135,CA
-758747136,758747199,US
-758747200,758747215,CA
-758747216,758747231,US
+758747136,758747231,US
758747232,758747327,CA
758747328,758747375,US
758747376,758747903,CA
@@ -11266,22 +13622,18 @@
758749568,758749695,CA
758749696,758749951,US
758749952,758750207,CA
-758750208,758750463,US
-758750464,758750719,CA
-758750720,758750975,US
+758750208,758750975,US
758750976,758751039,CA
-758751040,758751055,US
-758751056,758751071,CA
-758751072,758751167,US
+758751040,758751167,US
758751168,758751487,CA
758751488,758751999,US
-758752000,758752127,CA
-758752128,758752191,US
+758752000,758752031,CA
+758752032,758752063,US
+758752064,758752095,CA
+758752096,758752191,US
758752192,758752199,CA
758752200,758752207,FI
-758752208,758752223,US
-758752224,758752239,CA
-758752240,758752255,US
+758752208,758752255,US
758752256,758752511,CA
758752512,758752671,US
758752672,758752687,CA
@@ -11293,11 +13645,12 @@
758752960,758753279,CA
758753280,758753535,US
758753536,758753791,CA
-758753792,758754047,CN
-758754048,758754431,US
+758753792,758754047,US
+758754048,758754303,CA
+758754304,758754431,US
758754432,758754559,CA
-758754560,758754815,CN
-758754816,758755327,CA
+758754560,758755071,US
+758755072,758755327,CA
758755328,758755839,US
758755840,758756351,CA
758756352,758756863,US
@@ -11306,16 +13659,14 @@
758757056,758757183,CA
758757184,758757311,US
758757312,758757375,CA
-758757376,758757631,US
-758757632,758757887,CA
-758757888,758758143,US
+758757376,758758143,US
758758144,758759487,CA
758759488,758759615,US
758759616,758759743,CA
758759744,758759807,US
758759808,758759839,CA
-758759840,758759871,US
-758759872,758759935,CA
+758759840,758759903,US
+758759904,758759935,CA
758759936,758760191,US
758760192,758760447,SC
758760448,758760703,US
@@ -11328,21 +13679,21 @@
758762752,758764031,CA
758764032,758764287,US
758764288,758764679,CA
-758764680,758764703,US
-758764704,758764719,CA
-758764720,758764759,US
+758764680,758764759,US
758764760,758764767,CA
758764768,758764799,US
758764800,758764863,CA
758764864,758764927,US
758764928,758765183,CA
758765184,758765247,US
-758765248,758765311,CN
+758765248,758765279,CN
+758765280,758765311,US
758765312,758765375,CA
-758765376,758765439,US
-758765440,758765503,CA
+758765376,758765471,US
+758765472,758765503,CA
758765504,758765567,CN
-758765568,758765631,CA
+758765568,758765583,US
+758765584,758765631,CA
758765632,758765647,US
758765648,758765663,CA
758765664,758765695,US
@@ -11350,7 +13701,9 @@
758765952,758765975,US
758765976,758765983,CA
758765984,758766015,US
-758766016,758766103,CA
+758766016,758766047,CA
+758766048,758766063,US
+758766064,758766103,CA
758766104,758766111,US
758766112,758766143,CA
758766144,758766303,US
@@ -11362,24 +13715,27 @@
758766528,758766575,US
758766576,758766583,CA
758766584,758766847,US
-758766848,758768639,CA
-758768640,758769151,CN
-758769152,758769279,CA
+758766848,758767615,CA
+758767616,758767871,US
+758767872,758769279,CA
758769280,758769359,US
758769360,758769367,CA
758769368,758769375,US
-758769376,758769663,CA
+758769376,758769391,CA
+758769392,758769407,US
+758769408,758769663,CA
758769664,758769751,US
-758769752,758769791,CA
-758769792,758769855,US
+758769752,758769759,CA
+758769760,758769855,US
758769856,758769919,CA
758769920,758770175,US
758770176,758770271,CA
758770272,758770303,US
-758770304,758770367,CN
+758770304,758770335,CN
+758770336,758770367,US
758770368,758770431,CA
-758770432,758770687,US
-758770688,758770751,CA
+758770432,758770719,US
+758770720,758770751,CA
758770752,758770847,US
758770848,758770863,CA
758770864,758771199,US
@@ -11537,7 +13893,6 @@
759182336,759183359,HK
759183360,759184383,AU
759184384,759185407,NZ
-759185408,759186431,HK
759186432,759187455,AU
759187456,759187967,SG
759187968,759188479,TW
@@ -11646,7 +14001,7 @@
759629568,759629823,CO
759629824,759630847,CL
759630848,759631871,BR
-759631872,759632895,HN
+759631872,759632895,US
759632896,759635967,BR
759635968,759636991,PE
759636992,759638015,EC
@@ -11683,13 +14038,17 @@
759694208,759694303,US
759694304,759694319,CA
759694320,759695231,US
-759695232,759696263,CA
+759695232,759696143,CA
+759696144,759696159,US
+759696160,759696223,CA
+759696224,759696255,US
+759696256,759696263,CA
759696264,759696335,US
759696336,759696351,CA
759696352,759696463,US
759696464,759696479,CA
-759696480,759696575,US
-759696576,759696599,CA
+759696480,759696591,US
+759696592,759696599,CA
759696600,759696607,US
759696608,759699263,CA
759699264,759699279,US
@@ -11705,7 +14064,9 @@
759700064,759700223,US
759700224,759700479,CA
759700480,759700607,US
-759700608,759700735,CA
+759700608,759700623,CA
+759700624,759700639,US
+759700640,759700735,CA
759700736,759700863,US
759700864,759701759,CA
759701760,759702015,US
@@ -11732,17 +14093,13 @@
759711360,759711615,CA
759711616,759711647,US
759711648,759711655,CA
-759711656,759711679,US
-759711680,759711695,CA
-759711696,759711711,US
-759711712,759711743,CA
-759711744,759711807,CN
+759711656,759711711,US
+759711712,759711775,CA
+759711776,759711807,US
759711808,759711839,CA
759711840,759711855,US
759711856,759711871,CA
-759711872,759712015,US
-759712016,759712031,CA
-759712032,759712095,US
+759711872,759712095,US
759712096,759712111,CA
759712112,759712127,US
759712128,759712255,CA
@@ -11753,9 +14110,11 @@
759712896,759713023,US
759713024,759721215,CA
759721216,759721231,US
-759721232,759721279,CA
-759721280,759721343,US
-759721344,759791615,CA
+759721232,759721263,CA
+759721264,759721375,US
+759721376,759725823,CA
+759725824,759725855,US
+759725856,759791615,CA
759791616,759802367,US
759802368,759803391,CA
759803392,759803903,US
@@ -11802,7 +14161,9 @@
759832960,759833087,BI
759833088,759833215,ER
759833216,759833343,LS
-759833344,759834623,US
+759833344,759833855,US
+759833856,759834111,AU
+759834112,759834623,US
759834624,759834879,GB
759834880,759835391,US
759835392,759835647,AU
@@ -11819,8 +14180,8 @@
759889920,759922687,JP
759922688,759955455,GB
759955456,759963647,US
-759963648,759966015,NL
-759966016,759966207,US
+759963648,759966079,NL
+759966080,759966207,US
759966208,759966719,NL
759966720,759966915,FR
759966916,759966916,TF
@@ -11828,9 +14189,7 @@
759967744,759969791,JP
759969792,759975935,US
759975936,759980031,DE
-759980032,759983119,JP
-759983120,759983135,US
-759983136,759984127,JP
+759980032,759984127,JP
759984128,759988223,AU
759988224,759992319,GB
759992320,759997439,SG
@@ -11859,8 +14218,7 @@
760064000,760066047,SG
760066048,760068095,JP
760068096,760078335,US
-760078336,760079359,GB
-760079360,760080383,US
+760078336,760080383,GB
760080384,760082431,AU
760082432,760086527,SG
760086528,760111103,US
@@ -11877,7 +14235,9 @@
762320896,762321919,HK
762321920,762323967,IN
762323968,762324991,SG
-762324992,762330111,IN
+762324992,762326015,IN
+762326016,762327039,KH
+762327040,762330111,IN
762330112,762331135,NZ
762331136,762332159,TH
762332160,762333183,IN
@@ -11907,20 +14267,23 @@
762372096,762373119,FJ
762373120,762376191,CN
762376192,762377215,HK
-762377216,762378239,AU
+762377216,762377471,US
+762377472,762378239,AU
762378240,762380287,IN
762380288,762381311,HK
762381312,762382335,JP
762382336,762383359,NZ
762383360,762388479,CN
-762388480,762389503,HK
+762388480,762388991,HK
+762388992,762389247,KR
+762389248,762389503,HK
762389504,762390527,AU
762390528,762391551,CN
762391552,762393599,KR
762393600,762395647,CN
762395648,762396159,TH
762396160,762397695,IN
-762397696,762398719,HK
+762397696,762398719,CA
762398720,762399743,CN
762399744,762400767,IN
762400768,762401023,HK
@@ -11930,8 +14293,7 @@
762402816,762403839,IN
762403840,762404863,AU
762404864,762407935,IN
-762407936,762408959,CN
-762408960,762409983,HK
+762407936,762409983,HK
762409984,762411007,JP
762411008,762411519,HK
762411520,762411775,IN
@@ -11955,7 +14317,6 @@
762430464,762431487,AU
762431488,762437631,CN
762437632,762438655,IN
-762438656,762439679,CN
762439680,762440703,AU
762440704,762441727,BD
762441728,762442751,CN
@@ -12007,7 +14368,6 @@
762503168,762504191,IN
762504192,762505215,CN
762505216,762506239,BD
-762506240,762507263,CN
762507264,762510335,IN
762510336,762511359,CN
762511360,762514431,IN
@@ -12055,8 +14415,8 @@
762562560,762563583,CN
762563584,762564607,AU
762564608,762565631,IN
-762565632,762567679,CN
-762567680,762568703,IN
+762565632,762566655,CN
+762567680,762568703,MY
762568704,762569727,BD
762569728,762570751,CN
762570752,762571775,AU
@@ -12066,7 +14426,8 @@
762575872,762578943,IN
762578944,762580479,HK
762580480,762580991,JP
-762580992,762584063,CN
+762580992,762582015,CN
+762583040,762584063,CN
762584064,762585087,IN
762585088,762587135,CN
762587136,762588159,HK
@@ -12213,7 +14574,7 @@
762848768,762849279,BD
762849280,762850303,IN
762850304,762851327,HK
-762852352,762853375,HK
+762852352,762853375,MY
762853376,762855423,IN
762855424,762857471,KR
762857472,762858495,IN
@@ -12245,6 +14606,7 @@
762885120,762887167,HK
762887168,762888191,IN
762888192,762889215,JP
+762889216,762890239,PK
762890240,762890495,KR
762890496,762890751,TW
762890752,762891007,HK
@@ -12258,7 +14620,8 @@
762900480,762901503,CN
762901504,762902527,ID
762902528,762909695,IN
-762909696,762910719,HK
+762909696,762909951,CN
+762909952,762910719,HK
762910720,762911743,VN
762911744,762912767,IN
762912768,762913791,HK
@@ -12288,7 +14651,9 @@
762946560,762947583,KR
762947584,762948607,IN
762948608,762950655,CN
-762950656,762951679,AU
+762950656,762951167,AU
+762951168,762951423,IT
+762951424,762951679,AU
762951680,762952191,SG
762952192,762952703,JP
762952704,762953727,IN
@@ -12337,7 +14702,6 @@
763084544,763086847,HK
763086848,763087871,MO
763087872,763088895,CN
-763088896,763089919,JP
763089920,763090943,CN
763090944,763091967,IN
763091968,763092991,NP
@@ -12372,8 +14736,6 @@
763136000,763137023,JP
763137024,763142143,IN
763142144,763143167,HK
-763143168,763143423,AU
-763143680,763144191,AU
763144192,763145215,BD
763145216,763147263,CN
763147264,763152383,IN
@@ -12399,7 +14761,7 @@
763182080,763183103,IN
763183104,763183615,HK
763183616,763183871,LT
-763183872,763184127,JP
+763183872,763184127,HK
763184128,763185151,IN
763185152,763186175,ID
763186176,763194367,CN
@@ -12511,7 +14873,7 @@
763329536,763331583,CN
763331584,763332607,ID
763332608,763333631,IN
-763333632,763334655,AU
+763333632,763334655,BN
763334656,763336703,CN
763336704,763337727,KH
763337728,763338751,CN
@@ -12535,9 +14897,16 @@
767557632,767623167,ZA
767623168,767688703,HK
767688704,767754239,ZA
-767754240,767819775,HK
+767754240,767754751,HK
+767754752,767755263,KR
+767755264,767756287,NG
+767756288,767806975,HK
+767806976,767807487,KR
+767807488,767819775,HK
767819776,768016383,ZA
-768016384,768081919,US
+768016384,768062207,US
+768062208,768063231,HK
+768063232,768081919,US
768081920,768606207,ZA
768606208,768868351,GH
768868352,769130495,ZM
@@ -12549,8 +14918,7 @@
769405952,769406975,GN
769406976,769409023,ZA
769409024,769425407,SC
-769425408,769458175,ZA
-769458176,769459199,MU
+769425408,769459199,ZA
769459200,769460223,CD
769460224,769461247,UG
769461248,769462271,ZA
@@ -12607,7 +14975,8 @@
769706496,769706751,CR
769706752,769707007,AR
769707008,769713151,BR
-769713152,769714175,HN
+769713152,769713663,US
+769713664,769714175,HN
769714176,769719295,BR
769719296,769720319,HN
769720320,769721343,AR
@@ -12696,8 +15065,8 @@
769875968,769876991,BR
769876992,769878015,AR
769878016,769884159,BR
-769884160,769885183,AR
-769885184,769886207,CL
+769884160,769884927,AR
+769884928,769886207,CL
769886208,769890303,BR
769890304,769891327,AR
769891328,769892351,BR
@@ -12732,7 +15101,7 @@
769952768,769955839,BR
769955840,769956863,AR
769956864,769957119,BZ
-769957376,769960959,BR
+769957120,769960959,BR
769960960,769961983,EC
769961984,769963007,AR
769963008,769964031,EC
@@ -12744,18 +15113,256 @@
769970176,769971199,CL
769971200,769973247,BR
769973248,769974271,AR
-769974272,769983487,BR
+769974272,769976319,BR
+769976320,769977343,GT
+769977344,769983487,BR
769983488,769984511,EC
+769984512,769986559,BR
769986560,769987583,AR
769987584,769989631,BR
769989632,769990655,AR
+769990656,769991679,DO
+769991680,769992703,AR
769992704,769993727,GT
769993728,769994751,AR
769994752,769995775,EC
-769998848,769999871,BR
+769995776,769996799,BR
+769996800,769997823,PA
+769997824,769998847,AR
+769998848,770000895,BR
+770000896,770001407,CO
+770001408,770001663,AR
770001664,770003967,BR
+770003968,770004735,AR
+770004736,770004991,EC
770004992,770015231,BR
770015232,770016255,GT
+770016256,770017279,BR
+770017280,770017791,CL
+770017792,770020351,BR
+770020352,770020863,DO
+770020864,770021119,BR
+770021120,770021375,CR
+770021376,770025471,BR
+770025472,770026495,PY
+770026496,770028543,BR
+770028544,770029567,AR
+770029568,770030591,BR
+770030592,770031615,CL
+770031616,770032127,CO
+770032128,770032383,BR
+770032384,770032639,BO
+770032640,770033663,PA
+770033664,770034687,BR
+770034688,770035711,AR
+770035712,770044927,BR
+770044928,770045439,BO
+770045440,770045695,CR
+770045696,770045951,CL
+770045952,770046975,AR
+770046976,770047999,CR
+770048000,770050047,BR
+770050048,770052095,AR
+770052096,770053119,BR
+770053120,770053375,AR
+770053376,770053631,CO
+770053632,770054143,CL
+770054144,770056447,BR
+770056448,770056703,CO
+770056704,770057215,AR
+770057216,770058239,CL
+770058240,770059263,BR
+770059264,770060287,VE
+770060288,770061311,CL
+770061312,770063359,BR
+770064384,770065407,AR
+770065408,770066431,BR
+770066432,770067455,AR
+770067456,770068479,BR
+770068480,770069503,AR
+770069504,770070015,BR
+770070016,770070527,AR
+770070528,770079743,BR
+770079744,770080767,MX
+770080768,770091007,BR
+770091008,770092031,VE
+770092032,770093055,MX
+770093056,770098175,BR
+770098176,770099199,PE
+770099200,770100223,BR
+770100224,770101247,AR
+770101248,770103295,BR
+770103296,770104319,DO
+770104320,770109439,BR
+770109440,770110463,EC
+770110464,770111487,BR
+770111488,770112511,PE
+770112512,770121727,BR
+770121728,770122751,PE
+770122752,770123775,BR
+770123776,770124799,AR
+770124800,770125823,MX
+770125824,770126847,CL
+770126848,770127871,CR
+770127872,770131967,BR
+770131968,770132991,PE
+770132992,770134015,BR
+770134016,770135039,PE
+770135040,770140159,BR
+770140160,770141183,DO
+770141184,770142207,MX
+770142208,770151423,BR
+770151424,770152447,EC
+770152448,770153471,BR
+770153472,770154239,AR
+770154240,770156543,BR
+770156544,770157567,MX
+770157568,770160639,BR
+770160640,770161663,CO
+770161664,770166271,BR
+770166272,770166783,BZ
+770166784,770168319,BR
+770168320,770169855,AR
+770169856,770170879,MX
+770170880,770171903,AR
+770171904,770177023,BR
+770177024,770178047,AR
+770178048,770179071,BR
+770179072,770180095,AR
+770180096,770182143,BR
+770182144,770184191,AR
+770184192,770187263,BR
+770187264,770188287,CL
+770188288,770190847,BR
+770190848,770191359,BO
+770191360,770202623,BR
+770202624,770203647,CL
+770203648,770204671,AR
+770204672,770205695,BR
+770205696,770206719,PE
+770206720,770208767,BR
+770208768,770209791,CR
+770209792,770210815,CL
+770210816,770215935,BR
+770215936,770216959,AR
+770216960,770217983,PE
+770217984,770219007,AR
+770219008,770221055,BR
+770221056,770222079,AR
+770222080,770223103,BR
+770223104,770224127,DO
+770224128,770225151,CL
+770225152,770228223,BR
+770228224,770229247,PE
+770229248,770231295,BR
+770231296,770232319,AR
+770232320,770243583,BR
+770243584,770244607,MX
+770244608,770245631,BR
+770245632,770246655,CO
+770246656,770260991,BR
+770260992,770262015,GT
+770262016,770263039,AR
+770263040,770264063,CO
+770264064,770268159,BR
+770268160,770269183,EC
+770269184,770270207,BR
+770270208,770271231,EC
+770271232,770274303,BR
+770274304,770275327,MX
+770275328,770280447,BR
+770280448,770281471,AR
+770281472,770287615,BR
+770287616,770288639,CO
+770288640,770304511,BR
+770304512,770305535,AR
+770305536,770318335,BR
+770318336,770319359,AR
+770319360,770325503,BR
+770325504,770326527,VE
+770326528,770331647,BR
+770331648,770332415,PY
+770332416,770332671,AR
+770332672,770333695,BZ
+770333696,770338815,BR
+770338816,770339839,CW
+770339840,770341887,AR
+770341888,770350079,BR
+770350080,770351103,CL
+770351104,770351615,AR
+770351616,770352127,BR
+770352128,770353151,TT
+770353152,770354175,BR
+770354176,770355199,AR
+770355200,770356223,BR
+770356224,770357247,AR
+770357248,770367487,BR
+770367488,770368511,CL
+770368512,770369535,AR
+770369536,770370559,HN
+770370560,770378751,BR
+770378752,770379775,EC
+770379776,770384895,BR
+770384896,770385919,CL
+770385920,770386943,CO
+770386944,770398207,BR
+770398208,770399231,AR
+770399232,770400255,BR
+770400256,770401279,AR
+770401280,770406399,BR
+770406400,770407423,PY
+770407424,770408447,BR
+770408448,770409471,MX
+770409472,770411519,BR
+770411520,770412543,EC
+770412544,770419711,BR
+770419712,770420735,MX
+770420736,770429951,BR
+770429952,770430975,EC
+770430976,770433023,BR
+770433024,770433535,CO
+770433536,770433791,BR
+770433792,770434047,PA
+770434048,770435071,DO
+770435072,770440191,BR
+770440192,770441215,MX
+770441216,770447359,BR
+770447360,770448383,AR
+770448384,770449407,VE
+770449408,770450431,AR
+770450432,770451455,BR
+770451456,770452479,AR
+770452480,770453503,PE
+770453504,770461695,BR
+770461696,770462719,AR
+770462720,770463743,BR
+770463744,770464767,CL
+770464768,770465791,AR
+770465792,770466815,BR
+770466816,770467839,AR
+770467840,770468863,EC
+770468864,770471935,BR
+770472960,770473983,CL
+770475008,770477055,BR
+770477056,770478079,BZ
+770478080,770479103,BR
+770479104,770480127,EC
+770480128,770483199,BR
+770483200,770484223,CL
+770484224,770485247,EC
+770485248,770485759,PE
+770485760,770486271,CL
+770486272,770488319,BR
+770488320,770489343,CL
+770490368,770491391,BO
+770491392,770503679,BR
+770503680,770504703,PY
+770504704,770514943,BR
+770516992,770518015,BR
+770518016,770519039,PY
+770519040,770520063,DO
+770522112,770528255,BR
+770530304,770540543,BR
770703360,771227647,EG
771227648,771229695,IN
771229696,771230719,CN
@@ -12786,7 +15393,8 @@
771308544,771309567,HK
771309568,771310591,KR
771310592,771315711,IN
-771315712,771316223,US
+771315712,771315967,US
+771315968,771316223,JP
771316224,771316479,KR
771316480,771316735,HK
771316736,771317759,CN
@@ -12810,7 +15418,7 @@
771349504,771349759,ID
771349760,771350015,US
771350016,771350271,ID
-771350272,771350527,US
+771350272,771350527,SG
771350528,771355647,IN
771355648,771356671,HK
771356672,771361791,IN
@@ -12826,7 +15434,8 @@
771384320,771385343,ID
771385344,771398655,CN
771398656,771399679,PH
-771399680,771400703,SG
+771399680,771399935,AU
+771399936,771400703,SG
771400704,771401727,CN
771401728,771402751,IN
771402752,771403775,HK
@@ -12840,7 +15449,7 @@
771416064,771417087,IN
771417088,771418111,BD
771418112,771419135,IN
-771419136,771420159,NL
+771419136,771420159,KH
771420160,771421183,MM
771421184,771423231,IN
771423232,771424255,BD
@@ -12880,9 +15489,10 @@
771535872,771536895,IN
771536896,771537919,US
771537920,771538175,JP
-771538176,771538943,IN
-771538944,771550207,CN
-771550208,771551231,AU
+771538176,771538431,AU
+771538432,771538687,IN
+771538688,771538943,NZ
+771538944,771551231,CN
771551232,771554303,VN
771554304,771555327,AU
771555328,771577855,CN
@@ -12924,8 +15534,10 @@
772014080,772145151,DE
772145152,772210687,ES
772210688,772276223,IE
-772276224,772283391,RU
-772283392,772283647,ES
+772276224,772282623,RU
+772282624,772282879,KZ
+772282880,772283391,RU
+772283392,772283647,UA
772283648,772284927,RU
772284928,772285183,UA
772285184,772285439,UZ
@@ -12933,7 +15545,9 @@
772285696,772285951,GR
772285952,772287771,RU
772287772,772287772,NL
-772287773,772339967,RU
+772287773,772328447,RU
+772328448,772329471,ES
+772329472,772339967,RU
772339968,772340223,NL
772340224,772340735,RU
772340736,772341247,KZ
@@ -12986,7 +15600,9 @@
772884480,772886527,LB
772886528,772888575,FR
772888576,772890623,GB
-772890624,772892671,RU
+772890624,772892033,NL
+772892034,772892041,RU
+772892042,772892671,NL
772892672,772894719,GB
772894720,772896767,PL
772896768,772898815,RS
@@ -13001,10 +15617,7 @@
772917248,772919295,RU
772919296,772923391,GB
772923392,772925439,AT
-772925440,772925695,ZW
-772925696,772926463,GB
-772926464,772926719,ZW
-772926720,772927487,GB
+772925440,772927487,ZW
772927488,772929535,UA
772929536,772931583,RU
772931584,772933631,UA
@@ -13049,13 +15662,14 @@
773017600,773019647,IL
773019648,773021695,DE
773021696,773023743,AM
-773023744,773025791,RO
+773023744,773025791,US
773025792,773027839,RU
773027840,773031935,FR
773031936,773033983,CH
773033984,773036031,LV
773036032,773038079,DE
-773038080,773040127,GB
+773038080,773039615,GB
+773039616,773040127,HK
773040128,773042175,NL
773042176,773044223,FR
773044224,773046271,RU
@@ -13063,7 +15677,9 @@
773048320,773050367,LV
773050368,773052415,IE
773052416,773054463,NL
-773054464,773056511,AL
+773054464,773055871,AL
+773055872,773055999,RS
+773056000,773056511,AL
773056512,773058559,IT
773058560,773060607,GB
773060608,773062655,DK
@@ -13102,13 +15718,16 @@
773156864,773165055,FR
773165056,773166463,NL
773166464,773166591,PL
-773166592,773167359,NL
-773167360,773167615,US
-773167616,773167698,NL
-773167699,773167699,US
-773167700,773167769,NL
-773167770,773167770,US
-773167771,773173247,NL
+773166592,773167199,US
+773167200,773167215,NL
+773167216,773167655,US
+773167656,773167663,NL
+773167664,773168127,US
+773168128,773168511,NL
+773168512,773168639,US
+773168640,773168895,NL
+773168896,773169151,US
+773169152,773173247,NL
773173248,773177343,IT
773177344,773177407,ES
773177408,773181439,FR
@@ -13142,15 +15761,11 @@
773251072,773255167,AZ
773255168,773259263,RU
773259264,773263359,SI
-773263360,773267455,BH
+773263360,773267455,DE
773267456,773271551,LV
773271552,773275647,CZ
773275648,773277695,GB
-773277696,773279231,NL
-773279232,773279487,GB
-773279488,773279615,NL
-773279616,773279743,GB
-773279744,773283839,NL
+773277696,773283839,NL
773283840,773287935,AZ
773287936,773292031,JO
773292032,773296127,CZ
@@ -13172,7 +15787,8 @@
773599232,773601279,GB
773601280,773603327,LV
773603328,773605375,UA
-773605376,773607423,IR
+773605376,773606143,IR
+773606144,773607423,TR
773607424,773609471,DE
773609472,773611519,RU
773611520,773613567,BY
@@ -13237,7 +15853,8 @@
773736448,773740543,DE
773740544,773742591,CZ
773742592,773744639,GB
-773744640,773746687,ES
+773744640,773746175,ES
+773746176,773746687,US
773746688,773748735,DE
773748736,773750783,DK
773750784,773752831,FI
@@ -13262,7 +15879,11 @@
773793792,773795839,FR
773795840,773797887,NL
773797888,773799935,ES
-773799936,773801983,CY
+773799936,773800703,CY
+773800704,773800959,GB
+773800960,773801215,SG
+773801216,773801471,US
+773801472,773801983,CY
773804032,773806079,GB
773806080,773808127,BE
773808128,773810175,IL
@@ -13278,15 +15899,12 @@
773828608,773830655,HU
773830656,773832703,NO
773832704,773834751,FR
-773834752,773835007,GB
-773835008,773836543,IM
-773836544,773836799,GB
+773834752,773836799,IM
773836800,773838847,FR
773838848,773840895,DE
773840896,773842943,GB
-773844992,773845247,GB
-773845248,773845503,GG
-773845504,773846015,GB
+773844992,773845503,GG
+773845504,773846015,JE
773846016,773847039,GG
773847040,773849087,IT
773849088,773857279,IR
@@ -13298,36 +15916,41 @@
773898240,773906431,PS
773906432,773922815,GB
773922816,773931007,UA
-773931008,773935352,DE
+773931008,773934591,DE
+773934592,773935352,FR
773935353,773935353,US
-773935354,773935728,DE
+773935354,773935728,FR
773935729,773935729,GB
-773935730,773936143,DE
-773936144,773936145,FR
+773935730,773936145,FR
773936146,773936146,US
-773936147,773936147,FR
-773936148,773936419,DE
+773936147,773936199,FR
+773936200,773936203,DE
+773936204,773936419,FR
773936420,773936423,GB
-773936424,773937673,DE
+773936424,773937663,FR
+773937664,773937664,DE
+773937665,773937673,FR
773937674,773937674,IE
-773937675,773938231,DE
+773937675,773938231,FR
773938232,773938239,GB
-773938240,773939199,DE
+773938240,773939199,FR
773939200,773947391,CZ
773947392,773955583,GB
773955584,773963775,FR
-773963776,773968895,ME
-773968896,773969407,RU
-773969408,773971967,ME
+773963776,773971967,ME
773971968,773980159,UA
773980160,773988351,GB
773988352,773996543,ES
773996544,773996799,TR
-773996800,773997823,ES
-773997824,773998079,NL
-773998080,774000823,ES
+773996800,773997567,ES
+773997568,773998591,GB
+773998592,774000671,ES
+774000672,774000687,NL
+774000688,774000823,ES
774000824,774000824,GB
-774000825,774002815,ES
+774000825,774001663,ES
+774001664,774002687,NL
+774002688,774002815,ES
774002816,774002842,NL
774002843,774002843,ES
774002844,774002943,NL
@@ -13346,8 +15969,7 @@
774078464,774086655,BA
774086656,774094847,BG
774094848,774103039,HU
-774103040,774107135,RU
-774107136,774111231,UA
+774103040,774111231,UA
774111232,774119423,RU
774119424,774127615,CZ
774127616,774135807,LT
@@ -13391,7 +16013,7 @@
774162694,774162698,MZ
774162699,774162703,NP
774162704,774162738,US
-774162739,774162743,VA
+774162739,774162743,UA
774162744,774162778,US
774162779,774162784,CA
774162785,774162787,UA
@@ -13426,30 +16048,40 @@
774162967,774162967,LI
774162968,774162969,MX
774162970,774162970,BY
-774162971,774162971,MX
-774162972,774162974,VA
+774162971,774162974,MX
774162975,774162975,MY
-774162976,774162979,VA
+774162976,774162979,LB
774162980,774162980,IN
774162981,774162983,BO
774162984,774162987,SX
774162988,774162991,MX
-774162992,774162999,VA
+774162992,774162994,VA
+774162995,774162999,IR
774163000,774163000,PK
774163001,774163009,BO
774163010,774163010,VE
774163011,774163014,BO
-774163015,774163071,VA
+774163015,774163024,RU
+774163025,774163034,UA
+774163035,774163039,AE
+774163040,774163071,VA
774163072,774163074,GW
774163075,774163124,IT
-774163125,774163127,TJ
-774163128,774163203,VA
+774163125,774163134,TJ
+774163135,774163139,ET
+774163140,774163144,DK
+774163145,774163149,AF
+774163150,774163154,SY
+774163155,774163174,UA
+774163175,774163179,US
+774163180,774163200,VA
+774163201,774163203,US
774163204,774163210,AU
774163211,774163215,TD
774163216,774163220,CD
774163221,774163225,DJ
774163226,774163230,CF
-774163231,774163235,VA
+774163231,774163235,US
774163236,774163240,MF
774163241,774163245,VC
774163246,774163250,PM
@@ -13462,20 +16094,18 @@
774163281,774163283,NL
774163284,774163290,FK
774163291,774163330,IT
-774163331,774163331,UG
-774163332,774163335,VA
+774163331,774163335,UG
774163336,774163339,MP
774163340,774163343,TL
774163344,774163347,WF
774163348,774163351,SD
-774163352,774163359,VA
+774163352,774163359,SS
774163360,774163367,BQ
774163368,774163375,CW
774163376,774163383,IT
-774163384,774163391,GE
-774163392,774163399,VA
-774163400,774163411,US
-774163412,774163455,VA
+774163384,774163399,GE
+774163400,774163415,US
+774163416,774163455,VA
774163456,774166527,DK
774166528,774168575,EE
774168576,774176767,PL
@@ -13489,7 +16119,9 @@
774242304,774258687,RU
774258688,774266879,SA
774266880,774275071,RU
-774275072,774283263,IR
+774275072,774279167,IR
+774279168,774280191,UA
+774280192,774283263,IR
774283264,774291455,GB
774291456,774299647,NL
774299648,774307839,DE
@@ -13500,9 +16132,7 @@
774348800,774356991,CZ
774356992,774365183,ES
774365184,774373375,RU
-774373376,774383359,RS
-774383360,774383615,XK
-774383616,774389759,RS
+774373376,774389759,RS
774389760,774406143,BG
774406144,774422527,SY
774422528,774438911,OM
@@ -13516,7 +16146,8 @@
774553600,774569983,KZ
774569984,774586367,GB
774586368,774602751,PS
-774602752,774619135,GB
+774602752,774618879,GB
+774618880,774619135,DK
774619136,774651903,RU
774651904,774668287,SA
774668288,774684671,NL
@@ -13527,7 +16158,7 @@
774750208,774782975,RU
774782976,774799359,UA
774799360,774815743,RU
-774815744,774832127,SE
+774815744,774832127,NO
774832128,774848511,RU
774848512,774864895,BG
774864896,774881279,CZ
@@ -13539,7 +16170,8 @@
775094272,775111877,RO
775111878,775111878,IR
775111879,775127039,RO
-775127040,775149567,IE
+775127040,775147519,IE
+775147520,775149567,NL
775149568,775151615,SG
775151616,775159807,JP
775159808,775192575,SA
@@ -13556,9 +16188,7 @@
775557120,775557375,CH
775569408,775569663,US
775585792,775618559,SY
-775618560,775645951,SE
-775645952,775646207,NO
-775646208,775651327,SE
+775618560,775651327,SE
775651328,775684095,DE
775684096,775716863,PS
775716864,775749631,GB
@@ -13569,7 +16199,11 @@
775946240,776077311,GB
776077312,776208383,NO
776208384,776339455,GB
-776339456,776470527,AM
+776339456,776413183,AM
+776413184,776419327,RU
+776419328,776437759,AM
+776437760,776441855,RU
+776441856,776470527,AM
776470528,776601599,RU
776601600,776732671,AT
776732672,776863743,PL
@@ -13581,30 +16215,32 @@
778304306,778304306,SI
778304307,778305535,AL
778305536,778371071,IR
-778371072,778388893,GB
-778388894,778388894,DE
-778388895,778403839,GB
-778403840,778436607,DE
+778371072,778388479,GB
+778388480,778389503,DE
+778389504,778395647,GB
+778395648,778436607,DE
778436608,778461183,RO
778461184,778461439,TR
-778461440,778462207,VG
+778461440,778462207,PL
778462208,778462463,TR
-778462464,778463231,VG
-778463232,778463999,RO
+778462464,778462719,US
+778462720,778463743,RO
+778463744,778463999,NL
778464000,778464255,RU
778464256,778465279,RO
778465280,778466303,IT
778466304,778467327,RO
778467328,778473471,IR
778473472,778474495,RO
-778474496,778475519,GB
+778474496,778475519,US
778475520,778475775,CH
778475776,778476031,RO
778476032,778476287,IE
778476288,778477567,RO
778477568,778477695,NL
778477696,778479615,ES
-778479616,778480639,RO
+778479616,778480127,RO
+778480128,778480639,GB
778480640,778480895,FR
778480896,778481151,RO
778481152,778481407,GB
@@ -13619,115 +16255,439 @@
778485760,778493951,GB
778493952,778495999,NL
778496000,778497791,RO
-778497792,778498047,US
-778498048,778500095,RO
+778497792,778500095,NL
778500096,778500351,GB
778500352,778500863,RO
778500864,778500991,CN
778500992,778501119,HK
778501120,778501631,GB
778501632,778502143,RO
-778502144,778502655,CY
-778502656,778503167,GR
-778503168,778503935,CY
-778503936,778509311,GR
-778509312,778510335,CY
-778510336,778511359,GR
-778511360,778511871,CY
-778511872,778512383,GR
-778512384,778515455,CY
-778515456,778517247,GR
-778517248,778519551,CY
-778519552,778526719,GR
-778526720,778527231,CY
-778527232,778527743,GR
-778527744,778528767,CY
-778528768,778530815,GR
-778530816,778532863,CY
-778532864,778534911,GR
-778534912,778539263,CY
-778539264,778540031,GR
-778540032,778540287,CY
-778540288,778540543,GR
-778540544,778541055,CY
-778541056,778542591,GR
-778542592,778545407,CY
-778545408,778545663,GR
-778545664,778546175,CY
-778546176,778547199,GR
-778547200,778550271,CY
-778550272,778555391,GR
-778555392,778555903,CY
-778555904,778556159,GR
-778556160,778561535,CY
-778561536,778562559,GR
-778562560,778563327,CY
-778563328,778567679,GR
+778502144,778567679,GR
778567680,778633215,TR
-778633216,778656598,FR
-778656599,778656599,PT
-778656600,778657399,FR
+778633216,778638335,FR
+778638336,778638591,ES
+778638592,778638975,FR
+778638976,778639103,CZ
+778639104,778639231,FR
+778639232,778639359,FI
+778639360,778639615,ES
+778639616,778640127,FR
+778640128,778640383,GB
+778640384,778640639,FR
+778640640,778640895,PT
+778640896,778641151,FR
+778641152,778641407,IE
+778641408,778650655,FR
+778650656,778650687,LT
+778650688,778653855,FR
+778653856,778653871,BE
+778653872,778653887,FR
+778653888,778653903,IE
+778653904,778653935,FR
+778653936,778653951,GB
+778653952,778654031,FR
+778654032,778654039,ES
+778654040,778654903,FR
+778654904,778654907,GB
+778654908,778654927,FR
+778654928,778654935,ES
+778654936,778654959,FR
+778654960,778654975,BE
+778654976,778655039,FR
+778655040,778655103,ES
+778655104,778655191,FR
+778655192,778655199,LT
+778655200,778655223,FR
+778655224,778655231,PT
+778655232,778655583,FR
+778655584,778655615,ES
+778655616,778655679,IT
+778655680,778655807,FR
+778655808,778655871,NL
+778655872,778655935,FR
+778655936,778655999,IE
+778656000,778656223,FR
+778656224,778656255,PT
+778656256,778656383,FR
+778656384,778656447,GB
+778656448,778656575,FR
+778656576,778656607,PT
+778656608,778656639,FR
+778656640,778656671,BE
+778656672,778656703,IT
+778656704,778657399,FR
778657400,778657403,PT
-778657404,778662028,FR
+778657404,778657463,FR
+778657464,778657471,CZ
+778657472,778657535,GB
+778657536,778662028,FR
778662029,778662029,ES
-778662030,778666479,FR
+778662030,778666063,FR
+778666064,778666079,IE
+778666080,778666095,ES
+778666096,778666259,FR
+778666260,778666263,ES
+778666264,778666303,FR
+778666304,778666367,ES
+778666368,778666375,FR
+778666376,778666379,GB
+778666380,778666479,FR
778666480,778666495,DE
-778666496,778666879,FR
+778666496,778666591,FR
+778666592,778666607,LT
+778666608,778666623,FR
+778666624,778666639,IE
+778666640,778666687,FR
+778666688,778666719,ES
+778666720,778666847,FR
+778666848,778666863,PT
+778666864,778666879,FR
778666880,778666943,GB
-778666944,778668627,FR
+778666944,778666975,FR
+778666976,778667007,PL
+778667008,778667347,FR
+778667348,778667351,GB
+778667352,778667499,FR
+778667500,778667503,GB
+778667504,778667931,FR
+778667932,778667935,CZ
+778667936,778667999,FR
+778668000,778668003,GB
+778668004,778668271,FR
+778668272,778668279,ES
+778668280,778668391,FR
+778668392,778668395,FI
+778668396,778668399,ES
+778668400,778668479,FR
+778668480,778668495,ES
+778668496,778668607,FR
+778668608,778668615,IE
+778668616,778668627,FR
778668628,778668631,ES
-778668632,778668863,FR
+778668632,778668719,FR
+778668720,778668723,PT
+778668724,778668731,FR
+778668732,778668735,GB
+778668736,778668799,FR
+778668800,778668831,FI
+778668832,778668863,FR
778668864,778668895,DE
-778668896,778669967,FR
+778668896,778669055,FR
+778669056,778669087,ES
+778669088,778669211,FR
+778669212,778669215,ES
+778669216,778669451,FR
+778669452,778669455,ES
+778669456,778669551,FR
+778669552,778669567,CZ
+778669568,778669663,FR
+778669664,778669695,FI
+778669696,778669823,FR
+778669824,778669855,ES
+778669856,778669935,FR
+778669936,778669951,ES
+778669952,778669967,FR
778669968,778669975,IE
778669976,778669979,PT
778669980,778669983,IE
-778669984,778670751,FR
+778669984,778670047,FR
+778670048,778670079,GB
+778670080,778670175,FR
+778670176,778670207,GB
+778670208,778670751,FR
778670752,778670755,DE
778670756,778670975,FR
778670976,778670976,DE
778670977,778671201,FR
778671202,778671202,ES
-778671203,778673751,FR
+778671203,778671915,FR
+778671916,778671919,GB
+778671920,778672063,FR
+778672064,778672067,GB
+778672068,778672071,FR
+778672072,778672079,GB
+778672080,778672095,FR
+778672096,778672111,IE
+778672112,778672119,FR
+778672120,778672123,ES
+778672124,778672383,FR
+778672384,778672447,NL
+778672448,778672479,FR
+778672480,778672511,ES
+778672512,778672639,FR
+778672640,778672703,PT
+778672704,778673187,FR
+778673188,778673191,ES
+778673192,778673207,FR
+778673208,778673211,ES
+778673212,778673279,FR
+778673280,778673283,GB
+778673284,778673751,FR
778673752,778673759,DE
-778673760,778674768,FR
+778673760,778673851,FR
+778673852,778673855,NL
+778673856,778673879,FR
+778673880,778673883,CZ
+778673884,778673887,ES
+778673888,778674303,FR
+778674304,778674367,DE
+778674368,778674768,FR
778674769,778674769,BE
-778674770,778675695,FR
+778674770,778674783,FR
+778674784,778674799,GB
+778674800,778674991,FR
+778674992,778674995,GB
+778674996,778674999,FR
+778675000,778675003,FI
+778675004,778675007,PL
+778675008,778675199,FR
+778675200,778675207,ES
+778675208,778675631,FR
+778675632,778675639,ES
+778675640,778675695,FR
778675696,778675711,BE
-778675712,778677503,FR
+778675712,778675767,FR
+778675768,778675775,ES
+778675776,778675795,FR
+778675796,778675799,ES
+778675800,778675819,FR
+778675820,778675823,GB
+778675824,778675827,ES
+778675828,778675891,FR
+778675892,778675895,ES
+778675896,778676127,FR
+778676128,778676131,ES
+778676132,778676143,FR
+778676144,778676159,ES
+778676160,778676367,FR
+778676368,778676383,GB
+778676384,778676555,FR
+778676556,778676559,ES
+778676560,778676623,FR
+778676624,778676627,GB
+778676628,778676631,ES
+778676632,778676639,FR
+778676640,778676655,ES
+778676656,778676719,FR
+778676720,778676723,GB
+778676724,778677095,FR
+778677096,778677099,PL
+778677100,778677183,FR
+778677184,778677215,ES
+778677216,778677255,FR
+778677256,778677259,ES
+778677260,778677339,FR
+778677340,778677343,CZ
+778677344,778677375,FR
+778677376,778677391,GB
+778677392,778677399,FR
+778677400,778677403,PT
+778677404,778677475,FR
+778677476,778677479,CZ
+778677480,778677503,FR
778677504,778677505,GB
778677506,778677506,ES
778677507,778677507,GB
778677508,778677759,ES
-778677760,778679212,FR
+778677760,778678859,FR
+778678860,778678863,GB
+778678864,778679212,FR
778679213,778679214,FI
-778679215,778681503,FR
+778679215,778679279,FR
+778679280,778679295,ES
+778679296,778679491,FR
+778679492,778679495,ES
+778679496,778679599,FR
+778679600,778679607,IE
+778679608,778680147,FR
+778680148,778680151,GB
+778680152,778680175,FR
+778680176,778680183,ES
+778680184,778680227,FR
+778680228,778680231,IE
+778680232,778680575,FR
+778680576,778680639,DE
+778680640,778680643,FR
+778680644,778680647,PT
+778680648,778680651,FR
+778680652,778680655,ES
+778680656,778680683,FR
+778680684,778680687,ES
+778680688,778681023,FR
+778681024,778681087,FI
+778681088,778681359,FR
+778681360,778681367,ES
+778681368,778681423,FR
+778681424,778681431,FI
+778681432,778681463,FR
+778681464,778681471,ES
+778681472,778681503,FR
778681504,778681507,DE
-778681508,778688447,FR
+778681508,778681519,FR
+778681520,778681523,ES
+778681524,778681615,FR
+778681616,778681619,ES
+778681620,778681707,FR
+778681708,778681711,ES
+778681712,778681775,FR
+778681776,778681779,GB
+778681780,778681831,FR
+778681832,778681835,IT
+778681836,778681983,FR
+778681984,778681999,PT
+778682000,778682079,FR
+778682080,778682095,PT
+778682096,778686543,FR
+778686544,778686559,LT
+778686560,778687431,FR
+778687432,778687439,IT
+778687440,778688447,FR
778688448,778688451,CZ
-778688452,778689923,FR
+778688452,778689007,FR
+778689008,778689015,FI
+778689016,778689151,FR
+778689152,778689183,CZ
+778689184,778689923,FR
778689924,778689927,DE
-778689928,778692143,FR
+778689928,778690655,FR
+778690656,778690687,ES
+778690688,778690735,FR
+778690736,778690751,PT
+778690752,778691459,FR
+778691460,778691463,BE
+778691464,778691543,FR
+778691544,778691551,GB
+778691552,778691763,FR
+778691764,778691767,DE
+778691768,778691887,FR
+778691888,778691895,PT
+778691896,778691975,FR
+778691976,778691983,ES
+778691984,778692143,FR
778692144,778692159,DE
-778692160,778692527,FR
+778692160,778692191,FR
+778692192,778692195,ES
+778692196,778692199,FR
+778692200,778692207,ES
+778692208,778692415,FR
+778692416,778692431,GB
+778692432,778692499,FR
+778692500,778692503,ES
+778692504,778692527,FR
778692528,778692535,BE
-778692536,778695471,FR
+778692536,778692619,FR
+778692620,778692623,ES
+778692624,778692743,FR
+778692744,778692747,ES
+778692748,778692767,FR
+778692768,778692783,ES
+778692784,778692827,FR
+778692828,778692831,GB
+778692832,778692891,FR
+778692892,778692895,GB
+778692896,778693095,FR
+778693096,778693103,ES
+778693104,778693159,FR
+778693160,778693163,ES
+778693164,778693175,FR
+778693176,778693179,ES
+778693180,778693427,FR
+778693428,778693431,ES
+778693432,778693439,FR
+778693440,778693455,GB
+778693456,778693471,FR
+778693472,778693503,NL
+778693504,778693663,FR
+778693664,778693679,ES
+778693680,778693759,FR
+778693760,778693763,ES
+778693764,778693855,FR
+778693856,778693887,BE
+778693888,778693967,FR
+778693968,778693971,ES
+778693972,778695087,FR
+778695088,778695103,PT
+778695104,778695119,FR
+778695120,778695135,LT
+778695136,778695203,FR
+778695204,778695207,ES
+778695208,778695375,FR
+778695376,778695391,FI
+778695392,778695471,FR
778695472,778695475,ES
-778695476,778695991,FR
+778695476,778695535,FR
+778695536,778695551,ES
+778695552,778695767,FR
+778695768,778695775,ES
+778695776,778695795,FR
+778695796,778695799,ES
+778695800,778695823,FR
+778695824,778695839,FI
+778695840,778695991,FR
778695992,778695999,IT
-778696000,778696811,FR
+778696000,778696219,FR
+778696220,778696223,GB
+778696224,778696271,FR
+778696272,778696287,ES
+778696288,778696435,FR
+778696436,778696439,GB
+778696440,778696495,FR
+778696496,778696499,ES
+778696500,778696811,FR
778696812,778696815,DE
778696816,778696847,FR
778696848,778696851,ES
-778696852,778697471,FR
+778696852,778696879,FR
+778696880,778696887,PL
+778696888,778696983,FR
+778696984,778696987,ES
+778696988,778696991,FR
+778696992,778696995,ES
+778696996,778697055,FR
+778697056,778697063,ES
+778697064,778697067,FR
+778697068,778697071,ES
+778697072,778697175,FR
+778697176,778697179,ES
+778697180,778697279,FR
+778697280,778697287,IE
+778697288,778697311,FR
+778697312,778697343,ES
+778697344,778697435,FR
+778697436,778697439,GB
+778697440,778697471,FR
778697472,778697479,CZ
-778697480,778698751,FR
+778697480,778697727,FR
+778697728,778697791,ES
+778697792,778697815,FR
+778697816,778697819,ES
+778697820,778697955,FR
+778697956,778697959,ES
+778697960,778698243,FR
+778698244,778698247,GB
+778698248,778698295,FR
+778698296,778698303,IE
+778698304,778698447,FR
+778698448,778698451,ES
+778698452,778698511,FR
+778698512,778698519,FI
+778698520,778698591,FR
+778698592,778698595,BE
+778698596,778698627,FR
+778698628,778698631,ES
+778698632,778698643,FR
+778698644,778698647,ES
+778698648,778698703,FR
+778698704,778698707,ES
+778698708,778698715,FR
+778698716,778698719,CZ
+778698720,778698751,FR
778698752,778764287,TR
778764288,778822655,HU
-778822656,778823423,UA
-778823424,778829823,HU
+778822656,778823679,UA
+778823680,778829823,HU
778829824,778862591,RO
-778862592,778895359,DE
+778862592,778895359,GB
778895360,778960895,LV
778960896,779026431,DE
779026432,779091967,RU
@@ -13767,13 +16727,14 @@
781479936,781480191,UA
781480192,781480447,RO
781480448,781480703,BE
-781480704,781484031,UA
+781480704,781481471,UA
+781481472,781481727,GB
+781481728,781484031,UA
781484032,781488127,RU
781488128,781496319,PL
-781496320,781500415,UA
-781500416,781516799,RU
+781496320,781516799,RU
781516800,781520895,SA
-781520896,781524991,IS
+781520896,781524991,NL
781524992,781529087,RU
781529088,781533183,UA
781533184,781537279,RU
@@ -13781,11 +16742,11 @@
781545472,781549567,CZ
781549568,781553663,RU
781553664,781557759,PL
-781557760,781565951,UA
+781561856,781565951,UA
781565952,781570047,IT
781570048,781574143,PL
781574144,781578239,RU
-781578240,781582335,PL
+781578240,781582335,GB
781582336,781590527,UA
781590528,781598719,SI
781598720,781615103,UA
@@ -13795,7 +16756,8 @@
781651968,781654015,PL
781654016,781656063,RU
781656064,781658111,RO
-781658112,781662207,UA
+781658112,781660159,UA
+781660160,781662207,RU
781662208,781664255,SK
781664256,781666303,RU
781666304,781668351,PL
@@ -13825,8 +16787,10 @@
781975552,782106623,NO
782106624,782254079,RU
782254080,782270463,UA
-782270464,782311167,RU
-782311168,782311423,CZ
+782270464,782310143,RU
+782310144,782310399,NL
+782310400,782311167,RU
+782311168,782311423,DE
782311424,782313471,RU
782313472,782313727,UA
782313728,782317567,RU
@@ -13854,7 +16818,8 @@
782401536,782417919,FR
782417920,782434303,AM
782434304,782434815,HR
-782434816,782447359,SI
+782434816,782446591,SI
+782446592,782447359,BA
782447360,782447615,HR
782447616,782447871,SI
782447872,782448127,HR
@@ -13862,8 +16827,7 @@
782449152,782449407,HR
782449408,782449471,RS
782449472,782449663,SI
-782449664,782450175,BA
-782450176,782450687,SI
+782449664,782450687,BA
782450688,782467071,DE
782467072,782483455,RU
782483456,782499839,FI
@@ -13878,9 +16842,17 @@
782630912,782647295,MD
782647296,782663679,RU
782663680,782671871,NL
-782671872,782673959,LT
+782671872,782672655,LT
+782672656,782672663,VG
+782672664,782673935,LT
+782673936,782673943,EE
+782673944,782673959,LT
782673960,782673967,IN
-782673968,782675967,LT
+782673968,782674439,LT
+782674440,782674447,CA
+782674448,782674959,LT
+782674960,782674975,CR
+782674976,782675967,LT
782675968,782680063,NL
782680064,782696447,RU
782696448,782712831,DE
@@ -13896,8 +16868,8 @@
783065088,783073279,RU
783073280,783081471,UA
783081472,783089663,AD
-783089664,783106047,RU
-783106048,783134719,UA
+783089664,783114239,RU
+783114240,783134719,UA
783134720,783138815,RU
783138816,783142911,CZ
783142912,783147007,RU
@@ -13917,11 +16889,10 @@
783181824,783185919,RU
783185920,783187967,UA
783187968,783190015,NL
-783190016,783194111,RO
+783192064,783194111,RO
783194112,783196159,CZ
783196160,783198207,UA
783198208,783202303,PL
-783202304,783204351,VG
783204352,783206399,RU
783206400,783208447,RO
783208448,783210495,PL
@@ -14002,12 +16973,14 @@
783767552,783769599,IL
783769600,783771647,DE
783771648,783772671,GB
-783772672,783773695,IE
+783772672,783773695,FR
783773696,783775743,ES
783775744,783777791,AL
783777792,783779839,RU
783779840,783781887,DK
-783781888,783783935,NL
+783781888,783782143,NL
+783782144,783782399,US
+783782400,783783935,NL
783783936,783785983,DE
783785984,783788031,RU
783788032,783790079,NO
@@ -14030,44 +17003,51 @@
784105472,784138239,HR
784138240,784145617,DE
784145618,784145618,BE
-784145619,784171007,DE
+784145619,784155483,DE
+784155484,784155487,CH
+784155488,784155491,NL
+784155492,784155495,BE
+784155496,784155503,AT
+784155504,784155511,GB
+784155512,784155519,CZ
+784155520,784155611,DE
+784155612,784155615,CH
+784155616,784155619,NL
+784155620,784155623,BE
+784155624,784155631,AT
+784155632,784155639,GB
+784155640,784155640,CZ
+784155641,784169215,DE
+784169216,784169231,AL
+784169232,784169247,BG
+784169248,784169263,CZ
+784169264,784169279,MK
+784169280,784169343,AT
+784169344,784169407,HU
+784169408,784169471,SE
+784169472,784171007,DE
784171008,784203775,PT
784203776,784236543,GR
-784236544,784269311,DE
+784236544,784237567,IT
+784237568,784238591,ES
+784238592,784238847,GB
+784238848,784239103,US
+784239104,784240895,GB
+784240896,784241151,SG
+784241152,784268799,GB
+784268800,784269055,US
+784269056,784269311,GB
784269312,784302079,BY
784302080,784334847,RU
784334848,784457727,FR
784457728,784461823,GB
-784461824,784465919,FR
+784461824,784463359,FR
+784463360,784464383,GB
+784464384,784465919,FR
784465920,784596991,SE
784596992,784728063,TR
-784728064,784729087,GR
-784729088,784730367,CY
-784730368,784731647,GR
-784731648,784732159,CY
-784732160,784733695,GR
-784733696,784736255,CY
-784736256,784757247,GR
-784757248,784757631,CY
-784757632,784757759,GR
-784757760,784758271,CY
-784758272,784760831,GR
-784760832,784763391,CY
-784763392,784763903,GR
-784763904,784769023,CY
-784769024,784786431,GR
-784786432,784786687,CY
-784786688,784786943,GR
-784786944,784787455,CY
-784787456,784788479,GR
-784788480,784788991,CY
-784788992,784789503,GR
-784789504,784790015,CY
-784790016,784790527,GR
-784790528,784791551,CY
-784791552,784792063,GR
-784792064,784792575,CY
-784792576,784793599,GR
+784728064,784760831,CY
+784760832,784793599,GR
784793600,784859135,CY
784859136,785121279,UA
785121280,785252351,PL
@@ -14084,9 +17064,7 @@
785842176,785907711,PL
785907712,785973247,BY
785973248,786038783,MK
-786038784,786046463,FR
-786046464,786046975,GB
-786046976,786104319,FR
+786038784,786104319,FR
786104320,786169855,UA
786169856,786235391,AT
786235392,786300927,TR
@@ -14100,22 +17078,23 @@
786571264,786575359,ES
786575360,786576098,GB
786576099,786576099,SE
-786576100,786576102,GB
-786576103,786576103,BE
-786576104,786577407,GB
+786576100,786577407,GB
786577408,786579455,NL
786579456,786581503,RU
786581504,786583551,GB
786583552,786585599,DE
786585600,786587647,NL
786587648,786589695,RU
-786589696,786591743,FR
+786589696,786590719,FR
+786590720,786591743,LU
786591744,786593791,DE
786593792,786595839,GB
786595840,786597887,FR
786597888,786599935,EE
786599936,786601983,ES
-786601984,786604031,SE
+786601984,786602751,SE
+786603008,786603519,NL
+786603520,786604031,SE
786604032,786606079,RU
786606080,786608127,GB
786608128,786610175,IT
@@ -14188,7 +17167,8 @@
786821120,786824703,HR
786824704,786825215,CN
786825216,786857983,SA
-786857984,786890751,SE
+786857984,786868223,NO
+786868224,786890751,SE
786890752,786892799,ES
786892800,786894847,GB
786894848,786896895,NL
@@ -14201,7 +17181,19 @@
786913280,786915327,DE
786915328,786917375,SK
786917376,786919423,US
-786919424,786921471,GB
+786919424,786919639,GB
+786919640,786919655,IT
+786919656,786919687,GB
+786919688,786919695,IT
+786919696,786920191,GB
+786920192,786920199,IT
+786920200,786920615,GB
+786920616,786920623,IT
+786920624,786920999,GB
+786921000,786921007,IT
+786921008,786921087,GB
+786921088,786921095,IT
+786921096,786921471,GB
786921472,786923519,ES
786923520,786925567,FR
786925568,786927615,DE
@@ -14217,7 +17209,10 @@
786946048,786948095,FR
786948096,786950143,UA
786950144,786952191,DE
-786952192,786954239,US
+786952192,786952703,NE
+786952704,786952959,US
+786952960,786953215,NE
+786953216,786954239,US
786954240,786956287,NL
786956288,786989055,RU
786989056,786991103,PL
@@ -14248,8 +17243,7 @@
787095680,787095711,CH
787096576,787097855,CH
787098112,787098879,CH
-787099392,787100671,CH
-787101696,787102719,CH
+787099392,787103743,CH
787103744,787111935,HR
787111936,787116287,CZ
787116288,787116543,US
@@ -14261,7 +17255,7 @@
787154944,787156991,TR
787156992,787159039,FR
787159040,787161087,DE
-787161088,787163135,SE
+787161088,787163135,GB
787163136,787165183,NL
787165184,787167231,RU
787167232,787169279,CH
@@ -14317,12 +17311,10 @@
787480576,787513343,SA
787513344,787546111,RS
787546112,787578879,RU
-787578880,787582975,AM
-787582976,787587071,RU
-787587072,787611647,AM
+787578880,787611647,AM
787611648,787644415,RU
787644416,787677183,PL
-787677184,787679231,CZ
+787677184,787679231,GB
787679232,787681279,RU
787681280,787683327,IQ
787683328,787685375,NL
@@ -14330,7 +17322,6 @@
787687424,787689471,NL
787689472,787691519,CZ
787693568,787695615,SK
-787695616,787697663,RU
787697664,787701759,DE
787701760,787703807,NL
787703808,787705855,AT
@@ -14356,14 +17347,12 @@
787716096,787718143,NL
787718144,787718911,RU
787718912,787719167,NL
-787719168,787719679,RU
-787719680,787720959,NL
-787720960,787721471,RU
-787721472,787721727,NL
-787721728,787722239,RU
+787719168,787722239,RU
787722240,787722751,NL
787722752,787725311,RU
-787725312,787729407,NL
+787725312,787728639,NL
+787728640,787728895,RU
+787728896,787729407,NL
787729408,787730431,US
787730432,787731199,SE
787731200,787731967,CA
@@ -14377,11 +17366,14 @@
787734528,787736575,US
787736576,787737599,GB
787737600,787738367,DE
-787738368,787739135,NL
+787738368,787738879,NL
+787738880,787739135,MT
787739136,787739903,CA
787739904,787740671,AU
-787740672,787741183,BE
-787741184,787741695,HK
+787740672,787740927,BE
+787740928,787741183,EE
+787741184,787741439,HK
+787741440,787741695,US
787741696,787741951,RU
787741952,787742207,NL
787742208,787742719,RU
@@ -14394,7 +17386,7 @@
787750176,787750191,BN
787750192,787750192,CN
787750193,787750207,NL
-787750208,787750223,FJ
+787750208,787750223,KH
787750224,787750239,ID
787750240,787750255,LA
787750256,787750271,MO
@@ -14434,9 +17426,13 @@
787863552,787865599,DE
787865600,787869695,FR
787869696,787873791,GB
-787873792,787890175,SE
+787873792,787881745,SE
+787881746,787881747,FR
+787881748,787890175,SE
787890176,787890431,NL
-787890432,787900415,SE
+787890432,787891247,SE
+787891248,787891251,ES
+787891252,787900415,SE
787900416,787900671,DE
787900672,787900927,SE
787900928,787901183,DK
@@ -14444,7 +17440,21 @@
787906560,787939327,GR
787939328,787972095,GB
787972096,788004863,UA
-788004864,788013055,GB
+788004864,788005375,GB
+788005376,788006399,BE
+788006400,788006911,IT
+788006912,788007423,FR
+788007424,788007935,DE
+788007936,788008447,US
+788008448,788008959,SG
+788008960,788009471,IN
+788009472,788009983,ES
+788009984,788010495,HK
+788010496,788011007,AU
+788011008,788011519,CN
+788011520,788012031,AR
+788012032,788012543,CA
+788012544,788013055,RU
788013056,788021247,IR
788021248,788029439,SI
788029440,788045823,GB
@@ -14454,9 +17464,10 @@
788070400,788078591,RU
788078592,788086783,NL
788086784,788094975,BG
-788094976,788095231,IR
+788094976,788095231,AU
788095232,788095487,DE
-788095488,788103167,IR
+788095488,788101119,AU
+788101120,788103167,IR
788103168,788111359,HU
788111360,788119551,LT
788119552,788127743,GB
@@ -14560,18 +17571,24 @@
788490240,788492287,NL
788492288,788494335,GB
788494336,788494591,US
-788494592,788495103,SE
+788494592,788495103,CY
788495104,788495615,US
788495616,788495871,GB
-788495872,788496383,SE
+788495872,788496383,CY
788496384,788498431,FR
788498432,788500479,RU
788500480,788502527,AL
788502528,788504575,IE
788504576,788506623,FR
788506624,788508671,CH
-788508672,788510719,FR
-788510720,788512767,ES
+788508672,788509711,FR
+788509712,788509951,AT
+788509952,788509983,FR
+788509984,788510191,AT
+788510192,788510719,FR
+788510720,788512320,ES
+788512321,788512383,NO
+788512384,788512767,ES
788512768,788514815,FI
788514816,788516863,FR
788516864,788518911,LT
@@ -14593,16 +17610,28 @@
792002560,792068095,IT
792068096,792199167,CA
792199168,792338431,US
-792338432,792371199,ES
-792371200,792387583,US
-792387584,792723455,ES
+792338432,792350719,ES
+792350720,792354815,US
+792354816,792363007,ES
+792363008,792367103,US
+792367104,792371199,ES
+792371200,792379391,US
+792379392,792447999,ES
+792448000,792449023,US
+792449024,792723455,ES
792723456,793247743,DE
793247744,793313279,NZ
793313280,793378815,DE
793378816,793395199,JP
793395200,793411583,AU
793411584,793444351,SG
-793444352,794329087,US
+793444352,793453217,US
+793453218,793453218,HK
+793453219,793454975,US
+793454976,793454976,HK
+793454977,793490778,US
+793490779,793490779,HK
+793490780,794329087,US
794329088,794361855,SG
794361856,794369288,HK
794369289,794369289,CN
@@ -14660,7 +17689,17 @@
825419776,825420799,TH
825420800,825421823,MY
825421824,825425919,NZ
-825425920,825753599,CN
+825425920,825434111,CA
+825434112,825439743,US
+825439744,825440255,CA
+825440256,825442303,CN
+825442304,825448447,US
+825448448,825454079,CA
+825454080,825458687,CN
+825458688,825470975,DE
+825470976,825484287,CN
+825484288,825491455,US
+825491456,825753599,CN
825753600,826277887,KR
826277888,828375039,CN
828375040,829423615,JP
@@ -14762,25 +17801,37 @@
838729728,838795263,KR
838795264,838860799,AU
838860800,838991871,US
-838991872,839008511,DE
+838991872,838994943,DE
+838994944,838995967,US
+838995968,839008511,DE
839008512,839008767,US
-839008768,839016959,DE
+839008768,839013270,DE
+839013271,839013271,US
+839013272,839016959,DE
839016960,839017087,US
-839017088,839041023,DE
+839017088,839026687,DE
+839026688,839027711,US
+839027712,839040599,DE
+839040600,839040607,US
+839040608,839041023,DE
839041024,839042047,US
-839042048,839046271,DE
-839046272,839046303,US
-839046304,839081471,DE
+839042048,839046143,DE
+839046144,839047167,US
+839047168,839081471,DE
839081472,839081727,US
839081728,839116543,DE
839116544,839116799,US
-839116800,839122943,DE
+839116800,839117823,DE
+839117824,839118847,US
+839118848,839119871,DE
+839119872,839120895,US
+839120896,839122943,DE
839122944,839340031,US
839340032,839341055,ES
839341056,839343103,DE
839343104,839344127,NL
839344128,839348223,US
-839348224,839348479,DE
+839348224,839348479,GB
839348480,839348735,AT
839348736,839348991,GB
839348992,839349247,AT
@@ -14802,8 +17853,11 @@
839360512,839366655,NL
839366656,839366911,AT
839366912,839367167,CZ
-839367168,839368703,NL
-839368704,839385087,CZ
+839367168,839369215,NL
+839369216,839369727,CZ
+839369728,839370239,NL
+839370240,839370751,GB
+839370752,839385087,CZ
839385088,840269823,US
840269824,840273919,CA
840273920,840278015,US
@@ -14814,7 +17868,9 @@
840836122,840836124,BZ
840836125,840865791,US
840865792,840866047,CA
-840866048,840953855,US
+840866048,840953743,US
+840953744,840953759,NL
+840953760,840953855,US
840953856,840954367,JP
840954368,840956927,US
840956928,840957951,JP
@@ -14867,72 +17923,154 @@
856227840,856621055,GB
856621056,856637439,NL
856637440,856686591,FR
-856686592,857997311,GB
-857997312,858017791,SA
-858017792,858018175,GB
-858018176,858018303,SA
-858018304,858019327,GB
-858019328,858019583,SA
-858019584,858019839,GB
-858019840,858023935,SA
-858023936,858024447,GB
-858024448,858027007,SA
-858027008,858027263,GB
-858027264,858027775,SA
-858027776,858028031,GB
-858028032,858029055,SA
-858029056,858029567,GB
-858029568,858031103,SA
-858031104,858031743,GB
-858031744,858033663,SA
-858033664,858034047,GB
-858034048,858034111,SA
-858034112,858034175,GB
-858034176,858034943,SA
-858034944,858035199,GB
-858035200,858037247,SA
-858037248,858037759,GB
-858037760,858038015,SA
-858038016,858038527,GB
-858038528,858038783,SA
-858038784,858039295,GB
-858039296,858040575,SA
-858040576,858040959,GB
-858040960,858042367,SA
-858042368,858043391,GB
-858043392,858046463,SA
-858046464,858046719,GB
-858046720,858046975,SA
-858046976,858047231,GB
-858047232,858047295,SA
-858047296,858047487,GB
-858047488,858049535,SA
-858049536,858049791,GB
-858049792,858050303,SA
-858050304,858050559,GB
-858050560,858052351,SA
-858052352,858052607,GB
-858052608,858052863,SA
-858052864,858053119,GB
-858053120,858053631,SA
-858053632,858054143,GB
-858054144,858054399,SA
-858054400,858054655,GB
-858054656,858057727,SA
-858057728,858058495,GB
-858058496,858059007,SA
-858059008,858059263,GB
-858059264,858061823,SA
-858061824,858062335,GB
-858062336,858062847,SA
+856686592,856817663,GB
+856817664,856883199,DE
+856883200,857997311,GB
+857997312,858062847,SA
858062848,858128383,IE
-858128384,858193919,GB
+858128384,858128703,FR
+858128704,858128735,CZ
+858128736,858128895,FR
+858128896,858129023,BE
+858129024,858131343,FR
+858131344,858131359,ES
+858131360,858133759,FR
+858133760,858133887,ES
+858133888,858135423,FR
+858135424,858135551,IT
+858135552,858136351,FR
+858136352,858136383,GB
+858136384,858148863,FR
+858148864,858149887,GB
+858149888,858149919,FR
+858149920,858149935,GB
+858149936,858149951,FR
+858149952,858150079,GB
+858150080,858150271,FR
+858150272,858150335,GB
+858150336,858150391,FR
+858150392,858150463,GB
+858150464,858150591,FR
+858150592,858150655,GB
+858150656,858150783,FR
+858150784,858150911,GB
+858150912,858151455,FR
+858151456,858151471,GB
+858151472,858151935,FR
+858151936,858152959,GB
+858152960,858157055,FR
+858157056,858158079,DE
+858158080,858158111,FR
+858158112,858158207,DE
+858158208,858158271,FR
+858158272,858158399,DE
+858158400,858158527,FR
+858158528,858158655,DE
+858158656,858158783,FR
+858158784,858158847,DE
+858158848,858158975,FR
+858158976,858159039,DE
+858159040,858159167,FR
+858159168,858159231,DE
+858159232,858159295,FR
+858159296,858159359,DE
+858159360,858159627,FR
+858159628,858159631,ES
+858159632,858159639,FR
+858159640,858159643,BE
+858159644,858159647,CZ
+858159648,858159651,NL
+858159652,858159655,PT
+858159656,858159659,FI
+858159660,858159763,FR
+858159764,858159767,DE
+858159768,858159807,FR
+858159808,858159871,DE
+858159872,858160127,FR
+858160128,858161151,DE
+858161152,858163199,PL
+858163200,858165247,FR
+858165248,858165311,PL
+858165312,858165375,FR
+858165376,858165439,PL
+858165440,858165823,FR
+858165824,858165855,PL
+858165856,858165887,FR
+858165888,858165951,PL
+858165952,858166207,FR
+858166208,858166271,PL
+858166272,858167295,FR
+858167296,858167359,PL
+858167360,858167487,FR
+858167488,858167551,PL
+858167552,858167679,FR
+858167680,858167807,PL
+858167808,858168063,FR
+858168064,858168127,PL
+858168128,858168447,FR
+858168448,858168639,PL
+858168640,858169855,FR
+858169856,858169983,ES
+858169984,858170199,FR
+858170200,858170207,DE
+858170208,858170751,FR
+858170752,858170879,IT
+858170880,858171023,FR
+858171024,858171039,GB
+858171040,858171263,FR
+858171264,858171279,IE
+858171280,858171359,FR
+858171360,858171391,NL
+858171392,858173055,FR
+858173056,858173071,BE
+858173072,858173207,FR
+858173208,858173215,FI
+858173216,858173227,FR
+858173228,858173231,BE
+858173232,858178239,FR
+858178240,858178271,GB
+858178272,858179583,FR
+858179584,858179711,ES
+858179712,858181215,FR
+858181216,858181247,CZ
+858181248,858182399,FR
+858182400,858182527,IT
+858182528,858182655,ES
+858182656,858183935,FR
+858183936,858183967,FI
+858183968,858185087,FR
+858185088,858185215,ES
+858185216,858191743,FR
+858191744,858191871,IT
+858191872,858193919,FR
858193920,858259455,SA
858259456,859059509,GB
859059510,859059510,FR
-859059511,860905167,GB
+859059511,860094463,GB
+860094464,860094911,FR
+860094912,860094927,IE
+860094928,860096383,FR
+860096384,860096511,ES
+860096512,860159999,FR
+860160000,860553215,GB
+860553216,860618751,FR
+860618752,860684287,GB
+860684288,860749823,FR
+860749824,860815359,GB
+860815360,860880895,FR
+860880896,860905167,GB
860905168,860905171,FR
-860905172,864550911,GB
+860905172,860946431,GB
+860946432,861011967,FR
+861011968,861077503,GB
+861077504,861143039,FR
+861143040,861470719,GB
+861470720,861536255,FR
+861536256,861601791,GB
+861601792,861667327,FR
+861667328,862470143,GB
+862470144,862486527,IE
+862486528,864550911,GB
864550912,864649215,NL
864649216,864665599,GB
864665600,864681983,NL
@@ -14944,128 +18082,640 @@
865075200,865140735,NL
865140736,865173503,GB
865173504,865206271,NL
-865206272,866844671,GB
+865206272,865730559,GB
+865730560,865796095,CH
+865796096,865992703,GB
+865992704,866123775,FR
+866123776,866189311,GB
+866189312,866254847,FR
+866254848,866361343,GB
+866361344,866385919,NL
+866385920,866844671,GB
866844672,866910207,IE
866910208,867041279,GB
867041280,867172351,NO
-867172352,867368959,GB
+867172352,867303423,GB
+867303424,867368959,FR
867368960,867401727,IT
-867401728,869466111,GB
+867401728,868417535,GB
+868417536,868483071,FR
+868483072,869400575,GB
+869400576,869466111,FR
869466112,869531647,SA
869531648,869924863,GB
869924864,869990399,SA
-869990400,870252543,GB
+869990400,870187007,GB
+870187008,870252543,FR
870252544,870318079,SA
870318080,871038975,GB
871038976,871104511,SA
871104512,872153087,GB
872153088,872284159,SA
-872284160,872286271,FR
+872284160,872285339,FR
+872285340,872285343,PL
+872285344,872285375,FR
+872285376,872285439,DE
+872285440,872285567,ES
+872285568,872286271,FR
872286272,872286335,ES
872286336,872286871,FR
872286872,872286875,CZ
-872286876,872288871,FR
+872286876,872287743,FR
+872287744,872287807,BE
+872287808,872288159,FR
+872288160,872288191,ES
+872288192,872288255,FR
+872288256,872288319,ES
+872288320,872288383,DE
+872288384,872288511,GB
+872288512,872288871,FR
872288872,872288875,DE
-872288876,872290111,FR
+872288876,872289071,FR
+872289072,872289087,PL
+872289088,872289247,FR
+872289248,872289279,IT
+872289280,872290111,FR
872290112,872290143,ES
-872290144,872291151,FR
+872290144,872290415,FR
+872290416,872290431,BE
+872290432,872290463,FR
+872290464,872290495,BE
+872290496,872290523,FR
+872290524,872290527,PL
+872290528,872290671,FR
+872290672,872290687,CZ
+872290688,872290751,FR
+872290752,872290815,DE
+872290816,872291151,FR
872291152,872291167,FI
-872291168,872297215,FR
+872291168,872291519,FR
+872291520,872291583,IE
+872291584,872291871,FR
+872291872,872291903,ES
+872291904,872292071,FR
+872292072,872292079,BE
+872292080,872292223,FR
+872292224,872292351,GB
+872292352,872296479,FR
+872296480,872296511,IT
+872296512,872296575,NL
+872296576,872297039,FR
+872297040,872297055,ES
+872297056,872297087,CZ
+872297088,872297215,FR
872297216,872297231,GB
-872297232,872300031,FR
+872297232,872297823,FR
+872297824,872297855,ES
+872297856,872298383,FR
+872298384,872298391,LT
+872298392,872298463,FR
+872298464,872298495,DE
+872298496,872299103,FR
+872299104,872299135,PT
+872299136,872299167,FR
+872299168,872299175,NL
+872299176,872299239,FR
+872299240,872299247,ES
+872299248,872299839,FR
+872299840,872299903,DE
+872299904,872299967,FR
+872299968,872299983,ES
+872299984,872300031,FR
872300032,872300063,ES
-872300064,872300649,FR
-872300650,872300650,PT
-872300651,872301503,FR
+872300064,872300127,FR
+872300128,872300159,NL
+872300160,872300515,FR
+872300516,872300519,DE
+872300520,872300543,FR
+872300544,872300559,GB
+872300560,872300639,FR
+872300640,872300671,PT
+872300672,872300735,FR
+872300736,872300751,PL
+872300752,872300767,FR
+872300768,872300799,NL
+872300800,872301087,FR
+872301088,872301095,ES
+872301096,872301503,FR
872301504,872301567,PL
-872301568,872304334,FR
-872304335,872304335,IE
-872304336,872304395,FR
-872304396,872304399,CZ
-872304400,872305655,FR
+872301568,872302687,FR
+872302688,872302719,NL
+872302720,872302783,FR
+872302784,872302847,GB
+872302848,872303007,FR
+872303008,872303039,IT
+872303040,872303055,FR
+872303056,872303071,CZ
+872303072,872303103,FR
+872303104,872303359,GB
+872303360,872303679,FR
+872303680,872303743,IT
+872303744,872304063,FR
+872304064,872304079,GB
+872304080,872304239,FR
+872304240,872304255,IT
+872304256,872304311,FR
+872304312,872304319,BE
+872304320,872304383,IE
+872304384,872304391,FR
+872304392,872304399,CZ
+872304400,872304447,FR
+872304448,872304511,ES
+872304512,872304831,FR
+872304832,872304895,ES
+872304896,872305415,FR
+872305416,872305423,GB
+872305424,872305655,FR
872305656,872305663,GB
872305664,872306183,FR
872306184,872306191,US
-872306192,872308371,FR
+872306192,872306223,FR
+872306224,872306239,NL
+872306240,872306367,FR
+872306368,872306399,GB
+872306400,872307263,FR
+872307264,872307327,ES
+872307328,872307743,FR
+872307744,872307759,IT
+872307760,872308351,FR
+872308352,872308371,GB
872308372,872308372,US
-872308373,872309883,FR
+872308373,872308455,GB
+872308456,872308456,FR
+872308457,872308479,GB
+872308480,872308703,FR
+872308704,872308735,ES
+872308736,872309883,FR
872309884,872309884,PT
-872309885,872311246,FR
-872311247,872311249,BE
-872311250,872316797,FR
+872309885,872310799,FR
+872310800,872310815,ES
+872310816,872310911,FR
+872310912,872311039,DE
+872311040,872311167,IE
+872311168,872311231,FR
+872311232,872311295,BE
+872311296,872311903,FR
+872311904,872311935,DE
+872311936,872311983,FR
+872311984,872311999,FI
+872312000,872312063,NL
+872312064,872312159,FR
+872312160,872312191,CZ
+872312192,872312255,ES
+872312256,872312383,FR
+872312384,872312447,IT
+872312448,872312511,FR
+872312512,872312575,IE
+872312576,872312703,FR
+872312704,872312767,ES
+872312768,872316797,FR
872316798,872316798,PT
-872316799,872321379,FR
+872316799,872321183,FR
+872321184,872321215,FI
+872321216,872321279,ES
+872321280,872321379,FR
872321380,872321383,GB
-872321384,872322623,FR
+872321384,872321599,FR
+872321600,872321663,IT
+872321664,872321711,FR
+872321712,872321727,CZ
+872321728,872322623,FR
872322624,872322655,GB
-872322656,872323936,FR
+872322656,872322943,FR
+872322944,872323071,GB
+872323072,872323135,FR
+872323136,872323199,ES
+872323200,872323327,GB
+872323328,872323407,FR
+872323408,872323423,FI
+872323424,872323471,FR
+872323472,872323487,ES
+872323488,872323551,FR
+872323552,872323583,GB
+872323584,872323647,FR
+872323648,872323711,NL
+872323712,872323775,FR
+872323776,872323839,ES
+872323840,872323936,FR
872323937,872323937,DE
-872323938,872326151,FR
+872323938,872324239,FR
+872324240,872324255,LT
+872324256,872324719,FR
+872324720,872324723,PL
+872324724,872324831,FR
+872324832,872324863,CZ
+872324864,872324927,FR
+872324928,872324991,IT
+872324992,872325567,FR
+872325568,872325583,FI
+872325584,872325707,FR
+872325708,872325711,ES
+872325712,872325823,FR
+872325824,872325887,DE
+872325888,872326151,FR
872326152,872326155,CZ
-872326156,872326176,FR
-872326177,872326179,PT
-872326180,872327807,FR
+872326156,872326175,FR
+872326176,872326207,PT
+872326208,872326271,FR
+872326272,872326275,FI
+872326276,872326303,FR
+872326304,872326311,LT
+872326312,872326399,FR
+872326400,872326431,CZ
+872326432,872326495,FR
+872326496,872326511,BE
+872326512,872326723,FR
+872326724,872326727,GB
+872326728,872326815,FR
+872326816,872326823,GB
+872326824,872327615,FR
+872327616,872327679,ES
+872327680,872327807,FR
872327808,872327811,FI
872327812,872327815,IE
872327816,872327831,FR
872327832,872327835,IT
-872327836,872328383,FR
+872327836,872327887,FR
+872327888,872327903,ES
+872327904,872328351,FR
+872328352,872328383,IT
872328384,872328447,PL
-872328448,872330279,FR
+872328448,872328575,FR
+872328576,872328591,DE
+872328592,872328671,FR
+872328672,872328703,NL
+872328704,872329151,FR
+872329152,872329215,DE
+872329216,872329219,FR
+872329220,872329223,IE
+872329224,872329263,FR
+872329264,872329271,ES
+872329272,872329407,FR
+872329408,872329471,ES
+872329472,872329599,GB
+872329600,872329951,FR
+872329952,872329983,GB
+872329984,872330279,FR
872330280,872330283,GB
-872330284,872338880,FR
+872330284,872330527,FR
+872330528,872330559,CZ
+872330560,872330727,FR
+872330728,872330735,IT
+872330736,872331271,FR
+872331272,872331275,PL
+872331276,872332287,FR
+872332288,872332295,PT
+872332296,872332383,FR
+872332384,872332415,DE
+872332416,872332607,FR
+872332608,872332671,BE
+872332672,872332735,FR
+872332736,872332799,ES
+872332800,872332831,IE
+872332832,872338880,FR
872338881,872338881,BE
-872338882,872342335,FR
+872338882,872341887,FR
+872341888,872341903,ES
+872341904,872342335,FR
872342336,872342367,ES
-872342368,872344603,FR
+872342368,872342623,FR
+872342624,872342655,DE
+872342656,872343191,FR
+872343192,872343199,ES
+872343200,872343351,FR
+872343352,872343355,GB
+872343356,872344423,FR
+872344424,872344431,ES
+872344432,872344603,FR
872344604,872344607,GB
-872344608,872346978,FR
-872346979,872346979,DE
-872346980,872347063,FR
+872344608,872344639,IT
+872344640,872344895,FR
+872344896,872344959,NL
+872344960,872345151,FR
+872345152,872345215,CZ
+872345216,872345343,GB
+872345344,872346095,FR
+872346096,872346111,DE
+872346112,872346199,FR
+872346200,872346203,CZ
+872346204,872346223,FR
+872346224,872346239,ES
+872346240,872346319,FR
+872346320,872346335,CZ
+872346336,872346351,FR
+872346352,872346367,FI
+872346368,872346799,FR
+872346800,872346815,DE
+872346816,872346879,ES
+872346880,872346943,FR
+872346944,872347007,DE
+872347008,872347039,FR
+872347040,872347055,GB
+872347056,872347063,FR
872347064,872347067,PT
-872347068,872354752,FR
-872354753,872354753,BE
-872354754,872354780,FR
-872354781,872354781,BE
-872354782,872357423,FR
-872357424,872357427,PT
-872357428,872357429,FR
-872357430,872357433,PT
-872357434,872363135,FR
+872347068,872347263,FR
+872347264,872347271,CZ
+872347272,872347511,FR
+872347512,872347519,ES
+872347520,872347647,FR
+872347648,872347679,GB
+872347680,872348095,FR
+872348096,872348159,IT
+872348160,872348799,FR
+872348800,872348863,BE
+872348864,872348959,FR
+872348960,872348991,GB
+872348992,872349039,FR
+872349040,872349055,IT
+872349056,872349983,FR
+872349984,872350015,GB
+872350016,872350039,FR
+872350040,872350047,NL
+872350048,872350271,FR
+872350272,872350335,BE
+872350336,872350351,NL
+872350352,872350399,FR
+872350400,872350463,NL
+872350464,872350815,FR
+872350816,872350847,IT
+872350848,872351327,FR
+872351328,872351359,ES
+872351360,872351575,FR
+872351576,872351583,FI
+872351584,872351679,FR
+872351680,872351743,DE
+872351744,872351879,FR
+872351880,872351883,PL
+872351884,872352443,FR
+872352444,872352447,DE
+872352448,872353119,FR
+872353120,872353151,PT
+872353152,872353343,FR
+872353344,872353407,IE
+872353408,872353471,FR
+872353472,872353535,ES
+872353536,872353663,FR
+872353664,872353791,GB
+872353792,872354079,FR
+872354080,872354111,CZ
+872354112,872354263,FR
+872354264,872354271,ES
+872354272,872354367,FR
+872354368,872354399,PT
+872354400,872354751,FR
+872354752,872354815,BE
+872354816,872355071,FR
+872355072,872355103,ES
+872355104,872355307,FR
+872355308,872355311,NL
+872355312,872355679,FR
+872355680,872355711,PT
+872355712,872356375,FR
+872356376,872356383,FI
+872356384,872356399,FR
+872356400,872356415,ES
+872356416,872356479,DE
+872356480,872356671,FR
+872356672,872356735,IT
+872356736,872357423,FR
+872357424,872357439,PT
+872357440,872357503,ES
+872357504,872357671,FR
+872357672,872357679,IT
+872357680,872357695,FR
+872357696,872357759,NL
+872357760,872363071,FR
+872363072,872363103,ES
+872363104,872363135,FR
872363136,872363199,PL
-872363200,872364863,FR
+872363200,872363423,FR
+872363424,872363455,CZ
+872363456,872363871,FR
+872363872,872363903,PT
+872363904,872364671,FR
+872364672,872364703,LT
+872364704,872364775,FR
+872364776,872364783,DE
+872364784,872364847,FR
+872364848,872364855,DE
+872364856,872364863,FR
872364864,872364898,NL
872364899,872364899,FR
872364900,872364927,NL
-872364928,872374459,FR
+872364928,872365019,FR
+872365020,872365023,CZ
+872365024,872365311,FR
+872365312,872365319,PT
+872365320,872365551,FR
+872365552,872365567,DE
+872365568,872374459,FR
872374460,872374463,GB
-872374464,872374608,FR
-872374609,872374618,ES
-872374619,872375295,FR
+872374464,872374543,FR
+872374544,872374559,LT
+872374560,872374591,FR
+872374592,872374655,ES
+872374656,872375007,FR
+872375008,872375039,PT
+872375040,872375295,FR
872375296,872375423,NL
-872375424,872376687,FR
+872375424,872376191,FR
+872376192,872376319,GB
+872376320,872376687,FR
872376688,872376691,CZ
-872376692,872377297,FR
-872377298,872377299,ES
-872377300,872380247,FR
+872376692,872376895,FR
+872376896,872376959,BE
+872376960,872377279,FR
+872377280,872377343,ES
+872377344,872377919,FR
+872377920,872377983,BE
+872377984,872378047,IE
+872378048,872378207,FR
+872378208,872378239,IT
+872378240,872378447,FR
+872378448,872378463,CZ
+872378464,872379103,FR
+872379104,872379135,PL
+872379136,872379199,FR
+872379200,872379263,DE
+872379264,872379375,FR
+872379376,872379391,GB
+872379392,872379775,FR
+872379776,872379903,IT
+872379904,872379967,FR
+872379968,872380031,NL
+872380032,872380143,FR
+872380144,872380147,DE
+872380148,872380247,FR
872380248,872380248,ES
872380249,872380607,FR
872380608,872380671,ES
-872380672,872383743,FR
+872380672,872380783,FR
+872380784,872380799,IE
+872380800,872381063,FR
+872381064,872381071,CZ
+872381072,872381151,FR
+872381152,872381183,CZ
+872381184,872381343,FR
+872381344,872381375,PL
+872381376,872382143,FR
+872382144,872382207,ES
+872382208,872382335,FR
+872382336,872382463,GB
+872382464,872382655,FR
+872382656,872382719,DE
+872382720,872382779,FR
+872382780,872382783,ES
+872382784,872383327,FR
+872383328,872383359,PL
+872383360,872383519,FR
+872383520,872383551,ES
+872383552,872383583,GB
+872383584,872383743,FR
872383744,872383759,DE
-872383760,872384095,FR
+872383760,872383807,FR
+872383808,872383871,IT
+872383872,872383967,FR
+872383968,872383999,CZ
+872384000,872384003,PL
+872384004,872384095,FR
872384096,872384127,ES
-872384128,872388415,FR
+872384128,872384287,FR
+872384288,872384319,FI
+872384320,872384383,ES
+872384384,872385103,FR
+872385104,872385119,PL
+872385120,872385151,FR
+872385152,872385167,LT
+872385168,872385183,FR
+872385184,872385215,DE
+872385216,872385279,BE
+872385280,872385535,FR
+872385536,872385543,PT
+872385544,872385615,FR
+872385616,872385631,NL
+872385632,872385671,FR
+872385672,872385679,PL
+872385680,872385695,FR
+872385696,872385727,PT
+872385728,872386175,FR
+872386176,872386303,GB
+872386304,872386335,FR
+872386336,872386367,FI
+872386368,872386399,FR
+872386400,872386431,IT
+872386432,872386591,FR
+872386592,872386607,LT
+872386608,872386623,FR
+872386624,872386687,IT
+872386688,872386719,FR
+872386720,872386751,PL
+872386752,872387007,FR
+872387008,872387071,IE
+872387072,872387263,FR
+872387264,872387279,PT
+872387280,872387295,PL
+872387296,872387775,FR
+872387776,872387839,IT
+872387840,872388191,FR
+872388192,872388223,DE
+872388224,872388255,FR
+872388256,872388287,CZ
+872388288,872388351,ES
+872388352,872388407,FR
+872388408,872388415,PT
872388416,872388447,ES
-872388448,872391230,FR
+872388448,872388511,FR
+872388512,872388543,PL
+872388544,872388591,FR
+872388592,872388607,ES
+872388608,872388671,DE
+872388672,872388799,FR
+872388800,872388863,DE
+872388864,872389247,FR
+872389248,872389311,DE
+872389312,872389535,FR
+872389536,872389567,GB
+872389568,872389983,FR
+872389984,872390015,NL
+872390016,872390495,FR
+872390496,872390527,PL
+872390528,872390575,FR
+872390576,872390655,ES
+872390656,872391230,FR
872391231,872391231,BE
872391232,872393204,FR
872393205,872393205,BE
-872393206,872403606,FR
-872403607,872403607,PT
-872403608,872409679,FR
+872393206,872403023,FR
+872403024,872403039,LT
+872403040,872403071,NL
+872403072,872403159,FR
+872403160,872403167,PT
+872403168,872403183,FR
+872403184,872403199,PL
+872403200,872403567,FR
+872403568,872403583,LT
+872403584,872403599,FR
+872403600,872403615,PT
+872403616,872403647,PL
+872403648,872403711,IT
+872403712,872403743,FR
+872403744,872403775,PT
+872403776,872403839,DE
+872403840,872404071,FR
+872404072,872404079,PL
+872404080,872404511,FR
+872404512,872404543,IT
+872404544,872404639,FR
+872404640,872404671,PL
+872404672,872405567,FR
+872405568,872405631,BE
+872405632,872405663,FR
+872405664,872405679,GB
+872405680,872405791,FR
+872405792,872405823,FI
+872405824,872405887,NL
+872405888,872405935,FR
+872405936,872405951,CZ
+872405952,872406047,FR
+872406048,872406079,PL
+872406080,872406207,FR
+872406208,872406271,ES
+872406272,872406399,FR
+872406400,872406415,DE
+872406416,872406431,FR
+872406432,872406439,ES
+872406440,872406591,FR
+872406592,872406655,DE
+872406656,872406815,FR
+872406816,872406847,FI
+872406848,872406879,FR
+872406880,872406911,ES
+872406912,872407167,FR
+872407168,872407171,FI
+872407172,872407231,FR
+872407232,872407295,IT
+872407296,872408255,FR
+872408256,872408319,NL
+872408320,872408383,FR
+872408384,872408447,IE
+872408448,872408591,FR
+872408592,872408607,LT
+872408608,872408839,FR
+872408840,872408847,ES
+872408848,872409151,FR
+872409152,872409215,DE
+872409216,872409343,GB
+872409344,872409631,FR
+872409632,872409663,IT
+872409664,872409679,FR
872409680,872409683,ES
-872409684,872415231,FR
+872409684,872410175,FR
+872410176,872410239,DE
+872410240,872410759,FR
+872410760,872410767,IT
+872410768,872410847,FR
+872410848,872410879,IT
+872410880,872415231,FR
872415232,873463807,US
873463808,873646466,IE
873646467,873646467,US
@@ -15074,12 +18724,22 @@
873664547,873725951,IE
873725952,874250239,US
874250240,874381311,DE
-874381312,874512383,IE
+874381312,874389089,IE
+874389090,874389090,GB
+874389091,874512383,IE
874512384,875446271,US
875446272,875454463,FR
875454464,875473919,US
875473920,875474943,BR
-875474944,875495423,US
+875474944,875476991,US
+875476992,875478015,DE
+875478016,875479039,US
+875479040,875485183,SE
+875485184,875486207,US
+875486208,875487231,SE
+875487232,875491327,US
+875491328,875492351,IE
+875492352,875495423,US
875495424,875560959,FR
875560960,875823103,IE
875823104,876085247,US
@@ -15125,7 +18785,23 @@
878512128,878513151,SG
878513152,878514175,US
878514176,878514431,IE
-878514432,878576895,US
+878514432,878514447,US
+878514448,878514449,IE
+878514450,878514865,US
+878514866,878514867,IE
+878514868,878515179,US
+878515180,878515181,SG
+878515182,878515469,US
+878515470,878515471,IE
+878515472,878522389,US
+878522390,878522391,DE
+878522392,878538785,US
+878538786,878538787,IE
+878538788,878545659,US
+878545660,878545661,GB
+878545662,878545915,US
+878545916,878545917,GB
+878545918,878576895,US
878576896,878577151,IE
878577152,878577407,KR
878577408,878577663,BR
@@ -15138,9 +18814,11 @@
878579456,878579711,GB
878579712,878579967,FR
878579968,878580223,DE
-878580224,878580735,US
+878580224,878580479,US
+878580480,878580735,JP
878580736,878580991,IN
-878580992,878581759,US
+878580992,878581503,US
+878581504,878581759,SE
878581760,878582783,IE
878582784,878583807,US
878583808,878591999,GB
@@ -15186,7 +18864,11 @@
878639328,878639359,US
878639360,878639391,CN
878639392,878639407,FR
-878639408,878648831,US
+878639408,878639455,US
+878639456,878639471,JP
+878639472,878639487,US
+878639488,878639503,SE
+878639504,878648831,US
878648832,878649343,JP
878649344,878649855,US
878649856,878650111,JP
@@ -15209,13 +18891,20 @@
878679040,878679807,GB
878679808,878680575,US
878680576,878681343,FR
-878681344,878682879,US
+878681344,878682111,JP
+878682112,878682879,US
878682880,878683647,BR
-878683648,878690303,US
+878683648,878684415,US
+878684416,878685183,SE
+878685184,878690303,US
878690304,878694399,KR
878694400,878695423,US
878695424,878696447,SG
-878696448,878702591,US
+878696448,878698751,US
+878698752,878699007,JP
+878699008,878699263,US
+878699264,878699519,SE
+878699520,878702591,US
878702592,878702847,BR
878702848,878703103,AU
878703104,878703359,SG
@@ -15237,13 +18926,99 @@
878706512,878706559,US
878706560,878706575,DE
878706576,878706591,CN
-878706592,878772223,US
+878706592,878706703,US
+878706704,878706719,BR
+878706720,878772223,US
878772224,878772239,BR
-878772240,878804991,US
+878772240,878772255,US
+878772256,878772287,CL
+878772288,878772351,BR
+878772352,878772479,US
+878772480,878772735,BR
+878772736,878788623,US
+878788624,878788671,BR
+878788672,878789119,US
+878789120,878790655,BR
+878790656,878804991,US
878804992,878805247,AT
-878805248,878837759,US
+878805248,878806015,GB
+878806016,878806271,FI
+878806272,878806399,AT
+878806400,878806527,GB
+878806528,878807551,NL
+878807552,878807679,IE
+878807680,878807743,AT
+878807744,878807775,NL
+878807776,878807791,AT
+878807792,878807807,US
+878807808,878808063,NL
+878808064,878808191,IE
+878808192,878808319,NL
+878808320,878808831,AT
+878808832,878808991,NL
+878808992,878809087,US
+878809088,878809343,NL
+878809344,878809599,IE
+878809600,878809855,GB
+878809856,878810111,NL
+878810112,878810239,IE
+878810240,878810367,AT
+878810368,878810623,NL
+878810624,878810879,FR
+878810880,878811135,NL
+878811136,878811263,AT
+878811264,878811391,NL
+878811392,878811519,IE
+878811520,878821375,US
+878821376,878821695,NL
+878821696,878821759,US
+878821760,878822655,NL
+878822656,878837759,US
878837760,878837775,AU
-878837776,879499263,US
+878837776,878837887,US
+878837888,878838143,AU
+878838144,878838271,US
+878838272,878838527,AU
+878838528,878841855,US
+878841856,878841919,ZA
+878841920,878854143,US
+878854144,878854207,JP
+878854208,878854399,HK
+878854400,878854783,SG
+878854784,878854911,JP
+878854912,878855167,HK
+878855168,878855679,JP
+878855680,878856191,SG
+878856192,878856447,HK
+878856448,878857087,JP
+878857088,878857215,KR
+878857216,878857535,AU
+878857536,878857567,JP
+878857568,878857599,US
+878857600,878857727,JP
+878857728,878857983,HK
+878857984,878858239,JP
+878858240,878858367,SG
+878858368,878862335,US
+878862336,878862975,HK
+878862976,878863103,US
+878863104,878863359,HK
+878863360,879053823,US
+879053824,879054335,FR
+879054336,879070207,US
+879070208,879070719,FR
+879070720,879230975,US
+879230976,879231231,CA
+879231232,879231743,US
+879231744,879231999,CA
+879232000,879296511,US
+879296512,879296767,NL
+879296768,879297279,IE
+879297280,879297535,NL
+879297536,879297791,IE
+879297792,879345663,US
+879345664,879346175,IN
+879346176,879499263,US
879499264,879501311,NL
879501312,879502335,HK
879502336,879503359,BR
@@ -15254,7 +19029,9 @@
879505408,879505919,KR
879505920,879506431,GB
879506432,879506943,FR
-879506944,879549951,US
+879506944,879507455,US
+879507456,879509503,NL
+879509504,879549951,US
879549952,879550463,FR
879550464,879550975,GB
879550976,879551487,KR
@@ -15314,7 +19091,11 @@
879804864,879804991,IE
879804992,879805183,NL
879805184,879805247,IE
-879805248,879808511,US
+879805248,879805295,NL
+879805296,879805311,IE
+879805312,879805343,NL
+879805344,879805407,IE
+879805408,879808511,US
879808512,879808639,GB
879808640,879808767,NL
879808768,879808895,IE
@@ -15372,7 +19153,7 @@
879892480,879894527,IN
879894528,879896575,JP
879896576,879897599,IN
-879897600,879899647,US
+879897600,879899647,KR
879899648,879900159,HK
879900160,879900671,US
879900672,879901183,SG
@@ -15381,7 +19162,8 @@
879905792,879906815,IE
879906816,879910911,GB
879910912,879912959,IE
-879912960,879916031,US
+879912960,879915007,FR
+879915008,879916031,US
879916032,879917055,NL
879917056,879918079,IE
879918080,879927295,US
@@ -15418,11 +19200,16 @@
880557568,880557823,CA
880557824,880558079,US
880558080,880574463,CA
-880574464,880807935,US
+880574464,880642559,US
+880642560,880643071,IE
+880643072,880643583,NL
+880643584,880807935,US
880807936,880808191,CA
880808192,880861183,US
880861184,880869375,HK
-880869376,880872191,US
+880869376,880871423,US
+880871424,880871935,CA
+880871936,880872191,US
880872192,880872447,CA
880872448,880874751,US
880874752,880875007,CA
@@ -15433,7 +19220,7 @@
880878592,880881663,US
880881664,880885759,PR
880885760,880934911,US
-880934912,881065983,SG
+880934912,881065983,CN
881065984,881332223,US
881332224,881332735,IN
881332736,881333759,GB
@@ -15474,11 +19261,29 @@
881840640,881840895,SG
881840896,881841919,US
881841920,881842687,FR
-881842688,881859327,US
+881842688,881842943,AU
+881842944,881859327,US
881859328,881859583,CA
881859584,881868799,US
881868800,881876991,IT
-881876992,882016255,US
+881876992,881905727,US
+881905728,881905919,IE
+881905920,881905983,DE
+881905984,881906047,GB
+881906048,881906111,FR
+881906112,881906175,GB
+881906176,881906239,IE
+881906240,881906303,FR
+881906304,881906367,IE
+881906368,881906495,DE
+881906496,881906559,US
+881906560,881906635,GB
+881906636,881909823,US
+881909824,881909887,AU
+881909888,881909951,SG
+881909952,881910079,US
+881910080,881910207,JP
+881910208,882016255,US
882016256,882049023,IE
882049024,882065407,AU
882065408,882073599,JP
@@ -15583,7 +19388,9 @@
887660288,887685119,US
887685120,887701503,CA
887701504,887717887,US
-887717888,887750655,NL
+887717888,887735587,NL
+887735588,887735588,GB
+887735589,887750655,NL
887750656,887816191,US
887816192,887832575,CA
887832576,887881727,US
@@ -15621,9 +19428,27 @@
888128768,888129023,SG
888129024,888130047,US
888130048,888130303,IN
-888130304,888132607,US
+888130304,888130815,US
+888130816,888131071,IE
+888131072,888132607,US
888132608,888133119,NL
-888133120,888274943,US
+888133120,888134143,US
+888134144,888134655,AU
+888134656,888135679,US
+888135680,888135935,HK
+888135936,888136447,AU
+888136448,888136703,SG
+888136704,888137471,US
+888137472,888137727,GB
+888137728,888137983,US
+888137984,888138239,AE
+888138240,888139775,US
+888139776,888140031,GB
+888140032,888140287,FR
+888140288,888140799,NL
+888140800,888141823,US
+888141824,888142079,IE
+888142080,888274943,US
888274944,888291327,CA
888291328,888348671,US
888348672,888356863,JP
@@ -15661,41 +19486,755 @@
888758272,889016319,US
889016320,889020415,SG
889020416,889028607,JP
-889028608,889036799,US
-889036800,889039871,IN
-889039872,889041919,JP
-889041920,889042943,NL
-889042944,889043967,IE
-889043968,889046015,KR
-889046016,889048063,CA
-889048064,889050111,AU
-889050112,889051135,SG
-889051136,889052159,HK
-889052160,889135103,US
+889028608,889135103,US
889135104,889143295,AU
889143296,889192447,US
889192448,905969663,DE
905969664,908328959,US
-908328960,908339377,FR
-908339378,908339378,DE
-908339379,908345543,FR
+908328960,908329215,FR
+908329216,908329247,PT
+908329248,908329279,FR
+908329280,908329311,PT
+908329312,908329755,FR
+908329756,908329759,DE
+908329760,908329855,FR
+908329856,908329983,IT
+908329984,908330111,ES
+908330112,908330239,NL
+908330240,908330367,DE
+908330368,908330663,FR
+908330664,908330671,ES
+908330672,908331695,FR
+908331696,908331703,LT
+908331704,908331775,FR
+908331776,908331903,IT
+908331904,908332847,FR
+908332848,908332863,LT
+908332864,908332991,FR
+908332992,908333023,CZ
+908333024,908333823,FR
+908333824,908333951,DE
+908333952,908334079,GB
+908334080,908334271,FR
+908334272,908334303,PT
+908334304,908334919,FR
+908334920,908334927,ES
+908334928,908334951,FR
+908334952,908334959,ES
+908334960,908335871,FR
+908335872,908335999,ES
+908336000,908336031,FR
+908336032,908336039,DE
+908336040,908336167,FR
+908336168,908336183,ES
+908336184,908336215,FR
+908336216,908336219,ES
+908336220,908336255,FR
+908336256,908336287,CZ
+908336288,908336295,FR
+908336296,908336303,ES
+908336304,908336535,FR
+908336536,908336543,ES
+908336544,908336639,FR
+908336640,908336767,NL
+908336768,908336831,FR
+908336832,908336839,ES
+908336840,908336991,FR
+908336992,908337023,PT
+908337024,908337151,IE
+908337152,908337383,FR
+908337384,908337391,ES
+908337392,908337407,FR
+908337408,908337535,NL
+908337536,908338367,FR
+908338368,908338375,ES
+908338376,908339295,FR
+908339296,908339303,ES
+908339304,908339327,FR
+908339328,908339455,DE
+908339456,908339583,NL
+908339584,908339975,FR
+908339976,908339983,ES
+908339984,908340079,FR
+908340080,908340095,LT
+908340096,908340223,GB
+908340224,908340479,FR
+908340480,908340607,BE
+908340608,908340735,ES
+908340736,908340863,GB
+908340864,908341207,FR
+908341208,908341215,ES
+908341216,908345343,FR
+908345344,908345359,ES
+908345360,908345447,FR
+908345448,908345455,ES
+908345456,908345527,FR
+908345528,908345535,ES
+908345536,908345543,FR
908345544,908345547,ES
-908345548,908377023,FR
-908377024,908377087,PL
-908377088,908386431,FR
+908345548,908345583,FR
+908345584,908345599,LT
+908345600,908345727,DE
+908345728,908345855,ES
+908345856,908345951,FR
+908345952,908345959,ES
+908345960,908346271,FR
+908346272,908346279,ES
+908346280,908346287,FR
+908346288,908346303,LT
+908346304,908346647,FR
+908346648,908346655,ES
+908346656,908347455,FR
+908347456,908347471,ES
+908347472,908347919,FR
+908347920,908347927,ES
+908347928,908347935,FR
+908347936,908347943,ES
+908347944,908347951,FR
+908347952,908347959,ES
+908347960,908348143,FR
+908348144,908348159,LT
+908348160,908348415,FR
+908348416,908348543,IT
+908348544,908348671,FR
+908348672,908348799,ES
+908348800,908348855,FR
+908348856,908348863,ES
+908348864,908349455,FR
+908349456,908349463,ES
+908349464,908349503,FR
+908349504,908349519,LT
+908349520,908349647,FR
+908349648,908349655,ES
+908349656,908349767,FR
+908349768,908349775,ES
+908349776,908349823,FR
+908349824,908349951,GB
+908349952,908350591,FR
+908350592,908350623,DE
+908350624,908350679,FR
+908350680,908350687,ES
+908350688,908350719,PT
+908350720,908350751,FR
+908350752,908350759,ES
+908350760,908350815,FR
+908350816,908350847,PT
+908350848,908350975,DE
+908350976,908351007,FI
+908351008,908351039,FR
+908351040,908351071,GB
+908351072,908351127,FR
+908351128,908351135,ES
+908351136,908351327,FR
+908351328,908351335,ES
+908351336,908351423,FR
+908351424,908351455,CZ
+908351456,908351487,FR
+908351488,908351615,IT
+908351616,908351743,ES
+908351744,908351871,NL
+908351872,908351999,DE
+908352000,908352095,FR
+908352096,908352127,PL
+908352128,908352143,ES
+908352144,908352511,FR
+908352512,908352767,GB
+908352768,908353023,FR
+908353024,908353151,BE
+908353152,908353279,GB
+908353280,908356607,FR
+908356608,908359679,DE
+908359680,908361815,FR
+908361816,908361823,ES
+908361824,908361855,PT
+908361856,908362623,FR
+908362624,908362751,DE
+908362752,908362943,FR
+908362944,908362951,ES
+908362952,908362959,FR
+908362960,908362975,CH
+908362976,908362999,FR
+908363000,908363007,ES
+908363008,908363375,FR
+908363376,908363391,ES
+908363392,908363471,FR
+908363472,908363479,ES
+908363480,908363487,FR
+908363488,908363519,FI
+908363520,908363647,NL
+908363648,908363775,DE
+908363776,908363887,FR
+908363888,908363903,LT
+908363904,908363919,FR
+908363920,908363927,ES
+908363928,908364063,FR
+908364064,908364095,FI
+908364096,908364215,FR
+908364216,908364223,ES
+908364224,908364287,FR
+908364288,908364415,ES
+908364416,908364431,FR
+908364432,908364439,ES
+908364440,908364799,FR
+908364800,908364927,IT
+908364928,908364935,FR
+908364936,908364943,ES
+908364944,908364959,FR
+908364960,908364967,ES
+908364968,908365215,FR
+908365216,908365231,ES
+908365232,908366199,FR
+908366200,908366335,ES
+908366336,908366631,FR
+908366632,908366639,ES
+908366640,908366839,FR
+908366840,908366847,ES
+908366848,908368015,FR
+908368016,908368031,LT
+908368032,908368167,FR
+908368168,908368175,ES
+908368176,908368391,FR
+908368392,908368399,ES
+908368400,908368479,FR
+908368480,908368511,ES
+908368512,908368639,FR
+908368640,908368767,IT
+908368768,908369023,FR
+908369024,908369055,CZ
+908369056,908369239,FR
+908369240,908369247,ES
+908369248,908369543,FR
+908369544,908369551,ES
+908369552,908369743,FR
+908369744,908369775,LT
+908369776,908369919,FR
+908369920,908371967,GB
+908371968,908374015,PL
+908374016,908376127,FR
+908376128,908376255,PL
+908376256,908376591,FR
+908376592,908376599,PL
+908376600,908376767,FR
+908376768,908376895,PL
+908376896,908376959,FR
+908376960,908377087,PL
+908377088,908378255,FR
+908378256,908378271,NL
+908378272,908378279,ES
+908378280,908378383,FR
+908378384,908378399,LT
+908378400,908378463,FR
+908378464,908378495,PT
+908378496,908378503,FR
+908378504,908378511,ES
+908378512,908378575,FR
+908378576,908378591,GB
+908378592,908378783,FR
+908378784,908378799,LT
+908378800,908378863,FR
+908378864,908378871,GB
+908378872,908378879,ES
+908378880,908378983,FR
+908378984,908378991,ES
+908378992,908379039,FR
+908379040,908379071,CZ
+908379072,908379903,FR
+908379904,908379911,ES
+908379912,908379951,FR
+908379952,908379967,LT
+908379968,908380223,FR
+908380224,908380239,ES
+908380240,908380319,FR
+908380320,908380327,ES
+908380328,908380351,FR
+908380352,908380383,PL
+908380384,908380415,PT
+908380416,908380543,ES
+908380544,908380959,FR
+908380960,908380991,PT
+908380992,908381055,FR
+908381056,908381183,GB
+908381184,908381311,IE
+908381312,908381327,FR
+908381328,908381335,ES
+908381336,908381751,FR
+908381752,908381759,ES
+908381760,908382143,FR
+908382144,908382159,NL
+908382160,908382719,FR
+908382720,908382751,PL
+908382752,908382823,FR
+908382824,908382831,ES
+908382832,908382951,FR
+908382952,908382959,ES
+908382960,908383015,FR
+908383016,908383023,ES
+908383024,908384511,FR
+908384512,908384639,BE
+908384640,908384767,PL
+908384768,908385063,FR
+908385064,908385071,ES
+908385072,908385407,FR
+908385408,908385423,LT
+908385424,908385535,FR
+908385536,908385663,IT
+908385664,908385763,FR
+908385764,908385767,NL
+908385768,908386007,FR
+908386008,908386015,ES
+908386016,908386047,FR
+908386048,908386079,GB
+908386080,908386159,FR
+908386160,908386175,CZ
+908386176,908386431,FR
908386432,908386447,GB
-908386448,908387151,FR
+908386448,908387071,FR
+908387072,908387135,GB
+908387136,908387151,FR
908387152,908387167,GB
-908387168,908388399,FR
+908387168,908387775,FR
+908387776,908387839,GB
+908387840,908387903,FR
+908387904,908387967,GB
+908387968,908388399,FR
908388400,908388415,DE
908388416,908388431,FR
908388432,908388447,DE
908388448,908388879,FR
908388880,908388887,DE
-908388888,908389119,FR
-908389120,908389375,DE
-908389376,908525567,FR
-908525568,908591103,CA
+908388888,908389055,FR
+908389056,908389375,DE
+908389376,908389759,FR
+908389760,908389823,DE
+908389824,908390015,FR
+908390016,908390079,DE
+908390080,908390187,FR
+908390188,908390191,DE
+908390192,908390247,FR
+908390248,908390251,DE
+908390252,908391159,FR
+908391160,908391295,ES
+908391296,908391423,GB
+908391424,908392759,FR
+908392760,908392767,ES
+908392768,908392863,FR
+908392864,908392879,LT
+908392880,908393215,FR
+908393216,908393247,BE
+908393248,908393311,FR
+908393312,908393319,GB
+908393320,908394495,FR
+908394496,908396543,GB
+908396544,908398591,FR
+908398592,908399615,GB
+908399616,908403343,FR
+908403344,908403351,ES
+908403352,908403655,FR
+908403656,908403663,ES
+908403664,908403735,FR
+908403736,908403743,ES
+908403744,908403775,FR
+908403776,908403807,CZ
+908403808,908403839,FR
+908403840,908403967,NL
+908403968,908405247,FR
+908405248,908405375,IT
+908405376,908405455,FR
+908405456,908405463,ES
+908405464,908405599,FR
+908405600,908405607,ES
+908405608,908405647,FR
+908405648,908405655,ES
+908405656,908406039,FR
+908406040,908406047,ES
+908406048,908406083,FR
+908406084,908406087,IT
+908406088,908406159,FR
+908406160,908406167,ES
+908406168,908406551,FR
+908406552,908406559,ES
+908406560,908406631,FR
+908406632,908406639,DE
+908406640,908406647,FR
+908406648,908406655,DE
+908406656,908407151,FR
+908407152,908407159,ES
+908407160,908408295,FR
+908408296,908408303,ES
+908408304,908408327,FR
+908408328,908408331,ES
+908408332,908408511,FR
+908408512,908408543,LT
+908408544,908408799,FR
+908408800,908408815,LT
+908408816,908409279,FR
+908409280,908409287,ES
+908409288,908409487,FR
+908409488,908409495,ES
+908409496,908409975,FR
+908409976,908409983,ES
+908409984,908410111,DE
+908410112,908410495,FR
+908410496,908410503,ES
+908410504,908410711,FR
+908410712,908410719,ES
+908410720,908410863,FR
+908410864,908410879,LT
+908410880,908412927,FR
+908412928,908414975,DE
+908414976,908417023,FR
+908417024,908417599,DE
+908417600,908417791,FR
+908417792,908417919,DE
+908417920,908418175,FR
+908418176,908418239,DE
+908418240,908418751,FR
+908418752,908418815,DE
+908418816,908419327,FR
+908419328,908419455,ES
+908419456,908419495,FR
+908419496,908419503,ES
+908419504,908419711,FR
+908419712,908419719,ES
+908419720,908419767,FR
+908419768,908419775,ES
+908419776,908419807,FR
+908419808,908419839,IT
+908419840,908419975,FR
+908419976,908419983,DE
+908419984,908419999,FR
+908420000,908420015,LT
+908420016,908420071,FR
+908420072,908420079,ES
+908420080,908420351,FR
+908420352,908420479,GB
+908420480,908420495,FR
+908420496,908420511,PT
+908420512,908420791,FR
+908420792,908420799,ES
+908420800,908420807,DE
+908420808,908421127,FR
+908421128,908421135,ES
+908421136,908421951,FR
+908421952,908421967,ES
+908421968,908422047,FR
+908422048,908422063,GB
+908422064,908422079,FI
+908422080,908422255,FR
+908422256,908422263,ES
+908422264,908422719,FR
+908422720,908422735,NL
+908422736,908422911,FR
+908422912,908422919,ES
+908422920,908423039,FR
+908423040,908423071,PT
+908423072,908423087,FR
+908423088,908423095,CZ
+908423096,908423103,ES
+908423104,908423319,FR
+908423320,908423327,ES
+908423328,908423823,FR
+908423824,908423831,ES
+908423832,908423895,FR
+908423896,908423903,ES
+908423904,908424263,FR
+908424264,908424271,ES
+908424272,908424319,FR
+908424320,908424447,DE
+908424448,908424511,FR
+908424512,908424527,LT
+908424528,908424535,ES
+908424536,908425055,FR
+908425056,908425087,PT
+908425088,908425151,FR
+908425152,908425183,FI
+908425184,908425463,FR
+908425464,908425471,ES
+908425472,908425855,FR
+908425856,908425983,ES
+908425984,908426287,FR
+908426288,908426295,ES
+908426296,908426391,FR
+908426392,908426399,ES
+908426400,908426431,FR
+908426432,908426447,LT
+908426448,908426479,FR
+908426480,908426495,GB
+908426496,908426703,FR
+908426704,908426711,ES
+908426712,908427119,FR
+908427120,908427127,ES
+908427128,908427143,FR
+908427144,908427151,ES
+908427152,908427247,FR
+908427248,908427263,ES
+908427264,908428351,FR
+908428352,908428415,PL
+908428416,908428671,FR
+908428672,908428735,PL
+908428736,908428799,FR
+908428800,908428863,PL
+908428864,908429311,FR
+908429312,908430335,PL
+908430336,908430847,FR
+908430848,908430911,PL
+908430912,908431167,FR
+908431168,908431231,PL
+908431232,908435495,FR
+908435496,908435503,ES
+908435504,908435647,FR
+908435648,908435663,ES
+908435664,908435839,FR
+908435840,908435967,GB
+908435968,908436223,FR
+908436224,908436351,ES
+908436352,908436479,NL
+908436480,908436503,FR
+908436504,908436511,ES
+908436512,908436535,FR
+908436536,908436543,ES
+908436544,908436607,FR
+908436608,908436735,DE
+908436736,908437279,FR
+908437280,908437295,IE
+908437296,908437335,FR
+908437336,908437343,ES
+908437344,908438023,FR
+908438024,908438031,ES
+908438032,908438087,FR
+908438088,908438095,ES
+908438096,908438111,LT
+908438112,908438399,FR
+908438400,908438407,ES
+908438408,908438527,FR
+908438528,908438655,IE
+908438656,908438783,ES
+908438784,908438911,DE
+908438912,908439087,FR
+908439088,908439103,ES
+908439104,908439295,FR
+908439296,908439423,BE
+908439424,908439679,FR
+908439680,908439807,NL
+908439808,908439871,FR
+908439872,908439903,PL
+908439904,908439967,FR
+908439968,908439999,PT
+908440000,908440031,PL
+908440032,908440063,FR
+908440064,908440191,GB
+908440192,908440223,FI
+908440224,908440255,FR
+908440256,908440287,PT
+908440288,908440319,CZ
+908440320,908440447,IT
+908440448,908441023,FR
+908441024,908441055,FI
+908441056,908441311,FR
+908441312,908441343,CZ
+908441344,908443263,FR
+908443264,908443391,BE
+908443392,908443487,FR
+908443488,908443519,GB
+908443520,908444159,FR
+908444160,908444223,DE
+908444224,908444667,FR
+908444668,908444671,DE
+908444672,908444799,FR
+908444800,908444863,DE
+908444864,908444927,FR
+908444928,908444991,DE
+908444992,908445375,FR
+908445376,908445439,DE
+908445440,908445503,FR
+908445504,908445567,DE
+908445568,908445695,FR
+908445696,908445823,DE
+908445824,908445887,FR
+908445888,908445951,DE
+908445952,908446335,FR
+908446336,908446399,DE
+908446400,908446463,FR
+908446464,908446527,DE
+908446528,908446591,FR
+908446592,908446623,DE
+908446624,908446655,FR
+908446656,908446719,DE
+908446720,908447231,FR
+908447232,908447295,DE
+908447296,908447423,FR
+908447424,908447487,DE
+908447488,908447679,FR
+908447680,908447743,DE
+908447744,908447903,FR
+908447904,908447919,GB
+908447920,908448927,FR
+908448928,908448935,IT
+908448936,908448995,FR
+908448996,908448999,IT
+908449000,908453887,FR
+908453888,908454911,PL
+908454912,908455167,FR
+908455168,908455231,PL
+908455232,908455487,FR
+908455488,908455551,PL
+908455552,908456831,FR
+908456832,908457535,GB
+908457536,908461143,FR
+908461144,908461147,ES
+908461148,908462063,FR
+908462064,908462079,GB
+908462080,908462431,FR
+908462432,908462463,CZ
+908462464,908462543,FR
+908462544,908462559,GB
+908462560,908464719,FR
+908464720,908464723,GB
+908464724,908465759,FR
+908465760,908465791,CZ
+908465792,908467323,FR
+908467324,908467327,NL
+908467328,908467967,FR
+908467968,908468095,BE
+908468096,908472319,FR
+908472320,908472575,PL
+908472576,908472671,FR
+908472672,908472767,PL
+908472768,908472831,FR
+908472832,908472991,PL
+908472992,908473023,FR
+908473024,908473087,PL
+908473088,908473215,FR
+908473216,908473231,PL
+908473232,908473343,FR
+908473344,908474367,PL
+908474368,908474431,FR
+908474432,908474495,PL
+908474496,908474815,FR
+908474816,908475007,PL
+908475008,908475071,FR
+908475072,908475135,PL
+908475136,908475455,FR
+908475456,908475583,PL
+908475584,908475711,FR
+908475712,908476223,PL
+908476224,908478527,FR
+908478528,908478591,GB
+908478592,908479167,FR
+908479168,908479295,GB
+908479296,908479327,FR
+908479328,908479359,GB
+908479360,908479679,FR
+908479680,908479743,GB
+908479744,908479999,FR
+908480000,908480511,GB
+908480512,908488959,FR
+908488960,908489215,ES
+908489216,908491167,FR
+908491168,908491199,CZ
+908491200,908491391,FR
+908491392,908491519,ES
+908491520,908491879,FR
+908491880,908491887,IT
+908491888,908492031,FR
+908492032,908492159,BE
+908492160,908492575,FR
+908492576,908492607,CZ
+908492608,908493567,FR
+908493568,908493631,PL
+908493632,908493695,FR
+908493696,908493759,PL
+908493760,908493823,FR
+908493824,908493887,PL
+908493888,908494143,FR
+908494144,908494207,PL
+908494208,908494335,FR
+908494336,908494399,PL
+908494400,908494527,FR
+908494528,908494655,PL
+908494656,908494847,FR
+908494848,908495871,PL
+908495872,908496511,FR
+908496512,908496575,PL
+908496576,908496703,FR
+908496704,908496767,PL
+908496768,908496895,FR
+908496896,908496959,GB
+908496960,908497023,FR
+908497024,908497151,GB
+908497152,908497279,FR
+908497280,908497343,GB
+908497344,908497471,FR
+908497472,908497535,GB
+908497536,908497983,FR
+908497984,908498047,GB
+908498048,908498431,FR
+908498432,908498495,GB
+908498496,908498943,FR
+908498944,908499199,DE
+908499200,908499263,FR
+908499264,908499519,DE
+908499520,908499583,FR
+908499584,908499775,DE
+908499776,908499903,FR
+908499904,908500991,DE
+908500992,908501407,FR
+908501408,908501439,GB
+908501440,908501791,FR
+908501792,908501823,CZ
+908501824,908502399,FR
+908502400,908502527,ES
+908502528,908504639,FR
+908504640,908504703,GB
+908504704,908509183,FR
+908509184,908510207,PL
+908510208,908510783,FR
+908510784,908510847,PL
+908510848,908510911,FR
+908510912,908510975,PL
+908510976,908511487,FR
+908511488,908511551,PL
+908511552,908511743,FR
+908511744,908511807,PL
+908511808,908511871,FR
+908511872,908511999,PL
+908512000,908512511,FR
+908512512,908512575,PL
+908512576,908512639,FR
+908512640,908512767,PL
+908512768,908512831,FR
+908512832,908512895,PL
+908512896,908513023,FR
+908513024,908513087,PL
+908513088,908513343,FR
+908513344,908513375,GB
+908513376,908513535,FR
+908513536,908513727,GB
+908513728,908513791,FR
+908513792,908513855,GB
+908513856,908514047,FR
+908514048,908514143,GB
+908514144,908514239,FR
+908514240,908514367,GB
+908514368,908514495,FR
+908514496,908514591,GB
+908514592,908514687,FR
+908514688,908515327,GB
+908515328,908515455,DE
+908515456,908515711,FR
+908515712,908515839,DE
+908515840,908516415,FR
+908516416,908516607,DE
+908516608,908518527,FR
+908518528,908518655,ES
+908518656,908520063,FR
+908520064,908520191,ES
+908520192,908520959,FR
+908520960,908521087,IT
+908521088,908525567,FR
+908525568,908534239,CA
+908534240,908534271,GB
+908534272,908591103,CA
908591104,910163967,US
910163968,910197237,JP
910197238,910197238,US
@@ -15730,7 +20269,8 @@
917401389,917635071,US
917635072,917700607,JP
917700608,917766143,SG
-917766144,918683647,US
+917766144,917897215,KR
+917897216,918683647,US
918683648,918814719,IE
918814720,919011327,US
919011328,919076863,JP
@@ -15776,7 +20316,9 @@
921633008,921633023,GB
921633024,921633039,CA
921633040,921633055,FR
-921633056,921633791,US
+921633056,921633071,US
+921633072,921633087,JP
+921633088,921633791,US
921633792,921634815,DE
921634816,921640959,US
921640960,921643007,IE
@@ -15786,8 +20328,13 @@
921649152,921657343,US
921657344,921657599,JP
921657600,921658111,US
-921658112,921658879,IE
-921658880,921662463,US
+921658112,921658367,IE
+921658368,921658879,GB
+921658880,921660155,US
+921660156,921660157,DE
+921660158,921660411,US
+921660412,921660413,DE
+921660414,921662463,US
921662464,921665535,KR
921665536,921747455,US
921747456,921748479,AU
@@ -15819,44 +20366,21 @@
922427705,922484735,SG
922484736,922615807,AU
922615808,922746879,SG
-922746880,956301311,US
+922746880,932323327,US
+932323328,932331519,PR
+932331520,956301311,US
956301312,959447039,BE
959447040,959512575,US
-959512576,960629507,BE
-960629508,960629508,GB
-960629509,960640769,BE
-960640770,960640770,GB
-960640771,960641023,BE
-960641024,960641279,GB
-960641280,960643327,BE
-960643328,960643343,GB
-960643344,960643365,BE
-960643366,960643367,GB
-960643368,960644351,BE
-960644352,960644863,GB
-960644864,960646399,BE
-960646400,960646911,GB
-960646912,960654335,BE
-960654336,960654591,GB
-960654592,960655359,BE
-960655360,960657407,GB
-960657408,960662015,BE
-960662016,960662271,DE
-960662272,960662783,BE
+959512576,960495615,BE
+960495616,960626687,FR
+960626688,960657407,GB
+960657408,960657663,NO
+960657664,960659455,GB
+960659456,960662783,DE
960662784,960663039,FR
-960663040,960671487,BE
-960671488,960671743,DE
-960671744,960672767,BE
-960672768,960673279,DE
-960673280,960673293,BE
-960673294,960673294,DE
-960673295,960674047,BE
-960674048,960674303,DE
-960674304,960675839,BE
-960675840,960676607,DE
+960663040,960676607,DE
960676608,960676863,PL
-960676864,960677887,DE
-960677888,960692223,BE
+960676864,960692223,DE
960692224,960699935,FR
960699936,960699967,IT
960699968,960724991,FR
@@ -15885,7 +20409,7 @@
960970752,960974847,TV
960974848,960978943,VU
960978944,960983039,NC
-960983040,961019903,BE
+960983040,961019903,FR
961019904,961022079,HK
961022080,961022095,SG
961022096,961052671,HK
@@ -15906,7 +20430,8 @@
961224704,961228799,EC
961228800,961232895,BO
961232896,961236991,PY
-961236992,961241087,BE
+961236992,961237011,FR
+961237012,961241087,UY
961241088,961245183,GF
961245184,961247231,GY
961247232,961249279,SR
@@ -15917,7 +20442,7 @@
961265664,961269759,SV
961269760,961273855,PA
961273856,961277951,CR
-961277952,961282047,BE
+961277952,961282047,FR
961282048,961314815,MX
961314816,961380351,US
961380352,961413119,CA
@@ -15945,25 +20470,47 @@
961716224,961720319,CF
961720320,961724415,TD
961724416,961740799,ZA
-961740800,961781759,BE
+961740800,961744895,EG
+961744896,961748991,GQ
+961748992,961753087,ER
+961753088,961757183,ET
+961757184,961761279,GA
+961761280,961765375,GH
+961765376,961769471,GN
+961769472,961773567,GW
+961773568,961777663,CI
+961777664,961781759,KE
961781760,961785855,LS
-961785856,961800191,BE
-961800192,961800447,ML
-961800448,961806335,BE
-961806336,961810431,MR
-961810432,961818623,BE
+961785856,961789951,LR
+961789952,961794047,LY
+961794048,961798143,MG
+961798144,961800191,MW
+961800192,961802239,ML
+961802240,961810431,MR
+961810432,961814527,MU
+961814528,961818623,MA
961818624,961822719,MZ
961822720,961826815,NA
961826816,961830911,NE
961830912,961835007,NG
-961835008,961839103,BE
+961835008,961839103,RW
961839104,961843199,ST
-961843200,961867775,BE
+961843200,961847295,SN
+961847296,961851391,SC
+961851392,961855487,SL
+961855488,961859583,SO
+961859584,961863679,SD
+961863680,961867775,SZ
961867776,961871871,TZ
-961871872,961892351,BE
+961871872,961875967,GM
+961875968,961880063,TG
+961880064,961884159,TN
+961884160,961888255,UG
+961888256,961892351,ZM
961892352,961896447,ZW
961896448,961900543,NG
-961900544,961945599,BE
+961900544,961937407,FR
+961937408,961945599,IS
961945600,961953791,FI
961953792,961961983,DK
961961984,961970175,NO
@@ -15972,17 +20519,30 @@
962035712,962039807,EE
962039808,962043903,LV
962043904,962047999,LT
-962048000,962076671,BE
+962048000,962052095,FR
+962052096,962056191,UA
+962056192,962060287,BY
+962060288,962068479,FR
+962068480,962072575,AM
+962072576,962076671,AZ
962076672,962080767,BH
-962080768,962084863,BE
+962080768,962084863,EG
962084864,962088959,GE
-962088960,962097151,BE
+962088960,962093055,IR
+962093056,962097151,IQ
962097152,962101247,IL
-962101248,962117631,BE
+962101248,962105343,JO
+962105344,962109439,KW
+962109440,962113535,LB
+962113536,962117631,OM
962117632,962121727,QA
-962121728,962134015,BE
+962121728,962125823,SA
+962125824,962129919,SY
+962129920,962134015,TM
962134016,962138111,AE
-962138112,962203647,BE
+962138112,962142207,YE
+962142208,962199551,FR
+962199552,962203647,AL
962203648,962211839,AT
962211840,962215935,BG
962215936,962217983,HR
@@ -15990,54 +20550,96 @@
962220032,962224127,CZ
962224128,962228223,GR
962228224,962232319,HU
-962232320,962244607,BE
+962232320,962236415,MK
+962236416,962240511,MD
+962240512,962244607,PL
962244608,962248703,RO
-962248704,962252799,BE
+962248704,962250751,RS
+962250752,962252799,ME
962252800,962256895,SK
962256896,962260991,SI
962260992,962265087,TR
962265088,962269183,AG
-962269184,962281471,BE
+962269184,962273279,BB
+962273280,962277375,CU
+962277376,962281471,DM
962281472,962285567,DO
-962285568,962359295,BE
+962285568,962289663,GD
+962289664,962293759,HT
+962293760,962297855,JM
+962297856,962301951,KN
+962301952,962306047,LC
+962306048,962310143,VC
+962310144,962314239,BS
+962314240,962318335,TT
+962318336,962322431,PR
+962322432,962324479,AW
+962324480,962330623,FR
+962330624,962334719,AF
+962334720,962338815,BD
+962338816,962342911,BT
+962342912,962347007,BN
+962347008,962351103,MM
+962351104,962355199,KH
+962355200,962359295,CN
962359296,962363391,IN
962363392,962367487,ID
-962367488,962392063,BE
+962367488,962371583,KZ
+962371584,962375679,KG
+962375680,962379775,LA
+962379776,962383871,MV
+962383872,962387967,MN
+962387968,962392063,NP
962392064,962396159,PK
962396160,962400255,PH
-962400256,962404351,BE
+962400256,962404351,LK
962404352,962408447,TJ
962408448,962412543,TH
962412544,962416639,UZ
962416640,962420735,VN
-962420736,962461695,BE
+962420736,962461695,FR
962461696,962469887,IE
962469888,962527231,TR
-962527232,962592767,BE
+962527232,962592767,FR
962592768,962594815,IN
-962594816,962596863,BE
+962594816,962596863,FR
962596864,962598911,SG
-962598912,962600959,BE
+962598912,962600959,FR
962600960,962609151,HK
962609152,962613247,JP
-962613248,962617343,BE
+962613248,962617343,FR
962617344,962621439,AU
-962621440,962674687,BE
+962621440,962674687,FR
962674688,962676735,BR
-962676736,962680831,BE
+962676736,962678783,CL
+962678784,962680831,FR
962680832,962689023,US
-962689024,962723839,BE
+962689024,962723839,FR
962723840,962732031,GB
962732032,962740223,DE
962740224,962744319,SE
-962744320,962748415,BE
+962744320,962746367,FR
+962746368,962748415,NL
962748416,962752511,BH
962752512,962756607,ZA
-962756608,968818687,BE
+962756608,962854911,FR
+962854912,962856959,SG
+962856960,962871295,FR
+962871296,962873343,US
+962873344,962879487,FR
+962879488,962881535,NL
+962881536,964689919,FR
+964689920,968638207,BE
+968638208,968638463,IN
+968638464,968753151,BE
+968753152,968757247,NL
+968757248,968818687,CH
968818688,968819711,DE
968819712,968851455,BE
968851456,968852479,US
-968852480,973078527,BE
+968852480,968884223,BE
+968884224,970981375,FR
+970981376,973078527,BE
973078528,973209599,JP
973209600,973275135,IN
973275136,973471743,JP
@@ -16302,8 +20904,8 @@
1023246336,1023279103,CN
1023279104,1023311871,IN
1023311872,1023317503,US
-1023317504,1023317759,IN
-1023317760,1023323429,US
+1023317504,1023318015,IN
+1023318016,1023323429,US
1023323430,1023323430,CN
1023323431,1023328255,US
1023328256,1023344639,JP
@@ -16358,8 +20960,9 @@
1024329728,1024330751,JP
1024330752,1024331775,AU
1024331776,1024335871,US
-1024335872,1024339967,AU
-1024339968,1024340991,ZA
+1024335872,1024337919,IN
+1024337920,1024338943,US
+1024338944,1024340991,ZA
1024340992,1024344063,US
1024344064,1024352255,SG
1024352256,1024360447,AU
@@ -16367,19 +20970,19 @@
1024361136,1024361151,HK
1024361152,1024361167,JP
1024361168,1024361183,HK
-1024361184,1024364063,JP
+1024361184,1024361807,JP
+1024361808,1024361823,TW
+1024361824,1024364063,JP
1024364064,1024364079,AU
1024364080,1024365727,JP
1024365728,1024365759,SG
1024365760,1024368895,JP
1024368896,1024368896,HK
-1024368897,1024370175,JP
-1024370176,1024370687,AU
-1024370688,1024371199,JP
+1024368897,1024371199,JP
1024371200,1024371455,PH
-1024371456,1024372543,JP
-1024372544,1024372639,HK
-1024372640,1024373263,JP
+1024371456,1024372479,JP
+1024372480,1024372735,HK
+1024372736,1024373263,JP
1024373264,1024373279,HK
1024373280,1024376831,JP
1024376832,1024378879,PH
@@ -16407,8 +21010,8 @@
1025295872,1025296127,AU
1025296128,1025296639,FR
1025296640,1025299199,AU
-1025299200,1025299263,IN
-1025299264,1025299455,AU
+1025299200,1025299327,IN
+1025299328,1025299455,AU
1025299456,1025299711,CN
1025299712,1025300735,AU
1025300736,1025300991,US
@@ -16517,7 +21120,13 @@
1040318464,1040383999,CH
1040384000,1040392191,SA
1040392192,1040392447,GB
-1040392448,1040400383,SA
+1040392448,1040397823,SA
+1040397824,1040398079,GB
+1040398080,1040398335,SA
+1040398336,1040398591,GB
+1040398592,1040399871,SA
+1040399872,1040400127,GB
+1040400128,1040400383,SA
1040400384,1040416767,GB
1040416768,1040424959,SE
1040424960,1040433151,PL
@@ -16529,7 +21138,7 @@
1040477184,1040477184,KG
1040477185,1040482303,CZ
1040482304,1040515071,BE
-1040515072,1040547839,SE
+1040515072,1040547839,GB
1040547840,1040580607,RU
1040580608,1040711679,GB
1040711680,1040719871,FR
@@ -16548,6 +21157,7 @@
1040990208,1040998399,CY
1040998400,1041002495,SD
1041002496,1041004543,KE
+1041004544,1041006591,EG
1041006592,1041039359,CH
1041039360,1041072127,SE
1041072128,1041080319,GB
@@ -16566,84 +21176,54 @@
1041284096,1041294847,NO
1041294848,1041295103,SJ
1041295104,1041301503,NO
-1041301504,1041367039,IE
+1041301504,1041334271,IE
+1041334272,1041335807,GB
+1041335808,1041338879,IE
+1041338880,1041339023,GB
+1041339024,1041339031,IE
+1041339032,1041339055,GB
+1041339056,1041339071,IE
+1041339072,1041339135,GB
+1041339136,1041367039,IE
1041367040,1041498111,IT
1041498112,1041563647,SE
1041563648,1041596415,PL
1041596416,1041629183,NL
1041629184,1041694719,ES
-1041694720,1041698815,GB
-1041698816,1041700863,FR
-1041700864,1041702399,GB
-1041702400,1041703935,FR
-1041703936,1041704447,GB
-1041704448,1041704703,FR
-1041704704,1041706941,GB
-1041706942,1041706942,FR
-1041706943,1041707007,GB
-1041707008,1041708031,FR
-1041708032,1041709019,GB
-1041709020,1041709020,FR
-1041709021,1041709055,GB
-1041709056,1041709823,FR
-1041709824,1041711103,GB
-1041711104,1041711359,FR
-1041711360,1041713151,GB
-1041713152,1041714175,FR
-1041714176,1041715172,GB
-1041715173,1041715173,FR
-1041715174,1041716039,GB
-1041716040,1041716047,FR
-1041716048,1041716479,GB
-1041716480,1041716735,FR
-1041716736,1041717221,GB
-1041717222,1041717222,FR
-1041717223,1041717247,GB
-1041717248,1041718783,FR
-1041718784,1041719295,GB
-1041719296,1041721343,FR
-1041721344,1041724415,GB
-1041724416,1041724671,FR
-1041724672,1041726463,GB
-1041726464,1041727487,FR
-1041727488,1041731193,GB
-1041731194,1041731194,FR
-1041731195,1041731583,GB
-1041731584,1041732095,FR
-1041732096,1041732530,GB
-1041732531,1041732531,FR
-1041732532,1041734911,GB
-1041734912,1041735167,FR
-1041735168,1041736191,GB
-1041736192,1041736447,FR
-1041736448,1041736675,GB
-1041736676,1041736676,FR
-1041736677,1041736703,GB
-1041736704,1041737471,FR
-1041737472,1041737609,GB
-1041737610,1041737610,FR
-1041737611,1041737839,GB
-1041737840,1041737855,FR
-1041737856,1041741567,GB
+1041694720,1041728655,FR
+1041728656,1041728671,IT
+1041728672,1041741567,FR
1041741568,1041741823,ES
-1041741824,1041743871,GB
-1041743872,1041747967,FR
-1041747968,1041748991,GB
-1041748992,1041749247,FR
-1041749248,1041751551,GB
-1041751552,1041752063,FR
-1041752064,1041752319,GB
+1041741824,1041742335,FR
+1041742336,1041742591,ES
+1041742592,1041746431,FR
+1041746432,1041746687,DE
+1041746688,1041748047,FR
+1041748048,1041748063,DE
+1041748064,1041748823,FR
+1041748824,1041748831,DE
+1041748832,1041748969,FR
+1041748970,1041748970,DE
+1041748971,1041750351,FR
+1041750352,1041750367,DE
+1041750368,1041752319,FR
1041752320,1041752575,AT
-1041752576,1041753599,GB
-1041753600,1041756159,FR
-1041756160,1041760255,GB
+1041752576,1041758463,FR
+1041758464,1041758719,ES
+1041758720,1041760255,FR
1041760256,1041768447,DE
1041768448,1041776639,NO
1041776640,1041784831,CZ
1041784832,1041793023,KE
1041793024,1041825791,GB
1041825792,1041842175,NL
-1041842176,1041891327,GB
+1041842176,1041858559,GB
+1041858560,1041862655,HK
+1041862656,1041866751,SG
+1041866752,1041870847,JP
+1041870848,1041874943,AU
+1041874944,1041890047,GB
+1041890048,1041891327,HK
1041891328,1042022399,DE
1042022400,1042087935,PT
1042087936,1042120703,TR
@@ -16652,7 +21232,11 @@
1042284544,1042292735,CH
1042292736,1042294527,NL
1042294528,1042294783,GB
-1042294784,1042300927,NL
+1042294784,1042295551,NL
+1042295552,1042296575,GE
+1042296576,1042300903,NL
+1042300904,1042300911,UA
+1042300912,1042300927,NL
1042300928,1042309119,RU
1042309120,1042317311,GB
1042317312,1042350079,ES
@@ -16691,9 +21275,17 @@
1043349504,1043357695,DE
1043357696,1043365887,CH
1043365888,1043398655,PT
-1043398656,1043465839,GB
-1043465840,1043465847,NL
-1043465848,1043483391,GB
+1043398656,1043464191,GB
+1043464192,1043472383,NL
+1043472384,1043475871,GB
+1043475872,1043475887,DE
+1043475888,1043476111,GB
+1043476112,1043476127,DE
+1043476128,1043476383,GB
+1043476384,1043476399,DE
+1043476400,1043476431,GB
+1043476432,1043476447,DE
+1043476448,1043483391,GB
1043483392,1043483423,CH
1043483424,1043488767,GB
1043488768,1043496959,DE
@@ -16706,29 +21298,28 @@
1043661824,1043857407,DE
1043857408,1043897343,GB
1043897344,1043897855,NG
-1043897856,1043910143,GB
-1043910144,1043910399,DE
-1043910400,1043919442,GB
+1043897856,1043899391,GB
+1043899392,1043899647,CG
+1043899648,1043902463,GB
+1043902464,1043908607,US
+1043908608,1043910655,DE
+1043910656,1043919442,GB
1043919443,1043919443,SS
-1043919444,1043921919,GB
+1043919444,1043920895,GB
+1043920896,1043921919,UG
1043921920,1043922943,IL
1043922944,1043988479,ES
-1043988480,1043992575,NL
-1043992576,1043998207,BE
-1043998208,1043998719,NL
-1043998720,1044004863,BE
-1044004864,1044006911,NL
-1044006912,1044008959,BE
-1044008960,1044013055,NL
-1044013056,1044037631,BE
-1044037632,1044039679,NL
-1044039680,1044045823,BE
-1044045824,1044054015,NL
-1044054016,1044068351,BE
-1044068352,1044070399,NL
-1044070400,1044094975,BE
-1044094976,1044099071,NL
-1044099072,1044119551,BE
+1043988480,1044045823,NL
+1044045824,1044047871,BE
+1044047872,1044118295,NL
+1044118296,1044118303,BE
+1044118304,1044118423,NL
+1044118424,1044118431,BE
+1044118432,1044118439,NL
+1044118440,1044118447,BE
+1044118448,1044118511,NL
+1044118512,1044118519,BE
+1044118520,1044119551,NL
1044119552,1044152319,GB
1044152320,1044185087,IR
1044185088,1044193279,RU
@@ -16763,13 +21354,20 @@
1044589056,1044589311,DE
1044589312,1044590689,GB
1044590690,1044590690,FR
-1044590691,1044594303,GB
+1044590691,1044592639,GB
+1044592640,1044593151,DE
+1044593152,1044594303,GB
1044594304,1044594431,DE
-1044594432,1044625631,GB
-1044625632,1044625647,RS
-1044625648,1044627391,GB
+1044594432,1044619263,GB
+1044619264,1044627391,RS
1044627392,1044627455,ES
-1044627456,1044643839,GB
+1044627456,1044636671,GB
+1044636672,1044637695,DE
+1044637696,1044638463,GB
+1044638464,1044638719,DE
+1044638720,1044640767,GB
+1044640768,1044642815,DE
+1044642816,1044643839,GB
1044643840,1044652031,DE
1044652032,1044660223,LY
1044660224,1044668415,GR
@@ -16777,9 +21375,9 @@
1044676608,1044684799,RU
1044684800,1044685158,GG
1044685159,1044685159,JE
-1044685160,1044692422,GG
-1044692423,1044692423,IM
-1044692424,1044692991,GG
+1044685160,1044685311,GG
+1044685312,1044685567,JE
+1044685568,1044692991,GG
1044692992,1044697087,AT
1044697088,1044697343,DE
1044697344,1044698111,AT
@@ -16798,8 +21396,57 @@
1044758528,1044774911,PL
1044774912,1044840447,NO
1044840448,1044905983,FI
-1044905984,1044930559,DE
-1044930560,1044946943,GB
+1044905984,1044908031,GB
+1044908032,1044909055,US
+1044909056,1044910847,GB
+1044910848,1044911103,DE
+1044911104,1044913951,GB
+1044913952,1044913967,DE
+1044913968,1044913983,GB
+1044913984,1044914015,DE
+1044914016,1044914047,GB
+1044914048,1044914111,DE
+1044914112,1044916735,GB
+1044916736,1044917247,DE
+1044917248,1044917279,GB
+1044917280,1044917295,US
+1044917296,1044917311,DE
+1044917312,1044917343,GB
+1044917344,1044917359,DE
+1044917360,1044917503,GB
+1044917504,1044917759,DE
+1044917760,1044917823,GB
+1044917824,1044918271,DE
+1044918272,1044918287,GB
+1044918288,1044919295,DE
+1044919296,1044920191,GB
+1044920192,1044920319,DE
+1044920320,1044921343,GB
+1044921344,1044922367,US
+1044922368,1044930559,DE
+1044930560,1044931231,GB
+1044931232,1044931239,BE
+1044931240,1044932303,GB
+1044932304,1044932311,BE
+1044932312,1044933499,GB
+1044933500,1044933503,BE
+1044933504,1044935119,GB
+1044935120,1044935135,BE
+1044935136,1044935183,GB
+1044935184,1044935191,BE
+1044935192,1044936115,GB
+1044936116,1044936119,BE
+1044936120,1044936735,GB
+1044936736,1044936743,BE
+1044936744,1044937247,GB
+1044937248,1044937255,BE
+1044937256,1044938503,GB
+1044938504,1044938511,LU
+1044938512,1044938679,GB
+1044938680,1044938687,LU
+1044938688,1044938703,GB
+1044938704,1044938711,ES
+1044938712,1044946943,GB
1044946944,1044955135,UA
1044955136,1044963327,NL
1044963328,1044971519,FI
@@ -16808,9 +21455,13 @@
1044974080,1044979711,FR
1044979712,1044987903,FI
1044987904,1045004287,BG
-1045004288,1045020671,GB
+1045004288,1045018787,GB
+1045018788,1045018799,ES
+1045018800,1045020671,GB
1045020672,1045037055,NO
-1045037056,1045135359,GR
+1045037056,1045119231,GR
+1045119232,1045119743,AL
+1045119744,1045135359,GR
1045135360,1045162147,FR
1045162148,1045162151,DE
1045162152,1045168127,FR
@@ -16822,7 +21473,8 @@
1045250048,1045266431,CZ
1045266432,1045268479,HU
1045268480,1045270527,MK
-1045270528,1045274623,HU
+1045270528,1045272575,HU
+1045272576,1045274623,LT
1045274624,1045282815,IE
1045282816,1045299199,HU
1045299200,1045307391,US
@@ -16832,8 +21484,12 @@
1045323776,1045364735,FI
1045364736,1045430271,DK
1045430272,1045446655,DE
-1045446656,1045454847,CZ
-1045454848,1045463039,DE
+1045446656,1045453823,HU
+1045453824,1045454847,SK
+1045454848,1045458943,DE
+1045460992,1045461503,FR
+1045461632,1045461695,FR
+1045462016,1045463039,DE
1045463040,1045471231,FI
1045471232,1045479423,UA
1045479424,1045487615,SE
@@ -16844,11 +21500,16 @@
1045708800,1045716991,LB
1045716992,1045725183,RU
1045725184,1045733375,CZ
-1045733376,1045745420,GB
+1045733376,1045741959,GB
+1045741960,1045741967,SE
+1045741968,1045745420,GB
1045745421,1045745421,SE
-1045745422,1045748319,GB
+1045745422,1045746943,GB
+1045746944,1045747199,AT
+1045747200,1045748319,GB
1045748320,1045748351,SE
-1045748352,1045749759,GB
+1045748352,1045748735,GB
+1045748736,1045749759,DE
1045749760,1045753855,SI
1045753856,1045755903,NL
1045755904,1045757951,UA
@@ -16864,78 +21525,216 @@
1046036480,1046052863,PL
1046052864,1046061055,GB
1046061056,1046069247,DE
-1046069248,1046085631,RU
+1046069248,1046075391,RU
+1046075392,1046077439,KZ
+1046077440,1046085631,RU
1046085632,1046151167,IL
1046151168,1046216703,DE
-1046216704,1046282239,NO
+1046216704,1046225647,NO
+1046225648,1046225655,SE
+1046225656,1046282239,NO
1046282240,1046290431,DE
1046290432,1046298623,PL
1046298624,1046315007,AT
-1046315008,1046323199,GB
+1046315008,1046315519,FR
+1046315520,1046316031,IT
+1046316032,1046316543,FR
+1046316544,1046317055,DK
+1046317056,1046317567,GB
+1046317568,1046318079,NL
+1046318080,1046319103,GB
+1046319104,1046320127,NL
+1046320128,1046321151,GB
+1046321152,1046323199,NL
1046323200,1046331391,ES
-1046331392,1046347775,DE
1046347776,1046413311,IT
1046413312,1046446079,SE
-1046446080,1046478879,DE
-1046478880,1046482951,GB
+1046446080,1046482943,DE
+1046482944,1046482951,GB
1046482952,1046482952,DE
-1046482953,1046484545,GB
+1046482953,1046483199,GB
+1046483200,1046483231,DE
+1046483232,1046484545,GB
1046484546,1046484546,DE
1046484547,1046484607,GB
1046484608,1046484615,DE
-1046484616,1046487289,GB
+1046484616,1046484711,GB
+1046484712,1046484719,DE
+1046484720,1046485303,GB
+1046485304,1046485311,DE
+1046485312,1046485903,GB
+1046485904,1046485911,DE
+1046485912,1046487289,GB
1046487290,1046487290,DE
-1046487291,1046488913,GB
-1046488914,1046488914,DE
-1046488915,1046489087,GB
-1046489088,1046489119,DE
-1046489120,1046489311,GB
+1046487291,1046488063,GB
+1046488064,1046489218,DE
+1046489219,1046489219,GB
+1046489220,1046489311,DE
1046489312,1046489327,ES
-1046489328,1046489391,GB
+1046489328,1046489391,DE
1046489392,1046489407,IT
-1046489408,1046489471,GB
+1046489408,1046489439,DE
+1046489440,1046489447,SE
+1046489448,1046489471,DE
1046489472,1046489487,ES
-1046489488,1046489503,GB
-1046489504,1046489519,DE
-1046489520,1046489975,GB
+1046489488,1046489599,DE
+1046489600,1046489815,GB
+1046489816,1046489823,DE
+1046489824,1046489975,GB
1046489976,1046489983,DE
-1046489984,1046495719,GB
+1046489984,1046489999,GB
+1046490000,1046490007,DE
+1046490008,1046490591,GB
+1046490592,1046490599,DE
+1046490600,1046492471,GB
+1046492472,1046492479,DE
+1046492480,1046492719,GB
+1046492720,1046492727,DE
+1046492728,1046493015,GB
+1046493016,1046493023,DE
+1046493024,1046493039,GB
+1046493040,1046493047,DE
+1046493048,1046493063,GB
+1046493064,1046493071,DE
+1046493072,1046493983,GB
+1046493984,1046493999,DE
+1046494000,1046494191,GB
+1046494192,1046494199,DE
+1046494200,1046495127,GB
+1046495128,1046495135,DE
+1046495136,1046495415,GB
+1046495416,1046495423,DE
+1046495424,1046495607,GB
+1046495608,1046495615,DE
+1046495616,1046495719,GB
1046495720,1046495727,DE
-1046495728,1046502106,GB
+1046495728,1046495767,GB
+1046495768,1046495775,DE
+1046495776,1046495911,GB
+1046495912,1046495919,DE
+1046495920,1046495983,GB
+1046495984,1046495991,DE
+1046495992,1046497807,GB
+1046497808,1046497815,DE
+1046497816,1046498135,GB
+1046498136,1046498143,DE
+1046498144,1046498215,GB
+1046498216,1046498223,DE
+1046498224,1046498303,GB
+1046498304,1046498319,DE
+1046498320,1046498687,GB
+1046498688,1046498695,DE
+1046498696,1046498799,GB
+1046498800,1046498807,DE
+1046498808,1046498815,GB
+1046498816,1046499327,DE
+1046499328,1046499679,GB
+1046499680,1046499695,DE
+1046499696,1046500735,GB
+1046500736,1046500743,DE
+1046500744,1046502106,GB
1046502107,1046502108,DE
-1046502109,1046506751,GB
+1046502109,1046503095,GB
+1046503096,1046503103,DE
+1046503104,1046504832,GB
+1046504833,1046504838,DE
+1046504839,1046504847,GB
+1046504848,1046504863,DE
+1046504864,1046504999,GB
+1046505000,1046505007,DE
+1046505008,1046505087,GB
+1046505088,1046505095,DE
+1046505096,1046505911,GB
+1046505912,1046505919,DE
+1046505920,1046506183,GB
+1046506184,1046506191,DE
+1046506192,1046506751,GB
1046506752,1046507007,DE
-1046507008,1046514687,GB
-1046514688,1046515711,DE
-1046515712,1046524215,GB
+1046507008,1046507127,GB
+1046507128,1046507135,DE
+1046507136,1046507519,GB
+1046507520,1046508543,DE
+1046508544,1046511815,GB
+1046511816,1046511823,DE
+1046511824,1046512583,GB
+1046512584,1046512599,DE
+1046512600,1046514687,GB
+1046514688,1046517759,DE
+1046517760,1046517959,GB
+1046517960,1046517967,DE
+1046517968,1046518359,GB
+1046518360,1046518367,DE
+1046518368,1046518911,GB
+1046518912,1046518975,DE
+1046518976,1046519295,GB
+1046519296,1046519807,DE
+1046519808,1046524215,GB
1046524216,1046524223,DE
-1046524224,1046524647,GB
+1046524224,1046524264,GB
+1046524265,1046524265,DE
+1046524266,1046524266,GB
+1046524267,1046524270,DE
+1046524271,1046524487,GB
+1046524488,1046524495,DE
+1046524496,1046524615,GB
+1046524616,1046524623,DE
+1046524624,1046524647,GB
1046524648,1046524655,DE
-1046524656,1046525439,GB
+1046524656,1046525351,GB
+1046525352,1046525359,DE
+1046525360,1046525439,GB
1046525440,1046525695,DE
-1046525696,1046528383,GB
-1046528384,1046528391,DE
-1046528392,1046528505,GB
-1046528506,1046528506,DE
-1046528507,1046530973,GB
-1046530974,1046530974,DE
-1046530975,1046531839,GB
-1046531840,1046532095,DE
-1046532096,1046533537,GB
+1046525696,1046525951,GB
+1046525952,1046527999,DE
+1046528000,1046528335,GB
+1046528336,1046528391,DE
+1046528392,1046528503,GB
+1046528504,1046528511,DE
+1046528512,1046528535,GB
+1046528536,1046528543,DE
+1046528544,1046529023,GB
+1046529024,1046532095,DE
+1046532096,1046533375,GB
+1046533376,1046533383,DE
+1046533384,1046533537,GB
1046533538,1046533538,DE
1046533539,1046533615,GB
1046533616,1046533631,DE
1046533632,1046535447,GB
1046535448,1046535448,DE
-1046535449,1046535665,GB
+1046535449,1046535623,GB
+1046535624,1046535631,DE
+1046535632,1046535665,GB
1046535666,1046535666,DE
-1046535667,1046536511,GB
+1046535667,1046535967,GB
+1046535968,1046535999,DE
+1046536000,1046536031,GB
+1046536032,1046536039,DE
+1046536040,1046536063,GB
+1046536064,1046536095,DE
+1046536096,1046536511,GB
1046536512,1046536543,DE
-1046536544,1046540527,GB
+1046536544,1046536631,GB
+1046536632,1046536639,DE
+1046536640,1046537023,GB
+1046537024,1046537039,DE
+1046537040,1046539615,GB
+1046539616,1046539623,DE
+1046539624,1046539887,GB
+1046539888,1046539903,DE
+1046539904,1046540287,GB
+1046540288,1046540527,DE
1046540528,1046540543,SE
-1046540544,1046543209,GB
+1046540544,1046542335,DE
+1046542336,1046542807,GB
+1046542808,1046542815,DE
+1046542816,1046542831,GB
+1046542832,1046542847,DE
+1046542848,1046543209,GB
1046543210,1046543210,DE
-1046543211,1046544383,GB
+1046543211,1046543343,GB
+1046543344,1046543359,DE
+1046543360,1046544383,GB
1046544384,1046560767,IT
1046560768,1046585343,ES
1046585344,1046609919,NO
@@ -16954,9 +21753,9 @@
1046792449,1046793215,US
1046793216,1046794239,GB
1046794240,1046794495,MX
-1046794496,1046795007,US
-1046795008,1046795263,NL
-1046795264,1046796287,GB
+1046794496,1046794751,GB
+1046794752,1046795007,US
+1046795008,1046796287,GB
1046796288,1046797311,US
1046797312,1046798335,GB
1046798336,1046806527,HU
@@ -16966,7 +21765,6 @@
1046839296,1046847487,BA
1046847488,1046855679,ES
1046855680,1046872063,NO
-1046896640,1046904831,GB
1046904832,1046908927,IR
1046908928,1046910975,SE
1046910976,1046913023,IT
@@ -17012,7 +21810,11 @@
1047396352,1047461887,IT
1047461888,1047494655,DE
1047494656,1047527423,PL
-1047527424,1047529471,US
+1047527424,1047527679,US
+1047527680,1047527935,CA
+1047527936,1047528959,US
+1047528960,1047529215,CA
+1047529216,1047529471,US
1047529472,1047530495,NL
1047530496,1047531007,GB
1047531008,1047533567,BE
@@ -17022,7 +21824,45 @@
1047535360,1047535615,BE
1047535616,1047551999,DE
1047552000,1047560191,RU
-1047560192,1047568383,DE
+1047560192,1047563431,DE
+1047563432,1047563435,CH
+1047563436,1047565279,DE
+1047565280,1047565311,CH
+1047565312,1047565343,DE
+1047565344,1047565359,CH
+1047565360,1047565839,DE
+1047565840,1047565887,CH
+1047565888,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
+1047566544,1047566547,CH
+1047566548,1047566967,DE
+1047566968,1047566971,CH
+1047566972,1047567015,DE
+1047567016,1047567019,CH
+1047567020,1047567027,DE
+1047567028,1047567031,CH
+1047567032,1047567143,DE
+1047567144,1047567147,CH
+1047567148,1047567151,DE
+1047567152,1047567159,CH
+1047567160,1047567359,DE
+1047567360,1047567375,CH
+1047567376,1047567467,DE
+1047567468,1047567471,CH
+1047567472,1047567475,DE
+1047567476,1047567483,CH
+1047567484,1047567823,DE
+1047567824,1047567839,CH
+1047567840,1047567903,DE
+1047567904,1047567935,CH
+1047567936,1047568383,DE
1047568384,1047576575,NL
1047576576,1047584767,HU
1047584768,1047592959,NL
@@ -17033,9 +21873,14 @@
1047642112,1047658495,DE
1047658496,1047724031,EG
1047728128,1047732223,SE
+1047732455,1047732455,US
+1047732475,1047732475,US
+1047733843,1047733843,US
+1047735501,1047735501,US
1047735770,1047735770,DE
1047736552,1047736553,US
-1047740544,1047740671,DE
+1047739838,1047739838,GB
+1047758474,1047758474,GB
1047758911,1047758911,CZ
1047759119,1047759119,AT
1047759125,1047759125,AT
@@ -17073,7 +21918,9 @@
1048205312,1048209407,RU
1048209408,1048211455,UA
1048211456,1048215551,PL
-1048215552,1048221695,RU
+1048215552,1048217599,RU
+1048217600,1048219647,TJ
+1048219648,1048221695,RU
1048221696,1048223743,UA
1048223744,1048225791,DK
1048225792,1048227839,CZ
@@ -17091,21 +21938,24 @@
1048576000,1048584191,DE
1048584192,1048592383,IL
1048592384,1048600575,IT
-1048600576,1048601599,DE
+1048600576,1048601599,UA
1048601600,1048602111,RU
1048602112,1048602623,PL
1048602624,1048603135,RU
-1048603136,1048603391,DE
+1048603136,1048603391,UA
1048603392,1048603647,LV
-1048603648,1048604944,DE
+1048603648,1048604944,UA
1048604945,1048604945,LT
-1048604946,1048608767,DE
+1048604946,1048604991,UA
+1048604992,1048605007,LT
+1048605008,1048605119,UA
+1048605120,1048605123,LT
+1048605124,1048608767,UA
1048608768,1048616959,GB
-1048616960,1048617215,US
-1048617216,1048618751,DE
-1048618752,1048619007,US
+1048616960,1048619007,US
1048619008,1048621055,GB
-1048621056,1048625151,DE
+1048621056,1048621056,DE
+1048621057,1048625151,US
1048625152,1048633343,GB
1048633344,1048641535,NO
1048641536,1048649727,FR
@@ -17115,52 +21965,31 @@
1048682496,1048690687,FR
1048690688,1048707071,PL
1048707072,1048772607,GB
-1048772608,1048838143,NL
-1048838144,1048851199,DE
-1048851200,1048851455,NL
-1048851456,1048856895,DE
-1048856896,1048856903,NL
-1048856904,1048859938,DE
-1048859939,1048859939,NL
-1048859940,1048861951,DE
-1048861952,1048862207,NL
-1048862208,1048862360,DE
-1048862361,1048862361,NL
-1048862362,1048863712,DE
-1048863713,1048863713,NL
-1048863714,1048871408,DE
-1048871409,1048871409,NL
-1048871410,1048873727,DE
-1048873728,1048873983,NL
-1048873984,1048875007,DE
-1048875008,1048879103,NL
-1048879104,1048882362,DE
-1048882363,1048882363,NL
-1048882364,1048883199,DE
-1048883200,1048889343,NL
-1048889344,1048891895,DE
-1048891896,1048891903,NL
-1048891904,1048900351,DE
-1048900352,1048900607,NL
-1048900608,1048902293,DE
-1048902294,1048902294,NL
-1048902295,1048902855,DE
-1048902856,1048902863,NL
-1048902864,1048903679,DE
+1048772608,1048903679,NL
1048903680,1048911871,GB
1048920064,1048936447,NL
1048936448,1048944639,PL
1048944640,1048952831,RU
1048952832,1048969215,NL
1048979712,1048980223,DE
+1048980736,1048980991,GB
+1048981248,1048981503,GB
+1048982888,1048982943,DE
+1048985696,1048985711,DE
+1048985728,1048985735,DE
+1048985792,1048985799,DE
+1048985848,1048985855,DE
1048987480,1048987487,DE
1048991960,1048991967,DE
1048992528,1048992535,DE
1048992608,1048992623,DE
1048992640,1048992703,DE
+1048992744,1048992751,DE
1049006080,1049006335,DE
1049008128,1049009151,DE
-1049016320,1049022463,DE
+1049010176,1049021439,DE
+1049021440,1049021695,GB
+1049021696,1049022463,DE
1049026816,1049029375,DE
1049030656,1049031679,DE
1049031744,1049031871,DE
@@ -17170,9 +21999,15 @@
1049100288,1049231359,GB
1049231360,1049235144,DE
1049235145,1049235145,FR
-1049235146,1049296895,DE
+1049235146,1049243647,DE
+1049243648,1049247743,GB
+1049247744,1049266175,DE
+1049266176,1049268223,ES
+1049268224,1049296895,DE
1049296896,1049362431,EG
-1049362432,1049368656,GB
+1049362432,1049366527,GB
+1049366528,1049368575,DE
+1049368576,1049368656,GB
1049368657,1049368657,DE
1049368658,1049369983,GB
1049369984,1049370047,DE
@@ -17218,7 +22053,9 @@
1049968640,1049985023,SA
1049985024,1050017791,IT
1050017792,1050083327,KW
-1050083328,1050148863,ES
+1050083328,1050128383,ES
+1050128384,1050130431,US
+1050130432,1050148863,ES
1050148864,1050157055,CY
1050157056,1050173439,RU
1050173440,1050181631,IT
@@ -17256,9 +22093,13 @@
1051017216,1051033599,NL
1051033600,1051049983,FI
1051049984,1051066367,HU
-1051066368,1051074559,BE
-1051074560,1051082751,NL
-1051082752,1051131903,BE
+1051066368,1051115519,NL
+1051115520,1051117055,BE
+1051117056,1051117567,NL
+1051117568,1051123711,BE
+1051123712,1051125471,NL
+1051125472,1051125479,BE
+1051125480,1051131903,NL
1051131904,1051197439,CH
1051197440,1051213823,CZ
1051213824,1051230207,SK
@@ -17273,7 +22114,9 @@
1051303936,1051312127,SK
1051312128,1051328511,GR
1051328512,1051394047,IT
-1051394048,1051525119,GB
+1051394048,1051426815,CH
+1051426816,1051459583,GB
+1051461632,1051525119,GB
1051525120,1051533311,MT
1051533312,1051541503,NG
1051541504,1051557887,GB
@@ -17294,15 +22137,22 @@
1051820032,1051852799,NL
1051852800,1051918335,AT
1051918336,1051922431,PL
-1051922432,1051983871,NL
+1051922432,1051924479,CH
+1051924480,1051948031,NL
+1051948032,1051949055,CH
+1051949056,1051983871,NL
1051984664,1051984671,DE
1051984752,1051984767,DE
-1051990016,1051991039,DE
+1051990016,1051992063,DE
1052001280,1052002303,DE
1052011264,1052012287,DE
+1052016640,1052017535,GB
1052017536,1052017567,DE
+1052017568,1052024831,GB
1052041216,1052041471,DE
+1052041472,1052043215,GB
1052043216,1052043231,DE
+1052043232,1052045311,GB
1052045312,1052046079,DE
1052049408,1052057599,PL
1052057600,1052065791,RU
@@ -17318,7 +22168,7 @@
1052131328,1052133375,UA
1052133376,1052135423,RU
1052135424,1052137471,UA
-1052137472,1052139519,RU
+1052137472,1052140543,RU
1052141056,1052141567,DE
1052141568,1052143615,PL
1052143616,1052145663,BG
@@ -17327,7 +22177,7 @@
1052151808,1052153855,PL
1052155904,1052157951,UA
1052157952,1052159999,DK
-1052160000,1052162047,BE
+1052160000,1052162047,LU
1052162048,1052164095,CH
1052164096,1052168191,RU
1052168192,1052170239,PL
@@ -18062,13 +22912,14 @@
1052504320,1052504351,BY
1052504384,1052507583,GB
1052507648,1052507775,GB
-1052507904,1052770303,GB
+1052507904,1052508415,GB
+1052516352,1052704767,GB
+1052704768,1052712959,NL
+1052712960,1052770303,GB
1052770304,1052778495,CH
1052778496,1052786687,RU
-1052786688,1052803071,NL
-1052803072,1052806655,DE
-1052806656,1052807167,MW
-1052807168,1052811263,DE
+1052786688,1052794879,GR
+1052794880,1052803071,NL
1052811264,1052819455,RU
1052819456,1052827647,DE
1052827648,1052835839,RU
@@ -18093,10 +22944,12 @@
1053301056,1053301071,FR
1053302780,1053302783,FR
1053302784,1053303807,GB
+1053306880,1053308927,GB
1053310144,1053310207,SK
1053312872,1053312887,DK
1053312912,1053312927,DK
1053318912,1053318943,FI
+1053319168,1053323263,GB
1053325824,1053326335,DE
1053326504,1053326527,BE
1053326544,1053326551,BE
@@ -18136,12 +22989,94 @@
1053671424,1053687807,LV
1053687808,1053753343,DE
1053753344,1053818879,NL
-1053818880,1053884415,GB
+1053818880,1053819391,DE
+1053819424,1053819439,DE
+1053819520,1053819563,DE
+1053819584,1053819647,DE
+1053820160,1053820927,DE
+1053821440,1053821447,GB
+1053821568,1053821695,GB
+1053824000,1053824007,DE
+1053824016,1053824023,DE
+1053824064,1053824095,DE
+1053824128,1053824255,NL
+1053825024,1053825791,ES
+1053825792,1053825919,GB
+1053825920,1053826047,ES
+1053826816,1053827327,DE
+1053827328,1053827583,BE
+1053828096,1053829119,GB
+1053831168,1053831423,DE
+1053834944,1053834975,DE
+1053835264,1053835775,DE
+1053837440,1053837455,GB
+1053837568,1053838335,GB
+1053838336,1053838591,DE
+1053839360,1053840383,DE
+1053840400,1053840415,DE
+1053840448,1053840511,DE
+1053843200,1053843231,DK
+1053843232,1053843455,GB
+1053843712,1053843967,DE
+1053843968,1053844223,GB
+1053844224,1053844479,DE
+1053844992,1053845503,DE
+1053845728,1053845735,DE
+1053846016,1053846527,DE
+1053846784,1053847551,DE
+1053847552,1053849599,GB
+1053849600,1053850367,DE
+1053851136,1053851647,DE
+1053851904,1053851919,FR
+1053852032,1053852047,IT
+1053852112,1053852127,GB
+1053852128,1053852159,DE
+1053855744,1053859839,GB
+1053859840,1053860863,DE
+1053862848,1053862879,DE
+1053863424,1053864959,DE
+1053865216,1053865727,DE
+1053865728,1053865759,US
+1053865984,1053866239,DE
+1053866240,1053866495,ES
+1053866496,1053866823,DE
+1053866832,1053866847,DE
+1053867520,1053867775,DE
+1053867976,1053867999,DE
+1053868008,1053868015,DE
+1053868032,1053868383,ES
+1053868400,1053868407,ES
+1053868416,1053868447,ES
+1053868448,1053868455,GB
+1053868456,1053868479,ES
+1053868480,1053868543,FR
+1053868800,1053869567,DE
+1053870080,1053870335,DE
+1053870336,1053870591,GB
+1053870848,1053871359,DE
+1053871616,1053871871,DE
+1053872384,1053872447,DE
+1053872512,1053872639,FR
+1053872896,1053873663,DE
+1053876224,1053876479,DE
+1053876480,1053876735,GB
+1053876736,1053876991,DE
+1053877248,1053878271,DE
+1053878272,1053878783,GB
+1053878784,1053879047,DE
+1053879056,1053879071,DE
+1053879104,1053879167,GB
+1053879296,1053882111,DE
+1053882368,1053882879,DE
+1053882880,1053883391,GB
+1053883392,1053884415,DE
1053884416,1053892607,BH
1053892608,1053900799,DE
1053900800,1053917183,NO
1053917184,1053925375,UZ
-1053925376,1053927159,SE
+1053925376,1053926399,SE
+1053926400,1053926911,GB
+1053926912,1053927159,SE
1053927160,1053927199,FI
1053927200,1053933567,SE
1053933568,1053949951,CZ
@@ -18161,14 +23096,26 @@
1054130176,1054138367,LT
1054138368,1054146559,AZ
1054146560,1054179327,RU
-1054179328,1054187519,GB
+1054179328,1054180351,GB
+1054180352,1054181120,DE
+1054181121,1054181375,GB
+1054181376,1054185216,DE
+1054185217,1054185471,GB
+1054185472,1054186240,DE
+1054186241,1054186495,GB
+1054186496,1054187264,DE
+1054187265,1054187519,GB
1054187520,1054195711,FR
1054195712,1054212095,BE
1054212096,1054277631,DE
1054277632,1054343167,KW
1054343168,1054351359,NL
1054351360,1054359551,UA
-1054359552,1054367743,RO
+1054359552,1054360575,RO
+1054360576,1054361599,GB
+1054361600,1054362623,RO
+1054362624,1054363647,GB
+1054363648,1054367743,RO
1054367744,1054375935,FI
1054375936,1054381571,GB
1054381572,1054381572,SG
@@ -18195,7 +23142,31 @@
1054646272,1054654463,SE
1054654464,1054662655,MK
1054662656,1054670847,FI
-1054670848,1054679039,GB
+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
+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
+1054674456,1054674471,IE
+1054674480,1054674495,IE
+1054674504,1054674511,IE
+1054674520,1054674527,GB
+1054674688,1054675199,IE
+1054675456,1054675711,IE
+1054675968,1054676223,US
1054679040,1054687231,UA
1054687232,1054703615,MD
1054703616,1054711807,BG
@@ -18204,92 +23175,9 @@
1054728192,1054728447,ES
1054728448,1054728703,IE
1054728704,1054728959,FR
-1054728960,1054729215,IE
-1054729216,1054867455,NL
+1054728960,1054867455,NL
1054867456,1055129599,DE
-1055129600,1055130623,GR
-1055130624,1055131647,CY
-1055131648,1055132671,GR
-1055132672,1055133183,CY
-1055133184,1055135231,GR
-1055135232,1055135743,CY
-1055135744,1055135999,GR
-1055136000,1055136255,CY
-1055136256,1055136767,GR
-1055136768,1055137535,CY
-1055137536,1055138815,GR
-1055138816,1055139071,CY
-1055139072,1055139583,GR
-1055139584,1055139839,CY
-1055139840,1055140095,GR
-1055140096,1055141887,CY
-1055141888,1055142143,GR
-1055142144,1055142271,CY
-1055142272,1055142399,GR
-1055142400,1055142655,CY
-1055142656,1055143679,GR
-1055143680,1055143935,CY
-1055143936,1055144959,GR
-1055144960,1055145215,CY
-1055145216,1055145983,GR
-1055145984,1055146239,CY
-1055146240,1055147007,GR
-1055147008,1055147775,CY
-1055147776,1055148543,GR
-1055148544,1055149823,CY
-1055149824,1055150079,GR
-1055150080,1055151103,CY
-1055151104,1055151871,GR
-1055151872,1055152127,CY
-1055152128,1055152639,GR
-1055152640,1055153151,CY
-1055153152,1055153663,GR
-1055153664,1055153919,CY
-1055153920,1055154175,GR
-1055154176,1055154431,CY
-1055154432,1055154687,GR
-1055154688,1055154943,CY
-1055154944,1055156735,GR
-1055156736,1055157247,CY
-1055157248,1055159295,GR
-1055159296,1055160575,CY
-1055160576,1055160831,GR
-1055160832,1055161087,CY
-1055161088,1055161343,GR
-1055161344,1055161855,CY
-1055161856,1055162879,GR
-1055162880,1055163391,CY
-1055163392,1055163647,GR
-1055163648,1055163903,CY
-1055163904,1055164415,GR
-1055164416,1055164671,CY
-1055164672,1055164927,GR
-1055164928,1055165951,CY
-1055165952,1055166207,GR
-1055166208,1055166463,CY
-1055166464,1055167487,GR
-1055167488,1055168767,CY
-1055168768,1055169023,GR
-1055169024,1055170559,CY
-1055170560,1055171583,GR
-1055171584,1055172095,CY
-1055172096,1055175679,GR
-1055175680,1055176703,CY
-1055176704,1055177727,GR
-1055177728,1055177983,CY
-1055177984,1055178751,GR
-1055178752,1055179519,CY
-1055179520,1055181055,GR
-1055181056,1055181311,CY
-1055181312,1055181823,GR
-1055181824,1055182079,CY
-1055182080,1055185663,GR
-1055185664,1055186943,CY
-1055186944,1055191295,GR
-1055191296,1055191551,CY
-1055191552,1055193087,GR
-1055193088,1055194111,CY
-1055194112,1055195135,GR
+1055129600,1055195135,CY
1055195136,1055203327,CH
1055211520,1055219711,PT
1055219712,1055223807,NL
@@ -18354,7 +23242,9 @@
1056874944,1056874975,GB
1056874976,1056875007,IE
1056875008,1056964607,GB
-1056964608,1061227263,US
+1056964608,1059061759,US
+1059061760,1059323903,IE
+1059323904,1061227263,US
1061227264,1061227519,BO
1061227520,1061558271,US
1061558272,1061559295,PK
@@ -18366,13 +23256,9 @@
1061939712,1061940223,JM
1061940224,1062069247,US
1062069248,1062070271,PR
-1062070272,1062219519,US
-1062219520,1062219775,IN
-1062219776,1062262783,US
+1062070272,1062262783,US
1062262784,1062263039,PH
-1062263040,1062486271,US
-1062486272,1062486527,MX
-1062486528,1062530047,US
+1062263040,1062530047,US
1062530048,1062531071,EC
1062531072,1062545919,US
1062545920,1062546431,BM
@@ -18382,9 +23268,27 @@
1062723584,1062727679,GB
1062727680,1062871551,US
1062871552,1062872063,PR
-1062872064,1063057432,US
-1063057433,1063057433,CA
-1063057434,1063568895,US
+1062872064,1063052991,US
+1063052992,1063053055,CA
+1063053056,1063053311,US
+1063053312,1063053439,CA
+1063053440,1063053503,US
+1063053504,1063053647,CA
+1063053648,1063053663,US
+1063053664,1063053743,CA
+1063053744,1063053759,US
+1063053760,1063053775,CA
+1063053776,1063053791,US
+1063053792,1063053823,CA
+1063053824,1063057407,US
+1063057408,1063057455,CA
+1063057456,1063057487,US
+1063057488,1063057503,CA
+1063057504,1063057535,US
+1063057536,1063059455,CA
+1063059456,1063290879,US
+1063290880,1063291903,CA
+1063291904,1063568895,US
1063568896,1063569151,TZ
1063569152,1063748607,US
1063748608,1063749119,GH
@@ -18394,7 +23298,9 @@
1063750144,1063750399,NG
1063750400,1063750655,US
1063750656,1063751679,NG
-1063751680,1063895039,US
+1063751680,1063813119,US
+1063813120,1063821311,CA
+1063821312,1063895039,US
1063895040,1063899135,KR
1063899136,1064124927,US
1064124928,1064125695,EC
@@ -18408,9 +23314,7 @@
1064171264,1064171519,NG
1064171520,1064204287,US
1064204288,1064205311,MX
-1064205312,1064221951,US
-1064221952,1064222207,MX
-1064222208,1064445183,US
+1064205312,1064445183,US
1064445184,1064445439,PK
1064445440,1065371647,US
1065371648,1065372959,PR
@@ -18422,7 +23326,9 @@
1065505584,1065505615,GB
1065505616,1065506047,US
1065506048,1065506559,GB
-1065506560,1065519247,US
+1065506560,1065511109,US
+1065511110,1065511110,GB
+1065511111,1065519247,US
1065519248,1065519263,IN
1065519264,1065519303,US
1065519304,1065519311,IN
@@ -18435,10 +23341,14 @@
1065525808,1065526015,US
1065526016,1065526271,GB
1065526272,1065529343,US
-1065529344,1065537535,GB
+1065529344,1065530879,GB
+1065530880,1065531391,US
+1065531392,1065537535,GB
1065537536,1065539583,US
1065539584,1065539839,GB
-1065539840,1065611263,US
+1065539840,1065547775,US
+1065547776,1065548031,GB
+1065548032,1065611263,US
1065611264,1065615359,PR
1065615360,1065811967,US
1065811968,1065820159,CA
@@ -18449,7 +23359,7 @@
1065908224,1066139647,US
1066139648,1066143743,HK
1066143744,1066213887,US
-1066213888,1066214911,IL
+1066213888,1066214911,NL
1066214912,1066254975,US
1066254976,1066255103,GB
1066255104,1066270719,US
@@ -18474,11 +23384,11 @@
1066831200,1066831215,KR
1066831216,1066831335,US
1066831336,1066831343,JP
-1066831344,1067237887,US
-1067237888,1067238399,JP
-1067238400,1067294719,US
+1066831344,1067294719,US
1067294720,1067294975,CA
-1067294976,1067450879,US
+1067294976,1067385028,US
+1067385029,1067385029,JP
+1067385030,1067450879,US
1067450880,1067450880,AL
1067450881,1067471689,US
1067471690,1067471690,SV
@@ -18516,7 +23426,8 @@
1067810189,1067810189,GH
1067810190,1067823171,US
1067823172,1067823172,TZ
-1067823173,1067826283,US
+1067823173,1067823173,AL
+1067823174,1067826283,US
1067826284,1067826284,SE
1067826285,1067831584,US
1067831585,1067831585,BE
@@ -18527,8 +23438,8 @@
1067868457,1067969987,US
1067969988,1067969988,SI
1067969989,1067971327,US
-1067971328,1067971328,RO
-1067971329,1067986307,US
+1067971328,1067971329,RO
+1067971330,1067986307,US
1067986308,1067986308,ZM
1067986309,1067993091,US
1067993092,1067993092,UA
@@ -18574,7 +23485,9 @@
1068481024,1068481535,PR
1068481536,1068491263,US
1068491264,1068491519,HN
-1068491520,1070729471,US
+1068491520,1070646015,US
+1070646016,1070646271,IN
+1070646272,1070729471,US
1070729472,1070729727,CA
1070729728,1071100927,US
1071100928,1071101951,PR
@@ -18582,13 +23495,21 @@
1071106560,1071106815,NL
1071106816,1071141557,US
1071141558,1071141558,HK
-1071141559,1071141873,US
+1071141559,1071141847,US
+1071141848,1071141851,HK
+1071141852,1071141873,US
1071141874,1071141874,HK
1071141875,1071144959,US
1071144960,1071153151,LB
-1071153152,1071170815,US
+1071153152,1071156467,US
+1071156468,1071156471,KR
+1071156472,1071170815,US
1071170816,1071171071,PH
-1071171072,1071206911,US
+1071171072,1071190219,US
+1071190220,1071190220,HK
+1071190221,1071201551,US
+1071201552,1071201567,TH
+1071201568,1071206911,US
1071206912,1071207167,HK
1071207168,1071255525,US
1071255526,1071255526,DE
@@ -18596,13 +23517,22 @@
1071255840,1071255847,TW
1071255848,1071278959,US
1071278960,1071278963,SG
-1071278964,1071318783,US
+1071278964,1071284223,US
+1071284224,1071292415,AU
+1071292416,1071300607,US
+1071300608,1071301631,FR
+1071301632,1071318783,US
1071318784,1071319039,IN
1071319040,1071382975,US
1071382976,1071383039,HK
1071383040,1071477247,US
1071477248,1071480831,CA
-1071480832,1071522817,US
+1071480832,1071514981,US
+1071514982,1071514982,HK
+1071514983,1071515063,US
+1071515064,1071515067,GB
+1071515068,1071515071,ES
+1071515072,1071522817,US
1071522818,1071522818,MW
1071522819,1071726951,US
1071726952,1071726955,IE
@@ -18617,13 +23547,17 @@
1071954424,1071998999,US
1071999000,1071999003,GB
1071999004,1072099327,US
-1072099328,1072099519,DE
+1072099328,1072099479,DE
+1072099480,1072099487,FR
+1072099488,1072099519,DE
1072099520,1072099527,FR
1072099528,1072099535,NL
1072099536,1072099583,DE
1072099584,1072157503,US
1072157504,1072157511,GR
-1072157512,1072157631,US
+1072157512,1072157583,US
+1072157584,1072157591,DE
+1072157592,1072157631,US
1072157632,1072157663,DE
1072157664,1072228863,US
1072228864,1072229375,CA
@@ -18698,16 +23632,16 @@
1073039360,1073041407,GT
1073041408,1073043455,CO
1073043456,1073043967,PR
-1073043968,1073044735,US
-1073044736,1073044991,PR
-1073044992,1073045247,US
-1073045248,1073045503,PR
+1073043968,1073044479,US
+1073044480,1073044735,BB
+1073044736,1073045503,PR
1073045504,1073047551,CO
1073047552,1073048836,US
1073048837,1073048837,CW
1073048838,1073049064,US
1073049065,1073049065,CW
-1073049066,1073049599,US
+1073049066,1073049087,US
+1073049088,1073049599,PR
1073049600,1073052671,BS
1073052672,1073075199,US
1073075200,1073075455,CA
@@ -18718,7 +23652,9 @@
1073118720,1073119231,DE
1073119232,1073373183,US
1073373184,1073381375,CA
-1073381376,1073454591,US
+1073381376,1073446399,US
+1073446400,1073446911,SG
+1073446912,1073454591,US
1073454592,1073454847,KY
1073454848,1074009727,US
1074009728,1074009855,IE
@@ -18748,7 +23684,55 @@
1074184192,1074188287,CA
1074188288,1074233343,US
1074233344,1074241535,CA
-1074241536,1074397439,US
+1074241536,1074392895,US
+1074392896,1074392911,CA
+1074392912,1074392927,MX
+1074392928,1074392935,PR
+1074392936,1074392943,VI
+1074392944,1074392951,UM
+1074392952,1074393023,US
+1074393024,1074393039,CA
+1074393040,1074393055,MX
+1074393056,1074393063,PR
+1074393064,1074393071,VI
+1074393072,1074393079,UM
+1074393080,1074394943,US
+1074394944,1074394959,CA
+1074394960,1074394975,MX
+1074394976,1074394983,PR
+1074394984,1074394991,VI
+1074394992,1074394999,UM
+1074395000,1074395071,US
+1074395072,1074395087,CA
+1074395088,1074395103,MX
+1074395104,1074395111,PR
+1074395112,1074395119,VI
+1074395120,1074395127,UM
+1074395128,1074395967,US
+1074395968,1074395983,CA
+1074395984,1074395999,MX
+1074396000,1074396007,PR
+1074396008,1074396015,VI
+1074396016,1074396023,UM
+1074396024,1074396095,US
+1074396096,1074396111,CA
+1074396112,1074396127,MX
+1074396128,1074396135,PR
+1074396136,1074396143,VI
+1074396144,1074396151,UM
+1074396152,1074396991,US
+1074396992,1074397007,CA
+1074397008,1074397023,MX
+1074397024,1074397031,PR
+1074397032,1074397039,VI
+1074397040,1074397047,UM
+1074397048,1074397119,US
+1074397120,1074397135,CA
+1074397136,1074397151,MX
+1074397152,1074397159,PR
+1074397160,1074397167,VI
+1074397168,1074397175,UM
+1074397176,1074397439,US
1074397440,1074398975,CA
1074398976,1074399231,US
1074399232,1074406655,CA
@@ -18846,10 +23830,16 @@
1074733056,1074737151,AU
1074737152,1074745343,CA
1074745344,1074757631,US
-1074757632,1074765823,CA
+1074757632,1074763063,CA
+1074763064,1074763071,US
+1074763072,1074763095,CA
+1074763096,1074763103,US
+1074763104,1074765823,CA
1074765824,1074777343,US
1074777344,1074777599,AU
-1074777600,1074937855,US
+1074777600,1074868223,US
+1074868224,1074872319,CA
+1074872320,1074937855,US
1074937856,1074946047,CA
1074946048,1074954239,US
1074954240,1074962431,PL
@@ -18862,13 +23852,16 @@
1075421184,1075429375,CA
1075429376,1075478527,US
1075478528,1075494911,CA
-1075494912,1075576831,US
+1075494912,1075556351,US
+1075556352,1075560447,VI
+1075560448,1075576831,US
1075576832,1075576895,NO
1075576896,1075576896,SE
1075576897,1075585023,NO
1075585024,1075609599,US
1075609600,1075613695,TT
-1075613696,1075646463,US
+1075613696,1075617791,US
+1075621888,1075646463,US
1075646464,1075650559,CA
1075650560,1075855359,US
1075855360,1075871743,DO
@@ -18880,10 +23873,8 @@
1075972352,1075973375,CA
1075973376,1075973631,US
1075973632,1075980287,CA
-1075980288,1075980543,US
-1075980544,1075981567,CA
-1075981568,1075982079,US
-1075982080,1075985151,CA
+1075980288,1075982335,US
+1075982336,1075985151,CA
1075985152,1075985407,US
1075985408,1075990783,CA
1075990784,1075991039,US
@@ -18903,16 +23894,16 @@
1076000256,1076000767,US
1076000768,1076002047,CA
1076002048,1076002815,US
-1076002816,1076011007,CA
-1076011008,1076015103,US
-1076015104,1076018098,CA
+1076002816,1076018098,CA
1076018099,1076018099,US
1076018100,1076018431,CA
1076018432,1076018687,US
1076018688,1076018765,CA
1076018766,1076018766,US
1076018767,1076018943,CA
-1076018944,1076022783,US
+1076018944,1076019199,US
+1076019200,1076021247,CA
+1076021248,1076022783,US
1076022784,1076023295,CA
1076023296,1076025855,US
1076025856,1076025951,CA
@@ -18952,21 +23943,44 @@
1076049920,1076050175,IL
1076050176,1076174847,US
1076174848,1076178943,BM
-1076178944,1076183807,US
+1076178944,1076183231,US
+1076183232,1076183295,CA
+1076183296,1076183807,US
1076183808,1076184063,CA
-1076184064,1076191743,US
+1076184064,1076185215,US
+1076185216,1076185343,CA
+1076185344,1076185919,US
+1076185920,1076185951,CA
+1076185952,1076186751,US
+1076186752,1076186783,CA
+1076186784,1076189215,US
+1076189216,1076189247,CA
+1076189248,1076190783,US
+1076190784,1076190815,CA
+1076190816,1076191231,US
+1076191232,1076191359,CA
+1076191360,1076191743,US
1076191744,1076191999,CN
-1076192000,1076193375,US
+1076192000,1076192127,US
+1076192128,1076192191,CA
+1076192192,1076193375,US
1076193376,1076193383,PG
-1076193384,1076194559,US
+1076193384,1076194431,US
+1076194432,1076194463,CA
+1076194464,1076194559,US
1076194560,1076194815,CA
1076194816,1076195071,US
1076195072,1076195327,IN
1076195328,1076196095,US
-1076196096,1076196351,CA
-1076196352,1076198655,US
+1076196096,1076196415,CA
+1076196416,1076198527,US
+1076198528,1076198655,CA
1076198656,1076198911,AE
-1076198912,1076307967,US
+1076198912,1076302439,US
+1076302440,1076302447,CA
+1076302448,1076304151,US
+1076304152,1076304159,CA
+1076304160,1076307967,US
1076307968,1076308223,DE
1076308224,1076310015,US
1076310016,1076310271,DE
@@ -18974,7 +23988,8 @@
1076323840,1076324095,CH
1076324096,1076338687,US
1076338688,1076346879,CA
-1076346880,1076387839,US
+1076346880,1076363263,US
+1076371456,1076387839,US
1076387840,1076393727,CA
1076393728,1076394239,US
1076394240,1076396031,CA
@@ -18986,7 +24001,9 @@
1076424704,1076428799,CA
1076428800,1076543487,US
1076543488,1076559871,CA
-1076559872,1076695039,US
+1076559872,1076576255,IE
+1076576256,1076592639,RO
+1076592640,1076695039,US
1076695040,1076699135,CA
1076699136,1076703231,US
1076703232,1076706559,CA
@@ -19000,14 +24017,20 @@
1076850688,1076851711,CA
1076851712,1076855044,US
1076855045,1076855045,MX
-1076855046,1076879505,US
+1076855046,1076857855,US
+1076857856,1076858111,PR
+1076858112,1076879505,US
1076879506,1076879507,CA
1076879508,1076880383,US
1076880384,1076880639,CH
1076880640,1076880895,GB
-1076880896,1077055487,US
+1076880896,1077007167,US
+1077007168,1077007175,CA
+1077007176,1077055487,US
1077055488,1077059583,CA
-1077059584,1077444607,US
+1077059584,1077155839,US
+1077155840,1077157887,CA
+1077157888,1077444607,US
1077444608,1077452799,CA
1077452800,1077460991,JP
1077460992,1077465855,US
@@ -19036,24 +24059,53 @@
1077857309,1077857379,FR
1077857380,1077857380,MF
1077857381,1077857535,FR
-1077857536,1077865983,US
+1077857536,1077858015,US
+1077858016,1077858047,CN
+1077858048,1077865983,US
1077865984,1077866239,CA
1077866240,1077886975,US
1077886976,1077903359,JP
1077903360,1077961347,US
1077961348,1077961350,MX
-1077961351,1077963775,US
+1077961351,1077961511,US
+1077961512,1077961519,IT
+1077961520,1077962871,US
+1077962872,1077962879,LT
+1077962880,1077963127,US
+1077963128,1077963135,LV
+1077963136,1077963383,US
+1077963384,1077963391,CA
+1077963392,1077963639,US
+1077963640,1077963647,PL
+1077963648,1077963775,US
1077963776,1077964031,JP
1077964032,1077967103,US
-1077967104,1077967359,CA
+1077967104,1077967119,BD
+1077967120,1077967135,BT
+1077967136,1077967151,BN
+1077967152,1077967167,CN
+1077967168,1077967183,KH
+1077967184,1077967199,ID
+1077967200,1077967215,TH
+1077967216,1077967231,MO
+1077967232,1077967247,MY
+1077967248,1077967263,MN
+1077967264,1077967279,MM
+1077967280,1077967295,NP
+1077967296,1077967311,CA
+1077967312,1077967327,TW
+1077967328,1077967335,LA
+1077967336,1077967343,KZ
+1077967344,1077967351,LK
+1077967352,1077967359,PK
1077967360,1077967615,US
1077967616,1077968127,GB
1077968128,1077968765,US
1077968766,1077968768,MX
1077968769,1077977087,US
1077977088,1077985279,CA
-1077985280,1077993471,US
-1077993472,1078018047,CA
+1077985280,1078001663,US
+1078001664,1078018047,CA
1078018048,1078067199,US
1078067200,1078071295,BS
1078071296,1078075391,CA
@@ -19067,15 +24119,15 @@
1078285012,1078288383,CA
1078288384,1078429695,US
1078429696,1078429951,GR
-1078429952,1078438399,US
+1078429952,1078433631,US
+1078433632,1078433663,CN
+1078433664,1078438399,US
1078438400,1078438655,CA
1078438656,1078438911,US
1078438912,1078438929,CN
1078438930,1078438930,US
1078438931,1078439167,CN
-1078439168,1078439679,US
-1078439680,1078439935,NL
-1078439936,1078453935,US
+1078439168,1078453935,US
1078453936,1078453951,AT
1078453952,1078454703,US
1078454704,1078454719,AT
@@ -19157,7 +24209,9 @@
1079320576,1079322831,CA
1079322832,1079322839,US
1079322840,1079328767,CA
-1079328768,1079379199,US
+1079328768,1079355967,US
+1079355968,1079355991,CA
+1079355992,1079379199,US
1079379200,1079379455,CA
1079379456,1079383039,US
1079383040,1079383295,VG
@@ -19252,8 +24306,12 @@
1080015872,1080016383,GB
1080016384,1080016639,US
1080016640,1080016895,GB
-1080016896,1080033279,US
-1080033280,1080164351,KY
+1080016896,1080030527,US
+1080030528,1080030591,AR
+1080030592,1080033279,US
+1080033280,1080074239,KY
+1080074240,1080078335,US
+1080078336,1080164351,KY
1080164352,1080165375,US
1080165376,1080168447,CA
1080168448,1080172543,US
@@ -19298,7 +24356,8 @@
1080969728,1080983551,DE
1080983552,1080987647,US
1080987648,1080988671,DE
-1080988672,1080989951,US
+1080988672,1080989183,AI
+1080989184,1080989951,US
1080989952,1080990207,DE
1080990208,1080999935,US
1080999936,1081016319,CA
@@ -19356,12 +24415,18 @@
1081479168,1081483247,CA
1081483248,1081483255,US
1081483256,1081483263,CA
-1081483264,1081565183,US
+1081483264,1081544703,US
+1081544704,1081546497,MN
+1081546498,1081546498,US
+1081546499,1081548799,MN
+1081548800,1081565183,US
1081565184,1081573375,CA
1081573376,1081589759,US
1081589760,1081593855,BB
1081593856,1081597951,CA
-1081597952,1081634303,US
+1081597952,1081625775,US
+1081625776,1081625783,CA
+1081625784,1081634303,US
1081634304,1081637375,SG
1081637376,1081978623,US
1081978624,1081978631,CH
@@ -19379,11 +24444,14 @@
1082683392,1082687487,CA
1082687488,1082753023,US
1082753024,1082785791,CA
-1082785792,1082788655,US
+1082785792,1082786591,AU
+1082786592,1082786607,HK
+1082786608,1082787161,AU
+1082787162,1082787162,SG
+1082787163,1082788655,AU
1082788656,1082788663,SG
-1082788664,1082791167,US
-1082791168,1082791423,IN
-1082791424,1082945535,US
+1082788664,1082793983,AU
+1082793984,1082945535,US
1082945536,1082949631,CA
1082949632,1082982399,US
1082982400,1083015167,CA
@@ -19407,7 +24475,9 @@
1084067584,1084067839,CA
1084067840,1084153599,US
1084153600,1084153855,NL
-1084153856,1085439999,US
+1084153856,1085024287,US
+1085024288,1085024319,DE
+1085024320,1085439999,US
1085440000,1085448191,CA
1085448192,1085456383,US
1085456384,1085464575,PR
@@ -19443,37 +24513,54 @@
1087016960,1087021055,CA
1087021056,1087062015,US
1087062016,1087070207,CA
-1087070208,1087405407,US
+1087070208,1087375203,US
+1087375204,1087375207,GB
+1087375208,1087398911,US
+1087398912,1087399423,GB
+1087399424,1087405407,US
1087405408,1087405423,MX
-1087405424,1087413879,US
+1087405424,1087413759,US
+1087413760,1087413879,CA
1087413880,1087413883,ES
-1087413884,1087413895,US
+1087413884,1087413895,CA
1087413896,1087413903,DE
-1087413904,1087416985,US
+1087413904,1087414271,CA
+1087414272,1087416767,US
+1087416768,1087416831,CA
+1087416832,1087416985,US
1087416986,1087416986,GB
1087416987,1087418367,US
-1087418368,1087419391,GB
-1087419392,1087430191,US
+1087418368,1087420258,GB
+1087420259,1087420259,US
+1087420260,1087420415,GB
+1087420416,1087430191,US
1087430192,1087430195,FR
1087430196,1087436799,US
1087436800,1087438847,FR
-1087438848,1087440895,US
-1087440896,1087442943,PR
-1087442944,1087466751,US
-1087466752,1087467007,GB
-1087467008,1087501471,US
+1087438848,1087466495,US
+1087466496,1087466688,GB
+1087466689,1087466689,US
+1087466690,1087466709,GB
+1087466710,1087466710,US
+1087466711,1087467007,GB
+1087467008,1087467519,CA
+1087467520,1087501471,US
1087501472,1087501479,HK
1087501480,1087501535,US
1087501536,1087501695,HK
1087501696,1087501775,US
1087501776,1087501799,HK
-1087501800,1087508161,US
+1087501800,1087502783,US
+1087502784,1087502847,HK
+1087502848,1087508161,US
1087508162,1087508162,JP
1087508163,1087509967,US
1087509968,1087509971,FI
1087509972,1087514623,US
1087514624,1087516671,BB
-1087516672,1087575807,US
+1087516672,1087522125,US
+1087522126,1087522126,NL
+1087522127,1087575807,US
1087575808,1087575815,MX
1087575816,1087586967,US
1087586968,1087586971,NL
@@ -19481,29 +24568,45 @@
1087587000,1087587003,DE
1087587004,1087589119,US
1087589120,1087589247,GB
-1087589248,1087591237,US
+1087589248,1087590911,US
+1087590912,1087591237,MX
1087591238,1087591238,FR
-1087591239,1087613115,US
+1087591239,1087591423,MX
+1087591424,1087594495,US
+1087594496,1087596543,DE
+1087596544,1087613115,US
1087613116,1087613119,FR
1087613120,1087626111,US
1087626112,1087626239,VI
-1087626240,1087686655,US
+1087626240,1087643647,US
+1087643648,1087644591,AU
+1087644592,1087644599,US
+1087644600,1087645695,AU
+1087645696,1087686655,US
1087686656,1087686911,PR
1087686912,1087693151,US
1087693152,1087693155,GB
-1087693156,1087714335,US
+1087693156,1087700991,US
+1087700992,1087706679,AU
+1087706680,1087706683,US
+1087706684,1087709183,AU
+1087709184,1087714335,US
1087714336,1087714367,NL
1087714368,1087715327,US
1087715328,1087717375,PA
1087717376,1087726015,US
1087726016,1087726047,FR
-1087726048,1087743569,US
-1087743570,1087743570,GB
-1087743571,1087758335,US
+1087726048,1087735743,US
+1087735744,1087735807,CA
+1087735808,1087741951,US
+1087741952,1087743597,GB
+1087743598,1087743598,US
+1087743599,1087746047,GB
+1087746048,1087758335,US
1087758336,1087766527,PR
-1087766528,1087795199,US
-1087795200,1087797247,CN
-1087797248,1087798943,US
+1087766528,1087780863,US
+1087780864,1087781375,GB
+1087781376,1087798943,US
1087798944,1087798975,CA
1087798976,1087821567,US
1087821568,1087821823,GB
@@ -19511,13 +24614,17 @@
1087837360,1087837367,BR
1087837368,1087837695,US
1087837696,1087837951,BR
-1087837952,1087860735,US
-1087860736,1087860991,GB
-1087860992,1087862783,US
+1087837952,1087839231,US
+1087839232,1087839743,GB
+1087839744,1087853055,US
+1087853056,1087853567,GB
+1087853568,1087862783,US
1087862784,1087864831,PA
1087864832,1087873023,US
1087873024,1087873535,CA
-1087873536,1087879403,US
+1087873536,1087878751,US
+1087878752,1087878767,CA
+1087878768,1087879403,US
1087879404,1087879407,GB
1087879408,1087883263,US
1087883264,1087883519,AR
@@ -19694,14 +24801,7 @@
1089462784,1089463039,CA
1089463040,1089463295,US
1089463296,1089465343,CA
-1089465344,1089466367,GB
-1089466368,1089881599,US
-1089881600,1089882111,GB
-1089882112,1089882623,US
-1089882624,1089883135,GB
-1089883136,1089887231,US
-1089887232,1089887743,GB
-1089887744,1089961983,US
+1089465344,1089961983,US
1089961984,1089970175,CA
1089970176,1089974271,PR
1089974272,1090146303,US
@@ -19713,8 +24813,8 @@
1090338816,1090355199,US
1090355200,1090363391,CA
1090363392,1090387967,US
-1090387968,1090395391,CA
-1090395392,1090418565,US
+1090387968,1090396159,CA
+1090396160,1090418565,US
1090418566,1090418566,DE
1090418567,1090427391,US
1090427392,1090427647,CA
@@ -19722,7 +24822,11 @@
1090445312,1090453503,CA
1090453504,1090497903,US
1090497904,1090497919,AU
-1090497920,1091803135,US
+1090497920,1091731455,US
+1091731456,1091747839,CH
+1091747840,1091751935,US
+1091751936,1091756031,CY
+1091756032,1091803135,US
1091803136,1091803391,CN
1091803392,1091807231,US
1091807232,1091807487,CA
@@ -19730,7 +24834,9 @@
1091808000,1091808255,CA
1091808256,1091809535,US
1091809536,1091809791,CA
-1091809792,1091960831,US
+1091809792,1091812607,US
+1091812608,1091812863,JP
+1091812864,1091960831,US
1091960832,1092026367,CA
1092026368,1092075519,US
1092075520,1092091903,PR
@@ -19770,8 +24876,8 @@
1093701632,1093708287,BB
1093708288,1093709311,LC
1093709312,1093716479,BB
-1093716480,1093717759,GD
-1093717760,1093719807,BB
+1093716480,1093718015,GD
+1093718016,1093719807,BB
1093719808,1093720575,LC
1093720576,1093721343,VG
1093721344,1093723391,BB
@@ -19796,30 +24902,19 @@
1093967872,1093976063,HK
1093976064,1093984255,US
1093984256,1093986303,IE
-1093986304,1094061971,US
+1093986304,1093990399,US
+1093990400,1093992447,AE
+1093992448,1094061971,US
1094061972,1094061975,NL
-1094061976,1094061979,IE
-1094061980,1094064127,US
-1094064128,1094064575,IE
-1094064576,1094064639,US
-1094064640,1094064799,IE
-1094064800,1094064831,US
+1094061976,1094064127,US
+1094064128,1094064383,IE
+1094064384,1094064639,US
+1094064640,1094064767,IE
+1094064768,1094064831,US
1094064832,1094064863,IE
-1094064864,1094064871,US
-1094064872,1094064887,IE
-1094064888,1094065087,US
-1094065088,1094065119,IE
-1094065120,1094066175,US
-1094066176,1094066407,IE
-1094066408,1094066415,US
-1094066416,1094066431,IE
-1094066432,1094066671,US
-1094066672,1094066679,IE
-1094066680,1094066683,US
-1094066684,1094066687,IE
-1094066688,1094066911,US
-1094066912,1094066975,IE
-1094066976,1094074879,US
+1094064864,1094066175,US
+1094066176,1094066303,IE
+1094066304,1094074879,US
1094074880,1094075167,BR
1094075168,1094075171,US
1094075172,1094075195,BR
@@ -19829,15 +24924,7 @@
1094079744,1094079999,BR
1094080000,1094081023,US
1094081024,1094081535,JP
-1094081536,1094088703,US
-1094088704,1094088751,PR
-1094088752,1094088863,US
-1094088864,1094089103,PR
-1094089104,1094089119,US
-1094089120,1094089279,PR
-1094089280,1094089503,US
-1094089504,1094089535,PR
-1094089536,1094099551,US
+1094081536,1094099551,US
1094099552,1094099567,IE
1094099568,1094100719,US
1094100720,1094100735,GB
@@ -19889,7 +24976,32 @@
1097076124,1097076127,DE
1097076128,1097727999,US
1097728000,1097736191,CA
-1097736192,1097768959,US
+1097736192,1097742641,US
+1097742642,1097742651,BR
+1097742652,1097742681,US
+1097742682,1097742691,CN
+1097742692,1097742711,US
+1097742712,1097742721,UA
+1097742722,1097742741,US
+1097742742,1097742751,DE
+1097742752,1097743399,US
+1097743400,1097743409,RU
+1097743410,1097743675,US
+1097743676,1097743685,KH
+1097743686,1097743695,US
+1097743696,1097743705,KW
+1097743706,1097743901,US
+1097743902,1097743911,DE
+1097743912,1097744137,US
+1097744138,1097744147,TR
+1097744148,1097744227,US
+1097744228,1097744237,RU
+1097744238,1097744257,US
+1097744258,1097744267,UA
+1097744268,1097744307,US
+1097744308,1097744317,RU
+1097744318,1097744327,ES
+1097744328,1097768959,US
1097768960,1097785343,CA
1097785344,1097830399,US
1097830400,1097834495,CA
@@ -19903,11 +25015,15 @@
1098070272,1098070279,GR
1098070280,1098070295,US
1098070296,1098070303,BE
-1098070304,1098096287,US
+1098070304,1098072967,US
+1098072968,1098072975,CA
+1098072976,1098096287,US
1098096288,1098096295,BR
1098096296,1098178383,US
1098178384,1098178391,CA
-1098178392,1098891623,US
+1098178392,1098547393,US
+1098547394,1098547394,AU
+1098547395,1098891623,US
1098891624,1098891631,AU
1098891632,1098892255,US
1098892256,1098892263,AU
@@ -19917,7 +25033,9 @@
1100505128,1100505135,CA
1100505136,1100560647,US
1100560648,1100560655,TR
-1100560656,1101116083,US
+1100560656,1100671719,US
+1100671720,1100671727,DE
+1100671728,1101116083,US
1101116084,1101116084,KR
1101116085,1101182975,US
1101182976,1101183487,YE
@@ -19945,7 +25063,9 @@
1101475840,1101479935,CO
1101479936,1101484031,US
1101484032,1101488127,CO
-1101488128,1101542399,US
+1101488128,1101521407,US
+1101521408,1101521919,AS
+1101521920,1101542399,US
1101542400,1101542911,CO
1101542912,1101551213,US
1101551214,1101551214,AU
@@ -19987,9 +25107,15 @@
1102005504,1102005759,PK
1102005760,1102006271,US
1102006272,1102006527,CA
-1102006528,1102389247,US
+1102006528,1102008095,US
+1102008096,1102008103,CA
+1102008104,1102008607,US
+1102008608,1102008639,CA
+1102008640,1102389247,US
1102389248,1102393343,CA
-1102393344,1102446591,US
+1102393344,1102397439,US
+1102397440,1102405631,HK
+1102405632,1102446591,US
1102446592,1102448383,HN
1102448384,1102449151,US
1102449152,1102449407,SV
@@ -19999,7 +25125,9 @@
1102512128,1102516223,JM
1102516224,1103244799,US
1103244800,1103245055,EC
-1103245056,1103548415,US
+1103245056,1103521023,US
+1103521024,1103521279,GB
+1103521280,1103548415,US
1103548416,1103550463,BS
1103550464,1103603711,US
1103603712,1103605759,EC
@@ -20015,7 +25143,11 @@
1104166912,1104168959,CO
1104168960,1104265215,US
1104265216,1104265727,PH
-1104265728,1104842751,US
+1104265728,1104492287,US
+1104492288,1104492543,PH
+1104492544,1104610303,US
+1104610304,1104611327,KR
+1104611328,1104842751,US
1104842752,1104844799,PR
1104844800,1105719295,US
1105719296,1105723391,IN
@@ -20043,23 +25175,15 @@
1107701760,1107705855,CA
1107705856,1107820543,US
1107820544,1107853311,ZA
-1107853312,1107895039,US
-1107895040,1107895807,GB
-1107895808,1107898367,US
-1107898368,1107899903,GB
-1107899904,1107906559,US
-1107906560,1107907071,GB
-1107907072,1107907839,US
+1107853312,1107899391,US
+1107899392,1107899647,GB
+1107899648,1107907839,US
1107907840,1107908095,GB
1107908096,1107909375,US
1107909376,1107909631,GB
-1107909632,1107927039,US
-1107927040,1107927551,GB
-1107927552,1107935743,US
-1107935744,1107936767,GB
-1107936768,1107947775,US
-1107947776,1107948031,GB
-1107948032,1107948543,US
+1107909632,1107935999,US
+1107936000,1107936255,GB
+1107936256,1107948543,US
1107948544,1107948799,GB
1107948800,1108025343,US
1108025344,1108029439,CA
@@ -20126,7 +25250,9 @@
1110126592,1110130687,CA
1110130688,1110248623,US
1110248624,1110248631,CA
-1110248632,1110270207,US
+1110248632,1110260431,US
+1110260432,1110260447,CO
+1110260448,1110270207,US
1110270208,1110270335,CA
1110270336,1110310911,US
1110310912,1110376447,CA
@@ -20166,13 +25292,13 @@
1110473984,1110474239,CA
1110474240,1110540287,US
1110540288,1110573055,CA
-1110573056,1110579967,PR
-1110579968,1110580223,US
-1110580224,1110587903,PR
-1110587904,1110593023,US
-1110593024,1110593279,PR
-1110593280,1110595776,US
-1110595777,1110638591,PR
+1110573056,1110587903,PR
+1110587904,1110593407,US
+1110593408,1110595583,PR
+1110595584,1110595776,US
+1110595777,1110598655,PR
+1110598656,1110599167,US
+1110599168,1110638591,PR
1110638592,1110642687,US
1110642688,1110644735,CA
1110644736,1110654463,US
@@ -20199,10 +25325,22 @@
1110929408,1110933503,BM
1110933504,1111195647,US
1111195648,1111212031,CA
-1111212032,1111228415,US
+1111220224,1111228415,US
1111228416,1111244799,AR
1111244800,1111916543,US
-1111916544,1111949311,CA
+1111916544,1111916895,CA
+1111916896,1111916903,US
+1111916904,1111917999,CA
+1111918000,1111918015,NL
+1111918016,1111922687,CA
+1111922688,1111922943,US
+1111922944,1111926313,CA
+1111926314,1111926314,US
+1111926315,1111937727,CA
+1111937728,1111937735,US
+1111937736,1111940607,CA
+1111940608,1111940863,US
+1111940864,1111949311,CA
1111949312,1111982079,US
1111982080,1111998463,IT
1111998464,1112412671,US
@@ -20229,8 +25367,16 @@
1112506368,1112530943,US
1112530944,1112539135,CA
1112539136,1112653823,US
-1112653824,1112657919,VG
-1112657920,1112867327,US
+1112653824,1112653857,VG
+1112653858,1112653858,US
+1112653859,1112653981,VG
+1112653982,1112653982,US
+1112653983,1112657484,VG
+1112657485,1112657487,HK
+1112657488,1112657919,VG
+1112657920,1112817663,US
+1112817664,1112821759,IM
+1112821760,1112867327,US
1112867328,1112867583,BS
1112867584,1112869887,US
1112869888,1112870143,CA
@@ -20262,7 +25408,59 @@
1113603328,1113603583,GT
1113603584,1113603839,US
1113603840,1113604095,CA
-1113604096,1113636863,US
+1113604096,1113616383,US
+1113616384,1113616447,ZA
+1113616448,1113616511,GD
+1113616512,1113616575,ZA
+1113616576,1113616639,BH
+1113616640,1113616703,CA
+1113616704,1113616767,US
+1113616768,1113616831,CA
+1113616832,1113616895,US
+1113616896,1113616959,BB
+1113616960,1113617023,MS
+1113617024,1113617087,VC
+1113617088,1113617407,US
+1113617408,1113617471,DM
+1113617472,1113617535,AR
+1113617536,1113617599,PS
+1113617600,1113617663,US
+1113617664,1113617727,FR
+1113617728,1113617855,US
+1113617856,1113617919,JM
+1113617920,1113618047,TN
+1113618048,1113618111,MX
+1113618112,1113618175,KE
+1113618176,1113618239,AR
+1113618240,1113618303,US
+1113618304,1113618367,UA
+1113618368,1113618431,US
+1113618432,1113618495,GB
+1113618496,1113618623,TZ
+1113618624,1113618879,US
+1113618880,1113618943,VU
+1113618944,1113619007,US
+1113619008,1113619071,BJ
+1113619072,1113619135,US
+1113619136,1113619199,LB
+1113619200,1113619263,SO
+1113619264,1113619327,NA
+1113619328,1113619391,MU
+1113619392,1113619455,AO
+1113619456,1113619519,HN
+1113619520,1113619711,US
+1113619712,1113619775,CA
+1113619776,1113619839,UG
+1113619840,1113619903,US
+1113619904,1113619967,BZ
+1113619968,1113620031,MG
+1113620032,1113620095,QA
+1113620096,1113620159,US
+1113620160,1113620223,GB
+1113620224,1113620287,US
+1113620288,1113620351,BW
+1113620352,1113620415,AT
+1113620416,1113636863,US
1113636864,1113645055,SG
1113645056,1113653247,ID
1113653248,1113657343,US
@@ -20285,11 +25483,48 @@
1113855488,1113983249,US
1113983250,1113983250,RU
1113983251,1113983251,KG
-1113983252,1113983364,US
+1113983252,1113983261,US
+1113983262,1113983262,LT
+1113983263,1113983364,US
1113983365,1113983365,LT
1113983366,1113984643,US
1113984644,1113984645,DE
-1113984646,1113997311,US
+1113984646,1113989183,US
+1113989184,1113989247,CL
+1113989248,1113989311,PY
+1113989312,1113989375,US
+1113989376,1113989439,KH
+1113989440,1113989503,LB
+1113989504,1113989567,US
+1113989568,1113989631,AM
+1113989632,1113989695,RO
+1113989696,1113989759,US
+1113989760,1113989823,CA
+1113989824,1113989887,CI
+1113989888,1113989951,CD
+1113989952,1113990079,US
+1113990080,1113990143,GH
+1113990144,1113990207,TG
+1113990208,1113990271,GA
+1113990272,1113990335,BT
+1113990336,1113990399,EC
+1113990400,1113990463,IL
+1113990464,1113990527,TH
+1113990528,1113990591,FR
+1113990592,1113990655,LT
+1113990656,1113990719,ES
+1113990720,1113990783,FR
+1113990784,1113990847,US
+1113990848,1113990911,BI
+1113990912,1113990975,RU
+1113990976,1113991039,AO
+1113991040,1113991167,US
+1113991168,1113991231,ZW
+1113991232,1113991295,ES
+1113991296,1113991359,CA
+1113991360,1113991423,NZ
+1113991424,1113991487,DE
+1113991488,1113997311,US
1113997312,1114005503,CA
1114005504,1114054655,US
1114054656,1114062847,CA
@@ -20339,7 +25574,9 @@
1115114752,1115115007,GT
1115115008,1115115519,US
1115115520,1115116543,HN
-1115116544,1115117567,US
+1115116544,1115117055,US
+1115117056,1115117311,GB
+1115117312,1115117567,US
1115117568,1115118591,HN
1115118592,1115119615,SV
1115119616,1115127807,US
@@ -20361,7 +25598,9 @@
1115134976,1115135359,HK
1115135360,1115135375,NL
1115135376,1115135391,US
-1115135392,1115135647,SG
+1115135392,1115135423,SG
+1115135424,1115135615,US
+1115135616,1115135647,SG
1115135648,1115135999,US
1115136000,1115144191,CA
1115144192,1115693055,US
@@ -20418,10 +25657,12 @@
1117142528,1117274111,US
1117274112,1117282303,CA
1117282304,1117413375,US
-1117413376,1117415423,CA
-1117415424,1117416703,US
-1117416704,1117417471,CA
-1117417472,1117417983,US
+1117413376,1117413631,CA
+1117413632,1117414143,US
+1117414144,1117414911,CA
+1117414912,1117416703,US
+1117416704,1117417215,CA
+1117417216,1117417983,US
1117417984,1117418495,CA
1117418496,1117419007,US
1117419008,1117419519,CA
@@ -20431,8 +25672,8 @@
1117454848,1117455619,CA
1117455620,1117455620,DE
1117455621,1117456895,CA
-1117456896,1117457151,US
-1117457152,1117458751,CA
+1117456896,1117457919,US
+1117457920,1117458751,CA
1117458752,1117458815,GB
1117458816,1117458911,CA
1117458912,1117458943,GB
@@ -20442,7 +25683,9 @@
1117460992,1117461247,GB
1117461248,1117469183,CA
1117469184,1117469439,US
-1117469440,1117476735,CA
+1117469440,1117472767,CA
+1117472768,1117474815,GB
+1117474816,1117476735,CA
1117476736,1117476799,US
1117476800,1117478519,CA
1117478520,1117478520,DE
@@ -20461,7 +25704,9 @@
1117724672,1117728767,CA
1117728768,1117744127,US
1117744128,1117749247,CA
-1117749248,1117823231,US
+1117749248,1117817919,US
+1117817920,1117817983,CA
+1117817984,1117823231,US
1117823232,1117823487,CA
1117823488,1117823999,US
1117824000,1117824511,CA
@@ -20473,15 +25718,33 @@
1117995008,1117999103,CA
1117999104,1118027775,US
1118027776,1118031871,CA
-1118031872,1118126335,US
-1118126336,1118126591,CA
-1118126592,1118130687,US
+1118031872,1118126079,US
+1118126080,1118126591,CA
+1118126592,1118126847,US
+1118126848,1118127103,CA
+1118127104,1118127487,US
+1118127488,1118127615,CA
+1118127616,1118128383,US
+1118128384,1118128639,CA
+1118128640,1118129279,US
+1118129280,1118129663,CA
+1118129664,1118129887,US
+1118129888,1118129919,CA
+1118129920,1118130687,US
1118130688,1118131199,CA
-1118131200,1118131967,US
-1118131968,1118132479,CA
+1118131200,1118131711,US
+1118131712,1118132479,CA
1118132480,1118132991,US
-1118132992,1118133247,CA
-1118133248,1118139903,US
+1118132992,1118133375,CA
+1118133376,1118133759,US
+1118133760,1118133887,CA
+1118133888,1118134815,US
+1118134816,1118134879,CA
+1118134880,1118134911,US
+1118134912,1118134975,CA
+1118134976,1118136063,US
+1118136064,1118136191,CA
+1118136192,1118139903,US
1118139904,1118140159,CA
1118140160,1118157567,US
1118157568,1118157583,SV
@@ -20501,9 +25764,7 @@
1118543872,1118547967,CA
1118547968,1118790655,US
1118790656,1118790911,IL
-1118790912,1118796543,US
-1118796544,1118796799,GB
-1118796800,1118962943,US
+1118790912,1118962943,US
1118962944,1118963199,AS
1118963200,1118965247,US
1118965248,1118965503,AS
@@ -20555,7 +25816,13 @@
1119432704,1119436799,CA
1119436800,1119440895,US
1119440896,1119444991,CA
-1119444992,1119469567,US
+1119444992,1119450367,US
+1119450368,1119450623,AT
+1119450624,1119450879,PL
+1119450880,1119451135,ID
+1119451136,1119451391,CZ
+1119451392,1119451647,IE
+1119451648,1119469567,US
1119469568,1119477759,CA
1119477760,1119486783,US
1119486784,1119486847,BR
@@ -20569,7 +25836,9 @@
1119580160,1119584255,CA
1119584256,1119611903,US
1119611904,1119612159,BR
-1119612160,1120149503,US
+1119612160,1119612415,US
+1119612416,1119612671,JP
+1119612672,1120149503,US
1120149504,1120153599,CA
1120153600,1120274943,US
1120274944,1120274991,CA
@@ -20611,19 +25880,41 @@
1120383744,1120385535,CA
1120385536,1120385791,US
1120385792,1120387071,CA
-1120387072,1120486655,US
-1120486656,1120486911,CA
-1120486912,1120487423,US
+1120387072,1120486399,US
+1120486400,1120486911,CA
+1120486912,1120487359,US
+1120487360,1120487391,CA
+1120487392,1120487423,US
1120487424,1120487679,CA
-1120487680,1120489471,US
+1120487680,1120488575,US
+1120488576,1120488703,CA
+1120488704,1120488831,US
+1120488832,1120488863,CA
+1120488864,1120489215,US
+1120489216,1120489343,CA
+1120489344,1120489471,US
1120489472,1120489727,CA
-1120489728,1120491519,US
+1120489728,1120489983,US
+1120489984,1120490239,CA
+1120490240,1120491519,US
1120491520,1120491775,CA
1120491776,1120492543,US
1120492544,1120493055,CA
-1120493056,1120497407,US
-1120497408,1120497663,CA
-1120497664,1120498943,US
+1120493056,1120493183,US
+1120493184,1120493215,CA
+1120493216,1120494975,US
+1120494976,1120495039,CA
+1120495040,1120496255,US
+1120496256,1120496287,CA
+1120496288,1120496385,US
+1120496386,1120496638,CA
+1120496639,1120496895,US
+1120496896,1120497023,CA
+1120497024,1120497375,US
+1120497376,1120497663,CA
+1120497664,1120498143,US
+1120498144,1120498303,CA
+1120498304,1120498943,US
1120498944,1120499199,CA
1120499200,1120509951,US
1120509952,1120516095,SV
@@ -20635,9 +25926,7 @@
1120518144,1120534527,CA
1120534528,1120641023,US
1120641024,1120657407,CA
-1120657408,1120737023,US
-1120737024,1120737279,BS
-1120737280,1120740351,US
+1120657408,1120740351,US
1120740352,1120741375,TT
1120741376,1120741631,US
1120741632,1120741887,KN
@@ -20645,14 +25934,22 @@
1120743424,1120743679,KN
1120743680,1120744447,US
1120744448,1120744703,KN
-1120744704,1120854015,US
+1120744704,1120826367,US
+1120826368,1120826370,CA
+1120826371,1120826371,US
+1120826372,1120826623,CA
+1120826624,1120854015,US
1120854016,1120862207,CA
1120862208,1120875007,US
1120875008,1120875263,AS
1120875264,1120886783,US
1120886784,1120894975,CA
1120894976,1120911359,US
-1120911360,1120919551,CA
+1120911360,1120915663,CA
+1120915664,1120915679,NL
+1120915680,1120915695,CA
+1120915696,1120915711,NL
+1120915712,1120919551,CA
1120919552,1121005567,US
1121005568,1121009663,CA
1121009664,1121038335,US
@@ -20664,15 +25961,13 @@
1121205760,1121206271,LC
1121206272,1121230847,US
1121230848,1121239039,CA
-1121239040,1121250303,US
-1121250304,1121250815,BZ
-1121250816,1121251039,US
-1121251040,1121251047,CA
-1121251048,1121252863,US
-1121252864,1121253119,BZ
-1121253120,1121254159,US
-1121254160,1121254167,CA
-1121254168,1121763327,US
+1121239040,1121247231,US
+1121247232,1121255423,CA
+1121255424,1121479003,US
+1121479004,1121479007,IN
+1121479008,1121717115,US
+1121717116,1121717116,JP
+1121717117,1121763327,US
1121763328,1121767423,CA
1121767424,1121878015,US
1121878016,1121910783,CA
@@ -20701,11 +25996,13 @@
1122476032,1122480127,PR
1122480128,1122493439,US
1122493440,1122493951,PR
-1122493952,1122495487,US
-1122495488,1122495999,PR
+1122493952,1122494463,US
+1122494464,1122495999,PR
1122496000,1122497327,US
1122497328,1122497343,BR
-1122497344,1122533375,US
+1122497344,1122498559,US
+1122498560,1122499071,PR
+1122499072,1122533375,US
1122533376,1122535423,GB
1122535424,1122538495,KR
1122538496,1122635775,US
@@ -20749,7 +26046,9 @@
1123635910,1123635910,TW
1123635911,1123635928,US
1123635929,1123635929,PH
-1123635930,1123638539,US
+1123635930,1123637759,US
+1123637760,1123638015,CA
+1123638016,1123638539,US
1123638540,1123638540,PK
1123638541,1123638573,US
1123638574,1123638574,FR
@@ -20787,7 +26086,25 @@
1123950592,1123958783,CA
1123958784,1124853798,US
1124853799,1124853799,JP
-1124853800,1125147624,US
+1124853800,1125064703,US
+1125064704,1125065215,GB
+1125065216,1125081855,US
+1125081856,1125082111,DE
+1125082112,1125082367,US
+1125082368,1125082623,DE
+1125082624,1125087999,US
+1125088000,1125088255,CA
+1125088256,1125099775,US
+1125099776,1125100031,GB
+1125100032,1125112831,US
+1125112832,1125113087,MA
+1125113088,1125116415,US
+1125116416,1125116671,MA
+1125116672,1125117183,US
+1125117184,1125117439,MA
+1125117440,1125120255,US
+1125120256,1125120511,MA
+1125120512,1125147624,US
1125147625,1125147625,GB
1125147626,1125156304,US
1125156305,1125156305,DE
@@ -20822,7 +26139,9 @@
1125550336,1125552127,CA
1125552128,1125572607,US
1125572608,1125576703,CA
-1125576704,1126924287,US
+1125576704,1125621799,US
+1125621800,1125621807,BR
+1125621808,1126924287,US
1126924288,1126928383,CA
1126928384,1126948863,US
1126948864,1126952959,CA
@@ -20838,12 +26157,8 @@
1128817408,1128817663,NL
1128817664,1130535935,US
1130535936,1130536191,FR
-1130536192,1130537626,US
-1130537627,1130537627,GU
-1130537628,1130537727,US
-1130537728,1130537983,GU
-1130537984,1130538751,US
-1130538752,1130539007,GU
+1130536192,1130537471,US
+1130537472,1130539007,GU
1130539008,1133461247,US
1133461248,1133461503,CA
1133461504,1133785351,US
@@ -20857,15 +26172,19 @@
1133785536,1133789887,US
1133789888,1133789895,NL
1133789896,1133789903,IE
-1133789904,1134444543,US
+1133789904,1134283775,US
+1134283776,1134284031,CA
+1134284032,1134440959,US
+1134440960,1134441215,CA
+1134441216,1134444543,US
1134444544,1134448639,CA
-1134448640,1134545919,US
-1134545920,1134545951,BH
-1134545952,1134546175,US
-1134546176,1134546207,BH
-1134546208,1134546943,US
+1134448640,1134546943,US
1134546944,1134551039,CA
-1134551040,1136721919,US
+1134551040,1136658999,US
+1136659000,1136659007,IN
+1136659008,1136675839,US
+1136675840,1136676095,GB
+1136676096,1136721919,US
1136721920,1136787455,CA
1136787456,1137195519,US
1137195520,1137195775,JP
@@ -20873,22 +26192,37 @@
1137278976,1137295359,CA
1137295360,1137369855,US
1137369856,1137370111,CA
-1137370112,1137426431,US
+1137370112,1137376355,US
+1137376356,1137376356,CA
+1137376357,1137385471,US
+1137385472,1137387519,BR
+1137387520,1137426431,US
1137426432,1137442815,PR
1137442816,1137491967,US
1137491968,1137508351,CA
1137508352,1137524735,US
-1137524736,1137541119,CA
+1137524736,1137529719,CA
+1137529720,1137529727,US
+1137529728,1137530943,CA
+1137530944,1137530951,AE
+1137530952,1137539183,CA
+1137539184,1137539191,MX
+1137539192,1137541119,CA
1137541120,1137623039,US
1137623040,1137639423,PR
-1137639424,1137681583,US
+1137639424,1137656831,US
+1137656832,1137657855,GB
+1137657856,1137659903,DE
+1137659904,1137681583,US
1137681584,1137681599,AR
1137681600,1137688063,US
1137688064,1137688319,FR
-1137688320,1137704959,US
-1137704960,1137712383,CA
-1137712384,1137712639,US
-1137712640,1137713151,CA
+1137688320,1137690623,US
+1137690624,1137691135,DE
+1137691136,1137692159,US
+1137692160,1137692671,CA
+1137692672,1137704959,US
+1137704960,1137713151,CA
1137713152,1137717247,US
1137721344,1137836031,US
1137840128,1137840383,CA
@@ -20904,7 +26238,9 @@
1137917952,1137922047,CA
1137922048,1137926655,US
1137926656,1137926911,CA
-1137926912,1137929727,US
+1137926912,1137927935,US
+1137927936,1137928063,CA
+1137928064,1137929727,US
1137929728,1137929983,IE
1137929984,1137930239,US
1137930240,1137934335,CA
@@ -20913,7 +26249,9 @@
1137954816,1137963007,US
1137963008,1137967103,VI
1137967104,1137983487,US
-1137983488,1137991679,CA
+1137983488,1137985695,CA
+1137985696,1137985727,US
+1137985728,1137991679,CA
1137991680,1138049023,US
1138049024,1138061311,CA
1138061312,1138068479,US
@@ -20951,18 +26289,51 @@
1138417408,1138417663,CA
1138417664,1138419711,US
1138419712,1138419967,DE
-1138419968,1138451767,US
+1138419968,1138450959,US
+1138450960,1138450967,JM
+1138450968,1138451071,US
+1138451072,1138451079,GB
+1138451080,1138451103,US
+1138451104,1138451111,DO
+1138451112,1138451191,US
+1138451192,1138451199,BE
+1138451200,1138451767,US
1138451768,1138451775,IN
-1138451776,1138474239,US
-1138474240,1138474751,CA
-1138474752,1138499583,US
+1138451776,1138451783,GB
+1138451784,1138451847,US
+1138451848,1138451855,RU
+1138451856,1138451959,US
+1138451960,1138451967,RU
+1138451968,1138452007,US
+1138452008,1138452015,DE
+1138452016,1138452047,US
+1138452048,1138452055,AU
+1138452056,1138452063,GB
+1138452064,1138452263,US
+1138452264,1138452271,IN
+1138452272,1138452287,US
+1138452288,1138452295,GR
+1138452296,1138452311,US
+1138452312,1138452319,CA
+1138452320,1138452335,US
+1138452336,1138452351,CA
+1138452352,1138452415,US
+1138452416,1138452423,CA
+1138452424,1138452431,FR
+1138452432,1138452455,US
+1138452456,1138452479,FR
+1138452480,1138453247,US
+1138453248,1138453255,CA
+1138453256,1138453391,US
+1138453392,1138453399,IS
+1138453400,1138474239,US
+1138474240,1138475007,CA
+1138475008,1138499583,US
1138499584,1138503679,CA
1138503680,1138507775,US
-1138507776,1138508575,CA
-1138508576,1138508591,IT
-1138508592,1138509823,CA
-1138509824,1138510847,IN
-1138510848,1138515967,CA
+1138507776,1138508543,CA
+1138508544,1138508799,US
+1138508800,1138515967,CA
1138515968,1138528255,US
1138528256,1138528511,CA
1138528512,1138544895,US
@@ -20985,7 +26356,9 @@
1138774016,1138778111,CA
1138778112,1138780671,US
1138780672,1138780679,CA
-1138780680,1138786303,US
+1138780680,1138781183,US
+1138781184,1138781439,CA
+1138781440,1138786303,US
1138786304,1138819071,PR
1138819072,1138851839,CA
1138851840,1138917375,US
@@ -21020,11 +26393,17 @@
1139154944,1139167231,JM
1139167232,1139167743,US
1139167744,1139168255,PR
-1139168256,1139169279,US
-1139169280,1139169791,PR
-1139169792,1139179519,US
-1139179520,1139195903,CA
-1139195904,1139216383,US
+1139168256,1139168767,US
+1139168768,1139169023,PR
+1139169024,1139169279,US
+1139169280,1139170303,PR
+1139170304,1139170815,US
+1139170816,1139171071,PR
+1139171072,1139175423,US
+1139175424,1139175935,PR
+1139175936,1139179519,US
+1139179520,1139187711,CA
+1139187712,1139216383,US
1139216384,1139220479,CA
1139220480,1139265535,US
1139265536,1139269631,CA
@@ -21034,7 +26413,11 @@
1145099568,1145099697,SA
1145099698,1145099699,US
1145099700,1145099775,SA
-1145099776,1145188351,US
+1145099776,1145165823,US
+1145165824,1145166335,VG
+1145166336,1145168895,US
+1145168896,1145171967,AU
+1145171968,1145188351,US
1145188352,1145192447,CA
1145192448,1145242111,US
1145242112,1145242367,NO
@@ -21060,7 +26443,13 @@
1145421824,1145430015,CA
1145430016,1145475071,US
1145475072,1145479167,CA
-1145479168,1145503743,US
+1145479168,1145487359,US
+1145487360,1145488639,DE
+1145488640,1145489919,US
+1145489920,1145490943,DE
+1145490944,1145491199,CH
+1145491200,1145491455,DE
+1145491456,1145503743,US
1145503744,1145520127,CA
1145520128,1150287871,US
1150287872,1150812159,CA
@@ -21069,8 +26458,8 @@
1151868928,1151889407,US
1151889408,1151892703,CA
1151892704,1151892711,DZ
-1151892712,1151897599,CA
-1151897600,1152073727,US
+1151892712,1151893503,CA
+1151893504,1152073727,US
1152073728,1152077823,CA
1152077824,1152085152,US
1152085153,1152085168,KN
@@ -21117,9 +26506,13 @@
1157910864,1157910879,US
1157910880,1157911071,CA
1157911072,1157911103,US
-1157911104,1157911343,CA
+1157911104,1157911279,CA
+1157911280,1157911287,US
+1157911288,1157911343,CA
1157911344,1157911351,US
-1157911352,1157911775,CA
+1157911352,1157911743,CA
+1157911744,1157911759,US
+1157911760,1157911775,CA
1157911776,1157911791,US
1157911792,1157911927,CA
1157911928,1157911935,US
@@ -21127,7 +26520,9 @@
1157911952,1157911983,US
1157911984,1157912015,CA
1157912016,1157912031,US
-1157912032,1157912347,CA
+1157912032,1157912183,CA
+1157912184,1157912191,US
+1157912192,1157912347,CA
1157912348,1157912348,US
1157912349,1157912391,CA
1157912392,1157912399,US
@@ -21135,8 +26530,8 @@
1157912448,1157912463,US
1157912464,1157912647,CA
1157912648,1157912671,US
-1157912672,1157912703,CA
-1157912704,1157912735,US
+1157912672,1157912687,CA
+1157912688,1157912735,US
1157912736,1157912743,CA
1157912744,1157912751,US
1157912752,1157912815,CA
@@ -21145,13 +26540,15 @@
1157912832,1157912839,US
1157912840,1157912895,CA
1157912896,1157912911,US
-1157912912,1157912959,CA
-1157912960,1157913023,US
+1157912912,1157912943,CA
+1157912944,1157913023,US
1157913024,1157913039,CA
1157913040,1157913047,FI
1157913048,1157913087,CA
1157913088,1157913119,US
-1157913120,1157913231,CA
+1157913120,1157913207,CA
+1157913208,1157913215,US
+1157913216,1157913231,CA
1157913232,1157913247,US
1157913248,1157913279,CA
1157913280,1157913295,US
@@ -21167,7 +26564,9 @@
1157913632,1157913647,US
1157913648,1157913663,CA
1157913664,1157913679,US
-1157913680,1157913759,CA
+1157913680,1157913695,CA
+1157913696,1157913711,US
+1157913712,1157913759,CA
1157913760,1157913775,US
1157913776,1157913919,CA
1157913920,1157913943,US
@@ -21196,7 +26595,11 @@
1157943296,1157947391,CA
1157947392,1158021119,US
1158021120,1158029311,CY
-1158029312,1158120959,US
+1158029312,1158037503,MT
+1158037504,1158041599,JP
+1158041600,1158045196,US
+1158045197,1158045197,JP
+1158045198,1158120959,US
1158120960,1158121215,GB
1158121216,1158148095,US
1158148096,1158152191,CA
@@ -21227,7 +26630,13 @@
1158784768,1158791167,CA
1158791168,1158799359,BM
1158799360,1158807551,CA
-1158807552,1158995967,US
+1158807552,1158951575,US
+1158951576,1158951583,CA
+1158951584,1158967559,US
+1158967560,1158967567,CA
+1158967568,1158969703,US
+1158969704,1158969711,CA
+1158969712,1158995967,US
1158995968,1159004159,CA
1159004160,1159213055,US
1159213056,1159217151,CA
@@ -21253,8 +26662,7 @@
1159421952,1159430143,CA
1159430144,1159477247,US
1159477248,1159477248,AM
-1159477249,1159477503,HK
-1159477504,1159480063,US
+1159477249,1159480063,US
1159480064,1159480319,CA
1159480320,1159483903,US
1159483904,1159484415,CA
@@ -21275,9 +26683,7 @@
1159525120,1159525375,US
1159525376,1159526399,CA
1159526400,1159526655,US
-1159526656,1159527167,CA
-1159527168,1159527423,US
-1159527424,1159528191,CA
+1159526656,1159528191,CA
1159528192,1159668479,US
1159668480,1159668735,CA
1159668736,1159685377,US
@@ -21290,7 +26696,9 @@
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
@@ -21320,7 +26728,9 @@
1160665600,1160665855,CH
1160665856,1160667135,US
1160667136,1160675327,CA
-1160675328,1160683519,US
+1160675328,1160681727,US
+1160681728,1160681983,SG
+1160681984,1160683519,US
1160683520,1160691711,CA
1160691712,1160847359,US
1160847360,1160855551,CA
@@ -21330,7 +26740,13 @@
1160921088,1160925183,AG
1160925184,1160945663,US
1160945664,1160953855,CA
-1160953856,1161019391,US
+1160953856,1160967679,US
+1160967680,1160967935,GB
+1160967936,1160968191,IT
+1160968192,1160968703,SE
+1160968704,1160969215,US
+1160969216,1160970239,NL
+1160970240,1161019391,US
1161019392,1161035775,CA
1161035776,1161052671,US
1161052672,1161052927,GB
@@ -21366,11 +26782,15 @@
1161429032,1161429039,SE
1161429040,1161429111,CA
1161429112,1161429135,US
-1161429136,1161429175,CA
+1161429136,1161429151,CA
+1161429152,1161429167,US
+1161429168,1161429175,CA
1161429176,1161429199,US
1161429200,1161429215,CA
1161429216,1161429255,US
-1161429256,1161429295,CA
+1161429256,1161429263,CA
+1161429264,1161429279,US
+1161429280,1161429295,CA
1161429296,1161429327,US
1161429328,1161429335,CA
1161429336,1161429351,US
@@ -21394,8 +26814,8 @@
1161429856,1161429863,US
1161429864,1161429887,CA
1161429888,1161429903,US
-1161429904,1161429999,CA
-1161430000,1161430015,US
+1161429904,1161429983,CA
+1161429984,1161430015,US
1161430016,1161430023,FI
1161430024,1161430111,CA
1161430112,1161430159,US
@@ -21411,20 +26831,22 @@
1161430560,1161430567,US
1161430568,1161430575,CA
1161430576,1161430591,US
-1161430592,1161430727,CA
+1161430592,1161430703,CA
+1161430704,1161430719,US
+1161430720,1161430727,CA
1161430728,1161430735,FI
1161430736,1161430799,CA
1161430800,1161430815,US
1161430816,1161430847,CA
1161430848,1161430911,US
1161430912,1161430943,CA
-1161430944,1161430975,US
-1161430976,1161430991,CA
-1161430992,1161431007,US
+1161430944,1161431007,US
1161431008,1161431039,CA
1161431040,1161431295,CN
1161431296,1161432063,US
-1161432064,1161432831,CA
+1161432064,1161432479,CA
+1161432480,1161432511,US
+1161432512,1161432831,CA
1161432832,1161433087,US
1161433088,1161437183,CA
1161437184,1161453567,US
@@ -21448,9 +26870,9 @@
1161818112,1161822207,CA
1161822208,1161830852,US
1161830853,1161830853,BZ
-1161830854,1161835230,US
-1161835231,1161835231,PH
-1161835232,1161835948,US
+1161830854,1161833967,US
+1161833968,1161833975,DE
+1161833976,1161835948,US
1161835949,1161835949,BZ
1161835950,1161837567,US
1161837568,1161837823,JP
@@ -21500,8 +26922,8 @@
1162723328,1162806527,US
1162806528,1162806783,PR
1162806784,1162807295,US
-1162807296,1162808063,PR
-1162808064,1162808319,LC
+1162807296,1162807807,PR
+1162807808,1162808319,LC
1162808320,1162809343,PR
1162809344,1162811391,US
1162811392,1162811647,CW
@@ -21521,7 +26943,11 @@
1162840064,1162853375,US
1162853376,1162854399,PR
1162854400,1162858495,JM
-1162858496,1162870783,US
+1162858496,1162862591,US
+1162862592,1162863359,PR
+1162863360,1162863423,US
+1162863424,1162863487,PR
+1162863488,1162870783,US
1162870784,1162871295,BB
1162871296,1162878975,LC
1162878976,1162882559,DM
@@ -21533,7 +26959,10 @@
1162925984,1162926015,AU
1162926016,1162926071,US
1162926072,1162926079,AU
-1162926080,1163386367,US
+1162926080,1162928127,US
+1162930176,1162932223,CA
+1162932224,1163370495,US
+1163378688,1163386367,US
1163386368,1163386879,CA
1163386880,1163399167,US
1163399168,1163399423,WS
@@ -21547,9 +26976,7 @@
1163468800,1163469055,PR
1163469056,1163469311,US
1163469312,1163472895,PR
-1163472896,1163479295,US
-1163479296,1163479551,CA
-1163479552,1163526143,US
+1163472896,1163526143,US
1163526144,1163529215,CA
1163529216,1163529727,US
1163529728,1163529983,CA
@@ -21566,11 +26993,7 @@
1163561472,1163563007,US
1163563008,1163563999,CA
1163564000,1163564031,US
-1163564032,1163565567,CA
-1163565568,1163565823,US
-1163565824,1163566335,CA
-1163566336,1163567103,US
-1163567104,1163569407,CA
+1163564032,1163569407,CA
1163569408,1163569919,US
1163569920,1163570943,CA
1163570944,1163571199,US
@@ -21624,12 +27047,16 @@
1163590784,1163591679,CA
1163591680,1163808767,US
1163808768,1163812863,MV
-1163812864,1167851519,US
+1163812864,1163816959,US
+1163816960,1163821055,CY
+1163821056,1167851519,US
1167851520,1168113663,CA
1168113664,1168121855,MM
1168121856,1168138239,US
1168138240,1168146431,JM
-1168146432,1168211967,US
+1168146432,1168156671,US
+1168156672,1168158719,HK
+1168158720,1168211967,US
1168211968,1168220159,CA
1168220160,1168228863,US
1168228864,1168229119,AU
@@ -21644,13 +27071,7 @@
1168424960,1168461823,US
1168461824,1168465919,CA
1168465920,1168474111,US
-1168474112,1168486399,CA
-1168486400,1168486911,US
-1168486912,1168487167,CA
-1168487168,1168488447,US
-1168488448,1168488703,CA
-1168488704,1168490495,US
-1168490496,1168506879,CA
+1168474112,1168506879,CA
1168506880,1168510975,US
1168510976,1168515071,CA
1168515072,1168535551,US
@@ -21665,17 +27086,18 @@
1168697600,1168697855,GB
1168697856,1168698111,NL
1168698112,1168698367,GB
-1168698368,1168727551,US
-1168727552,1168727807,ES
-1168727808,1168850943,US
+1168698368,1168698623,US
+1168698624,1168698879,UA
+1168698880,1168699135,US
+1168699136,1168699391,UA
+1168699392,1168850943,US
1168850944,1168851967,HK
1168851968,1168855039,CA
1168855040,1168859135,US
1168859136,1168863231,CA
1168863232,1168867327,US
1168867328,1168875519,CA
-1168882548,1168882548,US
-1168883712,1168916479,US
+1168875520,1168916479,US
1168916480,1168924671,HK
1168924672,1168932863,IT
1168932864,1168936959,US
@@ -21690,9 +27112,9 @@
1168954688,1168954751,CA
1168954752,1168955076,US
1168955077,1168955093,CA
-1168955094,1168955647,US
-1168955648,1168956927,CA
-1168956928,1168957183,US
+1168955094,1168955391,US
+1168955392,1168956671,CA
+1168956672,1168957183,US
1168957184,1168957311,IN
1168957312,1168958495,CA
1168958496,1168958527,US
@@ -21710,14 +27132,31 @@
1168962576,1168965631,CA
1168965632,1168973823,US
1168973824,1168982015,CA
-1168982016,1169031167,US
-1169031168,1169035263,CA
-1169035264,1169203199,US
+1168982016,1168998399,US
+1168998400,1169002495,CA
+1169002496,1169003007,DE
+1169003008,1169031167,US
+1169031168,1169033215,CA
+1169033216,1169034529,US
+1169034530,1169034530,CA
+1169034531,1169035263,US
+1169035264,1169035265,DE
+1169035266,1169035266,US
+1169035267,1169037311,DE
+1169037312,1169041537,US
+1169041538,1169041538,CA
+1169041539,1169043991,US
+1169043992,1169043995,GB
+1169043996,1169052015,US
+1169052016,1169052019,GB
+1169052020,1169052047,US
+1169052048,1169052051,GB
+1169052052,1169203199,US
1169203200,1169211391,CA
1169211392,1170190335,US
1170190336,1170190847,GB
1170190848,1170191103,JP
-1170191104,1170191359,US
+1170191104,1170191359,SG
1170191360,1170191871,DE
1170191872,1170192383,HK
1170192384,1170227199,US
@@ -21745,13 +27184,17 @@
1170489344,1170497535,CA
1170497536,1170505727,US
1170505728,1170522111,CA
-1170522112,1175977983,US
+1170522112,1170552319,US
+1170552320,1170552575,SG
+1170552576,1175977983,US
1175977984,1176068167,CA
1176068168,1176068175,US
1176068176,1176068191,CA
1176068192,1176068207,US
1176068208,1176502271,CA
-1176502272,1176616959,US
+1176502272,1176512175,US
+1176512176,1176512183,CA
+1176512184,1176616959,US
1176616960,1176627775,CA
1176627776,1176628223,US
1176628224,1176631551,CA
@@ -21761,7 +27204,9 @@
1176632576,1176632831,GB
1176632832,1176643583,US
1176643584,1176645631,NL
-1176645632,1176731647,US
+1176645632,1176647167,US
+1176647168,1176647679,NL
+1176647680,1176731647,US
1176731648,1176735743,PR
1176735744,1176736767,US
1176736768,1176737023,CR
@@ -21780,9 +27225,7 @@
1176776704,1176780799,CA
1176780800,1176864255,US
1176864256,1176864319,JP
-1176864320,1176864767,US
-1176864768,1176865535,PR
-1176865536,1176868095,US
+1176864320,1176868095,US
1176868096,1176868351,AU
1176868352,1176868863,BR
1176868864,1176895487,US
@@ -21792,15 +27235,45 @@
1176900736,1176900743,US
1176900744,1176904871,CA
1176904872,1176904879,US
-1176904880,1176907927,CA
+1176904880,1176905687,CA
+1176905688,1176905695,US
+1176905696,1176905743,CA
+1176905744,1176905751,MX
+1176905752,1176907927,CA
1176907928,1176907935,GB
-1176907936,1176910343,CA
+1176907936,1176908887,CA
+1176908888,1176908895,US
+1176908896,1176910343,CA
1176910344,1176910351,CR
-1176910352,1176917831,CA
+1176910352,1176911311,CA
+1176911312,1176911319,FR
+1176911320,1176914167,CA
+1176914168,1176914175,US
+1176914176,1176916911,CA
+1176916912,1176916919,US
+1176916920,1176917831,CA
1176917832,1176917839,AU
-1176917840,1176925007,CA
+1176917840,1176917863,CA
+1176917864,1176917871,US
+1176917872,1176917903,CA
+1176917904,1176917911,IL
+1176917912,1176919711,CA
+1176919712,1176919719,US
+1176919720,1176919807,CA
+1176919808,1176920575,KY
+1176920576,1176921007,CA
+1176921008,1176921015,US
+1176921016,1176921647,CA
+1176921648,1176921655,US
+1176921656,1176922927,CA
+1176922928,1176922935,US
+1176922936,1176923543,CA
+1176923544,1176923551,MX
+1176923552,1176925007,CA
1176925008,1176925015,NG
-1176925016,1176928255,CA
+1176925016,1176926703,CA
+1176926704,1176926711,US
+1176926712,1176928255,CA
1176928256,1177000703,US
1177000704,1177000711,CA
1177000712,1177000719,US
@@ -21822,9 +27295,9 @@
1177164896,1177165055,US
1177165056,1177165087,CA
1177165088,1177354239,US
-1177354240,1177359615,PR
-1177359616,1177359871,US
-1177359872,1177419775,PR
+1177354240,1177386879,PR
+1177386880,1177387007,US
+1177387008,1177419775,PR
1177419776,1177550847,US
1177550848,1178075135,CA
1178075136,1178599423,US
@@ -21847,13 +27320,15 @@
1208008704,1208016895,CA
1208016896,1208020991,US
1208020992,1208025087,CA
-1208025088,1208050943,US
-1208050944,1208051199,CA
-1208051200,1208074239,US
+1208025088,1208074239,US
1208074240,1208082431,CA
1208082432,1208090623,US
1208090624,1208107007,CA
-1208107008,1208590335,US
+1208107008,1208209175,US
+1208209176,1208209183,CA
+1208209184,1208210511,US
+1208210512,1208210519,CA
+1208210520,1208590335,US
1208590336,1208598527,CA
1208598528,1208647679,US
1208647680,1208659967,CA
@@ -21867,7 +27342,8 @@
1208852480,1208860671,CA
1208860672,1208918015,US
1208918016,1208922111,CA
-1208922112,1208935935,US
+1208922112,1208935807,US
+1208935808,1208935935,CN
1208935936,1208935943,AU
1208935944,1208935951,IN
1208935952,1208935959,SG
@@ -21877,13 +27353,12 @@
1208935984,1208935991,IN
1208935992,1208935999,JP
1208936000,1208936003,HK
-1208936004,1208936007,US
+1208936004,1208936007,AU
1208936008,1208936015,ID
-1208936016,1208936023,US
+1208936016,1208936023,AU
1208936024,1208936039,IN
1208936040,1208936047,JP
-1208936048,1208936191,US
-1208936192,1208936199,AU
+1208936048,1208936199,AU
1208936200,1208936207,SG
1208936208,1208936215,HK
1208936216,1208936223,IN
@@ -21892,11 +27367,12 @@
1208936240,1208936247,JP
1208936248,1208936255,IN
1208936256,1208936263,MY
-1208936264,1208936295,US
+1208936264,1208936295,AU
1208936296,1208936299,HK
-1208936300,1208936311,US
+1208936300,1208936311,AU
1208936312,1208936313,ID
-1208936314,1208954879,US
+1208936314,1208936447,AU
+1208936448,1208954879,US
1208954880,1208958975,CA
1208958976,1208975359,US
1208975360,1208983551,CA
@@ -21906,7 +27382,9 @@
1209359104,1209434111,US
1209434112,1209436671,BB
1209436672,1209437183,VC
-1209437184,1209440767,BB
+1209437184,1209438719,BB
+1209438720,1209439231,GD
+1209439232,1209440767,BB
1209440768,1209441279,GD
1209441280,1209442303,BB
1209442304,1209647103,US
@@ -21932,9 +27410,17 @@
1209884680,1209884687,ES
1209884688,1209917439,US
1209917440,1209925631,CA
-1209925632,1210254935,US
+1209925632,1210092287,US
+1210092288,1210092543,ES
+1210092544,1210099711,US
+1210099712,1210099719,MX
+1210099720,1210109263,US
+1210109264,1210109271,CA
+1210109272,1210254935,US
1210254936,1210254943,CA
-1210254944,1210257407,US
+1210254944,1210255103,US
+1210255104,1210255359,CA
+1210255360,1210257407,US
1210257408,1210261503,CA
1210261504,1210314751,US
1210314752,1210315007,GB
@@ -21985,11 +27471,12 @@
1211315680,1211317759,CA
1211317760,1211318015,US
1211318016,1211318271,CA
-1211318272,1211321343,BB
+1211318272,1211321087,BB
+1211321088,1211321343,BS
1211321344,1211322367,VC
1211322368,1211322623,BB
-1211322624,1211324415,GD
-1211324416,1211324927,VC
+1211322624,1211324159,GD
+1211324160,1211324927,VC
1211324928,1211333119,BB
1211333120,1211333631,VC
1211333632,1211333887,GD
@@ -22003,12 +27490,28 @@
1211390990,1211390990,DE
1211390991,1211391216,US
1211391217,1211391217,IT
-1211391218,1211432959,US
+1211391218,1211394815,US
+1211394816,1211395071,NL
+1211395072,1211395839,US
+1211395840,1211396095,NL
+1211396096,1211432959,US
1211432960,1211473919,CA
1211473920,1211596799,US
-1211596800,1211605999,CA
+1211596800,1211600959,CA
+1211600960,1211600967,US
+1211600968,1211604335,CA
+1211604336,1211604343,MX
+1211604344,1211605939,CA
+1211605940,1211605943,PH
+1211605944,1211605999,CA
1211606000,1211606003,US
-1211606004,1211613183,CA
+1211606004,1211606771,CA
+1211606772,1211606775,AE
+1211606776,1211608359,CA
+1211608360,1211608367,US
+1211608368,1211609343,CA
+1211609344,1211609599,US
+1211609600,1211613183,CA
1211613184,1216872447,US
1216872448,1217396735,CA
1217396736,1218674687,US
@@ -22016,9 +27519,9 @@
1218699264,1218705407,HK
1218705408,1218706431,CN
1218706432,1218707455,HK
-1218707456,1218987263,US
-1218987264,1218987519,CA
-1218987520,1219256319,US
+1218707456,1218985983,US
+1218985984,1218994175,CA
+1218994176,1219256319,US
1219256320,1219264511,CA
1219264512,1219272703,US
1219272704,1219276799,CA
@@ -22026,17 +27529,19 @@
1219290624,1219290751,AU
1219290752,1219295295,US
1219295296,1219295359,GR
-1219295360,1224094463,US
-1224094464,1224094719,NL
-1224094720,1224104959,US
+1219295360,1224089599,US
+1224089600,1224093695,CA
+1224093696,1224104959,US
1224104960,1224105471,NL
-1224105472,1224118271,US
+1224105472,1224107007,US
+1224107008,1224107519,NL
+1224107520,1224118271,US
1224118272,1224119807,NL
-1224119808,1224124415,US
-1224124416,1224126463,NL
-1224126464,1224138751,US
+1224119808,1224138751,US
1224138752,1224140799,NL
-1224140800,1224157695,US
+1224140800,1224151039,US
+1224151040,1224152575,NL
+1224152576,1224157695,US
1224157696,1224158207,NL
1224158208,1224167935,US
1224167936,1224169471,NL
@@ -22072,18 +27577,15 @@
1224471569,1224473599,NL
1224473600,1224474623,US
1224474624,1224475647,GT
-1224475648,1224476671,US
+1224475648,1224475903,PR
+1224475904,1224476671,US
1224476672,1224478719,SX
1224478720,1224480767,US
1224480768,1224484863,JM
1224484864,1224493055,GT
1224493056,1224497151,US
1224497152,1224501247,GT
-1224501248,1224523520,JM
-1224523521,1224523558,US
-1224523559,1224523559,JM
-1224523560,1224523775,US
-1224523776,1224540159,JM
+1224501248,1224540159,JM
1224540160,1224671231,US
1224671232,1224687615,PK
1224687616,1224728575,US
@@ -22102,13 +27604,85 @@
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,1246890431,US
+1245446144,1245647359,US
+1245647360,1245647615,AR
+1245647616,1245647871,BR
+1245647872,1245648127,SG
+1245648128,1245648383,JP
+1245648384,1245648639,EG
+1245648640,1245648895,ZA
+1245648896,1245649151,DE
+1245649152,1245649407,NL
+1245649408,1245649663,GB
+1245649664,1245649919,CN
+1245649920,1245650687,US
+1245650688,1245650943,AU
+1245650944,1246774271,US
+1246774272,1246774527,ZA
+1246774528,1246774783,US
+1246774784,1246775039,ID
+1246775040,1246775295,EE
+1246775296,1246775551,FI
+1246775552,1246775807,SG
+1246775808,1246776063,US
+1246776064,1246776319,KR
+1246776320,1246776575,US
+1246776576,1246776831,BG
+1246776832,1246777087,TR
+1246777088,1246777343,BR
+1246777344,1246777599,AR
+1246777600,1246777855,PL
+1246777856,1246778111,SE
+1246778112,1246778367,AE
+1246778368,1246778623,IT
+1246778624,1246778879,ZA
+1246778880,1246779135,CZ
+1246779136,1246779391,MZ
+1246779392,1246779647,CH
+1246779648,1246779903,DE
+1246779904,1246780159,BH
+1246780160,1246780415,AT
+1246780416,1246780671,IE
+1246780672,1246780927,US
+1246780928,1246781183,MY
+1246781184,1246781439,DE
+1246781440,1246781951,US
+1246781952,1246782207,DE
+1246782208,1246782463,JP
+1246782464,1246782975,US
+1246782976,1246783231,PH
+1246783232,1246783487,AU
+1246783488,1246783743,BD
+1246783744,1246783999,ID
+1246784000,1246784255,NP
+1246784256,1246784511,FR
+1246784512,1246784767,KE
+1246784768,1246785023,NL
+1246785024,1246786303,US
+1246786304,1246786559,CN
+1246786560,1246786815,US
+1246786816,1246787071,EG
+1246787072,1246787327,CA
+1246787328,1246787839,US
+1246787840,1246788095,CA
+1246788096,1246788351,SG
+1246788352,1246788607,GB
+1246788608,1246789119,NZ
+1246789120,1246789375,US
+1246789376,1246789631,AU
+1246789632,1246890431,US
1246890432,1246890463,CA
1246890464,1246890464,US
1246890465,1246890495,CA
-1246890496,1246895103,US
+1246890496,1246893567,US
+1246893568,1246893715,JP
+1246893716,1246893716,US
+1246893717,1246893823,JP
+1246893824,1246895103,US
1246895104,1246895615,NL
1246895616,1246902783,US
1246902784,1246903039,NL
@@ -22118,9 +27692,7 @@
1246905600,1246912511,CA
1246912512,1246923519,US
1246923520,1246923775,AU
-1246923776,1246937087,US
-1246937088,1246945279,CA
-1246945280,1247101439,US
+1246923776,1247101439,US
1247101440,1247101695,CA
1247101696,1247123967,US
1247123968,1247124223,CA
@@ -22158,7 +27730,9 @@
1248971008,1248971263,CA
1248971264,1248979711,US
1248979712,1248979967,IE
-1248979968,1248997375,US
+1248979968,1248989183,US
+1248989184,1248991231,CA
+1248991232,1248997375,US
1248997376,1248998399,ID
1248998400,1249003519,US
1249003520,1249005567,CA
@@ -22172,9 +27746,7 @@
1249024512,1249025023,CA
1249025024,1249029119,US
1249029120,1249030143,CA
-1249030144,1249036287,US
-1249036288,1249037311,TC
-1249037312,1249038335,US
+1249030144,1249038335,US
1249038336,1249040383,CA
1249040384,1249046527,US
1249046528,1249047551,BM
@@ -22197,9 +27769,7 @@
1249142016,1249142271,GB
1249142272,1249146879,US
1249146880,1249147903,CA
-1249147904,1249160703,US
-1249160704,1249161215,GB
-1249161216,1249163263,US
+1249147904,1249163263,US
1249163264,1249165311,CA
1249165312,1249171455,US
1249171456,1249173503,CA
@@ -22235,7 +27805,9 @@
1249312768,1249313791,CA
1249313792,1249335295,US
1249335296,1249337343,CA
-1249337344,1249359871,US
+1249337344,1249353727,US
+1249353728,1249353983,AU
+1249353984,1249359871,US
1249359872,1249361919,CA
1249361920,1249379327,US
1249379328,1249380351,CA
@@ -22269,7 +27841,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
@@ -22285,7 +27868,10 @@
1249710144,1249710207,CN
1249710208,1249710271,NL
1249710272,1249710591,BE
-1249710592,1249716479,US
+1249710592,1249710719,US
+1249710720,1249710783,AU
+1249710784,1249710847,GB
+1249710848,1249716479,US
1249716480,1249716735,TW
1249716736,1249717759,US
1249717760,1249718015,FI
@@ -22331,9 +27917,9 @@
1249721520,1249721527,ZA
1249721528,1249721535,DK
1249721536,1249721539,PL
-1249721540,1249721543,US
+1249721540,1249721543,AU
1249721544,1249721551,GB
-1249721552,1249721599,US
+1249721552,1249721599,AU
1249721600,1249721607,AT
1249721608,1249721615,BE
1249721616,1249721623,CH
@@ -22360,11 +27946,11 @@
1249721792,1249721799,KE
1249721800,1249721807,TR
1249721808,1249721815,ZA
-1249721816,1249721825,US
+1249721816,1249721825,AU
1249721826,1249721827,IL
-1249721828,1249721833,US
+1249721828,1249721833,AU
1249721834,1249721835,GB
-1249721836,1249722111,US
+1249721836,1249722111,AU
1249722112,1249722367,IN
1249722368,1249724671,US
1249724672,1249724694,BE
@@ -22391,7 +27977,9 @@
1249851904,1249852159,FR
1249852160,1249886207,US
1249886208,1249902591,CA
-1249902592,1254490111,US
+1249902592,1252535295,US
+1252535296,1252536319,VI
+1252536320,1254490111,US
1254490112,1254555647,CA
1254555648,1254621183,US
1254621184,1254629375,CA
@@ -22399,8 +27987,8 @@
1254653440,1254653695,CA
1254653696,1254978751,US
1254978752,1254978767,LB
-1254978768,1254989823,US
-1254989824,1254998015,CA
+1254978768,1254992383,US
+1254992384,1254998015,CA
1254998016,1255002111,US
1255002112,1255006207,CA
1255006208,1255011583,US
@@ -22455,7 +28043,9 @@
1264762880,1264766975,CA
1264766976,1264991311,US
1264991312,1264991319,JP
-1264991320,1265073535,US
+1264991320,1265008639,US
+1265008640,1265008895,CA
+1265008896,1265073535,US
1265073536,1265073551,KN
1265073552,1266147327,US
1266147328,1266155519,CA
@@ -22494,8 +28084,10 @@
1279956320,1279956335,US
1279956336,1279956367,CA
1279956368,1279956383,US
-1279956384,1279956991,CA
-1279956992,1279959551,US
+1279956384,1279957495,CA
+1279957496,1279957499,US
+1279957500,1279959039,CA
+1279959040,1279959551,US
1279959552,1279959807,CA
1279959808,1279960063,US
1279960064,1279960575,CA
@@ -22547,9 +28139,8 @@
1280091136,1280092159,VG
1280092160,1280093183,KN
1280093184,1280094207,VG
-1280094208,1280095231,AI
-1280095232,1280095487,KN
-1280095488,1280097279,AG
+1280094208,1280096255,AI
+1280096256,1280097279,AG
1280097280,1280097791,LC
1280097792,1280098303,AG
1280098304,1280102399,PR
@@ -22558,14 +28149,21 @@
1280131072,1280139263,CA
1280139264,1280242175,US
1280242176,1280243199,CA
-1280243200,1291845631,US
+1280243200,1289724159,US
+1289724160,1289724415,GB
+1289724416,1289724671,DE
+1289724672,1289724927,IN
+1289724928,1289725183,JP
+1289725184,1289725439,BR
+1289725440,1291845631,US
1291845632,1292894207,DE
1292894208,1293156351,NO
1293156352,1293549567,DE
1293549568,1293680639,ES
1293680640,1293811711,MK
1293811712,1293942783,SA
-1293942784,1294000127,PL
+1293942784,1293975551,IT
+1293975552,1294000127,FR
1294000128,1294004223,CH
1294004224,1294073855,PL
1294073856,1294204927,RU
@@ -22590,7 +28188,9 @@
1294794752,1294827519,PL
1294827520,1294860287,RU
1294860288,1294893055,PL
-1294893056,1294925823,RS
+1294893056,1294907391,RS
+1294907392,1294907903,XK
+1294907904,1294925823,RS
1294925824,1294958591,DE
1294958592,1294991359,UA
1294991360,1295024639,CZ
@@ -22604,93 +28204,168 @@
1295319040,1295384575,SE
1295384576,1295450111,PT
1295450112,1295515647,PL
-1295515648,1295777791,CH
+1295515648,1295762431,CH
+1295762432,1295763455,GB
+1295763456,1295777791,CH
1295777792,1296039935,NL
1296039936,1296072703,SA
1296072704,1296105471,DE
1296105472,1296171007,PL
1296171008,1296203775,DK
1296203776,1296236543,RU
-1296236544,1296237439,DE
+1296236544,1296236671,FR
+1296236672,1296236799,US
+1296236800,1296237055,IE
+1296237056,1296237311,FR
+1296237312,1296237439,IE
1296237440,1296237567,IT
-1296237568,1296237823,DE
-1296237824,1296237824,GB
-1296237825,1296237825,DE
-1296237826,1296237826,GB
-1296237827,1296237878,DE
-1296237879,1296237879,GB
-1296237880,1296242927,DE
+1296237568,1296238591,GB
+1296238592,1296239103,NL
+1296239104,1296239231,IE
+1296239232,1296239359,NL
+1296239360,1296240383,DE
+1296240384,1296241791,IE
+1296241792,1296241919,NL
+1296241920,1296242303,IE
+1296242304,1296242431,NL
+1296242432,1296242927,IE
1296242928,1296242943,GB
-1296242944,1296243111,DE
+1296242944,1296242975,IE
+1296242976,1296243007,ES
+1296243008,1296243111,IE
1296243112,1296243119,GB
-1296243120,1296244991,DE
+1296243120,1296243455,IE
+1296243456,1296243711,DE
+1296243712,1296244223,US
+1296244224,1296244479,NL
+1296244480,1296244991,IE
1296244992,1296245247,CH
-1296245248,1296249023,DE
+1296245248,1296245503,IE
+1296245504,1296245759,NL
+1296245760,1296246783,IE
+1296246784,1296247295,NL
+1296247296,1296247807,DE
+1296247808,1296247999,IE
+1296248000,1296248015,ES
+1296248016,1296248031,GB
+1296248032,1296248447,IE
+1296248448,1296248575,DE
+1296248576,1296248703,IE
+1296248704,1296248831,FR
+1296248832,1296249023,IE
1296249024,1296249087,GB
-1296249088,1296249407,DE
+1296249088,1296249279,IE
+1296249280,1296249343,DE
+1296249344,1296249407,IE
1296249408,1296249423,GB
-1296249424,1296249439,DE
+1296249424,1296249439,IE
1296249440,1296249455,GB
1296249456,1296249463,IT
1296249464,1296249471,GB
-1296249472,1296249567,DE
+1296249472,1296249552,IE
+1296249553,1296249553,DE
+1296249554,1296249567,IE
1296249568,1296249599,NO
1296249600,1296249615,GB
-1296249616,1296249747,DE
+1296249616,1296249747,IE
1296249748,1296249751,GB
-1296249752,1296250367,DE
+1296249752,1296249823,IE
+1296249824,1296249855,FR
+1296249856,1296250239,IE
+1296250240,1296250271,FR
+1296250272,1296250367,IE
1296250368,1296250399,CZ
1296250400,1296250431,DE
1296250432,1296250463,PL
1296250464,1296250495,RO
-1296250496,1296250527,DE
+1296250496,1296250527,IE
1296250528,1296250559,DK
-1296250560,1296250847,DE
+1296250560,1296250607,IE
+1296250608,1296250615,DE
+1296250616,1296250847,IE
1296250848,1296250879,GB
-1296250880,1296252479,DE
+1296250880,1296250943,IE
+1296250944,1296250947,FR
+1296250948,1296251199,IE
+1296251200,1296251231,NL
+1296251232,1296251391,IE
+1296251392,1296251775,NL
+1296251776,1296252479,IE
1296252480,1296252487,ES
-1296252488,1296252535,DE
+1296252488,1296252503,IE
+1296252504,1296252507,DE
+1296252508,1296252535,IE
1296252536,1296252543,IT
1296252544,1296252551,FR
-1296252552,1296252591,DE
+1296252552,1296252571,IE
+1296252572,1296252575,DE
+1296252576,1296252591,IE
1296252592,1296252595,GB
-1296252596,1296252599,DE
+1296252596,1296252599,IE
1296252600,1296252607,GB
1296252608,1296252615,NL
1296252616,1296252623,ES
-1296252624,1296252647,DE
+1296252624,1296252647,IE
1296252648,1296252655,GB
-1296252656,1296252663,IE
-1296252664,1296252667,DE
+1296252656,1296252667,IE
1296252668,1296252671,GB
-1296252672,1296254207,DE
+1296252672,1296252871,IE
+1296252872,1296252879,DE
+1296252880,1296254207,IE
1296254208,1296254463,US
-1296254464,1296256839,DE
+1296254464,1296256839,IE
1296256840,1296256847,US
-1296256848,1296262383,DE
+1296256848,1296258303,IE
+1296258304,1296258559,NL
+1296258560,1296258815,US
+1296258816,1296259071,NL
+1296259072,1296259839,IE
+1296259840,1296260095,NL
+1296260096,1296260351,US
+1296260352,1296261119,IE
+1296261120,1296261631,DE
+1296261632,1296262383,IE
1296262384,1296262399,IN
-1296262400,1296263431,DE
+1296262400,1296262655,US
+1296262656,1296263431,IE
1296263432,1296263439,FR
-1296263440,1296263523,DE
+1296263440,1296263523,IE
1296263524,1296263527,CH
-1296263528,1296264263,DE
-1296264264,1296264271,GB
-1296264272,1296264287,DE
+1296263528,1296263679,IE
+1296263680,1296263935,US
+1296263936,1296264191,IE
+1296264192,1296264287,GB
1296264288,1296264303,US
-1296264304,1296265175,DE
+1296264304,1296265175,GB
1296265176,1296265183,RS
-1296265184,1296267341,DE
+1296265184,1296265215,GB
+1296265216,1296265279,IE
+1296265280,1296265343,DE
+1296265344,1296267263,IE
+1296267264,1296267341,DE
1296267342,1296267342,GB
-1296267343,1296268389,DE
+1296267343,1296268287,DE
+1296268288,1296268389,IE
1296268390,1296268391,GB
-1296268392,1296269311,DE
+1296268392,1296268799,IE
+1296268800,1296269055,FR
+1296269056,1296269311,US
1296269312,1296302079,BY
1296302080,1296334847,GB
1296334848,1296367615,DK
1296367616,1296400383,GR
1296400384,1296433151,BH
1296433152,1296465919,BG
-1296465920,1296498687,NO
+1296465920,1296469759,LU
+1296469760,1296475135,FR
+1296475136,1296476159,NL
+1296476160,1296478207,FR
+1296478208,1296482077,US
+1296482078,1296482078,NO
+1296482079,1296482303,US
+1296482304,1296483071,GB
+1296483072,1296498175,US
+1296498176,1296498687,FR
1296498688,1296531455,BG
1296531456,1296564223,MT
1296564224,1296566271,GB
@@ -22743,7 +28418,16 @@
1296670720,1296672767,ES
1296672768,1296674815,GB
1296674816,1296676863,BE
-1296676864,1296678911,JE
+1296676864,1296677295,JE
+1296677296,1296677303,NG
+1296677304,1296677639,JE
+1296677640,1296677647,NG
+1296677648,1296677727,JE
+1296677728,1296677735,NG
+1296677736,1296678791,JE
+1296678792,1296678799,NG
+1296678800,1296678903,JE
+1296678904,1296678911,NG
1296678912,1296680959,SA
1296680960,1296683007,ES
1296683008,1296685055,IE
@@ -22759,7 +28443,8 @@
1296703488,1296705535,BY
1296705536,1296707583,GE
1296707584,1296709631,NL
-1296709632,1296711679,CY
+1296709632,1296709887,CY
+1296709888,1296711679,CH
1296711680,1296713727,KZ
1296713728,1296715775,RU
1296715776,1296717823,CH
@@ -22788,7 +28473,7 @@
1296764928,1296769023,AT
1296769024,1296771071,TR
1296771072,1296773119,LT
-1296775168,1296779263,FR
+1296777216,1296779263,FR
1296779264,1296781311,CZ
1296781312,1296783359,DK
1296783360,1296785407,LB
@@ -22821,7 +28506,9 @@
1296941056,1296957439,BA
1296957440,1296973823,BG
1296973824,1296990207,CZ
-1296990208,1296998399,BG
+1296990208,1296995839,BG
+1296995840,1296996095,GB
+1296996096,1296998399,BG
1296998400,1297006591,DE
1297006592,1297022975,BA
1297022976,1297039359,LT
@@ -22840,17 +28527,14 @@
1297162240,1297166335,IR
1297166336,1297168383,RO
1297168384,1297170431,AZ
-1297170432,1297170943,RO
-1297170944,1297171455,GB
-1297171456,1297172479,RO
-1297172480,1297172991,GB
-1297172992,1297173503,RO
+1297170432,1297173247,RO
+1297173248,1297173503,GG
1297173504,1297175551,IR
1297175552,1297176319,GB
1297176320,1297176831,RO
1297176832,1297177599,GB
1297177600,1297177855,QA
-1297177856,1297178111,US
+1297177856,1297178111,RO
1297178112,1297178367,QA
1297178368,1297178623,RO
1297178624,1297178879,NL
@@ -22861,7 +28545,7 @@
1297182208,1297182463,NL
1297182464,1297182719,RO
1297182720,1297184767,ES
-1297184768,1297185279,BZ
+1297184768,1297185279,NL
1297185280,1297185791,RO
1297185792,1297185919,NL
1297185920,1297186815,US
@@ -22904,7 +28588,7 @@
1297573888,1297575935,FR
1297575936,1297577983,RU
1297577984,1297580031,PL
-1297580032,1297582079,GB
+1297580032,1297582079,CH
1297582080,1297584127,PL
1297584128,1297588223,UA
1297588224,1297590271,NL
@@ -22933,7 +28617,27 @@
1297727488,1297743871,MD
1297743872,1297760255,DE
1297760256,1297776639,LT
-1297776640,1297793023,DE
+1297776640,1297782783,DE
+1297782784,1297784319,RU
+1297784320,1297784575,DE
+1297784576,1297785087,RU
+1297785088,1297785343,DE
+1297785344,1297785855,RU
+1297785856,1297786111,DE
+1297786112,1297786367,RU
+1297786368,1297788415,DE
+1297788416,1297788671,RU
+1297788672,1297789951,DE
+1297789952,1297790207,RU
+1297790208,1297790463,DE
+1297790464,1297791231,RU
+1297791232,1297791487,DE
+1297791488,1297791743,RU
+1297791744,1297791999,DE
+1297792000,1297792255,RU
+1297792256,1297792511,DE
+1297792512,1297792767,RU
+1297792768,1297793023,DE
1297793024,1297809407,UA
1297809408,1297825791,PL
1297825792,1297838079,RU
@@ -22948,7 +28652,9 @@
1297868800,1297870847,DE
1297870848,1297872895,FR
1297872896,1297874943,GB
-1297874944,1297883135,CY
+1297874944,1297879039,CY
+1297879040,1297880063,TR
+1297880064,1297883135,CY
1297883136,1297891327,PL
1297891328,1297899519,GB
1297899520,1297915903,TR
@@ -22957,7 +28663,7 @@
1297932288,1297940479,GE
1297940480,1297948671,LV
1297948672,1297956863,UA
-1297956864,1297965055,NL
+1297957760,1297965055,NL
1297965056,1297973247,RU
1297973248,1297981439,GB
1297981440,1297989631,RO
@@ -22965,13 +28671,10 @@
1297997824,1298006015,IT
1298006016,1298006783,RU
1298006784,1298014207,KZ
-1298014208,1298014719,RU
-1298014720,1298014975,LT
-1298014976,1298016255,RU
-1298016256,1298016511,LT
-1298016512,1298019327,RU
-1298019328,1298019839,LT
-1298019840,1298022399,RU
+1298014208,1298017279,LT
+1298017280,1298018303,BY
+1298018304,1298020351,LT
+1298020352,1298022399,BY
1298022400,1298030591,IT
1298030592,1298038783,RU
1298038784,1298046975,SI
@@ -22982,7 +28685,7 @@
1298071552,1298073599,TJ
1298073600,1298075647,RU
1298075648,1298077695,CY
-1298077696,1298079743,DE
+1298078208,1298079743,NL
1298079744,1298081791,GB
1298081792,1298083839,CZ
1298083840,1298085887,PL
@@ -23006,7 +28709,9 @@
1298120704,1298122751,CZ
1298122752,1298124799,RU
1298124800,1298126847,IT
-1298126848,1298128895,SA
+1298126848,1298127871,SA
+1298127872,1298128127,IR
+1298128128,1298128895,SA
1298128896,1298130943,NL
1298130944,1298131455,BG
1298131456,1298132991,PL
@@ -23015,16 +28720,15 @@
1298137088,1298661375,GB
1298661376,1298677759,FR
1298677760,1298694143,IR
-1298694144,1298698315,BG
-1298698316,1298698316,US
-1298698317,1298698784,BG
-1298698785,1298698785,US
-1298698786,1298700258,BG
-1298700259,1298700259,US
-1298700260,1298710527,BG
+1298694144,1298705012,US
+1298705013,1298705013,SG
+1298705014,1298708879,US
+1298708880,1298708880,SG
+1298708881,1298710527,US
1298710528,1298726911,CZ
1298726912,1298743295,RS
-1298743296,1298759679,FI
+1298743296,1298757631,FI
+1298757632,1298759679,FJ
1298759680,1298776063,RU
1298776064,1298792447,SE
1298792448,1298825215,RU
@@ -23038,18 +28742,16 @@
1298956288,1298972671,GB
1298972672,1298989055,RU
1298989056,1299005439,UA
-1299005440,1299010047,NL
-1299010048,1299011583,BE
-1299011584,1299013631,NL
-1299013632,1299015167,BE
-1299015168,1299015423,NL
-1299015424,1299015679,BE
+1299005440,1299008767,NL
+1299008768,1299009023,BE
+1299009024,1299009535,NL
+1299009536,1299015679,BE
1299015680,1299017727,NL
-1299017728,1299019007,BE
-1299019008,1299019263,NL
-1299019264,1299019775,BE
-1299019776,1299020543,NL
-1299020544,1299021055,BE
+1299017728,1299018239,BE
+1299018240,1299018751,NL
+1299018752,1299019775,BE
+1299019776,1299020031,NL
+1299020032,1299021055,BE
1299021056,1299021823,NL
1299021824,1299025148,CH
1299025149,1299025149,DE
@@ -23058,189 +28760,72 @@
1299026128,1299038207,CH
1299038208,1299054591,FI
1299054592,1299070975,SE
-1299070976,1299083263,LB
-1299083264,1299085311,SA
-1299085312,1299087359,LB
+1299070976,1299087359,SA
1299087360,1299103743,HU
1299103744,1299104255,NO
1299104256,1299104511,SJ
-1299104512,1299120127,NO
+1299104512,1299109375,NO
+1299109376,1299109411,SJ
+1299109412,1299109412,NO
+1299109413,1299109443,SJ
+1299109444,1299109444,NO
+1299109445,1299109453,SJ
+1299109454,1299109454,NO
+1299109455,1299109529,SJ
+1299109530,1299109530,NO
+1299109531,1299109569,SJ
+1299109570,1299109570,NO
+1299109571,1299109613,SJ
+1299109614,1299109614,NO
+1299109615,1299109631,SJ
+1299109632,1299120127,NO
1299120128,1299136511,SI
1299136512,1299169279,HU
-1299169280,1299171327,GB
-1299171328,1299172351,US
-1299172352,1299173375,GB
+1299169280,1299173375,US
1299173376,1299174399,FR
1299174400,1299178495,GB
1299178496,1299180543,CH
1299180544,1299181567,GB
1299181568,1299182591,DK
-1299182592,1299185663,FR
+1299183616,1299183871,SE
+1299184640,1299185663,GB
1299185664,1299447807,PL
-1299447808,1299709951,AT
+1299447808,1299622911,AT
+1299622912,1299623935,DE
+1299623936,1299709951,AT
1299709952,1299724287,UA
1299724288,1299725311,RU
1299725312,1299779071,UA
1299779072,1299779327,RU
-1299779328,1299783679,UA
-1299783680,1299791871,RU
-1299791872,1299959807,UA
-1299959808,1299972095,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
1299972096,1300234239,IL
-1300234240,1300889599,FR
-1300889600,1300891135,IL
-1300891136,1300891647,FR
-1300891648,1300895743,IL
-1300895744,1300896511,FR
-1300896512,1300898303,IL
-1300898304,1300900863,FR
-1300900864,1300903935,IL
-1300903936,1300905983,FR
-1300905984,1300907007,IL
-1300907008,1300908031,FR
-1300908032,1300908543,IL
-1300908544,1300908799,FR
-1300908800,1300913407,IL
-1300913408,1300913663,FR
-1300913664,1300914175,IL
-1300914176,1300915711,FR
-1300915712,1300915967,IL
-1300915968,1300916223,FR
-1300916224,1300917247,IL
-1300917248,1300919039,FR
-1300919040,1300920319,IL
-1300920320,1300920831,FR
-1300920832,1300921855,IL
-1300921856,1300922367,FR
-1300922368,1300924159,IL
-1300924160,1300924415,FR
-1300924416,1300926463,IL
-1300926464,1300927231,FR
-1300927232,1300929023,IL
-1300929024,1300929279,FR
-1300929280,1300936703,IL
-1300936704,1300938751,FR
-1300938752,1300939263,IL
-1300939264,1300939519,FR
-1300939520,1300940799,IL
-1300940800,1300941823,FR
-1300941824,1300942591,IL
-1300942592,1300942847,FR
-1300942848,1300944895,IL
-1300944896,1300945151,FR
-1300945152,1300945407,IL
-1300945408,1300945919,FR
-1300945920,1300946175,IL
-1300946176,1300946943,FR
-1300946944,1300947199,IL
-1300947200,1300948479,FR
-1300948480,1300949247,IL
-1300949248,1300949503,FR
-1300949504,1300953087,IL
-1300953088,1300953343,FR
-1300953344,1300953855,IL
-1300953856,1300954111,FR
-1300954112,1300955647,IL
-1300955648,1300956415,FR
-1300956416,1300956671,IL
-1300956672,1300957183,FR
-1300957184,1300957695,IL
-1300957696,1300958207,FR
-1300958208,1300961279,IL
-1300961280,1300961535,FR
-1300961536,1300961791,IL
-1300961792,1300962047,FR
-1300962048,1300963327,IL
-1300963328,1300963839,FR
-1300963840,1300967423,IL
-1300967424,1300970495,FR
-1300970496,1300971007,IL
-1300971008,1300971519,FR
-1300971520,1300972543,IL
-1300972544,1300973055,FR
-1300973056,1300974591,IL
-1300974592,1300975103,FR
-1300975104,1300975615,IL
-1300975616,1300979711,FR
-1300979712,1300980735,IL
-1300980736,1300981759,FR
-1300981760,1300983807,IL
-1300983808,1300984063,FR
-1300984064,1300984319,IL
-1300984320,1300985855,FR
-1300985856,1300986367,IL
-1300986368,1300988927,FR
-1300988928,1300989439,IL
-1300989440,1300989695,FR
-1300989696,1300989951,IL
-1300989952,1300990719,FR
-1300990720,1300990975,IL
-1300990976,1300991231,FR
-1300991232,1300991999,IL
-1300992000,1300992511,FR
-1300992512,1300992767,IL
-1300992768,1300994559,FR
-1300994560,1300995327,IL
-1300995328,1300997119,FR
-1300997120,1301000703,IL
-1301000704,1301001983,FR
-1301001984,1301002751,IL
-1301002752,1301003007,FR
-1301003008,1301004031,IL
-1301004032,1301004799,FR
-1301004800,1301005567,IL
-1301005568,1301005823,FR
-1301005824,1301005951,IL
-1301005952,1301006079,FR
-1301006080,1301006335,IL
-1301006336,1301006847,FR
-1301006848,1301007359,IL
-1301007360,1301007871,FR
-1301007872,1301011455,IL
-1301011456,1301011711,FR
-1301011712,1301011967,IL
-1301011968,1301014527,FR
-1301014528,1301015039,IL
-1301015040,1301015551,FR
-1301015552,1301016575,IL
-1301016576,1301018006,FR
-1301018007,1301018007,IL
-1301018008,1301019135,FR
-1301019136,1301020671,IL
-1301020672,1301774847,FR
-1301774848,1301774975,GP
-1301774976,1302331391,FR
+1300234240,1300824063,FR
+1300824064,1300874239,IL
+1300874240,1300889599,FR
+1300889600,1301020671,IL
+1301020672,1302331391,FR
1302331392,1303379967,NL
1303379968,1304428543,DE
1304428544,1305477119,FR
1305477120,1305739263,ES
1305739264,1306001407,DK
-1306001408,1306009599,SE
-1306009600,1306013695,HR
-1306013696,1306034175,SE
-1306034176,1306038271,HR
-1306038272,1306046463,SE
-1306046464,1306046975,HR
-1306046976,1306071039,SE
-1306071040,1306087423,HR
-1306087424,1306095615,SE
-1306095616,1306101759,HR
-1306101760,1306116095,SE
-1306116096,1306132479,HR
+1306001408,1306132479,HR
1306132480,1306140671,SE
-1306140672,1306141695,EE
-1306141696,1306142463,SE
-1306142464,1306148863,EE
+1306140672,1306148863,EE
1306148864,1306198015,SE
1306198016,1306206207,LV
1306206208,1306214399,HR
-1306214400,1306220543,SE
-1306220544,1306222591,LT
-1306222592,1306234879,SE
-1306234880,1306236927,LT
-1306236928,1306238975,SE
-1306238976,1306255359,LT
-1306255360,1306263551,SE
+1306214400,1306222591,LT
+1306222592,1306230783,HR
+1306230784,1306259455,LT
+1306259456,1306263551,HR
1306263552,1306271743,KE
1306271744,1306279935,RU
1306279936,1306288127,IT
@@ -23251,8 +28836,7 @@
1306316032,1306316287,RU
1306316288,1306316799,KZ
1306316800,1306317823,RU
-1306317824,1306318079,UA
-1306318080,1306318847,NL
+1306317824,1306318847,NL
1306318848,1306320895,RU
1306320896,1306329087,DE
1306329088,1306337279,BA
@@ -23383,8 +28967,11 @@
1307639808,1307643903,IT
1307643904,1307652095,RU
1307652096,1307656191,ES
-1307656192,1307660287,JO
-1307660288,1307664383,BE
+1307660288,1307662335,BE
+1307662336,1307662351,NL
+1307662352,1307662359,GB
+1307662360,1307662367,FR
+1307662368,1307664383,BE
1307664384,1307668479,NO
1307668480,1307672575,ES
1307672576,1307676671,DK
@@ -23408,13 +28995,18 @@
1307750400,1307754495,IT
1307754496,1307758591,GB
1307758592,1307758847,SM
-1307758848,1307759103,IT
-1307759104,1307759615,SM
-1307759616,1307760127,IT
-1307760128,1307760639,SM
-1307760640,1307761931,IT
+1307758848,1307759359,IT
+1307759360,1307759615,SM
+1307759616,1307760639,IT
+1307760640,1307760767,SM
+1307760768,1307760895,IT
+1307760896,1307761151,SM
+1307761152,1307761407,IT
+1307761408,1307761919,SM
+1307761920,1307761931,IT
1307761932,1307761932,SM
-1307761933,1307762687,IT
+1307761933,1307762175,IT
+1307762176,1307762687,SM
1307762688,1307766783,PL
1307766784,1307770879,GB
1307770880,1307774975,RU
@@ -23430,8 +29022,8 @@
1307817216,1307817219,DE
1307817220,1307817223,CZ
1307817224,1307817231,DE
-1307817232,1307817251,CZ
-1307817252,1307817255,HU
+1307817232,1307817247,CZ
+1307817248,1307817255,DE
1307817256,1307817259,CZ
1307817260,1307817447,DE
1307817448,1307817455,PT
@@ -23488,16 +29080,20 @@
1307926528,1307930623,KZ
1307930624,1307934719,RU
1307934720,1307938815,FR
-1307938816,1307942911,TR
+1307938816,1307941242,CY
+1307941243,1307941243,TR
+1307941244,1307942911,CY
1307942912,1307947007,RU
1307947008,1307951103,CH
1307951104,1307959295,RU
1307959296,1307963391,IR
1307963392,1307967487,PL
1307967488,1307971583,IT
-1307971584,1307982591,GB
+1307971584,1307979775,GB
+1307979776,1307981823,ZW
+1307981824,1307982591,ZA
1307982592,1307982847,BW
-1307982848,1307983871,GB
+1307982848,1307983871,ZA
1307983872,1307987967,LB
1307987968,1307992063,FR
1307992064,1307996159,RU
@@ -23512,12 +29108,12 @@
1308020736,1308024831,BG
1308024832,1308030975,RU
1308030976,1308033023,UA
-1308033024,1308033685,DE
+1308033024,1308033535,DE
+1308033536,1308033663,GB
+1308033664,1308033685,DE
1308033686,1308033686,GB
-1308033687,1308035427,DE
-1308035428,1308035428,GB
-1308035429,1308035839,DE
-1308035840,1308036095,GB
+1308033687,1308035071,DE
+1308035072,1308036095,GB
1308036096,1308037119,DE
1308037120,1308041215,UA
1308041216,1308049407,RU
@@ -23535,7 +29131,11 @@
1308088320,1308090367,UA
1308090368,1308092415,SK
1308092416,1308096511,RU
-1308096512,1308098559,RS
+1308096512,1308096767,AL
+1308096768,1308097279,RS
+1308097280,1308097535,XK
+1308097536,1308098303,AL
+1308098304,1308098559,RS
1308098560,1308360703,NL
1308360704,1308622847,PL
1308622848,1308884991,HR
@@ -23549,9 +29149,7 @@
1310199808,1310201855,IE
1310201856,1310203903,RU
1310203904,1310205951,FR
-1310205952,1310207999,RU
-1310208000,1310210047,MD
-1310210048,1310212095,RU
+1310205952,1310212095,RU
1310212096,1310214143,HU
1310214144,1310214399,UA
1310214400,1310214911,GR
@@ -23571,7 +29169,7 @@
1310240768,1310242815,RU
1310242816,1310244863,HU
1310244864,1310246911,EE
-1310246912,1310248959,FR
+1310246912,1310248959,ZA
1310248960,1310251007,IM
1310251008,1310255103,RU
1310255104,1310257151,CZ
@@ -23598,11 +29196,7 @@
1310588928,1310605311,ES
1310605312,1310621695,PL
1310621696,1310638079,RS
-1310638080,1310646271,UA
-1310646272,1310647295,RU
-1310647296,1310648319,UA
-1310648320,1310650367,RU
-1310650368,1310654463,UA
+1310638080,1310654463,UA
1310654464,1310656511,RU
1310656512,1310657535,GB
1310657536,1310658559,SE
@@ -23654,17 +29248,22 @@
1311244288,1311246335,MK
1311248384,1311250431,GB
1311250432,1311252479,RU
-1311252480,1311254527,GB
+1311252480,1311253479,GB
+1311253480,1311253487,IT
+1311253488,1311254007,GB
+1311254008,1311254015,IT
+1311254016,1311254527,GB
1311254528,1311256575,SE
1311256576,1311258623,FR
1311258624,1311260671,GB
-1311260672,1311262719,NO
+1311260672,1311262719,NL
1311262720,1311262735,CH
1311262736,1311262767,FR
1311262768,1311264767,CH
1311264768,1311266815,RU
1311266816,1311268863,FR
1311268864,1311270911,BE
+1311270912,1311271935,GE
1311271936,1311272447,KZ
1311272448,1311272703,NL
1311272704,1311272959,IE
@@ -23717,9 +29316,7 @@
1311593433,1311637503,CZ
1311637504,1312292863,DE
1312292864,1312817151,LT
-1312817152,1313035071,SE
-1313035072,1313035135,DK
-1313035136,1313865727,SE
+1312817152,1313865727,SE
1313865728,1313931263,CZ
1313931264,1313996799,RU
1313996800,1314062335,SE
@@ -23752,9 +29349,7 @@
1315717120,1315725311,RU
1315725312,1315729407,CZ
1315729408,1315729663,IE
-1315730176,1315730431,NL
-1315731712,1315731967,DE
-1315731968,1315732223,IE
+1315729920,1315730943,NL
1315732224,1315732991,DE
1315732992,1315733247,NL
1315733504,1315737599,NL
@@ -23813,18 +29408,23 @@
1315942400,1315945030,UA
1315945031,1315945031,RU
1315945032,1315946495,UA
-1315946496,1315946751,GB
-1315946752,1315949055,GG
-1315949056,1315949183,GB
-1315949184,1315950591,GG
+1315946496,1315946687,GB
+1315946688,1315946727,GG
+1315946728,1315946751,GB
+1315946752,1315950591,GG
1315950592,1315954687,UA
1315954688,1315958783,DE
1315958784,1315962879,RU
1315962880,1317011455,FR
-1317011456,1317044223,BG
+1317011456,1317043967,BG
+1317043968,1317044223,US
1317044224,1317076991,CZ
-1317076992,1317109759,BE
-1317109760,1317142527,GB
+1317076992,1317093887,BE
+1317093888,1317094143,NL
+1317094144,1317109759,BE
+1317109760,1317126399,GB
+1317126400,1317126655,US
+1317126656,1317142527,GB
1317142528,1317175295,PT
1317175296,1317208063,BG
1317208064,1317240831,HU
@@ -23843,15 +29443,70 @@
1317535744,1317552127,GB
1317552128,1317568511,ES
1317568512,1317584895,CZ
-1317584896,1317601279,RU
+1317584896,1317585919,RU
+1317585920,1317586943,FR
+1317586944,1317587967,DE
+1317587968,1317588991,TR
+1317588992,1317593087,RU
+1317593088,1317595135,GB
+1317595136,1317597183,ES
+1317597184,1317599231,RU
+1317599232,1317601279,DE
1317601280,1317617663,UA
1317617664,1317625855,YE
1317625856,1317627903,DE
1317627904,1317629951,RU
-1317629952,1317634047,GB
-1317634048,1317650431,IE
+1317629952,1317636095,GB
+1317636096,1317642495,IE
+1317642496,1317643316,GB
+1317643317,1317643317,IE
+1317643318,1317645615,GB
+1317645616,1317645623,IE
+1317645624,1317646551,GB
+1317646552,1317646559,IE
+1317646560,1317647015,GB
+1317647016,1317647023,IE
+1317647024,1317647026,GB
+1317647027,1317647027,IE
+1317647028,1317650130,GB
+1317650131,1317650131,IE
+1317650132,1317650431,GB
1317650432,1317666815,PT
-1317666816,1317683199,GB
+1317666816,1317667791,GB
+1317667792,1317667799,NG
+1317667800,1317668223,GB
+1317668224,1317668231,NG
+1317668232,1317669087,GB
+1317669088,1317669095,CD
+1317669096,1317673575,GB
+1317673576,1317673583,CD
+1317673584,1317676599,GB
+1317676600,1317676607,AO
+1317676608,1317677143,GB
+1317677144,1317677151,CD
+1317677152,1317678271,GB
+1317678272,1317678279,CD
+1317678280,1317678335,GB
+1317678336,1317678343,AO
+1317678344,1317678519,GB
+1317678520,1317678527,GN
+1317678528,1317679319,GB
+1317679320,1317679327,NG
+1317679328,1317679671,GB
+1317679672,1317679679,AO
+1317679680,1317679703,GB
+1317679704,1317679711,TD
+1317679712,1317679911,GB
+1317679912,1317679919,CD
+1317679920,1317679943,GB
+1317679944,1317679951,CD
+1317679952,1317679959,GB
+1317679960,1317679967,GN
+1317679968,1317679991,GB
+1317679992,1317679999,CD
+1317680000,1317680063,GB
+1317680064,1317680071,AO
+1317680072,1317683199,GB
1317683200,1317685247,DE
1317685248,1317686271,BE
1317686272,1317687295,NL
@@ -23862,18 +29517,25 @@
1317748736,1317765119,RU
1317765120,1317781503,GE
1317781504,1317814271,RU
-1317814272,1317816335,DE
+1317814272,1317814783,GB
+1317814784,1317816335,DE
1317816336,1317816351,JP
-1317816352,1317830655,DE
+1317816352,1317818383,DE
+1317818384,1317818391,RU
+1317818392,1317818639,DE
+1317818640,1317818647,RU
+1317818648,1317830655,DE
1317830656,1317847039,NL
1317847040,1317863423,RU
1317863424,1317879807,GB
1317879808,1317896191,SK
-1317896192,1317912575,LU
-1317912576,1317928959,ES
-1317928960,1317945343,BG
+1317896192,1317908479,LU
+1317908480,1317909503,FR
+1317909504,1317912575,LU
+1317912576,1317928959,GB
+1317928960,1317929215,US
+1317929216,1317945343,BG
1317945344,1317978111,AT
-1317978112,1317994495,RU
1317994496,1318010879,DE
1318010880,1318027263,DK
1318027264,1318043647,IE
@@ -23887,7 +29549,9 @@
1318594008,1318594015,GB
1318594016,1318594335,NL
1318594336,1318594343,US
-1318594344,1318596543,NL
+1318594344,1318595071,NL
+1318595072,1318595583,GB
+1318595584,1318596543,NL
1318596544,1318596559,SE
1318596560,1318597343,NL
1318597344,1318597359,US
@@ -23929,7 +29593,8 @@
1318871040,1318879231,DK
1318879232,1318887423,CZ
1318887424,1318895615,PL
-1318895616,1318903807,SE
+1318895616,1318897663,SE
+1318897664,1318903807,DK
1318903808,1318911999,RU
1318912000,1318920191,MK
1318920192,1318928383,IR
@@ -23943,16 +29608,31 @@
1318961152,1318969343,GB
1318969344,1318977535,RU
1318977536,1318985727,LT
-1318985728,1319002111,GB
+1318985728,1318988799,GB
+1318989824,1319000063,GB
+1319000064,1319002111,US
1319002112,1319010303,IE
1319010304,1319018495,CY
1319018496,1319026687,IR
1319026688,1319034879,UA
-1319034880,1319043071,NO
+1319034880,1319035903,NO
+1319035904,1319036927,DK
+1319036928,1319038975,SE
+1319038976,1319043071,NO
1319043072,1319051263,FR
1319051264,1319059455,UA
1319059456,1319067647,PL
-1319067648,1319075839,DE
+1319067648,1319070271,DE
+1319070272,1319070335,PT
+1319070336,1319070975,DE
+1319070976,1319071103,PL
+1319071104,1319071231,DE
+1319071232,1319071487,PL
+1319071488,1319074815,DE
+1319074816,1319074943,PL
+1319074944,1319075071,DE
+1319075072,1319075199,PL
+1319075200,1319075839,DE
1319075840,1319084031,BG
1319084032,1319092223,KW
1319092224,1319100415,IT
@@ -24021,7 +29701,7 @@
1331941376,1331943423,ES
1331943424,1331945471,RU
1331945472,1331947519,SE
-1331947520,1331949567,CH
+1331947520,1331949567,DE
1331949568,1331951615,RU
1331951616,1331953663,GE
1331953664,1332019199,BG
@@ -24037,11 +29717,12 @@
1332613376,1332614143,UA
1332614144,1332614399,BY
1332614400,1332614655,NL
-1332614656,1332614783,UA
+1332614656,1332614783,RU
1332614784,1332614911,KZ
1332614912,1332615167,RO
1332615168,1332615423,DE
-1332615424,1332615679,UA
+1332615424,1332615551,RU
+1332615552,1332615679,UA
1332615680,1332616191,RO
1332616192,1332616319,GB
1332616320,1332616447,US
@@ -24056,7 +29737,7 @@
1332637696,1332641791,BG
1332641792,1332645887,UA
1332645888,1332649983,RS
-1332654080,1332658175,UA
+1332654080,1332658175,RU
1332658176,1332662271,PL
1332662272,1332670463,UA
1332670464,1332740095,RU
@@ -24072,7 +29753,9 @@
1333526784,1333527039,GB
1333527040,1333528575,BG
1333528576,1333528831,GB
-1333528832,1333551103,BG
+1333528832,1333546239,BG
+1333546240,1333546495,US
+1333546496,1333551103,BG
1333551104,1333559295,PL
1333559296,1333592063,UA
1333592064,1333624831,IE
@@ -24090,7 +29773,9 @@
1334091776,1334099967,LT
1334099968,1334108159,IR
1334108160,1334116351,BE
-1334116352,1334124543,AX
+1334116352,1334123263,AX
+1334123264,1334123519,FI
+1334123520,1334124543,AX
1334124544,1334125055,AT
1334125056,1334127359,DE
1334127360,1334127615,AT
@@ -24119,23 +29804,149 @@
1334304768,1334312959,RU
1334312960,1334345727,SE
1334345728,1334378495,RU
-1334378496,1334379263,FR
+1334378496,1334378751,FR
+1334378752,1334378879,ES
+1334378880,1334378887,FR
+1334378888,1334378895,ES
+1334378896,1334379023,FR
+1334379024,1334379039,FI
+1334379040,1334379071,FR
+1334379072,1334379135,PL
+1334379136,1334379263,FR
1334379264,1334379519,PL
-1334379520,1334379971,FR
+1334379520,1334379583,FR
+1334379584,1334379591,PL
+1334379592,1334379871,FR
+1334379872,1334379887,PT
+1334379888,1334379971,FR
1334379972,1334379975,DE
1334379976,1334380031,FR
1334380032,1334380287,PL
-1334380288,1334383001,FR
-1334383002,1334383002,GB
-1334383003,1334389823,FR
+1334380288,1334380447,FR
+1334380448,1334380463,LT
+1334380464,1334381823,FR
+1334381824,1334381839,IT
+1334381840,1334381887,FR
+1334381888,1334381919,IT
+1334381920,1334381983,FR
+1334381984,1334382015,FI
+1334382016,1334382903,FR
+1334382904,1334382911,PL
+1334382912,1334382975,FR
+1334382976,1334383103,GB
+1334383104,1334383615,FR
+1334383616,1334383679,DE
+1334383680,1334383743,ES
+1334383744,1334383807,IT
+1334383808,1334383871,NL
+1334383872,1334383935,BE
+1334383936,1334383967,IE
+1334383968,1334383999,PT
+1334384000,1334384031,CZ
+1334384032,1334384063,FI
+1334384064,1334384095,LT
+1334384096,1334384335,FR
+1334384336,1334384343,ES
+1334384344,1334384735,FR
+1334384736,1334384767,BE
+1334384768,1334384799,PL
+1334384800,1334384831,ES
+1334384832,1334384863,DE
+1334384864,1334385007,FR
+1334385008,1334385023,BE
+1334385024,1334385055,IT
+1334385056,1334385695,FR
+1334385696,1334385727,BE
+1334385728,1334386111,FR
+1334386112,1334386143,BE
+1334386144,1334386175,IT
+1334386176,1334389759,FR
+1334389760,1334389791,BE
+1334389792,1334389823,FR
1334389824,1334389887,ES
1334389888,1334390015,FR
1334390016,1334390271,ES
-1334390272,1334404991,FR
+1334390272,1334390399,FR
+1334390400,1334390415,FI
+1334390416,1334390431,DE
+1334390432,1334390439,LT
+1334390440,1334390463,FR
+1334390464,1334390527,IE
+1334390528,1334390975,FR
+1334390976,1334390991,FI
+1334390992,1334391359,FR
+1334391360,1334391423,IT
+1334391424,1334391551,FR
+1334391552,1334391615,ES
+1334391616,1334391711,FR
+1334391712,1334391727,LT
+1334391728,1334391871,FR
+1334391872,1334391903,DE
+1334391904,1334391935,NL
+1334391936,1334392063,FR
+1334392064,1334392067,CZ
+1334392068,1334392095,FR
+1334392096,1334392111,PT
+1334392112,1334392223,FR
+1334392224,1334392255,ES
+1334392256,1334392639,FR
+1334392640,1334392655,DE
+1334392656,1334392847,FR
+1334392848,1334392863,FI
+1334392864,1334392895,DE
+1334392896,1334392959,GB
+1334392960,1334392991,NL
+1334392992,1334393007,PL
+1334393008,1334393023,CZ
+1334393024,1334393055,IT
+1334393056,1334394383,FR
+1334394384,1334394399,GB
+1334394400,1334395903,FR
+1334395904,1334396927,PL
+1334396928,1334402623,FR
+1334402624,1334402687,BE
+1334402688,1334402751,FR
+1334402752,1334402815,DE
+1334402816,1334402879,NL
+1334402880,1334403071,FR
+1334403072,1334403135,IE
+1334403136,1334404991,FR
1334404992,1334405119,GB
-1334405120,1334409599,FR
+1334405120,1334405311,FR
+1334405312,1334405327,GB
+1334405328,1334405759,FR
+1334405760,1334405791,FI
+1334405792,1334405919,FR
+1334405920,1334405951,PL
+1334405952,1334406015,DE
+1334406016,1334406527,FR
+1334406528,1334406543,DE
+1334406544,1334406559,FR
+1334406560,1334406575,NL
+1334406576,1334407071,FR
+1334407072,1334407103,GB
+1334407104,1334407167,FR
+1334407168,1334407231,IE
+1334407232,1334407295,BE
+1334407296,1334407359,IT
+1334407360,1334408191,FR
+1334408192,1334408255,ES
+1334408256,1334408279,FR
+1334408280,1334408287,ES
+1334408288,1334408319,FR
+1334408320,1334408351,FI
+1334408352,1334408367,LT
+1334408368,1334408383,FR
+1334408384,1334408447,DE
+1334408448,1334408823,FR
+1334408824,1334408831,ES
+1334408832,1334409535,FR
+1334409536,1334409567,PL
+1334409568,1334409599,FR
1334409600,1334409607,DE
-1334409608,1334411263,FR
+1334409608,1334410735,FR
+1334410736,1334410751,GB
+1334410752,1334411263,FR
1334411264,1334444031,RU
1334444032,1334509567,SE
1334509568,1334542335,PL
@@ -24144,7 +29955,9 @@
1334579200,1334583295,RU
1334583296,1334591487,DE
1334591488,1334595583,RU
-1334595584,1334599679,IT
+1334595584,1334599039,IT
+1334599040,1334599167,FR
+1334599168,1334599679,IT
1334599680,1334603775,RU
1334603776,1334607871,DE
1334607872,1334611967,IE
@@ -24156,7 +29969,9 @@
1334632448,1334636543,KZ
1334636544,1334640639,RU
1334640640,1334644735,FR
-1334644736,1334648831,DE
+1334644736,1334647039,DE
+1334647040,1334647807,IQ
+1334647808,1334648831,DE
1334648832,1334652927,GB
1334652928,1334661119,RU
1334661120,1334665215,CH
@@ -24165,22 +29980,22 @@
1334673408,1334677503,GB
1334677504,1334681599,FI
1334681600,1334681855,PL
-1334681856,1334682111,BG
+1334681856,1334682111,NL
1334682112,1334682367,IE
-1334682368,1334682623,BG
+1334682368,1334682623,NL
1334682624,1334682879,NO
-1334682880,1334682900,GB
+1334682880,1334682900,NL
1334682901,1334682901,DK
-1334682902,1334683135,GB
+1334682902,1334683135,NL
1334683136,1334683391,CZ
1334683392,1334683647,CH
-1334683648,1334683903,BG
+1334683648,1334683903,NL
1334683904,1334684031,DE
1334684032,1334684159,NL
1334684160,1334684415,SE
-1334684416,1334684479,BG
+1334684416,1334684479,NL
1334684480,1334684511,DE
-1334684512,1334684671,BG
+1334684512,1334684671,NL
1334684672,1334684927,FI
1334684928,1334685183,NL
1334685184,1334685695,DE
@@ -24202,7 +30017,7 @@
1334724608,1334724863,US
1334724864,1334725631,NL
1334725632,1334726143,SE
-1334726144,1334726399,NL
+1334726144,1334726399,LU
1334726400,1334726655,SE
1334726656,1334729983,RU
1334729984,1334730495,KZ
@@ -24217,9 +30032,11 @@
1334767616,1334771711,SE
1334771712,1334779903,RU
1334779904,1334783999,UA
-1334784000,1334784255,AT
+1334784000,1334784255,GB
1334784256,1334784511,RO
-1334784512,1334788095,AT
+1334784512,1334784767,GB
+1334784768,1334785023,TR
+1334785024,1334788095,GB
1334788096,1334792191,RU
1334792192,1334793320,GB
1334793321,1334793321,IR
@@ -24311,10 +30128,22 @@
1336737792,1336754175,PL
1336754176,1336770559,RU
1336770560,1336786943,GB
-1336786944,1336803327,JO
+1336786944,1336791039,JO
+1336791040,1336791935,PR
+1336791936,1336792063,JO
+1336792064,1336793087,PR
+1336793088,1336794111,JO
+1336794112,1336795135,PR
+1336795136,1336803327,JO
1336811520,1336827903,RU
1336827904,1336836095,AT
-1336836096,1336838143,BE
+1336836096,1336837119,BE
+1336837120,1336837151,NL
+1336837152,1336837183,BE
+1336837184,1336837191,FR
+1336837192,1336837199,NL
+1336837200,1336837207,GB
+1336837208,1336838143,BE
1336838144,1336842239,DE
1336842240,1336844287,DK
1336844288,1336846335,IR
@@ -24333,80 +30162,91 @@
1337982976,1342177279,DE
1342177280,1342701567,GB
1342701568,1342750719,RE
-1342750720,1342750975,YT
-1342750976,1342751743,FR
-1342751744,1342752511,YT
-1342752512,1342752767,FR
-1342752768,1342753023,YT
-1342753024,1342753535,FR
-1342753536,1342753791,YT
-1342753792,1342754047,FR
-1342754048,1342754303,YT
-1342754304,1342754559,FR
-1342754560,1342755327,YT
-1342755328,1342755583,FR
-1342755584,1342755839,YT
-1342755840,1342756351,FR
-1342756352,1342756607,YT
-1342756608,1342757375,FR
-1342757376,1342758655,YT
+1342750720,1342751231,YT
+1342751232,1342751487,FR
+1342751488,1342752255,YT
+1342752256,1342753279,FR
+1342753280,1342754303,YT
+1342754304,1342754815,FR
+1342754816,1342755583,YT
+1342755584,1342755839,RE
+1342755840,1342756607,YT
+1342756608,1342757631,FR
+1342757632,1342758655,YT
1342758656,1342758911,FR
-1342758912,1342759423,YT
-1342759424,1342759679,FR
+1342758912,1342759167,YT
+1342759168,1342759679,FR
1342759680,1342759935,YT
1342759936,1342761215,FR
-1342761216,1342761471,YT
-1342761472,1342761727,FR
-1342761728,1342761983,YT
-1342761984,1342762239,FR
-1342762240,1342762495,YT
-1342762496,1342765311,FR
-1342765312,1342765567,YT
-1342765568,1342766335,FR
-1342766336,1342766847,YT
-1342766848,1342839039,FR
-1342839040,1342839295,JO
-1342839296,1342845951,FR
-1342845952,1342846975,JO
-1342846976,1342851071,FR
-1342851072,1342853119,JO
-1342853120,1342959049,FR
+1342761216,1342762495,YT
+1342762496,1342762751,RE
+1342762752,1342763263,FR
+1342763264,1342763519,RE
+1342763520,1342763775,YT
+1342763776,1342764031,RE
+1342764032,1342764287,YT
+1342764288,1342764799,FR
+1342764800,1342765055,YT
+1342765056,1342766335,FR
+1342766336,1342767103,YT
+1342767104,1342834687,FR
+1342834688,1342842879,JO
+1342842880,1342844927,FR
+1342844928,1342853119,JO
+1342853120,1342860799,FR
+1342860800,1342861055,RE
+1342861056,1342869503,FR
+1342869504,1342871551,JO
+1342871552,1342875647,FR
+1342875648,1342877695,JO
+1342877696,1342959049,FR
1342959050,1342959050,RE
-1342959051,1342996479,FR
+1342959051,1342988287,FR
+1342988288,1342989055,US
+1342989056,1342996479,FR
1342996480,1342996735,GF
1342996736,1342996991,FR
-1342996992,1342997247,GF
-1342997248,1342997503,FR
-1342997504,1342998527,GF
-1342998528,1342999039,FR
-1342999040,1343000319,GF
-1343000320,1343000575,FR
-1343000576,1343000831,GF
+1342996992,1342999807,GF
+1342999808,1343000063,FR
+1343000064,1343000831,GF
1343000832,1343001087,FR
1343001088,1343001855,GF
-1343001856,1343002111,FR
-1343002112,1343002623,GF
+1343001856,1343002367,FR
+1343002368,1343002623,GF
1343002624,1343002879,FR
-1343002880,1343003903,GF
-1343003904,1343004159,FR
-1343004160,1343005695,GF
-1343005696,1343005951,FR
-1343005952,1343007743,GF
+1343002880,1343007743,GF
1343007744,1343007999,FR
1343008000,1343009023,GF
-1343009024,1343009279,FR
-1343009280,1343009791,GF
+1343009024,1343009535,FR
+1343009536,1343009791,GF
1343009792,1343010047,FR
-1343010048,1343010559,GF
-1343010560,1343011071,FR
-1343011072,1343011327,GF
-1343011328,1343011839,FR
-1343011840,1343012863,GF
+1343010048,1343011071,GF
+1343011072,1343011583,FR
+1343011584,1343012863,GF
1343012864,1343018239,FR
1343018240,1343018495,RE
1343018496,1343027711,FR
1343027712,1343027967,RE
-1343027968,1343225855,FR
+1343027968,1343116543,FR
+1343116544,1343116799,PM
+1343116800,1343218687,FR
+1343218688,1343219711,DE
+1343219712,1343220479,FR
+1343220480,1343220671,DE
+1343220672,1343220735,FR
+1343220736,1343220863,GB
+1343220864,1343221055,FR
+1343221056,1343221119,GB
+1343221120,1343221247,DE
+1343221248,1343221759,FR
+1343221760,1343222399,GB
+1343222400,1343222911,FR
+1343222912,1343223039,US
+1343223040,1343223679,FR
+1343223680,1343223687,LB
+1343223688,1343224255,FR
+1343224256,1343224303,US
+1343224304,1343225855,FR
1343225856,1343750143,IT
1343750144,1344798719,ES
1344798720,1345323007,GB
@@ -24428,18 +30268,20 @@
1346396160,1346398335,RU
1346398336,1346398367,DE
1346398368,1346398687,RU
-1346398688,1346398719,DE
+1346398688,1346398709,DE
+1346398710,1346398710,RU
+1346398711,1346398719,DE
1346398720,1346400255,RU
1346400256,1346404351,IT
-1346404352,1346408447,AT
+1346404352,1346407423,AT
+1346407424,1346408447,DE
1346408448,1346412543,LU
1346412544,1346416639,RU
1346416640,1346420735,DE
1346420736,1346424831,NO
1346428928,1346433023,FR
-1346433024,1346440703,NL
-1346440704,1346440959,ES
-1346440960,1346441215,NL
+1346433024,1346439167,NL
+1346439168,1346441215,ES
1346441216,1346445311,RU
1346445312,1346449407,DE
1346449408,1346453503,NO
@@ -24464,7 +30306,9 @@
1346555904,1346559999,IT
1346560000,1346564095,LI
1346564096,1346568191,EE
-1346568192,1346569983,SE
+1346568192,1346569815,SE
+1346569816,1346569819,ES
+1346569820,1346569983,SE
1346569984,1346570239,NO
1346570240,1346572287,SE
1346572288,1346576383,DE
@@ -24506,7 +30350,11 @@
1346740224,1346744319,FI
1346744320,1346748415,RU
1346748416,1346752511,DE
-1346752512,1346756607,FR
+1346752512,1346753279,RE
+1346753280,1346753535,FR
+1346753536,1346753791,RE
+1346753792,1346754559,FR
+1346754560,1346756607,RE
1346756608,1346760703,SE
1346760704,1346764799,IR
1346764800,1346768895,DK
@@ -24519,7 +30367,9 @@
1346795520,1346797567,SY
1346797568,1346801663,IL
1346801664,1346805759,SE
-1346805760,1346818047,DE
+1346805760,1346806031,DE
+1346806032,1346806047,CH
+1346806048,1346818047,DE
1346818048,1346822143,FR
1346822144,1346826239,RU
1346826240,1346830335,RS
@@ -24586,16 +30436,20 @@
1347129344,1347133439,FR
1347133440,1347141631,EG
1347141632,1347145727,CH
-1347145728,1347145983,GB
-1347145984,1347146239,IN
+1347145728,1347146239,IN
1347146240,1347146751,DE
-1347146752,1347147775,GB
+1347146752,1347147007,IN
+1347147008,1347147263,DE
+1347147264,1347147775,GB
1347147776,1347148287,DE
-1347148288,1347149311,GB
+1347148288,1347148543,GB
+1347148544,1347148799,IN
+1347148800,1347149055,NO
+1347149056,1347149311,GB
1347149312,1347149567,DE
-1347149568,1347149823,GB
-1347149824,1347153919,HU
-1347153920,1347158015,AT
+1347149568,1347149823,IN
+1347149824,1347151423,HU
+1347151424,1347158015,AT
1347158016,1347159935,CH
1347159936,1347160063,AT
1347160064,1347162111,CH
@@ -24605,15 +30459,13 @@
1347186688,1347190783,GB
1347190784,1347194879,RU
1347194880,1347198975,SE
-1347198976,1347200511,QA
-1347200512,1347200601,US
-1347200602,1347200602,QA
-1347200603,1347200767,US
-1347200768,1347203071,QA
+1347198976,1347203071,QA
1347203072,1347207167,RU
1347207168,1347215359,GB
1347215360,1347223551,RU
-1347223552,1347227647,GB
+1347223552,1347225599,GB
+1347225600,1347226623,PK
+1347226624,1347227647,GB
1347227648,1347231743,DE
1347231744,1347235839,UA
1347235840,1347239935,GE
@@ -24646,7 +30498,7 @@
1347293440,1347293447,US
1347293448,1347293455,GA
1347293456,1347293463,NG
-1347293464,1347293471,CY
+1347293464,1347293471,SE
1347293472,1347293479,IQ
1347293480,1347293487,LR
1347293488,1347293495,TD
@@ -24656,7 +30508,7 @@
1347293528,1347293535,NG
1347293536,1347293543,GH
1347293544,1347293551,NG
-1347293552,1347293559,CY
+1347293552,1347293559,SE
1347293560,1347293567,GN
1347293568,1347293575,NG
1347293576,1347293583,GN
@@ -24668,12 +30520,12 @@
1347293632,1347293639,LR
1347293640,1347293655,NG
1347293656,1347293672,GN
-1347293673,1347293679,CY
+1347293673,1347293679,SE
1347293680,1347293687,US
1347293688,1347293719,NG
-1347293720,1347293723,CY
+1347293720,1347293723,SE
1347293724,1347293724,US
-1347293725,1347293727,CY
+1347293725,1347293727,SE
1347293728,1347293751,GN
1347293752,1347293767,NG
1347293768,1347293775,CM
@@ -24721,8 +30573,7 @@
1347294176,1347294183,US
1347294184,1347294191,SE
1347294192,1347294207,NG
-1347294208,1347294211,SE
-1347294212,1347294215,CY
+1347294208,1347294215,SE
1347294216,1347294223,IQ
1347294224,1347294231,CM
1347294232,1347294239,US
@@ -24748,17 +30599,16 @@
1347294408,1347294415,GN
1347294416,1347294423,NG
1347294424,1347294431,US
-1347294432,1347294435,CY
-1347294436,1347294439,SE
+1347294432,1347294439,SE
1347294440,1347294447,SO
1347294448,1347294495,US
-1347294496,1347294975,CY
+1347294496,1347294975,SE
1347294976,1347294991,CG
1347294992,1347295007,US
1347295008,1347295015,LR
-1347295016,1347295031,CY
+1347295016,1347295031,SE
1347295032,1347295055,NG
-1347295056,1347295063,CY
+1347295056,1347295063,SE
1347295064,1347295071,LS
1347295072,1347295079,AF
1347295080,1347295103,NG
@@ -24766,63 +30616,62 @@
1347295112,1347295119,ZA
1347295120,1347295127,NG
1347295128,1347295131,GN
-1347295132,1347295135,CY
+1347295132,1347295135,SE
1347295136,1347295143,FR
1347295144,1347295151,NG
-1347295152,1347295159,CY
+1347295152,1347295159,SE
1347295160,1347295167,GN
1347295168,1347295183,LS
1347295184,1347295191,SO
-1347295192,1347295199,CY
+1347295192,1347295199,SE
1347295200,1347295215,ZM
1347295216,1347295223,US
1347295224,1347295231,NG
-1347295232,1347295744,CY
+1347295232,1347295744,SE
1347295745,1347295745,US
-1347295746,1347295747,CY
+1347295746,1347295747,SE
1347295748,1347295751,US
1347295752,1347295755,BW
-1347295756,1347295759,CY
+1347295756,1347295759,SE
1347295760,1347295775,BW
1347295776,1347295783,HU
1347295784,1347295791,LB
-1347295792,1347295815,CY
+1347295792,1347295815,SE
1347295816,1347295823,OM
1347295824,1347295831,GH
1347295832,1347295839,FR
1347295840,1347295847,NG
1347295848,1347295851,LS
-1347295852,1347295855,CY
+1347295852,1347295855,SE
1347295856,1347295863,NG
-1347295864,1347295927,CY
+1347295864,1347295927,SE
1347295928,1347295935,NG
1347295936,1347295975,US
1347295976,1347295983,LS
1347295984,1347295991,US
-1347295992,1347295999,CY
+1347295992,1347295999,SE
1347296000,1347296031,US
-1347296032,1347296039,CY
+1347296032,1347296039,SE
1347296040,1347296043,US
-1347296044,1347296055,CY
+1347296044,1347296055,SE
1347296056,1347296079,US
-1347296080,1347296087,SE
-1347296088,1347296103,CY
+1347296080,1347296103,SE
1347296104,1347296111,US
1347296112,1347296127,ZM
-1347296128,1347296135,CY
+1347296128,1347296135,SE
1347296136,1347296143,US
-1347296144,1347296159,CY
+1347296144,1347296159,SE
1347296160,1347296167,US
-1347296168,1347296175,CY
+1347296168,1347296175,SE
1347296176,1347296183,US
-1347296184,1347296191,CY
+1347296184,1347296191,SE
1347296192,1347296199,US
-1347296200,1347296223,CY
+1347296200,1347296223,SE
1347296224,1347296231,US
1347296232,1347296239,JO
-1347296240,1347296263,CY
+1347296240,1347296263,SE
1347296264,1347296271,US
-1347296272,1347297279,CY
+1347296272,1347297279,SE
1347297280,1347305471,UA
1347305472,1347309567,AL
1347309568,1347313663,DE
@@ -24841,7 +30690,8 @@
1347379200,1347383295,NL
1347383296,1347387391,EE
1347387392,1347391487,GB
-1347391488,1347395583,LB
+1347391488,1347393535,IQ
+1347393536,1347395583,LB
1347395584,1347399679,SE
1347399680,1347403775,RU
1347403776,1347407871,NL
@@ -24882,22 +30732,30 @@
1347505168,1347505215,ES
1347505216,1347505247,GB
1347505248,1347518463,ES
-1347518464,1347522559,AT
+1347518464,1347522559,NL
1347522560,1347526655,LB
1347526656,1347534847,FI
1347534848,1347538943,DE
1347538944,1347543039,RU
1347543040,1347547135,SK
-1347547136,1347551231,DE
+1347547136,1347551167,DE
+1347551168,1347551231,PL
1347551232,1347555327,IT
1347555328,1347559423,PL
1347559424,1347567615,RU
-1347567616,1347569151,NL
-1347569152,1347569314,SC
+1347567616,1347567888,SC
+1347567889,1347567889,NL
+1347567890,1347568639,SC
+1347568640,1347568895,NL
+1347568896,1347569125,SC
+1347569126,1347569126,NL
+1347569127,1347569314,SC
1347569315,1347569315,NL
1347569316,1347569407,SC
-1347569408,1347571455,NL
-1347571456,1347571538,SC
+1347569408,1347570687,NL
+1347570688,1347570955,SC
+1347570956,1347570956,NL
+1347570957,1347571538,SC
1347571539,1347571539,NL
1347571540,1347571711,SC
1347571712,1347575807,RU
@@ -24905,7 +30763,8 @@
1347579904,1347588095,GB
1347588096,1347592191,CZ
1347592192,1347600383,RU
-1347600384,1347602431,UA
+1347600384,1347601919,CZ
+1347601920,1347602431,UA
1347602432,1347608575,DE
1347608576,1347612671,FR
1347612672,1347616767,GB
@@ -24918,13 +30777,16 @@
1347649536,1347653631,GE
1347653632,1347657727,GB
1347657728,1347661823,IT
-1347661824,1347665919,DE
+1347661824,1347663871,DE
+1347664896,1347665919,DE
1347665920,1347670015,RU
1347670016,1347674111,SE
1347674112,1347682303,RU
1347682304,1347686399,DE
1347690496,1347694591,SE
-1347694592,1347706879,GB
+1347694592,1347696375,GB
+1347696376,1347696383,US
+1347696384,1347706879,GB
1347706880,1347710975,IT
1347710976,1347715071,RU
1347715072,1347717375,ES
@@ -24937,7 +30799,15 @@
1347731456,1347739647,DE
1347739648,1347747839,NL
1347747840,1347751935,DE
-1347751936,1347756031,CY
+1347751936,1347754903,CY
+1347754904,1347754911,GR
+1347754912,1347755015,CY
+1347755016,1347755023,GR
+1347755024,1347755135,CY
+1347755136,1347755151,GR
+1347755152,1347755159,CY
+1347755160,1347755175,GR
+1347755176,1347756031,CY
1347756032,1347760127,NL
1347760128,1347764223,HU
1347764224,1347772415,GB
@@ -24957,7 +30827,7 @@
1347825664,1347829759,IT
1347829760,1347833855,SE
1347833856,1347837951,DE
-1347837952,1347846143,RO
+1347838720,1347846143,RO
1347846144,1347850239,NO
1347850240,1347854335,IT
1347854336,1347854591,DE
@@ -25023,7 +30893,9 @@
1348055040,1348059135,LB
1348059136,1348063231,RU
1348063232,1348067327,CH
-1348067328,1348071423,NL
+1348067328,1348070399,NL
+1348070400,1348070911,DE
+1348070912,1348071423,NL
1348071424,1348075519,DE
1348075520,1348076287,LV
1348076288,1348076543,RU
@@ -25040,7 +30912,7 @@
1348116480,1348120575,JO
1348120576,1348124671,RU
1348124672,1348128767,GB
-1348128768,1348132863,SI
+1348128768,1348132863,BE
1348132864,1348136959,UA
1348136960,1348141055,RU
1348141056,1348145151,DK
@@ -25062,7 +30934,9 @@
1348222976,1348231167,LU
1348231168,1348235263,RU
1348235264,1348239359,AT
-1348239360,1348243455,SE
+1348239360,1348241407,SE
+1348241408,1348242431,GB
+1348242432,1348243455,SE
1348243456,1348247551,GB
1348247552,1348251647,RU
1348251648,1348255743,GE
@@ -25082,16 +30956,7 @@
1348317184,1348321279,RU
1348321280,1348325375,GB
1348325376,1348329471,TR
-1348329472,1348333599,RS
-1348333600,1348333607,XK
-1348333608,1348333631,RS
-1348333632,1348333807,XK
-1348333808,1348333823,RS
-1348333824,1348334079,XK
-1348334080,1348336191,RS
-1348336192,1348336383,XK
-1348336384,1348337471,RS
-1348337472,1348337663,XK
+1348329472,1348337663,RS
1348337664,1348341759,ES
1348341760,1348345855,PL
1348345856,1348349951,GB
@@ -25099,7 +30964,9 @@
1348354048,1348355267,NL
1348355268,1348355269,IE
1348355270,1348358143,NL
-1348358144,1348362239,DE
+1348358144,1348359167,DE
+1348359168,1348361727,AF
+1348361728,1348362239,DE
1348362240,1348366335,MC
1348366336,1348370431,IT
1348370432,1348374527,DE
@@ -25151,27 +31018,70 @@
1352299776,1352300031,US
1352300032,1352412159,DE
1352412160,1352412415,FR
-1352412416,1352663039,DE
+1352412416,1352417279,DE
+1352417280,1352418303,SK
+1352418304,1352488959,DE
+1352488960,1352491007,FR
+1352491008,1352663039,DE
1352663040,1353187327,DK
-1353187328,1353259263,GB
-1353259264,1353259519,US
-1353259520,1353262295,GB
+1353187328,1353262295,GB
1353262296,1353262303,US
-1353262304,1353271317,GB
+1353262304,1353267199,GB
+1353267200,1353267711,IE
+1353267712,1353267751,GB
+1353267752,1353267759,IE
+1353267760,1353271317,GB
1353271318,1353271318,AT
-1353271319,1353271683,GB
+1353271319,1353271567,GB
+1353271568,1353271575,AT
+1353271576,1353271683,GB
1353271684,1353271684,AT
1353271685,1353271711,GB
1353271712,1353271719,AT
-1353271720,1353273407,GB
-1353273408,1353273423,BE
-1353273424,1353277439,GB
+1353271720,1353271727,GB
+1353271728,1353271743,AT
+1353271744,1353271775,GB
+1353271776,1353271807,AT
+1353271808,1353272831,ES
+1353272832,1353272983,GB
+1353272984,1353272991,ES
+1353272992,1353273343,GB
+1353273344,1353274367,BE
+1353274368,1353274879,ES
+1353274880,1353275247,GB
+1353275248,1353275255,ES
+1353275256,1353277439,GB
1353277440,1353279487,CH
-1353279488,1353300063,GB
+1353279488,1353281535,IT
+1353281536,1353287959,GB
+1353287960,1353287967,IE
+1353287968,1353288191,GB
+1353288192,1353289471,IE
+1353289472,1353298783,GB
+1353298784,1353298815,SE
+1353298816,1353298895,GB
+1353298896,1353298911,SE
+1353298912,1353298943,GB
+1353298944,1353299455,SE
+1353299456,1353300063,GB
1353300064,1353300071,SE
-1353300072,1353312511,GB
+1353300072,1353300079,GB
+1353300080,1353300095,SE
+1353300096,1353306111,GB
+1353306112,1353308159,BE
+1353308160,1353309183,FR
+1353309184,1353312447,GB
+1353312448,1353312479,CH
+1353312480,1353312511,GB
1353312512,1353312767,CH
-1353312768,1353318399,GB
+1353312768,1353313023,IT
+1353313024,1353313167,GB
+1353313168,1353313183,IT
+1353313184,1353313279,GB
+1353313280,1353313791,IE
+1353313792,1353315327,GB
+1353315328,1353316351,ES
+1353316352,1353318399,GB
1353318400,1353383935,SE
1353383936,1353449471,DE
1353449472,1353515007,PT
@@ -25185,7 +31095,13 @@
1354432512,1354498047,DE
1354498048,1354563583,CZ
1354563584,1354629119,GB
-1354629120,1354694655,DE
+1354629120,1354658495,DE
+1354658496,1354658511,AT
+1354658512,1354662159,DE
+1354662160,1354662167,AT
+1354662168,1354665215,DE
+1354665216,1354665223,AT
+1354665224,1354694655,DE
1354694656,1354760191,IR
1354760192,1355022335,GB
1355022336,1355083555,DK
@@ -25204,6 +31120,7 @@
1355870208,1355872255,FI
1355872256,1355873279,IT
1355873280,1355873791,GB
+1355873792,1355874047,GG
1355874048,1355874303,DE
1355874304,1355907071,DK
1355907072,1355923455,GB
@@ -25220,10 +31137,8 @@
1355972608,1356005375,IR
1356005376,1356054527,IT
1356054528,1356062719,CZ
-1356062720,1356068390,IT
-1356068391,1356068391,PL
-1356068392,1356068863,IT
-1356068864,1356070911,PL
+1356062720,1356066815,IT
+1356066816,1356070911,PL
1356070912,1356201983,NO
1356201984,1356333055,FR
1356333056,1356464127,SE
@@ -25260,34 +31175,46 @@
1357319172,1357319178,GB
1357319180,1357319187,GB
1357321024,1357321087,KE
+1357321472,1357321475,PT
1357321984,1357322239,GB
1357322240,1357322255,DE
1357322752,1357323007,GB
1357323008,1357323015,CG
+1357323264,1357323775,GB
1357323776,1357323791,FI
+1357323792,1357323799,DK
+1357323800,1357323801,SE
+1357323802,1357323803,FI
+1357323804,1357323807,SE
1357323808,1357323839,NO
+1357323840,1357324287,GB
1357324288,1357324295,RU
-1357324296,1357324327,PL
+1357324296,1357324333,PL
1357326336,1357326337,ES
1357326338,1357326339,SL
-1357326352,1357326367,GB
-1357326592,1357326847,GB
+1357326340,1357326367,GB
+1357326592,1357327359,GB
1357327360,1357327615,FR
-1357328384,1357328671,GB
+1357328384,1357328687,GB
1357328688,1357328695,ES
1357328696,1357328703,IT
1357328704,1357328711,IE
+1357328712,1357328895,GB
1357328896,1357329163,NL
+1357329164,1357329167,GB
1357329168,1357329183,NL
+1357329184,1357329199,GB
+1357329200,1357329215,NL
+1357329216,1357329407,GB
1357329408,1357329415,BE
-1357330944,1357331207,GB
+1357329416,1357332479,GB
1357335808,1357336063,IT
1357337600,1357337647,NL
1357337664,1357337727,NL
1357340672,1357341695,GB
-1357342976,1357343231,GB
-1357343488,1357343503,GB
+1357342720,1357344259,GB
1357344260,1357344271,FR
+1357344272,1357344511,GB
1357344512,1357344767,FR
1357346816,1357346835,FR
1357346848,1357346863,FR
@@ -25296,7 +31223,7 @@
1357347616,1357347659,FR
1357347664,1357347671,FR
1357347680,1357347727,FR
-1357347744,1357347775,FR
+1357347744,1357347839,FR
1357347840,1357348095,PL
1357348352,1357348359,ES
1357348384,1357348415,ES
@@ -25304,9 +31231,10 @@
1357350400,1357350647,GB
1357350656,1357350847,GB
1357351168,1357351423,PL
-1357359104,1357363199,GB
+1357359104,1357360345,GB
+1357360346,1357360346,LU
+1357360347,1357363199,GB
1357363200,1357363455,DE
-1357363456,1357364223,QA
1357364224,1357365247,ES
1357366880,1357366911,GB
1357366960,1357366967,BE
@@ -25315,6 +31243,7 @@
1357368576,1357368831,NL
1357369344,1357369599,RO
1357370368,1357370623,SA
+1357371392,1357371647,GB
1357372416,1357372927,GB
1357373468,1357373471,GB
1357373480,1357373519,GB
@@ -25328,10 +31257,9 @@
1357375504,1357375551,GB
1357375560,1357375567,GB
1357375576,1357375583,FR
-1357375584,1357375591,GB
-1357375600,1357375615,GB
-1357377536,1357377679,FR
-1357377696,1357378647,FR
+1357375584,1357375615,GB
+1357375648,1357375679,GB
+1357377536,1357378647,FR
1357378656,1357378687,FR
1357378816,1357379071,FR
1357381632,1357414399,NO
@@ -25350,7 +31278,6 @@
1357791232,1357807615,PL
1357807616,1357840383,CH
1357840384,1357873151,NO
-1357875296,1357875327,IE
1357875456,1357875711,NL
1357876448,1357876479,DE
1357878272,1357878335,CH
@@ -25359,10 +31286,10 @@
1357878464,1357878527,NO
1357878528,1357878591,AT
1357878592,1357878655,PL
-1357878656,1357878719,DE
1357879296,1357879423,DE
1357883744,1357883759,AT
1357883852,1357883852,SE
+1357884416,1357884419,MY
1357885120,1357885183,DE
1357885200,1357885215,AT
1357885952,1357886207,SE
@@ -25379,11 +31306,11 @@
1357896192,1357896447,DE
1357897376,1357897407,PL
1357897624,1357897631,GB
+1357899584,1357899615,NL
1357899712,1357899775,GB
1357900312,1357900315,GB
-1357900416,1357900543,SE
1357900800,1357901055,PL
-1357901056,1357901311,SE
+1357901056,1357901183,SE
1357902366,1357902366,NO
1357903616,1357903743,CH
1357903744,1357903871,DK
@@ -25391,14 +31318,14 @@
1357905408,1357905663,SE
1357905664,1357905919,NL
1357905920,1357910015,LT
-1357910016,1357914111,GR
+1357910016,1357914111,DE
1357914112,1357922303,RU
1357922304,1357926399,SA
1357926400,1357930495,GB
1357930496,1357932287,RU
1357932288,1357932543,GB
1357932544,1357933055,RU
-1357933056,1357933567,BG
+1357933056,1357933567,ES
1357933568,1357934079,GB
1357934080,1357934335,RU
1357934336,1357934591,GB
@@ -25411,9 +31338,20 @@
1357963264,1357967359,AT
1357967360,1357971455,RU
1357971456,1357975551,KZ
-1357975552,1357979647,AT
1357979648,1357983743,KZ
-1357983744,1357985791,GB
+1357983744,1357984103,GB
+1357984104,1357984111,IT
+1357984112,1357984167,GB
+1357984168,1357984175,IT
+1357984176,1357984367,GB
+1357984368,1357984375,IT
+1357984376,1357984527,GB
+1357984528,1357984535,IT
+1357984536,1357984839,GB
+1357984840,1357984847,IT
+1357984848,1357985575,GB
+1357985576,1357985583,IT
+1357985584,1357985791,GB
1357985792,1357987839,DE
1357987840,1357991935,GB
1357991936,1357996031,NO
@@ -25473,9 +31411,7 @@
1358237696,1358249983,FR
1358249984,1358254079,DE
1358254080,1358258175,MD
-1358262272,1358263807,UA
-1358263808,1358264319,RU
-1358264320,1358266367,UA
+1358262272,1358266367,RU
1358266368,1358274559,DE
1358274560,1358278655,GR
1358278656,1358282751,PL
@@ -25485,13 +31421,16 @@
1358295040,1358299135,RU
1358299136,1358303231,DZ
1358303232,1358306303,RU
-1358306304,1358306815,GB
+1358306304,1358306559,AL
+1358306560,1358306815,GB
1358306816,1358307071,PT
-1358307072,1358307327,IN
+1358307072,1358307327,LV
1358307328,1358315519,DE
1358315520,1358323711,RU
1358323712,1358327807,LU
-1358327808,1358331903,DE
+1358327808,1358328671,DE
+1358328672,1358328727,AT
+1358328728,1358331903,DE
1358331904,1358335999,IL
1358336000,1358344191,FI
1358344192,1358352383,NL
@@ -25566,12 +31505,28 @@
1358647296,1358651391,DE
1358651392,1358655487,FR
1358655488,1358667775,RU
-1358667776,1358671001,GB
+1358667776,1358668159,GB
+1358668160,1358668167,PT
+1358668168,1358668447,GB
+1358668448,1358668455,PT
+1358668456,1358668623,GB
+1358668624,1358668631,PT
+1358668632,1358670975,GB
+1358670976,1358670991,PT
+1358670992,1358671001,GB
1358671002,1358671002,PT
-1358671003,1358675967,GB
+1358671003,1358671359,GB
+1358671360,1358671871,PT
+1358671872,1358671935,GB
+1358671936,1358671943,PT
+1358671944,1358673423,GB
+1358673424,1358673431,DE
+1358673432,1358673919,GB
+1358673920,1358675967,ES
1358675968,1358676991,SE
1358676992,1358678015,DK
-1358678016,1358680063,SE
+1358678016,1358679039,SE
+1358679040,1358680063,DK
1358680064,1358688255,RU
1358688256,1358692351,CZ
1358692352,1358696447,PL
@@ -25579,7 +31534,9 @@
1358700544,1358704639,AT
1358704640,1358708735,HU
1358708736,1358712831,GB
-1358712832,1358716927,NL
+1358712832,1358715135,NL
+1358715136,1358715143,GB
+1358715144,1358716927,NL
1358716928,1358721023,DE
1358721024,1358725119,GB
1358725120,1358733311,RU
@@ -25593,11 +31550,14 @@
1358770176,1358774271,BG
1358774272,1358778367,ES
1358778368,1358782463,CH
-1358782464,1358787327,GB
+1358782464,1358784039,GB
+1358784040,1358784047,DE
+1358784048,1358787327,GB
1358787328,1358787583,IE
1358787584,1358790655,GB
1358790656,1358798847,IR
-1358798848,1358807039,HU
+1358798848,1358802943,HR
+1358802944,1358807039,HU
1358807040,1358811135,ES
1358811136,1358815231,DE
1358815232,1358819327,RU
@@ -25618,16 +31578,17 @@
1358861474,1358861474,DE
1358861475,1358861567,GB
1358861568,1358861823,DE
-1358861824,1358861895,GB
-1358861896,1358861903,FR
-1358861904,1358862847,GB
+1358861824,1358861890,FR
+1358861891,1358861891,GB
+1358861892,1358862335,FR
+1358862336,1358862847,US
1358862848,1358862911,DK
1358862912,1358862914,GB
1358862915,1358862915,DK
-1358862916,1358862975,GB
-1358862976,1358863103,DK
+1358862916,1358863103,GB
1358863104,1358863359,CH
-1358863360,1358864383,GB
+1358863360,1358863871,US
+1358863872,1358864383,GB
1358864384,1358872575,CH
1358872576,1358876671,IT
1358876672,1358880767,LV
@@ -25636,7 +31597,9 @@
1358890400,1358890431,SE
1358890432,1358890479,DE
1358890480,1358890487,US
-1358890488,1358892159,DE
+1358890488,1358890815,DE
+1358890816,1358890831,CH
+1358890832,1358892159,DE
1358892160,1358892175,CH
1358892176,1358893055,DE
1358893056,1358897151,RU
@@ -25671,12 +31634,12 @@
1359119232,1359119359,ES
1359119360,1359120383,IT
1359120384,1359121407,DE
-1359121408,1359122431,ES
-1359122432,1359123711,DE
+1359121408,1359123455,ES
+1359123456,1359123711,DE
1359123712,1359124479,ES
-1359124480,1359126527,DE
-1359126528,1359130623,GB
-1359130624,1359133191,DE
+1359124480,1359132671,GB
+1359132672,1359133183,ES
+1359133184,1359133191,DE
1359133192,1359133199,NL
1359133200,1359134463,DE
1359134464,1359134719,GR
@@ -25704,7 +31667,9 @@
1359413248,1359429631,DE
1359429632,1359446015,LT
1359446016,1359462399,DK
-1359462400,1359468607,DE
+1359462400,1359466495,DE
+1359466496,1359468543,US
+1359468544,1359468607,DE
1359468608,1359468623,SG
1359468624,1359470591,DE
1359470592,1359478783,CH
@@ -25719,7 +31684,9 @@
1359740928,1359773695,IR
1359773696,1359806463,RO
1359806464,1359839231,RU
-1359839232,1359871999,CH
+1359839232,1359861503,CH
+1359861504,1359861631,GB
+1359861632,1359871999,CH
1359872000,1359904767,FR
1359904768,1359937535,DE
1359937536,1359970303,IS
@@ -25739,8 +31706,8 @@
1360064512,1360068607,GE
1360068608,1360072703,RU
1360072704,1360076799,CH
-1360076800,1360084991,NL
-1360084992,1360089087,GB
+1360076800,1360083263,NL
+1360083264,1360089087,GB
1360089088,1360093183,AZ
1360093184,1360101375,DE
1360101376,1360105471,UA
@@ -25752,8 +31719,7 @@
1360125952,1360127487,SI
1360127488,1360127999,RS
1360128000,1360128511,MK
-1360128512,1360128767,ME
-1360128768,1360129023,SI
+1360128512,1360129023,ME
1360129024,1360129535,BA
1360129536,1360130047,SI
1360130048,1360134143,IE
@@ -25774,7 +31740,9 @@
1360207872,1360211967,CZ
1360211968,1360216063,GB
1360216064,1360224255,RU
-1360224256,1360227841,ES
+1360224256,1360224767,ES
+1360224768,1360224895,FR
+1360224896,1360227841,ES
1360227842,1360227842,SE
1360227843,1360228351,ES
1360228352,1360232447,FI
@@ -25783,14 +31751,40 @@
1360240640,1360244735,ES
1360244736,1360250623,GB
1360250624,1360251391,NL
-1360251392,1360251647,GB
-1360251648,1360252415,DE
-1360252416,1360257023,GB
+1360251392,1360252927,DE
+1360252928,1360257023,GB
1360257024,1360265215,DK
-1360265216,1360269311,GB
+1360265216,1360265503,NL
+1360265504,1360265511,DE
+1360265512,1360265983,NL
+1360265984,1360265991,PT
+1360265992,1360266567,GB
+1360266568,1360266575,RU
+1360266576,1360266759,GB
+1360266760,1360266767,FR
+1360266768,1360266791,GB
+1360266792,1360266815,ES
+1360266816,1360266847,GB
+1360266848,1360266863,BE
+1360266864,1360266871,FR
+1360266872,1360266879,ES
+1360266880,1360266991,GB
+1360266992,1360266999,BE
+1360267000,1360267007,GB
+1360267008,1360268031,SE
+1360268032,1360268199,FR
+1360268200,1360268207,ES
+1360268208,1360268287,FR
+1360268288,1360269311,GB
1360269312,1360273407,KG
1360273408,1360281599,GB
-1360281600,1360284671,NL
+1360281600,1360281727,NL
+1360281728,1360281855,ES
+1360281856,1360282111,NL
+1360282112,1360282239,ES
+1360282240,1360282495,NL
+1360282496,1360282623,DE
+1360282624,1360284671,NL
1360284672,1360284927,DK
1360284928,1360285183,NL
1360285184,1360285247,ES
@@ -25822,19 +31816,18 @@
1360375808,1360379903,NL
1360379904,1360383999,PL
1360384000,1360388095,SE
-1360388096,1360392191,RU
1360392192,1360396287,EE
1360396288,1360400383,RU
1360400384,1360404479,BH
1360408576,1360412671,RU
1360420864,1360424959,TR
-1360424960,1360429055,RU
+1360424960,1360425215,NL
+1360425216,1360429055,RU
1360429056,1360433151,UA
1360433152,1360437247,RO
1360437248,1360441343,FI
1360441344,1360445439,HU
1360445440,1360453631,RU
-1360453632,1360457727,DE
1360457728,1360461823,FI
1360461824,1360465919,RU
1360465920,1360470015,UA
@@ -25846,7 +31839,9 @@
1360494592,1360498687,DK
1360498688,1360515071,RU
1360515072,1360519167,JP
-1360519168,1360531455,NL
+1360519168,1360524031,NL
+1360524032,1360524287,US
+1360524288,1360531455,NL
1360531456,1360535551,RO
1360535552,1360539647,DE
1360539648,1360543743,NL
@@ -25873,7 +31868,10 @@
1360629760,1360633855,SE
1360633856,1360637951,RU
1360637952,1360642047,FO
-1360642048,1360646143,FR
+1360642048,1360644735,FR
+1360644736,1360644863,IT
+1360644864,1360645887,FR
+1360645888,1360646143,GB
1360646144,1360650239,AT
1360650240,1360654335,UA
1360654336,1360658431,EE
@@ -25896,9 +31894,9 @@
1360728064,1360732159,FR
1360732160,1360736255,NO
1360736256,1360740351,RU
-1360740352,1360748641,GB
-1360748642,1360748642,IM
-1360748643,1360752639,GB
+1360740352,1360748543,GB
+1360748544,1360749567,IM
+1360749568,1360752639,GB
1360752640,1360756735,DE
1360756736,1360760831,IT
1360760832,1360764927,RU
@@ -25925,8 +31923,7 @@
1360863232,1360867327,NO
1360867328,1360879615,GB
1360879616,1360883711,EG
-1360883712,1360887807,RU
-1360887808,1360891903,FI
+1360883712,1360891903,RU
1360891904,1360895999,CH
1360896000,1360900095,QA
1360900096,1360916479,IT
@@ -25945,23 +31942,23 @@
1360977920,1360986111,CZ
1360986112,1360986269,GB
1360986270,1360986270,US
-1360986271,1360986299,GB
+1360986271,1360986287,GB
+1360986288,1360986291,US
+1360986292,1360986299,GB
1360986300,1360986300,US
1360986301,1360986356,GB
1360986357,1360986358,US
-1360986359,1360986431,GB
+1360986359,1360986363,GB
+1360986364,1360986399,US
+1360986400,1360986431,GB
1360986432,1360986447,US
1360986448,1360986631,GB
1360986632,1360986635,US
1360986636,1360986755,GB
1360986756,1360986763,US
-1360986764,1360989439,GB
-1360989440,1360989695,FR
-1360989696,1360989929,GB
-1360989930,1360989930,FR
-1360989931,1360989935,GB
-1360989936,1360989943,FR
-1360989944,1360991743,GB
+1360986764,1360988159,GB
+1360988160,1360990207,FR
+1360990208,1360991743,GB
1360991744,1360991871,US
1360991872,1360992255,GB
1360992256,1360992511,DE
@@ -25981,24 +31978,63 @@
1361041408,1361043455,NL
1361043456,1361051647,IR
1361051648,1362100223,ES
-1362100224,1362403583,FR
+1362100224,1362395647,FR
+1362395648,1362396031,US
+1362396032,1362396415,FR
+1362396416,1362396927,US
+1362396928,1362397439,FR
+1362397440,1362397695,US
+1362397696,1362398463,FR
+1362398464,1362398719,DE
+1362398720,1362403583,FR
1362403584,1362404351,DZ
-1362404352,1362755583,FR
-1362755584,1362821119,NL
-1362821120,1362886655,BE
+1362404352,1362404607,FR
+1362404608,1362405887,DZ
+1362405888,1362406143,FR
+1362406144,1362407167,SV
+1362407168,1362407679,FR
+1362407680,1362407743,US
+1362407744,1362407839,FR
+1362407840,1362407871,US
+1362407872,1362407887,HK
+1362407888,1362407903,US
+1362407904,1362407919,HK
+1362407920,1362407935,US
+1362407936,1362411519,FR
+1362411520,1362413273,MQ
+1362413274,1362414847,FR
+1362414848,1362415103,GB
+1362415104,1362415359,FR
+1362415360,1362415615,DE
+1362415616,1362417663,GP
+1362417664,1362419711,SG
+1362419712,1362423807,FR
+1362423808,1362425855,SG
+1362425856,1362426879,FR
+1362426880,1362427815,MQ
+1362427816,1362755583,FR
+1362755584,1362886655,NL
1362886656,1363017727,ES
1363017728,1363148799,CH
1363148800,1363410943,FR
-1363410944,1363673087,NL
+1363410944,1363574783,CN
+1363574784,1363582975,NL
+1363582976,1363673087,CN
1363673088,1363935231,IT
1363935232,1364197375,GB
1364197376,1364262911,FR
1364262912,1364328447,IT
1364328448,1364459519,BE
1364459520,1364525055,PT
-1364525056,1364529663,NL
+1364525056,1364526591,NL
+1364526592,1364528639,GB
+1364528640,1364529663,NL
1364529664,1364530175,GB
-1364530176,1364585727,NL
+1364530176,1364541439,NL
+1364541440,1364545535,SE
+1364545536,1364581375,NL
+1364581376,1364582399,LY
+1364582400,1364585727,NL
1364585728,1364585983,CA
1364585984,1364590591,NL
1364590592,1364721663,GB
@@ -26024,7 +32060,11 @@
1364815872,1364819967,RU
1364819968,1364824063,GB
1364824064,1364828159,SE
-1364828160,1364832255,GB
+1364828160,1364829439,GB
+1364829440,1364829487,FR
+1364829488,1364829503,GB
+1364829504,1364829527,FR
+1364829528,1364832255,GB
1364832256,1364836351,RU
1364836352,1364840447,DE
1364840448,1364844543,AM
@@ -26051,7 +32091,7 @@
1364934656,1364938751,FR
1364938752,1364942847,CZ
1364942848,1364946943,GB
-1364946944,1364951039,TR
+1364946944,1364951039,NL
1364951040,1364959231,IR
1364959232,1364963327,DE
1364963328,1364967423,RU
@@ -26081,20 +32121,25 @@
1365000192,1365004287,SE
1365004288,1365008383,FR
1365008384,1365012479,CH
-1365012480,1365015903,FR
+1365012480,1365014527,US
+1365015552,1365015903,US
1365015904,1365015919,GB
-1365015920,1365016575,FR
+1365015920,1365016575,US
1365016576,1365020671,ES
1365020672,1365024767,CZ
1365024768,1365025151,DE
1365025152,1365025215,AT
1365025216,1365028863,DE
1365028864,1365032959,NL
-1365032960,1365033471,GB
+1365032960,1365033247,US
+1365033248,1365033279,GB
+1365033280,1365033471,US
1365033472,1365033599,PT
1365033600,1365033983,GB
1365033984,1365035007,SE
-1365035008,1365039103,GB
+1365035008,1365035943,GB
+1365035944,1365035947,PL
+1365035948,1365039103,GB
1365039104,1365039135,FI
1365039136,1365039359,PT
1365039360,1365039615,GB
@@ -26102,15 +32147,17 @@
1365039744,1365039871,GB
1365039872,1365040127,US
1365040128,1365041151,SE
-1365041152,1365041663,LU
-1365041664,1365041695,FR
-1365041696,1365043199,LU
-1365043200,1365044735,FR
-1365044736,1365044799,LU
-1365044800,1365044927,FR
+1365041152,1365044543,FR
+1365044544,1365044575,LU
+1365044576,1365044735,FR
+1365044736,1365044815,LU
+1365044816,1365044831,FR
+1365044832,1365044895,LU
+1365044896,1365044927,FR
1365044928,1365044935,GR
1365044936,1365044943,LU
-1365044944,1365045247,FR
+1365044944,1365044991,FR
+1365044992,1365045247,LU
1365045248,1365047295,AT
1365047296,1365049343,SK
1365049344,1365057535,FR
@@ -26123,7 +32170,8 @@
1365090304,1365094399,NO
1365094400,1365098495,FR
1365098496,1365102591,HU
-1365102592,1365106687,ES
+1365102592,1365102655,FR
+1365102656,1365106687,ES
1365106688,1365110783,GB
1365110784,1365114879,FR
1365114880,1365118975,BA
@@ -26134,7 +32182,10 @@
1365147648,1365155839,RU
1365155840,1365159935,SE
1365159936,1365164031,HU
-1365164032,1365172223,GB
+1365164032,1365171199,GB
+1365171200,1365171455,MT
+1365171456,1365171967,GB
+1365171968,1365172223,MT
1365172224,1365176319,LV
1365176320,1365180415,HU
1365180416,1365182335,DE
@@ -26202,7 +32253,9 @@
1369657344,1369659391,RU
1369659392,1369661439,UA
1369661440,1369665535,RU
-1369665536,1369677823,UA
+1369665536,1369669631,UA
+1369669632,1369675775,RU
+1369675776,1369677823,UA
1369677824,1369686015,RU
1369688064,1369690111,PL
1369690112,1369694207,UA
@@ -26215,25 +32268,54 @@
1370062848,1370095615,DE
1370095616,1370128383,GB
1370128384,1370161151,SE
-1370161152,1370176767,NL
+1370161152,1370174207,NL
+1370174208,1370174463,DE
+1370174464,1370174495,BE
+1370174496,1370174527,FR
+1370174528,1370174559,CH
+1370174560,1370174591,HU
+1370174592,1370174623,CZ
+1370174624,1370174655,PL
+1370174656,1370174687,DE
+1370174688,1370174719,SE
+1370174720,1370174751,DK
+1370174752,1370174752,NL
+1370174753,1370174783,ES
+1370174784,1370174815,CH
+1370174816,1370175999,NL
+1370176000,1370176255,DE
+1370176256,1370176511,GB
+1370176512,1370176767,NL
1370176768,1370177023,SE
1370177024,1370178559,NL
1370178560,1370179071,ES
-1370179072,1370180095,NL
+1370179072,1370179583,SE
+1370179584,1370180095,NL
1370180096,1370180351,GB
-1370180352,1370185983,NL
+1370180352,1370180607,DE
+1370180608,1370182911,NL
+1370182912,1370183167,DE
+1370183168,1370185983,NL
1370185984,1370186239,GB
-1370186240,1370188799,NL
+1370186240,1370188543,NL
+1370188544,1370188799,FR
1370188800,1370189055,AU
1370189056,1370189311,NL
1370189312,1370189567,US
-1370189568,1370193919,NL
+1370189568,1370190847,NL
+1370190848,1370192127,DE
+1370192128,1370193919,NL
1370193920,1370226687,GB
1370226688,1370259455,ES
1370259456,1370292223,SE
-1370292224,1370296319,NL
+1370292224,1370293759,NL
+1370293760,1370294015,DE
+1370294016,1370294527,NL
+1370294528,1370295295,IL
+1370295296,1370296319,IE
1370296320,1370300415,GB
-1370300416,1370302463,NL
+1370300416,1370301439,NL
+1370301440,1370302463,IT
1370302464,1370302975,ES
1370302976,1370303487,NO
1370303488,1370312703,NL
@@ -26252,11 +32334,9 @@
1370456064,1370488831,FI
1370488832,1370619903,RU
1370619904,1370750975,GB
-1370750976,1370767871,RO
-1370767872,1370768127,MD
-1370768128,1370772479,RO
-1370772480,1370772991,MD
-1370772992,1370882047,RO
+1370750976,1370767359,RO
+1370767360,1370775551,MD
+1370775552,1370882047,RO
1370882048,1371013119,HU
1371013120,1371078655,ES
1371078656,1371144191,FR
@@ -26279,18 +32359,34 @@
1371979264,1371996159,LV
1371996160,1371996671,GB
1371996672,1371996927,GA
-1371996928,1372017583,GB
+1371996928,1372000255,GB
+1372000256,1372001279,UG
+1372001280,1372012543,GB
+1372012544,1372016639,DE
+1372016640,1372017583,GB
1372017584,1372017599,CD
1372017600,1372020223,GB
1372020224,1372020224,CD
1372020225,1372020479,GB
1372020480,1372020480,CD
-1372020481,1372020991,GB
-1372020992,1372021247,CD
-1372021248,1372026623,GB
+1372020481,1372020735,GB
+1372020736,1372022783,CD
+1372022784,1372023807,GB
+1372023808,1372024831,IL
+1372024832,1372025087,ZM
+1372025088,1372026623,GB
1372026624,1372026879,KE
1372026880,1372027903,IL
-1372027904,1372061695,GB
+1372027904,1372031999,GB
+1372032000,1372032255,CM
+1372032256,1372043519,GB
+1372043520,1372043775,NG
+1372043776,1372045567,GB
+1372045568,1372045823,ZM
+1372045824,1372047231,GB
+1372047232,1372047295,NG
+1372047296,1372060671,GB
+1372060672,1372061695,IL
1372061696,1372069887,RU
1372069888,1372073983,FR
1372073984,1372078079,CZ
@@ -26312,7 +32408,11 @@
1372139520,1372143615,CZ
1372143616,1372147711,RU
1372147712,1372151807,BE
-1372151808,1372159999,DE
+1372151808,1372153343,DE
+1372153344,1372153855,GB
+1372153856,1372156927,DE
+1372156928,1372157439,GB
+1372157440,1372159999,DE
1372160000,1372164095,GB
1372164096,1372168191,DE
1372168192,1372172287,GB
@@ -26331,6 +32431,7 @@
1372688384,1372689407,DE
1372689920,1372690175,DE
1372693504,1372694015,DE
+1372694464,1372694495,DE
1372697344,1372697599,DE
1372698880,1372699647,DE
1372699904,1372700159,DE
@@ -26341,7 +32442,7 @@
1372717056,1372749823,PL
1372749824,1372782591,DE
1372782592,1372815359,RU
-1372815360,1372848127,SE
+1372815360,1372848127,KZ
1372848128,1373110271,TR
1373110272,1373175807,SE
1373175808,1373241343,AT
@@ -26351,50 +32452,39 @@
1373437952,1373503487,CH
1373503488,1373569023,RU
1373569024,1373634559,AT
-1373634560,1373802623,SE
-1373802624,1373802751,DK
-1373802752,1374683135,SE
+1373634560,1374683135,SE
1374683136,1375207423,BE
1375207424,1375207679,FR
-1375207680,1375208191,MQ
-1375208192,1375208703,FR
+1375207680,1375208447,MQ
+1375208448,1375208703,GP
1375208704,1375210239,MQ
-1375210240,1375211007,FR
-1375211008,1375211263,MQ
-1375211264,1375211519,FR
-1375211520,1375212287,GP
-1375212288,1375212543,FR
-1375212544,1375213311,GP
-1375213312,1375213823,FR
-1375213824,1375215359,GP
+1375210240,1375210495,GP
+1375210496,1375211519,MQ
+1375211520,1375215359,GP
1375215360,1375215615,FR
-1375215616,1375215871,GF
-1375215872,1375216127,FR
-1375216128,1375216383,GF
-1375216384,1375216639,FR
-1375216640,1375217407,GF
+1375215616,1375217407,GF
1375217408,1375217663,FR
-1375217664,1375217919,GF
-1375217920,1375218175,FR
-1375218176,1375220735,GF
-1375220736,1375224831,FR
-1375224832,1375225087,MQ
-1375225088,1375225855,FR
-1375225856,1375226111,MQ
-1375226112,1375226367,FR
-1375226368,1375226623,MQ
-1375226624,1375227135,FR
-1375227136,1375229695,MQ
-1375229696,1375229951,FR
-1375229952,1375230463,MQ
-1375230464,1375230719,FR
-1375230720,1375231999,MQ
-1375232000,1375235071,FR
+1375217664,1375219199,GF
+1375219200,1375219455,FR
+1375219456,1375220735,GF
+1375220736,1375221759,FR
+1375221760,1375222015,GF
+1375222016,1375222783,FR
+1375222784,1375223039,GF
+1375223040,1375223295,FR
+1375223296,1375223551,GF
+1375223552,1375224831,FR
+1375224832,1375225599,MQ
+1375225600,1375225855,FR
+1375225856,1375226367,MQ
+1375226368,1375226623,FR
+1375226624,1375231999,MQ
+1375232000,1375233023,FR
+1375233024,1375233279,MQ
+1375233280,1375235071,FR
1375235072,1375235583,MQ
1375235584,1375236095,FR
-1375236096,1375237631,MQ
-1375237632,1375237887,FR
-1375237888,1375240191,MQ
+1375236096,1375240191,MQ
1375240192,1375256575,GP
1375256576,1375272959,RE
1375272960,1375731711,FR
@@ -26410,7 +32500,9 @@
1381367808,1381498879,ES
1381498880,1381761023,IT
1381761024,1382023167,NL
-1382023168,1382027327,SE
+1382023168,1382027007,SE
+1382027008,1382027263,NO
+1382027264,1382027327,SE
1382027328,1382027343,DK
1382027344,1382039551,SE
1382039552,1382055935,DE
@@ -26427,10 +32519,11 @@
1382141952,1382146047,SY
1382146048,1382154239,IR
1382154240,1382170623,FR
-1382170624,1382187007,DE
+1382170624,1382181439,DE
+1382181440,1382181447,DK
+1382181448,1382187007,DE
1382187008,1382203391,ES
1382203392,1382205439,GB
-1382205440,1382213631,DE
1382213632,1382219775,GB
1382219776,1382219959,SE
1382219960,1382219967,FI
@@ -26458,7 +32551,9 @@
1382417664,1382418175,SE
1382418176,1382418431,PT
1382418432,1382420479,GB
-1382420480,1382420735,DE
+1382420480,1382420547,DE
+1382420548,1382420551,PL
+1382420552,1382420735,DE
1382420736,1382420991,ES
1382420992,1382421247,FR
1382421248,1382421503,BE
@@ -26480,7 +32575,9 @@
1382465536,1382481919,PS
1382481920,1382498303,AT
1382498304,1382514687,BG
-1382514688,1382531071,DK
+1382514688,1382518783,DK
+1382518784,1382522879,DE
+1382522880,1382531071,DK
1382531072,1382547455,FI
1382547456,1382809599,IT
1382809600,1383071743,GB
@@ -26499,17 +32596,24 @@
1383145472,1383153663,CZ
1383153664,1383161855,GB
1383161856,1383170047,DE
-1383170048,1383186431,GB
+1383170048,1383184319,GB
+1383184320,1383184335,SE
+1383184336,1383186431,GB
1383186432,1383194623,IT
1383194624,1383202815,GB
1383202816,1383211007,RU
1383211008,1383219199,CY
-1383219200,1383227391,AL
+1383219200,1383225983,AL
+1383225984,1383226007,RS
+1383226008,1383226207,AL
+1383226208,1383226239,RS
+1383226240,1383227391,AL
1383227392,1383243775,RU
1383243776,1383251967,YE
1383251968,1383260159,CZ
1383260160,1383268351,RU
-1383268352,1383272191,IR
+1383268352,1383269375,AU
+1383269376,1383272191,IR
1383272192,1383272447,NL
1383272448,1383276543,IR
1383276544,1383284735,KZ
@@ -26521,15 +32625,22 @@
1383325696,1383333887,GB
1383333888,1383350271,RU
1383350272,1383358463,NO
-1383358464,1383369727,DE
+1383358464,1383366911,DE
+1383366912,1383367167,SY
+1383367168,1383367679,DE
+1383367680,1383368703,GB
+1383368704,1383369727,DE
1383369728,1383369983,SA
-1383369984,1383374847,DE
+1383369984,1383372031,DE
+1383372032,1383374591,KW
+1383374592,1383374847,US
1383374848,1383383039,ES
1383383040,1383391231,CY
1383391232,1383399423,FI
1383399424,1383407615,LI
1383407616,1383415807,NO
-1383415808,1383423999,RU
+1383415808,1383419903,RU
+1383419904,1383423999,TR
1383424000,1383432191,SE
1383432192,1383440383,CZ
1383440384,1383448575,RU
@@ -26539,13 +32650,20 @@
1383469056,1383471103,UA
1383471104,1383473151,SE
1383473152,1383481343,DE
-1383481344,1383497727,GB
+1383481344,1383481599,GB
+1383481600,1383481615,US
+1383481616,1383481663,GB
+1383481664,1383481695,US
+1383481696,1383482623,GB
+1383482624,1383482879,NL
+1383482880,1383497727,GB
1383497728,1383505919,RU
1383505920,1383514111,SA
1383514112,1383522303,FI
1383522304,1383523839,BG
1383523840,1383524095,GB
-1383524096,1383524863,BG
+1383524096,1383524607,BG
+1383524608,1383524863,US
1383524864,1383525119,GB
1383525120,1383530495,BG
1383530496,1383538687,DE
@@ -26560,8 +32678,11 @@
1383596032,1384120319,FR
1384120320,1384153087,NG
1384153088,1384185855,FI
+1384185856,1384186879,ES
1384187136,1384187391,DE
1384188160,1384188415,ES
+1384193024,1384194047,DE
+1384196096,1384197119,ES
1384198144,1384202239,GB
1384206336,1384218623,GB
1384218624,1384251391,EG
@@ -26659,14 +32780,15 @@
1385259008,1385267199,IT
1385267200,1385275391,SE
1385275392,1385283583,IT
-1385283584,1385287679,DE
-1385287680,1385290288,GB
+1385283584,1385286143,DE
+1385286144,1385287679,GB
+1385289728,1385290288,GB
1385290289,1385290289,RE
1385290290,1385290631,GB
1385290632,1385290632,IS
-1385290633,1385291343,GB
+1385290633,1385290751,GB
1385291344,1385291344,IS
-1385291345,1385291775,GB
+1385291520,1385291775,GB
1385291776,1385299967,TR
1385299968,1385303039,BG
1385303040,1385303295,HU
@@ -26684,7 +32806,15 @@
1385349120,1385357311,CH
1385357312,1385365503,PL
1385365504,1385373695,GB
-1385373696,1385381887,NO
+1385373696,1385381375,NO
+1385381376,1385381509,DK
+1385381510,1385381510,NO
+1385381511,1385381541,DK
+1385381542,1385381542,NO
+1385381543,1385381553,DK
+1385381554,1385381554,NO
+1385381555,1385381631,DK
+1385381632,1385381887,NO
1385381888,1385398271,RU
1385398272,1385406463,BG
1385406464,1385414655,EE
@@ -26711,11 +32841,23 @@
1385567232,1385568255,IE
1385569024,1385569279,FR
1385570112,1385570119,FR
+1385570144,1385570151,FR
+1385570200,1385570207,FR
+1385570224,1385570231,FR
1385570304,1385578495,HU
1385578496,1385586687,TR
-1385586688,1385589247,GB
+1385586688,1385587711,GB
+1385587712,1385588735,US
+1385588736,1385588991,GB
+1385588992,1385589247,HK
1385589248,1385589503,JP
-1385589504,1385594879,GB
+1385589504,1385589759,GB
+1385589760,1385590015,JP
+1385590016,1385590783,GB
+1385590784,1385591295,US
+1385591296,1385591807,HK
+1385591808,1385592063,SG
+1385592320,1385594879,GB
1385594880,1385603071,NL
1385603072,1385611263,CZ
1385611264,1385619455,AT
@@ -26729,7 +32871,11 @@
1385676800,1385684991,RU
1385684992,1385824255,GB
1385824256,1385955327,PT
-1385955328,1386086399,NL
+1385955328,1385971711,CN
+1385971712,1385979903,NL
+1385979904,1385988095,CN
+1385988096,1385996287,NL
+1385996288,1386086399,CN
1386086400,1386217471,ES
1386217472,1386283007,PL
1386283008,1386348543,NL
@@ -26773,10 +32919,8 @@
1386449404,1386449407,DE
1386449408,1386449663,GB
1386449664,1386449919,HK
-1386449920,1386449920,US
-1386449921,1386450175,GB
-1386450176,1386450431,US
-1386450432,1386455039,GB
+1386449920,1386450943,IL
+1386450944,1386455039,GB
1386455040,1386456063,DK
1386456064,1386457087,GB
1386457088,1386459135,PS
@@ -26789,10 +32933,14 @@
1386478336,1386478591,IL
1386478592,1386479615,GB
1386479616,1386545151,NO
-1386545152,1386610687,DE
+1386545152,1386552319,DE
+1386552320,1386553087,GB
+1386553088,1386610687,DE
1386610688,1386676223,IL
1386676224,1386741759,SA
-1386741760,1387331583,NL
+1386741760,1387249663,NL
+1387249664,1387250687,BE
+1387250688,1387331583,NL
1387331584,1387397119,PL
1387397120,1387462655,OM
1387462656,1387528191,RU
@@ -26871,8 +33019,7 @@
1388581120,1388583167,FR
1388583168,1388583423,DZ
1388583424,1388584959,FR
-1388587456,1388587471,GB
-1388589056,1388589823,GB
+1388587264,1388589823,GB
1388591104,1388591359,AU
1388593152,1388601343,RU
1388601344,1388609535,SE
@@ -26899,7 +33046,9 @@
1388673770,1388673770,RE
1388673771,1388675071,FR
1388675584,1388676095,DE
+1388677120,1388677631,GB
1388677632,1388677887,NL
+1388677888,1388678143,GB
1388678144,1388679167,DE
1388679168,1388679423,FR
1388681216,1388683263,DE
@@ -26914,45 +33063,82 @@
1388688160,1388691455,CH
1388691456,1388699647,NL
1388699648,1388707839,SE
-1388707840,1388708727,RU
+1388707840,1388708727,LT
1388708728,1388708743,US
-1388708744,1388708859,RU
+1388708744,1388708859,LT
1388708860,1388708863,US
-1388708864,1388709375,RU
-1388709376,1388709887,LT
-1388709888,1388712063,RU
-1388712064,1388712191,LT
-1388712192,1388714239,RU
+1388708864,1388711176,LT
+1388711177,1388711177,RU
+1388711178,1388714239,LT
1388714240,1388714495,LB
-1388714496,1388714751,RU
-1388714752,1388715007,LT
-1388715008,1388715263,RU
-1388715264,1388715519,LT
-1388715520,1388716031,RU
+1388714496,1388716031,LT
1388716032,1388724223,ES
1388724224,1388732415,DE
1388732416,1388740607,ES
-1388740608,1388741887,IE
-1388741888,1388742143,GB
-1388742144,1388747263,IE
-1388747264,1388747775,GB
+1388740608,1388741791,GB
+1388741792,1388741795,IE
+1388741796,1388743015,GB
+1388743016,1388743023,IE
+1388743024,1388743047,GB
+1388743048,1388743055,IE
+1388743056,1388743423,GB
+1388743424,1388743435,IE
+1388743436,1388743679,GB
+1388743680,1388743919,IE
+1388743920,1388743935,GB
+1388743936,1388744191,IE
+1388744192,1388744391,GB
+1388744392,1388744395,IE
+1388744396,1388744759,GB
+1388744760,1388744767,IE
+1388744768,1388744831,GB
+1388744832,1388744847,IE
+1388744848,1388745971,GB
+1388745972,1388745975,IE
+1388745976,1388746207,GB
+1388746208,1388746223,IE
+1388746224,1388746495,GB
+1388746496,1388746559,IE
+1388746560,1388746911,GB
+1388746912,1388746927,IE
+1388746928,1388747775,GB
1388747776,1388748799,IE
1388748800,1388756991,RU
1388756992,1388765183,DE
1388765184,1388773375,GB
1388773376,1388781567,NO
1388781568,1388789759,ES
-1388789760,1388794943,NL
+1388789760,1388789823,NL
+1388789824,1388789831,GB
+1388789832,1388789839,NL
+1388789840,1388789847,GB
+1388789848,1388794943,NL
1388794944,1388794959,GB
-1388794960,1388796679,NL
+1388794960,1388795967,NL
+1388795968,1388796031,GB
+1388796032,1388796679,NL
1388796680,1388796687,GB
1388796688,1388797951,NL
1388797952,1388806143,RU
-1388806144,1388806783,DE
+1388806144,1388806399,CH
+1388806400,1388806655,DE
+1388806656,1388806783,CH
1388806784,1388806911,GB
-1388806912,1388807839,DE
-1388807840,1388807855,CH
-1388807856,1388814335,DE
+1388806912,1388807551,CH
+1388807552,1388807615,DE
+1388807616,1388807871,CH
+1388807872,1388807935,DE
+1388807936,1388808287,CH
+1388808288,1388808295,US
+1388808296,1388809471,CH
+1388809472,1388809727,US
+1388809728,1388811775,CH
+1388811776,1388812031,DE
+1388812032,1388813247,CH
+1388813248,1388813311,DE
+1388813312,1388813823,CH
+1388813824,1388814079,DE
+1388814080,1388814335,CH
1388814336,1388816383,FI
1388816384,1388822527,AX
1388822528,1388830719,AM
@@ -26968,19 +33154,28 @@
1389101056,1389133823,NL
1389133824,1389166591,RU
1389166592,1389199359,PS
-1389199360,1389199871,DE
+1389199360,1389199871,AE
1389199872,1389200159,US
-1389200160,1389223935,DE
-1389223936,1389224191,AE
-1389224192,1389231359,DE
-1389231360,1389231615,AE
-1389231616,1389264895,DE
+1389200160,1389200895,AE
+1389200896,1389211647,DE
+1389211648,1389212672,AE
+1389212673,1389218303,DE
+1389218304,1389218815,AE
+1389218816,1389219839,AF
+1389219840,1389228415,AE
+1389228416,1389228479,LB
+1389228480,1389232127,AE
+1389232128,1389264895,DE
1389264896,1389265151,TZ
-1389265152,1389275647,GB
+1389265152,1389266943,GB
+1389266944,1389267199,KE
+1389267200,1389268863,GB
+1389268864,1389268871,KE
+1389268872,1389275647,GB
1389275648,1389275903,ZA
1389275904,1389289471,GB
-1389289472,1389290239,NO
-1389290240,1389297663,GB
+1389289472,1389290495,NO
+1389290496,1389297663,GB
1389297664,1389330431,UA
1389330432,1389363199,DE
1389363200,1389373498,CZ
@@ -26996,17 +33191,15 @@
1389494272,1389494527,RO
1389494528,1389510655,DE
1389510656,1389527039,NL
-1389527040,1389528063,RO
-1389528064,1389533183,PL
-1389533184,1389535231,RO
-1389535232,1389536255,PL
-1389536256,1389537279,RO
-1389537280,1389540863,PL
-1389540864,1389541375,RO
-1389541376,1389542399,PL
-1389542400,1389543423,RO
-1389543424,1389576191,DE
-1389576192,1389592575,GB
+1389527040,1389543423,RO
+1389543424,1389548991,DE
+1389548992,1389549055,BE
+1389549056,1389576191,DE
+1389576192,1389580799,GB
+1389580800,1389581119,US
+1389581120,1389581135,GB
+1389581136,1389581311,US
+1389581312,1389592575,GB
1389592576,1389598719,GE
1389598720,1389598956,RU
1389598957,1389598957,GE
@@ -27031,22 +33224,23 @@
1389787136,1389788671,SI
1389788672,1389789183,RS
1389789184,1389805567,PL
-1389805568,1389806591,DE
+1389805568,1389806591,GB
1389806592,1389806847,SA
-1389806848,1389808639,DE
+1389806848,1389808639,GB
1389808640,1389808895,US
-1389808896,1389814783,DE
-1389814784,1389815039,US
-1389815040,1389817603,DE
-1389817604,1389817604,NO
-1389817605,1389817855,DE
+1389808896,1389813759,GB
+1389813760,1389814271,US
+1389814272,1389814527,DE
+1389814528,1389815295,US
+1389815296,1389815551,DE
+1389815552,1389817599,US
+1389817600,1389817855,NO
1389817856,1389819007,GB
1389819008,1389819023,DE
1389819024,1389819039,FR
1389819040,1389819055,IT
1389819056,1389819071,TR
-1389819072,1389819903,GB
-1389819904,1389821951,DE
+1389819072,1389821951,GB
1389821952,1389838335,NL
1389838336,1389854719,UZ
1389854720,1389871103,IT
@@ -27135,8 +33329,12 @@
1401286656,1401290751,DE
1401290752,1401356287,BE
1401356288,1401421823,DE
-1401421824,1401423871,GB
-1401423872,1401425919,AE
+1401421824,1401423135,GB
+1401423136,1401423167,IN
+1401423168,1401423871,GB
+1401423872,1401425151,AE
+1401425152,1401425407,GR
+1401425408,1401425919,AE
1401425920,1401427967,NL
1401427968,1401430015,RU
1401430016,1401432063,AT
@@ -27161,8 +33359,9 @@
1401475072,1401477119,FR
1401479168,1401481215,PL
1401481216,1401485311,RU
-1401485312,1401487359,FI
-1401487360,1401487834,GB
+1401485312,1401487827,GB
+1401487828,1401487828,ES
+1401487829,1401487834,GB
1401487835,1401487835,BE
1401487836,1401489407,GB
1401489408,1401491455,SE
@@ -27194,9 +33393,11 @@
1401544704,1401546751,GB
1401546752,1401548799,IT
1401548800,1401550847,FR
-1401550848,1401551615,GB
-1401551616,1401552383,JE
-1401552384,1401552895,GB
+1401550848,1401551019,JE
+1401551020,1401551020,GB
+1401551021,1401552639,JE
+1401552640,1401552767,GB
+1401552768,1401552895,JE
1401552896,1401554943,NL
1401554944,1401556991,IE
1401556992,1401563135,GB
@@ -27272,14 +33473,12 @@
1401923584,1401925631,GG
1401925632,1401927679,BG
1401927680,1401929727,NL
-1401929728,1401931775,RU
-1401931776,1401933823,UA
+1401929728,1401933823,RU
1401933824,1401935871,DE
1401935872,1401937919,FI
1401937920,1401939967,GB
1401939968,1401942015,UA
-1401942016,1401942047,CZ
-1401942048,1401942063,GB
+1401942016,1401942063,CZ
1401942064,1401942071,HU
1401942072,1401943295,GB
1401943296,1401943551,DE
@@ -27289,9 +33488,7 @@
1401962496,1401978879,PL
1401978880,1401995263,PT
1401995264,1402011647,CH
-1402011648,1402015743,SE
-1402015744,1402017791,FI
-1402017792,1402018815,SE
+1402011648,1402018815,SE
1402018816,1402019839,FI
1402019840,1402027263,SE
1402027264,1402027519,NO
@@ -27305,12 +33502,18 @@
1402142720,1402159103,ES
1402159104,1402175487,IT
1402175488,1402191871,IE
-1402191872,1402208255,IR
+1402191872,1402193919,IR
+1402193920,1402196991,SC
+1402196992,1402200063,IR
+1402200064,1402202111,SC
+1402202112,1402208255,IR
1402208256,1402224639,CZ
1402224640,1402241023,BG
1402241024,1402257407,GB
1402257408,1402273791,FI
-1402273792,1402290175,RU
+1402273792,1402277631,RU
+1402277632,1402277887,TJ
+1402277888,1402290175,RU
1402290176,1402306204,NL
1402306205,1402306205,DE
1402306206,1402306559,NL
@@ -27323,9 +33526,74 @@
1402408960,1402413055,DE
1402413056,1402417151,PL
1402417152,1402421247,DE
-1402421248,1402433600,GB
+1402421248,1402421375,NL
+1402421376,1402421735,FR
+1402421736,1402421743,NL
+1402421744,1402422119,FR
+1402422120,1402422127,PT
+1402422128,1402422159,FR
+1402422160,1402422167,AT
+1402422168,1402422783,FR
+1402422784,1402423039,LU
+1402423040,1402423295,FR
+1402423296,1402423399,BE
+1402423400,1402423407,LU
+1402423408,1402423807,BE
+1402423808,1402423839,FR
+1402423840,1402423847,ES
+1402423848,1402423919,FR
+1402423920,1402423927,ES
+1402423928,1402424319,FR
+1402424320,1402424575,BE
+1402424576,1402424831,FR
+1402424832,1402425343,GB
+1402425344,1402425599,DE
+1402425600,1402425855,LU
+1402425856,1402425871,BE
+1402425872,1402425935,FR
+1402425936,1402425943,NL
+1402425944,1402425999,FR
+1402426000,1402426015,CH
+1402426016,1402426271,FR
+1402426272,1402426279,PT
+1402426280,1402426367,FR
+1402426368,1402426623,DE
+1402426624,1402427135,CH
+1402427136,1402427239,GB
+1402427240,1402427247,FR
+1402427248,1402427335,GB
+1402427336,1402427343,FR
+1402427344,1402427535,GB
+1402427536,1402427551,BE
+1402427552,1402427655,GB
+1402427656,1402427663,FR
+1402427664,1402427671,GB
+1402427672,1402427679,NL
+1402427680,1402427903,GB
+1402427904,1402427935,FR
+1402427936,1402427951,GB
+1402427952,1402427959,FR
+1402427960,1402428023,GB
+1402428024,1402428031,AT
+1402428032,1402428095,GB
+1402428096,1402428103,BE
+1402428104,1402428111,GB
+1402428112,1402428119,BE
+1402428120,1402428255,GB
+1402428256,1402428271,AT
+1402428272,1402428279,FR
+1402428280,1402428295,GB
+1402428296,1402428311,BE
+1402428312,1402428319,NL
+1402428320,1402428335,FR
+1402428336,1402428351,BE
+1402428352,1402429439,GB
+1402429440,1402431487,US
+1402431488,1402433600,GB
1402433601,1402433601,FR
-1402433602,1402437631,GB
+1402433602,1402435071,GB
+1402435072,1402435103,LU
+1402435104,1402437631,GB
1402437632,1402454015,DK
1402454016,1402455469,GB
1402455470,1402455470,DK
@@ -27367,7 +33635,9 @@
1403581952,1403582207,US
1403582208,1403584511,SE
1403584512,1403600895,DE
-1403600896,1403617279,FR
+1403600896,1403601519,FR
+1403601520,1403601535,MC
+1403601536,1403617279,FR
1403617280,1403633663,DE
1403633664,1403650047,RU
1403650048,1403666431,DE
@@ -27378,12 +33648,16 @@
1403748352,1403764735,DE
1403781120,1403797503,RU
1403797504,1403813887,SE
-1403813888,1403830271,NL
+1403813888,1403827199,NL
+1403827200,1403828223,BE
+1403828224,1403830271,NL
1403830272,1403846655,CH
1403846656,1403863039,IS
1403863040,1403879423,FR
1403879424,1403895807,ES
-1403895808,1403912191,CH
+1403895808,1403907817,CH
+1403907818,1403907818,DE
+1403907819,1403912191,CH
1403912192,1403928575,PT
1403928576,1403944959,SE
1403944960,1403953151,GR
@@ -27393,27 +33667,20 @@
1403994112,1404010495,AT
1404010496,1404026879,PL
1404026880,1404043263,ES
-1404043264,1404045311,EE
-1404045312,1404045823,SE
-1404045824,1404046335,EE
-1404046336,1404047359,SE
-1404047360,1404051455,EE
-1404051456,1404059647,SE
-1404059648,1404076031,HR
-1404076032,1404076543,SE
+1404043264,1404051455,EE
+1404051456,1404076031,HR
+1404076032,1404076543,LT
1404076544,1404077055,LV
-1404077056,1404081151,SE
+1404077056,1404081151,LT
1404081152,1404084223,LV
-1404084224,1404094463,SE
-1404094464,1404095487,LT
-1404095488,1404100607,SE
-1404100608,1404103167,LT
+1404084224,1404099327,LT
+1404099328,1404099583,SE
+1404099584,1404103167,LT
1404103168,1404103679,SE
1404103680,1404108799,LT
-1404108800,1404133375,SE
-1404133376,1404141567,HR
+1404108800,1404141567,HR
1404141568,1404149759,LV
-1404149760,1404151807,SE
+1404149760,1404151807,LT
1404151808,1404153855,LV
1404153856,1404153856,LT
1404153857,1404157090,LV
@@ -27425,171 +33692,150 @@
1404161500,1404166143,LV
1404166144,1404166144,LT
1404166145,1404174335,SE
-1404174336,1404182527,EE
-1404182528,1404196863,SE
-1404196864,1404197887,LT
-1404197888,1404222463,SE
+1404174336,1404182527,HR
+1404182528,1404187519,SE
+1404187520,1404187535,LV
+1404187536,1404187551,NL
+1404187552,1404189183,SE
+1404189184,1404189695,EE
+1404189696,1404196607,SE
+1404196608,1404196735,LT
+1404196736,1404200959,SE
+1404200960,1404207103,HR
+1404207104,1404222463,SE
1404222464,1404222975,LV
1404222976,1404227071,SE
-1404227072,1404230655,LV
-1404230656,1404232703,SE
+1404227072,1404227583,LV
+1404227584,1404232703,SE
1404232704,1404233215,LV
-1404233216,1404239871,SE
+1404233216,1404234239,SE
+1404234240,1404239871,HR
1404239872,1404242687,LT
1404242688,1404242751,SE
1404242752,1404272639,LT
-1404272640,1404273663,EE
-1404273664,1404274687,SE
-1404274688,1404277759,EE
-1404277760,1404278783,SE
-1404278784,1404305407,EE
-1404305408,1404308479,SE
-1404308480,1404308991,EE
-1404308992,1404309503,SE
-1404309504,1404313599,EE
-1404313600,1404319743,SE
-1404319744,1404320767,HR
-1404320768,1404323839,SE
-1404323840,1404326911,EE
-1404326912,1404327935,SE
-1404327936,1404330495,EE
-1404330496,1404330751,SE
-1404330752,1404334079,EE
-1404334080,1404336127,SE
-1404336128,1404338175,EE
-1404338176,1404370943,SE
-1404370944,1404376288,LT
+1404272640,1404297983,EE
+1404297984,1404298239,HR
+1404298240,1404313599,EE
+1404313600,1404329983,HR
+1404329984,1404332031,EE
+1404332032,1404338175,HR
+1404338176,1404340223,SE
+1404340224,1404342271,HR
+1404342272,1404362751,SE
+1404362752,1404376288,LT
1404376289,1404376289,SE
1404376290,1404379135,LT
1404379136,1404383231,AT
-1404383232,1404395519,SE
-1404395520,1404407807,LT
-1404407808,1404428287,SE
-1404428288,1404436479,HR
-1404436480,1404522495,SE
-1404522496,1404526591,LV
-1404526592,1404567551,SE
-1404567552,1404575743,HR
-1404575744,1404583935,SE
-1404583936,1404600319,HR
-1404600320,1404731391,SE
-1404731392,1404739583,HR
-1404739584,1404788735,SE
-1404788736,1404792831,LT
-1404792832,1404803071,SE
+1404383232,1404385279,HR
+1404385280,1404386047,LT
+1404386048,1404387327,SE
+1404387328,1404420095,LT
+1404420096,1404426502,HR
+1404426503,1404426503,SE
+1404426504,1404436479,HR
+1404436480,1404510207,SE
+1404510208,1404518399,HR
+1404518400,1404567551,SE
+1404567552,1404600319,HR
+1404600320,1404633087,SE
+1404633088,1404641279,HR
+1404641280,1404678143,SE
+1404678144,1404680191,HR
+1404680192,1404731391,SE
+1404731392,1404764159,HR
+1404764160,1404768255,NL
+1404768256,1404772351,SE
+1404772352,1404780543,NL
+1404780544,1404788735,SE
+1404788736,1404796927,LT
+1404796928,1404801023,EE
+1404801024,1404803071,SE
1404803072,1404805119,LV
1404805120,1404813311,AT
-1404813312,1404831743,SE
-1404831744,1404833791,LT
+1404813312,1404815359,SE
+1404815360,1404815871,EE
+1404815872,1404816383,LT
+1404816384,1404821503,SE
+1404821504,1404833791,LT
1404833792,1404837887,SE
1404837888,1404862463,LT
-1404862464,1404870655,SE
+1404862464,1404870655,HR
1404870656,1404872703,LT
1404872704,1404875775,SE
1404875776,1404876287,LT
-1404876288,1404893183,SE
-1404893184,1404894207,LT
-1404894208,1404944383,SE
+1404876288,1404887039,SE
+1404887040,1404911615,LT
+1404911616,1404921855,NL
+1404921856,1404923903,LT
+1404923904,1404944383,SE
1404944384,1404960767,LT
-1404960768,1404985343,SE
-1404985344,1404993535,LT
-1404993536,1405020159,SE
-1405020160,1405022207,LT
-1405022208,1405034495,SE
-1405034496,1405042687,LT
-1405042688,1405050879,SE
+1404960768,1404977151,SE
+1404977152,1404993535,LT
+1404993536,1405009919,SE
+1405009920,1405026303,LT
+1405026304,1405050879,HR
1405050880,1405059071,AT
-1405059072,1405069311,SE
-1405069312,1405070335,EE
-1405070336,1405071359,SE
-1405071360,1405091839,EE
-1405091840,1405812991,FR
-1405812992,1405813247,MQ
-1405813248,1405814015,FR
-1405814016,1405814783,MQ
-1405814784,1405815039,FR
-1405815040,1405815807,MQ
-1405815808,1405816063,FR
-1405816064,1405816575,MQ
-1405816576,1405816831,FR
-1405816832,1405817855,MQ
-1405817856,1405818111,FR
-1405818112,1405818879,MQ
-1405818880,1405822719,FR
-1405822720,1405824255,MQ
-1405824256,1405824767,FR
-1405824768,1405825023,MQ
-1405825024,1405825279,FR
-1405825280,1405826815,MQ
-1405826816,1405830655,FR
-1405830656,1405831167,MQ
-1405831168,1405832447,FR
+1405059072,1405067263,SE
+1405067264,1405091839,EE
+1405091840,1405812735,FR
+1405812736,1405813247,MQ
+1405813248,1405813759,FR
+1405813760,1405818623,MQ
+1405818624,1405818879,FR
+1405818880,1405821183,MQ
+1405821184,1405821439,FR
+1405821440,1405821695,MQ
+1405821696,1405822463,FR
+1405822464,1405823487,MQ
+1405823488,1405823743,FR
+1405823744,1405824255,MQ
+1405824256,1405824511,FR
+1405824512,1405827071,MQ
+1405827072,1405827327,FR
+1405827328,1405827583,MQ
+1405827584,1405829887,FR
+1405829888,1405830143,MQ
+1405830144,1405830399,FR
+1405830400,1405831423,MQ
+1405831424,1405831935,FR
+1405831936,1405832191,MQ
+1405832192,1405832447,FR
1405832448,1405832703,MQ
1405832704,1405832959,FR
-1405832960,1405833727,MQ
-1405833728,1405833983,FR
-1405833984,1405834239,MQ
-1405834240,1405834751,FR
-1405834752,1405835263,MQ
-1405835264,1405835775,FR
-1405835776,1405836287,MQ
-1405836288,1405836799,FR
-1405836800,1405837567,MQ
-1405837568,1405837823,FR
-1405837824,1405838079,MQ
-1405838080,1405838591,FR
-1405838592,1405838847,MQ
-1405838848,1405839359,FR
-1405839360,1405839615,MQ
-1405839616,1405839871,FR
-1405839872,1405840127,MQ
-1405840128,1405840383,FR
-1405840384,1405841919,MQ
-1405841920,1405842175,FR
-1405842176,1405843711,MQ
-1405843712,1405843967,FR
-1405843968,1405845503,MQ
-1405845504,1405845759,FR
-1405845760,1405846271,MQ
-1405846272,1405846527,FR
-1405846528,1405846783,MQ
-1405846784,1405847295,FR
-1405847296,1405848063,MQ
-1405848064,1405848319,FR
-1405848320,1405849087,MQ
-1405849088,1405849599,FR
-1405849600,1405850111,MQ
-1405850112,1405850623,FR
-1405850624,1405851135,MQ
-1405851136,1405851647,FR
-1405851648,1405851903,MQ
-1405851904,1405855999,FR
-1405856000,1405856255,MQ
-1405856256,1405856767,FR
-1405856768,1405857279,MQ
-1405857280,1405857535,FR
-1405857536,1405857791,MQ
-1405857792,1405858815,FR
-1405858816,1405859839,MQ
-1405859840,1405861119,FR
-1405861120,1405861631,MQ
-1405861632,1405863167,FR
+1405832960,1405833215,MQ
+1405833216,1405833471,FR
+1405833472,1405836031,MQ
+1405836032,1405836287,FR
+1405836288,1405836543,MQ
+1405836544,1405836799,FR
+1405836800,1405842943,MQ
+1405842944,1405843199,FR
+1405843200,1405853183,MQ
+1405853184,1405855231,FR
+1405855232,1405859839,MQ
+1405859840,1405860095,FR
+1405860096,1405860351,MQ
+1405860352,1405861375,FR
+1405861376,1405861631,MQ
+1405861632,1405862143,FR
+1405862144,1405862399,MQ
+1405862400,1405862655,FR
+1405862656,1405862911,MQ
+1405862912,1405863167,FR
1405863168,1405863935,MQ
-1405863936,1405865727,FR
-1405865728,1405869567,MQ
-1405869568,1405869823,FR
-1405869824,1405870079,MQ
-1405870080,1405870591,FR
-1405870592,1405870847,MQ
-1405870848,1405871615,FR
-1405871616,1405872383,MQ
-1405872384,1405873151,FR
-1405873152,1405873663,MQ
-1405873664,1405874175,FR
-1405874176,1405876223,MQ
-1405876224,1405876735,FR
-1405876736,1405878015,MQ
-1405878016,1406140415,FR
+1405863936,1405865215,FR
+1405865216,1405865471,MQ
+1405865472,1405865983,FR
+1405865984,1405869311,MQ
+1405869312,1405869567,FR
+1405869568,1405870847,MQ
+1405870848,1405871359,FR
+1405871360,1405876991,MQ
+1405876992,1405877247,FR
+1405877248,1405878271,MQ
+1405878272,1406066687,FR
+1406066688,1406066943,GP
+1406066944,1406140415,FR
1406140416,1406205951,CZ
1406205952,1406210175,SE
1406210176,1406210559,NO
@@ -27611,22 +33857,20 @@
1406730240,1406746623,RU
1406746624,1406754815,BE
1406754816,1406763007,GB
-1406763008,1406766591,LU
-1406766592,1406766847,BE
-1406766848,1406767103,LU
-1406767104,1406767487,BE
-1406767488,1406767615,LU
-1406767616,1406768127,BE
-1406768128,1406771199,LU
+1406763008,1406771199,LU
1406771200,1406779391,GB
1406779392,1406787583,RU
1406787584,1406791159,ES
-1406791160,1406791167,GB
-1406791168,1406793087,ES
+1406791160,1406791295,GB
+1406791296,1406793087,ES
1406793088,1406793088,FR
-1406793089,1406795775,ES
+1406793089,1406793843,ES
+1406793844,1406793847,GB
+1406793848,1406794751,ES
+1406794752,1406795775,NL
1406795776,1406797823,IM
-1406797824,1406803967,GB
+1406797824,1406802943,GB
+1406802944,1406803967,IM
1406803968,1406812159,DE
1406812160,1406820351,SE
1406820352,1406828543,PL
@@ -27655,11 +33899,14 @@
1407000576,1407016959,DE
1407016960,1407025151,IT
1407025152,1407033343,DK
-1407033344,1407049727,RU
+1407033344,1407041535,UZ
+1407041536,1407049727,RU
1407049728,1407057919,DE
1407057920,1407066111,RU
1407066112,1407074303,LU
-1407074304,1407090687,RU
+1407074304,1407089663,RU
+1407089664,1407090559,US
+1407090560,1407090687,RU
1407090688,1407098879,CH
1407098880,1407107071,BG
1407107072,1407115263,RU
@@ -27676,13 +33923,69 @@
1407320064,1407451135,SE
1407451136,1407483903,BG
1407483904,1407516671,CH
-1407516672,1407522375,GB
+1407516672,1407516919,GB
+1407516920,1407516927,NG
+1407516928,1407518831,GB
+1407518832,1407518847,NG
+1407518848,1407520535,GB
+1407520536,1407520543,NG
+1407520544,1407520575,GB
+1407520576,1407520583,NG
+1407520584,1407520623,GB
+1407520624,1407520631,NG
+1407520632,1407521127,GB
+1407521128,1407521135,CD
+1407521136,1407521359,GB
+1407521360,1407521367,CD
+1407521368,1407522375,GB
1407522376,1407522383,CD
1407522384,1407522471,GB
1407522472,1407522479,CD
-1407522480,1407531263,GB
-1407531264,1407531519,AU
-1407531520,1407549439,GB
+1407522480,1407523263,GB
+1407523264,1407523271,CD
+1407523272,1407523959,GB
+1407523960,1407523967,CD
+1407523968,1407524207,GB
+1407524208,1407524215,CD
+1407524216,1407525127,GB
+1407525128,1407525135,CD
+1407525136,1407525599,GB
+1407525600,1407525607,CD
+1407525608,1407526231,GB
+1407526232,1407526239,CD
+1407526240,1407527447,GB
+1407527448,1407527455,CD
+1407527456,1407531215,GB
+1407531216,1407531223,CD
+1407531224,1407533143,GB
+1407533144,1407533151,CD
+1407533152,1407537087,GB
+1407537088,1407537095,GH
+1407537096,1407538327,GB
+1407538328,1407538335,CD
+1407538336,1407538343,GB
+1407538344,1407538351,CD
+1407538352,1407539967,GB
+1407539968,1407539975,CD
+1407539976,1407540159,GB
+1407540160,1407540167,CD
+1407540168,1407540207,GB
+1407540208,1407540215,CD
+1407540216,1407542687,GB
+1407542688,1407542695,CD
+1407542696,1407543935,GB
+1407543936,1407543943,NG
+1407543944,1407544015,GB
+1407544016,1407544023,NG
+1407544024,1407544791,GB
+1407544792,1407544799,NG
+1407544800,1407545311,GB
+1407545312,1407545319,CD
+1407545320,1407545327,GB
+1407545328,1407545343,CD
+1407545344,1407545863,GB
+1407545864,1407545871,CD
+1407545872,1407549439,GB
1407549440,1407582207,RU
1407582208,1407614975,PL
1407614976,1407680511,ES
@@ -27696,11 +33999,20 @@
1407686136,1407686139,GB
1407686140,1407686143,ES
1407686144,1407686147,SE
-1407686148,1407695763,GB
+1407686148,1407695679,GB
+1407695680,1407695683,IT
+1407695684,1407695763,GB
1407695764,1407695767,DK
1407695768,1407695771,GB
1407695772,1407695775,DK
-1407695776,1407713279,GB
+1407695776,1407695807,GB
+1407695808,1407695811,SE
+1407695812,1407702271,GB
+1407702272,1407702527,DE
+1407702528,1407707679,GB
+1407707704,1407711239,GB
+1407711240,1407711247,FR
+1407711248,1407713279,GB
1407713280,1407778815,NL
1407778816,1407844351,SE
1407844352,1407909887,RU
@@ -27733,12 +34045,16 @@
1408462848,1408464895,DE
1408466944,1408499711,NO
1408499712,1408532479,PS
-1408532480,1408579583,GB
+1408532480,1408532607,ZA
+1408532608,1408567919,GB
+1408567920,1408567927,IE
+1408567928,1408579583,GB
1408579584,1408579839,IE
1408579840,1408597503,GB
1408597504,1408598015,IE
1408598016,1408630783,FI
-1408630784,1408663551,DE
+1408630784,1408634879,RO
+1408634880,1408663551,DE
1408663552,1408696319,RU
1408696320,1408729087,NL
1408729088,1408761855,ES
@@ -27759,26 +34075,55 @@
1409548288,1409810431,FR
1409810432,1409941503,GB
1409941504,1410007039,PL
-1410007040,1410009855,DE
-1410009856,1410010111,US
-1410010112,1410072575,DE
+1410007040,1410009858,DE
+1410009859,1410009859,US
+1410009860,1410072575,DE
1410072576,1410203647,GB
-1410203648,1410221033,FR
+1410203648,1410212863,FR
+1410212864,1410213119,GB
+1410213120,1410220959,FR
+1410220960,1410220967,AT
+1410220968,1410221033,FR
1410221034,1410221034,AT
1410221035,1410221047,FR
1410221048,1410221055,AT
-1410221056,1410269183,FR
+1410221056,1410223103,FR
+1410223104,1410223359,IT
+1410223360,1410223367,FR
+1410223368,1410223375,ES
+1410223376,1410223391,FR
+1410223392,1410223423,ES
+1410223424,1410223591,FR
+1410223592,1410223599,ES
+1410223600,1410225151,FR
+1410225152,1410226175,DE
+1410226176,1410231551,FR
+1410231552,1410232319,US
+1410232320,1410262055,FR
+1410262056,1410262063,ES
+1410262064,1410269183,FR
1410269184,1410303999,LT
1410304000,1410306047,LV
-1410306048,1410334719,LT
-1410334720,1410342911,ES
+1410306048,1410318335,LT
+1410318336,1410319359,LV
+1410319360,1410322431,LT
+1410322432,1410326527,LV
+1410326528,1410334719,LT
+1410334720,1410338319,ES
+1410338320,1410338327,GB
+1410338328,1410342399,ES
+1410342400,1410342655,DE
+1410342656,1410342911,ES
1410342912,1410351103,SK
1410351104,1410356863,CH
1410356864,1410356879,DE
1410356880,1410359295,CH
1410359296,1410367487,CZ
1410367488,1410375679,RU
-1410375680,1410383871,DK
+1410375680,1410377727,IT
+1410377728,1410378015,DK
+1410378016,1410378031,NO
+1410378032,1410383871,DK
1410383872,1410392063,NO
1410392064,1410400255,DE
1410400256,1410408447,RU
@@ -27797,12 +34142,17 @@
1410514944,1410523135,GB
1410523136,1410531327,PT
1410531328,1410539519,DE
-1410539520,1410547711,GB
+1410539520,1410540543,GB
+1410540544,1410540545,US
+1410540546,1410540546,GB
+1410540547,1410540799,US
+1410540800,1410547711,GB
1410547712,1410555903,CZ
1410555904,1410564095,GB
1410564096,1410567313,SE
1410567314,1410567314,CH
-1410567315,1410567320,SE
+1410567315,1410567315,BE
+1410567316,1410567320,SE
1410567321,1410567321,NO
1410567322,1410567322,FI
1410567323,1410567323,EE
@@ -27811,9 +34161,13 @@
1410568358,1410568358,NO
1410568359,1410568501,SE
1410568502,1410568502,DK
-1410568503,1410568991,SE
+1410568503,1410568586,SE
+1410568587,1410568587,NO
+1410568588,1410568991,SE
1410568992,1410569007,NO
-1410569008,1410572287,SE
+1410569008,1410569484,SE
+1410569485,1410569485,NO
+1410569486,1410572287,SE
1410572288,1410588671,DE
1410588672,1410596863,GB
1410596864,1410605055,ES
@@ -27825,7 +34179,9 @@
1410646016,1410654207,GB
1410654208,1410662399,SI
1410662400,1410670591,HU
-1410670592,1410675967,DE
+1410670592,1410672639,DE
+1410672640,1410674687,US
+1410674688,1410675967,DE
1410675968,1410676223,US
1410676224,1410678783,DE
1410678784,1410686975,RU
@@ -27834,11 +34190,16 @@
1410711552,1410719743,BG
1410719744,1410727935,RU
1410727936,1410736127,BG
-1410736128,1410739455,RS
+1410736128,1410738175,XK
+1410738176,1410739455,RS
1410739456,1410739711,XK
-1410739712,1410744319,RS
-1410744320,1410752511,FR
-1410752512,1410760703,DE
+1410739712,1410744055,RS
+1410744056,1410744056,XK
+1410744057,1410744319,RS
+1410744320,1410747391,FR
+1410747392,1410747647,GP
+1410747648,1410752511,FR
+1410752512,1410760703,NL
1410760704,1410768895,RU
1410768896,1410777087,GB
1410777088,1410785279,RU
@@ -27863,7 +34224,7 @@
1411645440,1411710975,EG
1411710976,1411776511,FR
1411776512,1411777535,RU
-1411777536,1411778559,EE
+1411777536,1411778559,HK
1411778560,1411780607,NO
1411780608,1411784703,PL
1411784704,1411788799,GB
@@ -27873,7 +34234,9 @@
1411805184,1411809279,AT
1411809280,1411809535,LV
1411809536,1411809791,NL
-1411809792,1411813375,LV
+1411809792,1411810047,LV
+1411810048,1411811327,NL
+1411811328,1411813375,LV
1411813376,1411817471,NO
1411817472,1411821567,PL
1411821568,1411825663,RU
@@ -27895,7 +34258,7 @@
1411874816,1411876863,RU
1411878912,1411880959,CH
1411880960,1411881215,DE
-1411881216,1411881471,GB
+1411881216,1411883007,GB
1411883008,1411887103,PL
1411887104,1411889151,IR
1411889152,1411891199,IT
@@ -27906,14 +34269,18 @@
1411907584,1411911679,GB
1411911680,1411915775,US
1411915776,1411919871,GB
-1411921920,1411923967,GB
+1411921920,1411922175,GB
+1411922176,1411922431,DE
+1411922432,1411923967,GB
1411923968,1411940351,BG
1411940352,1411961611,PL
1411961612,1411961612,IE
1411961613,1411973119,PL
-1411973120,1412001023,SI
-1412001024,1412001279,BA
-1412001280,1412005887,SI
+1411973120,1411999743,SI
+1411999744,1412001791,BA
+1412001792,1412002815,SI
+1412002816,1412003839,BA
+1412003840,1412005887,SI
1412005888,1412038655,NL
1412038656,1412071423,RU
1412071424,1412104191,CZ
@@ -27955,7 +34322,8 @@
1412743168,1412775935,NO
1412775936,1412792319,NL
1412792320,1412793343,US
-1412793856,1412795903,US
+1412793856,1412795135,US
+1412795392,1412795903,US
1412796928,1412800511,US
1412801536,1412804607,US
1412804864,1412805631,US
@@ -27985,33 +34353,12 @@
1415577600,1416101887,FR
1416101888,1416364031,NL
1416364032,1416626175,IL
-1416626176,1416953855,AT
-1416953856,1416957951,RO
-1416957952,1416958719,AT
-1416958720,1416958975,RO
-1416958976,1416959999,AT
-1416960000,1416964095,RO
-1416964096,1416970239,AT
-1416970240,1416972415,RO
-1416972416,1416972799,AT
-1416972800,1416973055,RO
-1416973056,1416976383,AT
-1416976384,1416977407,RO
-1416977408,1416978431,AT
-1416978432,1416980735,RO
-1416980736,1416982527,AT
-1416982528,1416984575,RO
-1416984576,1416987135,AT
-1416987136,1416987647,RO
-1416987648,1416988671,AT
-1416988672,1416994815,RO
-1416994816,1417000959,AT
-1417000960,1417007103,RO
-1417007104,1417007615,AT
-1417007616,1417009151,RO
-1417009152,1417013247,AT
-1417013248,1417013759,RO
-1417013760,1417019391,AT
+1416626176,1416891391,AT
+1416891392,1416894463,NL
+1416894464,1416904703,AT
+1416941568,1416943615,CH
+1416944640,1416945663,CZ
+1416953856,1417019391,RO
1417019392,1417150463,DE
1417150464,1417674751,ES
1417674752,1421869055,DE
@@ -28038,22 +34385,14 @@
1422761984,1422770175,PL
1422770176,1422786559,GR
1422786560,1422852095,HU
-1422852096,1422903295,DE
+1422857088,1422857151,FR
1422903296,1422905343,GB
-1422905344,1422907903,DE
-1422907904,1422908415,NL
-1422908416,1422909439,DE
-1422909440,1422911487,NL
-1422911488,1422911999,GB
-1422912000,1422912511,DE
-1422912512,1422913535,GB
-1422913536,1422914047,DE
-1422914048,1422915583,GB
-1422915584,1422916607,DE
-1422916608,1422916863,GB
-1422916864,1422917343,DE
+1422905344,1422907391,IE
+1422907392,1422911487,NL
+1422911488,1422915583,GB
+1422916608,1422917343,GB
1422917344,1422917375,NL
-1422917376,1422917631,DE
+1422917376,1422917631,GB
1422917632,1423441919,NO
1423441920,1423704063,SE
1423704064,1423966207,IT
@@ -28066,27 +34405,51 @@
1424503716,1424523263,ES
1424523264,1424556031,RO
1424556032,1424588799,EG
-1424588800,1424595726,GB
+1424588800,1424589311,GB
+1424589312,1424589567,FR
+1424589568,1424590847,GB
+1424590848,1424591661,FR
+1424591662,1424591662,GB
+1424591663,1424591871,FR
+1424591872,1424592383,GB
+1424592384,1424592895,FR
+1424592896,1424593119,GB
+1424593120,1424593127,FR
+1424593128,1424595726,GB
1424595727,1424595727,IT
-1424595728,1424597069,GB
+1424595728,1424595743,GB
+1424595744,1424595751,IT
+1424595752,1424597069,GB
1424597070,1424597070,CZ
-1424597071,1424600705,GB
-1424600706,1424600706,FR
-1424600707,1424601471,GB
+1424597071,1424599039,GB
+1424599040,1424601087,FR
+1424601088,1424601471,GB
1424601472,1424601535,ES
1424601536,1424601887,GB
1424601888,1424601903,NL
1424601904,1424603023,GB
1424603024,1424603039,US
-1424603040,1424604975,GB
+1424603040,1424604159,GB
+1424604160,1424604671,DK
+1424604672,1424604975,GB
1424604976,1424604991,NL
-1424604992,1424608083,GB
+1424604992,1424607743,GB
+1424607744,1424607775,DE
+1424607776,1424608083,GB
1424608084,1424608087,FR
-1424608088,1424608579,GB
+1424608088,1424608127,GB
+1424608128,1424608191,FR
+1424608192,1424608511,GB
+1424608512,1424608527,ES
+1424608528,1424608579,GB
1424608580,1424608580,ES
-1424608581,1424608743,GB
+1424608581,1424608671,GB
+1424608672,1424608687,ES
+1424608688,1424608743,GB
1424608744,1424608751,ES
-1424608752,1424610643,GB
+1424608752,1424609543,GB
+1424609544,1424609551,CH
+1424609552,1424610643,GB
1424610644,1424610644,PL
1424610645,1424610992,GB
1424610993,1424610993,FR
@@ -28094,25 +34457,36 @@
1424611003,1424611003,FR
1424611004,1424611005,GB
1424611006,1424611006,FR
-1424611007,1424613855,GB
+1424611007,1424611295,GB
+1424611296,1424611311,BE
+1424611312,1424613855,GB
1424613856,1424613859,IT
-1424613860,1424618464,GB
+1424613860,1424616319,GB
+1424616320,1424616351,IT
+1424616352,1424618464,GB
1424618465,1424618465,NL
1424618466,1424618479,GB
1424618480,1424618495,NL
-1424618496,1424621567,GB
+1424618496,1424619327,GB
+1424619328,1424619351,IT
+1424619352,1424619855,GB
+1424619856,1424619863,BE
+1424619864,1424621567,GB
1424621568,1424625663,PL
1424625664,1424629759,US
1424629760,1424633855,PL
1424633856,1424637951,MD
1424637952,1424642047,FI
1424642048,1424646143,DK
-1424646144,1424647167,UA
+1424646144,1424647167,RO
1424647168,1424648191,IT
-1424648192,1424650239,UA
+1424648192,1424649215,MD
+1424649216,1424650239,UA
1424650240,1424654335,PL
1424654336,1424687103,NO
-1424687104,1424719871,SA
+1424687104,1424711679,SA
+1424711680,1424713727,BH
+1424713728,1424719871,SA
1424719872,1424752639,DE
1424752640,1424785407,HU
1424785408,1424818175,ES
@@ -28127,8 +34501,18 @@
1424925696,1424928767,BG
1424928768,1424929279,AT
1424929280,1424949247,BG
-1424949248,1424965631,RO
-1424965632,1424982015,FR
+1424949248,1424959999,RO
+1424960000,1424960511,GB
+1424960512,1424960767,RO
+1424960768,1424961023,NL
+1424961024,1424962559,RO
+1424962560,1424962815,GB
+1424962816,1424963071,RO
+1424963072,1424963327,GB
+1424963328,1424965631,RO
+1424965632,1424973823,FR
+1424973824,1424974847,CH
+1424974848,1424982015,FR
1424982016,1425014783,FI
1425014784,1425015295,LT
1425015296,1425015551,RU
@@ -28162,7 +34546,8 @@
1425430528,1425432575,SE
1425432576,1425434623,HR
1425434624,1425436671,FR
-1425436672,1425438719,GB
+1425436672,1425438463,GB
+1425438464,1425438719,IN
1425438720,1425440767,DE
1425440768,1425442815,SE
1425442816,1425444863,GB
@@ -28178,7 +34563,7 @@
1425469440,1425471487,DK
1425471488,1425473535,DE
1425473536,1425474559,RO
-1425474560,1425475583,GB
+1425474560,1425475583,US
1425475584,1425478143,RO
1425478144,1425478655,ES
1425478656,1425478911,GB
@@ -28188,9 +34573,9 @@
1425480192,1425480447,FR
1425480448,1425480703,IE
1425480704,1425481727,RO
-1425481728,1425482751,GB
+1425481728,1425482751,US
1425482752,1425483775,RO
-1425483776,1425484799,GB
+1425483776,1425484799,US
1425484800,1425485311,MD
1425485312,1425485823,BG
1425485824,1425486847,RO
@@ -28217,15 +34602,12 @@
1425948672,1425952767,DE
1425952768,1425960959,CH
1425960960,1425965055,DE
-1425965056,1425967871,IT
1425967872,1425968127,GB
-1425968128,1425973247,IT
1425973248,1425975807,GB
1425975808,1425976063,FR
1425976064,1425977343,GB
1425977344,1425980415,FR
1425980416,1425980671,IQ
-1425980672,1425981439,IT
1425981440,1425997823,RU
1425997824,1426014207,MT
1426014208,1426030591,DK
@@ -28244,11 +34626,13 @@
1426718720,1426731007,SI
1426731008,1426735103,HR
1426735104,1426743295,BE
-1426743296,1426750207,LU
-1426750208,1426750463,BE
-1426750464,1426751487,LU
+1426743296,1426751487,LU
1426751488,1426767871,FR
-1426767872,1426784255,DE
+1426767872,1426781583,DE
+1426781584,1426781591,CH
+1426781592,1426781627,DE
+1426781628,1426781631,CH
+1426781632,1426784255,DE
1426784256,1426800639,SE
1426800640,1426817023,PL
1426817024,1426833407,BG
@@ -28264,7 +34648,9 @@
1426980864,1426997247,BG
1426997248,1427013631,PL
1427013632,1427030015,FR
-1427030016,1427046399,DE
+1427030016,1427033247,DE
+1427033248,1427033263,TW
+1427033264,1427046399,DE
1427046400,1427062783,IR
1427062784,1427095551,RU
1427095552,1427111935,LV
@@ -28280,7 +34666,9 @@
1427668992,1427701759,SE
1427701760,1427740810,DE
1427740811,1427740811,FR
-1427740812,1427767295,DE
+1427740812,1427741372,DE
+1427741373,1427741373,AT
+1427741374,1427767295,DE
1427767296,1427800063,BE
1427800064,1427832831,RU
1427832832,1427865599,BE
@@ -28316,7 +34704,9 @@
1428160512,1428260863,IT
1428260864,1428261119,GB
1428261120,1429209087,IT
-1429209088,1430257663,ES
+1429209088,1429986993,ES
+1429986994,1429986994,NL
+1429986995,1430257663,ES
1430257664,1430388735,IL
1430388736,1430519807,HU
1430519808,1430650879,FR
@@ -28343,7 +34733,9 @@
1431953408,1431961599,DK
1431961600,1431969791,CH
1431969792,1431977983,GB
-1431977984,1431986175,NL
+1431977984,1431980719,NL
+1431980720,1431980727,SA
+1431980728,1431986175,NL
1431986176,1431994367,RU
1431994368,1432002559,AT
1432002560,1432010751,HU
@@ -28358,17 +34750,12 @@
1432043520,1432051711,ES
1432051712,1432054015,RU
1432054016,1432054271,RO
-1432054272,1432054527,RU
-1432054528,1432055807,RO
-1432055808,1432056831,RU
+1432054272,1432056831,RU
1432056832,1432057343,RO
-1432057344,1432058623,RU
-1432058624,1432058879,RO
-1432058880,1432059903,RU
+1432057344,1432059903,RU
1432059904,1432068095,BG
1432068096,1432076287,BE
-1432076288,1432080383,RU
-1432080384,1432084479,UA
+1432076288,1432084479,RU
1432084480,1432092671,GB
1432092672,1432100863,RU
1432100864,1432109055,CZ
@@ -28409,10 +34796,28 @@
1432313856,1432322047,GB
1432322048,1432338431,RU
1432338432,1432346623,FR
-1432346624,1433353473,TR
+1432346624,1432351999,TR
+1432352000,1432352767,NL
+1432352768,1432354047,TR
+1432354048,1432354815,NL
+1432354816,1433353473,TR
1433353474,1433353474,GE
1433353475,1433403391,TR
-1433403392,1433411583,ES
+1433403392,1433408831,ES
+1433408832,1433408895,NL
+1433408896,1433409023,ES
+1433409024,1433410047,NL
+1433410048,1433411071,ES
+1433411072,1433411327,TR
+1433411328,1433411343,ES
+1433411344,1433411375,TR
+1433411376,1433411407,US
+1433411408,1433411423,TR
+1433411424,1433411439,ES
+1433411440,1433411455,TR
+1433411456,1433411551,ES
+1433411552,1433411567,TR
+1433411568,1433411583,ES
1433411584,1433419775,RU
1433419776,1433427967,LB
1433427968,1433436159,RU
@@ -28441,17 +34846,18 @@
1433608448,1433608703,NL
1433608704,1433608959,GB
1433608960,1433609215,PL
-1433609216,1433609471,GB
-1433609472,1433609727,NO
-1433609728,1433611263,GB
+1433609216,1433609727,NO
+1433609728,1433610239,IT
+1433610240,1433611263,GB
1433611264,1433611775,ES
-1433611776,1433614847,GB
-1433614848,1433615027,HU
-1433615028,1433615028,DE
-1433615029,1433615103,HU
+1433611776,1433614335,GB
+1433614336,1433614591,DE
+1433614592,1433614847,GB
+1433614848,1433615103,DE
1433615104,1433615359,GB
1433615360,1433615871,FR
-1433615872,1433616383,GB
+1433615872,1433616127,CH
+1433616128,1433616383,FR
1433616384,1433624575,AE
1433624576,1433632767,LV
1433632768,1433637375,GI
@@ -28499,11 +34905,7 @@
1433860096,1433862143,DE
1433862144,1433864191,CH
1433864192,1433866239,HU
-1433866240,1433867519,GB
-1433867520,1433867521,NL
-1433867522,1433867522,GB
-1433867523,1433867775,NL
-1433867776,1433870335,GB
+1433866240,1433870335,GB
1433870336,1433872383,TR
1433872384,1433874431,IT
1433874432,1433876479,NL
@@ -28524,14 +34926,15 @@
1433907200,1433909247,IT
1433909248,1433911295,BE
1433911296,1433913343,ES
-1433913344,1433915391,NL
-1433915392,1433917439,DE
+1433913344,1433917439,DE
1433917440,1433919487,BE
1433919488,1433921535,GB
1433921536,1433923583,CH
1433923584,1433925631,BE
1433925632,1433927679,GB
-1433927680,1434189823,RO
+1433927680,1433971711,RO
+1433971712,1433972223,LU
+1433972224,1434189823,RO
1434189824,1434451967,AT
1434451968,1434517503,PL
1434517504,1434550271,DK
@@ -28580,7 +34983,9 @@
1436456960,1436459007,GB
1436459008,1436461055,NL
1436461056,1436463103,ES
-1436463104,1436465151,DE
+1436463104,1436464383,DE
+1436464384,1436464639,AT
+1436464640,1436465151,DE
1436465152,1436467199,RU
1436467200,1436469247,DE
1436469248,1436471295,NL
@@ -28627,16 +35032,20 @@
1438125312,1438125567,NL
1438125568,1438125823,FR
1438125824,1438126079,IE
-1438126080,1438130175,NL
+1438126080,1438130175,CZ
1438130176,1438138367,PS
1438138368,1438146559,FR
1438146560,1438147583,MT
1438147584,1438147839,SE
1438147840,1438148095,BE
1438148096,1438148351,GB
-1438148352,1438154751,MT
+1438148352,1438148607,MT
+1438148608,1438148863,DE
+1438148864,1438149119,IT
+1438149120,1438154751,MT
1438154752,1438171135,DK
-1438171136,1438179327,GB
+1438171136,1438173183,GB
+1438173184,1438179327,IM
1438179328,1438180351,ES
1438180352,1438181375,NL
1438181376,1438183423,SA
@@ -28646,14 +35055,18 @@
1438186496,1438187519,CH
1438187520,1438253055,IR
1438253056,1438318591,RO
-1438318592,1438351359,BG
+1438318592,1438332927,BG
+1438332928,1438333951,ES
+1438333952,1438351359,BG
1438351360,1438359551,US
1438359552,1438384127,BG
1438384128,1438400511,FI
1438400512,1438433279,SE
1438433280,1438515199,GB
1438515200,1438531583,DE
-1438531584,1438539775,FR
+1438531584,1438535679,FR
+1438535680,1438537727,GB
+1438537728,1438539775,DE
1438539776,1438547967,NL
1438547968,1438553343,DE
1438553344,1438553599,GB
@@ -28662,7 +35075,9 @@
1438554112,1438554623,US
1438554624,1438555135,DE
1438555136,1438556159,US
-1438556160,1438572543,DE
+1438556160,1438560255,DE
+1438560256,1438562303,US
+1438562304,1438572543,DE
1438572544,1438572671,RU
1438572672,1438572799,TR
1438572800,1438572863,BE
@@ -28679,13 +35094,12 @@
1438573568,1438573823,US
1438573824,1438574079,DE
1438574080,1438574335,GB
-1438574336,1438574591,DE
+1438574336,1438574591,US
1438574592,1438578687,PL
1438578688,1438579967,DE
1438579968,1438580095,NZ
1438580096,1438580223,AU
-1438580224,1438580479,US
-1438580480,1438580735,DE
+1438580224,1438580735,DE
1438580736,1438646271,DK
1438646272,1438662655,RU
1438662656,1438679039,ES
@@ -28712,19 +35126,22 @@
1438842368,1438842879,DK
1438842880,1438859263,SE
1438859264,1438875647,DE
-1438875648,1438876927,RU
+1438875648,1438876927,LT
1438876928,1438877183,IQ
-1438877184,1438877951,RU
+1438877184,1438877951,LT
1438877952,1438878207,LB
-1438878208,1438892031,RU
+1438878208,1438891007,LT
+1438891008,1438892031,RU
1438892032,1438908415,CH
-1438908416,1438912511,GR
-1438912512,1438916607,BG
-1438916608,1438924799,GR
+1438908416,1438924799,GR
1438924800,1438941183,NO
1438941184,1438957567,BG
1438957568,1438973951,EE
-1438973952,1439006719,DE
+1438973952,1439000575,DE
+1439000576,1439000831,NL
+1439000832,1439002367,DE
+1439002368,1439002623,NL
+1439002624,1439006719,DE
1439006720,1439023103,SE
1439023104,1439039487,IS
1439039488,1439055871,IR
@@ -28748,10 +35165,9 @@
1439354880,1439358975,PL
1439358976,1439367167,RU
1439367168,1439369215,NL
-1439369216,1439369216,AE
-1439369217,1439369471,NL
-1439369472,1439369472,ES
-1439369473,1439370495,NL
+1439369216,1439369471,AE
+1439369472,1439369727,ES
+1439369728,1439370495,NL
1439370496,1439370751,FR
1439370752,1439371007,NL
1439371008,1439371263,DE
@@ -28786,7 +35202,11 @@
1439375616,1439375871,KW
1439375872,1439376127,OM
1439376128,1439376383,SA
-1439376384,1439376639,US
+1439376384,1439376407,IT
+1439376408,1439376408,US
+1439376409,1439376421,IT
+1439376422,1439376422,US
+1439376423,1439376639,IT
1439376640,1439376895,NL
1439376896,1439377407,CN
1439377408,1439378431,IT
@@ -28811,12 +35231,16 @@
1439440384,1439440895,IR
1439440896,1439441919,RO
1439441920,1439442943,ES
-1439442944,1439446527,RO
+1439442944,1439443455,RO
+1439443456,1439443711,IT
+1439443712,1439446527,RO
1439446528,1439447039,DE
1439447040,1439449087,RO
1439449088,1439450111,GR
1439450112,1439450879,RO
-1439450880,1439451135,IT
+1439450880,1439451012,IT
+1439451013,1439451013,GG
+1439451014,1439451135,IT
1439451136,1439451647,RO
1439451648,1439451903,LT
1439451904,1439452159,RO
@@ -28838,21 +35262,24 @@
1439463936,1439465471,RO
1439465472,1439466495,IR
1439466496,1439467007,DK
-1439467008,1439467519,RO
+1439467008,1439467263,RO
+1439467264,1439467519,GG
1439467520,1439468031,DK
1439468032,1439468543,RO
1439468544,1439469567,ES
-1439469568,1439470335,RO
+1439469568,1439469823,GG
+1439469824,1439470335,RO
1439470336,1439470591,IT
1439470592,1439471615,US
1439471616,1439473663,ES
1439473664,1439474687,US
1439474688,1439475711,RO
-1439475712,1439475967,IN
-1439475968,1439476735,RO
+1439475712,1439476735,ES
1439476736,1439477759,IN
1439477760,1439479807,MD
-1439479808,1439482367,RO
+1439479808,1439481855,RO
+1439481856,1439482111,GG
+1439482112,1439482367,RO
1439482368,1439482879,DK
1439482880,1439483903,RO
1439483904,1439485951,ES
@@ -28862,7 +35289,39 @@
1439495680,1439496959,RO
1439496960,1439497215,GB
1439497216,1439498239,RO
-1439498240,1439563775,DE
+1439498240,1439513599,DE
+1439513600,1439514623,GB
+1439514624,1439516671,IT
+1439516672,1439518207,DE
+1439518208,1439518719,IT
+1439518720,1439527935,DE
+1439527936,1439528959,GB
+1439528960,1439529599,DE
+1439529600,1439529983,GB
+1439529984,1439530239,EG
+1439530240,1439534079,DE
+1439534080,1439535103,GB
+1439535104,1439536127,IT
+1439536128,1439537151,DE
+1439537152,1439538175,IT
+1439538176,1439538687,GB
+1439538688,1439539199,IT
+1439539200,1439549439,DE
+1439549440,1439551487,IT
+1439551488,1439556095,DE
+1439556096,1439556607,IT
+1439556608,1439558143,DE
+1439558144,1439558911,IT
+1439558912,1439560191,DE
+1439560192,1439560447,IT
+1439560448,1439560703,DE
+1439560704,1439561215,IT
+1439561216,1439561727,DE
+1439561728,1439562239,GB
+1439562240,1439562751,IE
+1439562752,1439563007,DE
+1439563008,1439563263,GB
+1439563264,1439563775,DE
1439563776,1439629311,LT
1439629312,1439694847,CZ
1439825920,1439956991,GB
@@ -28903,7 +35362,7 @@
1441284096,1441292287,AT
1441292288,1441300479,RU
1441300480,1441308671,LT
-1441308672,1441316863,SE
+1441308672,1441316863,HR
1441316864,1441325055,MT
1441325056,1441333247,PL
1441333248,1441349631,DE
@@ -28914,7 +35373,11 @@
1441382400,1441390591,FR
1441390592,1441398783,DK
1441398784,1441403903,RU
-1441403904,1441404159,US
+1441403904,1441403912,US
+1441403913,1441403913,RU
+1441403914,1441403914,US
+1441403915,1441403915,RU
+1441403916,1441404159,US
1441404160,1441415167,RU
1441415168,1441423359,GB
1441423360,1441431551,RU
@@ -28935,8 +35398,9 @@
1441546240,1441554431,DK
1441554432,1441556991,GB
1441556992,1441557503,SE
-1441557504,1441564671,GB
-1441564672,1441566719,NL
+1441557504,1441558015,NL
+1441558016,1441564671,GB
+1441564672,1441566719,MT
1441566720,1441568767,GB
1441568768,1441570815,FR
1441570816,1441579007,RU
@@ -28947,15 +35411,20 @@
1441619968,1441628159,FR
1441628160,1441636351,SA
1441636352,1441644543,PL
-1441644544,1441652735,GB
+1441644544,1441651455,GB
+1441651456,1441651711,CA
+1441651712,1441652735,GB
1441652736,1441660927,SK
1441660928,1441669119,ES
1441669120,1441677311,GE
1441677312,1441685503,HU
1441685504,1441693695,UA
-1441693696,1441696767,DE
-1441696768,1441697023,SG
-1441697024,1441701887,DE
+1441693696,1441694719,BR
+1441694720,1441696767,DE
+1441696768,1441697791,SG
+1441697792,1441698815,US
+1441698816,1441699839,IT
+1441699840,1441701887,DE
1441701888,1441710079,AT
1441710080,1441718271,SE
1441718272,1441726463,DE
@@ -28996,7 +35465,7 @@
1445068800,1445199871,RO
1445199872,1445330943,QA
1445330944,1445396479,LT
-1445396480,1445462015,BE
+1445412864,1445462015,BE
1445462016,1445986303,IE
1445986304,1446051839,DK
1446051840,1446117375,CZ
@@ -29010,7 +35479,9 @@
1446576128,1446608895,IR
1446608896,1446641663,BY
1446641664,1446674431,SI
-1446674432,1446707199,DK
+1446674432,1446704127,DK
+1446704128,1446705151,ES
+1446705152,1446707199,DK
1446707200,1446739967,AT
1446739968,1446772735,HU
1446772736,1446805503,SA
@@ -29022,7 +35493,8 @@
1446920192,1446936575,RU
1446936576,1446952959,NO
1446952960,1446969343,QA
-1446969344,1446985727,GB
+1446969344,1446980351,GB
+1446980608,1446985727,GB
1446985728,1447010303,PL
1447010304,1447018495,LV
1447018496,1447026687,CZ
@@ -29036,19 +35508,23 @@
1449656320,1449657087,GB
1449657088,1449657855,RO
1449657856,1449658111,IT
-1449658112,1449659903,RO
+1449658112,1449659391,RO
+1449659392,1449659647,GG
+1449659648,1449659903,RO
1449659904,1449660159,NL
1449660160,1449660415,BG
1449660416,1449661439,RO
-1449661440,1449662463,GB
+1449661440,1449662463,US
1449662464,1449663487,ES
1449663488,1449663999,GB
1449664000,1449664511,RO
1449664512,1449668607,IR
1449668608,1449672703,SE
-1449672704,1449673727,RO
+1449672704,1449672959,GG
+1449672960,1449673727,RO
1449673728,1449674751,GR
-1449674752,1449676799,RO
+1449674752,1449675775,RO
+1449675776,1449676799,US
1449676800,1449684991,IR
1449684992,1449687039,ES
1449687040,1449688063,GR
@@ -29056,7 +35532,8 @@
1449688576,1449688831,GB
1449688832,1449690623,RO
1449690624,1449690879,IE
-1449690880,1449695231,RO
+1449690880,1449691135,IT
+1449691136,1449695231,RO
1449695232,1449697279,SE
1449697280,1449699327,PS
1449699328,1449701375,ES
@@ -29075,7 +35552,7 @@
1449714944,1449715199,IT
1449715200,1449715711,RO
1449715712,1449719807,IR
-1449719808,1449720831,GB
+1449719808,1449720831,US
1449720832,1449721343,FR
1449721344,1449722111,RO
1449722112,1449722367,IT
@@ -29101,7 +35578,7 @@
1449738240,1449742335,RO
1449742336,1449744383,MD
1449744384,1449748479,RO
-1449748480,1449749503,GB
+1449748480,1449749503,US
1449749504,1449750527,RO
1449750528,1449752575,SE
1449752576,1449754623,RO
@@ -29112,7 +35589,7 @@
1449760256,1449760511,IE
1449760512,1449761791,RO
1449761792,1449762815,ES
-1449762816,1449763839,GB
+1449762816,1449763839,AU
1449763840,1449764863,RO
1449764864,1449765119,FR
1449765120,1449765887,RO
@@ -29153,13 +35630,13 @@
1449786368,1449786879,RO
1449786880,1449787391,FR
1449787392,1449789439,ES
-1449789440,1449790207,GB
+1449789440,1449789951,RO
+1449789952,1449790207,GB
1449790208,1449790719,RO
1449790720,1449791487,GB
-1449791488,1449791743,ES
-1449791744,1449792511,VG
+1449791488,1449792511,ES
1449792512,1449793279,RO
-1449793280,1449793535,US
+1449793280,1449793535,NL
1449793536,1449794047,IR
1449794048,1449794303,PH
1449794304,1449803775,RO
@@ -29174,8 +35651,7 @@
1449811200,1449811455,BG
1449811456,1449811967,GB
1449811968,1449812223,DK
-1449812224,1449812991,RO
-1449812992,1449813503,GB
+1449812224,1449813503,RO
1449813504,1449813759,RU
1449813760,1449814271,RO
1449814272,1449815039,GB
@@ -29186,7 +35662,7 @@
1449817856,1449818111,RO
1449818112,1449818367,DE
1449818368,1449818623,RO
-1449818624,1449819135,HU
+1449818624,1449819135,TR
1449819136,1449820927,RO
1449820928,1449821183,DE
1449821184,1449822719,RO
@@ -29207,21 +35683,19 @@
1449840640,1449852927,MD
1449852928,1449857023,IR
1449857024,1449858047,SY
-1449858048,1449859583,RO
-1449859584,1449860607,GB
-1449860608,1449863679,RO
+1449858048,1449863679,RO
1449863680,1449863935,GB
1449863936,1449865215,RO
1449865216,1449865727,SE
1449865728,1449867263,RO
1449867264,1449867519,ES
-1449867520,1449869311,RO
+1449867520,1449868799,RO
+1449868800,1449869055,PL
+1449869056,1449869311,RO
1449869312,1449870335,MD
-1449870336,1449870847,RO
-1449870848,1449871615,GB
-1449871616,1449871871,RO
-1449871872,1449872383,GB
-1449872384,1449873407,RO
+1449870336,1449871359,RO
+1449871360,1449871615,GB
+1449871616,1449873407,RO
1449873408,1449877503,IR
1449877504,1449878527,IT
1449878528,1449879039,RO
@@ -29233,7 +35707,9 @@
1449881088,1449883647,RO
1449883648,1449885695,BE
1449885696,1449886463,KZ
-1449886464,1449886719,RO
+1449886464,1449886536,RO
+1449886537,1449886537,KZ
+1449886538,1449886719,RO
1449886720,1449889791,KZ
1449889792,1449893887,IR
1449893888,1449895935,MD
@@ -29252,7 +35728,8 @@
1449904128,1449906175,NL
1449906176,1449910271,IR
1449910272,1449914879,RO
-1449914880,1449915391,SE
+1449914880,1449915135,DE
+1449915136,1449915391,SE
1449915392,1449918463,RO
1449918464,1449951231,JO
1449951232,1449983999,TR
@@ -29269,7 +35746,9 @@
1450065920,1450067135,DE
1450067136,1450067199,AT
1450067200,1450074111,DE
-1450074112,1450082303,RU
+1450074112,1450079711,RU
+1450079712,1450079712,GB
+1450079713,1450082303,RU
1450082304,1450090495,IT
1450090496,1450106879,RU
1450106880,1450115071,SK
@@ -29280,7 +35759,9 @@
1450147840,1450151935,CH
1450151936,1450153983,IQ
1450153984,1450156031,DE
-1450156032,1450164199,GB
+1450156032,1450161211,GB
+1450161212,1450161212,US
+1450161213,1450164199,GB
1450164200,1450164200,US
1450164201,1450164221,GB
1450164222,1450164222,US
@@ -29308,7 +35789,7 @@
1464336384,1464467455,DK
1464467456,1464598527,GB
1464598528,1464602623,RU
-1464602624,1464606719,US
+1464602624,1464606719,GB
1464606720,1464614911,KZ
1464614912,1464664063,UA
1464664064,1464860671,DE
@@ -29322,25 +35803,24 @@
1466040320,1466073087,EE
1466073088,1466086016,FR
1466086017,1466086017,ES
-1466086018,1466099446,FR
-1466099447,1466099447,ES
-1466099448,1466099711,FR
+1466086018,1466097759,FR
+1466097760,1466097791,CZ
+1466097792,1466097919,FR
+1466097920,1466099711,ES
1466099712,1466101759,PL
-1466101760,1466102271,FR
+1466101760,1466101951,FR
+1466101952,1466102015,DE
+1466102016,1466102271,FR
1466102272,1466102527,DE
-1466102528,1466104116,FR
-1466104117,1466104117,GB
-1466104118,1466104442,FR
-1466104443,1466104443,GB
-1466104444,1466104467,FR
-1466104468,1466104468,GB
-1466104469,1466104942,FR
+1466102528,1466102783,FR
+1466102784,1466103807,DE
+1466103808,1466104575,GB
+1466104576,1466104942,FR
1466104943,1466104943,BE
1466104944,1466105173,FR
1466105174,1466105174,BE
1466105175,1466105343,FR
-1466105344,1466105599,GB
-1466105600,1466105855,FR
+1466105344,1466105855,GB
1466105856,1466122239,PL
1466122240,1466130431,LV
1466130432,1466138623,PL
@@ -29349,7 +35829,7 @@
1466204160,1466236927,FI
1466236928,1466241023,NL
1466241024,1466249215,PL
-1466249216,1466253311,BG
+1466249216,1466253311,GR
1466253312,1466257407,PL
1466261504,1466265599,GB
1466265600,1466269695,HU
@@ -29364,7 +35844,13 @@
1466571895,1466571895,AE
1466571896,1466588785,DE
1466588786,1466588786,FR
-1466588787,1466630143,DE
+1466588787,1466589183,DE
+1466589184,1466590207,FR
+1466590208,1466591999,GB
+1466592000,1466613759,DE
+1466613760,1466615807,ES
+1466615808,1466616575,GB
+1466616576,1466630143,DE
1466630144,1466695679,IR
1466695680,1466761215,FI
1466761216,1466826751,SA
@@ -29395,11 +35881,22 @@
1467449344,1467457535,SI
1467457536,1467465727,EE
1467465728,1467466751,NL
-1467466752,1467473919,DE
+1467466752,1467472895,DE
+1467472896,1467473919,NL
1467473920,1467482111,RU
1467482112,1467484927,BG
1467484928,1467485183,IL
-1467485184,1467613183,BG
+1467485184,1467526143,BG
+1467526144,1467526399,DE
+1467526400,1467566079,BG
+1467566080,1467567103,DE
+1467567104,1467571199,BG
+1467571200,1467572223,DE
+1467572224,1467596799,BG
+1467596800,1467597823,DE
+1467597824,1467604991,BG
+1467604992,1467609087,DE
+1467609088,1467613183,BG
1467613184,1467744255,DE
1467744256,1467777023,GB
1467777024,1467875327,ES
@@ -29476,15 +35973,17 @@
1475155968,1475158015,NL
1475158016,1475160063,IS
1475160064,1475162111,RU
-1475162112,1475170303,GB
+1475164160,1475170303,GB
1475170304,1475172351,ES
1475172352,1475174399,DE
-1475174400,1475176447,NL
+1475174400,1475175047,NL
+1475175048,1475175055,US
+1475175056,1475176447,NL
1475176448,1475178495,RO
1475178496,1475180543,RU
-1475180544,1475184639,DE
-1475184640,1475186687,RU
-1475186688,1475188735,DE
+1475180544,1475184127,DE
+1475184128,1475186687,RU
+1475186688,1475188735,GB
1475188736,1475190783,SE
1475192832,1475194879,CH
1475194880,1475196927,DE
@@ -29495,7 +35994,10 @@
1475205120,1475205887,DE
1475205888,1475206143,US
1475206144,1475207167,DE
-1475207168,1475209215,AE
+1475207168,1475207423,AE
+1475207424,1475207679,GR
+1475207680,1475208191,SA
+1475208192,1475209215,AE
1475209216,1475211263,UZ
1475211264,1475213311,DE
1475213312,1475215359,FR
@@ -29505,10 +36007,10 @@
1475235840,1475237887,IE
1475237888,1475239935,ES
1475239936,1475241983,RU
-1475241984,1475244031,MC
+1475241984,1475244031,FR
1475244032,1475245823,DE
1475245824,1475246079,RU
-1475246080,1475248127,DE
+1475246080,1475248127,CH
1475248128,1475250175,JO
1475250176,1475252223,DE
1475252224,1475254271,FR
@@ -29518,8 +36020,7 @@
1475260416,1475262463,FR
1475262464,1475266559,DE
1475266560,1475268607,GB
-1475268608,1475269375,XK
-1475269376,1475270655,RS
+1475268608,1475270655,RS
1475270656,1475272703,GB
1475272704,1475274751,BE
1475274752,1475276799,RU
@@ -29545,7 +36046,9 @@
1475319808,1475321855,BG
1475321856,1475323903,KZ
1475323904,1475327999,PL
-1475328000,1475330047,DE
+1475328000,1475329095,NL
+1475329096,1475329096,CH
+1475329097,1475330047,NL
1475330048,1475332095,PL
1475332096,1475336191,CH
1475336192,1475338239,PL
@@ -29561,7 +36064,10 @@
1475346432,1475362815,RU
1475362816,1475379199,FR
1475379200,1475395583,RU
-1475395584,1475411967,LU
+1475395584,1475395839,DE
+1475395840,1475405823,LU
+1475405824,1475406079,FR
+1475406080,1475411967,LU
1475411968,1475428351,IT
1475428352,1475444735,SE
1475444736,1475461119,AM
@@ -29575,27 +36081,83 @@
1475575808,1475592191,AT
1475592192,1475608575,GB
1475608576,1475624959,RU
-1475624960,1475641343,JE
+1475624960,1475634991,JE
+1475634992,1475634995,GB
+1475634996,1475635043,JE
+1475635044,1475635047,GB
+1475635048,1475635075,JE
+1475635076,1475635079,GB
+1475635080,1475635159,JE
+1475635160,1475635167,GB
+1475635168,1475636287,JE
+1475636288,1475636351,GB
+1475636352,1475637303,JE
+1475637304,1475637311,GB
+1475637312,1475637471,JE
+1475637472,1475637479,GB
+1475637480,1475639391,JE
+1475639392,1475639399,GB
+1475639400,1475639479,JE
+1475639480,1475639487,GB
+1475639488,1475639559,JE
+1475639560,1475639567,GB
+1475639568,1475639583,JE
+1475639584,1475639591,GB
+1475639592,1475639695,JE
+1475639696,1475639703,GB
+1475639704,1475641343,JE
1475641344,1475657727,UA
1475657728,1475674111,SK
1475674112,1475690495,DE
-1475690496,1475706879,CH
+1475690496,1475693823,CH
+1475693824,1475693827,DE
+1475693828,1475693828,CH
+1475693829,1475693830,DE
+1475693831,1475693831,CH
+1475693832,1475693887,DE
+1475693888,1475693888,CH
+1475693889,1475693974,DE
+1475693975,1475693975,CH
+1475693976,1475694009,DE
+1475694010,1475694010,CH
+1475694011,1475694034,DE
+1475694035,1475694035,CH
+1475694036,1475694079,DE
+1475694080,1475706879,CH
1475706880,1475727359,RU
1475727360,1475727391,FI
-1475727392,1475728895,GB
+1475727392,1475727775,GB
+1475727776,1475727871,FI
+1475727872,1475728639,GB
+1475728640,1475728767,PL
+1475728768,1475728895,GB
1475728896,1475729151,DE
-1475729152,1475731007,GB
+1475729152,1475729247,AT
+1475729248,1475729407,GB
+1475729408,1475729535,UA
+1475729536,1475729663,GB
+1475729664,1475729671,UA
+1475729672,1475729791,GB
+1475729792,1475729855,UA
+1475729856,1475730751,GB
+1475730752,1475730815,UA
+1475730816,1475731007,GB
1475731008,1475731071,UA
-1475731072,1475735485,GB
+1475731072,1475731135,GB
+1475731136,1475731167,UA
+1475731168,1475735485,GB
1475735486,1475735486,RU
-1475735487,1475739647,GB
-1475739648,1475756031,BG
+1475735487,1475738111,GB
+1475738112,1475738879,RU
+1475738880,1475739647,GB
+1475739648,1475749887,BG
+1475749888,1475750399,IQ
+1475750400,1475756031,BG
1475756032,1475772415,GB
1475772416,1475788799,LV
1475788800,1475805183,PL
1475805184,1475821567,KZ
1475821568,1475837951,LT
-1475837952,1475846143,GB
1475846144,1475854335,IR
1475854336,1475862527,AT
1475862528,1475864575,FR
@@ -29605,43 +36167,24 @@
1475870720,1475878911,NO
1475878912,1475887103,IT
1475887104,1475895295,PL
-1475895296,1475903487,GB
+1475895296,1475901439,GB
+1475901440,1475903487,CH
1475903488,1475911679,IR
1475911680,1475919871,MD
-1475919872,1475928063,GB
+1475919872,1475920383,IT
1475928064,1475952639,RU
1475952640,1475954175,GB
1475954176,1475954687,NO
-1475954688,1475958527,GB
+1475954688,1475955247,GB
+1475955248,1475955255,NG
+1475955256,1475958527,GB
1475958528,1475958783,NO
1475958784,1475960831,GB
1475960832,1475969023,NL
1475969024,1475977215,CZ
1475977216,1475985407,SE
1475985408,1476009983,RU
-1476009984,1476010047,RS
-1476010048,1476010111,XK
-1476010112,1476011327,RS
-1476011328,1476011775,XK
-1476011776,1476012095,RS
-1476012096,1476012176,XK
-1476012177,1476012177,RS
-1476012178,1476012221,XK
-1476012222,1476012222,RS
-1476012223,1476012238,XK
-1476012239,1476012239,RS
-1476012240,1476012250,XK
-1476012251,1476012251,RS
-1476012252,1476012278,XK
-1476012279,1476012279,RS
-1476012280,1476012287,XK
-1476012288,1476014079,RS
-1476014080,1476014127,XK
-1476014128,1476014135,RS
-1476014136,1476014591,XK
-1476014592,1476015871,RS
-1476015872,1476016127,XK
-1476016128,1476018175,RS
+1476009984,1476018175,RS
1476018176,1476026367,IT
1476026368,1476034559,BA
1476034560,1476042751,NL
@@ -29660,10 +36203,19 @@
1476132864,1476141055,FR
1476141056,1476149247,GB
1476149248,1476157439,NO
-1476157440,1476165631,BH
+1476157440,1476159999,BH
+1476160000,1476160511,IT
+1476160512,1476161535,PS
+1476161536,1476163583,GB
+1476163584,1476165119,DE
+1476165120,1476165631,BH
1476165632,1476173823,HR
1476173824,1476182015,BG
-1476182016,1476190207,IE
+1476182016,1476186367,GB
+1476186368,1476186383,IE
+1476186384,1476189382,GB
+1476189383,1476189383,IE
+1476189384,1476190207,GB
1476190208,1476198399,BY
1476198400,1476206591,RU
1476206592,1476214783,GE
@@ -29681,7 +36233,11 @@
1476288512,1476296703,LU
1476296704,1476304895,RU
1476304896,1476313087,BG
-1476313088,1476321279,FI
+1476313088,1476315135,DE
+1476315136,1476316159,US
+1476316160,1476317183,FI
+1476317184,1476321151,DE
+1476321152,1476321279,FI
1476321280,1476329471,MC
1476329472,1476337663,RU
1476337664,1476345855,NL
@@ -29698,7 +36254,9 @@
1481646080,1481654271,RU
1481654272,1481662463,IT
1481662464,1481678847,BG
-1481678848,1481684991,SE
+1481678848,1481680663,SE
+1481680664,1481680671,GB
+1481680672,1481684991,SE
1481684992,1481687039,GB
1481687040,1481695231,DE
1481695232,1481703423,SK
@@ -29706,8 +36264,11 @@
1481711616,1481719807,RU
1481719808,1481727999,CZ
1481728000,1481736191,IE
-1481736192,1481741055,GG
-1481741056,1481744383,GB
+1481736192,1481742335,GG
+1481742336,1481743359,GB
+1481743360,1481743871,GG
+1481743872,1481744127,GB
+1481744128,1481744383,GG
1481744384,1481752575,IT
1481752576,1481760767,RU
1481760768,1481768959,UA
@@ -29735,12 +36296,12 @@
1481908224,1481916415,NO
1481916416,1481924607,ES
1481924608,1481932799,SA
-1481932800,1481936895,GB
-1481936896,1481936959,DE
-1481936960,1481936975,FR
-1481936976,1481937207,DE
-1481937208,1481937215,FR
-1481937216,1481940991,DE
+1481932800,1481934847,GB
+1481934848,1481936895,DE
+1481936896,1481937183,FR
+1481937184,1481937199,NL
+1481937200,1481938943,FR
+1481938944,1481940991,NL
1481940992,1481949183,NO
1481949184,1481957375,RU
1481957376,1481965567,SE
@@ -29788,11 +36349,9 @@
1484914688,1484980223,DE
1484980224,1485045759,SE
1485045760,1485111295,HU
-1485111296,1485148159,DE
-1485148160,1485149695,AT
-1485149696,1485242367,DE
+1485111296,1485242367,DE
1485242368,1485246463,RU
-1485246464,1485250559,UA
+1485246464,1485250559,LT
1485250560,1485254655,IR
1485254656,1485259007,RU
1485262848,1485266943,UA
@@ -29838,7 +36397,10 @@
1486342144,1486344191,RU
1486344192,1486346239,ES
1486346240,1486348287,GB
-1486348288,1486350335,US
+1486348288,1486349311,NL
+1486349312,1486349567,US
+1486349568,1486349823,GB
+1486349824,1486350335,US
1486350336,1486352383,FR
1486352384,1486354431,BE
1486354432,1486356479,RU
@@ -29862,38 +36424,41 @@
1489633280,1489634303,FR
1489634304,1489635327,IT
1489635328,1489639423,FR
-1489639424,1489639679,IT
1489639680,1489640959,FR
-1489640960,1489641215,IT
1489641216,1489641471,FR
1489641472,1489641599,PT
1489641600,1489641727,GR
1489641728,1489642495,FR
-1489642496,1489642751,IT
-1489642752,1489644031,FR
-1489644032,1489644287,IT
-1489644288,1489644543,FR
-1489644544,1489647615,IT
+1489642752,1489644543,FR
+1489644544,1489645055,IT
+1489645824,1489646079,IT
1489647616,1489648383,FR
1489648384,1489648639,GR
-1489648640,1489651199,IT
-1489651200,1489653247,FR
-1489653248,1489655295,IT
+1489649664,1489650687,ZA
+1489651200,1489653759,FR
1489655296,1489655551,GR
-1489655552,1489659647,IT
+1489656832,1489657087,FI
+1489657088,1489657343,SE
+1489657600,1489657855,NO
+1489657856,1489658879,CM
+1489658880,1489659647,KE
1489659648,1489661951,FR
-1489661952,1489664255,IT
+1489661952,1489662975,NG
+1489662976,1489663487,IT
1489664256,1489664511,GB
1489664512,1489664767,LY
1489664768,1489665023,TN
-1489665024,1489665791,IT
1489665792,1489674239,GB
1489674240,1489676287,NL
1489676288,1489678591,GB
1489678592,1489678847,NL
1489678848,1489678943,GB
1489678944,1489678959,US
-1489678960,1489688575,GB
+1489678960,1489680605,GB
+1489680606,1489680607,US
+1489680608,1489680631,GB
+1489680632,1489680632,US
+1489680633,1489688575,GB
1489688576,1489688831,IL
1489688832,1489689087,GB
1489689088,1489689343,IL
@@ -29904,7 +36469,9 @@
1489690624,1489692415,GB
1489692416,1489692422,AU
1489692423,1489692423,GB
-1489692424,1489692430,AU
+1489692424,1489692426,AU
+1489692427,1489692427,GB
+1489692428,1489692430,AU
1489692431,1489692447,GB
1489692448,1489692463,AU
1489692464,1489693695,GB
@@ -29912,9 +36479,21 @@
1489694720,1489698815,GB
1489698816,1489731583,MT
1489731584,1489764351,BG
-1489764352,1489797119,RU
+1489764352,1489774591,RU
+1489774592,1489776639,DE
+1489776640,1489797119,RU
1489797120,1489829887,KZ
-1489829888,1489862655,DE
+1489829888,1489855555,DE
+1489855556,1489855559,US
+1489855560,1489855807,DE
+1489855808,1489855839,US
+1489855840,1489855863,DE
+1489855864,1489855871,FI
+1489855872,1489856415,DE
+1489856416,1489856419,US
+1489856420,1489856527,DE
+1489856528,1489856543,US
+1489856544,1489862655,DE
1489862656,1489928191,RU
1489928192,1489960959,SE
1489960960,1489993727,HR
@@ -29931,7 +36510,9 @@
1490092032,1490108415,DE
1490108416,1490124799,MC
1490124800,1490141183,SA
-1490141184,1490157567,HU
+1490141184,1490153471,HU
+1490153472,1490155519,GB
+1490155520,1490157567,HU
1490157568,1490173951,RU
1490173952,1490190335,PT
1490190336,1490193616,GB
@@ -29957,12 +36538,12 @@
1490386944,1490403327,CH
1490403328,1490411519,BG
1490411520,1490419711,FR
-1490419712,1490420735,DE
1490420736,1490421759,IR
-1490421760,1490436095,DE
1490436096,1490452479,UA
1490452480,1490468863,PT
-1490468864,1490478591,GB
+1490468864,1490473983,GB
+1490473984,1490474239,US
+1490474240,1490478591,GB
1490478592,1490478847,RU
1490478848,1490480127,GB
1490480128,1490480639,RU
@@ -29987,21 +36568,19 @@
1490927616,1490929663,FR
1490931712,1490931967,DE
1490931968,1490932223,PL
-1490932224,1490933759,DE
+1490932736,1490933759,DE
1490934528,1490934783,IL
1490944000,1491075071,LT
1491075072,1493172223,TR
1493172224,1493303295,DE
-1493303296,1493431622,FR
-1493431623,1493431623,GP
-1493431624,1493434367,FR
+1493303296,1493430271,FR
+1493430272,1493432319,GP
+1493432320,1493434367,MQ
1493434368,1493565439,SA
1493565440,1493696511,ES
1493696512,1493958655,NO
1493958656,1494220799,DE
-1494220800,1494221823,MQ
-1494221824,1494222079,FR
-1494222080,1494222335,MQ
+1494220800,1494222335,MQ
1494222336,1494228991,FR
1494228992,1494237183,RU
1494237184,1494245375,IE
@@ -30041,13 +36620,14 @@
1494548480,1494556671,GB
1494556672,1494564863,DE
1494564864,1494573055,UA
-1494573056,1494581247,RO
+1494573056,1494580479,RO
+1494580480,1494580735,HU
+1494580736,1494581247,RO
1494581248,1494589439,RU
-1494589440,1494597631,NL
+1494589440,1494597631,US
1494597632,1494605823,IT
1494605824,1494614015,GB
-1494614016,1494615551,RU
-1494615552,1494616063,UA
+1494614016,1494616063,RU
1494616064,1494618111,ES
1494618112,1494622207,RU
1494622208,1494624255,PL
@@ -30063,7 +36643,8 @@
1494663168,1494665215,PL
1494665216,1494667263,UA
1494667264,1494669311,PL
-1494669312,1494675455,RU
+1494669312,1494671359,RU
+1494671360,1494675455,TR
1494675456,1494679551,UA
1494679552,1494695935,RU
1494695936,1494704127,RS
@@ -30087,7 +36668,9 @@
1495054336,1495056383,GB
1495056384,1495058431,RU
1495058432,1495060479,UA
-1495060480,1495062527,GB
+1495060480,1495061247,GB
+1495061248,1495061503,US
+1495061504,1495062527,GB
1495062528,1495064575,JO
1495064576,1495066623,PL
1495066624,1495068671,GB
@@ -30097,6 +36680,7 @@
1495105536,1495138303,ES
1495138304,1495139327,FR
1495139344,1495139347,GB
+1495139376,1495139391,FR
1495140352,1495142399,FR
1495146752,1495147007,US
1495148544,1495150591,FR
@@ -30142,7 +36726,6 @@
1495224320,1495228415,RU
1495228416,1495230463,NL
1495230464,1495234559,RU
-1495236608,1495238655,AT
1495238656,1495240703,DE
1495240704,1495242751,FR
1495242752,1495244799,MK
@@ -30153,18 +36736,20 @@
1495252992,1495255039,BH
1495255040,1495257087,IT
1495257088,1495259135,GB
-1495259136,1495261183,BE
-1495261184,1495263231,PT
-1495263232,1495265279,GB
-1495265280,1495267327,RU
+1495261184,1495261439,PT
+1495261440,1495261481,GB
+1495261482,1495261482,PT
+1495261483,1495261511,GB
+1495261512,1495261512,PT
+1495261513,1495265279,GB
+1495265280,1495267327,US
1495267328,1495269375,SE
1495269376,1495277567,IR
1495277568,1495279615,SE
1495279616,1495279871,DE
1495279872,1495283711,RO
1495283712,1495285759,MD
-1495285760,1495286783,US
-1495286784,1495287807,VG
+1495285760,1495287807,US
1495287808,1495289855,SE
1495289856,1495291903,ES
1495291904,1495293951,RO
@@ -30173,10 +36758,13 @@
1495300096,1495300351,SE
1495300352,1495300607,US
1495300608,1495300863,SE
-1495300864,1495301119,VG
-1495301120,1495304191,RO
+1495300864,1495301119,GB
+1495301120,1495303167,RO
+1495303168,1495304191,US
1495304192,1495306239,MD
-1495306240,1495308287,RO
+1495306240,1495306573,GB
+1495306574,1495306574,RO
+1495306575,1495308287,GB
1495308288,1495308799,IT
1495308800,1495309311,RO
1495309312,1495310335,IT
@@ -30184,7 +36772,7 @@
1495312384,1495312895,IT
1495312896,1495313151,GB
1495313152,1495314431,MD
-1495314432,1495316479,VG
+1495314432,1495316479,RO
1495316480,1495316735,GB
1495316736,1495316991,RO
1495316992,1495317503,IT
@@ -30194,18 +36782,19 @@
1495318272,1495318527,RO
1495318528,1495319039,NO
1495319040,1495319167,FR
-1495319168,1495319295,VG
+1495319168,1495319295,ES
1495319296,1495319551,SE
1495319552,1495320063,IR
1495320064,1495321343,RO
1495321344,1495321599,GB
-1495321600,1495322623,RO
+1495321600,1495322367,RO
+1495322368,1495322623,GG
1495322624,1495324671,GR
1495324672,1495326719,RO
1495326720,1495332863,MD
-1495332864,1495333375,VG
+1495332864,1495333375,IR
1495333376,1495333631,CH
-1495333632,1495333887,VG
+1495333632,1495333887,IR
1495333888,1495334911,MD
1495334912,1495335167,FR
1495335168,1495335423,IE
@@ -30213,7 +36802,8 @@
1495335680,1495335935,FR
1495335936,1495336447,RO
1495336448,1495336959,GB
-1495336960,1495339007,RO
+1495336960,1495338751,RO
+1495338752,1495339007,GG
1495339008,1495339263,DE
1495339264,1495339519,MD
1495339520,1495340031,IR
@@ -30221,9 +36811,9 @@
1495342592,1495342847,MD
1495342848,1495345151,RO
1495345152,1495345407,FI
-1495345408,1495345663,US
+1495345408,1495345663,RO
1495345664,1495345919,FI
-1495345920,1495346175,VG
+1495345920,1495346175,ES
1495346176,1495346687,RO
1495346688,1495347199,GB
1495347200,1495349247,RO
@@ -30232,9 +36822,9 @@
1495351552,1495351807,MD
1495351808,1495352319,IQ
1495352320,1495352447,FR
-1495352448,1495352831,VG
+1495352448,1495352831,GB
1495352832,1495353087,FI
-1495353088,1495353343,VG
+1495353088,1495353343,GB
1495353344,1495360511,RO
1495360512,1495361535,IR
1495361536,1495362559,RO
@@ -30252,11 +36842,10 @@
1495369728,1495371775,SE
1495371776,1495376383,RO
1495376384,1495376639,GB
-1495376640,1495376895,RO
-1495376896,1495377407,GB
-1495377408,1495382015,RO
+1495376640,1495382015,RO
1495382016,1495384063,ES
-1495384064,1495385599,RO
+1495384064,1495384319,GB
+1495384320,1495385599,RO
1495385600,1495386623,GB
1495386624,1495387135,RO
1495387136,1495387647,IR
@@ -30296,7 +36885,7 @@
1495425535,1495426047,GB
1495426048,1495426559,RO
1495426560,1495426815,GB
-1495426816,1495427071,RO
+1495426816,1495427071,PL
1495427072,1495427583,GB
1495427584,1495428095,RO
1495428096,1495428351,GB
@@ -30311,9 +36900,9 @@
1495441664,1495441919,IT
1495441920,1495442431,SY
1495442432,1495442559,FR
-1495442560,1495442943,VG
+1495442560,1495442943,GB
1495442944,1495443199,AE
-1495443200,1495443455,VG
+1495443200,1495443455,GB
1495443456,1495443967,IR
1495443968,1495444223,RO
1495444224,1495444479,GB
@@ -30344,7 +36933,7 @@
1495470080,1495472127,NL
1495472128,1495473151,RO
1495473152,1495474175,GB
-1495474176,1495474431,NL
+1495474176,1495474431,BG
1495474432,1495474687,RO
1495474688,1495474943,MD
1495474944,1495476223,RO
@@ -30360,15 +36949,16 @@
1495485440,1495485695,MD
1495485696,1495485951,RO
1495485952,1495486463,PL
-1495486464,1495487231,RO
+1495486464,1495487183,RO
+1495487184,1495487184,GG
+1495487185,1495487231,RO
1495487232,1495487487,IT
1495487488,1495488767,MD
1495488768,1495489279,GB
1495489280,1495489535,MD
-1495489536,1495492607,RO
-1495492608,1495493119,VG
+1495489536,1495493119,RO
1495493120,1495493375,US
-1495493376,1495493631,VG
+1495493376,1495493631,RO
1495493632,1495494655,AE
1495494656,1495495167,RO
1495495168,1495495423,ES
@@ -30389,7 +36979,7 @@
1495505920,1495506431,IR
1495506432,1495507711,RO
1495507712,1495507967,MD
-1495507968,1495508991,DE
+1495507968,1495508991,US
1495508992,1495510015,IT
1495510016,1495510527,RO
1495510528,1495511039,DE
@@ -30400,9 +36990,9 @@
1495513088,1495515647,RO
1495515648,1495516159,IR
1495516160,1495516287,FR
-1495516288,1495516671,VG
+1495516288,1495516671,GB
1495516672,1495516927,GR
-1495516928,1495517183,VG
+1495516928,1495517183,GB
1495517184,1495518207,MD
1495518208,1495524095,RO
1495524096,1495524351,ES
@@ -30416,7 +37006,6 @@
1495533568,1495535615,RO
1495535616,1495536127,IR
1495536128,1495537663,RO
-1495537664,1495539711,GB
1495539712,1495540735,US
1495540736,1495540991,GB
1495540992,1495541247,RO
@@ -30424,18 +37013,19 @@
1495541760,1495543807,ES
1495543808,1495547903,IR
1495547904,1495548159,US
-1495548160,1495548671,VG
+1495548160,1495548671,GB
1495548672,1495548703,RU
1495548704,1495548735,RO
1495548736,1495548927,RU
-1495548928,1495549695,VG
+1495548928,1495549695,GB
1495549696,1495549951,RU
1495549952,1495550463,RO
1495550464,1495550975,BE
1495550976,1495551999,RO
1495552000,1495554047,ES
1495554048,1495554559,RO
-1495554560,1495555071,SE
+1495554560,1495554815,US
+1495554816,1495555071,SE
1495555072,1495556095,RO
1495556096,1495560191,IR
1495560192,1495566335,RO
@@ -30450,10 +37040,11 @@
1495571456,1495572479,MD
1495572480,1495573503,RO
1495573504,1495574527,KZ
-1495574528,1495575039,RO
+1495574528,1495575039,ES
1495575040,1495575551,CH
1495575552,1495575807,NL
-1495575808,1495576575,RO
+1495575808,1495576319,RO
+1495576320,1495576575,ES
1495576576,1495580671,IR
1495580672,1495581183,RO
1495581184,1495581695,IR
@@ -30468,9 +37059,7 @@
1495589376,1495589887,IR
1495589888,1495590143,IT
1495590144,1495590655,RO
-1495590656,1495590911,GB
-1495590912,1495591935,DE
-1495591936,1495592959,US
+1495590656,1495592959,US
1495592960,1495596031,RO
1495596032,1495596543,IR
1495596544,1495596799,RO
@@ -30486,9 +37075,11 @@
1495607552,1495607807,RO
1495607808,1495608319,IR
1495608320,1495609343,MD
-1495609344,1495613439,RO
-1495613440,1495614463,GB
-1495614464,1495615487,RO
+1495609344,1495612159,RO
+1495612160,1495612415,GG
+1495612416,1495613439,RO
+1495613440,1495614975,GB
+1495614976,1495615487,RO
1495615488,1495618559,ES
1495618560,1495619583,BE
1495619584,1495620607,AT
@@ -30500,7 +37091,7 @@
1495623168,1495623679,IR
1495623680,1495623935,MD
1495623936,1495624191,NL
-1495624192,1495624447,GB
+1495624192,1495624447,US
1495624448,1495629823,RO
1495629824,1495631615,GB
1495631616,1495632127,RO
@@ -30515,7 +37106,7 @@
1495641088,1495642111,RO
1495642112,1495644159,SE
1495644160,1495645183,RO
-1495645184,1495646207,GB
+1495645184,1495646207,US
1495646208,1495647743,RO
1495647744,1495648255,IR
1495648256,1495650303,LU
@@ -30605,19 +37196,19 @@
1495759872,1495760127,ES
1495760128,1495760895,RO
1495760896,1495762943,DE
-1495762944,1495763967,GB
-1495763968,1495764735,VG
+1495762944,1495764735,GB
1495764736,1495764991,AU
1495764992,1495765503,BG
1495765504,1495765759,GB
-1495765760,1495766015,US
+1495765760,1495766015,NL
1495766016,1495766527,RO
1495766528,1495766783,DE
1495766784,1495767039,RO
-1495767040,1495769087,ES
-1495769088,1495769599,RO
+1495767040,1495769343,ES
+1495769344,1495769599,RO
1495769600,1495770623,NL
-1495770624,1495771135,RO
+1495770624,1495770879,RO
+1495770880,1495771135,ES
1495771136,1495772159,PL
1495772160,1495772671,US
1495772672,1495774207,RO
@@ -30635,31 +37226,33 @@
1495789568,1495789823,PL
1495789824,1495790079,GB
1495790080,1495790335,MD
-1495790336,1495790847,GB
-1495790848,1495791359,RO
+1495790336,1495791359,RO
1495791360,1495791615,GB
-1495791616,1495793663,RO
+1495791616,1495793407,RO
+1495793408,1495793663,PL
1495793664,1495794687,DE
-1495794688,1495795199,VG
+1495794688,1495795199,LT
1495795200,1495795327,FR
-1495795328,1495795455,VG
+1495795328,1495795455,LT
1495795456,1495795711,RU
-1495795712,1495803391,RO
+1495795712,1495797759,LT
+1495797760,1495803391,RO
1495803392,1495803903,IR
1495803904,1495804671,RO
1495804672,1495805439,GB
1495805440,1495805951,RO
1495805952,1495810047,KZ
-1495810048,1495813631,RO
+1495810048,1495810303,GG
+1495810304,1495812607,RO
+1495812608,1495812863,ES
+1495812864,1495813631,RO
1495813632,1495814143,IR
1495814144,1495815167,RO
1495815168,1495816191,ES
1495816192,1495816703,RO
1495816704,1495817215,IR
-1495817216,1495817471,HK
-1495817472,1495818239,RO
-1495818240,1495819263,VG
-1495819264,1495820799,RO
+1495817216,1495817471,GB
+1495817472,1495820799,RO
1495820800,1495821311,IR
1495821312,1495821823,DE
1495821824,1495822335,IR
@@ -30681,7 +37274,7 @@
1495836160,1495836415,GB
1495836416,1495837695,RO
1495837696,1495838719,IT
-1495838720,1495839743,GB
+1495838720,1495839743,US
1495839744,1495839999,FR
1495840000,1495842815,RO
1495842816,1495843839,KZ
@@ -30726,7 +37319,8 @@
1495894528,1495896063,SY
1495896064,1495900159,RO
1495900160,1495902207,SE
-1495902208,1495906303,RO
+1495902208,1495903231,NL
+1495903232,1495906303,RO
1495906304,1495907327,IR
1495907328,1495907583,RO
1495907584,1495908351,GB
@@ -30741,14 +37335,14 @@
1495931392,1495931647,RO
1495931648,1495931903,BG
1495931904,1495932159,RO
-1495932160,1495932415,GB
+1495932160,1495932415,US
1495932416,1495932671,RO
1495932672,1495932927,GB
1495932928,1495933439,IR
1495933440,1495934975,RO
1495934976,1495935231,GB
1495935232,1495935743,RO
-1495935744,1495935999,ES
+1495935744,1495935999,FI
1495936000,1495937023,IR
1495937024,1495937535,DE
1495937536,1495938559,RO
@@ -30765,12 +37359,14 @@
1495951360,1495952383,MD
1495952384,1495953919,RO
1495953920,1495954175,GB
-1495954176,1495955455,RO
+1495954176,1495954431,GG
+1495954432,1495955455,RO
1495955456,1495957503,ES
1495957504,1495958527,MD
1495958528,1495959551,RO
1495959552,1495960575,IR
-1495960576,1495961087,SE
+1495960576,1495960831,US
+1495960832,1495961087,SE
1495961088,1495961599,RO
1495961600,1495962623,US
1495962624,1495963135,RO
@@ -30780,7 +37376,10 @@
1495965696,1495966719,PL
1495966720,1495967743,ES
1495967744,1495968767,NL
-1495968768,1495970815,RO
+1495968768,1495969279,RO
+1495969280,1495969791,GG
+1495969792,1495970559,RO
+1495970560,1495970815,GG
1495970816,1495971839,MD
1495971840,1495973887,IR
1495973888,1495974911,RO
@@ -30797,9 +37396,9 @@
1495983104,1495983615,IR
1495983616,1495983871,IT
1495983872,1495985151,RO
-1495985152,1495985663,VG
+1495985152,1495985663,ES
1495985664,1495985791,FR
-1495985792,1495985919,VG
+1495985792,1495985919,PL
1495985920,1495986175,JP
1495986176,1495990271,RO
1495990272,1495994367,IR
@@ -30810,7 +37409,9 @@
1495998464,1495998719,SG
1495998720,1495999487,RO
1495999488,1495999999,IR
-1496000000,1496003327,RO
+1496000000,1496002815,RO
+1496002816,1496003071,GG
+1496003072,1496003327,RO
1496003328,1496003583,DE
1496003584,1496004607,RO
1496004608,1496005631,GR
@@ -30826,12 +37427,12 @@
1496011776,1496012799,ES
1496012800,1496016895,IR
1496016896,1496018943,RO
-1496018944,1496019967,FR
-1496019968,1496020735,VG
+1496018944,1496019967,NL
+1496019968,1496020735,CH
1496020736,1496020991,AU
1496020992,1496023039,DE
1496023040,1496024063,MD
-1496024064,1496025087,HU
+1496024064,1496025087,TR
1496025088,1496027135,RO
1496027136,1496029183,IR
1496029184,1496032255,RO
@@ -30842,7 +37443,9 @@
1496036864,1496037375,IR
1496037376,1496038399,GR
1496038400,1496038911,IR
-1496038912,1496040447,RO
+1496038912,1496039423,RO
+1496039424,1496039679,IT
+1496039680,1496040447,RO
1496040448,1496040959,ES
1496040960,1496041983,RO
1496041984,1496042495,GB
@@ -30856,16 +37459,21 @@
1496058112,1496058879,RO
1496058880,1496059903,KZ
1496059904,1496066047,ES
-1496066048,1496066815,VG
+1496066048,1496066815,GB
1496066816,1496067071,QA
1496067072,1496068095,RO
1496068096,1496074239,ES
1496074240,1496075263,GR
-1496075264,1496079359,RO
+1496075264,1496076799,RO
+1496076800,1496077055,ES
+1496077056,1496078335,RO
+1496078336,1496079359,MD
1496079360,1496081407,GR
1496081408,1496082175,RO
1496082176,1496082431,GB
-1496082432,1496083967,RO
+1496082432,1496083199,RO
+1496083200,1496083455,GG
+1496083456,1496083967,RO
1496083968,1496084479,FR
1496084480,1496084991,IR
1496084992,1496085247,IE
@@ -30894,7 +37502,8 @@
1496108544,1496108799,IT
1496108800,1496109567,RO
1496109568,1496109823,US
-1496109824,1496110335,RO
+1496109824,1496110079,FI
+1496110080,1496110335,RO
1496110336,1496110591,GB
1496110592,1496111103,RO
1496111104,1496113151,GR
@@ -30904,7 +37513,7 @@
1496119296,1496121343,SE
1496121344,1496122367,MD
1496122368,1496123391,RO
-1496123392,1496123647,IE
+1496123392,1496123647,NL
1496123648,1496124927,RO
1496124928,1496125183,FR
1496125184,1496127487,RO
@@ -30919,7 +37528,8 @@
1496137728,1496138495,RO
1496138496,1496138751,BG
1496138752,1496139263,IR
-1496139264,1496141823,RO
+1496139264,1496139775,PL
+1496139776,1496141823,RO
1496141824,1496142335,IR
1496142336,1496142591,GB
1496142592,1496142847,RO
@@ -30947,17 +37557,22 @@
1496179968,1496180223,IT
1496180224,1496180735,IR
1496180736,1496182783,SE
-1496182784,1496183039,ES
-1496183040,1496183295,US
-1496183296,1496184063,ES
-1496184064,1496184740,US
+1496182784,1496184063,ES
+1496184064,1496184319,US
+1496184320,1496184575,ES
+1496184576,1496184740,US
1496184741,1496184741,ES
1496184742,1496184831,US
1496184832,1496188927,RO
1496188928,1496189951,ES
1496189952,1496190975,RO
1496190976,1496193023,SE
-1496193024,1496197119,RO
+1496193024,1496195071,RO
+1496195072,1496195327,ES
+1496195328,1496195839,RO
+1496195840,1496196607,ES
+1496196608,1496196863,RO
+1496196864,1496197119,ES
1496197120,1496197631,MD
1496197632,1496198143,RO
1496198144,1496198655,IR
@@ -30966,7 +37581,11 @@
1496202240,1496202751,IR
1496202752,1496203263,RO
1496203264,1496207359,IT
-1496207360,1496209407,SE
+1496207360,1496207615,DE
+1496207616,1496208383,SE
+1496208384,1496208895,AE
+1496208896,1496209151,SE
+1496209152,1496209407,AE
1496209408,1496210431,ES
1496210432,1496210943,RO
1496210944,1496211455,IR
@@ -30978,7 +37597,7 @@
1496217600,1496218879,RO
1496218880,1496219135,DE
1496219136,1496220671,RO
-1496220672,1496221695,DE
+1496220672,1496221695,US
1496221696,1496223743,ES
1496223744,1496225791,PL
1496225792,1496228863,RO
@@ -30990,9 +37609,14 @@
1496238080,1496240127,IQ
1496240128,1496242175,RO
1496242176,1496243199,IR
-1496243200,1496248575,RO
+1496243200,1496243742,RO
+1496243743,1496243743,EH
+1496243744,1496243863,RO
+1496243864,1496243864,TF
+1496243865,1496248575,RO
1496248576,1496248831,MD
-1496248832,1496250367,RO
+1496248832,1496250111,RO
+1496250112,1496250367,ES
1496250368,1496251391,US
1496251392,1496252415,GR
1496252416,1496252671,RO
@@ -31017,7 +37641,7 @@
1496276736,1496276991,ES
1496276992,1496285183,RO
1496285184,1496293375,IR
-1496293376,1496295423,RO
+1496293376,1496295423,LT
1496295424,1496297471,PL
1496297472,1496297727,MD
1496297728,1496297983,BG
@@ -31033,9 +37657,11 @@
1496312832,1496313855,ES
1496313856,1496315647,RO
1496315648,1496315903,GB
-1496315904,1496316159,RO
+1496315904,1496316159,GG
1496316160,1496316415,GB
-1496316416,1496317951,RO
+1496316416,1496317183,RO
+1496317184,1496317439,GG
+1496317440,1496317951,RO
1496317952,1497366527,DE
1497366528,1498415103,PL
1498415104,1499463679,FR
@@ -31055,7 +37681,9 @@
1500078080,1500086271,GB
1500086272,1500094463,RU
1500094464,1500102655,AT
-1500102656,1500110847,NL
+1500102656,1500108799,NL
+1500108800,1500109311,DE
+1500109312,1500110847,NL
1500110848,1500119039,UA
1500119040,1500127231,TR
1500127232,1500135423,FI
@@ -31068,7 +37696,7 @@
1500160000,1500162047,NL
1500162048,1500164095,RU
1500164096,1500166143,GB
-1500166144,1500168191,FR
+1500166144,1500168191,DE
1500168192,1500170239,RU
1500170240,1500172287,LU
1500172288,1500174335,AT
@@ -31079,7 +37707,9 @@
1500182528,1500184575,RU
1500184576,1500186623,IM
1500186624,1500188671,KW
-1500188672,1500190719,GB
+1500188672,1500188735,FR
+1500188736,1500188799,GB
+1500188800,1500190719,FR
1500192768,1500194815,RU
1500194816,1500196863,GB
1500196864,1500198911,ES
@@ -31111,13 +37741,10 @@
1500299264,1500315647,PL
1500315648,1500332031,RU
1500332032,1500348415,PT
-1500348416,1500397567,RU
-1500397568,1500413951,UA
+1500348416,1500413951,RU
1500413952,1500430335,DE
1500430336,1500446719,RS
-1500446720,1500459007,LV
-1500459008,1500461055,RU
-1500461056,1500463103,LV
+1500446720,1500463103,LV
1500463104,1500479487,CZ
1500479488,1500495871,RU
1500495872,1500512255,BA
@@ -31126,13 +37753,17 @@
1500774400,1500905471,LT
1500905472,1501036543,IT
1501036544,1501298687,RO
-1501298688,1501560831,IE
+1501298688,1501366271,IE
+1501366272,1501366527,GB
+1501366528,1501560831,IE
1501560832,1501822975,ES
1501822976,1502085119,HU
1502085120,1502216191,RO
1502216192,1502347263,IL
1502347264,1502478335,ES
-1502478336,1502609407,SI
+1502478336,1502605311,SI
+1502605312,1502606335,HR
+1502606336,1502609407,SI
1502609408,1502625791,DE
1502625792,1502642175,SA
1502642176,1502658559,IR
@@ -31140,7 +37771,8 @@
1502674944,1502691327,DE
1502691328,1502707711,GB
1502707712,1502715903,RU
-1502715904,1502717951,CH
+1502715904,1502716927,DE
+1502716928,1502717951,CH
1502717952,1502719999,GB
1502720000,1502722047,FR
1502722048,1502724095,TR
@@ -31159,20 +37791,32 @@
1502920704,1502937087,RU
1502937088,1502953471,RO
1502953472,1502969855,MD
-1502969856,1502975231,DE
+1502969856,1502972927,IE
+1502972928,1502973951,DE
+1502973952,1502975231,IE
1502975232,1502975247,GB
-1502975248,1502975327,DE
+1502975248,1502975327,IE
1502975328,1502975359,GB
-1502975360,1502979135,DE
+1502975360,1502975999,IE
+1502976000,1502977023,DE
+1502977024,1502978047,IE
+1502978048,1502979071,US
+1502979072,1502979135,IE
1502979136,1502979199,GB
-1502979200,1502979215,DE
+1502979200,1502979215,IE
1502979216,1502979231,CZ
-1502979232,1502979263,IE
-1502979264,1502979311,DE
+1502979232,1502979311,IE
1502979312,1502979327,FR
-1502979328,1502986239,DE
+1502979328,1502980095,IE
+1502980096,1502980223,DE
+1502980224,1502980351,IE
+1502980352,1502980607,US
+1502980608,1502981239,IE
+1502981240,1502981247,FR
+1502981248,1502986239,IE
1502986240,1503002623,NL
-1503002624,1503006719,GE
+1503002624,1503003135,GE
+1503003136,1503006719,AD
1503006720,1503010815,GB
1503010816,1503019007,IT
1503019008,1503051775,DK
@@ -31184,16 +37828,62 @@
1503133696,1503370138,PT
1503370139,1503370139,GB
1503370140,1503395839,PT
-1503395840,1503491082,FR
-1503491083,1503491083,GP
-1503491084,1503657983,FR
+1503395840,1503477759,FR
+1503477760,1503486719,GP
+1503486720,1503486975,MQ
+1503486976,1503488511,GP
+1503488512,1503489535,MQ
+1503489536,1503489791,FR
+1503489792,1503490047,MQ
+1503490048,1503490559,GP
+1503490560,1503491071,MQ
+1503491072,1503491583,GP
+1503491584,1503492095,MQ
+1503492096,1503493119,GP
+1503493120,1503494143,MQ
+1503494144,1503657983,FR
1503657984,1503690751,SE
1503690752,1503723519,IS
1503723520,1503789055,PL
1503789056,1503821823,NO
1503821824,1503854591,UA
1503854592,1503887359,RU
-1503887360,1503920127,DE
+1503887360,1503896411,DE
+1503896412,1503896415,AT
+1503896416,1503897367,DE
+1503897368,1503897375,BE
+1503897376,1503898175,DE
+1503898176,1503898183,IT
+1503898184,1503898239,DE
+1503898240,1503898303,RO
+1503898304,1503898335,DE
+1503898336,1503898343,MX
+1503898344,1503898351,DE
+1503898352,1503898359,CH
+1503898360,1503898791,DE
+1503898792,1503898799,AT
+1503898800,1503898911,DE
+1503898912,1503898919,LT
+1503898920,1503898935,DE
+1503898936,1503898943,IT
+1503898944,1503899071,DE
+1503899072,1503899079,AT
+1503899080,1503899687,DE
+1503899688,1503899695,IT
+1503899696,1503899703,BE
+1503899704,1503899927,DE
+1503899928,1503899935,IT
+1503899936,1503900679,DE
+1503900680,1503900687,BE
+1503900688,1503901567,DE
+1503901568,1503901695,TW
+1503901696,1503902215,DE
+1503902216,1503902223,US
+1503902224,1503906343,DE
+1503906344,1503906351,AT
+1503906352,1503906407,DE
+1503906408,1503906415,MX
+1503906416,1503920127,DE
1503920128,1503985663,HR
1503985664,1504018431,IR
1504018432,1504051199,RO
@@ -31210,7 +37900,11 @@
1504150272,1504150527,DE
1504150528,1504151039,GB
1504151040,1504151295,FR
-1504151296,1504247807,GB
+1504151296,1504151551,GB
+1504151552,1504152575,IE
+1504152576,1504154623,GB
+1504154624,1504155647,IE
+1504155648,1504247807,GB
1504247808,1504313343,RU
1504313344,1504378879,FR
1504378880,1504444415,PL
@@ -31234,7 +37928,10 @@
1505304576,1505312767,FR
1505312768,1505320959,RU
1505320960,1505329151,AT
-1505329152,1505337343,IE
+1505329152,1505333247,US
+1505333248,1505336575,IE
+1505336576,1505336831,GB
+1505336832,1505337343,IE
1505337344,1505345535,FR
1505345536,1505353727,MK
1505353728,1505361919,CZ
@@ -31277,7 +37974,9 @@
1505646848,1505647103,PL
1505647104,1505648639,CZ
1505648640,1505656831,LT
-1505665024,1505673215,IT
+1505665024,1505666611,IT
+1505666612,1505666615,AT
+1505666616,1505673215,IT
1505673216,1505681407,BG
1505681408,1505689599,RU
1505689600,1505697791,NO
@@ -31298,107 +37997,45 @@
1505745344,1505745344,US
1505745345,1505745346,GB
1505745347,1505745347,CA
-1505745348,1505746943,GB
-1505746944,1505755135,RU
+1505745348,1505747199,GB
+1505747200,1505747455,RU
+1505747456,1505747711,GB
+1505747712,1505747967,RU
+1505747968,1505751039,TR
+1505751040,1505755135,RU
1505755136,1506017279,GB
1506017280,1506082815,IR
-1506082816,1506083085,DE
-1506083086,1506083086,GB
-1506083087,1506083233,DE
-1506083234,1506083234,GB
-1506083235,1506083243,DE
-1506083244,1506083244,GB
-1506083245,1506084005,DE
-1506084006,1506084006,GB
-1506084007,1506084209,DE
-1506084210,1506084210,GB
-1506084211,1506084529,DE
-1506084530,1506084530,GB
-1506084531,1506085375,DE
-1506085376,1506085887,GB
-1506085888,1506086093,DE
-1506086094,1506086094,GB
-1506086095,1506086338,DE
-1506086339,1506086339,GB
-1506086340,1506086399,DE
-1506086400,1506086655,GB
-1506086656,1506086911,DE
-1506086912,1506087167,GB
-1506087168,1506087423,DE
-1506087424,1506087935,GB
-1506087936,1506088115,DE
-1506088116,1506088116,GB
-1506088117,1506088191,DE
-1506088192,1506088447,GB
-1506088448,1506089180,DE
-1506089181,1506089181,GB
-1506089182,1506089186,DE
-1506089187,1506089187,GB
-1506089188,1506089248,DE
-1506089249,1506089249,GB
-1506089250,1506089469,DE
-1506089470,1506089470,GB
-1506089471,1506089682,DE
-1506089683,1506089683,GB
-1506089684,1506089727,DE
-1506089728,1506090239,GB
-1506090240,1506090495,DE
-1506090496,1506091263,GB
-1506091264,1506091970,DE
-1506091971,1506091971,GB
-1506091972,1506092159,DE
-1506092160,1506092543,GB
-1506092544,1506092786,DE
-1506092787,1506092787,GB
-1506092788,1506092799,DE
-1506092800,1506093055,GB
-1506093056,1506093567,DE
-1506093568,1506093823,GB
-1506093824,1506094233,DE
-1506094234,1506094234,GB
-1506094235,1506094847,DE
-1506094848,1506095103,GB
-1506095104,1506095615,DE
-1506095616,1506097151,GB
-1506097152,1506097297,DE
-1506097298,1506097298,GB
-1506097299,1506097407,DE
-1506097408,1506098687,GB
-1506098688,1506098943,DE
-1506098944,1506099199,GB
-1506099200,1506099701,DE
-1506099702,1506099702,GB
-1506099703,1506099967,DE
-1506099968,1506100223,GB
-1506100224,1506100497,DE
-1506100498,1506100498,GB
-1506100499,1506100735,DE
-1506100736,1506101247,GB
-1506101248,1506101503,DE
-1506101504,1506123775,GB
-1506123776,1506148351,DE
+1506082816,1506148351,GB
1506148352,1506279423,IR
1506279424,1506312191,NL
1506312192,1506316287,GB
1506316288,1506322431,PL
1506322432,1506324479,DE
-1506324480,1506328575,RU
+1506324480,1506326527,RU
+1506326528,1506328575,ES
1506328576,1506330623,FI
1506330624,1506332671,NL
1506332672,1506334719,PL
-1506334720,1506336767,GB
1506336768,1506338815,PL
1506338816,1506340863,UA
1506340864,1506342911,RO
1506342912,1506344959,UA
1506344960,1506377727,LV
1506377728,1506410495,HR
-1506410496,1506443263,DE
+1506410496,1506422063,DE
+1506422064,1506422079,GB
+1506422080,1506443263,DE
1506443264,1506444397,GB
1506444398,1506444398,DE
1506444399,1506444757,GB
1506444758,1506444758,DE
-1506444759,1506445199,GB
+1506444759,1506445103,GB
+1506445104,1506445119,DE
+1506445120,1506445135,GB
+1506445136,1506445151,DE
+1506445152,1506445167,GB
+1506445168,1506445183,DE
+1506445184,1506445199,GB
1506445200,1506445215,DE
1506445216,1506446143,GB
1506446144,1506446151,FR
@@ -31406,13 +38043,17 @@
1506446824,1506446831,NL
1506446832,1506448319,GB
1506448320,1506448383,IT
-1506448384,1506449935,GB
+1506448384,1506449263,GB
+1506449264,1506449279,BE
+1506449280,1506449935,GB
1506449936,1506449943,CH
1506449944,1506451071,GB
1506451072,1506451135,DK
1506451136,1506451839,GB
1506451840,1506451871,ES
-1506451872,1506452095,GB
+1506451872,1506452031,GB
+1506452032,1506452047,ES
+1506452048,1506452095,GB
1506452096,1506452127,PT
1506452128,1506453311,GB
1506453312,1506453319,SE
@@ -31430,11 +38071,19 @@
1506458245,1506458245,CH
1506458246,1506458359,GB
1506458360,1506458367,CH
-1506458368,1506459763,GB
+1506458368,1506459207,GB
+1506459208,1506459215,BE
+1506459216,1506459231,GB
+1506459232,1506459247,BE
+1506459248,1506459295,GB
+1506459296,1506459327,BE
+1506459328,1506459763,GB
1506459764,1506459767,FR
1506459768,1506459968,GB
1506459969,1506459969,FR
-1506459970,1506460679,GB
+1506459970,1506460151,GB
+1506460152,1506460159,FR
+1506460160,1506460679,GB
1506460680,1506460683,IT
1506460684,1506462511,GB
1506462512,1506462527,FR
@@ -31444,29 +38093,43 @@
1506463036,1506463039,IT
1506463040,1506463551,GB
1506463552,1506463615,DE
-1506463616,1506464999,GB
+1506463616,1506463679,GB
+1506463680,1506463695,DE
+1506463696,1506463719,GB
+1506463720,1506463727,DE
+1506463728,1506464999,GB
1506465000,1506465007,NL
1506465008,1506465187,GB
1506465188,1506465188,NL
-1506465189,1506466431,GB
+1506465189,1506466383,GB
+1506466384,1506466391,DE
+1506466392,1506466431,GB
1506466432,1506466559,DE
-1506466560,1506471423,GB
-1506471424,1506471679,IT
-1506471680,1506471871,GB
-1506471872,1506471903,IT
-1506471904,1506475873,GB
+1506466560,1506469663,GB
+1506469664,1506469695,IT
+1506469696,1506469759,GB
+1506469760,1506469775,IT
+1506469776,1506469887,GB
+1506469888,1506471935,IT
+1506471936,1506475873,GB
1506475874,1506475874,DE
1506475875,1506476031,GB
1506476032,1506508799,KW
1506508800,1506541567,CZ
1506541568,1506574335,RU
1506574336,1506582527,DE
-1506582528,1506607103,IE
+1506582528,1506606567,IE
+1506606568,1506606575,GB
+1506606576,1506607103,IE
1506607104,1506639871,MK
1506639872,1506672639,NL
1506672640,1506689023,PL
1506689024,1506705407,CH
-1506705408,1506740223,GB
+1506705408,1506727935,GB
+1506727936,1506728959,FR
+1506728960,1506735989,GB
+1506735990,1506735990,US
+1506735991,1506740223,GB
1506742272,1506744319,SE
1506744320,1506746367,NL
1506746368,1506750463,RU
@@ -31476,7 +38139,8 @@
1506758656,1506760703,IT
1506760704,1506764799,RU
1506764800,1506766847,IT
-1506766848,1506768895,NO
+1506766848,1506768639,NO
+1506768640,1506768895,GE
1506768896,1506770943,AT
1506770944,1506772991,NL
1506772992,1506775039,GB
@@ -31518,7 +38182,9 @@
1507590144,1507655679,NL
1507655680,1507659775,DE
1507659776,1507663871,RU
-1507663872,1507667967,IT
+1507663872,1507665791,IT
+1507665792,1507665919,GR
+1507665920,1507667967,IT
1507667968,1507672063,RU
1507672064,1507676159,EE
1507676160,1507680255,IR
@@ -31543,13 +38209,15 @@
1508442112,1508458495,DK
1508458496,1508466687,DE
1508466688,1508468735,NO
-1508468736,1508470783,PL
+1508468736,1508470783,NL
1508470784,1508474879,SI
1508474880,1508491263,CZ
1508491264,1508507647,SE
1508507648,1508524031,GB
1508524032,1508540415,IE
-1508540416,1508556799,FR
+1508540416,1508546047,FR
+1508546048,1508546303,CI
+1508546304,1508556799,FR
1508556800,1508573183,PL
1508573184,1508589567,CZ
1508589568,1508605951,IR
@@ -31564,26 +38232,7 @@
1508671488,1508687871,CH
1508687872,1508704255,UZ
1508704256,1508720639,RU
-1508720640,1508721919,IL
-1508721920,1508722687,FR
-1508722688,1508723711,IL
-1508723712,1508724223,FR
-1508724224,1508724479,IL
-1508724480,1508726271,FR
-1508726272,1508728831,IL
-1508728832,1508728976,FR
-1508728977,1508728977,IL
-1508728978,1508729599,FR
-1508729600,1508731135,IL
-1508731136,1508731647,FR
-1508731648,1508731775,IL
-1508731776,1508732415,FR
-1508732416,1508733951,IL
-1508733952,1508734463,FR
-1508734464,1508734719,IL
-1508734720,1508735231,FR
-1508735232,1508735999,IL
-1508736000,1508737023,FR
+1508720640,1508737023,IL
1508737024,1508753407,SA
1508753408,1508769791,KG
1508769792,1508786175,PL
@@ -31597,10 +38246,15 @@
1508812528,1508815103,GB
1508815104,1508815359,NL
1508815360,1508815615,ES
-1508815616,1508817407,GB
+1508815616,1508817151,GB
+1508817152,1508817407,NL
1508817408,1508817663,CZ
-1508817664,1508818943,GB
-1508818944,1508835327,RO
+1508817664,1508818735,GB
+1508818736,1508818743,IE
+1508818744,1508818943,GB
+1508818944,1508830719,RO
+1508830720,1508831487,SK
+1508831488,1508835327,RO
1508835328,1508843519,CZ
1508843520,1508847615,PS
1508847616,1508851711,US
@@ -31619,14 +38273,18 @@
1509453824,1509457919,RU
1509457920,1509462015,NL
1509462016,1509466111,LI
-1509466112,1509470207,NL
+1509466112,1509469749,SC
+1509469750,1509469750,NL
+1509469751,1509470207,SC
1509470208,1509478399,RU
1509478400,1509482495,FR
1509482496,1509486591,RU
1509486592,1509490687,CZ
1509490688,1509494783,DK
1509494784,1509498879,RU
-1509498880,1509502975,CH
+1509498880,1509500927,CH
+1509500928,1509501951,DE
+1509501952,1509502975,CH
1509502976,1509507071,RU
1509507072,1509507199,GB
1509507200,1509507583,DE
@@ -31654,7 +38312,7 @@
1509605376,1509609471,PL
1509609472,1509617663,RU
1509617664,1509621759,CZ
-1509621760,1509625855,NL
+1509621760,1509625855,US
1509625856,1509629951,UA
1509629952,1509634047,HU
1509634048,1509638143,FR
@@ -31685,412 +38343,236 @@
1509933056,1509935103,CH
1509935104,1509941247,NL
1509941248,1509947391,SE
-1509947392,1509949439,NL
+1509947392,1509947647,NL
+1509947648,1509947903,US
+1509947904,1509948159,DE
+1509948160,1509948415,US
+1509948416,1509948671,ES
+1509948672,1509949439,NL
1509949440,1510604799,FR
-1510604800,1510605311,RE
-1510605312,1510605823,FR
-1510605824,1510606079,RE
-1510606080,1510607103,FR
-1510607104,1510609663,RE
-1510609664,1510610175,FR
+1510604800,1510606079,RE
+1510606080,1510606335,FR
+1510606336,1510606847,RE
+1510606848,1510607103,FR
+1510607104,1510609919,RE
+1510609920,1510610175,FR
1510610176,1510610431,RE
-1510610432,1510611199,FR
-1510611200,1510611711,RE
-1510611712,1510611967,FR
-1510611968,1510612223,RE
-1510612224,1510613247,FR
-1510613248,1510614015,RE
+1510610432,1510610687,FR
+1510610688,1510612479,RE
+1510612480,1510612991,FR
+1510612992,1510614015,RE
1510614016,1510614271,FR
-1510614272,1510614783,RE
-1510614784,1510615295,FR
-1510615296,1510615551,RE
-1510615552,1510615807,FR
-1510615808,1510616063,RE
-1510616064,1510616575,FR
-1510616576,1510616831,RE
-1510616832,1510617087,FR
-1510617088,1510617343,RE
-1510617344,1510617599,FR
-1510617600,1510618367,RE
-1510618368,1510618879,FR
-1510618880,1510619135,RE
-1510619136,1510619391,FR
-1510619392,1510620415,RE
-1510620416,1510620671,FR
-1510620672,1510620927,RE
+1510614272,1510615551,RE
+1510615552,1510616063,FR
+1510616064,1510616319,RE
+1510616320,1510616575,FR
+1510616576,1510617343,RE
+1510617344,1510617855,FR
+1510617856,1510620927,RE
1510620928,1510621183,FR
-1510621184,1510621439,RE
-1510621440,1510621951,FR
-1510621952,1510622975,RE
-1510622976,1510623999,FR
-1510624000,1510624255,RE
+1510621184,1510622207,RE
+1510622208,1510622463,FR
+1510622464,1510622975,RE
+1510622976,1510623231,FR
+1510623232,1510623487,RE
+1510623488,1510623743,FR
+1510623744,1510624255,RE
1510624256,1510624511,FR
-1510624512,1510625279,RE
-1510625280,1510625535,FR
-1510625536,1510625791,RE
-1510625792,1510626047,FR
-1510626048,1510626559,RE
-1510626560,1510627071,FR
-1510627072,1510627327,RE
-1510627328,1510627839,FR
-1510627840,1510628351,RE
-1510628352,1510628863,FR
-1510628864,1510630399,RE
-1510630400,1510630655,FR
-1510630656,1510630911,RE
-1510630912,1510631679,FR
-1510631680,1510632703,RE
-1510632704,1510632959,FR
-1510632960,1510635263,RE
-1510635264,1510635519,FR
-1510635520,1510636031,RE
-1510636032,1510636287,FR
-1510636288,1510637311,RE
-1510637312,1510637567,FR
-1510637568,1510637823,RE
-1510637824,1510638335,FR
+1510624512,1510624767,RE
+1510624768,1510625023,FR
+1510625024,1510627327,RE
+1510627328,1510627583,FR
+1510627584,1510628607,RE
+1510628608,1510628863,FR
+1510628864,1510629631,RE
+1510629632,1510629887,FR
+1510629888,1510631423,RE
+1510631424,1510631679,FR
+1510631680,1510638079,RE
+1510638080,1510638335,FR
1510638336,1510638591,RE
-1510638592,1510638847,FR
-1510638848,1510639103,RE
-1510639104,1510639871,FR
-1510639872,1510640639,RE
-1510640640,1510640895,FR
-1510640896,1510641151,RE
+1510638592,1510639871,FR
+1510639872,1510641151,RE
1510641152,1510641407,FR
-1510641408,1510641663,RE
-1510641664,1510641919,FR
-1510641920,1510642431,RE
-1510642432,1510642687,FR
-1510642688,1510643455,RE
-1510643456,1510644735,FR
-1510644736,1510645247,RE
+1510641408,1510645247,RE
1510645248,1510645503,FR
-1510645504,1510648319,RE
+1510645504,1510645759,RE
+1510645760,1510646015,FR
+1510646016,1510648319,RE
1510648320,1510648831,FR
-1510648832,1510649087,RE
-1510649088,1510649599,FR
-1510649600,1510649855,RE
-1510649856,1510650111,FR
-1510650112,1510650367,RE
+1510648832,1510650367,RE
1510650368,1510650623,FR
-1510650624,1510653183,RE
-1510653184,1510653695,FR
-1510653696,1510654463,RE
-1510654464,1510654719,FR
-1510654720,1510655231,RE
-1510655232,1510655487,FR
-1510655488,1510655743,RE
+1510650624,1510655743,RE
1510655744,1510655999,FR
1510656000,1510656255,RE
-1510656256,1510657279,FR
-1510657280,1510657535,RE
-1510657536,1510658047,FR
-1510658048,1510658303,RE
-1510658304,1510658559,FR
-1510658560,1510659583,RE
-1510659584,1510660095,FR
-1510660096,1510661119,RE
-1510661120,1510661375,FR
-1510661376,1510661887,RE
-1510661888,1510662143,FR
-1510662144,1510662655,RE
-1510662656,1510662911,FR
-1510662912,1510663423,RE
-1510663424,1510663935,FR
-1510663936,1510664191,RE
-1510664192,1510664447,FR
-1510664448,1510664703,RE
-1510664704,1510664959,FR
-1510664960,1510665727,RE
-1510665728,1510666239,FR
-1510666240,1510666495,RE
-1510666496,1510667263,FR
-1510667264,1510668031,RE
-1510668032,1510668403,FR
-1510668404,1510668404,RE
-1510668405,1510668543,FR
-1510668544,1510669311,RE
-1510669312,1510669567,FR
-1510669568,1510670079,RE
-1510670080,1511981311,FR
-1511981312,1511984127,GP
-1511984128,1511984383,FR
-1511984384,1511985919,GP
-1511985920,1511986175,FR
-1511986176,1511986431,GP
-1511986432,1511986943,FR
-1511986944,1511987455,GP
-1511987456,1511987967,FR
-1511987968,1511989759,GP
-1511989760,1511990015,FR
-1511990016,1511991295,GP
-1511991296,1511991807,FR
-1511991808,1511993343,GP
-1511993344,1511993599,FR
-1511993600,1511994623,GP
-1511994624,1511994879,FR
-1511994880,1511995391,GP
-1511995392,1511995647,FR
-1511995648,1511996415,GP
-1511996416,1511996671,FR
-1511996672,1511996927,GP
-1511996928,1511997439,FR
-1511997440,1511997695,MF
-1511997696,1511998719,FR
-1511998720,1511998975,MF
-1511998976,1511999231,BL
-1511999232,1511999743,FR
-1511999744,1511999999,BL
-1512000000,1512000767,FR
-1512000768,1512001023,MF
-1512001024,1512001535,FR
+1510656256,1510656767,FR
+1510656768,1510663423,RE
+1510663424,1510663679,FR
+1510663680,1510670079,RE
+1510670080,1511981055,FR
+1511981056,1511991295,GP
+1511991296,1511991551,FR
+1511991552,1511997439,GP
+1511997440,1511998207,BL
+1511998208,1511998463,FR
+1511998464,1511998719,BL
+1511998720,1511999487,MF
+1511999488,1512000255,BL
+1512000256,1512000511,FR
+1512000512,1512001023,BL
+1512001024,1512001279,FR
+1512001280,1512001535,BL
1512001536,1512001791,MF
-1512001792,1512002559,FR
-1512002560,1512002815,MF
+1512001792,1512002303,FR
+1512002304,1512002815,BL
1512002816,1512003327,FR
-1512003328,1512003583,MF
-1512003584,1512004095,FR
-1512004096,1512004351,MF
-1512004352,1512004607,BL
+1512003328,1512003583,BL
+1512003584,1512004095,MF
+1512004096,1512004351,FR
+1512004352,1512004607,MF
1512004608,1512004863,FR
1512004864,1512005375,BL
-1512005376,1512006143,MF
-1512006144,1512006911,BL
-1512006912,1512008959,FR
-1512008960,1512009215,MF
-1512009216,1512012031,FR
-1512012032,1512012287,BL
-1512012288,1512013823,FR
-1512013824,1512015359,GF
-1512015360,1512015615,FR
-1512015616,1512018431,GF
+1512005376,1512005631,FR
+1512005632,1512006399,BL
+1512006400,1512006655,MF
+1512006656,1512007167,FR
+1512007168,1512007423,GP
+1512007424,1512008703,FR
+1512008704,1512009471,MF
+1512009472,1512010495,FR
+1512010496,1512010751,MF
+1512010752,1512011263,FR
+1512011264,1512012543,BL
+1512012544,1512013311,FR
+1512013312,1512013823,BL
+1512013824,1512018431,GF
1512018432,1512018687,FR
-1512018688,1512018943,GF
-1512018944,1512019711,FR
-1512019712,1512021759,GF
-1512021760,1512022015,FR
-1512022016,1512026623,GF
+1512018688,1512026623,GF
1512026624,1512026879,FR
-1512026880,1512027135,GF
-1512027136,1512027391,FR
-1512027392,1512027647,GF
-1512027648,1512027903,FR
-1512027904,1512028671,GF
-1512028672,1512028927,FR
-1512028928,1512029951,GF
-1512029952,1512030207,FR
+1512026880,1512030207,GF
1512030208,1512046591,MQ
1512046592,1512308735,FR
-1512308736,1512309759,GP
-1512309760,1512310015,FR
-1512310016,1512310271,GP
-1512310272,1512310527,FR
-1512310528,1512311039,GP
+1512308736,1512311039,GP
1512311040,1512311295,FR
-1512311296,1512312575,GP
-1512312576,1512313087,FR
-1512313088,1512313343,GP
-1512313344,1512313599,FR
-1512313600,1512313855,GP
-1512313856,1512315135,FR
-1512315136,1512315903,GP
-1512315904,1512316415,FR
-1512316416,1512317695,GP
-1512317696,1512317951,FR
-1512317952,1512318719,GP
-1512318720,1512319231,FR
-1512319232,1512319487,GP
-1512319488,1512319743,FR
-1512319744,1512320511,GP
+1512311296,1512313855,GP
+1512313856,1512314111,FR
+1512314112,1512320511,GP
1512320512,1512321279,FR
-1512321280,1512321535,GP
-1512321536,1512321791,FR
-1512321792,1512322047,GP
-1512322048,1512322303,FR
-1512322304,1512322559,GP
-1512322560,1512322815,FR
-1512322816,1512323071,GP
-1512323072,1512324095,FR
-1512324096,1512324607,GP
-1512324608,1512325631,FR
-1512325632,1512326143,GP
-1512326144,1512329215,FR
-1512329216,1512329471,GP
-1512329472,1512329983,FR
-1512329984,1512330495,GP
-1512330496,1512330751,FR
-1512330752,1512331263,GP
-1512331264,1512331519,FR
-1512331520,1512331775,GP
-1512331776,1512332031,FR
-1512332032,1512332543,GP
-1512332544,1512332799,FR
-1512332800,1512333055,GP
-1512333056,1512337407,FR
-1512337408,1512338175,GP
-1512338176,1512338431,FR
-1512338432,1512338687,GP
-1512338688,1512338943,FR
-1512338944,1512339967,GP
-1512339968,1512340735,FR
-1512340736,1512341247,GP
-1512341248,1512342015,FR
-1512342016,1512343039,GP
-1512343040,1512344319,FR
-1512344320,1512345855,GP
-1512345856,1512346111,FR
-1512346112,1512346367,GP
-1512346368,1512347391,FR
-1512347392,1512348671,GP
-1512348672,1512348927,FR
-1512348928,1512349951,GP
-1512349952,1512350463,FR
-1512350464,1512350719,GP
-1512350720,1512350975,FR
-1512350976,1512353791,GP
-1512353792,1512354047,FR
-1512354048,1512354559,GP
-1512354560,1512355071,FR
-1512355072,1512355583,GP
-1512355584,1512356095,FR
-1512356096,1512356607,GP
-1512356608,1512357119,FR
-1512357120,1512357887,GP
-1512357888,1512358655,FR
-1512358656,1512358911,GP
-1512358912,1512362239,FR
-1512362240,1512362495,GP
+1512321280,1512323071,GP
+1512323072,1512323583,FR
+1512323584,1512324351,GP
+1512324352,1512324607,FR
+1512324608,1512326399,GP
+1512326400,1512329215,FR
+1512329216,1512332031,GP
+1512332032,1512332287,FR
+1512332288,1512333567,GP
+1512333568,1512336383,FR
+1512336384,1512336895,GP
+1512336896,1512337151,FR
+1512337152,1512340479,GP
+1512340480,1512340735,FR
+1512340736,1512343039,GP
+1512343040,1512343295,FR
+1512343296,1512343551,GP
+1512343552,1512343807,FR
+1512343808,1512346879,GP
+1512346880,1512347391,FR
+1512347392,1512356607,GP
+1512356608,1512356863,FR
+1512356864,1512358143,GP
+1512358144,1512358399,FR
+1512358400,1512358911,GP
+1512358912,1512361471,FR
+1512361472,1512361727,GP
+1512361728,1512361983,FR
+1512361984,1512362495,GP
1512362496,1512362751,FR
-1512362752,1512363263,GP
-1512363264,1512363519,FR
-1512363520,1512364031,GP
-1512364032,1512364287,FR
-1512364288,1512365055,GP
+1512362752,1512365055,GP
1512365056,1512365311,FR
-1512365312,1512365567,GP
-1512365568,1512365823,FR
-1512365824,1512366335,GP
-1512366336,1512369151,FR
-1512369152,1512370441,GP
+1512365312,1512366335,GP
+1512366336,1512368895,FR
+1512368896,1512370441,GP
1512370442,1512370442,FR
-1512370443,1512370943,GP
-1512370944,1512371199,FR
-1512371200,1512372735,GP
-1512372736,1512373247,FR
-1512373248,1512374015,GP
-1512374016,1513892207,FR
+1512370443,1512372735,GP
+1512372736,1512372991,FR
+1512372992,1512374271,GP
+1512374272,1513892207,FR
1513892208,1513892208,ES
1513892209,1514143743,FR
-1514143744,1514145791,SK
-1514145792,1514146303,FR
-1514146304,1514147839,SK
-1514147840,1514149375,FR
-1514149376,1514150911,SK
-1514150912,1514151935,FR
-1514151936,1514160127,SK
-1514160128,1514161151,FR
-1514161152,1514162175,SK
-1514162176,1514163711,FR
-1514163712,1514166271,SK
-1514166272,1514168063,FR
-1514168064,1514174463,SK
-1514174464,1514405887,FR
-1514405888,1514421247,ES
-1514421248,1514422271,FR
-1514422272,1514463231,ES
-1514463232,1514467327,FR
-1514467328,1514468351,ES
-1514468352,1514471423,FR
-1514471424,1514536959,ES
+1514143744,1514176511,SK
+1514176512,1514405887,FR
+1514405888,1514536959,ES
1514536960,1514602495,FR
-1514602496,1514639359,ES
-1514639360,1514640383,FR
-1514640384,1514641407,ES
-1514641408,1514642431,FR
-1514642432,1514644479,ES
-1514644480,1514644991,FR
-1514644992,1514646527,ES
-1514646528,1514647295,FR
-1514647296,1514652159,ES
-1514652160,1514652671,FR
-1514652672,1514652927,ES
-1514652928,1514653183,FR
-1514653184,1514658303,ES
-1514658304,1514658559,FR
-1514658560,1514658815,ES
-1514658816,1514659839,FR
-1514659840,1514662399,ES
-1514662400,1514662911,FR
-1514662912,1514663935,ES
-1514663936,1514664959,FR
-1514664960,1514665983,ES
-1514665984,1514799103,FR
-1514799104,1514864639,ES
-1514864640,1514897407,FR
-1514897408,1514924031,ES
-1514924032,1514925055,FR
-1514925056,1514925567,ES
-1514925568,1514926079,FR
-1514926080,1514930175,ES
+1514602496,1514668031,ES
+1514668032,1514799103,FR
+1514799104,1514930175,ES
1514930176,1514995711,FR
-1514995712,1515003903,ES
-1515003904,1515004927,FR
-1515004928,1515052287,ES
-1515052288,1515052989,FR
-1515052990,1515052990,ES
-1515052991,1515053055,FR
-1515053056,1515061247,ES
-1515061248,1515468031,FR
+1514995712,1515061247,ES
+1515061248,1515467007,FR
+1515467008,1515467263,ES
+1515467264,1515467519,FR
+1515467520,1515468031,US
1515468032,1515468287,ES
-1515468288,1515511807,FR
+1515468288,1515468543,NL
+1515468544,1515468799,DE
+1515468800,1515469823,FR
+1515469824,1515470079,DE
+1515470080,1515470335,FR
+1515470336,1515470847,US
+1515470848,1515488511,FR
+1515488512,1515489023,US
+1515489024,1515489039,DE
+1515489040,1515489055,FR
+1515489056,1515489087,DE
+1515489088,1515489151,FR
+1515489152,1515489167,ES
+1515489168,1515489535,FR
+1515489536,1515489791,US
+1515489792,1515491007,NL
+1515491008,1515511807,FR
1515511808,1515515903,RO
1515515904,1516109823,FR
1516109824,1516175359,ES
1516175360,1516240895,RO
-1516240896,1516929023,FR
-1516929024,1516934143,ES
-1516934144,1516934911,FR
-1516934912,1516935167,ES
-1516935168,1516935679,FR
-1516935680,1516936191,ES
-1516936192,1516936703,FR
-1516936704,1516937215,ES
-1516937216,1516937727,FR
-1516937728,1516938239,ES
-1516938240,1516940287,FR
-1516940288,1516942335,ES
-1516942336,1516946431,FR
-1516946432,1516947199,ES
-1516947200,1516947455,FR
-1516947456,1516948479,ES
-1516948480,1516950527,FR
-1516950528,1516953599,ES
-1516953600,1516954623,FR
-1516954624,1516961791,ES
+1516240896,1516896255,FR
+1516896256,1516961791,ES
1516961792,1518338047,FR
-1518338048,1518370815,LV
-1518370816,1518379007,NL
-1518379008,1518387199,SE
-1518387200,1518419967,NL
-1518419968,1518446874,SE
+1518338048,1518354431,LV
+1518354432,1518370815,LT
+1518370816,1518419967,NL
+1518419968,1518436351,SE
+1518436352,1518446874,NL
1518446875,1518446875,NO
-1518446876,1518460927,SE
+1518446876,1518452735,NL
+1518452736,1518460927,AT
1518460928,1518469119,LV
-1518469120,1518477311,SE
-1518477312,1518479359,EE
-1518479360,1518540543,SE
+1518469120,1518472191,SE
+1518472192,1518475263,LT
+1518475264,1518476287,SE
+1518476288,1518476799,EE
+1518476800,1518479359,SE
+1518479360,1518481407,EE
+1518481408,1518493695,SE
+1518493696,1518501887,LV
+1518501888,1518503935,EE
+1518503936,1518505983,SE
+1518505984,1518510079,LT
+1518510080,1518540543,SE
1518540544,1518540799,LT
1518540800,1518541479,SE
1518541480,1518541480,DE
1518541481,1518542847,SE
1518542848,1518565375,LT
-1518565376,1518575615,SE
+1518565376,1518567423,SE
+1518567424,1518575615,LV
1518575616,1518575616,LT
1518575617,1518577814,SE
1518577815,1518577815,LT
1518577816,1518579711,SE
-1518579712,1518579712,LT
-1518579713,1518641151,SE
+1518579712,1518583807,LT
+1518583808,1518600191,HR
+1518600192,1518641151,SE
1518641152,1518649343,HR
1518649344,1518665727,SE
1518665728,1518698495,LV
@@ -32106,65 +38588,54 @@
1518708839,1518709552,LV
1518709553,1518709553,LT
1518709554,1518723071,LV
-1518723072,1518727167,EE
-1518727168,1518731263,SE
+1518723072,1518731263,SE
1518731264,1518755839,LT
1518755840,1518759935,SE
1518759936,1518780415,LT
-1518780416,1518788607,HR
-1518788608,1518796799,SE
+1518780416,1518796799,HR
1518796800,1518862335,LT
1518862336,1518927871,SE
-1518927872,1518929919,LT
-1518929920,1518940159,SE
-1518940160,1518944255,LT
-1518944256,1518952447,SE
-1518952448,1518960639,LT
-1518960640,1518962175,SE
+1518927872,1518960639,LT
+1518960640,1518961663,SE
+1518961664,1518962175,EE
1518962176,1518962687,LV
-1518962688,1518977023,SE
+1518962688,1518966783,HR
+1518966784,1518967807,SE
+1518967808,1518977023,HR
1518977024,1518985215,LT
-1518985216,1519001599,SE
-1519001600,1519013887,LT
-1519013888,1519026175,SE
-1519026176,1519030271,LT
-1519030272,1519034367,SE
-1519034368,1519058943,LT
+1518985216,1518993407,SE
+1518993408,1519058943,LT
1519058944,1519083519,LV
-1519083520,1519091711,SE
+1519083520,1519084879,SE
+1519084880,1519084895,EE
+1519084896,1519091711,SE
1519091712,1519124479,LV
-1519124480,1519128575,LT
-1519128576,1519149055,SE
-1519149056,1519190015,LT
-1519190016,1519200255,SE
-1519200256,1519202303,EE
-1519202304,1519204351,SE
-1519204352,1519206399,EE
-1519206400,1519214591,SE
-1519214592,1519214592,LT
+1519124480,1519194111,LT
+1519194112,1519196159,SE
+1519196160,1519198207,LT
+1519198208,1519208703,SE
+1519208704,1519209471,LV
+1519209472,1519210495,SE
+1519210496,1519214592,LT
1519214593,1519218687,SE
1519218688,1519218688,LT
1519218689,1519271935,SE
1519271936,1519288319,NL
-1519288320,1519302655,SE
-1519302656,1519304703,LT
+1519288320,1519292415,SE
+1519292416,1519294463,LT
+1519294464,1519296511,SE
+1519296512,1519304703,LT
1519304704,1519308799,NL
-1519308800,1519310847,LT
-1519310848,1519312895,SE
-1519312896,1519316991,LT
-1519316992,1519325183,SE
-1519325184,1519327231,KZ
-1519327232,1519328255,SE
-1519328256,1519337471,KZ
+1519308800,1519321087,LT
+1519321088,1519337471,KZ
1519337472,1519352822,LT
1519352823,1519352823,KZ
1519352824,1519353855,LT
-1519353856,1519362047,KZ
-1519362048,1519363071,SE
-1519363072,1519370239,KZ
+1519353856,1519370239,KZ
1519370240,1519394815,SE
1519394816,1519398911,HR
-1519398912,1519411199,SE
+1519398912,1519403007,SE
+1519403008,1519411199,LT
1519411200,1519419391,NL
1519419392,1519452159,SE
1519452160,1519517695,NL
@@ -32173,19 +38644,24 @@
1519648768,1519714303,SA
1519714304,1519779839,NO
1519779840,1519910911,RU
-1519910912,1519936191,GB
+1519910912,1519927295,GB
+1519927296,1519935487,NL
+1519935488,1519936191,GB
1519936192,1519936255,DK
1519936256,1519943679,GB
1519943680,1519976447,AT
1519976448,1520009215,DE
-1520009216,1520017407,LB
-1520017408,1520041983,SY
+1520009216,1520041983,SY
1520041984,1520074751,RU
1520074752,1520107519,BG
-1520107520,1520140287,GB
+1520107520,1520139767,GB
+1520139768,1520139775,IE
+1520139776,1520140287,GB
1520140288,1520173055,RU
1520173056,1520205823,PL
-1520205824,1520271359,RU
+1520205824,1520230399,RU
+1520230400,1520234495,NL
+1520234496,1520271359,RU
1520271360,1520304127,SI
1520304128,1520435199,TR
1520435200,1521483775,ES
@@ -32196,14 +38672,18 @@
1522270208,1522401279,RU
1522401280,1522532351,EE
1522532352,1524629503,GB
-1524629504,1525678079,SE
+1524629504,1525115263,SE
+1525115264,1525115391,DK
+1525115392,1525678079,SE
1525678080,1526726655,GB
1526726656,1531183103,DE
1531183104,1531445247,FR
1531445248,1531707391,AE
1531707392,1531969535,RU
1531969536,1532100607,IT
-1532100608,1532231679,HU
+1532100608,1532199935,HU
+1532199936,1532200959,RS
+1532200960,1532231679,HU
1532231680,1532362751,GB
1532362752,1532493823,BE
1532493824,1532559359,FR
@@ -32226,7 +38706,9 @@
1532661760,1532665855,DE
1532665856,1532674047,PL
1532674048,1532675071,NL
-1532675072,1532682239,UA
+1532675072,1532681471,UA
+1532681472,1532681727,RU
+1532681728,1532682239,BY
1532682240,1532690431,LV
1532690432,1532755967,FR
1532755968,1532756223,GR
@@ -32237,26 +38719,35 @@
1532774400,1532782591,BG
1532782592,1532782847,IR
1532782848,1532784639,BG
-1532784640,1532785151,TR
+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
-1532790784,1532793087,BG
+1532790784,1532791807,BG
+1532791808,1532792831,DE
+1532792832,1532793087,BG
1532793088,1532794879,IR
-1532794880,1532795903,BG
+1532794880,1532795903,DE
1532795904,1532796927,IR
-1532796928,1532797951,BG
+1532796928,1532797439,DE
+1532797440,1532797951,IT
1532797952,1532798975,IR
1532798976,1532799999,BG
1532800000,1532801023,IR
1532801024,1532801535,SA
1532801536,1532802047,BG
1532802048,1532805631,IR
-1532805632,1532808191,BG
+1532805632,1532805887,BG
+1532805888,1532806143,DE
+1532806144,1532806399,GB
+1532806400,1532807167,BG
+1532807168,1532808191,DE
1532808192,1532811263,IR
-1532811264,1532812031,BG
+1532811264,1532812031,DE
1532812032,1532812287,RO
1532812288,1532813311,IR
1532813312,1532814335,BG
@@ -32303,18 +38794,20 @@
1533472768,1533474815,ES
1533474816,1533476863,FR
1533476864,1533478911,IE
-1533480960,1533481983,NL
-1533481984,1533482495,GB
+1533480960,1533481471,GB
+1533481472,1533481727,NL
+1533481728,1533482495,GB
1533482496,1533482751,NL
1533482752,1533483007,GB
1533483008,1533485055,AM
1533485056,1533485823,GB
-1533485824,1533486591,DE
-1533486592,1533486719,NO
+1533485824,1533486335,DE
+1533486336,1533486719,NO
1533486720,1533486783,DK
-1533486784,1533486847,FI
-1533486848,1533487103,DE
-1533487104,1533489151,FR
+1533486784,1533487103,FI
+1533487104,1533488639,FR
+1533488640,1533488895,US
+1533488896,1533489151,FR
1533489152,1533491199,ES
1533491200,1533493247,AM
1533493248,1533497343,RU
@@ -32336,7 +38829,8 @@
1533542400,1533607935,HU
1533607936,1533640703,LV
1533640704,1533659135,RU
-1533659136,1533661183,LV
+1533659136,1533660159,LV
+1533660160,1533661183,UA
1533661184,1533663231,SE
1533663232,1533665279,NL
1533665280,1533667327,GB
@@ -32363,26 +38857,83 @@
1533739264,1533757439,RU
1533757440,1533759487,NL
1533759488,1533761535,RU
-1533761536,1533763583,MD
+1533761536,1533763583,NL
1533763584,1533768703,RU
1533768704,1533768959,GB
-1533768960,1533771519,RU
+1533768960,1533769727,RU
+1533769728,1533770751,GB
+1533770752,1533771519,RU
1533771520,1533771775,GB
1533771776,1533804543,IR
-1533804544,1533808639,GB
-1533808640,1533816831,RU
-1533816832,1533819903,GB
+1533804544,1533805567,RU
+1533805568,1533807615,NL
+1533807616,1533808639,US
+1533808640,1533812735,RU
+1533812736,1533812991,GB
+1533812992,1533813247,AG
+1533813248,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
+1533818880,1533819903,NL
1533819904,1533820927,RU
-1533820928,1533833215,DE
+1533820928,1533829119,DE
+1533829120,1533833215,NO
1533833216,1533845503,IR
1533845504,1533847551,GB
1533847552,1533849599,RU
-1533849600,1533851135,EE
+1533849600,1533851135,SE
1533851136,1533851391,PL
-1533851392,1533851647,EE
-1533851648,1533853695,CH
-1533853696,1533870079,IQ
-1533870080,1533874175,GB
+1533851392,1533851647,SE
+1533851648,1533851807,CH
+1533851808,1533851839,HK
+1533851840,1533851871,CH
+1533851872,1533851887,AU
+1533851888,1533851903,CH
+1533851904,1533851919,DE
+1533851920,1533851923,FR
+1533851924,1533851935,CH
+1533851936,1533851939,GB
+1533851940,1533851951,CH
+1533851952,1533851955,IT
+1533851956,1533851967,CH
+1533851968,1533851971,PL
+1533851972,1533851983,CH
+1533851984,1533851987,BR
+1533851988,1533852191,CH
+1533852192,1533852195,IN
+1533852196,1533852223,CH
+1533852224,1533852239,RU
+1533852240,1533852675,CH
+1533852676,1533852687,ES
+1533852688,1533852711,FR
+1533852712,1533852719,CH
+1533852720,1533852731,AR
+1533852732,1533852739,NL
+1533852740,1533852757,FR
+1533852758,1533852767,GB
+1533852768,1533852783,BR
+1533852784,1533852829,GB
+1533852830,1533852849,ZA
+1533852850,1533852864,BE
+1533852865,1533852869,CH
+1533852870,1533852889,AU
+1533852890,1533852909,SG
+1533852910,1533852917,ES
+1533852918,1533852925,AR
+1533852926,1533853695,CH
+1533853696,1533854207,GB
+1533854208,1533855231,IR
+1533855232,1533857791,GB
+1533857792,1533859839,IR
+1533859840,1533862911,GB
+1533862912,1533863935,IQ
+1533863936,1533874175,GB
1533874176,1533878271,DE
1533878272,1533880319,CZ
1533880320,1533882367,GB
@@ -32390,14 +38941,12 @@
1533886464,1533894655,RU
1533894656,1533896703,ES
1533896704,1533898751,IR
-1533898752,1533899775,PT
-1533899776,1533900031,GB
-1533900032,1533900799,PT
+1533898752,1533900799,GB
1533900800,1533902847,FR
1533902848,1533911039,RU
1533911040,1533913087,ES
1533913088,1533915135,IT
-1533915136,1533919231,FR
+1533915136,1533919231,NL
1533919232,1533921279,IT
1533921280,1533923327,RU
1533923328,1533925375,TR
@@ -32405,34 +38954,134 @@
1533927424,1533929471,RU
1533929472,1533932799,GB
1533932800,1533933055,DE
-1533933056,1533933567,GB
-1533933568,1533935615,GI
-1533935616,1534066687,GB
+1533933056,1534066687,GB
1534066688,1534328831,AT
1534328832,1534459903,ES
1534459904,1534590975,AT
1534590976,1534656511,HU
-1534656512,1534712299,FR
-1534712300,1534712300,BE
-1534712301,1534713863,FR
-1534713864,1534713864,PT
-1534713865,1534714415,FR
+1534656512,1534711807,FR
+1534711808,1534712831,BE
+1534712832,1534713855,FR
+1534713856,1534713887,PT
+1534713888,1534714111,FR
+1534714112,1534714115,ES
+1534714116,1534714119,FR
+1534714120,1534714123,FI
+1534714124,1534714143,FR
+1534714144,1534714159,GB
+1534714160,1534714415,FR
1534714416,1534714431,ES
1534714432,1534714639,FR
1534714640,1534714655,IE
-1534714656,1534714751,FR
+1534714656,1534714687,ES
+1534714688,1534714691,FR
+1534714692,1534714695,GB
+1534714696,1534714751,FR
1534714752,1534714767,DE
-1534714768,1534715554,FR
-1534715555,1534715561,PT
-1534715562,1534716095,FR
+1534714768,1534714871,FR
+1534714872,1534714875,ES
+1534714876,1534714975,FR
+1534714976,1534714991,GB
+1534714992,1534715207,FR
+1534715208,1534715211,GB
+1534715212,1534715215,FR
+1534715216,1534715231,GB
+1534715232,1534715551,FR
+1534715552,1534715567,PT
+1534715568,1534715583,FR
+1534715584,1534715599,GB
+1534715600,1534715871,FR
+1534715872,1534715875,ES
+1534715876,1534715887,FR
+1534715888,1534715903,IT
+1534715904,1534716063,FR
+1534716064,1534716095,PT
1534716096,1534716099,DE
1534716100,1534716111,FR
1534716112,1534716115,DE
-1534716116,1534717199,FR
+1534716116,1534716239,FR
+1534716240,1534716255,GB
+1534716256,1534716319,FR
+1534716320,1534716351,GB
+1534716352,1534716375,FR
+1534716376,1534716379,ES
+1534716380,1534716391,FR
+1534716392,1534716395,ES
+1534716396,1534716399,GB
+1534716400,1534716495,FR
+1534716496,1534716511,ES
+1534716512,1534716655,FR
+1534716656,1534716663,IE
+1534716664,1534717191,FR
+1534717192,1534717199,FI
1534717200,1534717215,GB
-1534717216,1534718087,FR
+1534717216,1534717247,FR
+1534717248,1534717251,ES
+1534717252,1534717263,FR
+1534717264,1534717267,ES
+1534717268,1534717343,FR
+1534717344,1534717359,GB
+1534717360,1534717583,FR
+1534717584,1534717587,CZ
+1534717588,1534717739,FR
+1534717740,1534717743,GB
+1534717744,1534717963,FR
+1534717964,1534717967,PL
+1534717968,1534717995,FR
+1534717996,1534717999,GB
+1534718000,1534718031,FR
+1534718032,1534718047,ES
+1534718048,1534718087,FR
1534718088,1534718091,ES
-1534718092,1534722047,FR
+1534718092,1534718103,FR
+1534718104,1534718111,ES
+1534718112,1534718127,FR
+1534718128,1534718143,ES
+1534718144,1534718383,FR
+1534718384,1534718387,GB
+1534718388,1534718415,FR
+1534718416,1534718419,ES
+1534718420,1534718423,GB
+1534718424,1534718719,FR
+1534718720,1534718735,GB
+1534718736,1534718763,FR
+1534718764,1534718767,ES
+1534718768,1534718799,FR
+1534718800,1534718807,ES
+1534718808,1534719071,FR
+1534719072,1534719075,FI
+1534719076,1534719679,FR
+1534719680,1534719695,GB
+1534719696,1534719703,FR
+1534719704,1534719711,GB
+1534719712,1534719739,FR
+1534719740,1534719743,ES
+1534719744,1534719747,FR
+1534719748,1534719751,ES
+1534719752,1534719783,FR
+1534719784,1534719787,ES
+1534719788,1534720011,FR
+1534720012,1534720015,IE
+1534720016,1534720023,FR
+1534720024,1534720027,PL
+1534720028,1534720079,FR
+1534720080,1534720095,ES
+1534720096,1534720175,FR
+1534720176,1534720179,NL
+1534720180,1534720183,ES
+1534720184,1534720367,FR
+1534720368,1534720375,ES
+1534720376,1534720387,FR
+1534720388,1534720391,FI
+1534720392,1534720767,FR
+1534720768,1534720783,ES
+1534720784,1534720831,FR
+1534720832,1534720863,GB
+1534720864,1534721807,FR
+1534721808,1534721823,GB
+1534721824,1534721975,FR
+1534721976,1534721979,FI
+1534721980,1534722047,FR
1534722048,1534787583,RU
1534787584,1534791679,RO
1534791680,1534795775,RU
@@ -32453,103 +39102,298 @@
1534984192,1534988287,NO
1534988288,1535049727,ES
1535049728,1535115263,SK
-1535115264,1535131647,AT
-1535131648,1535148031,HR
+1535115264,1535116287,AT
+1535116288,1535123455,SE
+1535123456,1535148031,HR
1535148032,1535197183,AT
-1535197184,1535199231,EE
-1535199232,1535205375,AT
+1535197184,1535203327,SE
+1535203328,1535203359,EE
+1535203360,1535205375,SE
1535205376,1535213567,EE
-1535213568,1535311871,AT
+1535213568,1535246335,SE
+1535246336,1535311871,AT
1535311872,1535344639,EE
-1535344640,1535352831,AT
-1535352832,1535354879,EE
-1535354880,1535356927,AT
-1535356928,1535377407,EE
+1535344640,1535352831,HR
+1535352832,1535356927,EE
+1535356928,1535369215,HR
+1535369216,1535377407,LT
1535442944,1535451135,RU
1535451136,1535459327,DK
1535459328,1535475711,AT
1535475712,1535508479,IR
-1535508480,1535509296,FR
-1535509297,1535509297,ES
-1535509298,1535511871,FR
+1535508480,1535509151,FR
+1535509152,1535509183,IT
+1535509184,1535509247,DE
+1535509248,1535509279,FR
+1535509280,1535509311,ES
+1535509312,1535509487,FR
+1535509488,1535509503,PT
+1535509504,1535511615,FR
+1535511616,1535511679,DE
+1535511680,1535511871,FR
1535511872,1535511935,ES
-1535511936,1535512121,FR
-1535512122,1535512122,PL
-1535512123,1535515055,FR
+1535511936,1535511999,FR
+1535512000,1535512015,GB
+1535512016,1535512095,FR
+1535512096,1535512127,PL
+1535512128,1535512303,FR
+1535512304,1535512319,NL
+1535512320,1535512779,FR
+1535512780,1535512783,PL
+1535512784,1535512799,FR
+1535512800,1535512831,DE
+1535512832,1535514767,FR
+1535514768,1535514783,LT
+1535514784,1535514895,FR
+1535514896,1535514911,NL
+1535514912,1535514943,FI
+1535514944,1535515007,IE
+1535515008,1535515055,FR
1535515056,1535515071,IT
-1535515072,1535515331,FR
+1535515072,1535515231,FR
+1535515232,1535515263,CZ
+1535515264,1535515331,FR
1535515332,1535515335,ES
-1535515336,1535515504,FR
-1535515505,1535515505,PL
-1535515506,1535537535,FR
+1535515336,1535515423,FR
+1535515424,1535515455,IT
+1535515456,1535515519,PL
+1535515520,1535515647,GB
+1535515648,1535515727,FR
+1535515728,1535515735,NL
+1535515736,1535515743,FR
+1535515744,1535515775,PT
+1535515776,1535515935,FR
+1535515936,1535515967,LT
+1535515968,1535521407,FR
+1535521408,1535521535,NL
+1535521536,1535537343,FR
+1535537344,1535537407,DE
+1535537408,1535537535,FR
1535537536,1535537663,ES
-1535537664,1535540949,FR
-1535540950,1535540951,BE
-1535540952,1535540954,FR
-1535540955,1535540955,BE
-1535540956,1535542640,FR
+1535537664,1535537855,FR
+1535537856,1535537919,IT
+1535537920,1535538111,FR
+1535538112,1535538175,FI
+1535538176,1535538815,FR
+1535538816,1535538879,IE
+1535538880,1535540159,FR
+1535540160,1535540223,CZ
+1535540224,1535540799,FR
+1535540800,1535540863,PL
+1535540864,1535540991,BE
+1535540992,1535542079,FR
+1535542080,1535542143,FI
+1535542144,1535542640,FR
1535542641,1535542641,BE
-1535542642,1535546270,FR
-1535546271,1535546271,IT
-1535546272,1535547158,FR
+1535542642,1535545551,FR
+1535545552,1535545567,PT
+1535545568,1535545599,DE
+1535545600,1535545855,GB
+1535545856,1535545983,FR
+1535545984,1535546111,IE
+1535546112,1535546239,FR
+1535546240,1535546367,IT
+1535546368,1535546695,FR
+1535546696,1535546703,ES
+1535546704,1535547158,FR
1535547159,1535547159,IT
-1535547160,1535547407,FR
+1535547160,1535547167,FR
+1535547168,1535547183,IT
+1535547184,1535547199,FR
+1535547200,1535547207,ES
+1535547208,1535547407,FR
1535547408,1535547423,DE
-1535547424,1535548091,FR
+1535547424,1535547471,FR
+1535547472,1535547487,LT
+1535547488,1535548091,FR
1535548092,1535548095,PL
-1535548096,1535549040,FR
-1535549041,1535549041,PT
-1535549042,1535549683,FR
-1535549684,1535549684,PL
-1535549685,1535550519,FR
+1535548096,1535548159,IT
+1535548160,1535548223,FR
+1535548224,1535548415,ES
+1535548416,1535548463,FR
+1535548464,1535548479,LT
+1535548480,1535548991,FR
+1535548992,1535549055,PT
+1535549056,1535549151,FR
+1535549152,1535549183,PL
+1535549184,1535549279,FR
+1535549280,1535549295,CZ
+1535549296,1535549311,FR
+1535549312,1535549439,NL
+1535549440,1535549631,FR
+1535549632,1535549695,PL
+1535549696,1535550015,FR
+1535550016,1535550079,IT
+1535550080,1535550519,FR
1535550520,1535550523,DE
1535550524,1535550547,FR
1535550548,1535550551,DE
-1535550552,1535551679,FR
+1535550552,1535550911,FR
+1535550912,1535550927,BE
+1535550928,1535551087,FR
+1535551088,1535551103,ES
+1535551104,1535551679,FR
1535551680,1535551695,GB
1535551696,1535551771,FR
1535551772,1535551772,CZ
-1535551773,1535551843,FR
+1535551773,1535551807,FR
+1535551808,1535551823,LT
+1535551824,1535551843,FR
1535551844,1535551844,FI
1535551845,1535551903,FR
1535551904,1535551919,NL
-1535551920,1535552463,FR
+1535551920,1535551999,FR
+1535552000,1535552127,IT
+1535552128,1535552215,FR
+1535552216,1535552223,ES
+1535552224,1535552463,FR
1535552464,1535552479,NL
-1535552480,1535553343,FR
+1535552480,1535552895,FR
+1535552896,1535553023,DE
+1535553024,1535553343,FR
1535553344,1535553407,PL
-1535553408,1535553489,FR
-1535553490,1535553490,ES
-1535553491,1535554295,FR
-1535554296,1535554296,PL
-1535554297,1535554372,FR
-1535554373,1535554373,ES
-1535554374,1535554847,FR
+1535553408,1535553471,FR
+1535553472,1535553535,ES
+1535553536,1535553727,FR
+1535553728,1535553791,IT
+1535553792,1535553983,FR
+1535553984,1535554047,GB
+1535554048,1535554287,FR
+1535554288,1535554303,PL
+1535554304,1535554323,FR
+1535554324,1535554327,PL
+1535554328,1535554351,FR
+1535554352,1535554367,PT
+1535554368,1535554431,ES
+1535554432,1535554559,DE
+1535554560,1535554687,FR
+1535554688,1535554815,IT
+1535554816,1535554847,FR
1535554848,1535554863,PT
-1535554864,1535556095,FR
+1535554864,1535555103,FR
+1535555104,1535555135,LT
+1535555136,1535555679,FR
+1535555680,1535555711,PL
+1535555712,1535555935,FR
+1535555936,1535555951,ES
+1535555952,1535556095,FR
1535556096,1535556159,ES
1535556160,1535556271,FR
1535556272,1535556287,GB
-1535556288,1535559695,FR
+1535556288,1535556407,FR
+1535556408,1535556411,IT
+1535556412,1535556479,FR
+1535556480,1535556607,NL
+1535556608,1535556863,FR
+1535556864,1535557119,GB
+1535557120,1535557311,FR
+1535557312,1535557375,PL
+1535557376,1535558015,FR
+1535558016,1535558143,ES
+1535558144,1535558591,FR
+1535558592,1535558655,DE
+1535558656,1535558847,FR
+1535558848,1535558911,PL
+1535558912,1535559191,FR
+1535559192,1535559199,ES
+1535559200,1535559695,FR
1535559696,1535559711,IT
-1535559712,1535560151,FR
-1535560152,1535560152,GB
-1535560153,1535562403,FR
+1535559712,1535559743,LT
+1535559744,1535559807,FR
+1535559808,1535559871,FI
+1535559872,1535559935,FR
+1535559936,1535560191,GB
+1535560192,1535560287,FR
+1535560288,1535560319,FI
+1535560320,1535560511,FR
+1535560512,1535560575,PT
+1535560576,1535560703,DE
+1535560704,1535560915,FR
+1535560916,1535560919,PL
+1535560920,1535561407,FR
+1535561408,1535561471,CZ
+1535561472,1535561567,FR
+1535561568,1535561599,PL
+1535561600,1535561695,FR
+1535561696,1535561727,ES
+1535561728,1535562303,FR
+1535562304,1535562367,PL
+1535562368,1535562403,FR
1535562404,1535562407,GB
-1535562408,1535566655,FR
+1535562408,1535562591,FR
+1535562592,1535562623,FI
+1535562624,1535562699,FR
+1535562700,1535562703,PT
+1535562704,1535562719,FR
+1535562720,1535562751,IT
+1535562752,1535562879,FR
+1535562880,1535563007,ES
+1535563008,1535563371,FR
+1535563372,1535563375,FI
+1535563376,1535563407,FR
+1535563408,1535563411,PL
+1535563412,1535563455,FR
+1535563456,1535563519,IE
+1535563520,1535563711,FR
+1535563712,1535563775,IT
+1535563776,1535563855,FR
+1535563856,1535563871,IT
+1535563872,1535563903,FR
+1535563904,1535564031,NL
+1535564032,1535564351,FR
+1535564352,1535564415,IE
+1535564416,1535564543,BE
+1535564544,1535564767,FR
+1535564768,1535564799,PL
+1535564800,1535565503,FR
+1535565504,1535565567,IT
+1535565568,1535565615,FR
+1535565616,1535565623,ES
+1535565624,1535565759,FR
+1535565760,1535565823,CZ
+1535565824,1535566143,FR
+1535566144,1535566159,ES
+1535566160,1535566575,FR
+1535566576,1535566591,NL
+1535566592,1535566655,FR
1535566656,1535566719,PL
-1535566720,1535567590,FR
-1535567591,1535567591,ES
-1535567592,1535569343,FR
+1535566720,1535567551,FR
+1535567552,1535567615,ES
+1535567616,1535567871,GB
+1535567872,1535567999,FR
+1535568000,1535568127,DE
+1535568128,1535568351,FR
+1535568352,1535568383,LT
+1535568384,1535569023,FR
+1535569024,1535569151,ES
+1535569152,1535569343,FR
1535569344,1535569407,PL
-1535569408,1535573203,FR
+1535569408,1535570991,FR
+1535570992,1535571007,LT
+1535571008,1535571015,ES
+1535571016,1535571071,FR
+1535571072,1535571199,GB
+1535571200,1535571263,BE
+1535571264,1535571519,FR
+1535571520,1535571583,ES
+1535571584,1535571711,FR
+1535571712,1535571743,PL
+1535571744,1535571903,FR
+1535571904,1535571967,NL
+1535571968,1535572799,FR
+1535572800,1535572831,IE
+1535572832,1535573203,FR
1535573204,1535573207,FI
1535573208,1535573211,FR
1535573212,1535573215,GB
-1535573216,1535573307,FR
+1535573216,1535573231,FR
+1535573232,1535573247,PL
+1535573248,1535573307,FR
1535573308,1535573311,NL
1535573312,1535573391,FR
1535573392,1535573407,ES
-1535573408,1535573439,FR
+1535573408,1535573423,FR
+1535573424,1535573439,CZ
1535573440,1535573503,PL
1535573504,1535573543,FR
1535573544,1535573547,LT
@@ -32581,7 +39425,11 @@
1535836160,1535868927,CZ
1535868928,1535901695,BG
1535901696,1535934463,GR
-1535934464,1535967231,KW
+1535934464,1535966337,KW
+1535966338,1535966338,SA
+1535966339,1535966343,KW
+1535966344,1535966344,SA
+1535966345,1535967231,KW
1535967232,1535999999,AT
1536000000,1536032767,NL
1536032768,1536036863,LV
@@ -32619,10 +39467,7 @@
1536131072,1536143359,RU
1536143360,1536147455,GB
1536147456,1536151551,IT
-1536151552,1536152575,RS
-1536152576,1536152607,XK
-1536152608,1536155135,RS
-1536155136,1536155647,XK
+1536151552,1536155647,RS
1536155648,1536159743,IL
1536159744,1536163839,DE
1536163840,1536180223,SY
@@ -32646,55 +39491,36 @@
1536393216,1536409599,SA
1536409600,1536425983,HU
1536425984,1536442367,SK
-1536442368,1536444927,RS
-1536444928,1536448906,XK
-1536448907,1536448907,RS
-1536448908,1536450230,XK
-1536450231,1536450231,RS
-1536450232,1536450494,XK
-1536450495,1536450495,RS
-1536450496,1536450559,XK
-1536450560,1536453375,RS
-1536453376,1536453631,XK
-1536453632,1536453887,RS
-1536453888,1536453903,XK
-1536453904,1536456191,RS
-1536456192,1536456447,XK
-1536456448,1536458751,RS
-1536458752,1536475135,BG
-1536475136,1536476415,NL
-1536476416,1536476671,GB
-1536476672,1536479743,NL
-1536479744,1536480255,GB
-1536480256,1536491519,NL
-1536491520,1536507903,SE
+1536442368,1536458751,RS
+1536458752,1536459775,BG
+1536459776,1536460799,US
+1536460800,1536475135,BG
+1536475136,1536476159,NL
+1536476160,1536476671,GB
+1536476672,1536479231,NL
+1536479232,1536483327,GB
+1536483328,1536491519,NL
+1536491520,1536499711,NO
+1536499712,1536503807,SE
+1536503808,1536507903,NO
1536507904,1536524287,RU
1536524288,1536540671,BY
1536540672,1536557055,PL
1536557056,1536573439,FI
-1536573440,1536574463,RS
-1536574464,1536574719,XK
-1536574720,1536574975,RS
-1536574976,1536575615,XK
-1536575616,1536579071,RS
-1536579072,1536579327,XK
-1536579328,1536579583,RS
-1536579584,1536579839,XK
-1536579840,1536580351,RS
-1536580352,1536580607,XK
-1536580608,1536589823,RS
+1536573440,1536589823,RS
1536589824,1536614399,PL
1536614400,1536622591,DK
1536622592,1536626687,GB
-1536626688,1536630783,DE
+1536626688,1536626943,DE
+1536626944,1536627072,AT
+1536627073,1536630783,DE
1536630784,1536634879,RU
1536634880,1536643071,FR
1536643072,1536647167,TR
1536647168,1536651263,ES
1536651264,1536655359,FR
1536655360,1536659455,GE
-1536659456,1536659711,ZA
-1536659712,1536663551,DE
+1536659456,1536663551,DE
1536663552,1536667647,SA
1536667648,1536675839,RU
1536675840,1536679935,GB
@@ -32733,9 +39559,7 @@
1538990080,1538998271,CZ
1538998272,1539006463,AD
1539006464,1539014655,AL
-1539014656,1539019775,XK
-1539019776,1539020031,RS
-1539020032,1539022847,XK
+1539014656,1539022847,RS
1539022848,1539031039,LT
1539031040,1539039231,IT
1539039232,1539047423,PL
@@ -32796,7 +39620,7 @@
1539233792,1539235839,LU
1539235840,1539237887,DE
1539237888,1539239935,RU
-1539239936,1539244031,DE
+1539239936,1539241983,DE
1539244032,1539260415,BA
1539260416,1539276799,SK
1539276800,1539280895,SE
@@ -32807,7 +39631,8 @@
1539284608,1539284991,FR
1539284992,1539289087,TR
1539289088,1539290111,DE
-1539290112,1539291135,RU
+1539290112,1539290623,RU
+1539290624,1539291135,CH
1539291136,1539291391,NL
1539291392,1539291647,CZ
1539291648,1539293183,RU
@@ -32815,8 +39640,12 @@
1539297280,1539301375,BG
1539301376,1539309567,RU
1539309568,1539310591,PL
-1539312640,1539314687,DE
+1539310592,1539311615,IQ
+1539311616,1539312639,RU
+1539312640,1539313663,DE
+1539313664,1539314687,GB
1539314688,1539315711,RU
+1539315712,1539316735,IT
1539316736,1539317759,SE
1539317760,1539318783,CZ
1539318784,1539319807,NL
@@ -32832,6 +39661,7 @@
1539330048,1539330303,RU
1539330304,1539330559,DE
1539330560,1539331071,RU
+1539331072,1539332095,NL
1539332096,1539333119,PL
1539333120,1539335167,RU
1539335168,1539336191,CH
@@ -32848,6 +39678,7 @@
1539348480,1539351551,UA
1539351552,1539352575,PL
1539352576,1539354623,RU
+1539354624,1539355647,LB
1539355648,1539357695,UA
1539357696,1539358719,RU
1539358720,1539359743,GB
@@ -32866,8 +39697,10 @@
1539373056,1539374079,PL
1539374080,1539375103,SE
1539375104,1539376127,NO
+1539376128,1539377151,RO
1539377152,1539378175,UA
1539378176,1539379199,PL
+1539379200,1539380223,MD
1539380224,1539381247,CH
1539381248,1539382271,RS
1539382272,1539383295,RO
@@ -32879,7 +39712,7 @@
1539387392,1539388415,IL
1539388416,1539389439,PL
1539389440,1539389951,FR
-1539389952,1539390463,RU
+1539390464,1539391487,GR
1539391488,1539392511,LV
1539392512,1539393535,UA
1539393536,1539393791,DE
@@ -32891,7 +39724,7 @@
1539397632,1539398143,RU
1539398144,1539398655,PL
1539398656,1539399679,ES
-1539399680,1539400703,PL
+1539399680,1539401727,PL
1539401728,1539402239,GB
1539402240,1539402751,FR
1539402752,1539403263,GB
@@ -32903,22 +39736,25 @@
1539410944,1539411967,RU
1539411968,1539412991,PL
1539412992,1539414015,RU
+1539414016,1539415039,ES
1539415040,1539416063,BG
1539416064,1539417087,PL
1539417088,1539418111,UA
1539418112,1539419135,RU
1539419136,1539420159,UA
-1539420160,1539421183,RU
+1539420160,1539422207,RU
1539422208,1539423231,PL
1539423232,1539424255,IE
+1539424256,1539425279,UA
1539425280,1539426303,PL
1539426304,1539427327,BG
1539427328,1539428351,UA
1539428352,1539429375,PL
1539429376,1539434495,RU
-1539434496,1539435519,UA
+1539434496,1539435519,GB
1539435520,1539437567,RU
1539437568,1539438591,GB
+1539438592,1539439615,PL
1539439616,1539440639,UA
1539441152,1539441663,RU
1539441664,1539442175,IL
@@ -32941,6 +39777,7 @@
1539452416,1539452927,GB
1539452928,1539453439,CH
1539453440,1539453951,UA
+1539453952,1539454975,PT
1539454976,1539455487,UA
1539455488,1539455999,RU
1539456000,1539456511,FR
@@ -32995,6 +39832,7 @@
1539488256,1539488767,SE
1539488768,1539489279,PL
1539489280,1539489791,RU
+1539489792,1539490815,UA
1539490816,1539491327,CH
1539491328,1539491839,PL
1539491840,1539492351,RU
@@ -33051,6 +39889,7 @@
1539521024,1539521535,DK
1539521536,1539522047,RU
1539522048,1539522559,RO
+1539522560,1539523583,NL
1539523584,1539524095,UA
1539524096,1539524607,GB
1539524608,1539525119,FR
@@ -33067,7 +39906,7 @@
1539530240,1539530751,AT
1539530752,1539531263,UA
1539531264,1539531775,RO
-1539531776,1539532543,RU
+1539531776,1539532287,RU
1539532544,1539532799,CZ
1539532800,1539533311,DE
1539533312,1539533823,CZ
@@ -33135,9 +39974,10 @@
1539571712,1539572735,UA
1539572736,1539573759,RU
1539573760,1539575807,PL
-1539576832,1539577855,GB
+1539575808,1539576831,IT
1539579904,1539580927,RU
1539580928,1539581951,AM
+1539581952,1539582975,CZ
1539582976,1539583999,RO
1539584000,1539585023,PL
1539585024,1539586047,UA
@@ -33151,37 +39991,41 @@
1539598336,1539599359,NL
1539599360,1539600383,PL
1539600384,1539601407,HU
-1539601408,1539602431,DE
+1539601408,1539602431,GB
1539602432,1539603455,UA
1539603456,1539604479,BG
1539604480,1539605503,ES
1539605504,1539606527,DE
-1539606528,1539607551,RU
+1539606528,1539607551,GB
1539607552,1539609599,DE
1539609600,1539610623,UA
1539610624,1539611647,RU
1539611648,1539614719,UA
1539614720,1539615743,NL
1539615744,1539616767,DK
-1539616768,1539617791,UA
+1539616768,1539618815,UA
1539618816,1539619839,GB
1539619840,1539620863,RU
1539620864,1539622911,UA
+1539622912,1539623935,RO
1539623936,1539624959,DE
+1539624960,1539625983,ES
1539625984,1539627007,PL
1539629056,1539630079,BG
1539630080,1539631103,UA
-1539632128,1539633151,RU
+1539631104,1539633151,RU
1539633152,1539634175,SE
-1539634176,1539637247,RU
+1539634176,1539638271,RU
1539638272,1539639295,UA
1539639296,1539640319,RU
-1539640320,1539641343,CY
+1539640320,1539641343,PL
1539641344,1539642367,UA
1539642368,1539643391,RU
1539643392,1539644415,UA
1539644416,1539645439,DE
1539645440,1539646463,GB
+1539646464,1539647487,RO
+1539647488,1539648511,TR
1539648512,1539649023,CY
1539649024,1539649535,LB
1539649536,1539650559,UA
@@ -33191,6 +40035,7 @@
1539652096,1539652607,UA
1539652608,1539653631,IL
1539653632,1539654655,RU
+1539654656,1539655679,UA
1539655680,1539656703,NL
1539656704,1539657727,RU
1539657728,1539658751,UA
@@ -33203,6 +40048,7 @@
1539664896,1539665919,BE
1539665920,1539666943,RU
1539666944,1539667967,CZ
+1539667968,1539668991,ES
1539668992,1539670015,RU
1539670016,1539672063,UA
1539672064,1539673087,FR
@@ -33214,14 +40060,17 @@
1539680256,1539681279,UA
1539681280,1539684351,RU
1539684352,1539685375,UA
-1539685376,1539690495,RU
+1539685376,1539687423,RU
+1539687424,1539688447,MD
+1539688448,1539689471,PL
+1539689472,1539690495,RU
1539690496,1539691519,FI
1539691520,1539692543,RU
1539692544,1539694591,UA
1539694592,1539695615,PL
1539695616,1539696639,GB
-1539696640,1539697663,CZ
1539697664,1539698687,UA
+1539698688,1539699711,ES
1539699712,1539700735,RO
1539700736,1539701759,DK
1539701760,1539702783,UA
@@ -33357,7 +40206,7 @@
1539741184,1539741439,PL
1539741440,1539741695,NL
1539741696,1539741951,DE
-1539741952,1539742207,UA
+1539741952,1539742207,RU
1539742208,1539742463,CH
1539742464,1539742719,RU
1539742720,1539742975,LV
@@ -33373,7 +40222,7 @@
1539745792,1539746303,DK
1539747072,1539747327,CH
1539747328,1539747583,NL
-1539747584,1539747839,UA
+1539747584,1539747839,RU
1539747840,1539748095,NO
1539748096,1539748351,PL
1539748352,1539748607,NL
@@ -33429,7 +40278,7 @@
1539763968,1539764223,PT
1539764224,1539764479,AT
1539764480,1539764735,GB
-1539764736,1539764991,DE
+1539764736,1539764991,RO
1539764992,1539765247,BE
1539765248,1539765503,GB
1539765504,1539766015,PL
@@ -33444,7 +40293,6 @@
1539768320,1539768575,FR
1539768576,1539768831,GB
1539768832,1539769087,IT
-1539769088,1539769343,BE
1539769344,1539769599,RU
1539769600,1539769855,AT
1539769856,1539770111,FR
@@ -33569,7 +40417,6 @@
1539806976,1539807231,GB
1539807232,1539807487,FR
1539807488,1539807743,RU
-1539807744,1539807999,GB
1539808000,1539808255,HU
1539808256,1539808511,RU
1539808512,1539808767,GB
@@ -33579,7 +40426,6 @@
1539809792,1539810047,DE
1539810304,1539810559,CZ
1539810560,1539810815,DE
-1539810816,1539811071,TR
1539811072,1539811327,NL
1539811584,1539811839,DE
1539811840,1539812095,IT
@@ -33605,7 +40451,7 @@
1539819264,1539819519,RO
1539819520,1539819775,AT
1539819776,1539820031,SI
-1539820032,1539820287,IL
+1539820032,1539820287,VG
1539820288,1539820543,PL
1539820544,1539820799,ES
1539820800,1539821055,RU
@@ -33624,7 +40470,7 @@
1539824640,1539824895,HU
1539824896,1539825151,RU
1539825152,1539825407,UA
-1539825408,1539825919,RU
+1539825664,1539825919,RU
1539825920,1539826175,DE
1539826176,1539826431,AM
1539826432,1539826687,NL
@@ -33670,10 +40516,11 @@
1539853312,1539854335,PL
1539854336,1539855103,UA
1539855104,1539855231,US
-1539855232,1539855359,UA
-1539855360,1539856383,RU
+1539855232,1539856383,RU
+1539856384,1539857407,GB
1539857408,1539858431,PL
1539858432,1539859455,RO
+1539859456,1539860479,DE
1539860480,1539861503,PL
1539861504,1539862527,DE
1539862528,1539863551,UA
@@ -33682,16 +40529,19 @@
1539865600,1539866623,UA
1539866624,1539867647,IT
1539867648,1539868671,RO
-1539868672,1539869695,UA
+1539868672,1539869695,RU
1539869696,1539870719,ES
1539870720,1539871743,IL
+1539871744,1539872767,RU
1539872768,1539873791,SE
1539873792,1539875839,UA
-1539875840,1539876863,MD
+1539875840,1539876863,RU
1539876864,1539877887,ES
1539877888,1539878911,PL
+1539878912,1539879935,RU
1539879936,1539880959,UA
1539880960,1539881983,PL
+1539881984,1539883007,NL
1539883008,1539884031,RS
1539884032,1539885055,MT
1539885056,1539886079,UA
@@ -33704,32 +40554,40 @@
1539893248,1539894271,UA
1539894272,1539895295,PL
1539897344,1539898367,UA
-1539899392,1539900415,RU
-1539901440,1539902463,RU
+1539898368,1539899391,LT
+1539899392,1539902463,RU
1539902464,1539903487,LV
1539903488,1539904511,PL
1539904512,1539905535,CZ
1539905536,1539905791,RU
1539905792,1539906047,UA
1539906048,1539906559,RU
-1539908608,1539910655,UA
+1539906560,1539907583,DE
+1539907584,1539908607,CZ
+1539908608,1539909631,UA
+1539909632,1539910655,RU
1539910656,1539911679,PL
1539911680,1539913727,RU
1539913728,1539914751,CH
1539914752,1539915775,SE
+1539915776,1539916799,IT
1539916800,1539917823,UA
1539917824,1539918847,RU
1539918848,1539920895,RO
1539920896,1539921919,UA
1539921920,1539922943,PL
1539922944,1539923967,SE
+1539923968,1539924991,GE
1539924992,1539926015,DE
+1539926016,1539927039,GB
1539927040,1539928063,UA
1539928064,1539930111,RU
1539930112,1539931135,PL
+1539931136,1539932159,NL
1539932160,1539933183,DE
1539933184,1539934207,ES
1539934208,1539935231,RS
+1539935232,1539936255,GB
1539936256,1539937279,UA
1539937280,1539938303,CH
1539938304,1539939327,PL
@@ -33742,7 +40600,7 @@
1539946496,1539947519,RU
1539947520,1539948543,UA
1539948544,1539949567,RO
-1539950592,1539950847,GB
+1539949568,1539950847,GB
1539950848,1539951103,RU
1539951104,1539951615,UA
1539951616,1539953663,RU
@@ -33756,16 +40614,18 @@
1539960832,1539962879,UA
1539962880,1539964927,RU
1539964928,1539965951,UA
-1539965952,1539966975,CZ
+1539965952,1539966975,RU
1539966976,1539967999,UA
-1539968000,1539973119,RU
+1539968000,1539972095,RU
+1539972096,1539973119,GB
+1539973120,1539974143,BE
1539974144,1539975167,RU
1539975168,1539976191,DE
1539976192,1539977215,RU
1539977216,1539978239,DE
1539978240,1539979263,CZ
1539979264,1539980287,UA
-1539980288,1539981311,SC
+1539980288,1539981311,VG
1539981312,1539982335,SI
1539982336,1539983359,RU
1539983360,1539984383,UA
@@ -33791,7 +40651,7 @@
1540006912,1540007935,RU
1540007936,1540008959,IL
1540008960,1540011007,PL
-1540011008,1540014079,RU
+1540011008,1540013055,RU
1540014080,1540015103,PL
1540015104,1540016127,RU
1540016128,1540016135,DE
@@ -33807,6 +40667,8 @@
1540024320,1540025343,RU
1540025344,1540026367,GB
1540026368,1540027391,UA
+1540027392,1540028415,RU
+1540028416,1540029439,SA
1540029440,1540031487,RU
1540031488,1540032511,UA
1540032512,1540033535,RU
@@ -33826,12 +40688,15 @@
1540046848,1540047871,RU
1540047872,1540048895,LV
1540048896,1540049919,GB
+1540049920,1540050943,NL
1540050944,1540052991,RU
1540052992,1540054015,UA
-1540055040,1540056063,NO
+1540054016,1540055039,FR
+1540055424,1540055551,NO
+1540056064,1540057087,DE
1540057088,1540057343,PL
1540057344,1540057599,RU
-1540057600,1540057855,NL
+1540057600,1540057855,US
1540057856,1540058111,UA
1540058112,1540059135,DE
1540059136,1540060159,UA
@@ -33851,13 +40716,13 @@
1540077568,1540078591,FR
1540078592,1540081663,RU
1540081664,1540082687,DE
-1540082688,1540083711,NO
1540083712,1540084735,RU
-1540084736,1540085759,DE
+1540084736,1540085759,NL
1540085760,1540087807,PL
1540087808,1540088575,RU
1540088576,1540088831,KZ
-1540088832,1540092927,RU
+1540088832,1540089855,DE
+1540089856,1540092927,RU
1540092928,1540094975,PL
1540094976,1540095999,RU
1540096000,1540097023,SE
@@ -33882,6 +40747,7 @@
1540124672,1540125695,UA
1540125696,1540126719,FR
1540126720,1540127743,UA
+1540127744,1540128767,ES
1540128768,1540129791,RU
1540129792,1540130815,UA
1540130816,1540131839,RU
@@ -33904,9 +40770,12 @@
1540149248,1540150271,GB
1540150272,1540151295,UA
1540151296,1540152319,AT
+1540152320,1540153343,DE
+1540153344,1540154367,KR
1540154368,1540156415,RU
1540156416,1540157439,UZ
1540157440,1540159487,RU
+1540159488,1540160511,IT
1540160512,1540162559,RU
1540162560,1540163583,UA
1540163584,1540164607,RU
@@ -33930,6 +40799,7 @@
1540182016,1540183039,IT
1540183040,1540184063,RU
1540184064,1540185087,PL
+1540185088,1540186111,CZ
1540186112,1540187135,NL
1540187136,1540188159,US
1540190208,1540191231,PT
@@ -33946,8 +40816,10 @@
1540205568,1540206591,DE
1540206592,1540208639,RU
1540208640,1540209663,NO
+1540209664,1540210687,RU
1540210688,1540211455,NL
1540211456,1540211711,CZ
+1540211712,1540212735,AM
1540212736,1540213759,RU
1540213760,1540214783,UA
1540214784,1540215807,RU
@@ -33982,7 +40854,6 @@
1540236800,1540237311,PL
1540237312,1540238847,RO
1540238848,1540239359,DE
-1540239360,1540239871,UA
1540239872,1540240383,FR
1540240384,1540240895,CH
1540240896,1540242431,RU
@@ -34006,7 +40877,6 @@
1540252672,1540253183,RU
1540253184,1540253695,AT
1540253696,1540254207,CH
-1540254208,1540254719,RU
1540254720,1540255231,PL
1540255232,1540255743,UA
1540255744,1540256255,AT
@@ -34049,7 +40919,6 @@
1540277248,1540277759,RU
1540277760,1540278271,FR
1540278272,1540278783,UA
-1540278784,1540279807,RU
1540279808,1540280319,RO
1540280320,1540280831,MD
1540280832,1540281343,PL
@@ -34073,8 +40942,7 @@
1540291584,1540292095,UA
1540292096,1540292607,RU
1540293120,1540293631,DK
-1540293632,1540295167,UA
-1540295168,1540296703,PL
+1540293632,1540296703,PL
1540296704,1540297215,DE
1540297216,1540298239,FR
1540298240,1540298751,HR
@@ -34091,7 +40959,8 @@
1540305408,1540305919,GB
1540305920,1540306431,PL
1540306432,1540306943,UA
-1540306944,1540307455,GB
+1540306944,1540307199,GB
+1540307200,1540307455,BE
1540307456,1540307967,RU
1540307968,1540308479,UA
1540308480,1540308991,RS
@@ -34104,9 +40973,7 @@
1540315136,1540315647,UA
1540315648,1540316159,IL
1540316160,1540316671,DE
-1540316672,1540317183,RO
-1540317696,1540318207,UA
-1540318208,1540318719,RU
+1540317696,1540318719,RU
1540318720,1540319231,RO
1540319232,1540319743,UA
1540319744,1540320255,RU
@@ -34125,7 +40992,7 @@
1540326912,1540327423,AT
1540327424,1540327935,RU
1540327936,1540328447,IR
-1540328448,1540329983,RU
+1540328448,1540329471,RU
1540329984,1540330495,UA
1540330496,1540331007,PL
1540331008,1540331519,IT
@@ -34137,6 +41004,10 @@
1540334592,1540335103,RU
1540335104,1540336127,PL
1540336128,1540336639,RU
+1540336640,1540336895,DE
+1540336896,1540337151,SG
+1540337152,1540337407,JP
+1540337408,1540337663,US
1540337664,1540338175,FR
1540338688,1540339199,RU
1540339200,1540339711,UA
@@ -34225,14 +41096,12 @@
1540373760,1540374015,TR
1540374016,1540374271,NL
1540374272,1540374527,BG
-1540374528,1540374783,RU
1540374784,1540375039,UA
1540375040,1540375551,GB
1540375552,1540375807,DE
1540376064,1540376319,TR
1540376320,1540376575,DK
1540376576,1540376831,PL
-1540376832,1540377087,RU
1540377088,1540377343,DE
1540377344,1540377599,RO
1540377600,1540377855,AM
@@ -34265,7 +41134,7 @@
1540385024,1540385279,GB
1540385280,1540385535,PL
1540385536,1540385791,DE
-1540385792,1540386303,FR
+1540385792,1540386047,FR
1540386304,1540386559,NL
1540386560,1540386815,GB
1540386816,1540387071,NL
@@ -34328,7 +41197,6 @@
1540404480,1540404735,FR
1540404736,1540404991,PL
1540404992,1540405247,RU
-1540405248,1540405503,GB
1540405504,1540405759,RU
1540405760,1540406015,PL
1540406016,1540406271,RU
@@ -34346,7 +41214,7 @@
1540410112,1540410367,KW
1540410368,1540410623,CH
1540410624,1540410879,RU
-1540411136,1540411391,NL
+1540411136,1540411391,SG
1540411648,1540411903,FR
1540411904,1540412159,RU
1540412160,1540412415,BE
@@ -34459,7 +41327,6 @@
1540445952,1540446207,DE
1540446208,1540446463,NO
1540446464,1540446719,AT
-1540446720,1540446975,UA
1540446976,1540447231,RU
1540447232,1540447487,DE
1540447488,1540447743,PL
@@ -34549,7 +41416,6 @@
1540474880,1540475135,GB
1540475136,1540475903,UA
1540475904,1540476159,CH
-1540476160,1540476415,DE
1540476416,1540476671,UA
1540476672,1540476927,SI
1540476928,1540477183,NL
@@ -34604,13 +41470,15 @@
1540500480,1540501503,RU
1540501504,1540502527,PL
1540502528,1540503551,RU
+1540503552,1540504575,DK
1540504576,1540505599,SE
1540506624,1540507647,GB
-1540507648,1540508671,RU
+1540508672,1540509695,PL
1540509696,1540510719,RO
1540510720,1540511743,RU
1540511744,1540512767,BG
1540512768,1540514815,RU
+1540514816,1540515839,GB
1540515840,1540516863,RU
1540516864,1540517887,UA
1540517888,1540518911,RU
@@ -34636,12 +41504,13 @@
1540543488,1540544511,DE
1540544512,1540545535,RU
1540545536,1540546559,AT
-1540546560,1540548607,RU
+1540546560,1540547583,DE
+1540547584,1540548607,RU
1540548608,1540549631,IE
1540549632,1540552703,PL
1540552704,1540553727,UA
1540553728,1540554751,RU
-1540554752,1540555775,SE
+1540554752,1540555775,LT
1540555776,1540556799,UZ
1540556800,1540557823,DE
1540557824,1540558848,UA
@@ -34652,10 +41521,12 @@
1540566016,1540567039,RU
1540567040,1540568063,MD
1540568064,1540571135,RU
+1540571136,1540572159,FR
1540572160,1540573183,UA
1540573184,1540574207,NL
1540574208,1540576255,RU
1540576256,1540577279,PL
+1540577280,1540578303,UA
1540578304,1540579327,RU
1540579328,1540580351,IE
1540580352,1540581375,PL
@@ -34665,25 +41536,29 @@
1540584448,1540586495,UA
1540586496,1540588543,RU
1540588544,1540589567,UA
-1540589568,1540593663,RU
+1540590592,1540593663,RU
+1540593664,1540594687,GB
1540594688,1540595711,IT
+1540595712,1540596735,NL
1540596736,1540597759,FR
1540597760,1540598783,SE
1540598784,1540600831,UA
1540600832,1540602879,RU
1540602880,1540603903,BG
1540603904,1540604927,RU
+1540604928,1540605951,AT
1540605952,1540606975,MD
1540606976,1540607999,UA
1540608000,1540609023,RU
1540609024,1540610047,UA
1540610048,1540611071,RU
-1540611072,1540612095,PL
+1540611072,1540613119,PL
1540613120,1540614143,RU
1540614144,1540615167,BG
1540615168,1540616191,RU
1540616192,1540617215,AT
1540617216,1540618239,LT
+1540618240,1540619263,NL
1540619264,1540620287,PL
1540620288,1540620543,NL
1540620544,1540620799,LB
@@ -34725,7 +41600,7 @@
1540632320,1540632575,RU
1540632576,1540632831,DK
1540633088,1540633343,RU
-1540633600,1540633855,IE
+1540633600,1540633855,RO
1540633856,1540634111,AE
1540634624,1540634879,UA
1540634880,1540635135,RU
@@ -34835,7 +41710,6 @@
1540668416,1540668671,SE
1540668672,1540668927,IL
1540668928,1540669695,RO
-1540669696,1540669951,KZ
1540669952,1540670207,UA
1540670208,1540670463,RU
1540670464,1540670719,CH
@@ -34850,7 +41724,7 @@
1540673280,1540673535,SE
1540673536,1540673791,SI
1540673792,1540674047,SE
-1540674048,1540674303,GB
+1540674048,1540674303,NL
1540674304,1540674559,FR
1540674560,1540674815,GB
1540674816,1540675071,GE
@@ -34866,7 +41740,11 @@
1540677888,1540678143,GE
1540678400,1540678655,RO
1540678656,1540678911,SE
-1540678912,1540679423,RU
+1540678912,1540679154,RU
+1540679155,1540679155,HK
+1540679156,1540679162,RU
+1540679163,1540679167,NL
+1540679168,1540679423,RU
1540679680,1540679935,LT
1540679936,1540680191,BG
1540680192,1540680447,CH
@@ -34888,7 +41766,6 @@
1540684800,1540685055,IR
1540685056,1540685311,UA
1540685312,1540685567,RO
-1540685568,1540685823,FR
1540685824,1540686079,SE
1540686080,1540686335,TR
1540686336,1540686591,CH
@@ -34949,7 +41826,7 @@
1540702464,1540702719,PT
1540702720,1540702975,NO
1540702976,1540703231,RU
-1540703232,1540703487,GB
+1540703232,1540703487,DE
1540703488,1540703743,NL
1540703744,1540703999,DK
1540704000,1540704255,PL
@@ -34992,8 +41869,7 @@
1540716288,1540716543,UA
1540717056,1540717311,CZ
1540717312,1540717823,PL
-1540717824,1540718079,UA
-1540718080,1540718335,RU
+1540717824,1540718335,RU
1540718336,1540718591,NO
1540718592,1540718847,CH
1540718848,1540719103,IT
@@ -35108,18 +41984,20 @@
1540756480,1540757503,DK
1540757504,1540758527,PL
1540758528,1540759551,UA
-1540760576,1540761599,PL
-1540761600,1540762623,RU
+1540759552,1540761599,PL
+1540761600,1540762623,EE
1540762624,1540763647,LU
1540763648,1540764671,UA
1540764672,1540765695,PL
1540765696,1540766719,RU
1540766720,1540767743,IT
+1540767744,1540768767,DE
1540768768,1540769791,RU
1540769792,1540770815,IT
1540770816,1540771839,RU
1540771840,1540773887,UA
1540773888,1540774911,SE
+1540774912,1540775935,DE
1540775936,1540776959,RU
1540776960,1540777983,IL
1540777984,1540779007,HR
@@ -35128,6 +42006,7 @@
1540781056,1540783103,RU
1540783104,1540787199,UA
1540787200,1540789247,RU
+1540789248,1540790271,NL
1540790272,1540791295,KW
1540791296,1540792319,CZ
1540792320,1540793343,UA
@@ -35146,10 +42025,11 @@
1540803584,1540804607,RU
1540804608,1540805631,UA
1540805632,1540806655,RU
+1540806656,1540807679,NL
1540807680,1540809727,RU
1540809728,1540810751,GB
1540810752,1540811775,UA
-1540811776,1540812799,CY
+1540811776,1540812799,PL
1540812800,1540813823,RU
1540813824,1540815871,UA
1540815872,1540816895,DE
@@ -35163,7 +42043,7 @@
1540825088,1540826111,PL
1540826112,1540828159,RU
1540828160,1540829183,PL
-1540829184,1540830207,RU
+1540829184,1540830207,ES
1540830208,1540833279,UA
1540833280,1540834303,ES
1540834304,1540835327,UA
@@ -35345,7 +42225,7 @@
1540923136,1540923391,GB
1540923392,1540923647,PL
1540923648,1540923903,UA
-1540923904,1540924159,DE
+1540923904,1540924159,NL
1540924160,1540924415,LT
1540924416,1540924671,RU
1540924672,1540924927,UA
@@ -35539,7 +42419,7 @@
1540995584,1540995839,SE
1540995840,1540996095,RO
1540996096,1540996351,DE
-1540996352,1540996607,NL
+1540996352,1540996607,SE
1540996608,1540996863,RU
1540996864,1540997119,NL
1540997120,1540997375,RU
@@ -35580,7 +42460,6 @@
1541007616,1541007871,RU
1541007872,1541008127,FR
1541008128,1541008383,NL
-1541008384,1541008639,RU
1541008640,1541008895,GB
1541008896,1541009151,TR
1541009408,1541009663,UA
@@ -35600,14 +42479,19 @@
1541014528,1541015551,AM
1541015552,1541016575,RU
1541016576,1541018623,UA
+1541018624,1541019647,GB
1541019648,1541020671,RU
1541020672,1541022719,UA
+1541022720,1541023417,GB
1541023418,1541023418,UA
+1541023419,1541023743,GB
1541023744,1541024767,RU
1541024768,1541025791,UA
1541025792,1541026815,RU
1541026816,1541027839,LV
+1541027840,1541028863,GB
1541028864,1541029887,PL
+1541029888,1541030911,DE
1541030912,1541031935,PL
1541031936,1541032959,UA
1541032960,1541033983,PL
@@ -35623,11 +42507,10 @@
1541045248,1541046271,NL
1541046272,1541051391,RU
1541051392,1541052415,NL
-1541052416,1541053439,RO
+1541052416,1541052927,PS
+1541052928,1541053439,RO
1541053440,1541054463,PL
-1541054464,1541054719,RU
-1541054720,1541055231,TJ
-1541055232,1541055487,RU
+1541054464,1541055487,TJ
1541055488,1541056511,PL
1541056512,1541057535,TJ
1541057536,1541058559,RS
@@ -35645,7 +42528,7 @@
1541070848,1541071871,IT
1541071872,1541072895,RU
1541072896,1541073919,CZ
-1541073920,1541074943,RO
+1541073920,1541074943,GB
1541074944,1541075967,PL
1541075968,1541078015,RU
1541078016,1541079039,RO
@@ -35673,7 +42556,7 @@
1541099520,1541100543,UA
1541100544,1541101567,HU
1541101568,1541102591,RU
-1541102592,1541103615,RO
+1541102592,1541103615,SA
1541103616,1541105663,RU
1541105664,1541106687,PL
1541106688,1541107711,NL
@@ -35717,7 +42600,7 @@
1541147136,1541147391,PL
1541147392,1541147903,RU
1541147904,1541148415,RO
-1541148416,1541148671,GB
+1541148416,1541148671,US
1541148672,1541148927,RU
1541148928,1541149439,PL
1541149440,1541149695,SE
@@ -35777,7 +42660,6 @@
1541164544,1541164799,SI
1541164800,1541165055,IR
1541165056,1541165311,UA
-1541165312,1541165567,RU
1541165568,1541165823,NL
1541165824,1541166079,GB
1541166336,1541166591,FR
@@ -35870,7 +42752,7 @@
1541190912,1541191167,RU
1541191168,1541191423,TR
1541191424,1541191679,RO
-1541191680,1541192191,NL
+1541191936,1541192191,NL
1541192448,1541192703,ME
1541192704,1541192959,RU
1541192960,1541193215,BG
@@ -35947,7 +42829,9 @@
1541216768,1541217279,PL
1541217280,1541218303,RU
1541218304,1541218815,IT
-1541218816,1541221375,RU
+1541218816,1541219839,RU
+1541219840,1541220351,CZ
+1541220352,1541221375,RU
1541221376,1541221887,PL
1541221888,1541222399,CZ
1541222400,1541222911,RU
@@ -35969,7 +42853,6 @@
1541230592,1541231103,RU
1541231104,1541231615,GB
1541231616,1541232127,UA
-1541232128,1541232639,RU
1541232640,1541233151,PL
1541233152,1541233663,RU
1541234176,1541234687,RO
@@ -36041,7 +42924,6 @@
1541270016,1541270527,UA
1541270528,1541271039,IT
1541271040,1541271551,FI
-1541271552,1541272063,RO
1541272064,1541272575,RU
1541272576,1541273087,FR
1541273088,1541274623,RU
@@ -36057,7 +42939,7 @@
1541283840,1541285887,UA
1541285888,1541286911,CZ
1541286912,1541287935,DE
-1541287936,1541288959,UA
+1541287936,1541288959,RU
1541288960,1541289983,CZ
1541289984,1541291007,PL
1541291008,1541293055,UA
@@ -36082,7 +42964,8 @@
1541315584,1541316607,RU
1541316608,1541317631,PL
1541317632,1541318655,RU
-1541318656,1541320703,UA
+1541318656,1541319679,UA
+1541319680,1541320703,CZ
1541320704,1541321727,DE
1541321728,1541322751,UA
1541322752,1541323775,PL
@@ -36098,7 +42981,8 @@
1541332992,1541334015,PL
1541334016,1541335039,RU
1541335040,1541336063,DE
-1541336064,1541338111,RU
+1541336064,1541337087,GB
+1541337088,1541338111,RU
1541338112,1541341183,UA
1541341184,1541341439,TR
1541341440,1541341695,RU
@@ -36249,7 +43133,7 @@
1541381632,1541381887,RO
1541381888,1541382143,FR
1541382144,1541382399,PL
-1541382400,1541382655,IM
+1541382400,1541382655,SE
1541382656,1541382911,RS
1541383168,1541383423,CY
1541383424,1541383679,LV
@@ -36346,7 +43230,8 @@
1541409792,1541410303,LV
1541410304,1541410815,RU
1541410816,1541411327,UA
-1541411328,1541412863,RU
+1541411328,1541411839,RU
+1541412352,1541412863,RU
1541412864,1541413375,UA
1541413376,1541413887,GB
1541413888,1541414399,PL
@@ -36404,7 +43289,6 @@
1541446144,1541446655,RU
1541446656,1541447167,UA
1541447168,1541447679,DE
-1541447680,1541448191,NL
1541448192,1541448703,FR
1541448704,1541449215,NL
1541449216,1541449727,RU
@@ -36474,8 +43358,7 @@
1541504000,1541506047,RU
1541506048,1541507071,PL
1541507072,1541510143,UA
-1541510144,1541511167,RU
-1541511168,1541512191,UA
+1541510144,1541512191,RU
1541512192,1541513215,PL
1541513216,1541517311,UA
1541517312,1541518335,PL
@@ -36483,9 +43366,9 @@
1541519360,1541521407,PL
1541521408,1541522431,RU
1541522432,1541524479,UA
-1541524480,1541525503,RO
+1541524480,1541525503,SA
1541525504,1541527551,RU
-1541527552,1541528575,EE
+1541527552,1541528575,CA
1541528576,1541530623,UA
1541530624,1541531647,RU
1541531648,1541532671,UA
@@ -36512,7 +43395,7 @@
1541545984,1541546495,LV
1541546496,1541547007,UA
1541547008,1541547519,SE
-1541547520,1541548543,PL
+1541547520,1541548031,PL
1541548544,1541549055,UA
1541549056,1541549567,PL
1541549568,1541550079,DE
@@ -36527,6 +43410,7 @@
1541557504,1541557759,SI
1541558016,1541558271,HU
1541558272,1541559295,RU
+1541559296,1541560319,GB
1541560320,1541561343,DE
1541561344,1541562367,RU
1541562624,1541562879,UA
@@ -36541,10 +43425,8 @@
1541567744,1541567999,PL
1541568000,1541568511,SE
1541568512,1541569535,RU
-1541569536,1541570559,CZ
-1541570560,1541571583,RU
-1541571584,1541572607,UA
-1541572608,1541573119,RU
+1541569536,1541570559,NL
+1541570560,1541573119,RU
1541573120,1541573631,UA
1541573632,1541574655,RU
1541574656,1541575167,SE
@@ -36619,7 +43501,8 @@
1541614592,1541615615,RU
1541615616,1541615871,CH
1541615872,1541616127,SE
-1541616128,1541617663,RU
+1541616128,1541617407,RU
+1541617408,1541617663,AT
1541617664,1541619199,PL
1541619200,1541619455,GB
1541619456,1541620735,PL
@@ -36707,7 +43590,7 @@
1541670912,1541671423,PL
1541671424,1541671679,RU
1541671680,1541671935,PL
-1541671936,1541672959,UA
+1541671936,1541672959,TR
1541672960,1541674495,RS
1541674496,1541675007,KG
1541675008,1541675519,IE
@@ -36756,14 +43639,14 @@
1541700608,1541700863,RU
1541700864,1541701119,PL
1541701120,1541701631,IL
-1541701632,1541702655,RO
+1541701632,1541702655,SA
1541703424,1541703679,RU
1541703680,1541704703,PL
1541704704,1541705727,RO
1541705728,1541705983,DE
1541705984,1541706239,RO
1541706240,1541706751,UA
-1541706752,1541707263,RU
+1541706752,1541707007,RU
1541707264,1541707519,DE
1541707520,1541707775,NL
1541707776,1541708799,DE
@@ -36773,7 +43656,7 @@
1541710848,1541711871,SK
1541711872,1541712127,FR
1541712128,1541712383,TR
-1541712384,1541712895,DE
+1541712384,1541713919,DE
1541713920,1541714175,NL
1541714176,1541716223,RU
1541716224,1541716479,PL
@@ -36782,12 +43665,12 @@
1541717248,1541717503,IR
1541717504,1541718015,DE
1541718016,1541718271,KZ
-1541718272,1541719039,SE
+1541718272,1541718527,SE
+1541718528,1541719039,NO
1541719040,1541720063,PL
1541720064,1541721087,RU
1541721088,1541721343,PL
1541721344,1541721599,RU
-1541721600,1541721855,GB
1541721856,1541722111,SI
1541722112,1541723135,RU
1541723136,1541723647,HU
@@ -36847,7 +43730,8 @@
1541753088,1541753343,GB
1541753344,1541753855,RU
1541753856,1541754879,UA
-1541754880,1541757439,PL
+1541754880,1541755903,CH
+1541755904,1541757439,PL
1541757952,1541758207,GB
1541758208,1541758463,HU
1541758464,1541758719,BY
@@ -36865,6 +43749,7 @@
1541766144,1541767167,GB
1541767168,1541767679,UA
1541767680,1541768191,FR
+1541768192,1541769215,BG
1541769216,1541769471,FR
1541769472,1541770239,FI
1541770240,1541770495,CH
@@ -36890,7 +43775,6 @@
1541780736,1541780991,GB
1541781248,1541781503,RO
1541781504,1541781759,TR
-1541781760,1541782015,RU
1541782016,1541782271,RO
1541782272,1541782527,GB
1541782528,1541783551,RU
@@ -36921,7 +43805,7 @@
1541795584,1541795839,ES
1541795840,1541796863,UA
1541796864,1541797375,RU
-1541797376,1541797887,GB
+1541797376,1541797887,NL
1541797888,1541798911,PL
1541798912,1541799935,CZ
1541799936,1541800447,FR
@@ -36949,10 +43833,10 @@
1541810688,1541811199,PL
1541811200,1541811711,SK
1541811712,1541811967,NL
-1541811968,1541812991,RU
+1541811990,1541811991,RU
+1541812224,1541812991,RU
1541812992,1541813247,NL
-1541813248,1541813759,LT
-1541813760,1541814015,RU
+1541813248,1541814015,RU
1541814016,1541814783,ES
1541814784,1541815295,PL
1541815296,1541816319,RU
@@ -36992,7 +43876,7 @@
1541831680,1541832191,SA
1541832192,1541833983,SE
1541833984,1541834239,RU
-1541834496,1541834751,RU
+1541834496,1541835775,RU
1541835776,1541836287,CH
1541836288,1541836543,AT
1541836800,1541837055,CZ
@@ -37075,7 +43959,7 @@
1541875712,1541876735,UA
1541876736,1541877247,PL
1541877248,1541877503,GB
-1541877760,1541878783,RO
+1541877760,1541878783,SA
1541878784,1541879295,PL
1541879296,1541879807,UA
1541879808,1541880831,UZ
@@ -37106,7 +43990,6 @@
1541901056,1541901311,FR
1541901312,1541901567,PL
1541901568,1541901823,RU
-1541901824,1541902335,UA
1541902336,1541902847,GB
1541902848,1541903103,RU
1541903104,1541903359,DK
@@ -37133,6 +44016,7 @@
1541913088,1541914623,RU
1541914624,1541915647,IL
1541915648,1541916671,RU
+1541916672,1541917695,AM
1541917696,1541917951,CH
1541917952,1541918207,PL
1541918208,1541918463,UA
@@ -37160,8 +44044,6 @@
1541932544,1541935103,RU
1541935104,1541936383,RO
1541936384,1541936639,UA
-1541936640,1541936895,DE
-1541936896,1541937151,FR
1541937152,1541937663,NL
1541937664,1541937919,GE
1541937920,1541938175,PL
@@ -37204,15 +44086,16 @@
1541959680,1541959935,PL
1541959936,1541960191,RU
1541960192,1541960703,NL
-1541960704,1541961727,UA
-1541961728,1541962751,RU
+1541960704,1541962751,RU
1541962752,1541963263,GB
1541963264,1541963519,RU
1541963520,1541963775,PL
1541963776,1541964031,UA
1541964288,1541964543,NL
1541964544,1541965823,RU
-1541965824,1541966847,GB
+1541965824,1541966079,US
+1541966080,1541966335,CA
+1541966336,1541966847,US
1541966848,1541967871,PL
1541967872,1541968895,RU
1541968896,1541969919,GB
@@ -37236,7 +44119,7 @@
1541978880,1541979135,FR
1541979136,1541979647,RU
1541979648,1541981183,PL
-1541981184,1541981951,RU
+1541981184,1541981695,RU
1541981952,1541982207,UA
1541982208,1541982719,RS
1541982720,1541984255,RU
@@ -37269,7 +44152,7 @@
1541998336,1541998591,AT
1541998592,1541999615,DE
1541999616,1542000127,AT
-1542000128,1542000383,NO
+1542000128,1542000383,SJ
1542000384,1542000639,GE
1542000640,1542000895,GB
1542000896,1542001151,UA
@@ -37368,7 +44251,7 @@
1542062080,1542064127,UA
1542064128,1542064383,PL
1542064384,1542064639,FR
-1542064640,1542065151,RU
+1542064896,1542065151,RU
1542065152,1542066175,PL
1542066176,1542066431,RU
1542066432,1542066687,NL
@@ -37391,7 +44274,6 @@
1542074624,1542074879,PL
1542074880,1542075391,NL
1542075392,1542075647,CH
-1542075648,1542075903,RU
1542075904,1542076159,IE
1542076160,1542076415,DE
1542076416,1542077439,RO
@@ -37418,7 +44300,7 @@
1542099456,1542099711,PL
1542099712,1542099967,RU
1542099968,1542100223,NL
-1542100224,1542100479,DK
+1542100224,1542100479,GB
1542100480,1542100991,RO
1542100992,1542102015,RU
1542102016,1542103039,RO
@@ -37475,7 +44357,8 @@
1542127104,1542127359,GB
1542127616,1542128127,PL
1542128128,1542128383,RU
-1542128384,1542129151,RO
+1542128384,1542128639,RO
+1542128640,1542129151,US
1542129152,1542129407,IS
1542129408,1542129663,RU
1542129664,1542130687,DE
@@ -37483,7 +44366,7 @@
1542131712,1542134271,PL
1542134272,1542136319,RU
1542136320,1542136831,DE
-1542136832,1542137855,TJ
+1542136832,1542137855,RU
1542137856,1542138367,ES
1542138368,1542138623,RU
1542138624,1542138879,RO
@@ -37499,7 +44382,7 @@
1542144256,1542144511,GB
1542144512,1542144767,RU
1542144768,1542146047,UA
-1542146048,1542147583,RU
+1542146048,1542147359,RU
1542147584,1542148095,FR
1542148096,1542148607,RU
1542148608,1542148863,SI
@@ -37571,14 +44454,12 @@
1542182400,1542182655,GB
1542182656,1542182911,FR
1542182912,1542183935,PL
-1542183936,1542184191,SC
-1542184192,1542184447,RU
+1542183936,1542184447,RU
1542184448,1542184959,PL
1542184960,1542185983,UA
1542185984,1542187007,PL
1542187008,1542187263,DK
1542187264,1542187519,RU
-1542187520,1542188031,GB
1542188032,1542188287,DE
1542188288,1542188543,NL
1542188544,1542189055,PL
@@ -37591,7 +44472,7 @@
1542193408,1542193663,SI
1542193664,1542194175,RU
1542194176,1542195711,PL
-1542195712,1542196479,RU
+1542195712,1542196223,RU
1542196480,1542196735,PL
1542196736,1542197247,RU
1542197248,1542197503,DK
@@ -37631,7 +44512,7 @@
1542215680,1542216703,RO
1542216704,1542217727,RU
1542217728,1542218751,UA
-1542218752,1542220031,RU
+1542218752,1542219775,RU
1542220032,1542220287,PL
1542220288,1542220799,DE
1542220800,1542222847,RU
@@ -37755,7 +44636,7 @@
1542287872,1542288639,UA
1542288640,1542288895,DE
1542288896,1542289151,PL
-1542289152,1542291967,UA
+1542289152,1542291711,UA
1542291968,1542292479,RO
1542292480,1542293503,SI
1542293504,1542294527,PL
@@ -37840,11 +44721,10 @@
1542346240,1542347775,RU
1542348288,1542348799,MD
1542348800,1542349823,RU
-1542349824,1542350847,UA
-1542350848,1542351359,CZ
+1542349824,1542351359,UA
1542351360,1542351615,BG
1542351616,1542351871,PL
-1542351872,1542353151,RU
+1542351872,1542352895,RU
1542353152,1542353407,SA
1542353664,1542353919,RU
1542353920,1542354943,IT
@@ -37856,10 +44736,9 @@
1542357504,1542357759,GB
1542357760,1542358015,FR
1542358016,1542358271,UA
-1542358272,1542358527,CZ
+1542358272,1542358527,RU
1542358528,1542359039,PL
-1542359040,1542360063,CZ
-1542360064,1542360319,RU
+1542359040,1542360319,RU
1542360320,1542360575,NL
1542360576,1542361087,PL
1542361088,1542361343,CH
@@ -37897,7 +44776,7 @@
1542380800,1542381055,GB
1542381056,1542381823,RU
1542381824,1542382079,AT
-1542382080,1542382335,BE
+1542382080,1542382335,FR
1542382336,1542383615,RU
1542383616,1542384639,PL
1542384640,1542384895,DE
@@ -37954,7 +44833,7 @@
1542409216,1542411263,UA
1542411264,1542411519,DE
1542411520,1542411775,RU
-1542411776,1542412031,EE
+1542411776,1542412031,LT
1542412032,1542412287,GB
1542412288,1542412799,RU
1542412800,1542413055,PL
@@ -38005,7 +44884,7 @@
1542437376,1542437631,NL
1542437632,1542437887,UA
1542437888,1542438399,SE
-1542438400,1542438655,UA
+1542438400,1542438655,SC
1542438656,1542438911,RU
1542438912,1542439167,KZ
1542439168,1542439423,SI
@@ -38059,7 +44938,7 @@
1542464512,1542464767,RU
1542464768,1542465023,TR
1542465024,1542465535,RU
-1542465536,1542466559,RS
+1542465536,1542466559,XK
1542466560,1542466815,PL
1542466816,1542467071,RU
1542467072,1542467583,PL
@@ -38071,7 +44950,6 @@
1542472704,1542472959,PL
1542472960,1542473215,LB
1542473216,1542473471,PL
-1542473472,1542473727,GB
1542473728,1542473983,FR
1542473984,1542474239,AE
1542474240,1542474751,RU
@@ -38110,7 +44988,7 @@
1542496256,1542496767,DE
1542496768,1542497023,RU
1542497280,1542497535,DE
-1542497536,1542497791,CZ
+1542497536,1542497791,NL
1542497792,1542498303,IT
1542498304,1542499583,RU
1542499584,1542499839,ES
@@ -38131,11 +45009,9 @@
1542505216,1542505471,NO
1542505472,1542506495,PL
1542506496,1542507007,NL
-1542507008,1542507263,RU
-1542507264,1542507519,CY
+1542507008,1542507519,RU
1542507520,1542508543,NO
-1542508544,1542509567,RU
-1542509568,1542510079,CY
+1542508544,1542510079,RU
1542510592,1542510847,SI
1542510848,1542511103,DE
1542511104,1542511871,RU
@@ -38183,6 +45059,7 @@
1542531840,1542532095,RU
1542532096,1542532351,DE
1542532352,1542533119,RU
+1542533120,1542534143,TR
1542534144,1542534399,DE
1542534400,1542534655,HR
1542534656,1542535167,DE
@@ -38206,9 +45083,7 @@
1542544896,1542545407,GR
1542545408,1542563839,UA
1542563840,1542565887,RU
-1542565888,1542566911,UA
-1542566912,1542567935,RU
-1542567936,1542586367,UA
+1542565888,1542586367,UA
1542586368,1542594559,AZ
1542594560,1542597631,RU
1542597632,1542598143,IR
@@ -38240,7 +45115,9 @@
1542643712,1542660095,UA
1542660096,1542661119,RU
1542661120,1542662143,UA
-1542662144,1542668287,RU
+1542662144,1542663167,RU
+1542663168,1542664191,NL
+1542664192,1542668287,RU
1542668288,1542668799,NL
1542668800,1542669311,PL
1542669312,1542669567,RU
@@ -38252,7 +45129,8 @@
1542670848,1542671359,NL
1542671360,1542671871,FR
1542671872,1542672383,AT
-1542672384,1542674687,RU
+1542672384,1542674431,NL
+1542674432,1542674687,RU
1542674688,1542674943,US
1542674944,1542675455,RU
1542675456,1542675711,US
@@ -38265,14 +45143,16 @@
1542683392,1542683647,RS
1542683648,1542684159,RU
1542684160,1542684671,IR
-1542684672,1542686719,RU
+1542684672,1542685695,LT
+1542685696,1542685951,RU
+1542685952,1542686719,LT
1542686720,1542687743,US
-1542687744,1542688767,RU
+1542687744,1542688767,LT
1542688768,1542689791,FR
-1542689792,1542690815,RU
+1542689792,1542690815,LT
1542690816,1542691327,ES
1542691328,1542691839,PT
-1542691840,1542692863,RU
+1542691840,1542692863,LT
1542692864,1542696959,IR
1542701056,1542709247,UA
1542709248,1542717439,RU
@@ -38327,7 +45207,8 @@
1542832896,1542833151,GR
1542833152,1542834175,KZ
1542834176,1542836223,ES
-1542836224,1542836735,RO
+1542836224,1542836479,RO
+1542836480,1542836735,PL
1542836736,1542837247,RU
1542837248,1542837503,GB
1542837504,1542837759,UA
@@ -38375,10 +45256,11 @@
1542932736,1542932991,GB
1542932992,1542933247,NO
1542933248,1542933503,FR
-1542933504,1542946815,UA
-1542946816,1542950911,RU
+1542933504,1542938623,UA
+1542938624,1542942719,RU
+1542942720,1542944767,UA
+1542944768,1542950911,RU
1542950912,1542951423,DE
-1542951424,1542951679,RO
1542951680,1542951935,PL
1542951936,1542955007,RU
1542955008,1542963199,UA
@@ -38412,28 +45294,28 @@
1545863168,1545895935,RU
1545895936,1545928703,BA
1545928704,1545961471,SI
-1545961472,1545995519,RU
+1545961472,1545994751,RU
+1545994752,1545995007,CZ
+1545995008,1545995519,RU
1545995520,1545996287,CZ
1545996288,1545998335,RU
1545998336,1545999359,MD
-1545999360,1546001965,CZ
-1546001966,1546001966,RU
-1546001967,1546002431,CZ
-1546002432,1546002943,RU
+1545999360,1545999871,RU
+1545999872,1546000383,UA
+1546000384,1546001407,UZ
+1546001408,1546002943,RU
1546002944,1546003199,UA
1546003200,1546003967,RU
1546003968,1546004479,CZ
1546004480,1546004735,UA
1546004736,1546004795,CZ
1546004796,1546004796,UA
-1546004797,1546004991,CZ
-1546004992,1546006527,RU
+1546004797,1546005247,CZ
+1546005248,1546006527,RU
1546006528,1546007551,UA
1546007552,1546008575,UZ
-1546008576,1546010623,CZ
-1546010624,1546014719,BY
-1546014720,1546014975,RU
-1546014976,1546015487,CZ
+1546008576,1546014719,BY
+1546014720,1546015487,RU
1546015488,1546015743,GB
1546015744,1546015999,CZ
1546016000,1546016255,DE
@@ -38442,12 +45324,24 @@
1546017971,1546018303,RU
1546018304,1546018815,FR
1546018816,1546027007,UA
-1546027008,1546028543,RU
+1546027008,1546028031,RU
+1546028032,1546028543,US
1546028544,1546029055,KR
-1546029056,1546035711,RU
+1546029056,1546030079,RU
+1546030080,1546030335,NL
+1546030336,1546031103,RU
+1546031104,1546032127,LU
+1546032128,1546032639,US
+1546032640,1546033151,BR
+1546033152,1546033663,RU
+1546033664,1546035199,LU
+1546035200,1546035711,RU
1546035712,1546036223,LU
1546036224,1546037247,KR
-1546037248,1546059775,RU
+1546037248,1546038271,US
+1546038272,1546041343,RU
+1546041344,1546041855,NL
+1546041856,1546059775,RU
1546059776,1546063871,SE
1546063872,1546067967,DE
1546067968,1546072063,SE
@@ -38467,21 +45361,20 @@
1546104832,1546108927,IE
1546108928,1546113023,IM
1546113024,1546121215,RU
-1546121216,1546121727,FR
+1546121216,1546121727,ES
1546121728,1546121983,IT
-1546121984,1546121987,ES
-1546121988,1546122463,FR
+1546121984,1546122463,ES
1546122464,1546122479,DZ
-1546122480,1546122633,FR
+1546122480,1546122633,ES
1546122634,1546122641,GB
1546122642,1546122642,DE
-1546122643,1546122649,FR
+1546122643,1546122649,ES
1546122650,1546122650,PT
-1546122651,1546122696,FR
-1546122697,1546122704,ES
-1546122705,1546124191,FR
+1546122651,1546122838,ES
+1546122839,1546122839,FR
+1546122840,1546124191,ES
1546124192,1546124223,DZ
-1546124224,1546125311,FR
+1546124224,1546125311,ES
1546125312,1546256383,GB
1546256384,1546264575,RU
1546264576,1546266623,TR
@@ -38492,7 +45385,19 @@
1546276864,1546278911,IT
1546278912,1546280959,RU
1546280960,1546283007,IT
-1546283008,1546285055,CH
+1546283008,1546283463,DE
+1546283464,1546283471,FR
+1546283472,1546283521,DE
+1546283522,1546283523,FR
+1546283524,1546283623,DE
+1546283624,1546283631,FR
+1546283632,1546283693,DE
+1546283694,1546283695,FR
+1546283696,1546283827,DE
+1546283828,1546283835,FR
+1546283836,1546284287,DE
+1546284288,1546284291,FR
+1546284292,1546285055,DE
1546285056,1546287103,PL
1546287104,1546289151,GB
1546289152,1546291199,RU
@@ -38513,7 +45418,8 @@
1546317824,1546319871,CH
1546319872,1546321919,RS
1546321920,1546323967,RU
-1546323968,1546326015,NO
+1546323968,1546325247,GE
+1546325248,1546326015,NO
1546326016,1546328063,GB
1546328064,1546330111,CZ
1546330112,1546332159,SE
@@ -38541,7 +45447,7 @@
1546369024,1546371071,RU
1546371072,1546373119,IS
1546373120,1546375167,HU
-1546375168,1546377215,GB
+1546375168,1546377215,GG
1546377216,1546379263,CH
1546379264,1546381311,ES
1546381312,1546383359,DK
@@ -38554,12 +45460,11 @@
1546682368,1546698751,BE
1546698752,1546715135,NL
1546715136,1546731519,LV
-1546731520,1546732543,FR
-1546732544,1546733567,MQ
+1546731520,1546733567,MQ
1546733568,1546735615,GP
1546735616,1546737663,MQ
1546737664,1546741759,GP
-1546741760,1546743807,FR
+1546741760,1546743807,GF
1546743808,1546747903,MQ
1546747904,1546764287,RU
1546764288,1546780671,KZ
@@ -38569,10 +45474,7 @@
1546860544,1546862591,MD
1546862592,1546874879,GE
1546874880,1546875135,RU
-1546875136,1546876927,GE
-1546876928,1546878581,RU
-1546878582,1546878582,GE
-1546878583,1546878975,RU
+1546875136,1546878975,GE
1546878976,1546895359,DE
1546895360,1546911743,IE
1546911744,1546928127,SK
@@ -38610,7 +45512,8 @@
1547485184,1547489279,IE
1547489280,1547493375,DE
1547493376,1547497471,RS
-1547497472,1547501567,GB
+1547497472,1547498495,NL
+1547498496,1547501567,GB
1547501568,1547505663,TR
1547505664,1547509759,RU
1547509760,1547513855,LT
@@ -38624,9 +45527,9 @@
1547550720,1547554815,IE
1547554816,1547558911,AT
1547558912,1547563007,IL
-1547563008,1547564031,US
+1547563008,1547564031,NL
1547564032,1547564287,GB
-1547564288,1547567103,US
+1547564288,1547567103,NL
1547567104,1547571199,GB
1547571200,1547575295,AT
1547575296,1547579391,NO
@@ -38639,9 +45542,39 @@
1547608064,1547612159,LB
1547612160,1547616255,IR
1547616256,1547620351,DK
-1547620352,1547623167,JE
+1547620352,1547620375,JE
+1547620376,1547620383,NG
+1547620384,1547620399,JE
+1547620400,1547620407,NG
+1547620408,1547620599,JE
+1547620600,1547620607,NG
+1547620608,1547620919,JE
+1547620920,1547620927,NG
+1547620928,1547621015,JE
+1547621016,1547621023,NG
+1547621024,1547621047,JE
+1547621048,1547621055,NG
+1547621056,1547621183,JE
+1547621184,1547621191,NG
+1547621192,1547621215,JE
+1547621216,1547621223,NG
+1547621224,1547621231,JE
+1547621232,1547621239,NG
+1547621240,1547621255,JE
+1547621256,1547621263,NG
+1547621264,1547621271,JE
+1547621272,1547621279,NG
+1547621280,1547621447,JE
+1547621448,1547621455,NG
+1547621456,1547621463,JE
+1547621464,1547621471,NG
+1547621472,1547622919,JE
+1547622920,1547622935,NG
+1547622936,1547623167,JE
1547623168,1547623423,NG
-1547623424,1547624447,JE
+1547623424,1547623479,JE
+1547623480,1547623487,NG
+1547623488,1547624447,JE
1547624448,1547628543,CZ
1547628544,1547632639,BG
1547632640,1547636735,TR
@@ -38707,15 +45640,15 @@
1549795328,1550057471,AE
1550057472,1550188543,RU
1550188544,1550319615,FR
-1550319616,1550581759,CH
+1550319616,1550335359,CH
+1550335360,1550335487,DE
+1550335488,1550581759,CH
1550581760,1550843903,NL
1550843904,1550974975,UA
1550974976,1550975231,NL
1550975232,1550975999,RO
-1550976000,1550976255,EG
-1550976256,1550976767,RO
-1550976768,1550977023,US
-1550977024,1550979071,RO
+1550976000,1550976511,ES
+1550976512,1550979071,RO
1550979072,1550983167,IR
1550983168,1550983935,RO
1550983936,1550984191,GB
@@ -38727,7 +45660,8 @@
1550987264,1550988287,IR
1550988288,1550988543,RO
1550988544,1550988799,JP
-1550988800,1550989311,RO
+1550988800,1550989055,RO
+1550989056,1550989311,GG
1550989312,1550990335,ES
1550990336,1550991359,AU
1550991360,1550995455,IR
@@ -38768,29 +45702,21 @@
1554971046,1554971046,ES
1554971047,1555038207,FR
1555038208,1555169279,ES
-1555169280,1555628031,FR
-1555628032,1555693567,ES
-1555693568,1555693823,FR
-1555693824,1555693887,ES
-1555693888,1555694079,FR
-1555694080,1555694591,ES
-1555694592,1555695103,FR
-1555695104,1555696383,ES
-1555696384,1555696639,FR
-1555696640,1555698303,ES
-1555698304,1555698431,FR
-1555698432,1555700223,ES
-1555700224,1555700479,FR
-1555700480,1555769343,ES
-1555769344,1555770367,FR
-1555770368,1555824639,ES
+1555169280,1555300351,FR
+1555300352,1555333119,RO
+1555333120,1555365887,FR
+1555365888,1555398655,MD
+1555398656,1555628031,FR
+1555628032,1555824639,ES
1555824640,1555890175,FR
1555890176,1556086783,ES
1556086784,1557069823,DE
1557069824,1557135359,GB
1557135360,1557313279,DE
1557313280,1557313535,US
-1557313536,1557921791,DE
+1557313536,1557807103,DE
+1557807104,1557815295,MT
+1557815296,1557921791,DE
1557921792,1558052863,NO
1558052864,1558053760,FR
1558053761,1558053761,PT
@@ -38858,60 +45784,65 @@
1558112212,1558115327,FR
1558115328,1558115455,NL
1558115456,1558118399,FR
-1558118400,1558122495,AT
+1558118400,1558119423,DE
+1558119424,1558120959,RU
+1558120960,1558121983,BR
+1558121984,1558122495,LU
1558122496,1558123007,SG
1558123008,1558123519,RU
-1558123520,1558125567,AT
+1558123520,1558125567,LU
1558125568,1558126079,SG
1558126080,1558126335,DE
-1558126336,1558126591,AT
+1558126336,1558126591,LU
1558126592,1558128639,RU
1558128640,1558128895,US
-1558128896,1558129151,AT
+1558128896,1558129151,LU
1558129152,1558129407,RU
-1558129408,1558132735,AT
+1558129408,1558129663,LU
+1558129664,1558130687,US
+1558130688,1558132735,LU
1558132736,1558133247,US
-1558133248,1558133759,AT
+1558133248,1558133759,LU
1558133760,1558134015,RU
1558134016,1558134271,KR
1558134272,1558134783,JP
1558134784,1558135039,RU
-1558135040,1558135295,AT
+1558135040,1558135295,CN
1558135296,1558135551,US
1558135552,1558135552,RU
-1558135553,1558135807,AT
+1558135553,1558135807,CN
1558135808,1558136319,US
-1558136320,1558136575,AT
+1558136320,1558136575,CN
1558136576,1558136831,DE
1558136832,1558137087,RU
1558137088,1558137343,KR
1558137344,1558137855,CZ
-1558137856,1558138879,AT
+1558137856,1558138879,CN
1558138880,1558139135,RU
-1558139136,1558140159,AT
-1558140160,1558140415,SG
-1558140416,1558141183,AT
+1558139136,1558139391,NL
+1558139392,1558139647,US
+1558139648,1558140159,LU
+1558140160,1558140671,SG
+1558140672,1558141183,LU
1558141184,1558141184,CY
-1558141185,1558141439,AT
+1558141185,1558141439,LU
1558141440,1558141695,CY
-1558141696,1558141951,AT
+1558141696,1558141951,LU
1558141952,1558142463,PL
1558142464,1558142719,US
1558142720,1558142975,SG
1558142976,1558143231,US
-1558143232,1558143743,AT
+1558143232,1558143743,LU
1558143744,1558143999,RU
-1558144000,1558144255,AT
+1558144000,1558144255,LU
1558144256,1558145023,RU
-1558145024,1558145535,AT
+1558145024,1558145535,LU
1558145536,1558145791,RU
1558145792,1558146047,US
1558146048,1558146815,RU
-1558146816,1558147071,AT
-1558147072,1558147327,LU
-1558147328,1558147583,AT
+1558146816,1558147583,LU
1558147584,1558147839,RU
-1558147840,1558148095,AT
+1558147840,1558148095,LU
1558148096,1558148607,SG
1558148608,1558149631,US
1558149632,1558150143,RU
@@ -38939,13 +45870,14 @@
1558904832,1558921215,IE
1558921216,1558937599,HU
1558937600,1558970367,NL
-1558970368,1559232511,GB
-1559232512,1559240703,IL
+1558970368,1559236607,GB
+1559236608,1559240703,IL
1559240704,1559248895,BA
1559248896,1559257087,LV
1559257088,1559265279,UA
1559265280,1559269375,RU
-1559269376,1559271423,NL
+1559269376,1559270399,NL
+1559270400,1559271423,US
1559271424,1559273471,FI
1559273472,1559281663,CZ
1559281664,1559289855,RU
@@ -38956,14 +45888,10 @@
1559322624,1559330815,RU
1559330816,1559339007,BA
1559339008,1559347199,RU
-1559347200,1559347455,SE
-1559347456,1559347967,DK
-1559347968,1559348223,SE
-1559348224,1559350271,DK
-1559350272,1559355391,SE
+1559347200,1559355391,DK
1559355392,1559379455,RU
-1559379456,1559379711,US
-1559379712,1559388159,RU
+1559379456,1559379967,US
+1559379968,1559388159,RU
1559388160,1559396351,UA
1559396352,1559404543,GB
1559412736,1559420927,IR
@@ -38999,7 +45927,7 @@
1559663616,1559665663,RU
1559665664,1559666687,IR
1559666688,1559683071,RU
-1559683072,1559691263,IE
+1559683072,1559691263,GB
1559691264,1559756799,BG
1559756800,1559789567,AT
1559789568,1559822335,RU
@@ -39008,53 +45936,61 @@
1559887872,1559920639,PT
1559920640,1559921407,LU
1559921408,1559921663,FR
-1559921664,1559923711,LU
-1559923712,1559924735,FR
-1559924736,1559932159,LU
+1559921664,1559932159,LU
1559932160,1559932415,FR
-1559932416,1559941887,LU
-1559941888,1559942143,DE
-1559942144,1559946239,LU
-1559946240,1559946751,GB
-1559946752,1559948287,LU
+1559932416,1559932927,LU
+1559932928,1559934975,DE
+1559934976,1559937023,LU
+1559937024,1559941631,DE
+1559941632,1559941887,LU
+1559941888,1559943167,DE
+1559943168,1559944191,LU
+1559944192,1559945215,FR
+1559945216,1559946751,GB
+1559946752,1559947519,DE
+1559947520,1559948287,LU
1559948288,1559948288,GB
-1559948289,1559953407,LU
+1559948289,1559949311,LU
+1559949312,1559950335,DE
+1559950336,1559951359,LU
+1559951360,1559952383,DE
+1559952384,1559953407,LU
1559953408,1559986175,MT
1559986176,1560018943,IE
1560018944,1560051711,DE
1560051712,1560084479,RU
1560084480,1560117247,JO
1560117248,1560125439,CZ
-1560125440,1560135679,RU
-1560135680,1560135807,UA
-1560135808,1560136447,CZ
-1560136448,1560138239,GB
+1560125440,1560133631,RU
+1560133632,1560136703,IR
+1560136704,1560138239,GB
1560138240,1560140799,RU
-1560140800,1560145919,CZ
-1560145920,1560150015,UA
+1560140800,1560141823,CZ
+1560141824,1560143871,SY
+1560143872,1560144895,CZ
+1560144896,1560150015,UA
1560150016,1560182783,NL
1560182784,1560215551,SE
1560215552,1560281087,RU
1560281088,1562378239,FR
1562378240,1564999679,IT
-1564999680,1565372415,UA
-1565372416,1565374463,RU
-1565374464,1565523967,UA
+1564999680,1565224191,UA
+1565224192,1565224959,BG
+1565224960,1565227007,UA
+1565227008,1565229055,BG
+1565229056,1565368319,UA
+1565368320,1565376511,RU
+1565376512,1565523967,UA
1565523968,1565655039,RU
1565655040,1565786111,AT
1565786112,1565917183,BY
-1565917184,1565960191,RS
-1565960192,1565960703,XK
-1565960704,1565974527,RS
+1565917184,1565974527,RS
1565974528,1565975551,XK
-1565975552,1566019583,RS
-1566019584,1566020607,XK
-1566020608,1566048255,RS
+1565975552,1566048255,RS
1566048256,1566052351,RU
1566056448,1566060543,IT
1566060544,1566064639,UA
-1566064640,1566066687,IR
-1566066688,1566067199,IE
+1566064640,1566067199,IR
1566067200,1566067711,NL
1566067712,1566068735,RU
1566068736,1566072831,AZ
@@ -39080,7 +46016,7 @@
1566158848,1566162943,RU
1566162944,1566167039,PL
1566167040,1566171135,UA
-1566171136,1566175231,TR
+1566171136,1566175231,CY
1566175232,1566179327,IE
1566179328,1566183423,DK
1566183424,1566187519,ES
@@ -39091,14 +46027,18 @@
1566212096,1566216191,DE
1566216192,1566220287,SE
1566220288,1566224383,CZ
-1566224384,1566228479,DE
-1566228480,1566232575,GB
+1566224384,1566232575,DE
1566232576,1566248959,RU
1566248960,1566257151,GB
1566257152,1566261247,CZ
1566261248,1566265343,TR
-1566265344,1566269439,DE
-1566269440,1566273535,NO
+1566265344,1566265599,US
+1566265600,1566269407,DE
+1566269408,1566269439,US
+1566269440,1566271487,NO
+1566271488,1566271999,FI
+1566272000,1566272511,SE
+1566272512,1566273535,NO
1566273536,1566277631,RU
1566277632,1566281727,IT
1566281728,1566285823,CZ
@@ -39113,7 +46053,7 @@
1566314496,1566316543,BE
1566316544,1566318591,NL
1566318592,1566320639,RU
-1566320640,1566322687,GB
+1566320640,1566322687,DE
1566322688,1566324735,CZ
1566324736,1566326783,HU
1566326784,1566328831,RU
@@ -39143,7 +46083,9 @@
1566382080,1566384127,TR
1566384128,1566386175,CZ
1566386176,1566388223,FR
-1566388224,1566390271,LU
+1566388224,1566388479,HK
+1566388480,1566390015,LU
+1566390016,1566390271,US
1566390272,1566392319,LT
1566392320,1566394367,ES
1566394368,1566394528,NO
@@ -39193,7 +46135,8 @@
1566443520,1566445567,NO
1566445568,1566447615,PL
1566447616,1566451711,IT
-1566451712,1566452032,IL
+1566451712,1566451967,IL
+1566451968,1566452032,GB
1566452033,1566452033,IT
1566452034,1566452034,FR
1566452035,1566452035,DE
@@ -39201,7 +46144,7 @@
1566452037,1566452037,ES
1566452038,1566452038,IL
1566452039,1566452039,AT
-1566452040,1566452042,IL
+1566452040,1566452042,GB
1566452043,1566452043,NL
1566452044,1566452045,GB
1566452046,1566452046,SE
@@ -39212,7 +46155,9 @@
1566452052,1566452052,CH
1566452053,1566452053,GB
1566452054,1566452057,UA
-1566452058,1566453759,IL
+1566452058,1566452063,IE
+1566452064,1566452223,GB
+1566452224,1566453759,IL
1566453760,1566455807,IQ
1566455808,1566457855,PT
1566457856,1566459903,CH
@@ -39221,7 +46166,14 @@
1566464000,1566466047,IT
1566466048,1566468095,ES
1566468096,1566470143,BE
-1566470144,1566472191,IE
+1566470144,1566471007,GB
+1566471008,1566471011,IE
+1566471012,1566471127,GB
+1566471128,1566471135,IE
+1566471136,1566471143,GB
+1566471144,1566471147,IE
+1566471148,1566471679,GB
+1566471680,1566472191,IE
1566472192,1566474239,GB
1566474240,1566476287,DE
1566476288,1566478335,BG
@@ -39276,19 +46228,28 @@
1567031296,1567096831,SI
1567096832,1567162367,DE
1567162368,1567227903,PL
-1567227904,1567293439,FI
+1567227904,1567241343,FI
+1567241344,1567241471,AX
+1567241472,1567293439,FI
1567293440,1567358975,IE
1567358976,1567424511,PT
1567424512,1567490047,CY
-1567490048,1567555583,IR
+1567490048,1567531007,IR
+1567531008,1567532031,GB
+1567532032,1567533055,IR
+1567533056,1567539199,GB
+1567539200,1567555583,IR
1567555584,1567621119,AT
1567621120,1567686655,SA
1567686656,1567690751,RO
1567690752,1567692799,ES
-1567692800,1567696383,RO
+1567692800,1567693311,RO
+1567693312,1567693823,GB
+1567693824,1567696383,RO
1567696384,1567696639,FR
1567696640,1567696895,ES
-1567696896,1567698175,RO
+1567696896,1567697919,RO
+1567697920,1567698175,PL
1567698176,1567698431,SE
1567698432,1567698687,IT
1567698688,1567698943,RO
@@ -39313,7 +46274,8 @@
1567717376,1567718399,GR
1567718400,1567719167,RO
1567719168,1567719423,GB
-1567719424,1567720191,RO
+1567719424,1567719935,RO
+1567719936,1567720191,PL
1567720192,1567720447,NO
1567720448,1567721471,RO
1567721472,1567723519,ES
@@ -39322,7 +46284,7 @@
1567727616,1567728639,RO
1567728640,1567729663,SY
1567729664,1567733759,RO
-1567733760,1567735807,GB
+1567733760,1567735807,US
1567735808,1567739391,RO
1567739392,1567739903,FR
1567739904,1567740927,DE
@@ -39337,7 +46299,7 @@
1567750144,1567750655,RO
1567750656,1567751167,BG
1567751168,1567752191,RO
-1567752192,1567756287,BG
+1567752192,1567756287,MD
1567756288,1567760383,IR
1567760384,1567765247,RO
1567765248,1567766271,GB
@@ -39352,7 +46314,7 @@
1567773952,1567774207,ES
1567774208,1567774719,GB
1567774720,1567775743,RO
-1567775744,1567776767,DE
+1567775744,1567776767,AU
1567776768,1567778815,RO
1567778816,1567780863,IR
1567780864,1567785471,RO
@@ -39368,7 +46330,9 @@
1567799296,1567799467,GB
1567799468,1567799468,RO
1567799469,1567799807,GB
-1567799808,1567802367,RO
+1567799808,1567800319,RO
+1567800320,1567800831,GG
+1567800832,1567802367,RO
1567802368,1567803391,GR
1567803392,1567805439,ES
1567805440,1567807487,SY
@@ -39376,8 +46340,7 @@
1567809536,1567811583,ES
1567811584,1567812095,RO
1567812096,1567812607,GB
-1567812608,1567813119,US
-1567813120,1567813631,RO
+1567812608,1567813631,US
1567813632,1567814655,ES
1567814656,1567814911,RO
1567814912,1567815167,IT
@@ -39395,14 +46358,16 @@
1567826432,1567827455,RO
1567827456,1567827711,BG
1567827712,1567830015,RO
-1567830016,1567831039,GB
+1567830016,1567831039,US
1567831040,1567832831,RO
1567832832,1567833087,GB
1567833088,1567833599,NL
1567833600,1567834111,IT
1567834112,1567837183,RO
1567837184,1567838207,TR
-1567838208,1567842303,RO
+1567838208,1567840255,RO
+1567840256,1567841279,DE
+1567841280,1567842303,RO
1567842304,1567842815,FR
1567842816,1567843839,RO
1567843840,1567844351,DE
@@ -39423,9 +46388,7 @@
1567861760,1567862783,RO
1567862784,1567866879,GB
1567866880,1567867135,IN
-1567867136,1567867391,RO
-1567867392,1567867519,GB
-1567867520,1567867903,RO
+1567867136,1567867903,GB
1567867904,1567868927,ES
1567868928,1567869183,RO
1567869184,1567869439,GB
@@ -39463,7 +46426,7 @@
1568023808,1568024063,IT
1568024064,1568024319,SG
1568024320,1568024575,RO
-1568024576,1568025599,DE
+1568024576,1568025599,US
1568025600,1568026623,RO
1568026624,1568030719,SY
1568030720,1568034815,ES
@@ -39472,9 +46435,10 @@
1568059392,1568060415,MD
1568060416,1568062463,IR
1568062464,1568063487,MD
-1568063488,1568083967,RO
+1568063488,1568079871,RO
+1568079872,1568083967,NL
1568083968,1568084223,CN
-1568084224,1568084991,RO
+1568084224,1568084991,ES
1568084992,1568086015,CN
1568086016,1568087039,RO
1568087040,1568088063,ES
@@ -39482,8 +46446,7 @@
1568104448,1568106495,MD
1568106496,1568107519,RO
1568107520,1568108543,MD
-1568108544,1568109055,GB
-1568109056,1568110079,RO
+1568108544,1568110079,RO
1568110080,1568111103,GB
1568111104,1568111359,RO
1568111360,1568111615,NL
@@ -39499,54 +46462,19 @@
1568129536,1568129791,IT
1568129792,1568130047,RO
1568130048,1568133119,MD
-1568133120,1568138239,RO
+1568133120,1568137215,IR
+1568137216,1568138239,RO
1568138240,1568141311,MD
1568141312,1568145407,DE
1568145408,1568178175,RO
1568178176,1568210943,RU
1568210944,1568243711,GB
-1568243712,1568243967,GP
-1568243968,1568244223,FR
-1568244224,1568244735,GP
-1568244736,1568245247,FR
-1568245248,1568248063,GP
-1568248064,1568248319,FR
-1568248320,1568249087,GP
-1568249088,1568251391,FR
-1568251392,1568251903,GP
-1568251904,1568253183,FR
-1568253184,1568253439,GP
-1568253440,1568253951,FR
-1568253952,1568259327,GP
-1568259328,1568259583,FR
-1568259584,1568261119,GP
-1568261120,1568262655,FR
-1568262656,1568264191,GP
-1568264192,1568264703,FR
-1568264704,1568265215,GP
-1568265216,1568265471,FR
-1568265472,1568266495,GP
-1568266496,1568266751,FR
-1568266752,1568267263,GP
-1568267264,1568268799,FR
-1568268800,1568270591,GP
-1568270592,1568270847,FR
-1568270848,1568271359,GP
-1568271360,1568271871,FR
-1568271872,1568274943,GP
-1568274944,1568275455,FR
-1568275456,1568276479,GP
+1568243712,1568276479,GP
1568276480,1568309247,DE
1568309248,1568342015,RO
-1568342016,1568369043,BG
-1568369044,1568369044,DE
-1568369045,1568369049,BG
-1568369050,1568369050,DE
-1568369051,1568369062,BG
-1568369063,1568369063,DE
-1568369064,1568369076,BG
-1568369077,1568369077,DE
-1568369078,1568374783,BG
+1568342016,1568368639,BG
+1568368640,1568369663,DE
+1568369664,1568374783,BG
1568374784,1568440319,RU
1568440320,1568473087,NO
1568473088,1568505855,BY
@@ -39576,7 +46504,9 @@
1570578432,1570580479,CH
1570580480,1570582527,RU
1570582528,1570584575,DE
-1570584576,1570586623,RU
+1570584576,1570585087,RU
+1570585088,1570585343,UZ
+1570585344,1570586623,RU
1570586624,1570590719,PL
1570590720,1570592767,IL
1570592768,1570596863,PL
@@ -39588,7 +46518,10 @@
1570609152,1570611199,PL
1570611200,1570619391,RU
1570619392,1570621439,BA
-1570621440,1570625535,RU
+1570621440,1570621951,DE
+1570621952,1570623231,RU
+1570623232,1570623487,DE
+1570623488,1570625535,RU
1570625536,1570627583,GB
1570627584,1570629631,KG
1570629632,1570635775,RU
@@ -39597,15 +46530,18 @@
1570645248,1570652159,FR
1570652160,1570660863,SE
1570660864,1570661375,NO
-1570661376,1570662143,SE
+1570661376,1570661631,GB
+1570661632,1570662143,SE
1570662144,1570662399,DE
-1570662400,1570668543,SE
+1570662400,1570666127,SE
+1570666144,1570667647,SE
+1570667648,1570667651,US
+1570667652,1570668543,SE
1570668544,1570686975,RU
1570686976,1570693119,NL
1570693120,1570695167,RU
1570695168,1570696191,PL
-1570696192,1570696447,NL
-1570696448,1570697215,BR
+1570696192,1570697215,NL
1570697216,1570701311,RU
1570701312,1570717695,PL
1570717696,1570725887,HR
@@ -39638,14 +46574,16 @@
1571425872,1571425872,RU
1571425873,1571426047,CZ
1571426048,1571426303,UA
-1571426304,1571428351,CZ
+1571426304,1571428351,RU
1571428352,1571429375,UA
1571429376,1571430399,BY
1571430400,1571430911,UA
1571430912,1571431167,BY
1571431168,1571431423,UA
1571431424,1571432447,KZ
-1571432448,1571435519,CZ
+1571432448,1571433471,UA
+1571433472,1571434495,RU
+1571434496,1571435519,UA
1571435520,1571436031,RU
1571436032,1571436543,UA
1571436544,1571438591,BA
@@ -39661,7 +46599,7 @@
1571443200,1571443711,RU
1571443712,1571444991,CZ
1571444992,1571445247,UA
-1571445248,1571446271,CZ
+1571445248,1571446271,NL
1571446272,1571446783,RU
1571446784,1571447039,GB
1571447040,1571447295,UA
@@ -39679,11 +46617,15 @@
1571456512,1571456767,CZ
1571456768,1571457023,UA
1571457024,1571457535,CZ
-1571457536,1571458559,RU
+1571457536,1571458185,RU
+1571458186,1571458186,UA
+1571458187,1571458559,RU
1571458560,1571458815,CZ
1571458816,1571459071,BY
1571459072,1571463167,UA
-1571463168,1571466239,CZ
+1571463168,1571464191,UZ
+1571464192,1571465215,BY
+1571465216,1571466239,CZ
1571466240,1571467007,RU
1571467008,1571467263,UA
1571467264,1571467775,RU
@@ -39714,14 +46656,15 @@
1571489024,1571489279,UA
1571489280,1571489535,BY
1571489536,1571491071,RU
-1571491072,1571495935,CZ
+1571491072,1571491327,CZ
+1571491328,1571495935,UA
1571495936,1571496447,RU
-1571496448,1571497983,CZ
+1571496448,1571497983,BY
1571497984,1571500031,RU
1571500032,1571504127,BY
1571504128,1571508223,UA
1571508224,1571514367,RU
-1571514368,1571520511,CZ
+1571514368,1571520511,BY
1571520512,1571521535,UA
1571521536,1571522815,RU
1571522816,1571523583,CZ
@@ -39736,22 +46679,24 @@
1571528704,1571529215,BY
1571529216,1571529471,CZ
1571529472,1571529727,UA
-1571529728,1571531007,RU
+1571529728,1571530239,RU
+1571530240,1571530751,CZ
+1571530752,1571531007,RU
1571531008,1571531263,CZ
1571531264,1571532031,UA
1571532032,1571532287,RU
1571532288,1571532543,CZ
1571532544,1571532799,RU
-1571532800,1571534079,CZ
+1571532800,1571533055,CZ
+1571533056,1571533823,UA
+1571533824,1571534079,CZ
1571534080,1571534847,RU
1571534848,1571535103,LV
1571535104,1571535359,UA
1571535360,1571535617,CZ
1571535618,1571535618,RU
1571535619,1571535871,CZ
-1571535872,1571538943,RU
-1571538944,1571539967,CZ
-1571539968,1571540479,RU
+1571535872,1571540479,RU
1571540480,1571540693,CZ
1571540694,1571540695,RU
1571540696,1571540696,CZ
@@ -39761,15 +46706,13 @@
1571541248,1571541503,UA
1571541504,1571542015,CZ
1571542016,1571542527,RU
-1571542528,1571542783,SK
+1571542528,1571542783,UA
1571542784,1571543039,CZ
1571543040,1571543551,NL
1571543552,1571543807,UA
-1571543808,1571544063,RU
-1571544064,1571545087,CZ
-1571545088,1571545343,RU
+1571543808,1571545343,RU
1571545344,1571545599,UA
-1571545600,1571545855,CZ
+1571545600,1571545855,UZ
1571545856,1571546111,RU
1571546112,1571546623,UZ
1571546624,1571546879,NL
@@ -39778,8 +46721,7 @@
1571548160,1571549183,RU
1571549184,1571550207,UA
1571550208,1571550463,RU
-1571550464,1571552255,UA
-1571552256,1571553279,CZ
+1571550464,1571553279,UA
1571553280,1571684351,IL
1571684352,1571686399,ES
1571686400,1571688447,GB
@@ -39791,10 +46733,24 @@
1571700736,1571702783,IT
1571702784,1571704831,RU
1571704832,1571706879,GB
-1571706880,1571708415,NL
-1571708416,1571708671,SC
-1571708672,1571708927,NL
-1571708928,1571710975,GB
+1571706880,1571708179,SC
+1571708180,1571708180,NL
+1571708181,1571708338,SC
+1571708339,1571708339,NL
+1571708340,1571708677,SC
+1571708678,1571708679,NL
+1571708680,1571708927,SC
+1571708928,1571709439,GB
+1571709440,1571709567,DE
+1571709568,1571709695,GB
+1571709696,1571709823,FR
+1571709824,1571709951,GB
+1571709952,1571710079,NL
+1571710080,1571710207,GB
+1571710208,1571710335,ES
+1571710336,1571710463,GB
+1571710464,1571710591,IT
+1571710592,1571710975,GB
1571710976,1571713023,NL
1571713024,1571715071,RU
1571715072,1571717119,GR
@@ -39819,7 +46775,7 @@
1571748608,1571748863,GB
1571748864,1571749119,US
1571749120,1571749375,SG
-1571749376,1571749887,US
+1571749376,1571749887,GB
1571749888,1571758079,RU
1571758080,1571766271,IL
1571766272,1571786751,PL
@@ -39837,7 +46793,8 @@
1571962880,1571979263,RU
1571979264,1571995647,DK
1571995648,1572012031,UA
-1572012032,1572028415,SE
+1572012032,1572020223,NO
+1572020224,1572028415,SE
1572028416,1572028927,RU
1572028928,1572029183,UA
1572029184,1572034815,RU
@@ -39846,7 +46803,12 @@
1572035072,1572035199,CZ
1572035200,1572035327,NG
1572035328,1572035455,US
-1572035456,1572044799,RU
+1572035456,1572036607,RU
+1572036608,1572038655,US
+1572038656,1572040703,RU
+1572040704,1572042751,US
+1572042752,1572043775,RU
+1572043776,1572044799,HK
1572044800,1572061183,IT
1572061184,1572077567,PL
1572077568,1572093951,RU
@@ -39855,7 +46817,8 @@
1572098048,1572100095,DK
1572100096,1572102143,CH
1572102144,1572110335,BA
-1572110336,1572112383,GB
+1572110336,1572110591,US
+1572110592,1572112383,GB
1572112384,1572114431,RU
1572114432,1572116479,BA
1572116480,1572118527,DE
@@ -39868,7 +46831,9 @@
1572225024,1572241407,TR
1572241408,1572257791,SE
1572257792,1572274175,FR
-1572274176,1572290559,US
+1572274176,1572276223,FI
+1572276224,1572277247,US
+1572277248,1572290559,SG
1572290560,1572306943,RU
1572306944,1572323327,BG
1572323328,1572339711,UA
@@ -39877,8 +46842,7 @@
1572347904,1572351999,FR
1572352000,1572356095,DE
1572356096,1572360191,SK
-1572360192,1572362751,XK
-1572362752,1572364287,RS
+1572360192,1572364287,RS
1572364288,1572368383,NL
1572368384,1572372479,NO
1572372480,1572376575,DE
@@ -39890,9 +46854,12 @@
1572393472,1572393983,GB
1572393984,1572394495,DE
1572394496,1572394751,FR
-1572394752,1572395263,US
+1572394877,1572394877,US
+1572394963,1572394963,US
+1572395008,1572395263,US
1572395264,1572395519,NL
-1572395520,1572397055,US
+1572395520,1572396031,US
+1572396032,1572397055,GB
1572397056,1572401151,AZ
1572401152,1572405247,GB
1572405248,1572409343,CZ
@@ -39918,7 +46885,11 @@
1572491264,1572495359,IT
1572495360,1572499455,RU
1572499456,1572503551,TR
-1572503552,1572507647,IT
+1572503552,1572505983,IT
+1572505984,1572506623,GR
+1572506624,1572507199,IT
+1572507200,1572507207,GB
+1572507208,1572507647,IT
1572507648,1572511743,GB
1572511744,1572515839,DE
1572515840,1572519935,NL
@@ -39944,9 +46915,8 @@
1572562944,1572564991,CZ
1572564992,1572567039,DE
1572567040,1572569087,RU
-1572571136,1572573183,BG
-1572573184,1572574207,GG
-1572574208,1572575231,GB
+1572571136,1572573183,US
+1572573184,1572575231,GG
1572575232,1572577279,RU
1572577280,1572579327,AM
1572579328,1572581375,GB
@@ -39977,15 +46947,15 @@
1572634624,1572634879,BE
1572634880,1572635135,PT
1572635136,1572635391,RO
-1572635392,1572635647,US
+1572635392,1572635647,FR
1572635648,1572635903,ES
-1572635904,1572636159,US
+1572635904,1572636159,DE
1572636160,1572636415,IT
1572636416,1572636671,NL
1572636672,1572638719,ES
1572638720,1572640767,FR
1572640768,1572642815,RU
-1572642816,1572644863,LT
+1572642816,1572644863,US
1572644864,1572646911,FR
1572646912,1572648959,GB
1572648960,1572651007,RU
@@ -40001,9 +46971,11 @@
1572673536,1572675583,AT
1572675584,1572677631,ES
1572677632,1572681727,RU
-1572681728,1572681983,LT
-1572681984,1572682239,NL
-1572682240,1572683775,LT
+1572681728,1572682751,NL
+1572682752,1572683007,DE
+1572683008,1572683263,NL
+1572683264,1572683519,DE
+1572683520,1572683775,RU
1572683776,1572685823,CH
1572685824,1572689919,RU
1572689920,1572691967,ES
@@ -40103,62 +47075,189 @@
1578500096,1578565631,FI
1578565632,1578579321,FR
1578579322,1578579322,HR
-1578579323,1578584355,FR
+1578579323,1578582015,FR
+1578582016,1578584063,IT
+1578584064,1578584355,FR
1578584356,1578584356,IT
-1578584357,1578584680,FR
-1578584681,1578584681,PT
-1578584682,1578584689,FR
-1578584690,1578584690,PT
-1578584691,1578587140,FR
-1578587141,1578587141,ES
-1578587142,1578590863,FR
+1578584357,1578584575,FR
+1578584576,1578585299,PT
+1578585300,1578585300,FR
+1578585301,1578586111,PT
+1578586112,1578588159,ES
+1578588160,1578590207,PL
+1578590208,1578590283,FR
+1578590284,1578590287,GB
+1578590288,1578590639,FR
+1578590640,1578590647,CZ
+1578590648,1578590787,FR
+1578590788,1578590791,ES
+1578590792,1578590815,FR
+1578590816,1578590831,GB
+1578590832,1578590851,FR
+1578590852,1578590855,ES
+1578590856,1578590863,FR
1578590864,1578590879,BE
-1578590880,1578590896,FR
-1578590897,1578590897,FI
-1578590898,1578592071,FR
+1578590880,1578590895,FR
+1578590896,1578590911,FI
+1578590912,1578590935,FR
+1578590936,1578590943,ES
+1578590944,1578591143,FR
+1578591144,1578591151,GB
+1578591152,1578591247,FR
+1578591248,1578591263,GB
+1578591264,1578591407,FR
+1578591408,1578591411,ES
+1578591412,1578591579,FR
+1578591580,1578591583,ES
+1578591584,1578591695,FR
+1578591696,1578591699,ES
+1578591700,1578591791,FR
+1578591792,1578591795,ES
+1578591796,1578591935,FR
+1578591936,1578591939,DE
+1578591940,1578591999,FR
+1578592000,1578592031,DE
+1578592032,1578592071,FR
1578592072,1578592079,ES
-1578592080,1578592175,FR
+1578592080,1578592111,FR
+1578592112,1578592127,ES
+1578592128,1578592175,FR
1578592176,1578592183,CZ
1578592184,1578592191,PT
1578592192,1578592199,BE
1578592200,1578592207,CH
-1578592208,1578592539,FR
+1578592208,1578592375,FR
+1578592376,1578592379,GB
+1578592380,1578592423,FR
+1578592424,1578592431,IE
+1578592432,1578592539,FR
1578592540,1578592543,ES
-1578592544,1578593023,FR
+1578592544,1578592591,FR
+1578592592,1578592607,NL
+1578592608,1578592803,FR
+1578592804,1578592807,PL
+1578592808,1578593023,FR
1578593024,1578593279,DE
-1578593280,1578594559,FR
+1578593280,1578593375,FR
+1578593376,1578593407,GB
+1578593408,1578593439,FR
+1578593440,1578593443,ES
+1578593444,1578593495,FR
+1578593496,1578593499,PT
+1578593500,1578593695,FR
+1578593696,1578593703,GB
+1578593704,1578593887,FR
+1578593888,1578593895,ES
+1578593896,1578593955,FR
+1578593956,1578593959,ES
+1578593960,1578594055,FR
+1578594056,1578594059,ES
+1578594060,1578594063,FR
+1578594064,1578594079,PL
+1578594080,1578594087,FR
+1578594088,1578594095,CZ
+1578594096,1578594271,FR
+1578594272,1578594303,BE
+1578594304,1578594307,FR
+1578594308,1578594311,FI
+1578594312,1578594351,FR
+1578594352,1578594355,GB
+1578594356,1578594479,FR
+1578594480,1578594495,ES
+1578594496,1578594559,FR
1578594560,1578594815,ES
-1578594816,1578595419,FR
+1578594816,1578594879,FR
+1578594880,1578594895,DE
+1578594896,1578595039,FR
+1578595040,1578595055,GB
+1578595056,1578595103,FR
+1578595104,1578595119,GB
+1578595120,1578595127,FR
+1578595128,1578595131,PL
+1578595132,1578595151,FR
+1578595152,1578595167,ES
+1578595168,1578595275,FR
+1578595276,1578595279,ES
+1578595280,1578595419,FR
1578595420,1578595423,GB
-1578595424,1578595807,FR
+1578595424,1578595447,FR
+1578595448,1578595455,ES
+1578595456,1578595471,FR
+1578595472,1578595479,ES
+1578595480,1578595487,GB
+1578595488,1578595535,FR
+1578595536,1578595543,LT
+1578595544,1578595643,FR
+1578595644,1578595647,GB
+1578595648,1578595763,FR
+1578595764,1578595767,DE
+1578595768,1578595807,FR
1578595808,1578595823,ES
-1578595824,1578596448,FR
-1578596449,1578596449,GB
-1578596450,1578602495,FR
+1578595824,1578595987,FR
+1578595988,1578595991,ES
+1578595992,1578596107,FR
+1578596108,1578596111,ES
+1578596112,1578596123,FR
+1578596124,1578596127,ES
+1578596128,1578596255,FR
+1578596256,1578596287,GB
+1578596288,1578596319,FR
+1578596320,1578596327,ES
+1578596328,1578596351,FR
+1578596352,1578596863,GB
+1578596864,1578602495,FR
1578602496,1578604543,NL
-1578604544,1578605014,FR
-1578605015,1578605015,GB
-1578605016,1578605258,FR
-1578605259,1578605259,GB
-1578605260,1578606591,FR
-1578606592,1578608639,DE
-1578608640,1578609039,FR
+1578604544,1578606591,GB
+1578606592,1578609039,DE
1578609040,1578609040,CZ
-1578609041,1578609042,FR
+1578609041,1578609042,DE
1578609043,1578609043,CZ
-1578609044,1578609826,FR
+1578609044,1578609826,DE
1578609827,1578609827,CZ
-1578609828,1578611167,FR
+1578609828,1578610687,DE
+1578610688,1578610695,FR
+1578610696,1578610703,ES
+1578610704,1578611039,FR
+1578611040,1578611043,ES
+1578611044,1578611075,FR
+1578611076,1578611079,HR
+1578611080,1578611127,FR
+1578611128,1578611135,GB
+1578611136,1578611167,FR
1578611168,1578611175,DE
-1578611176,1578611871,FR
+1578611176,1578611183,FR
+1578611184,1578611191,ES
+1578611192,1578611423,FR
+1578611424,1578611439,CZ
+1578611440,1578611871,FR
1578611872,1578611887,GB
1578611888,1578611967,FR
1578611968,1578611971,DE
1578611972,1578611979,FR
1578611980,1578611983,DE
-1578611984,1578613436,FR
+1578611984,1578611999,FR
+1578612000,1578612007,ES
+1578612008,1578612059,FR
+1578612060,1578612063,ES
+1578612064,1578612247,FR
+1578612248,1578612255,ES
+1578612256,1578612319,FR
+1578612320,1578612351,IT
+1578612352,1578612495,FR
+1578612496,1578612499,DE
+1578612500,1578612907,FR
+1578612908,1578612911,ES
+1578612912,1578613436,FR
1578613437,1578613437,ES
-1578613438,1578614319,FR
+1578613438,1578613491,FR
+1578613492,1578613495,IE
+1578613496,1578613679,FR
+1578613680,1578613695,ES
+1578613696,1578613735,FR
+1578613736,1578613739,ES
+1578613740,1578614203,FR
+1578614204,1578614271,GB
+1578614272,1578614319,FR
1578614320,1578614323,RU
1578614324,1578614327,HU
1578614328,1578614399,FR
@@ -40174,13 +47273,15 @@
1578614476,1578614479,UA
1578614480,1578614495,FR
1578614496,1578614511,DE
-1578614512,1578615915,FR
+1578614512,1578614583,FR
+1578614584,1578614591,GB
+1578614592,1578615915,FR
1578615916,1578615916,GB
1578615917,1578631167,FR
1578631168,1578637311,IR
-1578637312,1578637567,GB
+1578637312,1578637567,US
1578637568,1578637823,AU
-1578637824,1578638335,GB
+1578637824,1578638335,US
1578638336,1578638591,PL
1578638592,1578638847,RO
1578638848,1578639359,US
@@ -40198,15 +47299,21 @@
1578663936,1578762239,RU
1578762240,1578768383,BG
1578768384,1578768895,GB
-1578768896,1578778623,BG
+1578768896,1578769151,BG
+1578769152,1578769407,US
+1578769408,1578778623,BG
1578778624,1578778879,AU
1578778880,1578779135,GB
-1578779136,1578786047,BG
+1578779136,1578779391,BG
+1578779392,1578779647,US
+1578779648,1578780927,BG
+1578780928,1578781183,US
+1578781184,1578786047,BG
1578786048,1578786303,GI
1578786304,1578786559,BG
1578786560,1578786815,GI
-1578786816,1578787071,BG
-1578787072,1578787839,GI
+1578786816,1578787327,BG
+1578787328,1578787839,GI
1578787840,1578788095,BG
1578788096,1578788351,GI
1578788352,1578788607,BG
@@ -40239,21 +47346,32 @@
1580075008,1580075199,SE
1580075200,1580075231,PT
1580075232,1580076031,SE
-1580076032,1580081151,PT
+1580076032,1580077055,PT
+1580077056,1580078079,ES
+1580078080,1580081151,PT
1580081152,1580083199,TR
-1580083200,1580087807,SE
+1580083200,1580087565,US
+1580087566,1580087566,SE
+1580087567,1580087807,US
1580087808,1580088063,BE
-1580088064,1580089343,SE
+1580088064,1580089102,US
+1580089103,1580089103,SE
+1580089104,1580089343,US
1580089344,1580097535,DE
1580097536,1580098047,GB
1580098048,1580098303,US
-1580098304,1580101631,GB
-1580101632,1580105727,SE
+1580098304,1580101955,GB
+1580101956,1580101956,SE
+1580101957,1580102718,GB
+1580102719,1580102719,SE
+1580102720,1580105007,GB
+1580105008,1580105008,SE
+1580105009,1580105727,GB
1580105728,1580107775,PT
1580107776,1580109055,SE
1580109056,1580109567,PT
1580109568,1580109823,SE
-1580109824,1580113919,NL
+1580109824,1580113919,US
1580113920,1580120063,PT
1580120064,1580121087,GB
1580121088,1580122111,NL
@@ -40267,7 +47385,9 @@
1580129280,1580130303,GB
1580130304,1580134399,CY
1580134400,1580135423,SE
-1580135424,1580136447,GB
+1580135424,1580135679,GB
+1580135680,1580136191,SE
+1580136192,1580136447,GB
1580136448,1580137215,SE
1580137216,1580137471,PT
1580137472,1580138495,SE
@@ -40283,7 +47403,8 @@
1581793280,1581809663,PL
1581809664,1581826047,BG
1581826048,1581842431,GB
-1581842432,1581858815,BG
+1581842432,1581850623,PS
+1581850624,1581858815,ES
1581858816,1581875199,IT
1581875200,1581891583,TR
1581891584,1581907967,RU
@@ -40295,7 +47416,9 @@
1581989888,1582006271,PL
1582006272,1582022655,RU
1582022656,1582039039,NL
-1582039040,1582055423,BH
+1582039040,1582039295,BH
+1582039296,1582039551,US
+1582039552,1582055423,BH
1582055424,1582071807,UA
1582071808,1582088191,ES
1582088192,1582104575,GB
@@ -40317,7 +47440,9 @@
1583617792,1583618047,US
1583618048,1583620095,NL
1583620096,1583624191,IT
-1583624192,1583628287,RS
+1583624192,1583626342,XK
+1583626343,1583626343,AL
+1583626344,1583628287,XK
1583628288,1583632383,DE
1583632384,1583636479,RU
1583636480,1583640575,MK
@@ -40327,13 +47452,7 @@
1583652864,1583656959,FR
1583656960,1583665151,RU
1583665152,1583669247,UA
-1583669248,1583670271,GE
-1583670272,1583670527,RU
-1583670528,1583670655,GE
-1583670656,1583670684,RU
-1583670685,1583670685,GE
-1583670686,1583671295,RU
-1583671296,1583673343,GE
+1583669248,1583673343,GE
1583673344,1583677439,DE
1583677440,1583681535,FI
1583681536,1583685631,PL
@@ -40352,7 +47471,9 @@
1583742976,1583747071,TR
1583747072,1583751167,RU
1583751168,1583755263,NO
-1583755264,1583759359,NL
+1583755264,1583756031,SC
+1583756032,1583756287,NL
+1583756288,1583759359,SC
1583759360,1583763455,TR
1583763456,1583765503,SY
1583765504,1583766015,RU
@@ -40361,19 +47482,43 @@
1583767552,1583771647,AT
1583771648,1583775743,RU
1583775744,1583779839,IT
-1583779840,1583783935,GB
+1583779840,1583779847,GB
+1583779848,1583779855,IT
+1583779856,1583780423,GB
+1583780424,1583780431,IT
+1583780432,1583780743,GB
+1583780744,1583780751,IT
+1583780752,1583781343,GB
+1583781344,1583781351,IT
+1583781352,1583781671,GB
+1583781672,1583781679,IT
+1583781680,1583781863,GB
+1583781864,1583781871,IT
+1583781872,1583782415,GB
+1583782416,1583782423,IT
+1583782424,1583782431,GB
+1583782432,1583782439,IT
+1583782440,1583782975,GB
+1583782976,1583782983,IT
+1583782984,1583783935,GB
1583788032,1583792127,TM
1583792128,1583796223,IE
1583796224,1583800319,DE
1583800320,1583804415,ME
1583804416,1583808511,GB
-1583808512,1583810559,MD
+1583808512,1583809791,MD
+1583809792,1583810559,HK
1583810560,1583810815,US
-1583810816,1583811583,MD
+1583810816,1583811071,NL
+1583811072,1583811583,MD
1583811584,1583811839,RU
1583811840,1583812607,MD
-1583812608,1583816703,NL
-1583816704,1583820799,TR
+1583812608,1583816351,NL
+1583816352,1583816367,GB
+1583816368,1583816703,NL
+1583816704,1583817312,TR
+1583817313,1583817344,GB
+1583817345,1583820799,TR
1583820800,1583824895,LV
1583824896,1583828991,SI
1583828992,1583833087,RU
@@ -40388,8 +47533,7 @@
1583869952,1583874047,KZ
1583874048,1584398335,BE
1584398336,1584529407,CZ
-1584529408,1584594943,DE
-1584594944,1584660479,CZ
+1584529408,1584660479,DE
1584660480,1584857087,GB
1584857088,1584857855,DE
1584857856,1584857863,HR
@@ -40401,7 +47545,9 @@
1584857904,1584857911,GB
1584857912,1584857919,IE
1584857920,1584858111,DE
-1584858112,1584922623,GB
+1584858112,1584859007,GB
+1584859008,1584859135,NL
+1584859136,1584922623,GB
1584922624,1585184767,TR
1585184768,1585190911,PL
1585190912,1585192959,ES
@@ -40409,10 +47555,7 @@
1585195008,1585197055,CZ
1585197056,1585199103,IT
1585199104,1585201151,NL
-1585201152,1585202687,GB
-1585202688,1585202943,IT
-1585202944,1585203199,GB
-1585203200,1585205247,IT
+1585201152,1585205247,IT
1585205248,1585207295,FR
1585207296,1585209343,NL
1585211392,1585213439,CZ
@@ -40420,27 +47563,43 @@
1585217536,1585219583,FR
1585219584,1585221631,NL
1585221632,1585223679,SK
-1585223680,1585224447,FR
-1585224448,1585224703,GP
-1585224704,1585225727,FR
-1585225728,1585227775,UA
+1585223680,1585223935,MQ
+1585223936,1585224703,FR
+1585224704,1585224959,GF
+1585224960,1585225727,FR
+1585225728,1585227007,UA
+1585227008,1585227263,RU
+1585227264,1585227775,UA
1585227776,1585231871,RU
1585231872,1585233919,CZ
1585233920,1585238015,RU
1585238016,1585240063,DE
-1585240064,1585242111,MQ
+1585240064,1585240575,GP
+1585240576,1585241087,MQ
+1585241088,1585242111,GP
1585242112,1585244159,RU
1585244160,1585246207,FR
1585246208,1585248255,RU
-1585248256,1585250303,CZ
+1585248256,1585249279,CZ
+1585249280,1585249791,DE
+1585249792,1585250303,CZ
1585250304,1585254399,RU
1585254400,1585256447,GB
1585256448,1585258495,DE
1585258496,1585260543,GB
1585260544,1585264639,RU
-1585264640,1585265967,IM
+1585264640,1585265663,MT
+1585265664,1585265727,IM
+1585265728,1585265855,FR
+1585265856,1585265871,IM
+1585265872,1585265919,FR
+1585265920,1585265935,IM
+1585265936,1585265943,FR
+1585265944,1585265967,IM
1585265968,1585265983,FR
-1585265984,1585266687,IM
+1585265984,1585266047,IM
+1585266048,1585266111,FR
+1585266112,1585266687,IM
1585266688,1585270783,DE
1585270784,1585272831,IT
1585272832,1585274879,RU
@@ -40466,8 +47625,7 @@
1585317888,1585319935,IT
1585319936,1585321983,CH
1585321984,1585324031,RU
-1585324032,1585324287,NL
-1585324288,1585324543,IE
+1585324032,1585324543,IE
1585324544,1585324799,FR
1585324800,1585326079,NL
1585326080,1585328127,GB
@@ -40526,7 +47684,9 @@
1585440768,1585442815,IT
1585442816,1585446911,RU
1585446912,1585577983,KW
-1585577984,1585643519,DE
+1585577984,1585624156,DE
+1585624157,1585624157,GS
+1585624158,1585643519,DE
1585643520,1585709055,UA
1585709056,1585840127,PT
1585840128,1585971199,DE
@@ -40562,7 +47722,10 @@
1586233344,1586241535,FR
1586241536,1586249727,SE
1586249728,1586257919,SI
-1586257920,1586266111,LV
+1586257920,1586260479,SE
+1586260736,1586263039,SE
+1586263040,1586265087,LV
+1586265088,1586266111,SE
1586266112,1586274303,RU
1586274304,1586282495,BE
1586282496,1586298879,RU
@@ -40578,7 +47741,13 @@
1586380800,1586388991,GB
1586388992,1586389503,ES
1586389504,1586389759,US
-1586389760,1586397183,ES
+1586389760,1586392831,ES
+1586392832,1586392895,NL
+1586392896,1586393607,ES
+1586393608,1586393615,GB
+1586393616,1586393631,FR
+1586393632,1586393663,NL
+1586393664,1586397183,ES
1586399232,1586401279,RU
1586401280,1586403327,IT
1586403328,1586405375,IS
@@ -40592,8 +47761,7 @@
1586421760,1586423807,SE
1586423808,1586425855,CZ
1586425856,1586427903,NL
-1586427904,1586429951,FR
-1586429952,1586431999,CH
+1586427904,1586431999,CH
1586432000,1586434047,DK
1586434048,1586436095,FR
1586436096,1586438143,ES
@@ -40604,7 +47772,17 @@
1586452480,1586454527,CH
1586454528,1586456575,IT
1586456576,1586458623,GB
-1586458624,1586460671,FR
+1586458624,1586458911,FR
+1586458912,1586458943,BE
+1586458944,1586458975,CH
+1586458976,1586459007,DE
+1586459008,1586459039,ES
+1586459040,1586459071,GB
+1586459072,1586459103,IT
+1586459104,1586459135,NL
+1586459136,1586460527,FR
+1586460528,1586460543,ES
+1586460544,1586460671,FR
1586462720,1586464767,RU
1586464768,1586466815,ES
1586466816,1586468863,RU
@@ -40625,23 +47803,23 @@
1587085312,1587150847,UA
1587150848,1587154943,RU
1587154944,1587159039,PL
-1587159040,1587163135,UA
-1587163136,1587165183,DE
+1587159040,1587161087,UA
+1587161088,1587162879,TR
+1587162880,1587163135,UA
1587165184,1587167231,PL
1587167232,1587175423,RU
1587175424,1587177471,PL
1587177472,1587179519,RS
1587200000,1587216383,UA
-1587216384,1587322367,BG
+1587216384,1587297791,BG
+1587297792,1587298303,GB
+1587298304,1587322367,BG
1587322368,1587322623,RS
1587322624,1587347455,BG
1587347456,1587412991,NL
1587412992,1587417087,RU
1587421184,1587425279,UA
-1587425280,1587425535,RU
-1587425536,1587425791,UZ
-1587425792,1587427327,RU
-1587427328,1587429375,UZ
+1587425280,1587429375,UZ
1587429376,1587437567,UA
1587437568,1587445759,RU
1587445760,1587449855,PL
@@ -40651,7 +47829,8 @@
1587478528,1587511295,RU
1587511296,1587544063,IL
1587544064,1588068351,IT
-1588068352,1588396031,NL
+1588068352,1588330495,NL
+1588330496,1588396031,PL
1588396032,1588592639,GB
1588592640,1588593663,RO
1588593664,1588593919,IE
@@ -40667,9 +47846,12 @@
1588617216,1588617727,RO
1588617728,1588618239,BE
1588618240,1588619775,RO
-1588619776,1588620287,SG
-1588620288,1588621311,RO
-1588621312,1588625407,BG
+1588619776,1588620031,SG
+1588620032,1588620287,ES
+1588620288,1588620543,RO
+1588620544,1588620799,PL
+1588620800,1588621311,RO
+1588621312,1588625407,MD
1588625408,1588626175,RO
1588626176,1588626431,IT
1588626432,1588627455,RO
@@ -40686,8 +47868,12 @@
1588641792,1588642303,BG
1588642304,1588642559,DE
1588642560,1588642815,NL
-1588642816,1588643839,BG
-1588643840,1588649983,RO
+1588642816,1588643071,RO
+1588643072,1588643327,NL
+1588643328,1588643839,DE
+1588643840,1588645887,RO
+1588645888,1588646399,GB
+1588646400,1588649983,RO
1588649984,1588652031,SE
1588652032,1588652159,NL
1588652160,1588654079,LT
@@ -40701,7 +47887,7 @@
1588663296,1588663807,RO
1588663808,1588664063,GB
1588664064,1588664319,RO
-1588664320,1588664575,TH
+1588664320,1588664575,ES
1588664576,1588664831,EE
1588664832,1588665087,RO
1588665088,1588665343,GB
@@ -40712,14 +47898,15 @@
1588674304,1588674559,NL
1588674560,1588674815,RO
1588674816,1588675071,GB
-1588675072,1588675583,RO
+1588675072,1588675327,RO
+1588675328,1588675583,PL
1588675584,1588676607,IT
1588676608,1588678655,IR
1588678656,1588680703,RO
1588680704,1588682751,LU
1588682752,1588683775,RO
1588683776,1588684799,CH
-1588684800,1588685055,TH
+1588684800,1588685055,ES
1588685056,1588685311,NL
1588685312,1588686847,RO
1588686848,1588687103,NO
@@ -40729,10 +47916,14 @@
1588688640,1588689407,RO
1588689408,1588689663,GB
1588689664,1588689919,RU
-1588689920,1588690687,GB
+1588689920,1588690431,RO
+1588690432,1588690687,GB
1588690688,1588690943,IT
-1588690944,1588692991,PL
-1588692992,1588694015,RO
+1588690944,1588692223,PL
+1588692224,1588692479,DE
+1588692480,1588692991,PL
+1588692992,1588693503,RO
+1588693504,1588694015,GB
1588694016,1588695039,CH
1588695040,1588696831,RO
1588696832,1588697087,IT
@@ -40751,26 +47942,13 @@
1589202944,1589204991,SE
1589204992,1589207039,DE
1589207040,1589215231,IT
-1589215232,1589224447,GB
-1589224448,1589224703,BE
-1589224704,1589247999,GB
+1589215232,1589247999,GB
1589248000,1589256191,EE
-1589256192,1589257215,SE
-1589257216,1589257727,NO
-1589257728,1589257983,SE
-1589257984,1589261311,NO
-1589261312,1589262335,LV
-1589262336,1589265919,NO
-1589265920,1589266175,LV
-1589266176,1589266431,NO
-1589266432,1589267455,LV
-1589267456,1589267711,NO
-1589267712,1589267967,LV
-1589267968,1589268479,NO
-1589268480,1589273087,LV
-1589273088,1589274623,NO
-1589274624,1589276159,LV
-1589276160,1589280767,NO
+1589256192,1589258239,SE
+1589258240,1589260287,LV
+1589260288,1589264383,SE
+1589264384,1589278719,LV
+1589278720,1589280767,SE
1589280768,1589313535,DE
1589313536,1589346303,LB
1589346304,1589379071,KW
@@ -40780,19 +47958,23 @@
1589477376,1589510143,RS
1589510144,1589542911,RU
1589542912,1589547007,BG
-1589547008,1589551103,EE
+1589547008,1589547263,EE
+1589547264,1589547519,GG
+1589547520,1589551103,EE
1589551104,1589560319,BG
1589560320,1589561343,GI
1589561344,1589563391,NL
1589563392,1589571583,HK
-1589571584,1589574143,GB
+1589571584,1589573631,GB
+1589573632,1589574143,US
1589574144,1589574399,CA
-1589574400,1589574655,GB
+1589574400,1589574655,US
1589574656,1589575679,BG
1589575680,1589608447,CN
1589608448,1589616639,SE
1589616640,1589624831,DK
-1589624832,1589641215,SE
+1589624832,1589626879,SE
+1589626880,1589641215,DK
1589641216,1590034431,GB
1590034432,1590036479,RU
1590036480,1590038527,GB
@@ -40815,9 +47997,8 @@
1590073344,1590075391,NL
1590075392,1590077439,BE
1590077440,1590079487,GB
-1590079488,1590079743,MQ
-1590079744,1590080511,FR
-1590080512,1590081535,MQ
+1590079488,1590079743,GP
+1590079744,1590081535,MQ
1590081536,1590083583,GB
1590083584,1590085631,RU
1590085632,1590087679,FR
@@ -40841,7 +48022,11 @@
1590126592,1590128639,RU
1590128640,1590130687,FI
1590130688,1590132735,FR
-1590132736,1590134783,GB
+1590132736,1590134015,GB
+1590134016,1590134023,DE
+1590134024,1590134031,GB
+1590134032,1590134039,DE
+1590134040,1590134783,GB
1590136832,1590138879,GB
1590138880,1590140927,FR
1590140928,1590142975,UA
@@ -40852,8 +48037,7 @@
1590151168,1590153215,TR
1590153216,1590155263,DE
1590155264,1590157311,RU
-1590157312,1590159359,IE
-1590159360,1590161407,GB
+1590157312,1590161407,GB
1590161408,1590163455,DE
1590163456,1590165503,NL
1590165504,1590689791,AE
@@ -40880,7 +48064,9 @@
1592053760,1592057855,NL
1592057856,1592061951,RS
1592061952,1592066047,RU
-1592066048,1592070143,CY
+1592066048,1592066559,CY
+1592066560,1592067583,US
+1592067584,1592070143,CY
1592070144,1592074239,RU
1592074240,1592078335,SK
1592078336,1592082431,NL
@@ -40956,26 +48142,31 @@
1592459264,1592524799,TR
1592524800,1592557567,GB
1592557568,1592590335,BG
-1592590336,1592606719,FI
+1592590336,1592596479,FI
+1592596480,1592598527,DE
+1592598528,1592600575,FI
+1592600576,1592602623,NL
+1592602624,1592604671,GB
+1592604672,1592606719,FI
1592606720,1592608767,SG
-1592608768,1592623103,FI
+1592608768,1592610815,FI
+1592610816,1592612863,DE
+1592612864,1592623103,FI
1592623104,1592655871,RU
1592655872,1592786943,FR
1592786944,1592803327,PL
1592803328,1592819711,RU
1592819712,1592836095,UA
-1592836096,1592840191,GE
-1592840192,1592842239,RU
-1592842240,1592852479,GE
+1592836096,1592852479,GE
1592852480,1592868863,RU
1592868864,1592885247,CZ
1592885248,1592901631,IR
1592901632,1592934399,RU
1592934400,1592950783,CZ
1592950784,1592967167,RU
-1592967168,1592980223,LU
-1592980224,1592980479,DE
-1592980480,1592983551,LU
+1592967168,1592972415,LU
+1592972416,1592972543,CY
+1592972544,1592983551,LU
1592983552,1592999935,RU
1592999936,1593016319,MD
1593016320,1593049087,RU
@@ -40990,20 +48181,14 @@
1593131264,1593132031,CH
1593132032,1593132287,GB
1593132288,1593132543,AT
-1593132544,1593132799,FR
-1593132800,1593133055,GB
-1593133056,1593133311,FR
-1593133312,1593133567,GB
-1593133568,1593133823,FR
+1593132544,1593133823,GB
1593133824,1593134591,AT
1593134592,1593135103,SE
1593135104,1593135359,GB
1593135360,1593135615,IE
1593135616,1593136639,GB
1593136640,1593139199,IE
-1593139200,1593139455,GB
-1593139456,1593139711,NL
-1593139712,1593140223,GB
+1593139200,1593140223,NL
1593140224,1593147391,IE
1593147392,1593163775,RU
1593163776,1593180159,AT
@@ -41026,9 +48211,9 @@
1593260032,1593262079,RU
1593262080,1593264127,KZ
1593264128,1593266175,NL
-1593266176,1593267199,GB
-1593267200,1593267711,BZ
-1593267712,1593268223,GB
+1593266176,1593267295,GB
+1593267296,1593267296,DE
+1593267297,1593268223,GB
1593268224,1593270271,HU
1593270272,1593272319,GB
1593272320,1593274367,RU
@@ -41054,22 +48239,31 @@
1593376768,1593409535,JO
1593409536,1593412095,DE
1593412096,1593412351,GB
-1593412352,1593421055,DE
+1593412352,1593420927,DE
+1593420928,1593421055,US
1593421056,1593421311,GB
1593421312,1593421567,FR
1593421568,1593421823,GB
1593421824,1593422591,DE
1593422592,1593422847,GB
-1593422848,1593431167,DE
+1593422848,1593423359,DE
+1593423360,1593423423,US
+1593423424,1593423439,DE
+1593423440,1593423615,US
+1593423616,1593431167,DE
1593431168,1593431295,GB
-1593431296,1593442303,DE
+1593431296,1593438719,DE
+1593438720,1593438847,US
+1593438848,1593438863,DE
+1593438864,1593438975,US
+1593438976,1593442047,DE
+1593442048,1593442303,GB
1593442304,1593475071,BA
1593475072,1593491455,HR
1593491456,1593499647,DE
1593499648,1593503743,GB
1593503744,1593505791,CZ
-1593505792,1593507839,NL
-1593507840,1593540607,RU
+1593505792,1593540607,RU
1593540608,1593573375,PL
1593573376,1593606143,LU
1593606144,1593638911,SY
@@ -41107,12 +48301,11 @@
1596854272,1596858367,BY
1596858368,1596858879,CZ
1596858880,1596859391,RU
-1596859392,1596859903,CZ
-1596859904,1596861439,RU
+1596859392,1596860415,CZ
+1596860416,1596861439,RU
1596861440,1596861951,UA
-1596861952,1596862207,CZ
-1596862208,1596862463,RU
-1596862464,1596866559,CZ
+1596861952,1596862207,BY
+1596862208,1596866559,RU
1596866560,1596868607,UZ
1596868608,1596869631,RU
1596869632,1596869887,UA
@@ -41125,7 +48318,8 @@
1596875008,1596875263,RU
1596875264,1596875775,UA
1596875776,1596876799,UZ
-1596876800,1596877311,RU
+1596876800,1596877055,UA
+1596877056,1596877311,RU
1596877312,1596877596,CZ
1596877597,1596877597,UA
1596877598,1596877823,CZ
@@ -41153,19 +48347,15 @@
1596891136,1596892159,UA
1596892160,1596893183,RU
1596893184,1596895231,UA
-1596895232,1596899327,CZ
-1596899328,1596900863,RU
+1596895232,1596900863,RU
1596900864,1596901375,NL
-1596901376,1596903423,CZ
-1596903424,1596907519,BY
+1596901376,1596907519,BY
1596907520,1596909567,RU
1596909568,1596911615,KZ
1596911616,1596912639,BY
1596912640,1596923903,RU
1596923904,1596924927,ES
-1596924928,1596925951,RU
-1596925952,1596929535,CZ
-1596929536,1596930047,RU
+1596924928,1596930047,RU
1596930048,1596930303,UA
1596930304,1596930559,TM
1596930560,1596931071,CZ
@@ -41176,15 +48366,13 @@
1596940544,1596940799,RU
1596940800,1596941055,UA
1596941056,1596941311,BY
-1596941312,1596941823,CZ
-1596941824,1596942079,RU
+1596941312,1596942079,RU
1596942080,1596942335,PT
-1596942336,1596944383,UA
-1596944384,1596945407,CZ
-1596945408,1596945663,UA
-1596945664,1596945919,CZ
-1596945920,1596947455,RU
-1596947456,1596950527,CZ
+1596942336,1596945407,UA
+1596945408,1596945919,CZ
+1596945920,1596946943,RU
+1596946944,1596948479,UA
+1596948480,1596950527,BY
1596950528,1596951551,UA
1596951552,1596951807,RU
1596951808,1596952063,NL
@@ -41201,26 +48389,27 @@
1596957952,1596958207,CZ
1596958208,1596958463,RU
1596958464,1596958719,UA
-1596958720,1596960767,CZ
+1596958720,1596959231,CZ
+1596959232,1596959743,RU
+1596959744,1596959999,UA
+1596960000,1596960255,RU
+1596960256,1596960767,CZ
1596960768,1596961279,RU
1596961280,1596961791,SK
1596961792,1596962815,RU
1596962816,1596963327,AM
1596963328,1596963839,CZ
1596963840,1596964095,KZ
-1596964096,1596964863,CZ
-1596964864,1596967167,RU
+1596964096,1596964607,CZ
+1596964608,1596967167,RU
1596967168,1596967423,CZ
1596967424,1596967935,RU
-1596967936,1596968959,CZ
+1596967936,1596968959,UA
1596968960,1596973055,BA
1596973056,1596975103,BY
1596975104,1596975359,CZ
-1596975360,1596976127,RU
-1596976128,1596977151,CZ
-1596977152,1596979199,RU
-1596979200,1596979711,CZ
-1596979712,1596980223,UA
+1596975360,1596979199,RU
+1596979200,1596980223,UA
1596980224,1596980479,RU
1596980480,1596980735,UA
1596980736,1596980991,CZ
@@ -41271,7 +48460,12 @@
1599356928,1599373311,BH
1599373312,1599406079,RU
1599406080,1599422463,NL
-1599422464,1599426559,RU
+1599422464,1599423487,RU
+1599423488,1599423743,DE
+1599423744,1599423999,ES
+1599424000,1599424255,CZ
+1599424256,1599424511,FR
+1599424512,1599426559,RU
1599426560,1599426815,GB
1599426816,1599427071,US
1599427072,1599427327,RU
@@ -41299,7 +48493,7 @@
1600397312,1600401407,DE
1600442368,1600446463,DE
1600453120,1600453631,IT
-1600456704,1600457727,DE
+1600456704,1600457727,US
1600520192,1600651263,SK
1600651264,1600684031,GE
1600684032,1600749567,RU
@@ -41318,14 +48512,14 @@
1601699840,1602224127,ES
1602224128,1602226175,NL
1602226176,1602228223,GB
-1602228224,1602230271,DE
+1602228224,1602230270,FR
+1602230271,1602230271,DE
1602230272,1602232319,DK
1602232320,1602234367,CH
-1602234368,1602234591,GB
-1602234592,1602234607,FR
-1602234608,1602235903,GB
+1602234368,1602235903,FR
1602235904,1602236159,ES
-1602236160,1602238463,GB
+1602236160,1602236415,FR
+1602236416,1602238463,GB
1602238464,1602240511,TR
1602240512,1602242559,BY
1602242560,1602244607,FR
@@ -41344,12 +48538,10 @@
1602269184,1602271231,RU
1602271232,1602273279,MK
1602273280,1602273535,FR
-1602273536,1602273536,GB
-1602273537,1602273791,IE
+1602273536,1602273791,GB
1602273792,1602274559,IN
1602274560,1602274815,IE
-1602274816,1602274816,GB
-1602274817,1602275071,IE
+1602274816,1602275071,GB
1602275072,1602279423,DE
1602279424,1602281471,GB
1602281472,1602283519,RU
@@ -41434,8 +48626,7 @@
1602459648,1602461695,GB
1602461696,1602465791,ES
1602465792,1602467839,RU
-1602467840,1602468095,GB
-1602468096,1602469887,GI
+1602467840,1602469887,GB
1602469888,1602471935,AT
1602471936,1602473983,SE
1602473984,1602476031,RU
@@ -41451,9 +48642,7 @@
1602846720,1602879487,GE
1602879488,1602896924,MQ
1602896925,1602896925,RE
-1602896926,1602904063,MQ
-1602904064,1602904319,FR
-1602904320,1602912255,MQ
+1602896926,1602912255,MQ
1602912256,1602928639,GB
1602928640,1602930687,HU
1602930688,1602932735,GB
@@ -41476,18 +48665,20 @@
1603067904,1603071999,GB
1603072000,1603076095,CZ
1603076096,1603080191,RU
-1603080192,1603080703,DE
+1603080192,1603080703,IN
1603080704,1603080831,US
1603080832,1603080959,SE
-1603080960,1603081215,DE
+1603080960,1603081087,DE
+1603081088,1603081215,IN
1603081216,1603081247,GB
1603081248,1603081255,NO
1603081256,1603081263,FI
1603081264,1603081279,GB
1603081280,1603081295,US
-1603081296,1603081407,DE
+1603081296,1603081407,IN
1603081408,1603081471,ES
-1603081472,1603082495,DE
+1603081472,1603082239,IN
+1603082240,1603082495,DE
1603082496,1603082751,GT
1603082752,1603083007,ES
1603083008,1603083263,UA
@@ -41501,7 +48692,8 @@
1603083568,1603083583,LU
1603083584,1603083615,DE
1603083616,1603083647,LU
-1603083648,1603084031,DE
+1603083648,1603083775,DE
+1603083776,1603084031,IN
1603084032,1603088383,IT
1603088384,1603092479,LB
1603092480,1603100671,NO
@@ -41522,7 +48714,13 @@
1603153920,1603158015,NL
1603158016,1603162111,DE
1603162112,1603166207,TJ
-1603166208,1603170303,NL
+1603166208,1603167127,NL
+1603167128,1603167135,FI
+1603167136,1603168159,NL
+1603168160,1603168167,US
+1603168168,1603168615,NL
+1603168616,1603168623,US
+1603168624,1603170303,NL
1603170304,1603174399,IE
1603174400,1603178495,TR
1603178496,1603182591,GB
@@ -41535,11 +48733,7 @@
1603207168,1603215359,RU
1603215360,1603219455,DE
1603219456,1603223551,CH
-1603223552,1603223807,FR
-1603223808,1603225087,SE
-1603225088,1603225343,FR
-1603225344,1603225599,SE
-1603225600,1603226255,FR
+1603223552,1603226255,FR
1603226256,1603226263,DE
1603226264,1603226271,NL
1603226272,1603227647,FR
@@ -41580,8 +48774,7 @@
1604115968,1604116479,IR
1604116480,1604118783,DE
1604118784,1604120063,IR
-1604120064,1604120319,DE
-1604120320,1604120575,DK
+1604120064,1604120575,DE
1604120576,1604122623,PL
1604122624,1604123135,IR
1604123136,1604123647,DE
@@ -41619,10 +48812,28 @@
1604853760,1604870143,HU
1604870144,1604878335,HR
1604878336,1604886527,DE
-1604886528,1604894719,NL
-1604894720,1604902911,CZ
+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
+1604894720,1604902031,CZ
+1604902032,1604902039,SK
+1604902040,1604902911,CZ
1604902912,1604911103,BG
-1604911104,1604919295,UA
+1604911104,1604919295,US
1604919296,1604927487,NO
1604927488,1604935679,IT
1604935680,1604952063,RU
@@ -41642,7 +48853,29 @@
1605083136,1605091327,BE
1605091328,1605099519,PL
1605099520,1605107711,RU
-1605107712,1605115903,GB
+1605107712,1605109495,GB
+1605109496,1605109503,IT
+1605109504,1605110303,GB
+1605110304,1605110311,IT
+1605110312,1605110375,GB
+1605110376,1605110383,IT
+1605110384,1605111023,GB
+1605111024,1605111031,IT
+1605111032,1605111903,GB
+1605111904,1605111911,IT
+1605111912,1605113407,GB
+1605113408,1605113415,IT
+1605113416,1605113567,GB
+1605113568,1605113583,IT
+1605113584,1605114215,GB
+1605114216,1605114223,IT
+1605114224,1605114287,GB
+1605114288,1605114295,IT
+1605114296,1605114327,GB
+1605114328,1605114335,IT
+1605114336,1605115007,GB
+1605115008,1605115015,IT
+1605115016,1605115903,GB
1605115904,1605124095,RU
1605124096,1605125263,GB
1605125264,1605125275,DE
@@ -41695,7 +48928,7 @@
1605500928,1605533695,PL
1605533696,1605566463,HR
1605566464,1605599231,RU
-1605599232,1605631999,GR
+1605599232,1605631999,NL
1605632000,1605664767,RS
1605664768,1605697535,MK
1605697536,1605742591,RU
@@ -41703,14 +48936,18 @@
1605742848,1605743103,PL
1605743104,1605744127,RU
1605744128,1605744383,UA
-1605744384,1605753343,RU
+1605744384,1605745663,RU
+1605745664,1605746687,HK
+1605746688,1605753343,RU
1605753344,1605753471,US
1605753472,1605753855,RU
1605753856,1605754879,FR
1605754880,1605763071,RU
1605763072,1605769215,KZ
1605769216,1605771263,PL
-1605771264,1605795839,RU
+1605771264,1605782527,RU
+1605782528,1605782783,CZ
+1605782784,1605795839,RU
1605795840,1605828607,BE
1605828608,1605828863,GB
1605828864,1605829631,US
@@ -41724,87 +48961,98 @@
1605861376,1605894143,TR
1605894144,1606156287,SA
1606156288,1606418431,RU
-1606418432,1607100682,SE
+1606418432,1606559743,SE
+1606559744,1606561791,DK
+1606561792,1607100682,SE
1607100683,1607100683,DE
1607100684,1607467007,SE
1607467008,1607532543,DE
1607532544,1607569407,SE
-1607569408,1607573503,DK
+1607569408,1607572479,DK
+1607572480,1607572991,SE
+1607572992,1607573503,DK
1607573504,1607575551,SE
1607575552,1607577599,GB
-1607577600,1607598079,SE
+1607577600,1607581695,SE
+1607581696,1607598079,DK
1607598080,1607599103,GB
-1607599104,1607600383,IT
1607600384,1607600639,DE
1607600640,1607600895,AT
1607600896,1607601151,CH
1607601152,1607601919,IT
1607601920,1607602175,GB
-1607602176,1607602431,IT
1607602432,1607602687,SE
1607602688,1607602943,NO
1607602944,1607603199,DK
1607603200,1607603455,FI
-1607603456,1607606015,IT
+1607603968,1607604479,FI
+1607604480,1607604735,IS
+1607605248,1607606015,ZA
1607606016,1607606271,FR
1607606272,1607606783,DE
1607606784,1607607039,GB
-1607607040,1607607295,IT
1607607296,1607607551,PL
1607607552,1607608319,IT
1607608320,1607608575,HU
1607608576,1607608831,SK
-1607608832,1607609343,IT
-1607609600,1607614463,IT
-1607614464,1607617535,GB
-1607617536,1607618559,IT
+1607610368,1607611391,GR
+1607611392,1607612415,IE
+1607614464,1607615487,FR
+1607615488,1607618559,GB
1607618560,1607621631,ES
1607621632,1607622655,IT
1607622656,1607624703,ES
-1607624704,1607625727,IT
+1607624704,1607624959,IT
+1607625216,1607625727,IT
1607625728,1607625986,ES
1607625987,1607625987,PT
1607625988,1607626751,ES
1607626752,1607627519,FR
-1607627520,1607627775,FI
+1607627520,1607627775,NO
1607627776,1607628543,IT
-1607628800,1607640805,IT
+1607628800,1607630847,FR
+1607630848,1607631871,TZ
+1607631872,1607632895,UG
+1607638528,1607639039,GB
+1607639040,1607640805,IT
1607640806,1607640806,CH
1607640807,1607642388,IT
1607642389,1607642389,NL
1607642390,1607647231,IT
1607647232,1607651327,DE
-1607651328,1607654399,IT
-1607654400,1607655423,FR
-1607655424,1607655679,IT
-1607655680,1607655935,GB
-1607655936,1607656447,IT
-1607656448,1607657471,GB
-1607657472,1607663615,IT
-1607663616,1607729151,NL
-1607729152,1607761919,EG
-1607761920,1607766015,SY
-1607766016,1607774207,EG
-1607774208,1607778303,SY
-1607778304,1607794687,EG
+1607651328,1607655423,FR
+1607655424,1607657471,GB
+1607657472,1607659519,IT
+1607659520,1607661567,FR
+1607661568,1607663615,IT
+1607663616,1607701433,NL
+1607701434,1607701434,RS
+1607701435,1607729151,NL
+1607729152,1607770112,SY
+1607770113,1607773183,EG
+1607773184,1607773184,SY
+1607773185,1607774207,EG
+1607774208,1607786495,SY
+1607786496,1607794687,EG
1607794688,1607860223,RU
1607925760,1607926783,RU
-1607926784,1607927807,NL
+1607926784,1607927807,UA
1607927808,1607929855,RU
1607929856,1607930879,SE
1607930880,1607933951,PL
1607933952,1607934975,DE
-1607934976,1607937023,UA
-1607937024,1607937279,LV
-1607937280,1607937280,SE
-1607937281,1607938047,LV
+1607934976,1607935999,RU
+1607936000,1607937023,UA
+1607937024,1607938047,SE
1607938048,1607939071,UA
1607939072,1607940095,PL
1607940096,1607941119,RU
1607941120,1607942143,ES
-1607942144,1607944191,RU
+1607942144,1607943167,PL
+1607943168,1607944191,RU
1607944192,1607945215,FR
1607945216,1607946239,PL
+1607946240,1607947263,CZ
1607947264,1607948287,RU
1607948288,1607949311,GB
1607949312,1607950335,UA
@@ -41812,10 +49060,11 @@
1607952384,1607953407,UA
1607953408,1607956479,RU
1607956480,1607957503,ES
-1607957504,1607958527,UA
+1607957504,1607958527,RU
1607958528,1607959551,PS
1607959552,1607960575,EE
1607960576,1607961599,RU
+1607961600,1607962623,LT
1607962624,1607963647,UA
1607963648,1607965695,RU
1607965696,1607966719,UA
@@ -41838,11 +49087,10 @@
1607985152,1607986175,PL
1607986176,1607986431,FR
1607986432,1607986687,GB
-1607986688,1607987199,RU
-1607987200,1607988223,CZ
+1607986688,1607988223,RU
1607988224,1607989247,KG
1607989248,1607991295,RU
-1607991296,1608122367,DE
+1607991296,1608122367,FI
1608122368,1608253439,SA
1608253440,1608384511,RU
1608384512,1608515583,DE
@@ -41857,9 +49105,7 @@
1611036672,1611037183,NL
1611037184,1611042815,US
1611042816,1611046911,NL
-1611046912,1611084543,US
-1611084544,1611085311,NL
-1611085312,1611086335,US
+1611046912,1611086335,US
1611086336,1611086847,NL
1611086848,1611087871,US
1611087872,1611091967,NL
@@ -41870,9 +49116,7 @@
1611227136,1611235327,CA
1611235328,1611243519,OM
1611243520,1611247615,MY
-1611247616,1611247871,HK
-1611247872,1611248127,AU
-1611248128,1611251711,HK
+1611247616,1611251711,AU
1611251712,1611692543,US
1611692544,1611693567,NL
1611693568,1611764735,US
@@ -41897,13 +49141,13 @@
1613504512,1613529087,CA
1613529088,1613545471,US
1613545472,1613565951,CA
-1613570048,1613584639,US
+1613565952,1613584639,US
1613584640,1613584895,HK
1613584896,1613585407,US
1613585408,1613585663,DE
1613585664,1613585919,GB
-1613585920,1613606911,US
-1613606912,1613615103,CA
+1613585920,1613611007,US
+1613611008,1613615103,CA
1613615104,1613635583,US
1613635584,1613640191,CA
1613640192,1613640319,US
@@ -41922,7 +49166,9 @@
1614741504,1614757887,CA
1614757888,1614774271,US
1614774272,1614786559,CA
-1614786560,1618837503,US
+1614786560,1616608767,US
+1616608768,1616609023,PR
+1616609024,1618837503,US
1618837504,1618841599,CA
1618841600,1618845695,DE
1618845696,1618849791,US
@@ -41940,16 +49186,26 @@
1634418688,1634447359,US
1634447360,1634451455,CA
1634451456,1634455551,US
-1634455552,1634459647,CA
-1634459648,1634459903,US
-1634459904,1634460671,CA
+1634455552,1634460671,CA
1634460672,1634467839,US
1634467840,1634729983,CA
1634729984,1652293631,US
1652293632,1652310015,CA
1652310016,1652481279,US
1652481280,1652481791,CN
-1652481792,1653501103,US
+1652481792,1652647319,US
+1652647320,1652647327,IL
+1652647328,1652649543,US
+1652649544,1652649551,CA
+1652649552,1652655487,US
+1652655488,1652655503,IN
+1652655504,1652655983,US
+1652655984,1652655999,GB
+1652656000,1652662735,US
+1652662736,1652662751,GB
+1652662752,1652671407,US
+1652671408,1652671415,GB
+1652671416,1653501103,US
1653501104,1653501111,IN
1653501112,1653534719,US
1653534720,1653538815,CA
@@ -41971,9 +49227,16 @@
1654582016,1654582271,CN
1654582272,1654595583,US
1654595584,1654596095,CA
-1654596096,1654648831,US
+1654596096,1654596215,US
+1654596216,1654596223,IS
+1654596224,1654596983,US
+1654596984,1654596991,ES
+1654596992,1654648831,US
1654648832,1654652927,CA
-1654652928,1666731329,US
+1654652928,1666121727,US
+1666121728,1666187263,CA
+1666187264,1666318335,IE
+1666318336,1666731329,US
1666731330,1666731330,FR
1666731331,1673527295,US
1673527296,1673560063,CA
@@ -42005,7 +49268,9 @@
1686110208,1694498815,US
1694498816,1694499839,CN
1694499840,1694500863,ID
-1694500864,1694507007,JP
+1694500864,1694503935,JP
+1694503936,1694504191,TH
+1694504192,1694507007,JP
1694507008,1694515199,IN
1694515200,1694531583,AU
1694531584,1694564351,TW
@@ -42092,14 +49357,14 @@
1701134336,1701142527,CN
1701142528,1701143551,HK
1701143552,1701143807,CN
-1701143808,1701144063,AU
+1701143808,1701144063,TW
1701144064,1701150719,CN
1701150720,1701183487,KR
1701183488,1701199871,JP
1701199872,1701208063,CN
1701208064,1701209087,JP
1701209088,1701209855,CN
-1701209856,1701210111,AU
+1701209856,1701210111,TW
1701210112,1701216255,CN
1701216256,1701249023,JP
1701249024,1701314559,AU
@@ -42154,17 +49419,89 @@
1710972672,1710972927,TW
1710972928,1711210495,CN
1711210496,1711276031,ID
+1720172544,1720180735,NG
+1720186880,1720187903,MA
+1720188928,1720451071,CI
+1720451072,1720516607,ZA
+1720532992,1720541183,ZA
+1720549376,1720566783,ZA
+1720566784,1720567807,SO
+1720567808,1720568831,SC
+1720571904,1720572927,GQ
+1720572928,1720573951,LR
+1720573952,1720574975,ZA
+1720574976,1720575999,GH
+1720576768,1720577023,ZA
+1720577024,1720578047,SC
+1720578048,1720582143,ZA
+1720582144,1720647679,GA
+1720647680,1720680447,SL
+1720680448,1720713215,SD
+1720713216,1721237503,ZM
+1721237504,1721589759,TN
+1721589760,1721590015,MU
+1721590016,1721607423,TN
+1721607424,1721607679,MU
+1721607680,1721656575,TN
+1721656576,1721656831,MU
+1721656832,1721761791,TN
1721761792,1722023935,MU
+1722023936,1722032127,ZA
+1722032128,1722034175,NG
+1722034176,1722035199,ML
+1722035200,1722036223,NG
+1722036224,1722040319,KE
+1722040320,1722048511,ZA
+1722048512,1722050559,LY
+1722050560,1722052607,ZA
+1722052608,1722053119,TN
+1722053120,1722053631,EG
+1722054656,1722054911,UG
+1722054912,1722055167,ZA
+1722055168,1722055423,EG
+1722055424,1722055679,GH
+1722055680,1722056703,GA
+1722056704,1722073087,SN
+1722073088,1722081279,ZA
+1722081280,1722085375,TG
+1722085376,1722086399,ZA
+1722086400,1722087423,TD
+1722087424,1722089471,GQ
+1722089472,1722114047,ZA
+1722114048,1722118143,ML
+1722118144,1722119167,ZW
+1722119168,1722121215,ZA
+1722121216,1722122239,NG
+1722122240,1722130431,BW
+1722130432,1722136575,ZA
+1722136576,1722137599,NG
+1722137600,1722137855,ZA
+1722137856,1722138111,MA
+1722138112,1722138367,AO
+1722138368,1722138623,TZ
+1722138624,1722155007,ZA
1722155008,1722286079,KE
1722286080,1722810367,TN
1722810368,1722843135,GH
+1722843136,1722851327,MU
+1722851328,1722855423,GN
+1722855424,1722856447,BF
+1722856448,1722857471,KE
+1722857472,1722858495,ZA
+1722858496,1722859519,SL
1722859520,1722871807,ZA
-1722871808,1722872831,NG
+1722871808,1722873855,NG
+1722873856,1722874367,MZ
+1722874368,1722874623,MW
1722874624,1722874879,ZA
-1722875904,1722896383,ZA
+1722874880,1722875903,TG
+1722875904,1722894335,ZA
+1722894336,1722895359,ZW
+1722895360,1722896383,ZA
1722896384,1722898431,TZ
1722898432,1722899455,TD
1722899456,1722900479,ZA
+1722900480,1722901503,KE
1722901504,1722902527,GH
1722902528,1722925055,ZA
1722925056,1722941439,ZW
@@ -42175,7 +49512,6 @@
1723269120,1723334655,LR
1723334656,1723858943,EG
1724715556,1724715556,MU
-1725956096,1727004671,MU
1727004672,1727266815,TN
1727266816,1727528959,CM
1727528960,1728053247,ZA
@@ -42210,7 +49546,8 @@
1728152576,1728153599,MY
1728153600,1728154623,SG
1728154624,1728155647,JP
-1728155648,1728158463,MY
+1728155648,1728157695,MY
+1728157696,1728158463,HK
1728158464,1728158719,NL
1728158720,1728159743,HK
1728159744,1728161791,TH
@@ -42245,7 +49582,7 @@
1728216064,1728218111,JP
1728218112,1728219135,IN
1728219136,1728220159,JP
-1728220160,1728221183,NZ
+1728220160,1728221183,NL
1728221184,1728222207,ID
1728222208,1728224255,LK
1728224256,1728225279,CN
@@ -42328,13 +49665,8 @@
1728345088,1728346111,BD
1728346112,1728346367,AU
1728346368,1728346623,NZ
-1728346624,1728347147,AU
-1728347148,1728347148,SG
-1728347149,1728347416,AU
-1728347417,1728347417,SG
-1728347418,1728347421,AU
-1728347422,1728347422,SG
-1728347423,1728348159,AU
+1728346624,1728347135,AU
+1728347136,1728348159,SG
1728348160,1728349183,VN
1728349184,1728350207,AU
1728350208,1728351231,NZ
@@ -42432,7 +49764,7 @@
1728433152,1728435199,VN
1728435200,1728435967,AU
1728435968,1728436223,ID
-1728436224,1728437247,IN
+1728436224,1728436479,IN
1728437248,1728438271,HK
1728438272,1728439295,NZ
1728439296,1728439807,NP
@@ -42483,7 +49815,6 @@
1728475136,1728476159,JP
1728476160,1728476415,AU
1728476416,1728476927,ID
-1728476928,1728477183,IN
1728479232,1728480255,HK
1728480256,1728481279,IN
1728481280,1728483327,HK
@@ -42491,7 +49822,6 @@
1728484352,1728485375,SG
1728485376,1728486399,HK
1728486400,1728487423,IN
-1728487424,1728487935,HK
1728487936,1728488191,TH
1728488192,1728488447,MY
1728488448,1728488703,IN
@@ -42510,8 +49840,8 @@
1728499712,1728500735,AU
1728500736,1728501247,NZ
1728501248,1728501503,ID
-1728501504,1728502783,AU
-1728502784,1728503807,CN
+1728501504,1728501759,AU
+1728501760,1728503807,CN
1728503808,1728504831,JP
1728504832,1728505855,CN
1728505856,1728506879,NL
@@ -42774,8 +50104,7 @@
1728754688,1728755711,IN
1728755712,1728756735,ID
1728756736,1728757759,IN
-1728758784,1728759039,MY
-1728759040,1728759807,HK
+1728758784,1728759807,HK
1728759808,1728760831,PH
1728760832,1728761855,TW
1728761856,1728762879,IN
@@ -42933,8 +50262,7 @@
1728892928,1728893439,BN
1728893440,1728893695,SG
1728893696,1728893951,IN
-1728893952,1728894463,US
-1728894464,1728894975,SG
+1728893952,1728894975,US
1728894976,1728895999,HK
1728896000,1728897023,ID
1728898048,1728899071,BD
@@ -42949,7 +50277,6 @@
1728905216,1728905471,IN
1728905472,1728905727,PK
1728905728,1728906239,IN
-1728906240,1728907263,MY
1728907264,1728908287,NZ
1728908288,1728909311,CN
1728909312,1728912383,JP
@@ -42962,9 +50289,11 @@
1728918528,1728919551,KR
1728919552,1728920575,AU
1728920576,1728921599,JP
-1728921600,1728922623,AF
+1728921600,1728922100,AF
+1728922101,1728922101,DE
+1728922102,1728922623,AF
1728922624,1728923647,AU
-1728923648,1728924159,CN
+1728923648,1728924159,HK
1728924160,1728924671,MY
1728924672,1728925695,VN
1728925696,1728927743,AU
@@ -43012,7 +50341,6 @@
1728967424,1728967679,HK
1728967680,1728968703,CN
1728968704,1728970751,JP
-1728970752,1728971007,IN
1728971008,1728971263,AU
1728971264,1728971519,IN
1728971520,1728971775,NZ
@@ -43121,7 +50449,9 @@
1729057792,1729058815,HK
1729060864,1729061887,CN
1729061888,1729062911,SG
-1729062912,1729063935,MY
+1729062912,1729063303,MY
+1729063304,1729063304,HK
+1729063305,1729063935,MY
1729063936,1729064959,JP
1729064960,1729065983,PG
1729065984,1729067007,JP
@@ -43152,7 +50482,6 @@
1729085440,1729087487,HK
1729087488,1729088511,CN
1729088512,1729090559,AU
-1729090560,1729091583,JP
1729091584,1729092607,HK
1729093632,1729094143,BD
1729094144,1729094399,ID
@@ -43220,7 +50549,6 @@
1729152256,1729153023,ID
1729153024,1729154047,IN
1729154048,1729155071,TH
-1729155072,1729155583,IN
1729155584,1729156095,AU
1729157120,1729158143,HK
1729158144,1729158399,ID
@@ -43374,9 +50702,7 @@
1729296384,1729297407,IN
1729297408,1729298431,AU
1729298432,1729299455,JP
-1729299456,1729299519,NZ
-1729299520,1729299583,AU
-1729299584,1729300479,NZ
+1729299456,1729300479,NZ
1729300480,1729300991,SG
1729300992,1729301503,NZ
1729301504,1729302527,CN
@@ -43611,7 +50937,8 @@
1729563648,1729564671,JP
1729564672,1729565695,NZ
1729565696,1729566719,ID
-1729566720,1729568255,IN
+1729566720,1729567743,IN
+1729568000,1729568255,IN
1729568256,1729568511,ID
1729568512,1729568767,BD
1729568768,1729569791,ID
@@ -43623,7 +50950,6 @@
1729574912,1729575935,CN
1729575936,1729576959,BD
1729576960,1729577983,AU
-1729577984,1729578495,HK
1729578496,1729578751,AU
1729578752,1729579007,NZ
1729579008,1729580031,JP
@@ -43702,7 +51028,7 @@
1729643520,1729644543,JP
1729644544,1729645823,ID
1729645824,1729646079,SG
-1729646592,1729649663,IN
+1729646592,1729648639,IN
1729649664,1729650687,HK
1729650688,1729651711,PK
1729651712,1729652735,TW
@@ -43730,7 +51056,6 @@
1729673216,1729674239,CN
1729674240,1729675263,IN
1729675264,1729676287,JP
-1729676288,1729677311,AU
1729677312,1729677439,IN
1729677440,1729677567,NL
1729677568,1729678079,IN
@@ -43804,8 +51129,7 @@
1729753088,1729754111,TH
1729754112,1729755135,NZ
1729755136,1729756159,BD
-1729756160,1729756671,HK
-1729756672,1729757183,JP
+1729756160,1729757183,HK
1729757184,1729758207,CN
1729758208,1729759231,ID
1729759232,1729760255,IN
@@ -43835,7 +51159,6 @@
1729783552,1729783807,NZ
1729783808,1729785855,IN
1729785856,1729786879,BD
-1729786880,1729787903,CN
1729787904,1729789951,HK
1729789952,1729790975,ID
1729790976,1729791999,CN
@@ -44016,8 +51339,6 @@
1729949696,1729950207,IN
1729950208,1729950719,KH
1729950720,1729951743,IN
-1729951744,1729951999,SG
-1729952000,1729952255,JP
1729952256,1729952511,AU
1729952512,1729952767,NZ
1729952768,1729953791,IN
@@ -44100,7 +51421,6 @@
1730033664,1730034687,ID
1730035712,1730036735,IN
1730036736,1730037759,HK
-1730037760,1730038783,JP
1730038784,1730039807,HK
1730039808,1730040831,IN
1730040832,1730043903,ID
@@ -44148,8 +51468,8 @@
1730082816,1730083839,PW
1730083840,1730084863,IN
1730084864,1730085887,CN
-1730085888,1730086399,TW
-1730086400,1730086911,US
+1730085888,1730086143,SG
+1730086144,1730086911,US
1730087936,1730088959,JP
1730088960,1730091007,HK
1730091008,1730091519,SG
@@ -44237,7 +51557,6 @@
1730383360,1730383615,IN
1730383616,1730383871,MY
1730383872,1730385919,HK
-1730385920,1730386943,AU
1730386944,1730387967,BD
1730387968,1730388479,CA
1730388480,1730388735,MX
@@ -44246,7 +51565,6 @@
1730389504,1730390015,AF
1730390016,1730391039,BD
1730391040,1730392063,HK
-1730392064,1730393087,AU
1730393088,1730393599,SG
1730393600,1730394111,CN
1730394112,1730395135,HK
@@ -44281,7 +51599,6 @@
1730426880,1730429951,CN
1730429952,1730430207,ID
1730430208,1730430463,AU
-1730430464,1730430719,HK
1730430720,1730430975,IN
1730430976,1730431999,CN
1730432000,1730435071,IN
@@ -44354,8 +51671,8 @@
1730538496,1730540543,JP
1730540544,1730541567,ID
1730541568,1730544639,CN
-1730544640,1730545919,IN
-1730545920,1730546687,AU
+1730544640,1730545663,IN
+1730545664,1730546687,AU
1730546688,1730547711,IN
1730547712,1730548735,BD
1730548736,1730549759,MY
@@ -44404,7 +51721,7 @@
1730594816,1730596863,IN
1730597888,1730598911,PH
1730599424,1730599935,VU
-1730599936,1730605055,CN
+1730600960,1730605055,CN
1730605056,1730607103,IN
1730608128,1730609151,CN
1730609152,1730610687,IN
@@ -44574,7 +51891,8 @@
1730835456,1730837503,ID
1730837504,1730838527,IN
1730839552,1730840575,AU
-1730840576,1730841599,PH
+1730840576,1730841087,PH
+1730841088,1730841599,HK
1730841600,1730842623,AU
1730842624,1730844671,TW
1730844672,1730845695,BD
@@ -44612,7 +51930,6 @@
1730883584,1730884607,TW
1730884608,1730885631,BD
1730885632,1730886655,AU
-1730886656,1730887679,HK
1730887680,1730887935,KR
1730887936,1730888191,IN
1730888192,1730888703,ID
@@ -44627,8 +51944,7 @@
1730895872,1730898943,CN
1730898944,1730899967,MO
1730899968,1730900991,IN
-1730900992,1730901247,HK
-1730901248,1730901503,SG
+1730900992,1730901503,AU
1730901504,1730901759,DE
1730901760,1730902015,AU
1730902016,1730903039,KR
@@ -44647,7 +51963,8 @@
1730915328,1730916351,HK
1730916352,1730918399,AU
1730918400,1730919423,CN
-1730919424,1730920447,SG
+1730919424,1730920192,HK
+1730920193,1730920447,SG
1730920448,1730922495,CN
1730922496,1730923519,IN
1730923520,1730924031,NF
@@ -44685,9 +52002,7 @@
1730951168,1730952191,CN
1730952192,1730954239,HK
1730954240,1730955263,SG
-1730955264,1730956031,BD
-1730956032,1730956287,NL
-1730956288,1730957311,BD
+1730955264,1730957311,BD
1730957312,1730958335,CN
1730958336,1730959359,JP
1730959360,1730960383,CN
@@ -44746,7 +52061,6 @@
1731104768,1731105791,TW
1731105792,1731106815,BD
1731106816,1731115007,CN
-1731115008,1731116031,HK
1731116032,1731117055,TW
1731117056,1731118847,IN
1731118848,1731119103,AU
@@ -44902,7 +52216,6 @@
1731284992,1731286015,AU
1731286016,1731288063,JP
1731288064,1731290111,CN
-1731290112,1731291135,PH
1731291136,1731291647,ID
1731291648,1731292159,AU
1731292160,1731293183,CN
@@ -44941,8 +52254,7 @@
1731320832,1731321855,ID
1731321856,1731322879,IN
1731322880,1731323903,ID
-1731323904,1731324927,IN
-1731325952,1731327487,IN
+1731323904,1731327487,IN
1731327488,1731327999,HK
1731328000,1731329023,CN
1731329024,1731330047,IN
@@ -45004,7 +52316,7 @@
1731412992,1731414015,AU
1731414016,1731416063,IN
1731416064,1731417087,JP
-1731418112,1731421183,IN
+1731418112,1731420159,IN
1731421184,1731421695,NZ
1731421696,1731421951,IN
1731421952,1731422207,ID
@@ -45094,7 +52406,7 @@
1731515648,1731515903,ID
1731515904,1731516159,HK
1731516160,1731516415,US
-1731516416,1731517439,HK
+1731516416,1731517439,CA
1731517440,1731519487,IN
1731519488,1731520511,MM
1731520512,1731523583,JP
@@ -45138,7 +52450,6 @@
1731565612,1731565613,JP
1731565614,1731566079,HK
1731566080,1731566591,PH
-1731567616,1731568639,CN
1731568640,1731569663,IN
1731569664,1731570687,VN
1731570688,1731571711,SG
@@ -45173,11 +52484,13 @@
1731607552,1731608575,CN
1731608576,1731609599,IN
1731609600,1731610623,AU
-1731610624,1731611647,KR
+1731610624,1731611391,KR
+1731611392,1731611647,JP
+1731611648,1731612671,PK
1731613696,1731614719,PH
1731614720,1731615743,JP
1731615744,1731616767,ID
-1731616768,1731620351,IN
+1731616768,1731619839,IN
1731620352,1731620607,MY
1731620608,1731620863,AU
1731620864,1731621887,KH
@@ -45191,7 +52504,6 @@
1731631104,1731632127,SG
1731632128,1731633151,JP
1731633152,1731635199,CN
-1731635200,1731636223,IN
1731636224,1731636479,ID
1731636480,1731637247,IN
1731638272,1731639295,IN
@@ -45205,7 +52517,6 @@
1731648512,1731649535,IN
1731649536,1731649791,NZ
1731649792,1731650559,ID
-1731650560,1731651583,CN
1731651584,1731652607,AU
1731652608,1731653119,IN
1731653120,1731653631,AU
@@ -45227,9 +52538,7 @@
1731666688,1731666943,KR
1731666944,1731667967,ID
1731667968,1731668991,IN
-1731668992,1731669786,AU
-1731669787,1731669787,GS
-1731669788,1731669927,AU
+1731668992,1731669927,AU
1731669928,1731669928,CC
1731669929,1731670015,AU
1731670016,1731671039,TL
@@ -45283,9 +52592,8 @@
1731714048,1731715071,ID
1731716096,1731717119,CN
1731717120,1731718143,AU
-1731718144,1731720191,CN
-1731720192,1731721215,IN
-1731722240,1731723263,IN
+1731718144,1731719167,CN
+1731720192,1731723263,IN
1731723264,1731724287,AU
1731724288,1731725311,BD
1731725312,1731726335,CN
@@ -45429,7 +52737,7 @@
1731905536,1731908607,IN
1731908608,1731908863,AU
1731908864,1731909631,NZ
-1731909632,1731911679,AU
+1731910656,1731911679,AU
1731911680,1731912703,KH
1731912704,1731913727,NZ
1731913728,1731913983,AU
@@ -45674,7 +52982,6 @@
1732337664,1732338175,ID
1732338176,1732338687,HK
1732338688,1732342783,CN
-1732348928,1732349951,IN
1732349952,1732358143,CN
1732358144,1732359167,MY
1732359168,1732360191,HK
@@ -45683,18 +52990,15 @@
1732362240,1732364287,IN
1732364288,1732364799,NP
1732364800,1732365311,IN
-1732365312,1732366335,GB
1732366336,1732367359,JP
1732367360,1732368383,ID
1732368384,1732369407,HK
-1732369408,1732370431,BS
1732371456,1732372479,IN
1732372480,1732372991,AU
1732372992,1732373503,IN
1732373504,1732374271,ID
1732374272,1732374527,NZ
1732375552,1732376575,AU
-1732376576,1732377599,US
1732377600,1732377855,AU
1732377856,1732378111,NZ
1732378112,1732378623,AU
@@ -45739,7 +53043,7 @@
1732412416,1732413439,AU
1732413440,1732417535,IN
1732417536,1732418559,VN
-1732418560,1732422143,IN
+1732418560,1732421631,IN
1732422144,1732422399,AU
1732422400,1732422655,JP
1732422656,1732423679,IN
@@ -45750,16 +53054,10 @@
1732424752,1732424755,CN
1732424756,1732424767,HK
1732424768,1732424831,CN
-1732424832,1732424839,HK
-1732424840,1732424847,CN
-1732424848,1732424855,HK
-1732424856,1732424879,CN
-1732424880,1732424919,HK
-1732424920,1732424927,CN
-1732424928,1732424935,HK
-1732424936,1732424943,CN
-1732424944,1732424999,HK
-1732425000,1732425015,CN
+1732424832,1732424863,HK
+1732424864,1732424871,CN
+1732424872,1732425007,HK
+1732425008,1732425015,CN
1732425016,1732425727,HK
1732425728,1732426751,KH
1732426752,1732428799,KR
@@ -45819,15 +53117,15 @@
1732510720,1732511743,BD
1732511744,1732512767,IN
1732512768,1732513791,JP
-1732513792,1732524543,IN
+1732513792,1732524031,IN
1732524544,1732525055,NZ
1732525056,1732527103,HK
1732527104,1732531199,VN
-1732531200,1732532223,IN
+1732531456,1732531711,IN
+1732531968,1732532095,IN
1732532224,1732533247,CN
1732533248,1732533759,AU
1732533760,1732534015,SG
-1732534016,1732534271,IN
1732534272,1732535295,KR
1732535296,1732536319,CN
1732536320,1732536575,BD
@@ -45841,7 +53139,9 @@
1732538112,1732538367,LT
1732538368,1732539391,IN
1732539392,1732540415,BD
-1732540416,1732541439,US
+1732540416,1732540671,NZ
+1732540672,1732540927,US
+1732540928,1732541439,NZ
1732541440,1732541695,AU
1732541696,1732541951,SG
1732542464,1732543487,CN
@@ -45867,7 +53167,6 @@
1732561920,1732562431,AU
1732562432,1732562943,IN
1732562944,1732563967,AU
-1732563968,1732564991,NZ
1732564992,1732566527,IN
1732566528,1732566783,AU
1732566784,1732567039,SG
@@ -45880,8 +53179,7 @@
1732579328,1732580351,CN
1732580352,1732583167,IN
1732583168,1732583423,AU
-1732583424,1732590591,IN
-1732590592,1732591615,GB
+1732583424,1732591615,IN
1732591616,1732592639,SG
1732592640,1732593663,KH
1732593664,1732594687,AU
@@ -45897,7 +53195,8 @@
1732608512,1732609023,SG
1732609024,1732610047,CN
1732610048,1732611071,HK
-1732611072,1732612095,SG
+1732611072,1732611839,SG
+1732611840,1732612095,HK
1732612096,1732613119,IN
1732613120,1732614143,BD
1732614144,1732615167,CN
@@ -45907,7 +53206,6 @@
1732615680,1732615807,FI
1732615808,1732615935,SE
1732615936,1732616191,NO
-1732616192,1732617215,VG
1732617216,1732618239,AU
1732618240,1732619263,IN
1732619264,1732620287,MY
@@ -45918,7 +53216,6 @@
1732625664,1732625919,ID
1732625920,1732626175,AU
1732626176,1732626431,PH
-1732626432,1732627455,IN
1732627456,1732628479,GB
1732628480,1732629503,MY
1732629504,1732630527,CN
@@ -45931,11 +53228,9 @@
1732638720,1732639743,MM
1732639744,1732640255,AU
1732640256,1732640511,PH
-1732640512,1732640767,AU
1732640768,1732641791,SG
1732641792,1732642815,TH
1732642816,1732643839,CN
-1732643840,1732644863,BD
1732644864,1732645887,ID
1732645888,1732646911,SG
1732646912,1732647935,NZ
@@ -45966,7 +53261,7 @@
1732678656,1732679679,CN
1732679680,1732684287,IN
1732684288,1732684799,BD
-1732684800,1732686847,AU
+1732684800,1732685823,AU
1732686848,1732687871,HK
1732687872,1732688895,CN
1732688896,1732689919,IN
@@ -45987,7 +53282,7 @@
1732707328,1732708351,AU
1732708352,1732709375,ID
1732709376,1732710143,HK
-1732710144,1732710399,JP
+1732710144,1732710399,VN
1732710400,1732712447,IN
1732712448,1732712703,HK
1732712704,1732712959,AF
@@ -46019,8 +53314,8 @@
1732744192,1732746239,HK
1732746240,1732747263,JP
1732747264,1732748287,ID
-1732748288,1732750847,IN
-1732750848,1732751359,NL
+1732748288,1732750335,IN
+1732750336,1732751359,NL
1732751360,1732752383,HK
1732752384,1732754431,VN
1732754432,1732754687,AU
@@ -46046,7 +53341,7 @@
1732771584,1732771839,ID
1732771840,1732772863,PK
1732772864,1732773119,SG
-1732773120,1732773375,HK
+1732773120,1732773375,US
1732773376,1732774911,IN
1732774912,1732786175,CN
1732786176,1732791295,IN
@@ -46079,12 +53374,12 @@
1732818944,1732819967,AU
1732819968,1732820991,PH
1732820992,1732821247,SG
-1732821248,1732823039,IN
+1732821248,1732822015,IN
1732823040,1732824063,AU
1732824064,1732825087,IN
1732825088,1732825599,NZ
1732825600,1732826111,AU
-1732826112,1732829183,IN
+1732827136,1732829183,IN
1732829184,1732845567,CN
1732845568,1732846591,IN
1732846592,1732847615,BD
@@ -46123,12 +53418,13 @@
1732881408,1732882431,IN
1732882432,1732883455,CN
1732883456,1732884479,IN
-1732885504,1732887039,IN
+1732885504,1732886527,IN
1732887040,1732887551,HK
1732887552,1732888575,BD
1732888576,1732889599,AU
1732889600,1732891647,CN
-1732891648,1732894719,IN
+1732891648,1732892671,IN
+1732893696,1732894719,IN
1732894720,1732895743,BD
1732895744,1732896767,NZ
1732896768,1732897279,SG
@@ -46141,7 +53437,6 @@
1732903936,1732904191,IN
1732904192,1732904447,AU
1732904448,1732904959,ID
-1732904960,1732905983,IN
1732905984,1732906495,ID
1732906496,1732907007,NP
1732907008,1732908031,IN
@@ -46150,7 +53445,7 @@
1732916224,1732916735,HK
1732916736,1732917247,IN
1732917248,1732919295,CN
-1732919296,1732919807,IN
+1732919296,1732919551,IN
1732919808,1732920319,AU
1732920320,1732922367,IN
1732922368,1732923391,NL
@@ -46277,14 +53572,11 @@
1733056000,1733056511,CN
1733056512,1733057023,MY
1733057024,1733057279,AU
-1733057280,1733057535,IN
1733057536,1733058559,CN
1733058560,1733060607,IN
1733060608,1733061631,US
-1733061632,1733062655,IN
1733062656,1733063679,HK
1733063680,1733064703,TH
-1733064704,1733065727,IN
1733065728,1733065983,SG
1733065984,1733066751,AU
1733066752,1733067775,IN
@@ -46385,7 +53677,9 @@
1733164032,1733164543,BD
1733164544,1733167103,IN
1733167104,1733168127,ID
-1733168128,1733171199,IN
+1733168128,1733170175,IN
+1733170176,1733170687,RU
+1733170688,1733171199,IN
1733171200,1733172223,ID
1733172224,1733173247,IN
1733173248,1733174271,MY
@@ -46429,7 +53723,7 @@
1733209088,1733211135,CN
1733211136,1733212415,IN
1733212416,1733212671,AU
-1733212672,1733213183,IN
+1733212928,1733213183,IN
1733213184,1733214207,BD
1733214208,1733214719,ID
1733214720,1733214975,AU
@@ -46443,9 +53737,10 @@
1733222400,1733223423,BD
1733223424,1733224447,CN
1733224448,1733225471,ID
-1733225472,1733226751,IN
+1733225472,1733226495,IN
1733226752,1733227007,AU
-1733227008,1733227519,MY
+1733227008,1733227263,MY
+1733227264,1733227519,HK
1733227520,1733228543,IN
1733228544,1733230591,BD
1733230592,1733231615,IN
@@ -46481,7 +53776,6 @@
1733261056,1733261311,IN
1733261312,1733262335,CN
1733262336,1733263359,AU
-1733263360,1733264383,TH
1733264384,1733265407,KR
1733265408,1733266431,CN
1733266432,1733268479,VN
@@ -46540,8 +53834,8 @@
1733327872,1733328895,HK
1733328896,1733329151,AU
1733329152,1733329407,TH
-1733329408,1733329919,IN
-1733329920,1733330943,HK
+1733329408,1733329663,IN
+1733329920,1733330943,KR
1733330944,1733331967,AU
1733331968,1733332991,PH
1733332992,1733334015,HK
@@ -46560,7 +53854,6 @@
1733349376,1733349631,NZ
1733349632,1733349887,AU
1733349888,1733350399,MN
-1733350400,1733351423,CN
1733351424,1733352447,TH
1733352448,1733353471,HK
1733353472,1733354495,BD
@@ -46576,7 +53869,8 @@
1733362688,1733364735,CN
1733364736,1733365759,IN
1733365760,1733367807,CN
-1733367808,1733371903,IN
+1733367808,1733368831,IN
+1733369856,1733371903,IN
1733371904,1733372927,AU
1733372928,1733374975,CN
1733374976,1733375743,AU
@@ -46591,7 +53885,6 @@
1733386240,1733387263,CN
1733387264,1733387775,ID
1733387776,1733388031,AU
-1733388032,1733388287,IN
1733388288,1733388799,BD
1733388800,1733390591,IN
1733390592,1733391359,MM
@@ -46604,11 +53897,13 @@
1733396736,1733396991,IN
1733396992,1733397247,ID
1733397248,1733397503,IN
-1733397504,1733399551,JP
+1733397504,1733398015,JP
+1733398016,1733398271,AE
+1733398272,1733399551,JP
1733399552,1733400575,CN
1733400576,1733402879,IN
1733402880,1733403135,AU
-1733403136,1733403391,MY
+1733403136,1733403391,HK
1733403392,1733403647,SG
1733403648,1733405695,CN
1733405696,1733406719,BD
@@ -46618,7 +53913,7 @@
1733408512,1733408767,CN
1733408768,1733409023,HK
1733409024,1733409279,TW
-1733409280,1733409535,SG
+1733409280,1733409535,JP
1733409536,1733409791,CN
1733409792,1733411327,IN
1733411328,1733411839,ID
@@ -46636,7 +53931,6 @@
1733421056,1733422079,CN
1733422080,1733424127,IN
1733424128,1733424383,AU
-1733424384,1733424639,IN
1733424640,1733424895,ID
1733424896,1733425151,US
1733425152,1733425663,ID
@@ -46650,7 +53944,6 @@
1733432320,1733437439,VN
1733437440,1733438975,IN
1733438976,1733439487,PH
-1733439488,1733440511,IN
1733440512,1733441535,CN
1733441536,1733442559,LA
1733442560,1733443583,CN
@@ -46660,7 +53953,7 @@
1733445632,1733448703,IN
1733448704,1733449727,CN
1733449728,1733450751,JP
-1733450752,1733453823,IN
+1733451776,1733453823,IN
1733453824,1733454847,CN
1733454848,1733455871,AU
1733455872,1733456895,JP
@@ -46697,9 +53990,9 @@
1733487104,1733487615,US
1733487616,1733488639,CN
1733488640,1733490175,ID
-1733490176,1733490431,NZ
1733490432,1733490687,PG
-1733490688,1733491711,US
+1733490688,1733491199,TH
+1733491200,1733491711,US
1733491712,1733492735,PK
1733492736,1733492991,HK
1733492992,1733493759,IN
@@ -46750,7 +54043,7 @@
1733538816,1733539839,CN
1733539840,1733540863,IN
1733540864,1733541887,MM
-1733541888,1733542911,IN
+1733541888,1733542911,US
1733542912,1733543167,BD
1733543168,1733543423,PG
1733543424,1733543679,ID
@@ -46776,7 +54069,6 @@
1733569536,1733570559,HK
1733570560,1733571583,CN
1733571584,1733572607,PK
-1733572608,1733573631,CN
1733573632,1733574655,IN
1733574656,1733575679,CN
1733575680,1733576703,IN
@@ -46788,7 +54080,6 @@
1733582848,1733583103,IN
1733583104,1733583359,AF
1733583360,1733583871,AU
-1733583872,1733584895,TH
1733584896,1733585919,MM
1733585920,1733586943,CN
1733586944,1733587967,GB
@@ -46840,7 +54131,7 @@
1733633024,1733634047,AU
1733634048,1733634559,IN
1733634560,1733635071,US
-1733635072,1733639167,CN
+1733635072,1733637119,CN
1733639168,1733641215,ID
1733641216,1733642239,PH
1733642240,1733643263,HK
@@ -46909,7 +54200,8 @@
1733704192,1733704703,AU
1733704704,1733705727,CN
1733705728,1733706751,HK
-1733706752,1733707263,CN
+1733706752,1733707007,CN
+1733707008,1733707263,HK
1733707264,1733707775,US
1733707776,1733709823,HK
1733709824,1733712895,CN
@@ -46928,8 +54220,6 @@
1733719040,1733720063,IN
1733720064,1733721087,PH
1733721088,1733722111,AF
-1733722112,1733722367,AU
-1733722368,1733722623,CN
1733722624,1733723135,MY
1733723136,1733724159,PK
1733724160,1733724415,AU
@@ -46969,7 +54259,8 @@
1733779456,1733780479,CN
1733780480,1733782527,IN
1733782528,1733782783,JP
-1733782784,1733783551,US
+1733782784,1733783295,HK
+1733783296,1733783551,US
1733783552,1733784575,BD
1733784576,1733785599,KR
1733785600,1733785855,IN
@@ -47039,10 +54330,8 @@
1733852160,1733855231,IN
1733855232,1733855743,BD
1733855744,1733855999,IN
-1733856000,1733856255,CN
1733856256,1733857279,BD
1733857280,1733859327,AU
-1733859328,1733859839,CN
1733859840,1733860095,AU
1733860096,1733860351,KH
1733860352,1733861887,IN
@@ -47197,14 +54486,10 @@
1734039296,1734039551,ID
1734039552,1734043647,IN
1734043648,1734044159,BD
-1734044160,1734044191,PR
-1734044192,1734044255,CN
-1734044256,1734044287,KR
-1734044288,1734044447,CN
-1734044448,1734044479,US
+1734044160,1734044479,US
1734044480,1734044511,CN
-1734044512,1734044543,US
-1734044544,1734045695,CN
+1734044512,1734044671,US
+1734044672,1734045695,CN
1734045696,1734046207,PH
1734046208,1734046719,PG
1734046720,1734049023,IN
@@ -47236,7 +54521,7 @@
1734069248,1734070271,TH
1734070272,1734072319,CN
1734072320,1734072575,AU
-1734072576,1734072831,HK
+1734072576,1734072831,KR
1734072832,1734073087,IN
1734073088,1734073343,US
1734073344,1734075391,IN
@@ -47299,7 +54584,6 @@
1734154240,1734155007,AU
1734155008,1734155263,IN
1734155264,1734156287,CN
-1734156288,1734157311,NZ
1734157312,1734159871,IN
1734159872,1734160127,HK
1734160128,1734161407,IN
@@ -47308,8 +54592,7 @@
1734164480,1734165503,ID
1734165504,1734166527,AU
1734166528,1734167551,HK
-1734167552,1734167807,JP
-1734167808,1734168575,CN
+1734167552,1734168575,CN
1734168576,1734169343,AU
1734169344,1734169599,IN
1734169600,1734170623,CN
@@ -47358,7 +54641,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
@@ -47436,7 +54719,9 @@
1734283264,1734284287,NP
1734284288,1734285311,BD
1734285312,1734286335,LA
-1734286336,1734287359,CN
+1734286336,1734286363,CN
+1734286364,1734286364,JP
+1734286365,1734287359,CN
1734287360,1734288383,MY
1734288384,1734288639,IN
1734288640,1734288895,MY
@@ -47554,7 +54839,9 @@
1734421504,1734422015,BD
1734422016,1734422527,IN
1734422528,1734423551,TW
-1734423552,1734424575,AU
+1734423552,1734423807,JP
+1734423808,1734424063,NZ
+1734424064,1734424575,AU
1734424576,1734429695,CN
1734429696,1734430719,ID
1734430720,1734431743,CN
@@ -47604,7 +54891,8 @@
1734476800,1734477823,TH
1734477824,1734478847,HK
1734478848,1734479359,AU
-1734479360,1734480383,HK
+1734479360,1734479871,HK
+1734479872,1734480383,TW
1734480384,1734480639,JP
1734480640,1734480895,HK
1734480896,1734481919,IN
@@ -47718,7 +55006,7 @@
1734588416,1734589183,IN
1734589184,1734589439,GB
1734589440,1734594559,IN
-1734594560,1734595327,HK
+1734594560,1734595327,KR
1734595328,1734595583,AU
1734595584,1734596607,ID
1734596608,1734597631,IN
@@ -47851,10 +55139,10 @@
1734716416,1734716671,IN
1734716672,1734716927,AU
1734716928,1734717439,IN
-1734717440,1734718463,JP
-1734718464,1734720511,CN
-1734720512,1734720767,KR
-1734720768,1734721535,HK
+1734717440,1734720511,CN
+1734720512,1734720767,HK
+1734720768,1734721279,KR
+1734721280,1734721535,HK
1734721536,1734721791,VU
1734721792,1734722047,AU
1734722048,1734722559,ID
@@ -47884,7 +55172,10 @@
1734737920,1734738431,ID
1734738432,1734738687,IN
1734738688,1734738943,JP
-1734738944,1734739967,HK
+1734738944,1734739199,RU
+1734739200,1734739455,HK
+1734739456,1734739711,MO
+1734739712,1734739967,HK
1734739968,1734740991,AU
1734740992,1734742015,ID
1734742016,1734743039,US
@@ -47901,7 +55192,7 @@
1734748672,1734749183,BD
1734749184,1734749439,HK
1734749440,1734749695,GI
-1734749696,1734749951,HK
+1734749696,1734749951,SG
1734749952,1734750207,GI
1734750208,1734750719,HK
1734750720,1734751487,NZ
@@ -47986,7 +55277,9 @@
1734833152,1734834175,VN
1734834176,1734835199,IN
1734835200,1734836223,BD
-1734836224,1734837247,TW
+1734836224,1734836383,TW
+1734836384,1734836415,US
+1734836416,1734837247,TW
1734837248,1734838271,IN
1734838272,1734839295,ID
1734839296,1734839807,AU
@@ -47999,7 +55292,10 @@
1734845440,1734847487,JP
1734847488,1734848255,IN
1734848256,1734848511,ID
-1734848512,1734849535,CN
+1734848512,1734848767,CN
+1734848768,1734849023,DE
+1734849024,1734849279,CN
+1734849280,1734849535,KR
1734849536,1734850047,ID
1734850048,1734850559,PG
1734850560,1734851583,AU
@@ -48038,7 +55334,7 @@
1734880256,1734883583,IN
1734883584,1734883839,ID
1734883840,1734884351,IN
-1734884352,1734885375,AU
+1734884352,1734885375,KH
1734885376,1734886399,CN
1734886400,1734886655,IN
1734886656,1734886911,MY
@@ -48068,14 +55364,15 @@
1734908928,1734909951,AU
1734909952,1734910975,PK
1734910976,1734911999,AU
-1734912000,1734914047,CN
+1734912000,1734912255,JP
+1734912256,1734914047,CN
1734914304,1734914559,ID
1734914560,1734914815,HK
1734914816,1734915071,TH
1734915072,1734916095,IN
1734916096,1734917119,BD
1734917120,1734918143,CN
-1734918144,1734919167,MY
+1734918144,1734919167,PK
1734919168,1734919423,SG
1734919424,1734919679,NP
1734919680,1734920191,CN
@@ -48105,11 +55402,10 @@
1734940672,1734943743,ID
1734943744,1734946815,IN
1734946816,1734947071,GB
-1734947072,1734947583,US
-1734947584,1734947839,GB
+1734947072,1734947327,US
+1734947328,1734947839,GB
1734947840,1734948863,ID
-1734948864,1734949887,HK
-1734949888,1734950911,CN
+1734948864,1734950911,CN
1734950912,1734952959,ID
1734952960,1734953215,IN
1734953216,1734953471,TH
@@ -48130,7 +55426,8 @@
1734965248,1734966271,HK
1734966272,1734967295,IN
1734967296,1734968319,ID
-1734968320,1734969343,CN
+1734968320,1734969087,CN
+1734969088,1734969343,JP
1734969344,1734969855,IN
1734969856,1734970111,MY
1734970112,1734970367,AU
@@ -48140,10 +55437,7 @@
1734971392,1734973439,AU
1734973440,1734974463,IN
1734974464,1734976511,KR
-1734976512,1734976767,PK
-1734976768,1734977023,JP
-1734977024,1734977279,NZ
-1734977280,1734977535,KR
+1734976512,1734977535,PK
1734977536,1734978559,AU
1734978560,1734979583,MM
1734979584,1734980607,IN
@@ -48211,8 +55505,680 @@
1735044096,1735045119,ID
1735045120,1735046655,IN
1735046656,1735046911,AF
+1735046912,1735047167,IN
1735047168,1735048191,BD
1735048192,1735049215,CN
+1735049216,1735050239,IN
+1735050240,1735051263,CN
+1735051264,1735051519,IN
+1735051520,1735051775,BD
+1735051776,1735052287,CN
+1735052288,1735053311,KH
+1735053312,1735054335,HK
+1735054336,1735055359,CN
+1735055360,1735056383,ID
+1735056384,1735058431,VN
+1735058432,1735060479,IN
+1735060480,1735062527,BD
+1735062528,1735062783,CN
+1735062784,1735063551,HK
+1735063552,1735064575,MY
+1735064576,1735066623,CN
+1735066624,1735067647,ID
+1735067648,1735067903,HK
+1735067904,1735068159,IN
+1735068160,1735069695,HK
+1735069696,1735069951,AU
+1735069952,1735070207,IN
+1735070208,1735070719,ID
+1735070720,1735072767,IN
+1735072768,1735074815,CN
+1735074816,1735075327,IN
+1735075328,1735075583,BD
+1735075584,1735075839,AU
+1735075840,1735076351,BD
+1735076352,1735076607,SG
+1735076608,1735076863,AU
+1735076864,1735077887,CN
+1735077888,1735078911,AU
+1735078912,1735079935,IN
+1735079936,1735080191,SG
+1735080192,1735083007,IN
+1735083008,1735083519,ID
+1735083520,1735083775,TH
+1735083776,1735084031,ID
+1735084032,1735085055,CN
+1735085056,1735086079,BD
+1735086080,1735087103,PH
+1735087104,1735087871,ID
+1735087872,1735088127,MY
+1735088128,1735091199,IN
+1735091200,1735092223,ID
+1735092224,1735093247,HK
+1735093248,1735094271,CN
+1735094272,1735095295,IN
+1735095296,1735096319,ID
+1735096320,1735096575,IN
+1735096576,1735096831,ID
+1735096832,1735097343,BD
+1735097344,1735098367,IN
+1735098368,1735099391,AU
+1735099392,1735100415,BD
+1735100416,1735101439,AF
+1735101440,1735101951,ID
+1735101952,1735102463,IN
+1735102464,1735103487,ID
+1735103488,1735103999,AU
+1735104000,1735104255,IN
+1735104256,1735104511,ID
+1735104512,1735105535,PG
+1735105536,1735106559,PH
+1735106560,1735107583,BD
+1735107584,1735109631,CN
+1735109632,1735111679,IN
+1735111680,1735112703,VN
+1735112704,1735112959,BD
+1735112960,1735113215,AU
+1735113216,1735113727,ID
+1735113728,1735115775,CN
+1735115776,1735116799,AU
+1735116800,1735117823,VN
+1735117824,1735118335,ID
+1735118336,1735118591,IN
+1735118592,1735118847,AU
+1735118848,1735122943,CN
+1735122944,1735123967,AU
+1735123968,1735124991,BD
+1735124992,1735126015,PH
+1735126016,1735127039,HK
+1735127040,1735128063,AU
+1735128064,1735128575,ID
+1735128576,1735129087,AU
+1735129088,1735130111,ID
+1735130112,1735131647,IN
+1735131648,1735132159,HK
+1735132160,1735133183,IN
+1735133184,1735133439,HK
+1735133440,1735133695,ID
+1735133696,1735136255,IN
+1735136256,1735141375,ID
+1735141376,1735142399,HK
+1735142400,1735143679,IN
+1735143680,1735143935,TH
+1735143936,1735144191,AU
+1735144192,1735144447,IN
+1735144448,1735145471,CN
+1735145472,1735146495,IN
+1735146496,1735147519,BD
+1735147520,1735148543,CN
+1735148544,1735149567,AU
+1735149568,1735153151,IN
+1735153152,1735153407,AU
+1735153408,1735153663,ID
+1735153664,1735154687,BD
+1735154688,1735155711,NZ
+1735155712,1735156735,IN
+1735156736,1735157759,VN
+1735157760,1735158783,MM
+1735158784,1735159807,KR
+1735159808,1735160831,BD
+1735160832,1735161087,AU
+1735161088,1735161599,IN
+1735161600,1735161855,ID
+1735161856,1735162879,IN
+1735162880,1735163391,AU
+1735163392,1735164927,ID
+1735164928,1735166975,VN
+1735166976,1735167231,BD
+1735167232,1735167487,ID
+1735167488,1735167743,HK
+1735167744,1735167999,IN
+1735168000,1735169023,BD
+1735169024,1735171071,IN
+1735171072,1735172095,ID
+1735172096,1735174143,CN
+1735174144,1735175167,AU
+1735175168,1735175423,BD
+1735175424,1735175679,ID
+1735175680,1735176191,BD
+1735176192,1735176447,NZ
+1735176448,1735176703,AU
+1735176704,1735177215,PK
+1735177216,1735178239,HK
+1735178240,1735178751,CN
+1735178752,1735179007,AU
+1735179008,1735179263,ID
+1735179264,1735179775,CN
+1735179776,1735180287,ID
+1735180288,1735182335,CN
+1735182336,1735182847,ID
+1735182848,1735183359,AU
+1735183360,1735184383,IN
+1735184384,1735186431,CN
+1735186432,1735186943,HK
+1735186944,1735187455,KH
+1735187456,1735187711,IN
+1735187712,1735187967,BD
+1735187968,1735188479,AU
+1735188480,1735189503,CN
+1735189504,1735190527,AU
+1735190528,1735192575,JP
+1735192576,1735193599,ID
+1735193600,1735194623,CN
+1735194624,1735195391,HK
+1735195392,1735195647,CN
+1735195648,1735196159,AU
+1735196160,1735197695,ID
+1735197696,1735198207,HK
+1735198208,1735198719,IN
+1735198720,1735199743,KR
+1735199744,1735200767,IN
+1735200768,1735201791,AU
+1735201792,1735202815,CN
+1735202816,1735203839,ID
+1735203840,1735207935,VN
+1735207936,1735208959,IN
+1735208960,1735209983,CN
+1735209984,1735212031,BD
+1735212032,1735213055,TH
+1735213056,1735214079,KR
+1735214080,1735215103,KH
+1735215104,1735216383,IN
+1735216384,1735216639,AU
+1735216640,1735219199,IN
+1735219200,1735220223,CN
+1735220224,1735222271,BD
+1735222272,1735223551,HK
+1735223808,1735224319,CN
+1735224320,1735225343,IN
+1735225344,1735226367,AU
+1735226368,1735227391,LA
+1735227392,1735227647,ID
+1735227648,1735227903,PK
+1735227904,1735228159,NZ
+1735228160,1735228415,AU
+1735228416,1735229439,ID
+1735229440,1735230975,AU
+1735230976,1735232511,IN
+1735232512,1735233535,AU
+1735233536,1735234559,SG
+1735234560,1735234815,IN
+1735234816,1735235071,HK
+1735235072,1735235583,IN
+1735235584,1735241727,ID
+1735241728,1735244799,IN
+1735244800,1735248895,ID
+1735248896,1735249919,NP
+1735249920,1735250175,AU
+1735250176,1735250687,ID
+1735250688,1735250943,IN
+1735250944,1735251967,BD
+1735251968,1735255039,IN
+1735255040,1735256063,NP
+1735256064,1735257087,AU
+1735257088,1735258111,BD
+1735258112,1735259135,JP
+1735259136,1735259391,IN
+1735259392,1735259903,NZ
+1735259904,1735260159,ID
+1735260160,1735261183,CN
+1735261184,1735262207,PH
+1735262208,1735263231,IN
+1735263232,1735263487,ID
+1735263488,1735263743,BD
+1735263744,1735264255,IN
+1735264256,1735265279,ID
+1735265280,1735268351,IN
+1735268352,1735269375,JP
+1735269376,1735269887,AU
+1735269888,1735270399,PG
+1735270400,1735271423,CN
+1735271424,1735272447,IN
+1735272448,1735272703,MV
+1735272704,1735272959,LA
+1735272960,1735273215,IN
+1735273216,1735273471,ID
+1735273472,1735274495,PH
+1735274496,1735275007,IN
+1735275008,1735275519,AU
+1735275520,1735275775,PK
+1735275776,1735276543,AF
+1735276544,1735277567,BD
+1735277568,1735278591,HK
+1735278592,1735279615,BD
+1735279616,1735280639,MY
+1735280640,1735281151,IN
+1735281152,1735281407,ID
+1735281408,1735281663,PH
+1735281664,1735282175,ID
+1735282176,1735282687,BD
+1735282688,1735283199,CN
+1735283200,1735283455,AU
+1735283456,1735283711,IN
+1735283712,1735284735,VN
+1735284736,1735285759,ID
+1735285760,1735286783,CN
+1735286784,1735287807,BD
+1735287808,1735288831,CN
+1735288832,1735289855,IN
+1735289856,1735290111,AU
+1735290112,1735290879,MV
+1735290880,1735291903,BD
+1735291904,1735292927,CN
+1735292928,1735293951,ID
+1735293952,1735294719,BD
+1735294720,1735295487,CN
+1735295488,1735295743,PG
+1735295744,1735298047,CN
+1735298048,1735298559,IN
+1735298560,1735299071,AU
+1735299072,1735301119,IN
+1735301120,1735303167,CN
+1735303168,1735304191,BD
+1735304192,1735307263,IN
+1735307264,1735308287,AU
+1735308288,1735309311,IN
+1735309312,1735309823,ID
+1735309824,1735310335,IN
+1735310336,1735311359,CN
+1735311360,1735311871,BD
+1735311872,1735312127,AU
+1735312128,1735312383,IN
+1735312384,1735313407,MM
+1735313408,1735314431,IN
+1735314432,1735315455,CN
+1735315456,1735316479,IN
+1735316480,1735318783,BD
+1735318784,1735319039,MM
+1735319040,1735319295,IN
+1735319296,1735319551,ID
+1735319552,1735320575,BD
+1735320576,1735321599,KH
+1735321600,1735329791,IN
+1735329792,1735331839,BD
+1735331840,1735332863,AU
+1735332864,1735333887,IN
+1735333888,1735334911,AU
+1735334912,1735335935,ID
+1735335936,1735336447,US
+1735336448,1735337215,BD
+1735337216,1735337471,IN
+1735337472,1735337983,CN
+1735337984,1735341055,IN
+1735341056,1735343103,ID
+1735343104,1735343359,EG
+1735343360,1735343615,DZ
+1735343616,1735343871,KZ
+1735343872,1735344127,PK
+1735344128,1735345151,CN
+1735345152,1735345407,MN
+1735345408,1735346175,IN
+1735346176,1735347199,MY
+1735347200,1735347711,NZ
+1735347712,1735347967,AU
+1735347968,1735348223,NP
+1735348224,1735349247,ID
+1735349248,1735349759,PK
+1735349760,1735350015,ID
+1735350016,1735350271,AU
+1735350272,1735351295,BD
+1735351296,1735355391,ID
+1735355392,1735357439,IN
+1735357440,1735357951,BD
+1735357952,1735358463,AU
+1735358464,1735359487,BD
+1735359488,1735359743,HK
+1735359744,1735359999,ID
+1735360000,1735360255,BD
+1735360256,1735360511,AU
+1735360512,1735362559,IN
+1735362560,1735367679,ID
+1735367680,1735369215,PK
+1735369216,1735369471,ID
+1735369472,1735369727,AU
+1735369728,1735370751,BD
+1735370752,1735371775,AU
+1735371776,1735372799,CN
+1735372800,1735373823,AU
+1735373824,1735374847,US
+1735374848,1735383039,ID
+1735383040,1735383295,AU
+1735383296,1735385087,ID
+1735385088,1735386111,BD
+1735386112,1735387135,PK
+1735387136,1735388159,IN
+1735388160,1735391231,VN
+1735391232,1735392255,ID
+1735392256,1735393279,CN
+1735393280,1735394303,PK
+1735394304,1735394559,IN
+1735394560,1735394815,ID
+1735394816,1735400447,IN
+1735400448,1735401471,CN
+1735401472,1735402495,IN
+1735402496,1735403519,TL
+1735403520,1735404543,JP
+1735404544,1735405055,ID
+1735405056,1735405567,IN
+1735405568,1735406591,TW
+1735406592,1735410175,BD
+1735410176,1735410431,AU
+1735410432,1735410687,HK
+1735410688,1735412735,CN
+1735412736,1735413247,AU
+1735413248,1735413759,HK
+1735413760,1735414015,SG
+1735414016,1735414271,ID
+1735414272,1735415807,IN
+1735415808,1735418879,CN
+1735418880,1735419135,AU
+1735419136,1735419391,PG
+1735419392,1735420415,AU
+1735420416,1735420671,IN
+1735420672,1735420927,KH
+1735420928,1735423999,CN
+1735424000,1735424255,BD
+1735424256,1735424511,IN
+1735424512,1735425023,ID
+1735425024,1735426047,VN
+1735426048,1735427071,BD
+1735427072,1735428095,VN
+1735428096,1735429119,ID
+1735429120,1735430143,CN
+1735430144,1735430655,ID
+1735430656,1735430911,IN
+1735430912,1735432191,BD
+1735432192,1735433215,PK
+1735433216,1735434239,BD
+1735434240,1735434751,IN
+1735434752,1735435263,ID
+1735435264,1735437311,BD
+1735437312,1735438335,CN
+1735438336,1735438591,AU
+1735438592,1735439359,AF
+1735439360,1735440383,JP
+1735440384,1735441407,CN
+1735441408,1735441663,AU
+1735441664,1735442175,ID
+1735442176,1735442431,LA
+1735442432,1735442943,ID
+1735442944,1735443455,MY
+1735443456,1735444479,ID
+1735444480,1735445503,AU
+1735445504,1735446527,BD
+1735446528,1735447551,HK
+1735447552,1735449599,IN
+1735449600,1735450111,TH
+1735450112,1735450623,ID
+1735450624,1735451647,IN
+1735451648,1735452159,ID
+1735452160,1735452671,IN
+1735452672,1735453183,ID
+1735453184,1735453439,IN
+1735453440,1735453695,SG
+1735453696,1735454719,BD
+1735454720,1735455743,KH
+1735455744,1735456767,ID
+1735456768,1735459071,IN
+1735459072,1735459327,AU
+1735459328,1735459583,IN
+1735459584,1735459839,ID
+1735459840,1735460863,CN
+1735460864,1735461887,MY
+1735461888,1735463935,BD
+1735463936,1735464959,HK
+1735464960,1735465471,TH
+1735465472,1735465727,ID
+1735465728,1735465983,IN
+1735465984,1735466239,ID
+1735466240,1735466495,IN
+1735466496,1735467007,ID
+1735467008,1735468031,IN
+1735468032,1735469055,HK
+1735469056,1735470079,NZ
+1735470080,1735471103,TH
+1735471104,1735473151,ID
+1735473152,1735474175,JP
+1735474176,1735475199,HK
+1735475200,1735477247,IN
+1735477248,1735479295,ID
+1735479296,1735480319,VN
+1735480320,1735481343,MM
+1735481344,1735482367,VN
+1735482368,1735483391,CN
+1735483392,1735484415,IN
+1735484416,1735485439,PK
+1735485440,1735486719,IN
+1735486720,1735486975,BD
+1735486976,1735488511,IN
+1735488512,1735493631,ID
+1735493632,1735495679,IN
+1735495680,1735496703,CN
+1735496704,1735497215,BD
+1735497216,1735497727,IN
+1735497728,1735498751,BD
+1735498752,1735499775,HK
+1735499776,1735500799,IN
+1735500800,1735501311,SG
+1735501824,1735502079,JP
+1735502080,1735502335,AU
+1735502336,1735502847,ID
+1735502848,1735503871,BD
+1735503872,1735504895,TH
+1735504896,1735505407,MY
+1735505408,1735505919,PH
+1735505920,1735506943,SG
+1735506944,1735507967,IN
+1735507968,1735511039,BD
+1735511040,1735512063,NZ
+1735512064,1735513087,BD
+1735513088,1735513343,AU
+1735513344,1735513599,IN
+1735513600,1735513855,ID
+1735513856,1735514111,KH
+1735514112,1735515135,IN
+1735515136,1735516159,CN
+1735516160,1735517183,BD
+1735517184,1735518207,IN
+1735518208,1735520255,CN
+1735520256,1735521279,TW
+1735521280,1735521791,AU
+1735521792,1735522047,JP
+1735522048,1735522303,IN
+1735522304,1735522815,ID
+1735522816,1735523327,AU
+1735523328,1735525375,IN
+1735525376,1735526399,CN
+1735526400,1735526655,PH
+1735526656,1735526911,AU
+1735526912,1735527423,BD
+1735527424,1735528447,AU
+1735528448,1735528703,IN
+1735528704,1735528959,AU
+1735528960,1735529215,ID
+1735529216,1735529471,IN
+1735529472,1735530495,BD
+1735530496,1735531519,NP
+1735531520,1735532543,CN
+1735532544,1735533055,IN
+1735533056,1735533311,AU
+1735533312,1735533567,ID
+1735533568,1735535615,BD
+1735535616,1735536639,HK
+1735536640,1735538175,ID
+1735538176,1735538431,BD
+1735538432,1735538687,AU
+1735538688,1735539711,IN
+1735539712,1735540223,BD
+1735540224,1735540479,KR
+1735540480,1735541759,IN
+1735541760,1735543807,CN
+1735543808,1735546879,ID
+1735546880,1735547903,KH
+1735547904,1735549951,BD
+1735549952,1735550975,CN
+1735550976,1735551999,VN
+1735552000,1735556095,ID
+1735556096,1735557119,KR
+1735557120,1735557631,AF
+1735557632,1735558143,AU
+1735558144,1735558399,HK
+1735558400,1735558655,TW
+1735558656,1735559167,JP
+1735559168,1735561471,ID
+1735561472,1735561727,AU
+1735561728,1735562239,LA
+1735562240,1735563263,CN
+1735563264,1735564287,IN
+1735564288,1735565311,CN
+1735565312,1735566335,SG
+1735566336,1735566847,ID
+1735566848,1735568383,BD
+1735568384,1735568639,AU
+1735568640,1735568895,ID
+1735568896,1735569407,BD
+1735569408,1735570431,US
+1735570432,1735572479,JP
+1735572480,1735572991,BD
+1735572992,1735573503,AU
+1735573504,1735574527,HK
+1735574528,1735574783,ID
+1735574784,1735575039,AU
+1735575040,1735575551,PH
+1735575552,1735577087,IN
+1735577088,1735577343,AU
+1735577344,1735577599,NZ
+1735577600,1735578623,IN
+1735578624,1735579647,CN
+1735579648,1735583743,IN
+1735583744,1735584767,JP
+1735584768,1735586815,CN
+1735586816,1735587071,ID
+1735587072,1735588863,IN
+1735588864,1735589887,NP
+1735589888,1735590399,IN
+1735590400,1735590911,PH
+1735590912,1735591679,MM
+1735591680,1735591935,AU
+1735591936,1735592959,IN
+1735592960,1735593471,AU
+1735593472,1735593983,AF
+1735593984,1735595007,CN
+1735595008,1735595263,HK
+1735595264,1735595519,IN
+1735595520,1735595775,AU
+1735595776,1735596031,MM
+1735596032,1735597055,BD
+1735597056,1735598335,ID
+1735598336,1735598591,PH
+1735598592,1735598847,SG
+1735598848,1735599103,IN
+1735599104,1735600127,ID
+1735600128,1735608319,CN
+1735608320,1735609343,BD
+1735609344,1735610367,SG
+1735610368,1735610879,SB
+1735610880,1735611391,BD
+1735611392,1735612415,NP
+1735613440,1735614463,CN
+1735614464,1735614719,US
+1735614720,1735614975,IN
+1735614976,1735615231,SG
+1735615232,1735615487,ID
+1735615488,1735616511,BD
+1735616512,1735616767,ID
+1735616768,1735617023,IN
+1735617024,1735617535,SG
+1735618560,1735619583,AU
+1735619584,1735620607,BD
+1735620608,1735621631,CN
+1735621632,1735623679,IN
+1735623680,1735624703,BD
+1735624704,1735625727,AU
+1735625728,1735626751,MO
+1735626752,1735627519,HK
+1735627520,1735627775,IN
+1735627776,1735628799,CN
+1735628800,1735629823,HK
+1735629824,1735630847,BD
+1735630848,1735631871,AU
+1735631872,1735632127,ID
+1735632128,1735632383,AU
+1735632384,1735632639,VN
+1735632640,1735632895,NP
+1735632896,1735633919,MY
+1735633920,1735634943,KH
+1735634944,1735635967,ID
+1735635968,1735636991,IN
+1735636992,1735638015,PK
+1735638016,1735639039,AU
+1735639040,1735639551,GU
+1735639552,1735640063,IN
+1735640064,1735641087,PK
+1735641088,1735642111,IN
+1735642112,1735642623,JP
+1735642624,1735643135,IN
+1735643136,1735644159,AU
+1735644160,1735644415,IN
+1735644416,1735644671,AU
+1735644672,1735645183,MM
+1735645184,1735646207,JP
+1735646208,1735647231,MY
+1735647232,1735647999,AU
+1735648000,1735649279,ID
+1735649280,1735649535,IN
+1735649536,1735649791,AU
+1735649792,1735651327,NZ
+1735651328,1735652351,BD
+1735652352,1735653375,SG
+1735653376,1735654399,CN
+1735654400,1735655423,BD
+1735655424,1735656447,AU
+1735656448,1735657471,JP
+1735657472,1735658495,TW
+1735658496,1735658751,MM
+1735658752,1735659007,ID
+1735659008,1735659519,AU
+1735659520,1735660031,US
+1735660032,1735660543,IN
+1735660544,1735661567,CN
+1735661568,1735661823,IN
+1735661824,1735662079,AF
+1735662080,1735665663,IN
+1735665664,1735666687,CN
+1735666688,1735667711,MY
+1735667712,1735667967,NP
+1735667968,1735668223,BD
+1735668224,1735668735,TH
+1735668736,1735669759,BD
+1735669760,1735670783,MM
+1735670784,1735671807,IN
+1735671808,1735672831,CN
+1735672832,1735673855,TW
+1735673856,1735674879,HK
+1735674880,1735675903,CN
+1735675904,1735677951,IN
+1735677952,1735678975,BD
+1735678976,1735679999,CN
+1735680000,1735681023,TW
+1735681024,1735683071,VN
+1735683072,1735683839,ID
+1735683840,1735684095,GB
+1735684096,1735685119,ID
+1735685120,1735686143,BD
+1735686144,1735687167,CN
+1735687168,1735688191,SG
+1735688192,1735689727,CN
+1735689728,1735689983,AU
+1735689984,1735690239,ID
+1735690240,1735691263,AU
+1735691264,1735693311,IN
+1735693312,1735694335,CN
+1735694336,1735695359,JP
+1735695360,1735695615,FJ
+1735695616,1735695871,IN
+1735696384,1735697407,IN
+1735697408,1735698431,BD
1740636160,1740644351,CN
1740644352,1740645375,IN
1740645376,1740647423,HK
@@ -48223,7 +56189,6 @@
1740654592,1740655615,IN
1740655616,1740656639,NP
1740656640,1740656895,NZ
-1740656896,1740657151,AF
1740657152,1740657663,AU
1740657664,1740665855,CN
1740665856,1740666879,IN
@@ -48237,7 +56202,6 @@
1740678144,1740679167,CN
1740679168,1740680447,IN
1740680448,1740680703,AU
-1740680704,1740680959,MM
1740680960,1740681215,AU
1740681216,1740682239,HK
1740682240,1740683263,KH
@@ -48283,7 +56247,9 @@
1740733440,1740733695,SG
1740733696,1740733951,HK
1740733952,1740734207,SG
-1740734208,1740736511,HK
+1740734208,1740734719,HK
+1740734720,1740735487,JP
+1740735488,1740736511,HK
1740736512,1740737535,NZ
1740737536,1740740607,CN
1740740608,1740742655,IN
@@ -48323,7 +56289,7 @@
1740792832,1740794879,HK
1740794880,1740795903,KR
1740795904,1740796159,NZ
-1740796160,1740796415,AU
+1740796160,1740796415,JP
1740796416,1740796671,IN
1740796672,1740796927,AU
1740796928,1740798207,IN
@@ -48408,7 +56374,7 @@
1740902400,1740903423,VN
1740903424,1740904447,US
1740904448,1740904959,NZ
-1740904960,1740907519,IN
+1740905472,1740907519,IN
1740907520,1740908543,US
1740908544,1740909055,PK
1740909056,1740910591,ID
@@ -48452,7 +56418,8 @@
1740951552,1740957695,IN
1740957696,1740958719,BD
1740958720,1740959743,VN
-1740959744,1740960767,NL
+1740959744,1740960255,NL
+1740960256,1740960767,IN
1740960768,1740962303,VN
1740962304,1740962559,TW
1740962560,1740962815,VN
@@ -48476,11 +56443,11 @@
1740979200,1740980223,NZ
1740980224,1740981247,AU
1740981248,1740982271,HK
-1740982272,1740985343,IN
+1740982272,1740983295,IN
+1740984320,1740985343,IN
1740985344,1740986367,PH
1740986368,1740986623,AU
1740986624,1740986879,ID
-1740986880,1740987391,IN
1740987392,1740988415,ID
1740988416,1740989184,AU
1740989185,1740989439,SG
@@ -48488,7 +56455,6 @@
1740990464,1740991487,KH
1740991488,1741000703,IN
1741000704,1741001727,AU
-1741001728,1741002751,HK
1741002752,1741003775,BD
1741004800,1741005823,AU
1741005824,1741006847,MV
@@ -48496,7 +56462,6 @@
1741007872,1741008895,TW
1741008896,1741009919,BT
1741009920,1741010943,CN
-1741010944,1741011455,IN
1741011456,1741011967,AU
1741011968,1741012991,ID
1741012992,1741014015,HK
@@ -48594,7 +56559,8 @@
1741128704,1741129727,JP
1741129728,1741130751,IN
1741131776,1741132799,IN
-1741132800,1741133823,MY
+1741132800,1741133567,MY
+1741133568,1741133823,TH
1741133824,1741134847,BD
1741134848,1741136895,IN
1741136896,1741137919,CN
@@ -48629,13 +56595,14 @@
1741176832,1741178879,CN
1741178880,1741183999,IN
1741184000,1741185023,BD
-1741185024,1741185279,HK
-1741185280,1741185535,JP
-1741185536,1741186047,HK
+1741185024,1741185279,SG
+1741185280,1741186047,JP
1741186048,1741188607,IN
1741188608,1741188863,US
1741188864,1741189119,IN
-1741189120,1741191167,HK
+1741189120,1741189631,HK
+1741189632,1741189887,JP
+1741189888,1741191167,HK
1741191168,1741192191,VN
1741192192,1741193215,HK
1741193216,1741194239,ID
@@ -48670,10 +56637,10 @@
1741347584,1741347839,AU
1741347840,1741348863,BD
1741348864,1741349375,PH
-1741349376,1741349631,IN
1741349632,1741349887,ID
1741349888,1741350911,CN
-1741350912,1741351935,US
+1741350912,1741351423,AU
+1741351424,1741351935,US
1741351936,1741366271,CN
1741366272,1741367295,IN
1741367296,1741368319,US
@@ -48708,10 +56675,7 @@
1741408256,1741409279,CN
1741409280,1741411327,IN
1741411328,1741413375,CN
-1741413376,1741413631,HK
-1741413632,1741413887,SG
-1741413888,1741414143,JP
-1741414144,1741414399,HK
+1741413376,1741414399,SG
1741414400,1741423615,IN
1741423616,1741425663,MY
1741425664,1741425919,TH
@@ -48730,8 +56694,6 @@
1741442048,1741443071,HK
1741443072,1741445119,BD
1741445120,1741446143,CN
-1741446144,1741446175,US
-1741446176,1741447167,SG
1741447168,1741448191,HK
1741448192,1741449215,MM
1741449216,1741450239,AU
@@ -48745,8 +56707,8 @@
1741457408,1741462527,CN
1741462528,1741466623,IN
1741466624,1741466879,JP
-1741466880,1741467391,HK
-1741467392,1741467647,JP
+1741466880,1741467135,SG
+1741467136,1741467647,JP
1741467648,1741469695,HK
1741469696,1741472767,IN
1741472768,1741473791,CN
@@ -48754,7 +56716,7 @@
1741474816,1741475839,IN
1741475840,1741476863,BD
1741476864,1741477887,AU
-1741477888,1741478655,IN
+1741478400,1741478655,IN
1741478656,1741478911,AU
1741478912,1741479935,NP
1741479936,1741480447,AU
@@ -48835,7 +56797,7 @@
1741562880,1741563903,HK
1741563904,1741564927,SG
1741564928,1741565951,CN
-1741565952,1741572607,IN
+1741565952,1741572095,IN
1741572608,1741573119,KR
1741573120,1741574143,JP
1741574144,1741575167,PH
@@ -48953,7 +56915,8 @@
1741724672,1741725695,IN
1741725696,1741726719,ID
1741726720,1741726975,NZ
-1741726976,1741727743,AU
+1741726976,1741727231,US
+1741727232,1741727743,NZ
1741727744,1741729791,IN
1741729792,1741730815,SG
1741730816,1741731839,BD
@@ -48991,7 +56954,6 @@
1741764096,1741764351,PG
1741764352,1741764607,AU
1741764608,1741765631,PH
-1741765632,1741766655,HK
1741766656,1741768703,IN
1741768704,1741769727,AU
1741769728,1741770239,GB
@@ -49011,7 +56973,6 @@
1741779968,1741780991,JP
1741780992,1741782015,SG
1741782016,1741783039,AU
-1741783040,1741783551,SG
1741783552,1741784063,ID
1741784064,1741785087,IN
1741785088,1741786111,CN
@@ -49042,7 +57003,8 @@
1741811712,1741812223,IN
1741812224,1741813759,AU
1741813760,1741814783,ID
-1741814784,1741815807,JP
+1741814784,1741815039,AU
+1741815040,1741815807,JP
1741815808,1741816831,CN
1741816832,1741817855,PK
1741817856,1741818367,PH
@@ -49136,11 +57098,10 @@
1741919232,1741920255,NP
1741920256,1741921279,IN
1741921280,1741922303,CN
-1741922304,1741923327,US
1741923328,1741923583,TH
1741923584,1741923839,CN
1741923840,1741924095,TH
-1741924096,1741925375,CN
+1741924096,1741924351,CN
1741925376,1741925631,AU
1741925632,1741925887,HK
1741925888,1741926399,PH
@@ -49156,8 +57117,8 @@
1741935616,1741936639,VN
1741936640,1741937151,IN
1741937152,1741937663,SC
-1741937664,1741940479,CN
-1741940480,1741940735,HK
+1741937664,1741939711,CN
+1741939712,1741940735,HK
1741940736,1741941759,ID
1741941760,1741942271,HK
1741942272,1741942527,AU
@@ -49178,9 +57139,10 @@
1741957888,1741958143,ID
1741958144,1741960191,CN
1741960192,1741961215,NZ
-1741961216,1741961471,HK
+1741961216,1741961471,KR
1741961472,1741961727,JP
-1741961728,1741962239,HK
+1741961728,1741961983,KR
+1741961984,1741962239,HK
1741962240,1741963263,SG
1741963264,1741963775,NP
1741963776,1741964287,AU
@@ -49200,14 +57162,13 @@
1741978624,1741979647,KR
1741979648,1741984767,IN
1741984768,1741985791,CN
-1741985792,1741987839,IN
+1741986816,1741987839,IN
1741988864,1741989887,CN
1741989888,1741990143,GB
1741990144,1741990911,SG
1741991936,1741992191,MY
1741992192,1741992447,IN
1741992960,1741993983,TH
-1741993984,1741995007,HK
1741995008,1741996031,JP
1741996032,1741996543,NZ
1741996544,1741997055,AU
@@ -49250,9 +57211,10 @@
1742065664,1742070783,IN
1742070784,1742071039,MM
1742071040,1742071295,JP
-1742071296,1742071807,MM
1742072832,1742074879,BD
-1742074880,1742076927,HK
+1742074880,1742074923,HK
+1742074924,1742074924,JP
+1742074925,1742076927,HK
1742076928,1742077951,CN
1742077952,1742078975,BD
1742078976,1742079999,NL
@@ -49265,7 +57227,6 @@
1742085120,1742086143,AU
1742086144,1742087167,CN
1742087168,1742088191,JP
-1742088192,1742088447,IN
1742088448,1742088703,HK
1742088704,1742089215,AU
1742089216,1742089727,IN
@@ -49289,7 +57250,9 @@
1742102272,1742102527,CH
1742103040,1742103295,AU
1742103296,1742104575,ID
-1742104576,1742105599,NZ
+1742104576,1742104831,NZ
+1742104832,1742105087,AU
+1742105088,1742105599,NZ
1742105600,1742106623,US
1742106624,1742107135,ID
1742107136,1742108671,IN
@@ -49346,7 +57309,6 @@
1742166016,1742167039,AU
1742167040,1742169087,IN
1742169088,1742172159,CN
-1742172160,1742173183,IN
1742173184,1742175231,CN
1742175232,1742176255,HK
1742176256,1742177791,AU
@@ -49398,13 +57360,12 @@
1742237696,1742242815,VN
1742242816,1742243071,NZ
1742243072,1742243327,AU
-1742243328,1742243583,HK
1742243584,1742243839,PK
1742243840,1742244863,CN
1742244864,1742247935,IN
1742247936,1742248959,CN
1742248960,1742249983,IN
-1742249984,1742250239,AF
+1742249984,1742250239,DE
1742250240,1742257151,IN
1742257152,1742257407,ID
1742257408,1742257663,NZ
@@ -49446,7 +57407,7 @@
1742338048,1742338303,AU
1742338304,1742338559,IN
1742338560,1742339071,AU
-1742339072,1742339327,US
+1742339072,1742339327,HK
1742339328,1742339583,SG
1742339584,1742339839,AU
1742339840,1742340095,US
@@ -49483,7 +57444,8 @@
1742423040,1742424063,PH
1742424064,1742425343,ID
1742425344,1742425599,US
-1742425600,1742426111,SG
+1742425600,1742425855,CA
+1742425856,1742426111,JP
1742426112,1742427135,HK
1742427136,1742432255,CN
1742432256,1742433279,HK
@@ -49563,7 +57525,10 @@
1742559232,1742589951,CN
1742589952,1742590975,IN
1742590976,1742596095,VN
-1742596096,1742597119,IN
+1742596096,1742596351,NZ
+1742596352,1742596607,IN
+1742596608,1742596863,NZ
+1742596864,1742597119,IN
1742597120,1742598143,AU
1742598144,1742599167,SG
1742599168,1742599423,IN
@@ -49579,7 +57544,6 @@
1742663424,1742663679,ID
1742663680,1742665727,CN
1742665728,1742666751,TW
-1742666752,1742667775,IN
1742667776,1742668799,ID
1742668800,1742669823,VN
1742669824,1742671871,IN
@@ -49591,7 +57555,6 @@
1742734336,1742735359,IN
1742735360,1742736383,JP
1742736384,1742737407,PK
-1742737408,1742738431,CN
1742738432,1742738687,HK
1742738688,1742738943,AU
1742738944,1742739455,AE
@@ -49609,7 +57572,6 @@
1742749696,1742750719,ID
1742750720,1742751743,IN
1742751744,1742752767,HK
-1742752768,1742753791,NZ
1742753792,1742754815,HK
1742754816,1742756863,AU
1742757888,1742758911,BN
@@ -49674,12 +57636,10 @@
1742821376,1742822399,ID
1742822400,1742823423,BD
1742823424,1742823679,AU
-1742823680,1742823935,IN
1742823936,1742824191,ID
1742824192,1742826495,IN
1742826496,1742827519,HK
1742827520,1742828543,IN
-1742828544,1742829567,BS
1742829568,1742830591,JP
1742830592,1742833663,IN
1742833664,1742834687,PH
@@ -49703,7 +57663,6 @@
1742852096,1742852607,ID
1742852608,1742853119,NZ
1742853120,1742854143,HK
-1742854144,1742855167,AF
1742855168,1742856191,PK
1742856192,1742857215,IN
1742857216,1742858239,BD
@@ -49721,7 +57680,7 @@
1742868480,1742869503,CN
1742869504,1742870015,IN
1742870016,1742870527,VU
-1742870528,1742872575,IN
+1742871552,1742872575,IN
1742872576,1742873343,NZ
1742873344,1742873599,AU
1742873600,1742873855,NZ
@@ -49745,7 +57704,6 @@
1742891008,1742892031,AU
1742892032,1742893055,VN
1742893056,1742894079,NZ
-1742894080,1742895103,CN
1742895104,1742895615,SG
1742895616,1742895871,BD
1742895872,1742896127,AU
@@ -49780,7 +57738,6 @@
1742928896,1742929919,NZ
1742929920,1742930431,IN
1742930432,1742930943,PH
-1742930944,1742931967,GB
1742931968,1742932991,JP
1742932992,1742933503,SG
1742933504,1742933759,ID
@@ -49798,9 +57755,8 @@
1742946048,1742947327,AU
1742947328,1742948351,IN
1742948352,1742951423,CN
-1742951424,1742952703,HK
-1742952704,1742952704,SG
-1742952705,1742953471,HK
+1742951424,1742952447,HK
+1742952448,1742953471,SG
1742954496,1742955519,IN
1742955520,1742956543,CN
1742956544,1742957567,HK
@@ -49841,7 +57797,6 @@
1742994432,1742995455,ID
1742995456,1742996479,BD
1742996480,1742997503,TH
-1742997504,1742998527,US
1742998528,1742999551,CN
1742999552,1742999807,AU
1742999808,1743000063,ID
@@ -49869,7 +57824,6 @@
1743021056,1743021311,SG
1743021312,1743021567,NZ
1743021568,1743021823,PH
-1743021824,1743022079,IN
1743022080,1743023103,US
1743023104,1743024127,HK
1743024128,1743025151,IN
@@ -49917,7 +57871,7 @@
1743067136,1743068159,IN
1743068160,1743069183,HK
1743069184,1743070207,MY
-1743070208,1743071231,US
+1743070208,1743071231,IN
1743071232,1743072255,VN
1743072256,1743073279,BD
1743073280,1743073791,AU
@@ -49930,7 +57884,6 @@
1743079424,1743080959,ID
1743080960,1743081471,IN
1743081472,1743083519,BD
-1743083520,1743084543,SG
1743084544,1743085567,TH
1743085568,1743085823,SG
1743086080,1743086591,NZ
@@ -49969,6 +57922,7 @@
1743115264,1743118335,CN
1743118336,1743119359,IN
1743119360,1743120383,CN
+1743120896,1743121407,IN
1743121408,1743123455,CN
1743123456,1743124479,IN
1743124480,1743124991,NZ
@@ -49988,14 +57942,16 @@
1743134976,1743135231,IN
1743135232,1743135743,HK
1743135744,1743136767,SG
-1743136768,1743138815,CN
+1743137792,1743138815,CN
1743138816,1743139327,ID
1743139328,1743139839,SG
1743139840,1743140863,IN
1743140864,1743141887,MY
1743141888,1743142911,BD
1743142912,1743143935,BN
-1743143936,1743144959,US
+1743143936,1743144447,SG
+1743144448,1743144703,US
+1743144704,1743144959,SG
1743144960,1743145983,AU
1743145984,1743147007,NZ
1743147008,1743147263,AU
@@ -50044,7 +58000,6 @@
1743192064,1743195135,IN
1743195136,1743196159,HK
1743196160,1743198207,CN
-1743198720,1743198975,AU
1743198976,1743199231,US
1743199232,1743200255,HK
1743200256,1743201279,IN
@@ -50060,8 +58015,7 @@
1743212544,1743213567,ID
1743213568,1743214591,HK
1743214592,1743215103,AU
-1743215104,1743215359,NZ
-1743215360,1743215615,AU
+1743215104,1743215615,NZ
1743215616,1743216639,MM
1743216640,1743217151,SG
1743217152,1743217663,JP
@@ -50092,8 +58046,7 @@
1743240192,1743241215,SG
1743241216,1743242239,JP
1743242240,1743244287,ID
-1743244288,1743244799,AU
-1743244800,1743245311,AF
+1743244288,1743245311,AU
1743245312,1743248383,IN
1743248384,1743248895,SG
1743248896,1743249407,IN
@@ -50219,7 +58172,6 @@
1743365120,1743366143,HK
1743366144,1743367167,IN
1743367168,1743368191,SG
-1743368192,1743369215,TH
1743369216,1743369727,MY
1743369728,1743369983,NP
1743369984,1743370239,AF
@@ -50365,7 +58317,7 @@
1743554560,1743555583,HK
1743555584,1743557631,JP
1743557632,1743557887,SG
-1743557888,1743558143,US
+1743557888,1743558143,GB
1743558144,1743558655,ID
1743558656,1743560703,IN
1743560704,1743561215,ID
@@ -50453,7 +58405,6 @@
1743685632,1743686655,ID
1743686656,1743688703,CN
1743688704,1743689727,MY
-1743689728,1743690751,IN
1743690752,1743691263,AS
1743691264,1743691775,IN
1743691776,1743699967,CN
@@ -50629,9 +58580,7 @@
1743897600,1743899647,AU
1743899648,1743900671,ID
1743900672,1743901695,JP
-1743901696,1743901951,AU
-1743901952,1743902207,US
-1743902208,1743902463,AU
+1743901696,1743902463,AU
1743902464,1743902719,US
1743902720,1743903743,AU
1743903744,1743904767,CN
@@ -50644,7 +58593,6 @@
1743911936,1743912959,AU
1743912960,1743913983,HK
1743913984,1743915007,JP
-1743915008,1743916031,CN
1743916032,1743917055,KH
1743917056,1743918079,MY
1743918080,1743919103,BD
@@ -50706,7 +58654,7 @@
1743976448,1743977471,AU
1743977472,1743978495,JP
1743978496,1743979519,HK
-1743979520,1743980543,IN
+1743979520,1743981567,IN
1743981568,1743981823,AU
1743981824,1743982079,SG
1743982080,1743982335,HK
@@ -50757,7 +58705,8 @@
1744032768,1744033791,MY
1744033792,1744034815,VN
1744034816,1744035839,SG
-1744035840,1744039423,IN
+1744035840,1744036863,IN
+1744037888,1744039423,IN
1744039424,1744039679,PH
1744039680,1744039935,AU
1744039936,1744040959,JP
@@ -50770,15 +58719,12 @@
1744046080,1744047103,SG
1744047104,1744048127,BD
1744048128,1744049151,CN
-1744051200,1744051711,PH
-1744051712,1744051967,SA
-1744051968,1744052223,PH
+1744051200,1744052223,PH
1744052224,1744053247,IN
1744053248,1744054271,ID
1744054272,1744055295,KR
1744055296,1744056319,JP
1744056320,1744056575,IN
-1744056576,1744056831,MY
1744056832,1744057087,NZ
1744057088,1744057343,ID
1744057344,1744058879,HK
@@ -50802,13 +58748,11 @@
1744083968,1744084991,HK
1744084992,1744085503,ID
1744085504,1744085759,BD
-1744085760,1744086015,MY
1744086016,1744087039,CN
1744087040,1744088063,IN
1744088064,1744090111,PK
1744090112,1744091135,NZ
1744091136,1744092159,BD
-1744092160,1744092671,MY
1744092672,1744092927,IN
1744092928,1744093183,MY
1744093184,1744094207,PH
@@ -50838,7 +58782,6 @@
1744119808,1744120831,JP
1744120832,1744122879,IN
1744122880,1744123903,CN
-1744123904,1744124927,JP
1744124928,1744125951,CN
1744125952,1744127999,IN
1744128000,1744128511,ID
@@ -50864,7 +58807,6 @@
1744147200,1744147455,IN
1744147456,1744148479,VN
1744148480,1744149503,AU
-1744149504,1744150527,IN
1744150528,1744151551,TO
1744151552,1744152319,LA
1744152320,1744152575,TH
@@ -50901,7 +58843,6 @@
1744188160,1744188415,AU
1744188416,1744189439,NZ
1744189440,1744190463,KR
-1744191488,1744192511,IN
1744192512,1744193535,JP
1744194560,1744194815,ID
1744194816,1744195071,HK
@@ -50979,7 +58920,6 @@
1744256000,1744257023,TH
1744257024,1744257535,AU
1744257536,1744257791,PK
-1744257792,1744258047,AU
1744258048,1744259071,JP
1744259072,1744260095,NZ
1744260096,1744261119,AU
@@ -51085,7 +59025,7 @@
1744359424,1744360447,IN
1744360448,1744361471,CN
1744361472,1744362495,ID
-1744362496,1744365567,CN
+1744362496,1744364543,CN
1744365568,1744366591,IN
1744366592,1744367615,BD
1744368640,1744369663,IN
@@ -51154,7 +59094,9 @@
1744434176,1744435199,CN
1744435200,1744436223,IN
1744436224,1744437247,CN
-1744437248,1744438271,KI
+1744437248,1744437503,AU
+1744437504,1744438015,KI
+1744438016,1744438271,AU
1744438272,1744439295,HK
1744439296,1744439807,AU
1744439808,1744440319,IN
@@ -51162,7 +59104,7 @@
1744441344,1744442367,IN
1744442368,1744443391,AU
1744443392,1744444415,VN
-1744444416,1744445439,IN
+1744444928,1744445439,IN
1744445440,1744446463,CN
1744446464,1744447487,IN
1744447744,1744447999,HK
@@ -51253,7 +59195,8 @@
1744543744,1744544767,CN
1744544768,1744545791,NL
1744545792,1744546047,NZ
-1744546048,1744547839,AU
+1744546048,1744546303,AU
+1744546560,1744547839,AU
1744547840,1744548863,AF
1744548864,1744549887,ID
1744549888,1744551935,IN
@@ -51287,11 +59230,10 @@
1744583680,1744584703,IN
1744584704,1744585727,CN
1744585728,1744586751,TW
-1744586752,1744588799,HK
+1744587776,1744588799,HK
1744588800,1744589823,PK
1744589824,1744590079,BT
1744590080,1744590335,ID
-1744590336,1744590591,IN
1744590592,1744590847,AU
1744590848,1744591871,DE
1744591872,1744592895,IN
@@ -51328,7 +59270,9 @@
1744619520,1744620543,SG
1744620544,1744622591,CN
1744622592,1744624639,IN
-1744624640,1744625663,NL
+1744624640,1744624895,NL
+1744624896,1744625151,US
+1744625152,1744625663,NL
1744625664,1744626687,BD
1744626688,1744627711,KR
1744627712,1744628735,CN
@@ -51344,7 +59288,8 @@
1744634880,1744635903,CN
1744635904,1744636927,HK
1744636928,1744637951,MY
-1744640000,1744641023,SG
+1744640000,1744640767,SG
+1744640768,1744641023,PH
1744641024,1744643583,IN
1744643584,1744644095,BD
1744644096,1744645119,HK
@@ -51385,7 +59330,6 @@
1744674816,1744675839,BD
1744675840,1744676351,SG
1744676352,1744678911,IN
-1744678912,1744679935,JP
1744679936,1744680959,KH
1744680960,1744681983,TW
1744681984,1744683007,JP
@@ -51531,7 +59475,11 @@
1747227648,1747228671,CA
1747228672,1747235839,US
1747235840,1747236863,CA
-1747236864,1747255807,US
+1747236864,1747247615,US
+1747247616,1747247871,JM
+1747247872,1747248127,US
+1747248128,1747249151,NL
+1747249152,1747255807,US
1747255808,1747256063,PR
1747256064,1747256319,US
1747256320,1747256575,IE
@@ -51729,7 +59677,8 @@
1747911424,1747911679,US
1747911680,1747911935,NL
1747911936,1747912191,FI
-1747912192,1747912703,US
+1747912192,1747912447,AT
+1747912448,1747912703,US
1747912704,1747912959,NL
1747912960,1747913215,AT
1747913216,1747913471,IE
@@ -51739,7 +59688,9 @@
1747914240,1747914495,AT
1747914496,1747915775,US
1747915776,1747916287,GB
-1747916288,1747926015,US
+1747916288,1747916799,US
+1747916800,1747917311,FR
+1747917312,1747926015,US
1747926016,1747926527,CA
1747926528,1747934207,US
1747934208,1747934719,JP
@@ -51765,7 +59716,9 @@
1747966080,1747966095,IE
1747966096,1747966463,US
1747966464,1747966975,IE
-1747966976,1749061631,US
+1747966976,1749028863,US
+1749028864,1749037055,NL
+1749037056,1749061631,US
1749061632,1749069823,NL
1749069824,1749094399,US
1749094400,1749098495,NL
@@ -51785,7 +59738,9 @@
1749397504,1749406719,NL
1749406720,1749413887,US
1749413888,1749422079,NL
-1749422080,1749449727,US
+1749422080,1749438463,US
+1749438464,1749446655,NL
+1749446656,1749449727,US
1749449728,1749450239,NL
1749450240,1749465087,US
1749465088,1749465599,NL
@@ -51813,7 +59768,11 @@
1749635072,1749636095,NL
1749636096,1749647359,US
1749647360,1749655551,NL
-1749655552,1749686527,US
+1749655552,1749659647,US
+1749659648,1749663743,NL
+1749663744,1749671935,US
+1749671936,1749676031,NL
+1749676032,1749686527,US
1749686528,1749686783,NL
1749686784,1749696511,US
1749696512,1749698047,NL
@@ -51827,7 +59786,11 @@
1749767680,1749769215,NL
1749769216,1749770239,US
1749770240,1749778431,NL
-1749778432,1749816831,US
+1749778432,1749790719,US
+1749790720,1749794815,NL
+1749794816,1749803007,US
+1749803008,1749807103,NL
+1749807104,1749816831,US
1749816832,1749818367,NL
1749818368,1749819391,US
1749819392,1749827583,NL
@@ -51840,16 +59803,18 @@
1749865728,1749865983,US
1749865984,1749866495,NL
1749866496,1749867263,US
-1749867264,1749868287,NL
+1749867264,1749867519,NL
+1749867520,1749867775,US
+1749867776,1749868287,NL
1749868288,1749901311,US
1749901312,1749901567,NL
-1749901568,1749925887,US
-1749925888,1749926143,NL
-1749926144,1749931007,US
+1749901568,1749931007,US
1749931008,1749932031,NL
1749932032,1749934079,US
1749934080,1749942271,NL
-1749942272,1750079999,US
+1749942272,1749983231,US
+1749983232,1749987327,NL
+1749987328,1750079999,US
1750080000,1750080511,NL
1750080512,1750096383,US
1750096384,1750106111,NL
@@ -51888,8 +59853,10 @@
1750351872,1750372351,US
1750372352,1750373375,NL
1750373376,1750374399,US
-1750374400,1750394367,NL
-1750394368,1750395903,US
+1750374400,1750374911,NL
+1750374912,1750376447,US
+1750376448,1750392831,NL
+1750392832,1750395903,US
1750395904,1750396927,NL
1750396928,1750405119,US
1750405120,1750415359,NL
@@ -51897,15 +59864,17 @@
1750417408,1750425599,NL
1750425600,1750443519,US
1750443520,1750444031,NL
-1750444032,1750465023,US
+1750444032,1750446079,US
+1750446080,1750450175,NL
+1750450176,1750465023,US
1750465024,1750482943,NL
1750482944,1750494719,US
1750494720,1750503423,NL
1750503424,1750515199,US
1750515200,1750515711,NL
1750515712,1750523903,US
-1750523904,1750534655,NL
-1750534656,1750536191,US
+1750523904,1750533119,NL
+1750533120,1750536191,US
1750536192,1750544383,NL
1750544384,1750573055,US
1750573056,1750581247,NL
@@ -51938,8 +59907,8 @@
1750946816,1750977535,US
1750977536,1750978559,NL
1750978560,1750986751,US
-1750986752,1750996991,NL
-1750996992,1750998527,US
+1750986752,1750995455,NL
+1750995456,1750998527,US
1750998528,1751007231,NL
1751007232,1751015423,US
1751015424,1751016703,NL
@@ -51957,7 +59926,9 @@
1751144960,1751146495,NL
1751146496,1751154687,US
1751154688,1751163391,NL
-1751163392,1751253503,US
+1751163392,1751203839,US
+1751203840,1751212031,AU
+1751212032,1751253503,US
1751253504,1751253759,NL
1751253760,1751255551,US
1751255552,1751256063,NL
@@ -51975,9 +59946,7 @@
1751521280,1751523327,US
1751523328,1751531519,NL
1751531520,1751598847,US
-1751598848,1751621631,NL
-1751621632,1751625727,US
-1751625728,1751640319,NL
+1751598848,1751640319,NL
1751640320,1751641087,US
1751641088,1751641599,NL
1751641600,1751642111,US
@@ -51994,21 +59963,27 @@
1751801856,1751810047,NL
1751810048,1751834623,US
1751834624,1751838719,NL
-1751838720,1751879679,US
-1751879680,1751883775,NL
+1751838720,1751875583,US
+1751875584,1751883775,NL
1751883776,1751884799,US
1751884800,1751885823,NL
-1751885824,1751896063,US
-1751896064,1751896831,NL
+1751885824,1751896575,US
+1751896576,1751896831,NL
1751896832,1751897087,US
-1751897088,1751928831,NL
+1751897088,1751899135,NL
+1751899136,1751900159,US
+1751900160,1751912447,NL
+1751912448,1751916543,US
+1751916544,1751928831,NL
1751928832,1751946239,US
1751946240,1751947263,NL
1751947264,1751949311,US
1751949312,1751957503,NL
1751957504,1751987711,US
-1751987712,1752007167,NL
-1752007168,1752037887,US
+1751987712,1751989247,NL
+1751989248,1751990271,US
+1751990272,1752006655,NL
+1752006656,1752037887,US
1752037888,1752038143,NL
1752038144,1752087807,US
1752087808,1752088063,NL
@@ -52021,14 +59996,16 @@
1752300288,1752300543,AE
1752300544,1752330239,US
1752330240,1752338431,NL
-1752338432,1752458239,US
+1752338432,1752344831,US
+1752344832,1752345087,NL
+1752345088,1752458239,US
1752458240,1752458495,NL
1752458496,1752495103,US
1752495104,1752495359,NL
1752495360,1752563711,US
1752563712,1752564223,NL
-1752564224,1752566783,US
-1752566784,1752568831,NL
+1752564224,1752568575,US
+1752568576,1752568831,NL
1752568832,1752570367,US
1752570368,1752570623,NL
1752570624,1752618495,US
@@ -52056,8 +60033,8 @@
1752798464,1752798719,US
1752798720,1752818687,NL
1752818688,1752834047,US
-1752834048,1752838143,NL
-1752838144,1752847359,US
+1752834048,1752836095,NL
+1752836096,1752847359,US
1752847360,1752847871,NL
1752847872,1752875007,US
1752875008,1752879103,NL
@@ -52068,32 +60045,38 @@
1752882688,1752883199,US
1752883200,1752891391,NL
1752891392,1752895487,US
-1752895488,1752903679,NL
-1752903680,1752911871,US
-1752911872,1752929279,NL
-1752929280,1752931327,US
-1752931328,1752932351,NL
-1752932352,1752940543,US
-1752940544,1752946175,NL
-1752946176,1752948735,US
-1752948736,1752952831,NL
-1752952832,1752971007,US
+1752895488,1752901631,NL
+1752901632,1752913919,US
+1752913920,1752929279,NL
+1752929280,1752944639,US
+1752944640,1752945151,NL
+1752945152,1752945663,US
+1752945664,1752946175,NL
+1752946176,1752971007,US
1752971008,1752971263,NL
-1752971264,1752982527,US
-1752982528,1753005055,NL
+1752971264,1752984063,US
+1752984064,1753005055,NL
1753005056,1753006079,US
1753006080,1753014271,NL
-1753014272,1753022975,US
-1753022976,1753026047,NL
+1753014272,1753023487,US
+1753023488,1753024511,NL
+1753024512,1753025535,US
+1753025536,1753026047,NL
1753026048,1753026559,US
-1753026560,1753042943,NL
+1753026560,1753030655,NL
+1753030656,1753034751,US
+1753034752,1753042943,NL
1753042944,1753046015,US
1753046016,1753046271,NL
1753046272,1753077247,US
1753077248,1753077503,NL
1753077504,1753097727,US
-1753097728,1753117183,NL
-1753117184,1753128959,US
+1753097728,1753098239,NL
+1753098240,1753099263,US
+1753099264,1753100287,NL
+1753100288,1753108479,US
+1753108480,1753116671,NL
+1753116672,1753128959,US
1753128960,1753133055,NL
1753133056,1753157631,US
1753157632,1753169919,NL
@@ -52106,16 +60089,16 @@
1753253120,1753253375,LK
1753253376,1753253631,ID
1753253632,1753253887,LB
-1753253888,1753254143,OM
+1753253888,1753254143,US
1753254144,1753254399,MT
1753254400,1753254655,MK
1753254656,1753254911,MY
1753254912,1753255167,AL
-1753255168,1753255423,US
-1753255424,1753255679,DZ
+1753255168,1753255679,US
1753255680,1753255935,KZ
1753255936,1753260031,CA
-1753260032,1753280511,US
+1753260032,1753267199,US
+1753268224,1753280511,US
1753280512,1753284607,CA
1753284608,1753309183,US
1753309184,1753317375,CA
@@ -52137,65 +60120,81 @@
1753484608,1753484655,BR
1753484656,1753485567,US
1753485568,1753485823,GH
-1753485824,1753487359,US
+1753485824,1753486079,DE
+1753486080,1753487359,US
1753487360,1753487615,CH
-1753487616,1753487679,US
-1753487680,1753487727,GB
-1753487728,1753489407,US
+1753487616,1753487871,GB
+1753487872,1753489407,US
1753489408,1753489663,GB
1753489664,1753489919,HK
1753489920,1753490175,US
1753490176,1753490431,AU
1753490432,1753490687,IL
-1753490688,1753492799,US
-1753492800,1753492847,GB
-1753492848,1753494015,US
+1753490688,1753491455,US
+1753491456,1753493503,GB
+1753493504,1753494015,US
1753494016,1753494271,NL
1753494272,1753494527,US
1753494528,1753494783,IL
1753494784,1753497407,US
1753497408,1753497455,PH
-1753497456,1753497599,US
-1753497600,1753498111,RU
-1753498112,1753499391,US
+1753497456,1753499391,US
1753499392,1753499647,PH
1753499648,1753499903,AE
1753499904,1753500159,US
1753500160,1753500415,SK
1753500416,1753500991,US
1753500992,1753501039,CA
-1753501040,1753507391,US
+1753501040,1753502975,US
+1753502976,1753503231,AU
+1753503232,1753507391,US
1753507392,1753507439,KR
-1753507440,1753512703,US
+1753507440,1753511167,US
+1753511168,1753511423,FR
+1753511424,1753511679,US
+1753511680,1753511935,BR
+1753511936,1753512703,US
1753512704,1753512959,SG
-1753512960,1753515007,US
-1753515008,1753516031,AU
+1753512960,1753513983,US
+1753513984,1753516031,AU
1753516032,1753516543,US
1753516544,1753516799,ES
1753516800,1753517567,US
1753517568,1753517823,NO
-1753517824,1753518079,US
-1753518080,1753519103,JP
-1753519104,1753520447,US
-1753520448,1753520495,GB
-1753520496,1753522431,US
+1753517824,1753518591,US
+1753518592,1753518847,JP
+1753518848,1753520127,US
+1753520128,1753520639,GB
+1753520640,1753522431,US
1753522432,1753522687,FR
-1753522688,1753526015,US
+1753522688,1753523807,US
+1753523808,1753523823,DE
+1753523824,1753526015,US
1753526016,1753526271,DE
1753526272,1753527039,US
1753527040,1753527295,NL
-1753527296,1753529087,US
+1753527296,1753528319,US
+1753528320,1753529087,CA
1753529088,1753529343,NZ
-1753529344,1753532415,US
+1753529344,1753530367,PL
+1753530368,1753532415,US
1753532416,1753532671,JP
1753532672,1753538815,US
1753538816,1753539071,PH
1753539072,1753539327,US
1753539328,1753539583,IE
1753539584,1753539839,CH
-1753539840,1753541631,US
+1753539840,1753540095,US
+1753540096,1753540607,CH
+1753540608,1753541631,US
1753541632,1753541887,DE
-1753541888,1753735167,US
+1753541888,1753542399,US
+1753542400,1753542655,TW
+1753542656,1753549823,US
+1753549824,1753550079,IE
+1753550080,1753550591,US
+1753550592,1753550847,TW
+1753550848,1753735167,US
1753735168,1753743359,IE
1753743360,1754136575,US
1754136576,1754169343,CA
@@ -52257,7 +60256,9 @@
1754259200,1754267647,US
1754267648,1754267719,CA
1754267720,1754267727,US
-1754267728,1754267935,CA
+1754267728,1754267767,CA
+1754267768,1754267775,US
+1754267776,1754267935,CA
1754267936,1754267943,US
1754267944,1754267951,CA
1754267952,1754267959,FI
@@ -52268,94 +60269,98 @@
1754268064,1754268079,US
1754268080,1754268095,CA
1754268096,1754268159,US
-1754268160,1754269055,CA
+1754268160,1754268927,CA
+1754268928,1754268959,US
+1754268960,1754269055,CA
1754269056,1754269087,US
1754269088,1754269103,CA
-1754269104,1754269119,US
-1754269120,1754269151,CA
-1754269152,1754269183,US
+1754269104,1754269183,US
1754269184,1754269247,CA
-1754269248,1754269311,US
-1754269312,1754269327,CA
-1754269328,1754269343,US
-1754269344,1754269359,CA
-1754269360,1754269423,US
-1754269424,1754269567,CA
-1754269568,1754269599,US
+1754269248,1754269423,US
+1754269424,1754269455,CA
+1754269456,1754269471,US
+1754269472,1754269503,CA
+1754269504,1754269535,CN
+1754269536,1754269599,US
1754269600,1754269615,CA
-1754269616,1754269631,US
-1754269632,1754269647,CA
-1754269648,1754269663,US
-1754269664,1754271135,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
1754271744,1754271999,CA
-1754272000,1754272127,US
-1754272128,1754272143,CA
-1754272144,1754272159,US
+1754272000,1754272159,US
1754272160,1754272191,CA
1754272192,1754272207,US
1754272208,1754272223,CA
1754272224,1754272255,US
1754272256,1754272383,CA
-1754272384,1754272415,US
-1754272416,1754272431,CA
-1754272432,1754272479,US
+1754272384,1754272479,US
1754272480,1754272495,CA
1754272496,1754272511,US
-1754272512,1754272655,CA
-1754272656,1754272671,US
+1754272512,1754272639,CA
+1754272640,1754272671,US
1754272672,1754272703,CA
1754272704,1754272719,US
1754272720,1754272735,CA
-1754272736,1754272895,US
-1754272896,1754272927,CA
-1754272928,1754272975,US
+1754272736,1754272975,US
1754272976,1754272991,CA
1754272992,1754273023,US
-1754273024,1754273151,CA
-1754273152,1754273183,US
+1754273024,1754273055,CA
+1754273056,1754273183,US
1754273184,1754273199,CA
-1754273200,1754273247,US
-1754273248,1754273263,CA
-1754273264,1754273279,US
+1754273200,1754273279,US
1754273280,1754273407,CA
1754273408,1754273439,US
1754273440,1754273455,CA
-1754273456,1754273487,US
-1754273488,1754273839,CA
-1754273840,1754273871,US
+1754273456,1754273535,US
+1754273536,1754273791,CA
+1754273792,1754273871,US
1754273872,1754273887,CA
1754273888,1754274175,US
-1754274176,1754274559,CA
-1754274560,1754274815,US
-1754274816,1754274959,CA
-1754274960,1754274991,US
-1754274992,1754275007,CA
-1754275008,1754275023,US
+1754274176,1754274303,CA
+1754274304,1754274815,US
+1754274816,1754274943,CA
+1754274944,1754275023,US
1754275024,1754275039,CA
1754275040,1754275199,US
-1754275200,1754276127,CA
+1754275200,1754275967,CA
+1754275968,1754275999,US
+1754276000,1754276127,CA
1754276128,1754276159,US
1754276160,1754276223,CA
1754276224,1754276287,US
1754276288,1754276863,CA
1754276864,1754277119,US
-1754277120,1754281223,CA
+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
1754281280,1754281343,US
1754281344,1754281407,CA
-1754281408,1754281455,US
-1754281456,1754281535,CA
+1754281408,1754281471,US
+1754281472,1754281535,CA
1754281536,1754281663,US
1754281664,1754281727,CA
1754281728,1754281983,US
1754281984,1754282495,CA
1754282496,1754282751,US
-1754282752,1754282895,CA
-1754282896,1754282927,US
+1754282752,1754282879,CA
+1754282880,1754282927,US
1754282928,1754282943,CA
1754282944,1754282959,US
1754282960,1754282967,CA
@@ -52369,83 +60374,61 @@
1754284704,1754284735,US
1754284736,1754285151,CA
1754285152,1754285167,US
-1754285168,1754285951,CA
-1754285952,1754286015,US
+1754285168,1754285311,CA
+1754285312,1754285567,US
+1754285568,1754285919,CA
+1754285920,1754286015,US
1754286016,1754286591,CA
1754286592,1754286847,US
-1754286848,1754288143,CA
-1754288144,1754288159,US
+1754286848,1754287871,CA
+1754287872,1754288159,US
1754288160,1754288191,CA
1754288192,1754288207,US
1754288208,1754288223,CA
-1754288224,1754288239,US
-1754288240,1754288255,CA
-1754288256,1754288383,US
+1754288224,1754288383,US
1754288384,1754288447,CA
1754288448,1754288575,US
-1754288576,1754288911,CA
-1754288912,1754288927,US
-1754288928,1754288943,CA
-1754288944,1754288991,US
-1754288992,1754289007,CA
-1754289008,1754289055,US
+1754288576,1754288895,CA
+1754288896,1754289055,US
1754289056,1754289071,CA
1754289072,1754289087,US
1754289088,1754289471,CA
1754289472,1754289487,US
1754289488,1754289495,CA
1754289496,1754289503,NO
-1754289504,1754289519,US
-1754289520,1754289535,CA
-1754289536,1754289663,US
+1754289504,1754289663,US
1754289664,1754290431,CA
-1754290432,1754290447,US
-1754290448,1754290479,CA
-1754290480,1754290511,US
-1754290512,1754290527,CA
-1754290528,1754290543,US
-1754290544,1754290559,CA
-1754290560,1754290591,US
+1754290432,1754290591,US
1754290592,1754290607,CA
1754290608,1754290623,US
1754290624,1754290943,CA
-1754290944,1754290975,US
-1754290976,1754290991,CA
-1754290992,1754291023,US
+1754290944,1754291023,US
1754291024,1754291039,CA
-1754291040,1754291103,US
-1754291104,1754291119,CA
-1754291120,1754291135,US
-1754291136,1754291471,CA
-1754291472,1754291503,US
+1754291040,1754291135,US
+1754291136,1754291455,CA
+1754291456,1754291503,US
1754291504,1754291519,CA
1754291520,1754291535,US
1754291536,1754291551,CA
1754291552,1754291711,US
1754291712,1754292031,CA
-1754292032,1754292095,US
-1754292096,1754292543,CA
+1754292032,1754292127,US
+1754292128,1754292543,CA
1754292544,1754292607,US
1754292608,1754292639,CA
1754292640,1754292671,US
1754292672,1754293343,CA
1754293344,1754293439,US
1754293440,1754294015,CA
-1754294016,1754294063,US
-1754294064,1754294079,CA
-1754294080,1754294095,US
+1754294016,1754294095,US
1754294096,1754294111,CA
-1754294112,1754294127,US
-1754294128,1754294143,CA
-1754294144,1754294271,US
-1754294272,1754294527,CA
-1754294528,1754294655,US
+1754294112,1754294655,US
1754294656,1754294943,CA
1754294944,1754294959,US
1754294960,1754294967,CA
1754294968,1754294975,US
-1754294976,1754295951,CA
-1754295952,1754295983,US
+1754294976,1754295935,CA
+1754295936,1754295983,US
1754295984,1754295999,CA
1754296000,1754296015,US
1754296016,1754296031,CA
@@ -52453,41 +60436,35 @@
1754296064,1754296383,CA
1754296384,1754296407,US
1754296408,1754296415,CA
-1754296416,1754296527,US
-1754296528,1754296543,CA
-1754296544,1754296575,US
+1754296416,1754296575,US
1754296576,1754297471,CA
1754297472,1754297487,US
1754297488,1754297503,CA
-1754297504,1754297535,US
-1754297536,1754297551,CA
-1754297552,1754297583,US
-1754297584,1754298623,CA
+1754297504,1754297583,US
+1754297584,1754298239,CA
+1754298240,1754298287,US
+1754298288,1754298623,CA
1754298624,1754299135,US
1754299136,1754299647,CA
-1754299648,1754299695,US
-1754299696,1754299775,CA
+1754299648,1754299711,US
+1754299712,1754299775,CA
1754299776,1754299791,US
1754299792,1754299839,CA
1754299840,1754299903,US
1754299904,1754300543,CA
1754300544,1754300575,US
1754300576,1754300591,CA
-1754300592,1754300639,US
-1754300640,1754300671,CA
+1754300592,1754300655,US
+1754300656,1754300671,CA
1754300672,1754300751,US
1754300752,1754300767,CA
-1754300768,1754300783,US
-1754300784,1754300799,CA
-1754300800,1754300879,US
-1754300880,1754300895,CA
-1754300896,1754300927,US
+1754300768,1754300927,US
1754300928,1754303231,CA
1754303232,1754303247,US
-1754303248,1754303359,CA
-1754303360,1754303375,US
-1754303376,1754303391,CA
-1754303392,1754303487,US
+1754303248,1754303263,CA
+1754303264,1754303295,US
+1754303296,1754303359,CA
+1754303360,1754303487,US
1754303488,1754303551,CA
1754303552,1754303567,US
1754303568,1754303575,CA
@@ -52497,20 +60474,14 @@
1754304552,1754304767,CA
1754304768,1754304783,US
1754304784,1754304799,CA
-1754304800,1754304895,US
-1754304896,1754304911,CA
-1754304912,1754304943,US
-1754304944,1754304959,CA
-1754304960,1754304991,US
+1754304800,1754304991,US
1754304992,1754305663,CA
-1754305664,1754305695,US
-1754305696,1754305711,CA
-1754305712,1754305743,US
-1754305744,1754305767,CA
+1754305664,1754305759,US
+1754305760,1754305767,CA
1754305768,1754305791,US
-1754305792,1754306047,CA
-1754306048,1754306559,US
-1754306560,1754306975,CA
+1754305792,1754306943,CA
+1754306944,1754306959,US
+1754306960,1754306975,CA
1754306976,1754307031,US
1754307032,1754307039,CA
1754307040,1754307071,US
@@ -52519,329 +60490,248 @@
1754307392,1754307423,CA
1754307424,1754307439,US
1754307440,1754307455,CA
-1754307456,1754307487,US
-1754307488,1754307503,CA
-1754307504,1754307583,US
-1754307584,1754307895,CA
+1754307456,1754307583,US
+1754307584,1754307855,CA
+1754307856,1754307871,US
+1754307872,1754307895,CA
1754307896,1754307903,SE
-1754307904,1754308015,US
-1754308016,1754308103,CA
+1754307904,1754308031,US
+1754308032,1754308103,CA
1754308104,1754308111,US
1754308112,1754308127,CA
-1754308128,1754308143,US
-1754308144,1754308159,CA
-1754308160,1754308191,US
-1754308192,1754308239,CA
-1754308240,1754308255,US
-1754308256,1754308271,CA
-1754308272,1754308303,US
+1754308128,1754308191,US
+1754308192,1754308223,CA
+1754308224,1754308303,US
1754308304,1754308311,CA
1754308312,1754308319,US
1754308320,1754308351,CA
1754308352,1754308367,US
1754308368,1754308383,CA
-1754308384,1754308415,US
-1754308416,1754308431,CA
-1754308432,1754308447,US
+1754308384,1754308447,US
1754308448,1754308455,CA
-1754308456,1754308463,US
-1754308464,1754308479,CA
-1754308480,1754308543,US
-1754308544,1754308559,CA
-1754308560,1754308575,US
+1754308456,1754308575,US
1754308576,1754308863,CA
-1754308864,1754308879,US
-1754308880,1754308895,CA
-1754308896,1754308943,US
+1754308864,1754308943,US
1754308944,1754308951,CA
1754308952,1754308959,SE
-1754308960,1754308975,CA
-1754308976,1754308991,US
-1754308992,1754309023,CA
-1754309024,1754309055,US
+1754308960,1754308991,US
+1754308992,1754309007,CA
+1754309008,1754309055,US
1754309056,1754309439,CA
1754309440,1754309471,US
1754309472,1754309479,CA
-1754309480,1754309487,US
-1754309488,1754309503,CA
-1754309504,1754309583,US
-1754309584,1754309615,CA
-1754309616,1754309631,US
+1754309480,1754309631,US
1754309632,1754309887,CA
-1754309888,1754309903,US
-1754309904,1754309935,CA
+1754309888,1754309919,US
+1754309920,1754309935,CA
1754309936,1754309951,US
1754309952,1754309983,CA
-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
+1754309984,1754310015,US
+1754310016,1754310079,CA
+1754310080,1754310143,US
+1754310144,1754310399,CA
+1754310400,1754310479,US
1754310480,1754310495,CA
1754310496,1754310527,US
1754310528,1754310911,CA
1754310912,1754310943,US
1754310944,1754310975,CA
-1754310976,1754310991,US
-1754310992,1754311055,CA
-1754311056,1754311119,US
-1754311120,1754311151,CA
-1754311152,1754311167,US
+1754310976,1754311007,US
+1754311008,1754311055,CA
+1754311056,1754311167,US
1754311168,1754311423,CA
-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
+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,1754311983,US
-1754311984,1754311999,CA
-1754312000,1754312191,US
+1754311976,1754312191,US
1754312192,1754312447,CA
1754312448,1754312463,US
-1754312464,1754312495,CA
-1754312496,1754312575,US
+1754312464,1754312479,CA
+1754312480,1754312575,US
1754312576,1754312639,CA
-1754312640,1754312655,US
-1754312656,1754312671,CA
-1754312672,1754312703,US
+1754312640,1754312703,US
1754312704,1754312719,CA
1754312720,1754312735,US
1754312736,1754312767,CA
1754312768,1754312783,US
-1754312784,1754312815,CA
-1754312816,1754312831,US
-1754312832,1754312847,CA
-1754312848,1754312863,US
-1754312864,1754312879,CA
-1754312880,1754312959,US
+1754312784,1754312799,CA
+1754312800,1754312959,US
1754312960,1754313023,CA
-1754313024,1754313055,US
-1754313056,1754313071,CA
-1754313072,1754313119,US
-1754313120,1754313135,CA
-1754313136,1754313151,US
-1754313152,1754313247,CA
-1754313248,1754313327,US
-1754313328,1754313343,CA
-1754313344,1754313391,US
-1754313392,1754313535,CA
-1754313536,1754313583,US
-1754313584,1754313599,CA
-1754313600,1754313615,US
+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
1754313616,1754313663,CA
-1754313664,1754313679,US
-1754313680,1754313791,CA
-1754313792,1754313807,US
-1754313808,1754313823,CA
-1754313824,1754313839,US
+1754313664,1754313695,US
+1754313696,1754313791,CA
+1754313792,1754313839,US
1754313840,1754313847,CA
-1754313848,1754313903,US
-1754313904,1754314031,CA
-1754314032,1754314079,US
-1754314080,1754314127,CA
-1754314128,1754314143,US
+1754313848,1754313951,US
+1754313952,1754314015,CA
+1754314016,1754314079,US
+1754314080,1754314111,CA
+1754314112,1754314143,US
1754314144,1754314175,CA
-1754314176,1754314191,US
-1754314192,1754314207,CA
-1754314208,1754314239,US
+1754314176,1754314239,US
1754314240,1754314255,CA
-1754314256,1754314415,US
-1754314416,1754314431,CA
-1754314432,1754314463,US
-1754314464,1754314511,CA
-1754314512,1754314527,US
+1754314256,1754314463,US
+1754314464,1754314495,CA
+1754314496,1754314527,US
1754314528,1754314559,CA
1754314560,1754314575,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
+1754314576,1754314591,CA
+1754314592,1754314783,US
+1754314784,1754314815,CA
+1754314816,1754314991,US
+1754314992,1754315007,CA
+1754315008,1754315039,US
+1754315040,1754315071,CA
+1754315072,1754315135,US
1754315136,1754315199,CA
1754315200,1754315215,US
1754315216,1754315223,CA
-1754315224,1754315263,US
-1754315264,1754315311,CA
+1754315224,1754315295,US
+1754315296,1754315311,CA
1754315312,1754315343,US
-1754315344,1754315407,CA
-1754315408,1754315423,US
+1754315344,1754315391,CA
+1754315392,1754315423,US
1754315424,1754315471,CA
-1754315472,1754315519,US
-1754315520,1754315535,CA
-1754315536,1754315551,US
+1754315472,1754315551,US
1754315552,1754315559,CA
1754315560,1754315615,US
1754315616,1754315623,CA
-1754315624,1754315631,US
-1754315632,1754315647,CA
-1754315648,1754316287,US
-1754316288,1754317839,CA
-1754317840,1754317903,US
+1754315624,1754316287,US
+1754316288,1754317823,CA
+1754317824,1754317903,US
1754317904,1754317919,CA
1754317920,1754317935,US
1754317936,1754317943,CA
1754317944,1754318111,US
1754318112,1754318119,CA
-1754318120,1754318143,US
-1754318144,1754318159,CA
-1754318160,1754318175,US
+1754318120,1754318175,US
1754318176,1754318207,CA
1754318208,1754318335,US
1754318336,1754319103,CA
1754319104,1754319119,US
1754319120,1754319135,CA
-1754319136,1754319167,US
-1754319168,1754319207,CA
+1754319136,1754319199,US
+1754319200,1754319207,CA
1754319208,1754319215,US
-1754319216,1754319247,CA
-1754319248,1754319263,US
+1754319216,1754319231,CA
+1754319232,1754319263,US
1754319264,1754319295,CA
-1754319296,1754319311,US
-1754319312,1754319327,CA
-1754319328,1754319391,US
+1754319296,1754319391,US
1754319392,1754319479,CA
-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
+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
1754320000,1754320063,CA
-1754320064,1754320095,US
-1754320096,1754320111,CA
-1754320112,1754320127,US
+1754320064,1754320127,US
1754320128,1754320167,CA
1754320168,1754320223,US
1754320224,1754320231,CA
-1754320232,1754320255,US
-1754320256,1754320319,CA
+1754320232,1754320287,US
+1754320288,1754320319,CA
1754320320,1754320415,US
1754320416,1754320447,CA
-1754320448,1754320479,US
-1754320480,1754320495,CA
-1754320496,1754320527,US
-1754320528,1754320543,CA
-1754320544,1754320559,US
-1754320560,1754320623,CA
-1754320624,1754320639,US
-1754320640,1754320655,CA
-1754320656,1754320671,US
-1754320672,1754320703,CA
-1754320704,1754320719,US
+1754320448,1754320575,US
+1754320576,1754320623,CA
+1754320624,1754320671,US
+1754320672,1754320687,CA
+1754320688,1754320719,US
1754320720,1754320767,CA
-1754320768,1754320799,US
-1754320800,1754320815,CA
-1754320816,1754320927,US
+1754320768,1754320927,US
1754320928,1754320951,CA
-1754320952,1754320975,US
-1754320976,1754321023,CA
-1754321024,1754321055,US
+1754320952,1754321055,US
1754321056,1754321103,CA
1754321104,1754321119,US
1754321120,1754321151,CA
1754321152,1754321167,US
-1754321168,1754321199,CA
-1754321200,1754321231,US
+1754321168,1754321183,CA
+1754321184,1754321231,US
1754321232,1754321239,CA
1754321240,1754321439,US
1754321440,1754321447,CA
1754321448,1754321487,US
1754321488,1754321511,CA
-1754321512,1754321519,US
-1754321520,1754321535,CA
-1754321536,1754321551,US
-1754321552,1754321567,CA
-1754321568,1754321615,US
-1754321616,1754322695,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
1754322696,1754322703,US
1754322704,1754322719,CA
-1754322720,1754322767,US
-1754322768,1754322783,CA
-1754322784,1754322847,US
-1754322848,1754322863,CA
-1754322864,1754322879,US
+1754322720,1754322879,US
1754322880,1754323207,CA
-1754323208,1754323215,US
-1754323216,1754323231,CA
-1754323232,1754323247,US
-1754323248,1754323263,CA
-1754323264,1754323279,US
+1754323208,1754323279,US
1754323280,1754323287,CA
-1754323288,1754323327,US
-1754323328,1754323391,CA
-1754323392,1754323455,US
-1754323456,1754324095,CA
+1754323288,1754323359,US
+1754323360,1754323391,CA
+1754323392,1754323503,US
+1754323504,1754323967,CA
+1754323968,1754323999,US
+1754324000,1754324095,CA
1754324096,1754324735,US
1754324736,1754324999,CA
1754325000,1754325007,US
-1754325008,1754325039,CA
-1754325040,1754325071,US
+1754325008,1754325023,CA
+1754325024,1754325071,US
1754325072,1754325079,CA
-1754325080,1754325087,US
-1754325088,1754325103,CA
-1754325104,1754325247,US
-1754325248,1754325279,CA
-1754325280,1754325343,US
-1754325344,1754325391,CA
-1754325392,1754325407,US
+1754325080,1754325247,US
+1754325248,1754325263,CA
+1754325264,1754325343,US
+1754325344,1754325375,CA
+1754325376,1754325407,US
1754325408,1754325439,CA
-1754325440,1754325487,US
-1754325488,1754325599,CA
-1754325600,1754325631,US
+1754325440,1754325503,US
+1754325504,1754325567,CA
+1754325568,1754325631,US
1754325632,1754325695,CA
1754325696,1754325759,US
1754325760,1754325767,CA
-1754325768,1754325775,US
-1754325776,1754325839,CA
-1754325840,1754325855,US
+1754325768,1754325791,US
+1754325792,1754325823,CA
+1754325824,1754325855,US
1754325856,1754325887,CA
1754325888,1754325919,US
1754325920,1754325927,CA
-1754325928,1754325935,US
-1754325936,1754326079,CA
-1754326080,1754326127,US
-1754326128,1754326207,CA
-1754326208,1754326239,US
-1754326240,1754326255,CA
-1754326256,1754326271,US
+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,1754326399,US
-1754326400,1754326415,CA
-1754326416,1754326431,US
+1754326336,1754326431,US
1754326432,1754326463,CA
-1754326464,1754326495,US
-1754326496,1754326511,CA
-1754326512,1754326527,US
+1754326464,1754326527,US
1754326528,1754326535,CA
-1754326536,1754326543,US
-1754326544,1754326591,CA
-1754326592,1754326655,US
-1754326656,1754326719,CA
+1754326536,1754326559,US
+1754326560,1754326591,CA
+1754326592,1754326687,US
+1754326688,1754326719,CA
1754326720,1754326751,US
1754326752,1754326759,CA
1754326760,1754326783,US
@@ -52852,69 +60742,61 @@
1754327040,1754327103,CA
1754327104,1754327231,US
1754327232,1754327551,CA
-1754327552,1754328063,US
-1754328064,1754328079,CA
-1754328080,1754328111,US
-1754328112,1754328127,CA
-1754328128,1754328143,US
+1754327552,1754328143,US
1754328144,1754328151,CA
1754328152,1754328319,US
1754328320,1754328575,CA
1754328576,1754329087,US
-1754329088,1754329151,CA
+1754329088,1754329103,CA
+1754329104,1754329119,US
+1754329120,1754329151,CA
1754329152,1754329183,US
1754329184,1754329215,CA
1754329216,1754329247,US
1754329248,1754329279,CA
-1754329280,1754329311,US
-1754329312,1754329335,CA
+1754329280,1754329327,US
+1754329328,1754329335,CA
1754329336,1754329343,US
-1754329344,1754329407,CA
-1754329408,1754329455,US
-1754329456,1754329471,CA
-1754329472,1754329599,US
+1754329344,1754329359,CA
+1754329360,1754329375,US
+1754329376,1754329407,CA
+1754329408,1754329599,US
1754329600,1754329607,CA
1754329608,1754329631,US
1754329632,1754329663,CA
1754329664,1754329679,US
1754329680,1754329695,CA
-1754329696,1754329711,US
-1754329712,1754329743,CA
-1754329744,1754329759,US
+1754329696,1754329759,US
1754329760,1754329791,CA
-1754329792,1754329839,US
-1754329840,1754329871,CA
-1754329872,1754329887,US
+1754329792,1754329887,US
1754329888,1754329919,CA
1754329920,1754329935,US
1754329936,1754329951,CA
1754329952,1754330111,US
1754330112,1754330879,CA
1754330880,1754331135,US
-1754331136,1754331263,CA
+1754331136,1754331167,CA
+1754331168,1754331183,US
+1754331184,1754331263,CA
1754331264,1754331295,US
1754331296,1754331303,CA
1754331304,1754331375,US
-1754331376,1754331407,CA
-1754331408,1754331423,US
+1754331376,1754331391,CA
+1754331392,1754331423,US
1754331424,1754331455,CA
1754331456,1754331487,US
1754331488,1754331495,CA
1754331496,1754331647,US
-1754331648,1754331791,CA
-1754331792,1754331823,US
+1754331648,1754331775,CA
+1754331776,1754331823,US
1754331824,1754331839,CA
1754331840,1754331855,US
1754331856,1754331871,CA
1754331872,1754332191,US
1754332192,1754332199,CA
-1754332200,1754332223,US
-1754332224,1754332239,CA
-1754332240,1754332271,US
+1754332200,1754332271,US
1754332272,1754332287,CA
-1754332288,1754332671,US
-1754332672,1754332687,CA
-1754332688,1754332703,US
+1754332288,1754332703,US
1754332704,1754332735,CA
1754332736,1754332751,US
1754332752,1754332767,CA
@@ -52944,8 +60826,13 @@
1754405968,1754405983,HK
1754405984,1754405999,SG
1754406000,1754406031,NL
-1754406032,1754406063,IE
-1754406064,1754406399,US
+1754406032,1754406079,IE
+1754406080,1754406095,NL
+1754406096,1754406111,HK
+1754406112,1754406127,SG
+1754406128,1754406143,IE
+1754406144,1754406159,NL
+1754406160,1754406399,US
1754406400,1754406719,IE
1754406720,1754406911,SG
1754406912,1754407103,US
@@ -52961,11 +60848,17 @@
1754408832,1754408895,SG
1754408896,1754409919,US
1754409920,1754410495,NL
-1754410496,1754411071,IE
-1754411072,1754413103,US
+1754410496,1754411263,IE
+1754411264,1754411455,US
+1754411456,1754411647,NL
+1754411648,1754412607,US
+1754412608,1754412735,HK
+1754412736,1754412799,US
+1754412800,1754412927,SG
+1754412928,1754413103,US
1754413104,1754413119,NL
-1754413120,1754413127,IE
-1754413128,1754413231,US
+1754413120,1754413135,IE
+1754413136,1754413231,US
1754413232,1754413279,NL
1754413280,1754413327,IE
1754413328,1754413423,US
@@ -52975,8 +60868,17 @@
1754413536,1754413551,SG
1754413552,1754413807,US
1754413808,1754413951,NL
-1754413952,1754414095,IE
-1754414096,1754415231,US
+1754413952,1754414143,IE
+1754414144,1754414191,US
+1754414192,1754414239,NL
+1754414240,1754414479,US
+1754414480,1754414511,HK
+1754414512,1754414575,US
+1754414576,1754414607,SG
+1754414608,1754414623,US
+1754414624,1754414671,IE
+1754414672,1754414719,NL
+1754414720,1754415231,US
1754415232,1754415359,NL
1754415360,1754415487,IE
1754415488,1754415615,US
@@ -52989,7 +60891,17 @@
1754416512,1754416895,US
1754416896,1754417151,NL
1754417152,1754417407,IE
-1754417408,1754429455,US
+1754417408,1754417791,US
+1754417792,1754417919,IE
+1754417920,1754418047,NL
+1754418048,1754418303,US
+1754418304,1754418431,HK
+1754418432,1754418559,SG
+1754418560,1754419711,US
+1754419712,1754419839,IE
+1754419840,1754419967,US
+1754419968,1754420095,NL
+1754420096,1754429455,US
1754429456,1754429471,NL
1754429472,1754429487,IE
1754429488,1754429503,US
@@ -53002,7 +60914,17 @@
1754429616,1754429663,US
1754429664,1754429695,NL
1754429696,1754429727,IE
-1754429728,1754431487,US
+1754429728,1754429791,US
+1754429792,1754429807,IE
+1754429808,1754429823,NL
+1754429824,1754429855,US
+1754429856,1754429871,HK
+1754429872,1754429887,SG
+1754429888,1754430031,US
+1754430032,1754430047,IE
+1754430048,1754430063,US
+1754430064,1754430079,NL
+1754430080,1754431487,US
1754431488,1754433023,IE
1754433024,1754434047,US
1754434048,1754434559,HK
@@ -53067,10 +60989,17 @@
1754479616,1754480127,SG
1754480128,1754488319,US
1754488320,1754492927,NL
-1754492928,1754497535,IE
-1754497536,1754515711,US
-1754515712,1754515967,IE
-1754515968,1754521791,US
+1754492928,1754499071,IE
+1754499072,1754500607,US
+1754500608,1754502143,NL
+1754502144,1754509823,US
+1754509824,1754510847,HK
+1754510848,1754512895,US
+1754512896,1754513919,SG
+1754513920,1754514431,US
+1754514432,1754515967,IE
+1754515968,1754517503,NL
+1754517504,1754521791,US
1754521792,1754521855,NL
1754521856,1754521919,IE
1754521920,1754522303,US
@@ -53092,7 +61021,9 @@
1754527680,1754527871,SG
1754527872,1754528063,IE
1754528064,1754528255,NL
-1754528256,1754792959,US
+1754528256,1754561535,US
+1754561536,1754561551,CA
+1754561552,1754792959,US
1754792960,1754793983,CA
1754793984,1754799103,US
1754799104,1754800127,CA
@@ -53104,7 +61035,7 @@
1754832896,1754835967,CA
1754835968,1754845183,US
1754845184,1754846207,CA
-1754846208,1754849279,US
+1754847232,1754849279,US
1754849280,1754850303,CA
1754850304,1754852351,US
1754852352,1754853375,JM
@@ -53118,7 +61049,9 @@
1754890240,1754892287,BB
1754892288,1754894335,CA
1754894336,1754899455,US
-1754899456,1754900479,CA
+1754899456,1754899967,CA
+1754899968,1754900223,US
+1754900224,1754900479,CA
1754900480,1754911743,US
1754911744,1754912767,CA
1754912768,1754920959,US
@@ -53306,9 +61239,7 @@
1757426688,1757427711,CA
1757427712,1757432831,US
1757432832,1757433855,CA
-1757433856,1757441023,US
-1757441024,1757441535,CN
-1757441536,1757443071,US
+1757433856,1757443071,US
1757443072,1757446143,CA
1757446144,1757447167,US
1757447168,1757447343,CA
@@ -53341,13 +61272,20 @@
1757513728,1757522943,US
1757522944,1757523967,CA
1757523968,1757529087,US
-1757529088,1757530111,AI
+1757529088,1757529599,AI
+1757529600,1757529855,KN
+1757529856,1757529983,AI
+1757529984,1757530111,KN
1757530112,1757532159,US
1757532160,1757533183,CA
1757533184,1757543295,US
1757543296,1757543327,AU
-1757543328,1757552639,US
-1757552640,1757560831,CA
+1757543328,1757545471,US
+1757545472,1757545727,CA
+1757545728,1757548543,US
+1757548544,1757549567,CA
+1757549568,1757551615,US
+1757551616,1757560831,CA
1757560832,1757596415,US
1757596416,1757596671,AU
1757596672,1757642751,US
@@ -53356,12 +61294,15 @@
1757916816,1757916816,AU
1757916817,1757937663,US
1757937664,1757941759,CA
-1757941760,1757957631,US
+1757941760,1757954559,US
+1757954560,1757954815,DE
+1757954816,1757957631,US
1757957632,1757957887,NL
1757957888,1757958143,US
1757958144,1757962239,CA
1757962240,1757966335,BB
-1757966336,1757996287,US
+1757966336,1757970431,JP
+1757970432,1757996287,US
1757996288,1757996543,GB
1757996544,1758002431,US
1758002432,1758002687,GB
@@ -53404,7 +61345,9 @@
1758478336,1758494719,HK
1758494720,1758543871,US
1758543872,1758552063,AU
-1758552064,1758609407,US
+1758552064,1758554136,US
+1758554137,1758554137,AU
+1758554138,1758609407,US
1758609408,1758625791,AU
1758625792,1758674943,US
1758674944,1758724095,IN
@@ -53565,8 +61508,8 @@
1759526400,1759526655,JE
1759526656,1759526911,FO
1759526912,1759531007,US
-1759531008,1759533055,SG
-1759533056,1759533311,US
+1759531008,1759532031,SG
+1759532032,1759533311,US
1759533312,1759533567,GB
1759533568,1759533823,FR
1759533824,1759534079,SG
@@ -53619,9 +61562,7 @@
1759711704,1759711711,CA
1759711712,1759711727,US
1759711728,1759711743,CA
-1759711744,1759712255,US
-1759712256,1759712271,CA
-1759712272,1759712287,US
+1759711744,1759712287,US
1759712288,1759712319,CA
1759712320,1759712335,US
1759712336,1759712351,CA
@@ -53635,21 +61576,21 @@
1759715072,1759715327,CA
1759715328,1759715375,US
1759715376,1759715391,CA
-1759715392,1759715407,US
-1759715408,1759715439,CA
+1759715392,1759715423,US
+1759715424,1759715439,CA
1759715440,1759715839,US
1759715840,1759715903,CA
1759715904,1759715967,US
-1759715968,1759716159,CA
+1759715968,1759715983,CA
+1759715984,1759715999,US
+1759716000,1759716159,CA
1759716160,1759716223,US
1759716224,1759716255,CA
1759716256,1759716287,US
1759716288,1759716991,CA
1759716992,1759717023,US
1759717024,1759717039,CA
-1759717040,1759717055,US
-1759717056,1759717071,CA
-1759717072,1759717119,US
+1759717040,1759717119,US
1759717120,1759718399,CA
1759718400,1759718655,US
1759718656,1759719519,CA
@@ -53657,43 +61598,25 @@
1759719616,1759719807,CA
1759719808,1759719839,US
1759719840,1759719855,CA
-1759719856,1759719919,US
-1759719920,1759719935,CA
-1759719936,1759719967,US
+1759719856,1759719967,US
1759719968,1759719999,CA
1759720000,1759720015,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,1759720287,CA
-1759720288,1759720319,US
+1759720016,1759720031,CA
+1759720032,1759720047,US
+1759720048,1759720063,CA
+1759720064,1759720191,US
+1759720192,1759720207,CA
+1759720208,1759720319,US
1759720320,1759720383,CA
-1759720384,1759720415,US
-1759720416,1759720431,CA
-1759720432,1759720543,US
-1759720544,1759720575,CA
-1759720576,1759720703,US
+1759720384,1759720703,US
1759720704,1759720767,CA
1759720768,1759720783,US
1759720784,1759720791,CA
-1759720792,1759720815,US
-1759720816,1759720831,CA
-1759720832,1759721183,US
-1759721184,1759721215,CA
-1759721216,1759721375,US
-1759721376,1759721391,CA
-1759721392,1759721423,US
+1759720792,1759721423,US
1759721424,1759721439,CA
-1759721440,1759721471,US
-1759721472,1759721535,CA
-1759721536,1759721647,US
-1759721648,1759721663,CA
-1759721664,1759721695,US
+1759721440,1759721503,US
+1759721504,1759721535,CA
+1759721536,1759721695,US
1759721696,1759721727,CA
1759721728,1759721743,US
1759721744,1759721759,CA
@@ -53701,54 +61624,54 @@
1759721824,1759721831,CA
1759721832,1759721839,NO
1759721840,1759722047,US
-1759722048,1759722079,CA
-1759722080,1759722271,US
-1759722272,1759722367,CA
+1759722048,1759722063,CA
+1759722064,1759722303,US
+1759722304,1759722319,CA
+1759722320,1759722335,US
+1759722336,1759722367,CA
1759722368,1759722383,US
1759722384,1759722431,CA
-1759722432,1759722479,US
-1759722480,1759722495,CA
-1759722496,1759722511,US
+1759722432,1759722511,US
1759722512,1759722527,CA
1759722528,1759722559,US
-1759722560,1759722607,CA
-1759722608,1759722655,US
-1759722656,1759722687,CA
-1759722688,1759722895,US
+1759722560,1759722591,CA
+1759722592,1759722895,US
1759722896,1759722911,CA
-1759722912,1759722975,US
-1759722976,1759722991,CA
-1759722992,1759723007,US
+1759722912,1759723007,US
1759723008,1759723071,CA
1759723072,1759723151,US
1759723152,1759723167,CA
-1759723168,1759723199,US
-1759723200,1759723231,CA
-1759723232,1759723247,US
-1759723248,1759723279,CA
-1759723280,1759723343,US
+1759723168,1759723247,US
+1759723248,1759723263,CA
+1759723264,1759723343,US
1759723344,1759723359,CA
1759723360,1759723551,US
1759723552,1759723583,CA
1759723584,1759723599,US
1759723600,1759723615,CA
-1759723616,1759723631,US
-1759723632,1759723647,CA
-1759723648,1759723823,US
+1759723616,1759723823,US
1759723824,1759723831,CA
1759723832,1759723839,US
-1759723840,1759723887,CA
+1759723840,1759723855,CA
+1759723856,1759723871,US
+1759723872,1759723887,CA
1759723888,1759723999,US
1759724000,1759724159,CA
-1759724160,1759724223,US
-1759724224,1759724239,CA
-1759724240,1759724255,US
-1759724256,1759725055,CA
-1759725056,1759726079,US
-1759726080,1759726975,CA
-1759726976,1759727007,US
-1759727008,1759727023,CA
-1759727024,1759727087,US
+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
@@ -53767,24 +61690,24 @@
1759728832,1759728895,US
1759728896,1759729151,CA
1759729152,1759729663,US
-1759729664,1759729711,CA
-1759729712,1759729743,US
+1759729664,1759729695,CA
+1759729696,1759729743,US
1759729744,1759729751,CA
1759729752,1759729967,US
1759729968,1759730015,CA
-1759730016,1759730175,US
-1759730176,1759730191,CA
-1759730192,1759730207,US
+1759730016,1759730207,US
1759730208,1759730239,CA
1759730240,1759730303,US
-1759730304,1759730367,CA
+1759730304,1759730319,CA
+1759730320,1759730351,US
+1759730352,1759730367,CA
1759730368,1759730399,US
1759730400,1759730415,CA
1759730416,1759730463,US
-1759730464,1759730495,CA
-1759730496,1759730519,US
-1759730520,1759730543,CA
-1759730544,1759730559,US
+1759730464,1759730487,CA
+1759730488,1759730519,US
+1759730520,1759730527,CA
+1759730528,1759730559,US
1759730560,1759730623,CA
1759730624,1759730839,US
1759730840,1759730847,CA
@@ -53802,34 +61725,30 @@
1759734280,1759734303,CA
1759734304,1759734351,US
1759734352,1759734367,CA
-1759734368,1759734383,US
-1759734384,1759734399,CA
-1759734400,1759734431,US
-1759734432,1759734463,CA
-1759734464,1759734607,US
-1759734608,1759734639,CA
-1759734640,1759734735,US
-1759734736,1759734751,CA
-1759734752,1759734783,US
-1759734784,1759735967,CA
+1759734368,1759734623,US
+1759734624,1759734639,CA
+1759734640,1759734783,US
+1759734784,1759735935,CA
+1759735936,1759735951,US
+1759735952,1759735967,CA
1759735968,1759736015,US
1759736016,1759736031,CA
1759736032,1759736063,US
1759736064,1759736383,CA
1759736384,1759736447,US
-1759736448,1759736575,CA
+1759736448,1759736479,CA
+1759736480,1759736511,US
+1759736512,1759736575,CA
1759736576,1759737007,US
1759737008,1759737015,CA
-1759737016,1759737071,US
-1759737072,1759737087,CA
-1759737088,1759737343,US
+1759737016,1759737343,US
1759737344,1759737407,CA
1759737408,1759737423,US
1759737424,1759737431,CA
1759737432,1759737535,US
1759737536,1759738879,CA
-1759738880,1759739023,US
-1759739024,1759739055,CA
+1759738880,1759739039,US
+1759739040,1759739055,CA
1759739056,1759739103,US
1759739104,1759739455,CA
1759739456,1759739519,US
@@ -53840,14 +61759,21 @@
1759739584,1759739999,CA
1759740000,1759740015,US
1759740016,1759740023,CA
-1759740024,1759740031,US
-1759740032,1759740287,CA
+1759740024,1759740063,US
+1759740064,1759740287,CA
1759740288,1759740351,US
-1759740352,1759743999,CA
+1759740352,1759741183,CA
+1759741184,1759741439,US
+1759741440,1759743999,CA
1759744000,1759744255,US
-1759744256,1759746047,CA
+1759744256,1759744767,CA
+1759744768,1759745023,US
+1759745024,1759745279,CA
+1759745280,1759745535,US
+1759745536,1759746047,CA
1759746048,1759746303,US
-1759746304,1759747135,CA
+1759746304,1759746559,CN
+1759746560,1759747135,CA
1759747136,1759747151,US
1759747152,1759747159,CA
1759747160,1759747263,US
@@ -53872,13 +61798,20 @@
1759748432,1759748439,CA
1759748440,1759748479,US
1759748480,1759748607,CA
-1759748608,1759748647,US
+1759748608,1759748639,US
+1759748640,1759748647,CA
1759748648,1759748655,SE
-1759748656,1759748863,US
+1759748656,1759748671,US
+1759748672,1759748687,CA
+1759748688,1759748719,US
+1759748720,1759748735,CA
+1759748736,1759748863,US
1759748864,1759749119,CA
1759749120,1759749631,US
-1759749632,1759749903,CA
-1759749904,1759749919,US
+1759749632,1759749759,CA
+1759749760,1759749791,US
+1759749792,1759749887,CA
+1759749888,1759749919,US
1759749920,1759749935,CA
1759749936,1759749975,US
1759749976,1759749983,CA
@@ -53894,9 +61827,13 @@
1759750416,1759750431,CA
1759750432,1759750463,US
1759750464,1759750479,CA
-1759750480,1759750495,US
-1759750496,1759750511,CA
-1759750512,1759751167,US
+1759750480,1759750655,US
+1759750656,1759750719,CA
+1759750720,1759750799,US
+1759750800,1759750807,CA
+1759750808,1759750847,US
+1759750848,1759750911,CA
+1759750912,1759751167,US
1759751168,1759751823,CA
1759751824,1759751839,US
1759751840,1759752191,CA
@@ -53906,43 +61843,35 @@
1759752640,1759753023,CA
1759753024,1759753047,US
1759753048,1759753055,CA
-1759753056,1759753087,US
-1759753088,1759753103,CA
-1759753104,1759753135,US
+1759753056,1759753135,US
1759753136,1759753151,CA
1759753152,1759753215,US
1759753216,1759754239,CA
1759754240,1759754495,US
-1759754496,1759754639,CA
-1759754640,1759754719,US
+1759754496,1759754623,CA
+1759754624,1759754719,US
1759754720,1759754735,CA
1759754736,1759754751,US
1759754752,1759754879,CA
1759754880,1759755007,US
-1759755008,1759755151,CA
-1759755152,1759755167,US
-1759755168,1759755199,CA
-1759755200,1759755263,US
-1759755264,1759755663,CA
-1759755664,1759755775,US
-1759755776,1759755903,CA
+1759755008,1759755135,CA
+1759755136,1759755263,US
+1759755264,1759755519,CA
+1759755520,1759755647,CN
+1759755648,1759755775,US
+1759755776,1759755903,CN
1759755904,1759755935,US
1759755936,1759755943,CA
-1759755944,1759755967,US
-1759755968,1759755983,CA
-1759755984,1759755999,US
-1759756000,1759756159,CA
+1759755944,1759756031,US
+1759756032,1759756159,CN
1759756160,1759756239,US
1759756240,1759756247,CA
1759756248,1759764479,US
-1759764480,1759768575,CA
-1759768576,1759768831,US
-1759768832,1759772671,CA
+1759764480,1759772671,CA
1759772672,1760034815,US
1760038912,1760047103,US
1760047104,1760051199,CA
-1760051200,1760083967,US
-1760083968,1760086015,SE
+1760051200,1760086015,US
1760086016,1760088063,GB
1760088064,1760116735,US
1760116736,1760133119,CA
@@ -53962,7 +61891,11 @@
1760386304,1760386559,GB
1760386560,1760386815,US
1760386816,1760387071,HK
-1760387072,1760440831,US
+1760387072,1760437247,US
+1760437248,1760437503,PL
+1760437504,1760439551,US
+1760439552,1760439807,MX
+1760439808,1760440831,US
1760440832,1760441343,AU
1760441344,1760443391,US
1760443392,1760444415,DE
@@ -53978,7 +61911,9 @@
1760473600,1760475135,US
1760475136,1760476159,GB
1760476160,1760477183,FR
-1760477184,1760657407,US
+1760477184,1760487423,US
+1760487424,1760487935,PR
+1760487936,1760657407,US
1760657408,1760673791,CA
1760673792,1760690175,US
1760690176,1760755711,CA
@@ -54000,13 +61935,16 @@
1760819200,1760819455,RO
1760819456,1760819711,AM
1760819712,1760819967,MA
-1760819968,1760820479,US
-1760820480,1760820735,CA
-1760820736,1760822271,US
+1760819968,1760820223,US
+1760820224,1760820479,DE
+1760820480,1760820991,CA
+1760820992,1760822271,US
1760823296,1760824319,PT
1760824320,1760837631,US
1760837632,1760839679,CA
-1760839680,1760841727,LU
+1760839680,1760840735,LU
+1760840736,1760840736,UM
+1760840737,1760841727,LU
1760841728,1760867327,US
1760867328,1760868351,PR
1760868352,1760869375,US
@@ -54035,7 +61973,11 @@
1760910336,1760911359,GD
1760911360,1760915455,US
1760915456,1760917503,MQ
-1760917504,1760923647,US
+1760917504,1760918679,US
+1760918680,1760918687,NL
+1760918688,1760918703,US
+1760918704,1760918707,NL
+1760918708,1760923647,US
1760923648,1760924671,CA
1760924672,1760925695,US
1760925696,1760929791,CA
@@ -54050,9 +61992,11 @@
1761019648,1761019903,VE
1761019904,1761023231,US
1761023232,1761023487,JP
-1761023488,1761035263,US
-1761035264,1761035519,CA
-1761035520,1761038335,US
+1761023488,1761034239,US
+1761034240,1761035519,CA
+1761035520,1761035775,US
+1761035776,1761036031,PR
+1761036032,1761038335,US
1761038336,1761039871,CA
1761039872,1761043711,US
1761043712,1761043967,PH
@@ -54110,25 +62054,24 @@
1761241344,1761241599,ID
1761241600,1761241633,US
1761241634,1761241634,HK
-1761241635,1761255423,US
+1761241635,1761242111,US
+1761242112,1761242367,AU
+1761242368,1761255423,US
1761255424,1761255679,IN
1761255680,1761255935,NZ
1761255936,1761256191,DK
1761256192,1761256447,HR
1761256448,1761256703,LI
1761256704,1761256959,ME
-1761256960,1761257215,AM
-1761257216,1761257471,GE
+1761256960,1761257215,RS
+1761257216,1761257471,US
1761257472,1761257727,MC
1761257728,1761257983,BA
-1761257984,1761258239,RS
+1761257984,1761258239,GB
1761258240,1761258495,SI
1761258496,1761258751,IT
1761258752,1761259007,LU
-1761259008,1761259031,PT
-1761259032,1761259032,US
-1761259033,1761259263,PT
-1761259264,1761259519,US
+1761259008,1761259519,US
1761259520,1761259775,KH
1761259776,1761260031,AZ
1761260032,1761260287,ET
@@ -54138,11 +62081,12 @@
1761261056,1761261311,JM
1761261312,1761261567,PR
1761261568,1761261823,VG
-1761261824,1761262079,SG
-1761262080,1761262335,US
+1761261824,1761262335,GB
1761262336,1761262591,PK
1761262592,1761262847,SE
-1761262848,1761273087,US
+1761262848,1761263103,US
+1761263104,1761263359,GB
+1761263360,1761273087,US
1761273088,1761273343,PH
1761273344,1761273599,US
1761273600,1761273855,AU
@@ -54156,9 +62100,13 @@
1761302528,1761302783,CA
1761302784,1761304575,US
1761304576,1761308671,CA
-1761308672,1761328639,US
+1761308672,1761316863,US
+1761316864,1761320959,JP
+1761320960,1761328639,US
1761328640,1761328895,AU
-1761328896,1761341183,US
+1761328896,1761338111,US
+1761338112,1761338623,HK
+1761338624,1761341183,US
1761341184,1761341439,HK
1761341440,1761478655,US
1761478656,1761479679,CA
@@ -54170,7 +62118,7 @@
1761499136,1761501183,CA
1761501184,1761501695,VG
1761501696,1761505279,US
-1761505280,1761507327,HK
+1761505280,1761507327,DE
1761507328,1761507615,US
1761507616,1761507711,GB
1761507712,1761508351,US
@@ -54255,17 +62203,13 @@
1763319808,1763327999,IN
1763328000,1763336191,NL
1763336192,1763344383,SE
-1763344384,1763344895,UG
-1763344896,1763352575,DE
+1763344384,1763352575,DE
1763352576,1763385343,MU
1763385344,1763393535,AE
1763393536,1763401727,GB
-1763401728,1763402239,MU
+1763401728,1763402239,ZA
1763402240,1763402751,KE
-1763402752,1763405823,MU
-1763405824,1763407871,ZA
-1763407872,1763409919,MU
-1763409920,1763429887,ZA
+1763402752,1763429887,ZA
1763429888,1763438591,KE
1763438592,1763442687,UG
1763442688,1763446783,RW
@@ -54285,8 +62229,7 @@
1763606528,1763610623,SE
1763610624,1763614719,DE
1763614720,1763631103,MU
-1763631104,1763635199,AE
-1763635200,1763639295,ZA
+1763631104,1763639295,ZA
1763639296,1763657727,MU
1763657728,1763659775,ZA
1763659776,1763661823,MU
@@ -54317,7 +62260,9 @@
1776943104,1777008639,MW
1777008640,1777041407,CI
1777041408,1777045503,DZ
-1777045504,1777049599,MU
+1777045504,1777047263,MU
+1777047264,1777047295,GB
+1777047296,1777049599,MU
1777049600,1777053695,ZA
1777053696,1777057791,BF
1777057792,1777061887,NG
@@ -54407,8 +62352,8 @@
1805016320,1805016575,RU
1805016576,1805016831,NZ
1805016832,1805017087,TR
-1805017088,1805018111,CN
-1805018112,1805021183,US
+1805017088,1805017599,CN
+1805017600,1805021183,US
1805021184,1805021439,SG
1805021440,1805021695,KR
1805021696,1805021951,TW
@@ -54418,7 +62363,13 @@
1805022720,1805024767,US
1805024768,1805025279,KR
1805025280,1805033983,US
-1805033984,1805038591,TR
+1805033984,1805035007,TR
+1805035008,1805035519,US
+1805035520,1805036031,TR
+1805036032,1805037055,US
+1805037056,1805037311,TR
+1805037312,1805037567,US
+1805037568,1805038591,TR
1805038592,1805046271,US
1805046272,1805046783,GB
1805046784,1805048831,US
@@ -54436,7 +62387,9 @@
1805156512,1805156519,US
1805156520,1805156599,CA
1805156600,1805156607,US
-1805156608,1805156719,CA
+1805156608,1805156639,CA
+1805156640,1805156671,US
+1805156672,1805156719,CA
1805156720,1805156815,US
1805156816,1805156823,CA
1805156824,1805156863,US
@@ -54499,33 +62452,27 @@
1805160416,1805160423,CA
1805160424,1805160439,US
1805160440,1805160447,CA
-1805160448,1805160703,US
-1805160704,1805160719,CA
-1805160720,1805160735,US
+1805160448,1805160735,US
1805160736,1805160767,CA
1805160768,1805160783,US
1805160784,1805160799,CA
1805160800,1805160895,US
1805160896,1805160911,CA
1805160912,1805160943,US
-1805160944,1805162255,CA
-1805162256,1805162495,US
-1805162496,1805164111,CA
+1805160944,1805162239,CA
+1805162240,1805162495,US
+1805162496,1805164071,CA
+1805164072,1805164079,US
+1805164080,1805164111,CA
1805164112,1805164127,US
1805164128,1805164159,CA
-1805164160,1805164223,US
-1805164224,1805164239,CA
-1805164240,1805164287,US
+1805164160,1805164287,US
1805164288,1805164351,CA
-1805164352,1805164367,US
-1805164368,1805164383,CA
-1805164384,1805164799,US
+1805164352,1805164799,US
1805164800,1805164839,CA
1805164840,1805164847,FI
1805164848,1805164863,CA
-1805164864,1805164879,US
-1805164880,1805164895,CA
-1805164896,1805164975,US
+1805164864,1805164975,US
1805164976,1805164991,CA
1805164992,1805165055,US
1805165056,1805165311,CA
@@ -54533,40 +62480,34 @@
1805165440,1805165455,CA
1805165456,1805165823,US
1805165824,1805166079,CA
-1805166080,1805166335,US
-1805166336,1805166687,CA
+1805166080,1805166351,US
+1805166352,1805166687,CA
1805166688,1805166703,US
1805166704,1805166751,CA
1805166752,1805166783,US
1805166784,1805167103,CA
1805167104,1805167359,FR
-1805167360,1805167439,CA
-1805167440,1805167455,US
-1805167456,1805167519,CA
-1805167520,1805167583,US
-1805167584,1805167823,CA
-1805167824,1805167839,US
+1805167360,1805167423,CA
+1805167424,1805167455,US
+1805167456,1805167487,CA
+1805167488,1805167583,US
+1805167584,1805167743,CA
+1805167744,1805167839,US
1805167840,1805167887,CA
-1805167888,1805167903,US
-1805167904,1805167935,CA
-1805167936,1805168223,US
-1805168224,1805168255,CA
-1805168256,1805168671,US
-1805168672,1805168703,CA
-1805168704,1805168751,US
-1805168752,1805168783,CA
+1805167888,1805168767,US
+1805168768,1805168783,CA
1805168784,1805168847,US
1805168848,1805168855,CA
1805168856,1805168863,SE
-1805168864,1805169183,CA
-1805169184,1805169199,US
+1805168864,1805169151,CA
+1805169152,1805169199,US
1805169200,1805169215,CA
1805169216,1805169663,US
1805169664,1805169919,CA
-1805169920,1805170047,CN
-1805170048,1805170063,CA
-1805170064,1805170079,US
-1805170080,1805170303,CA
+1805169920,1805169935,US
+1805169936,1805170047,CA
+1805170048,1805170111,US
+1805170112,1805170303,CA
1805170304,1805170311,US
1805170312,1805170403,CA
1805170404,1805170407,US
@@ -54591,31 +62532,25 @@
1805171664,1805171687,CA
1805171688,1805171703,US
1805171704,1805171711,CA
-1805171712,1805171759,US
-1805171760,1805171839,CA
-1805171840,1805171887,US
-1805171888,1805171903,CA
-1805171904,1805171951,US
+1805171712,1805171775,US
+1805171776,1805171839,CA
+1805171840,1805171951,US
1805171952,1805171967,CA
1805171968,1805172047,US
-1805172048,1805172095,CA
-1805172096,1805172159,US
-1805172160,1805172175,CA
-1805172176,1805172191,US
-1805172192,1805173007,CA
-1805173008,1805173039,US
+1805172048,1805172063,CA
+1805172064,1805172191,US
+1805172192,1805172991,CA
+1805172992,1805173039,US
1805173040,1805173055,CA
1805173056,1805173079,US
1805173080,1805173087,CA
1805173088,1805173247,US
-1805173248,1805173567,CA
-1805173568,1805173599,US
-1805173600,1805173615,CA
-1805173616,1805173759,US
+1805173248,1805173503,CA
+1805173504,1805173535,US
+1805173536,1805173567,CA
+1805173568,1805173759,US
1805173760,1805173791,CA
-1805173792,1805174271,US
-1805174272,1805174287,CA
-1805174288,1805174303,US
+1805173792,1805174303,US
1805174304,1805174335,CA
1805174336,1805174527,US
1805174528,1805174655,CN
@@ -54623,8 +62558,8 @@
1805174784,1805174815,US
1805174816,1805174823,CA
1805174824,1805174831,US
-1805174832,1805174863,CA
-1805174864,1805174911,US
+1805174832,1805174847,CA
+1805174848,1805174911,US
1805174912,1805174943,CA
1805174944,1805175103,US
1805175104,1805175119,CA
@@ -54633,24 +62568,21 @@
1805175168,1805175807,US
1805175808,1805177343,CA
1805177344,1805177375,US
-1805177376,1805177423,CA
-1805177424,1805177439,US
-1805177440,1805177455,CA
-1805177456,1805177471,US
+1805177376,1805177407,CA
+1805177408,1805177471,US
1805177472,1805177599,CA
1805177600,1805177855,US
-1805177856,1805178111,CN
-1805178112,1805181951,CA
+1805177856,1805178367,CA
+1805178368,1805178623,US
+1805178624,1805179135,CA
+1805179136,1805179391,US
+1805179392,1805181951,CA
1805181952,1805182207,US
-1805182208,1805182463,CN
+1805182208,1805182463,GB
1805182464,1805182719,CA
-1805182720,1805183039,US
-1805183040,1805183071,CA
-1805183072,1805183135,US
-1805183136,1805183167,CA
-1805183168,1805183199,US
-1805183200,1805183231,CA
-1805183232,1805183743,US
+1805182720,1805183135,US
+1805183136,1805183151,CA
+1805183152,1805183743,US
1805183744,1805184063,CA
1805184064,1805184127,US
1805184128,1805184159,CA
@@ -54658,21 +62590,15 @@
1805184192,1805184511,CA
1805184512,1805184527,US
1805184528,1805184535,CA
-1805184536,1805184543,US
-1805184544,1805184575,CA
-1805184576,1805184607,US
+1805184536,1805184607,US
1805184608,1805184639,CA
1805184640,1805184687,US
1805184688,1805184703,CA
1805184704,1805184735,US
1805184736,1805184783,CA
-1805184784,1805184799,US
-1805184800,1805184831,CA
-1805184832,1805184863,US
-1805184864,1805184895,CA
-1805184896,1805184927,US
-1805184928,1805184943,CA
-1805184944,1805185023,US
+1805184784,1805184863,US
+1805184864,1805184879,CA
+1805184880,1805185023,US
1805185024,1805185071,CA
1805185072,1805185103,US
1805185104,1805185119,CA
@@ -54680,48 +62606,30 @@
1805185152,1805185159,CA
1805185160,1805185167,FI
1805185168,1805185215,CA
-1805185216,1805185231,US
-1805185232,1805185247,CA
-1805185248,1805185279,US
-1805185280,1805185343,CA
-1805185344,1805185359,US
-1805185360,1805185375,CA
-1805185376,1805185407,US
+1805185216,1805185279,US
+1805185280,1805185311,CA
+1805185312,1805185327,US
+1805185328,1805185343,CA
+1805185344,1805185407,US
1805185408,1805185423,CA
-1805185424,1805185439,US
-1805185440,1805185471,CA
-1805185472,1805185519,US
-1805185520,1805185535,CA
-1805185536,1805185599,US
-1805185600,1805185615,CA
-1805185616,1805185647,US
+1805185424,1805185647,US
1805185648,1805185655,CA
1805185656,1805185663,US
1805185664,1805185679,CA
-1805185680,1805185759,US
-1805185760,1805185775,CA
-1805185776,1805185919,US
-1805185920,1805185959,CA
+1805185680,1805185919,US
+1805185920,1805185935,CA
+1805185936,1805185951,US
+1805185952,1805185959,CA
1805185960,1805185967,NO
-1805185968,1805185999,US
-1805186000,1805186063,CA
-1805186064,1805186095,US
+1805185968,1805186095,US
1805186096,1805186127,CA
1805186128,1805186143,US
1805186144,1805186239,CA
-1805186240,1805186287,US
-1805186288,1805186319,CA
-1805186320,1805186335,US
+1805186240,1805186335,US
1805186336,1805186351,CA
-1805186352,1805186495,US
-1805186496,1805186511,CA
-1805186512,1805186551,US
+1805186352,1805186551,US
1805186552,1805186575,CA
-1805186576,1805186687,US
-1805186688,1805186719,CA
-1805186720,1805186783,US
-1805186784,1805186799,CA
-1805186800,1805186879,US
+1805186576,1805186879,US
1805186880,1805186911,CA
1805186912,1805186943,US
1805186944,1805186959,CA
@@ -54729,21 +62637,21 @@
1805186976,1805186991,CA
1805186992,1805186999,US
1805187000,1805187023,CA
-1805187024,1805187071,US
-1805187072,1805187111,CA
+1805187024,1805187103,US
+1805187104,1805187111,CA
1805187112,1805187119,NO
1805187120,1805187127,CA
1805187128,1805187327,US
1805187328,1805187391,CA
1805187392,1805187455,US
-1805187456,1805187503,CA
-1805187504,1805187551,US
+1805187456,1805187487,CA
+1805187488,1805187551,US
1805187552,1805187567,CA
1805187568,1805187871,US
1805187872,1805187887,CA
1805187888,1805188175,US
-1805188176,1805188255,CA
-1805188256,1805188287,US
+1805188176,1805188223,CA
+1805188224,1805188287,US
1805188288,1805188295,CA
1805188296,1805188367,US
1805188368,1805188375,CA
@@ -54751,23 +62659,17 @@
1805188384,1805188447,CA
1805188448,1805188479,US
1805188480,1805188511,CA
-1805188512,1805188591,US
-1805188592,1805188647,CA
-1805188648,1805188671,US
-1805188672,1805188735,CA
+1805188512,1805188607,US
+1805188608,1805188647,CA
+1805188648,1805188703,US
+1805188704,1805188735,CA
1805188736,1805188751,US
1805188752,1805188767,CA
1805188768,1805188863,US
1805188864,1805188879,CA
1805188880,1805188911,US
1805188912,1805188927,CA
-1805188928,1805189039,US
-1805189040,1805189055,CA
-1805189056,1805189071,US
-1805189072,1805189087,CA
-1805189088,1805189103,US
-1805189104,1805189119,CA
-1805189120,1805190399,US
+1805188928,1805190399,US
1805190400,1805190655,ES
1805190656,1805190911,DE
1805190912,1805194239,US
@@ -54818,19 +62720,21 @@
1805283328,1805283583,GB
1805283584,1805284863,US
1805284864,1805285119,ES
-1805285120,1805321727,US
+1805285120,1805321215,US
+1805321216,1805321471,DE
+1805321472,1805321727,US
1805321728,1805321983,VN
1805321984,1805322751,US
1805322752,1805323007,RU
1805323008,1805323263,JP
-1805323264,1805324287,US
+1805323264,1805324031,US
+1805324032,1805324287,JP
1805324288,1805324543,DE
1805324544,1805325055,US
1805325056,1805325311,ES
1805325312,1805325567,AE
1805325568,1805325823,ID
-1805325824,1805326079,FR
-1805326080,1805326335,US
+1805325824,1805326335,US
1805326336,1805326591,SG
1805326592,1805326847,US
1805326848,1805327103,MY
@@ -54844,16 +62748,17 @@
1805328896,1805329663,US
1805329664,1805329919,SG
1805329920,1805330431,TH
-1805330432,1805331199,US
+1805330432,1805330943,IN
+1805330944,1805331199,TH
1805331200,1805331455,KR
1805331456,1805331711,US
1805331712,1805331967,KR
-1805331968,1805332479,US
-1805332480,1805332735,DE
+1805331968,1805332479,IN
+1805332480,1805332735,US
1805332736,1805332991,FR
1805332992,1805333247,TH
-1805333248,1805333503,ES
-1805333504,1805334271,US
+1805333248,1805334015,RU
+1805334016,1805334271,US
1805334272,1805334783,SG
1805334784,1805335039,TW
1805335040,1805335295,MY
@@ -54863,9 +62768,7 @@
1805337288,1805337295,IT
1805337296,1805373439,US
1805373440,1805375487,HK
-1805375488,1805381631,US
-1805381632,1805382655,JP
-1805382656,1805573119,US
+1805375488,1805573119,US
1805573120,1805574143,NL
1805574144,1805582335,US
1805582336,1805647871,CA
@@ -54882,9 +62785,13 @@
1805753088,1805754175,US
1805754176,1805754367,CA
1805754368,1805756415,US
-1805756672,1806135130,US
+1805756672,1806132170,US
+1806132171,1806132171,PH
+1806132172,1806135130,US
1806135131,1806135132,IN
-1806135133,1806168831,US
+1806135133,1806135295,US
+1806135296,1806135615,GB
+1806135616,1806168831,US
1806168832,1806169087,CA
1806169088,1806172159,US
1806172160,1806172415,DE
@@ -54958,7 +62865,9 @@
1807692800,1807693311,JP
1807693312,1807693823,US
1807693824,1807694079,AU
-1807694080,1807694847,US
+1807694080,1807694179,US
+1807694180,1807694180,AU
+1807694181,1807694847,US
1807694848,1807695359,JP
1807695360,1807695871,FR
1807695872,1807706793,US
@@ -54967,7 +62876,9 @@
1807707312,1807707312,JP
1807707313,1807732735,US
1807732736,1807736831,GP
-1807736832,1815822335,US
+1807736832,1811366911,US
+1811366912,1811367167,CA
+1811367168,1815822335,US
1815822336,1815826431,CA
1815826432,1815871487,US
1815871488,1815879679,CA
@@ -55049,7 +62960,9 @@
1822445568,1822451199,CA
1822451200,1822451455,US
1822451456,1822451711,BB
-1822451712,1822486527,US
+1822451712,1822457855,US
+1822457856,1822461951,JP
+1822461952,1822486527,US
1822486528,1822490623,CA
1822490624,1822498815,US
1822498816,1822502911,CA
@@ -55077,10 +62990,24 @@
1822621184,1822621439,US
1822621440,1822621695,AU
1822621696,1822654463,US
-1822654464,1822662143,CA
+1822654464,1822660071,CA
+1822660072,1822660079,US
+1822660080,1822662143,CA
1822662144,1822662399,US
-1822662400,1822670847,CA
-1822670848,1822877695,US
+1822662400,1822663127,CA
+1822663128,1822663135,IN
+1822663136,1822663951,CA
+1822663952,1822663959,FI
+1822663960,1822665703,CA
+1822665704,1822665711,IL
+1822665712,1822668055,CA
+1822668056,1822668063,IN
+1822668064,1822668719,CA
+1822668720,1822668727,IN
+1822668728,1822670847,CA
+1822670848,1822828119,US
+1822828120,1822828127,AU
+1822828128,1822877695,US
1822877696,1822881791,HK
1822881792,1822882815,ID
1822882816,1822949375,US
@@ -55096,7 +63023,8 @@
1823179200,1823179263,DE
1823179264,1823180287,US
1823180288,1823180543,AU
-1823180544,1823181055,US
+1823180544,1823180799,US
+1823180800,1823181055,BR
1823181056,1823181311,DK
1823181312,1823181567,BR
1823181568,1823181823,FR
@@ -55106,15 +63034,13 @@
1823182592,1823182847,HK
1823182848,1823183103,IN
1823183104,1823183359,ZA
-1823183360,1823186687,US
-1823186688,1823186943,IN
+1823183360,1823184895,US
+1823184896,1823186943,IN
1823186944,1823211519,US
1823211520,1823342591,CA
1823342592,1823346687,US
1823346688,1823350783,CA
-1823350784,1823356159,US
-1823356160,1823356415,NL
-1823356416,1823358799,US
+1823350784,1823358799,US
1823358800,1823358807,GB
1823358808,1823361791,US
1823361792,1823362303,CA
@@ -55126,60 +63052,60 @@
1823422464,1823423487,LU
1823423488,1823428607,US
1823428608,1823432703,CA
-1823432704,1823465471,US
+1823432704,1823440895,US
+1823440896,1823444991,CA
+1823444992,1823465471,US
1823465472,1823469567,CA
-1823469568,1823735807,US
+1823469568,1823581183,US
+1823581184,1823581311,IN
+1823581312,1823735807,US
1823735808,1823866879,CA
1823866880,1824130623,US
1824130624,1824130655,CN
1824130656,1828716543,US
-1828716544,1830813695,FR
+1828716544,1829255167,FR
+1829255168,1829256191,RE
+1829256192,1830813695,FR
1830813696,1831337983,NL
-1831337984,1831862271,DE
+1831337984,1831338284,DE
+1831338285,1831338285,CH
+1831338286,1831862271,DE
1831862272,1832124415,PT
1832124416,1832386559,IT
-1832386560,1832392191,DK
-1832392192,1832392703,SE
-1832392704,1832443391,DK
-1832443392,1832443903,SE
-1832443904,1832453119,DK
-1832453120,1832453631,SE
-1832453632,1832461567,DK
-1832461568,1832461823,SE
-1832461824,1832473599,DK
-1832473600,1832473855,SE
-1832473856,1832475391,DK
-1832475392,1832475647,SE
-1832475648,1832517631,DK
-1832517632,1832583167,SE
-1832583168,1832607743,DK
-1832607744,1832615935,SE
-1832615936,1832648703,DK
+1832386560,1832402175,DK
+1832402176,1832402431,SE
+1832402432,1832414591,DK
+1832414592,1832414719,SE
+1832414720,1832588543,DK
+1832588544,1832588799,SE
+1832588800,1832626431,DK
+1832626432,1832626559,SE
+1832626560,1832636415,DK
+1832636416,1832636927,SE
+1832636928,1832648703,DK
1832648704,1832681471,HR
1832681472,1832714239,RU
1832714240,1832747007,HU
1832747008,1832779775,RU
-1832779776,1832780799,FR
-1832780800,1832783871,MQ
-1832783872,1832785919,GP
-1832785920,1832787967,GF
-1832787968,1832795391,FR
-1832795392,1832795647,GF
-1832795648,1832797439,FR
+1832779776,1832780287,MQ
+1832780288,1832780479,FR
+1832780480,1832783871,MQ
+1832783872,1832786943,GP
+1832786944,1832787711,GF
+1832787712,1832796159,GP
+1832796160,1832797439,FR
1832797440,1832797471,MQ
1832797472,1832797503,GP
-1832797504,1832797567,GF
-1832797568,1832797695,MQ
+1832797504,1832797535,GF
+1832797536,1832797567,MQ
+1832797568,1832797695,GP
1832797696,1832798207,FR
1832798208,1832799231,GP
1832799232,1832800767,FR
-1832800768,1832801023,MQ
-1832801024,1832801279,FR
-1832801280,1832802303,MQ
-1832802304,1832804351,FR
-1832804352,1832806399,MQ
-1832806400,1832808447,GP
-1832808448,1832812543,FR
+1832800768,1832803327,MQ
+1832803328,1832803583,FR
+1832803584,1832806399,MQ
+1832806400,1832812543,GP
1832812544,1832845311,RU
1832845312,1832878079,BH
1832878080,1832910847,RU
@@ -55203,15 +63129,12 @@
1833207808,1833209855,RU
1833209856,1833211903,GR
1833211904,1833213951,IT
-1833213952,1833215999,BE
+1833213952,1833214207,US
+1833214208,1833215999,BE
1833216000,1833218047,RU
1833218048,1833220095,NO
1833220096,1833222143,RU
-1833222144,1833223679,GB
-1833223680,1833223743,GG
-1833223744,1833223807,GB
-1833223808,1833223935,GG
-1833223936,1833224191,GB
+1833222144,1833224191,GB
1833224192,1833228287,RU
1833228288,1833232383,DE
1833232384,1833234431,TJ
@@ -55223,7 +63146,7 @@
1833246720,1833248767,FI
1833248768,1833250815,MK
1833250816,1833252863,ES
-1833252864,1833254911,CZ
+1833252864,1833254911,GB
1833254912,1833256959,DE
1833256960,1833259007,RU
1833259008,1833261055,GB
@@ -55250,18 +63173,18 @@
1833308160,1833310207,FR
1833310208,1833312255,RU
1833312256,1833314303,ES
-1833314304,1833315327,IM
-1833315328,1833316351,GB
+1833314304,1833315963,IM
+1833315964,1833315967,GB
+1833315968,1833316351,IM
1833316352,1833318399,DK
1833318400,1833320447,GB
-1833320448,1833320959,AE
-1833320960,1833321282,IQ
+1833320448,1833321282,IQ
1833321283,1833321283,AE
-1833321284,1833321471,IQ
-1833321472,1833322495,AE
+1833321284,1833322495,IQ
1833322496,1833324543,IT
1833324544,1833326591,NO
-1833326592,1833328639,US
+1833326592,1833327103,GB
+1833327104,1833328639,US
1833328640,1833330687,AT
1833330688,1833332735,UA
1833332736,1833334783,CH
@@ -55275,12 +63198,22 @@
1833351168,1833353215,RU
1833353216,1833355263,DE
1833355264,1833357311,IT
-1833357312,1833359359,IE
+1833357312,1833357587,GB
+1833357588,1833357631,IE
+1833357632,1833357823,GB
+1833357824,1833357903,IE
+1833357904,1833359359,GB
1833359360,1833361407,DE
1833361408,1833363455,GB
1833365504,1833367551,IT
1833367552,1833369599,RU
-1833369600,1833371647,NL
+1833369600,1833370111,NL
+1833370112,1833370367,BG
+1833370368,1833370623,SE
+1833370624,1833370879,CN
+1833370880,1833371135,US
+1833371136,1833371391,RU
+1833371392,1833371647,BR
1833371648,1833373695,RU
1833373696,1833377791,DE
1833377792,1833379839,KZ
@@ -55295,7 +63228,7 @@
1833400320,1833402367,GB
1833402368,1833406463,FR
1833406464,1833408511,GB
-1833410560,1833412607,PT
+1833410560,1833412607,LU
1833412608,1833414655,GB
1833414656,1833416703,RU
1833416704,1833418751,NL
@@ -55348,11 +63281,7 @@
1833545728,1833549823,IT
1833549824,1833553919,RU
1833553920,1833558015,CZ
-1833558016,1833560867,BG
-1833560868,1833560868,US
-1833560869,1833561838,BG
-1833561839,1833561839,US
-1833561840,1833562111,BG
+1833558016,1833562111,US
1833562112,1833566207,PS
1833566208,1833570303,SE
1833574400,1833578495,YE
@@ -55370,9 +63299,7 @@
1833627648,1833631743,GB
1833631744,1833635839,CZ
1833635840,1833639935,DE
-1833639936,1833640959,AM
-1833640960,1833641215,RU
-1833641216,1833644031,AM
+1833639936,1833644031,AM
1833644032,1833648127,TJ
1833648128,1833652223,LB
1833652224,1833660415,DE
@@ -55392,22 +63319,28 @@
1834352640,1834483711,UA
1834483712,1834614783,BE
1834614784,1834745855,DE
-1834745856,1834786815,RS
+1834745856,1834758143,RS
+1834758144,1834760191,XK
+1834760192,1834786815,RS
1834786816,1834787327,XK
-1834787328,1834805247,RS
+1834787328,1834801151,RS
+1834801152,1834803199,XK
+1834803200,1834805247,RS
1834805248,1834806271,XK
-1834806272,1834876927,RS
+1834806272,1834816511,RS
+1834816512,1834817535,XK
+1834817536,1834829823,RS
+1834829824,1834831871,XK
+1834831872,1834876927,RS
1834876928,1834885119,RU
1834885120,1834893311,FR
1834893312,1834901503,RU
-1834901504,1834903551,RS
+1834901504,1834902527,XK
+1834902528,1834903551,RS
1834903552,1834904575,BA
-1834904576,1834905087,RS
-1834905088,1834905343,BG
-1834905344,1834909695,RS
+1834904576,1834909695,RS
1834909696,1834913791,GB
1834913792,1834917887,US
-1834917888,1834921983,UA
1834921984,1834930175,RU
1834934272,1834938367,RS
1834938368,1834944511,PL
@@ -55480,22 +63413,53 @@
1835876352,1835884543,NO
1835884544,1835892735,NL
1835892736,1835909119,GB
-1835909120,1835911167,RS
+1835909120,1835909631,RS
+1835909632,1835910655,US
+1835910656,1835911167,RS
1835911168,1835913215,DE
1835913216,1835917311,RU
-1835917312,1835925503,GB
+1835917312,1835917919,GB
+1835917920,1835917927,IT
+1835917928,1835918439,GB
+1835918440,1835918447,IT
+1835918448,1835918711,GB
+1835918712,1835918719,IT
+1835918720,1835918735,GB
+1835918736,1835918743,IT
+1835918744,1835919415,GB
+1835919416,1835919423,IT
+1835919424,1835921111,GB
+1835921112,1835921127,IT
+1835921128,1835922559,GB
+1835922560,1835922567,IT
+1835922568,1835922671,GB
+1835922672,1835922679,IT
+1835922680,1835923151,GB
+1835923152,1835923159,IT
+1835923160,1835923519,GB
+1835923520,1835923527,IT
+1835923528,1835923679,GB
+1835923680,1835923687,IT
+1835923688,1835923719,GB
+1835923720,1835923727,IT
+1835923728,1835924287,GB
+1835924288,1835924295,IT
+1835924296,1835925007,GB
+1835925008,1835925015,IT
+1835925016,1835925111,GB
+1835925112,1835925119,IT
+1835925120,1835925191,GB
+1835925192,1835925199,IT
+1835925200,1835925479,GB
+1835925480,1835925487,IT
+1835925488,1835925503,GB
1835925504,1835933695,LV
-1835933696,1835942655,RU
-1835942656,1835942911,UA
-1835942912,1835943167,RU
-1835943168,1835950079,UA
+1835933696,1835941887,RU
+1835941888,1835950079,UA
1835950080,1835958271,LB
1835958272,1835966463,HU
1835966464,1835974655,IR
-1835974656,1835974911,PL
-1835974912,1835976191,HU
-1835976192,1835976447,PL
-1835976448,1835982847,HU
+1835974656,1835982847,HU
1835982848,1835991039,CY
1835991040,1835999231,RU
1835999232,1836007423,IR
@@ -55654,10 +63618,11 @@
1836466552,1836466552,CN
1836466553,1836580863,IT
1836580864,1836597247,RU
-1836597248,1836601343,LU
-1836601344,1836605439,FR
+1836597248,1836598271,LU
+1836598272,1836605439,FR
1836605440,1836606463,GB
-1836606464,1836613631,LU
+1836606464,1836611583,LU
+1836611584,1836613631,DE
1836613632,1836630015,RU
1836630016,1836646399,BG
1836646400,1836679167,RS
@@ -55668,17 +63633,17 @@
1836689152,1836711935,BG
1836711936,1836728319,UA
1836728320,1836744703,RS
-1836744704,1836747263,FR
-1836747264,1836747775,RE
-1836747776,1836749823,FR
-1836749824,1836750335,RE
-1836750336,1836752895,FR
-1836752896,1836756223,RE
-1836756224,1836756479,FR
-1836756480,1836756991,RE
-1836756992,1836759039,FR
-1836759040,1836760575,RE
-1836760576,1836761087,FR
+1836744704,1836747775,RE
+1836747776,1836748543,FR
+1836748544,1836750847,RE
+1836750848,1836753111,FR
+1836753112,1836753112,RE
+1836753113,1836753151,FR
+1836753152,1836753407,RE
+1836753408,1836753919,FR
+1836753920,1836754175,RE
+1836754176,1836754431,FR
+1836754432,1836761087,RE
1836761088,1836777471,IR
1836777472,1836793855,SI
1836793856,1836794567,GB
@@ -55757,8 +63722,8 @@
1837502932,1837502932,CN
1837502933,1837503116,BE
1837503117,1837503117,CN
-1837503118,1837503125,BE
-1837503126,1837503127,CN
+1837503118,1837503126,BE
+1837503127,1837503127,CN
1837503128,1837503129,BE
1837503130,1837503131,CN
1837503132,1837503136,BE
@@ -55793,8 +63758,12 @@
1839450112,1839452159,NO
1839452160,1839454207,FI
1839454208,1839456255,RU
-1839456256,1839460095,RO
-1839460096,1839460351,DE
+1839456256,1839459327,RO
+1839459328,1839459599,DE
+1839459600,1839459615,RO
+1839459616,1839460031,DE
+1839460032,1839460039,RO
+1839460040,1839460351,DE
1839460352,1839462399,RU
1839462400,1839464447,FI
1839464448,1839497215,CZ
@@ -55841,7 +63810,9 @@
1840906240,1840971775,IL
1840971776,1841102847,RU
1841102848,1841168383,NO
-1841168384,1841233919,FR
+1841168384,1841233418,FR
+1841233419,1841233419,GB
+1841233420,1841233919,FR
1841233920,1841299455,RU
1841299456,1841430527,DE
1841430528,1841561599,RU
@@ -55857,7 +63828,7 @@
1841606656,1841610751,UA
1841610752,1841618943,RU
1841618944,1841627135,PL
-1841627136,1841629183,NO
+1841627136,1841629183,SE
1841629184,1841635327,RU
1841635328,1841639423,PL
1841639424,1841641471,RU
@@ -55891,7 +63862,8 @@
1841758208,1841766399,PL
1841766400,1841774591,HU
1841774592,1841782783,PL
-1841782784,1841799167,BG
+1841782784,1841790975,US
+1841790976,1841799167,BG
1841799168,1841807359,DE
1841807360,1841815551,NO
1841815552,1841823743,BG
@@ -55903,7 +63875,8 @@
1841864704,1841872895,YE
1841872896,1841878015,NL
1841878016,1841879039,AU
-1841879040,1841880063,NL
+1841879040,1841879807,NL
+1841879808,1841880063,GB
1841880064,1841881087,JP
1841881088,1841889279,UA
1841889280,1841897471,IR
@@ -55914,7 +63887,11 @@
1841926101,1841930239,NL
1841930240,1841938431,KG
1841938432,1841946623,RU
-1841946624,1841954815,UA
+1841946624,1841946658,US
+1841946659,1841946659,UA
+1841946660,1841948671,US
+1841948672,1841948927,UA
+1841948928,1841954815,US
1841954816,1841971199,RU
1841971200,1841979391,CZ
1841979392,1841982975,NL
@@ -55930,13 +63907,18 @@
1842017280,1842020351,GB
1842020352,1842028543,NO
1842028544,1842036735,CH
-1842036736,1842044927,FR
+1842036736,1842042879,FR
+1842042880,1842044927,LU
1842044928,1842053119,GB
1842053120,1842069503,IR
1842069504,1842077695,RU
-1842077696,1842079743,MQ
-1842079744,1842081791,GP
-1842081792,1842082815,MQ
+1842077696,1842077951,MQ
+1842077952,1842078207,FR
+1842078208,1842079743,MQ
+1842079744,1842080255,GP
+1842080256,1842080511,MQ
+1842080512,1842082047,GP
+1842082048,1842082815,MQ
1842082816,1842083839,GP
1842083840,1842084351,MQ
1842084352,1842084863,GP
@@ -56027,8 +64009,7 @@
1843625984,1843642367,ES
1843642368,1843658751,RU
1843658752,1843675135,GB
-1843675136,1843679231,RU
-1843679232,1843691519,ME
+1843675136,1843691519,ME
1843691520,1843707903,SE
1843707904,1843724287,TR
1843724288,1843732479,UA
@@ -56096,7 +64077,9 @@
1843957760,1843959807,CZ
1843959808,1843961855,GB
1843963904,1843965951,DE
-1843965952,1843967999,GB
+1843965952,1843967487,GB
+1843967488,1843967743,ZA
+1843967744,1843967999,GB
1843968000,1843970047,RU
1843970048,1843972095,FR
1843972096,1843974143,HU
@@ -56134,7 +64117,7 @@
1844062208,1844064255,CZ
1844064256,1844068351,IT
1844068352,1844070399,ES
-1844070400,1844072447,GB
+1844070400,1844072447,LU
1844072448,1844076543,ES
1844076544,1844078591,IE
1844078592,1844080639,DE
@@ -56168,43 +64151,56 @@
1844137984,1844140031,FR
1844140032,1844142079,RU
1844142080,1844144127,RS
-1844144128,1844144383,IT
-1844144384,1844144639,SM
-1844144640,1844144895,IT
-1844144896,1844145407,SM
-1844145408,1844145663,IT
-1844145664,1844146175,SM
+1844144128,1844145663,SM
+1844145664,1844145919,IT
+1844145920,1844146175,SM
1844146176,1844148223,NO
1844148224,1844150271,GB
1844150272,1844152319,ES
1844152320,1844154367,DE
-1844154368,1844156415,GB
+1844154368,1844155903,GB
+1844155904,1844156159,US
+1844156160,1844156415,GB
1844156416,1844158463,IT
1844158464,1844160511,RU
1844160512,1844162559,SE
1844162560,1844164607,CZ
1844164608,1844166655,RU
1844166656,1844168703,AZ
-1844168704,1844169503,CZ
-1844169504,1844169519,US
-1844169520,1844169567,CZ
+1844168704,1844169471,SE
+1844169472,1844169487,AF
+1844169488,1844169519,US
+1844169520,1844169567,SE
1844169568,1844169583,US
-1844169584,1844170751,CZ
+1844169584,1844169599,SE
+1844169600,1844169647,US
+1844169648,1844169655,AF
+1844169656,1844169679,US
+1844169680,1844169687,ZM
+1844169688,1844169695,IQ
+1844169696,1844169703,KZ
+1844169704,1844169707,ZA
+1844169708,1844169727,SE
+1844169728,1844170751,DE
1844170752,1844174847,RU
1844174848,1844178943,DE
1844178944,1844180991,EE
1844180992,1844183039,TR
-1844183040,1844191231,IT
+1844183040,1844185087,IT
+1844185088,1844186111,IE
+1844186112,1844191231,IT
1844191232,1844195327,AL
1844199424,1844203519,RU
1844203520,1844207615,NL
1844207616,1844211711,RU
1844211712,1844215807,SK
1844215808,1844219903,BE
-1844219904,1844223999,DE
+1844219904,1844221951,US
+1844221952,1844222975,DE
+1844222976,1844223999,US
1844224000,1844228095,GB
1844228096,1844232191,DK
-1844232192,1844236287,FR
+1844232192,1844236287,ES
1844236288,1844252671,RU
1844252672,1844256767,GB
1844256768,1844260863,BA
@@ -56217,7 +64213,7 @@
1844285440,1844289535,RU
1844289536,1844293631,IT
1844293632,1844297727,DE
-1844297728,1844301823,IQ
+1844297728,1844301823,JO
1844301824,1844305919,NL
1844305920,1844310015,RU
1844310016,1844318207,FR
@@ -56242,7 +64238,10 @@
1844396032,1844400127,CZ
1844400128,1844408319,GB
1844408320,1844412415,FR
-1844412416,1844416511,RU
+1844412416,1844414463,RU
+1844414464,1844414719,NL
+1844414720,1844414975,US
+1844414976,1844416511,RU
1844416512,1844420607,FR
1844420608,1844424703,DE
1844424704,1844428799,SI
@@ -56260,7 +64259,9 @@
1844772864,1844838399,RS
1844838400,1844903935,GB
1844903936,1844969471,NO
-1844969472,1845006335,RU
+1844969472,1844971775,RU
+1844971776,1844972031,GB
+1844972032,1845006335,RU
1845006336,1845010431,KZ
1845010432,1845022719,RU
1845022720,1845023743,KZ
@@ -56307,8 +64308,7 @@
1847732224,1847734271,CN
1847734272,1847735295,NZ
1847735296,1847736319,AU
-1847736320,1847738367,JP
-1847738368,1847754751,KR
+1847736320,1847754751,KR
1847754752,1847757823,TH
1847757824,1847758847,CN
1847758848,1847770111,TH
@@ -56421,8 +64421,8 @@
1855979520,1856241663,JP
1856241664,1856307199,TH
1856307200,1856315391,KR
-1856315392,1856316415,CN
-1856316416,1856323327,HK
+1856315392,1856319487,CN
+1856319488,1856323327,HK
1856323328,1856323583,CN
1856323584,1856339967,KR
1856339968,1856372735,JP
@@ -56452,7 +64452,9 @@
1860706304,1860714495,CN
1860714496,1860722687,ID
1860722688,1860726783,KR
-1860726784,1860728831,AU
+1860726784,1860727807,AU
+1860727808,1860728319,JP
+1860728320,1860728831,AU
1860728832,1860733951,JP
1860733952,1860734975,AU
1860734976,1860735999,NZ
@@ -56469,7 +64471,15 @@
1860759552,1860761599,AU
1860761600,1860763647,IN
1860763648,1860829183,JP
-1860829184,1860960255,IN
+1860829184,1860830207,SG
+1860830208,1860831231,US
+1860831232,1860845567,SG
+1860845568,1860849663,IN
+1860849664,1860894719,SG
+1860894720,1860951039,IN
+1860951040,1860952063,KH
+1860952064,1860956159,IN
+1860956160,1860960255,KH
1860960256,1861091327,CN
1861091328,1861222399,AU
1861222400,1866465279,CN
@@ -56498,7 +64508,9 @@
1866752000,1866756095,PK
1866756096,1866760191,ID
1866760192,1866792959,JP
-1866792960,1866858495,NZ
+1866792960,1866806271,NZ
+1866806272,1866806527,AU
+1866806528,1866858495,NZ
1866858496,1866989567,TW
1866989568,1867513855,CN
1867513856,1867775999,TW
@@ -56592,9 +64604,7 @@
1876557824,1876688895,KR
1876688896,1876754431,AU
1876754432,1876756479,BD
-1876756480,1876760575,SG
-1876760576,1876760831,JP
-1876760832,1876760863,SG
+1876756480,1876760863,SG
1876760864,1876761199,JP
1876761200,1876761343,SG
1876761344,1876761599,JP
@@ -56792,19 +64802,12 @@
1897729793,1897730047,US
1897730048,1897733888,AU
1897733889,1897734143,US
-1897734144,1897734849,CN
-1897734850,1897734850,HK
-1897734851,1897735295,CN
-1897735296,1897735423,HK
-1897735424,1897735999,CN
-1897736000,1897736031,HK
-1897736032,1897736223,CN
+1897734144,1897736223,HK
1897736224,1897736255,US
-1897736256,1897736351,CN
-1897736352,1897736415,HK
-1897736416,1897737984,CN
+1897736256,1897737984,HK
1897737985,1897742335,US
-1897742336,1897743359,SI
+1897742336,1897742847,SG
+1897742848,1897743359,SI
1897743360,1897743871,SG
1897743872,1897744575,SI
1897744576,1897744607,SG
@@ -56874,7 +64877,9 @@
1908408320,1908424703,AU
1908424704,1908441087,KR
1908441088,1908473855,JP
-1908473856,1908539391,IN
+1908473856,1908538367,IN
+1908538368,1908538879,AU
+1908538880,1908539391,IN
1908539392,1908670463,CN
1908670464,1908735999,TW
1908736000,1908740095,AU
@@ -56913,6 +64918,7 @@
1909743616,1909744639,AU
1909744640,1909745663,CN
1909745664,1909746687,JP
+1909746688,1909747711,BD
1909747712,1909751807,ID
1909751808,1909759999,JP
1909760000,1909762047,ID
@@ -56995,9 +65001,7 @@
1919909888,1919918079,AU
1919918080,1919926271,CN
1919926272,1919942655,KR
-1919942656,1919975935,CN
-1919975936,1919976191,JP
-1919976192,1919999999,CN
+1919942656,1919999999,CN
1920000000,1920002047,HK
1920002048,1920003071,CN
1920003072,1920008191,HK
@@ -57006,7 +65010,9 @@
1920058112,1920069631,CN
1920069632,1920071167,HK
1920071168,1920072703,CN
-1920072704,1920073727,HK
+1920072704,1920072959,HK
+1920072960,1920073215,JP
+1920073216,1920073727,HK
1920073728,1920466943,CN
1920466944,1920991231,ID
1920991232,1921056767,TH
@@ -57093,9 +65099,7 @@
1931431936,1931433983,JP
1931433984,1931436031,AU
1931436032,1931444223,KR
-1931444224,1931449343,TH
-1931449344,1931449855,RU
-1931449856,1931460607,TH
+1931444224,1931460607,TH
1931460608,1931468799,JP
1931468800,1931476991,SG
1931476992,1931739135,CN
@@ -57214,7 +65218,9 @@
1940914176,1941045247,JP
1941045248,1941045759,HK
1941045760,1941046783,JP
-1941046784,1941048319,HK
+1941046784,1941047743,HK
+1941047744,1941047807,AU
+1941047808,1941048319,HK
1941048320,1941049343,SG
1941049344,1941051391,AU
1941051392,1941052415,KH
@@ -57293,13 +65299,10 @@
1949440000,1949442047,ID
1949442048,1949446143,TW
1949446144,1949448191,JP
-1949448192,1949448447,IN
-1949448448,1949448703,HK
+1949448192,1949448703,IN
1949448704,1949448959,AU
1949448960,1949449215,IN
-1949449216,1949449395,SG
-1949449396,1949449396,IN
-1949449397,1949449471,SG
+1949449216,1949449471,SG
1949449472,1949449727,JP
1949449728,1949466623,IN
1949466624,1949499391,PH
@@ -57446,7 +65449,6 @@
1959102464,1959104511,JP
1959104512,1959106559,AU
1959106560,1959107583,IN
-1959107584,1959108607,NZ
1959108608,1959110655,CN
1959110656,1959112703,JP
1959112704,1959113215,HK
@@ -57551,8 +65553,8 @@
1960121344,1960122367,JP
1960122368,1960124415,ID
1960124416,1960125439,PK
-1960125440,1960126463,HK
-1960126464,1960128511,CN
+1960125440,1960127487,HK
+1960127488,1960128511,CN
1960128512,1960132607,ID
1960132608,1960181759,CN
1960181760,1960185855,TW
@@ -57599,14 +65601,15 @@
1964118016,1964120063,ID
1964120064,1964122111,JP
1964122112,1964122367,SG
-1964122368,1964122879,JP
+1964122368,1964122623,HK
+1964122624,1964122879,JP
1964122880,1964123135,HK
1964123136,1964123391,GB
1964123392,1964123647,US
1964123648,1964123903,CN
1964123904,1964126207,SG
-1964126208,1964126463,HK
-1964126464,1964129279,SG
+1964126208,1964126719,HK
+1964126720,1964129279,SG
1964129280,1964129535,HK
1964129536,1964130303,SG
1964130304,1964134399,HK
@@ -57643,7 +65646,9 @@
1964310528,1965948927,CN
1965948928,1966014463,JP
1966014464,1966079999,TH
-1966080000,1966342143,CN
+1966080000,1966276607,CN
+1966276608,1966309375,US
+1966309376,1966342143,CN
1966342144,1966407679,KR
1966407680,1966417919,JP
1966417920,1966418943,PK
@@ -57714,9 +65719,8 @@
1969795072,1969797119,NZ
1969797120,1969797631,SG
1969797632,1969798143,BD
-1969798144,1969798399,CN
-1969798400,1969798655,HK
-1969798656,1969798911,KR
+1969798144,1969798655,HK
+1969798656,1969798911,IN
1969798912,1969799167,HK
1969799168,1969807359,ID
1969807360,1969809407,AF
@@ -57751,9 +65755,8 @@
1970925824,1970926079,SG
1970926080,1970926335,AU
1970926336,1970926591,US
-1970926592,1970926847,SG
-1970926848,1970927103,FR
-1970927104,1970927359,SG
+1970926592,1970926847,NZ
+1970926848,1970927359,FR
1970927360,1970927615,US
1970927616,1970929663,AU
1970929664,1970962431,VN
@@ -57813,7 +65816,9 @@
1986406400,1986412543,JP
1986412544,1986428927,AU
1986428928,1986461695,IN
-1986461696,1986496511,JP
+1986461696,1986480895,JP
+1986480896,1986481151,HK
+1986481152,1986496511,JP
1986496512,1986498559,BT
1986498560,1986502655,HK
1986502656,1986503679,IN
@@ -57826,7 +65831,13 @@
1986523136,1986525183,CN
1986525184,1986527231,BN
1986527232,1986723839,JP
-1986723840,1986740223,AU
+1986723840,1986725887,SG
+1986725888,1986728447,AU
+1986728448,1986732031,SG
+1986732032,1986734079,AU
+1986734080,1986735103,SG
+1986735104,1986735359,AU
+1986735360,1986740223,SG
1986740224,1986756607,VN
1986756608,1986760703,PK
1986760704,1986762751,AU
@@ -57881,7 +65892,9 @@
1992406229,1992406229,HK
1992406230,1992417279,CN
1992417280,1992417535,HK
-1992417536,1992818687,CN
+1992417536,1992420258,CN
+1992420259,1992420259,HK
+1992420260,1992818687,CN
1992818688,1992949759,SG
1992949760,1993342975,CN
1993342976,1993605119,AU
@@ -57917,7 +65930,9 @@
1997116312,1997116319,AU
1997116320,1997116335,HK
1997116336,1997116343,AU
-1997116344,1997116975,HK
+1997116344,1997116400,HK
+1997116401,1997116401,AU
+1997116402,1997116975,HK
1997116976,1997116979,AU
1997116980,1997117099,HK
1997117100,1997117103,AU
@@ -57925,7 +65940,9 @@
1997117176,1997117183,AU
1997117184,1997119871,HK
1997119872,1997119903,AU
-1997119904,1997144063,HK
+1997119904,1997126495,HK
+1997126496,1997126503,AU
+1997126504,1997144063,HK
1997144064,1997176831,CN
1997176832,1997180927,AU
1997180928,1997185023,HK
@@ -57974,7 +65991,18 @@
1998271273,1998274047,JP
1998274048,1998274303,US
1998274304,1998274559,JP
-1998274560,1998454783,CN
+1998274560,1998332415,CN
+1998332416,1998332927,HK
+1998332928,1998348287,CN
+1998348288,1998354943,SG
+1998354944,1998360575,CN
+1998360576,1998365695,KR
+1998365696,1998380618,CN
+1998380619,1998380619,HK
+1998380620,1998383103,CN
+1998383104,1998385151,KR
+1998385152,1998389247,IN
+1998389248,1998454783,CN
1998454784,1998456831,AU
1998456832,1998458879,JP
1998458880,1998462975,TW
@@ -57989,7 +66017,9 @@
1998562560,1998562815,CN
1998562816,1998562863,IN
1998562864,1998562864,HK
-1998562865,1998565375,IN
+1998562865,1998563583,IN
+1998563584,1998563839,AU
+1998563840,1998565375,IN
1998565376,1998569471,TW
1998569472,1998577663,CN
1998577664,1998579711,AU
@@ -58011,7 +66041,6 @@
1999249408,1999250431,AU
1999250432,1999250943,BR
1999250944,1999251455,AR
-1999251456,1999252479,VG
1999252480,1999253503,GB
1999253504,1999254527,MY
1999254528,1999255551,CN
@@ -58067,9 +66096,7 @@
2001559552,2001567743,KR
2001567744,2001600511,TW
2001600512,2001797119,CN
-2001797120,2001798849,SG
-2001798850,2001798850,KR
-2001798851,2001817673,SG
+2001797120,2001817673,SG
2001817674,2001817674,US
2001817675,2001829887,SG
2001829888,2001841247,HK
@@ -58093,7 +66120,9 @@
2002575326,2002575326,US
2002575327,2002780159,PH
2002780160,2003273727,CN
-2003273728,2003273983,BT
+2003273728,2003273856,BT
+2003273857,2003273857,CN
+2003273858,2003273983,BT
2003273984,2003304447,CN
2003304448,2003566591,JP
2003566592,2003697663,CN
@@ -58102,12 +66131,12 @@
2003720192,2003722239,JP
2003722240,2003726335,MY
2003726336,2003730431,ID
-2003730432,2003763199,MY
+2003730432,2003746815,MY
+2003746816,2003763199,TH
2003763200,2003828735,PH
2003828736,2006188031,CN
2006188032,2006204415,BD
2006204416,2006212607,AU
-2006212608,2006214655,TH
2006214656,2006216703,JP
2006216704,2006228991,KR
2006228992,2006237183,CN
@@ -58274,8 +66303,8 @@
2022322697,2022323199,AU
2022323200,2022323455,KR
2022323456,2022324223,AU
-2022324224,2022324224,TH
-2022324225,2022324483,AU
+2022324224,2022324225,TH
+2022324226,2022324483,AU
2022324484,2022324484,MY
2022324485,2022326271,AU
2022326272,2022330367,VN
@@ -58305,6 +66334,7 @@
2033057792,2033074175,CN
2033074176,2033075199,PK
2033075200,2033076223,BD
+2033076224,2033077247,MM
2033077248,2033078271,CN
2033078272,2033079295,HK
2033079296,2033088511,IN
@@ -58495,7 +66525,8 @@
2053532672,2053533183,NZ
2053533184,2053533695,AU
2053533696,2053534719,VN
-2053534720,2053537791,IN
+2053535168,2053535199,IN
+2053535232,2053537791,IN
2053537792,2053636095,JP
2053636096,2054160383,AU
2054160384,2054376447,CN
@@ -58613,9 +66644,7 @@
2063085568,2063089663,CN
2063089664,2063097855,JP
2063097856,2063106047,MM
-2063106048,2063106559,SG
-2063106560,2063107071,AU
-2063107072,2063107655,SG
+2063106048,2063107655,SG
2063107656,2063107663,HK
2063107664,2063108095,SG
2063108096,2063110143,HK
@@ -58624,7 +66653,9 @@
2063114240,2063115263,IN
2063115264,2063116871,JP
2063116872,2063116879,KR
-2063116880,2063118159,JP
+2063116880,2063118091,JP
+2063118092,2063118095,PH
+2063118096,2063118159,JP
2063118160,2063118191,PH
2063118192,2063118287,JP
2063118288,2063118303,PH
@@ -58716,12 +66747,15 @@
2070183936,2070192127,AU
2070192128,2070200319,KR
2070200320,2070208511,JP
-2070208512,2070209279,MY
+2070208512,2070208767,MY
+2070208768,2070209023,SG
+2070209024,2070209279,MY
2070209280,2070209535,SG
2070209536,2070210559,AU
2070210560,2070210815,SG
2070210816,2070211071,AU
-2070211072,2070216703,SG
+2070211072,2070211327,IN
+2070211328,2070216703,SG
2070216704,2070282239,CN
2070282240,2070347775,AU
2070347776,2070380543,CN
@@ -58729,7 +66763,8 @@
2070396928,2070405119,AU
2070405120,2070409215,JP
2070409216,2070413311,HK
-2070413312,2070677503,JP
+2070413312,2070675455,JP
+2070675456,2070677503,KR
2070677504,2070679551,ID
2070679552,2070683647,KR
2070683648,2070691839,IN
@@ -58844,13 +66879,15 @@
2080776192,2080777215,HK
2080777216,2080777471,GB
2080777472,2080777727,FR
-2080777728,2080777983,NL
-2080777984,2080778239,GB
+2080777728,2080777983,DE
+2080777984,2080778239,NL
2080778240,2080780287,US
2080780288,2080780799,ID
2080780800,2080781311,MY
2080781312,2080781823,JP
-2080781824,2080784383,SG
+2080781824,2080782079,VN
+2080782080,2080782335,PH
+2080782336,2080784383,SG
2080784384,2080800767,CN
2080800768,2080817151,PH
2080817152,2080825343,NZ
@@ -58915,7 +66952,8 @@
2087453696,2087454719,KH
2087454720,2087456767,CN
2087456768,2087457791,IN
-2087457792,2087458815,HK
+2087457792,2087458303,HK
+2087458304,2087458815,US
2087458816,2087460863,FJ
2087460864,2087462911,JP
2087462912,2087464959,CN
@@ -58959,6 +66997,7 @@
2090041344,2090074111,CN
2090074112,2090237951,AU
2090237952,2090239999,TW
+2090240000,2090240255,IN
2090240256,2090240511,CN
2090240512,2090240767,AU
2090240768,2090241023,NZ
@@ -59058,7 +67097,10 @@
2098594304,2098724863,IN
2098724864,2098987007,TH
2098987008,2099183615,JP
-2099183616,2099199999,MO
+2099183616,2099185919,CN
+2099185920,2099186175,MO
+2099186176,2099187711,CN
+2099187712,2099199999,MO
2099200000,2099216383,JP
2099216384,2099232767,KR
2099232768,2100297727,CN
@@ -59172,11 +67214,12 @@
2113929216,2130706431,JP
2147483648,2147483903,NL
2147483904,2147484671,RO
-2147484672,2147485695,HU
+2147484672,2147485695,TR
2147485696,2147487743,DK
2147487744,2147489791,NO
2147489792,2147491839,RU
-2147491840,2147494911,DE
+2147491840,2147493887,RO
+2147493888,2147494911,DE
2147494912,2147495167,RO
2147495168,2147495423,DE
2147495424,2147496959,RO
@@ -59190,7 +67233,7 @@
2147501056,2147501311,SK
2147501312,2147501567,NL
2147501568,2147501823,GL
-2147501824,2147502079,NL
+2147501824,2147502079,US
2147502080,2147504127,DK
2147504128,2147508223,RU
2147508224,2147510271,DE
@@ -59221,7 +67264,9 @@
2147560192,2147560447,RU
2147560448,2147560703,TH
2147560704,2147560959,TW
-2147560960,2147562239,US
+2147560960,2147561471,US
+2147561472,2147561983,JP
+2147561984,2147562239,TW
2147562240,2147562495,RU
2147562496,2147563263,US
2147563264,2147563519,RU
@@ -59230,7 +67275,9 @@
2147564544,2147564799,US
2147564800,2147565055,SG
2147565056,2147565311,HK
-2147565312,2147566079,TW
+2147565312,2147565999,TW
+2147566000,2147566047,JP
+2147566048,2147566079,TW
2147566080,2147569407,US
2147569408,2147569663,TH
2147569664,2147570431,US
@@ -59243,7 +67290,7 @@
2147575040,2147575551,TW
2147575552,2147575807,SG
2147575808,2147576575,US
-2147576576,2147576831,HK
+2147576576,2147576831,TW
2147576832,2147577087,TH
2147577088,2147577599,ID
2147577600,2147579647,US
@@ -59255,13 +67302,24 @@
2147592704,2147592959,HK
2147592960,2147600127,US
2147600128,2147600383,SG
-2147600384,2147942399,US
+2147600384,2147603711,US
+2147603712,2147603967,IN
+2147603968,2147942399,US
2147942400,2148007935,DE
2148007936,2148220515,US
2148220516,2148220535,AU
2148220536,2148229151,US
2148229152,2148229183,CA
-2148229184,2148532223,US
+2148229184,2148458495,US
+2148458496,2148459007,DE
+2148459008,2148459519,TW
+2148459520,2148459775,US
+2148459776,2148460287,TW
+2148460288,2148460543,RU
+2148460544,2148461055,ID
+2148461056,2148461823,US
+2148461824,2148462335,TW
+2148462336,2148532223,US
2148532224,2148597759,GB
2148597760,2148925439,US
2148925440,2148990975,JP
@@ -59269,7 +67327,8 @@
2149253120,2149384191,JP
2149384192,2150039551,US
2150039552,2150105087,NO
-2150105088,2150236159,GB
+2150105088,2150203391,GB
+2150203392,2150236159,AF
2150236160,2150301695,US
2150301696,2150367231,CA
2150367232,2150432767,US
@@ -59278,7 +67337,7 @@
2150957056,2151022591,JP
2151022592,2151743487,US
2151743488,2151759871,BY
-2151759872,2151768063,DE
+2151759872,2151768063,US
2151768064,2151770111,GB
2151770112,2151772159,BA
2151772160,2151776255,IT
@@ -59298,12 +67357,14 @@
2152562688,2152595455,DK
2152595456,2152726527,FR
2152726528,2153119743,US
-2153119744,2153250815,GB
+2153119744,2153185279,GB
+2153185280,2153250815,SE
2153250816,2153381887,US
2153381888,2153382143,JP
2153382144,2153383679,US
2153383680,2153383935,HK
-2153383936,2153384447,US
+2153383936,2153384191,US
+2153384192,2153384447,JP
2153384448,2153385471,GB
2153385472,2153385599,AT
2153385600,2153385663,CZ
@@ -59319,9 +67380,13 @@
2153387776,2153388031,CH
2153388032,2153388287,ES
2153388288,2153388543,PL
-2153388544,2153391615,US
+2153388544,2153389567,US
+2153389568,2153389823,JP
+2153389824,2153391615,US
2153391616,2153391871,HK
-2153391872,2153394431,US
+2153391872,2153393151,US
+2153393152,2153393407,JP
+2153393408,2153394431,US
2153394432,2153394943,SG
2153394944,2153395455,US
2153395456,2153395711,VN
@@ -59339,8 +67404,8 @@
2153401088,2153401599,MO
2153401600,2153402111,VN
2153402112,2153402367,PH
-2153402368,2153402623,KR
-2153402624,2153406463,US
+2153402368,2153403135,KR
+2153403136,2153406463,US
2153406464,2153407487,JP
2153407488,2153407743,HK
2153407744,2153407999,AE
@@ -59380,7 +67445,8 @@
2155810816,2155812863,FR
2155812864,2155814911,GB
2155814912,2155819007,NL
-2155819008,2155821055,DE
+2155819008,2155819519,DE
+2155819520,2155821055,CH
2155821056,2155823103,IT
2155823104,2155825151,DE
2155825152,2155827199,AE
@@ -59399,7 +67465,10 @@
2155849728,2155851775,TR
2155853824,2155855871,SE
2155855872,2155872255,SA
-2155872256,2156003327,US
+2155872256,2155937791,US
+2155937792,2155960319,CA
+2155960320,2155962367,US
+2155962368,2156003327,CA
2156003328,2156134399,AT
2156134400,2156265471,US
2156265472,2156331007,KR
@@ -59407,7 +67476,7 @@
2156593152,2156658687,IL
2156658688,2156691455,IR
2156691456,2156697599,FR
-2156697600,2156699647,CY
+2156697600,2156699647,GR
2156699648,2156703743,RU
2156703744,2156707839,BG
2156707840,2156709887,RU
@@ -59422,7 +67491,13 @@
2156920832,2156986367,CA
2156986368,2159017983,US
2159017984,2159083519,DE
-2159083520,2159149055,US
+2159083520,2159110463,US
+2159110464,2159110497,CA
+2159110498,2159110498,US
+2159110499,2159110527,CA
+2159110528,2159112975,US
+2159112976,2159112991,CA
+2159112992,2159149055,US
2159149056,2159280127,CH
2159280128,2159542271,US
2159542272,2159607807,AU
@@ -59469,10 +67544,14 @@
2160906240,2160908287,FR
2160908288,2160910335,PL
2160910336,2160914431,NL
-2160914432,2160918527,SA
+2160914432,2160915711,SA
+2160915712,2160915967,GB
+2160915968,2160918527,SA
2160918528,2161508351,US
2161508352,2161573887,FI
-2161573888,2162687999,US
+2161573888,2162228223,US
+2162228224,2162228479,CA
+2162228480,2162687999,US
2162688000,2162753535,GB
2162753536,2162819071,CA
2162819072,2162884607,SA
@@ -59503,11 +67582,11 @@
2166095872,2166161407,CN
2166161408,2166292479,US
2166292480,2166358015,GB
-2166358016,2166562559,US
+2166358016,2166554623,US
2166562560,2166562815,FI
-2166562816,2166594559,US
+2166571008,2166575103,GB
2166594560,2166594815,PL
-2166594816,2166729471,US
+2166619905,2166729471,US
2166729472,2166729727,CA
2166729728,2167209983,US
2167209984,2167242751,DZ
@@ -59520,9 +67599,7 @@
2168651776,2168717311,GB
2168717312,2168782847,US
2168782848,2168913919,DE
-2168913920,2169044991,US
-2169044992,2169110527,DE
-2169110528,2169372671,US
+2168913920,2169372671,US
2169372672,2169438207,AU
2169438208,2170028031,US
2170028032,2170093567,FR
@@ -59541,11 +67618,11 @@
2171076608,2171142143,FR
2171142144,2172256255,US
2172256256,2172272639,GH
-2172272640,2172274687,RE
-2172274688,2172275711,FR
-2172275712,2172275967,RE
-2172275968,2172276735,FR
-2172276736,2172289023,RE
+2172272640,2172279039,RE
+2172279040,2172279295,FR
+2172279296,2172279807,RE
+2172279808,2172280831,FR
+2172280832,2172289023,RE
2172289024,2172321791,AO
2172321792,2172452863,US
2172452864,2172518399,NL
@@ -59573,10 +67650,15 @@
2175926272,2175991807,SE
2175991808,2176057343,US
2176057344,2176122879,AU
-2176122880,2176450559,FR
+2176122880,2176425983,FR
+2176425984,2176434175,DE
+2176434176,2176450559,FR
2176450560,2176516095,US
2176516096,2176581631,DE
-2176581632,2176862975,US
+2176581632,2176860159,US
+2176860160,2176861183,CA
+2176861184,2176862719,US
+2176862720,2176862975,DE
2176862976,2176863231,SG
2176863232,2176868607,US
2176868608,2176868863,IT
@@ -59586,7 +67668,8 @@
2176974848,2177105919,CH
2177105920,2177302527,US
2177302528,2177368063,FR
-2177368064,2177695743,US
+2177368064,2177630207,US
+2177630208,2177695743,CN
2177695744,2177703935,UG
2177703936,2177720319,ZA
2177720320,2177728511,NG
@@ -59595,14 +67678,20 @@
2177761280,2177826815,DE
2177826816,2177892351,US
2177892352,2177957887,SA
-2177957888,2178285567,US
+2177957888,2178088959,US
+2178088960,2178154495,CN
+2178154496,2178285567,US
2178285568,2178351103,DE
2178351104,2178416639,GB
2178416640,2178482175,US
2178482176,2178547711,DE
-2178547712,2179398399,US
-2179398400,2179398655,GB
-2179398656,2179465215,US
+2178547712,2178785279,US
+2178785280,2178787327,HU
+2178787328,2179071999,US
+2179072000,2179137535,CN
+2179137536,2179398399,US
+2179398400,2179399679,GB
+2179399680,2179465215,US
2179465216,2179497983,LS
2179497984,2179530751,ZA
2179530752,2179596287,DE
@@ -59645,10 +67734,12 @@
2181089280,2181091327,SE
2181091328,2181093375,IT
2181093376,2181095423,RU
-2181095424,2181097471,GB
+2181095680,2181097471,GB
2181097472,2181099519,UA
2181099520,2181103615,SY
-2181103616,2181824511,US
+2181103616,2181185535,US
+2181185536,2181193727,CA
+2181193728,2181824511,US
2181824512,2181890047,CA
2181890048,2182021119,US
2182021120,2182086655,CA
@@ -59736,19 +67827,16 @@
2188719360,2188719615,NL
2188719616,2188719743,FR
2188719744,2188719871,DE
-2188724464,2188724464,NL
-2188736512,2188737535,GB
-2188738307,2188738307,GB
-2188738560,2188746751,GB
-2188749568,2188749823,FR
-2188754688,2188754943,BE
-2188763136,2188769471,IT
+2188722176,2188726271,NL
+2188726272,2188730367,ES
+2188737024,2188737791,GB
+2188738304,2188738559,GB
+2188740608,2188741631,DE
+2188742144,2188742399,GB
+2188749312,2188749823,FR
2188769472,2188769503,DE
-2188769504,2188769599,IT
2188769600,2188769631,DE
-2188769632,2188769663,IT
2188769664,2188770175,DE
-2188770176,2188771327,IT
2188771328,2188901753,US
2188901754,2188901754,GB
2188901755,2188902399,US
@@ -59757,7 +67845,8 @@
2189099008,2189164543,NZ
2189164544,2189230079,US
2189230080,2189295615,CH
-2189295616,2189557759,US
+2189295616,2189492223,US
+2189492224,2189557759,CA
2189557760,2189623295,AU
2189623296,2189754367,US
2189754368,2189819903,DE
@@ -59793,7 +67882,13 @@
2193182720,2193184767,PT
2193184768,2193186815,ES
2193186816,2193188863,PL
-2193188864,2193190911,DE
+2193188864,2193189919,DE
+2193189920,2193189935,GB
+2193189936,2193189951,DE
+2193189952,2193189983,IT
+2193189984,2193190015,DE
+2193190016,2193190079,CZ
+2193190080,2193190911,DE
2193195008,2193199103,DK
2193199104,2193201151,GB
2193201152,2193202687,SE
@@ -59811,7 +67906,9 @@
2193223424,2193223679,GB
2193223680,2193226495,BG
2193226496,2193226751,GB
-2193226752,2193227775,BG
+2193226752,2193227263,BG
+2193227264,2193227519,US
+2193227520,2193227775,BG
2193227776,2193293311,IT
2193293312,2193358847,US
2193358848,2193424383,FI
@@ -59824,7 +67921,17 @@
2193692672,2193694719,FR
2193694720,2193704959,RU
2193704960,2193707007,IT
-2193707008,2193711103,GB
+2193707008,2193707495,GB
+2193707496,2193707503,IT
+2193707504,2193707655,GB
+2193707656,2193707663,IT
+2193707664,2193707839,GB
+2193707840,2193707847,IT
+2193707848,2193708375,GB
+2193708376,2193708383,IT
+2193708384,2193709199,GB
+2193709200,2193709215,IT
+2193709216,2193711103,GB
2193711104,2193713151,DE
2193713152,2193715199,ES
2193715200,2193717247,DE
@@ -59832,7 +67939,17 @@
2193719296,2193752063,IQ
2193752064,2193817599,AU
2193817600,2193883135,NZ
-2193883136,2194407423,US
+2193883136,2194031007,US
+2194031008,2194031023,JP
+2194031024,2194031231,US
+2194031232,2194031247,AU
+2194031248,2194034559,US
+2194034560,2194034575,AU
+2194034576,2194035311,US
+2194035312,2194035327,AU
+2194035328,2194037343,US
+2194037344,2194037359,IN
+2194037360,2194407423,US
2194407424,2194472959,BG
2194472960,2194538495,US
2194538496,2194604031,ES
@@ -59881,9 +67998,7 @@
2197776384,2197778431,DE
2197778432,2197780479,IT
2197780480,2197782527,DE
-2197782528,2197782685,RU
-2197782686,2197782686,UA
-2197782687,2197786623,RU
+2197782528,2197786623,UA
2197786624,2197788671,IT
2197788672,2197790719,PL
2197790720,2197792767,SE
@@ -59893,7 +68008,10 @@
2197798912,2197815295,IR
2197815296,2197816319,BO
2197816320,2197828607,BR
-2197828608,2197829631,CL
+2197828608,2197828959,AR
+2197828960,2197828967,CL
+2197828968,2197829119,AR
+2197829120,2197829631,CL
2197829632,2197833727,BR
2197833728,2197834751,CR
2197834752,2197841919,BR
@@ -59918,7 +68036,11 @@
2197875712,2197876735,MX
2197876736,2197880831,BR
2197880832,2197946367,IT
-2197946368,2202533887,US
+2197946368,2201190420,US
+2201190421,2201190421,GB
+2201190422,2201632960,US
+2201632961,2201632961,DE
+2201632962,2202533887,US
2202533888,2202534911,AR
2202534912,2202540031,BR
2202540032,2202541055,PY
@@ -59928,7 +68050,7 @@
2202553344,2202554367,TT
2202554368,2202562559,BR
2202562560,2202563583,CW
-2202563584,2202567679,BR
+2202565632,2202567679,BR
2202567680,2202568703,AR
2202568704,2202569727,NL
2202569728,2202573823,BR
@@ -59937,11 +68059,7 @@
2202576896,2202577919,VE
2202577920,2202586111,BR
2202586112,2202587135,AR
-2202587136,2202587231,HN
-2202587232,2202587239,NL
-2202587240,2202587647,HN
-2202587648,2202587903,US
-2202587904,2202588159,HN
+2202587136,2202588159,HN
2202588160,2202589183,MX
2202589184,2202591231,BR
2202591232,2202592255,PA
@@ -59986,12 +68104,8 @@
2204893184,2204894207,AR
2204894208,2204895231,PA
2204895232,2204897279,BR
-2204897280,2204897447,HN
-2204897448,2204897455,CA
-2204897456,2204897791,HN
-2204897792,2204898095,US
-2204898096,2204898111,CR
-2204898112,2204898303,US
+2204897280,2204897791,HN
+2204897792,2204898303,US
2204898304,2204899327,PA
2204899328,2204902399,BR
2204902400,2204903423,CR
@@ -60006,12 +68120,10 @@
2204936192,2204937215,CO
2204937216,2204942335,BR
2204942336,2204943359,PY
-2204943360,2204946431,BR
+2204944384,2204946431,BR
2204946432,2204947455,CL
2204947456,2204952575,BR
-2204952576,2204952767,HN
-2204952768,2204952775,US
-2204952776,2204953599,HN
+2204952576,2204953599,HN
2204954624,2204958719,BR
2204958720,2205089791,US
2205089792,2205155327,GB
@@ -60037,23 +68149,7 @@
2206466048,2207121407,CA
2207121408,2207449087,US
2207449088,2207514623,JP
-2207514624,2207645695,US
-2207645696,2207647487,CA
-2207647488,2207647743,US
-2207647744,2207648511,CA
-2207648512,2207649791,US
-2207649792,2207653631,CA
-2207653632,2207653887,US
-2207653888,2207659775,CA
-2207659776,2207660031,US
-2207660032,2207661567,CA
-2207661568,2207661823,US
-2207661824,2207666175,CA
-2207666176,2207667199,US
-2207667200,2207678975,CA
-2207678976,2207694591,US
-2207694592,2207711231,CA
-2207711232,2207776767,US
+2207514624,2207776767,US
2207776768,2207842303,CH
2207842304,2207846399,US
2207846400,2207848447,NL
@@ -60071,7 +68167,11 @@
2208368640,2208369663,HK
2208369664,2208379903,BR
2208379904,2208380927,HN
-2208380928,2208381951,CL
+2208380928,2208381183,MX
+2208381184,2208381311,CL
+2208381312,2208381439,MX
+2208381440,2208381567,CL
+2208381568,2208381951,MX
2208381952,2208387071,BR
2208387072,2208388095,HN
2208388096,2208389119,SX
@@ -60092,7 +68192,8 @@
2208430080,2208431103,BR
2208431104,2208432127,PY
2208432128,2208563199,CA
-2208563200,2208759807,DK
+2208563200,2208694271,DK
+2208694272,2208759807,LU
2208759808,2208890879,US
2208890880,2208956415,DE
2208956416,2209021951,AU
@@ -60172,7 +68273,8 @@
2212308992,2212310015,CO
2212310016,2212315135,BR
2212315136,2212316159,AR
-2212316160,2212327423,BR
+2212316160,2212318207,BR
+2212319232,2212327423,BR
2212327424,2212328447,VE
2212328448,2212335615,BR
2212335616,2212336639,CW
@@ -60185,25 +68287,30 @@
2212495360,2212560895,NL
2212560896,2212691967,US
2212691968,2212757503,GB
-2212757504,2212764927,FI
+2212757504,2212759551,FI
+2212759552,2212760575,US
+2212760576,2212761599,FI
+2212761600,2212762623,GB
+2212762624,2212764927,US
2212764928,2212765183,GB
-2212765184,2212765695,FI
-2212765696,2212765951,DE
-2212765952,2212769791,FI
-2212769792,2212773887,US
-2212773888,2212796415,FI
+2212765184,2212765695,US
+2212765696,2212766719,DE
+2212766720,2212767743,GB
+2212767744,2212773887,US
+2212773888,2212777983,IN
+2212777984,2212779519,US
+2212779520,2212780031,FI
+2212780032,2212788223,US
+2212788224,2212790271,FI
2212796416,2212798463,NL
-2212798464,2212804095,FI
+2212803972,2212803975,DE
+2212803988,2212803991,NL
+2212804000,2212804003,FR
2212804096,2212804351,NL
-2212804352,2212806655,FI
2212806656,2212808703,US
-2212808704,2212810751,FI
-2212810752,2212814847,DE
-2212814848,2212816383,FI
2212816384,2212816639,SG
2212816640,2212816895,IN
2212816896,2212817151,KR
-2212817152,2212823039,FI
2212823040,2212954111,US
2212954112,2213019647,GB
2213019648,2213085183,CA
@@ -60300,15 +68407,31 @@
2214589440,2214590463,BR
2214590464,2214591487,AR
2214591488,2214592511,BR
-2214592512,2214795597,US
+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,2216231118,US
-2216231119,2216231119,DE
-2216231120,2218786815,US
+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
2218786816,2219769855,IL
2219769856,2220613631,US
2220613632,2220621823,GU
-2220621824,2224160767,US
+2220621824,2222514175,US
+2222514176,2222522367,PR
+2222522368,2223075327,US
+2223075328,2223079423,VI
+2223079424,2224160767,US
2224160768,2224226303,GB
2224226304,2224242687,US
2224242688,2224259071,SG
@@ -60335,7 +68458,7 @@
2226585600,2226651135,US
2226651136,2226716671,PE
2226716672,2226782207,GB
-2226782208,2226847743,AE
+2226782208,2226847743,ZA
2226847744,2226913279,DE
2226913280,2227109887,US
2227109888,2227175423,PE
@@ -60360,7 +68483,9 @@
2229993472,2230583295,US
2230583296,2230603775,GB
2230603776,2230607871,US
-2230607872,2230648831,GB
+2230607872,2230637567,GB
+2230637568,2230638591,SG
+2230638592,2230648831,GB
2230648832,2230649695,US
2230649696,2230649727,IE
2230649728,2230653063,US
@@ -60414,8 +68539,7 @@
2230660256,2230660287,NL
2230660288,2230660863,US
2230660864,2230660903,NL
-2230660904,2230661135,US
-2230661136,2230661151,FI
+2230660904,2230661151,US
2230661152,2230661167,AT
2230661168,2230661607,US
2230661608,2230661631,NL
@@ -60490,13 +68614,15 @@
2230685856,2230685871,HK
2230685872,2230688255,US
2230688256,2230688767,SG
-2230688768,2230688991,BR
+2230688768,2230688895,BR
+2230688896,2230688911,US
+2230688912,2230688991,BR
2230688992,2230689039,US
-2230689040,2230689071,BR
-2230689072,2230689199,US
+2230689040,2230689063,BR
+2230689064,2230689199,US
2230689200,2230689247,BR
-2230689248,2230689839,US
-2230689840,2230689863,SG
+2230689248,2230689855,US
+2230689856,2230689863,SG
2230689864,2230689871,US
2230689872,2230689895,SG
2230689896,2230689911,US
@@ -60505,8 +68631,8 @@
2230690000,2230690007,AU
2230690008,2230690463,US
2230690464,2230690639,AU
-2230690640,2230690679,US
-2230690680,2230690823,AU
+2230690640,2230690647,US
+2230690648,2230690823,AU
2230690824,2230690831,US
2230690832,2230690863,AU
2230690864,2230690959,US
@@ -60515,14 +68641,15 @@
2230691008,2230691039,MY
2230691040,2230691071,AU
2230691072,2230691199,SG
-2230691200,2230691215,AU
-2230691216,2230693887,US
+2230691200,2230691231,AU
+2230691232,2230693887,US
2230693888,2230693919,NL
2230693920,2230693951,US
2230693952,2230693967,IE
2230693968,2230694063,US
2230694064,2230694095,NL
-2230694096,2230698903,US
+2230694096,2230698807,US
+2230698808,2230698903,NL
2230698904,2230698999,FI
2230699000,2230699007,US
2230699008,2230699055,FI
@@ -60548,7 +68675,8 @@
2230711168,2230711727,IN
2230711728,2230711903,US
2230711904,2230711935,IE
-2230711936,2230712007,US
+2230711936,2230711967,IN
+2230711968,2230712007,US
2230712008,2230712183,BR
2230712184,2230712191,US
2230712192,2230712239,IE
@@ -60572,7 +68700,9 @@
2230714256,2230714287,BR
2230714288,2230714303,US
2230714304,2230714311,CL
-2230714312,2230714367,BR
+2230714312,2230714319,BR
+2230714320,2230714335,US
+2230714336,2230714367,BR
2230714368,2230779903,CA
2230779904,2230910975,MX
2230910976,2231042047,US
@@ -60591,14 +68721,19 @@
2231332864,2231333887,AR
2231333888,2231335935,BR
2231335936,2231336959,MX
-2231337984,2231338639,HN
-2231338640,2231338647,US
-2231338648,2231338695,HN
-2231338696,2231338703,US
-2231338704,2231339007,HN
+2231337984,2231338495,US
+2231338496,2231339007,HN
2231339008,2231346175,BR
2231346176,2231347199,PY
-2231347200,2231349765,BR
+2231347200,2231349257,BR
+2231349258,2231349258,US
+2231349259,2231349261,BR
+2231349262,2231349262,US
+2231349263,2231349265,BR
+2231349266,2231349266,US
+2231349267,2231349268,BR
+2231349269,2231349270,US
+2231349271,2231349765,BR
2231349766,2231349766,US
2231349767,2231355391,BR
2231355392,2231356415,AR
@@ -60619,12 +68754,14 @@
2248155136,2248163327,AL
2248163328,2248163839,US
2248163840,2248165375,GB
-2248165376,2248167423,US
-2248167424,2248169471,IE
+2248165376,2248166399,US
+2248167424,2248169471,GB
2248169472,2248171519,NL
2248171520,2248177663,RU
2248177664,2248179711,DE
-2248179712,2248212479,OM
+2248179712,2248201727,OM
+2248201728,2248201983,GB
+2248201984,2248212479,OM
2248212480,2248409087,DE
2248409088,2248605695,US
2248605696,2248671231,AU
@@ -60645,9 +68782,7 @@
2249457664,2249523199,US
2249523200,2249588735,CH
2249588736,2249654271,CA
-2249654272,2249724671,US
-2249724672,2249724927,CA
-2249724928,2249785343,US
+2249654272,2249785343,US
2249785344,2249850879,SE
2249850880,2249916415,US
2249916416,2249981951,NL
@@ -60655,9 +68790,7 @@
2250047488,2250113023,US
2250113024,2250178559,DE
2250178560,2250244095,CA
-2250244096,2250282239,US
-2250282240,2250282495,GB
-2250282496,2250375167,US
+2250244096,2250375167,US
2250375168,2250440703,DE
2250440704,2250506239,YE
2250506240,2250571775,GB
@@ -60669,7 +68802,8 @@
2250957056,2250957311,SG
2250957312,2250957567,AU
2250957568,2250957823,JP
-2250957824,2251227135,US
+2250957824,2250958079,GB
+2250958080,2251227135,US
2251227136,2251292671,NO
2251292672,2251685887,US
2251685888,2251751423,BE
@@ -60677,7 +68811,9 @@
2251948032,2252013567,BE
2252013568,2252079103,FR
2252079104,2252210175,DE
-2252210176,2253062143,US
+2252210176,2252417023,US
+2252417024,2252417279,GB
+2252417280,2253062143,US
2253062144,2253127679,KR
2253127680,2253193215,DE
2253193216,2253455359,US
@@ -60707,14 +68843,18 @@
2255749120,2255814655,US
2255814656,2255880191,CA
2255880192,2255945727,US
-2255945728,2256011263,DE
+2255945728,2255990783,DE
+2255990784,2256003071,FR
+2256003072,2256011263,DE
2256011264,2256535551,US
2256535552,2256543743,GB
2256543744,2256551935,US
2256551936,2256601087,GB
2256601088,2256666623,US
2256666624,2256732159,DE
-2256732160,2256815103,US
+2256732160,2256812031,US
+2256812032,2256812287,GB
+2256812288,2256815103,US
2256815104,2256815359,AU
2256815360,2257190911,US
2257190912,2257256447,SE
@@ -60761,8 +68901,7 @@
2258589697,2258590975,GB
2258590976,2258591487,AU
2258591488,2258591743,GB
-2258591744,2258591935,AU
-2258591936,2258591967,HK
+2258591744,2258591967,HK
2258591968,2258591999,AU
2258592000,2258592255,HK
2258592256,2258592271,AU
@@ -60779,9 +68918,7 @@
2258593536,2258593983,AU
2258593984,2258593991,NZ
2258593992,2258594047,AU
-2258594048,2258594175,HK
-2258594176,2258594303,AU
-2258594304,2258594607,HK
+2258594048,2258594607,HK
2258594608,2258594623,AU
2258594624,2258594751,HK
2258594752,2258595071,AU
@@ -60846,8 +68983,7 @@
2258601176,2258601215,AU
2258601216,2258601343,TW
2258601344,2258601471,AU
-2258601472,2258601983,JP
-2258601984,2258602239,AU
+2258601472,2258602239,JP
2258602240,2258602495,HK
2258602496,2258602751,AU
2258602752,2258603071,HK
@@ -60927,10 +69063,17 @@
2258615056,2258620415,AU
2258620416,2258621951,HK
2258621952,2258622207,NZ
-2258622208,2258622719,AU
+2258622208,2258622463,AU
+2258622464,2258622719,US
2258622720,2258623231,NZ
2258623232,2258623487,KR
-2258623488,2258632703,AU
+2258623488,2258624511,AU
+2258624512,2258624767,HK
+2258624768,2258626047,AU
+2258626048,2258626048,VN
+2258626049,2258626303,AU
+2258626304,2258626559,VN
+2258626560,2258632703,AU
2258632704,2258698239,JP
2258698240,2259222527,US
2259222528,2259288063,DE
@@ -60981,7 +69124,11 @@
2260467712,2260533247,NL
2260533248,2260598783,US
2260598784,2260664319,CA
-2260664320,2260723711,GB
+2260664320,2260720639,GB
+2260720640,2260720703,PL
+2260720704,2260720719,GB
+2260720720,2260720895,PL
+2260720896,2260723711,GB
2260723712,2260723967,IL
2260723968,2260729343,GB
2260729344,2260729599,IL
@@ -61000,13 +69147,7 @@
2261843968,2261975039,US
2261975040,2262040575,AU
2262040576,2262106111,FR
-2262106112,2262118655,IE
-2262118656,2262118911,GB
-2262118912,2262142975,IE
-2262142976,2262147071,GB
-2262147072,2262159359,IE
-2262159360,2262163455,GB
-2262163456,2262171647,IE
+2262106112,2262171647,GB
2262171648,2262237183,FR
2262237184,2262414335,US
2262414336,2262415359,IN
@@ -61092,12 +69233,12 @@
2281007104,2281007359,IN
2281007360,2281023487,US
2281023488,2281023743,IN
-2281023744,2281024767,US
-2281024768,2281025023,IN
-2281025024,2281701375,US
+2281023744,2281701375,US
2281701376,2281705471,CH
2281705472,2281709567,US
-2281709568,2281725951,CN
+2281709568,2281718527,CN
+2281718528,2281718783,US
+2281718784,2281725951,CN
2281725952,2281729023,US
2281729024,2281729535,CN
2281729536,2281733119,US
@@ -61106,28 +69247,66 @@
2281750528,2281758719,CN
2281758720,2281760511,US
2281760512,2281760767,CH
-2281760768,2282226175,US
-2282226176,2282226243,CN
+2281760768,2282225663,US
+2282225664,2282226019,AU
+2282226020,2282226020,US
+2282226021,2282226243,AU
2282226244,2282226245,US
-2282226246,2282226247,CN
-2282226248,2282226248,AU
-2282226249,2282226431,CN
-2282226432,2282234111,US
-2282234112,2282234367,GB
-2282234368,2283151359,US
+2282226246,2282226943,AU
+2282226944,2282227199,US
+2282227200,2282233855,AU
+2282233856,2282242047,GB
+2282242048,2283151359,US
2283151360,2283159551,IN
-2283159552,2291142655,US
+2283159552,2283174399,US
+2283174400,2283174407,DE
+2283174408,2283174415,FR
+2283174416,2283174431,GB
+2283174432,2283174439,IT
+2283174440,2283174447,ES
+2283174448,2283174455,NL
+2283174456,2283174463,BE
+2283174464,2283174471,GR
+2283174472,2283174479,PT
+2283174480,2283174487,SE
+2283174488,2283174495,AT
+2283174496,2283174503,CH
+2283174504,2283174511,DK
+2283174512,2283174519,FI
+2283174520,2283174527,NO
+2283174528,2283174535,IE
+2283174536,2283174543,IS
+2283174544,2283174551,FO
+2283174552,2283174655,US
+2283174656,2283174663,DE
+2283174664,2283174671,FR
+2283174672,2283174687,GB
+2283174688,2283174695,IT
+2283174696,2283174703,ES
+2283174704,2283174711,NL
+2283174712,2283174719,BE
+2283174720,2283174727,GR
+2283174728,2283174735,PT
+2283174736,2283174743,SE
+2283174744,2283174751,AT
+2283174752,2283174759,CH
+2283174760,2283174767,DK
+2283174768,2283174775,FI
+2283174776,2283174783,NO
+2283174784,2283174791,IE
+2283174792,2283174799,IS
+2283174800,2283174807,FO
+2283174808,2291142655,US
2291142656,2291144191,CN
2291144192,2291144703,NL
2291144704,2291144959,ES
2291144960,2291145215,IE
2291145216,2291145471,FR
-2291145472,2291145727,IE
-2291145728,2291146751,NL
+2291145472,2291146751,NL
2291146752,2291147775,CN
2291147776,2291148799,CH
-2291148800,2291150847,NL
-2291150848,2291154943,US
+2291148800,2291149055,NL
+2291149056,2291154943,US
2291154944,2291171327,GB
2291171328,2291204095,NL
2291204096,2291269631,PR
@@ -61139,7 +69318,7 @@
2291728384,2291859455,AU
2291859456,2291924991,SE
2291924992,2291990527,GB
-2291990528,2292056063,DE
+2291990528,2292056063,US
2292056064,2292121599,NO
2292121600,2292187135,CA
2292187136,2292383743,US
@@ -61151,13 +69330,8 @@
2292842496,2292908031,GB
2292908032,2292973567,US
2292973568,2293039103,DE
-2293039104,2293080575,LU
-2293080576,2293080831,BE
-2293080832,2293085183,LU
-2293085184,2293085439,BE
-2293085440,2293104639,LU
-2293104640,2293170175,US
-2293235712,2293825535,US
+2293080064,2293088255,BE
+2293104640,2293825535,US
2293825536,2293891071,IN
2293891072,2293956607,AU
2293956608,2294022143,JP
@@ -61170,7 +69344,12 @@
2295201792,2295267327,IE
2295267328,2296446975,US
2296446976,2296512511,SE
-2296512512,2296774655,US
+2296512512,2296676351,US
+2296676352,2296684543,KH
+2296684544,2296688639,MM
+2296688640,2296691199,US
+2296691200,2296691711,CA
+2296691712,2296774655,US
2296774656,2296840191,DE
2296840192,2296905727,NL
2296905728,2297036799,IN
@@ -61184,7 +69363,11 @@
2297626624,2297661437,DE
2297661438,2297661438,NL
2297661439,2297692159,DE
-2297692160,2299461631,US
+2297692160,2298258175,US
+2298258176,2298258431,GB
+2298258432,2298413055,US
+2298413056,2298478591,RO
+2298478592,2299461631,US
2299461632,2299527167,CA
2299527168,2299592703,US
2299592704,2299658239,NL
@@ -61214,8 +69397,8 @@
2302360576,2302363647,IN
2302363648,2302364671,AU
2302364672,2302365695,IN
-2302365696,2302365951,MY
-2302365952,2302366719,ID
+2302365696,2302366463,MY
+2302366464,2302366719,ID
2302366720,2302367743,IN
2302367744,2302368767,CN
2302368768,2302370815,IN
@@ -61236,7 +69419,7 @@
2302388224,2302389247,AU
2302389248,2302391295,IN
2302391296,2302392319,BD
-2302392320,2302393343,HK
+2302392320,2302393343,SG
2302393344,2302394367,AU
2302394368,2302395391,PK
2302395392,2302396415,AU
@@ -61257,30 +69440,197 @@
2302672896,2302738431,MW
2302738432,2302935039,US
2302935040,2303000575,KR
-2303000576,2303262719,US
+2303000576,2303156223,US
+2303156224,2303164415,PH
+2303164416,2303189503,US
+2303189504,2303189759,IE
+2303189760,2303262719,US
2303262720,2303328255,GB
2303328256,2303330303,PL
-2303330304,2303330808,FR
-2303330809,2303330809,DE
-2303330810,2303342459,FR
+2303330304,2303330591,FR
+2303330592,2303330623,GB
+2303330624,2303330687,FR
+2303330688,2303330815,DE
+2303330816,2303331263,FR
+2303331264,2303331327,FI
+2303331328,2303331903,FR
+2303331904,2303331967,ES
+2303331968,2303332799,FR
+2303332800,2303332831,GB
+2303332832,2303333303,FR
+2303333304,2303333311,ES
+2303333312,2303333871,FR
+2303333872,2303333887,CZ
+2303333888,2303333951,FR
+2303333952,2303334015,PL
+2303334016,2303334143,IT
+2303334144,2303334239,FR
+2303334240,2303334271,LT
+2303334272,2303334399,ES
+2303334400,2303336543,FR
+2303336544,2303336575,PL
+2303336576,2303336943,FR
+2303336944,2303336959,PL
+2303336960,2303337855,FR
+2303337856,2303337887,PT
+2303337888,2303338111,FR
+2303338112,2303338239,DE
+2303338240,2303338247,FR
+2303338248,2303338255,ES
+2303338256,2303340639,FR
+2303340640,2303340671,FI
+2303340672,2303340799,IT
+2303340800,2303340927,PL
+2303340928,2303341283,FR
+2303341284,2303341287,FI
+2303341288,2303341951,FR
+2303341952,2303341967,ES
+2303341968,2303342031,FR
+2303342032,2303342039,ES
+2303342040,2303342279,FR
+2303342280,2303342287,ES
+2303342288,2303342459,FR
2303342460,2303342463,DE
-2303342464,2303343827,FR
+2303342464,2303342975,FR
+2303342976,2303343007,CZ
+2303343008,2303343039,FR
+2303343040,2303343103,PT
+2303343104,2303343183,FR
+2303343184,2303343199,PL
+2303343200,2303343231,LT
+2303343232,2303343359,BE
+2303343360,2303343435,FR
+2303343436,2303343439,GB
+2303343440,2303343487,FR
+2303343488,2303343615,IE
+2303343616,2303343675,FR
+2303343676,2303343679,PL
+2303343680,2303343827,FR
2303343828,2303343831,DE
-2303343832,2303349129,FR
-2303349130,2303349130,ES
-2303349131,2303349383,FR
+2303343832,2303344127,FR
+2303344128,2303344191,CZ
+2303344192,2303344471,FR
+2303344472,2303344479,IE
+2303344480,2303344511,PL
+2303344512,2303344559,FR
+2303344560,2303344575,PL
+2303344576,2303348863,FR
+2303348864,2303348991,GB
+2303348992,2303349119,FR
+2303349120,2303349247,ES
+2303349248,2303349383,FR
2303349384,2303349391,NL
-2303349392,2303352523,FR
+2303349392,2303349431,FR
+2303349432,2303349439,ES
+2303349440,2303350079,FR
+2303350080,2303350143,CZ
+2303350144,2303350399,FR
+2303350400,2303350527,IT
+2303350528,2303350783,FR
+2303350784,2303351039,ES
+2303351040,2303351055,FR
+2303351056,2303351071,GB
+2303351072,2303351775,FR
+2303351776,2303351807,CZ
+2303351808,2303352523,FR
2303352524,2303352524,GB
-2303352525,2303353783,FR
+2303352525,2303353183,FR
+2303353184,2303353215,IT
+2303353216,2303353343,GB
+2303353344,2303353783,FR
2303353784,2303353787,GB
-2303353788,2303362063,FR
+2303353788,2303354555,FR
+2303354556,2303354559,FI
+2303354560,2303355147,FR
+2303355148,2303355151,DE
+2303355152,2303356863,FR
+2303356864,2303356927,DE
+2303356928,2303361535,FR
+2303361536,2303361599,GB
+2303361600,2303362063,FR
2303362064,2303362079,DE
2303362080,2303362303,FR
2303362304,2303362559,DE
-2303362560,2303374745,FR
+2303362560,2303362591,PT
+2303362592,2303363871,FR
+2303363872,2303363903,PL
+2303363904,2303364319,FR
+2303364320,2303364335,ES
+2303364336,2303365279,FR
+2303365280,2303365295,GB
+2303365296,2303365679,FR
+2303365680,2303365695,NL
+2303365696,2303367923,FR
+2303367924,2303367927,DE
+2303367928,2303368579,FR
+2303368580,2303368583,ES
+2303368584,2303368799,FR
+2303368800,2303368831,PT
+2303368832,2303373431,FR
+2303373432,2303373439,ES
+2303373440,2303374399,FR
+2303374400,2303374463,NL
+2303374464,2303374591,DE
+2303374592,2303374745,FR
2303374746,2303374746,ES
-2303374747,2303393791,FR
+2303374747,2303376703,FR
+2303376704,2303376735,CZ
+2303376736,2303376783,FR
+2303376784,2303376799,PT
+2303376800,2303376807,FR
+2303376808,2303376815,ES
+2303376816,2303377311,FR
+2303377312,2303377343,GB
+2303377344,2303381631,FR
+2303381632,2303381663,ES
+2303381664,2303382879,FR
+2303382880,2303382895,ES
+2303382896,2303383151,FR
+2303383152,2303383167,LT
+2303383168,2303383503,FR
+2303383504,2303383519,GB
+2303383520,2303383807,FR
+2303383808,2303383935,ES
+2303383936,2303384959,FR
+2303384960,2303384991,GB
+2303384992,2303385087,FR
+2303385088,2303385103,FI
+2303385104,2303386879,FR
+2303386880,2303387007,BE
+2303387008,2303387535,FR
+2303387536,2303387551,PT
+2303387552,2303387567,FI
+2303387568,2303387591,FR
+2303387592,2303387599,ES
+2303387600,2303387763,FR
+2303387764,2303387767,PL
+2303387768,2303387839,FR
+2303387840,2303387871,LT
+2303387872,2303388351,FR
+2303388352,2303388415,CZ
+2303388416,2303388543,ES
+2303388544,2303390015,FR
+2303390016,2303390079,GB
+2303390080,2303390655,FR
+2303390656,2303390719,PL
+2303390720,2303391007,FR
+2303391008,2303391039,IE
+2303391040,2303391103,FR
+2303391104,2303391231,GB
+2303391232,2303392575,FR
+2303392576,2303392607,PT
+2303392608,2303392615,ES
+2303392616,2303392695,FR
+2303392696,2303392703,ES
+2303392704,2303392843,FR
+2303392844,2303392847,FI
+2303392848,2303392895,FR
+2303392896,2303392899,DE
+2303392900,2303393247,FR
+2303393248,2303393263,GB
+2303393264,2303393535,FR
+2303393536,2303393567,PT
+2303393568,2303393791,FR
2303393792,2303459327,US
2303459328,2303524863,AU
2303524864,2303852543,US
@@ -61289,20 +69639,13 @@
2304507904,2304573439,AU
2304573440,2304638975,NO
2304638976,2304704511,CA
-2304704512,2304770047,US
+2304704512,2304712703,DE
+2304712704,2304770047,US
2304770048,2304835583,FI
2304835584,2304901119,IN
2304901120,2304966655,CZ
2304966656,2305097727,US
-2305097728,2305112063,ES
-2305112064,2305112575,GB
-2305112576,2305114623,ES
-2305114624,2305116159,GB
-2305116160,2305119743,ES
-2305119744,2305120255,GB
-2305120256,2305142271,ES
-2305142272,2305143551,GB
-2305143552,2305163263,ES
+2305097728,2305163263,ES
2305163264,2305359871,US
2305359872,2305425407,GB
2305425408,2305556479,US
@@ -61328,7 +69671,12 @@
2306932736,2306998271,FR
2306998272,2307129343,US
2307129344,2307194879,SG
-2307194880,2307260415,NO
+2307194880,2307195903,BR
+2307195904,2307196927,IT
+2307196928,2307197951,FI
+2307197952,2307198975,DE
+2307198976,2307199999,SE
+2307200000,2307260415,NO
2307260416,2307278847,US
2307278848,2307280895,AU
2307280896,2307358719,US
@@ -61368,7 +69716,9 @@
2311061504,2311127039,US
2311127040,2311192575,DE
2311192576,2311258111,FR
-2311258112,2311323647,GB
+2311258112,2311315455,GB
+2311315456,2311319551,MY
+2311319552,2311323647,GB
2311323648,2311389183,MW
2311389184,2311847935,US
2311847936,2311913471,IT
@@ -61387,7 +69737,9 @@
2312962048,2312968191,GB
2312968192,2312970239,NO
2312970240,2312978431,DE
-2312978432,2313158655,GB
+2312978432,2312994815,FR
+2312994816,2313093119,GB
+2313093120,2313158655,IE
2313158656,2313224191,NL
2313224192,2313289727,US
2313289728,2313355263,DE
@@ -61424,7 +69776,7 @@
2315317248,2315318271,HN
2315318272,2315321343,BR
2315321344,2315452415,US
-2315452416,2315517951,SE
+2315452416,2315517951,GB
2315517952,2315583487,ES
2315583488,2315649023,US
2315649024,2315714559,SE
@@ -61444,12 +69796,13 @@
2316828672,2316959743,AU
2316959744,2317221887,US
2317221888,2317287423,JP
-2317287424,2317357567,US
-2317357568,2317357823,AU
-2317357824,2317393919,US
+2317287424,2317357055,US
+2317357056,2317361151,AU
+2317361152,2317393919,US
2317393920,2317398015,NO
2317398016,2317398271,GB
-2317398272,2317413375,US
+2317398272,2317412351,US
+2317412352,2317413375,CA
2317413376,2317413631,ID
2317413632,2317414655,US
2317414656,2317414911,AU
@@ -61458,7 +69811,7 @@
2317487360,2317487615,US
2317487616,2317549567,CA
2317549568,2317615103,US
-2317615104,2317619199,BR
+2317615104,2317617151,BR
2317619200,2317620223,AR
2317620224,2317621247,BR
2317621248,2317622271,DO
@@ -61469,14 +69822,11 @@
2317632512,2317634559,BR
2317634560,2317635583,BO
2317635584,2317638655,BR
-2317638656,2317638863,HN
-2317638864,2317638871,BR
-2317638872,2317639679,HN
+2317638656,2317639679,US
2317639680,2317640703,AR
2317640704,2317649919,BR
-2317649920,2317649991,HN
-2317649992,2317649999,US
-2317650000,2317650943,HN
+2317649920,2317650431,US
+2317650432,2317650943,HN
2317650944,2317651967,BR
2317651968,2317652991,PE
2317652992,2317654015,AR
@@ -61499,9 +69849,8 @@
2318598144,2318663679,CA
2318663680,2319122431,US
2319122432,2319123455,AR
-2319123456,2319123999,HN
-2319124000,2319124007,US
-2319124008,2319124479,HN
+2319123456,2319123967,HN
+2319123968,2319124479,US
2319124480,2319125503,VE
2319125504,2319126527,UY
2319126528,2319127551,CR
@@ -61515,7 +69864,6 @@
2319152128,2319153151,VE
2319153152,2319156223,BR
2319156224,2319157247,CR
-2319157248,2319158271,BR
2319158272,2319159295,AR
2319159296,2319160319,BR
2319160320,2319161343,PA
@@ -61526,22 +69874,29 @@
2319169536,2319174655,BR
2319174656,2319175583,HN
2319175584,2319175591,BR
-2319175592,2319175647,HN
-2319175648,2319175663,BR
-2319175664,2319175679,HN
+2319175592,2319175679,HN
2319175680,2319184895,BR
2319184896,2319185919,AR
2319185920,2319187967,BR
2319187968,2319319039,US
2319319040,2319384575,NO
2319384576,2319450111,FR
-2319450112,2319581183,US
+2319450112,2319451135,JP
+2319451136,2319451391,US
+2319451392,2319466495,JP
+2319466496,2319466751,US
+2319466752,2319467519,JP
+2319467520,2319467775,US
+2319467776,2319507455,JP
+2319507456,2319581183,US
2319581184,2319646719,IT
-2319646720,2319747251,US
-2319747252,2319747252,GB
-2319747253,2319751172,US
-2319751173,2319751173,GB
-2319751174,2319764479,US
+2319646720,2319728639,US
+2319728640,2319741951,DE
+2319741952,2319742975,GB
+2319742976,2319743999,NL
+2319744000,2319745023,DE
+2319745024,2319761407,GB
+2319761408,2319764479,US
2319764480,2319765503,NL
2319765504,2319843327,US
2319843328,2319908863,IT
@@ -61569,26 +69924,20 @@
2321431552,2321446911,BR
2321446912,2321447263,HN
2321447264,2321447279,NL
-2321447280,2321447647,HN
-2321447648,2321447679,NL
-2321447680,2321447727,HN
-2321447728,2321447743,NL
-2321447744,2321447935,HN
+2321447280,2321447935,HN
2321447936,2321452031,BR
2321452032,2321453055,MX
2321453056,2321453359,HN
2321453360,2321453367,NL
-2321453368,2321453487,HN
-2321453488,2321453495,CA
-2321453496,2321454079,HN
+2321453368,2321454079,HN
2321454080,2321467136,BR
2321467137,2321467137,US
2321467138,2321471487,BR
-2321471488,2321472039,HN
+2321471488,2321472039,US
2321472040,2321472047,CA
-2321472048,2321472391,HN
+2321472048,2321472391,US
2321472392,2321472399,UY
-2321472400,2321472511,HN
+2321472400,2321472511,US
2321472512,2321477631,BR
2321477632,2321478655,TT
2321478656,2321479679,SV
@@ -61622,15 +69971,10 @@
2321743872,2321744895,SV
2321744896,2321745919,AR
2321745920,2321753087,BR
-2321753088,2321753359,HN
-2321753360,2321753375,NL
-2321753376,2321753599,HN
-2321753600,2321753607,NL
-2321753608,2321753727,HN
+2321753088,2321753599,US
+2321753600,2321753727,HN
2321753728,2321753735,NL
-2321753736,2321753927,HN
-2321753928,2321753935,NL
-2321753936,2321754111,HN
+2321753736,2321754111,HN
2321754112,2321755135,BR
2321755136,2321756159,UY
2321756160,2321769471,BR
@@ -61659,7 +70003,7 @@
2321789952,2321790975,SV
2321790976,2321791999,AR
2321792000,2321797119,BR
-2321797120,2321797375,NO
+2321797120,2321797375,US
2321797376,2321797631,GR
2321797632,2321797887,SE
2321797888,2321798143,NL
@@ -61759,7 +70103,6 @@
2323222528,2323225599,BR
2323225600,2323226623,CO
2323226624,2323227647,AR
-2323227648,2323228671,BR
2323228672,2323229695,CL
2323229696,2323230719,BR
2323230720,2323231743,CL
@@ -61787,7 +70130,8 @@
2323293184,2323298303,BR
2323298304,2323299327,PY
2323299328,2323300351,AR
-2323300352,2323301375,HN
+2323300352,2323300359,US
+2323300360,2323301375,HN
2323301376,2323302399,BR
2323302400,2323303423,CO
2323303424,2323308543,BR
@@ -61799,21 +70143,17 @@
2323315712,2323316735,MX
2323316736,2323382271,US
2323382272,2323447807,NO
-2323447808,2323644431,US
-2323644432,2323644495,CA
+2323447808,2323644447,US
+2323644448,2323644495,CA
2323644496,2323644511,US
2323644512,2323644543,CA
-2323644544,2323644575,US
-2323644576,2323644607,CA
-2323644608,2323644631,US
+2323644544,2323644631,US
2323644632,2323644639,CA
-2323644640,2323644719,US
+2323644640,2323644655,US
+2323644656,2323644671,CA
+2323644672,2323644719,US
2323644720,2323644799,CA
-2323644800,2323644895,US
-2323644896,2323644927,CA
-2323644928,2323645071,US
-2323645072,2323645087,CA
-2323645088,2323645119,US
+2323644800,2323645119,US
2323645120,2323645135,CA
2323645136,2323645151,US
2323645152,2323645191,CA
@@ -61822,12 +70162,8 @@
2323645264,2323645279,CA
2323645280,2323645471,US
2323645472,2323645503,CA
-2323645504,2323645535,US
-2323645536,2323645567,CA
-2323645568,2323645663,US
-2323645664,2323645695,CA
-2323645696,2323645951,US
-2323645952,2323645983,CA
+2323645504,2323645967,US
+2323645968,2323645983,CA
2323645984,2323645999,US
2323646000,2323646015,CA
2323646016,2323646079,US
@@ -61841,42 +70177,30 @@
2323646464,2323646479,CA
2323646480,2323646495,US
2323646496,2323646527,CA
-2323646528,2323646783,US
-2323646784,2323646799,CA
-2323646800,2323646815,US
+2323646528,2323646815,US
2323646816,2323646831,CA
2323646832,2323646911,US
2323646912,2323646975,CA
-2323646976,2323647119,US
-2323647120,2323647135,CA
-2323647136,2323647199,US
+2323646976,2323647199,US
2323647200,2323647215,CA
-2323647216,2323647311,US
-2323647312,2323647407,CA
-2323647408,2323647487,US
-2323647488,2323647519,CA
-2323647520,2323647535,US
+2323647216,2323647327,US
+2323647328,2323647359,CA
+2323647360,2323647391,US
+2323647392,2323647407,CA
+2323647408,2323647535,US
2323647536,2323647583,CA
-2323647584,2323647743,US
-2323647744,2323647775,CA
-2323647776,2323647791,US
-2323647792,2323647807,CA
-2323647808,2323647871,US
+2323647584,2323647759,US
+2323647760,2323647775,CA
+2323647776,2323647871,US
2323647872,2323647903,CA
2323647904,2323647999,US
2323648000,2323648007,CA
2323648008,2323648015,FI
-2323648016,2323648031,US
-2323648032,2323648063,CA
-2323648064,2323648319,US
+2323648016,2323648319,US
2323648320,2323648335,CA
-2323648336,2323648351,US
-2323648352,2323648367,CA
-2323648368,2323648639,US
+2323648336,2323648639,US
2323648640,2323648655,CA
-2323648656,2323648671,US
-2323648672,2323648703,CA
-2323648704,2323648767,US
+2323648656,2323648767,US
2323648768,2323648943,CA
2323648944,2323648951,US
2323648952,2323649023,CA
@@ -61893,8 +70217,8 @@
2323649920,2323649935,US
2323649936,2323649951,CA
2323649952,2323649959,US
-2323649960,2323649999,CA
-2323650000,2323650007,US
+2323649960,2323649983,CA
+2323649984,2323650007,US
2323650008,2323650015,RO
2323650016,2323650023,CA
2323650024,2323650031,US
@@ -61914,24 +70238,32 @@
2323650240,2323650255,US
2323650256,2323650263,CA
2323650264,2323650271,US
-2323650272,2323651327,CA
+2323650272,2323650367,CA
+2323650368,2323650375,SE
+2323650376,2323650527,CA
+2323650528,2323650559,US
+2323650560,2323651103,CA
+2323651104,2323651135,US
+2323651136,2323651327,CA
2323651328,2323651583,US
-2323651584,2323652287,CA
-2323652288,2323652335,US
-2323652336,2323653119,CA
+2323651584,2323652223,CA
+2323652224,2323652255,US
+2323652256,2323652271,CA
+2323652272,2323652351,US
+2323652352,2323653119,CA
2323653120,2323653135,US
2323653136,2323653151,CA
2323653152,2323653375,US
2323653376,2323653631,CA
2323653632,2323653887,US
-2323653888,2323655423,CA
+2323653888,2323654143,CA
+2323654144,2323654399,US
+2323654400,2323655423,CA
2323655424,2323655503,US
2323655504,2323655511,CA
-2323655512,2323655519,US
-2323655520,2323655551,CA
-2323655552,2323655823,US
-2323655824,2323655871,CA
-2323655872,2323655935,US
+2323655512,2323655823,US
+2323655824,2323655839,CA
+2323655840,2323655935,US
2323655936,2323655967,CA
2323655968,2323655983,US
2323655984,2323655991,CA
@@ -61939,13 +70271,11 @@
2323656000,2323656031,CA
2323656032,2323656207,US
2323656208,2323656255,CA
-2323656256,2323656271,US
-2323656272,2323656287,CA
-2323656288,2323656447,US
+2323656256,2323656447,US
2323656448,2323656607,CA
2323656608,2323656639,US
-2323656640,2323656719,CA
-2323656720,2323656735,US
+2323656640,2323656703,CA
+2323656704,2323656735,US
2323656736,2323656767,CA
2323656768,2323656815,US
2323656816,2323656831,CA
@@ -61953,26 +70283,22 @@
2323656896,2323656927,CA
2323656928,2323656959,US
2323656960,2323657215,CA
-2323657216,2323657263,US
-2323657264,2323657279,CA
-2323657280,2323657311,US
+2323657216,2323657311,US
2323657312,2323657343,CA
2323657344,2323657535,US
2323657536,2323657551,CA
2323657552,2323657559,US
2323657560,2323657663,CA
-2323657664,2323657695,US
-2323657696,2323657711,CA
-2323657712,2323657759,US
-2323657760,2323657775,CA
-2323657776,2323657839,US
+2323657664,2323657839,US
2323657840,2323657919,CA
2323657920,2323658495,US
2323658496,2323658751,CA
2323658752,2323659263,US
2323659264,2323659775,CA
-2323659776,2323660191,US
-2323660192,2323661143,CA
+2323659776,2323660223,US
+2323660224,2323660799,CA
+2323660800,2323661055,US
+2323661056,2323661143,CA
2323661144,2323661151,US
2323661152,2323661199,CA
2323661200,2323661223,US
@@ -61983,8 +70309,8 @@
2323661568,2323661607,CA
2323661608,2323661615,FI
2323661616,2323661623,CA
-2323661624,2323661823,US
-2323661824,2323662399,CA
+2323661624,2323662335,US
+2323662336,2323662399,CA
2323662400,2323662527,US
2323662528,2323662655,CA
2323662656,2323662719,US
@@ -62002,7 +70328,7 @@
2323663840,2323663871,US
2323663872,2323664959,CA
2323664960,2323665039,US
-2323665040,2323665047,CA
+2323665040,2323665047,SE
2323665048,2323665087,US
2323665088,2323665919,CA
2323665920,2323666687,US
@@ -62013,12 +70339,15 @@
2323670016,2323670271,CA
2323670272,2323671039,US
2323671040,2323671295,CA
-2323671296,2323671551,US
-2323671552,2323672063,CA
+2323671296,2323671807,US
+2323671808,2323672063,CA
2323672064,2323672127,US
2323672128,2323672191,CA
2323672192,2323672383,US
-2323672384,2323672463,CA
+2323672384,2323672415,CA
+2323672416,2323672447,US
+2323672448,2323672455,CA
+2323672456,2323672463,SE
2323672464,2323672479,US
2323672480,2323672511,CA
2323672512,2323672575,US
@@ -62032,8 +70361,10 @@
2323672848,2323672863,US
2323672864,2323672895,CA
2323672896,2323672959,US
-2323672960,2323673055,CA
-2323673056,2323673351,US
+2323672960,2323672991,CA
+2323672992,2323673007,US
+2323673008,2323673023,CA
+2323673024,2323673351,US
2323673352,2323673359,CA
2323673360,2323673375,US
2323673376,2323673391,CA
@@ -62046,7 +70377,9 @@
2323674112,2323674175,US
2323674176,2323674575,CA
2323674576,2323674591,US
-2323674592,2323674767,CA
+2323674592,2323674639,CA
+2323674640,2323674647,CN
+2323674648,2323674767,CA
2323674768,2323674775,US
2323674776,2323674799,CA
2323674800,2323674879,US
@@ -62055,15 +70388,11 @@
2323675520,2323675647,CA
2323675648,2323675839,US
2323675840,2323675903,CA
-2323675904,2323676927,US
-2323676928,2323676991,CA
-2323676992,2323690495,US
+2323675904,2323690495,US
2323690496,2323690751,IN
2323690752,2323699711,US
2323699712,2323700735,NL
-2323700736,2323701759,US
-2323701760,2323703295,VG
-2323703296,2323775487,US
+2323700736,2323775487,US
2323775488,2323841023,AU
2323841024,2323906559,CH
2323906560,2323972095,IT
@@ -62071,7 +70400,13 @@
2324021248,2324021503,MY
2324021504,2324037631,US
2324037632,2324103167,IL
-2324103168,2327379967,US
+2324103168,2325979176,US
+2325979177,2325979177,JP
+2325979178,2327101953,US
+2327101954,2327101954,ES
+2327101955,2327101955,GR
+2327101956,2327101956,IT
+2327101957,2327379967,US
2327379968,2327380991,MX
2327380992,2327383039,BR
2327383040,2327384063,CL
@@ -62118,11 +70453,7 @@
2327477248,2327480319,BR
2327480320,2327481007,HN
2327481008,2327481023,US
-2327481024,2327481055,HN
-2327481056,2327481071,US
-2327481072,2327481135,HN
-2327481136,2327481143,US
-2327481144,2327481343,HN
+2327481024,2327481343,HN
2327481344,2327481599,MX
2327481600,2327482367,AR
2327482368,2327483391,BR
@@ -62138,9 +70469,7 @@
2327497728,2327498751,BR
2327498752,2327499055,HN
2327499056,2327499063,CL
-2327499064,2327499343,HN
-2327499344,2327499351,CL
-2327499352,2327499623,HN
+2327499064,2327499623,HN
2327499624,2327499631,CL
2327499632,2327499639,HN
2327499640,2327499647,CL
@@ -62157,11 +70486,17 @@
2327969792,2328035327,AU
2328035328,2328100863,FR
2328100864,2328199167,US
-2328199168,2328215657,CA
-2328215658,2328215658,US
-2328215659,2328231935,CA
+2328199168,2328211455,CA
+2328211456,2328215551,DE
+2328215552,2328228863,US
+2328228864,2328230911,CA
+2328230912,2328231935,US
2328231936,2328297471,GB
-2328313856,2328317951,NL
+2328313856,2328317183,NL
+2328317184,2328317184,DE
+2328317185,2328317439,NL
+2328317440,2328317695,DE
+2328317696,2328317951,NL
2328342528,2328342783,DE
2328362752,2328485437,DE
2328485438,2328485438,NL
@@ -62194,10 +70529,10 @@
2328690688,2328756223,BE
2328756224,2328766591,CH
2328766592,2328766655,HK
-2328766656,2328794239,CH
+2328766656,2328788991,CH
+2328788992,2328794239,AU
2328794240,2328794303,JP
-2328794304,2328797183,CH
-2328797184,2328805375,AU
+2328794304,2328805375,AU
2328805376,2328808063,CH
2328808064,2328808127,HK
2328808128,2328821759,CH
@@ -62224,19 +70559,15 @@
2329627648,2329628671,BR
2329628672,2329629695,AR
2329629696,2329638911,BR
-2329638912,2329639071,HN
-2329639072,2329639087,NL
-2329639088,2329639367,HN
-2329639368,2329639375,NL
-2329639376,2329639935,HN
+2329638912,2329639423,US
+2329639424,2329639935,HN
2329639936,2329644031,BR
2329644032,2329645055,CW
2329645056,2329648127,BR
2329648128,2329649151,SV
2329649152,2329650175,AR
2329650176,2329652223,BR
-2329652224,2329652735,US
-2329652736,2329653247,HN
+2329652224,2329653247,HN
2329653248,2329662463,BR
2329662464,2329664511,AR
2329664512,2329666559,BR
@@ -62246,11 +70577,14 @@
2329671680,2329672703,AR
2329672704,2329673727,BR
2329673728,2329739263,US
-2329739264,2329796607,CH
-2329796608,2329804799,SE
-2329804800,2330084351,CH
-2330084352,2330084863,US
-2330084864,2330263551,CH
+2329739264,2329804799,SE
+2329804800,2329870335,DE
+2329870336,2329935871,CH
+2329935872,2330001407,DE
+2330001408,2330066943,CH
+2330066944,2330132479,US
+2330132480,2330198015,SE
+2330198016,2330263551,CH
2330263552,2330267647,US
2330267648,2330271743,CA
2330271744,2330288127,US
@@ -62308,7 +70642,7 @@
2332378112,2332380159,NP
2332380160,2332381183,AU
2332381184,2332382207,CN
-2332382208,2332383231,US
+2332382208,2332383231,CA
2332383232,2332384255,JP
2332384256,2332385279,CN
2332385280,2332387327,IN
@@ -62343,7 +70677,7 @@
2332424192,2332426239,IN
2332426240,2332622847,DE
2332622848,2332688383,CN
-2332688384,2332753919,BE
+2332688384,2332753919,NL
2332753920,2333736959,DE
2333736960,2333802495,RE
2333802496,2333868031,DE
@@ -62362,20 +70696,14 @@
2335637504,2335768575,US
2335768576,2335834111,CA
2335834112,2335899647,SE
-2335899648,2335926749,IN
-2335926750,2335926750,SG
-2335926751,2335932415,IN
-2335932416,2335945846,SG
-2335945847,2335945847,GB
-2335945848,2335945863,SG
-2335945864,2335945864,GB
-2335945865,2335946186,SG
-2335946187,2335946187,GB
-2335946188,2335948499,SG
-2335948500,2335948500,GB
-2335948501,2335951266,SG
-2335951267,2335951267,GB
-2335951268,2335965183,SG
+2335899648,2335924223,IN
+2335924224,2335932415,SG
+2335932416,2335940607,DE
+2335940608,2335948799,GB
+2335948800,2335949823,SG
+2335949824,2335951871,GB
+2335951872,2335954943,DE
+2335954944,2335965183,SG
2335965184,2335970303,US
2335970304,2335971327,CA
2335971328,2335994879,US
@@ -62388,14 +70716,20 @@
2336161792,2336227327,NL
2336227328,2336260095,CA
2336260096,2336358399,US
-2336358400,2336423935,FI
+2336358400,2336407551,DE
+2336407552,2336410623,SE
+2336410624,2336411647,US
+2336411648,2336412671,SG
+2336412672,2336423935,SE
2336423936,2336882687,US
2336882688,2336948223,FI
2336948224,2337013759,DE
2337013760,2337210367,US
2337210368,2337275903,CH
2337275904,2337341439,NZ
-2337341440,2337351679,US
+2337341440,2337347583,US
+2337347584,2337348607,ID
+2337348608,2337351679,US
2337351680,2337352191,DO
2337352192,2337352703,LA
2337352704,2337353215,MY
@@ -62423,7 +70757,9 @@
2337390592,2337392639,CL
2337392640,2337393663,BO
2337393664,2337394687,AR
-2337394688,2337402879,US
+2337394688,2337400831,US
+2337400832,2337401855,PH
+2337401856,2337402879,VN
2337402880,2337403391,LK
2337403392,2337403903,VN
2337403904,2337404927,JP
@@ -62465,16 +70801,28 @@
2338324480,2338390015,SE
2338390016,2338455551,FI
2338455552,2338521087,NO
-2338521088,2338553855,SG
-2338553856,2338586623,AU
+2338521088,2338526199,SG
+2338526200,2338526203,CA
+2338526204,2338530375,SG
+2338530376,2338530383,CA
+2338530384,2338531199,SG
+2338531200,2338531207,CA
+2338531208,2338553855,SG
+2338553856,2338570805,AU
+2338570806,2338570806,NZ
+2338570807,2338586623,AU
2338586624,2338652159,FR
2338652160,2338717695,JP
2338717696,2338783231,US
2338783232,2338848767,CA
-2338848768,2338914303,US
+2338848768,2338904063,US
+2338904064,2338905087,NL
+2338905088,2338914303,US
2338914304,2339962879,NO
2339962880,2340028415,US
-2340028416,2340093951,NL
+2340028416,2340081663,SE
+2340081664,2340085759,BR
+2340085760,2340093951,SE
2340093952,2340159487,FI
2340159488,2340225023,FR
2340225024,2340421631,US
@@ -62494,7 +70842,13 @@
2341135360,2341135615,SG
2341135616,2341135871,JP
2341135872,2341136127,CN
-2341136128,2341273599,US
+2341136128,2341136639,US
+2341136640,2341136655,DE
+2341136656,2341143362,US
+2341143363,2341143363,DE
+2341143364,2341147459,US
+2341147460,2341147460,DE
+2341147461,2341273599,US
2341273600,2341339135,KW
2341339136,2341404671,CA
2341404672,2341470207,GB
@@ -62571,24 +70925,34 @@
2353922048,2353987583,AT
2353987584,2354053119,AU
2354053120,2354118655,CA
-2354184192,2354249727,US
+2354184192,2354192383,US
+2354192384,2354194431,DE
+2354194432,2354197503,US
+2354197504,2354198527,FR
+2354198528,2354199551,NL
+2354199552,2354233343,US
+2354233344,2354237439,HK
+2354237440,2354249727,US
2354249728,2354315263,AU
-2354315264,2354511871,SE
+2354315264,2354446335,US
+2354446336,2354511871,FR
2354511872,2354839551,US
2354839552,2354905087,TW
2354905088,2355036159,FR
2355036160,2355101695,US
2355101696,2355167231,TW
2355167232,2355232767,GB
-2355232768,2355437551,US
-2355437552,2355437567,GB
+2355232768,2355437311,US
+2355437312,2355437567,GB
2355437568,2355470319,US
2355470320,2355470335,SG
-2355470336,2355482607,US
+2355470336,2355470575,US
+2355470576,2355470591,PL
+2355470592,2355482607,US
2355482608,2355482623,HK
-2355482624,2355491311,US
-2355491312,2355491327,AU
-2355491328,2355691519,US
+2355482624,2355486719,US
+2355486720,2355494911,AU
+2355494912,2355691519,US
2355691520,2355757055,IT
2355757056,2355953663,US
2355953664,2357919743,TW
@@ -62605,10 +70969,13 @@
2359361536,2359427071,CA
2359427072,2359558143,US
2359558144,2359623679,IT
-2359623680,2359689215,US
+2359623680,2359636991,US
+2359636992,2359637503,CA
+2359637504,2359689215,US
2359689216,2359754751,SE
2359754752,2359820287,CA
-2359820288,2359885823,AU
+2359820288,2359884799,AU
+2359884800,2359885823,NZ
2359885824,2360672255,US
2360672256,2360737791,DE
2360737792,2360868863,US
@@ -62633,8 +71000,7 @@
2363686912,2363752447,JP
2363752448,2363883519,US
2363883520,2363949055,CA
-2363949056,2364014591,DE
-2364014592,2364342271,US
+2363949056,2364342271,US
2364342272,2364407807,CN
2364407808,2364538879,US
2364538880,2364604415,CN
@@ -62659,9 +71025,10 @@
2365456384,2365521919,US
2365521920,2365587455,CN
2365587456,2365589503,JO
-2365589504,2365590527,US
+2365589504,2365589759,SG
+2365589760,2365590015,IN
+2365590016,2365590527,SG
2365590528,2365591039,ZA
-2365591040,2365591551,US
2365591552,2365593599,DE
2365593600,2365595647,NL
2365595648,2365603839,GB
@@ -62673,7 +71040,11 @@
2365636608,2365638655,GB
2365638656,2365640703,FR
2365640704,2365644799,GB
-2365644800,2365652991,NO
+2365644800,2365646079,NO
+2365646080,2365646335,SJ
+2365646336,2365651455,NO
+2365651456,2365651711,SJ
+2365651712,2365652991,NO
2365652992,2366032895,DE
2366032896,2366033151,GB
2366033152,2366111743,DE
@@ -62708,18 +71079,25 @@
2366169088,2366171135,CH
2366171136,2366308351,DE
2366308352,2366373887,GB
-2366373888,2370895871,DE
+2366373888,2367487999,DE
+2367488000,2367529983,SI
+2367529984,2367530239,AE
+2367530240,2367548415,SI
+2367548416,2367548671,AE
+2367548672,2367553535,SI
+2367553536,2370695167,DE
+2370695168,2370699263,GB
+2370699264,2370895871,DE
2370895872,2370961407,SE
2370961408,2371158015,DE
2371158016,2371223551,RO
2371223552,2371289087,US
2371289088,2371616767,DE
2371616768,2371682303,GB
-2371682304,2371747839,NL
-2371747840,2371813887,GB
+2371682304,2371813887,NL
2371813888,2371814143,US
2371814144,2371814144,CH
-2371814145,2371878911,GB
+2371814145,2371878911,NL
2371878912,2371944447,BE
2371944448,2372009983,GB
2372075520,2372206591,DE
@@ -62732,57 +71110,31 @@
2372224512,2372225023,GB
2372225024,2372225791,US
2372225792,2372226559,NL
-2372226560,2372227071,US
-2372227072,2372227583,RU
-2372227584,2372228607,KR
-2372228608,2372229119,US
-2372229120,2372229375,FR
-2372229376,2372230655,US
+2372227072,2372229119,KR
+2372229120,2372230655,FR
2372230656,2372231679,CZ
2372231680,2372232191,GB
2372232192,2372233215,CL
2372233216,2372233727,NL
2372233728,2372234239,GB
2372234240,2372235263,CO
-2372239360,2372240511,NL
+2372239360,2372239564,SK
+2372239565,2372239580,IT
+2372239581,2372240383,SK
+2372240384,2372240511,NL
2372240512,2372240639,LU
2372240640,2372240895,NL
2372240896,2372241151,DE
2372241152,2372241407,PK
-2372241408,2372243199,RU
+2372241408,2372241663,TJ
+2372241664,2372243199,RU
2372243200,2372243455,RO
2372243456,2372243711,DK
2372243712,2372243967,AM
2372243968,2372244223,NO
2372244224,2372244479,BN
2372244480,2372251391,US
-2372251392,2372252415,RU
-2372252416,2372253439,NL
-2372253440,2372254207,RU
-2372254208,2372254975,NL
-2372254976,2372255487,RU
-2372255488,2372255743,NL
-2372255744,2372255999,RU
-2372256000,2372256767,NL
-2372256768,2372257023,RU
-2372257024,2372257791,NL
-2372257792,2372258047,RU
-2372258048,2372260351,NL
-2372260352,2372260607,RU
-2372260608,2372260863,NL
-2372260864,2372263935,RU
-2372263936,2372264191,NL
-2372264192,2372264447,RU
-2372264448,2372264703,NL
-2372264704,2372264959,RU
-2372264960,2372265215,NL
-2372265216,2372267263,RU
-2372267264,2372267775,NL
-2372267776,2372268031,RU
-2372268032,2372269055,NL
-2372269056,2372270335,RU
-2372270336,2372271103,NL
-2372271104,2372272127,RU
+2372251392,2372272127,RU
2372272128,2372337663,US
2372337664,2372403199,ID
2372403200,2372468735,US
@@ -62814,9 +71166,7 @@
2372993024,2373025791,DE
2373025792,2373026047,SG
2373026048,2373029887,DE
-2373029888,2373033983,US
-2373033984,2373036031,DE
-2373036032,2373038079,US
+2373029888,2373038079,US
2373038080,2373058559,DE
2373058560,2373124095,US
2373124096,2373189631,FR
@@ -62840,11 +71190,11 @@
2374512640,2374514687,SK
2374514688,2374516735,ES
2374516736,2374524927,AM
-2374524928,2374525717,DE
+2374524928,2374525717,FR
2374525718,2374525718,BE
-2374525719,2374528261,DE
+2374525719,2374528261,FR
2374528262,2374528262,PL
-2374528263,2374529023,DE
+2374528263,2374529023,FR
2374529024,2374531071,RU
2374531072,2374533119,NL
2374533120,2374565887,HR
@@ -62865,12 +71215,19 @@
2374686720,2374688767,NL
2374688768,2374696959,GB
2374696960,2374959103,US
-2374959104,2375013631,SE
-2375013632,2375013887,GB
-2375013888,2375102259,SE
+2374959104,2375008255,GB
+2375008256,2375012351,NL
+2375012352,2375024639,GB
+2375024640,2375090175,DK
+2375090176,2375102259,NO
2375102260,2375102260,GB
-2375102261,2375352319,SE
-2375352320,2376083199,US
+2375102261,2375155711,NO
+2375155712,2375221247,US
+2375221248,2375286783,SE
+2375286784,2375352319,CH
+2375352320,2376079359,US
+2376079360,2376081407,GB
+2376081408,2376083199,US
2376083200,2376083455,CA
2376083456,2376083711,US
2376083712,2376083967,AU
@@ -62909,17 +71266,30 @@
2378210560,2378211071,NO
2378211072,2378235903,FI
2378235904,2378236415,CA
-2378236416,2378237951,ES
-2378237952,2378238975,US
+2378236416,2378237183,ES
+2378237184,2378237439,US
+2378237440,2378237695,ES
+2378237696,2378238975,US
2378238976,2378239487,CA
2378239488,2378240511,US
2378240512,2378242047,ES
-2378242048,2378242559,US
-2378242560,2378248191,ES
+2378242048,2378242815,US
+2378242816,2378248191,ES
2378248192,2378250751,US
2378250752,2378251263,ES
-2378251264,2378252287,US
-2378252288,2378301439,ES
+2378251264,2378252799,US
+2378252800,2378254335,ES
+2378254336,2378254591,US
+2378254592,2378256383,ES
+2378256384,2378257407,US
+2378257408,2378260479,ES
+2378260480,2378260991,GB
+2378260992,2378261503,US
+2378261504,2378285567,ES
+2378285568,2378286079,US
+2378286080,2378287615,ES
+2378287616,2378288127,US
+2378288128,2378301439,ES
2378301440,2378366975,FR
2378366976,2378432511,US
2378432512,2378498047,TR
@@ -62937,7 +71307,10 @@
2379284480,2380201983,US
2380201984,2380267519,KR
2380267520,2380398591,US
-2380398592,2380427263,IL
+2380398592,2380420095,IL
+2380420096,2380420863,GB
+2380420864,2380423167,IL
+2380423168,2380427263,US
2380427264,2380428799,GB
2380428800,2380430847,IL
2380430848,2380431103,GB
@@ -62982,8 +71355,7 @@
2382168064,2382233599,BE
2382233600,2382299135,US
2382299136,2382331903,GR
-2382331904,2382335999,FR
-2382336000,2382340095,NL
+2382331904,2382340095,FR
2382340096,2382342143,CH
2382342144,2382344191,AT
2382344192,2382346239,NL
@@ -63029,7 +71401,9 @@
2385032704,2385035263,BR
2385035264,2385293087,CA
2385293088,2385293111,US
-2385293112,2385307727,CA
+2385293112,2385295359,CA
+2385295360,2385295615,US
+2385295616,2385307727,CA
2385307728,2385307735,US
2385307736,2385903615,CA
2385903616,2385908735,US
@@ -63073,7 +71447,11 @@
2389245952,2389311487,US
2389311488,2389639167,CA
2389639168,2389671935,US
-2389671936,2389688319,CN
+2389671936,2389683199,CN
+2389683200,2389683455,US
+2389683456,2389684479,CN
+2389684480,2389684735,US
+2389684736,2389688319,CN
2389688320,2389704703,US
2389704704,2390818815,CA
2390818816,2390884351,US
@@ -63114,12 +71492,18 @@
2392129536,2392457215,CA
2392457216,2392489983,SA
2392489984,2392514559,US
-2392514560,2394947583,CA
+2392514560,2394816511,CA
+2394816512,2394882047,US
+2394882048,2394947583,CA
2394947584,2395013119,US
2395013120,2395209727,CA
2395209728,2395340799,US
-2395340800,2395807743,CA
-2395807744,2395815935,US
+2395340800,2395804415,CA
+2395804416,2395804671,US
+2395804672,2395810815,CA
+2395810816,2395811071,US
+2395811072,2395811839,CA
+2395811840,2395815935,US
2395815936,2395841023,CA
2395841024,2395841535,GB
2395841536,2397700095,CA
@@ -63164,7 +71548,9 @@
2399206400,2399207423,BR
2399207424,2401828863,US
2401828864,2401894399,GB
-2401894400,2402222079,US
+2401894400,2402157059,US
+2402157060,2402157060,JP
+2402157061,2402222079,US
2402222080,2402287615,IE
2402287616,2402418687,US
2402418688,2402484223,AT
@@ -63172,10 +71558,14 @@
2402549760,2402680831,GB
2402680832,2402746367,BR
2402746368,2402945023,US
-2402945024,2402945279,GB
-2402945280,2403401727,US
+2402945024,2402947071,GB
+2402947072,2403401727,US
2403401728,2403467263,GB
-2403467264,2404974591,US
+2403467264,2404476338,US
+2404476339,2404476339,SA
+2404476340,2404732927,US
+2404732928,2404737023,PR
+2404737024,2404974591,US
2404974592,2405040127,HK
2405040128,2405105663,JP
2405105664,2405171199,US
@@ -63226,29 +71616,14 @@
2408165376,2408169471,BR
2408169472,2408170495,TT
2408170496,2408178687,BR
-2408178688,2408178695,IT
-2408178696,2408179375,HN
-2408179376,2408179391,IT
-2408179392,2408179423,HN
+2408178688,2408179423,HN
2408179424,2408179431,IT
2408179432,2408179711,HN
2408179712,2408182783,BR
2408182784,2408183807,AR
2408183808,2408185855,BR
2408185856,2409562111,US
-2409562112,2409568255,GB
-2409568256,2409569279,US
-2409569280,2409599231,GB
-2409599232,2409599487,US
-2409599488,2409612799,GB
-2409612800,2409613311,US
-2409613312,2409617407,GB
-2409617408,2409618431,US
-2409618432,2409621503,GB
-2409621504,2409622527,US
-2409622528,2409623039,GB
-2409623040,2409624575,US
-2409624576,2409627647,GB
+2409562112,2409627647,GB
2409627648,2409693183,ZA
2409693184,2409758719,AT
2409758720,2409824255,US
@@ -63268,7 +71643,21 @@
2411363840,2411462655,US
2411462656,2411528191,AU
2411528192,2411593727,JP
-2411593728,2411749375,US
+2411593728,2411675647,US
+2411675648,2411685887,CN
+2411685888,2411687935,US
+2411687936,2411689983,ID
+2411689984,2411692031,MY
+2411692032,2411707391,US
+2411707392,2411708415,CN
+2411708416,2411710463,NL
+2411710464,2411715583,JP
+2411715584,2411716607,FR
+2411716608,2411723775,US
+2411723776,2411724287,DK
+2411724288,2411724543,SA
+2411724544,2411724799,AE
+2411724800,2411749375,US
2411749376,2411753471,MY
2411753472,2411757567,SG
2411757568,2411986943,US
@@ -63298,9 +71687,7 @@
2412430336,2412431359,HN
2412431360,2412432383,AR
2412432384,2412433407,MX
-2412433408,2412433663,PY
-2412433664,2412433919,BR
-2412433920,2412434431,PY
+2412433408,2412434431,PY
2412434432,2412444671,BR
2412444672,2412445695,NI
2412445696,2412576767,US
@@ -63380,7 +71767,8 @@
2415917056,2415918079,EC
2415918080,2415919103,BR
2415919104,2415984639,CN
-2416050176,2416066559,NL
+2416050176,2416058367,US
+2416058368,2416066559,IE
2416066560,2416082943,CH
2416082944,2416083967,GB
2416083968,2416084223,US
@@ -63393,7 +71781,8 @@
2416086272,2416087039,GB
2416087040,2416091135,US
2416091136,2416093183,ES
-2416093184,2416111615,NL
+2416093184,2416095231,NL
+2416095232,2416111615,US
2416111616,2416113663,IE
2416113664,2416114687,ES
2416114688,2416115711,NL
@@ -63411,9 +71800,10 @@
2416916992,2416967679,US
2416967680,2417033215,IN
2417033216,2417229823,US
-2417229824,2417360895,SE
+2417229824,2417295359,ES
+2417295360,2417360895,US
2417360896,2417491967,CR
-2417491968,2417557503,GR
+2417491968,2417557503,GB
2417557504,2417688575,US
2417688576,2417754111,SE
2417754112,2418016255,US
@@ -63534,8 +71924,8 @@
2418334720,2418339071,IN
2418339072,2418339839,MU
2418339840,2418340351,CN
-2418340352,2418340863,US
-2418340864,2418341375,IN
+2418340352,2418340607,US
+2418340608,2418341375,IN
2418341376,2418341887,PH
2418341888,2418342911,IN
2418342912,2418343423,PH
@@ -63544,11 +71934,13 @@
2418606080,2418671615,DE
2418671616,2418737151,US
2418737152,2418802687,NL
-2418868224,2419064831,US
+2418868224,2418998271,US
+2418998272,2418998527,GB
+2418998528,2419064831,US
2419064832,2419065855,BD
2419065856,2419067903,HK
2419067904,2419068927,CN
-2419068928,2419069951,NL
+2419068928,2419069951,AU
2419069952,2419071999,VN
2419072000,2419073023,PH
2419073024,2419074047,HK
@@ -63556,8 +71948,7 @@
2419075072,2419077119,KR
2419077120,2419079167,IN
2419079168,2419080191,CN
-2419080192,2419080703,GB
-2419080704,2419081215,SG
+2419080192,2419081215,GB
2419081216,2419082239,CN
2419082240,2419083263,HK
2419083264,2419085311,IN
@@ -63577,7 +71968,7 @@
2419095552,2419096575,PK
2419096576,2419098623,HK
2419098624,2419099647,PK
-2419099648,2419100671,SG
+2419099648,2419100671,KH
2419100672,2419101695,HK
2419101696,2419102719,MY
2419102720,2419103743,BD
@@ -63595,7 +71986,7 @@
2419120128,2419121151,HK
2419121152,2419122175,CN
2419122176,2419123199,IN
-2419123200,2419124223,SG
+2419123200,2419124223,KH
2419124224,2419125247,AU
2419125248,2419127295,HK
2419127296,2419128319,AU
@@ -63626,9 +72017,13 @@
2421555200,2421620735,US
2421620736,2421686271,GB
2421686272,2422145023,US
-2422145024,2422163455,NL
+2422145024,2422154239,NL
+2422154240,2422155263,US
+2422155264,2422161407,NL
+2422161408,2422163455,GB
2422163456,2422165503,US
-2422165504,2422210559,NL
+2422165504,2422167551,HK
+2422167552,2422210559,NL
2422210560,2422276095,US
2422276096,2422341631,AU
2422341632,2422407167,GB
@@ -63663,7 +72058,9 @@
2426962528,2426962543,US
2426962544,2426962551,CA
2426962552,2426962623,US
-2426962624,2426994687,CA
+2426962624,2426978303,CA
+2426978304,2426978815,NL
+2426978816,2426994687,CA
2426994688,2427224063,US
2427224064,2427256831,CA
2427256832,2427322367,GB
@@ -63671,68 +72068,221 @@
2427453440,2427536895,NO
2427536896,2427537151,US
2427537152,2427584511,NO
-2427584512,2427584743,US
+2427584512,2427584599,US
+2427584600,2427584639,GB
+2427584640,2427584743,US
2427584744,2427584765,CA
-2427584766,2427585235,US
+2427584766,2427584767,GB
+2427584768,2427584825,US
+2427584826,2427584831,GB
+2427584832,2427584851,US
+2427584852,2427584895,GB
+2427584896,2427584903,US
+2427584904,2427585023,GB
+2427585024,2427585097,US
+2427585098,2427585151,GB
+2427585152,2427585235,US
2427585236,2427585271,CA
2427585272,2427585275,BR
2427585276,2427585277,MX
-2427585278,2427585543,US
-2427585544,2427585605,GB
-2427585606,2427585607,US
-2427585608,2427585615,GB
-2427585616,2427585619,US
-2427585620,2427585625,GB
-2427585626,2427585631,US
+2427585278,2427585279,GB
+2427585280,2427585313,US
+2427585314,2427585343,GB
+2427585344,2427585377,US
+2427585378,2427585407,GB
+2427585408,2427585431,US
+2427585432,2427585471,GB
+2427585472,2427585527,US
+2427585528,2427585535,GB
+2427585536,2427585536,US
+2427585537,2427585543,GB
+2427585544,2427585544,US
+2427585545,2427585546,GB
+2427585547,2427585548,US
+2427585549,2427585550,GB
+2427585551,2427585551,US
+2427585552,2427585552,GB
+2427585553,2427585553,US
+2427585554,2427585554,GB
+2427585555,2427585556,US
+2427585557,2427585557,GB
+2427585558,2427585558,US
+2427585559,2427585559,GB
+2427585560,2427585560,US
+2427585561,2427585562,GB
+2427585563,2427585563,US
+2427585564,2427585565,GB
+2427585566,2427585566,US
+2427585567,2427585567,GB
+2427585568,2427585568,US
+2427585569,2427585569,GB
+2427585570,2427585570,US
+2427585571,2427585571,GB
+2427585572,2427585572,US
+2427585573,2427585573,GB
+2427585574,2427585574,US
+2427585575,2427585576,GB
+2427585577,2427585577,US
+2427585578,2427585579,GB
+2427585580,2427585580,US
+2427585581,2427585582,GB
+2427585583,2427585583,US
+2427585584,2427585584,GB
+2427585585,2427585585,US
+2427585586,2427585586,GB
+2427585587,2427585587,US
+2427585588,2427585589,GB
+2427585590,2427585590,US
+2427585591,2427585591,GB
+2427585592,2427585592,US
+2427585593,2427585593,GB
+2427585594,2427585594,US
+2427585595,2427585595,GB
+2427585596,2427585596,US
+2427585597,2427585631,GB
2427585632,2427585663,ES
2427585664,2427585679,SE
2427585680,2427585683,TR
-2427585684,2427585695,US
+2427585684,2427585695,GB
2427585696,2427585711,AE
-2427585712,2427585791,US
-2427585792,2427585799,NL
-2427585800,2427585863,IT
-2427585864,2427585887,US
+2427585712,2427585791,GB
+2427585792,2427585792,US
+2427585793,2427585799,NL
+2427585800,2427585881,US
+2427585882,2427585887,GB
2427585888,2427585917,DE
-2427585918,2427585919,US
-2427585920,2427585959,FR
-2427585960,2427585983,US
-2427585984,2427585989,NL
-2427585990,2427585999,US
-2427586000,2427586007,CH
-2427586008,2427586015,US
-2427586016,2427586017,BE
-2427586018,2427586047,US
-2427586048,2427586057,JP
-2427586058,2427586059,US
-2427586060,2427586061,JP
-2427586062,2427586063,US
-2427586064,2427586065,JP
-2427586066,2427586111,US
+2427585918,2427585919,GB
+2427585920,2427585920,FR
+2427585921,2427585921,US
+2427585922,2427585922,FR
+2427585923,2427585924,US
+2427585925,2427585926,FR
+2427585927,2427585927,US
+2427585928,2427585928,FR
+2427585929,2427585929,US
+2427585930,2427585930,FR
+2427585931,2427585931,US
+2427585932,2427585934,FR
+2427585935,2427585935,US
+2427585936,2427585936,FR
+2427585937,2427585937,US
+2427585938,2427585938,FR
+2427585939,2427585939,US
+2427585940,2427585940,FR
+2427585941,2427585941,US
+2427585942,2427585942,FR
+2427585943,2427585943,US
+2427585944,2427585959,FR
+2427585960,2427585983,GB
+2427585984,2427585984,NL
+2427585985,2427585986,US
+2427585987,2427585988,NL
+2427585989,2427586000,US
+2427586001,2427586001,CH
+2427586002,2427586002,US
+2427586003,2427586003,CH
+2427586004,2427586004,US
+2427586005,2427586006,CH
+2427586007,2427586015,US
+2427586016,2427586016,BE
+2427586017,2427586019,US
+2427586020,2427586047,GB
+2427586048,2427586048,US
+2427586049,2427586056,JP
+2427586057,2427586059,US
+2427586060,2427586060,JP
+2427586061,2427586063,US
+2427586064,2427586064,JP
+2427586065,2427586093,US
+2427586094,2427586111,GB
2427586112,2427586123,HK
-2427586124,2427586129,US
+2427586124,2427586129,GB
2427586130,2427586131,SG
-2427586132,2427586145,US
+2427586132,2427586145,GB
2427586146,2427586147,TW
-2427586148,2427586151,US
+2427586148,2427586151,GB
2427586152,2427586153,MO
-2427586154,2427586175,US
+2427586154,2427586175,GB
2427586176,2427586217,AU
-2427586218,2427586219,US
+2427586218,2427586219,GB
2427586220,2427586221,AU
-2427586222,2427586303,US
-2427586304,2427586309,AU
-2427586310,2427586311,US
-2427586312,2427586337,AU
-2427586338,2427586339,US
-2427586340,2427586341,AU
-2427586342,2427586343,US
-2427586344,2427586345,AU
-2427586346,2427586347,US
-2427586348,2427586349,AU
-2427586350,2427591936,US
-2427591937,2427591937,GB
-2427591938,2427591945,US
+2427586222,2427586303,GB
+2427586304,2427586304,US
+2427586305,2427586309,AU
+2427586310,2427586397,US
+2427586398,2427586431,GB
+2427586432,2427586451,US
+2427586452,2427586687,GB
+2427586688,2427586709,ES
+2427586710,2427586719,GB
+2427586720,2427586729,SE
+2427586730,2427586731,NO
+2427586732,2427586735,GB
+2427586736,2427586741,TR
+2427586742,2427586751,GB
+2427586752,2427586763,AE
+2427586764,2427586815,GB
+2427586816,2427586816,NL
+2427586817,2427586823,GB
+2427586824,2427586861,IT
+2427586862,2427586879,GB
+2427586880,2427586913,DE
+2427586914,2427586943,GB
+2427586944,2427586945,BE
+2427586946,2427586959,GB
+2427586960,2427586965,NL
+2427586966,2427586967,DK
+2427586968,2427586975,GB
+2427586976,2427586983,CH
+2427586984,2427586991,GB
+2427586992,2427586993,AT
+2427586994,2427587007,GB
+2427587008,2427587047,FR
+2427587048,2427587049,GB
+2427587050,2427587051,FR
+2427587052,2427587071,GB
+2427587072,2427587072,FR
+2427587073,2427587583,GB
+2427587584,2427587584,JP
+2427587585,2427587591,GB
+2427587592,2427587617,JP
+2427587618,2427587711,GB
+2427587712,2427587712,KR
+2427587713,2427587839,GB
+2427587840,2427587840,AU
+2427587841,2427587847,GB
+2427587848,2427587897,AU
+2427587898,2427588095,GB
+2427588096,2427588096,HK
+2427588097,2427588103,GB
+2427588104,2427588115,HK
+2427588116,2427588159,GB
+2427588160,2427588163,TW
+2427588164,2427588175,GB
+2427588176,2427588176,MO
+2427588177,2427588177,MN
+2427588178,2427588178,MO
+2427588179,2427588179,MN
+2427588180,2427588191,MO
+2427588192,2427588351,GB
+2427588352,2427588352,SG
+2427588353,2427588359,GB
+2427588360,2427588365,SG
+2427588366,2427588369,TH
+2427588370,2427591679,GB
+2427591680,2427591880,US
+2427591881,2427591881,CA
+2427591882,2427591883,US
+2427591884,2427591884,CO
+2427591885,2427591896,US
+2427591897,2427591897,CA
+2427591898,2427591898,MX
+2427591899,2427591899,CA
+2427591900,2427591912,US
+2427591913,2427591913,CL
+2427591914,2427591914,BR
+2427591915,2427591935,US
+2427591936,2427591945,GB
2427591946,2427591946,AT
2427591947,2427591947,BE
2427591948,2427591948,CZ
@@ -63753,21 +72303,22 @@
2427591963,2427591963,NL
2427591964,2427591964,TR
2427591965,2427591965,AE
-2427591966,2427591999,US
+2427591966,2427591999,GB
2427592000,2427592015,IE
2427592016,2427592031,IL
2427592032,2427592047,IN
-2427592048,2427592191,US
+2427592048,2427592191,IE
2427592192,2427592207,SG
2427592208,2427592223,JP
2427592224,2427592239,AU
2427592240,2427592255,CN
-2427592256,2427600895,US
-2427600896,2427617279,GB
-2427617280,2427620095,ES
-2427620096,2427620351,GB
-2427620352,2427621375,ES
-2427621376,2427650047,GB
+2427592256,2427592447,SG
+2427592448,2427600895,GB
+2427600896,2427609087,NL
+2427609088,2427617279,GB
+2427617280,2427633663,ES
+2427633664,2427641855,NL
+2427641856,2427650047,GB
2427650048,2427846655,NO
2427846656,2428567551,US
2428567552,2428633087,NO
@@ -63791,9 +72342,10 @@
2429579264,2429580287,CA
2429580288,2429583359,US
2429583360,2429616127,AT
-2429616128,2429643519,NL
-2429643520,2429643775,RU
-2429643776,2429681663,NL
+2429616128,2429637119,NL
+2429637376,2429640703,NL
+2429640704,2429648895,RU
+2429648896,2429681663,NL
2429681664,2429796607,US
2429796608,2429797375,GB
2429797376,2429878271,US
@@ -63802,10 +72354,16 @@
2430009344,2430140415,US
2430140416,2430152552,CA
2430152553,2430152553,US
-2430152554,2430168575,CA
-2430168576,2430168591,US
-2430168592,2430205951,CA
-2430271488,2430918655,US
+2430152554,2430168319,CA
+2430168320,2430168591,US
+2430168592,2430169855,CA
+2430169856,2430170111,US
+2430170112,2430190847,CA
+2430190848,2430191103,US
+2430191104,2430205951,CA
+2430271488,2430578687,US
+2430578688,2430580735,CA
+2430580736,2430918655,US
2430918656,2430922751,BR
2430922752,2431845631,US
2431845632,2431845887,SG
@@ -63822,29 +72380,62 @@
2432821411,2432827391,ES
2432827392,2433247231,NL
2433247232,2433247487,GB
-2433247488,2433617919,NL
+2433247488,2433614847,NL
+2433614848,2433617919,SI
2433617920,2433626111,EE
-2433626112,2433630207,NL
-2433630208,2433638399,GB
+2433626112,2433628159,SI
+2433628160,2433630207,NL
+2433630208,2433637887,GB
+2433637888,2433638143,BY
+2433638144,2433638399,GB
2433638400,2433646591,SE
-2433646592,2433662975,NL
+2433646592,2433647103,NL
+2433647104,2433647359,DE
+2433647360,2433647615,US
+2433647616,2433648127,DE
+2433648128,2433648383,BR
+2433648384,2433648639,US
+2433648640,2433650687,DE
+2433650688,2433653759,US
+2433653760,2433654015,NL
+2433654016,2433654783,US
+2433654784,2433662975,IT
2433662976,2433667071,DE
2433667072,2433671167,CH
2433671168,2433675263,DE
2433675264,2433677311,PL
-2433677312,2435115778,NL
-2435115779,2435115779,GB
-2435115780,2436300799,NL
+2433677312,2433679359,AT
+2433679360,2433810431,NL
+2433810432,2433875967,GB
+2433875968,2435055615,NL
+2435055616,2435107327,GB
+2435107328,2435107583,US
+2435107584,2435107839,GB
+2435107840,2435108095,SG
+2435108096,2435108351,JP
+2435108352,2435121151,GB
+2435121152,2435578879,NL
+2435578880,2435579903,GB
+2435579904,2436300799,NL
2436300800,2436366335,GB
-2436366336,2436775935,NL
-2436775936,2436775936,DE
-2436775937,2436780127,NL
-2436780128,2436780131,DE
-2436780132,2441196707,NL
+2436366336,2436628479,NL
+2436628480,2436630527,BE
+2436630528,2436632575,NL
+2436632576,2436634623,DK
+2436634624,2436694015,BE
+2436694016,2436759551,NL
+2436759552,2436767743,GB
+2436767744,2436767999,NL
+2436768000,2436775935,GB
+2436775936,2436784127,DE
+2436784128,2436825087,GB
+2436825088,2441196707,NL
2441196708,2441196708,BE
2441196709,2446983167,NL
2447048704,2447376383,NL
-2447376384,2447441919,GB
+2447376384,2447384575,GB
+2447384576,2447384831,BE
+2447384832,2447441919,GB
2447441920,2447507455,DE
2447507456,2447572991,FR
2447572992,2447638527,GB
@@ -63860,47 +72451,237 @@
2448183296,2448183551,BG
2448183552,2448228351,HU
2448228352,2448293887,PL
-2448293888,2448363551,FR
-2448363552,2448363583,PL
-2448363584,2448363647,FR
-2448363648,2448363807,PL
-2448363808,2448364231,FR
+2448293888,2448359423,FR
+2448359424,2448360447,DE
+2448360448,2448361471,GB
+2448361472,2448363551,FR
+2448363552,2448363807,PL
+2448363808,2448363839,FR
+2448363840,2448363903,PL
+2448363904,2448363935,FR
+2448363936,2448363939,PL
+2448363940,2448363967,FR
+2448363968,2448364159,PL
+2448364160,2448364231,FR
2448364232,2448364239,PL
-2448364240,2448365047,FR
+2448364240,2448364287,FR
+2448364288,2448364351,PL
+2448364352,2448364415,FR
+2448364416,2448364543,PL
+2448364544,2448364607,FR
+2448364608,2448364735,PL
+2448364736,2448364863,FR
+2448364864,2448364927,PL
+2448364928,2448365047,FR
2448365048,2448365051,PL
-2448365052,2448394463,FR
+2448365052,2448365183,FR
+2448365184,2448365247,PL
+2448365248,2448365311,FR
+2448365312,2448365375,PL
+2448365376,2448365439,FR
+2448365440,2448365503,PL
+2448365504,2448365631,FR
+2448365632,2448365823,PL
+2448365824,2448365951,FR
+2448365952,2448366015,PL
+2448366016,2448366059,FR
+2448366060,2448366063,PL
+2448366064,2448366143,FR
+2448366144,2448366271,PL
+2448366272,2448366591,FR
+2448366592,2448367615,PL
+2448367616,2448369507,FR
+2448369508,2448369511,DE
+2448369512,2448369887,FR
+2448369888,2448369903,GB
+2448369904,2448370015,FR
+2448370016,2448370047,FI
+2448370048,2448370703,FR
+2448370704,2448370711,BE
+2448370712,2448370719,FR
+2448370720,2448370727,ES
+2448370728,2448371031,FR
+2448371032,2448371039,ES
+2448371040,2448372031,FR
+2448372032,2448372047,ES
+2448372048,2448373087,FR
+2448373088,2448373095,ES
+2448373096,2448374335,FR
+2448374336,2448374351,ES
+2448374352,2448374399,FR
+2448374400,2448374527,GB
+2448374528,2448374747,FR
+2448374748,2448374751,GB
+2448374752,2448375759,FR
+2448375760,2448375775,ES
+2448375776,2448379903,FR
+2448379904,2448383999,PL
+2448384000,2448386047,FR
+2448386048,2448386175,GB
+2448386176,2448387199,FR
+2448387200,2448387327,DE
+2448387328,2448387359,FR
+2448387360,2448387391,CZ
+2448387392,2448387527,FR
+2448387528,2448387535,ES
+2448387536,2448388351,FR
+2448388352,2448388479,ES
+2448388480,2448389631,FR
+2448389632,2448389759,NL
+2448389760,2448389887,GB
+2448389888,2448390399,FR
+2448390400,2448390527,ES
+2448390528,2448390655,DE
+2448390656,2448390911,FR
+2448390912,2448391039,IE
+2448391040,2448391167,FR
+2448391168,2448391175,ES
+2448391176,2448391263,FR
+2448391264,2448391295,NL
+2448391296,2448393471,FR
+2448393472,2448393983,PL
+2448393984,2448394239,FR
+2448394240,2448394303,DE
+2448394304,2448394463,FR
2448394464,2448394479,DE
-2448394480,2448394767,FR
+2448394480,2448394655,FR
+2448394656,2448394671,DE
+2448394672,2448394675,FR
+2448394676,2448394679,DE
+2448394680,2448394767,FR
2448394768,2448394771,DE
2448394772,2448394775,FR
2448394776,2448394783,DE
-2448394784,2448411183,FR
+2448394784,2448394943,FR
+2448394944,2448395007,DE
+2448395008,2448395047,FR
+2448395048,2448395051,DE
+2448395052,2448397311,FR
+2448397312,2448398335,DE
+2448398336,2448401695,FR
+2448401696,2448401699,IT
+2448401700,2448401847,FR
+2448401848,2448401855,GB
+2448401856,2448401879,FR
+2448401880,2448401887,ES
+2448401888,2448402783,FR
+2448402784,2448402799,ES
+2448402800,2448402935,FR
+2448402936,2448402943,ES
+2448402944,2448403071,GB
+2448403072,2448403199,FR
+2448403200,2448403455,GB
+2448403456,2448404095,FR
+2448404096,2448404127,ES
+2448404128,2448404183,FR
+2448404184,2448404191,ES
+2448404192,2448404415,FR
+2448404416,2448404447,GB
+2448404448,2448404455,FR
+2448404456,2448404459,NL
+2448404460,2448404479,FR
+2448404480,2448404511,GB
+2448404512,2448405359,FR
+2448405360,2448405367,ES
+2448405368,2448406623,FR
+2448406624,2448406655,FI
+2448406656,2448407511,FR
+2448407512,2448407519,ES
+2448407520,2448407807,FR
+2448407808,2448407935,ES
+2448407936,2448410623,FR
+2448410624,2448410687,GB
+2448410688,2448410927,FR
+2448410928,2448410943,GB
+2448410944,2448411003,FR
+2448411004,2448411007,GB
+2448411008,2448411183,FR
2448411184,2448411199,GB
2448411200,2448411439,FR
2448411440,2448411455,GB
-2448411456,2448414893,FR
+2448411456,2448411647,FR
+2448411648,2448412415,GB
+2448412416,2448412671,FR
+2448412672,2448412799,DE
+2448412800,2448413855,FR
+2448413856,2448413887,FI
+2448413888,2448413919,FR
+2448413920,2448413927,ES
+2448413928,2448414375,FR
+2448414376,2448414383,ES
+2448414384,2448414591,FR
+2448414592,2448414719,DE
+2448414720,2448414751,FR
+2448414752,2448414783,PL
+2448414784,2448414893,FR
2448414894,2448414894,PL
-2448414895,2448419087,FR
+2448414895,2448415487,FR
+2448415488,2448415615,IT
+2448415616,2448415983,FR
+2448415984,2448415991,ES
+2448415992,2448417311,FR
+2448417312,2448417319,ES
+2448417320,2448417887,FR
+2448417888,2448417903,ES
+2448417904,2448417967,FR
+2448417968,2448417975,ES
+2448417976,2448418559,FR
+2448418560,2448418687,NL
+2448418688,2448418783,FR
+2448418784,2448418791,ES
+2448418792,2448419087,FR
2448419088,2448419091,DE
-2448419092,2448419799,FR
+2448419092,2448419103,FR
+2448419104,2448419107,DE
+2448419108,2448419203,FR
+2448419204,2448419207,DE
+2448419208,2448419263,FR
+2448419264,2448419327,DE
+2448419328,2448419799,FR
2448419800,2448419807,DE
-2448419808,2448419975,FR
+2448419808,2448419839,FR
+2448419840,2448419903,PL
+2448419904,2448419975,FR
2448419976,2448419979,PL
-2448419980,2448490495,FR
-2448490496,2448556031,CH
+2448419980,2448419987,FR
+2448419988,2448419991,PL
+2448419992,2448420031,FR
+2448420032,2448420095,PL
+2448420096,2448420159,FR
+2448420160,2448420415,PL
+2448420416,2448420543,FR
+2448420544,2448420607,PL
+2448420608,2448420671,FR
+2448420672,2448420735,PL
+2448420736,2448420783,FR
+2448420784,2448420863,PL
+2448420864,2448421887,FR
+2448421888,2448422911,DE
+2448422912,2448423167,FR
+2448423168,2448423423,GB
+2448423424,2448423679,FR
+2448423680,2448424959,GB
+2448424960,2448490495,FR
+2448490496,2448556031,AT
2448556032,2448621567,FR
2448621568,2448687103,DE
2448687104,2448752639,AT
2448752640,2448818175,CH
-2448818176,2448883711,GB
+2448818176,2448850943,GB
+2448850944,2448851967,US
+2448851968,2448883711,GB
2448883712,2448949247,FI
2448949248,2449014783,FR
2449014784,2449031167,IR
-2449031168,2449041407,RU
+2449031168,2449039359,SY
+2449039360,2449041407,DE
2449041408,2449042431,NL
-2449042432,2449043199,RU
+2449042432,2449042687,LV
+2449042944,2449043199,GB
2449043200,2449043455,FR
-2449043456,2449045503,RU
+2449043456,2449044223,GB
+2449044224,2449044479,RU
+2449044480,2449045503,GB
2449045504,2449080319,KZ
2449080320,2449145855,CH
2449145856,2449211391,SE
@@ -63950,9 +72731,19 @@
2450718720,2450784255,FR
2450784256,2450849791,US
2450849792,2450915327,SE
-2450915328,2451032063,US
-2451032064,2451032575,AU
-2451032576,2452619263,US
+2450915328,2451030015,US
+2451030016,2451031039,AU
+2451031040,2451031295,US
+2451031296,2451031807,AU
+2451031808,2451031871,US
+2451031872,2451033063,AU
+2451033064,2451033067,US
+2451033068,2451035135,AU
+2451035136,2451035391,US
+2451035392,2451035903,AU
+2451035904,2451036159,GB
+2451036160,2451038207,AU
+2451038208,2452619263,US
2452619264,2452684799,IT
2452684800,2452750335,US
2452750336,2452815871,NL
@@ -63973,10 +72764,10 @@
2453803008,2453805055,KZ
2453805056,2453807103,FI
2453807104,2453815295,GB
-2453815296,2453831679,BG
+2453815296,2453831679,US
2453831680,2453833727,IR
2453833728,2453835775,ES
-2453835776,2453837823,DE
+2453835776,2453837823,FR
2453837824,2453838591,LU
2453838592,2453838847,AT
2453838848,2453839359,SE
@@ -64001,15 +72792,18 @@
2454585344,2454716415,US
2454716416,2454781951,GB
2454781952,2454847487,FI
-2454847488,2454851583,US
-2454851584,2454851839,DK
-2454851840,2454853119,US
-2454853120,2454853375,DK
-2454853376,2454887423,US
+2454847488,2454852607,US
+2454852608,2454853631,BE
+2454853632,2454864895,US
+2454864896,2454865407,GB
+2454865408,2454887423,US
2454887424,2454887679,DK
-2454887680,2454905919,US
-2454905920,2454905951,AR
-2454905952,2454913023,US
+2454887680,2454902783,US
+2454902784,2454903807,MX
+2454903808,2454904831,US
+2454904832,2454906879,AR
+2454906880,2454907391,CL
+2454907392,2454913023,US
2454913024,2454978559,CL
2454978560,2455175167,US
2455175168,2455240703,GB
@@ -64026,7 +72820,6 @@
2455248128,2455248895,US
2455248896,2455257087,TH
2455257088,2455261183,PH
-2455261184,2455262207,MY
2455262208,2455263231,KR
2455263232,2455265279,PH
2455265280,2455273471,US
@@ -64055,18 +72848,22 @@
2456158208,2456223743,CZ
2456223744,2456289279,BE
2456289280,2456354815,NL
-2456354816,2456420351,GB
+2456354816,2456406015,GB
+2456406016,2456408063,FR
+2456408064,2456420351,GB
2456485888,2456551423,DE
2456551424,2456616959,AT
2456616960,2456682495,CH
2456682496,2456748031,HU
2456748032,2456813567,US
-2456813568,2456829464,AT
2456829465,2456829465,GB
-2456829466,2456846335,AT
2456846336,2456846591,FR
2456846592,2456846847,CZ
-2456846848,2456862719,AT
+2456846848,2456847103,IE
+2456847360,2456847615,AU
+2456847616,2456847871,BR
+2456847872,2456848127,IN
+2456848128,2456848383,DK
2456862720,2456862975,NL
2456862976,2456863743,US
2456863744,2456863999,DE
@@ -64078,7 +72875,20 @@
2456866048,2456866559,CA
2456866560,2456866815,ZA
2456866816,2456867071,JP
-2456867072,2456875263,AT
+2456867072,2456867327,AE
+2456867328,2456867583,AU
+2456867584,2456867839,BR
+2456867840,2456868095,IN
+2456868096,2456868351,DK
+2456868352,2456868607,IE
+2456871936,2456872191,RO
+2456872192,2456872447,FR
+2456872448,2456872703,IE
+2456872704,2456872959,AE
+2456872960,2456873215,AU
+2456873216,2456873471,BR
+2456873472,2456873727,IN
+2456873728,2456873983,DK
2456875264,2456875775,CA
2456875776,2456876031,JP
2456876032,2456876287,NL
@@ -64088,7 +72898,6 @@
2456877312,2456877567,AU
2456877568,2456877823,US
2456877824,2456878079,HK
-2456878080,2456879103,AT
2456879104,2457075711,US
2457075712,2457141247,AU
2457206784,2457272319,AU
@@ -64097,17 +72906,15 @@
2457339904,2457340927,BA
2457340928,2457341183,GB
2457341184,2457341951,BY
-2457341952,2457342975,CZ
+2457341952,2457342975,UZ
2457342976,2457343999,RU
2457344000,2457346047,UA
-2457346048,2457350143,CZ
-2457350144,2457360383,RU
+2457346048,2457348095,BY
+2457348096,2457360383,RU
2457360384,2457360895,CZ
-2457360896,2457361151,RU
-2457361152,2457361407,CZ
-2457361408,2457362175,RU
+2457360896,2457362175,RU
2457362176,2457362431,UA
-2457362432,2457362687,GB
+2457362432,2457362687,RU
2457362688,2457362943,UA
2457362944,2457363455,RU
2457363456,2457363967,UA
@@ -64115,24 +72922,22 @@
2457364480,2457365503,RU
2457365504,2457366015,CZ
2457366016,2457366527,RU
-2457366528,2457367551,CZ
+2457366528,2457367551,GB
2457367552,2457369599,RU
-2457369600,2457370623,CZ
-2457370624,2457374719,BY
-2457374720,2457377791,CZ
+2457369600,2457370623,UA
+2457370624,2457377791,BY
2457377792,2457378047,FR
-2457378048,2457379839,CZ
-2457379840,2457380095,NL
-2457380096,2457381631,CZ
+2457378048,2457378815,DE
+2457378816,2457380095,NL
+2457380096,2457380863,RU
+2457380864,2457381631,UA
2457381632,2457382399,RU
2457382400,2457382911,UA
2457382912,2457383935,RU
-2457383936,2457384959,CZ
-2457384960,2457387007,RU
-2457387008,2457388031,CZ
-2457388032,2457388543,RU
-2457388544,2457388799,UA
-2457388800,2457390591,CZ
+2457383936,2457384959,UA
+2457384960,2457388543,RU
+2457388544,2457389055,UA
+2457389056,2457390591,CZ
2457390592,2457392127,RU
2457392128,2457392639,KG
2457392640,2457392895,PL
@@ -64151,7 +72956,9 @@
2457399552,2457399807,RU
2457399808,2457400319,CZ
2457400320,2457400575,UA
-2457400576,2457403391,CZ
+2457400576,2457400831,CZ
+2457400832,2457402367,RU
+2457402368,2457403391,SY
2457403392,2457520895,US
2457520896,2457521151,BE
2457521152,2457599999,US
@@ -64169,7 +72976,13 @@
2458779648,2459631615,US
2459631616,2459697151,CL
2459697152,2459828223,US
-2459828224,2459846655,RU
+2459828224,2459833343,RU
+2459833344,2459834367,UZ
+2459834368,2459835903,RU
+2459835904,2459836159,UA
+2459836160,2459844607,RU
+2459844608,2459845631,KZ
+2459845632,2459846655,RU
2459846656,2459847167,FR
2459847168,2459847679,UA
2459847680,2459848191,RU
@@ -64179,7 +72992,9 @@
2459893760,2459959295,CH
2459959296,2460024831,JP
2460024832,2460090367,FI
-2460090368,2460155903,GB
+2460090368,2460152319,GB
+2460152320,2460152831,FR
+2460152832,2460155903,GB
2460155904,2460221439,US
2460221440,2460286975,BR
2460286976,2460549119,US
@@ -64201,12 +73016,16 @@
2461601792,2461605887,GB
2461605888,2461607935,LB
2461607936,2461609983,FR
-2461609984,2461612031,BE
+2461609984,2461611007,BE
+2461611008,2461611519,NL
+2461611520,2461611775,BE
+2461611776,2461612031,NL
2461612032,2461614079,IL
2461614080,2461622271,CH
2461622272,2461630463,DE
2461630464,2461646847,NL
-2461646848,2461648895,RU
+2461646848,2461647871,US
+2461647872,2461648895,RU
2461648896,2461649023,BY
2461649024,2461649919,RU
2461649920,2461650047,US
@@ -64215,7 +73034,11 @@
2461650304,2461650431,TW
2461650432,2461650559,MA
2461650560,2461650687,NZ
-2461650688,2461659391,RU
+2461650688,2461652479,RU
+2461652480,2461652991,LU
+2461652992,2461658111,RU
+2461658112,2461658623,AU
+2461658624,2461659391,RU
2461659392,2461659647,UA
2461659648,2461662463,RU
2461662464,2461662719,NL
@@ -64236,8 +73059,8 @@
2462332928,2462333951,CN
2462333952,2462334975,IN
2462334976,2462335999,VN
-2462336000,2462339071,CN
-2462339072,2462342143,HK
+2462336000,2462338047,CN
+2462338048,2462342143,HK
2462342144,2462343167,CN
2462343168,2462344191,ID
2462344192,2462345215,US
@@ -64247,66 +73070,16 @@
2462350336,2462351359,CN
2462351360,2462384127,GM
2462384128,2462449663,US
-2462449664,2462455807,GB
-2462455808,2462456831,US
-2462456832,2462457343,GB
-2462457344,2462457855,US
-2462457856,2462458879,GB
-2462458880,2462459391,US
-2462459392,2462463999,GB
-2462464000,2462464767,US
-2462464768,2462467071,GB
-2462467072,2462467327,US
-2462467328,2462467583,GB
-2462467584,2462468095,US
-2462468096,2462469631,GB
-2462469632,2462470143,US
-2462470144,2462471423,GB
-2462471424,2462472447,US
-2462472448,2462489599,GB
-2462489600,2462490111,US
-2462490112,2462490367,GB
-2462490368,2462490623,US
-2462490624,2462519039,GB
-2462519040,2462519295,US
-2462519296,2462520319,GB
-2462520320,2462521343,US
-2462521344,2462526602,GB
+2462449664,2462526602,GB
2462526603,2462526603,US
-2462526604,2462542847,GB
-2462542848,2462544383,US
-2462544384,2462547455,GB
-2462547456,2462547967,US
-2462547968,2462550015,GB
-2462550016,2462552063,US
-2462552064,2462553087,GB
-2462553088,2462553599,US
-2462553600,2462554111,GB
-2462554112,2462554735,US
-2462554736,2462554736,GB
-2462554737,2462555135,US
-2462555136,2462572543,GB
-2462572544,2462576639,US
-2462576640,2462578687,GB
-2462578688,2462580735,US
-2462580736,2462580736,GB
-2462580737,2462584033,US
-2462584034,2462584034,GB
-2462584035,2462589429,US
-2462589430,2462589430,GB
-2462589431,2462589752,US
-2462589753,2462589753,GB
-2462589754,2462591105,US
-2462591106,2462591106,GB
-2462591107,2462593320,US
-2462593321,2462593321,GB
-2462593322,2462597266,US
-2462597267,2462597267,GB
-2462597268,2462614527,US
-2462614528,2462614783,GB
-2462614784,2462616574,US
-2462616575,2462616575,GB
-2462616576,2463236095,US
+2462526604,2462646271,GB
+2462646272,2462717439,US
+2462717440,2462717951,DE
+2462717952,2462723071,US
+2462723072,2462723583,GB
+2462723584,2462727167,US
+2462727168,2462728191,CA
+2462728192,2463236095,US
2463236096,2463301631,AT
2463301632,2463367167,FI
2463367168,2463432703,SI
@@ -64315,7 +73088,9 @@
2463629312,2463694847,CH
2463694848,2463825919,US
2463825920,2463891455,ES
-2463891456,2463956991,LU
+2463891456,2463911935,LU
+2463911936,2463916031,FR
+2463916032,2463956991,LU
2463956992,2464022527,AU
2464022528,2464153599,US
2464153600,2464219135,NO
@@ -64331,7 +73106,9 @@
2465267712,2465333247,IT
2465333248,2465338879,US
2465338880,2465339135,SG
-2465339136,2465660927,US
+2465339136,2465346559,US
+2465346560,2465347071,BR
+2465347072,2465660927,US
2465660928,2465662975,RU
2465662976,2465665023,CH
2465665024,2465667071,IT
@@ -64340,39 +73117,67 @@
2465671168,2465672703,IE
2465672704,2465672959,BG
2465672960,2465673215,IE
-2465673216,2465673471,IM
-2465673472,2465677311,GB
+2465673216,2465677311,IM
2465677312,2465679359,IT
2465679360,2465681407,NL
2465681408,2465683455,SE
2465683456,2465685503,FR
-2465685504,2465693695,AT
+2465685504,2465690367,DE
+2465690368,2465693695,IT
2465693696,2465697791,NO
-2465697792,2465701887,SE
-2465701888,2465702399,NO
-2465702400,2465703167,SE
-2465703168,2465703423,NO
-2465703424,2465704447,SE
-2465704448,2465704959,NO
-2465704960,2465718271,SE
-2465718272,2465726463,NO
+2465697792,2465718271,SE
+2465718272,2465721855,NO
+2465721856,2465721983,SE
+2465721984,2465722367,NO
+2465722368,2465726463,SE
2465726464,2465791999,CH
2465792000,2465857535,FR
2465857536,2465923071,US
2465923072,2465988607,SA
-2465988608,2466054143,US
-2466054144,2466119679,SE
-2466119680,2466185215,DE
+2465988608,2465989631,ID
+2465989632,2465992191,SG
+2465992192,2466004479,US
+2466004480,2466004991,DE
+2466004992,2466006015,US
+2466006016,2466006527,GB
+2466006528,2466007039,US
+2466007040,2466009087,GB
+2466009088,2466010623,US
+2466010624,2466011135,CA
+2466011136,2466013183,US
+2466013184,2466015231,DE
+2466015232,2466015743,US
+2466015744,2466015999,JO
+2466016000,2466016255,CR
+2466016256,2466017279,CA
+2466017280,2466019327,BR
+2466019328,2466019583,HR
+2466019584,2466019839,CY
+2466019840,2466020095,EG
+2466020096,2466020351,GR
+2466020352,2466020607,GT
+2466020608,2466020863,HU
+2466020864,2466021119,IS
+2466021120,2466021375,IM
+2466021376,2466049023,US
+2466049024,2466049535,GB
+2466049536,2466053119,US
+2466053120,2466054143,CA
+2466054144,2466185215,SE
2466185216,2466189311,GB
-2466189312,2466191359,NL
+2466189312,2466189567,ES
+2466189568,2466191103,NL
+2466191104,2466191167,ES
+2466191168,2466191359,NL
2466191360,2466193407,CZ
2466193408,2466199551,NL
2466199552,2466201599,AT
2466201600,2466209791,MK
2466209792,2466211839,ES
2466211840,2466213887,GB
-2466215936,2466216191,US
-2466216192,2466217983,DE
+2466215936,2466216959,US
+2466216960,2466217727,SG
+2466217728,2466217983,DE
2466217984,2466226175,BA
2466226176,2466228223,IT
2466228224,2466230271,FR
@@ -64382,9 +73187,11 @@
2466242560,2466250751,GE
2466250752,2466318335,US
2466318336,2466318591,SG
-2466318592,2466323455,US
+2466318592,2466320383,US
+2466320384,2466323455,AU
2466323456,2466323711,SG
-2466323712,2466326015,US
+2466323712,2466324479,AU
+2466324480,2466326015,US
2466326016,2466326271,SG
2466326272,2466336767,US
2466336768,2466337023,SG
@@ -64408,7 +73215,11 @@
2468937728,2469003263,AU
2469003264,2469068799,US
2469068800,2469134335,KR
-2469134336,2469199871,SE
+2469134336,2469158911,FI
+2469158912,2469167103,SE
+2469167104,2469171199,FI
+2469171200,2469175295,SE
+2469175296,2469199871,FI
2469199872,2469265407,RU
2469265408,2469396479,KR
2469396480,2469527551,US
@@ -64421,27 +73232,24 @@
2470182912,2470248447,CH
2470248448,2470510591,US
2470510592,2470576127,BR
-2470576128,2470641663,AU
+2470576128,2470576383,AU
+2470576384,2470577151,AQ
+2470577152,2470577919,HM
+2470577920,2470641663,AU
2470641664,2470649855,BE
2470649856,2470707199,LU
2470707200,2470772735,GB
2470772736,2470838271,AU
-2470838272,2471165951,US
-2471165952,2471190527,CH
-2471190528,2471194623,US
-2471194624,2471195647,CH
-2471195648,2471196159,CO
-2471196160,2471197439,CH
-2471197440,2471197695,CO
-2471197696,2471198463,CH
-2471198464,2471198719,CO
-2471198720,2471206911,CH
-2471206912,2471218175,US
+2470838272,2471194623,US
+2471194624,2471198719,CO
+2471198720,2471218175,US
2471218176,2471218687,NL
2471218688,2471219199,US
2471219200,2471219455,CA
-2471219456,2471219711,GB
-2471219712,2471231487,CH
+2471219456,2471219711,US
+2471219712,2471219967,GB
+2471219968,2471223295,IL
+2471223296,2471231487,US
2471231488,2471297023,AU
2471297024,2471362559,GB
2471428096,2471624703,US
@@ -64498,23 +73306,122 @@
2474639360,2474901503,US
2474901504,2474967039,AU
2474967040,2475130879,US
-2475130880,2475135719,FR
+2475130880,2475135487,FR
+2475135488,2475135495,ES
+2475135496,2475135719,FR
2475135720,2475135727,DE
-2475135728,2475139391,FR
+2475135728,2475136391,FR
+2475136392,2475136395,IT
+2475136396,2475139391,FR
2475139392,2475139455,ES
-2475139456,2475148351,FR
+2475139456,2475140287,FR
+2475140288,2475140319,CZ
+2475140320,2475141935,FR
+2475141936,2475141951,FI
+2475141952,2475143295,FR
+2475143296,2475143359,DE
+2475143360,2475143423,IE
+2475143424,2475143551,GB
+2475143552,2475143615,BE
+2475143616,2475143647,CZ
+2475143648,2475143679,PT
+2475143680,2475143743,DE
+2475143744,2475143783,FR
+2475143784,2475143791,ES
+2475143792,2475143807,FR
+2475143808,2475143935,DE
+2475143936,2475143999,FR
+2475144000,2475144063,IT
+2475144064,2475145087,FR
+2475145088,2475145151,BE
+2475145152,2475145215,ES
+2475145216,2475145343,DE
+2475145344,2475145471,GB
+2475145472,2475145615,FR
+2475145616,2475145631,LT
+2475145632,2475145727,FR
+2475145728,2475145855,GB
+2475145856,2475145919,DE
+2475145920,2475146063,FR
+2475146064,2475146079,LT
+2475146080,2475146239,FR
+2475146240,2475146303,IT
+2475146304,2475146495,FR
+2475146496,2475146559,NL
+2475146560,2475146943,FR
+2475146944,2475146975,PT
+2475146976,2475148351,FR
2475148352,2475148415,PL
2475148416,2475148521,FR
2475148522,2475148522,PL
-2475148523,2475148796,FR
+2475148523,2475148543,FR
+2475148544,2475148607,PL
+2475148608,2475148671,FR
+2475148672,2475148735,PL
+2475148736,2475148796,FR
2475148797,2475148797,PL
-2475148798,2475149279,FR
+2475148798,2475149119,FR
+2475149120,2475149247,PL
+2475149248,2475149279,FR
2475149280,2475149311,PL
-2475149312,2475160528,FR
-2475160529,2475160529,NL
-2475160530,2475162367,FR
+2475149312,2475149375,ES
+2475149376,2475149567,FR
+2475149568,2475149583,CH
+2475149584,2475149599,LT
+2475149600,2475149695,FR
+2475149696,2475149823,IE
+2475149824,2475149951,DE
+2475149952,2475150207,FR
+2475150208,2475150335,GB
+2475150336,2475150495,FR
+2475150496,2475150527,FI
+2475150528,2475151231,FR
+2475151232,2475151359,IT
+2475151360,2475152383,PL
+2475152384,2475153471,FR
+2475153472,2475153535,GB
+2475153536,2475153663,FR
+2475153664,2475153919,GB
+2475153920,2475155771,FR
+2475155772,2475155775,NL
+2475155776,2475155807,FR
+2475155808,2475155839,GB
+2475155840,2475156063,FR
+2475156064,2475156095,FI
+2475156096,2475156479,FR
+2475156480,2475156607,ES
+2475156608,2475157247,FR
+2475157248,2475157279,CZ
+2475157280,2475157887,FR
+2475157888,2475158015,BE
+2475158016,2475158303,FR
+2475158304,2475158335,PL
+2475158336,2475158911,FR
+2475158912,2475158975,PL
+2475158976,2475159423,FR
+2475159424,2475159551,DE
+2475159552,2475159711,FR
+2475159712,2475159743,ES
+2475159744,2475160063,FR
+2475160064,2475160079,GB
+2475160080,2475160351,FR
+2475160352,2475160383,PL
+2475160384,2475160447,FR
+2475160448,2475160575,NL
+2475160576,2475160767,FR
+2475160768,2475160799,FI
+2475160800,2475161087,FR
+2475161088,2475161215,ES
+2475161216,2475161407,FR
+2475161408,2475161439,FI
+2475161440,2475161471,PL
+2475161472,2475161983,FR
+2475161984,2475161999,LT
+2475162000,2475162351,FR
+2475162352,2475162367,ES
2475162368,2475162495,DE
-2475162496,2475163647,FR
+2475162496,2475162623,IT
+2475162624,2475163647,FR
2475163648,2475556863,US
2475556864,2475622399,DE
2475622400,2475687935,GB
@@ -64544,7 +73451,9 @@
2478374912,2478440447,US
2478440448,2478505983,SE
2478505984,2478571519,US
-2478571520,2478702591,GB
+2478571520,2478655487,GB
+2478655488,2478656511,FR
+2478656512,2478702591,GB
2478702592,2478899199,US
2478899200,2478964735,GB
2478964736,2479030271,CA
@@ -64570,7 +73479,160 @@
2481455104,2481520639,SK
2481520640,2481848319,IL
2481848320,2482175999,US
-2482176000,2482241535,GB
+2482176000,2482176031,MY
+2482176032,2482176191,HK
+2482176192,2482176351,SG
+2482176352,2482176511,AU
+2482176512,2482176831,JP
+2482176832,2482176863,IN
+2482176864,2482176895,AU
+2482176896,2482176959,IN
+2482176960,2482176991,KR
+2482176992,2482177119,AU
+2482177120,2482177279,SG
+2482177280,2482177439,HK
+2482177440,2482177471,TH
+2482177472,2482177503,NZ
+2482177504,2482177535,AU
+2482177536,2482177567,NZ
+2482177568,2482177631,TW
+2482177632,2482177663,IN
+2482177664,2482177727,TW
+2482177728,2482177759,AU
+2482177760,2482177823,IN
+2482177824,2482177855,JP
+2482177856,2482177951,KR
+2482177952,2482178015,JP
+2482178016,2482178079,IN
+2482178080,2482178303,KR
+2482178304,2482178399,JP
+2482178400,2482178495,KR
+2482178496,2482178591,JP
+2482178592,2482178719,HK
+2482178720,2482178783,SG
+2482178784,2482178847,JP
+2482178848,2482178879,IN
+2482178880,2482178911,SG
+2482178912,2482178943,IN
+2482178944,2482179007,JP
+2482179008,2482179039,HK
+2482179040,2482179103,GB
+2482179104,2482179199,IN
+2482179200,2482179231,TH
+2482179232,2482179295,MY
+2482179296,2482179359,IN
+2482179360,2482179423,CN
+2482179424,2482179519,AU
+2482179520,2482179551,SG
+2482179552,2482179583,HK
+2482179584,2482179615,KR
+2482179616,2482179647,CN
+2482179648,2482179679,GU
+2482179680,2482179711,TW
+2482179712,2482179871,JP
+2482179872,2482179967,HK
+2482179968,2482192383,GB
+2482192384,2482192703,IE
+2482192704,2482193183,NL
+2482193184,2482193215,FI
+2482193216,2482193279,GB
+2482193280,2482193311,FI
+2482193312,2482193439,NL
+2482193440,2482193535,FI
+2482193536,2482193599,GB
+2482193600,2482193759,NL
+2482193760,2482193791,RO
+2482193792,2482193887,AT
+2482193888,2482193919,BE
+2482193920,2482193951,DK
+2482193952,2482194047,IT
+2482194048,2482194079,SE
+2482194080,2482194111,CH
+2482194112,2482194143,FR
+2482194144,2482194207,SE
+2482194208,2482194239,IT
+2482194240,2482194399,AT
+2482194400,2482194431,BG
+2482194432,2482194463,GR
+2482194464,2482194591,CH
+2482194592,2482194719,SE
+2482194720,2482194783,CZ
+2482194784,2482194815,GB
+2482194816,2482194847,PT
+2482194848,2482194911,ES
+2482194912,2482194943,HR
+2482194944,2482194975,CZ
+2482194976,2482195007,PT
+2482195008,2482195039,GB
+2482195040,2482195071,ES
+2482195072,2482195423,GB
+2482195424,2482195455,CZ
+2482195456,2482195487,ZA
+2482195488,2482195551,FI
+2482195552,2482195583,GB
+2482195584,2482195615,FR
+2482195616,2482195775,DE
+2482195776,2482195871,GB
+2482195872,2482195935,ES
+2482195936,2482196031,DE
+2482196032,2482196095,FR
+2482196096,2482196127,BE
+2482196128,2482196159,FI
+2482196160,2482196191,HU
+2482196192,2482196223,PL
+2482196224,2482196255,ZA
+2482196256,2482196287,FR
+2482196288,2482196351,ZA
+2482196352,2482196511,DE
+2482196512,2482196543,FR
+2482196544,2482196575,NL
+2482196576,2482196607,FR
+2482196608,2482196639,NL
+2482196640,2482196671,GB
+2482196672,2482196703,NL
+2482196704,2482196735,DK
+2482196736,2482196767,RU
+2482196768,2482196799,SE
+2482196800,2482196831,IT
+2482196832,2482196863,GR
+2482196864,2482196895,FR
+2482196896,2482196927,IE
+2482196928,2482196991,ZA
+2482196992,2482208799,GB
+2482208800,2482209535,US
+2482209536,2482209695,BR
+2482209696,2482210015,US
+2482210016,2482210175,BR
+2482210176,2482210239,US
+2482210240,2482210399,BR
+2482210400,2482211135,US
+2482211136,2482211263,BR
+2482211264,2482211327,US
+2482211328,2482211359,CL
+2482211360,2482211807,US
+2482211808,2482211999,BR
+2482212000,2482212383,US
+2482212384,2482212415,CA
+2482212416,2482212703,US
+2482212704,2482212735,CA
+2482212736,2482213087,US
+2482213088,2482213119,CA
+2482213120,2482213247,US
+2482213248,2482213311,BR
+2482213312,2482213343,US
+2482213344,2482213375,CA
+2482213376,2482213567,US
+2482213568,2482213599,CA
+2482213600,2482213631,CL
+2482213632,2482213695,BR
+2482213696,2482213919,US
+2482213920,2482213951,MX
+2482213952,2482214015,BR
+2482214016,2482214047,US
+2482214048,2482214079,CA
+2482214080,2482214303,US
+2482214304,2482214335,CA
+2482214336,2482241535,GB
2482241536,2482634751,US
2482634752,2482700287,FR
2482700288,2482765823,CZ
@@ -64579,16 +73641,16 @@
2483027968,2483093503,DO
2483093504,2483159039,US
2483159040,2483224575,SE
-2483224576,2483236095,ES
-2483236096,2483236863,GB
-2483236864,2483290111,ES
+2483224576,2483290111,ES
2483290112,2483421183,US
2483421184,2483486719,HU
2483486720,2486566911,US
2486566912,2486632447,CH
2486632448,2486697983,US
2486697984,2486763519,ES
-2486763520,2486927359,US
+2486763520,2486800895,US
+2486800896,2486801407,CA
+2486801408,2486927359,US
2486927360,2486928127,CA
2486928128,2486928895,US
2486928896,2486929151,CA
@@ -64610,17 +73672,24 @@
2486956544,2486957055,CA
2486957056,2486960127,US
2486960128,2487025663,FR
-2487025664,2487156735,US
+2487025664,2487103155,US
+2487103156,2487103157,MX
+2487103158,2487156735,US
2487156736,2487222271,PT
2487222272,2487222527,HK
2487222528,2487222783,JP
2487222784,2487223039,AU
2487223040,2487223295,SG
-2487223296,2487224319,US
+2487223296,2487224319,IN
2487224320,2487224831,GB
-2487224832,2487227391,US
+2487224832,2487225087,IT
+2487225088,2487225343,US
+2487225344,2487225855,NL
+2487225856,2487227391,US
2487227392,2487227647,MX
-2487227648,2487236607,US
+2487227648,2487228415,US
+2487228416,2487228671,ZA
+2487228672,2487236607,US
2487236608,2487237631,GB
2487237632,2487238143,MF
2487238144,2487238655,US
@@ -64673,7 +73742,7 @@
2492465152,2492530687,US
2492530688,2492596223,AU
2492596224,2492727295,US
-2492727296,2492792831,NL
+2492727296,2492792831,SE
2492792832,2492923903,US
2492923904,2492989439,OM
2492989440,2493513727,US
@@ -64740,7 +73809,9 @@
2500038656,2500040703,IT
2500040704,2500042751,LB
2500042752,2500046847,SA
-2500046848,2500048895,IT
+2500046848,2500047615,IT
+2500047616,2500047871,GR
+2500047872,2500048895,IT
2500048896,2500050943,MD
2500050944,2500067327,KZ
2500067328,2500132991,US
@@ -64752,24 +73823,22 @@
2500138400,2500141055,US
2500141056,2500141311,IE
2500141312,2500141823,US
-2500141824,2500142847,IE
-2500142848,2500143103,GB
-2500143104,2500144127,IE
+2500141824,2500144127,IE
2500144128,2500144895,US
2500144896,2500145151,IE
2500145152,2500149247,US
-2500149248,2500150271,GB
-2500150272,2500150559,US
-2500150560,2500150591,GB
-2500150592,2500150655,US
-2500150656,2500150719,GB
-2500150720,2500154751,US
+2500149248,2500150783,GB
+2500150784,2500152495,US
+2500152496,2500152511,GB
+2500152512,2500154751,US
2500154752,2500154815,GB
2500154816,2500155199,US
2500155200,2500155391,GB
2500155392,2500155647,US
2500155648,2500155903,GB
-2500155904,2500161023,US
+2500155904,2500158463,US
+2500158464,2500158975,GB
+2500158976,2500161023,US
2500161024,2500161535,GB
2500161536,2500161791,US
2500161792,2500162047,GB
@@ -64781,30 +73850,41 @@
2500177936,2500177943,PL
2500177944,2500180735,US
2500180736,2500181503,HR
-2500181504,2500188223,US
+2500181504,2500182015,US
+2500182016,2500188159,FR
+2500188160,2500188223,GB
2500188224,2500188287,CH
-2500188288,2500188415,US
+2500188288,2500188415,GB
2500188416,2500188447,CH
-2500188448,2500188679,US
+2500188448,2500188671,GB
+2500188672,2500188679,FR
2500188680,2500188687,CH
-2500188688,2500188831,US
+2500188688,2500188831,FR
2500188832,2500188863,CH
-2500188864,2500190207,US
-2500190208,2500194303,FR
+2500188864,2500194303,FR
2500194304,2500194399,US
2500194400,2500194431,FI
2500194432,2500196351,US
2500196352,2500198399,FI
2500198400,2500199471,GB
2500199472,2500199475,IE
-2500199476,2500202495,GB
-2500202496,2500202879,US
+2500199476,2500200447,GB
+2500200448,2500200631,US
+2500200632,2500200639,GB
+2500200640,2500200703,US
+2500200704,2500200959,GB
+2500200960,2500201535,US
+2500201536,2500201543,GB
+2500201544,2500202879,US
2500202880,2500203007,ES
2500203008,2500203519,US
2500203520,2500204543,IT
2500204544,2500205567,US
-2500205568,2500205823,PL
-2500205824,2500211671,US
+2500205568,2500206591,PL
+2500206592,2500208639,FR
+2500208640,2500209663,DE
+2500209664,2500210687,FR
+2500210688,2500211671,US
2500211672,2500211679,RO
2500211680,2500211728,US
2500211729,2500211730,SI
@@ -64814,49 +73894,70 @@
2500212992,2500213247,ES
2500213248,2500213279,US
2500213280,2500213287,FI
-2500213288,2500221455,US
+2500213288,2500213819,US
+2500213820,2500213823,NL
+2500213824,2500221455,US
2500221456,2500221459,FR
2500221460,2500222975,US
2500222976,2500225551,FR
2500225552,2500225559,ES
2500225560,2500226615,FR
2500226616,2500226623,NL
-2500226624,2500230041,FR
-2500230042,2500230042,GB
-2500230043,2500231167,FR
-2500231168,2500235775,DK
+2500226624,2500228351,FR
+2500228352,2500228359,NO
+2500228360,2500229119,FR
+2500229120,2500231167,GB
+2500231168,2500233215,BE
+2500233216,2500233751,DK
+2500233752,2500233759,DE
+2500233760,2500233787,DK
+2500233788,2500233791,DE
+2500233792,2500233811,DK
+2500233812,2500233815,DE
+2500233816,2500233831,DK
+2500233832,2500233835,DE
+2500233836,2500233863,DK
+2500233864,2500233867,DE
+2500233868,2500233935,DK
+2500233936,2500233943,DE
+2500233944,2500233983,DK
+2500233984,2500234055,BE
+2500234056,2500234063,DE
+2500234064,2500234239,BE
+2500234240,2500235263,DK
+2500235264,2500235775,GB
2500235776,2500236031,ES
-2500236032,2500236837,DK
-2500236838,2500236838,ES
-2500236839,2500237791,DK
+2500236032,2500236799,GB
+2500236800,2500237311,ES
+2500237312,2500237791,US
2500237792,2500237799,IT
-2500237800,2500238047,DK
+2500237800,2500238047,US
2500238048,2500238055,FR
-2500238056,2500239359,DK
+2500238056,2500239359,US
2500239360,2500243455,FR
-2500243456,2500246271,US
-2500246272,2500246527,GB
+2500243456,2500245503,US
+2500245504,2500245759,GB
+2500245760,2500246015,US
+2500246016,2500246527,GB
2500246528,2500247551,US
-2500247552,2500248575,ES
-2500248576,2500249599,US
-2500249600,2500249855,ES
-2500249856,2500251135,US
-2500251136,2500251647,ES
-2500251648,2500263935,US
+2500247552,2500255743,ES
+2500255744,2500263935,US
2500263936,2500272127,ES
2500272128,2500272625,US
2500272626,2500272626,GB
-2500272627,2500273663,US
+2500272627,2500273151,US
+2500273152,2500273407,GB
+2500273408,2500273663,US
2500273664,2500273919,GB
-2500273920,2500275465,US
-2500275466,2500275467,GB
-2500275468,2500275711,US
-2500275712,2500277503,GB
+2500273920,2500274175,US
+2500274176,2500276735,GB
+2500276736,2500277247,US
+2500277248,2500277503,GB
2500277504,2500278751,US
2500278752,2500278783,GB
2500278784,2500288511,US
-2500288512,2500290815,FR
-2500290816,2500291327,US
+2500288512,2500291071,FR
+2500291072,2500291327,US
2500291328,2500291583,FR
2500291584,2500292607,US
2500292608,2500296703,DE
@@ -64870,7 +73971,9 @@
2500392960,2500393215,IN
2500393216,2500393983,US
2500393984,2500394239,GB
-2500394240,2500532749,US
+2500394240,2500531455,US
+2500531456,2500531711,CZ
+2500531712,2500532749,US
2500532750,2500532750,GR
2500532751,2500535327,US
2500535328,2500535335,IE
@@ -64878,18 +73981,24 @@
2500535372,2500535375,IE
2500535376,2500535399,US
2500535400,2500535407,IE
-2500535408,2500535807,US
+2500535408,2500535551,US
+2500535552,2500535807,IE
2500535808,2500536319,NL
-2500536320,2500536359,GB
+2500536320,2500536359,US
2500536360,2500536367,FR
-2500536368,2500538367,GB
+2500536368,2500537343,US
+2500537344,2500538367,GB
2500538368,2500542751,US
2500542752,2500542755,NL
-2500542756,2500544767,US
+2500542756,2500544383,US
+2500544384,2500544391,GB
+2500544392,2500544767,US
2500544768,2500545023,GR
2500545024,2500545703,US
2500545704,2500545711,SE
-2500545712,2500546559,US
+2500545712,2500545815,US
+2500545816,2500545823,SE
+2500545824,2500546559,US
2500546560,2500549271,GB
2500549272,2500549279,ES
2500549280,2500552703,GB
@@ -64897,15 +74006,17 @@
2500553728,2500554239,GB
2500554240,2500554379,US
2500554380,2500554487,DE
-2500554488,2500554751,US
+2500554488,2500554551,US
+2500554552,2500554559,DE
+2500554560,2500554751,US
2500554752,2500556295,FR
2500556296,2500556303,CZ
-2500556304,2500558847,FR
-2500558848,2500560895,US
+2500556304,2500556943,FR
+2500556944,2500556951,GR
+2500556952,2500560895,FR
2500560896,2500562943,GB
2500562944,2500563199,ES
-2500563200,2500567039,US
-2500567040,2500569687,GB
+2500563200,2500569687,GB
2500569688,2500569695,BE
2500569696,2500575231,GB
2500575232,2500591615,US
@@ -64914,24 +74025,25 @@
2500596736,2500599807,GB
2500599808,2500599935,US
2500599936,2500599951,DK
-2500599952,2500616191,US
-2500616192,2500624383,IT
-2500624384,2500632575,US
+2500599952,2500609023,US
+2500609024,2500610047,ES
+2500610048,2500624383,US
+2500624384,2500625407,IT
+2500625408,2500632575,US
2500632576,2500640767,GB
-2500640768,2500644863,US
-2500644864,2500646911,FR
+2500640768,2500646911,FR
2500646912,2500648959,ES
2500648960,2500653567,US
2500653568,2500654079,NL
-2500654080,2500661247,US
-2500661248,2500664319,ES
-2500664320,2500665087,US
-2500665088,2500665343,ES
+2500654080,2500657151,US
+2500657152,2500665343,ES
2500665344,2500666463,US
2500666464,2500666471,LU
2500666472,2500674623,US
2500674624,2500674687,DE
-2500674688,2500680447,US
+2500674688,2500675839,US
+2500675840,2500676095,DE
+2500676096,2500680447,US
2500680448,2500680703,SE
2500680704,2500681759,US
2500681760,2500681767,PL
@@ -64941,17 +74053,17 @@
2500687104,2500687359,FR
2500687360,2500687871,US
2500687872,2500689919,FR
-2500689920,2500694271,US
-2500694272,2500697087,IT
-2500697088,2500702463,US
-2500702464,2500702471,GB
-2500702472,2500702719,US
-2500702720,2500702975,NL
-2500702976,2500719103,US
-2500719104,2500721151,IE
-2500721152,2500723799,US
-2500723800,2500723807,ES
-2500723808,2500726783,US
+2500689920,2500694015,US
+2500694016,2500697087,IT
+2500697088,2500702207,US
+2500702208,2500702719,GB
+2500702720,2500702842,NL
+2500702843,2500702843,BE
+2500702844,2500702975,NL
+2500702976,2500719615,US
+2500719616,2500721151,IE
+2500721152,2500722687,US
+2500722688,2500726783,ES
2500726784,2500727807,GB
2500727808,2500728063,US
2500728064,2500728319,GB
@@ -64962,39 +74074,60 @@
2500739608,2500740417,US
2500740418,2500740418,DE
2500740419,2500743167,US
-2500743168,2500744191,GB
-2500744192,2500746239,US
-2500746240,2500747263,GB
-2500747264,2500748543,US
+2500743168,2500743679,GB
+2500743680,2500744191,NL
+2500744192,2500747263,GB
+2500747264,2500748543,DE
2500748544,2500748799,ES
-2500748800,2500755455,US
+2500748800,2500751359,DE
+2500751360,2500755455,US
2500755456,2500756647,GB
2500756648,2500756655,IT
-2500756656,2500759159,GB
+2500756656,2500756879,GB
+2500756880,2500756887,IT
+2500756888,2500759159,GB
2500759160,2500759167,NL
-2500759168,2500761631,GB
-2500761632,2500761639,FR
-2500761640,2500761879,GB
-2500761880,2500761887,FR
-2500761888,2500763647,GB
-2500763648,2500777983,US
+2500759168,2500759463,GB
+2500759464,2500759467,NL
+2500759468,2500761599,GB
+2500761600,2500763199,FR
+2500763200,2500763207,DE
+2500763208,2500763647,FR
+2500763648,2500771839,US
+2500771840,2500773023,RU
+2500773024,2500773031,GB
+2500773032,2500773223,RU
+2500773224,2500773231,GB
+2500773232,2500773295,RU
+2500773296,2500773303,GB
+2500773304,2500777111,RU
+2500777112,2500777119,CH
+2500777120,2500777983,RU
2500777984,2500777991,FR
-2500777992,2500984831,US
+2500777992,2500780031,RU
+2500780032,2500780287,GB
+2500780288,2500984831,US
2500984832,2500993023,GB
2500993024,2501000721,US
2501000722,2501000722,GB
2501000723,2501001215,US
2501001216,2501033983,GB
-2501033984,2501321471,US
-2501321472,2501321727,CZ
-2501321728,2501574655,US
+2501033984,2501246975,US
+2501246976,2501251071,GB
+2501251072,2501574655,US
2501574656,2501640191,KZ
-2501640192,2502033407,US
+2501640192,2501644287,US
+2501644288,2501648383,JP
+2501648384,2501672959,US
+2501672960,2501677055,SG
+2501677056,2501681151,US
+2501681152,2501685247,AU
+2501685248,2501705791,US
+2501705792,2501705799,NL
+2501705800,2502033407,US
2502033408,2502037503,LU
2502037504,2502041599,US
-2502041600,2502045695,ES
-2502045696,2502047743,US
-2502047744,2502049791,ES
+2502041600,2502049791,ES
2502049792,2502098943,US
2502098944,2502164479,IT
2502164480,2502166527,GB
@@ -65003,17 +74136,13 @@
2502174208,2502180863,US
2502180864,2502181119,FI
2502181120,2502221823,US
-2502221824,2502222591,ES
-2502222592,2502222847,US
-2502222848,2502223871,ES
-2502223872,2502224895,US
-2502224896,2502225151,ES
-2502225152,2502226943,US
-2502226944,2502227967,ES
-2502227968,2503016447,US
+2502221824,2502230015,ES
+2502230016,2503016447,US
2503016448,2503147519,IL
2503147520,2503344127,US
-2503344128,2503376895,AF
+2503344128,2503344383,AF
+2503344384,2503344639,DE
+2503344640,2503376895,AF
2503376896,2503409663,JP
2503409664,2503475199,US
2503475200,2503477487,CA
@@ -65026,7 +74155,9 @@
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
@@ -65034,7 +74165,11 @@
2503532336,2503532343,ES
2503532344,2503533375,CA
2503533376,2503533376,US
-2503533377,2503540735,CA
+2503533377,2503534607,CA
+2503534608,2503534615,BR
+2503534616,2503534903,CA
+2503534904,2503534911,BR
+2503534912,2503540735,CA
2503540736,2503671807,US
2503671808,2503737343,NL
2503737344,2503868415,US
@@ -65061,16 +74196,18 @@
2504482816,2504486911,ES
2504486912,2504491007,US
2504491008,2504499199,IT
-2504499200,2504499967,IE
-2504499968,2504501385,US
+2504499200,2504501247,IE
+2504501248,2504501385,GB
2504501386,2504501386,ES
-2504501387,2504501759,US
-2504501760,2504502015,GB
-2504502016,2504502271,US
+2504501387,2504501759,GB
+2504501760,2504502015,US
+2504502016,2504502271,GB
2504502272,2504502527,ES
-2504502528,2504502730,US
+2504502528,2504502730,GB
2504502731,2504502731,ES
-2504502732,2504517631,US
+2504502732,2504502783,GB
+2504502784,2504503295,ES
+2504503296,2504517631,US
2504517632,2504518655,FR
2504518656,2504918642,US
2504918643,2504918643,IL
@@ -65082,7 +74219,9 @@
2504945433,2504945433,IL
2504945434,2504949759,US
2504949760,2504982527,IL
-2504982528,2505457663,US
+2504982528,2505130367,US
+2505130368,2505130383,JP
+2505130384,2505457663,US
2505457664,2505459711,IE
2505459712,2505465855,US
2505465856,2505467903,GB
@@ -65106,31 +74245,33 @@
2505771008,2505772543,US
2505772544,2505772799,GB
2505772800,2505789439,US
-2505789440,2505792511,FR
+2505789440,2505790463,FR
+2505790464,2505791487,US
+2505791488,2505792511,FR
2505792512,2505793535,US
2505793536,2505803775,ES
2505803776,2506293247,US
2506293248,2506358783,CA
-2506358784,2506359039,ES
-2506359040,2506359295,GB
-2506359296,2506361343,ES
+2506358784,2506360063,ES
+2506360064,2506360191,GB
+2506360192,2506360255,ES
+2506360256,2506360319,GB
+2506360320,2506361343,ES
2506361344,2506361855,US
-2506361856,2506362879,ES
-2506362880,2506363903,US
-2506363904,2506364415,ES
+2506361856,2506364415,ES
2506364416,2506364671,US
2506364672,2506366975,ES
-2506366976,2506399743,US
-2506399744,2506401023,IT
-2506401024,2506401279,US
-2506401280,2506405887,IT
+2506366976,2506400767,US
+2506400768,2506401023,IT
+2506401024,2506401535,US
+2506401536,2506405887,IT
2506405888,2506498047,US
2506498048,2506499071,FR
-2506499072,2506503167,US
-2506503168,2506504191,ES
-2506504192,2506506239,US
+2506499072,2506502143,US
+2506502144,2506506239,ES
2506506240,2506514431,NO
-2506514432,2506522623,ES
+2506514432,2506518527,MO
+2506518528,2506522623,ES
2506522624,2506526719,GB
2506526720,2506817535,US
2506817536,2506820351,ES
@@ -65142,9 +74283,7 @@
2507173888,2507174143,US
2507175936,2507177983,CA
2507183360,2507183615,US
-2507210752,2507350015,US
-2507350016,2507354111,CA
-2507354112,2508062719,US
+2507210752,2508062719,US
2508062720,2508064767,CH
2508064768,2508066815,ES
2508066816,2508068863,RU
@@ -65159,11 +74298,9 @@
2508081447,2508081663,IL
2508081664,2508081919,GB
2508081920,2508081920,NL
-2508081921,2508082175,IL
-2508082176,2508082431,GB
+2508081921,2508082431,GB
2508082432,2508082687,DE
-2508082688,2508082815,GB
-2508082816,2508083199,IL
+2508082688,2508083199,GB
2508083200,2508085247,IS
2508085248,2508087295,PS
2508087296,2508089343,RU
@@ -65184,7 +74321,9 @@
2508324864,2508455935,US
2508455936,2508521471,IT
2508521472,2508587007,CH
-2508587008,2508652543,BE
+2508587008,2508631295,BE
+2508631296,2508631551,US
+2508631552,2508652543,BE
2508652544,2508718079,AU
2508718080,2508914687,US
2508914688,2508980223,IT
@@ -65227,57 +74366,194 @@
2511339520,2511405055,AU
2511405056,2512715775,GB
2512715776,2512781311,FI
-2512781312,2512872447,US
+2512781312,2512867327,US
+2512867328,2512867839,IE
+2512867840,2512872447,US
2512872448,2512872959,SG
2512872960,2512912383,US
2512912384,2512945151,HU
2512945152,2512977919,JO
2512977920,2513043455,DE
-2513043456,2513045247,FR
+2513043456,2513043615,FR
+2513043616,2513043647,GB
+2513043648,2513043967,FR
+2513043968,2513043975,GB
+2513043976,2513044095,FR
+2513044096,2513044223,DE
+2513044224,2513044287,FR
+2513044288,2513044351,IT
+2513044352,2513044767,FR
+2513044768,2513044799,ES
+2513044800,2513045247,FR
2513045248,2513045255,CZ
2513045256,2513046591,FR
2513046592,2513046623,ES
-2513046624,2513048047,FR
+2513046624,2513046911,FR
+2513046912,2513047039,GB
+2513047040,2513047695,FR
+2513047696,2513047699,PL
+2513047700,2513048047,FR
2513048048,2513048063,ES
-2513048064,2513050391,FR
+2513048064,2513049551,FR
+2513049552,2513049567,ES
+2513049568,2513049647,FR
+2513049648,2513049651,NL
+2513049652,2513049919,FR
+2513049920,2513049983,NL
+2513049984,2513049987,PL
+2513049988,2513050391,FR
2513050392,2513050399,PT
-2513050400,2513057045,FR
+2513050400,2513051487,FR
+2513051488,2513051519,GB
+2513051520,2513052735,FR
+2513052736,2513052751,ES
+2513052752,2513057045,FR
2513057046,2513057046,PT
-2513057047,2513068448,FR
+2513057047,2513068287,FR
+2513068288,2513068351,ES
+2513068352,2513068415,GB
+2513068416,2513068448,FR
2513068449,2513068449,DE
2513068450,2513068631,FR
2513068632,2513068635,PT
-2513068636,2513070623,FR
+2513068636,2513068919,FR
+2513068920,2513068927,NL
+2513068928,2513069375,FR
+2513069376,2513069439,DE
+2513069440,2513069631,FR
+2513069632,2513069663,NL
+2513069664,2513069823,FR
+2513069824,2513069887,IT
+2513069888,2513070559,FR
+2513070560,2513070591,ES
+2513070592,2513070623,FR
2513070624,2513070655,ES
2513070656,2513071435,FR
2513071436,2513071439,NL
-2513071440,2513073375,FR
+2513071440,2513071583,FR
+2513071584,2513071587,PL
+2513071588,2513071595,FR
+2513071596,2513071599,FI
+2513071600,2513073151,FR
+2513073152,2513073167,ES
+2513073168,2513073375,FR
2513073376,2513073391,BE
2513073392,2513073791,FR
2513073792,2513073855,IT
2513073856,2513073951,FR
2513073952,2513073983,ES
-2513073984,2513076471,FR
-2513076472,2513076479,ES
-2513076480,2513078367,FR
+2513073984,2513073999,FR
+2513074000,2513074015,ES
+2513074016,2513074319,FR
+2513074320,2513074327,LT
+2513074328,2513075247,FR
+2513075248,2513075263,GB
+2513075264,2513075455,FR
+2513075456,2513075487,PL
+2513075488,2513075791,FR
+2513075792,2513075807,ES
+2513075808,2513075871,FR
+2513075872,2513075887,ES
+2513075888,2513076175,FR
+2513076176,2513076191,ES
+2513076192,2513076239,FR
+2513076240,2513076255,ES
+2513076256,2513076335,FR
+2513076336,2513076351,IE
+2513076352,2513076479,ES
+2513076480,2513077247,FR
+2513077248,2513077311,DE
+2513077312,2513078151,FR
+2513078152,2513078159,NL
+2513078160,2513078367,FR
2513078368,2513078371,GB
-2513078372,2513079250,FR
+2513078372,2513078431,FR
+2513078432,2513078463,PT
+2513078464,2513078671,FR
+2513078672,2513078687,IE
+2513078688,2513078887,FR
+2513078888,2513078891,GB
+2513078892,2513078911,FR
+2513078912,2513079039,GB
+2513079040,2513079250,FR
2513079251,2513079254,ES
-2513079255,2513080031,FR
+2513079255,2513079327,FR
+2513079328,2513079343,IE
+2513079344,2513080031,FR
2513080032,2513080063,IT
-2513080064,2513081327,FR
+2513080064,2513080255,FR
+2513080256,2513080319,DE
+2513080320,2513080395,FR
+2513080396,2513080399,GB
+2513080400,2513080543,FR
+2513080544,2513080575,NL
+2513080576,2513081151,FR
+2513081152,2513081215,IT
+2513081216,2513081327,FR
2513081328,2513081343,ES
-2513081344,2513081935,FR
+2513081344,2513081403,FR
+2513081404,2513081407,PL
+2513081408,2513081935,FR
2513081936,2513081939,DE
-2513081940,2513082561,FR
-2513082562,2513082562,GB
-2513082563,2513102047,FR
+2513081940,2513082071,FR
+2513082072,2513082075,NL
+2513082076,2513082463,FR
+2513082464,2513082495,NL
+2513082496,2513082623,GB
+2513082624,2513083199,FR
+2513083200,2513083263,DE
+2513083264,2513083279,FR
+2513083280,2513083295,PT
+2513083296,2513083327,FR
+2513083328,2513083391,ES
+2513083392,2513083455,FR
+2513083456,2513083519,IE
+2513083520,2513083743,FR
+2513083744,2513083775,IT
+2513083776,2513084127,FR
+2513084128,2513084131,DE
+2513084132,2513084215,FR
+2513084216,2513084223,NL
+2513084224,2513084399,FR
+2513084400,2513084415,NL
+2513084416,2513101919,FR
+2513101920,2513101951,PT
+2513101952,2513102047,FR
2513102048,2513102063,ES
2513102064,2513102899,FR
2513102900,2513102903,CZ
-2513102904,2513103935,FR
+2513102904,2513103007,FR
+2513103008,2513103039,DE
+2513103040,2513103895,FR
+2513103896,2513103935,PT
2513103936,2513103967,IE
-2513103968,2513108991,FR
+2513103968,2513104223,FR
+2513104224,2513104255,IT
+2513104256,2513105311,FR
+2513105312,2513105343,NL
+2513105344,2513106239,FR
+2513106240,2513106303,IE
+2513106304,2513106367,FR
+2513106368,2513106431,DE
+2513106432,2513107079,FR
+2513107080,2513107083,FI
+2513107084,2513107087,ES
+2513107088,2513107103,BE
+2513107104,2513107135,FR
+2513107136,2513107199,DE
+2513107200,2513107231,FR
+2513107232,2513107263,GB
+2513107264,2513107279,ES
+2513107280,2513107295,FR
+2513107296,2513107311,PL
+2513107312,2513107327,PT
+2513107328,2513107391,FR
+2513107392,2513107423,DE
+2513107424,2513107455,FR
+2513107456,2513107583,GB
+2513107584,2513107699,FR
+2513107700,2513107703,GB
+2513107704,2513108991,FR
2513108992,2513502207,DE
2513502208,2513567743,NO
2513567744,2513600511,GR
@@ -65286,7 +74562,9 @@
2513698816,2513764351,DK
2513764352,2514419711,DE
2514419712,2514485247,GB
-2514485248,2515140607,DE
+2514485248,2514681343,DE
+2514681344,2514681599,TR
+2514681600,2515140607,DE
2515140608,2515142655,US
2515142656,2515173375,DE
2515173376,2515189759,SG
@@ -65303,11 +74581,18 @@
2516320256,2516451327,US
2516451328,2516516863,GB
2516516864,2516525055,RU
-2516525056,2516525289,NL
-2516525290,2516525290,US
-2516525291,2516525466,NL
-2516525467,2516525467,US
-2516525468,2516527103,NL
+2516525056,2516525183,US
+2516525184,2516525247,NL
+2516525248,2516525391,US
+2516525392,2516525407,NL
+2516525408,2516525519,US
+2516525520,2516525551,NL
+2516525552,2516525727,US
+2516525728,2516525823,NL
+2516525824,2516526079,US
+2516526080,2516526143,NL
+2516526144,2516526335,US
+2516526336,2516527103,NL
2516527104,2516529151,GB
2516529152,2516529279,CH
2516529280,2516529343,FR
@@ -65318,7 +74603,6 @@
2516541440,2516545535,GB
2516545536,2516547583,RU
2516547584,2516549631,GB
-2516549632,2516551679,RU
2516551680,2516553727,FR
2516553728,2516557823,AZ
2516557824,2516559871,RU
@@ -65379,7 +74663,10 @@
2523657216,2523659263,ID
2523659264,2523660287,IN
2523660288,2523725823,US
-2523725824,2523791359,CN
+2523725824,2523734015,SG
+2523734016,2523746303,CN
+2523746304,2523748351,KR
+2523748352,2523791359,CN
2523791360,2524119039,US
2524119040,2524184575,CN
2524184576,2524315647,TW
@@ -65443,7 +74730,9 @@
2525626368,2525757439,CN
2525757440,2525822975,GR
2525822976,2525954047,US
-2525954048,2526019583,GB
+2525954048,2525974709,GB
+2525974710,2525974710,IT
+2525974711,2526019583,GB
2526019584,2526085119,US
2526085120,2526216191,IT
2526216192,2526281727,JP
@@ -65464,7 +74753,9 @@
2528575488,2528641023,KR
2528641024,2528706559,US
2528706560,2529034239,VE
-2529034240,2529099775,US
+2529034240,2529075199,US
+2529075200,2529083391,TH
+2529083392,2529099775,US
2529099776,2529165311,AU
2529165312,2529492991,US
2529492992,2529558527,KR
@@ -65544,97 +74835,225 @@
2533294080,2533359615,CN
2533359616,2533375999,UA
2533376000,2533392383,HU
-2533392384,2538604967,IT
+2533392384,2538602495,IT
+2538602496,2538602687,FR
+2538602688,2538602751,DE
+2538602752,2538603519,FR
+2538603520,2538603583,DE
+2538603584,2538603711,FR
+2538603712,2538603775,DE
+2538603776,2538604327,FR
+2538604328,2538604335,NL
+2538604336,2538604967,FR
2538604968,2538604975,ES
-2538604976,2538605271,IT
+2538604976,2538605271,FR
2538605272,2538605279,ES
-2538605280,2538605375,IT
+2538605280,2538605375,FR
2538605376,2538605379,GB
-2538605380,2538606027,IT
+2538605380,2538605471,FR
+2538605472,2538605503,PT
+2538605504,2538605567,DE
+2538605568,2538605631,FR
+2538605632,2538605647,LT
+2538605648,2538605903,FR
+2538605904,2538605919,ES
+2538605920,2538606027,FR
2538606028,2538606031,DE
2538606032,2538606039,ES
-2538606040,2538606043,IT
+2538606040,2538606043,FR
2538606044,2538606047,DE
-2538606048,2538606343,IT
+2538606048,2538606343,FR
2538606344,2538606351,PL
-2538606352,2538606403,IT
+2538606352,2538606403,FR
2538606404,2538606407,GB
-2538606408,2538613134,IT
+2538606408,2538606847,FR
+2538606848,2538606911,IT
+2538606912,2538606943,CZ
+2538606944,2538607007,PT
+2538607008,2538607039,FR
+2538607040,2538607103,ES
+2538607104,2538613134,FR
2538613135,2538613135,NL
-2538613136,2538616421,IT
-2538616422,2538616425,ES
-2538616426,2538616427,IT
-2538616428,2538616428,ES
-2538616429,2538619359,IT
+2538613136,2538615855,FR
+2538615856,2538615871,DE
+2538615872,2538616287,FR
+2538616288,2538616319,NL
+2538616320,2538616383,FR
+2538616384,2538616447,ES
+2538616448,2538616575,FR
+2538616576,2538616639,IT
+2538616640,2538618487,FR
+2538618488,2538618495,ES
+2538618496,2538619359,FR
2538619360,2538619375,ES
-2538619376,2538619431,IT
+2538619376,2538619431,FR
2538619432,2538619435,DE
-2538619436,2538619903,IT
+2538619436,2538619563,FR
+2538619564,2538619567,ES
+2538619568,2538619775,FR
+2538619776,2538619807,LT
+2538619808,2538619903,FR
2538619904,2538619911,ES
-2538619912,2538625527,IT
+2538619912,2538620231,FR
+2538620232,2538620239,ES
+2538620240,2538620255,FR
+2538620256,2538620287,NL
+2538620288,2538620847,FR
+2538620848,2538620863,CZ
+2538620864,2538621007,FR
+2538621008,2538621023,LT
+2538621024,2538621167,FR
+2538621168,2538621183,CZ
+2538621184,2538621471,FR
+2538621472,2538621503,BE
+2538621504,2538622351,FR
+2538622352,2538622367,LT
+2538622368,2538622599,FR
+2538622600,2538622607,IE
+2538622608,2538622735,FR
+2538622736,2538622751,FI
+2538622752,2538623711,FR
+2538623712,2538623727,NL
+2538623728,2538624447,FR
+2538624448,2538624511,ES
+2538624512,2538624671,FR
+2538624672,2538624703,PL
+2538624704,2538625279,FR
+2538625280,2538625311,GB
+2538625312,2538625527,FR
2538625528,2538625535,DE
-2538625536,2538634227,IT
+2538625536,2538625571,FR
+2538625572,2538625575,PL
+2538625576,2538625583,FR
+2538625584,2538625599,PT
+2538625600,2538626543,FR
+2538626544,2538626559,LT
+2538626560,2538626575,CZ
+2538626576,2538626687,FR
+2538626688,2538626703,ES
+2538626704,2538629727,FR
+2538629728,2538629759,ES
+2538629760,2538631583,FR
+2538631584,2538631615,FI
+2538631616,2538633551,FR
+2538633552,2538633567,IE
+2538633568,2538633695,FR
+2538633696,2538633727,CZ
+2538633728,2538634227,FR
2538634228,2538634231,DE
-2538634232,2538634331,IT
+2538634232,2538634331,FR
2538634332,2538634335,DE
-2538634336,2538644015,IT
+2538634336,2538634559,FR
+2538634560,2538634623,GB
+2538634624,2538634687,FR
+2538634688,2538634751,NL
+2538634752,2538634879,FR
+2538634880,2538635007,GB
+2538635008,2538644015,FR
2538644016,2538644039,ES
-2538644040,2538645855,IT
+2538644040,2538644927,FR
+2538644928,2538644991,IE
+2538644992,2538645607,FR
+2538645608,2538645615,PL
+2538645616,2538645695,FR
+2538645696,2538645727,CZ
+2538645728,2538645775,FR
+2538645776,2538645783,ES
+2538645784,2538645855,FR
2538645856,2538645871,ES
-2538645872,2538646135,IT
+2538645872,2538646063,FR
+2538646064,2538646079,PT
+2538646080,2538646135,FR
2538646136,2538646139,DE
-2538646140,2538646143,IT
+2538646140,2538646143,FR
2538646144,2538646155,DE
-2538646156,2538646219,IT
+2538646156,2538646219,FR
2538646220,2538646227,DE
-2538646228,2538646271,IT
+2538646228,2538646271,FR
2538646272,2538646399,BE
-2538646400,2538646783,IT
+2538646400,2538646783,FR
2538646784,2538647039,CZ
-2538647040,2538648015,IT
+2538647040,2538647823,FR
+2538647824,2538647831,FI
+2538647832,2538648015,FR
2538648016,2538648031,ES
-2538648032,2538648591,IT
+2538648032,2538648339,FR
+2538648340,2538648343,GB
+2538648344,2538648591,FR
2538648592,2538648623,BE
-2538648624,2538649767,IT
+2538648624,2538649767,FR
2538649768,2538649775,DE
-2538649776,2538649991,IT
+2538649776,2538649991,FR
2538649992,2538649995,DE
-2538649996,2538650059,IT
+2538649996,2538650059,FR
2538650060,2538650063,DE
-2538650064,2538650103,IT
+2538650064,2538650103,FR
2538650104,2538650107,DE
-2538650108,2538650199,IT
+2538650108,2538650199,FR
2538650200,2538650203,DE
-2538650204,2538651135,IT
+2538650204,2538651135,FR
2538651136,2538651139,DE
-2538651140,2538651183,IT
+2538651140,2538651183,FR
2538651184,2538651187,DE
-2538651188,2538651255,IT
+2538651188,2538651255,FR
2538651256,2538651259,DE
-2538651260,2538651279,IT
+2538651260,2538651279,FR
2538651280,2538651283,DE
-2538651284,2538652727,IT
+2538651284,2538651967,FR
+2538651968,2538651999,PT
+2538652000,2538652727,FR
2538652728,2538652731,DE
-2538652732,2538653327,IT
+2538652732,2538652991,FR
+2538652992,2538653055,DE
+2538653056,2538653327,FR
2538653328,2538653331,CZ
-2538653332,2538653379,IT
+2538653332,2538653379,FR
2538653380,2538653383,DE
2538653384,2538653387,ES
-2538653388,2538653927,IT
+2538653388,2538653927,FR
2538653928,2538653931,ES
-2538653932,2538656959,IT
+2538653932,2538653935,FR
+2538653936,2538653939,GB
+2538653940,2538655071,FR
+2538655072,2538655103,FI
+2538655104,2538656959,FR
2538656960,2538656975,ES
-2538656976,2538657135,IT
+2538656976,2538657135,FR
2538657136,2538657139,RO
-2538657140,2538657918,IT
-2538657919,2538657919,ES
-2538657920,2538658347,IT
+2538657140,2538657439,FR
+2538657440,2538657443,ES
+2538657444,2538657855,FR
+2538657856,2538657919,ES
+2538657920,2538657935,FR
+2538657936,2538657943,ES
+2538657944,2538657967,FR
+2538657968,2538657983,IE
+2538657984,2538658347,FR
2538658348,2538658351,DE
-2538658352,2538658495,IT
+2538658352,2538658495,FR
2538658496,2538658499,DE
-2538658500,2538658623,IT
+2538658500,2538658623,FR
2538658624,2538658655,NL
-2538658656,2539978751,IT
+2538658656,2538659071,FR
+2538659072,2538659135,NL
+2538659136,2538659331,FR
+2538659332,2538659335,PL
+2538659336,2538659711,FR
+2538659712,2538659719,ES
+2538659720,2538663299,FR
+2538663300,2538663303,IT
+2538663304,2538663503,FR
+2538663504,2538663507,DE
+2538663508,2538663551,FR
+2538663552,2538663567,IT
+2538663568,2538663791,FR
+2538663792,2538663799,ES
+2538663800,2538666111,FR
+2538666112,2538666175,GB
+2538666176,2538667775,FR
+2538667776,2538667839,ES
+2538667840,2538668031,FR
+2538668032,2539978751,IT
2539978752,2539980799,US
2539980800,2539981823,SG
2539981824,2539982847,DE
@@ -65677,12 +75096,20 @@
2540035072,2540036095,CL
2540036096,2540037119,ZA
2540037120,2540038143,JP
-2540038144,2540240895,US
+2540038144,2540039167,NZ
+2540039168,2540040191,NO
+2540040192,2540041215,IT
+2540041216,2540042239,FI
+2540042240,2540043263,US
+2540043264,2540044287,BR
+2540044288,2540240895,US
2540240896,2540306431,FI
-2540306432,2540339199,DE
-2540339200,2540355583,US
+2540306432,2540322815,FR
+2540322816,2540339199,DE
+2540339200,2540347391,GB
+2540347392,2540355583,US
2540355584,2540363775,GB
-2540363776,2540896255,US
+2540367872,2540896255,US
2540896256,2540961791,FR
2540961792,2541223935,US
2541223936,2541289471,CH
@@ -65696,13 +75123,16 @@
2542141440,2542206975,US
2542206976,2542272511,TR
2542272512,2542338047,DE
-2542338048,2543583231,US
+2542338048,2542927871,US
+2542927872,2542993407,SG
+2542993408,2543583231,US
2543583232,2543648767,SE
2543648768,2543714303,NO
2543779840,2544500735,US
2544500736,2544566271,GB
2544566272,2544631807,US
-2544697344,2544828415,US
+2544697344,2544762879,SA
+2544762880,2544828415,US
2544893952,2544959487,GB
2544959488,2545025023,SE
2545025024,2545090559,AU
@@ -65720,12 +75150,12 @@
2547154944,2547187711,NZ
2547187712,2547318783,GB
2547318784,2547515391,US
-2547515392,2547515903,RU
+2547515392,2547517439,RU
2547523584,2547524607,DE
2547524608,2547525631,IR
-2547525632,2547535871,GB
+2547525632,2547527679,DE
+2547527680,2547535871,GB
2547548160,2547580927,NO
-2547580928,2547646463,DE
2548039680,2548072320,GB
2548072321,2548072321,US
2548072322,2548563967,GB
@@ -65784,12 +75214,12 @@
2549614464,2549614591,SE
2549614592,2549616639,IT
2549616640,2549618687,BE
-2549618688,2549620735,DE
+2549618688,2549620735,US
2549620736,2549624831,PL
2549624832,2549626879,BE
2549626880,2549628927,PL
2549628928,2549637119,RO
-2549637120,2549641215,BH
+2549637120,2549641215,KW
2549641216,2549645311,RU
2549645312,2549678079,CH
2549678080,2549698559,GB
@@ -65903,7 +75333,7 @@
2556985344,2557018111,CN
2557018112,2557083647,GB
2557083648,2557214719,ZA
-2557214720,2557280255,SC
+2557214720,2557280255,HK
2557280256,2557542399,ZA
2557542400,2557607935,US
2557607936,2557673471,GB
@@ -65914,7 +75344,9 @@
2558658500,2558658500,PR
2558658501,2558918655,US
2558918656,2558984191,GB
-2558984192,2559246335,US
+2558984192,2559049727,US
+2559049728,2559115263,CN
+2559115264,2559246335,US
2559246336,2559311871,CL
2559311872,2559508479,US
2559508480,2559574015,DE
@@ -65934,7 +75366,9 @@
2561409024,2561671167,CL
2561671168,2562867199,US
2562867200,2562868223,DE
-2562868224,2563244031,US
+2562868224,2562956287,US
+2562956288,2562956799,ZA
+2562956800,2563244031,US
2563244032,2563637247,CO
2563637248,2563768319,CU
2563768320,2564947967,US
@@ -65962,7 +75396,11 @@
2568093696,2568159231,US
2568159232,2568224767,PL
2568224768,2568290303,SG
-2568290304,2569142271,US
+2568290304,2568505660,US
+2568505661,2568505661,SA
+2568505662,2568580923,US
+2568580924,2568580924,GB
+2568580925,2569142271,US
2569142272,2569404415,CN
2569404416,2569797631,US
2569797632,2569863167,NO
@@ -65978,14 +75416,14 @@
2570125312,2570190847,BE
2570190848,2572681215,US
2572681216,2572746751,SE
-2572746752,2572943359,US
-2572943360,2572944127,DE
+2572746752,2572944127,US
2572944128,2572944383,LT
-2572944384,2572945407,DE
+2572944384,2572945407,US
2572945408,2572947455,ID
-2572947456,2572950271,DE
+2572947456,2572950271,PL
2572950272,2572950527,ES
-2572950528,2572953599,DE
+2572950528,2572951551,DE
+2572951552,2572953599,US
2572953600,2572953855,CA
2572953856,2572954111,DE
2572954112,2572954367,ES
@@ -65996,7 +75434,7 @@
2572955389,2572955390,HK
2572955391,2572955391,GB
2572955392,2572955647,DE
-2572955648,2572959743,LU
+2572955648,2572959743,FR
2572959744,2572960255,DE
2572960256,2572960511,SE
2572960512,2572960767,BE
@@ -66005,17 +75443,13 @@
2572961280,2572961535,IT
2572961536,2572961791,ES
2572961792,2572967935,DE
-2572967936,2572968447,FR
-2572968448,2572968959,CZ
-2572968960,2572972031,FR
+2572967936,2572972031,FR
2572972032,2572974079,AT
2572974080,2572975103,ES
2572975104,2572975615,DE
2572975616,2572975871,SE
2572975872,2572976127,NL
-2572976128,2572980479,IS
-2572980480,2572980607,DE
-2572980608,2572984319,IS
+2572976128,2572984319,IS
2572984320,2572984575,DE
2572984576,2572984831,NL
2572984832,2572985087,AT
@@ -66029,7 +75463,8 @@
2572986880,2572987391,DE
2572987392,2572987647,NO
2572987648,2572987903,LU
-2572987904,2572988415,DE
+2572987904,2572988159,DE
+2572988160,2572988415,KR
2572988416,2572989439,IT
2572989440,2572989695,GR
2572989696,2572989823,PL
@@ -66046,11 +75481,12 @@
2572992384,2572992447,RS
2572992448,2572992511,UA
2572992512,2572996607,DE
-2572996608,2573000703,US
+2572996608,2572997631,GB
+2572997632,2573000703,US
2573000704,2573008895,FR
-2573008896,2573352959,DE
+2573008896,2573336575,DE
2573352960,2573361151,BE
-2573361152,2573402111,DE
+2573369344,2573402111,DE
2573402112,2573467647,CN
2573467648,2573533183,DE
2573533184,2573598719,CN
@@ -66059,14 +75495,18 @@
2573991936,2574123007,CH
2574123008,2574188543,NO
2574188544,2574254079,NZ
-2574254080,2574311167,SE
+2574254080,2574306303,SE
+2574306304,2574307327,BE
+2574307328,2574311167,SE
2574311168,2574311423,US
2574311424,2574319615,SE
2574319616,2574647295,US
2574647296,2574778367,CN
2574778368,2583582207,JP
2583582208,2583582463,HK
-2583582464,2583691263,JP
+2583582464,2583589103,JP
+2583589104,2583589111,SG
+2583589112,2583691263,JP
2583691264,2583695359,ZA
2583695360,2583697407,BW
2583697408,2583699455,CI
@@ -66089,7 +75529,8 @@
2584346624,2584412159,KR
2584412160,2584477695,CA
2584477696,2584608767,US
-2584608768,2584739839,CH
+2584608768,2584674303,CH
+2584674304,2584739839,GB
2584739840,2584739903,AU
2584739904,2584739935,DE
2584739936,2584740095,ZA
@@ -66248,19 +75689,18 @@
2584763968,2584763999,DE
2584764000,2584764415,ZA
2584764416,2584764671,MA
-2584764672,2584766975,US
-2584766976,2584767231,NL
+2584764672,2584767231,US
2584767232,2584767487,TR
2584767488,2584768511,US
-2584768512,2584770559,IL
+2584768512,2584768767,IL
+2584768768,2584769535,US
+2584769536,2584770559,IL
2584770560,2584772448,US
2584772449,2584772449,GB
-2584772450,2584773631,US
-2584773632,2584773887,GB
-2584773888,2584775423,US
+2584772450,2584775423,US
2584775424,2584775679,KE
-2584775680,2584776703,MA
-2584776704,2584778751,US
+2584775680,2584775935,MA
+2584775936,2584778751,US
2584778752,2584779775,DE
2584779776,2584780031,NL
2584780032,2584780287,US
@@ -66270,13 +75710,19 @@
2584782336,2584789759,US
2584789760,2584790015,NL
2584790016,2584790783,US
-2584790784,2584791039,HK
+2584790784,2584790951,HK
+2584790952,2584790952,US
+2584790953,2584791039,HK
2584791040,2584791295,US
2584791296,2584791551,FR
2584791552,2584791807,DE
2584791808,2584796159,US
2584796160,2584796415,RU
-2584796416,2585001983,US
+2584796416,2584801023,US
+2584801024,2584801279,GB
+2584801280,2584887807,US
+2584887808,2584888063,JP
+2584888064,2585001983,US
2585001984,2585067519,CA
2585067520,2585330440,US
2585330441,2585330442,SI
@@ -66298,23 +75744,31 @@
2586510336,2586511359,ES
2586511360,2586517503,US
2586517504,2586525695,FR
-2586525696,2586544127,US
+2586525696,2586542847,US
+2586542848,2586542911,SE
+2586542912,2586544127,US
2586544128,2586546175,SE
2586546176,2586566655,US
2586566656,2586566687,FR
-2586566688,2586610175,US
-2586610176,2586610431,GB
-2586610432,2586610687,US
+2586566688,2586607615,US
+2586607616,2586609663,GB
+2586609664,2586610175,ES
+2586610176,2586610687,GB
2586610688,2586611711,ES
-2586611712,2586622463,US
+2586611712,2586615807,GB
+2586615808,2586622463,US
2586622464,2586622975,ES
-2586622976,2586640383,US
+2586622976,2586623743,US
+2586623744,2586623999,ES
+2586624000,2586640383,US
2586640384,2586640399,MC
2586640400,2586640895,US
2586640896,2586641407,FR
2586641408,2586650687,US
2586650688,2586650703,DE
-2586650704,2586694655,US
+2586650704,2586653439,US
+2586653440,2586653695,NL
+2586653696,2586694655,US
2586694656,2586694911,FR
2586694912,2586714879,US
2586714880,2586715135,NL
@@ -66343,8 +75797,8 @@
2586807296,2586814463,US
2586814464,2586816511,RO
2586816512,2586828799,US
-2586828800,2586828863,CH
-2586828864,2586829311,US
+2586828800,2586829055,CH
+2586829056,2586829311,US
2586829312,2586829567,CH
2586829568,2586853887,US
2586853888,2586854143,ES
@@ -66355,21 +75809,20 @@
2586875904,2586876415,US
2586876416,2586876671,ES
2586876672,2586876927,US
-2586876928,2586882559,ES
-2586882560,2586884095,US
+2586876928,2586883071,ES
+2586883072,2586884095,US
2586884096,2586884351,ES
-2586884352,2586885119,US
-2586885120,2586886143,ES
-2586886144,2586887167,DE
-2586887168,2586888191,US
+2586884352,2586884607,US
+2586884608,2586886143,ES
+2586886144,2586888191,US
2586888192,2586888447,DE
2586888448,2586890239,US
2586890240,2586890751,DE
2586890752,2586891263,US
2586891264,2586891519,GB
2586891520,2586927103,US
-2586927104,2586935295,GB
-2586935296,2586952191,US
+2586927104,2586931199,GB
+2586931200,2586952191,US
2586952192,2586952447,FR
2586952448,2586952703,US
2586952704,2586953471,FR
@@ -66383,14 +75836,18 @@
2586968320,2587018239,US
2587018240,2587020799,IE
2587020800,2587021823,US
-2587021824,2587022847,IE
-2587022848,2587049983,US
+2587021824,2587023359,IE
+2587023360,2587033599,US
+2587033600,2587041791,NL
+2587041792,2587049983,US
2587049984,2587058175,GB
2587058176,2587066367,US
2587066368,2587069439,GB
2587069440,2587070463,US
2587070464,2587082751,GB
-2587082752,2587128522,US
+2587082752,2587107327,US
+2587107328,2587115519,BE
+2587115520,2587128522,US
2587128523,2587128523,TR
2587128524,2587131903,US
2587131904,2587132415,FR
@@ -66398,29 +75855,33 @@
2587164672,2587172863,CH
2587172864,2587197439,US
2587197440,2587197695,ES
-2587197696,2587214847,US
-2587214848,2587215871,GB
-2587215872,2587217919,US
+2587197696,2587217919,US
2587217920,2587218943,CG
2587218944,2587240389,US
2587240390,2587240390,FR
2587240391,2587249417,US
2587249418,2587249418,FR
-2587249419,2587287295,US
-2587287296,2587287551,ES
+2587249419,2587285503,US
+2587285504,2587285759,ES
+2587285760,2587286015,US
+2587286016,2587286271,ES
+2587286272,2587287039,US
+2587287040,2587287551,ES
2587287552,2587361791,US
2587361792,2587362047,MD
2587362048,2587377663,US
-2587377664,2587385855,FR
+2587377664,2587379711,IT
+2587379712,2587381759,US
+2587381760,2587385855,FR
2587385856,2587394047,US
2587394048,2587399423,ES
2587399424,2587399679,US
2587399680,2587402239,ES
-2587402240,2587410431,US
-2587410432,2587418623,IT
-2587418624,2587427839,US
-2587427840,2587429887,GR
-2587429888,2587443199,US
+2587402240,2587412479,US
+2587412480,2587414527,IT
+2587414528,2587427839,US
+2587427840,2587430911,GR
+2587430912,2587443199,US
2587443200,2587447295,CH
2587447296,2587476760,US
2587476761,2587476761,LB
@@ -66436,33 +75897,36 @@
2587499008,2587504639,US
2587504640,2587508735,ES
2587508736,2587525119,GB
-2587525120,2587542527,US
-2587542528,2587544575,ES
-2587544576,2587545599,US
+2587525120,2587541503,US
+2587541504,2587544575,ES
+2587544576,2587545599,GB
2587545600,2587549695,ES
2587549696,2587582463,US
2587582464,2587587071,NL
-2587587072,2587592703,US
+2587587072,2587589631,US
+2587589632,2587589887,NL
+2587589888,2587592191,US
+2587592192,2587592447,GB
+2587592448,2587592703,US
2587592704,2587594751,GB
2587594752,2587596799,US
2587596800,2587598847,GB
2587598848,2587607295,US
-2587607296,2587607551,DE
-2587607552,2587623423,US
+2587607296,2587607807,DE
+2587607808,2587623423,US
2587623424,2587631615,BG
2587631616,2587631871,US
2587631872,2587632127,ES
2587632128,2587639807,US
2587639808,2587647999,GB
-2587648000,2587648511,US
-2587648512,2587649023,ES
-2587649024,2587650815,US
-2587650816,2587651071,ES
-2587651072,2587674623,US
+2587648000,2587656191,ES
+2587656192,2587672831,US
+2587672832,2587673087,IT
+2587673088,2587674623,US
2587674624,2587676671,IT
2587676672,2587680767,US
-2587680768,2587684863,ES
-2587684864,2587686911,US
+2587680768,2587685375,ES
+2587685376,2587686911,US
2587686912,2587688959,ES
2587688960,2587697151,US
2587697152,2587697407,GB
@@ -66470,28 +75934,43 @@
2587698176,2587699199,GB
2587699200,2587700223,US
2587700224,2587700735,GB
-2587700736,2587713535,US
+2587700736,2587709695,US
+2587709696,2587709759,NL
+2587709760,2587709823,CH
+2587709824,2587709887,IT
+2587709888,2587710975,US
+2587710976,2587711231,NL
+2587711232,2587711295,NO
+2587711296,2587711359,DE
+2587711360,2587711487,NL
+2587711488,2587713535,US
2587713536,2587714559,ES
2587714560,2587717631,US
2587717632,2587721727,ES
-2587721728,2587738111,US
+2587721728,2587722751,US
+2587722752,2587723007,GB
+2587723008,2587723519,US
+2587723520,2587723775,GB
+2587723776,2587738111,US
2587738112,2587738623,RS
2587738624,2587740159,US
2587740160,2587742207,RS
2587742208,2587746303,US
-2587746304,2587747327,ES
-2587747328,2587926527,US
+2587746304,2587754495,ES
+2587754496,2587762687,US
+2587762688,2587763711,ES
+2587763712,2587926527,US
2587926528,2587930623,BG
2587930624,2587938815,US
-2587938816,2587939327,PR
-2587939328,2587941375,US
-2587941376,2587941631,PR
-2587941632,2587951103,US
+2587938816,2587942911,PR
+2587942912,2587951103,US
2587951104,2587952127,ZA
2587952128,2587953151,NG
2587953152,2587954175,MU
2587954176,2587955199,ZA
-2587955200,2587959295,KE
+2587955200,2587957247,GH
+2587957248,2587958271,LR
+2587958272,2587959295,BJ
2587959296,2587961343,SN
2587961344,2587962367,ZA
2587962368,2587963391,SS
@@ -66530,8 +76009,7 @@
2588079104,2588079359,ZA
2588079360,2588079615,DJ
2588079616,2588079871,GB
-2588079872,2588080127,MU
-2588080128,2588082175,ZA
+2588079872,2588082175,ZA
2588082176,2588147711,RE
2588147712,2588164095,CI
2588164096,2588180479,RW
@@ -66663,7 +76141,9 @@
2589242112,2589242367,TR
2589242368,2589242623,UA
2589242624,2589242879,VN
-2589242880,2589523967,US
+2589242880,2589265919,US
+2589265920,2589270015,HK
+2589270016,2589523967,US
2589523968,2589589503,HK
2589589504,2589655039,US
2589655040,2589720575,HK
@@ -66688,7 +76168,11 @@
2591424512,2591457279,NG
2591457280,2591473663,ML
2591473664,2591477759,AO
-2591477760,2591481855,PT
+2591477760,2591479295,PT
+2591479296,2591479551,AO
+2591479552,2591480831,PT
+2591480832,2591481343,AO
+2591481344,2591481855,PT
2591481856,2591483903,TZ
2591483904,2591485951,KE
2591485952,2591486975,SO
@@ -66706,8 +76190,7 @@
2591555584,2591571967,GH
2591571968,2591588351,NG
2591588352,2591604735,MG
-2591604736,2591605759,ZA
-2591605760,2591606783,KE
+2591604736,2591606783,ZA
2591606784,2591610879,MU
2591610880,2591612927,ZM
2591612928,2591621119,ZW
@@ -66721,8 +76204,7 @@
2592022528,2592026623,BJ
2592026624,2592026879,US
2592026880,2592027391,ZA
-2592027392,2592027647,GB
-2592027648,2592028671,US
+2592027392,2592028671,US
2592028672,2592028799,NG
2592028800,2592028927,KE
2592028928,2592029183,ZA
@@ -66757,17 +76239,17 @@
2600468480,2600534015,ZM
2600534016,2600665087,US
2600665088,2600730623,CA
-2600730624,2600779775,SE
-2600779776,2600780031,NO
-2600780032,2600781311,SE
-2600781312,2600781567,NO
-2600781568,2600787967,SE
-2600787968,2600788223,NO
-2600788224,2600788735,SE
-2600788736,2600788991,NO
-2600788992,2600791807,SE
-2600791808,2600792063,NO
-2600792064,2600796159,SE
+2600730624,2600779844,SE
+2600779845,2600779845,NO
+2600779846,2600779883,SE
+2600779884,2600779884,NO
+2600779885,2600779895,SE
+2600779896,2600779896,NO
+2600779897,2600779974,SE
+2600779975,2600779975,NO
+2600779976,2600779991,SE
+2600779992,2600779992,NO
+2600779993,2600796159,SE
2600796160,2601123839,US
2601123840,2601189375,CA
2601189376,2601254911,EG
@@ -66785,9 +76267,9 @@
2602770944,2602771455,IN
2602771456,2602774015,US
2602774016,2602774527,IN
-2602774528,2602819583,US
-2602819584,2602827775,AU
-2602827776,2603417599,US
+2602774528,2602821631,US
+2602821632,2602821887,IN
+2602821888,2603417599,US
2603417600,2603483135,DE
2603483136,2604007423,US
2604007424,2604072959,ES
@@ -66798,9 +76280,7 @@
2604400640,2604466175,AU
2604466176,2604648447,US
2604648448,2604648959,NZ
-2604648960,2604649983,US
-2604649984,2604650495,CA
-2604650496,2604793855,US
+2604648960,2604793855,US
2604793856,2604859391,CH
2604859392,2604990463,US
2604990464,2605055999,SG
@@ -66844,7 +76324,11 @@
2609381376,2609446911,GB
2609446912,2609512447,DK
2609512448,2609643519,US
-2609643520,2609708799,FR
+2609643520,2609676287,FR
+2609676288,2609677815,GB
+2609677816,2609677817,FR
+2609677818,2609684479,GB
+2609684480,2609708799,FR
2609708800,2609708839,HK
2609708840,2609708843,FR
2609708844,2609709055,HK
@@ -66861,7 +76345,6 @@
2612723712,2612789247,AU
2612789248,2613051391,US
2613051392,2613116927,GB
-2613116928,2613182463,US
2613182464,2613247999,CA
2613248000,2613313535,US
2613313536,2613379071,SD
@@ -67011,6 +76494,7 @@
2617245696,2617262079,LS
2617262080,2617266175,ZA
2617266176,2617267199,GH
+2617267200,2617268223,ZA
2617268224,2617269247,CD
2617269248,2617278463,ZA
2617278464,2617286655,GH
@@ -67043,7 +76527,9 @@
2618116096,2618163199,NZ
2618163200,2618228735,IT
2618228736,2618294271,US
-2618359808,2618425343,PL
+2618359808,2618384383,PL
+2618384384,2618386431,SE
+2618386432,2618425343,PL
2618425344,2618490879,FR
2618490880,2618687487,US
2618687488,2618753023,AU
@@ -67052,7 +76538,9 @@
2618949632,2619080703,US
2619080704,2619146239,FR
2619146240,2619277311,US
-2619277312,2619342847,BN
+2619277312,2619327743,BN
+2619327744,2619327999,AU
+2619328000,2619342847,BN
2619342848,2619473919,US
2619473920,2619539455,CA
2619539456,2619604991,ES
@@ -67070,9 +76558,7 @@
2620078592,2620078847,US
2620078848,2620129279,GB
2620129280,2620194815,CA
-2620194816,2620315039,US
-2620315040,2620315063,DE
-2620315064,2620391423,US
+2620194816,2620391423,US
2620391424,2620456959,GB
2620456960,2620522495,SE
2620522496,2620588031,AU
@@ -67092,7 +76578,9 @@
2621636992,2621637055,MD
2621637056,2621637119,BG
2621637120,2621637631,US
-2621637632,2621638655,DE
+2621637632,2621638159,DE
+2621638160,2621638167,GB
+2621638168,2621638655,DE
2621638656,2621639679,CH
2621639680,2621640191,DE
2621640192,2621640703,NL
@@ -67108,17 +76596,7 @@
2621651968,2621652991,ES
2621652992,2621669375,PL
2621669376,2621685759,DE
-2621685760,2621685887,NO
-2621685888,2621686015,DK
-2621686016,2621686271,GB
-2621686272,2621686527,AU
-2621686528,2621686783,GB
-2621686784,2621687039,AU
-2621687040,2621687295,GB
-2621687296,2621687423,CZ
-2621687424,2621687551,PL
-2621687552,2621687807,GB
-2621687808,2621687935,AT
+2621685760,2621687935,AT
2621687936,2621688063,IE
2621688064,2621688319,AU
2621688320,2621688575,MX
@@ -67130,10 +76608,10 @@
2621689280,2621689343,CZ
2621689344,2621689599,AU
2621689600,2621689855,CA
-2621689856,2621693951,CY
+2621689856,2621692927,SG
+2621692928,2621693951,CY
2621693952,2621698047,DE
-2621698048,2621700095,GB
-2621700096,2621702143,DE
+2621698048,2621702143,GB
2621702144,2621767679,US
2621767680,2621833215,NZ
2621833216,2621936895,US
@@ -67146,7 +76624,9 @@
2624192512,2624258047,CH
2624258048,2624265727,US
2624265728,2624266239,SG
-2624266240,2624269313,US
+2624266240,2624266561,US
+2624266562,2624266562,AU
+2624266563,2624269313,US
2624269314,2624269314,AU
2624269315,2624269317,US
2624269318,2624269318,AU
@@ -67251,24 +76731,10 @@
2624298292,2624298295,PH
2624298296,2624298299,TH
2624298300,2624298495,SG
-2624298496,2624302081,US
-2624302082,2624302082,AU
-2624302083,2624302085,US
-2624302086,2624302086,AU
-2624302087,2624302089,US
-2624302090,2624302090,AU
-2624302091,2624302113,US
-2624302114,2624302114,AU
-2624302115,2624302117,US
-2624302118,2624302118,AU
-2624302119,2624302121,US
-2624302122,2624302122,AU
-2624302123,2624302149,US
-2624302150,2624302150,AU
-2624302151,2624302153,US
-2624302154,2624302154,AU
-2624302155,2624302591,US
-2624302592,2624303103,AU
+2624298496,2624302079,US
+2624302080,2624302145,AU
+2624302146,2624302146,US
+2624302147,2624303103,AU
2624303104,2624303615,US
2624303616,2624304639,CN
2624304640,2624395263,US
@@ -67297,7 +76763,9 @@
2627469312,2627731455,TZ
2627731456,2631925759,EG
2631925760,2632450047,ZA
-2632450048,2632974335,US
+2632450048,2632516095,US
+2632516096,2632519679,HK
+2632519680,2632974335,US
2632974336,2634022911,ZA
2634022912,2634088447,CN
2634088448,2635202559,JP
@@ -67325,12 +76793,18 @@
2637451776,2637452031,US
2637452032,2637452543,IN
2637452544,2637452799,CA
-2637452800,2637453311,US
+2637452800,2637453055,US
+2637453056,2637453311,NZ
2637453312,2637453567,AR
2637453568,2637453823,CL
-2637453824,2637454079,US
+2637453824,2637454079,ZA
2637454080,2637454335,JP
-2637454336,2637627391,US
+2637454336,2637454591,GB
+2637454592,2637454847,US
+2637454848,2637455103,AU
+2637455104,2637457407,US
+2637457408,2637457663,JP
+2637457664,2637627391,US
2637627392,2637627551,IE
2637627552,2637627583,US
2637627584,2637628031,IE
@@ -67342,7 +76816,8 @@
2637629024,2637629311,IE
2637629312,2637629375,US
2637629376,2637629439,IE
-2637629440,2637629599,NL
+2637629440,2637629503,US
+2637629504,2637629599,NL
2637629600,2637629631,IE
2637629632,2637629663,NL
2637629664,2637629807,IE
@@ -67362,19 +76837,19 @@
2637630848,2637631487,IE
2637631488,2637637887,US
2637637888,2637638143,IE
-2637638144,2637638399,US
-2637638400,2637638463,IE
+2637638144,2637638431,US
+2637638432,2637638463,IE
2637638464,2637638503,US
2637638504,2637638511,IE
2637638512,2637638671,US
-2637638672,2637638815,IE
-2637638816,2637638879,US
+2637638672,2637638783,IE
+2637638784,2637638879,US
2637638880,2637638911,IE
2637638912,2637638943,US
-2637638944,2637639039,IE
-2637639040,2637639359,US
-2637639360,2637639423,IE
-2637639424,2637639551,US
+2637638944,2637639167,IE
+2637639168,2637639359,US
+2637639360,2637639391,IE
+2637639392,2637639551,US
2637639552,2637639679,IE
2637639680,2637641535,US
2637641536,2637641567,IE
@@ -67399,17 +76874,15 @@
2637686464,2637686495,US
2637686496,2637686503,IE
2637686504,2637686511,NL
-2637686512,2637686655,US
-2637686656,2637686783,IE
-2637686784,2637686855,US
+2637686512,2637686855,US
2637686856,2637686975,IE
2637686976,2637687215,US
2637687216,2637687615,IE
2637687616,2637687679,US
2637687680,2637688319,IE
2637688320,2637688479,US
-2637688480,2637688831,IE
-2637688832,2637722143,US
+2637688480,2637688575,IE
+2637688576,2637722143,US
2637722144,2637722175,IE
2637722176,2637722943,US
2637722944,2637722975,NL
@@ -67432,9 +76905,12 @@
2637746248,2637746255,FI
2637746256,2637746263,AT
2637746264,2637746279,NL
-2637746280,2637746287,US
+2637746280,2637746287,FI
2637746288,2637746295,FR
-2637746296,2637746687,US
+2637746296,2637746311,NL
+2637746312,2637746319,FI
+2637746320,2637746327,FR
+2637746328,2637746687,US
2637746688,2637746703,KR
2637746704,2637746743,US
2637746744,2637746751,HK
@@ -67474,21 +76950,26 @@
2640379904,2640388095,IS
2640388096,2640392191,DE
2640392192,2640396287,NL
-2640396288,2640397311,DE
+2640396288,2640397311,ES
2640397312,2640398335,AT
-2640398336,2640400383,DE
+2640398336,2640398367,DE
+2640398368,2640398399,BE
+2640398400,2640398431,NL
+2640398432,2640400383,DE
2640400384,2640404479,ES
2640404480,2640404735,NL
2640404736,2640404991,US
2640404992,2640405503,NL
2640405504,2640406527,US
-2640406528,2640408575,DE
+2640406528,2640406783,DE
+2640406784,2640407039,US
+2640407040,2640408575,DE
2640408576,2640410623,NL
2640410624,2640411135,US
2640411136,2640411391,MX
2640411392,2640412671,US
2640412672,2640413695,GB
-2640413696,2640413951,DE
+2640413696,2640413951,CY
2640413952,2640414463,US
2640414464,2640414719,DE
2640414720,2640416767,FR
@@ -67498,7 +76979,8 @@
2640417792,2640418815,CH
2640418816,2640420863,NO
2640420864,2640421631,IT
-2640421632,2640422911,DE
+2640421632,2640421887,DE
+2640421888,2640422911,SE
2640422912,2640423935,NL
2640423936,2640429055,ES
2640429056,2640445439,NL
@@ -67528,7 +77010,7 @@
2641841152,2641842175,MM
2641842176,2641845247,IN
2641845248,2641846271,HK
-2641846272,2641847295,NL
+2641846272,2641847295,KH
2641847296,2641848319,IR
2641848320,2641850367,IN
2641850368,2641851391,HK
@@ -67560,7 +77042,7 @@
2642018304,2642083839,CN
2642083840,2642149375,US
2642149376,2642214911,FI
-2642214912,2642280447,SE
+2642214912,2642280447,GB
2642280448,2642411519,US
2642411520,2642477055,AU
2642477056,2642542591,FI
@@ -67569,7 +77051,7 @@
2642743296,2642751487,US
2642751488,2642755583,CA
2642755584,2642757631,DE
-2642757632,2642759679,US
+2642757632,2642759679,SA
2642759680,2642761727,AE
2642761728,2642763775,SA
2642763776,2642767871,AU
@@ -67584,7 +77066,8 @@
2643197952,2643263487,GB
2643263488,2643460095,US
2643460096,2643525631,FI
-2643525632,2643722239,US
+2643525632,2643656703,US
+2643656704,2643722239,JP
2643722240,2643787775,CN
2643787776,2644180991,US
2644180992,2644246527,AU
@@ -67596,8 +77079,9 @@
2644574208,2644639743,CH
2644639744,2644770815,DE
2644770816,2644836351,BE
-2644836352,2644967423,US
-2644967424,2645032959,AT
+2644836352,2644951039,US
+2644951040,2644959231,GB
+2644959232,2644967423,US
2645032960,2645098495,CH
2645098496,2645164031,FR
2645164032,2645229567,US
@@ -67840,9 +77324,11 @@
2647326720,2647392255,GB
2647392256,2647457791,US
2647457792,2647523327,JP
-2647523328,2647605503,US
-2647605504,2647605759,GB
-2647605760,2647851007,US
+2647523328,2647605247,US
+2647605248,2647613439,GB
+2647613440,2647687167,US
+2647687168,2647695359,CA
+2647695360,2647851007,US
2647851008,2647916543,AU
2647916544,2648899583,US
2648899584,2648965119,IN
@@ -67863,11 +77349,19 @@
2650603520,2650669055,CO
2650669056,2650734591,US
2650734592,2650800127,CN
-2650800128,2652528639,US
+2650800128,2652504751,US
+2652504752,2652504767,CA
+2652504768,2652520879,US
+2652520880,2652520895,CA
+2652520896,2652528639,US
2652528640,2652528895,AR
-2652528896,2652541183,US
+2652528896,2652540927,US
+2652540928,2652541183,RU
2652541184,2652541439,NL
-2652541440,2653159423,US
+2652541440,2652545023,RU
+2652545024,2652561407,US
+2652561408,2652569599,AU
+2652569600,2653159423,US
2653159424,2653421567,NO
2653421568,2653487103,AU
2653487104,2653552639,GB
@@ -67879,13 +77373,25 @@
2653847552,2653849599,IN
2653849600,2653851647,FR
2653851648,2653855743,GB
-2653855744,2653880319,RU
+2653855744,2653856767,KR
+2653856768,2653859839,TH
+2653859840,2653860863,TR
+2653860864,2653861119,RU
+2653861120,2653861375,IL
+2653861376,2653861887,AM
+2653861888,2653862399,TJ
+2653862400,2653862911,LT
+2653862912,2653863935,TR
+2653863936,2653872127,IN
+2653872128,2653880319,RU
2653880320,2653945855,IT
2653945856,2654011391,US
2654011392,2654076927,ES
-2654076928,2654096639,FR
-2654096640,2654096895,US
-2654096896,2654142463,FR
+2654076928,2654085119,FR
+2654085120,2654089215,HK
+2654089216,2654093311,FR
+2654093312,2654097407,US
+2654097408,2654142463,FR
2654208000,2654339071,US
2654339072,2654404607,AU
2654404608,2654601215,US
@@ -67899,7 +77405,9 @@
2654646272,2654648319,FR
2654648320,2654650367,IR
2654650368,2654666751,BG
-2654666752,2654994431,US
+2654666752,2654732287,US
+2654732288,2654797823,NL
+2654797824,2654994431,US
2654994432,2655059967,LU
2655059968,2655125503,US
2655125504,2655191039,PL
@@ -67924,12 +77432,18 @@
2655360144,2655360151,US
2655360152,2655369863,CA
2655369864,2655369871,US
-2655369872,2655387647,CA
+2655369872,2655382783,CA
+2655382784,2655383039,US
+2655383040,2655387647,CA
2655387648,2655715327,US
2655715328,2655780863,PL
2655780864,2656387071,US
2656387072,2656403455,CA
-2656403456,2656632831,US
+2656403456,2656433399,US
+2656433400,2656433400,NL
+2656433401,2656434135,US
+2656434136,2656434143,BR
+2656434144,2656632831,US
2656632832,2656698367,AU
2656698368,2656763903,FI
2656763904,2656829439,US
@@ -67954,7 +77468,17 @@
2658009088,2658074623,IT
2658074624,2658140159,US
2658140160,2658205695,NO
-2658205696,2658454491,US
+2658205696,2658395135,US
+2658395136,2658395647,GB
+2658395648,2658398719,US
+2658398720,2658399231,CA
+2658399232,2658401279,US
+2658401280,2658402303,NL
+2658402304,2658439183,US
+2658439184,2658439191,MX
+2658439192,2658439367,US
+2658439368,2658439368,BR
+2658439369,2658454491,US
2658454492,2658454492,IN
2658454493,2658459355,US
2658459356,2658459356,IN
@@ -67965,9 +77489,11 @@
2658664448,2658926591,US
2658926592,2659057663,GB
2659057664,2659123199,SE
-2659123200,2659181823,FI
+2659123200,2659180543,FI
+2659180544,2659181823,NL
2659181824,2659182079,BE
-2659182080,2659188735,FI
+2659182080,2659184639,NL
+2659184640,2659188735,FI
2659188736,2659254271,CA
2659254272,2659319807,LT
2659319808,2659385343,US
@@ -68000,39 +77526,55 @@
2661416960,2661482495,PT
2661482496,2661548031,CA
2661548032,2661679103,US
-2661679104,2661885951,LU
-2661885952,2661886207,BE
-2661886208,2661914111,LU
-2661914112,2661914367,BE
-2661914368,2661941247,LU
+2661679104,2661883903,LU
+2661883904,2661892095,BE
+2661892096,2661908479,LU
+2661908480,2661916671,BE
+2661916672,2661941247,LU
2661941248,2662006783,CL
2662006784,2662072319,US
2662072320,2662137855,ES
2662137856,2662203391,DK
-2662203392,2662207487,SE
-2662207488,2662208511,GB
-2662208512,2662209535,SE
-2662209536,2662210303,GB
-2662210304,2662210559,SE
-2662210560,2662210815,GB
-2662210816,2662211071,SE
-2662211072,2662211583,GB
-2662211584,2662219775,SE
-2662219776,2662268927,GB
-2662268928,2662417947,US
+2662203392,2662268927,SE
+2662268928,2662287391,US
+2662287392,2662287407,AF
+2662287408,2662287519,US
+2662287520,2662287551,AF
+2662287552,2662300879,US
+2662300880,2662300895,JP
+2662300896,2662366271,US
+2662366272,2662366287,IE
+2662366288,2662366591,US
+2662366592,2662366607,AF
+2662366608,2662416463,US
+2662416464,2662416471,SE
+2662416472,2662417947,US
2662417948,2662417951,DE
2662417952,2662418815,US
2662418816,2662418819,DE
-2662418820,2662421887,US
+2662418820,2662420103,US
+2662420104,2662420111,SE
+2662420112,2662421647,US
+2662421648,2662421655,IT
+2662421656,2662421887,US
2662421888,2662422015,DE
-2662422016,2662498303,US
+2662422016,2662422543,US
+2662422544,2662422559,HU
+2662422560,2662423183,US
+2662423184,2662423199,IT
+2662423200,2662425223,US
+2662425224,2662425231,ES
+2662425232,2662426847,US
+2662426848,2662426879,ES
+2662426880,2662434599,US
+2662434600,2662434607,CN
+2662434608,2662498303,US
2662498304,2662662143,GB
2662662144,2662670335,KG
2662670336,2662674431,AZ
-2662674432,2662676479,DE
-2662676480,2662677087,GB
+2662674432,2662677087,DE
2662677088,2662677279,US
-2662677280,2662677375,GB
+2662677280,2662677375,DE
2662677376,2662678527,US
2662678528,2662686719,DE
2662686720,2662694911,CH
@@ -68065,7 +77607,17 @@
2665873408,2665938943,GB
2665938944,2666004479,FR
2666004480,2666070015,CH
-2666070016,2666133880,SE
+2666070016,2666133247,SE
+2666133248,2666133255,DK
+2666133256,2666133263,FI
+2666133264,2666133271,NO
+2666133272,2666133279,PL
+2666133280,2666133311,SE
+2666133312,2666133319,DK
+2666133320,2666133327,FI
+2666133328,2666133335,NO
+2666133336,2666133343,PL
+2666133344,2666133880,SE
2666133881,2666133881,DK
2666133882,2666133882,SE
2666133883,2666133883,FI
@@ -68079,9 +77631,8 @@
2666133891,2666135551,SE
2666135552,2666201087,GB
2666201088,2667053055,US
-2667053056,2667102207,NO
-2667102208,2667110399,DK
-2667110400,2667118591,NO
+2667053056,2667085823,NO
+2667085824,2667118591,DK
2667118592,2667184127,HU
2667184128,2667249663,RU
2667249664,2667315199,CL
@@ -68097,7 +77648,20 @@
2667528192,2667532287,FR
2667532288,2667534335,RU
2667534336,2667536383,PL
-2667536384,2667544575,FR
+2667536384,2667536447,AT
+2667536448,2667536463,FR
+2667536464,2667536575,AT
+2667536576,2667536583,FR
+2667536584,2667536615,AT
+2667536616,2667536623,FR
+2667536624,2667537087,AT
+2667537088,2667537119,FR
+2667537120,2667537151,AT
+2667537152,2667537215,FR
+2667537216,2667537231,AT
+2667537232,2667537239,FR
+2667537240,2667537279,AT
+2667537280,2667544575,FR
2667544576,2667560959,RU
2667560960,2667565055,IT
2667565056,2667565311,HK
@@ -68130,8 +77694,12 @@
2668118016,2668134399,FR
2668134400,2668150783,GB
2668150784,2668167167,NL
-2668167168,2668363775,US
-2668363776,2668429311,CH
+2668167168,2668285951,US
+2668285952,2668290047,GB
+2668290048,2668363775,US
+2668363776,2668412927,CH
+2668412928,2668417023,SG
+2668417024,2668429311,CH
2668429312,2668494847,AU
2668494848,2668560383,US
2668560384,2668625919,GB
@@ -68191,30 +77759,60 @@
2671712148,2671712151,GB
2671712152,2671718827,US
2671718828,2671718831,GB
-2671718832,2671720289,US
+2671718832,2671718877,US
+2671718878,2671718878,HK
+2671718879,2671720289,US
2671720290,2671720290,GB
2671720291,2671749119,US
2671749120,2671750143,CA
-2671750144,2672295935,US
+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
+2672099328,2672164863,DE
+2672164864,2672295935,US
2672295936,2672296959,ES
2672296960,2672361471,SE
2672361472,2672427007,AU
-2672427008,2672820223,US
+2672427008,2672492543,US
+2672492544,2672558079,CN
+2672558080,2672820223,US
2672820224,2672885759,JP
2672885760,2672951295,NO
2672951296,2673082367,US
2673082368,2673147903,FR
2673147904,2673213439,US
2673213440,2673278975,GB
-2673278976,2673410485,US
-2673410486,2673410486,DE
-2673410487,2673434623,US
+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
2673434624,2673438719,DE
-2673438720,2673451007,US
+2673438720,2673442815,CA
+2673442816,2673451007,US
2673451008,2673455103,IN
-2673455104,2673463295,US
-2673463296,2673464319,SG
-2673464320,2673475583,US
+2673455104,2673459199,US
+2673459200,2673464319,SG
+2673464320,2673465343,DE
+2673465344,2673473535,US
+2673473536,2673474559,GB
+2673474560,2673475583,US
2673475584,2673541119,VE
2673541120,2673606655,US
2673606656,2673672191,GB
@@ -68227,37 +77825,16 @@
2674138112,2674139135,DE
2674139136,2674143231,FR
2674143232,2674144255,CH
-2674144256,2674145791,NL
+2674144256,2674145791,US
2674145792,2674146303,GB
2674146304,2674147327,TR
-2674147328,2674147583,NL
-2674147584,2674148607,GB
-2674148608,2674148863,NL
-2674148864,2674149887,GB
-2674149888,2674150143,NL
-2674150144,2674150361,GB
-2674150362,2674150362,NL
-2674150363,2674151167,GB
-2674151168,2674151679,NL
-2674151680,2674152225,GB
-2674152226,2674152226,NL
-2674152227,2674152447,GB
-2674152448,2674152703,NL
-2674152704,2674153471,GB
-2674153472,2674153983,NL
-2674153984,2674154751,GB
-2674154752,2674155007,NL
-2674155008,2674156543,GB
-2674156544,2674156799,NL
-2674156800,2674164175,GB
+2674147328,2674163711,NL
+2674163712,2674164175,GB
2674164176,2674164191,FR
2674164192,2674171903,GB
-2674171904,2674175999,US
-2674176000,2674184191,GB
-2674184192,2674185215,US
-2674185216,2674186239,GB
-2674186240,2674188287,US
-2674188288,2674192383,GB
+2674171904,2674177286,US
+2674177287,2674177287,GB
+2674177288,2674192383,US
2674192384,2674196479,CH
2674196480,2674249727,GB
2674249728,2674251775,US
@@ -68277,9 +77854,7 @@
2675261440,2675269631,TW
2675269632,2675271679,PH
2675271680,2675278847,NZ
-2675278848,2675279359,MY
-2675279360,2675279871,TH
-2675279872,2675281919,MY
+2675278848,2675281919,MY
2675281920,2675286015,IN
2675286016,2675294207,US
2675294208,2675294463,SG
@@ -68294,17 +77869,25 @@
2675301376,2675302143,NZ
2675302144,2675302399,MY
2675302400,2675310591,HK
-2675310592,2675589119,US
+2675310592,2675574895,US
+2675574896,2675574903,NL
+2675574904,2675575951,US
+2675575952,2675575953,SA
+2675575954,2675576703,US
+2675576704,2675576711,JO
+2675576712,2675589119,US
2675589120,2675605503,DE
2675605504,2675605791,US
2675605792,2675605799,IT
2675605800,2675605807,US
2675605808,2675605811,IT
-2675605812,2675605961,US
+2675605812,2675605951,US
+2675605952,2675605961,CZ
2675605962,2675605962,DE
-2675605963,2675605963,US
+2675605963,2675605963,CZ
2675605964,2675605964,DE
-2675605965,2675606271,US
+2675605965,2675605967,CZ
+2675605968,2675606271,US
2675606272,2675606527,IT
2675606528,2675606571,US
2675606572,2675606575,IT
@@ -68312,9 +77895,23 @@
2675606976,2675607039,IT
2675607040,2675608735,US
2675608736,2675608739,IT
-2675608740,2675611295,US
+2675608740,2675608751,US
+2675608752,2675608767,HK
+2675608768,2675608927,US
+2675608928,2675608959,HK
+2675608960,2675608983,US
+2675608984,2675608991,AU
+2675608992,2675609487,US
+2675609488,2675609503,CN
+2675609504,2675610623,US
+2675610624,2675610655,IT
+2675610656,2675611227,US
+2675611228,2675611228,IT
+2675611229,2675611295,US
2675611296,2675611359,IT
-2675611360,2675612715,US
+2675611360,2675611595,US
+2675611596,2675611599,IL
+2675611600,2675612715,US
2675612716,2675612719,IT
2675612720,2675612743,US
2675612744,2675612747,IT
@@ -68322,7 +77919,13 @@
2675613120,2675613151,IT
2675613152,2675613279,US
2675613280,2675613311,IT
-2675613312,2675615743,US
+2675613312,2675613599,US
+2675613600,2675613631,JP
+2675613632,2675613843,US
+2675613844,2675613847,IL
+2675613848,2675614975,US
+2675614976,2675614991,NL
+2675614992,2675615743,US
2675615744,2675615871,IT
2675615872,2675616419,US
2675616420,2675616422,IT
@@ -68340,15 +77943,23 @@
2675621302,2675621302,IT
2675621303,2675626239,US
2675626240,2675626271,GB
-2675626272,2675628399,US
+2675626272,2675627791,US
+2675627792,2675627807,GB
+2675627808,2675628215,US
+2675628216,2675628223,GB
+2675628224,2675628399,US
2675628400,2675628447,GB
2675628448,2675630095,US
2675630096,2675630111,GB
2675630112,2675631327,US
-2675631328,2675631343,GB
-2675631344,2675633183,US
+2675631328,2675631359,GB
+2675631360,2675631983,US
+2675631984,2675631999,HK
+2675632000,2675633183,US
2675633184,2675633215,GB
-2675633216,2675636170,US
+2675633216,2675633695,US
+2675633696,2675633727,JP
+2675633728,2675636170,US
2675636171,2675636171,GB
2675636172,2675965951,US
2675965952,2676031487,CA
@@ -68374,15 +77985,16 @@
2677538816,2677604351,FI
2677604352,2677635071,US
2677635072,2677636095,CN
-2677636096,2677640959,US
+2677636096,2677639167,US
+2677639168,2677639679,CA
+2677639680,2677640959,US
2677640960,2677641471,CA
2677641472,2677642239,US
2677642240,2677642495,ES
2677642496,2677642751,CA
2677642752,2677643007,SE
2677643008,2677643263,IE
-2677643264,2677644287,US
-2677644288,2677645311,GB
+2677643264,2677645311,GB
2677645312,2677648383,US
2677648384,2677649407,JP
2677649408,2677650431,GB
@@ -68505,28 +78117,23 @@
2679389440,2679389695,TH
2679389696,2679389951,AU
2679389952,2679390207,AR
-2679390208,2679391231,GB
+2679390208,2679391231,US
2679391232,2679391487,NL
2679391488,2679391743,GB
2679391744,2679391999,FR
2679392000,2679394047,US
2679394048,2679394303,DE
2679394304,2679394559,GB
-2679394560,2679395071,US
-2679395072,2679406591,GB
+2679394560,2679398399,US
+2679398400,2679406591,GB
2679406592,2679414783,US
-2679414784,2679415307,GB
+2679414784,2679415307,PR
2679415308,2679415308,DE
-2679415309,2679418879,GB
+2679415309,2679418879,PR
2679418880,2679420927,SG
-2679420928,2679431167,GB
-2679431168,2679433727,FR
-2679433728,2679434239,GB
-2679434240,2679435519,FR
-2679435520,2679436287,GB
-2679436288,2679436799,FR
-2679436800,2679437055,GB
-2679437056,2679439359,FR
+2679420928,2679422975,PR
+2679422976,2679431167,US
+2679431168,2679439359,FR
2679439360,2679515391,US
2679515392,2679515903,GB
2679515904,2679523327,US
@@ -68543,7 +78150,9 @@
2680487936,2680553471,GB
2680553472,2680684543,US
2680684544,2680750079,SE
-2680750080,2681012223,US
+2680750080,2680881151,US
+2680881152,2680897535,CA
+2680897536,2681012223,US
2681012224,2681077759,PL
2681077760,2681143295,CA
2681143296,2681208831,AU
@@ -68557,7 +78166,9 @@
2681700864,2681701119,HK
2681701120,2681703423,US
2681703424,2681703935,JP
-2681703936,2681731071,US
+2681703936,2681722367,US
+2681722368,2681722879,BR
+2681722880,2681731071,US
2681731072,2681733119,FR
2681733120,2681798655,NO
2681798656,2681864191,FR
@@ -68577,9 +78188,7 @@
2682014726,2682014727,SG
2682014728,2682055167,US
2682055168,2682055423,SG
-2682055424,2682118143,US
-2682118144,2682126335,AU
-2682126336,2682257407,US
+2682055424,2682257407,US
2682257408,2682322943,UA
2682322944,2682388479,US
2682388480,2682454015,CN
@@ -68599,7 +78208,7 @@
2683637760,2683641855,NL
2683641856,2683645951,US
2683645952,2683650047,SG
-2683650048,2683658239,US
+2683650048,2683651071,US
2683699200,2683830271,US
2683830272,2683895807,AU
2683895808,2684157951,US
@@ -68617,11 +78226,12 @@
2684184576,2684186623,SK
2684186624,2684188671,DE
2684188672,2684189695,RU
-2684189696,2684190719,MD
-2684190720,2684198911,NL
+2684189696,2684198911,NL
2684198912,2684200959,GB
2684200960,2684203007,RU
-2684203008,2684205055,GB
+2684203008,2684204031,GB
+2684204032,2684204543,US
+2684204544,2684205055,GB
2684205056,2684207103,IT
2684207104,2684213247,GB
2684213248,2684215295,SE
@@ -68631,7 +78241,7 @@
2684221440,2684223487,IL
2684223488,2684289023,GB
2684289024,2684297215,RU
-2684297216,2684299263,IR
+2684297216,2684299263,AU
2684299264,2684301311,CY
2684301312,2684305407,PT
2684305408,2684321791,RU
@@ -68665,12 +78275,14 @@
2685613056,2685614079,TW
2685615104,2685616127,NG
2685616128,2685617151,ID
+2685623296,2685624319,LT
2685624320,2685626367,LY
2685626368,2685627391,US
2685628416,2685636607,ZA
2685638656,2685639679,SL
2685640704,2685641727,US
2685642752,2685644799,BR
+2685645824,2685646847,UA
2685647872,2685648383,ZA
2685648384,2685648895,MZ
2685648896,2685649919,RW
@@ -68696,6 +78308,7 @@
2685685760,2685686783,AR
2685686784,2685688831,BR
2685688832,2685689855,CL
+2685692928,2685693951,NO
2685693952,2685694975,SL
2685706240,2685707263,BR
2685707264,2685708287,EC
@@ -68705,19 +78318,26 @@
2685713408,2685714431,CL
2685714432,2685718527,BR
2685718528,2685719551,US
+2685721088,2685721599,VE
2685722112,2685722623,ID
+2685724160,2685724671,US
2685724672,2685726719,CA
+2685727232,2685727743,BR
+2685728256,2685728511,PA
+2685728512,2685728767,AR
2685729792,2685730815,ZA
2685730816,2685796351,JP
2685861888,2686320639,JP
-2686386176,2686844927,US
+2686386176,2686615039,US
+2686615040,2686615295,GB
+2686615296,2686844927,US
2686844928,2686910463,GB
2686910464,2686975999,US
2686976000,2687041535,GR
2687041536,2687238143,US
-2687238144,2687297215,DE
-2687297216,2687297231,HU
-2687297232,2687560191,DE
+2687238144,2687297231,DE
+2687297232,2687297239,GB
+2687297240,2687560191,DE
2687560192,2687560447,ZA
2687560448,2687762431,DE
2687762432,2687827967,AT
@@ -68725,7 +78345,10 @@
2687893504,2688221183,DE
2688221184,2688286719,CH
2688286720,2688352255,DE
-2688352256,2688548863,CH
+2688352256,2688420095,CH
+2688420096,2688420351,US
+2688420352,2688420607,CN
+2688420608,2688548863,CH
2688548864,2688614399,AU
2688614400,2688679935,US
2688679936,2688745471,IT
@@ -68739,23 +78362,13 @@
2689335296,2689400831,US
2689400832,2689466367,MA
2689466368,2689531903,IT
-2689531904,2689535999,US
-2689536000,2689536511,GB
-2689536512,2689541631,US
-2689541632,2689541887,GB
-2689541888,2689545727,US
-2689545728,2689546239,GB
-2689546240,2689566207,US
-2689566208,2689566719,GB
-2689566720,2689568255,US
-2689568256,2689568767,GB
-2689568768,2689586687,US
-2689586688,2689587199,GB
-2689587200,2689593343,US
-2689593344,2689593855,GB
-2689593856,2689594111,US
-2689594112,2689594879,GB
-2689594880,2689597439,US
+2689531904,2689536255,US
+2689536256,2689536511,GB
+2689536512,2689586687,US
+2689586688,2689586943,GB
+2689586944,2689593343,US
+2689593344,2689593599,GB
+2689593600,2689597439,US
2689597440,2689662975,IT
2689662976,2689801904,US
2689801905,2689801905,DE
@@ -68765,9 +78378,13 @@
2689803264,2689810431,GB
2689810432,2689818879,US
2689818880,2689819135,IN
-2689819136,2689835007,US
+2689819136,2689820671,US
+2689820672,2689821183,HK
+2689821184,2689835007,US
2689835008,2689835263,AU
-2689835264,2689925119,US
+2689835264,2689835519,US
+2689835520,2689835775,AU
+2689835776,2689925119,US
2689925120,2689990655,CH
2689990656,2690056191,JP
2690056192,2690187263,US
@@ -68819,7 +78436,8 @@
2692216320,2692216831,NG
2692216832,2692218879,ZA
2692218880,2692284415,CI
-2692284416,2692546559,ZA
+2692284416,2692349951,US
+2692349952,2692546559,ZA
2692546560,2694316031,US
2694316032,2694381567,NG
2694381568,2694447103,US
@@ -68829,7 +78447,7 @@
2695920284,2695920284,EH
2695920285,2696151039,MA
2696151040,2696216575,IT
-2696216576,2696282111,BG
+2696216576,2696282111,ZA
2696282112,2696413183,GM
2696413184,2696478719,US
2696478720,2696609791,JP
@@ -68871,13 +78489,11 @@
2698117120,2698182655,IS
2698182656,2698248191,DE
2698248192,2698313727,US
-2698313728,2698379263,GB
+2698313728,2698379263,DE
2698379264,2698444799,ES
2698444800,2698510335,JP
2698510336,2698706943,CZ
-2698706944,2698709503,CH
-2698709504,2698709759,GB
-2698709760,2698772479,CH
+2698706944,2698772479,CH
2698772480,2698838015,IT
2698838016,2698903551,BE
2698903552,2698969087,AU
@@ -68885,7 +78501,6 @@
2699034624,2699165695,AO
2699165696,2699198463,NG
2699198464,2699211263,ZA
-2699211264,2699211519,KE
2699211520,2699211775,GH
2699211776,2699212799,ZA
2699212800,2699213823,BF
@@ -68902,19 +78517,26 @@
2699956224,2699957247,BD
2699957248,2699957503,JP
2699957760,2699958271,US
+2699958272,2699959807,BR
2699959808,2699960063,JP
-2699960320,2699960831,JP
+2699960320,2699960575,JP
2699960832,2699961343,HK
-2699961344,2699962879,JP
+2699961344,2699962367,DE
+2699962368,2699962623,JP
2699962880,2699964415,US
-2699964416,2699966975,JP
+2699964416,2699964927,ZA
+2699965184,2699965439,JP
+2699965440,2699966463,FR
+2699966464,2699966719,JP
2699966976,2699967487,HK
-2699967488,2699968511,JP
+2699968000,2699968255,JP
2699968512,2699969535,CN
2699969536,2699972607,IN
2699972608,2699973631,NZ
2699973632,2699974655,HK
2699974656,2699976703,IN
+2699976704,2699977599,GB
+2699977600,2699977727,DE
2699977728,2699977983,JP
2699978240,2699978751,US
2699978752,2699980799,BR
@@ -68933,38 +78555,28 @@
2700015616,2700016639,BR
2700016640,2700017663,CL
2700017664,2700214271,JP
-2700214272,2700247039,NA
+2700214272,2700227583,NA
+2700227584,2700227839,ZM
+2700227840,2700247039,NA
2700247040,2700263423,UG
2700263424,2700279807,TG
2700279808,2700935167,JP
2700935168,2701066239,US
-2701066240,2701131775,BG
-2701131776,2701131807,HN
-2701131808,2701131823,CA
-2701131824,2701132159,HN
-2701132160,2701132175,CR
-2701132176,2701132391,HN
-2701132392,2701132399,CR
-2701132400,2701133631,HN
+2701066240,2701131775,ZA
+2701131776,2701133631,HN
2701133632,2701133647,ES
-2701133648,2701134447,HN
-2701134448,2701134463,US
-2701134464,2701135583,HN
-2701135584,2701135599,US
-2701135600,2701136095,HN
+2701133648,2701136095,HN
2701136096,2701136111,US
2701136112,2701137903,HN
2701137904,2701137911,BR
2701137912,2701138607,HN
2701138608,2701138615,UY
-2701138616,2701139135,HN
-2701139136,2701139151,UY
-2701139152,2701139479,HN
+2701138616,2701139479,HN
2701139480,2701139487,NL
2701139488,2701139967,HN
2701139968,2701148159,NI
2701148160,2701149183,AR
-2701149184,2701150207,HN
+2701149184,2701150207,US
2701150208,2701152255,AR
2701152256,2701156351,BQ
2701156352,2701160447,CW
@@ -68982,10 +78594,8 @@
2701328384,2701393919,FR
2701393920,2701459455,NO
2701459456,2701524991,AT
-2701524992,2701656063,US
-2701656064,2701688831,RU
-2701688832,2701721087,US
-2701721088,2701721599,RU
+2701524992,2701721087,US
+2701721088,2701721599,AU
2701721600,2701787135,TR
2701787136,2701852671,CO
2701852672,2701918207,US
@@ -68999,8 +78609,8 @@
2702573568,2702581759,AR
2702581760,2702583807,VE
2702583808,2702585855,MX
-2702585856,2702586111,PA
-2702586112,2702587903,CW
+2702585856,2702586367,PA
+2702586368,2702587903,CW
2702587904,2702589951,BR
2702589952,2702606335,GF
2702606336,2702639103,BO
@@ -69010,12 +78620,14 @@
2702835712,2702901247,US
2702901248,2702966783,IT
2702966784,2703032319,US
-2703032320,2703097855,AU
+2703032320,2703097855,NZ
2703097856,2703105023,GB
2703105024,2703105535,US
2703105536,2703127039,GB
2703127040,2703127295,US
-2703127296,2703163391,GB
+2703127296,2703149831,GB
+2703149832,2703149835,NZ
+2703149836,2703163391,GB
2703163392,2703359999,US
2703360000,2703425535,JP
2703425536,2703556607,US
@@ -69026,7 +78638,10 @@
2703949824,2704015359,AU
2704015360,2704277503,US
2704277504,2704343039,FR
-2704343040,2704408575,US
+2704343040,2704391167,PH
+2704391168,2704392191,US
+2704392192,2704402431,PH
+2704402432,2704408575,US
2704408576,2704474111,AU
2704474112,2704476159,US
2704476160,2704476415,GB
@@ -69034,8 +78649,8 @@
2704476928,2704477183,GB
2704477184,2704478207,US
2704478208,2704478463,SG
-2704478464,2704484351,US
-2704484352,2704485375,AU
+2704478464,2704485119,US
+2704485120,2704485375,AU
2704485376,2704539647,US
2704539648,2704605183,SE
2704605184,2704670719,HR
@@ -69048,12 +78663,7 @@
2705195008,2705260543,CH
2705260544,2705326079,US
2705326080,2705391615,MO
-2705391616,2705399807,AU
-2705399808,2705407999,NZ
-2705408000,2705432575,AU
-2705432576,2705440767,NZ
-2705440768,2705457151,AU
-2705457152,2705522687,NZ
+2705391616,2705522687,NZ
2705522688,2705588223,ES
2705588224,2705596159,US
2705596160,2705596415,CA
@@ -69061,7 +78671,9 @@
2705688320,2705688575,DE
2705688576,2705691647,US
2705691648,2705692671,GB
-2705692672,2705710079,US
+2705692672,2705695503,US
+2705695504,2705695519,GB
+2705695520,2705710079,US
2705710080,2705711103,IN
2705711104,2705850367,US
2705850368,2705915903,ES
@@ -69074,7 +78686,9 @@
2706374656,2706571263,US
2706571264,2706694143,NL
2706694144,2706702335,US
-2706702336,2707226623,NL
+2706702336,2706960383,NL
+2706960384,2706964479,US
+2706964480,2707226623,NL
2707226624,2707488767,JP
2707488768,2707947519,US
2707947520,2708144127,FR
@@ -69088,31 +78702,68 @@
2708865024,2708930559,JP
2708930560,2709127167,US
2709127168,2709192703,KR
-2709192704,2709225471,ZA
+2709192704,2709192959,US
+2709192960,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
+2709199104,2709199359,US
+2709199360,2709200383,ZA
+2709200384,2709200639,US
+2709200640,2709200895,ZA
+2709200896,2709201407,US
+2709201408,2709202175,ZA
+2709202176,2709202943,US
+2709202944,2709203711,ZA
+2709203712,2709203967,US
+2709203968,2709204991,ZA
+2709204992,2709205247,US
+2709205248,2709205759,ZA
+2709205760,2709206271,US
+2709206272,2709207039,ZA
+2709207040,2709207295,US
+2709207296,2709207551,ZA
+2709207552,2709207807,US
+2709207808,2709208063,ZA
+2709208064,2709208319,US
+2709208320,2709208575,ZA
+2709208576,2709208831,US
+2709208832,2709225471,ZA
2709225472,2709225727,ES
2709225728,2709225983,ZA
2709225984,2709226239,ES
2709226240,2709226495,ZA
2709226496,2709226511,DE
-2709226512,2709228767,ZA
+2709226512,2709227775,ZA
+2709227776,2709228031,US
+2709228032,2709228287,ZA
+2709228288,2709228543,US
+2709228544,2709228767,ZA
2709228768,2709228783,DE
2709228784,2709229695,ZA
2709229696,2709229711,DE
2709229712,2709230799,ZA
2709230800,2709230815,DE
-2709230816,2709231103,ZA
+2709230816,2709230879,ZA
+2709230880,2709230895,DE
+2709230896,2709231103,ZA
2709231104,2709231119,DE
2709231120,2709232127,ZA
2709232128,2709232383,DE
2709232384,2709232639,ZA
2709232640,2709232895,DE
-2709232896,2709233151,ZA
+2709232896,2709233151,US
2709233152,2709233407,DE
2709233408,2709235199,ZA
2709235200,2709235455,DE
-2709235456,2709235711,ZA
+2709235456,2709235711,US
2709235712,2709235967,DE
-2709235968,2709236223,ZA
+2709235968,2709236223,US
2709236224,2709236479,DE
2709236480,2709238271,ZA
2709238272,2709238527,DE
@@ -69122,7 +78773,7 @@
2709240320,2709240575,DE
2709240576,2709240831,ZA
2709240832,2709241087,DE
-2709241088,2709241343,ZA
+2709241088,2709241343,US
2709241344,2709241599,DE
2709241600,2709241855,ZA
2709241856,2709242111,DE
@@ -69135,7 +78786,7 @@
2709243648,2709243903,US
2709243904,2709244159,ZA
2709244160,2709244415,US
-2709244416,2709244671,ZA
+2709244416,2709244671,DE
2709244672,2709244927,US
2709244928,2709245183,ZA
2709245184,2709245439,US
@@ -69143,7 +78794,14 @@
2709245696,2709245951,US
2709245952,2709246207,ZA
2709246208,2709246463,US
-2709246464,2709247231,ZA
+2709246464,2709246719,DE
+2709246720,2709246735,ZA
+2709246736,2709246751,HK
+2709246752,2709246847,ZA
+2709246848,2709246863,HK
+2709246864,2709246959,ZA
+2709246960,2709246975,HK
+2709246976,2709247231,ZA
2709247232,2709247487,MY
2709247488,2709247743,DE
2709247744,2709247999,US
@@ -69157,22 +78815,47 @@
2709251072,2709251327,DE
2709251328,2709251583,ZA
2709251584,2709251839,DE
-2709251840,2709252095,ZA
+2709251840,2709252095,GB
2709252096,2709252351,DE
-2709252352,2709256703,ZA
+2709252352,2709253375,ZA
+2709253376,2709253631,US
+2709253632,2709253887,ZA
+2709253888,2709254143,US
+2709254144,2709254399,ZA
+2709254400,2709254655,US
+2709254656,2709255935,ZA
+2709255936,2709256191,US
+2709256192,2709256703,ZA
2709256704,2709256959,DE
2709256960,2709257215,ZA
2709257216,2709257471,DE
-2709257472,2709258239,ZA
-2709258240,2709389311,US
+2709257472,2709257727,US
+2709257728,2709257983,ZA
+2709257984,2709389311,US
2709389312,2709454847,SG
-2709454848,2709585919,US
-2709651456,2709716991,US
+2709454848,2709593599,US
+2709593600,2709593855,CA
+2709593856,2709601279,US
+2709601280,2709601311,CA
+2709601312,2709601343,NL
+2709601344,2709601407,US
+2709601408,2709601535,CA
+2709601536,2709606399,US
+2709606400,2709618687,CA
+2709618688,2709622783,US
+2709622784,2709624831,CA
+2709624832,2709625855,US
+2709625856,2709630975,CA
+2709630976,2709631231,US
+2709631488,2709631999,CA
+2709632000,2709633535,US
+2709633536,2709633791,CA
+2709633792,2709635071,US
+2709635072,2709643263,CA
+2709643264,2709716991,US
2709716992,2709782527,CL
2709782528,2709848063,PE
-2709848064,2709913599,US
-2709913600,2709979135,DE
-2709979136,2710175743,US
+2709848064,2710175743,US
2710175744,2710241279,BO
2710241280,2710306815,MY
2710306816,2710372351,VE
@@ -69185,7 +78868,9 @@
2710831104,2710896639,BR
2710896640,2711093247,US
2711093248,2711158783,AU
-2711158784,2711486463,US
+2711158784,2711371967,US
+2711371968,2711371983,NL
+2711371984,2711486463,US
2711486464,2711551999,NL
2711552000,2712535039,US
2712535040,2712535551,CA
@@ -69203,23 +78888,49 @@
2713976832,2714042367,VE
2714042368,2714238975,US
2714238976,2714304511,TH
-2714304512,2714373127,US
+2714304512,2714370263,US
+2714370264,2714370271,SG
+2714370272,2714371679,US
+2714371680,2714371711,CA
+2714371712,2714372415,US
+2714372416,2714372431,PH
+2714372432,2714372495,US
+2714372496,2714372511,ID
+2714372512,2714373127,US
2714373128,2714373128,SG
-2714373129,2714374927,US
+2714373129,2714373743,US
+2714373744,2714373759,IN
+2714373760,2714374927,US
2714374928,2714374943,SG
-2714374944,2714377439,US
+2714374944,2714375039,US
+2714375040,2714375055,ID
+2714375056,2714376223,US
+2714376224,2714376239,JP
+2714376240,2714377439,US
2714377440,2714377471,SG
-2714377472,2714378463,US
+2714377472,2714378431,US
+2714378432,2714378433,NL
+2714378434,2714378463,US
2714378464,2714378495,HK
2714378496,2714379103,US
2714379104,2714379135,HK
-2714379136,2714380031,US
+2714379136,2714379151,US
+2714379152,2714379152,HK
+2714379153,2714380031,US
2714380032,2714380287,HK
2714380288,2714381311,US
2714381312,2714381567,HK
-2714381568,2714382530,US
+2714381568,2714381951,US
+2714381952,2714381983,HK
+2714381984,2714382530,US
2714382531,2714382531,HK
-2714382532,2714382580,US
+2714382532,2714382536,US
+2714382537,2714382537,HK
+2714382538,2714382551,US
+2714382552,2714382552,HK
+2714382553,2714382564,US
+2714382565,2714382565,HK
+2714382566,2714382580,US
2714382581,2714382581,HK
2714382582,2714384907,US
2714384908,2714384911,HK
@@ -69274,10 +78985,11 @@
2718751232,2718752767,US
2718752768,2718754815,PR
2718754816,2718756863,US
-2718756864,2718758911,IN
+2718757888,2718758911,IN
2718758912,2718760959,US
2718760960,2718826495,GB
-2718826496,2719285247,US
+2718826496,2718892031,CN
+2718892032,2719285247,US
2719285248,2719350783,CH
2719350784,2719416319,US
2719416320,2719481855,CH
@@ -69323,7 +79035,9 @@
2723707072,2723707103,BR
2723707104,2723832575,US
2723832576,2723832831,GB
-2723832832,2724268287,US
+2723832832,2723852287,US
+2723852288,2723852543,GB
+2723852544,2724268287,US
2724268288,2724268415,MX
2724268416,2724303947,US
2724303948,2724303951,GB
@@ -69397,9 +79111,10 @@
2728314880,2728315903,DE
2728315904,2728316927,US
2728316928,2728317951,BG
-2728317952,2728319999,US
-2728320000,2728321023,NO
-2728321024,2728322047,US
+2728317952,2728319743,US
+2728319744,2728321023,NO
+2728321024,2728321279,TW
+2728321280,2728322047,US
2728322048,2728323071,PH
2728323072,2728324095,BE
2728324096,2728325119,FI
@@ -69417,7 +79132,7 @@
2731560960,2731561983,CA
2731561984,2731563007,US
2731563008,2731564031,CA
-2731564032,2731566079,US
+2731564032,2731565055,US
2731566080,2731567103,CA
2731567104,2731573247,US
2731573248,2731606015,CA
@@ -69443,8 +79158,8 @@
2731729920,2731739647,US
2731739648,2731740159,CA
2731740160,2731761663,US
-2731761664,2731763711,CA
-2731763712,2731765759,US
+2731761664,2731763455,CA
+2731763456,2731765759,US
2731765760,2731767807,CA
2731767808,2731771903,US
2731771904,2731772927,KY
@@ -69462,9 +79177,8 @@
2731801600,2731804671,US
2731804672,2731805695,CA
2731805696,2731805951,TC
-2731805952,2731806015,BB
-2731806016,2731806079,VC
-2731806080,2731806463,BB
+2731805952,2731806207,LC
+2731806208,2731806463,BB
2731806464,2731806719,VG
2731806720,2731807743,US
2731807744,2731808767,CA
@@ -69514,9 +79228,10 @@
2732128768,2732129023,NL
2732129024,2732131327,US
2732131328,2732132351,CA
-2732132352,2732137215,US
+2732132352,2732136447,US
+2732136448,2732137215,CA
2732137216,2732137471,DE
-2732137472,2732138239,US
+2732137472,2732138239,CA
2732138240,2732138495,DE
2732138496,2732145663,US
2732145664,2732146687,CA
@@ -69529,9 +79244,7 @@
2732204032,2732206079,CA
2732206080,2732227583,US
2732227584,2732228607,CA
-2732228608,2732240895,US
-2732240896,2732241919,TR
-2732241920,2732261375,US
+2732228608,2732261375,US
2732261376,2732265471,CA
2732265472,2732273663,US
2732273664,2732275711,CA
@@ -69550,11 +79263,12 @@
2732321024,2732321279,BM
2732321280,2732321535,CA
2732321536,2732321791,GB
-2732321792,2732322047,US
-2732322048,2732322815,CA
+2732321792,2732322815,CA
2732322816,2732336127,US
2732336128,2732337151,CA
-2732337152,2732351487,US
+2732337152,2732350207,US
+2732350208,2732350463,CA
+2732350464,2732351487,US
2732351488,2732353535,PR
2732353536,2732361727,US
2732361728,2732363775,BB
@@ -69568,11 +79282,14 @@
2732390400,2732391423,CA
2732391424,2732395519,US
2732395520,2732396543,CA
-2732396544,2732411903,US
+2732396544,2732408831,US
+2732410880,2732411903,US
2732411904,2732412927,AU
2732412928,2732423167,US
2732423168,2732425215,CA
-2732425216,2732443647,US
+2732425216,2732438783,US
+2732438784,2732439039,PR
+2732439040,2732443647,US
2732443648,2732445695,CA
2732445696,2732446719,US
2732446720,2732447743,BM
@@ -69583,7 +79300,9 @@
2732474368,2732478463,US
2732478464,2732479487,CA
2732479488,2732480511,AG
-2732480512,2732481279,TR
+2732480512,2732480767,TR
+2732480768,2732481023,US
+2732481024,2732481279,TR
2732481280,2732485631,US
2732485632,2732486655,PR
2732486656,2732488703,US
@@ -69602,7 +79321,7 @@
2732534784,2732536831,CA
2732536832,2732549119,US
2732549120,2732550143,CA
-2732550144,2732554239,US
+2732550144,2732553215,US
2732554240,2732554495,CA
2732554496,2732555007,US
2732555008,2732555263,CA
@@ -69617,25 +79336,7 @@
2733904896,2733907967,CA
2733907968,2733911039,US
2733911040,2733912063,CA
-2733912064,2733920483,US
-2733920484,2733920486,RO
-2733920487,2733920488,US
-2733920489,2733920491,RO
-2733920492,2733920495,US
-2733920496,2733920497,RO
-2733920498,2733920498,US
-2733920499,2733920506,RO
-2733920507,2733920682,US
-2733920683,2733920686,RO
-2733920687,2733920688,US
-2733920689,2733920690,RO
-2733920691,2733920691,US
-2733920692,2733920692,RO
-2733920693,2733920744,US
-2733920745,2733920750,RO
-2733920751,2733920927,US
-2733920928,2733920935,RO
-2733920936,2733922303,US
+2733912064,2733922303,US
2733922304,2733923327,CA
2733923328,2733930495,US
2733930496,2733931519,CA
@@ -69651,8 +79352,7 @@
2733963264,2733964287,CA
2733964288,2733979647,US
2733979648,2733980671,CA
-2733980672,2733981695,US
-2733983744,2733984767,US
+2733980672,2733984767,US
2733984768,2733985791,LC
2733985792,2734002175,US
2734002176,2734003199,CA
@@ -69677,7 +79377,9 @@
2734074880,2734075903,PR
2734075904,2734077951,US
2734077952,2734078207,GB
-2734078208,2734099455,US
+2734078208,2734096383,US
+2734096384,2734097407,HK
+2734097408,2734099455,US
2734099456,2734102527,CA
2734102528,2734104575,VI
2734104576,2734105599,US
@@ -69698,7 +79400,8 @@
2734170112,2734172159,CA
2734172160,2734173183,US
2734173184,2734174207,PR
-2734174208,2734192639,US
+2734174208,2734186495,US
+2734187008,2734192639,US
2734192640,2734194687,CA
2734194688,2734197759,US
2734197760,2734198783,CA
@@ -69710,8 +79413,7 @@
2734212096,2734213119,NL
2734213120,2734218239,US
2734218240,2734218751,CA
-2734218752,2734219263,US
-2734221312,2734224415,US
+2734218752,2734224415,US
2734224416,2734224431,GB
2734224432,2734229503,US
2734229504,2734230527,CA
@@ -69741,9 +79443,7 @@
2734362624,2734363647,CA
2734363648,2734366719,US
2734366720,2734368767,NL
-2734368768,2734374143,US
-2734374144,2734374911,CA
-2734374912,2734376959,US
+2734368768,2734376959,US
2734376960,2734379007,CA
2734379008,2734380799,US
2734380800,2734381055,VG
@@ -69799,7 +79499,8 @@
2734491648,2734492671,CA
2734492672,2734493695,US
2734493696,2734494719,MY
-2734494720,2734502911,US
+2734494720,2734495231,CA
+2734495232,2734502911,US
2734502912,2734503935,CA
2734503936,2734515199,US
2734515200,2734516223,DM
@@ -69809,7 +79510,9 @@
2734524416,2734526463,CA
2734526464,2734532607,US
2734532608,2734533631,VI
-2734533632,2734553087,US
+2734533632,2734540799,US
+2734540800,2734541823,CA
+2734541824,2734553087,US
2734553088,2734555135,CA
2734555136,2734565375,US
2734565376,2734566399,CA
@@ -69837,7 +79540,10 @@
2734659584,2734665727,US
2734665728,2734666751,CA
2734666752,2734672895,US
-2734672896,2734675967,CA
+2734672896,2734674431,CA
+2734674432,2734674943,US
+2734674944,2734675455,NL
+2734675456,2734675967,CA
2734675968,2734678015,BM
2734678016,2734679039,US
2734679040,2734680063,CA
@@ -69887,7 +79593,9 @@
2737788928,2737789951,MY
2737789952,2737793023,AU
2737793024,2737794047,NZ
-2737794048,2737795071,AU
+2737794048,2737794048,AU
+2737794049,2737794303,NZ
+2737794304,2737795071,AU
2737795072,2737796095,NZ
2737796096,2737799167,AU
2737799168,2737800191,NZ
@@ -69903,8 +79611,8 @@
2737810432,2737811455,KH
2737811456,2737811711,SG
2737811712,2737811967,HK
-2737811968,2737812223,GB
-2737812224,2737812479,US
+2737811968,2737812223,PH
+2737812224,2737812479,TH
2737812480,2737813503,AU
2737813504,2737815551,NZ
2737815552,2737816575,MY
@@ -69948,12 +79656,15 @@
2738215936,2738216959,CN
2738216960,2738217983,MY
2738217984,2738220031,AU
-2738220032,2738222079,CN
+2738221056,2738222079,CN
2738222080,2738223103,MO
2738223104,2738224127,AU
2738224128,2738225151,IN
2738225152,2738683903,JP
-2738749440,2742353919,FR
+2738749440,2741370879,FR
+2741370880,2741436415,US
+2741436416,2742321151,FR
+2742321152,2742353919,US
2742353920,2742419455,ES
2742419456,2742484991,US
2742484992,2742550527,GB
@@ -69987,20 +79698,9 @@
2745696256,2745761791,CH
2745761792,2745909247,GB
2745909248,2745958399,US
-2745958400,2745962865,GB
-2745962866,2745962866,FR
-2745962867,2745962982,GB
-2745962983,2745962983,FR
-2745962984,2745970393,GB
-2745970394,2745970394,FR
-2745970395,2745972790,GB
-2745972791,2745972791,FR
-2745972792,2745993102,GB
-2745993103,2745993103,FR
-2745993104,2746011647,GB
+2745958400,2746011647,FR
2746011648,2746015743,NL
-2746015744,2746023935,GB
-2746023936,2746089471,FR
+2746015744,2746089471,FR
2746089472,2746155007,NO
2746155008,2746220543,NL
2746220544,2746286079,US
@@ -70013,7 +79713,9 @@
2746679296,2747072511,US
2747072512,2747138047,AU
2747138048,2747465727,US
-2747465728,2748055551,ZA
+2747465728,2747662335,ZA
+2747662336,2747727871,US
+2747727872,2748055551,ZA
2748055552,2748121087,CN
2748121088,2748317695,US
2748317696,2748645375,JP
@@ -70027,9 +79729,9 @@
2749890560,2750021631,AU
2750021632,2750349311,US
2750349312,2750414847,KR
-2750414848,2750545919,US
-2750545920,2750611455,DE
-2750611456,2750723071,US
+2750414848,2750682623,US
+2750682624,2750683135,IE
+2750683136,2750723071,US
2750723072,2750723327,IN
2750723328,2750723583,US
2750723584,2750723839,IN
@@ -70041,9 +79743,11 @@
2750873600,2750939135,CL
2750939136,2751070207,US
2751070208,2751135743,CL
-2751135744,2751196929,US
-2751196930,2751196930,JP
-2751196931,2751397887,US
+2751135744,2751135762,US
+2751135763,2751135763,JP
+2751135764,2751196930,US
+2751196931,2751196931,JP
+2751196932,2751397887,US
2751397888,2751463423,KR
2751463424,2751528959,KZ
2751528960,2751660031,FR
@@ -70066,7 +79770,8 @@
2753888256,2753953791,SE
2753953792,2754084863,GB
2754084864,2754117631,KZ
-2754117632,2754125823,NL
+2754117632,2754117823,NL
+2754117824,2754125823,GB
2754125824,2754127871,DE
2754127872,2754129919,SK
2754129920,2754131967,SE
@@ -70090,9 +79795,7 @@
2754928640,2754936831,US
2754936832,2755002367,AU
2755002368,2755330047,US
-2755330048,2755395583,DE
-2755395584,2755461119,FR
-2755461120,2755526655,DE
+2755330048,2755526655,DE
2755526656,2755985407,US
2755985408,2756182015,JP
2756182016,2756247551,US
@@ -70100,9 +79803,7 @@
2756313088,2756378623,US
2756378624,2756444159,AU
2756444160,2756509695,US
-2756509696,2756556543,CL
-2756556544,2756556799,PE
-2756556800,2756575231,CL
+2756509696,2756575231,CL
2756575232,2756640767,SG
2756640768,2756706303,US
2756706304,2756771839,AU
@@ -70131,81 +79832,304 @@
2759852032,2759917567,CH
2759917568,2759983103,FR
2759983104,2760048639,IT
-2760048640,2760115409,FR
-2760115410,2760115410,GB
-2760115411,2760117438,FR
-2760117439,2760117439,GB
-2760117440,2760118462,FR
-2760118463,2760118463,LT
-2760118464,2760118875,FR
-2760118876,2760118878,BE
-2760118879,2760119263,FR
+2760048640,2760114535,FR
+2760114536,2760114539,BE
+2760114540,2760114811,FR
+2760114812,2760114815,PL
+2760114816,2760114847,FI
+2760114848,2760115007,FR
+2760115008,2760115071,DE
+2760115072,2760115327,FR
+2760115328,2760115455,GB
+2760115456,2760115703,FR
+2760115704,2760115711,CZ
+2760115712,2760115719,IE
+2760115720,2760115775,FR
+2760115776,2760115839,ES
+2760115840,2760115903,FR
+2760115904,2760115967,IT
+2760115968,2760116063,FR
+2760116064,2760116095,PL
+2760116096,2760116207,FR
+2760116208,2760116223,FI
+2760116224,2760116507,FR
+2760116508,2760116511,ES
+2760116512,2760116759,FR
+2760116760,2760116767,PT
+2760116768,2760116799,PL
+2760116800,2760116831,FR
+2760116832,2760116847,GB
+2760116848,2760116879,FR
+2760116880,2760116895,IT
+2760116896,2760117183,FR
+2760117184,2760117247,NL
+2760117248,2760117375,FR
+2760117376,2760117503,GB
+2760117504,2760117567,FR
+2760117568,2760117631,DE
+2760117632,2760117679,FR
+2760117680,2760117695,FI
+2760117696,2760117727,FR
+2760117728,2760117759,FI
+2760117760,2760117871,FR
+2760117872,2760117887,LT
+2760117888,2760117999,FR
+2760118000,2760118015,IT
+2760118016,2760118303,FR
+2760118304,2760118335,PL
+2760118336,2760118439,FR
+2760118440,2760118463,LT
+2760118464,2760118543,FR
+2760118544,2760118559,GB
+2760118560,2760118799,FR
+2760118800,2760118815,ES
+2760118816,2760118847,FI
+2760118848,2760118911,BE
+2760118912,2760118975,FR
+2760118976,2760119039,ES
+2760119040,2760119263,FR
2760119264,2760119295,PL
-2760119296,2760119967,FR
+2760119296,2760119327,FR
+2760119328,2760119359,IT
+2760119360,2760119423,DE
+2760119424,2760119495,FR
+2760119496,2760119499,ES
+2760119500,2760119967,FR
2760119968,2760119983,GB
-2760119984,2760120839,FR
+2760119984,2760120543,FR
+2760120544,2760120575,ES
+2760120576,2760120751,FR
+2760120752,2760120759,ES
+2760120760,2760120839,FR
2760120840,2760120843,PT
-2760120844,2760122324,FR
-2760122325,2760122325,NL
-2760122326,2760129999,FR
+2760120844,2760121663,FR
+2760121664,2760121727,ES
+2760121728,2760121827,FR
+2760121828,2760121831,ES
+2760121832,2760122047,FR
+2760122048,2760122111,DE
+2760122112,2760122303,FR
+2760122304,2760122367,NL
+2760122368,2760129887,FR
+2760129888,2760129919,CZ
+2760129920,2760129999,FR
2760130000,2760130015,ES
-2760130016,2760131033,FR
-2760131034,2760131034,BE
-2760131035,2760131309,FR
-2760131310,2760131310,IT
-2760131311,2760132205,FR
-2760132206,2760132206,ES
-2760132207,2760132911,FR
+2760130016,2760130399,FR
+2760130400,2760130431,ES
+2760130432,2760130559,GB
+2760130560,2760130975,FR
+2760130976,2760131007,IT
+2760131008,2760131071,BE
+2760131072,2760131263,FR
+2760131264,2760131327,IT
+2760131328,2760132159,FR
+2760132160,2760132223,ES
+2760132224,2760132575,FR
+2760132576,2760132583,GB
+2760132584,2760132767,FR
+2760132768,2760132783,DE
+2760132784,2760132911,FR
2760132912,2760132927,PT
-2760132928,2760132969,FR
-2760132970,2760132970,DE
-2760132971,2760133605,FR
-2760133606,2760133606,PL
-2760133607,2760143615,FR
+2760132928,2760132959,FR
+2760132960,2760132991,DE
+2760132992,2760133599,FR
+2760133600,2760133631,PL
+2760133632,2760134783,FR
+2760134784,2760134799,ES
+2760134800,2760134879,FR
+2760134880,2760134887,ES
+2760134888,2760134975,FR
+2760134976,2760135039,ES
+2760135040,2760135231,FR
+2760135232,2760135295,IT
+2760135296,2760135615,FR
+2760135616,2760135679,DE
+2760135680,2760135687,FR
+2760135688,2760135695,CZ
+2760135696,2760135935,FR
+2760135936,2760136191,PT
+2760136192,2760136767,FR
+2760136768,2760136831,BE
+2760136832,2760137215,FR
+2760137216,2760137471,GB
+2760137472,2760137535,FR
+2760137536,2760137599,ES
+2760137600,2760137647,FR
+2760137648,2760137663,PL
+2760137664,2760137935,FR
+2760137936,2760137951,PL
+2760137952,2760138271,FR
+2760138272,2760138303,PL
+2760138304,2760142975,FR
+2760142976,2760143007,ES
+2760143008,2760143039,FR
+2760143040,2760143103,ES
+2760143104,2760143295,FR
+2760143296,2760143359,DE
+2760143360,2760143615,FR
2760143616,2760143871,GB
-2760143872,2760145226,FR
-2760145227,2760145227,ES
-2760145228,2760146138,FR
-2760146139,2760146139,FI
-2760146140,2760148937,FR
-2760148938,2760148938,DE
-2760148939,2760150262,FR
-2760150263,2760150263,PL
-2760150264,2760150389,FR
-2760150390,2760150390,BE
-2760150391,2760150871,FR
-2760150872,2760150872,DE
-2760150873,2760151208,FR
-2760151209,2760151209,CZ
-2760151210,2760151269,FR
-2760151270,2760151270,NL
-2760151271,2760151335,FR
+2760143872,2760145215,FR
+2760145216,2760145279,ES
+2760145280,2760145327,FR
+2760145328,2760145343,PL
+2760145344,2760145599,FR
+2760145600,2760145663,NL
+2760145664,2760145855,FR
+2760145856,2760145919,GB
+2760145920,2760146111,FR
+2760146112,2760146143,FI
+2760146144,2760146159,FR
+2760146160,2760146175,PL
+2760146176,2760147423,FR
+2760147424,2760147455,DE
+2760147456,2760147463,FR
+2760147464,2760147467,GB
+2760147468,2760147535,FR
+2760147536,2760147551,ES
+2760147552,2760147647,FR
+2760147648,2760147711,ES
+2760147712,2760148551,FR
+2760148552,2760148559,FI
+2760148560,2760148895,FR
+2760148896,2760148927,CZ
+2760148928,2760148991,DE
+2760148992,2760149039,FR
+2760149040,2760149055,LT
+2760149056,2760149215,FR
+2760149216,2760149247,BE
+2760149248,2760149263,FR
+2760149264,2760149279,PT
+2760149280,2760149327,FR
+2760149328,2760149343,LT
+2760149344,2760149375,FR
+2760149376,2760149503,GB
+2760149504,2760150087,FR
+2760150088,2760150095,ES
+2760150096,2760150111,FR
+2760150112,2760150143,NL
+2760150144,2760150207,BE
+2760150208,2760150239,FR
+2760150240,2760150271,PL
+2760150272,2760150335,FR
+2760150336,2760150399,BE
+2760150400,2760150847,FR
+2760150848,2760150911,DE
+2760150912,2760151039,FR
+2760151040,2760151055,GB
+2760151056,2760151199,FR
+2760151200,2760151231,CZ
+2760151232,2760151247,FR
+2760151248,2760151263,LT
+2760151264,2760151295,NL
+2760151296,2760151335,FR
2760151336,2760151339,GB
-2760151340,2760152591,FR
+2760151340,2760151343,FR
+2760151344,2760151359,GB
+2760151360,2760151423,IT
+2760151424,2760151679,FR
+2760151680,2760151743,IT
+2760151744,2760151903,FR
+2760151904,2760151935,PT
+2760151936,2760152591,FR
2760152592,2760152607,PL
-2760152608,2760154223,FR
+2760152608,2760152639,FI
+2760152640,2760152647,FR
+2760152648,2760152655,LT
+2760152656,2760152751,FR
+2760152752,2760152767,LT
+2760152768,2760153439,FR
+2760153440,2760153471,ES
+2760153472,2760153535,FR
+2760153536,2760153599,DE
+2760153600,2760154223,FR
2760154224,2760154239,DE
-2760154240,2760154951,FR
+2760154240,2760154303,FR
+2760154304,2760154367,NL
+2760154368,2760154951,FR
2760154952,2760154955,GB
-2760154956,2760155028,FR
-2760155029,2760155029,GB
-2760155030,2760161983,FR
+2760154956,2760154959,FR
+2760154960,2760154975,IT
+2760154976,2760155007,PL
+2760155008,2760155135,GB
+2760155136,2760159279,FR
+2760159280,2760159295,LT
+2760159296,2760159423,FR
+2760159424,2760159487,DE
+2760159488,2760159615,FR
+2760159616,2760159743,GB
+2760159744,2760159775,FR
+2760159776,2760159807,IT
+2760159808,2760159903,FR
+2760159904,2760159935,CZ
+2760159936,2760160831,FR
+2760160832,2760160895,IT
+2760160896,2760160959,FR
+2760160960,2760161023,DE
+2760161024,2760161983,FR
2760161984,2760162047,IE
-2760162048,2760162545,FR
-2760162546,2760162546,BE
-2760162547,2760162681,FR
-2760162682,2760162682,PL
-2760162683,2760166682,FR
+2760162048,2760162399,FR
+2760162400,2760162431,ES
+2760162432,2760162495,FR
+2760162496,2760162559,BE
+2760162560,2760162671,FR
+2760162672,2760162687,PL
+2760162688,2760163135,FR
+2760163136,2760163199,ES
+2760163200,2760163263,FR
+2760163264,2760163327,DE
+2760163328,2760166682,FR
2760166683,2760166683,DE
-2760166684,2760175522,FR
-2760175523,2760175523,GB
-2760175524,2760178162,FR
-2760178163,2760178163,ES
-2760178164,2760178172,FR
-2760178173,2760178173,ES
-2760178174,2760178561,FR
-2760178562,2760178563,IT
-2760178564,2760178751,FR
+2760166684,2760166701,FR
+2760166702,2760166702,IT
+2760166703,2760167583,FR
+2760167584,2760167599,ES
+2760167600,2760167647,FR
+2760167648,2760167679,GB
+2760167680,2760167951,FR
+2760167952,2760167967,ES
+2760167968,2760167999,FR
+2760168000,2760168063,BE
+2760168064,2760168095,FR
+2760168096,2760168127,PL
+2760168128,2760168191,IE
+2760168192,2760168319,FR
+2760168320,2760168447,GB
+2760168448,2760169183,FR
+2760169184,2760169215,ES
+2760169216,2760169279,FR
+2760169280,2760169295,ES
+2760169296,2760169343,FR
+2760169344,2760169471,IT
+2760169472,2760169503,FI
+2760169504,2760169679,FR
+2760169680,2760169695,ES
+2760169696,2760169983,FR
+2760169984,2760170047,ES
+2760170048,2760170111,FI
+2760170112,2760170815,FR
+2760170816,2760170847,PT
+2760170848,2760170975,FR
+2760170976,2760170991,IT
+2760170992,2760171279,FR
+2760171280,2760171295,PL
+2760171296,2760171439,FR
+2760171440,2760171455,CZ
+2760171456,2760174591,FR
+2760174592,2760174623,GB
+2760174624,2760174655,FR
+2760174656,2760174671,IE
+2760174672,2760175007,FR
+2760175008,2760175039,PL
+2760175040,2760175295,FR
+2760175296,2760175359,ES
+2760175360,2760175423,FR
+2760175424,2760175487,DE
+2760175488,2760175615,GB
+2760175616,2760178111,FR
+2760178112,2760178175,ES
+2760178176,2760178559,FR
+2760178560,2760178687,IT
+2760178688,2760178751,FR
2760178752,2760178767,GB
2760178768,2760179711,FR
2760179712,2760245247,DE
@@ -70236,7 +80160,9 @@
2760638464,2760703999,NL
2760704000,2760769535,FI
2760769536,2760835071,IT
-2760835072,2760900607,GB
+2760835072,2760898559,GB
+2760898560,2760899583,US
+2760899584,2760900607,GB
2760900608,2761031679,US
2761031680,2761424895,ZA
2761424896,2761621503,US
@@ -70300,7 +80226,8 @@
2762168320,2762169343,CL
2762169344,2762176511,BR
2762176512,2762177535,AR
-2762177536,2762178559,HN
+2762177536,2762178047,HN
+2762178048,2762178559,US
2762178560,2762179583,AR
2762179584,2762180607,EC
2762180608,2762186751,BR
@@ -70324,7 +80251,7 @@
2763096064,2763104255,GB
2763104256,2763108351,DE
2763108352,2763110399,RU
-2763110400,2763112447,GB
+2763110400,2763112447,NL
2763112448,2763128831,BY
2763128832,2763194367,CA
2763194368,2765553663,US
@@ -70355,11 +80282,7 @@
2769346560,2769354751,ZA
2769485824,2769616895,US
2769616896,2769682431,SG
-2769682432,2769747967,US
-2769747968,2769813503,CA
-2769813504,2769879039,US
-2769879040,2769944575,ZA
-2769944576,2770272255,US
+2769682432,2770272255,US
2770272256,2770337791,AU
2770337792,2770993151,US
2770993152,2771124223,IN
@@ -70375,15 +80298,23 @@
2773024768,2773058559,ZA
2773058560,2773059583,SZ
2773059584,2773061631,ZA
-2773061632,2773065727,CM
+2773061632,2773062143,CM
+2773062144,2773062399,US
+2773062400,2773065727,CM
2773065728,2773073919,ZA
2773073920,2773082111,NG
2773082112,2773085183,ZA
2773085184,2773086207,SL
-2773086208,2773090303,ZA
+2773086208,2773087615,ZA
+2773087616,2773087679,US
+2773087680,2773087999,ZA
+2773088000,2773088063,US
+2773088064,2773090303,ZA
2773090304,2773221375,US
2773221376,2773286911,JP
-2773286912,2773745663,US
+2773286912,2773352447,US
+2773352448,2773417983,RO
+2773417984,2773745663,US
2773745664,2773778431,NZ
2773778432,2773794815,HK
2773794816,2773798911,IN
@@ -70425,11 +80356,15 @@
2775973888,2776039423,AU
2776039424,2776104959,US
2776104960,2776170495,GB
-2776170496,2776478975,US
-2776478976,2776479231,AU
-2776479232,2776891391,US
+2776170496,2776478719,US
+2776478720,2776479743,AU
+2776479744,2776479999,US
+2776480000,2776480511,NL
+2776480512,2776480767,US
+2776480768,2776481535,GB
+2776481536,2776891391,US
2776891392,2777022463,KR
-2777022464,2777481215,US
+2777022464,2777415679,US
2777481216,2777546751,KR
2777546752,2777612287,AU
2777612288,2778071039,ZA
@@ -70444,11 +80379,15 @@
2779971584,2780037119,US
2780037120,2780039167,ZA
2780039168,2780043263,US
-2780043264,2780073471,ZA
+2780043264,2780071935,ZA
+2780071936,2780072191,US
+2780072192,2780073471,ZA
2780073472,2780073727,AU
2780073728,2780075007,ZA
2780075008,2780075519,US
-2780075520,2780082175,ZA
+2780075520,2780078356,ZA
+2780078357,2780078357,NZ
+2780078358,2780082175,ZA
2780082176,2780083455,CA
2780083456,2780083967,ZA
2780083968,2780084223,CA
@@ -70479,10 +80418,8 @@
2780933120,2780933375,US
2780933376,2780933631,GB
2780933632,2780933887,US
-2780933888,2780934143,GB
-2780934144,2780934911,US
-2780934912,2780935167,GB
-2780935168,2780954623,US
+2780933888,2780938239,GB
+2780938240,2780954623,US
2780954624,2781020159,KR
2781020160,2781206527,US
2781206528,2781207551,GB
@@ -70524,13 +80461,29 @@
2782990336,2782990847,GB
2782990848,2782992383,US
2782992384,2782992895,DE
-2782992896,2782995455,US
-2782995456,2782995519,CA
-2782995520,2782995527,US
-2782995528,2782995531,CA
-2782995532,2782995535,US
-2782995536,2782995587,CA
-2782995588,2783002623,US
+2782992896,2782993407,US
+2782993408,2782993919,NL
+2782993920,2782995503,US
+2782995504,2782995507,CA
+2782995508,2782995509,US
+2782995510,2782995512,CA
+2782995513,2782995515,US
+2782995516,2782995522,CA
+2782995523,2782995524,US
+2782995525,2782995527,CA
+2782995528,2782995530,US
+2782995531,2782995533,CA
+2782995534,2782995534,US
+2782995535,2782995539,CA
+2782995540,2782995540,US
+2782995541,2782995552,CA
+2782995553,2782995555,US
+2782995556,2782995575,CA
+2782995576,2782995576,US
+2782995577,2782995577,CA
+2782995578,2782995579,US
+2782995580,2782995582,CA
+2782995583,2783002623,US
2783002624,2783002879,DK
2783002880,2783003135,US
2783003136,2783003647,RU
@@ -70539,74 +80492,38 @@
2783004160,2783004671,CH
2783004672,2783004927,US
2783004928,2783005695,DE
-2783005696,2783005951,FR
-2783005952,2783006719,US
-2783006720,2783007487,GB
-2783007488,2783007743,US
+2783005696,2783006463,FR
+2783006464,2783006719,US
+2783006720,2783007743,GB
2783007744,2783008255,PL
-2783008256,2783008767,IT
-2783008768,2783009279,BE
-2783009280,2783010889,US
+2783008256,2783008511,IT
+2783008512,2783008767,GB
+2783008768,2783008815,BE
+2783008816,2783008827,GB
+2783008828,2783008848,BE
+2783008849,2783008849,NL
+2783008850,2783009023,BE
+2783009024,2783010815,GB
+2783010816,2783010889,US
2783010890,2783010890,HK
2783010891,2783010943,US
2783010944,2783011071,HK
-2783011072,2783011327,US
-2783011328,2783011839,AU
+2783011072,2783011839,AU
2783011840,2783012351,JP
2783012352,2783012607,TW
2783012608,2783012863,US
2783012864,2783013887,IN
-2783013888,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,2783158802,US
-2783158803,2783158803,DE
-2783158804,2783159015,US
-2783159016,2783159016,DE
-2783159017,2783160412,US
-2783160413,2783160413,DE
-2783160414,2783162286,US
-2783162287,2783162287,DE
-2783162288,2783175911,US
-2783175912,2783175912,GB
-2783175913,2783182847,US
+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
2783182848,2783248383,AU
2783248384,2783313919,KR
2783313920,2783379455,US
@@ -70638,17 +80555,19 @@
2784428032,2784952063,US
2784952064,2784952319,NL
2784952320,2785017855,ZA
-2785017856,2785542143,US
-2785542144,2785607679,CH
-2785607680,2785804287,US
+2785017856,2785804287,US
2785804288,2786066431,CH
2786066432,2788163583,US
2788163584,2788229119,CA
2788229120,2788261887,US
-2788261888,2788294655,GB
+2788261888,2788287999,GB
+2788288000,2788288255,PL
+2788288256,2788294655,GB
2788294656,2789113855,US
2789113856,2789146623,CA
-2789146624,2789212159,US
+2789146624,2789195775,US
+2789195776,2789203967,GB
+2789203968,2789212159,US
2789212160,2789277695,AU
2789277696,2789343231,NZ
2789343232,2789933055,US
@@ -70702,7 +80621,9 @@
2803826688,2803892223,US
2803892224,2805465087,CA
2805465088,2805989375,UY
-2805989376,2806012937,US
+2805989376,2806007807,US
+2806007808,2806008063,BE
+2806008064,2806012937,US
2806012938,2806012938,HK
2806012939,2806644735,US
2806644736,2806710271,CA
@@ -70716,7 +80637,7 @@
2807566336,2807574527,CA
2807578624,2807587071,US
2807587072,2807587327,IT
-2807587328,2807587583,QA
+2807587328,2807587583,CA
2807587584,2807587839,IN
2807587840,2807588095,AE
2807588096,2807588223,US
@@ -70726,19 +80647,57 @@
2807589120,2807589375,RO
2807589376,2807589631,FR
2807589632,2807589887,PT
-2807589888,2807590143,AT
-2807590144,2807590399,MT
+2807589888,2807590143,NL
+2807590144,2807590152,EG
+2807590153,2807590153,MT
+2807590154,2807590170,EG
+2807590171,2807590171,MT
+2807590172,2807590175,EG
+2807590176,2807590176,MT
+2807590177,2807590177,EG
+2807590178,2807590178,MT
+2807590179,2807590198,EG
+2807590199,2807590199,MT
+2807590200,2807590262,EG
+2807590263,2807590263,MT
+2807590264,2807590287,EG
+2807590288,2807590288,MT
+2807590289,2807590361,EG
+2807590362,2807590362,MT
+2807590363,2807590378,EG
+2807590379,2807590379,MT
+2807590380,2807590381,EG
+2807590382,2807590382,MT
+2807590383,2807590399,EG
2807590400,2807590655,GR
2807590656,2807590911,SA
2807590912,2807595007,US
2807595008,2807599103,CA
-2807599104,2807607295,US
+2807599104,2807606204,US
+2807606205,2807606205,GB
+2807606206,2807607295,US
2807607296,2807611391,CA
2807611392,2807824383,US
2807824384,2807889919,CA
2807889920,2808217599,US
2808217600,2808283135,GB
-2808283136,2808545279,US
+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
+2808315904,2808319999,DE
+2808320000,2808328191,US
+2808328192,2808332287,CA
+2808332288,2808336383,GB
+2808336384,2808340479,NL
+2808340480,2808344575,US
+2808344576,2808348671,DE
+2808348672,2808545279,US
2808545280,2808610815,AU
2808610816,2808872959,US
2808872960,2808938495,UY
@@ -70771,7 +80730,9 @@
2809297712,2809297712,US
2809297713,2809297845,CA
2809297846,2809297846,US
-2809297847,2809302815,CA
+2809297847,2809299455,CA
+2809299456,2809299967,US
+2809299968,2809302815,CA
2809302816,2809302831,US
2809302832,2809308599,CA
2809308600,2809308607,US
@@ -70803,8 +80764,16 @@
2811625472,2812084223,US
2812084224,2812149759,BO
2812149760,2812280831,US
-2812280832,2812289023,TR
-2812289024,2812291071,US
+2812280832,2812283391,NL
+2812283392,2812283647,US
+2812283648,2812283903,NL
+2812283904,2812284159,US
+2812284160,2812285695,NL
+2812285696,2812285951,US
+2812285952,2812286207,NL
+2812286208,2812286463,US
+2812286464,2812288511,NL
+2812288512,2812291071,US
2812291072,2812292095,DE
2812292096,2812293119,US
2812293120,2812295167,IN
@@ -70846,13 +80815,13 @@
2816264704,2816264959,US
2816264960,2816264983,IE
2816264984,2816270335,US
-2816270336,2816271615,SG
+2816270336,2816270847,SG
+2816270848,2816271359,IN
+2816271360,2816271615,SG
2816271616,2816271871,JP
2816271872,2816272127,IN
2816272128,2816272383,AU
-2816272384,2816272415,JP
-2816272416,2816272543,SG
-2816272544,2816273407,JP
+2816272384,2816273407,JP
2816273408,2816274431,IN
2816274432,2816275455,AU
2816275456,2816276479,CN
@@ -70863,9 +80832,9 @@
2817064960,2817130495,DE
2817130496,2817277951,US
2817277952,2817294335,NL
-2817294336,2817933055,US
-2817933056,2817933311,CA
-2817933312,2817933823,US
+2817294336,2817933056,US
+2817933057,2817933058,CA
+2817933059,2817933823,US
2817933824,2817934079,CA
2817934080,2818002943,US
2818002944,2818003722,GB
@@ -70876,7 +80845,7 @@
2818115584,2818116607,PE
2818116608,2818118655,BR
2818118656,2818119679,SV
-2818119680,2818121727,BR
+2818119680,2818120703,BR
2818121728,2818122751,VE
2818122752,2818123775,BR
2818123776,2818124799,CO
@@ -70887,7 +80856,8 @@
2818143232,2818144255,MX
2818144256,2818162687,BR
2818162688,2818164735,AR
-2818164736,2818165759,BZ
+2818164736,2818165247,US
+2818165248,2818165759,BZ
2818165760,2818168831,BR
2818168832,2818169855,AR
2818169856,2818178047,BR
@@ -70917,9 +80887,7 @@
2818229248,2818231295,BR
2818231296,2818232319,PE
2818232320,2818233343,AR
-2818233344,2818233911,HN
-2818233912,2818233919,IT
-2818233920,2818234095,HN
+2818233344,2818234095,HN
2818234096,2818234111,IT
2818234112,2818234367,HN
2818234368,2818235391,BR
@@ -70939,9 +80907,7 @@
2818620416,2818623487,BR
2818623488,2818625535,AR
2818625536,2818626559,BR
-2818626560,2818626783,HN
-2818626784,2818626799,BR
-2818626800,2818627583,HN
+2818626560,2818627583,HN
2818627584,2818628607,BR
2818628608,2818629631,MX
2818629632,2818634751,BR
@@ -70952,13 +80918,25 @@
2818670634,2818670639,AU
2818670640,2818670881,US
2818670882,2818670887,AU
-2818670888,2818671999,US
+2818670888,2818671423,US
+2818671424,2818671439,AU
+2818671440,2818671999,US
2818672000,2818672127,AU
2818672128,2818672191,US
2818672192,2818672207,AU
-2818672208,2818687952,US
+2818672208,2818672720,US
+2818672721,2818672735,AU
+2818672736,2818687299,US
+2818687300,2818687303,JP
+2818687304,2818687952,US
2818687953,2818687959,AU
-2818687960,2821932367,US
+2818687960,2818688903,US
+2818688904,2818688927,NL
+2818688928,2818689423,US
+2818689424,2818689424,AU
+2818689425,2818689479,US
+2818689480,2818689487,AU
+2818689488,2821932367,US
2821932368,2821932371,NO
2821932372,2822584319,US
2822584320,2822586367,NL
@@ -70978,7 +80956,9 @@
2822731896,2822732102,NL
2822732103,2822732103,IE
2822732104,2822733823,NL
-2822733824,2822742015,HK
+2822733824,2822734095,HK
+2822734098,2822734111,US
+2822734112,2822742015,HK
2822742016,2822750207,SG
2822750208,2822758399,HK
2822758400,2822766591,SG
@@ -70988,12 +80968,82 @@
2823553024,2823618559,ZA
2823618560,2823684095,PA
2823684096,2823749631,KR
-2823815168,2823888895,SC
-2823888896,2823897087,ZA
-2823897088,2823946239,SC
+2823815168,2823816191,SC
+2823816192,2823817215,US
+2823817216,2823820287,SC
+2823820288,2823821311,US
+2823821312,2823824383,SC
+2823824384,2823825407,US
+2823825408,2823828479,SC
+2823828480,2823829503,US
+2823829504,2823832575,SC
+2823832576,2823833599,US
+2823833600,2823836671,SC
+2823836672,2823837695,US
+2823837696,2823840767,SC
+2823840768,2823841791,US
+2823841792,2823844863,SC
+2823844864,2823845887,US
+2823845888,2823848959,SC
+2823848960,2823849983,US
+2823849984,2823853055,SC
+2823853056,2823854079,US
+2823854080,2823857151,SC
+2823857152,2823858175,US
+2823858176,2823861247,SC
+2823861248,2823862271,US
+2823862272,2823865343,SC
+2823865344,2823866367,US
+2823866368,2823869439,SC
+2823869440,2823870463,US
+2823870464,2823873535,SC
+2823873536,2823874559,US
+2823874560,2823877631,SC
+2823877632,2823878655,US
+2823878656,2823881727,SC
+2823881728,2823882751,US
+2823882752,2823885823,SC
+2823885824,2823886847,US
+2823886848,2823888895,SC
+2823888896,2823889919,ZA
+2823889920,2823890943,US
+2823890944,2823894015,ZA
+2823894016,2823895039,US
+2823895040,2823897087,ZA
+2823897088,2823898111,SC
+2823898112,2823899135,US
+2823899136,2823902207,SC
+2823902208,2823903231,US
+2823903232,2823906303,SC
+2823906304,2823907327,US
+2823907328,2823910399,SC
+2823910400,2823911423,US
+2823911424,2823914495,SC
+2823914496,2823915519,US
+2823915520,2823918591,SC
+2823918592,2823919615,US
+2823919616,2823922687,SC
+2823922688,2823923711,US
+2823923712,2823926783,SC
+2823926784,2823927807,US
+2823927808,2823930879,SC
+2823930880,2823931903,US
+2823931904,2823934975,SC
+2823934976,2823935999,US
+2823936000,2823939071,SC
+2823939072,2823940095,US
+2823940096,2823943167,SC
+2823943168,2823944191,US
+2823944192,2823946239,SC
2823946240,2824011775,US
2824011776,2824077311,AR
-2824077312,2824404991,US
+2824077312,2824278015,US
+2824278016,2824279039,GB
+2824279040,2824290303,US
+2824290304,2824294399,AU
+2824294400,2824347647,US
+2824347648,2824355839,NL
+2824355840,2824404991,US
2824404992,2824470527,ZA
2824470528,2824472575,BR
2824472576,2824473599,AR
@@ -71006,8 +81056,8 @@
2824493056,2824494079,BR
2824494080,2824495103,CO
2824495104,2824495215,HN
-2824495216,2824495231,DE
-2824495232,2824495263,HN
+2824495216,2824495223,DE
+2824495224,2824495263,HN
2824495264,2824495279,DE
2824495280,2824495943,HN
2824495944,2824495951,NL
@@ -71017,13 +81067,9 @@
2824496128,2824498175,BR
2824498176,2824498303,HN
2824498304,2824498319,FR
-2824498320,2824498527,HN
-2824498528,2824498535,FR
-2824498536,2824498895,HN
+2824498320,2824498895,HN
2824498896,2824498903,UY
-2824498904,2824499119,HN
-2824499120,2824499127,UY
-2824499128,2824499199,HN
+2824498904,2824499199,HN
2824499200,2824503295,BR
2824503296,2824504319,AR
2824504320,2824510463,BR
@@ -71125,7 +81171,8 @@
2828730368,2828795903,ZA
2828795904,2829029375,US
2829029376,2829029631,CN
-2829029632,2829041663,US
+2829029632,2829033471,US
+2829033472,2829041663,IN
2829041664,2829045759,AU
2829045760,2829058047,US
2829058048,2829123583,CN
@@ -71133,7 +81180,9 @@
2829148416,2829148671,HK
2829148672,2829174783,US
2829174784,2829175807,GB
-2829175808,2829184767,US
+2829175808,2829177343,US
+2829177344,2829177599,AU
+2829177600,2829184767,US
2829184768,2829185023,GB
2829185024,2829254655,US
2829254656,2829320191,CH
@@ -71141,13 +81190,21 @@
2829385728,2829451263,MX
2829451264,2829516799,US
2829516800,2829582335,BW
-2829582336,2829593343,US
+2829582336,2829590783,US
+2829590784,2829591033,GB
+2829591034,2829591034,US
+2829591035,2829591039,GB
+2829591040,2829592575,US
+2829592576,2829593343,GB
2829593344,2829593591,CH
2829593592,2829593595,US
2829593596,2829593599,CH
-2829593600,2829844479,US
+2829593600,2829594623,GB
+2829594624,2829844479,US
2829844480,2829910015,ZA
-2829910016,2830106623,US
+2829910016,2830082047,US
+2830082048,2830090239,GB
+2830090240,2830106623,US
2830106624,2830172159,CO
2830172160,2830434303,US
2830434304,2830436351,BR
@@ -71157,9 +81214,7 @@
2830441472,2830445567,BR
2830445568,2830446591,AR
2830446592,2830447615,BR
-2830447616,2830447647,HN
-2830447648,2830447655,US
-2830447656,2830448639,HN
+2830447616,2830448639,HN
2830448640,2830452735,BR
2830452736,2830453759,AR
2830453760,2830454783,MX
@@ -71178,11 +81233,7 @@
2830482432,2830486527,BR
2830486528,2830488575,AR
2830488576,2830492671,BR
-2830492672,2830492799,US
-2830492800,2830492815,UY
-2830492816,2830492895,US
-2830492896,2830492927,UY
-2830492928,2830493183,US
+2830492672,2830493183,US
2830493184,2830493695,HN
2830493696,2830499839,BR
2830499840,2830761983,US
@@ -71204,7 +81255,11 @@
2831309824,2831311871,BR
2831311872,2831312895,PE
2831312896,2831313919,BR
-2831313920,2831314943,VE
+2831313920,2831314058,US
+2831314059,2831314059,VE
+2831314060,2831314431,US
+2831314432,2831314687,VE
+2831314688,2831314943,US
2831314944,2831322111,BR
2831322112,2831323135,AR
2831323136,2831324159,BR
@@ -71267,11 +81322,12 @@
2831468544,2831469567,CL
2831469568,2831474687,BR
2831474688,2831475711,AR
-2831475712,2831476735,CL
2831476736,2831477759,BR
2831477760,2831478167,HN
2831478168,2831478175,US
-2831478176,2831479807,HN
+2831478176,2831478271,HN
+2831478272,2831478287,UY
+2831478288,2831479807,HN
2831479808,2831480831,AR
2831480832,2831481855,BR
2831481856,2831482879,AR
@@ -71343,8 +81399,7 @@
2832055296,2832059391,BR
2832059392,2832060415,CL
2832060416,2832072703,BR
-2832072704,2832138239,ZA
-2832138240,2832269311,US
+2832072704,2832269311,US
2832269312,2832400383,ZA
2832400384,2832793599,US
2832793600,2832859135,AU
@@ -71370,9 +81425,9 @@
2833482680,2833482687,CL
2833482688,2833482751,HN
2833482752,2833484799,BR
-2833484800,2833485519,US
+2833484800,2833485519,HN
2833485520,2833485527,BE
-2833485528,2833485823,US
+2833485528,2833485823,HN
2833485824,2833486847,AR
2833486848,2833501183,BR
2833501184,2833502207,AR
@@ -71381,9 +81436,7 @@
2833512448,2833513471,BR
2833513472,2833514495,AR
2833514496,2833525759,BR
-2833525760,2833526639,HN
-2833526640,2833526655,FR
-2833526656,2833526783,HN
+2833525760,2833526783,HN
2833526784,2833527807,CR
2833527808,2833528831,MX
2833528832,2833529855,AR
@@ -71440,8 +81493,8 @@
2834030592,2834034687,CA
2834034688,2834497535,US
2834497536,2834563071,SV
-2834563072,2834661887,US
-2834661888,2834662399,CA
+2834563072,2834661375,US
+2834661376,2834662399,CA
2834662400,2834668799,US
2834668800,2834669055,CA
2834669056,2834676735,US
@@ -71463,9 +81516,9 @@
2835177472,2835181567,DZ
2835181568,2835183615,NG
2835183616,2835185663,ZA
-2835185664,2835196927,RE
-2835196928,2835197695,YT
-2835197696,2835202047,RE
+2835185664,2835196415,RE
+2835196416,2835197183,YT
+2835197184,2835202047,RE
2835202048,2835206143,ZA
2835206144,2835208191,NG
2835208192,2835210239,ZA
@@ -71483,55 +81536,893 @@
2837905408,2837970943,CH
2837970944,2838036479,US
2838036480,2838233087,CH
-2838233088,2838560767,US
+2838233088,2838237183,GB
+2838237184,2838242895,US
+2838242896,2838242911,JP
+2838242912,2838252255,US
+2838252256,2838252287,JP
+2838252288,2838253391,US
+2838253392,2838253407,NL
+2838253408,2838255167,US
+2838255168,2838255199,JP
+2838255200,2838259743,US
+2838259744,2838259759,JP
+2838259760,2838260095,US
+2838260096,2838260127,IE
+2838260128,2838261759,US
+2838261760,2838265855,GB
+2838265856,2838276159,US
+2838276160,2838276191,NL
+2838276192,2838298623,US
+2838298624,2838298655,NL
+2838298656,2838298687,US
+2838298688,2838299439,NL
+2838299440,2838299455,US
+2838299456,2838299711,NL
+2838299712,2838299775,US
+2838299776,2838300335,NL
+2838300336,2838300351,US
+2838300352,2838300671,NL
+2838300672,2838300927,US
+2838300928,2838301119,NL
+2838301120,2838301183,US
+2838301184,2838301695,NL
+2838301696,2838301951,US
+2838301952,2838304319,NL
+2838304320,2838304383,US
+2838304384,2838304479,NL
+2838304480,2838304511,US
+2838304512,2838304703,NL
+2838304704,2838304767,US
+2838304768,2838305119,NL
+2838305120,2838305151,US
+2838305152,2838305247,NL
+2838305248,2838305279,US
+2838305280,2838305647,NL
+2838305648,2838305727,US
+2838305728,2838307295,NL
+2838307296,2838307303,US
+2838307304,2838307311,NL
+2838307312,2838307327,US
+2838307328,2838308175,NL
+2838308176,2838308183,US
+2838308184,2838308191,NL
+2838308192,2838308223,US
+2838308224,2838308255,NL
+2838308256,2838308271,US
+2838308272,2838311311,NL
+2838311312,2838311319,US
+2838311320,2838315007,NL
+2838315008,2838331391,US
+2838331392,2838331535,NL
+2838331536,2838331551,US
+2838331552,2838331567,NL
+2838331568,2838331583,US
+2838331584,2838331711,NL
+2838331712,2838331727,US
+2838331728,2838331775,NL
+2838331776,2838331791,US
+2838331792,2838332047,NL
+2838332048,2838332051,US
+2838332052,2838332353,NL
+2838332354,2838332354,US
+2838332355,2838332479,NL
+2838332480,2838332495,US
+2838332496,2838333651,NL
+2838333652,2838333654,US
+2838333655,2838333655,NL
+2838333656,2838333658,US
+2838333659,2838333659,NL
+2838333660,2838333661,US
+2838333662,2838333719,NL
+2838333720,2838333727,US
+2838333728,2838333903,NL
+2838333904,2838333919,US
+2838333920,2838334463,NL
+2838334464,2838334527,JP
+2838334528,2838337023,NL
+2838337024,2838337039,US
+2838337040,2838337135,NL
+2838337136,2838337151,US
+2838337152,2838337263,NL
+2838337264,2838337295,US
+2838337296,2838337759,NL
+2838337760,2838337761,IN
+2838337762,2838337763,US
+2838337764,2838337767,NL
+2838337768,2838337769,US
+2838337770,2838337903,NL
+2838337904,2838337919,US
+2838337920,2838337967,NL
+2838337968,2838337983,US
+2838337984,2838338079,NL
+2838338080,2838338127,US
+2838338128,2838338183,NL
+2838338184,2838338191,US
+2838338192,2838338271,NL
+2838338272,2838338303,JP
+2838338304,2838338567,NL
+2838338568,2838338575,US
+2838338576,2838338703,NL
+2838338704,2838338719,IN
+2838338720,2838338735,NL
+2838338736,2838338751,US
+2838338752,2838338771,NL
+2838338772,2838338773,IN
+2838338774,2838338783,US
+2838338784,2838338815,NL
+2838338816,2838338823,US
+2838338824,2838338903,NL
+2838338904,2838338911,US
+2838338912,2838339247,NL
+2838339248,2838339263,US
+2838339264,2838339711,NL
+2838339712,2838339727,US
+2838339728,2838339743,NL
+2838339744,2838339759,US
+2838339760,2838339855,NL
+2838339856,2838339871,US
+2838339872,2838340015,NL
+2838340016,2838340031,US
+2838340032,2838340351,NL
+2838340352,2838340383,US
+2838340384,2838340431,NL
+2838340432,2838340463,US
+2838340464,2838340719,NL
+2838340720,2838340735,US
+2838340736,2838340959,NL
+2838340960,2838340991,US
+2838340992,2838341407,NL
+2838341408,2838341423,US
+2838341424,2838341903,NL
+2838341904,2838341919,US
+2838341920,2838341951,NL
+2838341952,2838341967,US
+2838341968,2838342303,NL
+2838342304,2838342319,US
+2838342320,2838342447,NL
+2838342448,2838342463,US
+2838342464,2838343071,NL
+2838343072,2838343103,US
+2838343104,2838344319,NL
+2838344320,2838344335,US
+2838344336,2838344451,NL
+2838344452,2838344455,US
+2838344456,2838344463,NL
+2838344464,2838344479,US
+2838344480,2838344917,NL
+2838344918,2838344918,US
+2838344919,2838344919,NL
+2838344920,2838344927,US
+2838344928,2838345215,NL
+2838345216,2838345231,US
+2838345232,2838345239,NL
+2838345240,2838345247,US
+2838345248,2838345743,NL
+2838345744,2838345751,US
+2838345752,2838345759,NL
+2838345760,2838345775,US
+2838345776,2838346559,NL
+2838346560,2838346591,US
+2838346592,2838346687,NL
+2838346688,2838346719,US
+2838346720,2838347031,NL
+2838347032,2838347039,US
+2838347040,2838347487,NL
+2838347488,2838347519,US
+2838347520,2838348031,NL
+2838348032,2838396927,US
+2838396928,2838397007,NL
+2838397008,2838397023,US
+2838397024,2838397071,NL
+2838397072,2838397087,US
+2838397088,2838397247,NL
+2838397248,2838397279,JP
+2838397280,2838397311,NL
+2838397312,2838397343,US
+2838397344,2838397967,NL
+2838397968,2838397983,US
+2838397984,2838398223,NL
+2838398224,2838398239,US
+2838398240,2838398575,NL
+2838398576,2838398591,US
+2838398592,2838400193,NL
+2838400194,2838400195,US
+2838400196,2838401023,NL
+2838401024,2838405119,GB
+2838405120,2838405183,NL
+2838405184,2838405215,US
+2838405216,2838405767,NL
+2838405768,2838405775,US
+2838405776,2838405855,NL
+2838405856,2838405887,US
+2838405888,2838406087,NL
+2838406088,2838406095,US
+2838406096,2838406271,NL
+2838406272,2838406279,US
+2838406280,2838406303,NL
+2838406304,2838406335,US
+2838406336,2838406577,NL
+2838406578,2838406578,US
+2838406579,2838406687,NL
+2838406688,2838406703,US
+2838406704,2838407103,NL
+2838407104,2838407119,US
+2838407120,2838409439,NL
+2838409440,2838409471,US
+2838409472,2838409479,NL
+2838409480,2838409503,US
+2838409504,2838409599,NL
+2838409600,2838409615,US
+2838409616,2838410367,NL
+2838410368,2838410399,US
+2838410400,2838410895,NL
+2838410896,2838410911,US
+2838410912,2838411327,NL
+2838411328,2838411359,US
+2838411360,2838411615,NL
+2838411616,2838411623,US
+2838411624,2838412287,NL
+2838412288,2838412543,US
+2838412544,2838414207,NL
+2838414208,2838414271,US
+2838414272,2838414783,NL
+2838414784,2838414879,US
+2838414880,2838414911,NL
+2838414912,2838414927,US
+2838414928,2838415167,NL
+2838415168,2838415183,US
+2838415184,2838415391,NL
+2838415392,2838415487,US
+2838415488,2838415655,NL
+2838415656,2838415663,US
+2838415664,2838415839,NL
+2838415840,2838415871,US
+2838415872,2838416623,NL
+2838416624,2838416639,AF
+2838416640,2838418687,NL
+2838418688,2838418815,US
+2838418816,2838419455,NL
+2838419456,2838420479,CA
+2838420480,2838421503,NL
+2838421504,2838421567,US
+2838421568,2838422015,NL
+2838422016,2838422143,US
+2838422144,2838422527,NL
+2838422528,2838423551,CA
+2838423552,2838423807,NL
+2838423808,2838423935,US
+2838423936,2838424831,NL
+2838424832,2838425087,US
+2838425088,2838427007,NL
+2838427008,2838427135,US
+2838427136,2838429695,NL
+2838429696,2838469631,US
+2838469632,2838478975,NL
+2838478976,2838479007,US
+2838479008,2838479135,NL
+2838479136,2838479167,US
+2838479168,2838479431,NL
+2838479432,2838479439,US
+2838479440,2838479455,NL
+2838479456,2838479487,US
+2838479488,2838479807,NL
+2838479808,2838479823,US
+2838479824,2838480023,NL
+2838480024,2838480031,US
+2838480032,2838480255,NL
+2838480256,2838480271,US
+2838480272,2838480319,NL
+2838480320,2838480323,IE
+2838480324,2838481855,NL
+2838481856,2838481887,US
+2838481888,2838482305,NL
+2838482306,2838482307,US
+2838482308,2838482383,NL
+2838482384,2838482399,US
+2838482400,2838482543,NL
+2838482544,2838482551,US
+2838482552,2838482695,NL
+2838482696,2838482703,US
+2838482704,2838482863,NL
+2838482864,2838482871,US
+2838482872,2838482911,NL
+2838482912,2838482943,US
+2838482944,2838482959,NL
+2838482960,2838482967,IE
+2838482968,2838482975,US
+2838482976,2838483011,NL
+2838483012,2838483015,IE
+2838483016,2838483135,NL
+2838483136,2838483199,IE
+2838483200,2838483231,NL
+2838483232,2838483263,US
+2838483264,2838483327,NL
+2838483328,2838483335,US
+2838483336,2838483359,NL
+2838483360,2838483391,US
+2838483392,2838483487,NL
+2838483488,2838483519,US
+2838483520,2838484399,NL
+2838484400,2838484415,US
+2838484416,2838484463,NL
+2838484464,2838484479,US
+2838484480,2838484839,NL
+2838484840,2838484843,US
+2838484844,2838484943,NL
+2838484944,2838484959,US
+2838484960,2838485151,NL
+2838485152,2838485183,US
+2838485184,2838485375,NL
+2838485376,2838485391,US
+2838485392,2838485439,NL
+2838485440,2838485447,US
+2838485448,2838485631,NL
+2838485632,2838485647,AU
+2838485648,2838485695,NL
+2838485696,2838485727,US
+2838485728,2838486463,NL
+2838486464,2838486495,US
+2838486496,2838486567,NL
+2838486568,2838486575,US
+2838486576,2838487327,NL
+2838487328,2838487343,US
+2838487344,2838487743,NL
+2838487744,2838487807,US
+2838487808,2838488127,NL
+2838488128,2838488135,US
+2838488136,2838488239,NL
+2838488240,2838488255,US
+2838488256,2838488663,NL
+2838488664,2838488671,US
+2838488672,2838488943,NL
+2838488944,2838488959,US
+2838488960,2838489431,NL
+2838489432,2838489439,US
+2838489440,2838489999,NL
+2838490000,2838490007,US
+2838490008,2838491679,NL
+2838491680,2838491687,US
+2838491688,2838491943,NL
+2838491944,2838491951,US
+2838491952,2838492479,NL
+2838492480,2838492511,US
+2838492512,2838492679,NL
+2838492680,2838492687,US
+2838492688,2838492935,NL
+2838492936,2838492943,US
+2838492944,2838492959,NL
+2838492960,2838492967,US
+2838492968,2838493551,NL
+2838493552,2838493567,US
+2838493568,2838493711,NL
+2838493712,2838493727,US
+2838493728,2838494063,NL
+2838494064,2838494079,US
+2838494080,2838494347,NL
+2838494348,2838494351,US
+2838494352,2838494655,NL
+2838494656,2838494671,US
+2838494672,2838496623,NL
+2838496624,2838496639,US
+2838496640,2838496671,NL
+2838496672,2838496703,US
+2838496704,2838498111,NL
+2838498112,2838498175,JP
+2838498176,2838511871,NL
+2838511872,2838511887,US
+2838511888,2838511935,NL
+2838511936,2838511951,JP
+2838511952,2838511983,NL
+2838511984,2838511999,JP
+2838512000,2838512047,NL
+2838512048,2838512079,US
+2838512080,2838512255,NL
+2838512256,2838512271,US
+2838512272,2838512303,NL
+2838512304,2838512319,US
+2838512320,2838512351,NL
+2838512352,2838512367,AF
+2838512368,2838512527,NL
+2838512528,2838512543,US
+2838512544,2838512607,NL
+2838512608,2838512655,US
+2838512656,2838512671,NL
+2838512672,2838512675,US
+2838512676,2838512703,NL
+2838512704,2838512705,US
+2838512706,2838512727,NL
+2838512728,2838512735,US
+2838512736,2838512831,NL
+2838512832,2838512847,US
+2838512848,2838513199,NL
+2838513200,2838513215,US
+2838513216,2838513487,NL
+2838513488,2838513503,US
+2838513504,2838513583,NL
+2838513584,2838513599,US
+2838513600,2838513767,NL
+2838513768,2838513775,US
+2838513776,2838513807,NL
+2838513808,2838513871,US
+2838513872,2838513983,NL
+2838513984,2838513999,US
+2838514000,2838514071,NL
+2838514072,2838514111,US
+2838514112,2838514249,NL
+2838514250,2838514251,US
+2838514252,2838514287,NL
+2838514288,2838514303,US
+2838514304,2838514399,NL
+2838514400,2838514431,JP
+2838514432,2838514511,NL
+2838514512,2838514527,US
+2838514528,2838514767,NL
+2838514768,2838514783,US
+2838514784,2838515295,NL
+2838515296,2838515327,US
+2838515328,2838515391,NL
+2838515392,2838515455,US
+2838515456,2838515543,NL
+2838515544,2838515551,US
+2838515552,2838515647,NL
+2838515648,2838515663,US
+2838515664,2838519807,NL
+2838519808,2838519823,US
+2838519824,2838519935,NL
+2838519936,2838520063,US
+2838520064,2838520071,NL
+2838520072,2838520079,US
+2838520080,2838520463,NL
+2838520464,2838520471,US
+2838520472,2838520805,NL
+2838520806,2838520807,US
+2838520808,2838520831,NL
+2838520832,2838521855,US
+2838521856,2838522031,NL
+2838522032,2838522047,US
+2838522048,2838522175,NL
+2838522176,2838522239,US
+2838522240,2838522895,NL
+2838522896,2838522911,US
+2838522912,2838523111,NL
+2838523112,2838523119,US
+2838523120,2838523231,NL
+2838523232,2838523247,US
+2838523248,2838523391,NL
+2838523392,2838523423,US
+2838523424,2838523599,NL
+2838523600,2838523603,US
+2838523604,2838523615,NL
+2838523616,2838523647,US
+2838523648,2838523679,NL
+2838523680,2838523711,JP
+2838523712,2838523967,NL
+2838523968,2838524031,JP
+2838524032,2838524191,NL
+2838524192,2838524223,AF
+2838524224,2838524631,NL
+2838524632,2838524671,US
+2838524672,2838524735,NL
+2838524736,2838524799,US
+2838524800,2838525999,NL
+2838526000,2838526015,US
+2838526016,2838526639,NL
+2838526640,2838526655,US
+2838526656,2838526695,NL
+2838526696,2838526703,US
+2838526704,2838526943,NL
+2838526944,2838526959,US
+2838526960,2838526983,NL
+2838526984,2838526991,US
+2838526992,2838527055,NL
+2838527056,2838527071,US
+2838527072,2838527223,NL
+2838527224,2838527231,US
+2838527232,2838527279,NL
+2838527280,2838527295,US
+2838527296,2838527391,NL
+2838527392,2838527407,US
+2838527408,2838527439,NL
+2838527440,2838527455,US
+2838527456,2838527487,NL
+2838527488,2838527491,US
+2838527492,2838527535,NL
+2838527536,2838527551,US
+2838527552,2838527615,NL
+2838527616,2838527631,US
+2838527632,2838527679,NL
+2838527680,2838527687,US
+2838527688,2838527695,NL
+2838527696,2838527711,US
+2838527712,2838528279,NL
+2838528280,2838528287,US
+2838528288,2838528319,NL
+2838528320,2838528335,US
+2838528336,2838528815,NL
+2838528816,2838528823,US
+2838528824,2838528959,NL
+2838528960,2838529023,US
+2838529024,2838529295,NL
+2838529296,2838529303,US
+2838529304,2838529319,NL
+2838529320,2838529327,US
+2838529328,2838529375,NL
+2838529376,2838529407,US
+2838529408,2838529495,NL
+2838529496,2838529503,US
+2838529504,2838530095,NL
+2838530096,2838530111,US
+2838530112,2838530271,NL
+2838530272,2838530287,US
+2838530288,2838530407,NL
+2838530408,2838530415,US
+2838530416,2838530527,NL
+2838530528,2838530559,US
+2838530560,2838531367,NL
+2838531368,2838531375,US
+2838531376,2838531487,NL
+2838531488,2838531519,US
+2838531520,2838531975,NL
+2838531976,2838531979,US
+2838531980,2838536223,NL
+2838536224,2838536239,US
+2838536240,2838537139,NL
+2838537140,2838537143,US
+2838537144,2838537223,NL
+2838537224,2838537231,US
+2838537232,2838537375,NL
+2838537376,2838537407,US
+2838537408,2838538063,NL
+2838538064,2838538079,US
+2838538080,2838538319,NL
+2838538320,2838538327,US
+2838538328,2838538559,NL
+2838538560,2838538591,US
+2838538592,2838539503,NL
+2838539504,2838539519,AU
+2838539520,2838539631,NL
+2838539632,2838539647,US
+2838539648,2838539951,NL
+2838539952,2838539967,US
+2838539968,2838540287,NL
+2838540288,2838540295,US
+2838540296,2838540367,NL
+2838540368,2838540383,US
+2838540384,2838540447,NL
+2838540448,2838540463,US
+2838540464,2838540551,NL
+2838540552,2838540575,US
+2838540576,2838540687,NL
+2838540688,2838540703,US
+2838540704,2838541807,NL
+2838541808,2838541823,US
+2838541824,2838542047,NL
+2838542048,2838542063,US
+2838542064,2838542095,NL
+2838542096,2838542111,US
+2838542112,2838542271,NL
+2838542272,2838542303,US
+2838542304,2838542511,NL
+2838542512,2838542527,AF
+2838542528,2838543223,NL
+2838543224,2838543231,US
+2838543232,2838543623,NL
+2838543624,2838543631,US
+2838543632,2838543759,NL
+2838543760,2838543775,US
+2838543776,2838543855,NL
+2838543856,2838543879,US
+2838543880,2838544575,NL
+2838544576,2838544607,US
+2838544608,2838544655,NL
+2838544656,2838544671,US
+2838544672,2838544703,NL
+2838544704,2838544767,US
+2838544768,2838545279,NL
+2838545280,2838545295,US
+2838545296,2838545567,NL
+2838545568,2838545663,US
+2838545664,2838545813,NL
+2838545814,2838545815,US
+2838545816,2838546815,NL
+2838546816,2838546817,US
+2838546818,2838546819,NL
+2838546820,2838546823,US
+2838546824,2838547231,NL
+2838547232,2838547263,US
+2838547264,2838547327,NL
+2838547328,2838547359,US
+2838547360,2838547743,NL
+2838547744,2838547775,US
+2838547776,2838547807,NL
+2838547808,2838547823,US
+2838547824,2838548239,NL
+2838548240,2838548247,US
+2838548248,2838548359,NL
+2838548360,2838548367,US
+2838548368,2838549411,NL
+2838549412,2838549415,US
+2838549416,2838550111,NL
+2838550112,2838550159,US
+2838550160,2838550399,NL
+2838550400,2838550407,US
+2838550408,2838550719,NL
+2838550720,2838550799,US
+2838550800,2838550855,NL
+2838550856,2838550863,US
+2838550864,2838551383,NL
+2838551384,2838551387,US
+2838551388,2838551579,NL
+2838551580,2838551583,US
+2838551584,2838551807,NL
+2838551808,2838551815,US
+2838551816,2838551863,NL
+2838551864,2838551871,US
+2838551872,2838551903,NL
+2838551904,2838551935,US
+2838551936,2838552223,NL
+2838552224,2838552255,US
+2838552256,2838552303,NL
+2838552304,2838552319,US
+2838552320,2838552495,NL
+2838552496,2838552511,US
+2838552512,2838553711,NL
+2838553712,2838553727,US
+2838553728,2838554271,NL
+2838554272,2838554287,US
+2838554288,2838554431,NL
+2838554432,2838554463,US
+2838554464,2838554575,NL
+2838554576,2838554583,US
+2838554584,2838554799,NL
+2838554800,2838554815,JP
+2838554816,2838555135,NL
+2838555136,2838555143,US
+2838555144,2838556671,NL
+2838556672,2838556687,US
+2838556688,2838556831,NL
+2838556832,2838556863,US
+2838556864,2838557215,NL
+2838557216,2838557231,US
+2838557232,2838557455,NL
+2838557456,2838557463,US
+2838557464,2838557839,NL
+2838557840,2838557855,US
+2838557856,2838558927,NL
+2838558928,2838558943,US
+2838558944,2838559023,NL
+2838559024,2838559031,US
+2838559032,2838560655,NL
+2838560656,2838560671,US
+2838560672,2838560767,NL
2838560768,2838626303,CH
-2838626304,2838628319,US
+2838626304,2838626399,US
+2838626400,2838626431,SA
+2838626432,2838626575,US
+2838626576,2838626591,CN
+2838626592,2838627631,US
+2838627632,2838627647,CN
+2838627648,2838628319,US
2838628320,2838628351,DE
-2838628352,2838631871,US
+2838628352,2838628436,US
+2838628437,2838628437,DE
+2838628438,2838631367,US
+2838631368,2838631375,SA
+2838631376,2838631423,US
+2838631424,2838631431,CN
+2838631432,2838631871,US
2838631872,2838631903,DE
-2838631904,2838631967,US
+2838631904,2838631935,SA
+2838631936,2838631967,US
2838631968,2838631999,DE
2838632000,2838632095,US
2838632096,2838632127,DE
-2838632128,2838634047,US
+2838632128,2838633295,US
+2838633296,2838633311,SA
+2838633312,2838634047,US
2838634048,2838634111,DE
-2838634112,2838642239,US
+2838634112,2838636095,US
+2838636096,2838636111,HU
+2838636112,2838641351,US
+2838641352,2838641359,SE
+2838641360,2838641519,US
+2838641520,2838641527,IT
+2838641528,2838641831,US
+2838641832,2838641839,IT
+2838641840,2838642239,US
2838642240,2838642303,DE
-2838642304,2838643407,US
+2838642304,2838642575,US
+2838642576,2838642583,IT
+2838642584,2838642623,US
+2838642624,2838642639,CN
+2838642640,2838643407,US
2838643408,2838643408,GB
-2838643409,2838643696,US
+2838643409,2838643487,US
+2838643488,2838643519,HK
+2838643520,2838643696,US
2838643697,2838643697,GB
-2838643698,2838646207,US
-2838646208,2838646239,GB
+2838643698,2838645839,US
+2838645840,2838645871,GB
+2838645872,2838646191,US
+2838646192,2838646239,GB
2838646240,2838647807,US
2838647808,2838647839,GB
-2838647840,2838650527,US
+2838647840,2838648447,US
+2838648448,2838648479,GB
+2838648480,2838650527,US
2838650528,2838650559,GB
2838650560,2838653631,US
2838653632,2838653639,GB
-2838653640,2838658181,US
+2838653640,2838657567,US
+2838657568,2838657599,GB
+2838657600,2838658181,US
2838658182,2838658182,GB
-2838658183,2838659007,US
+2838658183,2838658607,US
+2838658608,2838658623,NL
+2838658624,2838658815,US
+2838658816,2838658823,IE
+2838658824,2838659007,US
2838659008,2838659023,GB
-2838659024,2838661759,US
+2838659024,2838659431,US
+2838659432,2838659439,GB
+2838659440,2838661759,US
2838661760,2838661791,NL
2838661792,2838663167,US
2838663168,2838663175,NL
-2838663176,2838708223,US
+2838663176,2838664167,US
+2838664168,2838664175,VN
+2838664176,2838665759,US
+2838665760,2838665791,JP
+2838665792,2838668111,US
+2838668112,2838668127,IT
+2838668128,2838669119,US
+2838669120,2838669151,HK
+2838669152,2838669519,US
+2838669520,2838669535,NL
+2838669536,2838677007,US
+2838677008,2838677023,IE
+2838677024,2838677791,US
+2838677792,2838677799,AE
+2838677800,2838679119,US
+2838679120,2838679135,AE
+2838679136,2838682871,US
+2838682872,2838682879,GB
+2838682880,2838683887,US
+2838683888,2838683903,GH
+2838683904,2838692207,US
+2838692208,2838692223,SN
+2838692224,2838700063,US
+2838700064,2838700079,GR
+2838700080,2838704511,US
+2838704512,2838704527,IE
+2838704528,2838708223,US
2838708224,2838724607,NO
2838724608,2838757375,US
2838757376,2838822911,CH
-2838822912,2838865007,US
+2838822912,2838840095,US
+2838840096,2838840127,HK
+2838840128,2838843295,US
+2838843296,2838843327,HK
+2838843328,2838859777,US
+2838859778,2838859779,HK
+2838859780,2838865007,US
2838865008,2838865015,CA
2838865016,2838865019,US
2838865020,2838865023,CA
-2838865024,2838871295,US
+2838865024,2838866163,US
+2838866164,2838866165,JP
+2838866166,2838866247,US
+2838866248,2838866255,CA
+2838866256,2838867855,US
+2838867856,2838867863,CA
+2838867864,2838869603,US
+2838869604,2838869607,JP
+2838869608,2838869703,US
+2838869704,2838869705,JP
+2838869706,2838870111,US
+2838870112,2838870127,CA
+2838870128,2838871185,US
+2838871186,2838871187,JP
+2838871188,2838871197,US
+2838871198,2838871199,JP
+2838871200,2838871295,US
2838871296,2838871311,CA
-2838871312,2838904831,US
+2838871312,2838871327,US
+2838871328,2838871343,CA
+2838871344,2838871503,US
+2838871504,2838871511,CA
+2838871512,2838881055,US
+2838881056,2838881087,AT
+2838881088,2838881407,US
+2838881408,2838881423,IN
+2838881424,2838887271,US
+2838887272,2838887279,IN
+2838887280,2838887871,US
+2838887872,2838887887,EC
+2838887888,2838897695,US
+2838897696,2838897727,HK
+2838897728,2838904831,US
2838904832,2838921215,CA
-2838921216,2838991055,US
+2838921216,2838924687,US
+2838924688,2838924703,HK
+2838924704,2838927583,US
+2838927584,2838927615,HK
+2838927616,2838930495,US
+2838930496,2838930511,HK
+2838930512,2838931007,US
+2838931008,2838931012,CZ
+2838931013,2838931013,US
+2838931014,2838931015,CZ
+2838931016,2838931016,US
+2838931017,2838931023,CZ
+2838931024,2838933919,US
+2838933920,2838933951,NL
+2838933952,2838934847,US
+2838934848,2838934863,PE
+2838934864,2838938991,US
+2838938992,2838939007,AU
+2838939008,2838946431,US
+2838946432,2838946447,KE
+2838946448,2838957535,US
+2838957536,2838957551,HK
+2838957552,2838960815,US
+2838960816,2838960819,CZ
+2838960820,2838960821,US
+2838960822,2838960827,CZ
+2838960828,2838960829,US
+2838960830,2838960831,CZ
+2838960832,2838968671,US
+2838968672,2838968687,CN
+2838968688,2838969167,US
+2838969168,2838969183,AF
+2838969184,2838969535,US
+2838969536,2838969536,IL
+2838969537,2838969587,US
+2838969588,2838969588,AF
+2838969589,2838969591,US
+2838969592,2838969592,HK
+2838969593,2838969688,US
+2838969689,2838969689,KE
+2838969690,2838969737,US
+2838969738,2838969738,ES
+2838969739,2838969814,US
+2838969815,2838969815,JP
+2838969816,2838969820,US
+2838969821,2838969821,CA
+2838969822,2838969828,US
+2838969829,2838969829,NL
+2838969830,2838969903,US
+2838969904,2838969904,NL
+2838969905,2838970017,US
+2838970018,2838970018,SA
+2838970019,2838987991,US
+2838987992,2838987999,CA
+2838988000,2838988639,US
+2838988640,2838988671,CA
+2838988672,2838989671,US
+2838989672,2838989679,CA
+2838989680,2838990719,US
+2838990720,2838990751,CA
+2838990752,2838991055,US
2838991056,2838991071,CA
-2838991072,2839021219,US
+2838991072,2838996063,US
+2838996064,2838996095,HK
+2838996096,2838998367,US
+2838998368,2838998383,CA
+2838998384,2838999407,US
+2838999408,2838999423,AF
+2838999424,2838999495,US
+2838999496,2838999503,CA
+2838999504,2838999597,US
+2838999598,2838999599,JP
+2838999600,2839001023,US
+2839001024,2839001055,HK
+2839001056,2839001263,US
+2839001264,2839001279,CA
+2839001280,2839019687,US
+2839019688,2839019695,JP
+2839019696,2839021219,US
2839021220,2839021222,JP
2839021223,2839021223,US
2839021224,2839021226,JP
@@ -71545,16 +82436,60 @@
2839021240,2839021242,JP
2839021243,2839035903,US
2839035904,2839052287,KR
-2839052288,2839085055,US
+2839052288,2839053951,US
+2839053952,2839053983,HK
+2839053984,2839055063,US
+2839055064,2839055065,NL
+2839055066,2839057455,US
+2839057456,2839057471,NL
+2839057472,2839085055,US
2839085056,2839117823,MX
2839117824,2839150591,BR
-2839150592,2843803647,US
+2839150592,2839292927,US
+2839292928,2839293951,CA
+2839293952,2839297023,US
+2839297024,2839298047,CA
+2839298048,2839300031,US
+2839300032,2839300047,AF
+2839300048,2839315471,US
+2839315472,2839315487,JP
+2839315488,2839325599,US
+2839325600,2839325631,JP
+2839325632,2839328383,US
+2839328384,2839328399,JP
+2839328400,2839349695,US
+2839349696,2839349711,NL
+2839349712,2839351855,US
+2839351856,2839351871,AF
+2839351872,2839355407,US
+2839355408,2839355423,AU
+2839355424,2839356047,US
+2839356048,2839356063,JP
+2839356064,2839358015,US
+2839358016,2839358023,CA
+2839358024,2839358809,US
+2839358810,2839358811,JP
+2839358812,2839360079,US
+2839360080,2839360095,NL
+2839360096,2839370895,US
+2839370896,2839370911,AU
+2839370912,2839412959,US
+2839412960,2839412991,JP
+2839412992,2839435439,US
+2839435440,2839435455,AU
+2839435456,2839447231,US
+2839447232,2839447295,JP
+2839447296,2840015359,US
+2840015360,2840015615,GB
+2840015616,2843803647,US
2843803648,2843869183,ZA
2843869184,2844524543,US
2844524544,2844590079,KR
2844590080,2844862975,US
2844862976,2844863231,CA
-2844863232,2845114367,US
+2844863232,2844904959,US
+2844904960,2844905215,SG
+2844905216,2845114367,US
2845114368,2845179903,IN
2845179904,2845704191,US
2845704192,2845769727,CU
@@ -71569,7 +82504,9 @@
2848212992,2848215039,GB
2848215040,2848244735,US
2848244736,2848245759,GB
-2848245760,2848522239,US
+2848245760,2848284671,US
+2848284672,2848285695,RU
+2848285696,2848522239,US
2848587776,2848653311,ZA
2848653312,2848980991,US
2848980992,2850029567,KR
@@ -71642,7 +82579,9 @@
2852072448,2852073471,ZA
2852073472,2852074495,TZ
2852074496,2852075519,MW
-2852075520,2852075775,ZA
+2852075520,2852075626,ZA
+2852075627,2852075627,GH
+2852075628,2852075775,ZA
2852075776,2852076031,NG
2852076032,2852077567,ZA
2852077568,2852078591,CD
@@ -71650,7 +82589,7 @@
2852079616,2852080639,CG
2852080640,2852081663,ZA
2852081664,2852082687,BW
-2852082688,2852083711,EG
+2852082944,2852083199,EG
2852083712,2852084735,AO
2852084736,2852085759,TN
2852085760,2852086783,KE
@@ -71659,7 +82598,9 @@
2852088832,2852089855,LY
2852089856,2852090879,TZ
2852090880,2852091903,ZA
-2852091904,2852092671,CD
+2852091904,2852092159,CD
+2852092160,2852092415,CG
+2852092416,2852092671,CD
2852092672,2852092927,CG
2852092928,2852093951,NG
2852093952,2852094975,ZA
@@ -71689,11 +82630,7 @@
2852121600,2852122623,NG
2852122624,2852126719,ZA
2852126720,2852127743,BR
-2852127744,2852127983,HN
-2852127984,2852127991,NL
-2852127992,2852128087,HN
-2852128088,2852128095,NL
-2852128096,2852128767,HN
+2852127744,2852128767,HN
2852128768,2852129791,AR
2852129792,2852130815,MX
2852130816,2852131839,SX
@@ -71726,7 +82663,9 @@
2854295552,2854297599,SG
2854297600,2854299647,DE
2854299648,2854354943,SG
-2854354944,2854617087,US
+2854354944,2854603519,US
+2854603520,2854604543,NL
+2854604544,2854617087,US
2854617088,2854682623,MY
2854748160,2855288831,US
2855288832,2855305215,GB
@@ -71734,8 +82673,8 @@
2855309312,2855469055,US
2855469056,2855473151,PY
2855473152,2855481343,AR
-2855481344,2855484415,PY
-2855484416,2855484671,AR
+2855481344,2855483391,PY
+2855483392,2855484671,AR
2855484672,2855485183,PY
2855485184,2855489535,UY
2855489536,2855497727,AR
@@ -71748,9 +82687,9 @@
2855550976,2855567359,CA
2855567360,2856058879,US
2856058880,2856124415,CH
-2856124416,2856184831,US
-2856184832,2856185855,GB
-2856185856,2856438783,US
+2856124416,2856181759,US
+2856181760,2856189951,GB
+2856189952,2856438783,US
2856438784,2856439039,BR
2856439040,2856439295,US
2856439296,2856439551,BR
@@ -71803,9 +82742,7 @@
2857309184,2857313279,BR
2857313280,2857314303,PE
2857314304,2857315327,CL
-2857315328,2857324031,BR
-2857324032,2857324543,US
-2857324544,2857326591,BR
+2857315328,2857326591,BR
2857326592,2857327615,CO
2857327616,2857329663,BR
2857329664,2857330687,CL
@@ -71876,8 +82813,7 @@
2857496576,2857497599,PE
2857497600,2857499647,BR
2857499648,2857500671,CO
-2857500672,2857501183,HN
-2857501184,2857501695,US
+2857500672,2857501695,HN
2857501696,2857506815,BR
2857506816,2857507839,DO
2857507840,2857509887,BR
@@ -71924,15 +82860,14 @@
2857596928,2857597951,BR
2857597952,2857598975,AR
2857598976,2857611263,BR
-2857611264,2857612287,US
+2857611264,2857612287,HN
2857612288,2857615359,BR
2857615360,2857616383,HT
2857616384,2857621503,BR
2857621504,2857622527,EC
2857622528,2857623551,AR
2857623552,2857625599,BR
-2857625600,2857627135,HN
-2857627136,2857627647,US
+2857625600,2857627647,HN
2857627648,2857628671,PY
2857628672,2857633791,BR
2857633792,2857634815,TT
@@ -71961,7 +82896,11 @@
2857697280,2859007999,US
2859008000,2859073535,JP
2859073536,2859139071,CN
-2859139072,2861842431,US
+2859139072,2861068799,US
+2861068800,2861069311,GB
+2861069312,2861070335,US
+2861070336,2861070591,CA
+2861070592,2861842431,US
2861842432,2861843851,HK
2861843852,2861843853,US
2861843854,2861844479,HK
@@ -71969,7 +82908,11 @@
2861858816,2861859974,HK
2861859975,2861859976,US
2861859977,2861860863,HK
-2861860864,2861957119,US
+2861860864,2861862911,US
+2861862912,2861863423,AU
+2861863424,2861875199,US
+2861875200,2861883391,GB
+2861883392,2861957119,US
2861957120,2861959167,BR
2861959168,2861960191,AR
2861960192,2861961215,MX
@@ -72001,7 +82944,9 @@
2862284800,2862350335,AR
2862350336,2862415871,US
2862415872,2862481407,AU
-2862481408,2863202303,US
+2862481408,2863121311,US
+2863121312,2863121343,CA
+2863121344,2863202303,US
2863202304,2863267839,MX
2863267840,2863595519,US
2863595520,2863661055,CA
@@ -72011,9 +82956,19 @@
2864844800,2864845055,NL
2864845056,2864848895,US
2864848896,2864857087,GB
-2864857088,2865252095,US
+2864857088,2865168383,US
+2865168384,2865209343,CA
+2865209344,2865219583,US
+2865219584,2865219839,CA
+2865219840,2865228799,US
+2865228800,2865229311,CA
+2865229312,2865230847,US
+2865230848,2865231359,CA
+2865231360,2865252095,US
2865252096,2865252351,GB
-2865252352,2865577983,US
+2865252352,2865418239,US
+2865418240,2865419263,GB
+2865419264,2865577983,US
2865577984,2865610751,BE
2865610752,2865889279,US
2865889280,2865954815,AR
@@ -72045,15 +83000,17 @@
2867325952,2867326975,PA
2867326976,2867329023,BR
2867329024,2867329295,HN
-2867329296,2867329311,NL
-2867329312,2867330047,HN
+2867329296,2867329303,NL
+2867329304,2867329535,HN
+2867329536,2867330047,US
2867330048,2867331071,BR
2867331072,2867396607,US
2867396608,2867403775,BR
2867403776,2867404799,AR
2867404800,2867414015,BR
2867414016,2867415039,AR
-2867415040,2867416063,GF
+2867415040,2867415551,GP
+2867415552,2867416063,GF
2867416064,2867420159,BR
2867420160,2867421183,AR
2867421184,2867426303,BR
@@ -72324,27 +83281,35 @@
2868578816,2868579327,IN
2868579328,2868581375,US
2868581376,2868581887,IN
-2868581888,2868586495,US
+2868581888,2868584447,US
+2868584448,2868586495,GB
2868586496,2868588543,IN
2868588544,2868591615,US
2868591616,2868592127,IN
2868592128,2868599295,US
-2868599296,2868599807,BR
+2868599296,2868599807,IN
2868599808,2868604415,US
2868604416,2868604927,IN
2868604928,2868612607,US
2868612608,2868613119,IN
-2868613120,2868619775,US
-2868619776,2868620287,IN
-2868620288,2868620799,US
-2868620800,2868621311,IN
-2868621312,2868632575,US
+2868613120,2868627455,US
+2868627456,2868627967,GB
+2868627968,2868631551,US
+2868631552,2868632575,AR
2868632576,2868633087,BR
-2868633088,2868674336,US
+2868633088,2868633599,AR
+2868633600,2868658175,US
+2868658176,2868660223,GB
+2868660224,2868660479,US
+2868660480,2868660735,ES
+2868660736,2868670463,US
+2868670464,2868674336,FI
2868674337,2868674337,SE
-2868674338,2868678655,US
-2868678656,2868678911,JP
-2868678912,2868731903,US
+2868674338,2868674559,FI
+2868674560,2868682752,AU
+2868682753,2868682753,US
+2868682754,2868690943,AU
+2868690944,2868731903,US
2868731904,2868740095,CA
2868740096,2868772863,US
2868772864,2868773887,CO
@@ -72391,7 +83356,9 @@
2869428224,2869952511,CN
2869952512,2870018047,FR
2870018048,2870083583,DE
-2870083584,2870089727,FR
+2870083584,2870084140,FR
+2870084141,2870084141,ES
+2870084142,2870089727,FR
2870089728,2870090751,BE
2870090752,2870091775,DE
2870091776,2870149119,FR
@@ -72437,7 +83404,8 @@
2870600704,2870600959,DK
2870600960,2870601215,BE
2870601216,2870601727,PL
-2870601728,2870603775,RU
+2870601728,2870602751,RU
+2870602752,2870603775,UA
2870603776,2870604031,LT
2870604032,2870604287,UA
2870604288,2870607871,RU
@@ -72450,7 +83418,9 @@
2871083008,2871099391,FR
2871099392,2871101439,NL
2871101440,2871103487,CZ
-2871103488,2871105535,GB
+2871103488,2871103999,GB
+2871104000,2871104511,NO
+2871104512,2871105535,IE
2871105536,2871107583,FR
2871107584,2871111679,GB
2871111680,2871115775,DE
@@ -72465,7 +83435,11 @@
2874146816,2875195391,CN
2875195392,2875719679,TH
2875719680,2877292543,CN
-2877292544,2882469887,US
+2877292544,2879332351,US
+2879332352,2879340543,GB
+2879340544,2881486847,US
+2881486848,2881495039,GB
+2881495040,2882469887,US
2882469888,2882535423,SG
2882535424,2883583999,CN
2883584000,2885681151,VN
@@ -72504,7 +83478,8 @@
2890172416,2890173439,PL
2890173440,2890174463,US
2890174464,2890175231,SG
-2890175232,2890176511,US
+2890175232,2890175487,AU
+2890175488,2890176511,US
2890176512,2890177535,RS
2890177536,2890178559,US
2890178560,2890179583,IN
@@ -72527,12 +83502,58 @@
2890200064,2890201087,RU
2890201088,2890203135,HK
2890203136,2890204159,AT
-2890204160,2890216447,US
+2890204160,2890205183,US
+2890205184,2890207231,MX
+2890207232,2890216447,US
2890216448,2890217471,NL
2890217472,2890218495,GR
-2890218496,2890956799,US
+2890218496,2890221567,US
+2890221568,2890222591,MO
+2890222592,2890223615,NP
+2890223616,2890224639,KH
+2890224640,2890225663,LB
+2890225664,2890226687,US
+2890226688,2890227711,MU
+2890227712,2890228735,HK
+2890228736,2890229759,IQ
+2890229760,2890230783,IN
+2890230784,2890231807,JP
+2890231808,2890232831,ZA
+2890232832,2890233855,TR
+2890233856,2890234879,IE
+2890234880,2890235903,SA
+2890235904,2890236927,IL
+2890236928,2890237951,SG
+2890237952,2890238975,EE
+2890238976,2890239999,US
+2890240000,2890241023,IS
+2890241024,2890242047,RO
+2890242048,2890243071,JP
+2890243072,2890244095,CA
+2890244096,2890247167,US
+2890247168,2890248191,GB
+2890248192,2890249215,HK
+2890249216,2890250239,US
+2890250240,2890251263,PH
+2890251264,2890252287,LT
+2890252288,2890253311,LV
+2890253312,2890254335,US
+2890254336,2890255359,MD
+2890255360,2890256383,CO
+2890256384,2890257407,US
+2890257408,2890259455,CA
+2890259456,2890260479,LU
+2890260480,2890261503,FR
+2890261504,2890264575,US
+2890264576,2890265599,CL
+2890265600,2890266623,GB
+2890266624,2890956799,US
2890956800,2890989567,AE
-2890989568,2891017215,US
+2890989568,2891014911,US
+2891014912,2891015167,JP
+2891015168,2891016191,US
+2891016192,2891016447,JP
+2891016448,2891017215,US
2891017216,2891017471,JP
2891017472,2891022847,US
2891022848,2891023103,GB
@@ -72545,6 +83566,42 @@
2891056640,2891058943,US
2891058944,2891059199,FR
2891059200,2891120639,US
+2891120640,2891120895,CA
+2891120896,2891122687,US
+2891122688,2891123199,NL
+2891123200,2891130879,US
+2891130880,2891131135,CA
+2891131136,2891134975,US
+2891134976,2891135999,CA
+2891136000,2891138047,US
+2891138048,2891141119,CA
+2891141120,2891142143,US
+2891142144,2891142655,CA
+2891142656,2891147263,US
+2891147264,2891148287,CA
+2891148288,2891153151,US
+2891153152,2891153343,CA
+2891153344,2891153359,IN
+2891153360,2891153407,CA
+2891153408,2891161599,US
+2891161600,2891165695,CA
+2891165696,2891173631,US
+2891173632,2891177983,CA
+2891177984,2891185151,US
+2891185152,2891202559,CA
+2891202560,2891205375,US
+2891205376,2891205631,IT
+2891205632,2891206655,US
+2891206656,2891207679,DE
+2891207680,2891208447,US
+2891208448,2891208703,DE
+2891208704,2891209215,SE
+2891209216,2891210495,US
+2891210496,2891210751,CA
+2891210752,2891223295,US
+2891223296,2891223551,PR
+2891223552,2891235327,US
+2891235328,2891251711,VI
2891251712,2891272191,US
2891272192,2891274239,CA
2891274240,2891277823,US
@@ -72556,10 +83613,13 @@
2891283456,2891284479,CA
2891284480,2891364351,US
2891364352,2891374591,CA
+2891374592,2891376639,US
2891378688,2891380735,CA
2891380736,2891403263,US
2891403264,2891407359,CA
-2891407360,2891780095,US
+2891407360,2891777791,US
+2891777792,2891778047,PR
+2891778048,2891780095,US
2891780096,2891786239,CA
2891786240,2891790335,US
2891790336,2891791359,CA
@@ -72583,7 +83643,7 @@
2891845888,2891846399,DE
2891846400,2891846655,NL
2891846656,2891846911,US
-2891846912,2891847167,KY
+2891846912,2891847167,NL
2891847168,2891848447,US
2891848448,2891848703,JP
2891848704,2891848959,US
@@ -72636,7 +83696,8 @@
2891865856,2891866111,US
2891866112,2891866367,AU
2891866368,2891866623,BB
-2891866624,2891867391,AU
+2891866624,2891866879,HM
+2891866880,2891867391,AU
2891867392,2891867647,AT
2891867648,2891867903,US
2891867904,2891868159,AU
@@ -72745,14 +83806,20 @@
2892424192,2892425215,CA
2892425216,2892443647,US
2892443648,2892447743,CA
-2892447744,2892464127,US
+2892447744,2892453887,US
+2892453888,2892455935,SE
+2892455936,2892464127,US
2892464128,2892496895,CA
2892496896,2892505087,US
2892505088,2892513279,SG
2892513280,2892529663,JP
2892529664,2892537855,DE
2892537856,2892546047,SG
-2892546048,2892611583,US
+2892546048,2892560817,US
+2892560818,2892560818,DE
+2892560819,2892561013,US
+2892561014,2892561014,DE
+2892561015,2892611583,US
2892611584,2892627967,JP
2892627968,2892906495,US
2892906496,2892910591,CA
@@ -72813,8 +83880,7 @@
2892997120,2892997375,CA
2892997376,2892997631,BG
2892997632,2892997887,AU
-2892997888,2892998143,JP
-2892998144,2892998399,US
+2892997888,2892998399,US
2892998400,2892998655,GB
2892998656,2892998911,HK
2892998912,2892999167,MX
@@ -72852,7 +83918,7 @@
2893008896,2893009151,AF
2893009152,2893009663,US
2893009664,2893010175,GB
-2893010176,2893010431,IT
+2893010176,2893010431,US
2893010432,2893010687,DE
2893010688,2893010943,US
2893010944,2893011199,AT
@@ -72861,11 +83927,11 @@
2893011712,2893011967,US
2893011968,2893012223,FR
2893012224,2893012479,ES
-2893012480,2893012735,DK
-2893012736,2893015039,US
+2893012480,2893015039,US
2893015040,2893015295,CA
2893015296,2893015551,BS
-2893015552,2893016575,US
+2893015552,2893015807,HK
+2893015808,2893016575,US
2893016576,2893016831,SE
2893016832,2893017343,CA
2893017344,2893017599,SG
@@ -72881,7 +83947,9 @@
2893020672,2893676543,US
2893676544,2893807615,JP
2893807616,2894921727,US
-2894921728,2895118335,GB
+2894921728,2894970879,GB
+2894970880,2894979071,IE
+2894979072,2895118335,GB
2895118336,2895301887,US
2895301888,2895302143,AR
2895302144,2895642623,US
@@ -72910,7 +83978,23 @@
2899378176,2899443711,GB
2899443712,2899574783,FR
2899574784,2899902463,GB
-2899902464,2899967999,US
+2899902464,2899910655,US
+2899910656,2899910783,GB
+2899910784,2899910911,SG
+2899910912,2899911039,AU
+2899911040,2899911231,DE
+2899911232,2899911423,IN
+2899911424,2899911679,BR
+2899911680,2899911935,US
+2899911936,2899912191,BR
+2899912192,2899912447,IN
+2899912448,2899912703,US
+2899912704,2899913215,NL
+2899913216,2899913471,TW
+2899913472,2899914239,CA
+2899914240,2899914495,US
+2899914496,2899914751,SG
+2899914752,2899967999,US
2899968000,2900099071,CA
2900099072,2901475327,US
2901475328,2901477375,NL
@@ -72928,12 +84012,14 @@
2901740456,2901740463,CA
2901740464,2901751295,US
2901751296,2901751551,GB
-2901751552,2901876735,US
-2901876736,2901877759,CN
+2901751552,2901783383,US
+2901783384,2901783403,RO
+2901783404,2901877759,US
2901877760,2901878271,DE
-2901878272,2901878783,CN
-2901878784,2902200319,US
-2902200320,2902201855,CN
+2901878272,2902200319,US
+2902200320,2902200831,CN
+2902200832,2902201087,US
+2902201088,2902201855,CN
2902201856,2902202111,US
2902202112,2902203135,CN
2902203136,2902203391,US
@@ -72958,11 +84044,15 @@
2902235136,2902235391,US
2902235392,2902236415,CN
2902236416,2902236927,US
-2902236928,2902237951,CN
+2902236928,2902237183,CN
+2902237184,2902237439,US
+2902237440,2902237951,CN
2902237952,2902238207,US
2902238208,2902239999,CN
2902240000,2902240511,US
-2902240512,2902241535,CN
+2902240512,2902240767,CN
+2902240768,2902241023,US
+2902241024,2902241535,CN
2902241536,2902241791,US
2902241792,2902242047,CN
2902242048,2902242303,US
@@ -72971,7 +84061,9 @@
2902243584,2902245375,CN
2902245376,2902246143,US
2902246144,2902246399,CN
-2902246400,2902392831,US
+2902246400,2902262527,US
+2902262528,2902262783,JP
+2902262784,2902392831,US
2902392832,2902396927,NL
2902396928,2902405119,US
2902405120,2902407679,CA
@@ -73021,10 +84113,11 @@
2905415680,2905415935,GB
2905415936,2905450031,US
2905450032,2905450039,UY
-2905450040,2905473023,US
+2905450040,2905456639,US
+2905464832,2905473023,US
2905473024,2905481215,CA
2905481216,2905494783,US
-2905494784,2905495039,DE
+2905494784,2905495039,CH
2905495040,2905510911,US
2905510912,2905511935,CA
2905511936,2905512959,US
@@ -73044,7 +84137,8 @@
2915197184,2915197439,US
2915197440,2915197695,FI
2915197696,2915215359,US
-2915215360,2915215615,JP
+2915215360,2915215551,JP
+2915215552,2915215615,US
2915215616,2915216127,NL
2915216128,2915216383,TW
2915216384,2915250175,US
@@ -73061,7 +84155,8 @@
2915520640,2915520647,US
2915520648,2915520671,AU
2915520672,2915520767,US
-2915520768,2915521023,AU
+2915520768,2915520863,JP
+2915520864,2915521023,AU
2915521024,2915521279,JP
2915521280,2915521535,PL
2915521536,2915526911,US
@@ -73075,15 +84170,19 @@
2915528784,2915528791,NL
2915528792,2915528815,US
2915528816,2915528823,NL
-2915528824,2915528863,US
-2915528864,2915528879,NL
+2915528824,2915528839,US
+2915528840,2915528847,NL
+2915528848,2915528855,US
+2915528856,2915528879,NL
2915528880,2915528927,US
-2915528928,2915528943,NL
-2915528944,2915528959,US
-2915528960,2915529023,NL
+2915528928,2915529023,NL
2915529024,2915529151,US
2915529152,2915529215,NL
-2915529216,2915795013,US
+2915529216,2915767759,US
+2915767760,2915767775,GB
+2915767776,2915768735,US
+2915768736,2915768767,GB
+2915768768,2915795013,US
2915795014,2915795014,MX
2915795015,2915894575,US
2915894576,2915894591,CA
@@ -73133,10 +84232,10 @@
2916401152,2916417535,DE
2916417536,2916515839,US
2916515840,2916519935,CA
-2916519936,2916581375,US
-2916581376,2916599039,PR
-2916599040,2916599295,US
-2916599296,2916614143,PR
+2916519936,2916532223,US
+2916532224,2916533247,IN
+2916533248,2916581375,US
+2916581376,2916614143,PR
2916614144,2917031935,US
2917031936,2917032959,NL
2917032960,2917035007,US
@@ -73179,15 +84278,11 @@
2917267840,2917267967,AG
2917267968,2917268223,JM
2917268224,2917268479,BB
-2917268480,2917269113,JM
-2917269114,2917269114,TC
-2917269115,2917269503,JM
+2917268480,2917269503,TC
2917269504,2917445887,US
2917445888,2917446143,DE
2917446144,2917449727,US
-2917449728,2917457919,PR
-2917457920,2917458943,US
-2917458944,2917466111,PR
+2917449728,2917466111,PR
2917466112,2917572607,US
2917572608,2917580799,CA
2917580800,2917593295,US
@@ -73240,13 +84335,21 @@
2917710592,2917710847,CA
2917710848,2917713919,US
2917713920,2917714175,CA
-2917714176,2917826559,US
+2917714176,2917724943,US
+2917724944,2917724959,MY
+2917724960,2917724991,US
+2917724992,2917725007,MY
+2917725008,2917726463,US
+2917726464,2917726495,CR
+2917726496,2917826559,US
2917826560,2917828351,NL
2917828352,2917828479,IN
2917828480,2917828607,NL
2917828608,2917842175,US
2917842176,2917842431,CA
-2917842432,2918014975,US
+2917842432,2917851207,US
+2917851208,2917851215,CA
+2917851216,2918014975,US
2918014976,2918023167,CA
2918023168,2918043647,US
2918043648,2918047743,CA
@@ -73265,8 +84368,10 @@
2918174720,2918180351,US
2918180352,2918180863,CA
2918180864,2918187007,US
-2918187008,2918188031,CA
-2918188032,2918189311,US
+2918187008,2918188319,CA
+2918188320,2918188351,US
+2918188352,2918189055,CA
+2918189056,2918189311,US
2918189312,2918189567,CA
2918189568,2918232063,US
2918232064,2918236159,CA
@@ -73278,7 +84383,9 @@
2918287360,2918289407,GB
2918289408,2918314216,US
2918314217,2918314217,GB
-2918314218,2918371327,US
+2918314218,2918363135,US
+2918363136,2918367231,CA
+2918367232,2918371327,US
2918371328,2918375423,CA
2918375424,2918391807,US
2918391808,2918395903,CA
@@ -73293,9 +84400,7 @@
2918463488,2918469631,US
2918469632,2918471423,CA
2918471424,2918471679,US
-2918471680,2918472703,CA
-2918472704,2918473215,US
-2918473216,2918473727,CA
+2918471680,2918473727,CA
2918473728,2918477823,US
2918477824,2918481919,CA
2918481920,2918498431,US
@@ -73304,15 +84409,19 @@
2918498448,2918498463,JP
2918498464,2918498499,US
2918498500,2918498501,JP
-2918498502,2918498535,US
+2918498502,2918498511,US
+2918498512,2918498527,JP
+2918498528,2918498535,US
2918498536,2918498539,JP
2918498540,2918502911,US
2918502912,2918503167,SG
-2918503168,2918527231,US
+2918503168,2918514943,US
+2918514944,2918515079,CA
+2918515080,2918515199,US
+2918515200,2918515327,CA
+2918515328,2918527231,US
2918527232,2918527487,FR
-2918527488,2918530559,US
-2918530560,2918530815,HK
-2918530816,2918536719,US
+2918527488,2918536719,US
2918536720,2918536727,CA
2918536728,2918570239,US
2918570240,2918570495,JP
@@ -73334,8 +84443,8 @@
2918768640,2918776831,HK
2918776832,2918793215,DE
2918793216,2918815999,US
-2918816000,2918817023,GB
-2918817024,2918817791,US
+2918816000,2918816767,GB
+2918816768,2918817791,US
2918825984,2918828031,US
2918828032,2918828543,UA
2918828544,2918829055,ES
@@ -73372,7 +84481,8 @@
2919205028,2919205031,NL
2919205032,2919206655,US
2919206656,2919206911,SG
-2919206912,2919211007,CA
+2919206912,2919208959,JE
+2919208960,2919211007,CA
2919211008,2919235583,US
2919235584,2919759871,CA
2919759872,2921512703,US
@@ -73455,17 +84565,23 @@
2928204800,2928205055,NZ
2928205056,2928206335,US
2928206336,2928206591,PH
-2928206592,2928226303,US
-2928226304,2928230399,CA
-2928230400,2928261375,US
+2928206592,2928261375,US
2928261376,2928261695,CA
2928261696,2928261711,NL
2928261712,2928261887,CA
2928261888,2928263167,US
2928263168,2928279551,CA
-2928279552,2928283647,US
+2928279552,2928283647,NL
2928283648,2928287743,SG
-2928287744,2928312319,US
+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
2928312320,2928316415,CA
2928316416,2928320511,HK
2928320512,2928328703,US
@@ -73476,32 +84592,58 @@
2928474624,2928474879,GB
2928474880,2928475135,FR
2928475136,2928541695,US
-2928541696,2928553303,CA
+2928541696,2928546143,CA
+2928546144,2928546151,MX
+2928546152,2928549527,CA
+2928549528,2928549535,US
+2928549536,2928553303,CA
2928553304,2928553311,HU
2928553312,2928555831,CA
2928555832,2928555839,SE
2928555840,2928558943,CA
2928558944,2928558951,PE
-2928558952,2928564447,CA
+2928558952,2928563639,CA
+2928563640,2928563647,PH
+2928563648,2928563775,CA
+2928563776,2928563783,FI
+2928563784,2928564447,CA
2928564448,2928564455,MX
2928564456,2928570671,CA
2928570672,2928570687,FR
-2928570688,2928579543,CA
+2928570688,2928578631,CA
+2928578632,2928578639,US
+2928578640,2928579543,CA
2928579544,2928579551,HU
2928579552,2928583735,CA
2928583736,2928583743,SY
-2928583744,2928583983,CA
+2928583744,2928583759,CA
+2928583760,2928583767,US
+2928583768,2928583983,CA
2928583984,2928583991,SE
2928583992,2928588399,CA
2928588400,2928588407,AE
-2928588408,2928595959,CA
+2928588408,2928595695,CA
+2928595696,2928595703,PL
+2928595704,2928595887,CA
+2928595888,2928595895,BE
+2928595896,2928595959,CA
2928595960,2928595967,US
2928595968,2928598919,CA
2928598920,2928598927,SA
-2928598928,2928607231,CA
-2928607232,2928633199,US
+2928598928,2928599239,CA
+2928599240,2928599247,AE
+2928599248,2928603647,CA
+2928603648,2928603663,US
+2928603664,2928607231,CA
+2928607232,2928627423,US
+2928627424,2928627431,IL
+2928627432,2928633199,US
2928633200,2928633215,CA
-2928633216,2936012799,US
+2928633216,2928638927,US
+2928638928,2928638933,AU
+2928638934,2928642653,US
+2928642654,2928642655,NG
+2928642656,2936012799,US
2936012800,2937847807,CN
2937847808,2937848831,KH
2937848832,2937849855,JP
@@ -73559,7 +84701,9 @@
2938748928,2938765311,JP
2938765312,2938961919,CN
2938961920,2938978303,HK
-2938978304,2938986495,AU
+2938978304,2938984191,AU
+2938984192,2938984447,NZ
+2938984448,2938986495,AU
2938986496,2938986751,NZ
2938986752,2938988031,AU
2938988032,2938988287,NZ
@@ -73610,7 +84754,6 @@
2943311872,2943312895,HK
2943312896,2943313919,NZ
2943313920,2943314943,SG
-2943314944,2943315967,CN
2943315968,2943318015,ID
2943318016,2943320063,JP
2943320064,2943324159,IN
@@ -73660,7 +84803,7 @@
2947592192,2947593215,CN
2947593216,2947594239,HK
2947594240,2947595263,IN
-2947595264,2947596287,CN
+2947595264,2947597311,CN
2947597312,2947598335,JP
2947598336,2947602431,AU
2947602432,2947603455,NZ
@@ -73683,7 +84826,11 @@
2948595712,2952790015,KR
2952790016,2953314303,DE
2953314304,2953379839,UA
-2953379840,2953445375,DE
+2953379840,2953398318,DE
+2953398319,2953398319,AQ
+2953398320,2953398360,DE
+2953398361,2953398361,HM
+2953398362,2953445375,DE
2953445376,2953453567,IT
2953453568,2953455615,IS
2953455616,2953457663,SK
@@ -73707,7 +84854,9 @@
2953596928,2953598975,ES
2953598976,2953601023,IT
2953601024,2953603071,RU
-2953603072,2953605119,GB
+2953603072,2953603978,GB
+2953603979,2953603979,IE
+2953603980,2953605119,GB
2953605120,2953609215,CZ
2953609216,2953707519,IL
2953707520,2953838591,RU
@@ -73723,73 +84872,561 @@
2954756096,2954821631,TR
2954821632,2954821947,FR
2954821948,2954821951,DE
-2954821952,2954822927,FR
+2954821952,2954822079,FR
+2954822080,2954822143,ES
+2954822144,2954822279,FR
+2954822280,2954822283,ES
+2954822284,2954822323,FR
+2954822324,2954822327,FI
+2954822328,2954822447,FR
+2954822448,2954822455,ES
+2954822456,2954822591,FR
+2954822592,2954822599,GB
+2954822600,2954822927,FR
2954822928,2954822931,DE
-2954822932,2954824415,FR
+2954822932,2954823259,FR
+2954823260,2954823263,GB
+2954823264,2954823327,FR
+2954823328,2954823331,GB
+2954823332,2954823687,FR
+2954823688,2954823695,NL
+2954823696,2954823887,FR
+2954823888,2954823891,ES
+2954823892,2954823999,FR
+2954824000,2954824015,ES
+2954824016,2954824095,FR
+2954824096,2954824127,FI
+2954824128,2954824255,FR
+2954824256,2954824259,ES
+2954824260,2954824287,FR
+2954824288,2954824319,ES
+2954824320,2954824351,DE
+2954824352,2954824415,FR
2954824416,2954824431,GB
-2954824432,2954827799,FR
+2954824432,2954824511,FR
+2954824512,2954824527,FI
+2954824528,2954824639,FR
+2954824640,2954824655,GB
+2954824656,2954824687,FR
+2954824688,2954824703,FI
+2954824704,2954824923,FR
+2954824924,2954824927,ES
+2954824928,2954824991,FR
+2954824992,2954825007,ES
+2954825008,2954825063,FR
+2954825064,2954825067,ES
+2954825068,2954825087,FR
+2954825088,2954825095,CZ
+2954825096,2954825183,FR
+2954825184,2954825191,ES
+2954825192,2954825247,FR
+2954825248,2954825263,GB
+2954825264,2954825267,PL
+2954825268,2954825311,FR
+2954825312,2954825315,GB
+2954825316,2954825319,ES
+2954825320,2954825387,FR
+2954825388,2954825391,ES
+2954825392,2954825403,FR
+2954825404,2954825407,ES
+2954825408,2954825535,FR
+2954825536,2954825539,ES
+2954825540,2954825663,FR
+2954825664,2954825727,GB
+2954825728,2954826015,FR
+2954826016,2954826019,PT
+2954826020,2954826031,FR
+2954826032,2954826035,ES
+2954826036,2954826143,FR
+2954826144,2954826147,CZ
+2954826148,2954826159,FR
+2954826160,2954826163,ES
+2954826164,2954826471,FR
+2954826472,2954826475,GB
+2954826476,2954826759,FR
+2954826760,2954826763,ES
+2954826764,2954826775,FR
+2954826776,2954826779,ES
+2954826780,2954826815,FR
+2954826816,2954826879,GB
+2954826880,2954827007,FR
+2954827008,2954827135,ES
+2954827136,2954827599,FR
+2954827600,2954827615,BE
+2954827616,2954827647,NL
+2954827648,2954827799,FR
2954827800,2954827807,DE
-2954827808,2954829751,FR
+2954827808,2954827939,FR
+2954827940,2954827943,PT
+2954827944,2954828335,FR
+2954828336,2954828339,ES
+2954828340,2954828511,FR
+2954828512,2954828543,CZ
+2954828544,2954828847,FR
+2954828848,2954828863,GB
+2954828864,2954828975,FR
+2954828976,2954828979,GB
+2954828980,2954829007,FR
+2954829008,2954829023,IE
+2954829024,2954829407,FR
+2954829408,2954829423,ES
+2954829424,2954829623,FR
+2954829624,2954829631,ES
+2954829632,2954829647,GB
+2954829648,2954829679,FR
+2954829680,2954829695,NL
+2954829696,2954829711,ES
+2954829712,2954829739,FR
+2954829740,2954829743,GB
+2954829744,2954829751,FR
2954829752,2954829752,ES
2954829753,2954829759,FR
2954829760,2954829823,ES
2954829824,2954829843,FR
2954829844,2954829847,DE
-2954829848,2954830523,FR
+2954829848,2954829855,FI
+2954829856,2954830111,FR
+2954830112,2954830127,IE
+2954830128,2954830163,FR
+2954830164,2954830167,PT
+2954830168,2954830395,FR
+2954830396,2954830399,ES
+2954830400,2954830523,FR
2954830524,2954830527,DE
-2954830528,2954832159,FR
+2954830528,2954831247,FR
+2954831248,2954831251,ES
+2954831252,2954831787,FR
+2954831788,2954831791,CZ
+2954831792,2954831807,FR
+2954831808,2954831823,ES
+2954831824,2954832003,FR
+2954832004,2954832007,BE
+2954832008,2954832031,FR
+2954832032,2954832063,PL
+2954832064,2954832151,FR
+2954832152,2954832155,DE
+2954832156,2954832159,FR
2954832160,2954832167,PT
-2954832168,2954832343,FR
+2954832168,2954832255,FR
+2954832256,2954832287,GB
+2954832288,2954832343,FR
2954832344,2954832347,CH
-2954832348,2954833419,FR
+2954832348,2954832351,ES
+2954832352,2954832399,FR
+2954832400,2954832415,FI
+2954832416,2954832447,FR
+2954832448,2954832479,CZ
+2954832480,2954832607,FR
+2954832608,2954832639,PT
+2954832640,2954832767,FR
+2954832768,2954832771,DE
+2954832772,2954832843,FR
+2954832844,2954832847,GB
+2954832848,2954832891,FR
+2954832892,2954832895,ES
+2954832896,2954833343,FR
+2954833344,2954833375,GB
+2954833376,2954833419,FR
2954833420,2954833423,PL
-2954833424,2954835039,FR
+2954833424,2954833455,FR
+2954833456,2954833471,ES
+2954833472,2954833567,FR
+2954833568,2954833571,ES
+2954833572,2954833727,FR
+2954833728,2954833731,ES
+2954833732,2954833823,FR
+2954833824,2954833855,GB
+2954833856,2954833967,FR
+2954833968,2954833983,ES
+2954833984,2954834143,FR
+2954834144,2954834151,GB
+2954834152,2954834519,FR
+2954834520,2954834523,ES
+2954834524,2954834671,FR
+2954834672,2954834675,ES
+2954834676,2954834847,FR
+2954834848,2954834863,ES
+2954834864,2954835039,FR
2954835040,2954835043,DE
2954835044,2954835067,FR
2954835068,2954835071,FI
-2954835072,2954835451,FR
+2954835072,2954835295,FR
+2954835296,2954835299,ES
+2954835300,2954835419,FR
+2954835420,2954835423,GB
+2954835424,2954835443,FR
+2954835444,2954835447,ES
+2954835448,2954835451,FR
2954835452,2954835455,ES
-2954835456,2954835619,FR
+2954835456,2954835511,FR
+2954835512,2954835519,ES
+2954835520,2954835619,FR
2954835620,2954835620,ES
-2954835621,2954837071,FR
+2954835621,2954835647,FR
+2954835648,2954835655,ES
+2954835656,2954836963,FR
+2954836964,2954836967,IE
+2954836968,2954836983,FR
+2954836984,2954836991,PT
+2954836992,2954837071,FR
2954837072,2954837075,ES
-2954837076,2954837743,FR
+2954837076,2954837279,FR
+2954837280,2954837295,DE
+2954837296,2954837311,FR
+2954837312,2954837319,FI
+2954837320,2954837327,FR
+2954837328,2954837335,GB
+2954837336,2954837439,FR
+2954837440,2954837471,GB
+2954837472,2954837535,FR
+2954837536,2954837543,PT
+2954837544,2954837579,FR
+2954837580,2954837583,GB
+2954837584,2954837599,FR
+2954837600,2954837607,GB
+2954837608,2954837667,FR
+2954837668,2954837671,ES
+2954837672,2954837743,FR
2954837744,2954837751,CZ
-2954837752,2954837827,FR
+2954837752,2954837759,BE
+2954837760,2954837827,FR
2954837828,2954837831,DE
-2954837832,2954838103,FR
+2954837832,2954837867,FR
+2954837868,2954837871,ES
+2954837872,2954838103,FR
2954838104,2954838107,DE
-2954838108,2954838911,FR
+2954838108,2954838155,FR
+2954838156,2954838159,BE
+2954838160,2954838175,FR
+2954838176,2954838179,GB
+2954838180,2954838215,FR
+2954838216,2954838219,GB
+2954838220,2954838247,FR
+2954838248,2954838255,ES
+2954838256,2954838655,FR
+2954838656,2954838687,BE
+2954838688,2954838911,FR
2954838912,2954838915,DE
-2954838916,2954840255,FR
-2954840256,2954840447,GB
+2954838916,2954838991,FR
+2954838992,2954838995,DE
+2954838996,2954839071,FR
+2954839072,2954839087,LT
+2954839088,2954839111,FR
+2954839112,2954839119,ES
+2954839120,2954839243,FR
+2954839244,2954839247,ES
+2954839248,2954839267,FR
+2954839268,2954839271,ES
+2954839272,2954839319,FR
+2954839320,2954839327,GB
+2954839328,2954839527,FR
+2954839528,2954839535,GB
+2954839536,2954840095,FR
+2954840096,2954840103,ES
+2954840104,2954840255,FR
+2954840256,2954840381,GB
+2954840382,2954840382,BE
+2954840383,2954840447,GB
2954840448,2954840515,FR
2954840516,2954840519,NL
-2954840520,2954840927,FR
+2954840520,2954840611,FR
+2954840612,2954840615,GB
+2954840616,2954840927,FR
2954840928,2954840931,DE
-2954840932,2954841707,FR
+2954840932,2954841023,FR
+2954841024,2954841087,ES
+2954841088,2954841095,FR
+2954841096,2954841103,GB
+2954841104,2954841111,ES
+2954841112,2954841259,FR
+2954841260,2954841263,GB
+2954841264,2954841583,FR
+2954841584,2954841591,ES
+2954841592,2954841707,FR
2954841708,2954841711,NL
-2954841712,2954844147,FR
+2954841712,2954841851,FR
+2954841852,2954841855,ES
+2954841856,2954841999,FR
+2954842000,2954842015,LT
+2954842016,2954842075,FR
+2954842076,2954842079,GB
+2954842080,2954842111,FR
+2954842112,2954842143,FI
+2954842144,2954842175,FR
+2954842176,2954842239,BE
+2954842240,2954842243,ES
+2954842244,2954842247,FR
+2954842248,2954842251,ES
+2954842252,2954842375,FR
+2954842376,2954842383,ES
+2954842384,2954842451,FR
+2954842452,2954842455,CZ
+2954842456,2954842471,FR
+2954842472,2954842479,GB
+2954842480,2954843043,FR
+2954843044,2954843047,GB
+2954843048,2954843479,FR
+2954843480,2954843487,NL
+2954843488,2954843503,FR
+2954843504,2954843507,ES
+2954843508,2954843759,FR
+2954843760,2954843771,ES
+2954843772,2954844147,FR
2954844148,2954844151,DE
-2954844152,2954844192,FR
-2954844193,2954844193,NL
-2954844194,2954855507,FR
+2954844152,2954844191,FR
+2954844192,2954844223,NL
+2954844224,2954844239,DE
+2954844240,2954844263,FR
+2954844264,2954844267,IE
+2954844268,2954844603,FR
+2954844604,2954844607,CZ
+2954844608,2954844943,FR
+2954844944,2954844947,GB
+2954844948,2954844999,FR
+2954845000,2954845003,ES
+2954845004,2954845055,FR
+2954845056,2954845059,PT
+2954845060,2954845087,FR
+2954845088,2954845091,FI
+2954845092,2954845279,FR
+2954845280,2954845283,CZ
+2954845284,2954845287,GB
+2954845288,2954845291,PL
+2954845292,2954845363,FR
+2954845364,2954845367,ES
+2954845368,2954845951,FR
+2954845952,2954845967,ES
+2954845968,2954846107,FR
+2954846108,2954846111,ES
+2954846112,2954846119,FR
+2954846120,2954846123,IE
+2954846124,2954846139,FR
+2954846140,2954846143,ES
+2954846144,2954848101,FR
+2954848102,2954848102,VA
+2954848103,2954854415,FR
+2954854416,2954854431,GB
+2954854432,2954854607,FR
+2954854608,2954854615,ES
+2954854616,2954854751,FR
+2954854752,2954854783,PT
+2954854784,2954855011,FR
+2954855012,2954855015,CZ
+2954855016,2954855051,FR
+2954855052,2954855055,ES
+2954855056,2954855059,FR
+2954855060,2954855063,ES
+2954855064,2954855075,FR
+2954855076,2954855079,ES
+2954855080,2954855167,FR
+2954855168,2954855183,ES
+2954855184,2954855507,FR
2954855508,2954855511,DE
-2954855512,2954855807,FR
+2954855512,2954855515,FR
+2954855516,2954855519,ES
+2954855520,2954855527,FR
+2954855528,2954855535,ES
+2954855536,2954855647,FR
+2954855648,2954855651,CZ
+2954855652,2954855663,FR
+2954855664,2954855679,PT
+2954855680,2954855743,FR
+2954855744,2954855807,BE
2954855808,2954855871,DE
-2954855872,2954861867,FR
+2954855872,2954855879,FR
+2954855880,2954855887,ES
+2954855888,2954856179,FR
+2954856180,2954856183,ES
+2954856184,2954856447,FR
+2954856448,2954856511,ES
+2954856512,2954856559,FR
+2954856560,2954856563,ES
+2954856564,2954856631,FR
+2954856632,2954856635,GB
+2954856636,2954857119,FR
+2954857120,2954857135,PT
+2954857136,2954857583,FR
+2954857584,2954857599,ES
+2954857600,2954857823,FR
+2954857824,2954857855,ES
+2954857856,2954857983,IE
+2954857984,2954858031,FR
+2954858032,2954858035,GB
+2954858036,2954858043,FR
+2954858044,2954858047,PT
+2954858048,2954858079,FR
+2954858080,2954858095,ES
+2954858096,2954858431,FR
+2954858432,2954858439,GB
+2954858440,2954858495,FR
+2954858496,2954858751,ES
+2954858752,2954858827,FR
+2954858828,2954858831,GB
+2954858832,2954858911,FR
+2954858912,2954858943,ES
+2954858944,2954859027,FR
+2954859028,2954859031,PT
+2954859032,2954859043,FR
+2954859044,2954859047,ES
+2954859048,2954859315,FR
+2954859316,2954859319,ES
+2954859320,2954859323,FR
+2954859324,2954859327,ES
+2954859328,2954859455,FR
+2954859456,2954859471,DE
+2954859472,2954859871,FR
+2954859872,2954859903,ES
+2954859904,2954859959,FR
+2954859960,2954859963,ES
+2954859964,2954860459,FR
+2954860460,2954860463,GB
+2954860464,2954861195,FR
+2954861196,2954861199,CZ
+2954861200,2954861651,FR
+2954861652,2954861655,GB
+2954861656,2954861763,FR
+2954861764,2954861767,GB
+2954861768,2954861867,FR
2954861868,2954861871,CZ
2954861872,2954861875,FR
2954861876,2954861879,CH
-2954861880,2954867041,FR
+2954861880,2954861959,FR
+2954861960,2954861967,GB
+2954861968,2954861975,ES
+2954861976,2954861987,FR
+2954861988,2954861991,BE
+2954861992,2954862079,FR
+2954862080,2954862095,ES
+2954862096,2954862287,FR
+2954862288,2954862303,LT
+2954862304,2954862415,FR
+2954862416,2954862419,ES
+2954862420,2954862479,FR
+2954862480,2954862495,ES
+2954862496,2954865663,FR
+2954865664,2954865919,ES
+2954865920,2954867041,FR
2954867042,2954867043,PT
-2954867044,2954874655,FR
+2954867044,2954870799,FR
+2954870800,2954870803,ES
+2954870804,2954870843,FR
+2954870844,2954870847,ES
+2954870848,2954870903,FR
+2954870904,2954870907,ES
+2954870908,2954871615,FR
+2954871616,2954871623,BE
+2954871624,2954871679,FR
+2954871680,2954871695,FI
+2954871696,2954871759,FR
+2954871760,2954871775,PL
+2954871776,2954871807,FR
+2954871808,2954871823,ES
+2954871824,2954871955,FR
+2954871956,2954871959,PT
+2954871960,2954871983,FR
+2954871984,2954871999,PT
+2954872000,2954872331,FR
+2954872332,2954872335,GB
+2954872336,2954872607,FR
+2954872608,2954872639,ES
+2954872640,2954872679,FR
+2954872680,2954872687,ES
+2954872688,2954873351,FR
+2954873352,2954873355,GB
+2954873356,2954873639,FR
+2954873640,2954873647,ES
+2954873648,2954873695,FR
+2954873696,2954873727,FI
+2954873728,2954873839,FR
+2954873840,2954873847,ES
+2954873848,2954873879,FR
+2954873880,2954873887,PT
+2954873888,2954873919,FR
+2954873920,2954873983,IE
+2954873984,2954874111,GB
+2954874112,2954874127,FR
+2954874128,2954874135,ES
+2954874136,2954874351,FR
+2954874352,2954874355,ES
+2954874356,2954874415,FR
+2954874416,2954874419,GB
+2954874420,2954874431,FR
+2954874432,2954874447,GB
+2954874448,2954874527,FR
+2954874528,2954874559,FI
+2954874560,2954874655,FR
2954874656,2954874663,DE
-2954874664,2954875071,FR
+2954874664,2954874943,FR
+2954874944,2954874975,ES
+2954874976,2954875071,FR
2954875072,2954875075,DE
-2954875076,2954877103,FR
+2954875076,2954875079,BE
+2954875080,2954875135,FR
+2954875136,2954875167,GB
+2954875168,2954875467,FR
+2954875468,2954875471,GB
+2954875472,2954875583,FR
+2954875584,2954875587,ES
+2954875588,2954875711,FR
+2954875712,2954875775,DE
+2954875776,2954875879,FR
+2954875880,2954875883,ES
+2954875884,2954875891,FR
+2954875892,2954875895,ES
+2954875896,2954875967,FR
+2954875968,2954875999,FI
+2954876000,2954876043,FR
+2954876044,2954876047,GB
+2954876048,2954876247,FR
+2954876248,2954876255,ES
+2954876256,2954876351,FR
+2954876352,2954876383,ES
+2954876384,2954876559,FR
+2954876560,2954876575,LT
+2954876576,2954876655,FR
+2954876656,2954876663,BE
+2954876664,2954876871,FR
+2954876872,2954876875,ES
+2954876876,2954876887,FR
+2954876888,2954876891,ES
+2954876892,2954877007,FR
+2954877008,2954877023,CZ
+2954877024,2954877103,FR
2954877104,2954877107,PL
-2954877108,2954887167,FR
+2954877108,2954877163,FR
+2954877164,2954877167,ES
+2954877168,2954877523,FR
+2954877524,2954877527,ES
+2954877528,2954877535,PT
+2954877536,2954877727,FR
+2954877728,2954877743,IE
+2954877744,2954877759,FR
+2954877760,2954877775,CZ
+2954877776,2954877819,FR
+2954877820,2954877823,ES
+2954877824,2954877967,FR
+2954877968,2954877983,PT
+2954877984,2954878143,FR
+2954878144,2954878207,ES
+2954878208,2954878271,FR
+2954878272,2954878335,IT
+2954878336,2954878471,FR
+2954878472,2954878475,GB
+2954878476,2954878607,FR
+2954878608,2954878623,FI
+2954878624,2954878687,FR
+2954878688,2954878691,BE
+2954878692,2954878695,FR
+2954878696,2954878703,IE
+2954878704,2954878855,FR
+2954878856,2954878863,IE
+2954878864,2954878899,FR
+2954878900,2954878903,GB
+2954878904,2954878907,FR
+2954878908,2954878911,ES
+2954878912,2954878931,FR
+2954878932,2954878935,GB
+2954878936,2954887167,FR
2954887168,2954891263,UA
2954891264,2954895359,IT
2954895360,2954897407,RU
@@ -73800,9 +85437,10 @@
2954911744,2954913791,US
2954913792,2954915839,IE
2954915840,2954918911,US
-2954918912,2954919167,IE
+2954918912,2954919167,NL
2954919168,2954919295,US
-2954919296,2954919935,IE
+2954919296,2954919423,NL
+2954919424,2954919935,IE
2954919936,2954928127,RU
2954928128,2954932223,PL
2954932224,2954936319,RU
@@ -73851,9 +85489,14 @@
2956472320,2956474367,RU
2956474368,2956476415,GB
2956476416,2956492799,ES
-2956492800,2956496895,CH
+2956492800,2956496895,IT
2956496896,2956500991,IR
-2956500992,2956506111,NL
+2956500992,2956503039,NL
+2956503040,2956504063,CY
+2956504064,2956504319,CH
+2956504320,2956504575,NL
+2956504576,2956504831,CH
+2956504832,2956506111,NL
2956506112,2956506367,GB
2956506368,2956509183,NL
2956509184,2956517375,GB
@@ -73879,11 +85522,20 @@
2956593152,2956595199,ES
2956595200,2956597247,PL
2956597248,2956599295,NL
-2956599296,2956607487,RU
+2956599296,2956602367,RU
+2956602368,2956602623,NL
+2956602624,2956602879,SE
+2956602880,2956603135,GB
+2956603136,2956604671,RU
+2956604672,2956604927,NL
+2956604928,2956605183,RU
+2956605184,2956605439,NL
+2956605440,2956605695,DE
+2956605696,2956607487,RU
2956607488,2956611583,PS
2956611584,2956613631,IT
+2956614656,2956614911,GB
2956614912,2956615167,NL
-2956615168,2956615423,FR
2956615680,2956623871,GB
2956623872,2956656639,GR
2956656640,2956722175,RU
@@ -73897,8 +85549,7 @@
2956826624,2956828671,HR
2956828672,2956833279,BA
2956833280,2956833791,AT
-2956833792,2956835839,BA
-2956835840,2956836863,AT
+2956833792,2956836863,BA
2956836864,2956853247,SK
2956853248,2956865535,HR
2956865536,2956869631,IT
@@ -73920,7 +85571,9 @@
2957049856,2957058047,PS
2957058048,2957066239,RU
2957066240,2957068287,GB
-2957068288,2957070335,LU
+2957068288,2957069203,FR
+2957069204,2957069205,LU
+2957069206,2957070335,FR
2957070336,2957074431,IT
2957074432,2957082623,RU
2957082624,2957090815,DE
@@ -73931,11 +85584,59 @@
2957193216,2957195263,RU
2957195264,2957197311,PS
2957197312,2957201407,IR
-2957201408,2957202679,US
+2957201408,2957201423,GB
+2957202432,2957202679,NL
2957202680,2957202680,PT
-2957202681,2957203127,US
-2957203128,2957203131,XK
-2957203132,2957203199,US
+2957202681,2957202687,NL
+2957202688,2957202943,GB
+2957202945,2957202947,AL
+2957202948,2957202951,AD
+2957202952,2957202955,AR
+2957202956,2957202959,AU
+2957202960,2957202963,BY
+2957202964,2957202967,BE
+2957202968,2957202971,BA
+2957202972,2957202975,BR
+2957202976,2957202979,BG
+2957202980,2957202983,CL
+2957202984,2957202987,CN
+2957202988,2957202991,CO
+2957202992,2957202995,CR
+2957202996,2957202999,HR
+2957203000,2957203003,CY
+2957203004,2957203007,CZ
+2957203008,2957203011,DK
+2957203012,2957203015,EG
+2957203016,2957203019,EE
+2957203020,2957203023,FJ
+2957203024,2957203027,FI
+2957203028,2957203031,FR
+2957203032,2957203035,GE
+2957203036,2957203039,DE
+2957203040,2957203043,GR
+2957203044,2957203047,HK
+2957203048,2957203051,HU
+2957203052,2957203055,IS
+2957203056,2957203059,IN
+2957203060,2957203063,IE
+2957203064,2957203067,IL
+2957203068,2957203071,IT
+2957203072,2957203075,JP
+2957203076,2957203079,KR
+2957203080,2957203083,LV
+2957203084,2957203087,LI
+2957203088,2957203091,LT
+2957203092,2957203095,LU
+2957203096,2957203099,MK
+2957203100,2957203103,MY
+2957203104,2957203107,MX
+2957203108,2957203111,NL
+2957203112,2957203115,NZ
+2957203116,2957203119,NO
+2957203120,2957203123,US
+2957203124,2957203127,MT
+2957203128,2957203131,RS
+2957203132,2957203196,GB
2957203200,2957203455,GB
2957203456,2957205503,FR
2957205504,2957213695,PS
@@ -73954,11 +85655,7 @@
2957240320,2957242367,BG
2957242368,2957244415,RU
2957244416,2957246463,HU
-2957246464,2957336575,SE
-2957336576,2957344767,KZ
-2957344768,2957352959,SE
-2957352960,2957361151,KZ
-2957361152,2957508607,SE
+2957246464,2957508607,SE
2957508608,2957574143,FI
2957574144,2957639679,GE
2957639680,2957641727,GB
@@ -73983,41 +85680,7 @@
2957901824,2958032895,PT
2958032896,2958557183,ES
2958557184,2958819327,TR
-2958819328,2958821375,GR
-2958821376,2958822143,CY
-2958822144,2958822271,GR
-2958822272,2958822399,CY
-2958822400,2958825471,GR
-2958825472,2958827775,CY
-2958827776,2958828031,GR
-2958828032,2958828543,CY
-2958828544,2958832639,GR
-2958832640,2958833151,CY
-2958833152,2958849023,GR
-2958849024,2958849535,CY
-2958849536,2958850047,GR
-2958850048,2958850559,CY
-2958850560,2958851071,GR
-2958851072,2958854143,CY
-2958854144,2958855167,GR
-2958855168,2958855679,CY
-2958855680,2958855935,GR
-2958855936,2958856191,CY
-2958856192,2958857215,GR
-2958857216,2958857727,CY
-2958857728,2958857983,GR
-2958857984,2958859519,CY
-2958859520,2958859647,GR
-2958859648,2958859775,CY
-2958859776,2958862847,GR
-2958862848,2958863103,CY
-2958863104,2958863359,GR
-2958863360,2958863871,CY
-2958863872,2958864383,GR
-2958864384,2958865407,CY
-2958865408,2958866943,GR
-2958866944,2958867199,CY
-2958867200,2958884863,GR
+2958819328,2958884863,GR
2958884864,2958950399,FI
2958950400,2959081471,DE
2959081472,2959089663,RU
@@ -74028,7 +85691,6 @@
2959101952,2959103999,RU
2959104000,2959106047,RO
2959106048,2959114239,AT
-2959114240,2959118335,RU
2959118336,2959120383,PL
2959120384,2959122431,AT
2959122432,2959126527,PL
@@ -74049,6 +85711,7 @@
2959179776,2959181823,RU
2959181824,2959183871,PL
2959183872,2959185919,RO
+2959185920,2959186943,UA
2959186944,2959187455,CY
2959187456,2959187711,AT
2959187712,2959187967,FR
@@ -74057,7 +85720,7 @@
2959208448,2959210495,CZ
2959210496,2959212543,PL
2959212544,2959220735,UA
-2959224832,2959226879,UA
+2959224832,2959226879,RU
2959226880,2959228927,RO
2959228928,2959237119,UA
2959237120,2959241215,CZ
@@ -74079,7 +85742,6 @@
2959308879,2959310847,UA
2959310848,2959343615,RU
2959343616,2959351807,UA
-2959351808,2959353855,DE
2959353856,2959355903,RU
2959355904,2959357951,KZ
2959357952,2959359999,UA
@@ -74104,7 +85766,6 @@
2959456256,2959466495,UA
2959466496,2959474687,RU
2959474688,2959491071,UA
-2959491072,2959493119,NL
2959493120,2959495167,CZ
2959495168,2959499263,PL
2959499264,2959505407,SK
@@ -74199,7 +85860,6 @@
2960024576,2960024831,SA
2960025088,2960025599,UA
2960025600,2960025855,NL
-2960025856,2960026111,FR
2960026112,2960026623,RO
2960026624,2960027647,IR
2960027648,2960028671,RO
@@ -74238,11 +85898,10 @@
2960158720,2960160767,PL
2960160768,2960162815,UA
2960162816,2960166911,RU
-2960166912,2960168959,CZ
-2960168960,2960175103,RU
+2960166912,2960171007,EE
+2960171008,2960175103,RU
2960175104,2960179199,SK
-2960179200,2960187391,IR
-2960187392,2960211967,RU
+2960179200,2960211967,RU
2960220160,2960224255,RO
2960224256,2960228351,RU
2960228352,2960232447,TJ
@@ -74255,7 +85914,7 @@
2960273408,2960275455,RU
2960275456,2960277503,RO
2960277504,2960285695,RU
-2960285696,2960289791,GB
+2960285696,2960289791,MC
2960289792,2960320511,RU
2960320512,2960322559,PL
2960322560,2960326655,CZ
@@ -74342,7 +86001,7 @@
2960736256,2960738303,ES
2960738304,2960740351,UA
2960740352,2960742399,PL
-2960742400,2960744447,NO
+2960742400,2960744447,US
2960744448,2960748543,RO
2960748544,2960752639,PL
2960752640,2960769023,RU
@@ -74362,7 +86021,6 @@
2960836608,2960838655,RU
2960839168,2960839679,IR
2960839680,2960846847,PL
-2960846848,2960847871,UA
2960847872,2960848383,PL
2960848384,2960848639,GB
2960848640,2960850943,RU
@@ -74373,7 +86031,7 @@
2960863744,2960863999,GB
2960864000,2960864255,DE
2960864256,2960864767,GB
-2960864768,2960865279,DE
+2960864768,2960865279,AT
2960865280,2960865535,RU
2960865536,2960865791,HR
2960865792,2960866303,GB
@@ -74388,7 +86046,8 @@
2960907776,2960908031,GB
2960908032,2960908287,PL
2960908288,2960916479,KG
-2960916480,2960924671,UA
+2960916480,2960916480,RU
+2960916481,2960924671,UA
2960932864,2960933887,IR
2960933888,2960934655,GB
2960934656,2960934911,NL
@@ -74434,22 +86093,23 @@
2961062912,2961063935,UA
2961063936,2961064191,DE
2961064192,2961064447,NL
-2961064448,2961064703,RU
+2961064448,2961064703,US
2961064704,2961064959,DE
2961064960,2961065215,HK
2961065216,2961065471,AU
2961065472,2961065727,SE
2961065728,2961066239,HK
-2961066240,2961067519,DE
+2961066240,2961066495,DE
+2961066496,2961066751,BG
+2961066752,2961067519,DE
2961067520,2961067775,GB
2961067776,2961068543,DE
2961068544,2961068799,NL
2961068800,2961069055,IT
-2961069056,2961069311,DE
+2961069056,2961069311,SE
2961069312,2961069567,NL
2961069568,2961069823,SE
-2961069824,2961070079,US
-2961070080,2961072127,DE
+2961069824,2961072127,US
2961072128,2961088511,UA
2961088512,2961088767,SE
2961088768,2961089023,RU
@@ -74462,7 +86122,9 @@
2961096704,2961097471,GB
2961097472,2961102847,RO
2961102848,2961103871,DE
-2961103872,2961104895,RO
+2961103872,2961104383,RO
+2961104384,2961104639,PL
+2961104640,2961104895,RO
2961104896,2961106943,GB
2961106944,2961107967,NL
2961107968,2961108991,RO
@@ -74485,7 +86147,7 @@
2967277568,2967281663,IR
2967281664,2967283711,PT
2967283712,2967285759,DE
-2967285760,2967287807,UA
+2967285760,2967287807,IT
2967287808,2967289855,GB
2967289856,2967291903,IR
2967291904,2967293951,RS
@@ -74514,7 +86176,7 @@
2967421952,2967422975,US
2967422976,2967425023,KZ
2967425024,2967427071,IR
-2967427072,2967429119,BG
+2967427072,2967429119,IT
2967429120,2967430143,RO
2967430144,2967430302,KZ
2967430303,2967430303,US
@@ -74522,21 +86184,20 @@
2967431168,2967432191,US
2967432192,2967432447,GB
2967432448,2967432959,RO
-2967432960,2967433215,CH
-2967433216,2967433727,BZ
+2967432960,2967433727,CH
2967433728,2967434239,RO
2967434240,2967435007,GB
2967435008,2967435263,IE
2967435264,2967437311,RO
2967437312,2967439359,PL
-2967439360,2967441407,RO
+2967439360,2967441407,LT
2967441408,2967445503,BG
2967445504,2967446015,GB
2967446016,2967446527,RO
2967446528,2967446783,IT
2967446784,2967447039,DE
2967447040,2967448575,RO
-2967448576,2967450623,GB
+2967448576,2967450623,US
2967450624,2967450879,RO
2967450880,2967451135,DE
2967451136,2967451647,RO
@@ -74544,7 +86205,7 @@
2967452672,2967453183,RO
2967453184,2967453439,GB
2967453440,2967453695,RO
-2967453696,2967470079,GB
+2967468032,2967470079,US
2967470080,2967601151,SA
2967601152,2967633919,HU
2967633920,2967666687,RU
@@ -74560,18 +86221,17 @@
2967732224,2967994367,IL
2967994368,2968584191,TR
2968584192,2968600575,HU
-2968600576,2968602623,IQ
+2968600576,2968602623,JO
2968602624,2968604671,PL
2968604672,2968608767,IQ
2968608768,2968610815,RU
2968610816,2968612863,UA
-2968612864,2968614911,IL
+2968612864,2968614143,IL
+2968614144,2968614911,US
2968614912,2968616959,FR
2968616960,2968625151,UA
2968625152,2968629247,DE
-2968629248,2968629759,LB
-2968629760,2968630015,BH
-2968630016,2968631295,LB
+2968629248,2968631295,BH
2968631296,2968633343,SA
2968633344,2968643583,RU
2968643584,2968645631,NO
@@ -74597,19 +86257,7 @@
2984247296,2984935423,MX
2984935424,2984936447,AR
2984936448,2984937471,BR
-2984937472,2984937503,HN
-2984937504,2984937511,US
-2984937512,2984937607,HN
-2984937608,2984937615,US
-2984937616,2984938079,HN
-2984938080,2984938095,US
-2984938096,2984938239,HN
-2984938240,2984938255,US
-2984938256,2984938759,HN
-2984938760,2984938767,CA
-2984938768,2984938847,HN
-2984938848,2984938863,CA
-2984938864,2984939519,HN
+2984937472,2984939519,HN
2984939520,2984951807,BR
2984951808,2984968191,EC
2984968192,2985033727,BR
@@ -74622,7 +86270,8 @@
2987401216,2987405311,LT
2987405312,2987409407,DE
2987409408,2987413503,NO
-2987413504,2987417599,UA
+2987413504,2987415807,UA
+2987415808,2987417599,RU
2987417600,2987425791,PL
2987425792,2987429887,BG
2987429888,2987433983,RU
@@ -74635,7 +86284,7 @@
2987458560,2987462655,CZ
2987462656,2987466751,RS
2987466752,2987470847,GB
-2987470848,2987474943,DE
+2987470848,2987474943,IQ
2987474944,2987479039,GB
2987479040,2987487231,CZ
2987487232,2987491327,HR
@@ -74645,13 +86294,12 @@
2987500200,2987500207,AQ
2987500208,2987503615,MD
2987503616,2987511807,RU
-2987515904,2987519999,DE
+2987515904,2987516159,US
+2987516160,2987517951,DE
+2987517952,2987519999,US
2987520000,2987524095,GB
2987524096,2987528191,RU
-2987528192,2987528959,US
-2987528960,2987530751,NL
-2987530752,2987531775,US
-2987531776,2987532287,NL
+2987528192,2987532287,US
2987532288,2987536383,MD
2987536384,2987540479,FR
2987540480,2987544575,SK
@@ -74659,7 +86307,8 @@
2987548672,2987552767,RU
2987552768,2987556863,GB
2987556864,2987560959,NL
-2987560960,2987565055,DE
+2987560960,2987560967,CH
+2987560968,2987565055,DE
2987565056,2987569151,AT
2987569152,2987573247,FR
2987573248,2987577343,TR
@@ -74669,8 +86318,7 @@
2987593728,2987597823,LT
2987597824,2987601919,ES
2987601920,2987606015,IS
-2987606016,2987610111,DE
-2987610112,2987614207,RU
+2987606016,2987614207,DE
2987614208,2987618303,PL
2987618304,2987622399,NL
2987622400,2987626495,FR
@@ -74736,7 +86384,8 @@
2987767808,2987769855,CZ
2987769856,2987771903,FI
2987771904,2987773951,IT
-2987773952,2987775999,FR
+2987773952,2987775487,FR
+2987775488,2987775999,GB
2987776000,2987778047,NL
2987778048,2987780095,CH
2987780096,2987782143,GB
@@ -74745,14 +86394,17 @@
2987786240,2987788287,FR
2987788288,2987789052,TR
2987789053,2987789054,US
-2987789055,2987790335,TR
+2987789055,2987789055,TR
+2987789056,2987789311,GB
+2987789312,2987790335,TR
2987790336,2987792383,GB
2987792384,2987794431,CH
2987794432,2987796479,IQ
2987796480,2987800575,RU
2987800576,2987802623,NL
2987802624,2987804671,CH
-2987804672,2987806719,IR
+2987804672,2987806463,IR
+2987806464,2987806719,TR
2987806720,2987808767,NL
2987808768,2987810815,RU
2987810816,2987812863,NO
@@ -74810,190 +86462,1095 @@
2988179456,2988411647,SE
2988411648,2988411775,DE
2988411776,2988441599,SE
-2988441600,2988443263,FR
+2988441600,2988441839,FR
+2988441840,2988441843,IE
+2988441844,2988441939,FR
+2988441940,2988441943,ES
+2988441944,2988442075,FR
+2988442076,2988442079,ES
+2988442080,2988442207,FR
+2988442208,2988442239,ES
+2988442240,2988442511,FR
+2988442512,2988442519,ES
+2988442520,2988442719,FR
+2988442720,2988442751,FI
+2988442752,2988442847,FR
+2988442848,2988442863,IT
+2988442864,2988442999,FR
+2988443000,2988443007,GB
+2988443008,2988443023,FR
+2988443024,2988443027,CZ
+2988443028,2988443103,FR
+2988443104,2988443119,GB
+2988443120,2988443263,FR
2988443264,2988443295,ES
-2988443296,2988444208,FR
+2988443296,2988443439,FR
+2988443440,2988443443,CZ
+2988443444,2988443543,FR
+2988443544,2988443547,ES
+2988443548,2988443671,FR
+2988443672,2988443675,ES
+2988443676,2988443687,FR
+2988443688,2988443695,ES
+2988443696,2988443703,PT
+2988443704,2988443719,FR
+2988443720,2988443727,CZ
+2988443728,2988443895,FR
+2988443896,2988443903,BE
+2988443904,2988444115,FR
+2988444116,2988444119,IT
+2988444120,2988444208,FR
2988444209,2988444209,FI
-2988444210,2988444671,FR
+2988444210,2988444223,FR
+2988444224,2988444231,BE
+2988444232,2988444239,FI
+2988444240,2988444247,CZ
+2988444248,2988444255,PL
+2988444256,2988444671,FR
2988444672,2988444679,ES
-2988444680,2988446719,FR
+2988444680,2988444719,FR
+2988444720,2988444735,ES
+2988444736,2988444739,GB
+2988444740,2988444815,FR
+2988444816,2988444831,ES
+2988444832,2988445223,FR
+2988445224,2988445231,ES
+2988445232,2988446175,FR
+2988446176,2988446207,FI
+2988446208,2988446399,FR
+2988446400,2988446431,PL
+2988446432,2988446719,FR
2988446720,2988446723,DE
-2988446724,2988446871,FR
-2988446872,2988446872,IE
-2988446873,2988448607,FR
+2988446724,2988446863,FR
+2988446864,2988446879,IE
+2988446880,2988447103,FR
+2988447104,2988447167,GB
+2988447168,2988447415,FR
+2988447416,2988447423,LT
+2988447424,2988448543,FR
+2988448544,2988448547,GB
+2988448548,2988448607,FR
2988448608,2988448639,ES
2988448640,2988448799,FR
2988448800,2988448815,ES
-2988448816,2988451875,FR
-2988451876,2988451876,BE
-2988451877,2988452140,FR
-2988452141,2988452141,BE
-2988452142,2988454642,FR
-2988454643,2988454643,GB
-2988454644,2988455679,FR
-2988455680,2988457983,GB
-2988457984,2988459119,FR
+2988448816,2988449127,FR
+2988449128,2988449135,ES
+2988449136,2988449207,FR
+2988449208,2988449215,ES
+2988449216,2988449327,FR
+2988449328,2988449331,PL
+2988449332,2988449631,FR
+2988449632,2988449639,ES
+2988449640,2988451839,FR
+2988451840,2988453887,BE
+2988453888,2988457983,GB
+2988457984,2988458063,FR
+2988458064,2988458067,ES
+2988458068,2988458279,FR
+2988458280,2988458283,ES
+2988458284,2988458331,FR
+2988458332,2988458335,GB
+2988458336,2988459087,FR
+2988459088,2988459103,GB
+2988459104,2988459119,FR
2988459120,2988459127,IT
2988459128,2988459135,PL
-2988459136,2988459687,FR
+2988459136,2988459167,FR
+2988459168,2988459171,IE
+2988459172,2988459179,FR
+2988459180,2988459183,ES
+2988459184,2988459231,FR
+2988459232,2988459235,GB
+2988459236,2988459495,FR
+2988459496,2988459503,ES
+2988459504,2988459535,FR
+2988459536,2988459539,ES
+2988459540,2988459599,FR
+2988459600,2988459603,GB
+2988459604,2988459619,FR
+2988459620,2988459623,GB
+2988459624,2988459647,FR
+2988459648,2988459679,GB
+2988459680,2988459687,FR
2988459688,2988459691,PL
-2988459692,2988463999,FR
+2988459692,2988459695,FR
+2988459696,2988459699,IE
+2988459700,2988459715,FR
+2988459716,2988459719,FI
+2988459720,2988459967,FR
+2988459968,2988459999,ES
+2988460000,2988460131,FR
+2988460132,2988460135,CZ
+2988460136,2988460143,FR
+2988460144,2988460147,GB
+2988460148,2988460151,FR
+2988460152,2988460159,ES
+2988460160,2988460575,FR
+2988460576,2988460591,PT
+2988460592,2988460607,GB
+2988460608,2988460651,FR
+2988460652,2988460655,ES
+2988460656,2988460735,FR
+2988460736,2988460751,PT
+2988460752,2988460863,FR
+2988460864,2988460895,CZ
+2988460896,2988461263,FR
+2988461264,2988461279,ES
+2988461280,2988461307,FR
+2988461308,2988461311,ES
+2988461312,2988461423,FR
+2988461424,2988461439,IE
+2988461440,2988461495,FR
+2988461496,2988461499,ES
+2988461500,2988461703,FR
+2988461704,2988461707,GB
+2988461708,2988462331,FR
+2988462332,2988462335,ES
+2988462336,2988462747,FR
+2988462748,2988462751,ES
+2988462752,2988463111,FR
+2988463112,2988463119,ES
+2988463120,2988463143,FR
+2988463144,2988463151,ES
+2988463152,2988463223,FR
+2988463224,2988463227,ES
+2988463228,2988463747,FR
+2988463748,2988463751,GB
+2988463752,2988463759,LT
+2988463760,2988463915,FR
+2988463916,2988463919,ES
+2988463920,2988463999,FR
2988464000,2988464007,IE
2988464008,2988464015,LT
-2988464016,2988464359,FR
+2988464016,2988464019,PT
+2988464020,2988464023,FR
+2988464024,2988464027,GB
+2988464028,2988464271,FR
+2988464272,2988464275,ES
+2988464276,2988464355,FR
+2988464356,2988464359,BE
2988464360,2988464360,NL
-2988464361,2988465191,FR
+2988464361,2988464519,FR
+2988464520,2988464527,DE
+2988464528,2988464615,FR
+2988464616,2988464619,IE
+2988464620,2988464623,FR
+2988464624,2988464627,ES
+2988464628,2988464787,FR
+2988464788,2988464791,ES
+2988464792,2988465191,FR
2988465192,2988465195,PL
-2988465196,2988466059,FR
+2988465196,2988465215,FR
+2988465216,2988465219,ES
+2988465220,2988465407,FR
+2988465408,2988465423,CH
+2988465424,2988465543,FR
+2988465544,2988465547,CZ
+2988465548,2988465551,FR
+2988465552,2988465563,ES
+2988465564,2988465575,FR
+2988465576,2988465583,ES
+2988465584,2988466059,FR
2988466060,2988466063,CZ
-2988466064,2988466098,FR
-2988466099,2988466099,BE
-2988466100,2988478579,FR
+2988466064,2988466087,FR
+2988466088,2988466095,PT
+2988466096,2988466111,BE
+2988466112,2988474535,FR
+2988474536,2988474543,GB
+2988474544,2988474687,FR
+2988474688,2988474703,FI
+2988474704,2988474959,FR
+2988474960,2988474975,FI
+2988474976,2988475215,FR
+2988475216,2988475223,ES
+2988475224,2988475343,FR
+2988475344,2988475351,ES
+2988475352,2988476415,FR
+2988476416,2988478463,IT
+2988478464,2988478579,FR
2988478580,2988478583,DE
2988478584,2988478587,FR
2988478588,2988478591,DE
-2988478592,2988479727,FR
+2988478592,2988478719,FR
+2988478720,2988478751,CZ
+2988478752,2988478795,FR
+2988478796,2988478799,ES
+2988478800,2988479003,FR
+2988479004,2988479007,ES
+2988479008,2988479155,FR
+2988479156,2988479159,ES
+2988479160,2988479343,FR
+2988479344,2988479359,GB
+2988479360,2988479603,FR
+2988479604,2988479607,GB
+2988479608,2988479727,FR
2988479728,2988479735,DE
2988479736,2988479791,FR
2988479792,2988479807,GB
2988479808,2988479903,FR
2988479904,2988479935,PL
-2988479936,2988480077,FR
-2988480078,2988480078,ES
-2988480079,2988480207,FR
+2988479936,2988480011,FR
+2988480012,2988480015,GB
+2988480016,2988480063,FR
+2988480064,2988480095,ES
+2988480096,2988480207,FR
2988480208,2988480223,ES
-2988480224,2988482111,FR
+2988480224,2988480439,FR
+2988480440,2988480443,NL
+2988480444,2988480447,GB
+2988480448,2988480799,FR
+2988480800,2988480803,GB
+2988480804,2988480927,FR
+2988480928,2988480959,ES
+2988480960,2988481059,FR
+2988481060,2988481063,FI
+2988481064,2988481343,FR
+2988481344,2988481407,NL
+2988481408,2988481695,FR
+2988481696,2988481711,ES
+2988481712,2988481743,FR
+2988481744,2988481759,ES
+2988481760,2988482095,FR
+2988482096,2988482099,GB
+2988482100,2988482103,FR
+2988482104,2988482111,FI
2988482112,2988482143,DE
-2988482144,2988482239,FR
-2988482240,2988482255,GB
-2988482256,2988482575,FR
+2988482144,2988482159,FR
+2988482160,2988482163,ES
+2988482164,2988482167,FR
+2988482168,2988482175,ES
+2988482176,2988482235,FR
+2988482236,2988482255,GB
+2988482256,2988482311,FR
+2988482312,2988482315,GB
+2988482316,2988482411,FR
+2988482412,2988482415,PT
+2988482416,2988482575,FR
2988482576,2988482579,CZ
-2988482580,2988484339,FR
+2988482580,2988482799,FR
+2988482800,2988482807,ES
+2988482808,2988482863,FR
+2988482864,2988482871,ES
+2988482872,2988482875,PT
+2988482876,2988482879,CZ
+2988482880,2988482883,PL
+2988482884,2988483027,FR
+2988483028,2988483031,ES
+2988483032,2988483111,FR
+2988483112,2988483115,ES
+2988483116,2988483119,FR
+2988483120,2988483127,ES
+2988483128,2988483159,FR
+2988483160,2988483167,ES
+2988483168,2988483175,FR
+2988483176,2988483183,PL
+2988483184,2988483279,FR
+2988483280,2988483283,ES
+2988483284,2988483375,FR
+2988483376,2988483379,GB
+2988483380,2988483595,FR
+2988483596,2988483599,FI
+2988483600,2988483967,FR
+2988483968,2988483983,GB
+2988483984,2988484047,FR
+2988484048,2988484051,ES
+2988484052,2988484127,FR
+2988484128,2988484131,PT
+2988484132,2988484339,FR
2988484340,2988484343,PT
-2988484344,2988484831,FR
+2988484344,2988484399,FR
+2988484400,2988484403,PT
+2988484404,2988484831,FR
2988484832,2988484847,GB
-2988484848,2988487071,FR
+2988484848,2988484863,FR
+2988484864,2988484879,NL
+2988484880,2988484883,GB
+2988484884,2988484891,FR
+2988484892,2988484895,GB
+2988484896,2988485455,FR
+2988485456,2988485471,GB
+2988485472,2988485503,FR
+2988485504,2988485519,GB
+2988485520,2988485563,FR
+2988485564,2988485567,ES
+2988485568,2988485631,FR
+2988485632,2988485663,ES
+2988485664,2988485799,FR
+2988485800,2988485803,PT
+2988485804,2988486083,FR
+2988486084,2988486087,PT
+2988486088,2988486095,FR
+2988486096,2988486099,GB
+2988486100,2988486135,FR
+2988486136,2988486139,ES
+2988486140,2988486195,FR
+2988486196,2988486199,PT
+2988486200,2988486323,FR
+2988486324,2988486327,PT
+2988486328,2988486335,FR
+2988486336,2988486343,ES
+2988486344,2988486351,FR
+2988486352,2988486367,ES
+2988486368,2988486607,FR
+2988486608,2988486615,FI
+2988486616,2988486623,ES
+2988486624,2988486679,FR
+2988486680,2988486687,ES
+2988486688,2988486711,FR
+2988486712,2988486719,IE
+2988486720,2988486747,FR
+2988486748,2988486751,GB
+2988486752,2988486887,FR
+2988486888,2988486891,PT
+2988486892,2988487043,FR
+2988487044,2988487047,PT
+2988487048,2988487071,FR
2988487072,2988487075,ES
-2988487076,2988487303,FR
+2988487076,2988487095,FR
+2988487096,2988487099,ES
+2988487100,2988487103,GB
+2988487104,2988487303,FR
2988487304,2988487311,NL
-2988487312,2988487919,FR
+2988487312,2988487375,FR
+2988487376,2988487383,ES
+2988487384,2988487839,FR
+2988487840,2988487871,CZ
+2988487872,2988487919,FR
2988487920,2988487923,DE
-2988487924,2988488971,FR
+2988487924,2988487979,FR
+2988487980,2988487983,ES
+2988487984,2988488491,FR
+2988488492,2988488495,ES
+2988488496,2988488543,FR
+2988488544,2988488555,GB
+2988488556,2988488639,FR
+2988488640,2988488647,ES
+2988488648,2988488971,FR
2988488972,2988488975,MT
-2988488976,2988489479,FR
+2988488976,2988488983,ES
+2988488984,2988488991,FR
+2988488992,2988489023,ES
+2988489024,2988489167,FR
+2988489168,2988489175,PT
+2988489176,2988489375,FR
+2988489376,2988489379,ES
+2988489380,2988489451,FR
+2988489452,2988489455,DE
+2988489456,2988489475,FR
+2988489476,2988489479,GB
2988489480,2988489483,DE
-2988489484,2988490686,FR
+2988489484,2988489675,FR
+2988489676,2988489679,ES
+2988489680,2988489935,FR
+2988489936,2988489943,ES
+2988489944,2988490179,FR
+2988490180,2988490191,ES
+2988490192,2988490291,FR
+2988490292,2988490295,DE
+2988490296,2988490303,ES
+2988490304,2988490367,FR
+2988490368,2988490371,ES
+2988490372,2988490686,FR
2988490687,2988490687,BE
-2988490688,2988491251,FR
+2988490688,2988490719,ES
+2988490720,2988490967,FR
+2988490968,2988490975,CZ
+2988490976,2988491251,FR
2988491252,2988491252,ES
-2988491253,2988499535,FR
+2988491253,2988491839,FR
+2988491840,2988491919,FI
+2988491920,2988491935,DE
+2988491936,2988491951,PL
+2988491952,2988491967,FR
+2988491968,2988492031,GB
+2988492032,2988492799,FR
+2988492800,2988494847,PL
+2988494848,2988495199,FR
+2988495200,2988495231,IT
+2988495232,2988495967,FR
+2988495968,2988495999,ES
+2988496000,2988496767,FR
+2988496768,2988496799,CZ
+2988496800,2988496831,FR
+2988496832,2988496895,NL
+2988496896,2988498975,FR
+2988498976,2988498983,ES
+2988498984,2988499347,FR
+2988499348,2988499351,GB
+2988499352,2988499535,FR
2988499536,2988499551,ES
-2988499552,2988499729,FR
+2988499552,2988499555,FR
+2988499556,2988499559,DE
+2988499560,2988499567,FR
+2988499568,2988499575,IE
+2988499576,2988499583,FR
+2988499584,2988499599,ES
+2988499600,2988499635,FR
+2988499636,2988499639,GB
+2988499640,2988499671,FR
+2988499672,2988499675,GB
+2988499676,2988499711,FR
+2988499712,2988499715,PL
+2988499716,2988499729,FR
2988499730,2988499730,GB
2988499731,2988499736,FR
2988499737,2988499737,NL
-2988499738,2988500415,FR
+2988499738,2988500223,FR
+2988500224,2988500255,ES
+2988500256,2988500371,FR
+2988500372,2988500375,LT
+2988500376,2988500415,FR
2988500416,2988500447,CZ
-2988500448,2988502051,FR
+2988500448,2988500479,ES
+2988500480,2988500519,FR
+2988500520,2988500523,ES
+2988500524,2988500815,FR
+2988500816,2988500831,PL
+2988500832,2988500855,FR
+2988500856,2988500859,ES
+2988500860,2988500887,FR
+2988500888,2988500895,ES
+2988500896,2988500939,FR
+2988500940,2988500943,ES
+2988500944,2988501683,FR
+2988501684,2988501687,GB
+2988501688,2988502031,FR
+2988502032,2988502035,IE
+2988502036,2988502051,FR
2988502052,2988502055,PL
-2988502056,2988502655,FR
+2988502056,2988502099,FR
+2988502100,2988502103,CZ
+2988502104,2988502263,FR
+2988502264,2988502267,ES
+2988502268,2988502479,FR
+2988502480,2988502483,ES
+2988502484,2988502495,FR
+2988502496,2988502511,ES
+2988502512,2988502655,FR
2988502656,2988502719,DE
-2988502720,2988502881,FR
+2988502720,2988502751,FR
+2988502752,2988502783,ES
+2988502784,2988502823,FR
+2988502824,2988502831,ES
+2988502832,2988502881,FR
2988502882,2988502882,IT
-2988502883,2988504371,FR
+2988502883,2988502983,FR
+2988502984,2988502991,ES
+2988502992,2988503375,FR
+2988503376,2988503383,PT
+2988503384,2988503471,FR
+2988503472,2988503487,ES
+2988503488,2988503495,IT
+2988503496,2988503919,FR
+2988503920,2988503927,CZ
+2988503928,2988504023,FR
+2988504024,2988504031,PT
+2988504032,2988504159,FR
+2988504160,2988504191,LT
+2988504192,2988504239,FR
+2988504240,2988504255,GB
+2988504256,2988504287,PL
+2988504288,2988504359,FR
+2988504360,2988504363,GB
+2988504364,2988504367,FI
+2988504368,2988504371,FR
2988504372,2988504375,PL
-2988504376,2988504527,FR
+2988504376,2988504467,FR
+2988504468,2988504471,ES
+2988504472,2988504527,FR
2988504528,2988504543,PL
-2988504544,2988509511,FR
+2988504544,2988504559,FR
+2988504560,2988504563,FI
+2988504564,2988504983,FR
+2988504984,2988504987,ES
+2988504988,2988505151,FR
+2988505152,2988505167,GB
+2988505168,2988505215,FR
+2988505216,2988505247,ES
+2988505248,2988505279,FR
+2988505280,2988505311,ES
+2988505312,2988505375,FR
+2988505376,2988505391,GB
+2988505392,2988505395,ES
+2988505396,2988505535,FR
+2988505536,2988505567,ES
+2988505568,2988505919,FR
+2988505920,2988505935,GB
+2988505936,2988506367,FR
+2988506368,2988506375,IE
+2988506376,2988506523,FR
+2988506524,2988506527,IE
+2988506528,2988506887,FR
+2988506888,2988506891,ES
+2988506892,2988507163,FR
+2988507164,2988507167,ES
+2988507168,2988507263,FR
+2988507264,2988507279,ES
+2988507280,2988507335,FR
+2988507336,2988507339,ES
+2988507340,2988507551,FR
+2988507552,2988507560,GB
+2988507561,2988507561,FR
+2988507562,2988507567,GB
+2988507568,2988507583,FR
+2988507584,2988507591,ES
+2988507592,2988507687,FR
+2988507688,2988507695,ES
+2988507696,2988508135,FR
+2988508136,2988508143,GB
+2988508144,2988508155,FR
+2988508156,2988508159,ES
+2988508160,2988508439,FR
+2988508440,2988508443,GB
+2988508444,2988508607,FR
+2988508608,2988508639,ES
+2988508640,2988508851,FR
+2988508852,2988508855,GB
+2988508856,2988509151,FR
+2988509152,2988509183,IT
+2988509184,2988509191,FR
+2988509192,2988509199,CZ
+2988509200,2988509447,FR
+2988509448,2988509451,ES
+2988509452,2988509491,FR
+2988509492,2988509495,IE
+2988509496,2988509511,FR
2988509512,2988509515,PL
2988509516,2988509747,FR
2988509748,2988509751,LT
-2988509752,2988510175,FR
+2988509752,2988509779,FR
+2988509780,2988509783,GB
+2988509784,2988510015,FR
+2988510016,2988510023,ES
+2988510024,2988510079,FR
+2988510080,2988510087,ES
+2988510088,2988510095,FR
+2988510096,2988510099,ES
+2988510100,2988510111,FR
+2988510112,2988510143,CZ
+2988510144,2988510175,FR
2988510176,2988510191,DE
-2988510192,2988512903,FR
+2988510192,2988510311,FR
+2988510312,2988510319,GB
+2988510320,2988510639,FR
+2988510640,2988510655,LT
+2988510656,2988511023,FR
+2988511024,2988511027,GB
+2988511028,2988511747,FR
+2988511748,2988511751,GB
+2988511752,2988512127,FR
+2988512128,2988512143,ES
+2988512144,2988512199,FR
+2988512200,2988512207,ES
+2988512208,2988512247,FR
+2988512248,2988512251,GB
+2988512252,2988512307,FR
+2988512308,2988512311,GB
+2988512312,2988512399,FR
+2988512400,2988512403,ES
+2988512404,2988512407,LT
+2988512408,2988512639,FR
+2988512640,2988512647,GB
+2988512648,2988512655,FR
+2988512656,2988512663,PT
+2988512664,2988512903,FR
2988512904,2988512907,GB
-2988512908,2988516090,FR
-2988516091,2988516091,DE
-2988516092,2988523631,FR
+2988512908,2988512943,FR
+2988512944,2988512951,ES
+2988512952,2988512995,FR
+2988512996,2988512999,GB
+2988513000,2988513003,FR
+2988513004,2988513007,ES
+2988513008,2988513167,FR
+2988513168,2988513171,PT
+2988513172,2988513283,FR
+2988513284,2988513287,ES
+2988513288,2988513311,FR
+2988513312,2988513327,PT
+2988513328,2988513519,FR
+2988513520,2988513535,GB
+2988513536,2988513583,FR
+2988513584,2988513599,IE
+2988513600,2988513679,FR
+2988513680,2988513683,ES
+2988513684,2988513687,GB
+2988513688,2988513739,FR
+2988513740,2988513743,ES
+2988513744,2988514183,FR
+2988514184,2988514191,ES
+2988514192,2988514207,FR
+2988514208,2988514215,PT
+2988514216,2988514231,FR
+2988514232,2988514239,ES
+2988514240,2988514287,FR
+2988514288,2988514303,ES
+2988514304,2988514527,FR
+2988514528,2988514543,GB
+2988514544,2988514739,FR
+2988514740,2988514743,GB
+2988514744,2988514943,FR
+2988514944,2988514959,ES
+2988514960,2988515327,FR
+2988515328,2988517375,DE
+2988517376,2988519423,FR
+2988519424,2988521471,PL
+2988521472,2988521567,FR
+2988521568,2988521599,PL
+2988521600,2988521775,FR
+2988521776,2988521791,LT
+2988521792,2988521951,FR
+2988521952,2988521983,ES
+2988521984,2988523551,FR
+2988523552,2988523559,ES
+2988523560,2988523599,FR
+2988523600,2988523603,ES
+2988523604,2988523631,FR
2988523632,2988523635,DE
-2988523636,2988523743,FR
+2988523636,2988523663,FR
+2988523664,2988523667,IE
+2988523668,2988523679,FR
+2988523680,2988523711,ES
+2988523712,2988523743,FR
2988523744,2988523759,DE
-2988523760,2988524440,FR
-2988524441,2988524441,CZ
-2988524442,2988525887,FR
+2988523760,2988524075,FR
+2988524076,2988524079,ES
+2988524080,2988524155,FR
+2988524156,2988524159,PT
+2988524160,2988524199,FR
+2988524200,2988524203,IE
+2988524204,2988524211,FR
+2988524212,2988524215,ES
+2988524216,2988524231,FR
+2988524232,2988524239,ES
+2988524240,2988524359,FR
+2988524360,2988524363,ES
+2988524364,2988524383,FR
+2988524384,2988524415,PL
+2988524416,2988524447,CZ
+2988524448,2988524603,FR
+2988524604,2988524607,ES
+2988524608,2988524623,FR
+2988524624,2988524627,GB
+2988524628,2988524767,FR
+2988524768,2988524783,ES
+2988524784,2988525887,FR
2988525888,2988525951,GB
-2988525952,2988526415,FR
+2988525952,2988526135,FR
+2988526136,2988526143,GB
+2988526144,2988526175,FR
+2988526176,2988526239,ES
+2988526240,2988526415,FR
2988526416,2988526423,ES
-2988526424,2988527723,FR
+2988526424,2988526703,FR
+2988526704,2988526707,GB
+2988526708,2988526867,FR
+2988526868,2988526871,PT
+2988526872,2988527187,FR
+2988527188,2988527191,ES
+2988527192,2988527487,FR
+2988527488,2988527503,GB
+2988527504,2988527547,FR
+2988527548,2988527551,IE
+2988527552,2988527591,FR
+2988527592,2988527595,IE
+2988527596,2988527723,FR
2988527724,2988527727,ES
-2988527728,2988528699,FR
+2988527728,2988527831,FR
+2988527832,2988527839,ES
+2988527840,2988527887,FR
+2988527888,2988527891,ES
+2988527892,2988528079,FR
+2988528080,2988528095,ES
+2988528096,2988528227,FR
+2988528228,2988528231,IE
+2988528232,2988528447,FR
+2988528448,2988528455,IE
+2988528456,2988528467,FR
+2988528468,2988528471,GB
+2988528472,2988528591,FR
+2988528592,2988528607,FI
+2988528608,2988528699,FR
2988528700,2988528703,CZ
-2988528704,2988530047,FR
+2988528704,2988528999,FR
+2988529000,2988529003,GB
+2988529004,2988529175,FR
+2988529176,2988529179,ES
+2988529180,2988529331,FR
+2988529332,2988529335,GB
+2988529336,2988529383,FR
+2988529384,2988529387,ES
+2988529388,2988529583,FR
+2988529584,2988529591,ES
+2988529592,2988529775,FR
+2988529776,2988529783,ES
+2988529784,2988529823,FR
+2988529824,2988529855,ES
+2988529856,2988529887,IE
+2988529888,2988530047,FR
2988530048,2988530049,GB
2988530050,2988530067,FR
2988530068,2988530071,DE
-2988530072,2988530087,FR
+2988530072,2988530083,FR
+2988530084,2988530087,GB
2988530088,2988530091,NL
-2988530092,2988533066,FR
-2988533067,2988533067,GB
-2988533068,2988533090,FR
-2988533091,2988533091,GB
-2988533092,2988540271,FR
+2988530092,2988530399,FR
+2988530400,2988530403,ES
+2988530404,2988530423,FR
+2988530424,2988530431,ES
+2988530432,2988530703,FR
+2988530704,2988530719,PT
+2988530720,2988531023,FR
+2988531024,2988531027,ES
+2988531028,2988531179,FR
+2988531180,2988531183,GB
+2988531184,2988531187,FR
+2988531188,2988531191,IE
+2988531192,2988531275,FR
+2988531276,2988531279,PT
+2988531280,2988532991,FR
+2988532992,2988533119,GB
+2988533120,2988533183,IE
+2988533184,2988533247,BE
+2988533248,2988535807,FR
+2988535808,2988537855,ES
+2988537856,2988539935,FR
+2988539936,2988539967,GB
+2988539968,2988539971,FR
+2988539972,2988539975,ES
+2988539976,2988540207,FR
+2988540208,2988540211,GB
+2988540212,2988540271,FR
2988540272,2988540275,ES
-2988540276,2988540563,FR
+2988540276,2988540439,FR
+2988540440,2988540447,NL
+2988540448,2988540563,FR
2988540564,2988540567,CZ
-2988540568,2988541863,FR
+2988540568,2988540623,FR
+2988540624,2988540631,GB
+2988540632,2988540759,FR
+2988540760,2988540763,ES
+2988540764,2988541103,FR
+2988541104,2988541119,ES
+2988541120,2988541243,FR
+2988541244,2988541247,GB
+2988541248,2988541351,FR
+2988541352,2988541355,IE
+2988541356,2988541455,FR
+2988541456,2988541467,ES
+2988541468,2988541791,FR
+2988541792,2988541807,ES
+2988541808,2988541863,FR
2988541864,2988541867,GB
2988541868,2988541955,FR
2988541956,2988541959,DE
-2988541960,2988542339,FR
+2988541960,2988542051,FR
+2988542052,2988542055,ES
+2988542056,2988542063,FR
+2988542064,2988542067,GB
+2988542068,2988542271,FR
+2988542272,2988542335,ES
+2988542336,2988542339,FR
2988542340,2988542340,PT
-2988542341,2988544835,FR
+2988542341,2988542519,FR
+2988542520,2988542523,GB
+2988542524,2988543127,FR
+2988543128,2988543135,ES
+2988543136,2988543179,FR
+2988543180,2988543183,ES
+2988543184,2988543199,FR
+2988543200,2988543203,GB
+2988543204,2988543559,FR
+2988543560,2988543563,PT
+2988543564,2988543871,FR
+2988543872,2988543935,ES
+2988543936,2988544055,FR
+2988544056,2988544063,FI
+2988544064,2988544307,FR
+2988544308,2988544311,GB
+2988544312,2988544375,FR
+2988544376,2988544383,ES
+2988544384,2988544447,GB
+2988544448,2988544527,FR
+2988544528,2988544535,ES
+2988544536,2988544671,FR
+2988544672,2988544687,GB
+2988544688,2988544767,FR
+2988544768,2988544775,ES
+2988544776,2988544835,FR
2988544836,2988544843,ES
-2988544844,2988545515,FR
+2988544844,2988545283,FR
+2988545284,2988545287,PL
+2988545288,2988545515,FR
2988545516,2988545519,GB
-2988545520,2988546687,FR
+2988545520,2988545579,FR
+2988545580,2988545583,ES
+2988545584,2988545663,FR
+2988545664,2988545695,ES
+2988545696,2988545791,FR
+2988545792,2988545795,NL
+2988545796,2988545799,ES
+2988545800,2988545995,FR
+2988545996,2988545999,FI
+2988546000,2988546119,FR
+2988546120,2988546123,IE
+2988546124,2988546159,FR
+2988546160,2988546175,ES
+2988546176,2988546327,FR
+2988546328,2988546335,ES
+2988546336,2988546351,FR
+2988546352,2988546367,ES
+2988546368,2988546575,FR
+2988546576,2988546579,ES
+2988546580,2988546599,FR
+2988546600,2988546603,PT
+2988546604,2988546615,FR
+2988546616,2988546619,FI
+2988546620,2988546687,FR
2988546688,2988546691,CH
-2988546692,2988547871,FR
+2988546692,2988546727,FR
+2988546728,2988546731,ES
+2988546732,2988547003,FR
+2988547004,2988547007,ES
+2988547008,2988547067,FR
+2988547068,2988547071,ES
+2988547072,2988547095,FR
+2988547096,2988547099,ES
+2988547100,2988547431,FR
+2988547432,2988547435,ES
+2988547436,2988547451,FR
+2988547452,2988547455,PT
+2988547456,2988547471,ES
+2988547472,2988547583,FR
+2988547584,2988547599,ES
+2988547600,2988547619,FR
+2988547620,2988547623,PT
+2988547624,2988547691,FR
+2988547692,2988547695,CZ
+2988547696,2988547775,FR
+2988547776,2988547807,ES
+2988547808,2988547871,FR
2988547872,2988547903,GB
-2988547904,2988548095,FR
+2988547904,2988547967,FR
+2988547968,2988547971,GB
+2988547972,2988548015,FR
+2988548016,2988548019,ES
+2988548020,2988548023,GB
+2988548024,2988548095,FR
2988548096,2988548338,ES
2988548339,2988548339,FR
2988548340,2988550143,ES
-2988550144,2988550438,FR
+2988550144,2988550163,FR
+2988550164,2988550167,GB
+2988550168,2988550183,FR
+2988550184,2988550191,PL
+2988550192,2988550255,FR
+2988550256,2988550259,ES
+2988550260,2988550355,FR
+2988550356,2988550359,GB
+2988550360,2988550363,ES
+2988550364,2988550367,FR
+2988550368,2988550399,PL
+2988550400,2988550407,FR
+2988550408,2988550411,GB
+2988550412,2988550438,FR
2988550439,2988550439,GB
2988550440,2988550463,FR
2988550464,2988550527,DE
-2988550528,2988551535,FR
+2988550528,2988550595,FR
+2988550596,2988550599,PT
+2988550600,2988550643,FR
+2988550644,2988550647,ES
+2988550648,2988550975,FR
+2988550976,2988551007,PL
+2988551008,2988551171,FR
+2988551172,2988551175,FI
+2988551176,2988551179,ES
+2988551180,2988551183,GB
+2988551184,2988551191,FR
+2988551192,2988551199,ES
+2988551200,2988551431,FR
+2988551432,2988551439,ES
+2988551440,2988551443,FR
+2988551444,2988551451,ES
+2988551452,2988551455,FR
+2988551456,2988551471,GB
+2988551472,2988551535,FR
2988551536,2988551551,DE
-2988551552,2988551671,FR
+2988551552,2988551567,FR
+2988551568,2988551583,IE
+2988551584,2988551671,FR
2988551672,2988551675,DE
-2988551676,2988553199,FR
+2988551676,2988551743,FR
+2988551744,2988551759,CZ
+2988551760,2988551903,FR
+2988551904,2988551911,GB
+2988551912,2988552591,FR
+2988552592,2988552595,FI
+2988552596,2988552631,FR
+2988552632,2988552635,IE
+2988552636,2988552687,FR
+2988552688,2988552711,ES
+2988552712,2988552751,FR
+2988552752,2988552767,ES
+2988552768,2988552959,FR
+2988552960,2988552975,ES
+2988552976,2988552991,FR
+2988552992,2988552995,ES
+2988552996,2988553007,FR
+2988553008,2988553023,IE
+2988553024,2988553055,FR
+2988553056,2988553087,PL
+2988553088,2988553199,FR
2988553200,2988553215,BE
-2988553216,2988553855,FR
+2988553216,2988553223,FR
+2988553224,2988553231,PL
+2988553232,2988553279,FR
+2988553280,2988553283,ES
+2988553284,2988553311,FR
+2988553312,2988553315,ES
+2988553316,2988553531,FR
+2988553532,2988553535,ES
+2988553536,2988553855,FR
2988553856,2988553919,BE
-2988553920,2988555527,FR
+2988553920,2988553971,FR
+2988553972,2988553975,ES
+2988553976,2988554035,FR
+2988554036,2988554039,ES
+2988554040,2988554187,FR
+2988554188,2988554191,PL
+2988554192,2988554239,FR
+2988554240,2988554495,ES
+2988554496,2988554499,NL
+2988554500,2988554815,FR
+2988554816,2988554879,GB
+2988554880,2988554931,FR
+2988554932,2988554935,ES
+2988554936,2988555087,FR
+2988555088,2988555091,FI
+2988555092,2988555103,FR
+2988555104,2988555107,GB
+2988555108,2988555163,FR
+2988555164,2988555167,IE
+2988555168,2988555527,FR
2988555528,2988555531,DE
-2988555532,2988556207,FR
+2988555532,2988555551,FR
+2988555552,2988555559,PT
+2988555560,2988556139,FR
+2988556140,2988556143,DE
+2988556144,2988556199,FR
+2988556200,2988556203,CZ
+2988556204,2988556207,FI
2988556208,2988556211,DE
-2988556212,2988558203,FR
+2988556212,2988556223,FR
+2988556224,2988556227,ES
+2988556228,2988556251,FR
+2988556252,2988556255,CZ
+2988556256,2988556259,ES
+2988556260,2988556263,FR
+2988556264,2988556271,GB
+2988556272,2988556283,FR
+2988556284,2988556287,GB
+2988556288,2988556319,FR
+2988556320,2988556351,GB
+2988556352,2988556359,FR
+2988556360,2988556363,ES
+2988556364,2988557023,FR
+2988557024,2988557039,IE
+2988557040,2988557095,FR
+2988557096,2988557103,ES
+2988557104,2988557111,PT
+2988557112,2988557395,FR
+2988557396,2988557399,PL
+2988557400,2988557423,FR
+2988557424,2988557427,ES
+2988557428,2988557507,FR
+2988557508,2988557511,ES
+2988557512,2988557515,GB
+2988557516,2988557539,FR
+2988557540,2988557543,ES
+2988557544,2988557631,FR
+2988557632,2988557635,GB
+2988557636,2988558075,FR
+2988558076,2988558079,NL
+2988558080,2988558203,FR
2988558204,2988558207,DE
-2988558208,2988560759,FR
+2988558208,2988558239,PL
+2988558240,2988558463,FR
+2988558464,2988558527,BE
+2988558528,2988558731,FR
+2988558732,2988558735,PT
+2988558736,2988558803,FR
+2988558804,2988558807,ES
+2988558808,2988558887,FR
+2988558888,2988558891,GB
+2988558892,2988559015,FR
+2988559016,2988559023,DE
+2988559024,2988559199,FR
+2988559200,2988559231,PT
+2988559232,2988559615,FR
+2988559616,2988559619,ES
+2988559620,2988559631,FR
+2988559632,2988559647,GB
+2988559648,2988559663,FR
+2988559664,2988559679,ES
+2988559680,2988560543,FR
+2988560544,2988560575,GB
+2988560576,2988560639,FR
+2988560640,2988560703,ES
+2988560704,2988560759,FR
2988560760,2988560767,FI
2988560768,2988560783,FR
2988560784,2988560799,NL
2988560800,2988560815,DE
-2988560816,2988561763,FR
+2988560816,2988560879,FR
+2988560880,2988560895,GB
+2988560896,2988561051,FR
+2988561052,2988561055,GB
+2988561056,2988561215,FR
+2988561216,2988561231,ES
+2988561232,2988561235,PT
+2988561236,2988561239,FR
+2988561240,2988561243,NL
+2988561244,2988561399,FR
+2988561400,2988561403,ES
+2988561404,2988561583,FR
+2988561584,2988561591,GB
+2988561592,2988561747,FR
+2988561748,2988561751,GB
+2988561752,2988561759,FR
+2988561760,2988561763,PL
2988561764,2988561767,IT
-2988561768,2988562847,FR
+2988561768,2988561939,FR
+2988561940,2988561943,FI
+2988561944,2988562495,FR
+2988562496,2988562527,FI
+2988562528,2988562595,FR
+2988562596,2988562599,GB
+2988562600,2988562847,FR
2988562848,2988562863,GB
-2988562864,2988563671,FR
+2988562864,2988563527,FR
+2988563528,2988563535,ES
+2988563536,2988563671,FR
2988563672,2988563675,DE
-2988563676,2988564023,FR
+2988563676,2988563967,FR
+2988563968,2988563999,GB
+2988564000,2988564023,FR
2988564024,2988564027,IE
-2988564028,2988564367,FR
+2988564028,2988564143,FR
+2988564144,2988564159,ES
+2988564160,2988564175,FR
+2988564176,2988564179,GB
+2988564180,2988564191,FR
+2988564192,2988564195,ES
+2988564196,2988564215,FR
+2988564216,2988564219,GB
+2988564220,2988564279,FR
+2988564280,2988564287,ES
+2988564288,2988564367,FR
2988564368,2988564383,GB
-2988564384,2988566331,FR
+2988564384,2988564403,FR
+2988564404,2988564407,ES
+2988564408,2988566331,FR
2988566332,2988566332,GB
2988566333,2988572671,FR
2988572672,2988612607,RU
@@ -75013,7 +87570,8 @@
2989588992,2989589503,CO
2989589504,2989621247,RU
2989621248,2989752319,BE
-2989752320,2989817855,SY
+2989752320,2989785087,LB
+2989785088,2989817855,SY
2989817856,2989883391,KW
2989883392,2989948927,UA
2989948928,2990014463,FI
@@ -75026,46 +87584,27 @@
2990112768,2990129151,ES
2990129152,2990145535,RU
2990145536,2990211071,SI
-2990211072,2990256127,GR
-2990256128,2990257663,CY
-2990257664,2990259455,GR
-2990259456,2990259967,CY
-2990259968,2990260735,GR
-2990260736,2990261759,CY
-2990261760,2990262015,GR
-2990262016,2990263295,CY
-2990263296,2990264319,GR
-2990264320,2990265343,CY
-2990265344,2990266367,GR
-2990266368,2990270975,CY
-2990270976,2990271487,GR
-2990271488,2990271743,CY
-2990271744,2990272511,GR
-2990272512,2990273535,CY
-2990273536,2990274047,GR
-2990274048,2990274559,CY
-2990274560,2990276607,GR
+2990211072,2990276607,GR
2990276608,2990342143,ES
2990342144,2990407679,KW
-2990407680,2990472334,GB
-2990472335,2990472335,NL
-2990472336,2990472492,GB
-2990472493,2990472493,NL
-2990472494,2990473215,GB
+2990407680,2990440447,GB
+2990440448,2990473215,NL
2990473216,2990475674,DE
2990475675,2990475675,HR
2990475676,2990538751,DE
2990538752,2991063039,RU
-2991063040,2991079423,SE
+2991063040,2991067135,SE
+2991067136,2991071231,DK
+2991071232,2991079423,NO
2991079424,2991095807,RU
-2991095808,2991103999,AM
-2991104000,2991106047,RU
-2991106048,2991112191,AM
+2991095808,2991112191,AM
2991112192,2991128575,CZ
2991128576,2991144959,PL
2991144960,2991161343,SA
2991161344,2991177727,FR
-2991177728,2991191807,SE
+2991177728,2991179503,SE
+2991179504,2991179507,ES
+2991179508,2991191807,SE
2991191808,2991192063,FI
2991192064,2991194111,SE
2991194112,2991210495,NO
@@ -75086,9 +87625,7 @@
2991472640,2991489023,GB
2991489024,2991505407,AM
2991505408,2991521791,SE
-2991521792,2991527935,RS
-2991527936,2991529983,XK
-2991529984,2991538175,RS
+2991521792,2991538175,RS
2991538176,2991554559,SI
2991554560,2991570943,GB
2991570944,2991581183,IT
@@ -75100,15 +87637,106 @@
2991718400,2991849471,CH
2991849472,2991980543,NL
2991980544,2992111615,SA
-2992111616,2992156159,KZ
-2992156160,2992156415,RU
-2992156416,2992373759,KZ
+2992111616,2992373759,KZ
2992373760,2992635903,UA
2992635904,2993684479,GB
2993684480,2993946623,AT
2993946624,2994208767,BE
2994208768,2994733055,BY
-2994733056,2994798591,GR
+2994733056,2994733311,NL
+2994733312,2994734591,GR
+2994734592,2994734847,NL
+2994734848,2994735615,GR
+2994735616,2994736127,NL
+2994736128,2994737407,GR
+2994737408,2994737663,NL
+2994737664,2994738175,GR
+2994738176,2994738431,NL
+2994738432,2994738943,GR
+2994738944,2994739199,NL
+2994739200,2994739711,GR
+2994739712,2994739967,NL
+2994739968,2994742271,GR
+2994742272,2994742527,NL
+2994742528,2994743295,GR
+2994743296,2994744319,NL
+2994744320,2994745087,GR
+2994745088,2994745343,NL
+2994745344,2994745855,GR
+2994745856,2994746111,NL
+2994746112,2994746367,GR
+2994746368,2994746879,NL
+2994746880,2994747391,GR
+2994747392,2994747903,NL
+2994747904,2994749439,GR
+2994749440,2994750207,NL
+2994750208,2994750463,GR
+2994750464,2994750719,NL
+2994750720,2994750975,GR
+2994750976,2994751743,NL
+2994751744,2994751999,GR
+2994752000,2994752255,NL
+2994752256,2994752511,GR
+2994752512,2994753535,NL
+2994753536,2994754047,GR
+2994754048,2994754559,NL
+2994754560,2994754815,GR
+2994754816,2994755839,NL
+2994755840,2994756351,GR
+2994756352,2994756607,NL
+2994756608,2994756863,GR
+2994756864,2994757375,NL
+2994757376,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
+2994767872,2994768127,GR
+2994768128,2994769407,NL
+2994769408,2994770175,GR
+2994770176,2994770687,NL
+2994770688,2994771199,GR
+2994771200,2994771455,NL
+2994771456,2994771711,GR
+2994771712,2994771967,NL
+2994771968,2994774271,GR
+2994774272,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,2994796031,GR
+2994796032,2994796287,NL
+2994796288,2994796799,GR
+2994796800,2994797311,NL
+2994797312,2994797823,GR
+2994797824,2994798591,NL
2994798592,2994929663,RU
2994929664,2994995199,IR
2994995200,2994997247,NL
@@ -75144,9 +87772,7 @@
2995716096,2995781631,SK
2995781632,2995912703,BE
2995912704,2996043775,GR
-2996043776,2996171263,RS
-2996171264,2996171775,XK
-2996171776,2996174847,RS
+2996043776,2996174847,RS
2996174848,2996305919,UA
2996305920,2996436991,QA
2996436992,2996469759,BY
@@ -75161,21 +87787,20 @@
2996634624,2996635647,IR
2996635648,2996637695,TR
2996637696,2996645887,FR
-2996645888,2996649983,IR
+2996645888,2996649983,US
2996649984,2996666367,RO
2996666368,2996682751,RU
2996682752,2996699135,DK
2996699136,2996764671,UA
-2996764672,2996767487,NL
-2996767488,2996767743,GB
-2996767744,2996768767,NL
+2996764672,2996768767,GB
2996768768,2996773631,RU
2996773632,2996773887,KZ
-2996773888,2996774399,RU
-2996774400,2996774911,UA
+2996773888,2996774143,RU
+2996774144,2996774911,UA
2996774912,2996775423,RU
2996775424,2996775935,UA
-2996775936,2996781055,RU
+2996775936,2996776959,BY
+2996776960,2996781055,RU
2996781056,2996785151,RO
2996785152,2996789247,RU
2996789248,2996789503,UA
@@ -75213,12 +87838,32 @@
2997387264,2997420031,BY
2997420032,2997428223,IR
2997428224,2997452799,RU
-2997452800,2997463039,BG
-2997463040,2997465087,RO
-2997465088,2997485567,BG
+2997452800,2997485567,BG
2997485568,2997500415,FR
2997500416,2997500671,NL
-2997500672,2997518335,FR
+2997500672,2997506559,FR
+2997506560,2997506815,GB
+2997506816,2997507071,ES
+2997507072,2997507327,IT
+2997507328,2997507583,DE
+2997507584,2997508095,PT
+2997508096,2997508351,DE
+2997508352,2997508607,IT
+2997508608,2997508863,ES
+2997508864,2997509119,GB
+2997509120,2997513345,FR
+2997513346,2997513346,IT
+2997513347,2997513347,ES
+2997513348,2997513348,DE
+2997513349,2997513349,PT
+2997513350,2997513350,BE
+2997513351,2997513351,LU
+2997513352,2997513352,AT
+2997513353,2997513353,NL
+2997513354,2997513354,IE
+2997513355,2997515683,FR
+2997515684,2997515684,GB
+2997515685,2997518335,FR
2997518336,2997519359,US
2997519360,2997520383,GL
2997520384,2997520895,NL
@@ -75233,47 +87878,62 @@
2997523200,2997523455,GL
2997523456,2997525503,NL
2997525504,2997526527,TR
-2997526528,2997528831,NL
-2997528832,2997529087,RU
-2997529088,2997529855,NL
-2997529856,2997530111,RU
-2997530112,2997533439,NL
-2997533440,2997533695,RU
-2997533696,2997536255,NL
-2997536256,2997536511,RU
-2997536512,2997538559,NL
-2997538560,2997539327,RU
-2997539328,2997541119,NL
-2997541120,2997543167,RU
+2997526528,2997527551,GL
+2997527552,2997543167,RU
2997543168,2997543423,NL
2997543424,2997543679,RU
2997543680,2997544191,NL
2997544192,2997544447,RU
-2997544448,2997548287,NL
-2997548288,2997548543,RU
-2997548544,2997550335,NL
-2997550336,2997550847,RU
-2997550848,2997551103,NL
-2997551104,2997556223,RU
-2997556224,2997557247,SG
-2997557248,2997560319,RU
-2997560320,2997560831,KR
-2997560832,2997576703,RU
-2997576704,2997576959,NL
+2997544448,2997544959,NL
+2997544960,2997551103,RU
+2997551104,2997555199,AU
+2997555200,2997557247,SG
+2997557248,2997559295,TW
+2997559296,2997560831,TR
+2997560832,2997561087,UZ
+2997561088,2997561343,RU
+2997561344,2997561855,MD
+2997561856,2997562367,EE
+2997562368,2997562879,KG
+2997562880,2997563391,AZ
+2997563392,2997564415,TR
+2997564416,2997564927,RU
+2997564928,2997565439,TR
+2997565440,2997565951,RU
+2997565952,2997566463,BY
+2997566464,2997567487,TR
+2997567488,2997567999,LV
+2997568000,2997568511,TM
+2997568512,2997568767,RU
+2997568768,2997569023,KZ
+2997569024,2997570559,AU
+2997570560,2997573631,JP
+2997573632,2997574143,RU
+2997574144,2997574655,UA
+2997574656,2997576703,KR
+2997576704,2997576959,AU
2997576960,2997577215,GB
-2997577216,2997578239,RU
+2997577216,2997577471,IL
+2997577472,2997577727,TR
+2997577728,2997577983,AU
+2997577984,2997578239,TR
2997578240,2997578751,FR
-2997578752,2997579775,RU
-2997579776,2997581823,NL
-2997581824,2997583871,RU
-2997583872,2997616639,SY
+2997578752,2997579263,GE
+2997579264,2997579775,TR
+2997579776,2997581311,NL
+2997581312,2997581823,TR
+2997581824,2997583871,TW
+2997583872,2997596159,SY
+2997596160,2997597183,TR
+2997597184,2997616639,SY
2997616640,2997649407,SI
2997649408,2997682175,BY
2997682176,2997714943,RU
-2997714944,2997747711,IR
+2997714944,2997739519,IR
+2997739520,2997747711,AU
2997747712,2997780479,CH
2997780480,2997813247,SE
-2997813248,2997846015,ME
+2997813248,2997846015,AL
2997846016,2997848665,MD
2997848666,2997848666,UM
2997848667,2997878783,MD
@@ -75285,7 +87945,14 @@
2999451648,2999713791,DE
2999713792,2999975935,RU
2999975936,2999984127,FR
-2999984128,2999992319,BE
+2999984128,2999989007,BE
+2999989008,2999989015,NL
+2999989016,2999989031,BE
+2999989032,2999989055,NL
+2999989056,2999989059,LU
+2999989060,2999989119,BE
+2999989120,2999989247,FR
+2999989248,2999992319,BE
2999992320,3000000511,RU
3000000512,3000008703,DE
3000008704,3000016895,RU
@@ -75296,8 +87963,8 @@
3000021760,3000022015,DE
3000022016,3000022271,BE
3000022272,3000022527,PT
-3000022528,3000022783,DE
-3000022784,3000025087,GB
+3000022528,3000023295,DE
+3000023296,3000025087,GB
3000025088,3000033279,GI
3000033280,3000041471,RU
3000041472,3000049919,BA
@@ -75317,7 +87984,7 @@
3000188928,3000197119,IT
3000197120,3000213503,UA
3000213504,3000221695,RU
-3000221696,3000229887,TR
+3000221696,3000229887,GB
3000229888,3000238079,CH
3000238080,3000240127,KZ
3000240128,3000242175,RU
@@ -75391,11 +88058,11 @@
3000487936,3000492031,PS
3000496128,3000506367,UA
3000506368,3000508415,PL
-3000508416,3000510463,UA
+3000508416,3000510463,RU
3000510464,3000512511,PL
-3000512512,3000513791,EE
+3000512512,3000513791,SE
3000513792,3000514047,PT
-3000514048,3000514303,EE
+3000514048,3000514303,SE
3000514304,3000514559,BE
3000514560,3000516607,SI
3000516608,3000520703,RU
@@ -75409,8 +88076,8 @@
3000535040,3000537087,PL
3000537088,3000539135,CZ
3000539136,3000543231,RU
-3000543232,3000545279,UA
-3000545280,3000547327,RU
+3000543232,3000544255,UA
+3000544256,3000547327,RU
3000547328,3000549375,UA
3000549376,3000551423,SE
3000551424,3000553471,PL
@@ -75451,7 +88118,7 @@
3000651776,3000664063,RU
3000664064,3000668159,RO
3000672256,3000676351,HR
-3000676352,3000680447,RO
+3000676352,3000680447,SA
3000682496,3000684543,UZ
3000684544,3000688639,RU
3000688640,3000692735,PL
@@ -75469,11 +88136,11 @@
3000750080,3000754175,RU
3000754176,3000758271,IR
3000758272,3000762367,UA
-3000762368,3000781311,RS
-3000781312,3000781439,XK
-3000781440,3000928767,RS
-3000928768,3000929279,XK
-3000929280,3001024511,RS
+3000762368,3000928255,RS
+3000928256,3000930303,XK
+3000930304,3001016319,RS
+3001016320,3001018367,XK
+3001018368,3001024511,RS
3001024512,3001548799,NL
3001548800,3001614335,NO
3001614336,3001679871,TR
@@ -75494,18 +88161,27 @@
3001846528,3001847807,RU
3001847808,3001851903,GB
3001851904,3001855999,IT
-3001856000,3001859071,NL
+3001856000,3001857023,NL
+3001857024,3001857279,MD
+3001857280,3001859071,NL
3001859072,3001860095,MD
-3001860096,3001863935,EE
-3001863936,3001864191,LT
+3001860096,3001861119,LV
+3001861120,3001862143,LT
+3001862144,3001863167,EE
+3001863168,3001864191,LT
3001864192,3001868287,RU
3001868288,3001869311,US
-3001869312,3001871359,FR
+3001869312,3001870591,FR
+3001870592,3001870847,NG
+3001870848,3001871103,FR
+3001871104,3001871359,ID
3001871360,3001872383,US
3001872384,3001876479,RU
3001876480,3001880575,IT
3001880576,3001884671,RU
-3001884672,3001888767,NL
+3001884672,3001886695,NL
+3001886696,3001886703,DK
+3001886704,3001888767,NL
3001892864,3001896959,AZ
3001896960,3001901055,CH
3001901056,3001905151,FR
@@ -75524,7 +88200,8 @@
3001950208,3001954303,CZ
3001954304,3001958399,IT
3001958400,3001962495,KZ
-3001962496,3001966591,GB
+3001962496,3001966335,GB
+3001966336,3001966591,DE
3001966592,3001970687,NL
3001970688,3001974783,RU
3001974784,3001982975,GB
@@ -75557,7 +88234,11 @@
3002603520,3002605567,SE
3002605568,3002607615,GB
3002607616,3002609663,IR
-3002609664,3002611711,GB
+3002609664,3002609919,IT
+3002609920,3002610175,NL
+3002610176,3002610687,IT
+3002610688,3002611455,US
+3002611456,3002611711,IT
3002611712,3002613759,CZ
3002613760,3002615807,RU
3002615808,3002617855,PL
@@ -75565,7 +88246,7 @@
3002619904,3002621951,IT
3002621952,3002623999,NO
3002624000,3002626047,GB
-3002626048,3002628095,DE
+3002626048,3002628095,IN
3002628096,3002630143,NO
3002630144,3002632191,GB
3002632192,3002634239,EE
@@ -75579,7 +88260,9 @@
3002650624,3002652671,FR
3002652672,3002654719,DE
3002654720,3002656767,NL
-3002656768,3002658815,RU
+3002656768,3002657068,RU
+3002657069,3002657069,EE
+3002657070,3002658815,RU
3002658816,3002660863,DE
3002660864,3002662911,CZ
3002662912,3002664959,DE
@@ -75592,7 +88275,8 @@
3002677248,3002683391,RU
3002683392,3002685439,DE
3002685440,3002687487,PL
-3002687488,3002689535,GB
+3002687488,3002688511,GB
+3002688512,3002689535,NL
3002689536,3002691583,IL
3002691584,3002693631,MK
3002693632,3002695679,NO
@@ -75642,7 +88326,6 @@
3002791936,3002793983,AE
3002793984,3002796031,DK
3002796032,3002798079,DE
-3002798080,3002800127,FR
3002800128,3002802175,NL
3002802176,3002804223,GB
3002804224,3002806271,TR
@@ -75658,9 +88341,11 @@
3002826752,3002828799,SE
3002828800,3002830847,RU
3002830848,3002834943,FI
-3002834944,3002836479,LU
-3002836480,3002836735,BE
-3002836736,3002836991,LU
+3002834944,3002835063,BE
+3002835064,3002835067,LU
+3002835068,3002836319,BE
+3002836320,3002836335,LU
+3002836336,3002836991,BE
3002836992,3002841087,GB
3002841088,3002843135,CZ
3002843136,3002845183,NL
@@ -75684,7 +88369,12 @@
3003023360,3003039743,RS
3003039744,3003056127,BG
3003056128,3003058175,DE
-3003058176,3003060223,EE
+3003058176,3003058431,MT
+3003058432,3003058687,FI
+3003058688,3003058943,PH
+3003058944,3003059711,EE
+3003059712,3003059967,GI
+3003059968,3003060223,GG
3003060224,3003062271,DE
3003062272,3003064319,NL
3003064320,3003066367,RO
@@ -75711,10 +88401,9 @@
3003099136,3003101183,CZ
3003101184,3003103231,UA
3003103232,3003105279,IT
-3003105280,3003107327,NL
-3003107328,3003109375,RU
+3003105280,3003109375,NL
3003109376,3003111423,FR
-3003111424,3003113471,LU
+3003111424,3003113471,IT
3003113472,3003115519,ES
3003115520,3003117567,RU
3003117568,3003119615,IT
@@ -75751,8 +88440,7 @@
3003160064,3003160575,AR
3003160576,3003160831,CL
3003160832,3003161087,PE
-3003161088,3003161343,CO
-3003161344,3003161599,CL
+3003161088,3003161599,CL
3003161600,3003162623,UY
3003162624,3003170815,CR
3003170816,3003171071,GT
@@ -75783,33 +88471,39 @@
3005218816,3005349887,CO
3005349888,3005480959,BR
3005480960,3005874175,AR
-3005874176,3005890559,PA
-3005890560,3005890815,CO
-3005890816,3005893887,PA
-3005893888,3005894655,CO
-3005894656,3005895423,PA
-3005895424,3005896191,CO
+3005874176,3005893887,PA
+3005893888,3005894911,CO
+3005894912,3005895679,PA
+3005895680,3005896191,CO
3005896192,3005896703,PA
3005896704,3005897215,CO
3005897216,3005897471,PA
-3005897472,3005899519,CO
-3005899520,3005900031,PA
-3005900032,3005901055,CO
+3005897472,3005897727,CO
+3005897728,3005897983,PA
+3005897984,3005899775,CO
+3005899776,3005900031,PA
+3005900032,3005900543,CO
+3005900544,3005900799,PA
+3005900800,3005901055,CO
3005901056,3005901567,PA
-3005901568,3005903103,CO
-3005903104,3005903359,PA
+3005901568,3005902335,CO
+3005902336,3005902591,PA
+3005902592,3005902847,CO
+3005902848,3005903359,PA
3005903360,3005905407,CO
3005905408,3005905663,PA
-3005905664,3005906687,CO
-3005906688,3005911039,PA
-3005911040,3005911807,CO
+3005905664,3005905919,CO
+3005905920,3005906175,PA
+3005906176,3005906687,CO
+3005906688,3005911295,PA
+3005911296,3005911807,CO
3005911808,3005912319,PA
3005912320,3005912575,CO
3005912576,3005912831,PA
3005912832,3005913087,CO
3005913088,3005913599,PA
-3005913600,3005913855,CO
-3005913856,3005914623,PA
+3005913600,3005914111,CO
+3005914112,3005914623,PA
3005914624,3005915135,CO
3005915136,3005918207,AR
3005918208,3005919231,CO
@@ -75819,7 +88513,9 @@
3005960192,3005965311,PE
3005965312,3005966335,AR
3005966336,3005968383,CO
-3005968384,3005972479,AR
+3005968384,3005969151,AR
+3005969152,3005969167,US
+3005969168,3005972479,AR
3005972480,3005988863,CH
3005988864,3006005247,DO
3006005248,3006267391,VE
@@ -75827,8 +88523,8 @@
3006283776,3006284287,CR
3006284288,3006284543,PA
3006284544,3006284799,CR
-3006284800,3006285055,PA
-3006285056,3006285567,CR
+3006284800,3006285311,PA
+3006285312,3006285567,CR
3006285568,3006286335,PA
3006286336,3006286591,CR
3006286592,3006286847,PA
@@ -75838,28 +88534,28 @@
3006288384,3006288639,PA
3006288640,3006289151,CR
3006289152,3006289663,PA
-3006289664,3006291711,CR
+3006289664,3006290175,CR
+3006290176,3006290431,PA
+3006290432,3006291711,CR
3006291712,3006308351,PA
-3006308352,3006308863,CR
-3006308864,3006309631,PA
+3006308352,3006308607,CR
+3006308608,3006309631,PA
3006309632,3006311167,CR
-3006311168,3006311423,PA
-3006311424,3006312191,CR
-3006312192,3006312447,PA
-3006312448,3006312703,CR
-3006312704,3006312959,PA
-3006312960,3006313983,CR
+3006311168,3006311679,PA
+3006311680,3006312703,CR
+3006312704,3006313215,PA
+3006313216,3006313471,CR
+3006313472,3006313727,PA
+3006313728,3006313983,CR
3006313984,3006314239,PA
3006314240,3006315007,CR
-3006315008,3006315263,PA
-3006315264,3006315775,CR
+3006315008,3006315519,PA
+3006315520,3006315775,CR
3006315776,3006316031,PA
3006316032,3006316543,CR
3006316544,3006320639,PA
3006320640,3006320895,CR
-3006320896,3006321151,PA
-3006321152,3006321407,CR
-3006321408,3006322175,PA
+3006320896,3006322175,PA
3006322176,3006322431,CR
3006322432,3006323199,PA
3006323200,3006324735,CR
@@ -75907,17 +88603,16 @@
3007092736,3007094783,AR
3007094784,3007096831,CR
3007096832,3007098879,AR
-3007098880,3007099463,HN
-3007099464,3007099471,IN
-3007099472,3007099631,HN
+3007098880,3007099631,HN
3007099632,3007099639,GB
-3007099640,3007100055,HN
+3007099640,3007099903,HN
+3007099904,3007100055,US
3007100056,3007100063,BR
-3007100064,3007100407,HN
+3007100064,3007100407,US
3007100408,3007100415,PH
-3007100416,3007100463,HN
+3007100416,3007100463,US
3007100464,3007100471,IN
-3007100472,3007100927,HN
+3007100472,3007100927,US
3007100928,3007102975,AR
3007102976,3007103999,US
3007104000,3007106047,AR
@@ -76056,7 +88751,8 @@
3007168768,3007169023,CL
3007169024,3007169151,US
3007169152,3007169279,CL
-3007169280,3007170047,US
+3007169280,3007169791,US
+3007169792,3007170047,GB
3007170048,3007170303,MX
3007170304,3007170559,US
3007170560,3007171071,DE
@@ -76080,11 +88776,12 @@
3007173120,3007173375,US
3007173376,3007173407,NO
3007173408,3007173439,SE
-3007173440,3007173631,BR
+3007173440,3007173443,CL
+3007173444,3007173491,BR
+3007173492,3007173631,CL
3007173632,3007173663,NO
3007173664,3007173695,NZ
-3007173696,3007173887,BR
-3007173888,3007174015,US
+3007173696,3007174015,BR
3007174016,3007174047,NL
3007174048,3007174079,FR
3007174080,3007174271,BR
@@ -76097,10 +88794,10 @@
3007175680,3007175935,GB
3007175936,3007175967,NZ
3007175968,3007175999,BE
-3007176000,3007176319,BR
+3007176000,3007176319,CL
3007176320,3007176351,SE
3007176352,3007176383,FR
-3007176384,3007176447,BR
+3007176384,3007176447,CL
3007176448,3007176703,US
3007176704,3007177727,IN
3007177728,3007178751,US
@@ -76131,16 +88828,13 @@
3007183264,3007183295,IT
3007183296,3007183359,BR
3007183360,3007183615,AU
-3007183616,3007183871,IE
-3007183872,3007184127,US
+3007183616,3007184127,US
3007184128,3007184383,KW
3007184384,3007184895,BR
3007184896,3007250431,AR
-3007250432,3007283199,CR
-3007283200,3007283455,PA
-3007283456,3007283711,CR
-3007283712,3007284223,PA
-3007284224,3007284735,CR
+3007250432,3007283711,CR
+3007283712,3007284479,PA
+3007284480,3007284735,CR
3007284736,3007285247,PA
3007285248,3007285503,CR
3007285504,3007285759,PA
@@ -76157,14 +88851,19 @@
3007312896,3007313919,CL
3007313920,3007314943,AR
3007314944,3007315967,HN
-3007315968,3019898879,BR
+3007315968,3015684095,BR
+3015684096,3015684351,US
+3015684352,3015684863,BR
+3015684864,3015685631,US
+3015685632,3019898879,BR
3019898880,3024093183,JP
3024093184,3024617471,KR
3024617472,3024879615,MY
3024879616,3025141759,CN
3025141760,3025403903,KR
3025403904,3025600511,CN
-3025600512,3025601663,IN
+3025600512,3025600535,SG
+3025600536,3025601663,IN
3025601664,3025601791,HK
3025601792,3025601919,IN
3025601920,3025602047,CN
@@ -76210,7 +88909,9 @@
3025613368,3025613375,SG
3025613376,3025613455,IN
3025613456,3025613463,SG
-3025613464,3025616895,IN
+3025613464,3025613503,IN
+3025613504,3025613567,SG
+3025613568,3025616895,IN
3025616896,3025617439,SG
3025617440,3025617447,IN
3025617448,3025617455,SG
@@ -76220,7 +88921,9 @@
3025617664,3025617919,SG
3025617920,3025618175,MY
3025618176,3025618179,TH
-3025618180,3025618431,IN
+3025618180,3025618183,IN
+3025618184,3025618191,TH
+3025618192,3025618431,IN
3025618432,3025618687,TW
3025618688,3025618943,IN
3025618944,3025619535,SG
@@ -76264,12 +88967,12 @@
3025625920,3025625927,KR
3025625928,3025625935,IN
3025625936,3025626015,SG
-3025626016,3025626047,IN
-3025626048,3025626079,SG
+3025626016,3025626039,IN
+3025626040,3025626079,SG
3025626080,3025626111,IN
3025626112,3025626623,SG
-3025626624,3025629439,IN
-3025629440,3025629567,HK
+3025626624,3025629183,IN
+3025629184,3025629567,HK
3025629568,3025629695,IN
3025629696,3025629951,HK
3025629952,3025630031,AU
@@ -76283,8 +88986,8 @@
3025631744,3025631747,IN
3025631748,3025631767,HK
3025631768,3025631775,IN
-3025631776,3025631839,HK
-3025631840,3025631999,IN
+3025631776,3025631855,HK
+3025631856,3025631999,IN
3025632000,3025632255,HK
3025632256,3025632439,SG
3025632440,3025632447,IN
@@ -76324,7 +89027,9 @@
3025639168,3025639175,SG
3025639176,3025639295,IN
3025639296,3025639327,AU
-3025639328,3025639423,IN
+3025639328,3025639343,IN
+3025639344,3025639359,AU
+3025639360,3025639423,IN
3025639424,3025639535,SG
3025639536,3025639551,HK
3025639552,3025639679,SG
@@ -76334,24 +89039,23 @@
3025639872,3025639883,CN
3025639884,3025639903,HK
3025639904,3025639943,IN
-3025639944,3025639951,JP
-3025639952,3025639967,IN
+3025639944,3025639967,JP
3025639968,3025639999,SG
-3025640000,3025640191,IN
+3025640000,3025640007,JP
+3025640008,3025640191,IN
3025640192,3025640447,JP
-3025640448,3025640835,MY
-3025640836,3025640839,IN
-3025640840,3025640855,MY
-3025640856,3025640863,IN
-3025640864,3025640895,MY
-3025640896,3025641727,IN
+3025640448,3025641471,MY
+3025641472,3025641727,IN
3025641728,3025641751,HK
3025641752,3025641759,IN
3025641760,3025641779,HK
3025641780,3025641983,IN
3025641984,3025642495,HK
3025642496,3025642751,SG
-3025642752,3025643039,IN
+3025642752,3025643007,HK
+3025643008,3025643015,IN
+3025643016,3025643019,HK
+3025643020,3025643039,IN
3025643040,3025643071,HK
3025643072,3025647103,IN
3025647104,3025647359,SG
@@ -76395,13 +89099,13 @@
3026069504,3026071551,JP
3026071552,3026073599,AU
3026073600,3026075647,CN
-3026075648,3026083839,AF
+3026075648,3026081106,AF
+3026081107,3026081107,DE
+3026081108,3026083839,AF
3026083840,3026087935,CN
3026087936,3026089983,AU
3026089984,3026092031,CN
-3026092032,3026104319,MO
-3026104320,3026106367,CN
-3026106368,3026108415,MO
+3026092032,3026108415,MO
3026108416,3026116607,JP
3026116608,3026118655,HK
3026118656,3026120703,AU
@@ -76476,7 +89180,9 @@
3031572480,3031580671,HK
3031580672,3031581695,AU
3031581696,3031582719,JP
-3031582720,3031584767,SG
+3031582720,3031583999,SG
+3031584000,3031584255,US
+3031584256,3031584767,SG
3031584768,3031587839,JP
3031587840,3031592959,ID
3031592960,3031595007,CN
@@ -76567,7 +89273,9 @@
3034488832,3034492927,AU
3034492928,3034497023,JP
3034497024,3034499071,AU
-3034499072,3034500095,HK
+3034499072,3034499583,HK
+3034499584,3034499839,SG
+3034499840,3034500095,HK
3034500096,3034501118,PH
3034501119,3034501119,TW
3034501120,3034502143,VU
@@ -76645,16 +89353,15 @@
3039407104,3039408127,BZ
3039408128,3039410175,US
3039410176,3039411199,BZ
-3039411200,3039412223,CA
+3039411200,3039412223,US
3039412224,3039412351,CL
3039412352,3039412479,BR
3039412480,3039412735,SG
-3039412736,3039412991,TW
-3039412992,3039413503,US
+3039412736,3039413503,US
3039413504,3039414015,BR
3039414016,3039414527,US
3039414528,3039414783,BR
-3039414784,3039415039,IT
+3039414784,3039415039,US
3039415040,3039415295,BR
3039415296,3039415551,US
3039415552,3039415807,BR
@@ -76704,8 +89411,7 @@
3044212736,3044245503,HN
3044245504,3044278271,BO
3044278272,3044417535,AR
-3044417536,3044418047,CY
-3044418048,3044421631,PA
+3044417536,3044421631,TT
3044421632,3044425727,CY
3044425728,3044446207,AR
3044446208,3044450303,CO
@@ -76733,60 +89439,18 @@
3048144896,3048210431,EC
3048210432,3048275967,PE
3048275968,3048292351,AR
-3048292352,3048292799,CA
-3048292800,3048292807,ES
-3048292808,3048293271,CA
+3048292352,3048293271,CA
3048293272,3048293279,ES
-3048293280,3048293599,CA
-3048293600,3048293615,ES
-3048293616,3048294627,CA
-3048294628,3048294631,BR
-3048294632,3048294759,CA
-3048294760,3048294767,BR
-3048294768,3048296447,CA
+3048293280,3048296447,CA
3048296448,3048296751,US
3048296752,3048296759,CA
-3048296760,3048297407,US
-3048297408,3048297423,CA
-3048297424,3048299487,US
-3048299488,3048299503,BR
-3048299504,3048299599,US
-3048299600,3048299607,BR
-3048299608,3048299655,US
+3048296760,3048299655,US
3048299656,3048299663,BR
-3048299664,3048300863,US
-3048300864,3048300895,CA
-3048300896,3048301311,US
+3048299664,3048301311,US
3048301312,3048301343,CA
-3048301344,3048301471,US
-3048301472,3048301503,CA
-3048301504,3048301935,US
-3048301936,3048301951,CA
-3048301952,3048302295,US
-3048302296,3048302303,CA
-3048302304,3048302815,US
-3048302816,3048302823,NL
-3048302824,3048303303,US
-3048303304,3048303311,NL
-3048303312,3048304031,US
-3048304032,3048304047,NL
-3048304048,3048304663,US
-3048304664,3048304671,CR
-3048304672,3048304919,US
-3048304920,3048304927,CR
-3048304928,3048304999,US
+3048301344,3048304999,US
3048305000,3048305007,CR
-3048305008,3048305063,US
-3048305064,3048305071,CR
-3048305072,3048307607,US
-3048307608,3048307615,CA
-3048307616,3048307743,US
-3048307744,3048307751,CA
-3048307752,3048307967,US
-3048307968,3048307983,CA
-3048307984,3048308103,US
-3048308104,3048308111,CA
-3048308112,3048308727,US
+3048305008,3048308727,US
3048308728,3048308735,CR
3048308736,3048325119,BO
3048325120,3048331263,AR
@@ -76836,9 +89500,7 @@
3049255936,3049259007,MX
3049259008,3049291775,AR
3049291776,3049324543,CO
-3049324544,3049362175,CR
-3049362176,3049362431,NI
-3049362432,3049521151,CR
+3049324544,3049521151,CR
3049521152,3049586687,EC
3049586688,3049635839,PA
3049635840,3049652223,AR
@@ -76847,7 +89509,7 @@
3049754624,3049762815,AR
3049762816,3049766911,HN
3049766912,3049775103,ES
-3049775104,3049783295,PA
+3049775104,3049783295,GY
3049783296,3050045439,CL
3050045440,3050307583,CO
3050307584,3050373119,VE
@@ -76932,9 +89594,7 @@
3050711680,3050711807,BR
3050711808,3050712063,US
3050712064,3050712079,FR
-3050712080,3050712127,BR
-3050712128,3050712191,US
-3050712192,3050712319,BR
+3050712080,3050712319,BR
3050712320,3050712575,US
3050712576,3050712591,PL
3050712592,3050712831,BR
@@ -76962,7 +89622,9 @@
3050755328,3050755583,CL
3050755584,3050759935,US
3050759936,3050760191,GB
-3050760192,3050766335,US
+3050760192,3050763519,US
+3050763520,3050763775,GB
+3050763776,3050766335,US
3050766336,3050766351,NO
3050766352,3050766591,BR
3050766592,3050766847,US
@@ -76976,9 +89638,7 @@
3050767888,3050768127,BR
3050768128,3050768383,US
3050768384,3050768399,AT
-3050768400,3050768511,BR
-3050768512,3050768575,US
-3050768576,3050768639,BR
+3050768400,3050768639,BR
3050768640,3050768895,US
3050768896,3050768911,CZ
3050768912,3050769151,BR
@@ -76996,8 +89656,8 @@
3050770960,3050771199,BR
3050771200,3050771455,US
3050771456,3050771471,SG
-3050771472,3050771583,BR
-3050771584,3050771967,US
+3050771472,3050771711,BR
+3050771712,3050771967,US
3050771968,3050771983,EE
3050771984,3050772223,BR
3050772224,3050772479,US
@@ -77039,7 +89699,27 @@
3050778368,3050778623,US
3050778624,3050778639,TR
3050778640,3050778879,BR
-3050778880,3050800383,US
+3050778880,3050789375,US
+3050789376,3050789503,BR
+3050789504,3050789631,US
+3050789632,3050789759,BR
+3050789760,3050789887,US
+3050789888,3050789967,BR
+3050789968,3050789968,US
+3050789969,3050790015,BR
+3050790016,3050790143,US
+3050790144,3050790151,BR
+3050790152,3050790159,US
+3050790160,3050790271,BR
+3050790272,3050790399,US
+3050790400,3050790463,BR
+3050790464,3050790464,US
+3050790465,3050790527,BR
+3050790528,3050790655,US
+3050790656,3050790755,BR
+3050790756,3050790759,US
+3050790760,3050790783,BR
+3050790784,3050800383,US
3050800384,3050800399,AL
3050800400,3050800415,AD
3050800416,3050800431,AI
@@ -77135,8 +89815,7 @@
3050811392,3050811647,HK
3050811648,3050812415,US
3050812416,3050813439,BR
-3050813440,3050815487,DE
-3050815488,3050816255,US
+3050813440,3050816255,US
3050816256,3050816511,NL
3050816512,3050827263,US
3050827264,3050827519,BR
@@ -77145,25 +89824,36 @@
3050829824,3050831871,US
3050831872,3051356159,BR
3051356160,3051372799,CR
-3051372800,3051374591,PA
+3051372800,3051373055,PA
+3051373056,3051373311,CR
+3051373312,3051373567,PA
+3051373568,3051373823,CR
+3051373824,3051374079,PA
+3051374080,3051374335,CR
+3051374336,3051374591,PA
3051374592,3051374847,CR
3051374848,3051375103,PA
3051375104,3051375359,CR
-3051375360,3051375871,PA
-3051375872,3051380735,CR
+3051375360,3051375615,PA
+3051375616,3051380735,CR
3051380736,3051388927,AR
3051388928,3051389183,US
3051389184,3051390207,NL
-3051390208,3051390719,US
+3051390208,3051390463,PA
+3051390464,3051390719,US
3051390720,3051390975,NL
-3051390976,3051394047,US
+3051390976,3051391487,PA
+3051391488,3051391743,US
+3051391744,3051391999,PA
+3051392000,3051392255,US
+3051392256,3051393023,PA
+3051393024,3051393535,US
+3051393536,3051394047,PA
3051394048,3051394303,NL
3051394304,3051395071,US
3051395072,3051395327,NL
-3051395328,3051395839,PA
-3051395840,3051396351,US
-3051396352,3051396607,PA
-3051396608,3051396863,US
+3051395328,3051396095,PA
+3051396096,3051396863,US
3051396864,3051397119,PA
3051397120,3051398143,CO
3051398144,3051399167,AR
@@ -77277,7 +89967,9 @@
3057052672,3057052927,IL
3057052928,3057053183,GB
3057053184,3057053439,US
-3057053440,3057053695,SG
+3057053440,3057053440,SG
+3057053441,3057053441,JP
+3057053442,3057053695,SG
3057053696,3057054719,JP
3057054720,3057055743,CN
3057055744,3057057791,JP
@@ -77305,15 +89997,14 @@
3063971840,3063988223,AU
3063988224,3064004607,JP
3064004608,3064012799,LK
-3064012800,3064013823,CA
-3064013824,3064015871,HK
+3064012800,3064015871,HK
3064015872,3064016895,AU
3064016896,3064017919,SG
3064017920,3064018943,IN
3064018944,3064019967,NZ
3064019968,3064020991,HK
3064020992,3064021503,AU
-3064021504,3064021759,HK
+3064021504,3064021759,KR
3064022016,3064023039,HK
3064023040,3064024063,SG
3064024064,3064025087,JP
@@ -77363,8 +90054,7 @@
3069050880,3069124607,CN
3069124608,3069126655,PH
3069126656,3069127679,MY
-3069127680,3069128703,TW
-3069128704,3069149183,HK
+3069127680,3069149183,HK
3069149184,3069181951,AU
3069181952,3069706239,CN
3069706240,3069968383,JP
@@ -77378,7 +90068,7 @@
3070169088,3070170111,ID
3070170112,3070171135,MY
3070171136,3070172159,HK
-3070172160,3070174207,AU
+3070172160,3070173183,AU
3070174208,3070175231,CN
3070175232,3070176255,PH
3070176256,3070177279,HK
@@ -77471,7 +90161,9 @@
3082190848,3082289151,JP
3082289152,3087007743,CN
3087007744,3088449535,US
-3088449536,3088515071,TH
+3088449536,3088497791,TH
+3088497792,3088497919,RU
+3088497920,3088515071,TH
3088515072,3088629759,US
3088629760,3088633855,NL
3088633856,3088686591,US
@@ -77502,9 +90194,7 @@
3088869376,3088870143,NL
3088870144,3088871423,US
3088871424,3088871935,NL
-3088871936,3088882687,US
-3088882688,3088883199,NL
-3088883200,3088902143,US
+3088871936,3088902143,US
3088902144,3088902655,NL
3088902656,3088913663,US
3088913664,3088913919,NL
@@ -77556,11 +90246,7 @@
3092673024,3092673535,NL
3092673536,3092697087,US
3092697088,3092697599,NL
-3092697600,3092701183,US
-3092701184,3092702207,NL
-3092702208,3092704255,US
-3092704256,3092705279,NL
-3092705280,3092754431,US
+3092697600,3092754431,US
3092754432,3092758527,NL
3092758528,3093168127,US
3093168128,3093200895,CA
@@ -77580,24 +90266,67 @@
3093909657,3093909657,FR
3093909658,3093909812,US
3093909813,3093909813,AT
-3093909814,3093935103,US
+3093909814,3093927935,US
+3093927936,3093928447,CA
+3093928448,3093935103,US
3093935104,3093935359,CA
-3093935360,3093943785,US
+3093935360,3093935615,NL
+3093935616,3093937407,US
+3093937408,3093937663,NL
+3093937664,3093943785,US
3093943786,3093943786,CZ
3093943787,3093945989,US
3093945990,3093945990,AT
-3093945991,3094020095,US
-3094020096,3094023303,CA
+3093945991,3093960639,US
+3093960640,3093960655,GB
+3093960656,3093966239,US
+3093966240,3093966243,GB
+3093966244,3094020095,US
+3094020096,3094022919,CA
+3094022920,3094022927,US
+3094022928,3094023303,CA
3094023304,3094023311,BD
-3094023312,3094032759,CA
+3094023312,3094025447,CA
+3094025448,3094025455,MX
+3094025456,3094026623,CA
+3094026624,3094026631,US
+3094026632,3094028655,CA
+3094028656,3094028663,US
+3094028664,3094029119,CA
+3094029120,3094029151,US
+3094029152,3094030879,CA
+3094030880,3094030887,US
+3094030888,3094032759,CA
3094032760,3094032767,GI
-3094032768,3094041359,CA
+3094032768,3094036383,CA
+3094036384,3094036415,US
+3094036416,3094039423,CA
+3094039424,3094039431,US
+3094039432,3094041359,CA
3094041360,3094041367,DZ
-3094041368,3094045663,CA
+3094041368,3094043271,CA
+3094043272,3094043279,US
+3094043280,3094045663,CA
3094045664,3094045671,CO
-3094045672,3094077751,CA
+3094045672,3094050151,CA
+3094050152,3094050159,US
+3094050160,3094054655,CA
+3094054656,3094054663,MY
+3094054664,3094055359,CA
+3094055360,3094055367,IN
+3094055368,3094068671,CA
+3094068672,3094068679,US
+3094068680,3094068823,CA
+3094068824,3094068831,IN
+3094068832,3094071407,CA
+3094071408,3094071415,DE
+3094071416,3094072647,CA
+3094072648,3094072655,US
+3094072656,3094077751,CA
3094077752,3094077759,US
-3094077760,3094085631,CA
+3094077760,3094080791,CA
+3094080792,3094080799,US
+3094080800,3094085631,CA
3094085632,3096444927,US
3096444928,3096898618,CA
3096898619,3096898619,US
@@ -77606,7 +90335,13 @@
3097143824,3097143831,BD
3097143832,3097493503,US
3097493504,3097772031,CA
-3097772032,3098095615,US
+3097772032,3097821567,US
+3097821568,3097821631,CA
+3097821632,3097823231,US
+3097823232,3097823295,BR
+3097823296,3097823487,US
+3097823488,3097823743,CA
+3097823744,3098095615,US
3098095616,3098099711,CA
3098099712,3098099967,US
3098099968,3098100735,SE
@@ -77643,7 +90378,8 @@
3098422784,3098423039,IT
3098423040,3098423295,GB
3098423296,3098424319,FR
-3098424320,3098425343,CN
+3098424320,3098424831,CN
+3098424832,3098425343,HK
3098425344,3098426367,RU
3098426368,3098427391,FR
3098427392,3098428415,US
@@ -77654,19 +90390,20 @@
3098431488,3098435071,US
3098435072,3098435327,NL
3098435328,3098435583,CA
-3098435584,3098441215,US
+3098435584,3098437631,BR
+3098437632,3098441215,US
3098441216,3098441727,FR
3098441728,3098476543,US
3098476544,3098492927,CA
-3098492928,3098494719,US
+3098492928,3098492991,US
+3098492992,3098493023,CA
+3098493024,3098493751,US
+3098493752,3098493759,CA
+3098493760,3098494719,US
3098494720,3098495743,CA
-3098495744,3098495999,US
-3098496000,3098496255,CA
-3098496256,3098503423,US
-3098503424,3098503679,CA
-3098503680,3098507263,US
-3098507264,3098507519,CA
-3098507520,3103784959,US
+3098495744,3098496943,US
+3098496944,3098496951,CA
+3098496952,3103784959,US
3103850496,3103850751,RU
3103850752,3103851007,PS
3103851008,3103851519,FR
@@ -77683,7 +90420,7 @@
3103855360,3103855615,RU
3103855616,3103855871,ES
3103855872,3103856127,AT
-3103856128,3103856383,PL
+3103856128,3103856383,ES
3103856384,3103856639,RU
3103856640,3103856895,HU
3103856896,3103857151,CZ
@@ -77709,17 +90446,16 @@
3103862016,3103862271,MD
3103862272,3103862527,IT
3103862528,3103862783,FR
-3103862784,3103863039,DE
+3103862784,3103863039,TR
3103863040,3103863295,RU
3103863296,3103863807,UA
-3103863808,3103864063,RU
+3103863808,3103864063,NL
3103864064,3103864319,GB
3103864320,3103864575,DE
3103864576,3103864831,NO
3103864832,3103865087,BG
3103865088,3103865343,DK
3103865344,3103865599,DE
-3103865600,3103865855,BG
3103865856,3103866367,DE
3103866368,3103866879,UA
3103866880,3103867135,RU
@@ -77768,6 +90504,11 @@
3103878400,3103878655,IE
3103878656,3103878911,KG
3103878912,3103879167,UA
+3103879168,3103879423,NL
+3103879424,3103879679,LT
+3103879680,3103880191,IT
+3103880192,3103880447,PT
+3103880448,3103880959,RU
3103916032,3103917055,CH
3103917056,3103918079,IT
3103918080,3103919103,DE
@@ -77782,7 +90523,9 @@
3103925248,3103926271,PL
3103926272,3103926783,CZ
3103926784,3103927039,SK
-3103927040,3103927167,CZ
+3103927040,3103927119,CZ
+3103927120,3103927135,GB
+3103927136,3103927167,CZ
3103927168,3103927295,SK
3103927296,3103928575,NL
3103928576,3103928831,KR
@@ -77814,10 +90557,13 @@
3103954432,3103954943,ES
3103954944,3103955967,SE
3103955968,3103956991,AT
-3103956992,3103958015,CH
+3103956992,3103958015,DE
3103958016,3103960063,GB
3103960064,3103961087,NL
-3103961088,3103962111,AT
+3103961088,3103961343,TR
+3103961344,3103961599,AE
+3103961600,3103961855,AR
+3103961856,3103962111,AT
3103962112,3103963135,DE
3103963136,3103964159,RU
3103964160,3103965183,MK
@@ -77828,8 +90574,10 @@
3103970304,3103971327,UA
3103971328,3103973375,GB
3103973376,3103974399,KZ
-3103974400,3103974911,LT
-3103974912,3103975423,SE
+3103974400,3103974919,LT
+3103974920,3103974943,SE
+3103974944,3103975167,LT
+3103975168,3103975423,SE
3103975424,3103976447,SA
3103976448,3103977471,GB
3103977472,3103978495,NL
@@ -77854,18 +90602,19 @@
3103998976,3103999999,RU
3104000000,3104002047,GB
3104002048,3104003071,DE
-3104003072,3104006143,GB
+3104003072,3104004863,GB
+3104005120,3104006143,GB
3104006144,3104007167,DE
3104007168,3104008191,GG
3104008192,3104009215,NL
3104009216,3104010239,IT
3104010240,3104011263,PL
3104011264,3104012287,ES
-3104012288,3104013055,BH
-3104013056,3104013311,SA
+3104012288,3104012799,BH
+3104012800,3104013311,SA
3104013312,3104014335,IR
3104014336,3104015359,FR
-3104015360,3104016383,EE
+3104015360,3104016383,SE
3104016384,3104017407,HU
3104017408,3104018431,RU
3104018432,3104019455,IL
@@ -77879,7 +90628,8 @@
3104026624,3104027647,NL
3104027648,3104028671,RU
3104028672,3104029695,DE
-3104029696,3104030719,AM
+3104029696,3104029951,AM
+3104029952,3104030719,IT
3104030720,3104031743,HR
3104031744,3104032767,FR
3104032768,3104033791,IR
@@ -77925,7 +90675,9 @@
3104075776,3104076799,NL
3104076800,3104077823,GB
3104077824,3104078847,AT
-3104078848,3104079871,FR
+3104078848,3104079527,FR
+3104079528,3104079531,LU
+3104079532,3104079871,FR
3104079872,3104080895,GB
3104080896,3104081919,GR
3104081920,3104082943,DK
@@ -77940,6 +90692,7 @@
3104089088,3104090111,GB
3104090112,3104091135,CH
3104091136,3104092159,NO
+3104092160,3104093183,GB
3104093184,3104094207,RU
3104094208,3104096255,ES
3104096256,3104097279,IE
@@ -77969,7 +90722,8 @@
3104122880,3104123903,RU
3104123904,3104124159,SE
3104124160,3104124415,LU
-3104124416,3104124927,SE
+3104124416,3104124671,RO
+3104124672,3104124927,CZ
3104124928,3104125951,MT
3104125952,3104126975,LT
3104126976,3104127999,CH
@@ -78001,10 +90755,12 @@
3104154624,3104155647,DK
3104155648,3104156671,DE
3104156672,3104156927,GB
-3104156928,3104157695,RO
+3104156928,3104156959,RO
+3104156960,3104156991,US
+3104156992,3104157695,RO
3104157696,3104158719,TR
3104158720,3104159743,IT
-3104159744,3104160767,DE
+3104159744,3104160767,CH
3104160768,3104161791,GB
3104161792,3104162815,RU
3104162816,3104164863,IT
@@ -78039,7 +90795,9 @@
3104191488,3104192511,PL
3104192512,3104193535,PS
3104193536,3104194559,FR
-3104194560,3104195583,IL
+3104194560,3104195071,IL
+3104195072,3104195327,US
+3104195328,3104195583,IL
3104195584,3104196607,DE
3104196608,3104197631,IT
3104197632,3104198655,GR
@@ -78057,7 +90815,7 @@
3104207872,3104208895,RU
3104208896,3104209919,DE
3104209920,3104210943,RU
-3104211968,3104212991,GB
+3104210944,3104212991,GB
3104212992,3104214015,HU
3104214016,3104215039,FR
3104215040,3104216063,DE
@@ -78068,7 +90826,11 @@
3104220160,3104221183,RU
3104221184,3104222207,CH
3104222208,3104223231,RU
-3104223232,3104224255,EE
+3104223232,3104223423,FR
+3104223424,3104223487,EE
+3104223488,3104223743,FR
+3104223744,3104223999,IT
+3104224000,3104224255,EE
3104224256,3104225279,FI
3104225280,3104226303,UA
3104226304,3104227327,RS
@@ -78094,7 +90856,7 @@
3104248832,3104250879,CZ
3104250880,3104251903,RU
3104251904,3104252415,SE
-3104252416,3104252671,GB
+3104252416,3104252671,NL
3104252672,3104252927,LU
3104252928,3104253951,FR
3104253952,3104254975,RU
@@ -78112,7 +90874,7 @@
3104266240,3104267263,GB
3104267264,3104268287,RU
3104268288,3104269311,NL
-3104269312,3104270335,GB
+3104269312,3104270335,FR
3104270336,3104271359,PL
3104271360,3104272383,FR
3104272384,3104273407,IT
@@ -78140,7 +90902,7 @@
3104296960,3104297983,DE
3104297984,3104299007,FR
3104299008,3104300031,BG
-3104300032,3104301055,NL
+3104300032,3104301055,NO
3104301056,3104301823,US
3104301824,3104302079,NL
3104302080,3104303103,GB
@@ -78158,7 +90920,7 @@
3104314368,3104315391,RU
3104315392,3104316415,IT
3104316416,3104317439,FR
-3104317440,3104318463,TR
+3104317440,3104318463,CY
3104318464,3104319487,IT
3104319488,3104320511,UA
3104320512,3104321535,BE
@@ -78213,7 +90975,10 @@
3104375808,3104376831,DK
3104376832,3104377855,FI
3104377856,3104378879,DE
-3104378880,3104379647,GB
+3104378880,3104379215,GB
+3104379216,3104379223,CZ
+3104379224,3104379391,GB
+3104379392,3104379647,CH
3104379648,3104379903,AT
3104379904,3104380927,FR
3104380928,3104381951,DK
@@ -78248,9 +91013,10 @@
3104412672,3104413695,IT
3104413696,3104414719,FR
3104414720,3104415743,TR
-3104415744,3104416767,UA
+3104415744,3104416767,RU
3104416768,3104417791,SE
-3104417792,3104419839,GB
+3104417792,3104418815,US
+3104418816,3104419839,GB
3104419840,3104421887,DE
3104421888,3104422911,RU
3104422912,3104423935,LU
@@ -78299,7 +91065,7 @@
3104465920,3104466943,GB
3104467968,3104468991,DE
3104468992,3104470015,SA
-3104470016,3104471039,GB
+3104470016,3104471039,IE
3104471040,3104472063,PL
3104472064,3104473087,HU
3104473088,3104474111,RU
@@ -78310,7 +91076,8 @@
3104478208,3104479231,DE
3104479232,3104480255,RU
3104480256,3104482303,NL
-3104482304,3104484351,ES
+3104482304,3104483327,GB
+3104483328,3104484351,ES
3104484352,3104485375,RU
3104485376,3104486399,FR
3104486400,3104488447,RU
@@ -78335,14 +91102,17 @@
3104507904,3104508927,YE
3104508928,3104509951,TR
3104509952,3104510975,DE
-3104510976,3104511999,IT
+3104510976,3104511487,IT
+3104511488,3104511743,NL
+3104511744,3104511999,IT
3104512000,3104513023,LT
3104513024,3104514047,UA
3104514048,3104515071,RU
3104515072,3104516095,GB
3104516096,3104516351,CY
3104516352,3104516607,LU
-3104516608,3104517119,CY
+3104516608,3104516863,CY
+3104516864,3104517119,LU
3104517120,3104518143,IL
3104518144,3104519167,RU
3104519168,3104520191,IT
@@ -78363,7 +91133,7 @@
3104534528,3104535551,SE
3104535552,3104536575,ES
3104536576,3104537599,SA
-3104537600,3104538623,IL
+3104537600,3104538623,US
3104538624,3104539647,PL
3104539648,3104540671,RU
3104540672,3104541695,DE
@@ -78386,7 +91156,9 @@
3104558080,3104559103,GB
3104559104,3104560127,FI
3104560128,3104561151,TR
-3104561152,3104562175,FR
+3104561152,3104561663,FR
+3104561664,3104561919,NL
+3104561920,3104562175,FR
3104562176,3104563199,ES
3104563200,3104564223,IT
3104564224,3104565247,RU
@@ -78404,7 +91176,7 @@
3104576512,3104577535,PL
3104577536,3104578559,IQ
3104578560,3104579583,RU
-3104579584,3104580607,FR
+3104579584,3104581631,FR
3104581632,3104582655,ME
3104582656,3104583679,CH
3104583680,3104584703,FR
@@ -78472,7 +91244,7 @@
3104644096,3104645119,DE
3104645120,3104646143,RU
3104646144,3104647167,FR
-3104647168,3104648191,MT
+3104647168,3104648191,GB
3104648192,3104649215,RU
3104649216,3104650239,GB
3104650240,3104651263,SI
@@ -78494,7 +91266,7 @@
3104664272,3104665599,GB
3104665600,3104668671,RU
3104668672,3104669695,NO
-3104669696,3104670719,GB
+3104669696,3104670719,FR
3104670720,3104672767,RU
3104672768,3104673791,GB
3104673792,3104674815,PL
@@ -78530,13 +91302,13 @@
3104706560,3104707583,UA
3104707584,3104708607,TR
3104708608,3104709631,ES
-3104709632,3104710655,UA
+3104709632,3104710655,NL
3104710656,3104711679,RU
3104711680,3104712703,ES
3104712704,3104714751,RU
3104714752,3104715775,DE
3104715776,3104716799,AT
-3104716800,3104717823,ES
+3104716800,3104718847,ES
3104718848,3104719871,TR
3104719872,3104720895,RU
3104720896,3104721919,PL
@@ -78545,7 +91317,10 @@
3104723968,3104724991,GB
3104724992,3104726015,RU
3104726016,3104727039,DE
-3104727040,3104728063,CY
+3104727040,3104727295,FR
+3104727296,3104727551,DE
+3104727552,3104727807,ES
+3104727808,3104728063,IT
3104728064,3104729087,KZ
3104729088,3104730111,FR
3104730112,3104731135,CH
@@ -78569,8 +91344,8 @@
3104751616,3104751871,GB
3104751872,3104752127,CA
3104752128,3104752255,GB
-3104752256,3104752383,RU
-3104752384,3104752639,UA
+3104752256,3104752511,RU
+3104752512,3104752639,UA
3104752640,3104753663,SA
3104753664,3104754687,GR
3104754688,3104755711,MK
@@ -78649,15 +91424,14 @@
3104830464,3104831487,DE
3104831488,3104832511,NL
3104832512,3104833535,CZ
-3104833536,3104834559,IM
+3104833536,3104834559,GB
3104834560,3104835583,KW
3104835584,3104836607,RU
3104836608,3104837631,BA
3104837632,3104838655,DK
3104838656,3104839679,NL
3104839680,3104840703,IQ
-3104840704,3104841215,UA
-3104841216,3104841727,RU
+3104840704,3104841727,UA
3104841728,3104843775,PL
3104843776,3104844799,GB
3104844800,3104846847,FR
@@ -78665,9 +91439,9 @@
3104847872,3104848895,RU
3104848896,3104849919,DE
3104849920,3104850943,RU
-3104850944,3104851199,GB
-3104851200,3104851455,JE
-3104851456,3104851967,GB
+3104850944,3104851455,JE
+3104851456,3104851711,GB
+3104851712,3104851967,JE
3104851968,3104852991,DE
3104852992,3104854015,AT
3104854016,3104855039,GI
@@ -78731,13 +91505,14 @@
3104912384,3104913407,DK
3104913408,3104914431,FR
3104914432,3104915455,NL
-3104915456,3104916479,CZ
+3104915456,3104916479,RU
3104916480,3104917503,CH
3104917504,3104918527,NL
3104918528,3104919551,RU
3104919552,3104920575,NL
3104920576,3104922623,RU
3104922624,3104923647,NO
+3104923648,3104924671,UA
3104924672,3104925695,CZ
3104925696,3104926719,IT
3104926720,3104927743,FR
@@ -78785,9 +91560,11 @@
3104971776,3104972799,CZ
3104972800,3104973823,GB
3104973824,3104974847,DE
+3104974848,3104975871,UA
3104975872,3104976895,RU
3104976896,3104977919,GB
-3104977920,3104978943,ES
+3104977920,3104978431,NL
+3104978432,3104978943,DE
3104978944,3104979967,BG
3104979968,3104980991,HR
3104980992,3104982015,SK
@@ -78845,7 +91622,7 @@
3105018880,3105019903,IR
3105019904,3105020927,GB
3105020928,3105021439,NL
-3105021440,3105021951,IE
+3105021440,3105021951,IN
3105021952,3105022975,RO
3105022976,3105023999,BG
3105024000,3105025023,IT
@@ -78868,7 +91645,8 @@
3105043456,3105044479,DE
3105044480,3105045503,NL
3105045504,3105046527,DE
-3105046528,3105047551,NO
+3105046528,3105047295,NO
+3105047296,3105047551,DK
3105047552,3105048575,ES
3105048576,3105049599,SK
3105049600,3105050623,KW
@@ -78882,7 +91660,8 @@
3105056056,3105056243,NL
3105056244,3105056244,DE
3105056245,3105056767,NL
-3105056768,3105058815,GB
+3105056768,3105057791,SC
+3105057792,3105058815,GB
3105058816,3105059839,JO
3105059840,3105060863,PL
3105060864,3105061887,CH
@@ -78892,7 +91671,7 @@
3105064960,3105065983,FR
3105065984,3105067007,IT
3105067008,3105069055,GB
-3105069056,3105070079,DE
+3105069056,3105070079,TR
3105070080,3105071103,ES
3105071104,3105072127,FR
3105072128,3105073151,IT
@@ -79028,7 +91807,9 @@
3105212416,3105213439,NL
3105213440,3105214463,TR
3105214464,3105215487,GB
-3105215488,3105216511,FR
+3105215488,3105215743,GP
+3105215744,3105215999,GF
+3105216000,3105216511,GP
3105216512,3105217535,GB
3105217536,3105218559,CZ
3105218560,3105219583,DE
@@ -79040,6 +91821,7 @@
3105224704,3105225727,IT
3105225728,3105226751,AM
3105226752,3105227775,RO
+3105227776,3105228799,UA
3105228800,3105229823,PL
3105229824,3105230847,NL
3105230848,3105231871,UA
@@ -79099,6 +91881,7 @@
3105288192,3105289215,GB
3105289216,3105290239,AT
3105290240,3105291263,TR
+3105291264,3105292287,GB
3105292288,3105293311,AT
3105293312,3105294335,GB
3105294336,3105295359,RU
@@ -79110,6 +91893,7 @@
3105300480,3105301503,RU
3105301504,3105302527,ES
3105302528,3105303551,FR
+3105303552,3105304575,PL
3105304576,3105305599,GE
3105305600,3105308671,GB
3105308672,3105309695,RU
@@ -79142,6 +91926,8 @@
3105340416,3105341439,FR
3105341440,3105342463,ES
3105342464,3105343487,AE
+3105343488,3105344511,PL
+3105344512,3105345535,ES
3105345536,3105346559,DE
3105346560,3105347583,NL
3105347584,3105348607,DK
@@ -79149,8 +91935,7 @@
3105349632,3105350655,DE
3105350656,3105351679,RU
3105351680,3105352703,GB
-3105352704,3105353727,DE
-3105353728,3105354751,AE
+3105352704,3105354751,DE
3105354752,3105355775,BE
3105355776,3105356799,NL
3105356800,3105357823,GB
@@ -79162,14 +91947,22 @@
3105362944,3105363967,CZ
3105363968,3105364991,PL
3105364992,3105366015,FR
-3105366016,3105367039,RS
+3105366016,3105367039,AL
3105367040,3105368063,SI
3105368064,3105370111,RU
3105370112,3105371135,NL
3105371136,3105373183,RU
3105373184,3105374207,SY
3105374208,3105375231,GB
-3105375232,3105376255,DE
+3105375232,3105375295,IT
+3105375296,3105375327,DE
+3105375328,3105375359,CA
+3105375360,3105375375,DE
+3105375376,3105375391,US
+3105375392,3105375551,IT
+3105375552,3105375615,DE
+3105375616,3105375743,IT
+3105375744,3105376255,DE
3105376256,3105377279,GB
3105377280,3105378303,IL
3105378304,3105380351,GB
@@ -79219,7 +92012,8 @@
3105418240,3105419263,CZ
3105419264,3105420287,NL
3105420288,3105421311,RU
-3105421312,3105422335,NL
+3105421312,3105421823,US
+3105421824,3105422335,NL
3105422336,3105423359,IR
3105423360,3105423487,VN
3105423488,3105423615,NO
@@ -79237,6 +92031,7 @@
3105433600,3105434623,FR
3105434624,3105435647,SE
3105435648,3105436671,LT
+3105436672,3105437695,ES
3105437696,3105438719,GB
3105438720,3105439743,RU
3105439744,3105440767,GB
@@ -79264,7 +92059,8 @@
3105460224,3105461247,GB
3105461248,3105462271,PL
3105462272,3105463295,RU
-3105464320,3105465343,BE
+3105463296,3105464319,US
+3105464320,3105465343,NL
3105465344,3105466367,DE
3105466368,3105467391,MT
3105467392,3105468415,GB
@@ -79297,12 +92093,12 @@
3105494016,3105495039,BE
3105495040,3105495295,AE
3105495296,3105495551,GR
-3105495552,3105495807,LU
-3105495808,3105496063,AE
+3105495552,3105496063,LU
3105496064,3105497087,RU
3105497088,3105498111,IR
3105498112,3105499135,DE
3105499136,3105500159,RU
+3105500160,3105501183,ES
3105501184,3105502207,FI
3105502208,3105503231,RU
3105503232,3105504255,NL
@@ -79321,8 +92117,7 @@
3105517568,3105518591,RU
3105518592,3105519615,RS
3105519616,3105520639,RU
-3105520640,3105521151,LU
-3105521152,3105521663,FR
+3105520640,3105521663,LU
3105521664,3105522687,NO
3105522688,3105523711,LT
3105523712,3105524735,ES
@@ -79339,10 +92134,7 @@
3105532928,3105533951,RS
3105533952,3105534975,BA
3105534976,3105535231,ZA
-3105535232,3105535487,NO
-3105535488,3105535794,US
3105535795,3105535795,RU
-3105535796,3105535999,US
3105536000,3105537023,AZ
3105537024,3105538047,AT
3105538048,3105539071,RU
@@ -79359,13 +92151,15 @@
3105549312,3105550079,AT
3105550080,3105550335,FR
3105550336,3105551359,GB
-3105551360,3105553407,FR
+3105551360,3105552383,US
+3105552384,3105553407,FR
3105553408,3105554431,DE
3105554432,3105555455,DK
3105555456,3105556479,CH
3105556480,3105557503,DE
3105557504,3105558527,GB
-3105558528,3105559551,NL
+3105558528,3105558591,US
+3105558592,3105559551,NL
3105559552,3105560575,GB
3105560576,3105561599,NO
3105561600,3105563647,NL
@@ -79388,7 +92182,7 @@
3105581056,3105582079,IL
3105582080,3105583103,CH
3105583104,3105584127,DK
-3105584128,3105585151,JO
+3105584128,3105585151,DE
3105585152,3105586175,AT
3105586176,3105587199,ES
3105587200,3105588223,RS
@@ -79419,14 +92213,22 @@
3105614848,3105615871,NL
3105615872,3105616895,SE
3105616896,3105617919,GB
-3105617920,3105618943,NL
+3105617920,3105617967,NL
+3105617968,3105617999,AF
+3105618000,3105618015,NL
+3105618016,3105618031,AF
+3105618032,3105618047,NL
+3105618048,3105618063,AF
+3105618064,3105618111,NL
+3105618112,3105618127,AF
+3105618128,3105618943,NL
3105618944,3105619967,DE
3105619968,3105620991,TR
3105620992,3105622015,DE
3105622016,3105623039,SI
3105623040,3105624063,GB
3105624064,3105625087,PL
-3105625088,3105626111,LT
+3105625088,3105626111,US
3105626112,3105627135,GB
3105627136,3105628159,FR
3105628160,3105629183,GB
@@ -79439,7 +92241,7 @@
3105633280,3105634303,IT
3105634304,3105635327,NL
3105635328,3105636351,TR
-3105636352,3105637375,IT
+3105636352,3105636863,IT
3105637376,3105637631,NL
3105637632,3105637887,DE
3105637888,3105638399,US
@@ -79449,7 +92251,9 @@
3105641472,3105642495,NL
3105642496,3105644543,GB
3105644544,3105645567,DE
-3105645568,3105646591,SK
+3105645568,3105645868,SK
+3105645869,3105645869,CZ
+3105645870,3105646591,SK
3105646592,3105647615,MD
3105647616,3105648639,UA
3105648640,3105649663,GB
@@ -79460,7 +92264,7 @@
3105651712,3105652735,SK
3105652736,3105653759,NO
3105653760,3105654783,TR
-3105654784,3105655807,SE
+3105655296,3105655807,SE
3105655808,3105656831,ES
3105656832,3105657855,SK
3105657856,3105658879,NL
@@ -79500,7 +92304,7 @@
3105696768,3105697791,GB
3105697792,3105698815,FR
3105698816,3105700863,RU
-3105700864,3105701887,NL
+3105700864,3105701887,BE
3105701888,3105702911,FR
3105702912,3105703935,ES
3105703936,3105704959,IT
@@ -79556,7 +92360,8 @@
3105751040,3105752063,PL
3105752064,3105753087,IR
3105753088,3105754111,GB
-3105754112,3105757183,RU
+3105754112,3105756159,RU
+3105756160,3105757183,US
3105757184,3105758207,GB
3105758208,3105759231,FR
3105759232,3105760255,DE
@@ -79566,7 +92371,8 @@
3105763328,3105764351,FR
3105764352,3105765375,BE
3105765376,3105766399,NL
-3105766400,3105770495,IT
+3105766400,3105769471,IT
+3105769472,3105770495,IE
3105770496,3105771519,IR
3105771520,3105772543,IT
3105772544,3105773567,UA
@@ -79586,7 +92392,11 @@
3105788928,3105789951,SA
3105789952,3105790975,SE
3105790976,3105791999,DE
+3105792000,3105792511,CZ
+3105792512,3105792767,ES
+3105792768,3105793023,GB
3105793024,3105794047,NL
+3105794048,3105795071,ES
3105795072,3105796095,LU
3105796096,3105797119,NL
3105797120,3105798143,IT
@@ -79598,7 +92408,9 @@
3105803264,3105804287,NL
3105804288,3105805311,FR
3105805312,3105806335,GB
-3105806336,3105807359,FR
+3105806336,3105807167,FR
+3105807168,3105807175,KM
+3105807176,3105807359,FR
3105807360,3105808383,RU
3105808384,3105809407,NO
3105809408,3105810431,RU
@@ -79611,8 +92423,8 @@
3105818624,3105819647,NL
3105819648,3105820671,GB
3105820672,3105820927,NL
-3105820928,3105821183,DE
-3105821184,3105821695,GB
+3105820928,3105821439,DE
+3105821440,3105821695,GB
3105821696,3105822719,ES
3105822720,3105823743,PL
3105823744,3105824767,AT
@@ -79641,7 +92453,7 @@
3105844224,3105847295,RU
3105847296,3105848319,BG
3105848320,3105849343,IR
-3105849344,3105850367,NL
+3105849344,3105850367,US
3105850368,3105851391,RU
3105851392,3105852415,FI
3105852416,3105853439,SE
@@ -79715,6 +92527,7 @@
3105916928,3105917951,ES
3105917952,3105918975,NL
3105918976,3105919999,PL
+3105920000,3105921023,BG
3105921024,3105922047,IE
3105922048,3105923071,PL
3105923072,3105924095,CZ
@@ -79728,7 +92541,11 @@
3105930240,3105931263,PT
3105931264,3105932287,US
3105932288,3105933311,SE
-3105933312,3105934335,GB
+3105933312,3105933847,GB
+3105933848,3105933855,IT
+3105933856,3105934215,GB
+3105934216,3105934223,IT
+3105934224,3105934335,GB
3105934336,3105935359,SE
3105935360,3105936383,FR
3105936384,3105937407,CH
@@ -79748,7 +92565,7 @@
3105948672,3105949695,GB
3105949696,3105950719,AT
3105950720,3105951743,FR
-3105951744,3105952767,PT
+3105951744,3105952767,LU
3105952768,3105953791,CH
3105953792,3105954815,FR
3105954816,3105955839,JO
@@ -79765,12 +92582,14 @@
3105966080,3105967103,FI
3105967104,3105968127,GB
3105968128,3105969151,HU
-3105969152,3105970175,BG
+3105969152,3105970175,NL
3105970176,3105971199,FR
3105971200,3105972223,GB
3105972224,3105973247,DK
-3105973248,3105974271,NL
+3105973248,3105974048,US
+3105974049,3105974271,NL
3105974272,3105975295,MD
+3105975296,3105976319,IT
3105976320,3105977343,LB
3105977344,3105978367,NL
3105978368,3105979391,RU
@@ -79779,13 +92598,16 @@
3105981440,3105982463,ES
3105982464,3105983487,CZ
3105983488,3105984511,UA
-3105984512,3105985535,HU
+3105984512,3105985279,CZ
+3105985280,3105985535,HU
3105985536,3105986559,GB
3105986560,3105987583,NL
3105987584,3105988607,CZ
3105988608,3105989631,RU
3105989632,3105990655,NL
-3105990656,3105991679,PS
+3105990656,3105990911,PS
+3105990912,3105991679,US
+3105991680,3105992703,RU
3105992704,3105993727,BH
3105993728,3105994751,DE
3105994752,3105995775,GB
@@ -79796,10 +92618,9 @@
3106000896,3106001919,GB
3106001920,3106002943,FR
3106002944,3106003967,DE
-3106003968,3106004991,NL
3106004992,3106006015,CH
3106006016,3106007039,RU
-3106007040,3106008063,TR
+3106007040,3106008063,CY
3106008064,3106009087,RU
3106009088,3106010111,GB
3106010112,3106011135,RU
@@ -79816,8 +92637,7 @@
3106020352,3106021375,PL
3106021376,3106022399,FR
3106022400,3106023423,IT
-3106023424,3106023679,NL
-3106023680,3106023807,DE
+3106023424,3106023807,DE
3106023808,3106023935,AE
3106023936,3106024063,US
3106024064,3106024191,DE
@@ -79834,8 +92654,7 @@
3106027600,3106027615,IT
3106027616,3106027631,NL
3106027632,3106029567,GB
-3106029568,3106030591,NL
-3106030592,3106031615,LV
+3106030592,3106031615,NL
3106031616,3106032639,AZ
3106032640,3106033663,PL
3106033664,3106034687,GB
@@ -79865,9 +92684,9 @@
3106058240,3106059263,NL
3106059264,3106060287,RU
3106060288,3106061311,DE
-3106061312,3106062335,IE
+3106061312,3106062335,NL
3106062336,3106063359,ES
-3106063360,3106064383,AT
+3106063360,3106064383,DE
3106064384,3106065407,NL
3106065408,3106066431,IT
3106066432,3106067455,GB
@@ -79878,7 +92697,9 @@
3106072576,3106073599,GB
3106073600,3106074623,PL
3106074624,3106076671,RU
-3106076672,3106078719,GB
+3106076672,3106077695,IT
+3106077696,3106078463,GB
+3106078464,3106078719,JP
3106078720,3106080767,RU
3106080768,3106081791,UA
3106081792,3106082815,DE
@@ -79937,11 +92758,11 @@
3106134016,3106135039,DE
3106135040,3106136063,RU
3106136064,3106137087,BE
-3106137088,3106138111,GB
3106138112,3106139135,DE
3106139136,3106140159,SE
3106140160,3106141183,DE
-3106141184,3106142207,IS
+3106141184,3106141695,NL
+3106141696,3106142207,IS
3106142208,3106143231,GB
3106143232,3106144255,CH
3106144256,3106145279,ES
@@ -79964,8 +92785,9 @@
3106160640,3106161663,IT
3106161664,3106162687,BA
3106162688,3106163711,IT
-3106163712,3106164735,GB
-3106164736,3106165759,LT
+3106163712,3106164991,GB
+3106164992,3106165247,LT
+3106165248,3106165759,GB
3106165760,3106166783,BA
3106166784,3106167807,BH
3106167808,3106168831,RO
@@ -79979,7 +92801,6 @@
3106177024,3106178047,IT
3106178048,3106179071,NL
3106179072,3106180095,DE
-3106180096,3106181119,NO
3106181120,3106182143,ES
3106182144,3106183167,AX
3106183168,3106184191,PL
@@ -79992,7 +92813,7 @@
3106190336,3106191359,LU
3106191360,3106192383,DK
3106192384,3106193407,NL
-3106193408,3106194431,IR
+3106193408,3106194431,AU
3106194432,3106195455,UA
3106195456,3106196479,AZ
3106196480,3106198527,ES
@@ -80015,8 +92836,7 @@
3106214912,3106215935,NL
3106215936,3106216959,RS
3106216960,3106217983,FR
-3106219008,3106219519,US
-3106219520,3106220031,DK
+3106217984,3106220031,US
3106220032,3106221055,FR
3106221056,3106222079,IT
3106222080,3106223103,RU
@@ -80024,7 +92844,7 @@
3106224128,3106226175,RU
3106226176,3106228223,NL
3106228224,3106229247,CH
-3106229248,3106230271,GB
+3106229248,3106230271,GG
3106230272,3106231295,IT
3106231296,3106232319,DK
3106232320,3106233343,IQ
@@ -80038,7 +92858,7 @@
3106237440,3106238463,QA
3106238464,3106239487,PL
3106239488,3106240511,IT
-3106240512,3106241535,GB
+3106240512,3106241535,IE
3106241536,3106242559,NL
3106242560,3106243583,RU
3106243584,3106244607,FI
@@ -80054,11 +92874,12 @@
3106252800,3106253823,RS
3106253824,3106255871,GB
3106255872,3106256895,IT
-3106256896,3106257919,CY
+3106256896,3106257919,TR
3106257920,3106258943,RU
3106258944,3106259967,UA
3106259968,3106260991,GB
-3106260992,3106262015,AT
+3106260992,3106261247,DE
+3106261248,3106262015,AT
3106262016,3106263039,IT
3106263040,3106264063,PT
3106264064,3106265087,ES
@@ -80079,7 +92900,9 @@
3106266944,3106266975,FR
3106266976,3106267007,US
3106267008,3106267135,JP
-3106267136,3106269183,ES
+3106267136,3106268415,ES
+3106268416,3106268671,IT
+3106268672,3106269183,ES
3106270208,3106271231,GB
3106271232,3106272255,SK
3106272256,3106273279,NL
@@ -80093,7 +92916,10 @@
3106280448,3106281471,FR
3106281472,3106282495,DK
3106282496,3106283519,LB
-3106283520,3106285567,GB
+3106283520,3106284031,US
+3106284032,3106284287,HK
+3106284288,3106284543,US
+3106284544,3106285567,GB
3106285568,3106286591,DE
3106286592,3106287615,GB
3106287616,3106289663,DE
@@ -80107,7 +92933,9 @@
3106296832,3106297855,RU
3106297856,3106298879,NL
3106298880,3106299903,FR
-3106299904,3106300927,GB
+3106299904,3106300159,GB
+3106300160,3106300415,DE
+3106300416,3106300927,GB
3106300928,3106301951,NL
3106301952,3106302975,GB
3106302976,3106303999,CZ
@@ -80146,7 +92974,7 @@
3106333696,3106334719,GB
3106334720,3106335743,NL
3106335744,3106336767,NO
-3106336768,3106337791,RO
+3106336768,3106337791,DE
3106337792,3106338815,GB
3106338816,3106339839,PL
3106339840,3106340863,IT
@@ -80165,7 +92993,13 @@
3106353152,3106354175,DE
3106354176,3106354316,NL
3106354317,3106354317,BE
-3106354318,3106354943,NL
+3106354318,3106354431,NL
+3106354432,3106354439,GB
+3106354440,3106354447,AT
+3106354448,3106354511,NL
+3106354512,3106354519,GB
+3106354520,3106354527,AT
+3106354528,3106354943,NL
3106354944,3106354951,GB
3106354952,3106354959,AT
3106354960,3106355023,NL
@@ -80191,7 +93025,7 @@
3106372608,3106373631,SE
3106373632,3106374655,FI
3106374656,3106375679,RU
-3106375680,3106376703,SE
+3106375680,3106376703,ES
3106376704,3106377727,FR
3106377728,3106378751,SE
3106378752,3106379775,RU
@@ -80242,6 +93076,7 @@
3106428928,3106429951,FI
3106429952,3106431999,NL
3106432000,3106433023,FR
+3106433024,3106434047,RU
3106434048,3106435071,NL
3106435072,3106436095,PL
3106436096,3106437119,DE
@@ -80316,7 +93151,7 @@
3106483827,3106483827,FR
3106483828,3106484223,GB
3106484224,3106485247,NL
-3106485248,3106486271,CZ
+3106485248,3106485759,CZ
3106486272,3106488319,DE
3106488320,3106489343,NO
3106489344,3106490367,PL
@@ -80324,7 +93159,7 @@
3106491392,3106492415,CH
3106492416,3106493439,PL
3106493440,3106494463,SY
-3106494464,3106495487,SE
+3106494464,3106495487,IT
3106495488,3106496511,PL
3106496512,3106497535,ES
3106497536,3106498559,RU
@@ -80335,7 +93170,9 @@
3106503680,3106504703,NL
3106504704,3106505727,PL
3106505728,3106506751,CH
-3106506752,3106509823,NL
+3106506752,3106507775,NL
+3106507776,3106508287,CZ
+3106508288,3106509823,NL
3106509824,3106510847,SE
3106510848,3106511871,FR
3106511872,3106512895,GE
@@ -80358,7 +93195,7 @@
3106532352,3106533375,BE
3106533376,3106533887,SE
3106533888,3106534143,GB
-3106534144,3106534399,SE
+3106534144,3106534399,NO
3106534400,3106535423,ES
3106535424,3106536447,UA
3106536448,3106537471,IT
@@ -80443,7 +93280,8 @@
3106628608,3106629631,RU
3106629632,3106630655,EE
3106630656,3106630911,US
-3106630912,3106631679,GB
+3106630912,3106631423,GB
+3106631424,3106631679,US
3106631680,3106632703,SK
3106632704,3106633727,DE
3106633728,3106634751,FI
@@ -80463,7 +93301,11 @@
3106648064,3106649087,DE
3106649088,3106649855,ES
3106649856,3106649863,FR
-3106649864,3106650111,ES
+3106649864,3106649983,ES
+3106649984,3106649999,GB
+3106650000,3106650015,ES
+3106650016,3106650031,DE
+3106650032,3106650111,ES
3106650112,3106651135,GB
3106651136,3106652159,AZ
3106652160,3106653183,IE
@@ -80473,7 +93315,7 @@
3106656256,3106657279,GB
3106657280,3106658303,NL
3106658304,3106659327,GB
-3106659328,3106660351,LT
+3106659328,3106660351,NL
3106660352,3106661375,UA
3106661376,3106662399,TR
3106662400,3106663423,IE
@@ -80494,7 +93336,9 @@
3106680832,3106682879,AT
3106682880,3106683903,LU
3106683904,3106684927,ES
-3106684928,3106685951,GB
+3106684928,3106685183,DE
+3106685184,3106685695,US
+3106685696,3106685951,GB
3106685952,3106686975,RU
3106686976,3106687999,LT
3106688000,3106688255,GB
@@ -80550,8 +93394,8 @@
3106735168,3106735199,IE
3106735200,3106735263,DE
3106735264,3106735295,FR
-3106735296,3106735327,IE
-3106735328,3106736127,GB
+3106735296,3106735359,IE
+3106735360,3106736127,GB
3106736128,3106737151,IE
3106737152,3106738175,RO
3106738176,3106739199,DE
@@ -80567,10 +93411,7 @@
3106748416,3106749439,CZ
3106749440,3106750463,RU
3106750464,3106751487,BG
-3106751488,3106751805,IT
-3106751806,3106751806,SM
-3106751807,3106751999,IT
-3106752000,3106752255,SM
+3106751488,3106752255,SM
3106752256,3106752511,IT
3106752512,3106753535,ES
3106753536,3106754559,IS
@@ -80582,8 +93423,8 @@
3106759680,3106760703,RU
3106760704,3106761727,IE
3106761728,3106762751,DE
-3106762752,3106763007,NL
-3106763008,3106763775,DE
+3106762752,3106763263,NL
+3106763264,3106763775,DE
3106763776,3106764799,NL
3106764800,3106765823,SE
3106765824,3106766847,CZ
@@ -80603,12 +93444,12 @@
3106780160,3106781183,FR
3106781184,3106782207,DK
3106782208,3106783231,IR
-3106783232,3106783743,NL
-3106783744,3106784255,AE
+3106783232,3106784255,NL
3106784256,3106785279,HU
3106785280,3106786303,CZ
3106786304,3106787327,DE
-3106787328,3106788351,GB
+3106787328,3106787583,GB
+3106787840,3106788351,GB
3106788352,3106789375,AT
3106789376,3106790399,PL
3106790400,3106792447,GB
@@ -80620,6 +93461,7 @@
3106797568,3106798591,DE
3106798592,3106799615,FR
3106799616,3106800639,IR
+3106800640,3106801663,CH
3106801664,3106804735,RU
3106804736,3106805759,EE
3106805760,3106806783,IT
@@ -80632,7 +93474,10 @@
3106813952,3106814975,CH
3106814976,3106815999,MD
3106816000,3106817023,NL
-3106817024,3106818047,IT
+3106817024,3106817279,IT
+3106817280,3106817535,VA
+3106817536,3106817791,CA
+3106817792,3106818047,IT
3106818048,3106819071,IE
3106819072,3106820095,IL
3106820096,3106821247,CH
@@ -80667,7 +93512,7 @@
3106843648,3106844671,GB
3106844672,3106845695,GE
3106845696,3106846719,NL
-3106846720,3106847743,RU
+3106846720,3106847743,DE
3106847744,3106848767,UA
3106848768,3106849791,NL
3106849792,3106850815,RU
@@ -80682,7 +93527,8 @@
3106857984,3106859007,FR
3106859008,3106860031,NL
3106860032,3106861055,UA
-3106861056,3106863103,PL
+3106861056,3106862079,PT
+3106862080,3106863103,PL
3106863104,3106864127,UA
3106864128,3106865151,IE
3106865152,3106866175,NL
@@ -80717,7 +93563,7 @@
3106891776,3106892799,GB
3106892800,3106893823,IT
3106893824,3106894847,NL
-3106894848,3106895871,GB
+3106894848,3106895871,MC
3106895872,3106896895,NL
3106896896,3106897919,DE
3106897920,3106898943,ES
@@ -80736,7 +93582,7 @@
3106910208,3106911231,CZ
3106911232,3106912255,IQ
3106912256,3106913279,HU
-3106913280,3106914303,RS
+3106913280,3106914303,AL
3106914304,3106915327,SE
3106915328,3106917375,NL
3106917376,3106918399,RU
@@ -80751,7 +93597,8 @@
3106926592,3106927615,FR
3106927616,3106928639,ES
3106928640,3106929663,NO
-3106929664,3106930687,FR
+3106930304,3106930319,US
+3106930336,3106930351,CA
3106930688,3106931711,DE
3106931712,3106932735,AT
3106932736,3106933759,PL
@@ -80767,28 +93614,16 @@
3106944000,3106945023,IT
3106945024,3106946047,NL
3106946048,3106946559,JE
-3106946560,3106946820,GB
-3106946821,3106946823,JE
-3106946824,3106946835,GB
-3106946836,3106946837,JE
-3106946838,3106946838,GB
-3106946839,3106946839,JE
-3106946840,3106946846,GB
-3106946847,3106946849,JE
-3106946850,3106946854,GB
-3106946855,3106946855,JE
-3106946856,3106946857,GB
-3106946858,3106946859,JE
-3106946860,3106946872,GB
-3106946873,3106946874,JE
-3106946875,3106947071,GB
+3106946560,3106946815,GB
+3106946816,3106946943,JE
+3106946944,3106947071,GB
3106947072,3106948095,AE
3106948096,3106949119,NL
3106949120,3106950143,RU
3106950144,3106951167,IM
3106951168,3106952191,SE
3106952192,3106954239,ES
-3106954240,3106955263,DE
+3106954240,3106956287,DE
3106956288,3106957311,NL
3106957312,3106958335,DE
3106958336,3106959359,GB
@@ -80814,8 +93649,7 @@
3106979840,3106980863,ES
3106980864,3106981887,UA
3106981888,3106982911,FR
-3106982912,3106983935,ES
-3106983936,3106984959,DE
+3106982912,3106984959,DE
3106984960,3106985983,TR
3106985984,3106989055,DE
3106989056,3106990079,CH
@@ -80840,7 +93674,8 @@
3107010560,3107011583,IT
3107011584,3107012607,IE
3107012608,3107013631,RU
-3107013632,3107015679,GB
+3107013632,3107014655,DE
+3107014656,3107015679,GB
3107015680,3107016703,DE
3107016704,3107017087,GB
3107017088,3107017107,NL
@@ -80848,13 +93683,13 @@
3107017109,3107017127,NL
3107017128,3107017128,GB
3107017129,3107017151,NL
-3107017152,3107017215,GB
-3107017216,3107017727,NL
+3107017152,3107017727,GB
3107017728,3107018751,IR
3107018752,3107019775,BG
3107019776,3107020799,GB
3107020800,3107021823,IR
-3107021824,3107022847,IL
+3107021824,3107022079,GB
+3107022080,3107022847,IL
3107022848,3107023871,IR
3107023872,3107024895,RU
3107024896,3107025919,GB
@@ -80910,13 +93745,13 @@
3107079168,3107080191,TR
3107080192,3107082239,FR
3107082240,3107083263,RU
-3107083264,3107084287,BE
+3107083264,3107084287,LU
3107084288,3107085311,FI
3107085312,3107086335,NL
3107086336,3107087359,EE
3107087360,3107088383,IE
3107088384,3107089407,BR
-3107089408,3107090431,DE
+3107089408,3107090431,IT
3107090432,3107091455,FR
3107091456,3107092479,ES
3107092480,3107093503,DE
@@ -80963,10 +93798,9 @@
3107130368,3107131391,IT
3107131392,3107132415,GE
3107132416,3107133439,RU
-3107133440,3107133951,TR
-3107133952,3107134463,CY
+3107133440,3107134463,CY
3107134464,3107135487,CZ
-3107135488,3107136511,SE
+3107135488,3107136511,DE
3107136512,3107137535,TR
3107137536,3107138559,IR
3107138560,3107139583,ES
@@ -80993,11 +93827,19 @@
3107161088,3107162111,GR
3107162112,3107163135,IT
3107163136,3107164159,RU
-3107164160,3107165183,SE
+3107164160,3107164213,FR
+3107164214,3107164214,SE
+3107164215,3107164269,FR
+3107164270,3107164270,SE
+3107164271,3107164525,FR
+3107164526,3107164526,SE
+3107164527,3107164777,FR
+3107164778,3107164778,SE
+3107164779,3107165183,FR
3107165184,3107166207,NL
3107166208,3107167231,AE
3107167232,3107168255,RU
-3107168256,3107169279,IE
+3107168256,3107169279,ES
3107169280,3107170303,TR
3107170304,3107171327,IT
3107171328,3107172351,GB
@@ -81024,10 +93866,9 @@
3107189760,3107190271,GB
3107190272,3107190783,UA
3107190784,3107191807,CZ
-3107191808,3107192831,GB
-3107192832,3107193087,NL
-3107193088,3107193855,US
-3107193856,3107194879,NL
+3107191808,3107192063,AE
+3107192064,3107192831,GB
+3107192832,3107194879,NL
3107194880,3107195903,IT
3107195904,3107196927,NL
3107196928,3107197951,ES
@@ -81060,10 +93901,10 @@
3107226624,3107227647,RU
3107227648,3107228671,US
3107228672,3107229695,RU
-3107229696,3107230719,GB
-3107230720,3107231743,US
+3107229696,3107231743,GB
3107231744,3107232767,RU
-3107232768,3107233791,SE
+3107232768,3107233023,GB
+3107233024,3107233791,SE
3107233792,3107234815,DE
3107234816,3107235839,FI
3107235840,3107236863,PL
@@ -81084,8 +93925,8 @@
3107252224,3107253247,SY
3107253248,3107254271,NL
3107254272,3107255295,IT
-3107255296,3107256319,DE
-3107256320,3107258367,GB
+3107255296,3107257343,DE
+3107257344,3107258367,GB
3107258368,3107259391,IT
3107259392,3107260415,CZ
3107260416,3107261439,NL
@@ -81098,7 +93939,9 @@
3107267584,3107268607,IT
3107268608,3107270655,DE
3107270656,3107271679,NL
-3107271680,3107272703,AE
+3107271680,3107271680,AE
+3107271681,3107271935,CY
+3107271936,3107272703,AE
3107272704,3107273727,GB
3107273728,3107274751,TR
3107274752,3107275775,SE
@@ -81107,7 +93950,9 @@
3107277824,3107278847,UA
3107278848,3107279871,FR
3107279872,3107280895,FI
-3107280896,3107281919,NL
+3107280896,3107281151,NL
+3107281152,3107281407,IS
+3107281408,3107281919,NL
3107281920,3107282943,GB
3107282944,3107283967,PL
3107283968,3107284991,AL
@@ -81120,15 +93965,15 @@
3107291136,3107292159,NL
3107292160,3107293183,PL
3107293184,3107294207,FR
+3107294208,3107295231,IR
3107295232,3107296255,PL
3107296256,3107297279,IT
3107297280,3107298303,PL
3107298304,3107299327,DE
3107299328,3107300351,NL
3107300352,3107301375,SE
-3107301376,3107301457,GB
-3107301458,3107301458,DE
-3107301459,3107303423,GB
+3107301376,3107302399,DE
+3107302400,3107303423,GB
3107303424,3107304447,DE
3107304448,3107305471,AT
3107305472,3107306495,FR
@@ -81138,8 +93983,7 @@
3107310592,3107311615,DE
3107311616,3107311871,IL
3107311872,3107312127,US
-3107312128,3107312383,FR
-3107312384,3107312639,NL
+3107312128,3107312639,NL
3107312640,3107313663,SE
3107313664,3107315711,DE
3107315712,3107316735,GB
@@ -81161,7 +94005,7 @@
3107326976,3107327999,LT
3107328000,3107329023,AE
3107329024,3107330047,RU
-3107331072,3107332095,NO
+3107330048,3107332095,NO
3107332096,3107333119,IT
3107333120,3107334143,FR
3107334144,3107335167,RU
@@ -81187,7 +94031,7 @@
3107356672,3107357695,SI
3107357696,3107358719,SY
3107358720,3107359743,RU
-3107359744,3107360767,IE
+3107359744,3107360767,NL
3107360768,3107361791,AT
3107361792,3107362815,DE
3107362816,3107363839,IT
@@ -81209,8 +94053,8 @@
3107377152,3107378175,AT
3107378176,3107379199,IT
3107379200,3107380223,NL
-3107380224,3107380735,RU
-3107380736,3107381247,GB
+3107380224,3107380991,RU
+3107380992,3107381247,GB
3107381248,3107383295,IE
3107383296,3107384319,DE
3107384320,3107385343,RU
@@ -81231,7 +94075,39 @@
3107399680,3107400703,RU
3107400704,3107401727,AL
3107401728,3107402751,EE
-3107402752,3107403775,GB
+3107402752,3107402819,US
+3107402820,3107402821,NL
+3107402822,3107402823,GB
+3107402824,3107402839,US
+3107402840,3107402843,GB
+3107402844,3107402845,US
+3107402846,3107402849,GB
+3107402850,3107402855,JO
+3107402856,3107402857,GB
+3107402858,3107402859,DE
+3107402860,3107402863,US
+3107402864,3107402865,DE
+3107402866,3107402877,US
+3107402878,3107402883,GB
+3107402884,3107402885,US
+3107402886,3107402887,IQ
+3107402888,3107402899,GB
+3107402900,3107402903,MY
+3107402904,3107402909,FR
+3107402910,3107402911,CN
+3107402912,3107402915,US
+3107402916,3107402921,HK
+3107402922,3107402925,NL
+3107402926,3107402927,GB
+3107402928,3107402929,GI
+3107402930,3107402931,AU
+3107402932,3107402939,CN
+3107402940,3107402945,JO
+3107402946,3107402947,IQ
+3107402948,3107402949,GB
+3107402950,3107402951,IQ
+3107402952,3107402959,DO
+3107402960,3107403775,GB
3107403776,3107404799,ES
3107404800,3107405823,GB
3107405824,3107406847,PL
@@ -81254,6 +94130,7 @@
3107427328,3107428351,AL
3107428352,3107429375,DE
3107429376,3107430399,RS
+3107430400,3107431423,AT
3107431424,3107432447,FR
3107432448,3107433471,IT
3107433472,3107434495,RU
@@ -81288,16 +94165,14 @@
3107467264,3107468287,FR
3107468288,3107469311,NL
3107469312,3107470335,DK
-3107470336,3107472383,NL
-3107472384,3107473407,GB
+3107470336,3107471359,NL
+3107471360,3107473407,GB
3107473408,3107474431,IL
3107474432,3107475455,ES
3107475456,3107475610,SC
3107475611,3107475611,NL
3107475612,3107476479,SC
-3107476480,3107476765,BG
-3107476766,3107476766,US
-3107476767,3107477503,BG
+3107476480,3107477503,US
3107477504,3107478527,AE
3107478528,3107480575,IR
3107480576,3107481599,DK
@@ -81309,7 +94184,7 @@
3107486720,3107487743,AT
3107487744,3107489791,DE
3107489792,3107490815,NL
-3107490816,3107491839,DK
+3107490816,3107491839,US
3107491840,3107492863,NL
3107492864,3107493887,DE
3107493888,3107494911,FR
@@ -81355,11 +94230,10 @@
3107508224,3107509247,PL
3107509248,3107510271,SE
3107510272,3107511295,IT
-3107511296,3107511807,RS
-3107511808,3107512319,SI
+3107511296,3107512319,RS
3107512320,3107513343,NL
3107513344,3107514367,DE
-3107514368,3107515391,UA
+3107514368,3107515391,NL
3107515392,3107516415,TR
3107516416,3107517439,FR
3107517440,3107518463,PL
@@ -81377,7 +94251,8 @@
3107531776,3107532799,MD
3107532800,3107533823,AT
3107533824,3107534847,FR
-3107534848,3107536895,NL
+3107534848,3107536639,NL
+3107536640,3107536895,US
3107536896,3107537919,TR
3107537920,3107538943,AM
3107538944,3107539967,KZ
@@ -81457,7 +94332,8 @@
3107618816,3107619839,CH
3107619840,3107620863,IT
3107620864,3107621887,NO
-3107621888,3107623935,SE
+3107621888,3107622911,JP
+3107622912,3107623935,SE
3107623936,3107624959,NL
3107624960,3107625983,RU
3107625984,3107627007,DE
@@ -81519,7 +94395,7 @@
3107685376,3107686399,IT
3107686400,3107688447,RU
3107688448,3107689471,CZ
-3107689472,3107690495,US
+3107689472,3107690495,GB
3107690496,3107691519,IT
3107691520,3107692543,UA
3107692544,3107693567,PL
@@ -81553,8 +94429,7 @@
3107719168,3107720191,FR
3107720192,3107721215,RU
3107721216,3107723263,DE
-3107723264,3107724287,FR
-3107724288,3107725311,GB
+3107723264,3107725311,FR
3107725312,3107726335,IR
3107726336,3107727359,DE
3107727360,3107728383,ES
@@ -81644,10 +94519,11 @@
3107814400,3107815423,ES
3107815424,3107816447,RU
3107816448,3107817471,GB
-3107817472,3107818495,UA
+3107817472,3107818495,NL
3107818496,3107819519,GB
3107819520,3107820543,FR
-3107820544,3107821567,LV
+3107820544,3107821311,LV
+3107821312,3107821567,SE
3107821568,3107822591,GB
3107822592,3107823615,UA
3107823616,3107824639,FR
@@ -81669,10 +94545,10 @@
3107843072,3107844095,SE
3107844096,3107845119,CY
3107845120,3107846143,RU
+3107846144,3107847167,NL
3107847168,3107848191,RU
3107848192,3107849215,IT
3107849216,3107850239,BE
-3107850240,3107851263,CZ
3107851264,3107853311,NL
3107853312,3107854335,ES
3107854336,3107855359,DE
@@ -81692,7 +94568,7 @@
3107869696,3107870719,GB
3107870720,3107871743,DE
3107871744,3107872767,PL
-3107872768,3107873791,LV
+3107872768,3107873791,GB
3107873792,3107874815,RU
3107874816,3107875839,CH
3107875840,3107876863,CZ
@@ -81705,7 +94581,8 @@
3107883008,3107884031,US
3107884032,3107885055,NO
3107885056,3107887103,DE
-3107887104,3107889151,GB
+3107887104,3107888127,BG
+3107888128,3107889151,GB
3107889152,3107890175,NO
3107890176,3107891199,IE
3107891200,3107892223,CH
@@ -81716,14 +94593,16 @@
3107896320,3107897343,NL
3107897344,3107898367,RU
3107898368,3107899391,LV
-3107899392,3107900415,RU
+3107899392,3107899903,RU
+3107899904,3107900159,KZ
+3107900160,3107900415,RU
3107900416,3107900927,DE
3107900928,3107901439,SE
3107901440,3107902463,NL
3107902464,3107904511,GB
3107904512,3107907583,FR
3107907584,3107908607,IR
-3107908608,3107909631,BG
+3107908608,3107909631,US
3107909632,3107910655,IT
3107910656,3107911679,DE
3107911680,3107912703,IT
@@ -81746,8 +94625,8 @@
3107929088,3107930111,RU
3107930112,3107931135,CH
3107931136,3107932159,NL
-3107932160,3107932415,SE
-3107932416,3107934207,MT
+3107932160,3107932671,SE
+3107932672,3107934207,MT
3107934208,3107935231,GB
3107935232,3107936255,PL
3107936256,3107937279,IT
@@ -81763,7 +94642,7 @@
3107947520,3107948543,IT
3107948544,3107949567,RO
3107949568,3107950591,GB
-3107950592,3107951615,US
+3107950592,3107951615,IE
3107951616,3107952639,CH
3107952640,3107953663,NL
3107953664,3107954687,SK
@@ -81773,7 +94652,7 @@
3107957760,3107958783,FR
3107958784,3107959807,AL
3107959808,3107960831,PT
-3107960832,3107961855,GB
+3107960832,3107961855,IM
3107961856,3107962879,RU
3107962880,3107963903,FR
3107963904,3107964927,RU
@@ -81787,14 +94666,14 @@
3107972096,3107973119,IT
3107973120,3107974143,SA
3107974144,3107975167,IR
+3107975168,3107976191,GB
3107976192,3107977215,NL
3107977216,3107978239,AT
-3107978240,3107979263,IN
+3107978240,3107979263,NL
3107979264,3107980287,ME
3107980288,3107981311,BE
3107981312,3107981823,IL
-3107981824,3107982079,US
-3107982080,3107982335,IL
+3107981824,3107982335,US
3107982336,3107983359,GB
3107983360,3107984383,IE
3107984384,3107985407,BG
@@ -81817,9 +94696,9 @@
3108001792,3108002815,GB
3108002816,3108003839,RO
3108003840,3108004863,DE
-3108004864,3108005375,GB
+3108004864,3108005375,US
3108005376,3108005631,CA
-3108005632,3108005887,GB
+3108005632,3108005887,US
3108005888,3108006911,LT
3108006912,3108007935,NL
3108007936,3108008959,DE
@@ -81827,7 +94706,7 @@
3108009984,3108011007,NL
3108011008,3108012031,DE
3108012032,3108013055,FR
-3108013056,3108014079,CH
+3108013056,3108014079,HR
3108014080,3108015103,NL
3108015104,3108015359,GB
3108015360,3108015615,NL
@@ -81857,8 +94736,8 @@
3108038656,3108039679,ES
3108039680,3108040703,MD
3108040704,3108041727,ES
-3108041728,3108042751,DE
-3108042752,3108044799,GB
+3108041728,3108042751,GB
+3108043776,3108044799,GB
3108044800,3108045823,LU
3108045824,3108046847,DE
3108046848,3108047871,HU
@@ -81879,10 +94758,11 @@
3108064256,3108065279,CZ
3108065280,3108066303,FR
3108066304,3108067327,GB
-3108067328,3108068351,AT
+3108067328,3108068351,DE
3108068352,3108069375,CZ
3108069376,3108070399,FR
3108070400,3108071423,GB
+3108071424,3108072447,RU
3108072448,3108073471,GB
3108073472,3108074495,FR
3108074496,3108075519,DK
@@ -81936,7 +94816,9 @@
3108119552,3108120575,CZ
3108120576,3108122623,ES
3108122624,3108123647,AT
-3108123648,3108124671,HU
+3108123648,3108123903,HU
+3108123904,3108124159,SK
+3108124160,3108124671,HU
3108124672,3108126719,ES
3108126720,3108127743,DE
3108127744,3108128767,BY
@@ -81944,10 +94826,13 @@
3108129792,3108130815,DE
3108130816,3108131839,NL
3108131840,3108132863,RU
+3108132864,3108133887,UA
3108133888,3108134911,NL
3108134912,3108135935,LU
3108135936,3108136959,FR
-3108136960,3108137983,BE
+3108136960,3108137215,NL
+3108137216,3108137471,LU
+3108137472,3108137983,NL
3108137984,3108139007,RO
3108139008,3108141055,GB
3108141056,3108142079,PL
@@ -81958,7 +94843,8 @@
3108146176,3108147199,NL
3108147200,3108148223,RU
3108148224,3108149247,SI
-3108149248,3108150271,FR
+3108149248,3108150015,FR
+3108150016,3108150271,GB
3108150272,3108151295,CH
3108151296,3108152319,CY
3108152320,3108152575,GB
@@ -81979,11 +94865,11 @@
3108167680,3108169727,IR
3108169728,3108170751,FR
3108170752,3108171775,DE
-3108171776,3108172799,GB
3108172800,3108173823,DE
3108173824,3108174847,NL
3108174848,3108175871,KG
-3108175872,3108176895,UA
+3108175872,3108176127,NL
+3108176128,3108176895,UA
3108176896,3108177919,NL
3108177920,3108178943,PL
3108178944,3108179967,IR
@@ -82001,7 +94887,8 @@
3108191232,3108193279,NL
3108193280,3108194303,PL
3108194304,3108195327,FR
-3108195328,3108196351,ES
+3108195328,3108195328,ES
+3108195329,3108196351,NO
3108196352,3108197375,FI
3108197376,3108198399,IS
3108198400,3108199423,FR
@@ -82017,9 +94904,12 @@
3108209664,3108210687,CZ
3108210688,3108211711,CN
3108211712,3108212735,GB
-3108212736,3108216831,FR
+3108212736,3108215807,FR
+3108215808,3108216831,IR
3108216832,3108217855,RU
-3108217856,3108218879,GB
+3108217856,3108218111,GB
+3108218112,3108218623,US
+3108218624,3108218879,GB
3108218880,3108219903,RU
3108219904,3108220927,AT
3108220928,3108221951,AL
@@ -82063,6 +94953,7 @@
3108258816,3108259839,CZ
3108259840,3108260863,HU
3108260864,3108261887,DE
+3108261888,3108262911,FR
3108262912,3108263935,GB
3108263936,3108264959,NL
3108264960,3108265983,RU
@@ -82113,6 +95004,7 @@
3108307968,3108308991,IQ
3108308992,3108310015,ES
3108310016,3108311039,GB
+3108311040,3108312063,UA
3108312064,3108313087,PL
3108313088,3108314111,LV
3108314112,3108315135,BA
@@ -82142,7 +95034,6 @@
3108337408,3108337663,GB
3108337664,3108338687,IR
3108338688,3108339711,RU
-3108339712,3108340735,NL
3108340736,3108341759,RU
3108341760,3108342783,CH
3108342784,3108343807,FI
@@ -82152,7 +95043,9 @@
3108346880,3108347903,NL
3108347904,3108348927,AT
3108348928,3108349951,BE
-3108349952,3108350975,SE
+3108349952,3108350207,SE
+3108350208,3108350463,US
+3108350464,3108350975,SE
3108350976,3108351999,GE
3108352000,3108354047,DE
3108354048,3108355071,TM
@@ -82168,7 +95061,10 @@
3108365312,3108366335,FR
3108366336,3108367359,NL
3108367360,3108368383,AT
-3108368384,3108369407,RO
+3108368384,3108368639,RO
+3108368640,3108368895,US
+3108368896,3108369151,SG
+3108369152,3108369407,RO
3108369408,3108370431,AT
3108370432,3108371455,FR
3108371456,3108372479,ES
@@ -82197,10 +95093,10 @@
3108395008,3108396031,GB
3108396032,3108397055,ES
3108397056,3108398079,TR
-3108398080,3108399103,PT
3108399104,3108400127,RU
3108400128,3108401151,UA
3108401152,3108402175,NL
+3108402176,3108403199,IT
3108403200,3108404223,DE
3108404224,3108405247,SE
3108405248,3108406271,UA
@@ -82252,7 +95148,7 @@
3108458496,3108459519,UA
3108459520,3108460543,DE
3108460544,3108461567,RS
-3108461568,3108462591,GB
+3108461568,3108462591,DE
3108462592,3108463615,RU
3108463616,3108464639,GB
3108464640,3108465663,HU
@@ -82341,7 +95237,6 @@
3108544512,3108546559,NL
3108546560,3108547583,BE
3108547584,3108548607,GB
-3108548608,3108549631,RO
3108549632,3108550655,NL
3108550656,3108551679,PL
3108551680,3108552703,RU
@@ -82395,6 +95290,7 @@
3108602880,3108603903,EE
3108603904,3108604927,IT
3108604928,3108605951,GB
+3108605952,3108606975,HR
3108606976,3108609023,GB
3108609024,3108610047,LI
3108610048,3108611071,CZ
@@ -82414,7 +95310,8 @@
3108627456,3108628479,PL
3108628480,3108629503,FR
3108629504,3108630527,BG
-3108630528,3108631551,CH
+3108630528,3108631295,CH
+3108631296,3108631551,RS
3108631552,3108633599,IT
3108633600,3108634623,FR
3108634624,3108635647,AT
@@ -82422,13 +95319,13 @@
3108636672,3108637695,FR
3108637696,3108638719,DE
3108638720,3108639743,ES
-3108639744,3108640767,HU
+3108639744,3108640767,TR
3108640768,3108641791,GB
3108641792,3108642815,CH
3108642816,3108643839,FR
3108643840,3108644863,IT
3108644864,3108645887,FR
-3108645888,3108646911,NL
+3108645888,3108646911,US
3108646912,3108647935,DK
3108647936,3108648959,FR
3108648960,3108649983,IM
@@ -82436,7 +95333,10 @@
3108651008,3108652031,DE
3108652032,3108653055,CH
3108653056,3108654079,GI
-3108654080,3108655103,NL
+3108654080,3108654335,DE
+3108654336,3108654591,NL
+3108654592,3108654847,GB
+3108654848,3108655103,DK
3108655104,3108656127,ES
3108656128,3108657151,PL
3108657152,3108658175,RS
@@ -82466,14 +95366,13 @@
3108696064,3108697087,ES
3108697088,3108698111,DE
3108698112,3108699135,IT
-3108699136,3108700159,LT
+3108699136,3108700159,DE
3108700160,3108701183,PL
3108701184,3108702207,RU
3108702208,3108703231,AT
3108703232,3108704255,ES
3108704256,3108705279,SA
-3108705280,3108705791,GB
-3108705792,3108706303,ES
+3108705280,3108706303,ES
3108706304,3108707327,DE
3108707328,3108708351,GB
3108708352,3108709375,CH
@@ -82482,7 +95381,9 @@
3108711424,3108712447,RU
3108712448,3108713471,BG
3108713472,3108714495,RO
-3108714496,3108715519,XK
+3108714496,3108714751,XK
+3108714752,3108715263,KW
+3108715264,3108715519,XK
3108715520,3108716543,GB
3108716544,3108717567,RU
3108717568,3108718591,FR
@@ -82524,15 +95425,12 @@
3108754432,3108755455,GB
3108755456,3108756479,AT
3108756480,3108757503,NL
+3108757504,3108758527,SY
3108758528,3108759551,DE
3108759552,3108760575,CZ
3108760576,3108761599,LV
3108761600,3108762111,AT
-3108762112,3108762239,GB
-3108762240,3108762367,AT
-3108762368,3108762495,GB
-3108762496,3108762559,AT
-3108762560,3108762623,GB
+3108762112,3108762623,GB
3108762624,3108763647,NL
3108763648,3108764671,RU
3108764672,3108765695,NL
@@ -82542,6 +95440,7 @@
3108768000,3108768255,SE
3108768256,3108768511,NL
3108768512,3108768767,CZ
+3108768768,3108769791,RU
3108769792,3108770815,NL
3108770816,3108772863,FR
3108772864,3108773887,RO
@@ -82571,9 +95470,8 @@
3108798464,3108799487,AE
3108799488,3108800511,NL
3108800512,3108801535,SA
-3108801536,3108802559,TR
+3108801536,3108802559,IT
3108802560,3108803583,RU
-3108803584,3108804607,GB
3108804608,3108805631,TR
3108805632,3108808703,DE
3108808704,3108809727,NL
@@ -82615,7 +95513,9 @@
3108848640,3108849663,CH
3108849664,3108850687,GB
3108850688,3108851711,PL
-3108851712,3108852735,GB
+3108851712,3108852039,GB
+3108852040,3108852047,IT
+3108852048,3108852735,GB
3108852736,3108853759,IT
3108853760,3108854783,TR
3108854784,3108855807,CH
@@ -82656,13 +95556,13 @@
3108883456,3108884479,RU
3108884480,3108885503,NL
3108885504,3108886527,BE
-3108886528,3108888575,RU
+3108886528,3108888575,LV
3108888576,3108889599,VA
3108889600,3108893695,RU
3108893696,3108894719,FI
3108894720,3108894975,IL
3108894976,3108895231,DE
-3108895232,3108895743,GB
+3108895232,3108895743,US
3108895744,3108896767,AT
3108896768,3108897791,ES
3108897792,3108899839,GB
@@ -82712,6 +95612,7 @@
3108936704,3108937727,FR
3108937728,3108938751,NL
3108938752,3108940799,GB
+3108940800,3108941823,SE
3108941824,3108942847,DE
3108942848,3108943871,BE
3108943872,3108944895,DE
@@ -82750,7 +95651,7 @@
3108969472,3108970495,ES
3108970496,3108971519,PL
3108971520,3108972543,ES
-3108972544,3108973567,MD
+3108972544,3108973567,NL
3108973568,3108974591,DE
3108974592,3108975615,RU
3108975616,3108976639,IT
@@ -82767,7 +95668,8 @@
3108985856,3108986879,HU
3108986880,3108987903,IR
3108987904,3108988927,RU
-3108989952,3108991999,GB
+3108988928,3108990975,GB
+3108990976,3108991999,NL
3108992000,3108993023,RU
3108993024,3108994047,BG
3108994048,3108995071,DE
@@ -82799,7 +95701,9 @@
3109022720,3109023743,RU
3109023744,3109024767,PL
3109024768,3109025791,LT
-3109025792,3109026815,IT
+3109025792,3109026493,IT
+3109026494,3109026526,SA
+3109026527,3109026815,IT
3109026816,3109027839,CH
3109027840,3109028863,BG
3109028864,3109029887,ES
@@ -82829,12 +95733,12 @@
3109053440,3109054463,IR
3109054464,3109055487,JO
3109055488,3109056511,IL
-3109056512,3109057535,RO
-3109057536,3109058559,GB
+3109056512,3109058559,GB
3109058560,3109059583,DE
-3109059584,3109060095,LU
+3109059584,3109059839,LU
+3109059840,3109060095,DE
3109060096,3109060351,CY
-3109060352,3109060607,LU
+3109060352,3109060607,RO
3109060608,3109061631,LT
3109061632,3109062655,GB
3109062656,3109063679,TR
@@ -82847,12 +95751,14 @@
3109069824,3109070847,MK
3109070848,3109071871,DE
3109071872,3109072895,AZ
+3109072896,3109073919,FR
3109073920,3109074943,NO
3109074944,3109075967,DE
3109075968,3109076991,AT
3109076992,3109078015,HR
3109078016,3109079039,IR
-3109079040,3109080063,CZ
+3109079040,3109079295,IL
+3109079296,3109080063,US
3109080064,3109081087,RU
3109081088,3109082111,SE
3109082112,3109083135,PL
@@ -82873,7 +95779,7 @@
3109098496,3109099519,HU
3109099520,3109100543,RU
3109100544,3109101567,SI
-3109101568,3109102591,CY
+3109101568,3109102591,TR
3109102592,3109103615,DK
3109103616,3109104639,IR
3109104640,3109105663,FR
@@ -82883,7 +95789,7 @@
3109108736,3109109759,RS
3109109760,3109110783,RU
3109110784,3109111807,FI
-3109111808,3109112831,IE
+3109111808,3109112831,GB
3109112832,3109113855,ES
3109113856,3109115903,AZ
3109115904,3109116927,AU
@@ -82894,7 +95800,8 @@
3109118976,3109119999,DE
3109120000,3109121023,PL
3109121024,3109122047,SE
-3109122048,3109123071,GB
+3109122048,3109122559,GB
+3109122560,3109123071,NL
3109123072,3109124095,DK
3109124096,3109126143,ES
3109126144,3109127167,LV
@@ -82906,7 +95813,12 @@
3109128232,3109128239,SE
3109128240,3109128319,NL
3109128320,3109128383,GB
-3109128384,3109128503,NL
+3109128384,3109128463,NL
+3109128464,3109128471,DK
+3109128472,3109128479,SE
+3109128480,3109128487,IE
+3109128488,3109128495,DK
+3109128496,3109128503,SE
3109128504,3109128511,IE
3109128512,3109128719,NL
3109128720,3109128727,GB
@@ -82983,7 +95895,7 @@
3109187584,3109188607,IT
3109188608,3109189631,SA
3109189632,3109190655,AT
-3109190656,3109191679,LV
+3109190656,3109191679,SE
3109191680,3109192703,CH
3109192704,3109193727,IT
3109193728,3109194751,IR
@@ -82999,6 +95911,7 @@
3109203968,3109204991,RU
3109204992,3109206015,IR
3109206016,3109209087,NL
+3109209088,3109210111,RU
3109210112,3109211135,NL
3109211136,3109212159,CH
3109212160,3109213183,NL
@@ -83010,6 +95923,7 @@
3109218304,3109219327,HU
3109219328,3109220351,CZ
3109220352,3109221375,IE
+3109221376,3109222399,RU
3109222400,3109223423,PL
3109223424,3109224447,TR
3109224448,3109225471,RU
@@ -83073,9 +95987,11 @@
3109287936,3109288959,PT
3109288960,3109289983,MK
3109289984,3109291007,NL
-3109291008,3109292031,DE
+3109291008,3109292031,CH
3109292032,3109293055,IE
-3109293056,3109295103,GB
+3109293056,3109294591,GB
+3109294592,3109294847,FR
+3109294848,3109295103,GB
3109295104,3109296127,DE
3109296128,3109297151,BE
3109297152,3109298175,SE
@@ -83086,7 +96002,10 @@
3109302272,3109303295,SY
3109303296,3109304319,SE
3109304320,3109305343,DE
-3109305344,3109306367,DK
+3109305344,3109305599,DK
+3109305600,3109305855,US
+3109305856,3109306111,DK
+3109306112,3109306367,LT
3109306368,3109307391,RO
3109307392,3109308415,IQ
3109308416,3109309439,NL
@@ -83136,7 +96055,9 @@
3109354496,3109355519,IE
3109355520,3109356543,DE
3109356544,3109357567,DK
-3109357568,3109359615,RU
+3109357568,3109358079,RU
+3109358080,3109358591,GB
+3109358592,3109359615,RU
3109359616,3109360639,NL
3109360640,3109362687,IT
3109362688,3109364735,AT
@@ -83180,7 +96101,7 @@
3109405696,3109406719,GB
3109406720,3109407743,RO
3109407744,3109408767,TR
-3109408768,3109409791,IR
+3109408768,3109409791,NL
3109409792,3109410815,IT
3109410816,3109411839,RU
3109411840,3109412863,DE
@@ -83203,7 +96124,9 @@
3109430272,3109431295,IR
3109431296,3109431807,IL
3109431808,3109432319,IT
-3109432320,3109433343,MT
+3109432320,3109432831,MT
+3109432832,3109433087,SE
+3109433088,3109433343,MT
3109433344,3109435391,FR
3109435392,3109436415,UA
3109436416,3109437439,SM
@@ -83224,7 +96147,7 @@
3109455872,3109456895,FR
3109456896,3109457919,PS
3109457920,3109458943,RU
-3109458944,3109459711,LV
+3109458944,3109459711,SE
3109459712,3109459771,GB
3109459772,3109459772,LV
3109459773,3109459869,GB
@@ -83238,19 +96161,16 @@
3109465088,3109466111,DE
3109466112,3109467135,FR
3109467136,3109468159,IR
-3109468160,3109468322,GB
-3109468323,3109468323,ES
-3109468324,3109468351,GB
-3109468352,3109468415,ES
-3109468416,3109468671,GB
-3109468672,3109468799,ES
-3109468800,3109469183,GB
+3109468160,3109468415,ES
+3109468416,3109468543,GB
+3109468544,3109469183,ES
3109469184,3109470207,DE
3109470208,3109471231,AM
3109471232,3109472255,FR
3109472256,3109473279,IT
3109473280,3109474303,IL
3109474304,3109476351,ES
+3109476352,3109477375,GB
3109477376,3109478399,IS
3109478400,3109480447,CH
3109480448,3109481471,DE
@@ -83274,7 +96194,7 @@
3109498880,3109499903,RU
3109499904,3109500927,NO
3109500928,3109502975,GB
-3109502976,3109503999,LB
+3109502976,3109503999,FR
3109504000,3109505023,IT
3109505024,3109506047,DE
3109506048,3109507071,IT
@@ -83294,13 +96214,14 @@
3109521408,3109522431,PL
3109522432,3109523455,CZ
3109523456,3109524479,PL
+3109524480,3109525503,UA
3109525504,3109527551,NL
3109527552,3109528575,IL
3109528576,3109529599,SE
3109529600,3109530623,LB
3109530624,3109531647,TR
3109531648,3109532671,DE
-3109532672,3109533695,IR
+3109532672,3109533695,IE
3109533696,3109534719,NL
3109534720,3109535743,ES
3109535744,3109537791,RU
@@ -83316,7 +96237,7 @@
3109548032,3109549055,IT
3109549056,3109550079,FI
3109550080,3109551103,NL
-3109551104,3109552127,TR
+3109551104,3109552127,CY
3109552128,3109553151,ES
3109553152,3109554175,TR
3109554176,3109555199,RU
@@ -83334,7 +96255,7 @@
3109566464,3109567487,GB
3109567488,3109568511,DE
3109568512,3109569535,NL
-3109569536,3109570559,ES
+3109569536,3109570559,FR
3109570560,3109571583,CZ
3109571584,3109572607,CH
3109572608,3109573631,PS
@@ -83356,12 +96277,13 @@
3109590016,3109591039,NL
3109591040,3109592063,IR
3109592064,3109594111,RU
-3109594112,3109595135,NL
+3109594112,3109594623,NL
+3109594624,3109595135,US
3109595136,3109596159,IT
3109596160,3109597183,TR
3109597184,3109598207,IR
3109598208,3109599231,NL
-3109599232,3109600255,IT
+3109599232,3109600255,GB
3109600256,3109601279,NL
3109601280,3109602303,GB
3109602304,3109603327,FR
@@ -83402,8 +96324,8 @@
3109639168,3109640191,LB
3109640192,3109641215,IQ
3109641216,3109642239,NO
-3109643264,3109643391,DE
-3109643392,3109643519,UA
+3109642240,3109643263,RS
+3109643264,3109643519,DE
3109643520,3109643775,RU
3109643776,3109644031,UA
3109644032,3109644287,ES
@@ -83433,12 +96355,14 @@
3109669888,3109670911,GB
3109670912,3109671935,DE
3109671936,3109672959,HR
-3109672960,3109673215,US
-3109673216,3109673450,GB
-3109673451,3109673451,NO
-3109673452,3109673703,GB
-3109673704,3109673704,IN
-3109673705,3109673727,GB
+3109672960,3109673125,US
+3109673126,3109673126,GB
+3109673127,3109673131,US
+3109673132,3109673132,GB
+3109673133,3109673215,US
+3109673216,3109673463,GB
+3109673464,3109673467,NO
+3109673468,3109673727,GB
3109673728,3109673983,AU
3109673984,3109675007,FR
3109675008,3109677055,DE
@@ -83505,18 +96429,20 @@
3109734400,3109735423,DE
3109735424,3109737471,ES
3109737472,3109738495,NO
-3109738496,3109739519,GB
+3109738496,3109738751,GB
+3109738752,3109739007,CH
+3109739008,3109739519,GB
3109739520,3109740543,NL
3109740544,3109741567,RU
3109741568,3109743615,DE
3109743616,3109744639,HU
3109744640,3109745663,TR
3109745664,3109746687,US
+3109746688,3109747711,SY
3109747712,3109748735,ES
3109748736,3109749759,MT
3109749760,3109750783,DE
-3109750784,3109751807,SE
-3109751808,3109752831,NL
+3109750784,3109752831,NL
3109752832,3109753855,IQ
3109753856,3109754879,GB
3109754880,3109755903,DE
@@ -83529,6 +96455,7 @@
3109763072,3109765119,IT
3109765120,3109766143,NO
3109766144,3109767167,ES
+3109767168,3109768191,UA
3109768192,3109769215,GB
3109769216,3109770239,AT
3109770240,3109771263,GB
@@ -83562,7 +96489,9 @@
3109804032,3109805055,GB
3109805056,3109807103,FR
3109807104,3109808127,ES
-3109808128,3109809151,FR
+3109808128,3109808383,RE
+3109808384,3109808639,GP
+3109808640,3109809151,RE
3109809152,3109810175,GB
3109810176,3109811199,IT
3109811200,3109812223,DE
@@ -83576,7 +96505,7 @@
3109820416,3109820671,KR
3109820672,3109820927,GB
3109820928,3109821183,CA
-3109821184,3109821439,NL
+3109821184,3109821439,GB
3109821440,3109822463,SY
3109822464,3109823487,RU
3109823488,3109824511,FR
@@ -83603,7 +96532,7 @@
3109845504,3109845759,GB
3109845760,3109846015,DE
3109846016,3109847039,CH
-3109847040,3109848063,IE
+3109847040,3109848063,AE
3109848064,3109849087,BG
3109849088,3109852159,RU
3109852160,3109853183,NL
@@ -83612,6 +96541,7 @@
3109855232,3109856255,DE
3109856256,3109857279,IT
3109857280,3109858303,DE
+3109858304,3109859327,NL
3109859328,3109860351,SI
3109860352,3109861375,DE
3109861376,3109862399,RU
@@ -83639,11 +96569,12 @@
3109880832,3109881855,FR
3109881856,3109882879,AT
3109882880,3109883903,NL
-3109883904,3109884927,BE
+3109883904,3109884927,RO
3109884928,3109885951,GL
3109885952,3109886975,NL
3109886976,3109887999,GB
-3109888000,3109888767,PL
+3109888000,3109888255,CZ
+3109888256,3109888767,PL
3109888768,3109889023,RU
3109889024,3109890047,FR
3109890048,3109891071,RU
@@ -83680,14 +96611,14 @@
3109920768,3109921791,SE
3109921792,3109922815,IR
3109922816,3109923839,GB
+3109923840,3109924863,US
3109924864,3109925887,IT
3109925888,3109926143,DE
-3109926144,3109926159,FR
-3109926160,3109926175,GB
-3109926176,3109926183,IT
-3109926184,3109926207,GB
-3109926208,3109926215,ES
-3109926216,3109926279,GB
+3109926144,3109926175,FR
+3109926176,3109926207,IT
+3109926208,3109926255,ES
+3109926256,3109926271,IT
+3109926272,3109926279,GB
3109926280,3109926287,DE
3109926288,3109926335,ES
3109926336,3109926399,GB
@@ -83703,7 +96634,9 @@
3109934080,3109935103,AT
3109935104,3109937151,CH
3109937152,3109938175,ES
-3109938176,3109939199,GB
+3109938176,3109938431,GB
+3109938432,3109938687,US
+3109938688,3109939199,GB
3109939200,3109940223,ES
3109940224,3109941247,DE
3109941248,3109942271,PL
@@ -83723,44 +96656,37 @@
3109952768,3109953023,NL
3109953024,3109953279,CA
3109953280,3109953280,GB
-3109953281,3109953281,US
-3109953282,3109953284,GB
-3109953285,3109953285,IT
-3109953286,3109953288,GB
-3109953289,3109953289,US
-3109953290,3109953291,GB
+3109953281,3109953282,US
+3109953283,3109953283,GB
+3109953284,3109953287,IT
+3109953288,3109953291,US
3109953292,3109953292,HK
3109953293,3109953319,GB
-3109953320,3109953320,MX
-3109953321,3109953359,GB
-3109953360,3109953360,SG
-3109953361,3109953375,GB
-3109953376,3109953376,US
-3109953377,3109953379,GB
-3109953380,3109953380,US
-3109953381,3109953471,GB
-3109953472,3109953472,HK
-3109953473,3109953483,GB
-3109953484,3109953484,AU
-3109953485,3109953491,GB
-3109953492,3109953492,AU
-3109953493,3109953531,GB
-3109953532,3109953532,CA
-3109953533,3109953535,GB
+3109953320,3109953323,MX
+3109953324,3109953359,GB
+3109953360,3109953363,SG
+3109953364,3109953375,GB
+3109953376,3109953383,US
+3109953384,3109953471,GB
+3109953472,3109953475,HK
+3109953476,3109953483,GB
+3109953484,3109953487,AU
+3109953488,3109953491,GB
+3109953492,3109953495,AU
+3109953496,3109953531,GB
+3109953532,3109953535,CA
3109953536,3109954559,RU
3109954560,3109955583,DE
-3109955584,3109956607,BE
3109956608,3109957631,IE
3109957632,3109958655,ES
3109958656,3109959679,CZ
3109959680,3109960703,FR
3109960704,3109961727,SE
-3109961728,3109962751,RU
3109962752,3109963775,PL
3109963776,3109964799,SE
3109964800,3109965823,GI
3109965824,3109966847,IT
-3109966848,3109967871,NL
+3109966848,3109967871,RU
3109967872,3109968895,IT
3109968896,3109969919,NL
3109969920,3109970943,IR
@@ -83791,16 +96717,20 @@
3109994240,3109994495,GB
3109994496,3109994751,BG
3109994752,3109995007,IT
-3109995008,3109995519,GB
+3109995008,3109995136,DE
+3109995137,3109995285,GB
+3109995286,3109995287,US
+3109995288,3109995313,GB
+3109995314,3109995315,US
+3109995316,3109995519,GB
3109995520,3109996543,NL
3109996544,3109997567,IE
3109997568,3109998591,GB
3109998592,3109999615,NL
-3109999616,3110000639,RU
-3110000640,3110001663,UA
+3109999616,3110001663,UA
3110001664,3110002687,FR
3110002688,3110003711,RU
-3110003712,3110004735,FR
+3110003712,3110004735,NL
3110004736,3110005759,GB
3110005760,3110006783,NL
3110006784,3110007807,NO
@@ -83813,10 +96743,10 @@
3110013952,3110014975,NL
3110014976,3110015999,GB
3110016000,3110017023,UA
-3110017024,3110018047,NL
-3110018048,3110018303,DE
+3110017024,3110018303,NL
3110018304,3110018559,US
-3110018560,3110020095,DE
+3110018560,3110019071,NL
+3110019072,3110020095,DE
3110020096,3110021119,IT
3110021120,3110022143,IE
3110022144,3110023167,NL
@@ -83824,7 +96754,7 @@
3110024192,3110025215,IT
3110025216,3110026239,ES
3110026240,3110027263,IR
-3110027264,3110028287,BE
+3110027264,3110028287,GB
3110028288,3110029311,NL
3110029312,3110030335,BE
3110030336,3110031359,GB
@@ -83837,6 +96767,7 @@
3110039552,3110040575,DE
3110040576,3110041599,CZ
3110041600,3110042623,TR
+3110042624,3110043647,ES
3110043648,3110044671,DE
3110044672,3110046719,IT
3110046720,3110047743,SA
@@ -83850,12 +96781,11 @@
3110055936,3110056959,NL
3110056960,3110057983,IR
3110057984,3110059007,IQ
-3110059008,3110060031,RU
+3110059008,3110060031,NL
3110060032,3110061055,DE
3110061056,3110062079,PL
-3110062080,3110063103,CZ
-3110063104,3110063871,IQ
-3110063872,3110064127,US
+3110062080,3110063103,US
+3110063104,3110064127,IQ
3110064128,3110065151,AT
3110065152,3110066175,DE
3110066176,3110067199,CH
@@ -83873,11 +96803,13 @@
3110080512,3110081535,GB
3110081536,3110082559,IT
3110082560,3110083583,ES
+3110083584,3110084607,UA
3110084608,3110085631,GR
3110085632,3110086655,RU
3110086656,3110087679,NO
3110087680,3110088703,NL
3110088704,3110089727,GB
+3110089728,3110090751,PL
3110090752,3110091775,DE
3110091776,3110093823,GB
3110093824,3110094847,JO
@@ -83896,7 +96828,7 @@
3110108160,3110109183,AZ
3110109184,3110110207,IT
3110110208,3110111231,RU
-3110111232,3110112255,AE
+3110111232,3110112255,TR
3110112256,3110113279,NL
3110113280,3110114303,SE
3110114304,3110115327,NL
@@ -83948,7 +96880,7 @@
3110161408,3110162431,RU
3110162432,3110163455,IE
3110163456,3110164479,NO
-3110164480,3110165503,US
+3110164480,3110165503,GB
3110165504,3110166527,LB
3110166528,3110167551,DE
3110167552,3110168575,FR
@@ -83964,8 +96896,9 @@
3110175744,3110176767,PS
3110176768,3110177791,CH
3110177792,3110178815,FR
-3110178816,3110179839,GB
-3110179840,3110180863,LT
+3110178816,3110179839,DE
+3110179840,3110180095,EE
+3110180096,3110180863,LT
3110180864,3110181887,GB
3110181888,3110182911,IT
3110182912,3110183935,GB
@@ -83989,7 +96922,7 @@
3110201344,3110202367,IT
3110202368,3110203391,IE
3110203392,3110204415,DE
-3110204416,3110205439,LU
+3110204416,3110205439,BE
3110205440,3110206463,EE
3110206464,3110207487,RU
3110207488,3110208511,BA
@@ -84001,7 +96934,9 @@
3110213632,3110214655,IQ
3110214656,3110215679,CH
3110215680,3110216703,ES
-3110216704,3110217727,DK
+3110216704,3110217215,DK
+3110217216,3110217471,DE
+3110217472,3110217727,DK
3110217728,3110218751,RU
3110218752,3110219775,GB
3110219776,3110220799,DE
@@ -84016,7 +96951,8 @@
3110230016,3110231039,KZ
3110231040,3110232063,DE
3110232064,3110233087,DK
-3110233088,3110234879,NL
+3110233088,3110233119,NL
+3110233120,3110234111,GR
3110234880,3110235135,CY
3110235136,3110236159,GB
3110236160,3110237183,IR
@@ -84032,7 +96968,7 @@
3110246400,3110247423,CH
3110247424,3110249471,GB
3110249472,3110250495,IT
-3110250496,3110254591,GB
+3110250752,3110254591,GB
3110254592,3110255615,DE
3110255616,3110256639,GB
3110256640,3110257663,SE
@@ -84052,14 +96988,74 @@
3110274048,3110277119,RU
3110277120,3110278143,LB
3110278144,3110279167,TR
-3110279168,3110279679,GB
-3110279680,3110279695,ES
-3110279696,3110279967,GB
-3110279968,3110279983,DE
-3110279984,3110280191,GB
+3110279168,3110279199,PL
+3110279200,3110279231,DE
+3110279232,3110279295,GB
+3110279296,3110279303,FR
+3110279304,3110279311,IT
+3110279312,3110279319,SE
+3110279320,3110279327,BE
+3110279328,3110279335,IE
+3110279336,3110279343,CZ
+3110279344,3110279347,NO
+3110279348,3110279351,LI
+3110279352,3110279355,AT
+3110279356,3110279359,DK
+3110279360,3110279363,FI
+3110279364,3110279367,PT
+3110279368,3110279371,GR
+3110279372,3110279375,RO
+3110279376,3110279379,HU
+3110279380,3110279383,LU
+3110279384,3110279387,BG
+3110279388,3110279391,HR
+3110279392,3110279395,SI
+3110279396,3110279399,LT
+3110279400,3110279403,LV
+3110279404,3110279407,EE
+3110279408,3110279411,CY
+3110279412,3110279415,MT
+3110279416,3110279419,SK
+3110279420,3110279423,IS
+3110279424,3110279455,ES
+3110279456,3110279487,NL
+3110279488,3110279679,GB
+3110279680,3110279711,ES
+3110279712,3110279743,NL
+3110279744,3110279807,GB
+3110279808,3110279815,FR
+3110279816,3110279823,IT
+3110279824,3110279831,SE
+3110279832,3110279839,BE
+3110279840,3110279847,IE
+3110279848,3110279855,CZ
+3110279856,3110279859,NO
+3110279860,3110279863,LI
+3110279864,3110279867,AT
+3110279868,3110279871,DK
+3110279872,3110279875,FI
+3110279876,3110279879,PT
+3110279880,3110279883,GR
+3110279884,3110279887,RO
+3110279888,3110279891,HU
+3110279892,3110279895,LU
+3110279896,3110279899,BG
+3110279900,3110279903,HR
+3110279904,3110279907,SI
+3110279908,3110279911,LT
+3110279912,3110279915,LV
+3110279916,3110279919,EE
+3110279920,3110279923,CY
+3110279924,3110279927,MT
+3110279928,3110279931,SK
+3110279932,3110279935,IS
+3110279936,3110279967,PL
+3110279968,3110279999,DE
+3110280000,3110280191,GB
3110280192,3110281215,RU
3110281216,3110282239,LB
3110282240,3110283263,SE
+3110283264,3110284287,ES
3110284288,3110285311,PS
3110285312,3110286335,BE
3110286336,3110288383,DE
@@ -84069,8 +97065,12 @@
3110292480,3110293503,GB
3110293504,3110294527,AT
3110294528,3110295551,GB
-3110295552,3110296575,RO
-3110297600,3110298623,IL
+3110295552,3110296063,RO
+3110296064,3110296319,ES
+3110296320,3110296575,RO
+3110296576,3110297599,GE
+3110297600,3110298111,NL
+3110298112,3110298623,FR
3110298624,3110299647,SY
3110299648,3110300671,PL
3110300672,3110301695,IE
@@ -84087,7 +97087,7 @@
3110307684,3110307684,BR
3110307685,3110307839,BY
3110307840,3110308863,IE
-3110308864,3110309887,RU
+3110308864,3110309887,GB
3110309888,3110310911,DE
3110310912,3110311935,FR
3110311936,3110315007,UA
@@ -84113,7 +97113,9 @@
3110334464,3110335487,ES
3110335488,3110336511,GB
3110336512,3110337535,GE
-3110337536,3110338559,US
+3110337536,3110337791,US
+3110337792,3110338047,GB
+3110338048,3110338559,US
3110338560,3110339583,CH
3110339584,3110340607,FR
3110340608,3110341631,DE
@@ -84123,7 +97125,7 @@
3110345728,3110346751,FR
3110346752,3110347775,IT
3110347776,3110348799,NL
-3110348800,3110349823,US
+3110348800,3110349823,BN
3110349824,3110350847,IR
3110350848,3110351871,DE
3110351872,3110352895,RU
@@ -84134,7 +97136,9 @@
3110356992,3110358015,ES
3110358016,3110359039,GE
3110359040,3110360063,IT
-3110360064,3110360575,RO
+3110360064,3110360531,RO
+3110360532,3110360532,NE
+3110360533,3110360575,RO
3110360576,3110360831,FI
3110360832,3110361087,RO
3110361088,3110362111,ES
@@ -84173,9 +97177,10 @@
3110393344,3110393599,GB
3110393600,3110393855,IE
3110393856,3110394879,LB
-3110394880,3110395647,DE
+3110394880,3110395391,GB
+3110395392,3110395647,RU
3110395648,3110395648,SA
-3110395649,3110395903,DE
+3110395649,3110395903,RU
3110395904,3110396927,KZ
3110396928,3110397951,PL
3110397952,3110398975,NL
@@ -84209,16 +97214,14 @@
3110425600,3110426623,IE
3110426624,3110427647,DK
3110427648,3110428671,DE
-3110428672,3110428927,NL
-3110428928,3110429183,US
-3110429184,3110429695,NL
+3110428672,3110429695,US
3110429696,3110430719,DE
3110430720,3110431743,RO
3110431744,3110432767,NL
3110432768,3110433791,DE
3110433792,3110434815,CH
3110434816,3110435839,GB
-3110435840,3110436863,IS
+3110435840,3110436863,SE
3110436864,3110437887,PL
3110437888,3110438911,DE
3110438912,3110439935,GE
@@ -84292,19 +97295,18 @@
3110509568,3110510591,RO
3110510592,3110511615,FR
3110511616,3110512639,UA
-3110512640,3110513663,ES
-3110513664,3110514687,NL
+3110512640,3110514687,ES
3110514688,3110515711,FR
3110515712,3110516735,RU
3110516736,3110517759,UA
3110517760,3110518783,PL
3110518784,3110521855,GB
-3110521856,3110522879,ES
-3110522880,3110523903,EE
+3110521856,3110523903,ES
3110523904,3110524927,SE
3110524928,3110525439,US
3110525440,3110525695,NL
3110525696,3110525951,DE
+3110525952,3110526975,ES
3110526976,3110527999,DE
3110528000,3110529023,AT
3110529024,3110530047,FI
@@ -84319,12 +97321,15 @@
3110539264,3110540287,NL
3110540288,3110541311,LB
3110541312,3110542335,RU
-3110542336,3110543359,HK
+3110542336,3110543103,HK
+3110543104,3110543359,US
3110543360,3110544383,NL
3110544384,3110545407,ES
3110545408,3110546431,UA
3110546432,3110547455,DE
-3110547456,3110548479,SE
+3110547456,3110547967,SE
+3110547968,3110548223,JP
+3110548224,3110548479,DE
3110548480,3110549503,IT
3110549504,3110550527,NL
3110550528,3110551551,RU
@@ -84354,9 +97359,9 @@
3110572032,3110573055,SK
3110573056,3110574079,ES
3110574080,3110575103,PL
-3110575104,3110575359,LU
+3110575104,3110575359,NL
3110575360,3110575615,US
-3110575616,3110576127,LU
+3110575616,3110576127,NL
3110576128,3110578175,RU
3110578176,3110579199,KZ
3110579200,3110580223,NL
@@ -84375,9 +97380,7 @@
3110593536,3110594303,GB
3110594304,3110594559,SE
3110594560,3110595583,DE
-3110595584,3110596607,NL
-3110596608,3110597119,SE
-3110597120,3110597631,NL
+3110595584,3110597631,NL
3110597632,3110599679,IR
3110599680,3110600191,RU
3110600192,3110600703,UA
@@ -84406,13 +97409,13 @@
3110626304,3110627327,NL
3110627328,3110628351,RU
3110628352,3110629375,LU
-3110629376,3110630399,UA
+3110629376,3110630399,RU
3110630400,3110631423,IT
3110631424,3110632447,GB
3110632448,3110633471,IT
3110633472,3110634495,NL
3110634496,3110635007,ES
-3110635008,3110636543,NL
+3110635008,3110635519,NL
3110636544,3110637567,DE
3110637568,3110638591,GR
3110638592,3110639615,RU
@@ -84424,17 +97427,20 @@
3110644736,3110645759,RU
3110645760,3110646783,LT
3110646784,3110647807,RO
-3110647808,3110648063,GB
+3110647808,3110648047,DE
+3110648048,3110648055,PL
+3110648056,3110648063,DK
3110648064,3110648319,FR
-3110648320,3110648831,GB
+3110648320,3110648575,BE
+3110648576,3110648831,HU
3110648832,3110649855,NL
3110649856,3110650879,IR
3110650880,3110651903,RO
3110651904,3110652927,GG
3110652928,3110653951,DE
-3110653952,3110654975,NO
+3110653952,3110654975,CZ
3110654976,3110655999,RU
-3110656000,3110657023,GB
+3110656000,3110657023,IE
3110657024,3110658047,GI
3110658048,3110659071,AT
3110659072,3110661119,IR
@@ -84443,19 +97449,23 @@
3110663168,3110664191,LB
3110664192,3110665215,RU
3110665216,3110666239,LB
-3110667264,3110668287,RO
+3110666240,3110667263,LU
+3110667264,3110668031,RO
+3110668032,3110668287,US
3110668288,3110669311,PL
3110669312,3110671359,ES
3110671360,3110672383,AT
3110672384,3110673407,ES
3110673408,3110674431,FR
-3110674432,3110676479,RO
+3110674432,3110675455,GB
+3110675456,3110676479,ES
3110676480,3110677503,DE
3110677504,3110679551,RU
3110679552,3110680575,BE
3110680576,3110681599,GB
3110681600,3110682623,SE
3110682624,3110683647,GB
+3110683648,3110684671,FR
3110684672,3110685695,GB
3110685696,3110686719,NL
3110686720,3110687743,BE
@@ -84478,7 +97488,7 @@
3110704128,3110705151,GE
3110705152,3110706175,FR
3110706176,3110707199,BE
-3110707200,3110708223,CZ
+3110707200,3110708223,NL
3110708224,3110709247,GB
3110709248,3110710271,RU
3110710272,3110711295,CY
@@ -84504,24 +97514,26 @@
3110728704,3110729727,SE
3110729728,3110730751,NL
3110730752,3110731775,DE
-3110731776,3110733823,ES
+3110731776,3110733823,GB
3110733824,3110734847,DE
+3110734848,3110735871,FR
3110735872,3110736895,GR
3110736896,3110737919,TR
3110737920,3110738943,LU
3110738944,3110739967,IQ
3110739968,3110740991,IL
-3110740992,3110742015,ES
+3110740992,3110742015,GB
3110742016,3110743039,RU
3110743040,3110744063,ES
3110744064,3110745087,AT
3110745088,3110746111,NL
-3110747136,3110748159,CZ
+3110746112,3110747135,RU
+3110747136,3110748159,NL
3110748160,3110749183,CH
3110749184,3110750207,BE
-3110750208,3110751231,NL
+3110750208,3110751231,GB
3110751232,3110752255,DE
-3110752256,3110753279,RO
+3110752256,3110753279,NL
3110753280,3110754303,DE
3110754304,3110755327,IE
3110755328,3110756351,RU
@@ -84530,6 +97542,7 @@
3110758400,3110759423,RU
3110759424,3110760447,AT
3110760448,3110761471,HU
+3110761472,3110762495,RU
3110762496,3110763007,NL
3110763008,3110763263,RO
3110763264,3110763519,NL
@@ -84537,11 +97550,12 @@
3110764544,3110765567,IL
3110765568,3110766591,PL
3110766592,3110767615,IR
-3110767616,3110768639,RS
+3110767616,3110768639,NL
3110768640,3110769663,IR
3110769664,3110770687,DE
3110770688,3110771711,NL
3110771712,3110772735,KZ
+3110772736,3110773759,FR
3110773760,3110774783,DE
3110774784,3110775807,PL
3110775808,3110776831,RU
@@ -84551,11 +97565,11 @@
3110779904,3110780927,AT
3110780928,3110781951,PS
3110781952,3110782975,RU
-3110782976,3110783999,IR
-3110784000,3110784255,US
-3110784256,3110785023,RU
+3110782976,3110783487,IR
+3110783488,3110783999,PT
+3110784000,3110785023,RU
3110785024,3110786047,TR
-3110786048,3110787071,AT
+3110786048,3110787071,NL
3110787072,3110788095,FR
3110788096,3110789119,ES
3110789120,3110790143,NL
@@ -84571,8 +97585,7 @@
3110799360,3110800383,GB
3110800384,3110801407,DK
3110801408,3110802431,ES
-3110802432,3110803455,DE
-3110803456,3110804479,NL
+3110802432,3110804479,DE
3110804480,3110806527,IR
3110806528,3110809599,NL
3110809600,3110810623,LB
@@ -84603,7 +97616,8 @@
3110840320,3110841343,DK
3110841344,3110842367,KZ
3110842368,3110843391,DK
-3110843392,3110845439,IT
+3110843392,3110844415,GB
+3110844416,3110845439,IT
3110845440,3110846463,NL
3110846464,3110847487,DE
3110847488,3110848511,GB
@@ -84629,17 +97643,19 @@
3110872064,3110873087,MD
3110873088,3110874111,IE
3110874112,3110875135,GB
+3110875136,3110876159,DE
3110876160,3110878207,GB
3110878208,3110879231,CZ
3110879232,3110880255,LV
3110880256,3110881279,PL
3110881280,3110883327,DE
3110883328,3110884351,IL
-3110884352,3110886399,RU
+3110884352,3110885375,NL
+3110885376,3110886399,RU
3110886400,3110887423,GB
3110887424,3110888447,IR
3110888448,3110889471,DK
-3110889472,3110890495,PT
+3110889472,3110889727,GB
3110890496,3110891519,DK
3110891520,3110892543,RO
3110892544,3110893567,NL
@@ -84652,6 +97668,7 @@
3110899712,3110900735,MD
3110900736,3110901759,TR
3110901760,3110902783,MD
+3110902784,3110903807,RO
3110903808,3110904831,RU
3110904832,3110905855,IR
3110905856,3110906879,GB
@@ -84678,7 +97695,7 @@
3110929408,3110930431,IE
3110930432,3110931455,GB
3110931456,3110932479,DK
-3110932480,3110933503,IE
+3110932480,3110933503,GB
3110933504,3110934015,US
3110934016,3110934527,RU
3110934528,3110935551,IT
@@ -84708,9 +97725,9 @@
3110961152,3110962175,IR
3110962176,3110963199,DK
3110963200,3110965247,GB
-3110965248,3110966271,NL
+3110965248,3110966271,DE
3110966272,3110967295,IL
-3110968320,3110969343,DE
+3110967296,3110969343,DE
3110969344,3110970367,NL
3110970368,3110971391,CH
3110971392,3110972415,GB
@@ -84722,13 +97739,13 @@
3110978560,3110979583,DE
3110979584,3110980607,FR
3110980608,3110982655,RU
-3110982656,3110983679,SY
-3110983680,3110984703,PL
-3110984704,3110985727,IT
-3110985728,3110986751,IE
+3110982656,3110982677,RO
+3110982678,3110983679,SY
+3110983680,3110986751,SE
3110986752,3110987775,GB
3110987776,3110988799,NL
-3110988800,3110989823,DE
+3110988800,3110989055,CN
+3110989056,3110989823,DE
3110989824,3110990335,CA
3110990336,3110990847,CH
3110990848,3110992895,IR
@@ -84765,7 +97782,8 @@
3111024640,3111025663,AT
3111025664,3111026687,DE
3111026688,3111027967,RU
-3111027968,3111028735,UA
+3111027968,3111028479,UA
+3111028480,3111028735,LT
3111028736,3111029759,AT
3111029760,3111031807,SK
3111031808,3111032831,NO
@@ -84843,7 +97861,7 @@
3111107584,3111108607,HR
3111108608,3111109631,DE
3111109632,3111110655,BE
-3111110656,3111111679,NL
+3111110656,3111111679,US
3111111680,3111112703,BE
3111112704,3111113727,HU
3111113728,3111114751,BG
@@ -84851,8 +97869,10 @@
3111115776,3111116799,DE
3111116800,3111117823,GB
3111117824,3111117824,ES
-3111117825,3111118847,FR
-3111118848,3111119871,TR
+3111117825,3111118079,FR
+3111118080,3111118847,ES
+3111118848,3111119614,CY
+3111119615,3111119871,TR
3111119872,3111120895,FR
3111120896,3111121919,SE
3111121920,3111122943,TR
@@ -84867,9 +97887,8 @@
3111132160,3111133183,CZ
3111133184,3111135231,IR
3111135232,3111136255,PL
-3111136256,3111137279,DE
-3111137280,3111138303,LI
-3111138304,3111139327,CH
+3111136256,3111137279,NL
+3111137280,3111139327,CH
3111139328,3111140351,RU
3111140352,3111141375,IT
3111141376,3111142399,NL
@@ -84906,9 +97925,7 @@
3111170048,3111171071,DE
3111171072,3111172095,PL
3111172096,3111173119,RO
-3111173120,3111173631,IQ
-3111173632,3111173887,KR
-3111173888,3111174143,IQ
+3111173120,3111174143,IQ
3111174144,3111175167,AZ
3111175168,3111176191,IT
3111176192,3111177215,YE
@@ -84921,12 +97938,13 @@
3111183360,3111184383,FR
3111184384,3111185407,IQ
3111185408,3111186431,RU
+3111186432,3111187455,HU
3111187456,3111189503,GB
3111189504,3111190527,DE
3111190528,3111191551,GB
3111191552,3111192575,DE
3111192576,3111193599,TR
-3111193600,3111194623,RU
+3111193600,3111194623,JE
3111194624,3111195647,GB
3111195648,3111196671,CH
3111196672,3111197695,GB
@@ -84976,7 +97994,9 @@
3111245824,3111246847,GB
3111246848,3111247871,TR
3111247872,3111248127,BE
-3111248128,3111248895,NL
+3111248128,3111248383,SE
+3111248384,3111248639,ES
+3111248640,3111248895,NL
3111248896,3111249919,DK
3111249920,3111250943,IE
3111250944,3111251967,ES
@@ -84986,14 +98006,17 @@
3111255040,3111256063,EE
3111256064,3111257087,IT
3111257088,3111259135,FR
-3111259136,3111261183,DE
+3111259136,3111260159,DE
+3111260160,3111261183,IE
3111261184,3111262207,TR
3111262208,3111264511,NL
3111264512,3111264767,AU
3111264768,3111265279,HK
3111265280,3111265334,NL
3111265335,3111265335,US
-3111265336,3111266303,NL
+3111265336,3111265535,NL
+3111265536,3111266047,GB
+3111266048,3111266303,NL
3111266304,3111267327,DE
3111267328,3111268351,DK
3111268352,3111269375,BE
@@ -85011,7 +98034,8 @@
3111280640,3111281663,GB
3111281664,3111282687,FR
3111282688,3111283711,SE
-3111283712,3111284735,IT
+3111283712,3111284223,IT
+3111284224,3111284735,ES
3111284736,3111285759,AL
3111285760,3111286783,IT
3111286784,3111287039,IL
@@ -85024,7 +98048,7 @@
3111290880,3111291903,UA
3111291904,3111292927,NL
3111292928,3111293951,SI
-3111293952,3111294975,GB
+3111293952,3111294975,CY
3111294976,3111295999,US
3111296000,3111297023,NL
3111297024,3111298047,IE
@@ -85041,6 +98065,7 @@
3111308288,3111309311,GB
3111309312,3111310335,CH
3111310336,3111311359,DE
+3111311360,3111312383,TR
3111312384,3111313407,DE
3111313408,3111313523,GB
3111313524,3111313524,SA
@@ -85076,9 +98101,9 @@
3111341056,3111342079,IR
3111342080,3111343103,DE
3111343104,3111344127,GB
-3111344128,3111344639,NL
-3111344640,3111344895,US
-3111344896,3111345151,NL
+3111344128,3111344383,NL
+3111344384,3111344639,DE
+3111344640,3111345151,US
3111345152,3111346175,RO
3111346176,3111347199,RU
3111347200,3111348223,LB
@@ -85087,15 +98112,15 @@
3111350272,3111351295,PL
3111351296,3111353343,GB
3111353344,3111353599,AT
-3111353600,3111353855,FR
-3111353856,3111355391,GB
+3111353856,3111354623,GB
+3111354880,3111355391,GB
3111355392,3111356415,IT
3111356416,3111357439,GE
3111357440,3111358463,RU
3111358464,3111358719,ES
3111358720,3111358975,IE
3111358976,3111359231,FR
-3111359232,3111359487,IE
+3111359232,3111359487,NL
3111359488,3111360511,IR
3111360512,3111361535,PL
3111361536,3111363583,RU
@@ -85103,11 +98128,11 @@
3111365632,3111367679,DE
3111367680,3111368703,CZ
3111368704,3111369727,AT
-3111369728,3111370751,FR
+3111369728,3111370751,NL
3111370752,3111371007,DE
3111371008,3111371263,US
3111371264,3111371519,GB
-3111371520,3111371775,DE
+3111371520,3111371775,US
3111371776,3111373823,GB
3111373824,3111374847,GR
3111374848,3111375871,TR
@@ -85139,7 +98164,7 @@
3111398400,3111399423,IR
3111399424,3111400447,CZ
3111400448,3111402495,GB
-3111402496,3111403519,BE
+3111402496,3111403519,KE
3111403520,3111404543,IE
3111404544,3111405567,GB
3111405568,3111406591,BE
@@ -85184,7 +98209,9 @@
3111447808,3111448063,GB
3111448064,3111448319,BG
3111448320,3111448575,GB
-3111448576,3111449599,NO
+3111448576,3111448960,NO
+3111448961,3111449502,BE
+3111449503,3111449599,NO
3111449600,3111451647,DE
3111451648,3111452671,PL
3111452672,3111453695,MY
@@ -85201,7 +98228,7 @@
3111462912,3111463935,AT
3111463936,3111464959,ES
3111464960,3111465983,IR
-3111465984,3111467007,DE
+3111465984,3111467007,US
3111467008,3111469055,FR
3111469056,3111470079,EE
3111470080,3111471103,AE
@@ -85216,8 +98243,8 @@
3111479296,3111480319,SE
3111480320,3111481343,NL
3111481344,3111482367,IT
-3111482368,3111483135,RU
-3111483136,3111483391,FI
+3111482368,3111482879,RU
+3111482880,3111483391,FI
3111483392,3111484415,TR
3111484416,3111485439,NL
3111485440,3111486463,SA
@@ -85271,6 +98298,8 @@
3111541760,3111542783,FR
3111542784,3111543807,IQ
3111543808,3111544831,DE
+3111544832,3111545855,ES
+3111545856,3111546879,DE
3111546880,3111547903,PT
3111547904,3111548927,FR
3111548928,3111549951,SA
@@ -85329,7 +98358,8 @@
3111603200,3111604223,UA
3111604224,3111605247,TR
3111605248,3111606271,CH
-3111606272,3111607295,RS
+3111606272,3111607039,RS
+3111607040,3111607295,BG
3111607296,3111608319,DE
3111608320,3111609343,CZ
3111609344,3111610367,SE
@@ -85351,7 +98381,9 @@
3111626752,3111627775,FR
3111627776,3111628799,GB
3111628800,3111629823,CH
-3111629824,3111630847,HU
+3111629824,3111630207,HU
+3111630208,3111630335,SK
+3111630336,3111630847,HU
3111630848,3111631871,PL
3111631872,3111633919,NL
3111633920,3111636991,FR
@@ -85365,11 +98397,10 @@
3111645184,3111646207,IR
3111646208,3111647231,IT
3111647232,3111648255,ES
-3111648256,3111648767,GB
+3111648256,3111648511,GB
3111648768,3111649023,NL
3111649024,3111650559,GB
-3111650560,3111650815,SG
-3111650816,3111651071,TR
+3111650560,3111651071,TR
3111651072,3111651327,GB
3111651328,3111652351,RO
3111652352,3111652863,GB
@@ -85381,7 +98412,8 @@
3111655168,3111655423,FR
3111655424,3111656447,NO
3111656448,3111657471,LB
-3111657472,3111658239,GB
+3111657984,3111658047,GB
+3111658112,3111658239,GB
3111658240,3111658495,NL
3111658496,3111659519,AL
3111659520,3111660543,IT
@@ -85403,7 +98435,9 @@
3111675904,3111676927,ES
3111676928,3111677951,AE
3111677952,3111678975,ES
-3111678976,3111679999,GB
+3111678976,3111679231,GB
+3111679232,3111679487,NL
+3111679488,3111679999,GB
3111680000,3111681023,IR
3111681024,3111682047,IL
3111682048,3111683071,GB
@@ -85456,7 +98490,9 @@
3111741440,3111743487,UA
3111743488,3111744511,NL
3111744512,3111745535,UA
-3111745536,3111746559,MD
+3111745536,3111746047,MD
+3111746048,3111746303,RS
+3111746304,3111746559,MD
3111746560,3111747583,TR
3111747584,3111748607,IR
3111748608,3111750655,GB
@@ -85475,7 +98511,7 @@
3111759872,3111760127,IS
3111760128,3111760383,AQ
3111760384,3111760639,GB
-3111760640,3111760895,IS
+3111760640,3111760895,LT
3111760896,3111761919,NL
3111761920,3111762943,SY
3111762944,3111763967,NL
@@ -85502,7 +98538,7 @@
3111786496,3111787519,IT
3111787520,3111788543,RU
3111788544,3111789567,KZ
-3111789568,3111790335,GB
+3111789568,3111790079,GB
3111790336,3111790591,TR
3111790592,3111791615,CZ
3111791616,3111792639,IT
@@ -85534,10 +98570,12 @@
3111817216,3111819263,PL
3111819264,3111821311,NL
3111821312,3111822335,FR
-3111822336,3111823359,GB
+3111822336,3111823103,US
+3111823104,3111823359,GB
3111823360,3111824383,NL
3111824384,3111825407,PL
-3111825408,3111826431,RU
+3111825408,3111825919,GB
+3111825920,3111826431,RU
3111826432,3111827455,DE
3111827456,3111828479,ES
3111828480,3111829503,DK
@@ -85562,14 +98600,15 @@
3111849984,3111851007,KZ
3111851008,3111852031,SA
3111852032,3111853055,FR
+3111853056,3111854079,HU
3111854080,3111855103,NO
3111855104,3111856127,IT
-3111856128,3111857151,KZ
-3111857152,3111858175,RU
+3111856128,3111858175,RU
3111858176,3111859199,PL
3111859200,3111860223,EE
3111860224,3111861247,ES
3111861248,3111862271,NL
+3111862272,3111863295,RU
3111863296,3111864319,IR
3111864320,3111865343,FR
3111865344,3111866367,RU
@@ -85611,7 +98650,7 @@
3111908352,3111909375,RO
3111909376,3111912447,GB
3111912448,3111913471,ES
-3111913472,3111914495,UA
+3111913472,3111914495,GB
3111914496,3111915519,RU
3111915520,3111916543,DE
3111916544,3111919615,ES
@@ -85622,7 +98661,10 @@
3111923712,3111924735,DE
3111924736,3111925759,NO
3111925760,3111927807,GB
-3111927808,3111930879,DE
+3111927808,3111928575,DE
+3111928576,3111928831,AT
+3111928832,3111929728,CH
+3111929729,3111930879,DE
3111930880,3111931903,NO
3111931904,3111932927,CZ
3111932928,3111933951,TR
@@ -85669,6 +98711,7 @@
3111981056,3111982079,RU
3111982080,3111983103,IR
3111983104,3111984127,UA
+3111984128,3111985151,ES
3111985152,3111986175,TR
3111986176,3111987199,RU
3111987200,3111988223,NL
@@ -85678,7 +98721,7 @@
3111990272,3111991295,FR
3111991296,3111992319,RU
3111992320,3111993343,RS
-3111993344,3111994367,GB
+3111993344,3111994367,US
3111994368,3111995391,IT
3111995392,3111996415,RU
3111996416,3111997439,ES
@@ -85686,16 +98729,17 @@
3111998464,3111999487,GB
3111999488,3112000511,KZ
3112000512,3112001535,DE
-3112001536,3112002559,DK
+3112001536,3112002559,GB
3112002560,3112003583,RU
3112003584,3112004607,GB
3112004608,3112005631,RO
-3112005632,3112006655,RU
+3112005632,3112006655,UA
3112006656,3112007679,NL
3112007680,3112008703,BA
3112008704,3112009727,PL
3112009728,3112010751,CZ
3112010752,3112011775,PL
+3112011776,3112012799,EE
3112012800,3112013823,GB
3112013824,3112014847,IT
3112014848,3112017919,LB
@@ -85819,7 +98863,7 @@
3112039424,3112047615,IR
3112047616,3112048639,AT
3112048640,3112049663,GB
-3112049664,3112050687,DE
+3112049664,3112051711,DE
3112051712,3112052735,NO
3112052736,3112053759,IR
3112053760,3112054783,LB
@@ -85827,7 +98871,8 @@
3112055808,3112056831,DK
3112056832,3112057855,NL
3112057856,3112058879,IS
-3112058880,3112059903,NL
+3112058880,3112059391,NL
+3112059392,3112059903,FR
3112059904,3112062975,RO
3112062976,3112063999,ES
3112064000,3112065023,RU
@@ -85866,6 +98911,7 @@
3112098816,3112099839,CH
3112099840,3112100863,GB
3112100864,3112101887,FR
+3112101888,3112102911,ES
3112102912,3112103935,GB
3112103936,3112104959,DE
3112104960,3112105983,FR
@@ -85919,9 +98965,7 @@
3112154112,3112155135,LB
3112155136,3112156159,NL
3112156160,3112157183,LB
-3112157184,3112158207,GB
3112158208,3112159231,IT
-3112159232,3112160255,NL
3112160256,3112161279,CH
3112161280,3112162303,DE
3112162304,3112163327,IT
@@ -85941,7 +98985,10 @@
3112176640,3112177663,ES
3112177664,3112178687,FI
3112178688,3112179711,PL
-3112180736,3112181759,IT
+3112179712,3112179967,SG
+3112179968,3112180223,FR
+3112180224,3112180479,HU
+3112180480,3112181759,IT
3112181760,3112182783,NL
3112182784,3112183807,IQ
3112183808,3112184831,CH
@@ -86035,6 +99082,7 @@
3112276992,3112278015,LV
3112278016,3112279039,FI
3112279040,3112280063,NO
+3112280064,3112281087,AT
3112281088,3112282111,FR
3112282112,3112283135,IR
3112283136,3112284159,AT
@@ -86046,22 +99094,29 @@
3112291328,3112292351,RU
3112292352,3112293375,GB
3112293376,3112295423,IR
-3112295424,3112297471,GB
+3112295424,3112296575,GB
+3112296576,3112296639,ES
+3112296640,3112296687,GB
+3112296688,3112296703,US
+3112296704,3112297471,GB
3112297472,3112301567,IR
3112301568,3112302591,DE
3112302592,3112303615,ES
3112303616,3112304639,DE
3112304640,3112305663,SE
-3112306688,3112307711,DE
+3112305664,3112305919,DE
+3112305920,3112306175,KR
+3112306176,3112307711,DE
3112307712,3112308735,IS
3112308736,3112309759,HR
3112309760,3112310783,DE
3112310784,3112312831,ES
3112312832,3112313855,DE
3112313856,3112315903,GB
-3112315904,3112316927,PL
+3112315904,3112316159,PL
3112316928,3112317951,IQ
3112317952,3112318975,UA
+3112318976,3112319999,TR
3112320000,3112321023,IQ
3112321024,3112322047,FI
3112322048,3112323071,NO
@@ -86078,7 +99133,7 @@
3112332288,3112333311,PL
3112333312,3112334335,RU
3112334336,3112335359,FR
-3112335360,3112336383,UA
+3112335360,3112336383,GB
3112336384,3112337407,RS
3112337408,3112338431,BE
3112338432,3112339455,MK
@@ -86093,6 +99148,10 @@
3112347648,3112349695,NL
3112349696,3112350719,HU
3112350720,3112351743,PL
+3112351744,3112351999,DE
+3112352000,3112352255,RO
+3112352256,3112352511,SG
+3112352512,3112352767,RO
3112352768,3112353791,DK
3112353792,3112354815,DE
3112354816,3112355839,GB
@@ -86128,7 +99187,7 @@
3112386816,3112387071,DE
3112387072,3112387327,NL
3112387328,3112387583,RU
-3112387584,3112388607,EE
+3112387584,3112388607,HK
3112388608,3112389631,DE
3112389632,3112390655,SA
3112390656,3112391679,FR
@@ -86141,13 +99200,13 @@
3112401920,3112403967,IR
3112403968,3112404991,ES
3112404992,3112407039,IR
-3112407040,3112408063,AE
+3112407040,3112408063,IL
3112408064,3112411135,IR
3112411136,3112412159,IT
3112412160,3112414207,IR
3112414208,3112415231,RU
-3112415232,3112416255,AE
-3112416256,3112417279,RU
+3112415232,3112416255,US
+3112416256,3112417279,AT
3112417280,3112419327,ES
3112419328,3112420351,FR
3112420352,3112421375,DE
@@ -86155,7 +99214,6 @@
3112423424,3112424447,TR
3112424448,3112425471,IT
3112425472,3112426495,FI
-3112426496,3112427519,FR
3112427520,3112428543,PL
3112428544,3112430591,GB
3112430592,3112431615,DE
@@ -86169,9 +99227,7 @@
3112440832,3112441855,RU
3112441856,3112442879,DE
3112442880,3112443903,RU
-3112443904,3112444927,DE
-3112444928,3112446975,GB
-3112446976,3112447999,DE
+3112443904,3112447999,DE
3112448000,3112449023,LT
3112449024,3112450047,PL
3112450048,3112451071,IT
@@ -86212,6 +99268,8 @@
3112491008,3112492031,SE
3112492032,3112494079,DE
3112494080,3112495103,IT
+3112495104,3112496127,FR
+3112496128,3112497151,NL
3112497152,3112498175,RU
3112498176,3112499199,GB
3112499200,3112500223,PS
@@ -86225,7 +99283,8 @@
3112508416,3112509439,CH
3112509440,3112511487,NL
3112511488,3112512511,RU
-3112512512,3112514559,CH
+3112512512,3112513535,CH
+3112513536,3112514559,DE
3112514560,3112515583,FR
3112515584,3112516607,CZ
3112516608,3112517631,SK
@@ -86249,7 +99308,7 @@
3112532992,3112534015,KW
3112534016,3112535039,FR
3112535040,3112536063,HR
-3112536064,3112537087,CZ
+3112536064,3112537087,ES
3112537088,3112538111,NO
3112538112,3112539135,CZ
3112539136,3112540159,NL
@@ -86263,7 +99322,8 @@
3112547328,3112548351,SA
3112548352,3112549375,SI
3112549376,3112550399,CZ
-3112550400,3112550911,GB
+3112550400,3112550655,GB
+3112550656,3112550911,US
3112550912,3112551167,RO
3112551168,3112551423,US
3112551424,3112552447,CZ
@@ -86286,7 +99346,7 @@
3112567808,3112568831,DE
3112568832,3112569855,IT
3112569856,3112571903,SE
-3112571904,3112572927,DE
+3112571904,3112572927,GB
3112572928,3112573951,BE
3112573952,3112574975,DK
3112574976,3112577023,RU
@@ -86308,7 +99368,9 @@
3112592384,3112593407,FI
3112593408,3112594431,GB
3112594432,3112595455,DE
-3112595456,3112596479,GR
+3112595456,3112595967,GR
+3112595968,3112595975,PA
+3112595976,3112596479,GR
3112596480,3112597503,CY
3112597504,3112598527,RU
3112598528,3112599551,NO
@@ -86322,10 +99384,10 @@
3112606720,3112607743,FR
3112607744,3112608767,CZ
3112608768,3112609791,CH
-3112609792,3112610815,TJ
+3112609792,3112610815,IT
3112610816,3112611839,GE
3112611840,3112612863,LB
-3112612864,3112613887,GB
+3112612864,3112613887,US
3112613888,3112614911,TR
3112614912,3112615935,SK
3112615936,3112616959,BG
@@ -86350,7 +99412,8 @@
3112635264,3112635391,DE
3112635392,3112636415,BE
3112636416,3112637439,AT
-3112637440,3112638463,CZ
+3112637440,3112637951,CZ
+3112637952,3112638463,SK
3112638464,3112639487,DE
3112639488,3112640511,IR
3112640512,3112641535,DE
@@ -86376,8 +99439,10 @@
3112663040,3112664063,PL
3112664064,3112665087,FR
3112665088,3112666111,GB
-3112666112,3112667135,CZ
+3112666112,3112666623,FR
+3112666624,3112667135,CZ
3112667136,3112668159,DE
+3112668160,3112669183,UA
3112669184,3112670207,CZ
3112670208,3112671231,RU
3112671232,3112672255,US
@@ -86387,7 +99452,7 @@
3112676352,3112677375,RU
3112677376,3112678399,FR
3112678400,3112679423,RU
-3112679424,3112680447,BG
+3112679424,3112680447,NO
3112680448,3112681471,IQ
3112681472,3112682495,PL
3112682496,3112683519,CZ
@@ -86407,23 +99472,24 @@
3112697856,3112699903,NL
3112699904,3112700927,RO
3112700928,3112701951,KZ
-3112701952,3112702975,MD
+3112701952,3112702975,RU
3112702976,3112703231,SE
3112703232,3112703487,FI
3112703488,3112703743,DK
-3112703744,3112703999,NO
+3112703744,3112703999,FI
3112704000,3112705023,DE
3112705024,3112706047,ES
3112706048,3112707071,RU
3112707072,3112708095,FI
3112708096,3112709119,FR
-3112709120,3112710143,IL
+3112709120,3112710143,DK
3112710144,3112711167,NO
3112711168,3112712191,PT
3112712192,3112713215,TR
3112713216,3112714239,AT
3112714240,3112715263,NL
-3112715264,3112717311,GB
+3112716032,3112716287,SE
+3112716288,3112717311,GB
3112717312,3112718335,RU
3112718336,3112719359,AT
3112719360,3112720383,TR
@@ -86447,9 +99513,7 @@
3112734720,3112735743,SY
3112735744,3112736767,IQ
3112736768,3112737791,PL
-3112737792,3112738815,GB
-3112738816,3112739839,DE
-3112739840,3112741887,GB
+3112737792,3112741887,DE
3112741888,3112742911,IR
3112742912,3112743935,RO
3112743936,3112744959,IR
@@ -86471,7 +99535,9 @@
3112762368,3112763391,IE
3112763392,3112764415,GB
3112764416,3112765439,NO
-3112765440,3112766463,GB
+3112765440,3112765695,GB
+3112765696,3112765951,HK
+3112765952,3112766463,GB
3112766464,3112767487,DE
3112767488,3112768018,NL
3112768019,3112768019,RU
@@ -86480,7 +99546,7 @@
3112769536,3112770559,IR
3112770560,3112771583,DE
3112771584,3112772607,NL
-3112772608,3112773631,UA
+3112772608,3112773631,GB
3112773632,3112774655,BE
3112774656,3112775679,ES
3112775680,3112776703,PL
@@ -86501,7 +99567,6 @@
3112793088,3112794111,BY
3112794112,3112795135,DE
3112795136,3112796159,CZ
-3112796160,3112797183,GB
3112797184,3112798207,RO
3112798208,3112799231,DE
3112799232,3112800255,ES
@@ -86534,14 +99599,15 @@
3112825856,3112826879,SA
3112826880,3112827903,PL
3112827904,3112828927,FR
-3112828928,3112829951,US
+3112828928,3112829951,GB
3112829952,3112830975,DE
3112830976,3112831999,RU
3112832000,3112833023,AZ
3112833024,3112834047,ES
3112834048,3112835071,CH
3112835072,3112836095,DE
-3112836096,3112836607,ES
+3112836096,3112836351,ES
+3112836352,3112836607,AT
3112836608,3112836863,SE
3112836864,3112837119,FR
3112837120,3112838143,NO
@@ -86555,7 +99621,7 @@
3112845312,3112846335,SE
3112846336,3112847359,CZ
3112847360,3112848383,NO
-3112848384,3112849407,UA
+3112848384,3112849407,RU
3112849408,3112850431,NL
3112850432,3112851455,TR
3112851456,3112852479,RU
@@ -86569,7 +99635,7 @@
3112859648,3112860671,IQ
3112860672,3112861695,AT
3112861696,3112862719,RU
-3112862720,3112863743,GB
+3112862720,3112863743,PS
3112863744,3112865791,DE
3112865792,3112866815,DK
3112866816,3112867839,FR
@@ -86587,7 +99653,7 @@
3112882176,3112883199,NL
3112883200,3112884223,RU
3112884224,3112885247,IT
-3112885248,3112886271,CZ
+3112885248,3112886271,DE
3112886272,3112887295,PL
3112887296,3112888319,UA
3112888320,3112889343,GB
@@ -86613,9 +99679,7 @@
3112908800,3112909823,GE
3112909824,3112910847,ES
3112910848,3112911871,IR
-3112911872,3112912895,RO
-3112912896,3112913919,CH
-3112913920,3112914943,DE
+3112912896,3112914943,DE
3112914944,3112916991,DK
3112916992,3112918015,NO
3112918016,3112920063,DE
@@ -86629,7 +99693,8 @@
3112927232,3112928255,US
3112928256,3112929279,FR
3112929280,3112930303,UZ
-3112930304,3112932351,GB
+3112930304,3112931327,GB
+3112931328,3112932351,US
3112932352,3112933375,NL
3112933376,3112934399,NO
3112934400,3112935423,DE
@@ -86655,8 +99720,12 @@
3112954918,3112954918,DE
3112954919,3112955007,RS
3112955008,3112955008,DE
-3112955009,3112955135,AE
-3112955136,3112955263,QA
+3112955009,3112955071,AE
+3112955072,3112955072,DE
+3112955073,3112955135,AE
+3112955136,3112955189,QA
+3112955190,3112955190,DE
+3112955191,3112955263,QA
3112955264,3112955391,KW
3112955392,3112955903,DE
3112955904,3112956927,IL
@@ -86693,7 +99762,9 @@
3112984576,3112985599,AE
3112985600,3112986623,PL
3112986624,3112987647,DE
-3112987648,3112988927,HU
+3112987648,3112988753,HU
+3112988754,3112988754,AT
+3112988755,3112988927,HU
3112988928,3112989042,NL
3112989043,3112989043,AT
3112989044,3112989183,NL
@@ -86719,16 +99790,22 @@
3113008128,3113009151,ES
3113009152,3113010175,IQ
3113010176,3113011199,FR
-3113011200,3113013247,DE
-3113013248,3113014271,RU
+3113011200,3113012223,DE
+3113012224,3113013247,US
+3113013248,3113014271,BG
3113014272,3113016319,ES
+3113016320,3113017343,FR
3113017344,3113018367,NL
3113018368,3113019391,LT
3113019392,3113020415,IR
3113020416,3113021439,CZ
3113021440,3113022463,IR
3113022464,3113023487,CZ
-3113023488,3113024511,AE
+3113023488,3113023999,SA
+3113024000,3113024254,AE
+3113024255,3113024255,SA
+3113024256,3113024510,AE
+3113024511,3113024511,SA
3113024512,3113025535,DE
3113025536,3113026559,CH
3113026560,3113027583,FR
@@ -86746,6 +99823,7 @@
3113037824,3113038847,IR
3113038848,3113039871,LV
3113039872,3113040895,GB
+3113040896,3113041919,BG
3113041920,3113042943,DE
3113042944,3113043967,DK
3113043968,3113044991,NO
@@ -86755,10 +99833,12 @@
3113048064,3113049087,NO
3113049088,3113050111,RU
3113050112,3113051135,FI
+3113051136,3113052159,DE
3113052160,3113053183,IR
3113053184,3113054207,TR
3113054208,3113055231,SE
-3113055232,3113056255,FR
+3113055232,3113055487,GR
+3113055488,3113056255,FR
3113056256,3113057279,DE
3113057280,3113058303,RU
3113058304,3113059327,FR
@@ -86783,20 +99863,21 @@
3113074944,3113075199,GR
3113075200,3113075455,CY
3113075456,3113075711,GB
-3113075712,3113076735,HU
+3113075712,3113076735,RS
3113076736,3113077759,DE
-3113077760,3113078015,GB
+3113077760,3113078015,AT
3113078016,3113078271,NL
3113078272,3113078783,GB
3113078784,3113079807,BE
3113079808,3113080831,IR
3113080832,3113081855,TR
3113081856,3113082879,ES
+3113082880,3113083903,RU
3113083904,3113084927,IT
3113084928,3113086975,RU
3113086976,3113087999,ES
3113088000,3113089023,IR
-3113089024,3113090047,NL
+3113089024,3113090047,MT
3113090048,3113091071,GB
3113091072,3113093119,NL
3113093120,3113094143,DE
@@ -86805,10 +99886,9 @@
3113096192,3113097215,IT
3113097216,3113097471,DE
3113097472,3113097727,GB
-3113097728,3113097983,DE
-3113097984,3113098239,GB
+3113097728,3113098239,DE
3113098240,3113099263,IE
-3113099264,3113100287,NL
+3113099264,3113100287,US
3113100288,3113102335,LB
3113102336,3113103359,ES
3113103360,3113104383,SK
@@ -86823,24 +99903,26 @@
3113112576,3113113599,GB
3113113600,3113114623,IT
3113114624,3113115647,IR
-3113116672,3113117695,NL
+3113115648,3113116159,RU
+3113116160,3113116671,TR
+3113116672,3113117695,ES
3113117696,3113118719,KW
3113118720,3113120767,DE
3113120768,3113121791,GB
3113121792,3113122815,IT
3113122816,3113123839,IR
3113123840,3113124863,GB
-3113124864,3113125887,RU
+3113124864,3113125887,VG
3113125888,3113126911,FR
3113126912,3113127167,DE
-3113127168,3113127423,GB
+3113127168,3113127423,NL
3113127424,3113127935,AT
3113127936,3113128959,NL
3113128960,3113129983,CH
3113129984,3113131007,IT
3113131008,3113132031,IR
3113132032,3113133055,PL
-3113133056,3113134079,UA
+3113133056,3113134079,GB
3113134080,3113136127,IT
3113136128,3113139199,DE
3113139200,3113140223,FR
@@ -86850,17 +99932,20 @@
3113143296,3113144319,PL
3113144320,3113145343,CZ
3113145344,3113146367,CH
-3113146368,3113147391,RO
-3113147392,3113148415,ES
+3113146368,3113146623,ES
+3113146624,3113147135,RO
+3113147136,3113148415,ES
3113148416,3113149439,BE
-3113149440,3113150463,NO
+3113149440,3113150463,DE
3113150464,3113151487,IR
-3113151488,3113152511,NL
-3113152512,3113153535,NO
+3113151488,3113151743,NL
+3113151744,3113151999,SE
+3113152000,3113152511,NL
+3113152512,3113153535,SG
3113153536,3113154559,IT
3113154560,3113156607,NL
3113156608,3113157631,ES
-3113157632,3113160703,NO
+3113157632,3113160703,DE
3113160704,3113160959,IE
3113160960,3113161727,DE
3113161728,3113162751,KZ
@@ -86888,6 +99973,7 @@
3113186304,3113187327,PL
3113187328,3113188351,RS
3113188352,3113189375,BH
+3113189376,3113190399,KZ
3113190400,3113191423,NL
3113191424,3113193471,ES
3113193472,3113194495,UA
@@ -86908,6 +99994,7 @@
3113209856,3113210879,NO
3113210880,3113211903,GB
3113211904,3113212927,NO
+3113212928,3113213951,NL
3113213952,3113214975,GB
3113214976,3113215087,DE
3113215088,3113215091,GB
@@ -86923,7 +100010,7 @@
3113215840,3113215871,GB
3113215872,3113215983,DE
3113215984,3113215999,GB
-3113216000,3113217023,DE
+3113216000,3113217023,US
3113217024,3113218047,FR
3113218048,3113219071,NL
3113219072,3113220095,FR
@@ -86949,14 +100036,15 @@
3113240576,3113241599,IT
3113241600,3113242623,TR
3113242624,3113243647,RO
-3113243648,3113245695,GB
-3113245696,3113246719,DE
+3113243648,3113244671,US
+3113244672,3113245695,GB
+3113245696,3113245951,AT
+3113245952,3113246719,DE
3113246720,3113246975,SK
3113246976,3113247231,RU
3113247232,3113247487,CZ
3113247488,3113247743,RU
-3113247744,3113247999,NL
-3113248000,3113248767,GB
+3113247744,3113248767,GB
3113248768,3113249791,NL
3113249792,3113250815,GB
3113250816,3113251839,FR
@@ -86998,8 +100086,7 @@
3113287680,3113288703,AL
3113288704,3113289727,EE
3113289728,3113290751,IR
-3113290752,3113291775,GB
-3113291776,3113292799,NL
+3113290752,3113292799,NL
3113292800,3113293823,AT
3113293824,3113294847,NL
3113294848,3113295871,IL
@@ -87036,12 +100123,15 @@
3113313280,3113314303,IT
3113314304,3113315327,UA
3113315328,3113316351,CH
-3113316352,3113317375,RO
+3113316352,3113316607,ES
+3113316608,3113317119,RO
+3113317120,3113317375,ES
3113317376,3113318399,AT
3113318400,3113319423,GE
3113319424,3113320447,RU
3113320448,3113321471,NL
3113321472,3113322495,AT
+3113322496,3113323519,DK
3113323520,3113324543,RU
3113324544,3113325567,HU
3113325568,3113326591,CH
@@ -87054,7 +100144,7 @@
3113333760,3113334783,UA
3113334784,3113335807,IR
3113335808,3113336831,NO
-3113336832,3113337855,NL
+3113336832,3113337855,IT
3113337856,3113338879,DE
3113338880,3113339903,GB
3113339904,3113340927,HU
@@ -87071,13 +100161,13 @@
3113349120,3113350143,DE
3113350144,3113351167,NL
3113351168,3113352191,FR
-3113352192,3113353215,UA
+3113352192,3113353215,NL
3113353216,3113354239,KZ
3113354240,3113355263,CZ
3113355264,3113356287,PL
3113356288,3113357311,FI
3113357312,3113358335,KZ
-3113358336,3113359359,BG
+3113358336,3113359359,CZ
3113359360,3113360383,FR
3113360384,3113361407,BG
3113361408,3113362431,RO
@@ -87088,6 +100178,7 @@
3113366528,3113367551,PL
3113367552,3113368575,ES
3113368576,3113369599,DE
+3113369600,3113370623,RU
3113370624,3113371647,NL
3113371648,3113372671,RU
3113372672,3113373695,FR
@@ -87102,8 +100193,7 @@
3113381888,3113382911,AZ
3113382912,3113383935,RU
3113383936,3113384959,UA
-3113384960,3113385727,GB
-3113385728,3113385983,US
+3113384960,3113385983,US
3113385984,3113388031,IT
3113388032,3113389055,SY
3113389056,3113390079,SE
@@ -87117,8 +100207,7 @@
3113398272,3113399295,GE
3113399296,3113401343,IE
3113401344,3113402367,NL
-3113402368,3113403391,GB
-3113403392,3113404415,DE
+3113402368,3113404415,DE
3113404416,3113405439,NO
3113405440,3113406463,DE
3113406464,3113407487,DK
@@ -87139,14 +100228,14 @@
3113421824,3113422847,NL
3113422848,3113423871,ES
3113423872,3113424895,FI
-3113424896,3113425151,CZ
+3113424896,3113425151,AZ
3113425152,3113425407,SK
3113425408,3113425919,CZ
3113425920,3113426943,KW
3113426944,3113427199,FR
3113427200,3113427455,SG
3113427456,3113427711,NL
-3113427712,3113427967,IM
+3113427712,3113427967,US
3113427968,3113428991,RU
3113428992,3113430015,IR
3113430016,3113431039,CZ
@@ -87177,7 +100266,7 @@
3113455616,3113456639,DK
3113456640,3113457663,FR
3113457664,3113458687,NL
-3113458688,3113459711,GB
+3113458688,3113459711,US
3113459712,3113460735,IR
3113460736,3113461759,IT
3113461760,3113462783,DE
@@ -87279,12 +100368,13 @@
3113564160,3113565183,NL
3113565184,3113566207,FR
3113566208,3113567231,RU
-3113567232,3113568255,GB
+3113567232,3113568255,US
3113568256,3113569279,ES
3113569280,3113570303,NL
3113570304,3113571327,ES
3113571328,3113573375,NL
3113573376,3113574399,CH
+3113574400,3113575423,RU
3113575424,3113576447,TR
3113576448,3113577471,BG
3113577472,3113578495,GB
@@ -87326,9 +100416,12 @@
3113613312,3113614335,DE
3113614336,3113615359,IL
3113615360,3113616383,TR
-3113616384,3113618431,CH
+3113616384,3113617407,CH
+3113617408,3113618431,AT
3113618432,3113619455,RU
-3113619456,3113620479,RO
+3113619456,3113619703,RO
+3113619704,3113619707,AT
+3113619708,3113620479,RO
3113620480,3113621503,GB
3113621504,3113622527,NL
3113622528,3113623551,CH
@@ -87451,6 +100544,7 @@
3113687040,3113688063,IT
3113688064,3113689087,GB
3113689088,3113690111,IT
+3113690112,3113691135,ES
3113691136,3113692159,KZ
3113692160,3113693183,GB
3113693184,3113694207,DE
@@ -87501,7 +100595,7 @@
3113718784,3113719807,SY
3113719808,3113720831,DE
3113720832,3113721855,BG
-3113721856,3113722879,DE
+3113721856,3113722879,US
3113722880,3113723903,CH
3113723904,3113725951,CZ
3113725952,3113726975,ES
@@ -87543,6 +100637,7 @@
3113763328,3113763839,US
3113763840,3113764863,VA
3113764864,3113765887,IE
+3113765888,3113766911,PL
3113766912,3113767935,RU
3113767936,3113768959,NL
3113768960,3113769983,TR
@@ -87587,8 +100682,9 @@
3113810944,3113812991,IT
3113812992,3113814015,SE
3113814016,3113815039,FR
-3113815040,3113816063,MD
+3113815040,3113816063,GB
3113816064,3113817087,ES
+3113817088,3113818111,GB
3113818112,3113819135,SI
3113819136,3113820159,FR
3113820160,3113822207,PL
@@ -87605,6 +100701,7 @@
3113832448,3113833471,CZ
3113833472,3113834495,LB
3113834496,3113835519,DE
+3113835520,3113836543,RU
3113836544,3113837567,FR
3113837568,3113838591,GB
3113838592,3113839615,CH
@@ -87618,7 +100715,9 @@
3113846784,3113847807,ES
3113847808,3113848831,DE
3113848832,3113849855,EE
-3113849856,3113850879,IL
+3113849856,3113850367,IL
+3113850368,3113850623,ES
+3113850624,3113850879,IL
3113850880,3113851903,DK
3113851904,3113852927,SE
3113852928,3113853951,PS
@@ -87629,12 +100728,13 @@
3113857280,3113857535,MX
3113857536,3113857791,US
3113857792,3113858047,CA
-3113858048,3113859071,UA
+3113858048,3113859071,RU
3113859072,3113860095,IR
3113860096,3113861119,NL
3113861120,3113862143,CZ
-3113862144,3113863167,RU
-3113863168,3113864191,LT
+3113862144,3113863167,MD
+3113863168,3113863423,NL
+3113863424,3113864191,LT
3113864192,3113865215,GB
3113865216,3113866239,IR
3113866240,3113867263,LB
@@ -87651,9 +100751,11 @@
3113877504,3113878527,ES
3113878528,3113879551,US
3113879552,3113880575,ES
-3113880576,3113880831,NL
-3113880832,3113881599,UA
-3113881600,3113882623,RO
+3113880576,3113881599,NL
+3113881600,3113881855,NO
+3113881856,3113882111,GB
+3113882112,3113882367,ES
+3113882368,3113882623,DK
3113882624,3113883647,RU
3113883648,3113884671,ES
3113884672,3113885695,DE
@@ -87695,13 +100797,15 @@
3113922560,3113923583,DK
3113923584,3113924607,UA
3113924608,3113925631,IR
-3113925632,3113926655,KW
+3113925632,3113926655,DE
3113926656,3113927679,RU
3113927680,3113928703,ES
3113928704,3113929727,RU
3113929728,3113931775,ES
3113931776,3113932799,UA
-3113932800,3113933823,RO
+3113932800,3113933055,RO
+3113933056,3113933567,US
+3113933568,3113933823,RO
3113933824,3113934847,EE
3113934848,3113935871,NL
3113935872,3113936895,SE
@@ -87723,12 +100827,13 @@
3113953280,3113954303,PL
3113954304,3113955327,NL
3113955328,3113956351,SK
-3113956352,3113957375,RO
+3113956352,3113957375,US
3113957376,3113958399,DE
3113958400,3113961471,ES
3113961472,3113962495,IR
3113962496,3113963519,NL
3113963520,3113964543,DK
+3113964544,3113965567,SE
3113965568,3113966591,UA
3113966592,3113967615,FR
3113967616,3113968639,EE
@@ -87785,7 +100890,8 @@
3114015744,3114016767,TR
3114016768,3114017791,PL
3114017792,3114018815,CZ
-3114018816,3114019839,UA
+3114018816,3114019071,PL
+3114019072,3114019839,UA
3114019840,3114020863,IR
3114020864,3114021887,GB
3114021888,3114022911,UA
@@ -87796,8 +100902,7 @@
3114027008,3114028031,RU
3114028032,3114030079,FR
3114030080,3114031103,DE
-3114031104,3114032127,NO
-3114032128,3114033151,FI
+3114031104,3114033151,FI
3114033152,3114034175,DK
3114034176,3114035199,ES
3114035200,3114036223,GB
@@ -87806,7 +100911,6 @@
3114038272,3114039295,GB
3114039296,3114040319,CZ
3114040320,3114041343,DE
-3114041344,3114042367,SK
3114042368,3114043391,IT
3114043392,3114045439,GB
3114045440,3114046463,AT
@@ -87828,7 +100932,8 @@
3114060800,3114061823,DE
3114061824,3114062847,NL
3114062848,3114063871,LB
-3114063872,3114064895,ES
+3114063872,3114064127,AT
+3114064128,3114064895,ES
3114064896,3114065919,CH
3114065920,3114066943,DE
3114066944,3114067967,CH
@@ -87852,8 +100957,7 @@
3114086400,3114087423,GB
3114087424,3114088447,NL
3114088448,3114089471,NO
-3114089472,3114090495,RO
-3114090496,3114091519,NL
+3114089472,3114091519,NL
3114091520,3114092543,BE
3114092544,3114093567,CH
3114093568,3114094591,UA
@@ -87874,6 +100978,7 @@
3114108928,3114109951,KG
3114109952,3114110975,BE
3114110976,3114111999,NL
+3114112000,3114113023,DE
3114113024,3114114047,ES
3114114048,3114115071,DE
3114115072,3114116095,SE
@@ -87902,9 +101007,12 @@
3114138624,3114139647,RU
3114139648,3114140671,AL
3114140672,3114141695,FR
-3114141696,3114142719,ES
+3114141696,3114142207,ES
+3114142208,3114142655,NO
+3114142656,3114142719,ES
3114142720,3114143743,DE
3114143744,3114144767,AT
+3114144768,3114145791,IQ
3114145792,3114146815,AT
3114146816,3114147839,IT
3114147840,3114148863,SY
@@ -87942,11 +101050,12 @@
3114170608,3114170623,GB
3114170624,3114171391,DE
3114171392,3114172415,ES
-3114172416,3114173439,GB
+3114172416,3114172927,RU
+3114172928,3114173439,GB
3114173440,3114173679,DE
3114173680,3114173695,GB
3114173696,3114174463,DE
-3114174464,3114175231,NL
+3114174464,3114175231,US
3114175232,3114175487,DE
3114175488,3114176511,IT
3114176512,3114177535,NL
@@ -87980,7 +101089,9 @@
3114199040,3114201087,IT
3114201088,3114203135,GB
3114203136,3114203391,RO
-3114203392,3114204159,NL
+3114203392,3114203647,NL
+3114203648,3114203903,GB
+3114203904,3114204159,NL
3114204160,3114205183,ES
3114205184,3114206207,IT
3114206208,3114207231,NL
@@ -88047,14 +101158,14 @@
3114264576,3114265599,GB
3114265600,3114266623,FI
3114266624,3114267647,NL
-3114267648,3114267674,BE
+3114267648,3114267674,US
3114267675,3114267675,FR
3114267676,3114267676,DE
3114267677,3114267677,NL
3114267678,3114267678,PL
3114267679,3114267679,ES
3114267680,3114267680,GB
-3114267681,3114267903,BE
+3114267681,3114267903,US
3114267904,3114268159,GB
3114268160,3114268671,BR
3114268672,3114269695,BE
@@ -88130,12 +101241,13 @@
3114334208,3114335231,DE
3114335232,3114336255,GB
3114336256,3114337279,US
-3114337280,3114338303,BG
+3114337280,3114338303,GB
3114338304,3114339327,FR
3114339328,3114340351,ES
3114340352,3114341375,GB
3114341376,3114342399,CH
3114342400,3114343423,GB
+3114343424,3114344447,NL
3114344448,3114345471,RU
3114345472,3114346495,IR
3114346496,3114347519,ES
@@ -88176,9 +101288,11 @@
3114381312,3114382335,DE
3114382336,3114383359,RU
3114383360,3114384383,ES
-3114384384,3114385407,GB
+3114384384,3114384895,GB
+3114384896,3114385151,IT
+3114385152,3114385407,PT
3114385408,3114386431,IT
-3114386432,3114387455,US
+3114386432,3114387455,RU
3114387456,3114387711,JP
3114387712,3114387967,AU
3114387968,3114388479,US
@@ -88197,7 +101311,9 @@
3114400768,3114401791,CZ
3114401792,3114402815,HU
3114402816,3114403839,CZ
-3114403840,3114404863,NL
+3114403840,3114404351,NL
+3114404352,3114404607,BG
+3114404608,3114404863,NL
3114404864,3114405887,RU
3114405888,3114406911,CY
3114406912,3114407935,UA
@@ -88205,7 +101321,7 @@
3114408960,3114409983,BE
3114409984,3114411007,RU
3114411008,3114412031,IT
-3114412032,3114413055,US
+3114412032,3114413055,IR
3114413056,3114413119,LT
3114413120,3114413183,EE
3114413184,3114413247,LV
@@ -88238,7 +101354,9 @@
3114432512,3114433535,MC
3114433536,3114434559,IL
3114434560,3114434815,NL
-3114434816,3114435583,US
+3114434816,3114435071,US
+3114435072,3114435327,NL
+3114435328,3114435583,US
3114435584,3114436607,MD
3114436608,3114437631,AZ
3114437632,3114438655,MD
@@ -88291,7 +101409,8 @@
3114488832,3114489855,SE
3114489856,3114490879,IR
3114490880,3114491903,CH
-3114491904,3114492927,GB
+3114491904,3114492159,US
+3114492160,3114492927,GB
3114492928,3114493951,NL
3114493952,3114495999,RO
3114496000,3114497023,DE
@@ -88308,7 +101427,10 @@
3114507264,3114508287,RU
3114508288,3114509311,SA
3114509312,3114510335,ES
-3114510336,3114511359,GB
+3114510336,3114510591,IE
+3114510592,3114510847,PT
+3114510848,3114511103,SE
+3114511104,3114511359,BE
3114511360,3114512383,NL
3114512384,3114513407,RU
3114513408,3114514431,CZ
@@ -88326,8 +101448,7 @@
3114526720,3114527743,GB
3114527744,3114529791,RU
3114529792,3114530815,BG
-3114530816,3114531839,RU
-3114531840,3114532863,NL
+3114530816,3114532863,NL
3114532864,3114533887,MD
3114533888,3114534911,AT
3114534912,3114535935,FI
@@ -88351,9 +101472,10 @@
3114544128,3114545151,GB
3114545152,3114546175,MD
3114546176,3114547199,DE
-3114547200,3114548223,NL
-3114548224,3114549247,DE
-3114549248,3114550271,GB
+3114547200,3114547455,NL
+3114547456,3114547711,FR
+3114547712,3114548223,NL
+3114548224,3114550271,GB
3114550272,3114551295,CZ
3114551296,3114552319,IR
3114552320,3114553343,LB
@@ -88361,6 +101483,7 @@
3114554368,3114555391,DE
3114555392,3114556415,ES
3114556416,3114557439,IT
+3114557440,3114558463,DE
3114558464,3114559487,ES
3114559488,3114560511,LB
3114560512,3114561535,DE
@@ -88392,6 +101515,7 @@
3114587136,3114588159,FR
3114588160,3114589183,IQ
3114589184,3114590207,GB
+3114590208,3114591231,ES
3114591232,3114592255,DE
3114592256,3114593279,FR
3114593280,3114594303,SA
@@ -88448,12 +101572,13 @@
3114639104,3114639359,PL
3114639360,3114640383,RU
3114640384,3114641407,ES
-3114641408,3114642431,IS
+3114641408,3114642431,SC
3114642432,3114643455,SE
3114643456,3114644479,BH
3114644480,3114645503,GB
3114645504,3114646527,RO
-3114646528,3114648575,NL
+3114646528,3114647551,NL
+3114647552,3114648575,IT
3114648576,3114649599,NO
3114649600,3114650623,RU
3114650624,3114651647,IR
@@ -88486,12 +101611,14 @@
3114682368,3114683391,RU
3114683392,3114684415,FI
3114684416,3114685439,CH
-3114685440,3114686463,DE
-3114686464,3114687487,NL
+3114685440,3114686207,BG
+3114686208,3114686463,EE
+3114686464,3114687487,CW
3114687488,3114688511,KW
3114688512,3114689535,CH
3114689536,3114690559,FR
3114690560,3114691583,IR
+3114691584,3114692607,CZ
3114692608,3114693631,IR
3114693632,3114694655,CY
3114694656,3114695679,DK
@@ -88526,7 +101653,7 @@
3114726400,3114727423,SE
3114727424,3114728447,BE
3114728448,3114729471,GB
-3114729472,3114730495,RO
+3114729472,3114730495,AU
3114730496,3114731519,GB
3114731520,3114732543,CH
3114732544,3114733567,SY
@@ -88539,7 +101666,8 @@
3114742784,3114743807,IR
3114743808,3114744831,MD
3114744832,3114745855,TR
-3114745856,3114747903,RO
+3114745856,3114746879,CA
+3114746880,3114747903,FR
3114747904,3114748927,IR
3114748928,3114749951,GB
3114749952,3114750975,CH
@@ -88563,9 +101691,9 @@
3114768384,3114769407,IL
3114769408,3114770431,DE
3114770432,3114771455,UA
-3114771456,3114772479,US
+3114771456,3114772479,DK
3114772480,3114773503,GB
-3114773504,3114774527,DE
+3114773504,3114774527,BG
3114774528,3114775551,SE
3114775552,3114776575,GB
3114776576,3114777599,CZ
@@ -88633,13 +101761,16 @@
3114841088,3114842111,DK
3114842112,3114843135,RU
3114843136,3114844159,FR
-3114844160,3114845183,GB
+3114844160,3114844415,GB
+3114844416,3114844671,DE
+3114844672,3114845183,GB
3114845184,3114846207,DK
3114846208,3114847231,NL
3114847232,3114848255,FI
3114848256,3114849279,RU
3114849280,3114850303,FI
-3114850304,3114851327,GB
+3114850304,3114850559,SE
+3114850560,3114851327,NL
3114851328,3114852351,UA
3114852352,3114853375,RU
3114853376,3114854399,DE
@@ -88647,16 +101778,18 @@
3114855424,3114856447,RU
3114856448,3114857471,SE
3114857472,3114858495,DK
-3114858496,3114860543,NL
+3114858496,3114858751,NL
+3114858752,3114859519,FR
+3114859520,3114860543,NL
3114860544,3114861567,DE
3114861568,3114862591,AE
3114862592,3114863615,AT
3114863616,3114864639,DK
3114864640,3114865663,UA
-3114865664,3114866687,US
+3114865664,3114866687,IR
3114866688,3114867711,IT
3114867712,3114869759,GB
-3114869760,3114870783,US
+3114869760,3114870783,IR
3114870784,3114871807,SE
3114871808,3114872831,IT
3114872832,3114873855,MD
@@ -88703,7 +101836,9 @@
3114915840,3114916863,RU
3114916864,3114917887,LB
3114917888,3114918911,IT
-3114918912,3114919935,CH
+3114918912,3114919167,HN
+3114919168,3114919679,CH
+3114919680,3114919935,LU
3114919936,3114920703,GB
3114920704,3114920959,NL
3114920960,3114921983,IT
@@ -88724,7 +101859,7 @@
3114933248,3114934271,DK
3114934272,3114935295,PL
3114935296,3114936319,CA
-3114936320,3114937343,DE
+3114936320,3114937343,US
3114938368,3114939391,CH
3114939392,3114940415,RU
3114940416,3114941439,IL
@@ -88766,7 +101901,9 @@
3114977280,3114978303,PL
3114978304,3114979327,RU
3114979328,3114980351,NL
-3114980352,3114983423,RO
+3114980352,3114981375,DE
+3114981376,3114982399,US
+3114982400,3114983423,JP
3114983424,3114983679,PL
3114983680,3114983935,RO
3114983936,3114984447,PL
@@ -88777,7 +101914,8 @@
3114988544,3114989567,DE
3114989568,3114990591,NO
3114990592,3114991615,LT
-3114991616,3114992639,GB
+3114991616,3114991871,GB
+3114991872,3114992639,TR
3114992640,3114993663,FR
3114993664,3114994687,ES
3114994688,3114995711,RU
@@ -88792,9 +101930,8 @@
3115003904,3115004927,NL
3115004928,3115005951,IR
3115005952,3115006975,GB
-3115006976,3115007423,RS
-3115007424,3115007487,XK
-3115007488,3115007999,RS
+3115006976,3115007231,RS
+3115007232,3115007999,XK
3115008000,3115009023,BE
3115009024,3115010047,MD
3115010048,3115011071,SY
@@ -88828,6 +101965,7 @@
3115039744,3115040767,GB
3115040768,3115041791,RU
3115041792,3115042815,DK
+3115042816,3115043839,RU
3115043840,3115044863,DE
3115044864,3115045887,NL
3115045888,3115046911,IT
@@ -88843,7 +101981,9 @@
3115058176,3115059199,BE
3115059200,3115060223,DE
3115060224,3115062271,FR
-3115062272,3115063295,GB
+3115062272,3115062527,US
+3115062528,3115062783,CA
+3115062784,3115063295,US
3115063296,3115064319,EE
3115064320,3115066367,MD
3115066368,3115067391,NL
@@ -88877,7 +102017,7 @@
3115092992,3115094015,IT
3115094016,3115094527,DE
3115094528,3115094783,TR
-3115094784,3115095039,NL
+3115094784,3115095039,US
3115095040,3115096063,DE
3115096064,3115097087,FR
3115097088,3115098111,LT
@@ -88956,15 +102096,15 @@
3115171840,3115172863,GB
3115172864,3115173887,SE
3115173888,3115174911,FR
-3115174912,3115175935,RS
+3115174912,3115175935,AL
3115175936,3115176959,FI
3115176960,3115177983,IT
3115177984,3115179007,NL
3115179008,3115180031,SE
-3115180032,3115180287,US
-3115180288,3115180543,DE
+3115180032,3115180543,US
3115180544,3115180799,CY
-3115180800,3115182079,DE
+3115180800,3115181055,MT
+3115181056,3115182079,DE
3115182080,3115183103,NL
3115183104,3115184127,IT
3115184128,3115185151,DE
@@ -88986,7 +102126,9 @@
3115200512,3115201535,DE
3115201536,3115202559,FR
3115202560,3115203583,GR
-3115203584,3115204607,DE
+3115203584,3115204095,DE
+3115204096,3115204351,US
+3115204352,3115204607,DE
3115204608,3115205631,BE
3115205632,3115206655,TR
3115206656,3115207679,DE
@@ -89005,13 +102147,16 @@
3115219968,3115220991,NL
3115220992,3115222015,RU
3115222016,3115223039,IR
-3115223040,3115224063,RU
+3115223040,3115223807,RU
+3115223808,3115224063,US
3115224064,3115225087,SE
3115225088,3115226111,UA
3115226112,3115227135,DE
3115227136,3115228159,PL
-3115228160,3115228671,AT
-3115228672,3115229183,IL
+3115228160,3115228415,PT
+3115228416,3115228671,AT
+3115228672,3115228927,GB
+3115228928,3115229183,PT
3115229184,3115230207,EE
3115230208,3115231231,RU
3115231232,3115232255,CZ
@@ -89024,7 +102169,7 @@
3115237376,3115238399,RU
3115238400,3115239423,BE
3115239424,3115240447,IR
-3115240448,3115241471,DE
+3115240448,3115241471,US
3115241472,3115242495,AL
3115242496,3115243519,ES
3115243520,3115244543,CH
@@ -89039,6 +102184,7 @@
3115252736,3115253759,US
3115253760,3115254783,SI
3115254784,3115255807,NL
+3115255808,3115256831,CZ
3115256832,3115257855,GB
3115257856,3115258879,RU
3115258880,3115259903,AT
@@ -89050,7 +102196,8 @@
3115265024,3115266047,RU
3115266048,3115267071,GB
3115267072,3115268095,SY
-3115268096,3115269119,DE
+3115268096,3115268607,NO
+3115268608,3115269119,AT
3115269120,3115270143,ES
3115270144,3115271167,NO
3115271168,3115271423,US
@@ -89089,10 +102236,11 @@
3115298816,3115299839,FI
3115299840,3115300863,BE
3115300864,3115301887,PT
-3115301888,3115302911,NL
+3115301888,3115302911,SK
3115302912,3115303935,LT
3115303936,3115305983,NL
-3115305984,3115307007,TR
+3115305984,3115306495,TR
+3115306496,3115307007,BE
3115307008,3115307519,DE
3115307520,3115308031,CA
3115308032,3115309055,IT
@@ -89126,7 +102274,8 @@
3115337728,3115338751,SK
3115338752,3115340799,GB
3115340800,3115341823,ES
-3115341824,3115342847,GB
+3115341824,3115342079,US
+3115342080,3115342847,GB
3115342848,3115343871,RU
3115343872,3115344895,SE
3115344896,3115345919,IE
@@ -89142,7 +102291,9 @@
3115355136,3115356159,NL
3115356160,3115357183,LB
3115357184,3115358207,FR
-3115358208,3115362303,DE
+3115358208,3115359743,DE
+3115359744,3115359999,RU
+3115360000,3115362303,DE
3115362304,3115363327,FR
3115363328,3115364351,GB
3115364352,3115365375,FR
@@ -89150,7 +102301,7 @@
3115366400,3115367423,SE
3115367424,3115368447,ES
3115368448,3115369471,BG
-3115369472,3115370495,GB
+3115369472,3115370495,MT
3115370496,3115371519,IT
3115371520,3115372543,GB
3115372544,3115373567,LB
@@ -89170,21 +102321,23 @@
3115385856,3115387903,SK
3115387904,3115388927,MK
3115388928,3115389951,AT
-3115389952,3115390719,GB
+3115389952,3115390207,DE
+3115390208,3115390719,GB
3115390720,3115390975,NL
-3115390976,3115391999,GB
3115392000,3115393023,AL
3115393024,3115395071,IT
3115395072,3115396095,ES
3115396096,3115397119,FR
-3115397120,3115398143,GB
+3115397120,3115398143,MT
3115398144,3115399167,RU
3115399168,3115400191,BG
3115400192,3115401215,RU
3115401216,3115402239,GB
-3115402240,3115403263,NL
+3115402240,3115402495,IE
+3115402496,3115403263,US
3115403264,3115404287,ES
-3115404288,3115405567,GB
+3115404288,3115405311,GB
+3115405312,3115405567,US
3115405568,3115405823,DE
3115405824,3115406335,GB
3115406336,3115407359,DE
@@ -89197,7 +102350,8 @@
3115414528,3115415551,DE
3115415552,3115416575,DK
3115416576,3115417599,MD
-3115417600,3115418623,DE
+3115417856,3115418367,DE
+3115418368,3115418623,US
3115418624,3115419647,IS
3115419648,3115420671,NL
3115420672,3115421695,DE
@@ -89208,10 +102362,11 @@
3115425792,3115426815,DK
3115426816,3115427839,TR
3115427840,3115428863,ES
-3115428864,3115429887,US
-3115429888,3115430911,NL
+3115428864,3115429887,PL
+3115429888,3115430399,NL
+3115430400,3115430911,FI
3115430912,3115431935,FR
-3115431936,3115432959,GB
+3115431936,3115432959,AE
3115432960,3115433983,UA
3115433984,3115435007,IT
3115435008,3115436031,ES
@@ -89220,10 +102375,10 @@
3115438080,3115439103,GB
3115439104,3115440127,IT
3115440128,3115441151,RU
-3115441152,3115442175,NL
+3115441152,3115442175,US
3115442176,3115443199,FR
3115443200,3115444223,GB
-3115444224,3115445247,US
+3115444224,3115445247,IR
3115445248,3115446271,RU
3115446272,3115447295,UA
3115447296,3115448319,IT
@@ -89237,7 +102392,8 @@
3115455488,3115456511,DK
3115456512,3115457535,DE
3115457536,3115458559,FR
-3115458560,3115462655,DE
+3115458560,3115461631,DE
+3115461632,3115462655,RU
3115462656,3115462911,FR
3115462912,3115463167,GB
3115463168,3115463423,DE
@@ -89276,7 +102432,8 @@
3115496448,3115497471,SE
3115497472,3115498495,FR
3115498496,3115499519,GB
-3115499520,3115501567,DE
+3115499520,3115500543,CH
+3115500544,3115501567,DE
3115501568,3115502591,NL
3115502592,3115504639,RU
3115504640,3115505663,DE
@@ -89314,10 +102471,10 @@
3115538432,3115539455,NL
3115539456,3115540479,ME
3115540480,3115541503,DK
-3115541504,3115542527,DE
+3115541504,3115542527,GB
3115542528,3115543551,ES
3115543552,3115544575,IS
-3115544576,3115545599,NL
+3115544576,3115545599,DK
3115545600,3115546623,FI
3115546624,3115547647,GB
3115547648,3115548671,RU
@@ -89350,7 +102507,11 @@
3115574272,3115575295,GB
3115575296,3115576319,ES
3115576320,3115577343,FI
-3115577344,3115578367,IL
+3115577344,3115577567,IL
+3115577568,3115577583,US
+3115577584,3115577855,IL
+3115577856,3115578111,NL
+3115578112,3115578367,IL
3115578368,3115579391,GB
3115579392,3115580415,US
3115580416,3115581439,GB
@@ -89369,7 +102530,8 @@
3115591680,3115592703,CH
3115592704,3115593727,BE
3115593728,3115593983,ES
-3115593984,3115594751,GB
+3115593984,3115594239,DE
+3115594240,3115594751,GB
3115594752,3115595775,IR
3115595776,3115596799,RU
3115596800,3115597823,IQ
@@ -89480,7 +102642,8 @@
3115708416,3115709439,RO
3115709440,3115710463,RU
3115710464,3115711487,GE
-3115711488,3115714559,BG
+3115711488,3115714559,ES
+3115714560,3115715583,DE
3115715584,3115717631,RU
3115717632,3115718655,UA
3115718656,3115719679,CH
@@ -89490,9 +102653,12 @@
3115723776,3115724799,DE
3115724800,3115725311,GB
3115725312,3115725567,DE
-3115725568,3115726847,GB
+3115725568,3115725823,US
+3115725824,3115726847,GB
3115726848,3115727871,NL
-3115727872,3115728703,GB
+3115727872,3115728127,GB
+3115728128,3115728383,US
+3115728384,3115728703,GB
3115728704,3115728735,NL
3115728736,3115728895,GB
3115728896,3115729919,FR
@@ -89510,6 +102676,7 @@
3115741184,3115742207,LB
3115742208,3115743231,IT
3115743232,3115744255,AM
+3115744256,3115745279,ES
3115745280,3115746303,RU
3115746304,3115747327,BE
3115747328,3115748351,JO
@@ -89539,6 +102706,7 @@
3115771904,3115772927,DE
3115772928,3115773951,TR
3115773952,3115774975,GB
+3115774976,3115775999,PL
3115776000,3115777023,IR
3115777024,3115779071,FR
3115779072,3115780095,IT
@@ -89561,7 +102729,10 @@
3115797504,3115798015,UA
3115798016,3115798527,RU
3115798528,3115799551,MD
-3115799552,3115801599,DE
+3115799552,3115799807,US
+3115799808,3115800063,DE
+3115800064,3115800319,GB
+3115800320,3115801599,DE
3115801600,3115802623,LB
3115802624,3115802879,NL
3115802880,3115803135,RO
@@ -89570,8 +102741,8 @@
3115803648,3115804671,GB
3115804672,3115804927,CH
3115804928,3115805183,IT
-3115805184,3115805311,ES
-3115805312,3115805695,GB
+3115805184,3115805439,ES
+3115805440,3115805695,AT
3115805696,3115806719,UA
3115806720,3115807743,NL
3115807744,3115808767,BE
@@ -89590,8 +102761,7 @@
3115822080,3115823103,RU
3115823104,3115824127,DE
3115824128,3115824639,US
-3115824640,3115824895,GB
-3115824896,3115825151,DE
+3115824640,3115825151,GB
3115825152,3115826175,GR
3115826176,3115828223,CH
3115828224,3115829247,RU
@@ -89626,7 +102796,7 @@
3115857920,3115858943,LU
3115858944,3115859967,BG
3115859968,3115860991,FI
-3115860992,3115862015,DE
+3115860992,3115862015,US
3115862016,3115863039,NL
3115863040,3115864063,RU
3115864064,3115865087,PL
@@ -89642,10 +102812,10 @@
3115874304,3115875327,GB
3115875328,3115876351,PL
3115876352,3115877375,RU
-3115877376,3115878399,CH
-3115878400,3115879423,IT
-3115879424,3115879935,GB
-3115879936,3115880447,CR
+3115877376,3115877887,CH
+3115877888,3115879423,IT
+3115879424,3115879679,GB
+3115879680,3115880447,CR
3115880448,3115881471,LT
3115881472,3115882495,ES
3115882496,3115884543,GB
@@ -89688,6 +102858,7 @@
3115919360,3115920383,NL
3115920384,3115921407,IT
3115921408,3115922431,NL
+3115922432,3115923455,ES
3115923456,3115924479,RU
3115924480,3115925503,TR
3115925504,3115926527,ES
@@ -89704,7 +102875,8 @@
3115936768,3115937791,GB
3115937792,3115938815,TR
3115938816,3115939839,FR
-3115939840,3115940863,RU
+3115939840,3115940351,RU
+3115940352,3115940863,TR
3115940864,3115941119,CU
3115941120,3115941887,DE
3115941888,3115942911,CZ
@@ -89718,7 +102890,7 @@
3115953152,3115954175,IQ
3115954176,3115955199,LB
3115955200,3115956223,UA
-3115956224,3115957247,NL
+3115956224,3115957247,CY
3115957248,3115959295,DE
3115959296,3115960319,ES
3115960320,3115961343,CH
@@ -89738,8 +102910,11 @@
3115973376,3115973631,US
3115973632,3115974655,UA
3115974656,3115975679,RU
-3115975680,3115976703,GB
-3115976704,3115977727,US
+3115975680,3115975935,US
+3115975936,3115976703,GB
+3115976704,3115976959,US
+3115976960,3115977471,GB
+3115977472,3115977727,US
3115977728,3115978751,IT
3115978752,3115980799,PL
3115980800,3115981823,DE
@@ -89759,8 +102934,9 @@
3115993088,3115994111,FR
3115994112,3115994367,CH
3115994368,3115994623,GB
-3115994624,3115995135,CH
-3115995136,3115996159,AL
+3115994624,3115994879,SE
+3115994880,3115995135,DK
+3115995136,3115996159,RS
3115996160,3115997183,GR
3115997184,3115998207,FR
3115998208,3115999231,IT
@@ -89824,7 +103000,8 @@
3116062720,3116063743,RU
3116063744,3116064767,LB
3116064768,3116065791,ES
-3116065792,3116066815,BE
+3116065792,3116066047,BE
+3116066048,3116066815,NL
3116066816,3116067839,TR
3116067840,3116068863,NL
3116068864,3116069887,RU
@@ -89836,12 +103013,18 @@
3116075008,3116076031,HR
3116076032,3116077055,CZ
3116077056,3116078079,DK
-3116078080,3116081151,GB
+3116078080,3116080127,GB
+3116080384,3116080639,US
+3116080640,3116080895,HK
+3116080896,3116081151,GB
3116081152,3116082175,IL
3116082176,3116083199,FR
3116083200,3116084223,US
3116084224,3116085247,IT
-3116085248,3116086271,KW
+3116085248,3116085503,KW
+3116085504,3116085759,SA
+3116085760,3116086015,EG
+3116086016,3116086271,SA
3116086272,3116087295,ES
3116087296,3116088319,TR
3116088320,3116089343,RU
@@ -89855,10 +103038,13 @@
3116096512,3116097535,SY
3116097536,3116098559,NL
3116098560,3116099583,CH
-3116099584,3116100607,DE
+3116099584,3116100607,US
3116100608,3116101631,CZ
3116101632,3116102655,DE
-3116102656,3116103679,FR
+3116102656,3116102911,FR
+3116102912,3116103167,DE
+3116103168,3116103423,SG
+3116103424,3116103679,US
3116103680,3116104703,HU
3116104704,3116105727,SE
3116105728,3116107007,DE
@@ -89876,7 +103062,7 @@
3116116992,3116118015,CH
3116118016,3116120063,DE
3116120064,3116121087,HU
-3116121088,3116122111,GB
+3116121344,3116121599,GB
3116122112,3116123135,DE
3116123136,3116124159,PL
3116124160,3116125183,DE
@@ -89905,11 +103091,11 @@
3116149760,3116150783,GB
3116150784,3116151807,FR
3116151808,3116152831,RU
+3116152832,3116153855,CZ
3116153856,3116154879,SK
3116154880,3116155903,RU
3116155904,3116156927,CH
3116156928,3116157951,DE
-3116157952,3116158975,RU
3116158976,3116161023,ES
3116161024,3116162047,AL
3116162048,3116163071,GB
@@ -89929,9 +103115,9 @@
3116177920,3116178431,DE
3116178432,3116179455,SE
3116179456,3116180479,CZ
-3116180480,3116181503,RO
+3116180480,3116181503,US
3116181504,3116182527,GB
-3116182528,3116183551,RO
+3116182528,3116183551,US
3116183552,3116184575,SE
3116184576,3116185599,TR
3116185600,3116185855,US
@@ -89944,14 +103130,15 @@
3116191744,3116192767,AT
3116192768,3116193791,SE
3116193792,3116194815,LB
-3116194816,3116195839,CZ
+3116194816,3116195839,US
3116195840,3116196863,DE
3116196864,3116197887,RU
3116197888,3116198911,NL
3116198912,3116199935,ES
3116199936,3116200191,DE
3116200192,3116200447,FR
-3116200448,3116200959,GB
+3116200448,3116200703,HU
+3116200704,3116200959,CZ
3116200960,3116201983,DE
3116201984,3116203007,IR
3116203008,3116204031,PL
@@ -89989,7 +103176,10 @@
3116235776,3116238847,RU
3116238848,3116239871,UA
3116239872,3116240895,IE
-3116240896,3116241919,FR
+3116240896,3116241151,US
+3116241152,3116241407,FR
+3116241408,3116241663,US
+3116241664,3116241919,TR
3116241920,3116242943,IR
3116242944,3116243967,NL
3116243968,3116244991,LB
@@ -89997,7 +103187,9 @@
3116246016,3116247039,BG
3116247040,3116248063,RU
3116248064,3116249087,GB
-3116249088,3116250111,AT
+3116249088,3116249599,AT
+3116249600,3116249855,CH
+3116249856,3116250111,AT
3116250112,3116251135,DE
3116251136,3116251391,US
3116251392,3116251519,GB
@@ -90007,7 +103199,10 @@
3116253184,3116254207,NL
3116254208,3116255231,DE
3116255232,3116256255,GB
-3116256256,3116258303,AT
+3116256256,3116257279,AT
+3116257280,3116257535,CR
+3116257536,3116257791,US
+3116257792,3116258303,AT
3116258304,3116259327,NL
3116259328,3116260351,FR
3116260352,3116261375,DE
@@ -90030,11 +103225,14 @@
3116278784,3116279807,RU
3116279808,3116281855,NO
3116281856,3116282879,ES
-3116282880,3116285951,RU
+3116282880,3116284927,RU
+3116284928,3116285183,NL
+3116285184,3116285951,RU
3116285952,3116286975,DE
3116286976,3116287999,GB
3116288000,3116290047,IE
-3116290048,3116294143,IT
+3116290048,3116293119,IT
+3116293120,3116294143,GB
3116294144,3116295167,US
3116295168,3116297215,NL
3116297216,3116298239,DE
@@ -90070,7 +103268,7 @@
3116328960,3116329983,IT
3116329984,3116331007,DE
3116331008,3116332031,UA
-3116332032,3116333055,RO
+3116332032,3116333055,US
3116333056,3116334079,DE
3116334080,3116335103,NL
3116335104,3116336127,BE
@@ -90084,7 +103282,7 @@
3116343296,3116344319,GB
3116344320,3116345343,AL
3116345344,3116346367,MD
-3116346368,3116347391,DE
+3116346368,3116347391,AG
3116347392,3116348415,UA
3116348416,3116349439,IT
3116349440,3116350463,CZ
@@ -90104,7 +103302,7 @@
3116363776,3116364799,NL
3116364800,3116365823,PL
3116365824,3116367871,ES
-3116367872,3116368895,NL
+3116367872,3116368895,GR
3116368896,3116369919,GI
3116369920,3116370943,IR
3116370944,3116371967,FI
@@ -90119,12 +103317,12 @@
3116380160,3116381183,DE
3116381184,3116382207,LB
3116382208,3116382463,JP
-3116382464,3116382975,RU
+3116382464,3116382719,GU
+3116382720,3116382975,AQ
3116382976,3116383231,DE
3116383232,3116384255,RU
3116384256,3116385279,DE
-3116385280,3116386047,US
-3116386048,3116386303,GB
+3116385280,3116386303,GB
3116386304,3116387327,ES
3116387328,3116388351,DE
3116388352,3116389375,GB
@@ -90138,7 +103336,8 @@
3116396544,3116397567,IR
3116397568,3116398591,ES
3116398592,3116399615,RO
-3116399616,3116400639,NL
+3116399616,3116399871,IL
+3116399872,3116400639,NL
3116400640,3116401663,FI
3116401664,3116402687,NL
3116402688,3116403711,IT
@@ -90152,7 +103351,8 @@
3116410880,3116412927,DE
3116412928,3116413951,GB
3116413952,3116414975,ES
-3116414976,3116415999,BE
+3116414976,3116415231,NL
+3116415232,3116415999,BE
3116416000,3116417023,NL
3116417024,3116418047,CH
3116418048,3116419071,FI
@@ -90177,17 +103377,17 @@
3116437504,3116439551,RU
3116439552,3116440575,LT
3116440576,3116441599,MD
-3116441600,3116442623,GB
-3116442624,3116442879,AT
+3116441600,3116442879,GB
3116442880,3116443135,US
3116443136,3116443391,FR
-3116443392,3116443647,AT
+3116443392,3116443647,GB
3116443648,3116444671,DE
3116444672,3116445695,FR
-3116445696,3116447743,RO
+3116445696,3116446719,US
+3116446720,3116447743,RO
3116447744,3116448767,BG
3116448768,3116449791,EE
-3116449792,3116450815,DE
+3116449792,3116450815,US
3116450816,3116451839,ES
3116451840,3116452863,NL
3116452864,3116453887,FI
@@ -90201,7 +103401,8 @@
3116461056,3116462079,FR
3116462080,3116464127,PL
3116464128,3116465151,DK
-3116465152,3116466175,SE
+3116465152,3116465407,BV
+3116465408,3116466175,SE
3116466176,3116467199,CZ
3116467200,3116468223,AZ
3116468224,3116470271,RU
@@ -90226,7 +103427,7 @@
3116489728,3116490751,HU
3116490752,3116491775,CH
3116491776,3116492799,DE
-3116492800,3116493823,IR
+3116492800,3116493823,AF
3116493824,3116494847,DK
3116494848,3116495871,NL
3116495872,3116496895,CH
@@ -90266,7 +103467,8 @@
3116533760,3116534783,NL
3116534784,3116535807,DE
3116535808,3116536831,AT
-3116536832,3116537855,DE
+3116536832,3116537343,US
+3116537344,3116537855,DE
3116537856,3116538879,LB
3116538880,3116539903,FR
3116539904,3116540927,NL
@@ -90294,7 +103496,7 @@
3116546384,3116546399,GR
3116546400,3116546415,NO
3116546416,3116546431,SI
-3116546432,3116546815,FR
+3116546432,3116546815,LU
3116546816,3116547071,BE
3116547072,3116548095,UA
3116548096,3116549119,NL
@@ -90303,7 +103505,7 @@
3116551168,3116552191,FR
3116552192,3116553215,ES
3116553216,3116554239,PL
-3116554240,3116555263,DE
+3116554240,3116555263,US
3116555264,3116557311,PL
3116557312,3116558335,NL
3116558336,3116559359,FR
@@ -90327,8 +103529,8 @@
3116576768,3116577791,TR
3116577792,3116578815,HU
3116578816,3116579839,GB
-3116579840,3116580863,AU
-3116580864,3116581887,RO
+3116579840,3116580863,AT
+3116580864,3116581887,US
3116581888,3116582911,CH
3116582912,3116583935,IR
3116583936,3116584959,TR
@@ -90365,7 +103567,7 @@
3116616704,3116617727,ES
3116617728,3116618751,NO
3116618752,3116619775,NL
-3116619776,3116620799,DE
+3116619776,3116620799,CY
3116620800,3116621823,NL
3116621824,3116622847,CZ
3116622848,3116623871,TR
@@ -90383,7 +103585,8 @@
3116632064,3116633087,CH
3116633088,3116634111,RO
3116634112,3116635135,ES
-3116635136,3116636159,DE
+3116635136,3116635903,DE
+3116635904,3116636159,GB
3116636160,3116637183,US
3116637184,3116638207,NL
3116638208,3116639231,ES
@@ -90393,7 +103596,7 @@
3116642304,3116643327,IT
3116643328,3116644351,HU
3116644352,3116645375,ES
-3116645376,3116646399,NL
+3116645376,3116646399,CH
3116646400,3116647423,ES
3116647424,3116648447,UA
3116648448,3116649471,FR
@@ -90401,7 +103604,6 @@
3116650496,3116651519,GB
3116651520,3116652543,CH
3116652544,3116653567,NO
-3116653568,3116654591,NL
3116654592,3116656639,GB
3116656640,3116657663,CH
3116657664,3116658687,DE
@@ -90441,8 +103643,8 @@
3116699648,3116700671,NL
3116700672,3116701695,SY
3116701696,3116702719,NL
-3116702720,3116703231,US
-3116703232,3116703743,DE
+3116702720,3116703487,US
+3116703488,3116703743,GB
3116703744,3116704767,RU
3116704768,3116705791,BE
3116705792,3116706815,CH
@@ -90465,7 +103667,7 @@
3116727296,3116728319,TR
3116728320,3116729343,IT
3116729344,3116729599,DE
-3116729600,3116730367,CH
+3116729600,3116730367,NL
3116730368,3116731391,DK
3116731392,3116732415,IT
3116732416,3116733439,RU
@@ -90477,9 +103679,10 @@
3116738560,3116739583,DK
3116739584,3116740607,DE
3116740608,3116741631,JO
+3116741632,3116742655,RU
3116742656,3116743679,FR
3116743680,3116744703,NL
-3116744704,3116745727,DE
+3116744704,3116745727,US
3116745728,3116746751,TR
3116746752,3116747775,ES
3116747776,3116748799,IL
@@ -90501,9 +103704,8 @@
3116764160,3116765183,GB
3116765184,3116766207,PL
3116766208,3116767231,FR
-3116767232,3116767743,US
-3116767744,3116768255,DE
-3116768256,3116769279,GB
+3116767232,3116767999,US
+3116768000,3116769279,GB
3116769280,3116770303,LT
3116770304,3116772351,RU
3116772352,3116773375,MD
@@ -90518,7 +103720,10 @@
3116780544,3116781567,FR
3116781568,3116782591,SE
3116782592,3116783615,GB
-3116783616,3116784639,DE
+3116783616,3116783871,DE
+3116783872,3116784127,AT
+3116784128,3116784383,BE
+3116784384,3116784639,DE
3116784640,3116785663,NO
3116785664,3116786687,IT
3116786688,3116787711,ES
@@ -90552,10 +103757,10 @@
3116819456,3116820479,GB
3116820480,3116822527,AT
3116822528,3116822783,FR
-3116822784,3116823039,US
+3116822784,3116823039,IN
3116823040,3116823295,AU
3116823296,3116823551,GB
-3116823552,3116824575,RO
+3116823552,3116824575,US
3116824576,3116825599,FR
3116825600,3116826623,IR
3116826624,3116827647,DE
@@ -90571,7 +103776,7 @@
3116837888,3116838911,ES
3116838912,3116839935,IT
3116839936,3116841983,GB
-3116841984,3116843007,DE
+3116841984,3116843007,SC
3116843008,3116844031,IR
3116844032,3116845055,DE
3116845056,3116846079,IT
@@ -90628,7 +103833,7 @@
3116898304,3116899327,ES
3116899328,3116900351,TR
3116900352,3116901375,DE
-3116901376,3116902399,GB
+3116901376,3116902399,TR
3116902400,3116903423,BG
3116903424,3116905471,PL
3116905472,3116906495,AE
@@ -90645,7 +103850,8 @@
3116916736,3116919807,NL
3116919808,3116920831,CZ
3116920832,3116921855,ES
-3116921856,3116922623,GB
+3116921856,3116922367,SG
+3116922368,3116922623,GB
3116922624,3116922879,NL
3116922880,3116923903,PL
3116923904,3116924927,OM
@@ -90661,15 +103867,16 @@
3116934144,3116935167,FR
3116935168,3116936191,RU
3116936192,3116937215,GB
-3116937216,3116938239,RO
+3116937216,3116938239,US
3116938240,3116939263,IT
3116939264,3116940287,SE
-3116940288,3116941311,RU
+3116940288,3116941055,RU
+3116941056,3116941311,FI
3116941312,3116942335,FR
3116942336,3116943359,CY
3116943360,3116944383,FR
-3116944384,3116945407,GB
-3116945408,3116945919,DE
+3116944384,3116945407,US
+3116945408,3116945919,GB
3116945920,3116946431,CN
3116946432,3116947455,AL
3116947456,3116948479,RU
@@ -90684,15 +103891,21 @@
3116956672,3116957695,NO
3116957696,3116958719,GB
3116958720,3116959743,ES
-3116959744,3116960767,DE
+3116959744,3116960767,NL
3116960768,3116961791,CZ
-3116961792,3116962815,NL
+3116961792,3116962047,FR
+3116962048,3116962303,NL
+3116962304,3116962559,US
+3116962560,3116962815,NL
3116962816,3116963839,DE
3116963840,3116964863,GE
3116964864,3116965887,RU
3116965888,3116966911,GB
3116966912,3116967935,BG
-3116967936,3116968959,DE
+3116967936,3116968191,HU
+3116968192,3116968447,DE
+3116968448,3116968703,NO
+3116968704,3116968959,DE
3116968960,3116969983,RU
3116969984,3116971007,IR
3116971008,3116972031,RU
@@ -90729,7 +103942,6 @@
3117003776,3117004799,GB
3117004800,3117005823,IT
3117005824,3117005855,PT
-3117005856,3117006847,AT
3117006848,3117007871,KW
3117007872,3117008895,HR
3117008896,3117009919,NL
@@ -90738,14 +103950,16 @@
3117011968,3117012991,TR
3117012992,3117014015,CH
3117014016,3117015039,TR
-3117015040,3117016063,DE
-3117016064,3117017087,TR
+3117015040,3117015551,DE
+3117015552,3117016063,US
+3117016064,3117017087,NL
3117017088,3117018111,CZ
3117018112,3117019135,SK
3117019136,3117020159,IT
-3117020160,3117021183,RO
+3117020160,3117020927,US
+3117020928,3117021183,RO
3117021184,3117022207,CH
-3117022208,3117023231,NL
+3117022208,3117023231,SE
3117023232,3117024255,FR
3117024256,3117025279,AT
3117025280,3117026303,DK
@@ -90753,7 +103967,7 @@
3117027328,3117028351,IE
3117028352,3117029375,DE
3117029376,3117030399,FR
-3117030400,3117031423,GB
+3117030400,3117031423,US
3117031424,3117034495,UA
3117034496,3117035519,US
3117035520,3117036543,UA
@@ -90770,15 +103984,19 @@
3117046784,3117047807,IR
3117047808,3117048831,NL
3117048832,3117049855,UA
-3117049856,3117052927,NL
+3117049856,3117050879,DE
+3117050880,3117051903,ES
+3117051904,3117052927,CZ
3117052928,3117053951,ES
3117053952,3117054975,IT
3117054976,3117055999,PL
3117056000,3117057023,IT
3117057024,3117058047,CH
-3117058048,3117059071,HU
-3117059072,3117060095,SA
-3117060096,3117061119,GB
+3117058048,3117059071,RS
+3117059072,3117060095,GB
+3117060096,3117060159,SE
+3117060160,3117060607,PT
+3117060608,3117061119,SE
3117061120,3117062143,AT
3117062144,3117063167,NL
3117063168,3117064191,DE
@@ -90787,7 +104005,7 @@
3117067264,3117068287,US
3117068288,3117069311,SE
3117069312,3117070335,FR
-3117070336,3117071359,IT
+3117070336,3117071359,NG
3117071360,3117073407,ES
3117073408,3117074431,DE
3117074432,3117075455,NL
@@ -90834,14 +104052,16 @@
3117116416,3117117439,SA
3117117440,3117118463,CH
3117118464,3117119487,BG
-3117119488,3117120511,DE
+3117119488,3117119999,DE
+3117120000,3117120255,IN
+3117120256,3117120511,DE
3117120512,3117121535,IT
3117121536,3117122559,PL
3117122560,3117123583,CH
3117123584,3117124607,GB
3117124608,3117125631,FR
3117125632,3117126655,RU
-3117126656,3117127679,TR
+3117126656,3117127679,US
3117127680,3117128703,BY
3117128704,3117129727,CZ
3117129728,3117130751,IR
@@ -90852,19 +104072,21 @@
3117135872,3117136895,GB
3117136896,3117137919,NL
3117137920,3117138943,IE
-3117138944,3117139967,IR
+3117138944,3117139071,AU
+3117139072,3117139199,IR
+3117139200,3117139967,AU
3117139968,3117142015,DE
3117142016,3117143039,ES
-3117143040,3117144063,DE
+3117143040,3117144063,GB
3117144064,3117145087,US
3117145088,3117147135,ES
-3117147136,3117148159,AE
+3117147136,3117147391,GR
+3117147392,3117148159,AE
3117148160,3117149183,DK
3117149184,3117150207,RU
-3117150208,3117150719,UA
-3117150720,3117150975,NL
-3117150976,3117152255,UA
-3117152256,3117153279,RO
+3117150208,3117151231,NL
+3117151232,3117152255,UA
+3117152256,3117153279,GB
3117153280,3117154303,PL
3117154304,3117154559,RU
3117154560,3117154815,FI
@@ -90891,7 +104113,7 @@
3117176832,3117177855,SY
3117177856,3117178879,IE
3117178880,3117179903,DE
-3117179904,3117180927,PT
+3117179904,3117180927,ES
3117180928,3117181951,FR
3117181952,3117182975,RU
3117182976,3117183999,DK
@@ -90903,7 +104125,7 @@
3117189120,3117190143,IE
3117190144,3117191167,MD
3117191168,3117192191,SE
-3117192192,3117193215,RO
+3117192192,3117193215,US
3117193216,3117194239,GB
3117194240,3117195263,RU
3117195264,3117196287,FR
@@ -90912,7 +104134,7 @@
3117198336,3117199359,FR
3117199360,3117200383,ES
3117200384,3117201407,IR
-3117201408,3117202431,NL
+3117201408,3117202431,GB
3117202432,3117203455,FR
3117203456,3117204479,PL
3117204480,3117205503,NL
@@ -90931,7 +104153,8 @@
3117219840,3117220863,FI
3117220864,3117221887,ES
3117221888,3117222911,IT
-3117222912,3117223935,DE
+3117222912,3117223423,US
+3117223424,3117223935,DE
3117223936,3117224959,TR
3117224960,3117225983,NO
3117225984,3117227007,SA
@@ -90947,7 +104170,8 @@
3117235456,3117235711,GB
3117235712,3117236223,LV
3117236224,3117237247,RU
-3117237248,3117238271,NL
+3117237248,3117237503,PT
+3117237504,3117238271,US
3117238272,3117239295,HU
3117239296,3117240319,CY
3117240320,3117241343,DE
@@ -90980,7 +104204,7 @@
3117267968,3117268223,ES
3117268224,3117268479,IE
3117268480,3117268735,FR
-3117268736,3117268991,IE
+3117268736,3117268991,NL
3117268992,3117269503,US
3117269504,3117270015,DE
3117270016,3117271039,TR
@@ -91003,7 +104227,6 @@
3117288448,3117289471,IE
3117289472,3117290495,GB
3117290496,3117291519,US
-3117291520,3117292543,FR
3117292544,3117293567,SA
3117293568,3117294591,KZ
3117294592,3117295615,UA
@@ -91023,13 +104246,14 @@
3117308928,3117309951,IR
3117309952,3117310975,KW
3117310976,3117311999,RU
-3117312000,3117313023,NL
+3117312000,3117313023,DE
3117313024,3117314047,SE
3117314048,3117315071,PL
3117315072,3117316095,FR
3117316096,3117317119,RU
3117317120,3117318143,IQ
-3117318144,3117319167,GB
+3117318144,3117318655,US
+3117318656,3117319167,RO
3117319168,3117320191,SA
3117320192,3117321215,FR
3117321216,3117322239,NL
@@ -91058,7 +104282,7 @@
3117343232,3117344767,GB
3117344768,3117345791,NL
3117345792,3117346815,IR
-3117346816,3117347839,DE
+3117346816,3117347839,US
3117347840,3117348863,CH
3117348864,3117349887,ES
3117349888,3117350911,IL
@@ -91097,7 +104321,7 @@
3117386752,3117387775,GB
3117387776,3117388799,ES
3117388800,3117389823,PL
-3117389824,3117390847,NL
+3117389824,3117390847,US
3117390848,3117391871,DE
3117391872,3117392895,CY
3117392896,3117393919,NL
@@ -91110,7 +104334,7 @@
3117398016,3117399039,UA
3117399040,3117400063,LT
3117400064,3117401087,NL
-3117401088,3117402111,IR
+3117401088,3117402111,AU
3117402112,3117403135,GB
3117403136,3117404159,NL
3117404160,3117405183,DE
@@ -91153,7 +104377,7 @@
3117443072,3117444095,IT
3117444096,3117445119,CY
3117445120,3117446143,EE
-3117446144,3117447167,FR
+3117446144,3117447167,UA
3117447168,3117448191,CH
3117448192,3117449215,NL
3117449216,3117450239,MD
@@ -91162,11 +104386,13 @@
3117452288,3117453311,FR
3117453312,3117454335,ES
3117454336,3117455359,IR
-3117455360,3117456383,CZ
-3117456384,3117457407,BG
+3117455360,3117456127,CZ
+3117456128,3117456383,DK
+3117456384,3117457407,CH
3117457408,3117458431,DE
3117458432,3117459455,PL
-3117459456,3117460479,GB
+3117459456,3117459711,US
+3117459712,3117460479,GB
3117460480,3117461503,IR
3117461504,3117462527,UZ
3117462528,3117463551,IR
@@ -91175,7 +104401,7 @@
3117465600,3117466623,RU
3117466624,3117467647,IL
3117467648,3117468671,RU
-3117468672,3117469695,DE
+3117468672,3117469695,US
3117469696,3117470719,NL
3117470720,3117471743,DK
3117471744,3117473791,ES
@@ -91192,9 +104418,7 @@
3117484032,3117485055,ES
3117485056,3117486079,RU
3117486080,3117487103,FR
-3117487104,3117487104,NL
-3117487105,3117487615,UA
-3117487616,3117488127,NL
+3117487104,3117488127,NL
3117488128,3117489151,CZ
3117489152,3117490175,RU
3117490176,3117491199,SY
@@ -91208,7 +104432,9 @@
3117498368,3117499391,DE
3117499392,3117500415,PL
3117500416,3117502463,ES
-3117502464,3117503999,RU
+3117502464,3117503819,RU
+3117503820,3117503823,EE
+3117503824,3117503999,RU
3117504000,3117504511,DE
3117504512,3117505535,RU
3117505536,3117506559,IE
@@ -91243,12 +104469,12 @@
3117535232,3117536255,FR
3117536256,3117537279,CH
3117537280,3117538303,GB
-3117538304,3117539327,DE
+3117538304,3117539327,US
3117539328,3117540351,UA
3117540352,3117541375,US
3117541376,3117542399,BG
3117542400,3117543423,DE
-3117543424,3117544447,PT
+3117543424,3117544447,FR
3117544448,3117545471,DE
3117545472,3117546495,PL
3117546496,3117547519,US
@@ -91309,8 +104535,7 @@
3117603584,3117603839,AT
3117603840,3117604863,SE
3117604864,3117605119,AT
-3117605120,3117605631,ES
-3117605632,3117605887,AT
+3117605120,3117605887,ES
3117605888,3117606911,GB
3117606912,3117607935,ES
3117607936,3117608959,DK
@@ -91319,7 +104544,7 @@
3117611008,3117612031,IT
3117612032,3117613055,TR
3117613056,3117614079,RU
-3117614080,3117615103,DE
+3117614080,3117615103,US
3117615104,3117616127,ES
3117616128,3117617151,IT
3117617152,3117618175,DE
@@ -91329,7 +104554,9 @@
3117621248,3117622271,US
3117622272,3117623295,SK
3117623296,3117624319,HU
-3117624320,3117626367,GB
+3117624320,3117625343,GB
+3117625344,3117625599,NL
+3117625600,3117626367,GB
3117626368,3117627391,NO
3117627392,3117628415,IR
3117628416,3117629439,DE
@@ -91348,7 +104575,7 @@
3117643008,3117643263,IE
3117643264,3117643519,FR
3117643520,3117643775,IE
-3117643776,3117644799,FR
+3117643776,3117644799,US
3117644800,3117645823,DE
3117645824,3117646847,UZ
3117646848,3117647871,DE
@@ -91356,7 +104583,7 @@
3117648896,3117649919,GB
3117649920,3117650943,US
3117650944,3117651967,DE
-3117651968,3117652991,NL
+3117651968,3117652991,US
3117652992,3117654015,RU
3117654016,3117655039,IT
3117655040,3117656063,RU
@@ -91386,16 +104613,18 @@
3117683712,3117684735,FR
3117684736,3117685759,SE
3117685760,3117686783,RU
-3117686784,3117687807,NL
+3117686784,3117687039,GB
+3117687040,3117687807,US
3117687808,3117688831,DE
3117688832,3117689855,PL
3117689856,3117690879,DE
3117690880,3117691903,IR
-3117691904,3117692927,DE
-3117692928,3117693951,GB
-3117693952,3117694975,US
+3117691904,3117693951,DE
+3117693952,3117693952,IR
+3117693953,3117694975,AU
3117694976,3117695999,PL
-3117696000,3117697023,DE
+3117696000,3117696255,DE
+3117696256,3117697023,GB
3117697024,3117698047,FR
3117698048,3117699071,DE
3117699072,3117700095,GB
@@ -91409,7 +104638,7 @@
3117707264,3117709311,RU
3117709312,3117710335,IR
3117710336,3117711359,ES
-3117711360,3117712383,DE
+3117711360,3117712383,NL
3117712384,3117713407,PL
3117713408,3117714431,ES
3117714432,3117715455,MD
@@ -91447,21 +104676,26 @@
3117745152,3117746175,IT
3117746176,3117747199,IR
3117747200,3117748223,NL
-3117748224,3117749247,GB
-3117749248,3117750271,IT
-3117750272,3117751295,DE
+3117748224,3117749247,US
+3117749248,3117749503,IT
+3117749504,3117750271,CA
+3117750272,3117751039,SE
+3117751040,3117751295,NL
3117751296,3117752319,RU
3117752320,3117753343,DE
3117753344,3117754367,PL
3117754368,3117755391,UA
-3117755392,3117756415,GB
+3117755392,3117755647,GB
+3117755648,3117755903,US
+3117755904,3117756415,GB
3117756416,3117757439,ES
3117757440,3117758463,NO
3117758464,3117759487,CH
3117759488,3117760511,HK
3117760512,3117762559,NL
3117762560,3117763583,MD
-3117763584,3117765631,DE
+3117763584,3117764607,DE
+3117764608,3117765631,US
3117765632,3117766655,ES
3117766656,3117767679,NL
3117767680,3117768703,GB
@@ -91474,7 +104708,7 @@
3117776896,3117777919,DE
3117777920,3117778943,IE
3117778944,3117779967,RU
-3117779968,3117780991,DE
+3117779968,3117780991,US
3117780992,3117782015,SK
3117782016,3117783039,GB
3117783040,3117784063,SE
@@ -91490,7 +104724,7 @@
3117794304,3117795327,ES
3117795328,3117796351,LV
3117796352,3117797375,CH
-3117797376,3117798399,UA
+3117797376,3117798399,NL
3117798400,3117799423,RU
3117799424,3117800447,IT
3117800448,3117801471,IE
@@ -91510,7 +104744,7 @@
3117812736,3117813759,ES
3117813760,3117814783,NO
3117814784,3117816831,NL
-3117816832,3117817855,HU
+3117816832,3117817855,RS
3117817856,3117818879,PT
3117818880,3117819903,IR
3117819904,3117820927,RO
@@ -91527,7 +104761,7 @@
3117830144,3117832191,ES
3117832192,3117833215,NL
3117833216,3117834239,HR
-3117834240,3117835263,DE
+3117834240,3117835263,US
3117835264,3117836287,ES
3117836288,3117837311,RO
3117837312,3117838335,ES
@@ -91535,15 +104769,18 @@
3117839360,3117840383,CZ
3117840384,3117842431,DE
3117842432,3117843455,NL
-3117843456,3117844479,BM
+3117843456,3117844479,US
3117844480,3117845503,ES
-3117845504,3117846527,GB
+3117845504,3117846015,GB
+3117846016,3117846527,US
3117846528,3117847551,ES
3117847552,3117848575,NL
3117848576,3117849599,CH
3117849600,3117850623,FI
3117850624,3117851647,RU
-3117851648,3117852671,RS
+3117851648,3117851903,RS
+3117851904,3117852159,MY
+3117852160,3117852671,RS
3117852672,3117853695,ES
3117853696,3117853951,HU
3117853952,3117854335,CZ
@@ -91559,16 +104796,18 @@
3117860864,3117861887,IT
3117861888,3117862911,ES
3117862912,3117863935,FR
-3117863936,3117864959,NL
+3117863936,3117864447,NL
+3117864448,3117864959,ES
3117864960,3117865983,FR
3117865984,3117867007,GB
3117867008,3117868031,FR
3117868032,3117871103,DE
-3117871104,3117872127,GB
+3117871104,3117872127,US
3117872128,3117875199,RU
3117875200,3117876223,ES
3117876224,3117877247,DK
3117877248,3117878271,SE
+3117878272,3117879295,FR
3117879296,3117880319,DE
3117880320,3117881343,CZ
3117881344,3117882367,FR
@@ -91604,22 +104843,24 @@
3117914112,3117915135,IR
3117915136,3117916159,DE
3117916160,3117917183,KZ
-3117917184,3117918207,DE
+3117917184,3117918207,US
3117918208,3117919231,FR
3117919232,3117920255,IT
3117920256,3117921279,RU
-3117921280,3117922303,DE
+3117921280,3117922303,US
3117922304,3117923327,EE
3117923328,3117924351,DE
3117924352,3117925375,IT
3117925376,3117926399,SE
3117926400,3117927423,AT
-3117927424,3117930239,DE
+3117927424,3117928447,DE
+3117928448,3117929471,GB
+3117929472,3117930239,DE
3117930240,3117930495,TW
3117930496,3117931519,AT
-3117931520,3117932543,RO
-3117932544,3117933567,GB
-3117933568,3117936639,IR
+3117931520,3117933567,US
+3117933568,3117935615,IR
+3117935616,3117936639,AU
3117936640,3117937663,IT
3117937664,3117938687,IR
3117938688,3117939711,DK
@@ -91644,7 +104885,7 @@
3117956096,3117957119,RU
3117957120,3117958143,IT
3117958144,3117959167,DE
-3117959168,3117960191,BM
+3117959168,3117960191,US
3117960192,3117961215,GB
3117961216,3117962239,RU
3117962240,3117963263,DE
@@ -91674,13 +104915,15 @@
3117988864,3117989887,RO
3117989888,3117990911,RU
3117990912,3117991935,SY
-3117991936,3117992959,DE
+3117991936,3117992959,US
3117992960,3117993983,RU
3117993984,3117995007,LT
3117995008,3117996031,DE
3117996032,3117997055,ES
3117997056,3117998079,CZ
-3117998080,3118002175,DE
+3117998080,3117999103,DE
+3117999104,3117999871,US
+3117999872,3118002175,DE
3118002176,3118003199,FR
3118003200,3118004223,RU
3118004224,3118005247,NL
@@ -91691,15 +104934,17 @@
3118009344,3118010367,ES
3118010368,3118011391,KZ
3118011392,3118012415,IE
-3118012416,3118013439,PL
+3118012416,3118013439,US
3118013440,3118014463,IT
-3118014464,3118016511,NL
+3118014464,3118015487,NL
+3118015488,3118015743,FR
+3118015744,3118016511,US
3118016512,3118017535,GB
3118017536,3118018559,DE
3118018560,3118019583,GB
3118019584,3118020607,DE
3118020608,3118021631,GB
-3118021632,3118022655,NL
+3118021632,3118022655,US
3118022656,3118023679,UA
3118023680,3118023935,RO
3118023936,3118024191,US
@@ -91714,22 +104959,26 @@
3118030848,3118031871,IL
3118031872,3118032895,SA
3118032896,3118033919,GB
-3118033920,3118034943,AU
+3118033920,3118034943,IR
3118034944,3118035967,ES
-3118035968,3118036735,GB
-3118036736,3118037759,CN
+3118035968,3118036223,US
+3118036224,3118036479,GB
+3118036480,3118036991,US
+3118036992,3118037759,CN
3118037760,3118038015,GB
-3118038016,3118039039,DE
+3118038016,3118039039,US
3118039040,3118041087,GB
-3118041088,3118042111,UA
-3118042112,3118043135,NL
+3118041088,3118042111,PL
+3118042112,3118042367,NL
+3118042368,3118043135,US
3118043136,3118044159,DE
3118044160,3118045183,US
3118045184,3118046207,FR
3118046208,3118047231,GB
3118047232,3118048255,IR
-3118048256,3118049279,NL
-3118049280,3118050303,DE
+3118048256,3118049279,CA
+3118049280,3118050047,US
+3118050048,3118050303,NL
3118050304,3118051327,SY
3118051328,3118052351,DE
3118052352,3118053375,KZ
@@ -91750,7 +104999,7 @@
3118067712,3118068735,BG
3118068736,3118069759,FR
3118069760,3118072831,DE
-3118072832,3118073855,GB
+3118072832,3118073855,AU
3118073856,3118074879,RU
3118074880,3118075903,PT
3118075904,3118077951,ES
@@ -91777,10 +105026,11 @@
3118100480,3118101503,IE
3118101504,3118102527,CH
3118102528,3118103551,GB
-3118103552,3118107647,DE
+3118103552,3118104575,US
+3118104576,3118107647,DE
3118107648,3118108671,CH
3118108672,3118109695,FR
-3118109696,3118110719,PL
+3118109696,3118110719,US
3118110720,3118111743,FR
3118111744,3118112767,PL
3118112768,3118113791,ES
@@ -91810,7 +105060,7 @@
3118139392,3118140415,ES
3118140416,3118141439,FR
3118141440,3118142463,CZ
-3118142464,3118143487,GB
+3118142464,3118143487,US
3118143488,3118144511,ES
3118144512,3118145535,NL
3118145536,3118146559,IE
@@ -91818,26 +105068,26 @@
3118147584,3118148607,RU
3118148608,3118149631,IT
3118149632,3118150655,HU
-3118150656,3118151679,IQ
3118151680,3118152703,ES
3118152704,3118153727,CZ
3118153728,3118154751,GB
3118154752,3118155775,BG
3118155776,3118156799,GB
-3118156800,3118158847,UA
+3118156800,3118157823,UA
+3118157824,3118158847,NL
3118158848,3118159871,IT
3118159872,3118160895,DE
3118160896,3118161919,GB
3118161920,3118162943,BE
3118162944,3118166015,GB
-3118166016,3118167039,DE
+3118166016,3118167039,IR
3118167040,3118168063,IT
3118168064,3118169087,ES
3118169088,3118170111,DE
3118170112,3118171135,PT
3118171136,3118172159,TR
3118172160,3118173183,ES
-3118173184,3118174207,DE
+3118173184,3118174207,US
3118174208,3118175231,GB
3118175232,3118176255,IS
3118176256,3118177279,DE
@@ -91869,7 +105119,7 @@
3118204928,3118205951,ES
3118205952,3118206975,GB
3118206976,3118207999,GR
-3118208000,3118209023,DE
+3118208000,3118209023,US
3118209024,3118210047,HR
3118210048,3118211071,CZ
3118211072,3118214143,RU
@@ -91913,7 +105163,8 @@
3118252032,3118253055,DE
3118253056,3118254079,LV
3118254080,3118255103,DE
-3118255104,3118256127,IL
+3118255104,3118255871,NL
+3118255872,3118256127,IL
3118256128,3118257151,NO
3118257152,3118258175,NL
3118258176,3118259199,IR
@@ -91941,9 +105192,44 @@
3118282752,3118283775,SI
3118283776,3118284799,IS
3118284800,3118285823,DE
-3118285824,3118286079,AU
-3118286080,3118286335,SG
-3118286336,3118286847,DE
+3118285824,3118285855,AU
+3118285856,3118285857,MY
+3118285858,3118285859,AU
+3118285860,3118285861,PH
+3118285862,3118285865,AU
+3118285866,3118285867,KR
+3118285868,3118285869,TW
+3118285870,3118285871,IN
+3118285872,3118285875,AU
+3118285876,3118285877,NZ
+3118285878,3118286079,AU
+3118286080,3118286111,SG
+3118286112,3118286113,MY
+3118286114,3118286115,ID
+3118286116,3118286117,PH
+3118286118,3118286119,VN
+3118286120,3118286121,TH
+3118286122,3118286123,KR
+3118286124,3118286125,TW
+3118286126,3118286127,IN
+3118286128,3118286129,BD
+3118286130,3118286131,NP
+3118286132,3118286133,SG
+3118286134,3118286135,AU
+3118286136,3118286335,SG
+3118286336,3118286367,JP
+3118286368,3118286369,MY
+3118286370,3118286371,ID
+3118286372,3118286373,PH
+3118286374,3118286375,VN
+3118286376,3118286377,TH
+3118286378,3118286379,KR
+3118286380,3118286381,TW
+3118286382,3118286383,IN
+3118286384,3118286385,BD
+3118286386,3118286387,NP
+3118286388,3118286389,NZ
+3118286390,3118286847,AU
3118286848,3118287871,IT
3118287872,3118288895,IR
3118288896,3118289919,PL
@@ -91957,7 +105243,8 @@
3118298112,3118300159,RU
3118300160,3118301183,CZ
3118301184,3118302207,ES
-3118302208,3118304255,DE
+3118302208,3118303231,US
+3118303232,3118304255,DE
3118304256,3118305279,HU
3118305280,3118306303,GB
3118306304,3118307327,DE
@@ -91971,7 +105258,7 @@
3118315520,3118316543,NL
3118316544,3118317567,ES
3118317568,3118318591,IR
-3118318592,3118319615,RU
+3118318592,3118319615,IT
3118319616,3118320639,NL
3118320640,3118321663,GB
3118321664,3118322687,DE
@@ -91994,7 +105281,7 @@
3118340096,3118341119,GB
3118341120,3118342143,ES
3118342144,3118343167,CH
-3118343168,3118344191,RO
+3118343168,3118344191,US
3118344192,3118345215,NL
3118345216,3118346239,AT
3118346240,3118347263,LB
@@ -92016,9 +105303,9 @@
3118362624,3118363647,GB
3118363648,3118364671,CH
3118364672,3118365695,IR
-3118365696,3118366719,DE
+3118365696,3118366719,ES
3118366720,3118367743,MD
-3118367744,3118368767,RO
+3118367744,3118368767,US
3118368768,3118369791,DE
3118369792,3118370815,NL
3118370816,3118371839,FR
@@ -92028,7 +105315,8 @@
3118374912,3118375935,DE
3118375936,3118376959,ES
3118376960,3118377983,GB
-3118377984,3118379007,RO
+3118377984,3118378495,US
+3118378496,3118379007,RO
3118379008,3118380031,SE
3118380032,3118382079,IR
3118382080,3118383103,ES
@@ -92038,11 +105326,11 @@
3118386176,3118387199,DE
3118387200,3118388223,GB
3118388224,3118389247,FR
-3118389248,3118390271,RU
+3118389248,3118390271,GB
3118390272,3118391295,MD
3118391296,3118394367,NL
3118394368,3118395391,RU
-3118395392,3118396415,DE
+3118395392,3118396415,US
3118396416,3118397439,ES
3118397440,3118398463,IT
3118398464,3118399487,GE
@@ -92055,7 +105343,8 @@
3118405632,3118406655,DK
3118406656,3118407679,DE
3118407680,3118409727,NL
-3118409728,3118410751,RO
+3118409728,3118409983,US
+3118409984,3118410751,RO
3118410752,3118411775,AE
3118411776,3118412799,NL
3118412800,3118413823,LB
@@ -92083,7 +105372,13 @@
3118437376,3118438399,FR
3118438400,3118439423,ES
3118439424,3118440447,FR
-3118440448,3118442495,RU
+3118440448,3118440703,RU
+3118440704,3118440959,DE
+3118440960,3118441215,RU
+3118441216,3118441471,EE
+3118441472,3118441727,RU
+3118441728,3118441983,GB
+3118441984,3118442495,RU
3118442496,3118443519,MD
3118443520,3118444543,GB
3118444544,3118445567,UA
@@ -92103,7 +105398,8 @@
3118460928,3118461951,ES
3118461952,3118462975,UA
3118462976,3118463999,RU
-3118464000,3118465023,DE
+3118464000,3118464767,DE
+3118464768,3118465023,US
3118465024,3118466047,TR
3118466048,3118467071,HU
3118467072,3118468095,RU
@@ -92136,11 +105432,9 @@
3118494720,3118495743,DE
3118495744,3118496767,AT
3118496768,3118497791,SY
-3118497792,3118498815,NL
-3118498816,3118499583,RU
-3118499584,3118499839,NL
-3118499840,3118500863,DE
-3118500864,3118501887,RO
+3118497792,3118500863,NL
+3118500864,3118501631,US
+3118501632,3118501887,RO
3118501888,3118502911,US
3118502912,3118504959,DE
3118504960,3118505983,FI
@@ -92157,10 +105451,13 @@
3118516224,3118517247,AT
3118517248,3118518271,IR
3118518272,3118519295,GB
-3118519296,3118520319,KZ
+3118519296,3118519296,MD
+3118519297,3118519807,RU
+3118519808,3118520063,NL
+3118520064,3118520319,RU
3118520320,3118521343,NL
3118521344,3118522367,ES
-3118522368,3118523391,US
+3118522368,3118523391,GB
3118523392,3118524415,RU
3118524416,3118525439,GB
3118525440,3118526463,NL
@@ -92172,7 +105469,7 @@
3118531584,3118532607,IT
3118532608,3118533631,RU
3118533632,3118533887,HK
-3118533888,3118534143,GB
+3118533888,3118534143,CN
3118534144,3118534655,US
3118534656,3118535679,RO
3118535680,3118536703,ES
@@ -92214,7 +105511,8 @@
3118559232,3118560255,NL
3118560256,3118561279,PS
3118561280,3118562303,FI
-3118562304,3118563327,RU
+3118562304,3118563071,RU
+3118563072,3118563327,EE
3118563328,3118564351,MD
3118564352,3118567423,DE
3118567424,3118568447,MD
@@ -92231,9 +105529,9 @@
3118578688,3118579711,RU
3118579712,3118580735,AE
3118580736,3118582783,RU
-3118582784,3118583295,GB
+3118583040,3118583295,RO
3118583296,3118583551,BE
-3118583552,3118583807,GB
+3118583552,3118583807,RO
3118583808,3118584831,DE
3118584832,3118585855,UA
3118585856,3118586879,IT
@@ -92264,32 +105562,36 @@
3118611456,3118612479,PL
3118612480,3118613503,GR
3118613504,3118614527,RO
-3118614528,3118615039,DE
+3118614528,3118614783,DE
+3118614784,3118615039,TR
3118615040,3118615295,GB
-3118615296,3118615551,DE
+3118615296,3118615551,TR
3118615552,3118616575,NL
3118616576,3118617599,RO
3118617600,3118618623,UA
3118618624,3118619647,AL
-3118619648,3118620671,TR
+3118619648,3118619903,TR
+3118619904,3118620159,US
+3118620160,3118620671,TR
3118620672,3118621695,RU
3118621696,3118622719,NO
3118622720,3118623743,ES
3118623744,3118624767,NL
3118624768,3118625791,UA
-3118625792,3118626815,IR
+3118625792,3118626815,GB
3118626816,3118627839,DE
3118627840,3118628863,OM
3118628864,3118629887,RU
3118629888,3118630911,IR
3118630912,3118631935,NL
3118631936,3118632959,IR
-3118632960,3118633983,DE
+3118632960,3118633983,US
3118633984,3118635007,NO
-3118635008,3118636031,ES
+3118635008,3118635519,PL
+3118635520,3118636031,ES
3118636032,3118637055,GB
3118637056,3118638079,TR
-3118638080,3118639103,RU
+3118638080,3118639103,GB
3118639104,3118640127,ES
3118640128,3118641151,DE
3118641152,3118643199,ES
@@ -92302,7 +105604,8 @@
3118650368,3118651391,DE
3118651392,3118652415,IE
3118652416,3118653439,GB
-3118653440,3118657535,ES
+3118653440,3118653695,CH
+3118653696,3118657535,ES
3118657536,3118658559,DE
3118658560,3118659583,RU
3118659584,3118660607,PL
@@ -92325,7 +105628,8 @@
3118676992,3118678015,GB
3118678016,3118679039,IR
3118679040,3118679295,FI
-3118679296,3118680063,GB
+3118679296,3118679551,NL
+3118679552,3118680063,GB
3118680064,3118681087,MD
3118681088,3118682111,SE
3118682112,3118682943,NL
@@ -92337,7 +105641,8 @@
3118685184,3118686207,ES
3118686208,3118687231,BY
3118687232,3118688255,ES
-3118688256,3118689535,NL
+3118688256,3118689279,HK
+3118689280,3118689535,NL
3118689536,3118689791,GB
3118689792,3118690303,NL
3118690304,3118691327,DE
@@ -92347,7 +105652,8 @@
3118694400,3118695423,ES
3118695424,3118696447,DE
3118696448,3118696703,RO
-3118696704,3118697471,IR
+3118696704,3118696959,IR
+3118696960,3118697471,TR
3118697472,3118698495,SY
3118698496,3118699519,ES
3118699520,3118700543,CH
@@ -92359,7 +105665,8 @@
3118707712,3118708735,TR
3118708736,3118709759,ES
3118709760,3118711807,PL
-3118711808,3118713855,GB
+3118711808,3118712831,GB
+3118712832,3118713855,DE
3118713856,3118714879,ES
3118714880,3118715903,IE
3118715904,3118717951,ES
@@ -92372,9 +105679,10 @@
3118724096,3118725119,MD
3118725120,3118726143,GB
3118726144,3118726399,HK
-3118726400,3118727167,GB
-3118727168,3118728191,ES
-3118728192,3118730239,DE
+3118726400,3118726911,GB
+3118726912,3118727167,DE
+3118727168,3118729215,ES
+3118729216,3118730239,DE
3118730240,3118731263,SY
3118731264,3118732287,DE
3118732288,3118733311,FR
@@ -92383,7 +105691,7 @@
3118735360,3118736383,AT
3118736384,3118737407,NL
3118737408,3118738431,AT
-3118738432,3118739455,GB
+3118738432,3118739455,US
3118739456,3118740479,RU
3118740480,3118741503,ES
3118741504,3118742527,NL
@@ -92414,7 +105722,8 @@
3118770176,3118771199,IE
3118771200,3118772223,ES
3118772224,3118773247,DE
-3118773248,3118775295,GB
+3118773248,3118774271,GB
+3118774272,3118775295,HK
3118775296,3118776319,NL
3118776320,3118777343,UA
3118777344,3118781439,NL
@@ -92443,7 +105752,8 @@
3118803968,3118804991,ES
3118804992,3118806015,GB
3118806016,3118807039,NL
-3118807040,3118808063,DE
+3118807040,3118807807,DE
+3118807808,3118808063,US
3118808064,3118809087,PT
3118809088,3118810111,RU
3118810112,3118811135,CH
@@ -92454,14 +105764,16 @@
3118815232,3118816255,DE
3118816256,3118817279,DK
3118817280,3118818303,ES
-3118818304,3118819327,DK
+3118818304,3118819327,DE
3118819328,3118820351,MD
3118820352,3118821375,GE
3118821376,3118823423,DE
3118823424,3118824447,RU
3118824448,3118825471,PL
3118825472,3118826495,FI
-3118826496,3118827519,SE
+3118826496,3118827007,SE
+3118827008,3118827263,US
+3118827264,3118827519,SE
3118827520,3118828543,BG
3118828544,3118829567,AT
3118829568,3118832639,DK
@@ -92473,15 +105785,17 @@
3118837760,3118838783,FR
3118838784,3118839807,ES
3118839808,3118840831,RU
-3118840832,3118841855,CZ
+3118840832,3118841343,CZ
+3118841344,3118841855,NL
3118841856,3118842879,RU
3118842880,3118843903,ES
3118843904,3118844927,HR
3118844928,3118845951,DE
3118845952,3118846975,NL
3118846976,3118849023,ES
-3118849024,3118850047,NL
-3118850048,3118851071,IL
+3118849024,3118850559,NL
+3118850560,3118850815,IL
+3118850816,3118851071,NL
3118851072,3118852095,NO
3118852096,3118853119,RU
3118853120,3118854143,IT
@@ -92492,7 +105806,8 @@
3118858240,3118859263,ES
3118859264,3118860287,BG
3118860288,3118861311,FR
-3118861312,3118862335,DE
+3118861312,3118861567,DE
+3118861568,3118862335,RU
3118862336,3118863359,RO
3118863360,3118864383,CH
3118864384,3118865407,SE
@@ -92503,7 +105818,9 @@
3118869504,3118870527,UA
3118870528,3118872575,ES
3118872576,3118873599,MK
-3118873600,3118874623,IL
+3118873600,3118874111,US
+3118874112,3118874367,IE
+3118874368,3118874623,IL
3118874624,3118875647,ES
3118875648,3118876671,DE
3118876672,3118877695,NO
@@ -92512,7 +105829,9 @@
3118879744,3118880767,DE
3118880768,3118882815,UA
3118882816,3118883839,FR
-3118883840,3118885887,RU
+3118883840,3118884863,GB
+3118884864,3118885375,RU
+3118885376,3118885887,DE
3118885888,3118886911,PL
3118886912,3118887935,CY
3118887936,3118888959,CH
@@ -92523,7 +105842,7 @@
3118890752,3118891007,DE
3118891008,3118892031,NO
3118892032,3118893055,AT
-3118893056,3118894079,DE
+3118893056,3118894079,US
3118894080,3118895103,RU
3118895104,3118896127,ES
3118896128,3118898175,GB
@@ -92549,12 +105868,14 @@
3118917632,3118918655,UA
3118918656,3118919679,ES
3118919680,3118920703,RU
-3118920704,3118921727,LB
+3118920704,3118920713,IT
+3118920714,3118920804,LB
+3118920805,3118921727,IT
3118921728,3118922751,MD
3118922752,3118923775,MK
3118923776,3118924799,CH
3118924800,3118925823,DE
-3118925824,3118926847,FR
+3118925824,3118926847,US
3118926848,3118927871,PL
3118927872,3118928895,NL
3118928896,3118929919,ES
@@ -92568,7 +105889,7 @@
3118938112,3118939135,RU
3118939136,3118940159,DE
3118940160,3118941183,CY
-3118941184,3118942207,UA
+3118941184,3118942207,NL
3118942208,3118943231,RO
3118943232,3118944255,GB
3118944256,3118945279,PL
@@ -92579,6 +105900,7 @@
3118949376,3118950399,SE
3118950400,3118951423,CH
3118951424,3118952447,TR
+3118952448,3118952703,IR
3118953472,3118954495,ES
3118954496,3118955519,FR
3118955520,3118956543,DE
@@ -92610,16 +105932,22 @@
3118985216,3118987263,RU
3118987264,3118991359,DE
3118991360,3118992383,ES
-3118992384,3118993407,DE
+3118992384,3118993151,DE
+3118993152,3118993407,US
3118993408,3118994431,RU
-3118994432,3118994943,NL
+3118994432,3118994687,NL
+3118994688,3118994943,BE
3118994944,3118995199,US
3118995200,3118995455,DE
3118995456,3118996479,FR
3118996480,3118997503,EE
-3118997504,3118998527,IR
+3118997504,3118998015,AU
+3118998016,3118998271,IR
+3118998272,3118998527,AU
3118998528,3118999551,ES
-3118999552,3119001599,RU
+3118999552,3119000319,RU
+3119000320,3119000575,GB
+3119000576,3119001599,RU
3119001600,3119002623,ES
3119002624,3119004671,NL
3119004672,3119005695,RU
@@ -92628,7 +105956,9 @@
3119007744,3119008767,NL
3119008768,3119009791,SE
3119009792,3119010815,HU
-3119010816,3119012863,RU
+3119010816,3119011583,RU
+3119011584,3119011839,EE
+3119011840,3119012863,RU
3119012864,3119013887,DE
3119013888,3119014911,RU
3119014912,3119015935,DE
@@ -92693,7 +106023,7 @@
3119082496,3119083519,GB
3119083520,3119084543,RU
3119084544,3119086591,UA
-3119086592,3119087615,GB
+3119086592,3119087615,AL
3119087616,3119088639,US
3119088640,3119089663,FR
3119089664,3119090687,UA
@@ -92707,7 +106037,7 @@
3119098880,3119099903,NL
3119099904,3119100927,IE
3119100928,3119101951,AZ
-3119101952,3119102975,RU
+3119101952,3119102975,GB
3119102976,3119103231,NL
3119103232,3119103487,GB
3119103488,3119103743,DE
@@ -92718,30 +106048,36 @@
3119107072,3119108095,LT
3119108096,3119109119,MK
3119109120,3119110143,NL
-3119110144,3119111167,RU
+3119110144,3119111167,GB
3119111168,3119112191,SY
3119112192,3119113215,ES
3119113216,3119114239,RO
3119114240,3119115263,ES
3119115264,3119116287,RU
-3119116288,3119117311,DE
+3119116288,3119117311,US
3119117312,3119118335,TR
3119118336,3119119359,IT
3119119360,3119120383,DK
3119120384,3119121407,GB
3119121408,3119122431,RO
-3119122432,3119124479,RU
+3119122432,3119122943,RU
+3119122944,3119123199,DE
+3119123200,3119123455,MD
+3119123456,3119124479,RU
3119124480,3119125503,RO
3119125504,3119126527,ES
3119126528,3119127551,RU
3119127552,3119128575,CZ
3119128576,3119129599,DE
+3119129600,3119130623,GB
3119130624,3119131647,FR
3119131648,3119132671,DE
3119132672,3119133695,FR
3119133696,3119137791,UA
-3119137792,3119138815,DE
-3119138816,3119139071,GB
+3119137792,3119138815,US
+3119138816,3119138850,FR
+3119138851,3119138851,DE
+3119138852,3119139071,FR
3119139072,3119139327,PL
3119139328,3119139839,GB
3119139840,3119141887,FR
@@ -92751,13 +106087,15 @@
3119144960,3119145983,NL
3119145984,3119147007,ES
3119147008,3119148031,FR
-3119148032,3119152127,RU
+3119148032,3119149055,RU
+3119149056,3119149823,NL
+3119149824,3119152127,RU
3119152128,3119153151,PT
3119153152,3119154175,RO
3119154176,3119155199,CZ
3119155200,3119156223,DE
3119156224,3119157247,FR
-3119157248,3119158271,US
+3119157248,3119158271,AU
3119158272,3119159295,ES
3119159296,3119160319,NL
3119160320,3119161343,ES
@@ -92771,11 +106109,13 @@
3119168512,3119169535,HU
3119169536,3119170559,IR
3119170560,3119171583,CH
-3119171584,3119172607,EE
+3119171584,3119171839,EE
+3119171840,3119172095,FR
+3119172096,3119172607,EE
3119172608,3119173631,DE
3119173632,3119174655,PL
3119174656,3119175679,NL
-3119175680,3119176703,PL
+3119175680,3119176703,IE
3119176704,3119177727,NL
3119177728,3119178751,ES
3119178752,3119179775,RU
@@ -92800,9 +106140,9 @@
3119199232,3119200255,SA
3119200256,3119201279,DE
3119201280,3119203327,RU
-3119203328,3119204351,RO
+3119203328,3119203839,RO
+3119203840,3119204351,PL
3119204352,3119206399,RU
-3119206400,3119207423,GB
3119207424,3119208447,FR
3119208448,3119210495,RU
3119210496,3119211519,GB
@@ -92810,19 +106150,24 @@
3119212544,3119213567,FR
3119213568,3119214591,BE
3119214592,3119215615,HU
-3119215616,3119216639,NL
-3119216640,3119217663,GB
+3119215616,3119216639,SE
+3119216640,3119217663,US
3119217664,3119218687,PL
-3119218688,3119218943,NL
-3119218944,3119220735,UA
+3119218688,3119219711,NL
+3119219712,3119220735,UA
3119220736,3119221759,IR
-3119221760,3119223807,RU
+3119221760,3119222271,RU
+3119222272,3119222783,NL
+3119222784,3119223295,RU
+3119223296,3119223807,DE
3119223808,3119225855,AT
3119225856,3119226879,CH
3119226880,3119227903,EE
3119227904,3119228927,IR
3119228928,3119230975,UA
-3119230976,3119233023,NL
+3119230976,3119231999,NL
+3119232000,3119232511,SC
+3119232512,3119233023,NL
3119233024,3119234047,GB
3119234048,3119235071,CH
3119235072,3119236095,ES
@@ -92851,7 +106196,8 @@
3119259648,3119260671,EE
3119260672,3119261695,IR
3119261696,3119262719,SE
-3119262720,3119263743,NL
+3119262720,3119263231,US
+3119263232,3119263743,NL
3119263744,3119264767,DE
3119264768,3119265791,NL
3119265792,3119266815,FR
@@ -92859,7 +106205,9 @@
3119267840,3119269887,RU
3119269888,3119270911,MD
3119270912,3119271935,NL
-3119271936,3119272959,DE
+3119271936,3119272191,DE
+3119272192,3119272447,GB
+3119272448,3119272959,DE
3119272960,3119273983,RO
3119273984,3119275007,IR
3119275008,3119277055,PL
@@ -92885,7 +106233,8 @@
3119296512,3119297535,NL
3119297536,3119298559,BG
3119298560,3119299583,UA
-3119299584,3119300607,AT
+3119299584,3119299839,CH
+3119299840,3119300607,AT
3119300608,3119301631,SI
3119301632,3119302655,BE
3119302656,3119302911,US
@@ -92926,7 +106275,8 @@
3119337472,3119338495,TR
3119338496,3119339519,IR
3119339520,3119341567,GB
-3119341568,3119342591,NL
+3119341568,3119342079,DE
+3119342080,3119342591,GB
3119342592,3119343615,RU
3119343616,3119344639,UA
3119344640,3119347711,CH
@@ -92980,7 +106330,7 @@
3119401984,3119403007,RU
3119403008,3119404031,DE
3119404032,3119405055,ES
-3119405056,3119406079,RU
+3119405056,3119406079,IT
3119406080,3119407103,IR
3119407104,3119408127,AT
3119408128,3119409151,GB
@@ -93003,16 +106353,1097 @@
3119427584,3119428607,GB
3119428608,3119429631,AE
3119429632,3119430655,FI
-3119430656,3119431679,CH
+3119430656,3119430911,CH
+3119430912,3119431167,LI
3119431680,3119432703,DK
3119432704,3119434751,RU
3119434752,3119435775,PL
3119435776,3119436799,RU
3119436800,3119437823,GB
-3119437824,3119438847,DE
+3119437824,3119438079,ES
+3119438080,3119438847,DE
3119438848,3119439871,MD
3119439872,3119440895,GB
3119440896,3119442943,ES
+3119442944,3119443967,PL
+3119443968,3119444991,DE
+3119444992,3119446015,RS
+3119446016,3119447039,IT
+3119447040,3119448063,TR
+3119448064,3119449087,IR
+3119449088,3119450111,ES
+3119450112,3119451135,AL
+3119451136,3119452159,PL
+3119452160,3119453183,IQ
+3119453184,3119454207,DE
+3119454208,3119455231,UA
+3119455232,3119456255,IL
+3119456256,3119457279,UA
+3119457280,3119458303,ES
+3119458304,3119459327,PL
+3119459328,3119460351,UA
+3119460352,3119460863,KZ
+3119460864,3119461375,RU
+3119461376,3119462399,IQ
+3119462400,3119463423,ES
+3119463424,3119464447,NL
+3119464448,3119465471,DE
+3119465472,3119466495,NL
+3119466496,3119467519,ES
+3119467520,3119468543,IE
+3119468544,3119469567,DE
+3119469568,3119470591,NL
+3119470592,3119471615,RU
+3119471616,3119472639,QA
+3119472640,3119473663,IT
+3119473664,3119474687,BE
+3119474688,3119475711,DE
+3119475712,3119476735,FR
+3119476736,3119477759,GB
+3119477760,3119479807,RU
+3119479808,3119480831,BG
+3119480832,3119482879,RU
+3119482880,3119483903,TR
+3119483904,3119484927,ES
+3119484928,3119485951,KZ
+3119485952,3119486975,GB
+3119486976,3119487999,UZ
+3119488000,3119489023,FI
+3119489024,3119490047,ES
+3119490048,3119491071,GB
+3119491072,3119492095,NL
+3119492096,3119493119,GB
+3119493120,3119494143,IQ
+3119494144,3119496191,UA
+3119496192,3119497215,GB
+3119497216,3119498239,FI
+3119498240,3119499263,FR
+3119499264,3119500287,ES
+3119500288,3119501311,GB
+3119501312,3119503359,DE
+3119503360,3119504383,CZ
+3119504384,3119506431,NL
+3119506432,3119507455,ES
+3119507456,3119508479,PL
+3119508480,3119509503,DE
+3119509504,3119510527,MD
+3119510528,3119511551,LT
+3119511552,3119512575,NL
+3119512576,3119513599,ES
+3119513600,3119515647,DE
+3119515648,3119516671,PL
+3119516672,3119517695,IT
+3119517696,3119518719,MD
+3119518720,3119519743,ES
+3119519744,3119521791,NL
+3119521792,3119522815,UA
+3119522816,3119523839,FR
+3119523840,3119524863,IS
+3119524864,3119525887,LT
+3119525888,3119526911,RO
+3119526912,3119527935,DE
+3119527936,3119528959,IR
+3119528960,3119529983,AT
+3119529984,3119531007,YE
+3119531008,3119532031,IT
+3119532032,3119533055,DE
+3119533056,3119534079,AT
+3119534080,3119535103,ES
+3119535104,3119536127,TR
+3119536128,3119537151,ES
+3119537152,3119538175,RU
+3119538176,3119539199,PL
+3119539200,3119540223,RU
+3119540224,3119541247,EE
+3119541248,3119542271,PL
+3119542272,3119543295,NL
+3119543296,3119544319,DE
+3119544320,3119545343,ES
+3119545344,3119546367,FR
+3119546368,3119547391,ES
+3119547392,3119548415,BG
+3119548416,3119549439,RO
+3119549440,3119550463,CY
+3119550464,3119551487,BG
+3119551488,3119552511,IR
+3119552512,3119553535,BG
+3119553536,3119554559,FR
+3119554560,3119555583,NL
+3119555584,3119556607,ES
+3119556608,3119557631,NL
+3119557632,3119558655,CH
+3119558656,3119559679,FR
+3119559680,3119560703,BG
+3119560704,3119560959,IE
+3119560960,3119561215,US
+3119561216,3119561727,IE
+3119561728,3119562751,BG
+3119562752,3119563775,DK
+3119563776,3119564799,MD
+3119564800,3119565823,GB
+3119565824,3119566847,NO
+3119566848,3119567871,SE
+3119567872,3119568895,ES
+3119568896,3119569919,IT
+3119569920,3119570943,CZ
+3119570944,3119571967,RO
+3119571968,3119574015,ES
+3119574016,3119575039,FR
+3119575040,3119577087,DE
+3119577088,3119578111,PT
+3119578112,3119579135,RO
+3119579136,3119580159,RU
+3119580160,3119581183,IL
+3119581184,3119582207,RU
+3119582208,3119583231,DK
+3119583232,3119584255,IT
+3119584256,3119585279,UA
+3119585280,3119586303,IL
+3119586304,3119587327,ES
+3119587328,3119588351,DE
+3119588352,3119589375,GB
+3119589376,3119590399,US
+3119590400,3119591423,IM
+3119591424,3119592447,GB
+3119592448,3119593471,NL
+3119593472,3119596543,IT
+3119596544,3119596799,RU
+3119596800,3119597055,GB
+3119597056,3119597567,ES
+3119597568,3119598591,RU
+3119598592,3119600639,NL
+3119600640,3119601663,CH
+3119601664,3119602687,RO
+3119602688,3119603711,IT
+3119603712,3119604735,FR
+3119604736,3119605759,TR
+3119605760,3119606783,PL
+3119606784,3119607807,RU
+3119607808,3119608831,FR
+3119608832,3119609855,IT
+3119609856,3119610879,ES
+3119610880,3119611903,UA
+3119611904,3119612927,ES
+3119612928,3119613951,IE
+3119613952,3119614975,TR
+3119614976,3119615999,FR
+3119616000,3119617023,IT
+3119617024,3119619071,DE
+3119619072,3119620095,GB
+3119620096,3119621119,SE
+3119621120,3119622143,MD
+3119622144,3119623167,IT
+3119623168,3119624191,SE
+3119624192,3119625215,RU
+3119625216,3119626239,FR
+3119626240,3119628287,NL
+3119628288,3119629311,RU
+3119629312,3119630335,PL
+3119630336,3119631359,IT
+3119631360,3119632383,FR
+3119632384,3119633407,MD
+3119633408,3119634431,CY
+3119634432,3119635455,GB
+3119635456,3119636479,CZ
+3119636480,3119637503,GB
+3119637504,3119638527,BG
+3119638528,3119639551,PL
+3119639552,3119640575,ES
+3119640576,3119641599,CZ
+3119641600,3119642623,RU
+3119642624,3119643647,GB
+3119643648,3119644671,PL
+3119644672,3119645695,UA
+3119645696,3119645951,JP
+3119645952,3119646207,US
+3119646208,3119646463,CZ
+3119646464,3119646719,GB
+3119646720,3119647743,FR
+3119647744,3119648767,IT
+3119648768,3119649791,RU
+3119649792,3119650047,SK
+3119650048,3119650303,UA
+3119650304,3119650815,RU
+3119650816,3119651839,ES
+3119651840,3119652863,AT
+3119652864,3119653887,PL
+3119653888,3119654911,LB
+3119654912,3119655935,IT
+3119655936,3119656959,GB
+3119656960,3119657983,ES
+3119657984,3119659007,NL
+3119659008,3119660031,SK
+3119660032,3119661055,IR
+3119661056,3119662079,NL
+3119662080,3119663103,MT
+3119663104,3119664127,CZ
+3119664128,3119665151,DE
+3119665152,3119666175,NL
+3119666176,3119667199,RU
+3119667200,3119668223,BG
+3119668224,3119669247,FR
+3119669248,3119671295,ES
+3119671296,3119672319,LV
+3119672320,3119673343,LT
+3119673344,3119674367,DE
+3119674368,3119676415,RU
+3119676416,3119677439,PL
+3119677440,3119678463,FR
+3119678464,3119679487,RU
+3119679488,3119681535,FR
+3119681536,3119682559,RO
+3119682560,3119683583,FI
+3119683584,3119684607,PL
+3119684608,3119685631,CZ
+3119685632,3119686655,TR
+3119686656,3119687679,NL
+3119687680,3119688703,BG
+3119688704,3119689727,ES
+3119689728,3119690495,RU
+3119690496,3119690751,CH
+3119690752,3119691775,IT
+3119691776,3119692799,RU
+3119692800,3119693823,SK
+3119693824,3119695871,DE
+3119695872,3119696895,CH
+3119696896,3119697919,GB
+3119697920,3119698943,SE
+3119698944,3119699967,HR
+3119699968,3119700991,HU
+3119700992,3119702015,NL
+3119702016,3119702591,GB
+3119702592,3119702607,DE
+3119702608,3119703039,GB
+3119703040,3119704063,SE
+3119704064,3119705087,CZ
+3119705088,3119706111,IE
+3119706112,3119707135,NO
+3119707136,3119708159,NL
+3119708160,3119709183,ES
+3119709184,3119710207,PL
+3119710208,3119712255,RU
+3119712256,3119714303,DE
+3119714304,3119715327,FR
+3119715328,3119716351,DE
+3119716352,3119717375,ES
+3119717376,3119718399,PL
+3119718400,3119719423,NL
+3119719424,3119720447,IT
+3119721472,3119722495,DE
+3119722496,3119723519,IR
+3119723520,3119724543,PL
+3119724544,3119725567,DE
+3119725568,3119726591,GB
+3119726592,3119727615,CH
+3119727616,3119728639,DE
+3119728640,3119729663,IT
+3119729664,3119730687,AE
+3119730688,3119731711,GB
+3119731712,3119732735,RU
+3119732736,3119733759,NL
+3119733760,3119734783,ES
+3119734784,3119735807,UA
+3119735808,3119736831,PT
+3119736832,3119737855,GB
+3119737856,3119738879,RO
+3119738880,3119739903,NL
+3119739904,3119740927,CH
+3119740928,3119741951,FR
+3119741952,3119742975,CZ
+3119742976,3119743999,RU
+3119744000,3119745023,DE
+3119745024,3119746047,ES
+3119746048,3119747071,MD
+3119747072,3119748095,AT
+3119748096,3119749119,IT
+3119749120,3119749887,US
+3119749888,3119750143,ES
+3119750144,3119750346,RU
+3119750347,3119750347,UA
+3119750348,3119750588,RU
+3119750589,3119750589,UA
+3119750590,3119750696,RU
+3119750697,3119750697,US
+3119750698,3119750821,RU
+3119750822,3119750822,UA
+3119750823,3119751167,RU
+3119751168,3119752191,CH
+3119752192,3119753215,ES
+3119753216,3119755263,CZ
+3119755264,3119756287,NO
+3119756288,3119757311,TR
+3119757312,3119758335,AT
+3119758336,3119759359,NL
+3119759360,3119760383,IT
+3119760384,3119761407,NO
+3119761408,3119762431,DE
+3119762432,3119763455,CH
+3119763456,3119764479,LB
+3119764480,3119765503,DE
+3119765504,3119766527,NO
+3119766528,3119767551,RU
+3119767552,3119768575,DK
+3119768576,3119769599,PL
+3119769600,3119770623,DE
+3119770624,3119771647,BG
+3119771648,3119772671,DE
+3119772672,3119773695,RU
+3119773696,3119774719,BG
+3119774720,3119775743,PL
+3119775744,3119776767,SE
+3119776768,3119777791,RU
+3119777792,3119778815,GB
+3119778816,3119779839,FK
+3119779840,3119780863,FR
+3119780864,3119781887,RU
+3119781888,3119782143,GG
+3119782144,3119783935,NL
+3119783936,3119784959,IT
+3119784960,3119785983,NL
+3119785984,3119789055,RU
+3119789056,3119790079,IR
+3119790080,3119792127,DE
+3119792128,3119793151,PL
+3119793152,3119794175,HU
+3119794176,3119795199,FR
+3119795200,3119796223,RU
+3119796224,3119797247,DE
+3119797248,3119798271,PL
+3119798272,3119799295,DK
+3119799296,3119800319,HR
+3119800320,3119801343,PL
+3119801344,3119802367,EE
+3119802368,3119803391,LT
+3119803392,3119804415,RO
+3119804416,3119805439,CH
+3119805440,3119806463,TR
+3119806464,3119807487,DE
+3119807488,3119808511,NL
+3119808512,3119809535,RO
+3119809536,3119810559,RU
+3119810560,3119811583,MD
+3119811584,3119812607,UA
+3119812608,3119813631,TR
+3119813632,3119814143,RO
+3119814144,3119814399,NL
+3119814400,3119814655,RO
+3119814656,3119816703,UA
+3119816704,3119817727,GB
+3119817728,3119818751,DE
+3119818752,3119819775,UA
+3119819776,3119820543,RU
+3119820544,3119820799,UA
+3119820800,3119821823,MD
+3119821824,3119822847,RU
+3119822848,3119823871,IT
+3119823872,3119824895,CZ
+3119824896,3119825919,DE
+3119825920,3119826943,NL
+3119826944,3119827967,DE
+3119827968,3119828991,SY
+3119828992,3119830015,RO
+3119830016,3119830271,AT
+3119830272,3119830527,FR
+3119830528,3119830783,PL
+3119830784,3119831039,US
+3119831040,3119832063,NL
+3119832064,3119833087,MD
+3119833088,3119834111,GB
+3119834112,3119836159,ES
+3119836160,3119837183,GB
+3119837184,3119838207,MK
+3119838208,3119839231,FI
+3119839232,3119840255,LT
+3119840256,3119841279,CH
+3119841280,3119842303,RU
+3119842304,3119843327,MD
+3119843328,3119844351,DK
+3119844352,3119845375,HR
+3119845376,3119846399,DK
+3119846400,3119847423,GB
+3119847424,3119848447,FR
+3119848448,3119849471,DE
+3119849472,3119850495,ES
+3119850496,3119851519,RU
+3119851520,3119852543,FR
+3119852544,3119853567,PL
+3119853568,3119854591,DK
+3119854592,3119855615,RO
+3119855616,3119857663,DE
+3119857664,3119858687,AT
+3119858688,3119859711,BG
+3119859712,3119860735,NL
+3119860736,3119861759,IT
+3119861760,3119862783,GB
+3119862784,3119863039,DK
+3119863040,3119863295,SK
+3119863296,3119863807,US
+3119863808,3119864831,NL
+3119864832,3119865855,CH
+3119865856,3119868927,DE
+3119868928,3119869951,DK
+3119869952,3119870975,MD
+3119870976,3119871999,GB
+3119872000,3119873023,IT
+3119873024,3119875071,GB
+3119875072,3119876095,ES
+3119876096,3119878143,FR
+3119878144,3119879167,ES
+3119879168,3119880191,RU
+3119880192,3119881215,DE
+3119881216,3119882239,NL
+3119882240,3119883263,CH
+3119883264,3119884287,IT
+3119884288,3119885311,DE
+3119885312,3119886335,IS
+3119886336,3119887359,ES
+3119887360,3119888383,DE
+3119888384,3119889407,RU
+3119889408,3119890431,ES
+3119890432,3119891455,PL
+3119891456,3119892479,FR
+3119892480,3119893503,DK
+3119893504,3119894527,SE
+3119894528,3119895551,ES
+3119895552,3119896575,GB
+3119896576,3119897599,NL
+3119897600,3119898623,FR
+3119898624,3119899647,DK
+3119899648,3119900671,DE
+3119900672,3119901695,GB
+3119901696,3119902719,MD
+3119902720,3119903743,GB
+3119903744,3119903999,RO
+3119904000,3119904255,EE
+3119904256,3119904767,RO
+3119904768,3119905791,FR
+3119905792,3119906303,DE
+3119906304,3119906815,ES
+3119906816,3119907839,DE
+3119907840,3119908863,IR
+3119908864,3119909887,IT
+3119909888,3119910911,ES
+3119910912,3119911935,FR
+3119911936,3119912959,AT
+3119912960,3119913983,FR
+3119913984,3119915007,NL
+3119915008,3119916031,RU
+3119916032,3119917055,IT
+3119917056,3119918079,NL
+3119918080,3119919103,FR
+3119919104,3119920127,GB
+3119920128,3119922175,ES
+3119922176,3119923199,SK
+3119923200,3119924223,RU
+3119924224,3119925247,ES
+3119925248,3119926271,TM
+3119926272,3119927295,SY
+3119927296,3119928319,NO
+3119928320,3119929343,FR
+3119929344,3119930367,RU
+3119930368,3119931391,IT
+3119931392,3119932415,FR
+3119932416,3119933439,ES
+3119933440,3119934463,CH
+3119934464,3119935487,NL
+3119935488,3119936511,ES
+3119936512,3119937535,RU
+3119937536,3119938559,DE
+3119938560,3119939583,RU
+3119939584,3119940607,SE
+3119940608,3119941631,GB
+3119941632,3119942655,NL
+3119942656,3119943679,AT
+3119943680,3119944703,CH
+3119944704,3119945727,CZ
+3119945728,3119946239,NL
+3119946240,3119946495,RU
+3119946496,3119946751,NL
+3119946752,3119947775,DK
+3119947776,3119948799,KZ
+3119948800,3119949823,GR
+3119949824,3119950847,BG
+3119950848,3119951871,RO
+3119951872,3119952895,ES
+3119952896,3119953919,RU
+3119953920,3119954943,EE
+3119954944,3119955967,RO
+3119955968,3119956991,RU
+3119956992,3119958015,ES
+3119958016,3119959039,CH
+3119959040,3119960063,PL
+3119960064,3119960319,CZ
+3119960320,3119960575,US
+3119960576,3119960831,CZ
+3119960832,3119961087,FR
+3119961088,3119962111,DE
+3119962112,3119963135,RU
+3119963136,3119964159,DE
+3119964160,3119965183,DK
+3119965184,3119966207,NO
+3119966208,3119967231,LI
+3119967232,3119969279,LT
+3119969280,3119970303,DE
+3119970304,3119972351,ES
+3119972352,3119973375,AM
+3119973376,3119974399,ES
+3119974400,3119975423,DE
+3119975424,3119976447,SE
+3119976448,3119977471,GB
+3119977472,3119978495,UA
+3119978496,3119979519,ES
+3119979520,3119980543,CZ
+3119980544,3119981567,FR
+3119981568,3119982591,UA
+3119982592,3119983615,DE
+3119983616,3119985663,NL
+3119985664,3119986687,IE
+3119986688,3119987711,BG
+3119987712,3119988735,RO
+3119988736,3119989759,CH
+3119989760,3119990783,RO
+3119990784,3119991807,DE
+3119991808,3119992831,CH
+3119992832,3119993855,RU
+3119993856,3119994879,FR
+3119994880,3119995903,QA
+3119995904,3119996927,GE
+3119996928,3119997951,NO
+3119997952,3119998975,DK
+3119998976,3119999999,FR
+3120000000,3120001023,SE
+3120001024,3120002047,FR
+3120002048,3120003071,NL
+3120003072,3120004095,NO
+3120004096,3120005119,ES
+3120005120,3120006143,FR
+3120006144,3120007167,FI
+3120007168,3120008191,TR
+3120008192,3120009215,RU
+3120009216,3120010239,NL
+3120010240,3120011263,DE
+3120011264,3120012287,NL
+3120012288,3120013311,MD
+3120013312,3120014335,GR
+3120014336,3120016383,ES
+3120016384,3120017407,UA
+3120017408,3120018431,IQ
+3120018432,3120019455,CN
+3120019456,3120020479,RU
+3120020480,3120021503,IE
+3120021504,3120022527,RU
+3120022528,3120023551,CH
+3120023552,3120025599,GB
+3120025600,3120026623,UA
+3120026624,3120027647,IT
+3120027648,3120028671,AT
+3120028672,3120029695,SA
+3120029696,3120030719,RO
+3120030720,3120031743,PL
+3120031744,3120032767,ES
+3120032768,3120033791,SE
+3120033792,3120034815,DE
+3120034816,3120035839,BE
+3120035840,3120036863,FR
+3120036864,3120037887,PL
+3120037888,3120038911,GB
+3120038912,3120039935,FR
+3120039936,3120040959,ES
+3120040960,3120041983,TR
+3120041984,3120043007,RU
+3120043008,3120044031,ES
+3120044032,3120045055,IQ
+3120045056,3120046079,BE
+3120046080,3120047103,IQ
+3120047104,3120048127,DE
+3120048128,3120049151,BE
+3120049152,3120050175,UZ
+3120050176,3120051199,ES
+3120051200,3120052223,SE
+3120052224,3120053247,TR
+3120053248,3120054271,IE
+3120054272,3120055295,GB
+3120055296,3120056319,NL
+3120056320,3120057343,IT
+3120057344,3120058367,ES
+3120058368,3120059391,SE
+3120059392,3120059903,RU
+3120059904,3120060415,GB
+3120060416,3120061439,NL
+3120061440,3120062463,TR
+3120062464,3120063487,ES
+3120063488,3120064511,RU
+3120064512,3120065535,UA
+3120065536,3120066559,TR
+3120066560,3120067583,FR
+3120067584,3120068607,NO
+3120068608,3120069631,IS
+3120069632,3120070655,ES
+3120070656,3120071679,UA
+3120071680,3120072703,GB
+3120072704,3120073727,RO
+3120073728,3120074751,DE
+3120074752,3120075775,FR
+3120075776,3120076799,DE
+3120076800,3120077823,SE
+3120077824,3120078847,LU
+3120078848,3120079871,NL
+3120079872,3120080895,CH
+3120080896,3120081919,UA
+3120081920,3120082943,AL
+3120082944,3120083967,CZ
+3120083968,3120084991,AT
+3120084992,3120086015,AU
+3120086016,3120087039,DE
+3120087040,3120088063,UA
+3120088064,3120089087,RO
+3120089088,3120092159,ES
+3120092160,3120093183,PL
+3120093184,3120094207,FR
+3120094208,3120095231,GB
+3120095232,3120096255,LB
+3120096256,3120097279,NL
+3120097280,3120098303,DE
+3120098304,3120099327,NL
+3120099328,3120101375,IT
+3120101376,3120103423,GB
+3120103424,3120104447,RO
+3120104448,3120104959,US
+3120104960,3120105087,SG
+3120105088,3120105471,US
+3120105472,3120106495,NO
+3120106496,3120108543,IT
+3120108544,3120109567,FR
+3120109568,3120110591,ES
+3120110592,3120112639,FR
+3120112640,3120113663,GB
+3120113664,3120114687,NL
+3120114688,3120115711,FR
+3120115712,3120116735,FI
+3120116736,3120117759,IR
+3120117760,3120118783,CH
+3120118784,3120119807,GB
+3120119808,3120120831,DE
+3120120832,3120121855,GB
+3120121856,3120122879,AT
+3120122880,3120123903,ES
+3120123904,3120124927,GB
+3120124928,3120125951,ES
+3120125952,3120126975,TR
+3120126976,3120127999,IT
+3120128000,3120129023,DE
+3120129024,3120130047,BG
+3120130048,3120131071,LB
+3120131072,3120132095,ES
+3120132096,3120133119,CZ
+3120133120,3120134143,DE
+3120134144,3120135167,GB
+3120135168,3120136191,AT
+3120136192,3120137215,DE
+3120137216,3120138239,RO
+3120138240,3120139263,NL
+3120139264,3120140287,FR
+3120140288,3120141311,HU
+3120141312,3120142335,ES
+3120142336,3120143359,CY
+3120143360,3120144383,RU
+3120144384,3120145407,UA
+3120145408,3120146431,NL
+3120146432,3120147455,DE
+3120147456,3120148479,RU
+3120148480,3120149503,GB
+3120149504,3120150527,ES
+3120150528,3120151551,FR
+3120151552,3120153599,CH
+3120153600,3120154623,US
+3120154624,3120155647,GB
+3120155648,3120157695,ES
+3120157696,3120159743,GB
+3120159744,3120161791,DE
+3120161792,3120162815,PL
+3120162816,3120163839,ES
+3120163840,3120164863,RO
+3120164864,3120165887,CH
+3120165888,3120167935,NL
+3120167936,3120169983,RU
+3120169984,3120171007,MC
+3120171008,3120172031,GB
+3120172032,3120173055,SK
+3120173056,3120174079,LU
+3120174080,3120175103,UA
+3120175104,3120176127,ES
+3120176128,3120177151,RU
+3120177152,3120178175,GB
+3120178176,3120179199,DE
+3120179200,3120179711,RU
+3120179712,3120180223,DE
+3120180224,3120182271,RU
+3120182272,3120183295,NL
+3120183296,3120184319,CH
+3120184320,3120185343,RU
+3120185344,3120186367,IT
+3120186368,3120187391,FR
+3120187392,3120188415,CZ
+3120188416,3120189439,ES
+3120189440,3120190463,SA
+3120190464,3120192511,DE
+3120192512,3120193535,ES
+3120193536,3120194559,RO
+3120194560,3120195583,CZ
+3120195584,3120196607,RO
+3120196608,3120197631,DE
+3120197632,3120198655,FR
+3120198656,3120199679,EE
+3120199680,3120200703,DE
+3120200704,3120201727,SA
+3120201728,3120202751,RU
+3120202752,3120203775,FI
+3120203776,3120204799,NL
+3120204800,3120206847,IT
+3120206848,3120207871,RU
+3120207872,3120208895,EE
+3120208896,3120209919,IT
+3120209920,3120210943,NL
+3120210944,3120211967,IT
+3120211968,3120212991,DE
+3120212992,3120214015,CZ
+3120214016,3120215039,FR
+3120215040,3120216063,ES
+3120216064,3120217087,GB
+3120217088,3120218111,UA
+3120218112,3120219135,TR
+3120219136,3120221183,ES
+3120221184,3120222207,NL
+3120222208,3120223231,GB
+3120223232,3120224255,DE
+3120224256,3120225279,FR
+3120225280,3120226303,DE
+3120226304,3120227327,CH
+3120227328,3120228351,RU
+3120228352,3120229375,CZ
+3120229376,3120230399,FR
+3120230400,3120231423,TR
+3120231424,3120232447,SK
+3120232448,3120233471,DE
+3120233472,3120234495,MK
+3120234496,3120235519,UA
+3120235520,3120236543,DE
+3120236544,3120237567,GB
+3120237568,3120237823,MD
+3120237824,3120238079,RU
+3120238080,3120238591,GB
+3120238592,3120239871,RU
+3120239872,3120240127,CH
+3120240128,3120240639,US
+3120240640,3120241663,GB
+3120241664,3120242687,RO
+3120242688,3120243711,TR
+3120243712,3120244735,NL
+3120244736,3120245759,TR
+3120245760,3120246783,PL
+3120246784,3120247807,FI
+3120247808,3120248831,DE
+3120248832,3120249855,CH
+3120249856,3120250879,IT
+3120250880,3120251903,TR
+3120251904,3120252415,RU
+3120252416,3120252927,PL
+3120252928,3120253951,NL
+3120253952,3120254975,IR
+3120254976,3120255999,ES
+3120256000,3120257023,PL
+3120257024,3120258047,RU
+3120258048,3120259071,ES
+3120259072,3120260095,AT
+3120260096,3120261119,DE
+3120261120,3120262143,ES
+3120262144,3120263167,BG
+3120263168,3120264191,FI
+3120264192,3120265215,GB
+3120265216,3120266239,SK
+3120266240,3120267263,IT
+3120267264,3120268287,ES
+3120268288,3120269311,FR
+3120269312,3120270335,IT
+3120270336,3120271359,DE
+3120271360,3120272383,NL
+3120272384,3120273407,RU
+3120273408,3120275455,NL
+3120275456,3120276479,FR
+3120276480,3120277503,LI
+3120277504,3120278527,NL
+3120278528,3120279551,UA
+3120279552,3120280575,DE
+3120280576,3120281087,RU
+3120281088,3120281599,US
+3120281600,3120282623,CH
+3120282624,3120283647,ES
+3120283648,3120284671,NO
+3120284672,3120285695,PL
+3120285696,3120286719,AT
+3120286720,3120289791,ES
+3120289792,3120291839,RU
+3120291840,3120292863,GB
+3120292864,3120293887,ES
+3120293888,3120294143,TR
+3120294144,3120294911,GB
+3120294912,3120295935,NL
+3120295936,3120296959,RU
+3120296960,3120297983,GB
+3120297984,3120299007,PL
+3120299008,3120300031,ES
+3120300032,3120301055,LT
+3120301056,3120304127,ES
+3120304128,3120305151,IT
+3120305152,3120306175,BG
+3120306176,3120307199,UA
+3120307200,3120308223,IR
+3120308224,3120309247,DE
+3120309248,3120310271,AT
+3120310272,3120311295,TR
+3120311296,3120312319,ES
+3120312320,3120313343,FR
+3120313344,3120314367,IT
+3120314368,3120315391,ES
+3120315392,3120316415,RU
+3120316416,3120317439,GB
+3120317440,3120318463,DE
+3120318464,3120319487,AT
+3120319488,3120320511,NL
+3120320512,3120321535,GB
+3120321536,3120322559,RU
+3120322560,3120323583,CZ
+3120323584,3120324607,UA
+3120324608,3120325631,PL
+3120325632,3120326655,LB
+3120326656,3120327679,NL
+3120327680,3120328703,LT
+3120328704,3120329727,TR
+3120329728,3120330751,FI
+3120330752,3120331775,SE
+3120331776,3120332799,NL
+3120332800,3120333823,FR
+3120333824,3120334847,NL
+3120334848,3120335871,ES
+3120335872,3120336895,DE
+3120336896,3120337919,RU
+3120337920,3120338943,DE
+3120338944,3120339967,CZ
+3120339968,3120340991,FR
+3120340992,3120343039,DE
+3120343040,3120344063,RO
+3120344064,3120345087,ES
+3120345088,3120346111,DE
+3120346112,3120347135,PL
+3120347136,3120347391,RU
+3120347392,3120347647,DE
+3120347648,3120348159,FR
+3120348160,3120349183,MK
+3120349184,3120350207,RU
+3120350208,3120351231,CZ
+3120351232,3120352255,RU
+3120352256,3120353279,LT
+3120353280,3120354559,RU
+3120354560,3120354815,GB
+3120354816,3120355327,US
+3120355328,3120355839,RU
+3120355840,3120356351,CN
+3120356352,3120357375,GB
+3120357376,3120358399,ES
+3120358400,3120359423,RU
+3120359424,3120360447,DE
+3120360448,3120361471,FR
+3120361472,3120362495,CH
+3120362496,3120363519,NL
+3120363520,3120364543,RU
+3120364544,3120365567,JE
+3120365568,3120366591,GB
+3120366592,3120367103,RU
+3120367104,3120367615,US
+3120367616,3120368639,RU
+3120368640,3120369663,DE
+3120369664,3120370687,AT
+3120370688,3120374783,RU
+3120374784,3120375807,FR
+3120375808,3120376831,RU
+3120376832,3120377855,UA
+3120377856,3120378879,NL
+3120378880,3120379903,GB
+3120379904,3120380927,ES
+3120380928,3120381951,LV
+3120381952,3120382975,PL
+3120382976,3120383999,EE
+3120384000,3120385023,UA
+3120385024,3120386047,IQ
+3120386048,3120387071,IT
+3120387072,3120388095,DK
+3120388096,3120389119,GB
+3120389120,3120390143,FR
+3120390144,3120390399,NL
+3120390400,3120390655,NO
+3120390656,3120390911,GB
+3120390912,3120391167,ES
+3120391168,3120393215,RU
+3120393216,3120394239,LB
+3120394240,3120395263,JO
+3120395264,3120396287,SA
+3120396288,3120396799,TR
+3120396800,3120397055,HK
+3120397056,3120397311,SE
+3120397312,3120399359,GB
+3120399360,3120400383,FR
+3120400384,3120401407,RU
+3120401408,3120402431,GB
+3120402432,3120403455,ES
+3120403456,3120404479,RU
+3120404480,3120405503,UA
+3120405504,3120406527,BG
+3120406528,3120407551,UA
+3120407552,3120408575,PL
+3120408576,3120409599,FR
+3120409600,3120410623,DE
+3120410624,3120411647,GB
+3120411648,3120413695,RU
+3120413696,3120414719,HR
+3120414720,3120415743,CH
+3120415744,3120416767,GB
+3120416768,3120417791,IT
+3120417792,3120418815,CH
+3120418816,3120419839,NL
+3120419840,3120420863,PL
+3120420864,3120421887,UA
+3120421888,3120422911,BE
+3120422912,3120423935,ES
+3120423936,3120425983,PL
+3120425984,3120427007,IT
+3120427008,3120428031,PL
+3120428032,3120430079,GB
+3120430080,3120431103,RO
+3120431104,3120432127,DE
+3120432128,3120433151,PL
+3120433152,3120434175,FR
+3120434176,3120435199,UA
+3120435200,3120436223,LT
+3120436224,3120437247,LU
+3120437248,3120438271,ES
+3120438272,3120439295,DK
+3120439296,3120440319,LB
+3120440320,3120441343,DE
+3120441344,3120442367,NL
+3120442368,3120443391,LT
+3120443392,3120444415,NL
+3120444416,3120445439,CH
+3120445440,3120446463,GB
+3120446464,3120447487,DE
+3120447488,3120448511,RO
+3120448512,3120449535,NL
+3120449536,3120450559,FR
+3120450560,3120451583,CH
+3120451584,3120452607,SE
+3120452608,3120453631,IQ
+3120453632,3120454655,GB
+3120454656,3120455679,TR
+3120455680,3120456703,DE
+3120456704,3120457727,FR
+3120457728,3120458751,UA
+3120458752,3120459775,SY
+3120459776,3120460799,DE
+3120460800,3120461823,AL
+3120461824,3120462847,LT
+3120462848,3120463871,DE
+3120463872,3120464895,DK
+3120464896,3120465919,SE
+3120465920,3120466943,UA
+3120466944,3120467967,AT
+3120467968,3120468991,FR
+3120468992,3120470015,GB
+3120470016,3120471039,DE
+3120471040,3120473087,ES
+3120473088,3120474111,FR
+3120474112,3120475135,IT
+3120475136,3120476159,NL
+3120476160,3120477183,HR
+3120477184,3120478207,SY
+3120478208,3120479231,PL
+3120479232,3120480255,RU
+3120480256,3120484351,UA
+3120484352,3120485375,FR
+3120485376,3120486399,RU
+3120486400,3120487423,CY
+3120487424,3120488447,PL
+3120488448,3120489471,CH
+3120489472,3120490495,IT
+3120490496,3120491519,AT
+3120491520,3120492543,IT
+3120492544,3120493567,GB
+3120493568,3120494591,DE
+3120494592,3120495615,SK
+3120495616,3120496639,HR
+3120496640,3120497663,NL
+3120497664,3120498687,UA
+3120498688,3120499455,DE
+3120499456,3120499711,HR
+3120499712,3120500735,PL
+3120500736,3120501759,BE
+3120501760,3120502783,ES
+3120502784,3120503807,NL
+3120503808,3120504831,RU
+3120504832,3120505855,FI
+3120505856,3120506879,MD
+3120506880,3120507903,PL
+3120507904,3120508927,IQ
+3120508928,3120509951,UA
+3120509952,3120510975,NL
+3120510976,3120511999,BG
+3120512000,3120513023,IT
+3120513024,3120514047,DE
+3120514048,3120515071,IR
+3120515072,3120516095,ES
+3120516096,3120517119,BY
+3120517120,3120518143,DE
+3120518144,3120519167,FR
+3120519168,3120520191,IR
+3120520192,3120521215,TR
+3120521216,3120522239,UA
+3120522240,3120523263,DE
+3120523264,3120524287,ES
+3120524288,3120525311,GB
+3120525312,3120526335,DE
+3120526336,3120527359,CZ
+3120527360,3120528383,NL
+3120528384,3120529407,ES
+3120529408,3120530431,DE
+3120530432,3120531455,RU
+3120531456,3120532479,LB
+3120532480,3120533503,DK
+3120533504,3120534527,RO
+3120534528,3120535551,ES
+3120535552,3120536063,GB
+3120536064,3120536575,TR
+3120536576,3120537599,DK
+3120537600,3120538623,GB
+3120538624,3120540671,UA
+3120540672,3120541695,TR
+3120541696,3120542719,RU
+3120542720,3120543743,GB
+3120543744,3120544767,IT
+3120544768,3120545791,DE
+3120545792,3120546815,LT
+3120546816,3120547839,UA
+3120547840,3120548863,ES
+3120548864,3120549887,OM
+3120549888,3120550911,IR
+3120550912,3120551935,BG
+3120551936,3120552959,FR
+3120552960,3120553983,LB
+3120553984,3120555007,PL
+3120555008,3120556031,ME
+3120556032,3120557055,GB
+3120557056,3120558079,UA
+3120558080,3120559103,CZ
+3120559104,3120560127,FI
+3120560128,3120561151,DE
+3120561152,3120562175,PL
3120562176,3120594943,CO
3120594944,3120599039,AR
3120601088,3120602111,AR
@@ -93068,7 +107499,6 @@
3121872896,3122003967,CL
3122003968,3122135039,AR
3122135040,3122282495,VE
-3122282496,3122294783,AR
3122294784,3122298879,CR
3122298880,3122331647,VE
3122331648,3122364415,BO
@@ -93107,9 +107537,8 @@
3124846592,3124848639,AR
3124848640,3124849663,BR
3124849664,3124850687,AR
-3124850688,3124851855,HN
-3124851856,3124851863,IN
-3124851864,3124854783,HN
+3124850688,3124852735,US
+3124852736,3124854783,HN
3124854784,3124887551,CL
3124887552,3124953087,EC
3124953088,3125018623,CL
@@ -93119,16 +107548,12 @@
3125673984,3125805055,CL
3125805056,3126329343,CO
3126329344,3126853631,VE
-3126853632,3126860415,AR
-3126860416,3126860543,US
-3126860544,3126863999,AR
-3126864000,3126864127,US
-3126864128,3126870015,AR
+3126853632,3126870015,AR
3126870016,3126873343,VE
3126873344,3126873599,PA
3126873600,3126874111,VE
3126874112,3126878207,CR
-3126878208,3126886399,PA
+3126878208,3126886399,CO
3126886400,3126906879,AR
3126906880,3126910975,TT
3126910976,3126918143,AR
@@ -93151,8 +107576,7 @@
3130284032,3130286079,DO
3130286080,3130290175,PA
3130290176,3130302463,AR
-3130302464,3130302975,CY
-3130302976,3130310655,CO
+3130302464,3130310655,CO
3130312704,3130314751,AR
3130314752,3130315775,CL
3130315776,3130316799,CR
@@ -93180,41 +107604,15 @@
3132096512,3132211199,CR
3132211200,3132227583,AR
3132227584,3132293119,EC
-3132293120,3132295647,HN
-3132295648,3132295679,UY
-3132295680,3132297791,HN
-3132297792,3132297807,US
-3132297808,3132297839,HN
-3132297840,3132297855,US
-3132297856,3132297887,HN
-3132297888,3132297903,US
-3132297904,3132298007,HN
+3132293120,3132298007,HN
3132298008,3132298015,US
-3132298016,3132298127,HN
-3132298128,3132298143,US
-3132298144,3132300383,HN
+3132298016,3132300383,HN
3132300384,3132300391,US
3132300392,3132301727,HN
3132301728,3132301743,NL
-3132301744,3132302319,HN
-3132302320,3132302335,NL
-3132302336,3132302975,HN
-3132302976,3132302983,NL
-3132302984,3132303735,HN
-3132303736,3132303743,NL
-3132303744,3132304127,HN
-3132304128,3132304303,US
-3132304304,3132304311,DE
-3132304312,3132304383,US
-3132304384,3132304607,HN
-3132304608,3132304623,DE
-3132304624,3132305143,HN
+3132301744,3132305143,HN
3132305144,3132305151,NL
-3132305152,3132306239,HN
-3132306240,3132306271,DE
-3132306272,3132307823,HN
-3132307824,3132307839,US
-3132307840,3132308367,HN
+3132305152,3132308367,HN
3132308368,3132308375,US
3132308376,3132308775,HN
3132308776,3132308783,US
@@ -93237,9 +107635,7 @@
3132997632,3133014015,AR
3133014016,3133046783,HT
3133046784,3133067263,AR
-3133067264,3133071359,PA
-3133071360,3133071871,CY
-3133071872,3133073407,PA
+3133067264,3133073407,PA
3133073408,3133074431,CW
3133074432,3133075455,CL
3133075456,3133079551,CW
@@ -93259,15 +107655,31 @@
3136985344,3136985355,CL
3136985356,3136985359,AR
3136985360,3136985375,CL
-3136985376,3136985407,AR
+3136985376,3136985379,AR
+3136985380,3136985391,CL
+3136985392,3136985395,AR
+3136985396,3136985407,CL
3136985408,3136985415,BR
3136985416,3136985423,AR
3136985424,3136985431,BR
-3136985432,3136985439,AR
+3136985432,3136985436,AR
+3136985437,3136985437,BR
+3136985438,3136985438,AR
+3136985439,3136985439,US
3136985440,3136985447,BR
-3136985448,3136985623,AR
+3136985448,3136985471,US
+3136985472,3136985491,BR
+3136985492,3136985495,AR
+3136985496,3136985507,BR
+3136985508,3136985511,AR
+3136985512,3136985519,BR
+3136985520,3136985623,AR
3136985624,3136985631,MX
-3136985632,3136985947,AR
+3136985632,3136985663,AR
+3136985664,3136985671,US
+3136985672,3136985871,AR
+3136985872,3136985887,PE
+3136985888,3136985947,AR
3136985948,3136985951,BR
3136985952,3136985979,AR
3136985980,3136985983,BR
@@ -93303,10 +107715,8 @@
3154182144,3154247679,DE
3154247680,3154256895,RS
3154256896,3154257919,XK
-3154257920,3154274303,RS
-3154274304,3154275327,XK
-3154275328,3154282495,RS
-3154282496,3154284543,XK
+3154257920,3154283519,RS
+3154283520,3154284543,XK
3154284544,3154313215,RS
3154313216,3154378751,TR
3154378752,3154444287,GR
@@ -93320,7 +107730,9 @@
3155312939,3155312939,US
3155312940,3155427327,RU
3155427328,3155689471,AT
-3155689472,3155951615,RO
+3155689472,3155873791,RO
+3155873792,3155877887,ES
+3155877888,3155951615,RO
3155951616,3156213759,GB
3156213760,3156279295,RU
3156279296,3156344831,PL
@@ -93330,15 +107742,51 @@
3156541440,3156606975,PT
3156606976,3156672511,TR
3156672512,3156738047,GB
-3156738048,3156803583,DE
+3156738048,3156793343,DE
+3156793344,3156793471,CH
+3156793472,3156794111,DE
+3156794112,3156794623,CH
+3156794624,3156795135,DE
+3156795136,3156795391,CH
+3156795392,3156803583,DE
3156803584,3156869119,TR
-3156869120,3156877823,LU
-3156877824,3156878335,UA
-3156878336,3156932863,LU
+3156869120,3156876287,LU
+3156876288,3156877311,RU
+3156877312,3156878079,LU
+3156878080,3156878335,UA
+3156878336,3156893695,LU
+3156893696,3156894719,IN
+3156894720,3156897791,LU
+3156897792,3156899839,US
+3156899840,3156901887,SG
+3156901888,3156906239,NL
+3156906240,3156907007,LU
+3156907008,3156908031,RU
+3156908032,3156910079,LU
+3156910080,3156912127,NL
+3156912128,3156914175,LU
+3156914176,3156916223,RU
+3156916224,3156917247,GB
+3156917248,3156920319,LU
+3156920320,3156921343,SG
+3156921344,3156922367,HK
+3156922368,3156922623,NL
+3156922624,3156922879,US
+3156922880,3156923135,LU
+3156923136,3156923391,RU
+3156923392,3156923647,SG
+3156923648,3156924415,LU
+3156924416,3156925439,NL
+3156925440,3156926463,SG
+3156926464,3156927743,NL
+3156927744,3156927999,LU
+3156928000,3156929535,NL
+3156929536,3156930559,LU
+3156930560,3156932607,US
+3156932608,3156932863,NL
3156932864,3156933119,US
-3156933120,3156933909,LU
-3156933910,3156933910,SG
-3156933911,3156934655,LU
+3156933120,3156933631,NL
+3156933632,3156934655,SG
3156934656,3157000191,RU
3157000192,3157008383,MK
3157008384,3157016575,RU
@@ -93355,7 +107803,9 @@
3158070550,3158310911,CH
3158310912,3158312959,FI
3158312960,3158315007,AZ
-3158315008,3158317055,DE
+3158315008,3158316031,DE
+3158316032,3158316543,GB
+3158316544,3158317055,DE
3158317056,3158319103,SI
3158319104,3158321151,GB
3158321152,3158323199,DE
@@ -93405,9 +107855,9 @@
3158417408,3158419455,NL
3158419456,3158421503,FR
3158421504,3158423551,GB
-3158423552,3158425159,MT
-3158425160,3158425167,IE
-3158425168,3158425599,MT
+3158423552,3158425087,MT
+3158425088,3158425343,IE
+3158425344,3158425599,MT
3158425600,3158427647,NL
3158427648,3158429695,DE
3158429696,3158431743,RU
@@ -93442,9 +107892,12 @@
3158855680,3158856447,NL
3158856448,3158857471,DE
3158857472,3158857727,SE
-3158857728,3158859519,NL
+3158857728,3158857983,DE
+3158857984,3158858239,GB
+3158858240,3158858495,SG
+3158858496,3158859519,NL
3158859520,3158859775,GB
-3158859776,3158859903,NL
+3158859776,3158859903,RU
3158859904,3158860031,CZ
3158860032,3158860287,GB
3158860288,3158860543,NL
@@ -93454,8 +107907,7 @@
3158861312,3158861567,IE
3158861568,3158861823,AE
3158861824,3158862079,DE
-3158862080,3158862463,GB
-3158862464,3158862591,NL
+3158862080,3158862591,GB
3158862592,3158862847,FR
3158862848,3158863103,PL
3158863104,3158863359,IT
@@ -93619,7 +108071,8 @@
3161571328,3161587711,UZ
3161587712,3161604095,RU
3161604096,3161612287,PL
-3161612288,3161614335,IT
+3161612288,3161613311,US
+3161613312,3161614335,IT
3161614336,3161614847,US
3161614848,3161615103,ES
3161615104,3161615359,US
@@ -93634,11 +108087,12 @@
3161645056,3161653247,SE
3161653248,3161669631,LU
3161669632,3161673727,MQ
-3161673728,3161676799,GP
-3161676800,3161677823,FR
-3161677824,3161681919,GP
+3161673728,3161681919,GP
3161681920,3161682943,GF
-3161682944,3161686015,FR
+3161682944,3161683199,MQ
+3161683200,3161683455,FR
+3161683456,3161683967,MQ
+3161683968,3161686015,FR
3161686016,3161702399,UA
3161702400,3161718783,AM
3161718784,3161735167,PL
@@ -93648,10 +108102,11 @@
3161784320,3161800703,FI
3161800704,3161817087,SA
3161817088,3161833471,PL
-3161833472,3161842687,AT
-3161842688,3161843711,RS
-3161843712,3161845759,AT
-3161845760,3161846271,GR
+3161833472,3161835519,GR
+3161835520,3161839615,AT
+3161839616,3161839871,GR
+3161839872,3161841663,AT
+3161841664,3161846271,GR
3161846272,3161849855,AT
3161849856,3161866239,BE
3161866240,3161882623,IR
@@ -93662,8 +108117,9 @@
3161964544,3161980927,ES
3161980928,3161989119,SK
3161989120,3161990143,NL
-3161990144,3161991167,TR
-3161991168,3161997311,RU
+3161990144,3161992191,TR
+3161992192,3161993215,NL
+3161993216,3161997311,RU
3161997312,3162005503,DK
3162005504,3162013695,RS
3162013696,3162021887,IL
@@ -93676,7 +108132,8 @@
3162071040,3162087423,IR
3162087424,3162095615,SK
3162095616,3162103807,GE
-3162103808,3162111999,NL
+3162103808,3162104831,FR
+3162104832,3162111999,NL
3162112000,3162120191,PL
3162120192,3162128383,GB
3162128384,3162136575,NL
@@ -93705,7 +108162,8 @@
3162300416,3162308607,RU
3162308608,3162316799,HR
3162316800,3162324991,PL
-3162324992,3162329087,GB
+3162324992,3162327039,IE
+3162327040,3162329087,CH
3162329088,3162331135,IE
3162331136,3162333183,GB
3162333184,3162341375,IT
@@ -93718,7 +108176,7 @@
3162390528,3162396927,SE
3162396928,3162397183,FI
3162397184,3162398719,SE
-3162398720,3162406911,BE
+3162398720,3162406911,NL
3162406912,3162415103,IR
3162415104,3162423295,DE
3162423296,3162431487,NO
@@ -93739,9 +108197,7 @@
3162676224,3162677247,KZ
3162677248,3162679039,RU
3162679040,3162679295,KZ
-3162679296,3162680319,RU
-3162680320,3162680575,UZ
-3162680576,3162681343,RU
+3162679296,3162681343,RU
3162681344,3162682367,UA
3162682368,3162682879,MD
3162682880,3162683135,GB
@@ -93766,7 +108222,9 @@
3163166976,3163167231,FR
3163167232,3163170527,DE
3163170528,3163170559,AE
-3163170560,3163186534,DE
+3163170560,3163178854,DE
+3163178855,3163178855,SG
+3163178856,3163186534,DE
3163186535,3163186535,FR
3163186536,3163186673,DE
3163186674,3163186674,FR
@@ -93795,7 +108253,11 @@
3164864512,3164864703,GB
3164864704,3164864735,ZA
3164864736,3164864767,IE
-3164864768,3164897279,GB
+3164864768,3164872383,GB
+3164872384,3164872447,ZA
+3164872448,3164893183,GB
+3164893184,3164895231,TR
+3164895232,3164897279,GB
3164897280,3164899327,IT
3164899328,3164901375,RU
3164901376,3164903423,PL
@@ -93809,54 +108271,249 @@
3164923904,3164925951,DE
3164925952,3164927999,PL
3164928000,3164930047,NL
-3164930048,3164935042,FR
-3164935043,3164935043,PL
-3164935044,3164936499,FR
-3164936500,3164936500,LT
-3164936501,3164939705,FR
+3164930048,3164932095,IE
+3164932096,3164932719,FR
+3164932720,3164932735,CZ
+3164932736,3164932831,FR
+3164932832,3164932863,IT
+3164932864,3164932879,FR
+3164932880,3164932895,LT
+3164932896,3164932927,FR
+3164932928,3164932991,NL
+3164932992,3164933119,GB
+3164933120,3164934143,FR
+3164934144,3164936191,PL
+3164936192,3164937749,LT
+3164937750,3164937750,FR
+3164937751,3164938239,LT
+3164938240,3164939705,FR
3164939706,3164939706,ES
3164939707,3164945919,FR
3164945920,3164945983,NL
-3164945984,3164952224,FR
+3164945984,3164945999,FR
+3164946000,3164946015,ES
+3164946016,3164946047,GB
+3164946048,3164946159,FR
+3164946160,3164946175,GB
+3164946176,3164946351,FR
+3164946352,3164946367,GB
+3164946368,3164946479,FR
+3164946480,3164946483,ES
+3164946484,3164946507,FR
+3164946508,3164946511,CZ
+3164946512,3164946527,FR
+3164946528,3164946559,FI
+3164946560,3164946815,FR
+3164946816,3164946879,DE
+3164946880,3164946943,FR
+3164946944,3164947007,IT
+3164947008,3164947023,FR
+3164947024,3164947039,FI
+3164947040,3164947043,FR
+3164947044,3164947047,GB
+3164947048,3164947591,FR
+3164947592,3164947599,ES
+3164947600,3164948739,FR
+3164948740,3164948743,CZ
+3164948744,3164948747,GB
+3164948748,3164948863,FR
+3164948864,3164948927,GB
+3164948928,3164948959,FR
+3164948960,3164948991,ES
+3164948992,3164949119,FR
+3164949120,3164949123,PT
+3164949124,3164949339,FR
+3164949340,3164949343,GB
+3164949344,3164949371,FR
+3164949372,3164949375,GB
+3164949376,3164950399,FR
+3164950400,3164950407,ES
+3164950408,3164950711,FR
+3164950712,3164950715,FI
+3164950716,3164951423,FR
+3164951424,3164951455,ES
+3164951456,3164952224,FR
3164952225,3164952231,GB
3164952232,3164952233,FR
3164952234,3164952235,GB
3164952236,3164952236,FR
3164952237,3164952237,GB
-3164952238,3164958895,FR
+3164952238,3164952247,FR
+3164952248,3164952271,ES
+3164952272,3164952511,FR
+3164952512,3164952527,PT
+3164952528,3164953007,FR
+3164953008,3164953023,LT
+3164953024,3164953087,IE
+3164953088,3164953255,FR
+3164953256,3164953263,CZ
+3164953264,3164953583,FR
+3164953584,3164953599,ES
+3164953600,3164954463,FR
+3164954464,3164954471,IT
+3164954472,3164954479,IE
+3164954480,3164954507,FR
+3164954508,3164954511,ES
+3164954512,3164958895,FR
3164958896,3164958911,PT
-3164958912,3164960247,FR
+3164958912,3164959247,FR
+3164959248,3164959255,ES
+3164959256,3164959467,FR
+3164959468,3164959471,GB
+3164959472,3164959807,FR
+3164959808,3164959823,IE
+3164959824,3164959839,FI
+3164959840,3164960247,FR
3164960248,3164960255,DE
-3164960256,3164960439,FR
+3164960256,3164960263,FR
+3164960264,3164960267,ES
+3164960268,3164960391,FR
+3164960392,3164960395,GB
+3164960396,3164960439,FR
3164960440,3164960443,DE
-3164960444,3164960787,FR
+3164960444,3164960499,FR
+3164960500,3164960503,CZ
+3164960504,3164960671,FR
+3164960672,3164960675,ES
+3164960676,3164960699,FR
+3164960700,3164960703,ES
+3164960704,3164960787,FR
3164960788,3164960791,DE
-3164960792,3164964010,FR
-3164964011,3164964011,ES
-3164964012,3164965575,FR
-3164965576,3164965576,FI
-3164965577,3164967231,FR
+3164960792,3164960799,FR
+3164960800,3164960831,PT
+3164960832,3164961151,FR
+3164961152,3164961159,ES
+3164961160,3164961391,FR
+3164961392,3164961395,ES
+3164961396,3164961551,FR
+3164961552,3164961555,ES
+3164961556,3164961727,FR
+3164961728,3164961735,ES
+3164961736,3164962143,FR
+3164962144,3164962151,ES
+3164962152,3164962443,FR
+3164962444,3164962447,NL
+3164962448,3164962455,FR
+3164962456,3164962459,IE
+3164962460,3164962471,FR
+3164962472,3164962475,ES
+3164962476,3164962647,FR
+3164962648,3164962655,PT
+3164962656,3164962815,FR
+3164962816,3164964863,ES
+3164964864,3164966911,FI
+3164966912,3164967135,FR
+3164967136,3164967151,ES
+3164967152,3164967231,FR
3164967232,3164967239,ES
3164967240,3164967303,FR
3164967304,3164967307,DE
-3164967308,3164968223,FR
+3164967308,3164967935,FR
+3164967936,3164967967,DE
+3164967968,3164967991,FR
+3164967992,3164967999,NL
+3164968000,3164968223,FR
3164968224,3164968255,GB
3164968256,3164968319,FR
3164968320,3164968447,GB
-3164968448,3164970413,FR
+3164968448,3164968835,FR
+3164968836,3164968839,ES
+3164968840,3164969135,FR
+3164969136,3164969143,ES
+3164969144,3164969147,FR
+3164969148,3164969151,GB
+3164969152,3164969179,FR
+3164969180,3164969183,ES
+3164969184,3164969191,FR
+3164969192,3164969199,PT
+3164969200,3164970223,FR
+3164970224,3164970239,GB
+3164970240,3164970413,FR
3164970414,3164970415,IT
-3164970416,3164974335,FR
+3164970416,3164970607,FR
+3164970608,3164970615,ES
+3164970616,3164970631,FR
+3164970632,3164970639,ES
+3164970640,3164970719,FR
+3164970720,3164970751,PL
+3164970752,3164971011,FR
+3164971012,3164971015,IE
+3164971016,3164971511,FR
+3164971512,3164971519,CZ
+3164971520,3164971579,FR
+3164971580,3164971583,ES
+3164971584,3164971615,FR
+3164971616,3164971619,ES
+3164971620,3164971807,FR
+3164971808,3164971839,ES
+3164971840,3164972399,FR
+3164972400,3164972407,ES
+3164972408,3164972543,FR
+3164972544,3164972559,IT
+3164972560,3164972599,FR
+3164972600,3164972607,IT
+3164972608,3164972735,FR
+3164972736,3164972751,GB
+3164972752,3164973407,FR
+3164973408,3164973415,GB
+3164973416,3164973419,FR
+3164973420,3164973423,ES
+3164973424,3164973711,FR
+3164973712,3164973727,GB
+3164973728,3164974335,FR
3164974336,3164974437,GB
3164974438,3164974438,IT
3164974439,3164974463,GB
-3164974464,3164976143,FR
+3164974464,3164974495,DE
+3164974496,3164975199,FR
+3164975200,3164975215,ES
+3164975216,3164975311,FR
+3164975312,3164975327,ES
+3164975328,3164975887,FR
+3164975888,3164975903,IT
+3164975904,3164975991,FR
+3164975992,3164975995,PL
+3164975996,3164976027,FR
+3164976028,3164976031,ES
+3164976032,3164976143,FR
3164976144,3164976159,BE
-3164976160,3164995345,FR
+3164976160,3164976231,FR
+3164976232,3164976239,ES
+3164976240,3164976511,FR
+3164976512,3164976527,LT
+3164976528,3164977215,FR
+3164977216,3164977223,NL
+3164977224,3164977231,PT
+3164977232,3164977239,BE
+3164977240,3164977247,IT
+3164977248,3164977255,CZ
+3164977256,3164977263,PT
+3164977264,3164977271,FI
+3164977272,3164977279,IT
+3164977280,3164978079,FR
+3164978080,3164978111,PT
+3164978112,3164978155,FR
+3164978156,3164978159,DE
+3164978160,3164978623,FR
+3164978624,3164978655,ES
+3164978656,3164979119,FR
+3164979120,3164979135,LT
+3164979136,3164979151,FR
+3164979152,3164979155,ES
+3164979156,3164995345,FR
3164995346,3164995346,GB
3164995347,3164995583,FR
-3164995584,3165054692,NL
-3165054693,3165054693,SG
-3165054694,3165061119,NL
+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
3165061120,3165126655,SK
3165126656,3165192191,RU
3165192192,3165257727,GE
@@ -93867,9 +108524,50 @@
3165417472,3165421567,DE
3165421568,3165425663,IE
3165425664,3165437951,GB
-3165437952,3165439487,AT
+3165437952,3165438207,DK
+3165438208,3165439487,AT
3165439488,3165439743,GB
-3165439744,3165454335,AT
+3165439744,3165439999,ES
+3165440000,3165440255,JP
+3165440256,3165440511,HK
+3165440512,3165440767,JP
+3165440768,3165441023,SG
+3165441024,3165442047,AT
+3165442048,3165442303,TW
+3165442304,3165442559,AU
+3165442560,3165442815,KR
+3165442816,3165443071,HK
+3165443072,3165443583,CA
+3165443584,3165444095,US
+3165444096,3165444351,BR
+3165444352,3165444607,ZA
+3165444608,3165444863,IT
+3165444864,3165445119,NL
+3165445120,3165445375,AT
+3165445376,3165445631,CA
+3165445632,3165445887,NL
+3165445888,3165446143,NO
+3165446144,3165447167,DE
+3165447168,3165447423,CA
+3165447424,3165447679,AT
+3165447680,3165448191,FR
+3165448192,3165448447,AT
+3165448448,3165448703,DE
+3165448704,3165448959,US
+3165448960,3165449215,CH
+3165449216,3165451263,AT
+3165451264,3165451519,BR
+3165451520,3165451775,FR
+3165451776,3165452031,AT
+3165452032,3165452287,IL
+3165452288,3165452543,AT
+3165452544,3165452799,DE
+3165452800,3165453055,AT
+3165453056,3165453311,US
+3165453312,3165453567,PE
+3165453568,3165453823,US
+3165453824,3165454079,RO
+3165454080,3165454335,AE
3165454336,3165519871,RO
3165519872,3165585407,DE
3165585408,3165650943,CZ
@@ -93889,7 +108587,8 @@
3166662656,3166666751,RU
3166666752,3166667263,PL
3166667264,3166667775,CZ
-3166667776,3166670847,GB
+3166667776,3166668799,GB
+3166668800,3166670847,MC
3166670848,3166672895,UA
3166672896,3166674943,GB
3166674944,3166679039,RU
@@ -93960,14 +108659,10 @@
3167895552,3167901695,IR
3167901696,3167902719,RO
3167902720,3167902975,BE
-3167902976,3167903231,US
+3167902976,3167903231,NL
3167903232,3167903743,DE
3167903744,3167932415,IR
-3167932416,3167933439,CH
-3167933440,3167933695,VG
-3167933696,3167933951,DE
-3167933952,3167934207,US
-3167934208,3167934463,VG
+3167932416,3167934463,GB
3167934464,3167935487,ES
3167935488,3167936511,PL
3167936512,3167938559,RO
@@ -93975,8 +108670,7 @@
3167939584,3167940351,RO
3167940352,3167940607,IT
3167940608,3167943679,MD
-3167943680,3167944191,GB
-3167944192,3167944447,RO
+3167943680,3167944447,RO
3167944448,3167944703,GB
3167944704,3167948799,IR
3167948800,3167951359,RO
@@ -93985,7 +108679,7 @@
3167951616,3167952895,RO
3167952896,3167985663,IR
3167985664,3167985919,US
-3167985920,3167986431,VG
+3167985920,3167986431,GB
3167986432,3167986687,UA
3167986688,3167987711,RO
3167987712,3167987967,NL
@@ -93999,7 +108693,7 @@
3168005888,3168006143,NL
3168006144,3168008191,SE
3168008192,3168008447,RO
-3168008448,3168010239,GB
+3168008448,3168010239,US
3168010240,3168011263,MD
3168011264,3168011519,IE
3168011520,3168011775,RO
@@ -94007,25 +108701,30 @@
3168012288,3168014335,MD
3168014336,3168015359,ES
3168015360,3168015615,BE
-3168015616,3168015871,VG
+3168015616,3168015871,ES
3168015872,3168016127,US
3168016128,3168016383,GB
3168016384,3168018431,MD
3168018432,3168018687,TR
-3168018688,3168018943,VG
+3168018688,3168018943,ES
3168018944,3168019455,GB
-3168019456,3168020479,RO
+3168019456,3168020223,RO
+3168020224,3168020479,PL
3168020480,3168022527,MD
3168022528,3168035839,IR
3168035840,3168036863,RO
-3168036864,3168037887,GB
+3168036864,3168037119,US
+3168037120,3168037375,CA
+3168037376,3168037887,US
3168037888,3168038399,SE
3168038400,3168038911,RO
3168038912,3168039935,MD
3168039936,3168040959,BE
3168040960,3168041215,DE
-3168041216,3168044799,RO
-3168044800,3168045055,US
+3168041216,3168041471,RO
+3168041472,3168041983,GB
+3168041984,3168044799,RO
+3168044800,3168045055,GB
3168045056,3168047103,RO
3168047104,3168049151,IR
3168049152,3168049407,RO
@@ -94036,7 +108735,9 @@
3168051200,3168059391,IR
3168059392,3168061439,RO
3168061440,3168073727,IR
-3168073728,3168075007,RO
+3168073728,3168074495,RO
+3168074496,3168074751,CY
+3168074752,3168075007,RO
3168075008,3168075263,ES
3168075264,3168075519,GB
3168075520,3168076799,RO
@@ -94044,20 +108745,20 @@
3168079872,3168080127,IT
3168080128,3168081919,RO
3168081920,3168083967,FR
-3168083968,3168084991,RO
+3168083968,3168084223,DE
+3168084224,3168084991,RO
3168084992,3168086015,MD
3168086016,3168088063,IT
3168088064,3168089087,RO
3168089088,3168090111,MD
-3168090112,3168092159,FR
+3168090112,3168092159,ES
3168092160,3168096255,IR
3168096256,3168097279,ES
3168097280,3168100351,MD
3168100352,3168108543,IR
-3168108544,3168110335,RO
-3168110336,3168110591,GB
+3168108544,3168110591,RO
3168110592,3168110847,IT
-3168110848,3168111359,VG
+3168110848,3168111359,GB
3168111360,3168111615,IT
3168111616,3168112639,FR
3168112640,3168116735,IR
@@ -94082,28 +108783,23 @@
3168137216,3168137471,RO
3168137472,3168137727,FR
3168137728,3168137983,RO
-3168137984,3168138239,US
+3168137984,3168138239,NL
3168138240,3168139263,MD
3168139264,3168141311,GB
3168141312,3168142335,IT
3168142336,3168143359,RO
-3168143360,3168143615,VG
-3168143616,3168143871,UA
-3168143872,3168144383,VG
-3168144384,3168144639,SG
-3168144640,3168145151,VG
-3168145152,3168145407,UA
+3168143360,3168145407,GB
3168145408,3168147455,RO
3168147456,3168147967,FR
3168147968,3168148735,RO
3168148736,3168148991,IT
3168148992,3168151551,RO
-3168151552,3168153599,GB
-3168153600,3168154111,VG
+3168151552,3168153599,US
+3168153600,3168154111,ES
3168154112,3168154367,SG
-3168154368,3168155135,VG
+3168154368,3168155135,ES
3168155136,3168155391,IT
-3168155392,3168155647,VG
+3168155392,3168155647,ES
3168155648,3168156415,RO
3168156416,3168156671,ES
3168156672,3168157695,MD
@@ -94111,9 +108807,7 @@
3168161792,3168162303,RO
3168162304,3168162815,IT
3168162816,3168163839,IR
-3168163840,3168164351,RO
-3168164352,3168164863,GB
-3168164864,3168165119,RO
+3168163840,3168165119,RO
3168165120,3168165375,DE
3168165376,3168165887,GB
3168165888,3168166911,IR
@@ -94143,11 +108837,12 @@
3168207104,3168207359,NL
3168207360,3168208895,RO
3168208896,3168209919,ES
-3168209920,3168211455,RO
+3168209920,3168210943,RO
+3168210944,3168211455,GB
3168211456,3168211967,CZ
3168211968,3168212223,NL
3168212224,3168212479,US
-3168212480,3168212735,VG
+3168212480,3168212735,RO
3168212736,3168212991,FR
3168212992,3168214015,IR
3168214016,3168214527,GB
@@ -94166,11 +108861,16 @@
3168223488,3168223743,IT
3168223744,3168223999,IE
3168224000,3168224255,NL
-3168224256,3168227327,RO
+3168224256,3168225791,RO
+3168225792,3168226303,GB
+3168226304,3168227327,RO
3168227328,3168229375,ES
3168229376,3168230399,IR
3168230400,3168230655,GB
-3168230656,3168232447,RO
+3168230656,3168230911,RO
+3168230912,3168231167,IT
+3168231168,3168231423,RO
+3168231424,3168232447,ES
3168232448,3168233471,SY
3168233472,3168235519,ES
3168235520,3168237567,RO
@@ -94196,9 +108896,7 @@
3168534528,3168796671,GB
3168796672,3168829439,FR
3168829440,3168862207,SA
-3168862208,3168872191,RU
-3168872192,3168872447,UA
-3168872448,3168894975,RU
+3168862208,3168894975,RU
3168894976,3168927743,PS
3168927744,3168960511,RU
3168960512,3168993279,NL
@@ -94213,11 +108911,32 @@
3169056768,3169058815,EE
3169058816,3169091583,DK
3169091584,3169124351,IT
-3169124352,3169157119,RO
+3169124352,3169153163,RO
+3169153164,3169153164,IR
+3169153165,3169157119,RO
3169157120,3169189887,SY
3169189888,3169222655,UA
3169222656,3169255423,SI
-3169255424,3169288191,KW
+3169255424,3169275903,KW
+3169275904,3169277951,CY
+3169277952,3169278991,KW
+3169278992,3169279007,SA
+3169279008,3169279231,KW
+3169279232,3169279239,IQ
+3169279240,3169279255,SA
+3169279256,3169279263,KW
+3169279264,3169279295,SA
+3169279296,3169279303,KW
+3169279304,3169279311,SA
+3169279312,3169279319,SD
+3169279320,3169279487,GB
+3169279488,3169279743,CY
+3169279744,3169279759,IQ
+3169279760,3169279871,KW
+3169279872,3169285119,GB
+3169285120,3169285631,KW
+3169285632,3169286143,GB
+3169286144,3169288191,KW
3169288192,3169320959,UA
3169320960,3169583103,RU
3169583104,3169648639,KW
@@ -94234,13 +108953,15 @@
3169849856,3169850367,SE
3169850368,3169851391,RO
3169851392,3169853439,NL
-3169853440,3169854463,GB
+3169853440,3169854463,AU
3169854464,3169855487,ES
3169855488,3169855999,US
3169856000,3169856255,IT
3169856256,3169856511,RO
3169856512,3169857023,IT
-3169857024,3169862911,RO
+3169857024,3169858559,RO
+3169858560,3169859583,NL
+3169859584,3169862911,RO
3169862912,3169863167,IT
3169863168,3169863423,MD
3169863424,3169863679,RO
@@ -94270,7 +108991,7 @@
3169899776,3169902079,RO
3169902080,3169902591,SE
3169902592,3169905151,RO
-3169905152,3169905407,NL
+3169905152,3169905407,ES
3169905408,3169905663,RO
3169905664,3169906687,ES
3169906688,3169908735,RO
@@ -94279,7 +109000,9 @@
3169911808,3169912319,IT
3169912320,3169913855,RO
3169913856,3169914111,GB
-3169914112,3169916927,RO
+3169914112,3169915135,RO
+3169915136,3169915391,GG
+3169915392,3169916927,RO
3169916928,3169918975,PL
3169918976,3169920767,RO
3169920768,3169923071,GB
@@ -94291,9 +109014,13 @@
3169928192,3169928447,SE
3169928448,3169935359,RO
3169935360,3169937407,ES
-3169937408,3169946623,RO
+3169937408,3169937919,RO
+3169937920,3169938431,GB
+3169938432,3169946623,RO
3169946624,3169947135,IT
-3169947136,3169949951,RO
+3169947136,3169948671,RO
+3169948672,3169949695,NL
+3169949696,3169949951,RO
3169949952,3169950463,IT
3169950464,3169951743,RO
3169951744,3169955839,SE
@@ -94318,15 +109045,14 @@
3170140160,3170172927,RU
3170172928,3170238463,IR
3170238464,3170246655,DE
-3170246656,3170252799,RS
-3170252800,3170253823,XK
-3170253824,3170254847,RS
+3170246656,3170254847,RS
3170254848,3170263039,BA
3170263040,3170271231,CZ
3170271232,3170279423,PL
3170279424,3170287615,RU
3170287616,3170295807,GB
-3170295808,3170303999,RU
+3170295808,3170298879,RU
+3170298880,3170303999,KZ
3170304000,3170312191,SY
3170312192,3170320383,RU
3170320384,3170327593,JO
@@ -94343,20 +109069,24 @@
3170500608,3170631679,PT
3170631680,3170664447,PL
3170664448,3170697215,HR
-3170697216,3170729983,IR
+3170697216,3170704383,IR
+3170704384,3170705407,AU
+3170705408,3170729983,IR
3170729984,3170762751,AZ
3170762752,3170795519,RU
3170795520,3170828287,BG
3170828288,3170861055,RU
3170861056,3170893823,RS
-3170893824,3179105023,BR
-3179105024,3179105279,US
-3179105280,3179282431,BR
+3170893824,3177066495,BR
+3177066496,3177070591,US
+3177070592,3179282431,BR
3179282432,3184116735,MX
3184116736,3184123903,BR
3184123904,3184125951,MX
3184125952,3184127999,BR
-3184128000,3187671039,MX
+3184128000,3185079135,MX
+3185079136,3185079143,UY
+3185079144,3187671039,MX
3187671040,3187687423,CO
3187687424,3187695615,DO
3187695616,3187703807,AR
@@ -94376,7 +109106,9 @@
3187822592,3187824639,AR
3187824640,3187826687,CL
3187826688,3187834879,AR
-3187834880,3187843071,CW
+3187834880,3187836159,NL
+3187836160,3187836415,CW
+3187836416,3187843071,NL
3187843072,3187846143,AW
3187846144,3187851263,CW
3187851264,3187855359,PY
@@ -94384,11 +109116,7 @@
3187857408,3187859455,CR
3187859456,3187863551,PA
3187863552,3187908607,AR
-3187910656,3187913727,CL
-3187913728,3187913815,PT
-3187913816,3187913823,CL
-3187913824,3187913983,PT
-3187913984,3187914751,CL
+3187910656,3187914751,CL
3187914752,3187916799,BO
3187916800,3187933183,CO
3187933184,3187933341,GT
@@ -94397,7 +109125,9 @@
3187934080,3187934207,HN
3187934208,3187935543,GT
3187935544,3187935551,HN
-3187935552,3187936591,GT
+3187935552,3187936015,GT
+3187936016,3187936023,HN
+3187936024,3187936591,GT
3187936592,3187936595,HN
3187936596,3187940571,GT
3187940572,3187940575,HN
@@ -94405,19 +109135,17 @@
3187940632,3187940639,HN
3187940640,3187940823,GT
3187940824,3187940831,HN
-3187940832,3187941647,GT
-3187941648,3187941655,HN
-3187941656,3187941711,GT
+3187940832,3187941711,GT
3187941712,3187941715,HN
3187941716,3187942271,GT
3187942272,3187942279,HN
-3187942280,3187942563,GT
-3187942564,3187942567,HN
-3187942568,3187942655,GT
+3187942280,3187942655,GT
3187942656,3187942663,HN
3187942664,3187942975,GT
3187942976,3187942991,HN
-3187942992,3187943391,GT
+3187942992,3187943119,GT
+3187943120,3187943127,HN
+3187943128,3187943391,GT
3187943392,3187943399,HN
3187943400,3187943551,GT
3187943552,3187943687,HN
@@ -94427,17 +109155,9 @@
3187944352,3187944359,HN
3187944360,3187944773,GT
3187944774,3187944774,HN
-3187944775,3187944855,GT
-3187944856,3187944859,HN
-3187944860,3187945343,GT
+3187944775,3187945343,GT
3187945344,3187945471,HN
-3187945472,3187946687,GT
-3187946688,3187946695,HN
-3187946696,3187946735,GT
-3187946736,3187946743,HN
-3187946744,3187946887,GT
-3187946888,3187946895,HN
-3187946896,3187946975,GT
+3187945472,3187946975,GT
3187946976,3187946979,HN
3187946980,3187947999,GT
3187948000,3187948159,HN
@@ -94445,9 +109165,13 @@
3187948368,3187948375,HN
3187948376,3187948799,GT
3187948800,3187948927,HN
-3187948928,3187949115,GT
+3187948928,3187949023,GT
+3187949024,3187949031,HN
+3187949032,3187949115,GT
3187949116,3187949119,HN
-3187949120,3187949567,GT
+3187949120,3187949239,GT
+3187949240,3187949247,HN
+3187949248,3187949567,GT
3187949568,3187949816,BQ
3187949817,3187949817,US
3187949818,3187950126,BQ
@@ -94486,17 +109210,17 @@
3188149336,3188149339,PE
3188149340,3188151423,CO
3188151424,3188151439,PE
-3188151440,3188152171,CO
-3188152172,3188152175,PE
-3188152176,3188153015,CO
+3188151440,3188153015,CO
3188153016,3188153023,EC
-3188153024,3188154139,CO
+3188153024,3188153423,CO
+3188153424,3188153431,CL
+3188153432,3188154139,CO
3188154140,3188154143,CL
3188154144,3188170751,CO
3188170752,3188174847,CR
3188174848,3188178943,BR
3188178944,3188187135,CR
-3188187136,3188203519,AR
+3188187136,3188199423,AR
3188203520,3188207615,DO
3188207616,3188211711,AR
3188211712,3188228095,CL
@@ -94506,11 +109230,12 @@
3188240384,3188241407,CO
3188241408,3188242431,EC
3188242432,3188244479,AR
-3188244480,3188248575,CO
-3188248576,3188248703,CL
-3188248704,3188260863,CO
+3188244480,3188260863,CO
3188260864,3188269055,AR
-3188269056,3188275199,PA
+3188269056,3188269499,PA
+3188269500,3188269500,CO
+3188269501,3188273151,PA
+3188273152,3188275199,MX
3188275200,3188277247,CL
3188277248,3188293631,CO
3188293632,3188301823,VE
@@ -94528,13 +109253,9 @@
3188473856,3188482047,PE
3188482048,3188490239,AR
3188490240,3188498431,CO
-3188498432,3188511103,AR
-3188511104,3188511231,US
-3188511232,3188523007,AR
+3188498432,3188523007,AR
3188523008,3188539391,CO
-3188539392,3188542207,CL
-3188542208,3188542463,US
-3188542464,3188543487,CL
+3188539392,3188543487,CL
3188543488,3188545535,PA
3188545536,3188547583,AR
3188547584,3188551679,CO
@@ -94580,22 +109301,22 @@
3191093248,3191095295,AR
3191095296,3191099391,EC
3191099392,3191103487,AR
-3191103488,3191107583,VE
+3191103488,3191107327,VE
+3191107328,3191107583,CR
3191107584,3191108271,PE
3191108272,3191108287,MX
3191108288,3191108959,PE
3191108960,3191108991,CO
3191108992,3191109119,PE
-3191109120,3191111167,MX
-3191111168,3191111679,PE
+3191109120,3191110655,MX
+3191110656,3191111679,PE
3191111680,3191128063,PY
3191128064,3191132159,EC
3191132160,3191136255,AR
3191136256,3191144447,DO
3191144448,3191152639,SV
3191152640,3191155711,NI
-3191155712,3191156223,SV
-3191156224,3191156735,NI
+3191155712,3191156735,SV
3191156736,3191169023,HN
3191169024,3191193599,SV
3191193600,3191209983,HN
@@ -94606,11 +109327,7 @@
3191439360,3191455743,EC
3191455744,3191472127,AR
3191472128,3191603199,TT
-3191603200,3191603455,CO
-3191603456,3191603519,GT
-3191603520,3191603647,CO
-3191603648,3191603711,SV
-3191603712,3191607295,CO
+3191603200,3191607295,CO
3191607296,3191607551,MX
3191607552,3191610111,CO
3191610112,3191610367,PE
@@ -94622,13 +109339,9 @@
3191619904,3191619935,VE
3191619936,3191635967,CO
3191635968,3191652351,AR
-3191652352,3191670783,CO
-3191670784,3191672831,CL
-3191672832,3191673281,CO
+3191652352,3191673281,CO
3191673282,3191673282,EC
-3191673283,3191673343,CO
-3191673344,3191674879,CL
-3191674880,3191693311,CO
+3191673283,3191693311,CO
3191693312,3191701503,AR
3191701504,3191709695,CO
3191709696,3191709951,BR
@@ -94670,19 +109383,17 @@
3193590528,3193590783,EC
3193590784,3193591807,CO
3193591808,3193592063,EC
-3193592064,3193592319,CO
-3193592320,3193592575,EC
-3193592576,3193595391,CO
+3193592064,3193595391,CO
3193595392,3193595647,EC
-3193595648,3193599743,CO
-3193599744,3193599999,EC
-3193600000,3193604351,CO
+3193595648,3193604351,CO
3193604352,3193604607,EC
3193604608,3193606527,CO
-3193606528,3193606911,EC
+3193606528,3193606655,EC
+3193606656,3193606783,CO
+3193606784,3193606911,EC
3193606912,3193617151,CO
-3193617152,3193617407,EC
-3193617408,3193618431,CO
+3193617152,3193617279,EC
+3193617280,3193618431,CO
3193618432,3193618559,US
3193618560,3193618943,CO
3193618944,3193619071,EC
@@ -94692,9 +109403,7 @@
3193622944,3193622975,EC
3193622976,3193623039,CO
3193623040,3193623551,EC
-3193623552,3193624063,CO
-3193624064,3193624575,EC
-3193624576,3193625599,CO
+3193623552,3193625599,CO
3193625600,3193625855,EC
3193625856,3193626623,US
3193626624,3193628671,CO
@@ -94707,37 +109416,9 @@
3193700352,3193724927,HN
3193724928,3193729023,AR
3193729024,3193733119,CU
-3193733120,3193735679,AR
-3193735680,3193735935,US
-3193735936,3193736447,AR
-3193736448,3193736959,US
-3193736960,3193738239,AR
-3193738240,3193739007,US
-3193739008,3193739519,AR
-3193739520,3193739775,US
-3193739776,3193740287,AR
-3193740288,3193741055,US
-3193741056,3193741311,AR
-3193741312,3193741823,US
-3193741824,3193743871,AR
-3193743872,3193743999,US
-3193744000,3193744895,AR
-3193744896,3193745151,US
-3193745152,3193745279,AR
-3193745280,3193745407,US
-3193745408,3193749503,AR
-3193749504,3193749759,US
-3193749760,3193750527,AR
-3193750528,3193750783,US
-3193750784,3193751295,AR
-3193751296,3193751551,US
-3193751552,3193752063,AR
-3193752064,3193752575,US
-3193752576,3193754111,AR
-3193754112,3193754239,US
-3193754240,3193755007,AR
-3193755008,3193755135,US
-3193755136,3193765887,AR
+3193733120,3193740543,AR
+3193740544,3193740799,US
+3193740800,3193765887,AR
3193765888,3193774079,TT
3193775104,3193776127,GY
3193776128,3193777151,AR
@@ -94746,8 +109427,8 @@
3193782272,3193798655,TT
3193798656,3193806847,CO
3193806848,3193808895,CR
-3193808896,3193809663,US
-3193809664,3193810943,CR
+3193808896,3193809919,US
+3193809920,3193810943,CR
3193810944,3193811967,PY
3193815040,3193823231,AR
3193823232,3193827327,CL
@@ -94777,25 +109458,23 @@
3194093568,3194126335,SR
3194126336,3194126591,AR
3194126592,3194126847,NL
-3194126848,3194126911,AR
-3194126912,3194126975,PE
-3194126976,3194127231,AR
+3194126848,3194127231,AR
3194127232,3194127359,BR
-3194127360,3194128127,AR
-3194128128,3194128383,BR
+3194127360,3194128383,AR
3194128384,3194129407,NI
3194129408,3194129663,AR
3194129664,3194129671,BR
-3194129672,3194129919,AR
-3194129920,3194130047,BR
+3194129672,3194130047,AR
3194130048,3194130175,CO
-3194130176,3194130303,CL
+3194130176,3194130303,AR
3194130304,3194130431,BR
3194130432,3194130943,AR
3194130944,3194131455,BR
3194131456,3194132991,AR
3194132992,3194133247,CL
-3194133248,3194135551,AR
+3194133248,3194134527,AR
+3194134528,3194135039,CL
+3194135040,3194135551,AR
3194135552,3194136063,BR
3194136064,3194136319,AR
3194136320,3194136447,CO
@@ -94823,9 +109502,7 @@
3194368000,3194370047,BO
3194370048,3194372095,PA
3194372096,3194380287,HT
-3194380288,3194381311,US
-3194381312,3194382335,CA
-3194382336,3194388479,US
+3194380288,3194388479,US
3194388480,3194396671,PE
3194396672,3194413055,CO
3194413056,3194421247,CL
@@ -94837,9 +109514,7 @@
3194448688,3194448695,CL
3194448696,3194449031,CO
3194449032,3194449047,CL
-3194449048,3194449175,CO
-3194449176,3194449183,PE
-3194449184,3194450263,CO
+3194449048,3194450263,CO
3194450264,3194450271,CL
3194450272,3194451415,CO
3194451416,3194451423,EC
@@ -94932,9 +109607,7 @@
3194925056,3194929151,AR
3194929152,3194937343,EC
3194937344,3194945535,AR
-3194945536,3194953471,GT
-3194953472,3194953599,NI
-3194953600,3194953727,GT
+3194945536,3194953727,GT
3194953728,3194961407,AR
3194961408,3194961663,US
3194961664,3194961919,AR
@@ -94970,8 +109643,8 @@
3195138048,3195139071,DO
3195139072,3195140095,CL
3195140096,3195142143,CR
-3195142144,3195142655,PA
-3195142656,3195142911,VE
+3195142144,3195142783,PA
+3195142784,3195142911,VE
3195142912,3195143039,EC
3195143040,3195143167,UY
3195143168,3195143295,GT
@@ -94987,9 +109660,7 @@
3195203584,3195205631,VE
3195205632,3195206655,PE
3195206656,3195207679,CL
-3195207680,3195209687,GT
-3195209688,3195209695,PR
-3195209696,3195211775,GT
+3195207680,3195211775,GT
3195211776,3195214847,BZ
3195214848,3195215103,RU
3195215104,3195215871,BZ
@@ -95046,45 +109717,20 @@
3195764736,3195768831,CR
3195768832,3195772927,AR
3195772928,3195781119,VE
-3195781120,3195782143,BR
-3195782144,3195783167,PA
-3195783168,3195784191,BR
-3195784192,3195785215,PA
-3195785216,3195785311,HN
-3195785312,3195785343,CA
-3195785344,3195785375,HN
+3195781120,3195785215,BR
+3195785216,3195785375,HN
3195785376,3195785439,DE
-3195785440,3195785735,HN
-3195785736,3195785743,GB
-3195785744,3195785815,HN
+3195785440,3195785815,HN
3195785816,3195785823,DE
3195785824,3195786015,HN
3195786016,3195786023,ES
-3195786024,3195786191,HN
-3195786192,3195786199,US
-3195786200,3195786239,HN
+3195786024,3195786239,HN
3195786240,3195786287,US
3195786288,3195786295,ES
-3195786296,3195786479,US
-3195786480,3195786487,CA
-3195786488,3195786751,US
-3195786752,3195787127,HN
-3195787128,3195787135,DE
-3195787136,3195787215,HN
-3195787216,3195787231,US
-3195787232,3195787263,HN
-3195787264,3195787607,US
-3195787608,3195787615,DE
-3195787616,3195787775,US
-3195787776,3195788159,HN
-3195788160,3195788167,CA
-3195788168,3195788415,HN
-3195788416,3195788423,US
-3195788424,3195788919,HN
+3195786296,3195786751,US
+3195786752,3195788919,HN
3195788920,3195788927,CA
-3195788928,3195789087,HN
-3195789088,3195789119,CA
-3195789120,3195789311,HN
+3195788928,3195789311,HN
3195789312,3195793407,PA
3195793408,3195801599,AR
3195801600,3195803647,HN
@@ -95092,13 +109738,7 @@
3195804672,3195805695,VE
3195805696,3195807743,NI
3195807744,3195807999,US
-3195808000,3195808383,BZ
-3195808384,3195808639,US
-3195808640,3195808767,BZ
-3195808768,3195808895,US
-3195808896,3195809407,BZ
-3195809408,3195809535,US
-3195809536,3195809791,BZ
+3195808000,3195809791,BZ
3195809792,3195811839,PE
3195811840,3195813887,AR
3195813888,3195822079,DO
@@ -95188,8 +109828,7 @@
3200565248,3200569343,HT
3200569344,3200573439,CL
3200573440,3200577535,AR
-3200577536,3200578559,BR
-3200578560,3200579583,EC
+3200577536,3200579583,BR
3200579584,3200581631,AR
3200581632,3200614399,BZ
3200614400,3200647167,AR
@@ -95226,31 +109865,22 @@
3201859584,3201863679,CO
3201863680,3201865727,CL
3201865728,3201867775,CO
-3201867776,3201869831,PE
-3201869832,3201870495,AR
-3201870496,3201870527,PE
-3201870528,3201870815,AR
-3201870816,3201870831,PE
-3201870832,3201870911,AR
-3201870912,3201870959,PE
-3201870960,3201870975,AR
-3201870976,3201871615,PE
-3201871616,3201871695,AR
-3201871696,3201871703,PE
-3201871704,3201871823,AR
-3201871824,3201871839,PE
-3201871840,3201871871,AR
-3201871872,3201875967,PE
+3201867776,3201875967,PE
3201875968,3201880063,CO
3201880064,3201884159,EC
-3201884160,3201889279,VE
-3201889280,3201889535,US
-3201889536,3201894399,VE
-3201894400,3201904639,AR
+3201884160,3201894399,VE
+3201894400,3201896447,AR
+3201896448,3201897471,CO
+3201897472,3201898495,AR
+3201898496,3201900543,CO
+3201900544,3201903615,CL
+3201903616,3201904639,AR
3201904640,3201908735,CO
-3201908736,3201916927,AR
-3201916928,3201917695,CO
-3201917696,3201917859,AR
+3201908736,3201917007,AR
+3201917008,3201917023,CO
+3201917024,3201917527,AR
+3201917528,3201917535,CO
+3201917536,3201917859,AR
3201917860,3201917863,CO
3201917864,3201917879,AR
3201917880,3201917887,CO
@@ -95260,16 +109890,16 @@
3201920065,3201920068,CO
3201920069,3201920639,AR
3201920640,3201920655,CO
-3201920656,3201921279,AR
-3201921280,3201921535,CO
-3201921536,3201924863,AR
+3201920656,3201921023,AR
+3201921024,3201922047,CO
+3201922048,3201922799,AR
+3201922800,3201922815,CO
+3201922816,3201924863,AR
3201924864,3201924991,PA
3201924992,3201925119,AR
3201925120,3201957887,CL
3201957888,3202088959,PA
-3202088960,3202127999,AR
-3202128000,3202128015,CW
-3202128016,3202215167,AR
+3202088960,3202215167,AR
3202215168,3202215295,PY
3202215296,3202220031,AR
3202220032,3202351103,PE
@@ -95281,13 +109911,10 @@
3203531520,3203531775,PA
3203531776,3203532799,CO
3203532800,3203534847,PA
-3203534848,3203535871,CO
-3203535872,3203536383,PA
-3203536384,3203536895,CO
+3203534848,3203536895,CO
3203536896,3203537919,HN
-3203537920,3203538431,GT
-3203538432,3203538687,PA
-3203538688,3203538943,CO
+3203537920,3203538175,GT
+3203538176,3203538943,CO
3203538944,3203539967,BZ
3203539968,3203543551,CO
3203543552,3203544575,GT
@@ -95295,15 +109922,11 @@
3203545088,3203545599,GT
3203545600,3203547135,CO
3203547136,3203549183,PA
-3203549184,3203553279,CO
-3203553280,3203553535,CR
-3203553536,3203556863,CO
+3203549184,3203556863,CO
3203556864,3203557119,DO
3203557120,3203561983,CO
3203561984,3203562495,SV
-3203562496,3203564543,CO
-3203564544,3203564799,DO
-3203564800,3203565055,CO
+3203562496,3203565055,CO
3203565056,3203566079,CR
3203566080,3203566591,CO
3203566592,3203566847,PA
@@ -95312,13 +109935,14 @@
3203568640,3203569663,SV
3203569664,3203570303,CO
3203570304,3203570431,SV
-3203570432,3203570607,CO
-3203570608,3203570623,CR
-3203570624,3203571199,CO
+3203570432,3203570687,CR
+3203570688,3203571199,CO
3203571200,3203571711,SV
3203571712,3203571967,CO
3203571968,3203572223,SV
-3203572224,3203661823,CO
+3203572224,3203572351,CO
+3203572352,3203572479,SV
+3203572480,3203661823,CO
3203661824,3203923967,AR
3203923968,3204448255,CO
3204448256,3208642559,BR
@@ -95334,11 +109958,10 @@
3210740480,3210740735,US
3210740736,3210742015,BR
3210742016,3210742031,IT
-3210742032,3210742047,BR
-3210742048,3210742063,CL
+3210742032,3210742063,BR
3210742064,3210742079,US
-3210742080,3210742143,BR
-3210742144,3210742527,CL
+3210742080,3210742271,BR
+3210742272,3210742527,CL
3210742528,3210742543,KR
3210742544,3210742560,CL
3210742561,3210742561,BR
@@ -95363,13 +109986,11 @@
3210744088,3210744095,CL
3210744096,3210744127,BR
3210744128,3210744191,FR
-3210744192,3210744255,US
-3210744256,3210744319,BR
+3210744192,3210744319,BR
3210744320,3210744575,US
3210744576,3210744591,BE
3210744592,3210744607,BR
-3210744608,3210744703,CL
-3210744704,3210744831,US
+3210744608,3210744831,CL
3210744832,3210744863,NZ
3210744864,3210745087,BR
3210745088,3210745343,US
@@ -95388,17 +110009,15 @@
3210746384,3210746495,BR
3210746496,3210746879,US
3210746880,3210746895,CH
-3210746896,3210746943,CL
-3210746944,3210747135,BR
+3210746896,3210747135,BR
3210747136,3210748159,US
3210748160,3210748175,JP
3210748176,3210748191,BR
-3210748192,3210748287,CL
-3210748288,3210748351,US
+3210748192,3210748351,CL
3210748352,3210748415,BR
3210748416,3210748671,GB
-3210748672,3210748927,CL
-3210748928,3210752255,US
+3210748672,3210749439,CL
+3210749440,3210752255,US
3210752256,3210752511,SG
3210752512,3210755071,US
3210755072,3210755583,MD
@@ -95422,8 +110041,10 @@
3210764544,3210764799,CA
3210764800,3210765055,US
3210765056,3210765071,SE
-3210765072,3210765311,BR
-3210765312,3210765567,CL
+3210765072,3210765087,BR
+3210765088,3210765119,CL
+3210765120,3210765183,BR
+3210765184,3210765567,CL
3210765568,3210765823,US
3210765824,3210766079,ES
3210766080,3210766335,CL
@@ -95441,9 +110062,7 @@
3210771200,3210771215,TH
3210771216,3210771263,CL
3210771264,3210771455,BR
-3210771456,3210772479,US
-3210772480,3210772735,CL
-3210772736,3210773247,US
+3210771456,3210773247,US
3210773248,3210773503,MY
3210773504,3210773519,PL
3210773520,3210773759,BR
@@ -95513,7 +110132,9 @@
3210792960,3210793471,GB
3210793472,3210795007,US
3210795008,3210796031,IL
-3210796032,3210798847,US
+3210796032,3210798079,US
+3210798080,3210798591,CL
+3210798592,3210798847,US
3210798848,3210799103,ES
3210799104,3210802431,US
3210802432,3210802687,ES
@@ -95570,8 +110191,7 @@
3211072512,3211073023,NL
3211073024,3211073279,GB
3211073280,3211073535,FR
-3211073536,3211074047,US
-3211074048,3211074303,CL
+3211073536,3211074303,US
3211074304,3211074559,ES
3211074560,3211074815,NL
3211074816,3211075071,US
@@ -95598,9 +110218,10 @@
3211083776,3211083791,RU
3211083792,3211083839,CL
3211083840,3211083855,GB
-3211083856,3211083903,DE
+3211083856,3211083871,DE
+3211083872,3211083903,CL
3211083904,3211084031,FR
-3211084032,3211084287,DE
+3211084032,3211084287,CL
3211084288,3211084303,NL
3211084304,3211084351,DE
3211084352,3211084367,GB
@@ -95614,10 +110235,10 @@
3211084864,3211084879,GB
3211084880,3211085311,DE
3211085312,3211085327,GB
-3211085328,3211085375,CL
+3211085328,3211085375,DE
3211085376,3211085391,GB
-3211085392,3211085407,DE
-3211085408,3211085583,CL
+3211085392,3211085567,DE
+3211085568,3211085583,CL
3211085584,3211085599,DE
3211085600,3211085695,CL
3211085696,3211085823,GE
@@ -95691,7 +110312,9 @@
3211097216,3211097343,GB
3211097344,3211097599,DE
3211097600,3211097855,US
-3211097856,3211098111,DE
+3211097856,3211097871,CL
+3211097872,3211097887,DE
+3211097888,3211098111,CL
3211098112,3211098367,US
3211098368,3211098383,CL
3211098384,3211098399,DE
@@ -95706,7 +110329,7 @@
3211099776,3211099903,GB
3211099904,3211100159,DE
3211100160,3211101951,US
-3211101952,3211102207,SG
+3211101952,3211102207,CL
3211102208,3211102335,AU
3211102336,3211102463,BR
3211102464,3211102591,AU
@@ -95724,9 +110347,12 @@
3211105792,3211106303,ES
3211106304,3211109375,US
3211109376,3211109887,DE
-3211109888,3211111167,US
+3211109888,3211110143,US
+3211110144,3211110399,NL
+3211110400,3211111167,US
3211111168,3211111423,KR
-3211111424,3211112447,JP
+3211111424,3211112191,US
+3211112192,3211112447,JP
3211112448,3211112959,US
3211112960,3211113215,CL
3211113216,3211113471,SG
@@ -95763,81 +110389,43 @@
3211145216,3211147263,NI
3211147264,3211148287,CR
3211148288,3211165695,CO
-3211165696,3211165727,HN
-3211165728,3211165735,UY
-3211165736,3211165951,HN
-3211165952,3211165983,UY
-3211165984,3211166415,HN
+3211165696,3211166415,US
3211166416,3211166431,UY
-3211166432,3211166559,HN
+3211166432,3211166559,US
3211166560,3211166567,UY
-3211166568,3211167487,HN
-3211167488,3211167503,US
-3211167504,3211167519,HN
-3211167520,3211167527,US
-3211167528,3211167927,HN
-3211167928,3211167935,US
-3211167936,3211168767,HN
-3211168768,3211171487,US
-3211171488,3211171503,ES
-3211171504,3211171511,US
-3211171512,3211171519,ES
-3211171520,3211171791,US
-3211171792,3211171807,ES
-3211171808,3211172047,US
-3211172048,3211172063,NL
-3211172064,3211172271,US
+3211166568,3211172271,US
3211172272,3211172279,NL
-3211172280,3211172351,US
-3211172352,3211172607,HN
+3211172280,3211172607,US
3211172608,3211172623,NL
-3211172624,3211172671,HN
+3211172624,3211172671,US
3211172672,3211172687,NL
-3211172688,3211173183,HN
+3211172688,3211173183,US
3211173184,3211173199,NL
-3211173200,3211173279,HN
+3211173200,3211173279,US
3211173280,3211173295,NL
-3211173296,3211173887,HN
-3211173888,3211174183,US
+3211173296,3211174183,US
3211174184,3211174191,CA
3211174192,3211174415,US
3211174416,3211174431,CA
-3211174432,3211174687,US
-3211174688,3211174703,CA
-3211174704,3211174719,US
-3211174720,3211174735,CA
-3211174736,3211175199,US
+3211174432,3211175199,US
3211175200,3211175215,BR
-3211175216,3211175295,US
-3211175296,3211175327,BR
-3211175328,3211177831,US
+3211175216,3211177831,US
3211177832,3211177847,CR
3211177848,3211177983,US
3211177984,3211178583,HN
3211178584,3211178591,ES
3211178592,3211178671,HN
3211178672,3211178703,ES
-3211178704,3211179087,HN
-3211179088,3211179103,US
-3211179104,3211179199,HN
-3211179200,3211179231,US
-3211179232,3211180047,HN
+3211178704,3211180031,HN
+3211180032,3211180047,US
3211180048,3211180063,BR
-3211180064,3211180103,HN
+3211180064,3211180103,US
3211180104,3211180111,BR
-3211180112,3211180543,HN
-3211180544,3211180687,US
-3211180688,3211180695,BR
-3211180696,3211180799,US
-3211180800,3211180887,HN
+3211180112,3211180887,US
3211180888,3211180895,CR
-3211180896,3211181119,HN
-3211181120,3211181135,CR
-3211181136,3211181215,HN
+3211180896,3211181215,US
3211181216,3211181231,CR
-3211181232,3211181439,HN
-3211181440,3211181447,CA
-3211181448,3211182079,HN
+3211181232,3211182079,US
3211182080,3211194367,CO
3211194368,3211195391,DO
3211195392,3211214847,AR
@@ -95929,9 +110517,11 @@
3220045824,3220062207,US
3220062208,3220062719,SG
3220062720,3220063231,AU
-3220063232,3220063743,JP
+3220063232,3220063487,JP
+3220063488,3220063743,BR
3220063744,3220066303,US
-3220066304,3220070399,JP
+3220066304,3220069887,JP
+3220069888,3220070399,BR
3220070400,3220078591,IE
3220078592,3220080639,BR
3220080640,3220094975,US
@@ -95963,19 +110553,19 @@
3221334270,3221334270,DZ
3221334271,3221415935,US
3221415936,3221416191,RU
-3221416192,3221464063,US
-3221464064,3221464319,BD
-3221464320,3221469175,US
+3221416192,3221446687,US
+3221446688,3221446703,RO
+3221446704,3221449199,US
+3221449200,3221449203,RO
+3221449204,3221469175,US
3221469176,3221469183,CA
-3221469184,3221470463,US
-3221470464,3221470719,RO
-3221470720,3221471487,US
-3221471488,3221471743,RO
-3221471744,3221474919,US
+3221469184,3221473279,US
+3221473280,3221473535,CA
+3221473536,3221474919,US
3221474920,3221474927,GB
-3221474928,3221477375,US
-3221477376,3221477631,RO
-3221477632,3221560319,US
+3221474928,3221485211,US
+3221485212,3221485215,RO
+3221485216,3221560319,US
3221560320,3221561087,GB
3221561088,3221562367,US
3221562368,3221562623,SE
@@ -96039,7 +110629,7 @@
3222025984,3222027775,US
3222027776,3222028031,CA
3222028032,3222030335,US
-3222030336,3222030847,NL
+3222030336,3222030847,GB
3222030848,3222031359,US
3222031360,3222031615,AU
3222031616,3222031871,IT
@@ -96050,9 +110640,12 @@
3222036736,3222036991,US
3222036992,3222037247,CA
3222037248,3222037503,GB
-3222037504,3222040575,US
+3222037504,3222039807,US
+3222040320,3222040575,AO
3222040576,3222041599,BR
-3222042624,3222044927,US
+3222041856,3222042111,MA
+3222042112,3222042367,CL
+3222042368,3222044927,US
3222044928,3222045183,CA
3222045184,3222055935,US
3222056192,3222056447,US
@@ -96071,7 +110664,9 @@
3222072320,3222075135,US
3222075136,3222075391,NL
3222075392,3222208511,US
-3222208512,3222274047,AE
+3222208512,3222208991,AE
+3222208992,3222209023,US
+3222209024,3222274047,AE
3222274048,3222274559,US
3222274560,3222274815,AU
3222274816,3222275071,US
@@ -96142,7 +110737,8 @@
3222989824,3222990079,PT
3222990080,3222990591,AT
3222990592,3222990847,PT
-3222990848,3223091199,US
+3222990848,3223089151,US
+3223089152,3223091199,GB
3223091200,3223092223,AU
3223092224,3223094271,GB
3223094272,3223201791,US
@@ -96175,7 +110771,8 @@
3223262720,3223262975,DE
3223262976,3223263231,BE
3223263232,3223263743,US
-3223263744,3223264255,NL
+3223263744,3223263999,NL
+3223264000,3223264255,FR
3223264256,3223265023,US
3223265024,3223265279,NL
3223265280,3223266559,US
@@ -96322,13 +110919,25 @@
3223586304,3223586559,GB
3223586560,3223589119,SE
3223589120,3223589375,US
-3223589376,3223601663,SE
+3223589376,3223591679,SE
+3223591936,3223592703,SE
+3223592960,3223594495,SE
+3223594496,3223595007,AT
+3223595008,3223595263,SE
+3223595520,3223599103,SE
+3223599104,3223599359,AT
+3223599360,3223599615,IS
+3223599616,3223600383,SE
+3223600640,3223601663,SE
3223601664,3223602175,GB
3223602176,3223606527,SE
3223606528,3223606783,GB
-3223606784,3223607551,SE
+3223606784,3223607039,SE
+3223607296,3223607551,SE
3223607552,3223607807,GB
-3223607808,3223610367,SE
+3223607808,3223608319,SE
+3223608576,3223609855,SE
+3223610112,3223610367,SE
3223610368,3223610623,IT
3223610624,3223610879,SE
3223610880,3223611135,NO
@@ -96356,7 +110965,8 @@
3223634944,3223635455,GB
3223635456,3223637247,SE
3223637248,3223637503,GB
-3223637504,3223638271,SE
+3223637504,3223638015,SE
+3223638016,3223638271,NL
3223638272,3223638527,GB
3223638528,3223640831,SE
3223640832,3223641087,GB
@@ -96373,11 +110983,11 @@
3223650048,3223650303,GB
3223650304,3223715839,CH
3223715840,3223781375,DK
-3223781376,3223855103,US
+3223781376,3223805951,US
+3223805952,3223814143,GB
+3223814144,3223855103,US
3223855104,3223857151,CA
-3223857152,3223863807,US
-3223863808,3223864319,CA
-3223864320,3223864575,US
+3223857152,3223864575,US
3223864832,3223865343,HR
3223865344,3223867391,FI
3223867392,3223867647,GB
@@ -96503,7 +111113,9 @@
3224129792,3224132351,DE
3224132352,3224170495,US
3224170496,3224173567,SE
-3224173568,3224305663,US
+3224173568,3224258047,US
+3224258048,3224258303,FI
+3224258304,3224305663,US
3224305664,3224367615,JP
3224367616,3224368127,US
3224368128,3224369663,CH
@@ -96513,7 +111125,9 @@
3224370944,3224371199,CA
3224371200,3224373247,US
3224373248,3224373503,AU
-3224373504,3224376831,US
+3224373504,3224373759,US
+3224373760,3224374015,AU
+3224374016,3224376831,US
3224376832,3224377087,GB
3224377088,3224379135,US
3224379136,3224379391,DE
@@ -96576,11 +111190,14 @@
3224725248,3224725503,NL
3224725504,3224725759,CH
3224725760,3224772351,US
-3224772352,3224777983,DE
+3224772352,3224776447,DE
+3224776448,3224776703,GB
+3224776704,3224777983,DE
3224777984,3224778239,US
+3224778752,3224779775,ES
3224779776,3224785151,DE
3224785152,3224791039,US
-3224791040,3224791295,DE
+3224791040,3224791295,NL
3224791296,3224791807,AU
3224791808,3224793343,US
3224793344,3224793599,DE
@@ -96616,11 +111233,15 @@
3224828672,3224828927,AU
3224828928,3224829439,US
3224829440,3224829695,DE
-3224829696,3224834047,US
+3224829952,3224834047,US
3224834048,3224834303,SG
3224834304,3224834559,US
3224834560,3224834815,TH
-3224834816,3224851455,US
+3224834816,3224841727,US
+3224841728,3224841983,CN
+3224841984,3224847359,US
+3224847360,3224848383,CN
+3224848384,3224851455,US
3224851456,3224851711,NL
3224851712,3224852735,US
3224852736,3224852991,DE
@@ -96638,7 +111259,6 @@
3224859392,3224859647,NL
3224859648,3224860159,US
3224860160,3224860415,JP
-3224860416,3224860671,CA
3224860672,3224862975,US
3224862976,3224863231,NL
3224863232,3224863487,CA
@@ -96658,9 +111278,7 @@
3224882688,3224882943,CA
3224882944,3224884223,US
3224884224,3224884479,GB
-3224884480,3224885247,US
-3224885248,3224885503,CA
-3224885504,3224886015,US
+3224884480,3224886015,US
3224886016,3224886271,AU
3224886272,3224886527,JP
3224886528,3224887295,US
@@ -96673,7 +111291,11 @@
3224899072,3224899327,AT
3224899328,3224908543,US
3224908544,3224908799,CA
-3224908800,3224933887,US
+3224908800,3224921087,US
+3224921088,3224921343,FI
+3224921344,3224928255,US
+3224928256,3224928511,FI
+3224928512,3224933887,US
3224933888,3224934143,DE
3224934144,3224957951,US
3224957952,3224958207,CA
@@ -96690,12 +111312,10 @@
3225057536,3225057791,CA
3225057792,3225060607,US
3225060608,3225061631,AU
-3225061632,3225062399,US
+3225061888,3225062399,US
3225062400,3225062911,VC
3225062912,3225063423,LC
-3225063424,3225076223,US
-3225076224,3225076479,CA
-3225076480,3225076991,US
+3225063424,3225076991,US
3225076992,3225077247,SE
3225077248,3225081087,US
3225081088,3225081343,CA
@@ -96808,11 +111428,10 @@
3225640448,3225640703,GB
3225640704,3225641983,US
3225641984,3225643263,GB
-3225643264,3225643775,CA
-3225643776,3225650943,US
+3225643264,3225650943,US
3225650944,3225651199,GB
3225651200,3225657343,US
-3225658368,3225658879,US
+3225658368,3225659135,US
3225659136,3225659391,DE
3225659648,3225659903,US
3225659904,3225660159,DE
@@ -96824,7 +111443,7 @@
3225672448,3225672703,US
3225672704,3225673215,NL
3225673216,3225673471,CA
-3225673472,3225673727,IE
+3225673472,3225673727,GB
3225673728,3225679871,US
3225679872,3225680127,AU
3225680128,3225680383,GR
@@ -96919,7 +111538,9 @@
3225847552,3225847807,AU
3225847808,3225848063,IT
3225848064,3225848831,US
-3225848832,3225853951,DE
+3225848832,3225849855,DE
+3225849856,3225850111,US
+3225850112,3225853951,DE
3225853952,3225857023,US
3225857024,3225857279,CA
3225857280,3225857535,US
@@ -96929,9 +111550,7 @@
3225858560,3225858815,US
3225858816,3225859583,JP
3225860096,3225862143,US
-3225864192,3225864447,US
-3225864448,3225864703,ZA
-3225864704,3225868287,US
+3225864192,3225868287,US
3225868288,3225868543,AU
3225868544,3225869055,US
3225869056,3225869311,AU
@@ -96953,7 +111572,9 @@
3225882880,3225883391,DE
3225883392,3225884927,SE
3225884928,3225885183,NL
-3225885184,3225886719,SE
+3225885184,3225885439,IT
+3225885440,3225885695,AT
+3225885696,3225886719,SE
3225886720,3225886975,NO
3225886976,3225887231,SE
3225887232,3225887487,DK
@@ -96992,17 +111613,29 @@
3225924096,3225929983,SE
3225929984,3225930239,US
3225930240,3225930495,FR
-3225930496,3225932799,SE
+3225930496,3225932543,SE
+3225932544,3225932799,IM
3225932800,3225933055,IT
-3225933056,3225935359,SE
+3225933056,3225933311,ES
+3225933312,3225934335,SE
+3225934336,3225934591,IS
+3225934592,3225935359,SE
3225935360,3225935615,US
-3225935616,3225937407,SE
+3225935616,3225936639,SE
+3225936640,3225936895,US
+3225936896,3225937407,SE
3225937408,3225937663,US
-3225937664,3225938431,SE
+3225937664,3225938175,SE
+3225938176,3225938431,CH
3225938432,3225938687,US
-3225938688,3225941247,SE
+3225938688,3225940991,SE
+3225940992,3225941247,SI
3225941248,3225941503,IT
-3225941504,3225944063,SE
+3225941504,3225941759,SE
+3225941760,3225942015,AT
+3225942016,3225942271,SE
+3225942272,3225942527,BE
+3225942528,3225944063,SE
3225944064,3225944831,US
3225944832,3226008831,TW
3226008832,3226010879,US
@@ -97040,7 +111673,9 @@
3226156800,3226157567,CA
3226157568,3226157823,US
3226157824,3226167807,CA
-3226167808,3226168063,US
+3226167808,3226167923,US
+3226167924,3226167927,DE
+3226167928,3226168063,US
3226168064,3226175231,CA
3226175232,3226175743,US
3226176000,3226177535,CA
@@ -97093,14 +111728,18 @@
3226333824,3226333951,NL
3226333952,3226335231,US
3226335232,3226335487,RO
-3226335488,3226376703,US
+3226335488,3226365439,US
+3226365440,3226365951,DE
+3226365952,3226374143,US
+3226374144,3226375167,DE
+3226375168,3226376703,US
3226376704,3226376959,AT
3226376960,3226384639,US
3226384640,3226385407,BE
3226385408,3226397695,US
3226397696,3226398719,DE
3226398720,3226473471,US
-3226473472,3226473983,NL
+3226473472,3226473983,PT
3226473984,3226474495,US
3226474496,3226474751,CL
3226474752,3226476287,US
@@ -97148,7 +111787,8 @@
3226582016,3226582271,GB
3226582272,3226583551,US
3226583552,3226583807,SE
-3226583808,3226591231,US
+3226583808,3226590207,US
+3226590208,3226591231,NL
3226591232,3226592255,CA
3226592256,3226592767,US
3226592768,3226593023,DE
@@ -97161,7 +111801,7 @@
3226629632,3226630399,US
3226630400,3226630655,GB
3226630656,3226631167,US
-3226631168,3226631423,CH
+3226631168,3226631423,SE
3226631424,3226631935,US
3226631936,3226632191,PT
3226632192,3226633215,CA
@@ -97194,7 +111834,6 @@
3226695680,3226695935,US
3226695936,3226696191,CA
3226696448,3226696703,AU
-3226696704,3226697727,US
3226697728,3226701823,CA
3226701824,3226705919,US
3226705920,3226706175,FR
@@ -97246,12 +111885,18 @@
3226753024,3226753279,US
3226753280,3226753535,AU
3226753536,3226753791,SI
-3226753792,3226754303,HR
-3226754304,3226756095,SI
+3226753792,3226754815,HR
+3226754816,3226755071,SI
+3226755072,3226755327,HR
+3226755328,3226755583,SI
+3226755584,3226755839,HR
+3226755840,3226756095,SI
3226756096,3226756351,US
3226756352,3226757375,SI
3226757376,3226757887,HR
-3226757888,3226758655,SI
+3226757888,3226758143,SI
+3226758144,3226758399,HR
+3226758400,3226758655,SI
3226758656,3226763007,US
3226763008,3226770687,IT
3226770688,3226772991,US
@@ -97363,9 +112008,7 @@
3227056640,3227057919,PT
3227057920,3227058175,US
3227058176,3227123711,FI
-3227123712,3227217151,US
-3227217152,3227217407,JP
-3227217408,3227225087,US
+3227123712,3227225087,US
3227225088,3227225599,LU
3227225600,3227234559,US
3227234560,3227234815,PT
@@ -97432,13 +112075,15 @@
3227318272,3227320319,JP
3227320320,3227362047,FR
3227362048,3227362303,US
-3227362304,3227362559,GB
-3227362560,3227385855,FR
+3227362304,3227363327,GB
+3227363328,3227385855,FR
3227385856,3227391999,US
3227392000,3227392255,PT
3227392256,3227393023,US
3227393024,3227393279,AT
-3227393280,3227396351,US
+3227393280,3227394559,US
+3227394560,3227394815,IN
+3227394816,3227396351,US
3227396352,3227396607,AU
3227396608,3227398399,US
3227398400,3227398655,CA
@@ -97453,7 +112098,9 @@
3227403520,3227405311,US
3227405312,3227405567,DE
3227406080,3227414271,US
-3227414272,3227416063,GB
+3227414272,3227415551,GB
+3227415552,3227415807,US
+3227415808,3227416063,GB
3227416064,3227417087,US
3227417088,3227417343,BN
3227417344,3227418111,US
@@ -97531,16 +112178,21 @@
3227468288,3227468799,CA
3227468800,3227484159,US
3227484160,3227517183,CA
-3227517184,3227521279,ZA
+3227517184,3227518975,ZA
+3227518976,3227519231,MU
+3227519232,3227521279,ZA
3227521280,3227521791,US
3227521792,3227522047,ZA
3227522048,3227522815,MU
3227522816,3227523071,US
-3227523072,3227525119,ZA
+3227523072,3227524095,MU
+3227524096,3227525119,ZA
3227525120,3227525375,MU
3227525376,3227526143,ZA
3227526144,3227526399,US
-3227526400,3227527423,ZA
+3227526400,3227526655,ZA
+3227526656,3227526911,MU
+3227526912,3227527423,ZA
3227527424,3227527935,US
3227527936,3227528191,MU
3227528192,3227528447,US
@@ -97559,9 +112211,7 @@
3227537152,3227539199,ZA
3227539200,3227540735,MU
3227540736,3227540991,ZA
-3227540992,3227541503,MU
-3227541504,3227541759,ZA
-3227541760,3227543295,MU
+3227540992,3227543295,MU
3227543296,3227543551,US
3227543552,3227544831,ZA
3227544832,3227545087,MU
@@ -97581,7 +112231,8 @@
3227559168,3227559423,GB
3227559424,3227559935,ZA
3227559936,3227562239,US
-3227562240,3227566079,ZA
+3227562240,3227562495,MU
+3227562496,3227566079,ZA
3227566080,3227566335,US
3227566336,3227566847,MU
3227566848,3227568127,ZA
@@ -97598,14 +112249,22 @@
3227582208,3227638271,US
3227638272,3227638527,CA
3227638528,3227647999,US
-3227648000,3227678719,FI
+3227648000,3227659775,FI
+3227659776,3227660031,JP
+3227660032,3227660543,FI
+3227660544,3227660799,EE
+3227660800,3227678719,FI
3227678720,3227680767,LU
3227680768,3227713535,FI
3227713536,3227722521,CA
3227722522,3227722522,US
3227722523,3227724031,CA
3227724032,3227724287,US
-3227724288,3227738367,CA
+3227724288,3227733911,CA
+3227733912,3227733919,BR
+3227733920,3227734399,CA
+3227734400,3227734527,US
+3227734528,3227738367,CA
3227738368,3227738623,US
3227738624,3227738879,CA
3227738880,3227739135,US
@@ -97632,9 +112291,7 @@
3227744120,3227744123,US
3227744124,3227744167,CA
3227744168,3227744171,US
-3227744172,3227744303,CA
-3227744304,3227744311,US
-3227744312,3227744827,CA
+3227744172,3227744827,CA
3227744828,3227744831,US
3227744832,3227744911,CA
3227744912,3227744915,US
@@ -97653,7 +112310,9 @@
3227746816,3227747071,BR
3227747072,3227748035,CA
3227748036,3227748039,US
-3227748040,3227749783,CA
+3227748040,3227748655,CA
+3227748656,3227748663,US
+3227748664,3227749783,CA
3227749784,3227749787,US
3227749788,3227749839,CA
3227749840,3227749855,BZ
@@ -97691,9 +112350,7 @@
3227764376,3227764387,BZ
3227764388,3227765247,CA
3227765248,3227765759,US
-3227765760,3227766095,CA
-3227766096,3227766099,US
-3227766100,3227766343,CA
+3227765760,3227766343,CA
3227766344,3227766347,US
3227766348,3227767295,CA
3227767296,3227767311,US
@@ -97709,13 +112366,9 @@
3227770964,3227770967,US
3227770968,3227771263,CA
3227771264,3227771279,US
-3227771280,3227771347,CA
-3227771348,3227771351,US
-3227771352,3227771619,CA
+3227771280,3227771619,CA
3227771620,3227771623,US
-3227771624,3227772707,CA
-3227772708,3227772711,US
-3227772712,3227774751,CA
+3227771624,3227774751,CA
3227774752,3227774783,US
3227774784,3227775059,CA
3227775060,3227775063,US
@@ -97746,7 +112399,7 @@
3227778140,3227779071,CA
3227779072,3227779327,US
3227779328,3227779583,ZA
-3227779584,3227779839,AU
+3227779584,3227779839,KR
3227779840,3227783679,US
3227783680,3227783935,FR
3227783936,3227784703,US
@@ -97771,7 +112424,9 @@
3227804416,3227804671,GB
3227804672,3227804927,US
3227804928,3227805183,CA
-3227805184,3227812543,GB
+3227805184,3227806975,GB
+3227806976,3227807039,SG
+3227807040,3227812543,GB
3227812544,3227812575,FI
3227812576,3227813375,GB
3227813376,3227813631,US
@@ -97823,7 +112478,8 @@
3227863296,3227863807,US
3227863808,3227864063,NL
3227864064,3227865343,US
-3227865344,3227866367,NL
+3227865344,3227866111,NL
+3227866112,3227866367,HK
3227866368,3227866623,US
3227866624,3227867647,NL
3227867648,3227867903,BR
@@ -97869,7 +112525,9 @@
3227912960,3227913215,CA
3227913216,3227914495,US
3227914496,3227914751,AT
-3227914752,3227931135,FI
+3227914752,3227918591,FI
+3227918592,3227918847,US
+3227918848,3227931135,FI
3227931136,3227931391,US
3227931392,3227931647,AU
3227931648,3227931903,PE
@@ -97881,10 +112539,13 @@
3227934464,3227934719,CH
3227934720,3227947519,US
3227947520,3227955711,DE
-3227955712,3227964927,US
+3227955712,3227962367,US
+3227962368,3227963391,CN
+3227963392,3227964927,US
3227964928,3227965183,NL
3227965184,3227967487,US
-3227967488,3227967999,NL
+3227967488,3227967743,FR
+3227967744,3227967999,PL
3227968000,3227968255,US
3227968256,3227968767,GB
3227968768,3227969023,RU
@@ -97962,9 +112623,7 @@
3228100608,3228101119,JP
3228101120,3228102143,US
3228102144,3228102399,GB
-3228102400,3228103423,US
-3228103424,3228103679,CA
-3228103680,3228103935,US
+3228102400,3228103935,US
3228103936,3228104191,FR
3228104192,3228104703,JP
3228104704,3228104959,DK
@@ -97973,14 +112632,14 @@
3228105728,3228109311,US
3228109312,3228109567,AU
3228109568,3228125951,US
-3228125952,3228126207,RU
+3228125952,3228126207,DE
3228126208,3228133375,US
3228133376,3228134655,CA
3228134656,3228150271,US
3228150272,3228150527,FI
3228150528,3228172287,US
3228172288,3228237823,IT
-3228237824,3228238079,US
+3228237824,3228238335,US
3228238336,3228238591,GB
3228238592,3228238847,US
3228238848,3228239359,GB
@@ -98029,8 +112688,7 @@
3228309248,3228311039,DE
3228311296,3228311551,DE
3228311808,3228312063,DE
-3228312320,3228315647,DE
-3228315648,3228316159,NL
+3228312320,3228316159,DE
3228316160,3228316415,US
3228316416,3228327167,DE
3228327168,3228328703,US
@@ -98048,7 +112706,21 @@
3228335616,3228335871,CZ
3228335872,3228336127,US
3228336128,3228336639,CZ
-3228336640,3228348159,SK
+3228336640,3228337663,SK
+3228337664,3228338431,CZ
+3228338432,3228340735,SK
+3228340736,3228341247,CZ
+3228341248,3228341759,SK
+3228341760,3228342271,CZ
+3228342272,3228342783,SK
+3228342784,3228343039,CZ
+3228343040,3228343295,SK
+3228343296,3228343551,CZ
+3228343552,3228344063,SK
+3228344064,3228344575,CZ
+3228344576,3228347135,SK
+3228347136,3228347391,CZ
+3228347392,3228348159,SK
3228348160,3228353279,US
3228353280,3228358399,SE
3228358400,3228362239,US
@@ -98075,7 +112747,9 @@
3228399872,3228400383,DE
3228400640,3228403711,DE
3228403968,3228404223,DE
-3228404736,3228405503,FR
+3228404736,3228404919,FR
+3228404920,3228404920,GB
+3228404921,3228405503,FR
3228405504,3228405759,DE
3228405760,3228406015,FR
3228406016,3228406271,US
@@ -98122,9 +112796,9 @@
3228532480,3228532735,DE
3228532736,3228533759,US
3228533760,3228534015,CA
-3228534016,3228538127,US
-3228538128,3228538135,GB
-3228538136,3228539903,US
+3228534016,3228539799,US
+3228539800,3228539807,AE
+3228539808,3228539903,US
3228539904,3228540927,BR
3228540928,3228558591,US
3228558592,3228559103,BR
@@ -98139,7 +112813,8 @@
3228578048,3228578303,GB
3228578304,3228581119,US
3228581120,3228581375,AT
-3228581376,3228583423,US
+3228581376,3228582911,US
+3228583168,3228583423,US
3228583424,3228585983,ES
3228585984,3228590591,US
3228590592,3228590847,GB
@@ -98160,12 +112835,16 @@
3228628992,3228630527,US
3228630528,3228630783,NL
3228630784,3228631039,US
-3228631040,3228696575,NL
+3228631040,3228647423,NL
+3228647424,3228647679,IT
+3228647680,3228696575,NL
3228696576,3228714764,IL
3228714765,3228714765,CA
-3228714766,3228831743,IL
-3228831744,3228833791,PS
-3228833792,3229024255,IL
+3228714766,3228830719,IL
+3228830720,3228833791,PS
+3228833792,3228965375,IL
+3228965376,3228965631,US
+3228965632,3229024255,IL
3229024256,3229089791,US
3229089792,3229090047,CA
3229090048,3229092095,US
@@ -98176,9 +112855,11 @@
3229155328,3229155583,GB
3229155584,3229155839,SE
3229155840,3229156095,ES
-3229156096,3229161000,SE
-3229161001,3229161001,DE
-3229161002,3229161727,SE
+3229156096,3229159423,SE
+3229159424,3229159935,NL
+3229159936,3229160959,SE
+3229160960,3229161471,DE
+3229161472,3229161727,SE
3229161728,3229161983,GB
3229161984,3229163263,SE
3229163264,3229163519,ES
@@ -98186,7 +112867,9 @@
3229164288,3229164543,DK
3229164544,3229165055,GB
3229165056,3229165311,NO
-3229165312,3229171711,SE
+3229165312,3229167103,SE
+3229167104,3229167615,IT
+3229167616,3229171711,SE
3229171712,3229172223,GB
3229172224,3229172479,DE
3229172480,3229172735,SE
@@ -98197,7 +112880,9 @@
3229176320,3229176575,US
3229176576,3229182463,SE
3229182464,3229182975,GB
-3229182976,3229186559,SE
+3229182976,3229183999,SE
+3229184000,3229184511,GB
+3229184512,3229186559,SE
3229186560,3229186815,IT
3229186816,3229187327,ES
3229187328,3229187583,IT
@@ -98208,13 +112893,16 @@
3229194240,3229194495,FR
3229194496,3229195007,SE
3229195008,3229195263,NL
-3229195264,3229197823,SE
+3229195264,3229196287,DE
+3229196288,3229196799,SE
+3229196800,3229197311,NL
+3229197312,3229197823,SE
3229197824,3229198335,GB
3229198336,3229198591,US
3229198592,3229198847,ES
-3229198848,3229198949,SE
-3229198950,3229198950,CH
-3229198951,3229200383,SE
+3229198848,3229199103,CH
+3229199104,3229199359,IT
+3229199360,3229200383,SE
3229200384,3229200895,GB
3229200896,3229201151,DE
3229201152,3229201663,SE
@@ -98227,7 +112915,9 @@
3229204224,3229204479,IT
3229204480,3229205503,SE
3229205504,3229206015,GB
-3229206016,3229211647,SE
+3229206016,3229208575,SE
+3229208576,3229209087,NO
+3229209088,3229211647,SE
3229211648,3229211903,IT
3229211904,3229212927,SE
3229212928,3229213183,DE
@@ -98239,7 +112929,12 @@
3229219584,3229219839,DE
3229219840,3229220863,SE
3229220864,3229221119,US
-3229221120,3229254399,GB
+3229221120,3229221375,FR
+3229221376,3229245439,GB
+3229245440,3229246719,US
+3229246720,3229250815,GB
+3229250816,3229251071,US
+3229251072,3229254399,GB
3229254400,3229256959,SG
3229256960,3229258495,GB
3229258496,3229259519,US
@@ -98248,14 +112943,16 @@
3229264896,3229265919,US
3229265920,3229266175,AU
3229266176,3229266943,US
-3229266944,3229267199,AU
+3229266944,3229267199,NZ
3229267200,3229273599,US
3229273600,3229273855,CA
3229273856,3229275647,US
3229275648,3229275903,GB
3229275904,3229276159,US
3229276160,3229276415,IE
-3229276416,3229281023,GB
+3229276416,3229277951,GB
+3229277952,3229278207,IE
+3229278208,3229281023,GB
3229281024,3229281791,US
3229281792,3229283071,PT
3229283072,3229354495,US
@@ -98265,7 +112962,7 @@
3229359360,3229359615,US
3229359616,3229359871,CA
3229359872,3229360127,US
-3229360128,3229360383,AT
+3229360128,3229360383,CH
3229360384,3229361919,US
3229361920,3229362175,BE
3229362176,3229363711,US
@@ -98293,7 +112990,7 @@
3229415168,3229415679,DE
3229415680,3229415935,US
3229415936,3229417471,DE
-3229417472,3229450239,CH
+3229417472,3229450239,US
3229450240,3229483007,DE
3229483008,3229483263,US
3229483264,3229499647,FI
@@ -98336,13 +113033,12 @@
3229838336,3229838591,GB
3229838592,3229838847,CA
3229838848,3229844479,US
-3229844480,3229844735,BE
+3229844480,3229844735,FR
3229844736,3229844991,US
3229844992,3229845247,BL
3229845248,3229845503,US
-3229845504,3229846015,GB
-3229846016,3229846527,CA
-3229847296,3229870335,US
+3229845504,3229846527,GB
+3229846528,3229870335,US
3229870592,3229870847,CA
3229870848,3229874943,US
3229874944,3229875455,AU
@@ -98577,7 +113273,9 @@
3230267136,3230267903,CA
3230267904,3230269695,US
3230269696,3230271743,GB
-3230271744,3230291455,US
+3230271744,3230277631,US
+3230277632,3230281727,DE
+3230281728,3230291455,US
3230291456,3230291711,PT
3230291712,3230295039,US
3230295040,3230295295,AU
@@ -98637,7 +113335,9 @@
3230384384,3230387455,CA
3230387456,3230387711,US
3230387712,3230400255,CA
-3230400256,3230402559,US
+3230400256,3230400767,US
+3230400768,3230401023,BR
+3230401536,3230402559,US
3230402560,3230404607,BR
3230404608,3230405631,AR
3230405632,3230406655,CL
@@ -98696,8 +113396,9 @@
3230528512,3230529535,MX
3230529536,3230531583,BR
3230531584,3230662655,ZA
-3230679040,3230681087,BR
-3230681088,3230682623,FR
+3230679040,3230681599,BR
+3230681600,3230681855,FR
+3230682112,3230682623,FR
3230682624,3230683135,PK
3230683136,3230686207,BD
3230686208,3230687231,ID
@@ -98707,7 +113408,8 @@
3230695424,3230728191,CN
3230777344,3230784511,BR
3230784512,3230785535,MX
-3230785536,3230823679,US
+3230785536,3230786559,PL
+3230787328,3230823679,US
3230823680,3230823935,DK
3230823936,3230824191,US
3230824192,3230824447,FR
@@ -98744,7 +113446,9 @@
3230844928,3230845183,AU
3230845184,3230845951,US
3230845952,3230846207,CZ
-3230846208,3230849535,US
+3230846208,3230846975,US
+3230846976,3230847231,DE
+3230847232,3230849535,US
3230849536,3230850047,NZ
3230850048,3230851839,US
3230851840,3230852095,NO
@@ -98767,7 +113471,9 @@
3230868480,3230868735,GB
3230868736,3230870015,US
3230870016,3230870271,PL
-3230870272,3230878719,US
+3230870272,3230873343,US
+3230873344,3230873599,HK
+3230873600,3230878719,US
3230878720,3230879487,PT
3230879488,3230879743,FR
3230879744,3230895359,US
@@ -98792,7 +113498,8 @@
3230915584,3230917631,US
3230917632,3230917887,GB
3230917888,3230918399,US
-3230918400,3230918655,LC
+3230918400,3230918527,VC
+3230918528,3230918655,GD
3230918656,3230919423,US
3230919424,3230919679,AU
3230919680,3230922239,US
@@ -98841,7 +113548,7 @@
3230996480,3230997247,US
3230997248,3230997503,AT
3230997504,3230997759,US
-3230997760,3230999039,SE
+3230997760,3230999039,NL
3230999040,3230999295,US
3230999296,3230999551,NL
3230999552,3230999807,AU
@@ -98894,7 +113601,9 @@
3231049728,3231049983,AT
3231049984,3231051263,US
3231051264,3231051519,GB
-3231051776,3231070463,US
+3231051776,3231056895,US
+3231056896,3231057919,CA
+3231057920,3231070463,US
3231070720,3231074559,SE
3231074560,3231075071,US
3231075072,3231075583,NL
@@ -99045,9 +113754,7 @@
3231237120,3231241215,US
3231241216,3231241471,AU
3231241472,3231241727,CA
-3231241728,3231244287,US
-3231244288,3231244543,CA
-3231244544,3231248639,US
+3231241728,3231248639,US
3231248640,3231248895,GB
3231248896,3231249407,US
3231249408,3231249663,GB
@@ -99061,7 +113768,7 @@
3231253504,3231255551,US
3231255808,3231256063,PT
3231256064,3231257087,US
-3231257088,3231257599,NL
+3231257088,3231257599,HU
3231257600,3231275007,US
3231275008,3231275263,BR
3231275264,3231275519,CH
@@ -99114,8 +113821,8 @@
3231324160,3231324671,JP
3231324672,3231325183,US
3231325184,3231326207,CA
-3231326208,3231352831,US
-3231352832,3231358975,CA
+3231326208,3231353087,US
+3231353088,3231358975,CA
3231358976,3231369215,US
3231369216,3231369471,TW
3231369472,3231383551,US
@@ -99131,13 +113838,11 @@
3231408872,3231408879,AU
3231408880,3231411055,US
3231411056,3231411063,AU
-3231411064,3231411855,US
-3231411856,3231411871,AU
-3231411872,3231423999,US
+3231411064,3231423999,US
3231424000,3231424511,PR
-3231424512,3231475199,US
-3231475200,3231475455,PL
-3231475456,3231477759,US
+3231424512,3231455521,US
+3231455522,3231455522,DE
+3231455523,3231477759,US
3231477760,3231478015,CA
3231478016,3231482879,US
3231482880,3231483135,BE
@@ -99169,7 +113874,10 @@
3231506688,3231506943,AU
3231506944,3231507199,US
3231507200,3231507455,BE
-3231507456,3231510271,US
+3231507456,3231510015,US
+3231510016,3231510264,CA
+3231510265,3231510265,US
+3231510266,3231510271,CA
3231510272,3231510527,GB
3231510528,3231512575,US
3231512576,3231512831,LU
@@ -99194,9 +113902,9 @@
3231529056,3231529071,US
3231529072,3231529191,CA
3231529192,3231529199,US
-3231529200,3231529215,CA
-3231529216,3231529471,US
-3231529472,3231529679,CA
+3231529200,3231529435,CA
+3231529436,3231529439,US
+3231529440,3231529679,CA
3231529680,3231529687,US
3231529688,3231529727,CA
3231529728,3231529983,US
@@ -99218,9 +113926,11 @@
3231553792,3231554047,CH
3231554048,3231555327,DE
3231555328,3231555583,CA
-3231555584,3231556607,US
+3231555584,3231556095,US
+3231556352,3231556607,US
3231556608,3231556863,CA
-3231556864,3231557887,AT
+3231556864,3231557631,US
+3231557632,3231557887,AT
3231557888,3231558399,GB
3231558400,3231558655,DE
3231558656,3231558911,GB
@@ -99241,7 +113951,9 @@
3231588864,3231589119,GB
3231589120,3231591679,US
3231591680,3231591935,AU
-3231591936,3231596031,US
+3231591936,3231593983,US
+3231593984,3231594239,GB
+3231594240,3231596031,US
3231596032,3231596543,PR
3231596544,3231634943,US
3231634944,3231635455,CA
@@ -99327,7 +114039,8 @@
3231743744,3231743999,US
3231744000,3231744255,BR
3231744256,3231747583,US
-3231747584,3231748095,NL
+3231747584,3231747839,NL
+3231747840,3231748095,GB
3231748096,3231750143,US
3231750144,3231750399,NL
3231750400,3231750911,US
@@ -99351,7 +114064,7 @@
3231763712,3231763967,AU
3231763968,3231768575,US
3231768576,3231768831,RU
-3231768832,3231769087,NL
+3231768832,3231769087,NO
3231769344,3231769855,US
3231769856,3231770111,AU
3231770112,3231770367,US
@@ -99406,14 +114119,16 @@
3231878144,3231879167,UA
3231879168,3231881215,PL
3231881216,3231882239,UA
-3231882240,3231884287,RU
+3231882240,3231883263,KZ
+3231883264,3231884287,RU
3231884288,3231885311,PL
3231885312,3231886335,DE
3231886336,3231888383,PL
3231888384,3231889407,RU
3231889408,3231890431,RO
3231890432,3231892479,RU
-3231893504,3231894527,UA
+3231892480,3231894527,UA
+3231894528,3231895551,CH
3231895552,3231896575,UA
3231896576,3231897599,RU
3231897600,3231898623,IE
@@ -99462,13 +114177,15 @@
3232082688,3232083199,GB
3232083200,3232083455,SE
3232083456,3232083711,DE
-3232083712,3232086527,SE
-3232086528,3232087039,GB
+3232083712,3232086271,SE
+3232086272,3232087039,GB
3232087040,3232089087,SE
3232089088,3232089343,ES
3232089344,3232090367,SE
3232090368,3232090623,IT
-3232090624,3232096767,SE
+3232090624,3232095231,SE
+3232095232,3232096255,GB
+3232096256,3232096767,SE
3232096768,3232097023,DK
3232097024,3232098047,SE
3232098048,3232098303,FR
@@ -99478,7 +114195,7 @@
3232101120,3232103167,SE
3232103168,3232103423,FR
3232103424,3232104447,SE
-3232104448,3232106495,DE
+3232104448,3232107519,DE
3232107520,3232108543,RU
3232108544,3232112639,DE
3232116736,3232129023,DE
@@ -99504,9 +114221,11 @@
3232156069,3232156069,GI
3232156070,3232156159,DE
3232156160,3232156671,PL
+3232156672,3232157695,FR
3232157696,3232159743,DE
-3232159744,3232160767,PL
+3232159744,3232161791,PL
3232163840,3232165887,RU
+3232167936,3232168959,GB
3232169216,3232169727,DE
3232169728,3232169983,PL
3232169984,3232170240,IT
@@ -99532,7 +114251,7 @@
3232557568,3232559103,JP
3232559104,3232559359,US
3232559360,3232560127,JP
-3232560896,3232561663,US
+3232560128,3232561663,US
3232561664,3232561919,CA
3232561920,3232562431,US
3232562432,3232562687,LU
@@ -99560,9 +114279,13 @@
3232704512,3232705535,GB
3232705536,3232706559,FI
3232706560,3232716799,US
-3232716800,3232724151,CA
+3232716800,3232722687,CA
+3232722688,3232722695,US
+3232722696,3232724151,CA
3232724152,3232724159,US
-3232724160,3232727039,CA
+3232724160,3232725271,CA
+3232725272,3232725279,IN
+3232725280,3232727039,CA
3232727040,3232759807,US
3232759808,3232765951,SE
3232765952,3232766207,NO
@@ -99583,9 +114306,7 @@
3232804352,3232804607,DK
3232804608,3232804863,IT
3232804864,3232811007,SE
-3232811008,3232811263,GB
-3232811264,3232811519,SE
-3232811520,3232812543,GB
+3232811008,3232812543,GB
3232812544,3232812799,SE
3232812800,3232813055,ES
3232813056,3232820223,SE
@@ -99600,32 +114321,38 @@
3233448448,3233448463,US
3233448464,3233448479,CA
3233448480,3233448495,US
-3233448496,3233448591,CA
-3233448592,3233448607,US
-3233448608,3233448823,CA
+3233448496,3233448527,CA
+3233448528,3233448543,US
+3233448544,3233448575,CA
+3233448576,3233448607,US
+3233448608,3233448655,CA
+3233448656,3233448671,US
+3233448672,3233448823,CA
3233448824,3233448831,US
3233448832,3233448863,CA
3233448864,3233448871,US
3233448872,3233448879,FI
-3233448880,3233448903,CA
-3233448904,3233448911,US
-3233448912,3233449095,CA
+3233448880,3233448895,US
+3233448896,3233448903,CA
+3233448904,3233448927,US
+3233448928,3233449071,CA
+3233449072,3233449079,US
+3233449080,3233449095,CA
3233449096,3233449103,GB
3233449104,3233449199,CA
3233449200,3233449207,US
-3233449208,3233449215,GB
-3233449216,3233449311,CA
+3233449208,3233449311,CA
3233449312,3233449319,RO
3233449320,3233449359,CA
3233449360,3233449367,US
-3233449368,3233449535,CA
-3233449536,3233449567,US
-3233449568,3233449615,CA
-3233449616,3233449631,US
+3233449368,3233449519,CA
+3233449520,3233449567,US
+3233449568,3233449583,CA
+3233449584,3233449631,US
3233449632,3233449647,CA
3233449648,3233449663,US
-3233449664,3233449759,CA
-3233449760,3233449775,US
+3233449664,3233449727,CA
+3233449728,3233449775,US
3233449776,3233449823,CA
3233449824,3233449839,US
3233449840,3233450047,CA
@@ -99634,82 +114361,94 @@
3233450128,3233450135,US
3233450136,3233450199,CA
3233450200,3233450207,GB
-3233450208,3233450783,CA
+3233450208,3233450775,CA
+3233450776,3233450783,SE
3233450784,3233450815,US
-3233450816,3233450863,CA
-3233450864,3233450887,US
+3233450816,3233450847,CA
+3233450848,3233450887,US
3233450888,3233450895,CA
-3233450896,3233450911,US
-3233450912,3233450927,CA
-3233450928,3233450959,US
-3233450960,3233451007,CA
-3233451008,3233451263,US
+3233450896,3233450959,US
+3233450960,3233450991,CA
+3233450992,3233451263,US
3233451264,3233451519,CA
-3233451520,3233451775,GB
-3233451776,3233451903,CA
-3233451904,3233451951,US
+3233451520,3233451647,GB
+3233451648,3233451711,US
+3233451712,3233451751,GB
+3233451752,3233451807,US
+3233451808,3233451823,CA
+3233451824,3233451831,US
+3233451832,3233451879,CA
+3233451880,3233451951,US
3233451952,3233452031,CA
3233452032,3233452287,US
3233452288,3233452303,CA
3233452304,3233452319,US
-3233452320,3233452383,CA
+3233452320,3233452335,CA
+3233452336,3233452351,US
+3233452352,3233452383,CA
3233452384,3233452415,US
-3233452416,3233452519,CA
-3233452520,3233452527,US
+3233452416,3233452487,CA
+3233452488,3233452495,US
+3233452496,3233452511,CA
+3233452512,3233452527,US
3233452528,3233452543,CA
-3233452544,3233452831,US
-3233452832,3233452847,CA
-3233452848,3233452879,US
+3233452544,3233452879,US
3233452880,3233452959,CA
-3233452960,3233453007,US
-3233453008,3233453023,CA
-3233453024,3233453055,US
-3233453056,3233453183,CA
-3233453184,3233453199,US
+3233452960,3233453199,US
3233453200,3233453247,CA
-3233453248,3233453263,US
-3233453264,3233453271,CA
-3233453272,3233453279,US
+3233453248,3233453279,US
3233453280,3233453295,CA
3233453296,3233453311,US
3233453312,3233453455,CA
3233453456,3233453471,US
3233453472,3233453567,CA
-3233453568,3233453631,IT
-3233453632,3233454079,US
+3233453568,3233453623,IT
+3233453624,3233454079,US
3233454080,3233454303,CA
3233454304,3233454335,US
3233454336,3233454399,CA
-3233454400,3233454415,US
-3233454416,3233454423,CA
-3233454424,3233454431,US
-3233454432,3233454511,CA
+3233454400,3233454447,US
+3233454448,3233454511,CA
3233454512,3233454527,US
3233454528,3233454559,CA
3233454560,3233454575,US
3233454576,3233454591,CA
3233454592,3233454599,SE
-3233454600,3233455039,CA
+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,3233455327,CA
+3233455072,3233455087,CA
+3233455088,3233455103,US
+3233455104,3233455327,CA
3233455328,3233455335,US
-3233455336,3233455439,CA
-3233455440,3233455447,US
-3233455448,3233455471,CA
-3233455472,3233455487,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,3233455695,CA
-3233455696,3233455711,US
+3233455552,3233455663,CA
+3233455664,3233455711,US
3233455712,3233455743,CA
3233455744,3233455807,US
-3233455808,3233455855,CA
-3233455856,3233455871,US
+3233455808,3233455839,CA
+3233455840,3233455871,US
3233455872,3233455935,CA
3233455936,3233455967,US
-3233455968,3233456015,CA
-3233456016,3233456031,US
-3233456032,3233456063,CA
+3233455968,3233455999,CA
+3233456000,3233456047,US
+3233456048,3233456063,CA
3233456064,3233456111,US
3233456112,3233456119,CA
3233456120,3233456191,US
@@ -99721,20 +114460,16 @@
3233456416,3233456639,US
3233456640,3233456655,CA
3233456656,3233456671,US
-3233456672,3233456799,CA
-3233456800,3233456847,US
+3233456672,3233456791,CA
+3233456792,3233456847,US
3233456848,3233456863,CA
3233456864,3233456895,US
3233456896,3233456943,CA
-3233456944,3233456959,US
-3233456960,3233456975,CA
-3233456976,3233456999,US
+3233456944,3233456999,US
3233457000,3233457023,CA
3233457024,3233457039,US
3233457040,3233457087,CA
-3233457088,3233457471,US
-3233457472,3233457519,CA
-3233457520,3233457535,US
+3233457088,3233457535,US
3233457536,3233457631,CA
3233457632,3233457647,US
3233457648,3233457663,CA
@@ -99742,43 +114477,35 @@
3233457672,3233457735,CA
3233457736,3233457775,US
3233457776,3233457831,CA
-3233457832,3233457871,US
-3233457872,3233457887,CA
-3233457888,3233457895,US
+3233457832,3233457895,US
3233457896,3233457919,CA
-3233457920,3233458191,US
-3233458192,3233458223,CA
+3233457920,3233458207,US
+3233458208,3233458223,CA
3233458224,3233458271,US
3233458272,3233458303,CA
-3233458304,3233458351,US
-3233458352,3233458359,CA
-3233458360,3233458399,US
-3233458400,3233458431,CA
-3233458432,3233458527,US
-3233458528,3233458591,CA
+3233458304,3233458527,US
+3233458528,3233458535,CA
+3233458536,3233458543,US
+3233458544,3233458591,CA
3233458592,3233458607,US
3233458608,3233458687,CA
3233458688,3233458943,US
3233458944,3233458959,BG
-3233458960,3233459455,US
-3233459456,3233459471,CA
-3233459472,3233459631,US
-3233459632,3233459679,CA
-3233459680,3233459695,US
+3233458960,3233459631,US
+3233459632,3233459647,CA
+3233459648,3233459695,US
3233459696,3233459711,CA
-3233459712,3233459727,US
-3233459728,3233459775,CA
-3233459776,3233459807,US
-3233459808,3233459823,CA
-3233459824,3233459839,US
+3233459712,3233459839,US
3233459840,3233459967,CA
3233459968,3233459999,US
3233460000,3233460015,CA
3233460016,3233460047,US
-3233460048,3233460223,CA
+3233460048,3233460119,CA
+3233460120,3233460159,US
+3233460160,3233460223,CA
3233460224,3233460479,US
-3233460480,3233460495,CA
-3233460496,3233460511,US
+3233460480,3233460487,CA
+3233460488,3233460511,US
3233460512,3233460519,SE
3233460520,3233460527,CA
3233460528,3233460535,US
@@ -99786,25 +114513,29 @@
3233460672,3233461279,US
3233461280,3233461303,CA
3233461304,3233461319,US
-3233461320,3233461375,CA
+3233461320,3233461343,CA
+3233461344,3233461351,US
+3233461352,3233461375,CA
3233461376,3233461407,US
-3233461408,3233461487,CA
-3233461488,3233461543,US
+3233461408,3233461471,CA
+3233461472,3233461543,US
3233461544,3233461567,CA
3233461568,3233461583,US
3233461584,3233461599,CA
-3233461600,3233461615,US
-3233461616,3233461639,CA
+3233461600,3233461631,US
+3233461632,3233461639,CA
3233461640,3233461679,US
-3233461680,3233461727,CA
+3233461680,3233461687,CA
+3233461688,3233461711,US
+3233461712,3233461727,CA
3233461728,3233461743,US
3233461744,3233461759,CA
-3233461760,3233461823,US
-3233461824,3233461839,CA
-3233461840,3233461855,US
+3233461760,3233461855,US
3233461856,3233461871,CA
3233461872,3233462015,US
-3233462016,3233462127,CA
+3233462016,3233462063,CA
+3233462064,3233462071,US
+3233462072,3233462127,CA
3233462128,3233462143,US
3233462144,3233462527,CA
3233462528,3233462783,US
@@ -99812,7 +114543,9 @@
3233463296,3233463551,US
3233463552,3233463807,CA
3233463808,3233463855,US
-3233463856,3233463919,CA
+3233463856,3233463871,CA
+3233463872,3233463887,US
+3233463888,3233463919,CA
3233463920,3233463999,US
3233464000,3233464063,CA
3233464064,3233484799,US
@@ -99836,6 +114569,7 @@
3233564416,3233564671,NZ
3233564672,3233564927,US
3233564928,3233566719,JP
+3233567232,3233567743,HK
3233567744,3233567999,US
3233568768,3233569023,CA
3233569536,3233569791,US
@@ -99879,7 +114613,8 @@
3233590784,3233591039,PH
3233591040,3233591295,ID
3233591296,3233593599,US
-3233593600,3233594111,AU
+3233593600,3233593855,NZ
+3233593856,3233594111,AU
3233594112,3233594367,RU
3233594368,3233594623,US
3233594624,3233594879,NL
@@ -99986,7 +114721,7 @@
3233726976,3233728767,US
3233728768,3233729279,GB
3233729280,3233729535,US
-3233729536,3233730047,AU
+3233729536,3233730047,SG
3233730048,3233730559,US
3233730560,3233732607,AU
3233732608,3233736959,US
@@ -100032,7 +114767,7 @@
3233786368,3233790207,US
3233790208,3233790463,PR
3233790464,3233790719,CA
-3233790720,3233790975,PR
+3233790720,3233790975,US
3233790976,3233791231,CA
3233791232,3233791487,PR
3233791488,3233793023,US
@@ -100051,9 +114786,19 @@
3233803008,3233803263,CA
3233803264,3233808383,US
3233808384,3233873919,TW
-3233873920,3233939455,US
+3233873920,3233874943,AU
+3233874944,3233903615,US
+3233903616,3233903743,GB
+3233903744,3233903807,US
+3233903808,3233903871,GB
+3233903872,3233917851,US
+3233917852,3233917855,MX
+3233917856,3233921535,US
+3233921536,3233921791,MX
+3233921792,3233936127,US
+3233936128,3233936383,GB
+3233936384,3233939455,US
3233939456,3234004991,FI
-3234004992,3234005247,US
3234005248,3234005503,GB
3234005760,3234006015,CA
3234006016,3234007039,US
@@ -100144,13 +114889,19 @@
3234201344,3234203647,US
3234203648,3234205695,AR
3234205696,3234226175,US
-3234226176,3234226263,CA
+3234226176,3234226207,CA
+3234226208,3234226239,US
+3234226240,3234226263,CA
3234226264,3234226271,US
3234226272,3234226279,CA
3234226280,3234226303,US
-3234226304,3234226711,CA
-3234226712,3234226751,US
-3234226752,3234226847,CA
+3234226304,3234226359,CA
+3234226360,3234226367,US
+3234226368,3234226559,CA
+3234226560,3234226575,US
+3234226576,3234226711,CA
+3234226712,3234226767,US
+3234226768,3234226847,CA
3234226848,3234226863,US
3234226864,3234226879,CA
3234226880,3234226943,US
@@ -100173,8 +114924,8 @@
3234227644,3234227695,CA
3234227696,3234227699,US
3234227700,3234227707,CA
-3234227708,3234227711,US
-3234227712,3234227775,CA
+3234227708,3234227743,US
+3234227744,3234227775,CA
3234227776,3234227807,US
3234227808,3234227839,CA
3234227840,3234227879,US
@@ -100189,9 +114940,7 @@
3234228480,3234228607,CA
3234228608,3234228639,US
3234228640,3234228671,CA
-3234228672,3234228703,US
-3234228704,3234228719,CA
-3234228720,3234228735,US
+3234228672,3234228735,US
3234228736,3234229039,CA
3234229040,3234229047,US
3234229048,3234229063,CA
@@ -100209,8 +114958,10 @@
3234229600,3234229607,CA
3234229608,3234229615,US
3234229616,3234229695,CA
-3234229696,3234229743,US
-3234229744,3234229895,CA
+3234229696,3234229759,US
+3234229760,3234229839,CA
+3234229840,3234229847,US
+3234229848,3234229895,CA
3234229896,3234229903,US
3234229904,3234229911,CA
3234229912,3234229951,US
@@ -100221,49 +114972,56 @@
3234230400,3234230431,US
3234230432,3234230527,CA
3234230528,3234230783,US
-3234230784,3234230927,CA
-3234230928,3234230991,US
-3234230992,3234231007,CA
-3234231008,3234231039,US
-3234231040,3234231055,CA
+3234230784,3234230911,CA
+3234230912,3234230991,US
+3234230992,3234230999,CA
+3234231000,3234231047,US
+3234231048,3234231055,CA
3234231056,3234231063,US
3234231064,3234231087,CA
3234231088,3234231103,US
3234231104,3234231143,CA
-3234231144,3234231151,US
-3234231152,3234231255,CA
+3234231144,3234231159,US
+3234231160,3234231199,CA
+3234231200,3234231215,US
+3234231216,3234231231,CA
+3234231232,3234231247,US
+3234231248,3234231255,CA
3234231256,3234231279,US
-3234231280,3234231807,CA
-3234231808,3234232111,US
-3234232112,3234232127,CA
-3234232128,3234232159,US
+3234231280,3234231287,CA
+3234231288,3234231295,SE
+3234231296,3234231423,CA
+3234231424,3234231551,US
+3234231552,3234231807,CA
+3234231808,3234232159,US
3234232160,3234232247,CA
3234232248,3234232255,US
3234232256,3234232319,CA
3234232320,3234232575,EG
-3234232576,3234233343,US
-3234233344,3234233399,CA
+3234232576,3234233063,US
+3234233064,3234233071,SE
+3234233072,3234233375,US
+3234233376,3234233399,CA
3234233400,3234233407,US
3234233408,3234233471,CA
3234233472,3234233487,US
-3234233488,3234233519,CA
-3234233520,3234233599,US
-3234233600,3234233647,CA
-3234233648,3234233759,US
+3234233488,3234233495,CA
+3234233496,3234233503,SE
+3234233504,3234233599,US
+3234233600,3234233631,CA
+3234233632,3234233759,US
3234233760,3234233791,CA
3234233792,3234233823,US
3234233824,3234233855,CA
-3234233856,3234234127,US
-3234234128,3234234143,CA
-3234234144,3234234199,US
+3234233856,3234234199,US
3234234200,3234234207,CA
3234234208,3234234239,US
3234234240,3234234247,CA
3234234248,3234234271,US
3234234272,3234234287,CA
-3234234288,3234234335,US
-3234234336,3234234367,CA
-3234234368,3234267135,US
+3234234288,3234238463,US
+3234238464,3234239487,MY
+3234239488,3234267135,US
3234267136,3234267391,CA
3234267392,3234268927,US
3234268928,3234269183,SG
@@ -100274,8 +115032,7 @@
3234279424,3234283519,CA
3234283520,3234316287,US
3234316288,3234320383,CA
-3234320384,3234338815,US
-3234338816,3234339071,CN
+3234320384,3234339071,US
3234339072,3234339327,MT
3234339328,3234339583,DE
3234339584,3234339839,PA
@@ -100418,9 +115175,9 @@
3235021568,3235021823,CA
3235021824,3235044375,US
3235044376,3235044383,GB
-3235044384,3235046831,US
-3235046832,3235046847,AF
-3235046848,3235065343,US
+3235044384,3235053311,US
+3235053312,3235053567,HR
+3235053568,3235065343,US
3235065344,3235065855,CA
3235065856,3235068511,US
3235068512,3235068575,IT
@@ -100440,7 +115197,9 @@
3235389440,3235389951,VE
3235389952,3235512319,US
3235512320,3235577855,JP
-3235577856,3235641855,CA
+3235577856,3235633151,CA
+3235633152,3235638271,US
+3235638272,3235641855,CA
3235641856,3235642111,US
3235642112,3235643135,CA
3235643136,3235745791,US
@@ -100466,7 +115225,9 @@
3235844064,3235844095,CA
3235844096,3235856383,US
3235856384,3235872767,BO
-3235872768,3235906303,US
+3235872768,3235877375,US
+3235877376,3235877631,AU
+3235877632,3235906303,US
3235906304,3235906559,CA
3235906560,3235908863,US
3235908864,3235909119,CA
@@ -100552,13 +115313,19 @@
3236146196,3236146199,GB
3236146200,3236147063,US
3236147064,3236147071,FR
-3236147072,3236156959,US
+3236147072,3236149503,US
+3236149504,3236149759,HR
+3236149760,3236150015,US
+3236150016,3236150527,HR
+3236150528,3236156959,US
3236156960,3236156967,GB
3236156968,3236157951,US
3236157952,3236158207,GB
3236158208,3236167935,US
3236167936,3236175871,CA
-3236175872,3236200447,US
+3236175872,3236182783,US
+3236182784,3236183039,FI
+3236183040,3236200447,US
3236200448,3236233215,MY
3236233216,3236239359,US
3236239360,3236241407,CA
@@ -100584,7 +115351,10 @@
3236288000,3236291071,US
3236291072,3236291327,GB
3236291328,3236302847,US
-3236306944,3236312063,US
+3236306944,3236310271,US
+3236310272,3236310527,ZA
+3236310528,3236310783,FR
+3236310784,3236312063,US
3236312064,3236312319,MO
3236312320,3236312575,GH
3236312576,3236312831,GR
@@ -100751,26 +115521,30 @@
3237036128,3237036135,CA
3237036136,3237036159,US
3237036160,3237036255,CA
-3237036256,3237036351,US
-3237036352,3237036367,CA
-3237036368,3237036383,US
+3237036256,3237036383,US
3237036384,3237036415,CA
3237036416,3237036495,US
3237036496,3237036511,CA
3237036512,3237036543,US
-3237036544,3237036551,CN
+3237036544,3237036551,CA
3237036552,3237036555,US
-3237036556,3237036703,CN
+3237036556,3237036679,CA
+3237036680,3237036687,SE
+3237036688,3237036703,CA
3237036704,3237036711,US
-3237036712,3237036799,CN
+3237036712,3237036799,CA
3237036800,3237037311,US
3237037312,3237037567,CA
3237037568,3237037583,US
3237037584,3237037607,CA
3237037608,3237037631,US
-3237037632,3237037703,CA
+3237037632,3237037647,CA
+3237037648,3237037655,SE
+3237037656,3237037703,CA
3237037704,3237037711,US
-3237037712,3237037767,CA
+3237037712,3237037751,CA
+3237037752,3237037759,US
+3237037760,3237037767,CA
3237037768,3237037775,NO
3237037776,3237037815,CA
3237037816,3237037823,US
@@ -100789,8 +115563,8 @@
3237038400,3237038415,CA
3237038416,3237038431,US
3237038432,3237038495,CA
-3237038496,3237038575,US
-3237038576,3237038607,CA
+3237038496,3237038591,US
+3237038592,3237038607,CA
3237038608,3237038615,US
3237038616,3237038663,CA
3237038664,3237038671,US
@@ -100802,19 +115576,21 @@
3237038768,3237038775,US
3237038776,3237038783,CA
3237038784,3237038791,US
-3237038792,3237038831,CA
-3237038832,3237038839,US
+3237038792,3237038823,CA
+3237038824,3237038839,US
3237038840,3237038863,CA
3237038864,3237038879,US
3237038880,3237038911,CA
3237038912,3237038927,US
-3237038928,3237038991,CA
-3237038992,3237039039,US
-3237039040,3237039103,CA
+3237038928,3237038943,CA
+3237038944,3237038959,US
+3237038960,3237038975,CA
+3237038976,3237039055,US
+3237039056,3237039103,CA
3237039104,3237039183,US
3237039184,3237039199,CA
-3237039200,3237039215,US
-3237039216,3237039295,CA
+3237039200,3237039231,US
+3237039232,3237039295,CA
3237039296,3237039343,US
3237039344,3237039359,CA
3237039360,3237039615,US
@@ -100822,8 +115598,8 @@
3237039936,3237040063,US
3237040064,3237040143,CA
3237040144,3237040159,US
-3237040160,3237040287,CA
-3237040288,3237040303,US
+3237040160,3237040255,CA
+3237040256,3237040303,US
3237040304,3237040319,CA
3237040320,3237040335,US
3237040336,3237040351,CA
@@ -100833,26 +115609,26 @@
3237040896,3237041151,CA
3237041152,3237041183,US
3237041184,3237041199,CA
-3237041200,3237041407,US
-3237041408,3237041663,CA
-3237041664,3237041823,US
+3237041200,3237041823,US
3237041824,3237041935,CA
3237041936,3237041983,US
3237041984,3237042047,CA
-3237042048,3237042063,US
-3237042064,3237042127,CA
+3237042048,3237042079,US
+3237042080,3237042127,CA
3237042128,3237042431,US
3237042432,3237042463,CA
3237042464,3237042471,US
3237042472,3237042479,CA
3237042480,3237042495,US
-3237042496,3237042607,CA
+3237042496,3237042511,CA
+3237042512,3237042527,US
+3237042528,3237042607,CA
3237042608,3237042623,US
3237042624,3237042631,CA
3237042632,3237042639,US
3237042640,3237042647,CA
-3237042648,3237042655,US
-3237042656,3237042679,CA
+3237042648,3237042671,US
+3237042672,3237042679,CA
3237042680,3237043455,US
3237043456,3237043711,CA
3237043712,3237043967,US
@@ -100879,47 +115655,54 @@
3237045040,3237045223,CA
3237045224,3237045231,US
3237045232,3237045247,CA
-3237045248,3237045663,US
+3237045248,3237045503,US
+3237045504,3237045591,CA
+3237045592,3237045599,SE
+3237045600,3237045663,CA
3237045664,3237045671,FI
-3237045672,3237046559,US
+3237045672,3237045711,CA
+3237045712,3237045719,US
+3237045720,3237045759,CA
+3237045760,3237046559,US
3237046560,3237046607,CA
-3237046608,3237046623,US
-3237046624,3237046647,CA
+3237046608,3237046639,US
+3237046640,3237046647,CA
3237046648,3237046655,SE
-3237046656,3237046671,CA
-3237046672,3237046767,US
+3237046656,3237046767,US
3237046768,3237046775,CA
3237046776,3237046815,US
-3237046816,3237046879,CA
-3237046880,3237046943,US
+3237046816,3237046847,CA
+3237046848,3237046943,US
3237046944,3237047039,CA
3237047040,3237047295,FR
-3237047296,3237047807,US
-3237047808,3237047839,CA
+3237047296,3237047823,US
+3237047824,3237047839,CA
3237047840,3237047871,US
3237047872,3237047935,CA
3237047936,3237048031,US
-3237048032,3237048079,CA
-3237048080,3237048111,US
-3237048112,3237048127,CA
-3237048128,3237048143,US
+3237048032,3237048063,CA
+3237048064,3237048143,US
3237048144,3237048159,CA
3237048160,3237048191,US
3237048192,3237048255,CA
3237048256,3237048575,US
3237048576,3237048767,CA
3237048768,3237048783,US
-3237048784,3237049855,CA
+3237048784,3237048799,CA
+3237048800,3237048815,US
+3237048816,3237049855,CA
3237049856,3237050111,US
3237050112,3237050159,GB
3237050160,3237050175,US
-3237050176,3237050303,GB
+3237050176,3237050191,GB
+3237050192,3237050207,US
+3237050208,3237050303,GB
3237050304,3237051903,US
3237051904,3237052159,TR
-3237052160,3237052319,CA
-3237052320,3237052383,US
-3237052384,3237052415,CA
-3237052416,3237125295,US
+3237052160,3237052287,CA
+3237052288,3237052383,US
+3237052384,3237052399,CA
+3237052400,3237125295,US
3237125296,3237125311,CR
3237125312,3237154815,US
3237154816,3237155839,ES
@@ -100945,9 +115728,7 @@
3237295104,3237296639,US
3237296640,3237297151,SG
3237297152,3237297407,CL
-3237297408,3237305087,US
-3237305088,3237305343,CA
-3237305344,3237308671,US
+3237297408,3237308671,US
3237308672,3237310719,AU
3237310720,3237312767,US
3237312768,3237313023,BO
@@ -100958,8 +115739,7 @@
3237320960,3237321471,US
3237321728,3237322751,US
3237322752,3237323263,CA
-3237323264,3237323519,IN
-3237323520,3237325055,US
+3237323264,3237325055,US
3237325056,3237325311,PL
3237325312,3237325823,US
3237325824,3237326079,CA
@@ -100970,7 +115750,7 @@
3237329408,3237330943,US
3237330944,3237331199,AU
3237331200,3237331967,US
-3237331968,3237332223,HK
+3237331968,3237332223,AU
3237332224,3237335039,US
3237335040,3237335295,AU
3237335296,3237335551,US
@@ -101007,7 +115787,13 @@
3237613568,3237614591,CA
3237614592,3237615615,US
3237615616,3237616895,CA
-3237616896,3237642239,US
+3237616896,3237623807,US
+3237623808,3237624831,IE
+3237624832,3237634047,US
+3237634048,3237634601,GB
+3237634602,3237634603,US
+3237634604,3237638143,GB
+3237638144,3237642239,US
3237642240,3237650431,AU
3237650432,3237653503,US
3237653504,3237653759,IN
@@ -101051,197 +115837,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
@@ -101249,8 +115845,7 @@
3237868288,3237868543,DK
3237868544,3237868799,GB
3237868800,3237869311,US
-3237869312,3237869439,KR
-3237869440,3237869567,JP
+3237869312,3237869567,KR
3237869568,3237869823,AU
3237869824,3237869951,PH
3237869952,3237870079,VN
@@ -101322,9 +115917,11 @@
3237969152,3237969407,RO
3237969408,3238002687,US
3238002688,3238008831,NL
-3238008832,3238010879,AE
+3238008832,3238010879,FR
3238010880,3238017023,CH
-3238017024,3238018303,DK
+3238017024,3238017535,DK
+3238017536,3238017791,US
+3238017792,3238018303,DK
3238018304,3238018559,UA
3238018560,3238018815,FR
3238018816,3238019071,DE
@@ -101341,16 +115938,14 @@
3238043648,3238043903,NL
3238043904,3238044159,DK
3238044160,3238044671,KZ
-3238044672,3238045183,FI
3238045184,3238047743,RU
3238047744,3238048255,GB
3238048256,3238048767,NL
3238048768,3238049791,CH
-3238049792,3238050303,RU
+3238050048,3238050303,RU
3238050304,3238050815,DE
3238050816,3238051071,AT
-3238051072,3238051327,GB
-3238051328,3238051583,RO
+3238051072,3238051583,RO
3238051584,3238051839,GB
3238051840,3238053375,PL
3238053376,3238053631,RU
@@ -101391,14 +115986,20 @@
3238133760,3238199295,SI
3238199296,3238264831,DK
3238264832,3238330367,IS
-3238330368,3238395903,CH
+3238330368,3238334463,CH
+3238335488,3238336511,CH
+3238336768,3238337023,CH
+3238337024,3238337535,LI
+3238337536,3238395903,CH
3238395904,3238461439,HU
3238461440,3238502399,DE
3238502400,3238504447,RU
3238504448,3238510591,DE
3238518784,3238526975,DE
3238526976,3238527231,RU
+3238528000,3238529023,BG
3238529024,3238530047,CH
+3238530048,3238531071,KZ
3238531072,3238535167,CH
3238535168,3238536191,SE
3238536192,3238537215,DK
@@ -101413,19 +116014,29 @@
3238545920,3238546431,RU
3238546432,3238546943,CH
3238546944,3238547455,UA
+3238547456,3238548479,PL
3238548992,3238549503,CZ
3238549504,3238555647,CH
+3238557696,3238558719,ES
3238559232,3238559487,SE
3238559744,3238562303,CH
3238562560,3238562815,IR
3238562816,3238573567,CH
3238573568,3238574079,PL
-3238575104,3238575615,DE
-3238575616,3238578431,CH
+3238574080,3238575103,DE
+3238575104,3238578431,CH
3238578432,3238578687,UA
3238578944,3238579199,RU
3238579200,3238579455,CH
-3238580224,3238588415,CH
+3238580224,3238581247,RU
+3238581504,3238581759,DE
+3238581760,3238582015,CH
+3238582272,3238583295,ES
+3238583808,3238584319,CH
+3238584320,3238585343,FR
+3238585856,3238586111,CH
+3238586368,3238588415,CH
+3238588416,3238589439,GB
3238589696,3238589951,CH
3238589952,3238590207,LT
3238590464,3238590719,CH
@@ -101454,7 +116065,8 @@
3238624000,3238624255,PL
3238624256,3238625279,HU
3238625280,3238630399,LU
-3238630400,3238631423,SE
+3238630400,3238631423,GR
+3238631424,3238632447,RO
3238632960,3238633215,UA
3238633216,3238653951,DK
3238653952,3238655999,RU
@@ -101463,7 +116075,31 @@
3238656512,3238657023,UA
3238657024,3238657535,AT
3238657536,3238657791,GB
-3238658048,3239051263,SE
+3238658048,3238821887,SE
+3238821888,3238823935,HR
+3238823936,3238860799,SE
+3238860800,3238862847,HR
+3238862848,3238903807,SE
+3238903808,3238905855,HR
+3238905856,3238914047,SE
+3238914048,3238916095,HR
+3238916096,3238941695,SE
+3238941696,3238942719,NL
+3238942720,3238967295,SE
+3238967296,3238969343,HR
+3238969344,3238975487,SE
+3238975488,3238977535,HR
+3238977536,3238981631,SE
+3238981632,3238983679,HR
+3238983680,3238993919,SE
+3238993920,3238995967,HR
+3238995968,3239018495,SE
+3239018496,3239020543,HR
+3239020544,3239022591,SE
+3239022592,3239024639,HR
+3239024640,3239026687,SE
+3239026688,3239028735,HR
+3239028736,3239051263,SE
3239051264,3239059455,DE
3239062272,3239062527,ES
3239062528,3239062783,CH
@@ -101472,7 +116108,8 @@
3239063296,3239063551,UA
3239063552,3239075839,DE
3239075840,3239076095,GB
-3239076096,3239076607,DE
+3239076096,3239076351,DE
+3239076352,3239076607,CH
3239076608,3239076863,PL
3239076864,3239077119,NL
3239077120,3239077375,UA
@@ -101500,8 +116137,7 @@
3239092224,3239104511,DE
3239104512,3239105279,RU
3239105280,3239105535,CH
-3239105536,3239106047,DE
-3239106048,3239106559,AT
+3239105536,3239106559,DE
3239106560,3239106815,ES
3239106816,3239107071,CH
3239107072,3239107327,RO
@@ -101529,13 +116165,14 @@
3239116800,3239117055,PT
3239117056,3239117311,SI
3239117312,3239117567,DE
+3239117824,3239118847,BG
3239118848,3239119871,DE
3239119872,3239120127,GB
3239120128,3239120383,CZ
3239120384,3239120639,PL
3239120896,3239121663,DE
3239121664,3239121919,FR
-3239121920,3239123967,DE
+3239121920,3239124991,DE
3239127296,3239127551,PL
3239127552,3239127807,IL
3239127808,3239128063,RU
@@ -101547,6 +116184,7 @@
3239130112,3239130367,RU
3239130368,3239130623,JO
3239130624,3239130879,PL
+3239131136,3239132159,NL
3239132160,3239133183,DE
3239133440,3239133695,GB
3239133696,3239133951,ES
@@ -101562,6 +116200,7 @@
3239136512,3239136767,DE
3239136768,3239137023,MD
3239137024,3239137279,LI
+3239137280,3239138303,IT
3239138304,3239138559,PL
3239138560,3239138815,CH
3239141376,3239145471,US
@@ -101575,9 +116214,11 @@
3239161344,3239161599,PL
3239161600,3239161855,HU
3239162368,3239162623,DE
+3239162880,3239163903,ES
3239163904,3239164159,PL
3239164160,3239164671,DE
3239164672,3239164927,GB
+3239164928,3239165951,SY
3239165952,3239166207,FR
3239166464,3239166719,CH
3239166720,3239166975,RO
@@ -101601,7 +116242,9 @@
3239171584,3239171839,PL
3239172096,3239172607,UA
3239172608,3239172863,SE
-3239172864,3239173119,DE
+3239172864,3239172991,DE
+3239172992,3239173002,BG
+3239173003,3239173119,DE
3239173376,3239173631,DE
3239173632,3239173887,AT
3239173888,3239174143,PL
@@ -101612,15 +116255,15 @@
3239176192,3239180287,DE
3239180288,3239181311,CZ
3239181312,3239181567,AT
-3239181824,3239182079,DE
-3239182336,3239205887,DE
-3239205888,3239206143,US
-3239206144,3239264255,DE
+3239181824,3239182079,GB
+3239182336,3239198719,DE
+3239198720,3239206911,US
+3239206912,3239264255,DE
3239264256,3239264767,NO
3239264768,3239266303,RU
3239266816,3239267327,UA
3239267328,3239267839,FR
-3239267840,3239268351,DE
+3239267840,3239268351,CH
3239268352,3239268863,SE
3239268864,3239269375,RU
3239269376,3239270399,UA
@@ -101634,15 +116277,17 @@
3239275520,3239276543,UA
3239276544,3239277055,LU
3239277056,3239277567,DE
-3239277568,3239279103,RU
+3239277568,3239278591,RU
3239279104,3239280127,PL
3239280128,3239280639,RU
-3239281664,3239282687,UA
+3239280640,3239281663,DE
+3239281664,3239282687,RU
3239282688,3239283711,FI
3239283712,3239284735,PL
3239284736,3239285247,IR
3239285248,3239285503,SE
3239285504,3239285759,BG
+3239285760,3239286783,ES
3239286784,3239287807,UA
3239287808,3239288831,GB
3239288832,3239289855,DE
@@ -101659,17 +116304,23 @@
3239302144,3239303167,PL
3239303168,3239304191,FR
3239304192,3239305215,HR
-3239305216,3239306239,US
+3239305216,3239306239,GB
3239306240,3239307263,UA
3239307264,3239308287,EG
3239308288,3239309311,DE
-3239309312,3239313407,UA
+3239309312,3239311359,UA
+3239311360,3239312383,PL
+3239312384,3239313407,UA
3239313408,3239445759,DE
3239445760,3239446015,PL
3239446016,3239446271,RU
3239446272,3239446527,FR
3239446528,3239447551,DE
+3239447552,3239448063,RU
+3239448064,3239448575,CN
3239448576,3239449599,DE
+3239449600,3239450623,GB
+3239450624,3239451647,DE
3239451648,3239451903,PL
3239451904,3239452159,DE
3239452160,3239452415,CY
@@ -101689,6 +116340,7 @@
3239468288,3239468543,RO
3239468544,3239468799,NO
3239468800,3239469055,RO
+3239469056,3239470079,UA
3239470080,3239470591,DE
3239470592,3239470847,CH
3239470848,3239471103,BG
@@ -101696,6 +116348,7 @@
3239472128,3239474943,DE
3239474944,3239475199,ES
3239475200,3239477247,DE
+3239479296,3239480319,IT
3239480320,3239480575,UA
3239480832,3239481087,CH
3239481088,3239481343,FR
@@ -101717,7 +116370,12 @@
3239508480,3239508735,NO
3239508736,3239508991,DE
3239508992,3239509247,PL
-3239509248,3239514111,DE
+3239509248,3239509503,DE
+3239509504,3239509759,CH
+3239509760,3239510015,DE
+3239510528,3239510783,DE
+3239511040,3239512063,RO
+3239512064,3239514111,DE
3239518208,3239522303,DE
3239522304,3239522559,PL
3239522560,3239522815,SI
@@ -101744,6 +116402,7 @@
3239541248,3239541503,UA
3239541504,3239541759,FR
3239541760,3239542015,GB
+3239542784,3239543807,MD
3239543808,3239544831,DE
3239544832,3239545087,GB
3239545088,3239545343,SI
@@ -101752,6 +116411,7 @@
3239546112,3239546367,GB
3239546368,3239546623,RU
3239546624,3239546879,NL
+3239546880,3239547903,RU
3239547904,3239549951,DE
3239549952,3239550207,TR
3239550208,3239550463,UA
@@ -101761,6 +116421,7 @@
3239554048,3239554303,SE
3239554560,3239554815,PL
3239554816,3239555071,UA
+3239555072,3239556095,DE
3239556096,3239556351,SA
3239556352,3239556607,UA
3239556608,3239556863,HR
@@ -101778,6 +116439,7 @@
3239575040,3239575295,DE
3239575296,3239575551,DK
3239575552,3239577599,DE
+3239577600,3239578623,RU
3239578624,3239578879,DE
3239579136,3239579391,PL
3239579392,3239581695,DE
@@ -101792,23 +116454,30 @@
3239591936,3239592447,FI
3239592448,3239592703,US
3239592704,3239593983,FI
-3239593984,3239624703,DE
+3239593984,3239599103,DE
+3239599104,3239599359,GB
+3239599360,3239624703,DE
3239624704,3239625727,CH
3239625728,3239626751,RU
3239626752,3239628799,PL
3239628800,3239629823,DE
+3239629824,3239630847,UA
3239630848,3239631871,DE
3239631872,3239632895,UA
-3239632896,3239636991,DE
+3239632896,3239633919,DE
+3239633920,3239634943,RU
+3239634944,3239635967,LT
+3239635968,3239636991,DE
3239636992,3239638015,BG
3239638016,3239639039,PL
3239639040,3239639551,SI
3239639552,3239639807,CZ
3239639808,3239640063,SI
-3239640064,3239641087,DE
3239641088,3239643135,PL
3239643136,3239645183,RU
-3239645184,3239665663,DE
+3239645184,3239653375,DE
+3239653376,3239657471,NL
+3239657472,3239665663,DE
3239666176,3239666687,AT
3239666688,3239667199,DE
3239667200,3239667711,CH
@@ -101838,11 +116507,13 @@
3239691520,3239691775,FR
3239691822,3239691822,GB
3239692032,3239692287,AT
-3239692288,3239696383,DE
+3239692288,3239697407,DE
3239697408,3239697663,HR
3239697664,3239697919,RU
3239697920,3239698175,PL
-3239698432,3239706623,DE
+3239698432,3239704575,DE
+3239704576,3239705599,PL
+3239706112,3239706367,DE
3239706880,3239707135,NL
3239707392,3239707647,UA
3239707648,3239707903,GB
@@ -101880,6 +116551,7 @@
3239740928,3239741183,UA
3239741184,3239741439,RU
3239741440,3239744511,DE
+3239744512,3239745535,ES
3239747584,3239759871,DE
3239760128,3239760383,UA
3239761408,3239761663,RU
@@ -101898,6 +116570,7 @@
3239773952,3239774207,SA
3239774464,3239774719,ES
3239774976,3239775231,PT
+3239775232,3239776255,RO
3239776256,3239778303,DE
3239782400,3239782655,AT
3239782656,3239782911,RU
@@ -101905,7 +116578,7 @@
3239783168,3239783423,CH
3239783424,3239783679,DK
3239783936,3239784191,DE
-3239784192,3239784447,ES
+3239784192,3239784447,FR
3239784448,3239788543,DE
3239788544,3239788607,GB
3239789056,3239789567,DE
@@ -101935,12 +116608,13 @@
3239825920,3239826431,PL
3239826432,3239826943,GB
3239826944,3239827455,RU
-3239827456,3239827967,DK
+3239827456,3239827967,FI
3239827968,3239828479,CH
3239828480,3239828991,DE
3239828992,3239829503,RU
3239830016,3239830527,CH
3239831040,3239831551,RU
+3239831552,3239832575,LB
3239832576,3239834623,RU
3239834624,3239835135,AT
3239836160,3239836671,DK
@@ -101955,6 +116629,7 @@
3239840768,3239841023,AT
3239841024,3239841279,DE
3239841536,3239846911,DE
+3239846912,3239847935,GB
3239847936,3239848447,DE
3239848448,3239848703,CH
3239848960,3239849215,RU
@@ -101965,7 +116640,7 @@
3239859200,3239859455,PL
3239859456,3239859711,UA
3239859712,3239859967,HU
-3239859968,3239860223,CA
+3239859968,3239860223,UA
3239860224,3239860479,DE
3239860480,3239860735,FI
3239860736,3239861247,DE
@@ -101984,7 +116659,6 @@
3239877120,3239877375,GB
3239877376,3239877631,IL
3239877632,3239877887,UA
-3239877888,3239878143,IT
3239878144,3239878399,PL
3239878400,3239878655,SE
3239878656,3239882751,DE
@@ -102009,7 +116683,8 @@
3239889920,3239890175,AT
3239890176,3239890431,FR
3239890432,3239890687,NL
-3239890688,3239895039,DE
+3239890688,3239894015,DE
+3239894016,3239895039,NL
3239895040,3239895295,DK
3239895296,3239895551,TR
3239895552,3239895807,PL
@@ -102028,13 +116703,18 @@
3239901696,3239901951,BG
3239901952,3239902207,DE
3239902720,3239902975,EE
-3239903232,3239907327,DE
+3239903232,3239905279,DE
+3239905536,3239905791,DE
+3239906304,3239907327,RO
3239907328,3239907583,UA
3239908096,3239908351,RU
3239908864,3239910399,DE
+3239910400,3239911423,UA
+3239911424,3239912447,RU
3239912960,3239913215,DE
3239913216,3239913471,LT
3239914240,3239914495,DE
+3239914496,3239915519,ES
3239915520,3239915775,PL
3239915776,3239916031,HU
3239916032,3239916287,SA
@@ -102043,11 +116723,10 @@
3239916800,3239917055,KZ
3239917056,3239917311,DE
3239917312,3239917567,BG
-3239919616,3239922687,DE
-3239922688,3239922943,CZ
-3239922944,3239938815,DE
+3239919616,3239938815,DE
3239938816,3239939071,NL
3239939072,3239948543,DE
+3239949312,3239950335,RU
3239950848,3239951103,DE
3239951104,3239951359,RO
3239951360,3239951615,DE
@@ -102075,6 +116754,7 @@
3239975936,3239976191,RO
3239976192,3239976447,DE
3239976448,3239976959,NL
+3239976960,3239977983,US
3239977984,3239978751,DE
3239978752,3239979007,RU
3239979264,3239979519,GB
@@ -102084,7 +116764,9 @@
3239996416,3239996671,GB
3239996928,3239997183,BE
3239997184,3239997439,GB
-3239997440,3240004863,DE
+3239997440,3239997695,DE
+3239998464,3239999487,RU
+3239999488,3240004863,DE
3240004864,3240005119,FR
3240005120,3240005375,SE
3240005376,3240005631,NL
@@ -102108,7 +116790,8 @@
3240034560,3240035327,DE
3240036096,3240037375,DE
3240037888,3240038143,AT
-3240038912,3240039423,DE
+3240038400,3240040447,DE
+3240048640,3240049663,UA
3240049664,3240050687,DE
3240054784,3240058879,DE
3240067072,3240083455,DE
@@ -102116,6 +116799,7 @@
3240085504,3240087551,KZ
3240087552,3240091647,IM
3240091648,3240097791,DE
+3240097792,3240098815,IT
3240098816,3240099327,CH
3240099840,3240101887,GB
3240102144,3240102399,GB
@@ -102137,19 +116821,25 @@
3240114176,3240114431,CZ
3240114432,3240114687,UA
3240114688,3240114943,RO
-3240114944,3240115199,BE
3240115200,3240116223,RU
3240116224,3240116479,DE
3240116480,3240116735,DK
3240116736,3240117247,GB
-3240117261,3240117261,UA
+3240117248,3240118271,UA
3240118272,3240120319,ES
3240120320,3240120831,IR
3240120832,3240121343,GB
+3240121344,3240121855,RU
+3240121856,3240122367,US
3240122368,3240123391,GB
+3240123392,3240123903,RU
+3240123904,3240124415,DE
+3240124416,3240125439,RU
3240125440,3240125695,RO
3240125696,3240125951,GB
-3240126208,3240132607,GB
+3240126208,3240128511,GB
+3240128512,3240129535,ME
+3240130048,3240132607,GB
3240163328,3240165375,GB
3240165376,3240165887,PL
3240165888,3240166399,ES
@@ -102168,7 +116858,7 @@
3240173568,3240174079,RO
3240174080,3240174591,PL
3240174592,3240175103,FR
-3240175104,3240175615,RU
+3240175104,3240175615,UA
3240176128,3240176639,PL
3240176640,3240177151,UA
3240177152,3240177663,FR
@@ -102261,7 +116951,7 @@
3240235008,3240236031,FR
3240236032,3240237055,UA
3240237056,3240239103,DE
-3240239104,3240240127,FR
+3240239104,3240240127,CH
3240240128,3240241151,US
3240241152,3240242175,FI
3240242176,3240243199,PL
@@ -102272,6 +116962,9 @@
3240247296,3240248319,RS
3240248320,3240249343,DE
3240249344,3240250367,UA
+3240250368,3240250623,GB
+3240250624,3240250879,US
+3240250880,3240251391,GB
3240251392,3240252415,IE
3240252416,3240253439,LT
3240253440,3240254463,BE
@@ -102324,7 +117017,7 @@
3240281856,3240281983,NL
3240281984,3240282111,NO
3240282112,3240282239,DE
-3240282240,3240282367,UA
+3240282240,3240282367,RU
3240282368,3240282495,RO
3240282624,3240282879,SE
3240282880,3240283007,UA
@@ -102338,8 +117031,10 @@
3240287232,3240288255,PL
3240288256,3240296447,GB
3240296448,3240296703,RO
+3240297472,3240298495,IT
3240298496,3240300543,GB
3240302848,3240303103,UA
+3240303616,3240304639,GB
3240304640,3240305663,RU
3240305664,3240305919,PL
3240306176,3240306687,RU
@@ -102354,7 +117049,7 @@
3240310784,3240311807,GB
3240311808,3240312063,PL
3240312320,3240312575,IR
-3240312832,3240316927,GB
+3240312832,3240316927,SG
3240321024,3240321535,RU
3240321792,3240322047,PL
3240322048,3240322303,RU
@@ -102365,7 +117060,10 @@
3240324864,3240325119,SI
3240325120,3240328191,GB
3240328192,3240328447,SG
-3240328448,3240361983,GB
+3240328448,3240334335,GB
+3240334336,3240335359,NL
+3240335360,3240336383,BG
+3240336384,3240361983,GB
3240361984,3240362239,TR
3240362240,3240362495,DE
3240362496,3240362751,GB
@@ -102386,7 +117084,9 @@
3240373760,3240374015,DE
3240374016,3240374271,GB
3240378368,3240386559,GB
-3240394752,3240407039,GB
+3240394752,3240403455,GB
+3240403968,3240404991,NL
+3240404992,3240407039,DE
3240407040,3240407295,IL
3240407296,3240407551,NL
3240407552,3240407807,NO
@@ -102394,7 +117094,7 @@
3240408832,3240409087,PL
3240409088,3240409343,TR
3240409600,3240409855,NL
-3240409856,3240410367,DE
+3240410112,3240410367,DE
3240410368,3240410623,AT
3240410624,3240410879,PT
3240410880,3240411135,NO
@@ -102404,11 +117104,12 @@
3240420864,3240421119,GB
3240423424,3240435711,GB
3240436480,3240436735,GB
-3240436736,3240437759,IE
-3240443904,3240460287,GB
+3240436736,3240437759,DE
+3240450048,3240455167,GB
+3240455168,3240456191,NL
+3240456192,3240460287,GB
3240460288,3240461055,IL
3240461056,3240461567,DE
-3240461568,3240461823,UA
3240461824,3240462079,RU
3240462080,3240462335,TR
3240462336,3240462591,RO
@@ -102433,16 +117134,31 @@
3240468224,3240468479,CH
3240468480,3240476671,GB
3240484864,3240486911,GB
+3240486912,3240487935,NL
3240487936,3240488191,CH
3240488192,3240488447,GB
3240488448,3240488703,BG
-3240488704,3240488959,NL
3240488960,3240491007,GB
-3240493056,3240501247,SE
+3240493056,3240493567,SE
+3240493568,3240494079,GB
+3240494080,3240494335,SE
+3240494336,3240494591,FR
+3240494592,3240501247,SE
3240505344,3240505599,PL
3240505600,3240505855,GB
3240506368,3240506623,GB
-3240507392,3240575487,GB
+3240507392,3240525823,GB
+3240527872,3240528127,GB
+3240528128,3240528383,CH
+3240528384,3240528639,NL
+3240528640,3240528895,JP
+3240529408,3240529919,GB
+3240534016,3240550399,GB
+3240558592,3240559615,FR
+3240559616,3240560127,GB
+3240560640,3240561663,GB
+3240561664,3240562687,HU
+3240562688,3240575487,GB
3240575488,3240575743,RO
3240575744,3240575999,GB
3240576000,3240576255,DE
@@ -102468,13 +117184,16 @@
3240593408,3240593663,GB
3240594176,3240594431,DK
3240594432,3240594943,GB
-3240595456,3240607743,GB
+3240595456,3240599551,GB
+3240601600,3240602623,RU
+3240602624,3240605695,GB
3240609792,3240611839,DE
3240611840,3240613887,GB
3240615936,3240620031,GB
+3240620032,3240621055,LT
3240621824,3240622079,GB
3240622080,3240622591,RU
-3240622848,3240623103,GB
+3240622848,3240624127,GB
3240624128,3240689663,EE
3240689664,3240690175,GB
3240690176,3240690687,TR
@@ -102484,7 +117203,7 @@
3240692736,3240693247,DK
3240693248,3240693759,ES
3240693760,3240695807,BE
-3240695808,3240697855,ES
+3240695808,3240697855,SE
3240698112,3240698367,LV
3240698624,3240699135,SI
3240699136,3240699391,DE
@@ -102496,6 +117215,7 @@
3240701184,3240701439,LV
3240701440,3240701695,ES
3240701952,3240702975,UA
+3240702976,3240703999,CH
3240704000,3240705023,GR
3240705024,3240706047,UA
3240706048,3240707071,BG
@@ -102576,7 +117296,11 @@
3240751104,3240752127,ES
3240752128,3240754175,RO
3240754176,3240755199,DE
-3240755200,3240787967,IT
+3240755712,3240756223,IT
+3240756224,3240757247,ES
+3240757248,3240759295,IT
+3240771584,3240779775,IT
+3240787968,3240788991,CZ
3240788992,3240790015,IT
3240790528,3240791551,IT
3240791552,3240791807,RU
@@ -102591,7 +117315,6 @@
3240794368,3240794879,PL
3240794880,3240795135,DE
3240795136,3240795391,UA
-3240795392,3240795647,RU
3240795648,3240795903,CH
3240795904,3240796159,SE
3240796160,3240808959,IT
@@ -102605,6 +117328,7 @@
3240811776,3240812031,DE
3240812032,3240812287,HU
3240812288,3240812543,KW
+3240812544,3240813567,GB
3240813568,3240814591,PL
3240814592,3240816639,IT
3240818688,3240820735,NL
@@ -102613,14 +117337,18 @@
3240820832,3240820863,GB
3240820864,3240820991,PL
3240820992,3240822783,IT
+3240822784,3240823807,RU
3240823808,3240824319,PL
3240824576,3240825855,IT
+3240825856,3240826879,PL
3240826880,3240827135,IT
3240827136,3240827391,FR
3240827392,3240827647,BG
3240827648,3240827903,CH
3240828160,3240828415,DE
-3240828928,3240837119,IT
+3240828928,3240830975,IT
+3240830976,3240831999,GB
+3240832000,3240837119,IT
3240839424,3240839679,IT
3240840192,3240840447,IT
3240840448,3240840703,PL
@@ -102642,7 +117370,7 @@
3240855552,3240857599,IT
3240857600,3240857855,PL
3240858624,3240858879,PL
-3240859136,3240859391,GB
+3240859136,3240859391,NL
3240859392,3240859647,SE
3240859648,3240861183,CH
3240861184,3240861439,AT
@@ -102665,11 +117393,14 @@
3240882176,3240883199,PL
3240883200,3240884223,IL
3240884224,3240886271,UA
-3240886272,3241017343,SE
+3240886272,3240955647,SE
+3240955648,3240955903,GB
+3240955904,3241017343,SE
3241017600,3241017855,AT
3241017856,3241018111,RU
3241018112,3241018367,FR
3241018368,3241022463,AT
+3241022464,3241023487,IT
3241027584,3241029119,AT
3241029120,3241029375,UA
3241029376,3241029631,PL
@@ -102701,7 +117432,9 @@
3241040128,3241040383,UA
3241040384,3241040639,GB
3241040640,3241040895,RO
-3241040896,3241062399,AT
+3241040896,3241061375,AT
+3241061376,3241062399,MD
+3241062400,3241063423,ES
3241063424,3241063679,IT
3241063680,3241063935,PL
3241063936,3241064191,DE
@@ -102719,6 +117452,7 @@
3241071616,3241071871,PL
3241071872,3241072127,RU
3241072384,3241072639,DE
+3241072640,3241073663,ES
3241073920,3241074175,GB
3241074688,3241076735,AT
3241077248,3241077759,AT
@@ -102729,6 +117463,7 @@
3241080832,3241082879,AT
3241082880,3241083135,FR
3241083136,3241091071,CH
+3241099264,3241100287,IT
3241101056,3241101311,DK
3241101312,3241101567,RO
3241101568,3241101823,DE
@@ -102784,13 +117519,17 @@
3241131264,3241131519,UA
3241131520,3241131775,CH
3241131776,3241132031,DK
-3241132032,3241144319,CH
+3241132032,3241142783,CH
+3241143296,3241144319,RO
+3241144320,3241145343,RU
3241145856,3241146111,HR
3241146112,3241146367,PL
3241146368,3241146623,IL
3241146624,3241146879,RO
3241146880,3241148415,CH
-3241148416,3241419519,FR
+3241148416,3241313791,FR
+3241313792,3241314047,GF
+3241314048,3241419519,FR
3241419520,3241419775,GP
3241419776,3241476095,FR
3241476864,3241477375,BE
@@ -102800,7 +117539,9 @@
3241481984,3241482239,DE
3241482240,3241484799,SE
3241484800,3241485055,BE
-3241485312,3241496575,BE
+3241485312,3241486335,BE
+3241486336,3241487615,SE
+3241487616,3241496575,BE
3241496576,3241496831,AT
3241497344,3241497599,UA
3241497600,3241497855,SE
@@ -102821,38 +117562,97 @@
3241508096,3241508351,NL
3241508864,3241539839,BE
3241541376,3241541631,PL
-3241541632,3241689087,FR
+3241541632,3241672703,FR
+3241672704,3241673727,RU
+3241673728,3241674751,FR
+3241674752,3241675775,GB
+3241676544,3241676799,FR
+3241680896,3241684223,FR
+3241684224,3241684479,DE
+3241684480,3241689087,FR
3241693184,3241699327,FR
3241699840,3241700095,SE
-3241700352,3241721855,FR
+3241700352,3241703423,FR
+3241703424,3241704447,OM
+3241705216,3241705727,FR
+3241706496,3241707519,GB
+3241707520,3241709567,FR
+3241711616,3241712639,NL
+3241712896,3241713151,FR
+3241713664,3241714175,FR
+3241714688,3241715711,ES
+3241715712,3241717759,FR
+3241719808,3241721855,FR
3241722112,3241722367,FR
+3241722880,3241723903,FI
3241724416,3241724671,RU
3241724672,3241724927,FR
-3241725952,3241742335,FR
+3241724928,3241725951,AT
+3241725952,3241726975,FR
+3241726976,3241727999,PL
+3241728000,3241728255,DE
+3241728256,3241738239,FR
+3241738240,3241739263,DE
+3241739264,3241742335,FR
+3241742336,3241743359,GB
3241743360,3241743615,DE
3241744384,3241745407,FR
-3241746432,3241763071,FR
+3241745408,3241746431,AM
+3241746432,3241747455,FR
+3241747456,3241748479,ES
+3241750528,3241751039,FR
+3241751552,3241752575,MD
+3241752576,3241752831,FR
+3241753600,3241754623,DE
+3241754624,3241756671,FR
+3241756672,3241757695,IT
+3241757696,3241758719,FR
+3241758720,3241759743,GB
+3241759744,3241763071,FR
3241763072,3241763327,DE
-3241764864,3241803775,FR
+3241763840,3241773055,FR
+3241773056,3241774079,RU
+3241774336,3241774591,FR
+3241775360,3241775615,FR
+3241776128,3241777151,GB
+3241777152,3241779199,FR
+3241779200,3241780223,ES
+3241780736,3241780991,FR
+3241781248,3241795583,FR
+3241795840,3241796095,FR
+3241796608,3241797631,GB
+3241797632,3241803775,FR
3241803776,3241803823,CY
3241803832,3241803839,GB
3241803840,3241804031,CY
-3241804032,3241820159,BE
+3241804032,3241805567,BE
+3241805568,3241805823,NL
+3241807872,3241812991,BE
+3241812992,3241814015,IT
+3241814016,3241820159,BE
3241820160,3241821695,GB
3241821696,3241822207,GR
3241822208,3241824255,CZ
-3241824256,3241828351,BE
-3241836544,3241840639,BE
+3241824256,3241826303,BE
+3241826304,3241827327,DE
+3241827328,3241828351,BE
+3241836544,3241837567,BE
+3241837568,3241838591,DE
+3241838592,3241840639,BE
+3241840640,3241841663,ES
3241841664,3241842175,BE
3241843456,3241843711,CH
-3241843712,3241848831,BE
+3241843712,3241845759,BE
+3241845760,3241846783,AT
+3241846784,3241847807,GB
+3241847808,3241848063,BE
3241852928,3241854463,SK
3241854464,3241854975,GB
3241854976,3241855999,DE
3241856000,3241857279,NL
3241857280,3241857535,CH
3241857536,3241859071,AT
-3241859072,3241861119,US
+3241859072,3241861119,CA
3241861120,3241863167,BE
3241863168,3241863423,PL
3241863424,3241863679,FR
@@ -102881,33 +117681,110 @@
3242475520,3242483711,LV
3242483712,3242524671,BG
3242524672,3242590207,NO
-3242590208,3242594663,FR
+3242590208,3242594463,FR
+3242594464,3242594495,ES
+3242594496,3242594559,FI
+3242594560,3242594635,FR
+3242594636,3242594639,GB
+3242594640,3242594663,FR
3242594664,3242594667,DE
-3242594668,3242597343,FR
+3242594668,3242595711,FR
+3242595712,3242595839,IT
+3242595840,3242595967,FR
+3242595968,3242596095,ES
+3242596096,3242596255,FR
+3242596256,3242596287,LT
+3242596288,3242596415,FR
+3242596416,3242596479,PT
+3242596480,3242596575,FR
+3242596576,3242596607,GB
+3242596608,3242597087,FR
+3242597088,3242597119,CZ
+3242597120,3242597343,FR
3242597344,3242597375,NL
-3242597376,3242604755,FR
-3242604756,3242604756,NL
-3242604757,3242606975,FR
+3242597376,3242598351,FR
+3242598352,3242598367,LT
+3242598368,3242602823,FR
+3242602824,3242602831,ES
+3242602832,3242602975,FR
+3242602976,3242603007,PL
+3242603008,3242603039,FR
+3242603040,3242603071,DE
+3242603072,3242603127,FR
+3242603128,3242603135,ES
+3242603136,3242604095,FR
+3242604096,3242604159,PL
+3242604160,3242604287,IT
+3242604288,3242604671,FR
+3242604672,3242604799,NL
+3242604800,3242605279,FR
+3242605280,3242605311,BE
+3242605312,3242606943,FR
+3242606944,3242606959,BE
+3242606960,3242606975,FR
3242606976,3242607039,ES
-3242607040,3242614513,FR
-3242614514,3242614514,PL
-3242614515,3242614527,FR
-3242614528,3242614783,PL
-3242614784,3242615871,FR
+3242607040,3242607071,FR
+3242607072,3242607103,DE
+3242607104,3242607135,FR
+3242607136,3242607167,CZ
+3242607168,3242607231,PL
+3242607232,3242607359,IT
+3242607360,3242607375,GB
+3242607376,3242607775,FR
+3242607776,3242607807,CZ
+3242607808,3242608383,FR
+3242608384,3242608639,GB
+3242608640,3242608767,FR
+3242608768,3242608895,DE
+3242608896,3242609919,FR
+3242609920,3242610047,GB
+3242610048,3242610271,FR
+3242610272,3242610303,FI
+3242610304,3242610431,BE
+3242610432,3242614271,FR
+3242614272,3242614783,PL
+3242614784,3242615167,FR
+3242615168,3242615295,IE
+3242615296,3242615871,FR
3242615872,3242615935,PL
-3242615936,3242616029,FR
-3242616030,3242616030,NL
-3242616031,3242616265,FR
-3242616266,3242616266,ES
-3242616267,3242616991,FR
-3242616992,3242616992,IT
-3242616993,3242618239,FR
-3242618240,3242618241,NL
-3242618242,3242618431,FR
+3242615936,3242615999,FR
+3242616000,3242616063,NL
+3242616064,3242616191,FR
+3242616192,3242616319,ES
+3242616320,3242616383,FR
+3242616384,3242616415,NL
+3242616416,3242616447,FR
+3242616448,3242616575,DE
+3242616576,3242616959,FR
+3242616960,3242617087,IT
+3242617088,3242617599,FR
+3242617600,3242617727,GB
+3242617728,3242617911,FR
+3242617912,3242617919,ES
+3242617920,3242618239,FR
+3242618240,3242618367,NL
+3242618368,3242618415,FR
+3242618416,3242618431,CZ
3242618432,3242618495,PL
-3242618496,3242622207,FR
+3242618496,3242620199,FR
+3242620200,3242620207,ES
+3242620208,3242620223,FR
+3242620224,3242620239,PT
+3242620240,3242620255,ES
+3242620256,3242620287,PL
+3242620288,3242620351,FR
+3242620352,3242620359,ES
+3242620360,3242620367,FR
+3242620368,3242620383,PL
+3242620384,3242621959,FR
+3242621960,3242621967,PL
+3242621968,3242622031,FR
+3242622032,3242622047,PL
+3242622048,3242622207,FR
3242622208,3242622463,PL
-3242622464,3242622915,FR
+3242622464,3242622591,FR
+3242622592,3242622623,PL
+3242622624,3242622915,FR
3242622916,3242622927,PL
3242622928,3242622959,FR
3242622960,3242622975,PL
@@ -102919,7 +117796,9 @@
3242950656,3242983423,BE
3242983424,3243048959,IT
3243048960,3243114495,SI
-3243114496,3243245567,NL
+3243114496,3243225087,NL
+3243225088,3243229183,GB
+3243229184,3243245567,NL
3243245568,3243376639,AT
3243376640,3243442175,GB
3243442176,3243507711,AT
@@ -102969,10 +117848,15 @@
3243531008,3243531263,DE
3243531776,3243532031,AT
3243532032,3243532287,DE
-3243532288,3243536383,CZ
+3243532288,3243533311,CZ
+3243533312,3243534335,RU
+3243534336,3243535359,CZ
+3243535360,3243536383,KZ
3243536384,3243536639,AT
3243537408,3243537919,CZ
3243540480,3243540991,CZ
+3243541504,3243542527,MD
+3243542528,3243543551,DE
3243544064,3243544319,GB
3243544320,3243544575,NL
3243544576,3243552767,CZ
@@ -102985,8 +117869,10 @@
3243554816,3243555071,LV
3243555072,3243555327,RO
3243555328,3243555583,CZ
+3243555840,3243556863,RO
3243556864,3243565055,CZ
3243565056,3243569151,GB
+3243569152,3243570175,DE
3243570432,3243570687,CZ
3243570688,3243570943,PL
3243571968,3243572223,GR
@@ -103004,10 +117890,12 @@
3243999232,3244031999,NO
3244032000,3244097535,GR
3244097536,3244098559,DE
+3244098560,3244099583,SE
3244099584,3244100607,FR
3244100608,3244102655,UA
3244102656,3244103679,CH
3244103680,3244104703,BG
+3244104704,3244105727,RU
3244105728,3244107775,GB
3244107776,3244108799,RO
3244108800,3244109823,GB
@@ -103018,12 +117906,12 @@
3244114944,3244115967,PL
3244115968,3244116991,SK
3244116992,3244118015,UA
-3244119040,3244120063,GB
+3244118016,3244120063,GB
3244120064,3244122111,PL
3244123136,3244124159,UA
3244124160,3244125183,PL
-3244125184,3244126207,UA
-3244126208,3244127231,BE
+3244125184,3244126207,IT
+3244126208,3244127231,FR
3244127232,3244128255,UA
3244128256,3244129279,RU
3244129280,3244130303,FR
@@ -103042,7 +117930,15 @@
3244144640,3244146687,UA
3244146688,3244146943,GB
3244146944,3244147711,RU
-3244147712,3244149759,GB
+3244147712,3244147775,GB
+3244147776,3244147839,DE
+3244147840,3244147967,GB
+3244147968,3244148031,IE
+3244148032,3244148095,NO
+3244148096,3244148223,GB
+3244148224,3244148287,DE
+3244148288,3244148351,FR
+3244148352,3244149759,GB
3244149760,3244150783,PL
3244150784,3244151807,CH
3244151808,3244152831,KZ
@@ -103050,7 +117946,7 @@
3244153856,3244154879,NO
3244154880,3244155903,GB
3244155904,3244156927,UA
-3244157952,3244158975,RU
+3244156928,3244158975,RU
3244158976,3244159999,DE
3244160000,3244161023,RU
3244161024,3244162047,SE
@@ -103059,7 +117955,9 @@
3244228608,3244261375,TN
3244261376,3244277759,IE
3244277760,3244294143,SI
-3244294144,3244818431,DE
+3244294144,3244802047,DE
+3244802048,3244806143,GB
+3244806144,3244818431,DE
3244818432,3244818687,ES
3244818688,3244818943,AT
3244818944,3244819199,PL
@@ -103087,7 +117985,7 @@
3244825088,3244825343,DE
3244825344,3244826111,RU
3244826112,3244826367,RO
-3244826368,3244826623,CH
+3244826368,3244826623,FR
3244826624,3244826879,DE
3244826880,3244827135,MK
3244827136,3244827391,AT
@@ -103127,7 +118025,6 @@
3244836864,3244837119,FR
3244837120,3244837375,RO
3244837376,3244837887,RU
-3244837888,3244838143,CY
3244838144,3244838399,IL
3244838400,3244838655,GB
3244838656,3244838911,BG
@@ -103145,7 +118042,6 @@
3244842752,3244843007,DE
3244843008,3244843263,UA
3244843264,3244843519,RU
-3244843520,3244843775,NL
3244843776,3244844031,PL
3244844032,3244844287,SE
3244844288,3244844543,GB
@@ -103184,7 +118080,7 @@
3244853760,3244854015,TR
3244854016,3244854271,RU
3244854272,3244854527,GB
-3244854784,3244855295,RU
+3244855040,3244855295,RU
3244855296,3244855551,GB
3244855552,3244855807,RU
3244855808,3244856063,DE
@@ -103246,7 +118142,9 @@
3244872704,3244872959,IR
3244872960,3244873215,UA
3244873216,3244873471,SE
-3244873472,3244873727,IE
+3244873472,3244873537,IE
+3244873538,3244873538,US
+3244873539,3244873727,IE
3244873728,3244873983,DE
3244873984,3244874239,SE
3244874240,3244874495,ES
@@ -103279,7 +118177,7 @@
3244882176,3244882431,UA
3244882432,3244882687,IT
3244882688,3244882943,PL
-3244883200,3244883455,RU
+3244883200,3244883455,KZ
3244883456,3244883711,CZ
3244883712,3244883967,NL
3244883968,3244884223,DE
@@ -103386,7 +118284,7 @@
3244913152,3244913407,RU
3244913408,3244913663,SI
3244913664,3244913919,DK
-3244913920,3244914431,RU
+3244914176,3244914431,RU
3244914432,3244914687,SA
3244914688,3244914943,GB
3244915200,3244915455,PL
@@ -103431,7 +118329,7 @@
3244926976,3244927231,DE
3244927232,3244927487,RU
3244927488,3244927743,GB
-3244927744,3244927999,UA
+3244927744,3244927999,US
3244928000,3244928255,GB
3244928256,3244928511,NL
3244928512,3244929023,RU
@@ -103497,7 +118395,6 @@
3244946944,3244947455,DE
3244947456,3244947711,PL
3244947712,3244947967,UA
-3244947968,3244948223,DE
3244948224,3244948479,PL
3244948480,3244948735,FR
3244948736,3244948991,IE
@@ -103506,7 +118403,8 @@
3244951552,3244952575,FI
3244952576,3244953599,GB
3244953600,3244954623,DE
-3244955648,3244957695,UA
+3244954624,3244957695,UA
+3244957696,3244958719,DE
3244958720,3244959743,FR
3244959744,3244960767,RU
3244960768,3244961791,RO
@@ -103531,12 +118429,13 @@
3244986368,3244987391,UA
3244987392,3244988415,RU
3244988416,3244990463,PL
-3244990464,3244991487,UA
+3244990464,3244991487,RU
3244991488,3244992511,DK
3244992512,3244994559,RU
3244994560,3244995583,ES
3244995584,3244996607,IT
-3244996608,3244998655,RU
+3244996608,3244997631,UA
+3244997632,3244998655,RU
3244998656,3244999679,PL
3244999680,3245000703,IQ
3245000704,3245001727,UA
@@ -103552,7 +118451,6 @@
3245008896,3245009919,RU
3245009920,3245010431,UA
3245010432,3245010687,PL
-3245010688,3245010943,FR
3245010944,3245011967,RU
3245011968,3245012991,PL
3245012992,3245014015,UA
@@ -103564,7 +118462,9 @@
3245019136,3245019391,UZ
3245019392,3245019462,SC
3245019463,3245019463,UZ
-3245019464,3245019647,SC
+3245019464,3245019541,SC
+3245019542,3245019542,UZ
+3245019543,3245019647,SC
3245019648,3245020159,UZ
3245020160,3245021183,RU
3245021184,3245022207,UA
@@ -103578,13 +118478,15 @@
3245030400,3245032447,RU
3245032448,3245033471,BG
3245033472,3245034495,UA
+3245034496,3245035519,DE
3245035520,3245036543,UA
3245036544,3245037567,IS
3245037568,3245038591,PL
3245038592,3245039615,RU
3245039616,3245040639,MD
3245040640,3245041663,RU
-3245041664,3245044735,UA
+3245041664,3245043711,UA
+3245043712,3245044735,RU
3245044736,3245045759,GB
3245045760,3245046783,DE
3245046784,3245047807,FR
@@ -103597,11 +118499,13 @@
3245057024,3245058047,PL
3245058048,3245061119,UA
3245061120,3245062143,RU
+3245062144,3245063167,DE
3245063168,3245065215,RU
3245065216,3245066239,PL
3245066240,3245067263,UA
3245067264,3245068287,GB
-3245069312,3245070335,PL
+3245068288,3245069311,DE
+3245069312,3245071359,PL
3245071360,3245072383,NL
3245072384,3245073407,UA
3245073408,3245076479,RU
@@ -103640,6 +118544,7 @@
3245106688,3245107711,UA
3245107712,3245108735,CZ
3245108736,3245109247,FR
+3245109248,3245110271,CZ
3245110272,3245111295,DE
3245111296,3245112319,UA
3245112320,3245113343,PL
@@ -103648,7 +118553,7 @@
3245114368,3245114879,SK
3245114880,3245115391,JO
3245115392,3245115903,CH
-3245115904,3245116415,DE
+3245115904,3245116415,AT
3245116416,3245116927,FR
3245116928,3245117439,KW
3245117440,3245118463,LV
@@ -103711,6 +118616,7 @@
3245146112,3245147135,FR
3245147136,3245148159,DE
3245148160,3245149183,UA
+3245149184,3245150207,GB
3245150208,3245154303,IS
3245154304,3245158399,IT
3245158400,3245158911,CH
@@ -103723,12 +118629,13 @@
3245161728,3245161983,BG
3245161984,3245162495,BE
3245163008,3245163519,KE
-3245163520,3245164543,RU
+3245163520,3245164031,NL
+3245164032,3245164543,RU
3245164544,3245165055,BE
3245165056,3245165567,AT
3245165568,3245166079,RU
3245166592,3245166847,UA
-3245166848,3245167103,GB
+3245166848,3245167103,SA
3245167104,3245167359,IL
3245167360,3245167615,GB
3245168128,3245168383,SE
@@ -103740,7 +118647,9 @@
3245169920,3245170175,PT
3245170432,3245170687,CH
3245170688,3245171711,DE
+3245171712,3245172735,PL
3245172736,3245173759,IT
+3245173760,3245174783,LT
3245174784,3245175039,IT
3245175040,3245175295,DE
3245175296,3245175551,RU
@@ -103765,6 +118674,7 @@
3245182976,3245183999,UA
3245184000,3245187071,AT
3245187072,3245189119,UA
+3245189120,3245190143,GB
3245190144,3245191167,ES
3245191168,3245193215,CZ
3245193216,3245195263,BE
@@ -103800,7 +118710,7 @@
3245210112,3245210623,FR
3245210624,3245211135,HU
3245211136,3245211647,GB
-3245212672,3245213183,GB
+3245211648,3245212671,RU
3245213184,3245213695,DE
3245213696,3245214207,LV
3245214208,3245214719,AT
@@ -103859,7 +118769,7 @@
3245250048,3245250303,DE
3245250304,3245250559,IT
3245250560,3245250815,FR
-3245250816,3245251071,DE
+3245250816,3245251071,CH
3245251072,3245251327,ES
3245251328,3245251583,MT
3245251584,3245251839,UA
@@ -103880,6 +118790,8 @@
3245260288,3245260799,BE
3245260800,3245261823,DE
3245261824,3245262847,DK
+3245262848,3245263615,HK
+3245263616,3245263871,NL
3245263872,3245264895,DE
3245264896,3245266943,TR
3245266944,3245268991,BG
@@ -103912,6 +118824,7 @@
3245288960,3245289215,IT
3245289216,3245289471,AT
3245289472,3245290495,UA
+3245290496,3245291519,ES
3245291520,3245292543,DE
3245292544,3245293567,UA
3245293568,3245294079,FI
@@ -103919,6 +118832,7 @@
3245294592,3245295103,RO
3245295104,3245296127,IT
3245296128,3245296639,GB
+3245296640,3245297663,FI
3245297920,3245298175,NL
3245298176,3245298431,IE
3245298432,3245298687,UA
@@ -103942,6 +118856,8 @@
3245309952,3245311999,CZ
3245312000,3245314047,DE
3245314048,3245315071,PL
+3245315072,3245316095,SE
+3245316096,3245317119,NL
3245317120,3245318143,UA
3245318400,3245318655,RO
3245318656,3245318911,DK
@@ -103955,7 +118871,7 @@
3245321472,3245321727,UA
3245321984,3245322239,DE
3245322240,3245323263,RU
-3245324288,3245325311,GB
+3245323264,3245325311,GB
3245325312,3245326335,UA
3245326336,3245326847,SI
3245326848,3245327359,BG
@@ -103975,10 +118891,14 @@
3245337856,3245338367,DE
3245338368,3245339647,UA
3245339648,3245340671,LV
-3245341696,3245342719,RU
+3245340672,3245342719,RU
3245342720,3245408255,CN
3245408256,3245867007,GB
-3245867008,3245932543,IE
+3245867008,3245916159,IE
+3245916160,3245917183,GB
+3245917184,3245931263,IE
+3245931264,3245931519,GB
+3245931520,3245932543,IE
3245932544,3245998079,BE
3245998080,3246129151,US
3246129152,3246129407,RU
@@ -104036,7 +118956,7 @@
3246182400,3246186495,SY
3246186496,3246187519,RU
3246187520,3246190591,SY
-3246190592,3246191615,GB
+3246190592,3246191615,US
3246191616,3246192639,DE
3246192640,3246193663,PS
3246193664,3246194175,SY
@@ -104050,9 +118970,9 @@
3246359552,3246362623,US
3246362624,3246371073,ES
3246371074,3246371074,PT
-3246371075,3246374911,ES
-3246378752,3246379007,ES
+3246371075,3246379007,ES
3246379008,3246381055,GB
+3246381056,3246383103,ES
3246383872,3246384127,ES
3246385152,3246387199,US
3246387200,3246388223,GB
@@ -104063,7 +118983,9 @@
3246784512,3246825983,CH
3246825984,3246826239,US
3246826240,3246915583,CH
-3246915584,3247046655,PT
+3246915584,3246979783,PT
+3246979784,3246979784,US
+3246979785,3247046655,PT
3247046656,3247046911,AT
3247046912,3247047679,SI
3247048192,3247048703,NO
@@ -104151,27 +119073,42 @@
3247108096,3247109119,PL
3247109120,3247110143,UA
3247110144,3247111167,NL
+3247111168,3247112191,CH
3247112192,3247177727,FR
3247177728,3247243263,TR
-3247243264,3247247431,DE
-3247247432,3247247439,NL
-3247247440,3247251063,DE
-3247251064,3247251071,NL
-3247251072,3247255330,DE
-3247255331,3247255331,NL
-3247255332,3247265791,DE
-3247265792,3247266047,NL
-3247266048,3247276287,DE
-3247276288,3247276543,NL
-3247276544,3247282343,DE
-3247282344,3247282351,NL
-3247282352,3247286104,DE
-3247286105,3247286105,NL
-3247286106,3247302833,DE
-3247302834,3247302834,NL
-3247302835,3247305215,DE
-3247305216,3247305223,NL
-3247305224,3247308799,DE
+3247243264,3247243775,DE
+3247243776,3247244031,NL
+3247244032,3247244287,DE
+3247244288,3247248383,NL
+3247248384,3247250431,DE
+3247250432,3247253503,NL
+3247253504,3247255039,DE
+3247255040,3247256831,NL
+3247256832,3247258879,DE
+3247258880,3247259135,DK
+3247259136,3247260671,DE
+3247260672,3247266559,NL
+3247266560,3247267071,DE
+3247267072,3247267839,NL
+3247267840,3247271679,DE
+3247271680,3247274239,NL
+3247274240,3247274495,DE
+3247274496,3247275519,NL
+3247275520,3247276031,DE
+3247276032,3247278847,NL
+3247278848,3247279615,DE
+3247279616,3247279871,NL
+3247279872,3247280127,DE
+3247280128,3247288319,NL
+3247288320,3247291647,DE
+3247291648,3247292415,NL
+3247292416,3247299363,GB
+3247299364,3247299364,DE
+3247299365,3247300607,GB
+3247300608,3247301119,DE
+3247301120,3247302143,NL
+3247302144,3247302655,DE
+3247302656,3247308799,NL
3247308800,3247309055,BG
3247309056,3247309567,FI
3247309824,3247313407,FI
@@ -104213,7 +119150,9 @@
3247349248,3247349503,FR
3247349504,3247349759,UA
3247349760,3247353855,SE
-3247353856,3247357951,FI
+3247353856,3247356927,FI
+3247356928,3247357951,DE
+3247360000,3247361023,DE
3247361024,3247361279,FI
3247362048,3247362303,RO
3247362304,3247362559,HU
@@ -104242,7 +119181,9 @@
3247375360,3247375871,FI
3247376384,3247378431,FI
3247379200,3247379455,FI
+3247379456,3247380479,NL
3247382528,3247390719,FI
+3247390720,3247391743,RU
3247392256,3247393791,FI
3247394048,3247394303,PL
3247394560,3247397887,FI
@@ -104262,15 +119203,19 @@
3247702016,3247702271,RO
3247702528,3247703295,ES
3247703552,3247704063,FR
+3247704064,3247705087,BE
3247705856,3247706111,RU
3247708160,3247711743,ES
3247711744,3247712255,IT
+3247712256,3247713279,TR
3247713280,3247713535,RU
-3247713536,3247713791,BE
3247713792,3247714047,SK
3247726592,3247742975,ES
3247742976,3247751167,DE
-3247751168,3247769599,ES
+3247751168,3247765503,ES
+3247765760,3247766527,CH
+3247767040,3247767295,ES
+3247767552,3247769599,ES
3247769600,3247771647,DE
3247775744,3247783935,DE
3247783936,3247788031,US
@@ -104308,7 +119253,7 @@
3247848448,3247849471,IT
3247849472,3247849727,DE
3247849728,3247849983,RU
-3247849984,3247850239,SE
+3247849984,3247850239,GB
3247850240,3247850495,BG
3247850496,3247850751,RU
3247850752,3247851007,PL
@@ -104356,7 +119301,8 @@
3247909888,3247910911,DE
3247910912,3247912959,PL
3247912960,3247913983,UA
-3247913984,3247915007,DE
+3247913984,3247914495,DE
+3247914496,3247915007,AT
3247915008,3247917055,PL
3247917056,3247918079,NL
3247918080,3247919103,PL
@@ -104384,46 +119330,78 @@
3248488704,3248490495,NO
3248490752,3248491007,NO
3248491520,3248492031,RU
-3248492544,3248496639,NO
-3248496896,3248497151,IL
+3248492544,3248493567,DE
+3248493568,3248493823,NO
+3248494592,3248496639,NO
+3248496896,3248497151,US
3248497152,3248498431,NO
3248498432,3248498687,DE
3248498688,3248504831,NO
3248513280,3248513535,UA
3248513536,3248514047,AT
-3248514816,3248521215,NO
+3248514816,3248515071,FR
+3248515072,3248521215,NO
3248521984,3248522239,RU
3248522240,3248522751,NO
3248523264,3248524287,NO
+3248524288,3248525311,GR
+3248525312,3248526335,TR
3248526336,3248527359,NO
+3248527360,3248528383,NL
3248528384,3248528895,NO
3248528896,3248529151,RU
-3248529408,3248540671,NO
+3248529408,3248536575,NO
+3248536576,3248537599,GB
+3248537600,3248540671,NO
3248540672,3248541183,RU
3248541184,3248541695,SE
3248545792,3248546815,UA
3248546816,3248547839,RU
+3248547840,3248548863,GB
3248549632,3248549887,SE
3248551936,3248553215,NO
3248553728,3248553983,RU
3248553984,3248554239,RO
+3248555008,3248557055,GB
3248557056,3248558079,UA
3248558080,3248560127,NO
-3248560896,3248561151,NO
-3248561664,3248562080,NO
-3248562081,3248562081,DK
-3248562082,3248575487,NO
+3248560896,3248561151,IN
+3248561664,3248561954,DK
+3248561955,3248561955,NO
+3248561956,3248562082,DK
+3248562083,3248562083,NO
+3248562084,3248562175,DK
+3248562176,3248575487,NO
3248575488,3248576511,CZ
-3248576512,3248599039,NO
+3248576512,3248586751,NO
+3248589312,3248589823,NO
+3248589824,3248590847,FI
+3248590848,3248591871,NO
+3248591872,3248592895,DE
+3248592896,3248599039,NO
3248599040,3248603135,SE
3248603136,3248603391,BG
3248603392,3248603647,RU
3248603648,3248604159,NO
-3248606976,3248619519,NO
-3248619520,3248624383,DK
-3248624384,3248624639,US
-3248624640,3248750591,DK
+3248604160,3248605183,DE
+3248605184,3248606207,AE
+3248606976,3248608255,NO
+3248608256,3248609279,RU
+3248609280,3248610303,NO
+3248610304,3248611327,ES
+3248611328,3248619519,NO
+3248619520,3248623615,DK
+3248623616,3248624639,US
+3248624640,3248624895,AU
+3248625152,3248625663,AU
+3248626177,3248626431,DK
+3248626688,3248638463,DK
+3248638464,3248638719,GB
+3248638720,3248716287,DK
+3248716288,3248716799,GB
+3248716800,3248750591,DK
3248750592,3248750847,PT
+3248751616,3248752639,TR
3248752640,3248752895,DE
3248752896,3248753151,TR
3248753408,3248753663,GB
@@ -104453,7 +119431,15 @@
3248790784,3248791039,PL
3248791040,3248791295,BE
3248791296,3248791551,DE
-3248791552,3248799743,GB
+3248791552,3248792063,GB
+3248792320,3248792343,GB
+3248792352,3248792399,GB
+3248792416,3248792439,GB
+3248792488,3248792527,GB
+3248792536,3248792575,GB
+3248796608,3248796863,GB
+3248798976,3248799231,GB
+3248799736,3248799743,GB
3248799744,3248800255,NL
3248800256,3248800767,RU
3248800768,3248801279,FR
@@ -104462,7 +119448,6 @@
3248802304,3248802815,FR
3248802816,3248803327,RU
3248803328,3248803839,GB
-3248804352,3248804863,LV
3248804864,3248805375,DE
3248805376,3248805887,RU
3248805888,3248806399,NL
@@ -104478,6 +119463,7 @@
3248812544,3248813055,GB
3248813056,3248813567,CH
3248813568,3248814079,DE
+3248814080,3248815103,BG
3248815104,3248815615,GB
3248815616,3248816127,PL
3248816128,3248881663,CZ
@@ -104528,7 +119514,6 @@
3249100288,3249100799,UA
3249100800,3249101311,IL
3249101312,3249101823,GB
-3249101824,3249102335,RU
3249102336,3249102847,DE
3249102848,3249103359,RU
3249103360,3249103871,DE
@@ -104544,7 +119529,9 @@
3249110016,3249111039,UA
3249111040,3249111551,RU
3249111552,3249112063,KW
-3249112064,3249113087,UA
+3249112064,3249112319,UA
+3249112320,3249112575,GB
+3249112576,3249113087,UA
3249113088,3249113599,RO
3249113600,3249114111,NL
3249114112,3249114623,GB
@@ -104592,14 +119579,18 @@
3249140736,3249141247,NL
3249141248,3249141759,IL
3249141760,3249142271,RU
-3249142784,3249143295,UA
+3249142784,3249143807,PL
3249143808,3249274879,AT
3249274880,3249405951,NL
-3249405952,3249537023,DE
+3249405952,3249521279,DE
+3249521280,3249521343,UA
+3249521344,3249537023,DE
3249537024,3249537279,PT
3249537792,3249538047,GB
3249538048,3249541119,NL
-3249545216,3249551359,NL
+3249545216,3249547263,NL
+3249547264,3249548287,PL
+3249548288,3249551359,NL
3249551360,3249552639,GB
3249552640,3249552895,NL
3249553152,3249553407,NL
@@ -104607,18 +119598,30 @@
3249569792,3249574143,NL
3249574144,3249574399,RU
3249574400,3249574655,SE
-3249574912,3249590527,NL
+3249574912,3249583103,NL
+3249583104,3249584127,BY
+3249584128,3249590527,NL
3249590528,3249590783,FR
-3249592320,3249598463,NL
+3249591296,3249592319,GE
+3249592320,3249595391,NL
+3249595392,3249596415,ES
+3249596416,3249598463,NL
+3249598464,3249599487,IR
3249600256,3249600511,AT
3249600512,3249601535,UA
-3249601536,3249668095,NL
+3249601536,3249650687,NL
+3249650688,3249651711,FI
+3249651712,3249668095,NL
3249668096,3249676287,IE
3249676288,3249676543,GB
3249676800,3249677055,UA
3249677056,3249677311,SE
+3249677312,3249678335,DE
3249678336,3249678847,IE
+3249679360,3249680383,ES
+3249680384,3249681407,UA
3249681664,3249681919,IE
+3249682432,3249683455,DE
3249683456,3249684479,SE
3249684480,3249696767,IE
3249697280,3249697535,IE
@@ -104663,6 +119666,7 @@
3249716480,3249716735,NL
3249716736,3249717247,UA
3249717248,3249718271,LV
+3249718272,3249719295,NL
3249719296,3249720319,IR
3249720320,3249721343,IT
3249721344,3249721599,AT
@@ -104673,7 +119677,6 @@
3249723392,3249723647,IT
3249723648,3249723903,GB
3249724160,3249724415,LU
-3249724672,3249724927,RU
3249724928,3249725183,BG
3249725184,3249725439,GB
3249725440,3249725951,RO
@@ -104699,7 +119702,9 @@
3249830144,3249830399,SE
3249830400,3249830655,IT
3249830656,3249830911,DK
-3249830912,3249843711,SE
+3249830912,3249841151,SE
+3249841152,3249841407,GB
+3249841408,3249843711,SE
3249843712,3249843967,GB
3249843968,3249844479,SE
3249844480,3249844735,AT
@@ -104708,12 +119713,15 @@
3249845760,3249846271,DE
3249846272,3249850623,SE
3249850624,3249850879,GB
-3249850880,3249859583,SE
+3249850880,3249855487,SE
+3249855488,3249856511,NL
+3249856512,3249859583,SE
3249859584,3249860095,DE
3249860096,3249861375,SE
3249861376,3249861631,BE
3249861632,3249862143,DE
-3249862144,3249862655,SE
+3249862144,3249862399,BE
+3249862400,3249862655,SE
3249862656,3249863167,DE
3249863168,3249863423,BE
3249863424,3249863679,SE
@@ -104726,7 +119734,8 @@
3249868032,3249868287,DK
3249868288,3249868543,SE
3249868544,3249868799,DE
-3249868800,3249871103,SE
+3249868800,3249869823,NL
+3249869824,3249871103,SE
3249871104,3249871359,NO
3249871360,3249871615,US
3249871616,3249871871,NO
@@ -104734,7 +119743,9 @@
3249872384,3249872639,GB
3249872640,3249910271,SE
3249910272,3249910783,NL
-3249910784,3249924607,SE
+3249910784,3249911807,SE
+3249911808,3249912319,GB
+3249912320,3249924607,SE
3249924608,3249924863,NO
3249924864,3249926143,SE
3249926144,3249926399,AU
@@ -104745,20 +119756,22 @@
3249929984,3249930239,NO
3249930240,3249931263,SE
3249931264,3249931775,NL
-3249931776,3249933311,SE
-3249933312,3249934335,US
-3249934336,3249935871,SE
+3249931776,3249932287,SE
+3249932288,3249934335,US
+3249934336,3249934847,IT
+3249934848,3249935871,SE
3249935872,3249936383,DE
3249936384,3249960447,SE
3249960448,3249960959,DE
3249960960,3249961215,CA
3249961216,3249961471,SE
3249961472,3249961727,NL
-3249961728,3249967128,SE
-3249967129,3249967129,IL
-3249967130,3249967615,SE
+3249961728,3249967103,SE
+3249967104,3249967615,IL
3249967616,3249967871,GB
-3249967872,3249969663,SE
+3249967872,3249968127,SE
+3249968128,3249969151,FR
+3249969152,3249969663,SE
3249969664,3249970175,DE
3249970176,3249970431,SE
3249970432,3249970687,NO
@@ -104767,7 +119780,9 @@
3249971200,3249971455,IT
3249971456,3249971711,SE
3249971712,3249972735,DE
-3249972736,3249974527,SE
+3249972736,3249973759,SE
+3249973760,3249974015,NL
+3249974016,3249974527,SE
3249974528,3249974783,ES
3249974784,3249976063,SE
3249976064,3249976319,FR
@@ -104790,20 +119805,32 @@
3250007296,3250007551,GB
3250007552,3250010367,SE
3250010368,3250010879,CH
-3250010880,3250013976,SE
+3250010880,3250012159,SE
+3250012160,3250013183,DE
+3250013184,3250013976,SE
3250013977,3250013977,NO
3250013978,3250013978,DK
3250013979,3250014207,SE
3250014208,3250014719,DE
-3250014720,3250015231,SE
+3250014720,3250014975,SE
+3250014976,3250015231,NO
3250015232,3250015743,FI
3250015744,3250016767,SE
3250016768,3250017023,NL
3250017024,3250017791,SE
3250017792,3250018303,DE
-3250018304,3250020863,SE
+3250018304,3250019071,SE
+3250019072,3250019327,GB
+3250019328,3250019839,SE
+3250019840,3250020095,GB
+3250020096,3250020863,SE
3250020864,3250021375,IT
-3250021376,3250030335,SE
+3250021376,3250022399,FR
+3250022400,3250023423,SE
+3250023424,3250024447,DE
+3250024448,3250026495,SE
+3250026496,3250027519,FR
+3250027520,3250030335,SE
3250030336,3250030591,DK
3250030592,3250031103,DE
3250031104,3250031359,DK
@@ -104824,7 +119851,7 @@
3250192384,3250192639,AT
3250192896,3250193151,IL
3250193152,3250193407,DE
-3250193408,3250193663,PL
+3250193408,3250193663,IE
3250193664,3250194175,AT
3250194176,3250194431,DE
3250194432,3250194687,FR
@@ -104865,12 +119892,14 @@
3250277632,3250277887,DE
3250277888,3250278399,UA
3250278400,3250279423,RU
+3250279424,3250280447,DE
3250307072,3250323199,AT
3250323200,3250323455,RU
3250323456,3250323711,PL
3250324480,3250324991,GB
3250324992,3250325247,AE
3250325248,3250325503,MA
+3250325504,3250326527,CH
3250326528,3250327039,BH
3250331648,3250335743,MT
3250335744,3250339839,KW
@@ -104953,7 +119982,15 @@
3250427136,3250427391,NL
3250427392,3250429951,DE
3250429952,3250438143,SI
-3250438144,3250446335,CH
+3250438144,3250438911,CH
+3250438912,3250439167,FR
+3250439168,3250440633,CH
+3250440634,3250440634,US
+3250440635,3250445567,CH
+3250445568,3250445599,GB
+3250445600,3250445683,CH
+3250445684,3250445687,GB
+3250445688,3250446335,CH
3250446336,3250454527,DE
3250454528,3250585599,BE
3250585600,3250585855,NL
@@ -104981,7 +120018,8 @@
3250634752,3250642943,GB
3250642944,3250651135,CH
3250651136,3250659327,IT
-3250659328,3250667519,GB
+3250659328,3250660607,GB
+3250661376,3250662399,GB
3250667520,3250675711,PL
3250675712,3250683903,GB
3250683904,3250692095,CH
@@ -105030,7 +120068,6 @@
3250755584,3250755839,FR
3250755840,3250756351,RU
3250756608,3250756863,BG
-3250756864,3250757119,DE
3250757120,3250757375,BE
3250757376,3250757631,HU
3250757632,3250765823,GH
@@ -105073,6 +120110,7 @@
3251126784,3251127295,PL
3251127296,3251127807,UA
3251127808,3251128319,NL
+3251128320,3251129343,RU
3251129344,3251129855,UA
3251129856,3251130367,CH
3251130368,3251130879,GB
@@ -105098,7 +120136,7 @@
3251142912,3251143167,RU
3251143424,3251143679,LV
3251143680,3251143935,NL
-3251143936,3251144191,GB
+3251143936,3251144191,PL
3251144448,3251144703,BE
3251144704,3251144959,HU
3251144960,3251145471,DE
@@ -105175,7 +120213,6 @@
3251167488,3251167743,DK
3251167744,3251168255,PL
3251168256,3251168511,AT
-3251168512,3251168767,UA
3251168768,3251169023,DE
3251169024,3251169279,FR
3251169280,3251170047,PL
@@ -105221,6 +120258,7 @@
3251187456,3251187711,GB
3251187712,3251188735,NL
3251188736,3251189759,DE
+3251189760,3251190783,GB
3251190784,3251191807,UA
3251191808,3251192319,GB
3251192320,3251192831,LV
@@ -105232,7 +120270,7 @@
3251195904,3251196927,UA
3251196928,3251197951,CH
3251197952,3251198975,RU
-3251198976,3251199999,DE
+3251198976,3251199999,GB
3251200000,3251200511,SE
3251200512,3251200767,UA
3251201024,3251201279,UA
@@ -105254,7 +120292,7 @@
3251208192,3251209215,CY
3251209216,3251210239,GB
3251210240,3251211263,PL
-3251211264,3251212287,UA
+3251211264,3251212287,BG
3251212288,3251212415,PL
3251212416,3251212671,FI
3251212800,3251212927,FR
@@ -105270,7 +120308,7 @@
3251213504,3251213567,NL
3251213632,3251213695,PL
3251213760,3251213823,CY
-3251213824,3251213887,GB
+3251213824,3251213887,FR
3251213888,3251214015,CY
3251214080,3251214143,CY
3251214272,3251214335,DE
@@ -105299,11 +120337,14 @@
3251220224,3251220479,UA
3251220480,3251222527,DE
3251222528,3251224575,GB
+3251224576,3251225599,IR
3251225600,3251226111,GB
3251226112,3251226623,UA
3251226624,3251227135,GB
3251227648,3251228159,GB
3251228160,3251228671,UA
+3251228672,3251228927,IT
+3251228928,3251229695,AT
3251229696,3251230719,SI
3251230720,3251231743,UA
3251231744,3251232767,NO
@@ -105312,6 +120353,9 @@
3251234816,3251235839,RO
3251235840,3251236863,DE
3251236864,3251237887,BG
+3251237888,3251238911,FI
+3251238912,3251239935,LT
+3251239936,3251240191,IN
3251240960,3251241215,BE
3251241216,3251243007,GB
3251245056,3251245311,DE
@@ -105324,6 +120368,7 @@
3251246848,3251247103,NL
3251247104,3251249151,DE
3251249152,3251251199,NL
+3251251200,3251252223,EE
3251252736,3251256831,CH
3251256832,3251257343,GB
3251257344,3251259903,BE
@@ -105348,26 +120393,33 @@
3251272448,3251272703,AT
3251272704,3251272959,DE
3251272960,3251273471,FR
-3251273472,3251286015,DE
+3251273472,3251273727,DE
+3251273728,3251281919,SG
+3251281920,3251286015,DE
3251286016,3251288063,US
3251288064,3251290111,SG
3251290112,3251302399,GB
3251302400,3251306495,LI
3251306496,3251307007,AT
3251307776,3251308031,GB
-3251308032,3251308543,RS
3251311104,3251311615,RS
3251311616,3251312127,GB
3251312384,3251312639,RS
3251313152,3251313663,RS
+3251313664,3251314687,ES
3251314688,3251315711,FR
-3251315712,3251317759,RU
+3251316736,3251317759,RU
3251317760,3251318783,PL
3251318784,3251319807,UA
+3251319808,3251320831,FR
3251320832,3251321855,PL
3251321856,3251322879,RU
3251322880,3251331071,GB
-3251331072,3251331583,FR
+3251331072,3251331321,FR
+3251331322,3251331322,GB
+3251331323,3251331323,FR
+3251331324,3251331325,CH
+3251331326,3251331583,FR
3251331584,3251332095,PL
3251332096,3251333119,RU
3251333120,3251333631,CH
@@ -105400,35 +120452,39 @@
3251364608,3251364863,RO
3251364864,3251366911,IT
3251366912,3251367423,UA
-3251367424,3251367935,DE
+3251367424,3251367679,GB
+3251367680,3251367935,FR
3251367936,3251372031,GB
3251372032,3251634175,IT
3251634176,3251896319,FI
3251896320,3252158463,NO
3252158464,3252174847,LT
-3252174848,3252196351,SE
+3252174848,3252175871,NL
+3252175872,3252177919,SE
+3252177920,3252178943,HR
+3252178944,3252191231,SE
+3252191232,3252196351,HR
3252196352,3252197119,LT
-3252197120,3252207615,SE
-3252207616,3252215807,LT
-3252215808,3252219903,SE
-3252219904,3252220927,LT
+3252197120,3252197375,SE
+3252197376,3252207615,HR
+3252207616,3252220927,LT
3252220928,3252221183,SE
3252221184,3252222463,LT
-3252222464,3252223999,SE
-3252224000,3252224511,LT
-3252224512,3252226047,SE
-3252226048,3252228095,LT
-3252228096,3252240383,SE
-3252240384,3252275199,HR
-3252275200,3252286463,SE
-3252286464,3252287487,LT
-3252287488,3252289535,SE
+3252222464,3252223487,SE
+3252223488,3252228095,LT
+3252228096,3252232319,SE
+3252232320,3252232576,NL
+3252232577,3252240383,SE
+3252240384,3252286463,HR
+3252286464,3252289535,LT
3252289536,3252289791,BG
3252289792,3252291583,GR
3252291584,3252292607,DE
3252292608,3252293631,FR
3252293632,3252297727,DE
-3252297728,3252308223,GR
+3252297728,3252298751,MD
+3252298752,3252299007,GR
+3252299776,3252308223,GR
3252308224,3252308479,DE
3252308480,3252313599,GR
3252313600,3252313855,SI
@@ -105449,7 +120505,7 @@
3252322304,3252323327,NO
3252323328,3252324351,PL
3252324352,3252326399,RU
-3252326400,3252327423,UA
+3252326400,3252327423,DE
3252327424,3252329471,PL
3252329472,3252330495,UA
3252330496,3252334591,GB
@@ -105464,7 +120520,7 @@
3252342240,3252342271,CH
3252342272,3252342527,SE
3252342528,3252342543,NO
-3252342544,3252342591,CH
+3252342544,3252342591,DE
3252342592,3252342607,IE
3252342608,3252342655,CY
3252342656,3252342783,IL
@@ -105506,13 +120562,30 @@
3252387328,3252387583,PL
3252387584,3252387839,RU
3252387840,3252404223,LT
-3252404224,3252415487,NO
-3252415488,3252415743,LU
-3252415744,3252428321,NO
+3252404224,3252405759,NO
+3252405760,3252406271,FR
+3252406272,3252407295,NO
+3252407296,3252415231,FR
+3252415232,3252415999,LU
+3252416000,3252420607,FR
+3252420608,3252424703,NO
+3252424704,3252426751,FR
+3252426752,3252427775,US
+3252427776,3252428321,FR
3252428322,3252428322,AO
-3252428323,3252449791,NO
+3252428323,3252428799,FR
+3252428800,3252429823,NO
+3252429824,3252448511,FR
+3252448512,3252448767,NO
+3252448768,3252449791,FR
3252449792,3252450047,DK
-3252450048,3252486143,NO
+3252450048,3252461567,FR
+3252461568,3252469503,NO
+3252469504,3252469759,FR
+3252469760,3252473855,NL
+3252473856,3252476927,US
+3252476928,3252477951,FR
+3252477952,3252486143,NO
3252486144,3252490239,BE
3252490240,3252496127,SE
3252496128,3252496383,AU
@@ -105540,6 +120613,7 @@
3252518912,3252527103,NL
3252527104,3252535295,BE
3252541952,3252542207,CI
+3252542464,3252543487,DE
3252543488,3252551679,BE
3252551680,3252563967,CH
3252563968,3252564479,RU
@@ -105571,7 +120645,8 @@
3252587008,3252587263,CH
3252587520,3252587775,UA
3252587776,3252588031,SE
-3252588544,3252599807,CH
+3252588544,3252589567,BA
+3252589568,3252599807,CH
3252600320,3252600575,NL
3252600576,3252600831,RU
3252600832,3252616191,CH
@@ -105579,20 +120654,29 @@
3252616960,3252617215,CH
3252617216,3252617471,PL
3252617472,3252633599,CH
+3252633600,3252634623,PL
3252634624,3252634879,RU
+3252635648,3252636671,MD
3252636672,3252636927,TR
3252636928,3252637183,DE
3252637184,3252637695,GB
3252637696,3252641791,CH
-3252642304,3252642559,UA
+3252642304,3252642559,PL
3252642560,3252642815,DK
3252642816,3252643071,AE
3252643072,3252643327,RO
3252643328,3252643583,CH
+3252643840,3252644863,AT
3252645120,3252645375,CH
-3252645888,3252682751,CH
+3252645888,3252680703,CH
+3252680704,3252681727,RU
+3252682240,3252682751,CH
3252682752,3252813823,HU
-3252813824,3252862975,RO
+3252813824,3252830207,RO
+3252830208,3252832255,MD
+3252832256,3252832767,RO
+3252832768,3252834303,MD
+3252834304,3252862975,RO
3252862976,3252879359,HU
3252879360,3252895743,EG
3252895744,3252903935,IT
@@ -105654,7 +120738,14 @@
3252945152,3252945407,GB
3252945408,3252945663,UA
3252945920,3252947455,AT
-3252948992,3252977663,AT
+3252947968,3252948991,RO
+3252948992,3252957183,AT
+3252959232,3252960255,RU
+3252960256,3252972543,AT
+3252972544,3252973567,RU
+3252973568,3252976639,AT
+3252976640,3252977663,GB
+3252979712,3252980735,GB
3252980992,3252981247,GB
3252981504,3252981759,SE
3252981760,3252982015,DE
@@ -105671,13 +120762,17 @@
3252985344,3252985855,RU
3252988416,3252988927,AT
3252989440,3252989695,PL
-3252989952,3252994303,AT
+3252989952,3252993023,AT
+3252993024,3252994047,DE
+3252994048,3252994303,AT
3252995072,3252996095,CH
3252996096,3253002239,AT
3253003008,3253003263,AT
+3253003264,3253004287,RU
3253004288,3253004799,AT
3253004800,3253005055,CZ
-3253006336,3253010431,AT
+3253005312,3253006335,CH
+3253006336,3253010431,DE
3253010432,3253075967,FI
3253075968,3253139455,RO
3253139456,3253139711,MD
@@ -105686,19 +120781,29 @@
3253223680,3253223935,UA
3253223936,3253230591,RU
3253230592,3253230847,BY
-3253230848,3253288703,RU
+3253230848,3253270527,RU
+3253270528,3253271551,BY
+3253271552,3253288703,RU
3253288704,3253288959,AR
3253288960,3253313535,RU
3253313536,3253313791,NL
3253313792,3253338111,RU
3253338112,3253338367,PL
-3253338368,3253380351,SE
+3253338368,3253350399,SE
+3253350400,3253351423,FI
+3253351424,3253352191,SE
+3253352192,3253352447,JP
+3253352448,3253355519,SE
+3253355520,3253356031,FI
+3253356032,3253380351,SE
3253380352,3253380607,GB
3253380608,3253380863,SE
3253380864,3253381119,IT
3253381120,3253383935,SE
3253383936,3253384191,NO
-3253384192,3253388287,SE
+3253384192,3253384447,SE
+3253384448,3253384703,IT
+3253384704,3253388287,SE
3253388288,3253388799,FR
3253388800,3253389055,SE
3253389056,3253389823,FR
@@ -105725,7 +120830,8 @@
3253411840,3253412095,US
3253412096,3253412351,SE
3253412352,3253412607,US
-3253412608,3253416447,SE
+3253412608,3253412863,SE
+3253413888,3253416447,SE
3253416448,3253416703,GB
3253416704,3253416959,US
3253416960,3253419519,SE
@@ -105735,7 +120841,8 @@
3253428480,3253429247,SE
3253429248,3253429759,JP
3253429760,3253430015,ES
-3253430016,3253433087,SE
+3253430016,3253432831,SE
+3253432832,3253433087,IT
3253433088,3253433343,DE
3253433344,3253434111,SE
3253434112,3253434367,GB
@@ -105747,7 +120854,10 @@
3253436160,3253436415,NO
3253436416,3253440511,SE
3253440512,3253440767,FR
-3253440768,3253443839,SE
+3253440768,3253441023,SE
+3253441024,3253441279,CL
+3253441280,3253441535,NL
+3253441536,3253443839,SE
3253443840,3253444351,NO
3253444352,3253453311,SE
3253453312,3253453567,NO
@@ -105759,17 +120869,20 @@
3253455616,3253455871,US
3253455872,3253456383,SE
3253456384,3253456639,US
-3253456640,3253460735,SE
+3253456896,3253460735,SE
3253460736,3253460991,IT
-3253460992,3253461759,SE
+3253460992,3253461247,US
+3253461248,3253461759,SE
3253461760,3253462015,PL
3253462016,3253462527,SE
3253462528,3253463039,US
-3253463040,3253464575,SE
+3253463040,3253464063,GB
+3253464064,3253464575,SE
3253464576,3253465087,NL
3253465088,3253469183,SE
3253469184,3253534719,PT
3253534720,3253600255,GB
+3253600256,3253601279,ES
3253601280,3253602303,FI
3253602304,3253603327,DE
3253603328,3253605375,PL
@@ -105780,7 +120893,7 @@
3253607424,3253608447,NG
3253608448,3253610495,UA
3253610496,3253611519,PL
-3253612544,3253613567,RU
+3253611520,3253613567,RU
3253613568,3253614591,ES
3253614592,3253615615,RO
3253615616,3253616639,DE
@@ -105789,16 +120902,16 @@
3253618688,3253619711,UA
3253619712,3253620735,IT
3253620736,3253621759,GB
+3253621760,3253622783,RU
3253622784,3253623807,DE
3253623808,3253624831,PL
3253624832,3253625855,UA
3253625856,3253626879,IT
3253626880,3253627903,DE
-3253627904,3253628159,UA
-3253628160,3253628671,RU
-3253628672,3253628927,UA
+3253627904,3253628927,UA
3253628928,3253629951,GR
3253629952,3253630975,UA
+3253630976,3253631999,ES
3253632000,3253633023,DE
3253633024,3253635071,RU
3253635072,3253636095,IT
@@ -105815,15 +120928,18 @@
3253647360,3253648383,DK
3253648384,3253648895,IL
3253648896,3253649407,PL
+3253649408,3253650431,GB
3253650432,3253651455,DE
3253651456,3253652479,PL
3253652480,3253653503,LI
3253653504,3253654527,IL
3253654528,3253657599,LV
3253657600,3253658623,UA
-3253658624,3253659647,FR
+3253658624,3253659647,DE
3253659648,3253660671,GB
+3253660672,3253661695,AT
3253661696,3253662719,NL
+3253662720,3253663743,RO
3253663744,3253664767,NL
3253664768,3253665791,DE
3253665792,3253666815,CZ
@@ -105834,6 +120950,7 @@
3253670912,3253671935,CH
3253671936,3253672959,UA
3253672960,3253673983,DE
+3253673984,3253675007,GB
3253675008,3253676031,PL
3253676032,3253677055,AT
3253677056,3253678079,PL
@@ -105844,6 +120961,7 @@
3253683200,3253685247,UA
3253685248,3253686271,FR
3253686272,3253687295,PL
+3253687296,3253688319,RO
3253688320,3253690367,NL
3253690368,3253691391,DK
3253691392,3253692415,PL
@@ -105866,7 +120984,8 @@
3253704704,3253705215,UA
3253705728,3253706239,DE
3253706240,3253706751,RO
-3253706752,3253708799,DE
+3253707264,3253707775,DE
+3253707776,3253708287,MD
3253708800,3253709311,DK
3253709312,3253709823,UA
3253709824,3253710335,RO
@@ -105906,129 +121025,250 @@
3253729792,3253730303,UA
3253730304,3253730815,RO
3253730816,3253731327,UA
-3253731328,3253731583,DE
-3253731584,3253737791,GB
+3253731328,3253732351,DE
+3253732352,3253733375,GB
+3253733376,3253735167,DE
+3253735168,3253735423,GB
+3253735424,3253735465,DE
+3253735466,3253735466,GB
+3253735467,3253737791,DE
3253737792,3253737807,FR
-3253737808,3253737823,GB
+3253737808,3253737823,DE
3253737824,3253737831,PL
3253737832,3253737839,AT
-3253737840,3253737847,GB
+3253737840,3253737847,DE
3253737848,3253737855,HU
-3253737856,3253738495,GB
-3253738496,3253738536,DE
-3253738537,3253738537,GB
-3253738538,3253738559,DE
+3253737856,3253738559,DE
3253738560,3253738567,CZ
3253738568,3253738569,BE
3253738570,3253738570,US
3253738571,3253738575,BE
-3253738576,3253738751,DE
-3253738752,3253741679,GB
+3253738576,3253738975,DE
+3253738976,3253739007,GB
+3253739008,3253741615,DE
+3253741616,3253741631,GB
+3253741632,3253741679,DE
3253741680,3253741695,RU
-3253741696,3253744415,GB
+3253741696,3253741816,DE
+3253741817,3253741817,GB
+3253741818,3253742847,DE
+3253742848,3253743103,GB
+3253743104,3253744415,DE
3253744416,3253744447,CH
-3253744448,3253744511,GB
+3253744448,3253744511,DE
3253744512,3253744512,US
-3253744513,3253745151,GB
+3253744513,3253744639,DE
+3253744640,3253744911,GB
+3253744912,3253745151,DE
3253745152,3253745183,NO
-3253745184,3253760511,GB
+3253745184,3253745919,DE
+3253745920,3253745983,GB
+3253745984,3253745999,SE
+3253746000,3253746007,DK
+3253746008,3253746015,IE
+3253746016,3253746023,AT
+3253746024,3253746031,CH
+3253746032,3253746039,FI
+3253746040,3253746047,DE
+3253746048,3253746111,IT
+3253746112,3253746559,DE
+3253746560,3253746687,GB
+3253746688,3253750031,DE
+3253750032,3253750035,GB
+3253750036,3253750155,DE
+3253750156,3253750159,ES
+3253750160,3253750167,DE
+3253750168,3253750171,FR
+3253750172,3253750175,ES
+3253750176,3253750251,DE
+3253750252,3253750255,FR
+3253750256,3253750991,DE
+3253750992,3253750999,ES
+3253751000,3253751011,DE
+3253751012,3253751015,PT
+3253751016,3253751031,DE
+3253751032,3253751035,PT
+3253751036,3253751175,DE
+3253751176,3253751179,SE
+3253751180,3253751287,DE
+3253751288,3253751291,ES
+3253751292,3253751295,IT
+3253751296,3253751919,DE
+3253751920,3253751927,GB
+3253751928,3253752067,DE
+3253752068,3253752079,GB
+3253752080,3253752083,DE
+3253752084,3253752087,GB
+3253752088,3253752127,DE
+3253752128,3253752131,GB
+3253752132,3253752211,DE
+3253752212,3253752215,GB
+3253752216,3253752503,DE
+3253752504,3253752511,GB
+3253752512,3253752615,DE
+3253752616,3253752627,GB
+3253752628,3253752631,AG
+3253752632,3253752651,GB
+3253752652,3253752675,DE
+3253752676,3253752691,GB
+3253752692,3253754139,DE
+3253754140,3253754143,GB
+3253754144,3253754191,DE
+3253754192,3253754207,FR
+3253754208,3253755235,DE
+3253755236,3253755239,IE
+3253755240,3253755551,DE
+3253755552,3253755559,IT
+3253755560,3253755895,DE
+3253755896,3253759999,GB
+3253760000,3253760511,DE
3253760512,3253760767,FR
-3253760768,3253761407,GB
+3253760768,3253761407,DE
3253761408,3253761416,ES
3253761417,3253761417,GB
3253761418,3253761471,ES
-3253761472,3253762815,GB
+3253761472,3253762815,DE
3253762816,3253762943,CH
-3253762944,3253762991,GB
-3253762992,3253762999,DE
-3253763000,3253765120,GB
-3253765121,3253765121,ES
-3253765122,3253766463,GB
+3253762944,3253762948,DE
+3253762949,3253762949,GB
+3253762950,3253763071,DE
+3253763072,3253763327,SE
+3253763328,3253764767,DE
+3253764768,3253764783,FR
+3253764784,3253765119,DE
+3253765120,3253765183,ES
+3253765184,3253765247,FR
+3253765248,3253765279,PL
+3253765280,3253765295,NL
+3253765296,3253765311,BE
+3253765312,3253765375,TR
+3253765376,3253766463,DE
3253766464,3253766527,NL
-3253766528,3253766655,GB
-3253766656,3253766911,CH
-3253766912,3253767615,GB
+3253766528,3253767615,DE
3253767616,3253767675,IE
-3253767676,3253767679,DE
-3253767680,3253767711,GB
-3253767712,3253767743,DE
-3253767744,3253768369,GB
-3253768370,3253768370,ES
-3253768371,3253768401,GB
-3253768402,3253768402,SE
-3253768403,3253768565,GB
-3253768566,3253768566,DE
-3253768567,3253769362,GB
-3253769363,3253769363,DE
-3253769364,3253769455,GB
-3253769456,3253769463,DE
-3253769464,3253770983,GB
-3253770984,3253770984,DE
-3253770985,3253771199,GB
+3253767676,3253767811,DE
+3253767812,3253767812,GB
+3253767813,3253768575,DE
+3253768576,3253768607,GB
+3253768608,3253768831,DE
+3253768832,3253768895,GB
+3253768896,3253770625,DE
+3253770626,3253770626,GB
+3253770627,3253770657,DE
+3253770658,3253770658,GB
+3253770659,3253770991,DE
+3253770992,3253770999,GB
+3253771000,3253771199,DE
3253771200,3253771215,IE
3253771216,3253771231,GB
3253771232,3253771263,IE
-3253771264,3253771561,GB
-3253771562,3253771562,DE
-3253771563,3253772063,GB
-3253772064,3253772095,DE
-3253772096,3253772519,GB
-3253772520,3253772527,DE
-3253772528,3253773055,GB
-3253773056,3253773311,DE
-3253773312,3253774583,GB
-3253774584,3253774591,DE
-3253774592,3253775183,GB
+3253771264,3253771583,DE
+3253771584,3253771647,GB
+3253771648,3253771792,DE
+3253771793,3253771793,GB
+3253771794,3253771839,DE
+3253771840,3253771903,GB
+3253771904,3253772119,DE
+3253772120,3253772127,GB
+3253772128,3253772191,DE
+3253772192,3253772207,GB
+3253772208,3253772311,DE
+3253772312,3253772319,GB
+3253772320,3253775135,DE
+3253775136,3253775151,GB
+3253775152,3253775183,DE
3253775184,3253775191,FR
-3253775192,3253775215,GB
-3253775216,3253775223,DE
-3253775224,3253775586,GB
-3253775587,3253775587,DE
-3253775588,3253775599,GB
+3253775192,3253775401,DE
+3253775402,3253775402,GB
+3253775403,3253775599,DE
3253775600,3253775607,IT
-3253775608,3253775807,GB
-3253775808,3253775823,DE
-3253775824,3253776159,GB
-3253776160,3253776175,DE
-3253776176,3253776303,GB
+3253775608,3253775609,DE
+3253775610,3253775610,GB
+3253775611,3253776303,DE
3253776304,3253776311,ES
-3253776312,3253776809,GB
+3253776312,3253776778,DE
+3253776779,3253776779,GB
+3253776780,3253776809,DE
3253776810,3253776810,CH
-3253776811,3253777791,GB
+3253776811,3253776871,DE
+3253776872,3253776879,GB
+3253776880,3253777025,DE
+3253777026,3253777026,GB
+3253777027,3253777791,DE
3253777792,3253777855,FR
-3253777856,3253778231,GB
+3253777856,3253777887,GB
+3253777888,3253778231,DE
3253778232,3253778239,FR
-3253778240,3253778271,GB
-3253778272,3253778287,DE
-3253778288,3253778391,GB
+3253778240,3253778391,DE
3253778392,3253778399,IT
-3253778400,3253778911,GB
+3253778400,3253778751,DE
+3253778752,3253778879,BE
+3253778880,3253778881,DE
+3253778882,3253778882,GB
+3253778883,3253778911,DE
3253778912,3253778943,NL
3253778944,3253779135,GB
3253779136,3253779167,NL
-3253779168,3253779215,GB
-3253779216,3253779247,DE
-3253779248,3253780991,GB
-3253780992,3253781415,DE
+3253779168,3253779199,GB
+3253779200,3253780559,DE
+3253780560,3253780563,SE
+3253780564,3253781327,DE
+3253781328,3253781335,ES
+3253781336,3253781415,DE
3253781416,3253781423,GB
-3253781424,3253781503,DE
-3253781504,3253781615,GB
+3253781424,3253781615,DE
3253781616,3253781631,FR
-3253781632,3253782527,GB
+3253781632,3253782527,DE
3253782528,3253782535,FR
-3253782536,3253783487,GB
-3253783488,3253783519,DE
-3253783520,3253785343,GB
-3253785344,3253785599,NL
-3253785600,3253788159,GB
-3253788160,3253788415,NL
-3253788416,3253791419,GB
-3253791420,3253791423,DE
-3253791424,3253793071,GB
+3253782536,3253784391,DE
+3253784392,3253784399,GB
+3253784400,3253784575,DE
+3253784576,3253784703,GB
+3253784704,3253784803,DE
+3253784804,3253784804,GB
+3253784805,3253785123,DE
+3253785124,3253785124,GB
+3253785125,3253786623,DE
+3253786624,3253786879,GB
+3253786880,3253788025,DE
+3253788026,3253788026,FR
+3253788027,3253788079,DE
+3253788080,3253788082,GB
+3253788083,3253788127,DE
+3253788128,3253788143,GB
+3253788144,3253788415,DE
+3253788416,3253788447,GB
+3253788448,3253788479,DE
+3253788480,3253788511,GB
+3253788512,3253790695,DE
+3253790696,3253790703,GB
+3253790704,3253791472,DE
+3253791473,3253791473,GB
+3253791474,3253791929,DE
+3253791930,3253791930,GB
+3253791931,3253792153,DE
+3253792154,3253792154,GB
+3253792155,3253792823,DE
+3253792824,3253792831,GB
+3253792832,3253792859,DE
+3253792860,3253792863,GB
+3253792864,3253792895,DE
+3253792896,3253792903,GB
+3253792904,3253793007,DE
+3253793008,3253793011,ES
+3253793012,3253793071,DE
3253793072,3253793087,FR
-3253793088,3253793359,GB
+3253793088,3253793259,DE
+3253793260,3253793260,GB
+3253793261,3253793261,DE
+3253793262,3253793262,GB
+3253793263,3253793271,DE
+3253793272,3253793275,GB
+3253793276,3253793359,DE
3253793360,3253793375,DK
-3253793376,3253796863,GB
+3253793376,3253795371,DE
+3253795372,3253795375,GB
+3253795376,3253796863,DE
3253796864,3253862399,SE
3253862400,3253862655,GB
3253862656,3253882879,FR
@@ -106067,7 +121307,6 @@
3253898496,3253898751,HR
3253898752,3253899263,PL
3253899264,3253899519,MD
-3253899520,3253899775,RU
3253899776,3253900287,PL
3253900288,3253901311,RU
3253901312,3253901567,PL
@@ -106129,7 +121368,11 @@
3254067200,3254075391,CZ
3254075392,3254083583,HU
3254083584,3254124543,BE
-3254124544,3254255615,CH
+3254124544,3254156799,CH
+3254156800,3254157055,LI
+3254157056,3254177279,CH
+3254177280,3254177535,LI
+3254177536,3254255615,CH
3254255616,3254256127,RE
3254256128,3254256639,GP
3254256640,3254257151,YT
@@ -106143,49 +121386,93 @@
3254262528,3254263039,YT
3254263040,3254266367,FR
3254266368,3254266623,RE
-3254266624,3254277119,FR
+3254266624,3254271999,FR
+3254272000,3254276095,GF
+3254276096,3254277119,FR
3254277120,3254278143,YT
-3254278144,3254489855,FR
+3254278144,3254485879,FR
+3254485880,3254485887,CI
+3254485888,3254486527,FR
+3254486528,3254486543,CH
+3254486544,3254487039,FR
+3254487040,3254487199,KM
+3254487200,3254487263,FR
+3254487264,3254487295,KM
+3254487296,3254487419,CF
+3254487420,3254488431,FR
+3254488432,3254488447,MG
+3254488448,3254489087,FR
+3254489088,3254489343,DZ
+3254489344,3254489365,FR
+3254489366,3254489367,MR
+3254489368,3254489369,FR
+3254489370,3254489370,MR
+3254489371,3254489373,FR
+3254489374,3254489375,MR
+3254489376,3254489407,FR
+3254489408,3254489439,MR
+3254489440,3254489443,FR
+3254489444,3254489455,MR
+3254489456,3254489463,FR
+3254489464,3254489519,MR
+3254489520,3254489535,FR
+3254489536,3254489567,MR
+3254489568,3254489599,FR
+3254489600,3254489855,MR
3254489856,3254490111,TD
-3254490112,3254493695,FR
+3254490112,3254490367,FR
+3254490368,3254490623,CF
+3254490624,3254491135,FR
+3254491136,3254491391,DZ
+3254491392,3254491903,FR
+3254491904,3254492031,CM
+3254492032,3254493183,FR
+3254493184,3254493253,GP
+3254493254,3254493311,FR
+3254493312,3254493323,GP
+3254493324,3254493343,FR
+3254493344,3254493354,GP
+3254493355,3254493375,FR
+3254493376,3254493410,GP
+3254493411,3254493695,FR
3254493696,3254493951,GP
-3254493952,3254493999,MQ
-3254494000,3254494015,GF
-3254494016,3254494207,MQ
-3254494208,3254495487,FR
+3254493952,3254494003,MQ
+3254494004,3254494004,GF
+3254494005,3254494006,MQ
+3254494007,3254494007,GF
+3254494008,3254494207,MQ
+3254494208,3254494463,GP
+3254494464,3254494975,FR
+3254494976,3254494983,DJ
+3254494984,3254495055,FR
+3254495056,3254495063,DJ
+3254495064,3254495487,FR
3254495488,3254495743,DZ
3254495744,3254509412,FR
3254509413,3254509413,GQ
-3254509414,3254608383,FR
-3254608384,3254608895,RE
-3254608896,3254609151,FR
-3254609152,3254609407,RE
+3254509414,3254576383,FR
+3254576384,3254576543,DO
+3254576544,3254607871,FR
+3254607872,3254609407,RE
3254609408,3254609663,FR
-3254609664,3254610175,RE
-3254610176,3254610431,FR
-3254610432,3254610687,RE
-3254610688,3254610943,FR
-3254610944,3254611199,RE
+3254609664,3254611199,RE
3254611200,3254611455,FR
3254611456,3254611967,YT
-3254611968,3254612223,FR
-3254612224,3254612991,RE
-3254612992,3254613247,FR
-3254613248,3254613759,RE
-3254613760,3254614015,FR
-3254614016,3254615551,RE
+3254611968,3254613247,RE
+3254613248,3254613503,FR
+3254613504,3254615551,RE
3254615552,3254616063,YT
3254616064,3254648831,FR
3254648832,3254649855,AL
3254649856,3254650879,SE
3254653440,3254654847,DE
-3254654848,3254654975,DK
+3254654848,3254654975,FI
3254654976,3254655999,IT
3254656256,3254656511,BG
3254656512,3254656767,DE
3254656768,3254657023,GB
3254657024,3254661119,ES
-3254661120,3254665215,RO
+3254661120,3254665215,GB
3254681600,3254697983,DE
3254697984,3254698495,SE
3254698496,3254699007,GB
@@ -106262,8 +121549,10 @@
3254802432,3254803455,UA
3254803456,3254804479,DE
3254804480,3254806527,PL
+3254806528,3254807551,EE
3254807552,3254808575,KZ
3254808576,3254809599,RU
+3254809600,3254810623,GB
3254810624,3254811647,RU
3254811648,3254812671,KZ
3254812672,3254812927,PL
@@ -106307,7 +121596,6 @@
3254824448,3254824959,SI
3254824960,3254825215,FR
3254825216,3254825471,RO
-3254825472,3254825727,TR
3254825728,3254825983,FR
3254826240,3254826495,PL
3254826496,3254827263,DE
@@ -106333,7 +121621,8 @@
3254833408,3254833663,RU
3254833664,3254833919,GB
3254833920,3254834175,PL
-3254834176,3254834687,CH
+3254834176,3254834431,CH
+3254834432,3254834687,FR
3254834688,3254834943,GB
3254834944,3254835199,NL
3254835200,3254835455,DE
@@ -106440,19 +121729,77 @@
3254962422,3254962422,NL
3254962423,3255019519,FR
3255019520,3255019775,GP
-3255019776,3255107583,FR
-3255111680,3255117823,FR
+3255019776,3255067647,FR
+3255067648,3255068671,ES
+3255068672,3255078911,FR
+3255080960,3255081471,FR
+3255081984,3255083007,NL
+3255087104,3255107583,FR
+3255111680,3255113727,FR
+3255113728,3255114751,NL
+3255115264,3255117823,FR
3255120640,3255120895,DE
3255121664,3255121919,FR
+3255121920,3255122943,ES
3255123712,3255123967,DE
-3255126016,3255128575,FR
+3255126016,3255126527,FR
+3255128064,3255128575,FR
3255129856,3255130111,HR
3255130112,3255130623,FR
-3255132160,3255160831,FR
+3255131136,3255132159,RU
+3255134208,3255134719,GB
+3255134720,3255134975,NL
+3255134976,3255135231,GB
+3255135232,3255140351,FR
+3255140352,3255141375,CH
+3255141376,3255146495,FR
+3255148544,3255149567,SY
+3255150080,3255152639,FR
+3255154688,3255155711,AT
+3255155712,3255160831,FR
3255166976,3255169023,FR
+3255171072,3255172095,RO
3255172352,3255172607,DE
3255173120,3255173631,SH
-3255173632,3255205887,GB
+3255173648,3255173711,GB
+3255173760,3255173823,GB
+3255173840,3255174151,GB
+3255174160,3255174167,GB
+3255174200,3255174207,GB
+3255174216,3255174247,GB
+3255174272,3255174279,GB
+3255174312,3255174319,GB
+3255174328,3255174335,GB
+3255174376,3255174383,GB
+3255174400,3255175167,GB
+3255175200,3255175231,GB
+3255175248,3255175263,GB
+3255175280,3255175295,GB
+3255175312,3255175327,GB
+3255175432,3255175447,GB
+3255175456,3255175503,GB
+3255175512,3255175535,GB
+3255175552,3255175559,GB
+3255175592,3255175607,GB
+3255176192,3255177215,GB
+3255177472,3255177855,GB
+3255177984,3255187199,GB
+3255187200,3255187455,DE
+3255187456,3255187711,GB
+3255188480,3255191807,GB
+3255192320,3255193343,GB
+3255193600,3255193863,GB
+3255193888,3255193959,GB
+3255193968,3255193975,GB
+3255193976,3255193983,GI
+3255193984,3255193999,GB
+3255194016,3255194039,GB
+3255194056,3255194063,GB
+3255194072,3255194431,GB
+3255194496,3255194559,GB
+3255194624,3255194703,GB
+3255194720,3255194815,GB
+3255194880,3255205887,GB
3255205888,3255214079,FR
3255214080,3255222271,CH
3255222272,3255223295,DE
@@ -106486,7 +121833,11 @@
3255237120,3255237375,AT
3255237888,3255238143,ES
3255238400,3255238655,QA
-3255238656,3255304191,BE
+3255238656,3255245759,BE
+3255245760,3255245775,LU
+3255245776,3255292311,BE
+3255292312,3255292319,LU
+3255292320,3255304191,BE
3255304192,3255304447,DE
3255304448,3255305215,LV
3255305216,3255305471,BG
@@ -106526,7 +121877,8 @@
3255327744,3255328255,GB
3255328256,3255328767,SI
3255328768,3255336959,DE
-3255336960,3255341055,RU
+3255336960,3255340031,RU
+3255340032,3255341055,ES
3255341056,3255342079,UA
3255342080,3255343103,FR
3255343104,3255344127,RU
@@ -106537,7 +121889,7 @@
3255362048,3255362559,FI
3255362560,3255364607,RU
3255364608,3255365119,NL
-3255365120,3255365631,SK
+3255365120,3255365631,CZ
3255365632,3255366143,UA
3255366144,3255367167,DK
3255367168,3255367679,RU
@@ -106596,17 +121948,18 @@
3255413248,3255413503,LV
3255413504,3255413759,RU
3255414528,3255414783,LV
+3255414784,3255415807,US
3255415808,3255416319,AT
-3255416320,3255416831,DE
+3255416320,3255417855,DE
3255417856,3255418879,GB
3255418880,3255422975,DE
+3255422976,3255423999,RU
3255424000,3255425023,LV
+3255425024,3255426047,DE
3255426048,3255426559,IT
3255426816,3255427071,PL
3255427072,3255431167,RU
-3255431168,3255432191,GB
-3255432192,3255432447,HU
-3255432448,3255435263,GB
+3255431168,3255435263,GB
3255435264,3255435295,EE
3255435296,3255435327,LT
3255435328,3255435359,LV
@@ -106697,21 +122050,24 @@
3255508224,3255508479,RU
3255508480,3255521100,CH
3255521101,3255521101,DE
-3255521102,3255544319,CH
+3255521102,3255522303,CH
+3255522304,3255523327,ES
+3255523328,3255544319,CH
3255544320,3255544575,DE
3255544576,3255544831,AT
-3255544832,3255558143,CH
+3255544832,3255548927,CH
+3255548928,3255549951,DE
+3255549952,3255558143,CH
3255558400,3255558655,UA
-3255558912,3255559679,CH
+3255558912,3255559167,GB
+3255559168,3255559679,CH
3255560192,3255562751,CH
3255562752,3255563007,CZ
3255563008,3255563263,CH
3255563776,3255564031,CH
3255564032,3255564287,RU
-3255565312,3255565823,CH
-3255565824,3255566335,DE
-3255566336,3255568895,GB
-3255568896,3255570431,SE
+3255564288,3255566335,DE
+3255566336,3255570431,GB
3255570432,3255574527,CH
3255574528,3255578623,CZ
3255578624,3255582719,RU
@@ -106719,11 +122075,18 @@
3255599104,3255615487,CH
3255615488,3255623679,DE
3255623680,3255631871,BG
-3255631872,3255659519,NL
+3255631872,3255649279,NL
+3255649280,3255650303,DE
+3255650304,3255652351,NL
+3255654400,3255659519,NL
3255660288,3255660543,GR
-3255660544,3255666175,NL
-3255666432,3255666687,DE
-3255668224,3255697407,NL
+3255660544,3255663615,NL
+3255663616,3255664639,DE
+3255664640,3255666175,NL
+3255666432,3255667711,DE
+3255668224,3255691263,NL
+3255691264,3255692287,DE
+3255692800,3255697407,NL
3255697408,3255704575,SE
3255704576,3255705087,FR
3255705088,3255710719,SE
@@ -106743,7 +122106,11 @@
3255743232,3255743487,IT
3255743488,3255743743,DE
3255743744,3255743999,US
-3255744000,3255762431,SE
+3255744000,3255751167,SE
+3255751168,3255751423,DK
+3255751424,3255752959,SE
+3255752960,3255753215,RO
+3255753216,3255762431,SE
3255762432,3255762943,BE
3255762944,3255771135,DE
3255779328,3255787519,DE
@@ -106756,18 +122123,28 @@
3255799296,3255800319,DE
3255800576,3255800831,UA
3255800832,3255801855,DE
+3255801856,3255802879,DK
3255802880,3255817215,DE
3255817216,3255817471,SE
3255817472,3255817727,ES
3255817728,3255820287,DE
+3255820288,3255821311,RS
3255821312,3255822335,CH
-3255822336,3255828479,DE
+3255822336,3255826431,DE
+3255826432,3255827455,EE
+3255827456,3255828479,DE
3255828480,3256025087,SE
3256025088,3256057855,NO
3256057856,3256082431,DK
3256082432,3256090623,LV
3256090624,3256221695,IT
-3256221696,3256352767,SE
+3256221696,3256223743,SE
+3256223744,3256225791,NL
+3256225792,3256229887,SE
+3256229888,3256233983,DE
+3256233984,3256238079,SE
+3256238080,3256246271,NO
+3256246272,3256352767,SE
3256352768,3256385535,CH
3256385536,3256393727,AT
3256393728,3256394239,DE
@@ -106786,7 +122163,7 @@
3256410112,3256410623,TR
3256410624,3256411135,GR
3256411136,3256411647,FR
-3256411648,3256412159,DE
+3256411648,3256412159,CH
3256412672,3256413183,RO
3256413184,3256413695,UA
3256413696,3256414207,PL
@@ -106798,14 +122175,25 @@
3256417280,3256417791,NO
3256417792,3256418303,GB
3256418304,3256483839,DE
-3256483840,3256487935,NL
+3256483840,3256484095,NL
+3256484864,3256485887,NG
+3256485888,3256487935,NL
+3256487936,3256488959,RU
3256489472,3256489983,GR
3256489984,3256490239,BE
3256490496,3256490751,CH
3256491008,3256491263,NL
-3256492032,3256524287,NL
+3256492032,3256509439,NL
+3256509440,3256510463,RU
+3256510464,3256513023,NL
+3256513536,3256514559,RU
+3256514560,3256524287,NL
3256524288,3256524799,DE
-3256524800,3256549375,NL
+3256524800,3256525823,NL
+3256525824,3256526847,UA
+3256530944,3256531967,NL
+3256531968,3256532991,DE
+3256532992,3256549375,NL
3256549376,3256614911,TR
3256614912,3256615935,FI
3256615936,3256616959,UA
@@ -106818,6 +122206,7 @@
3256623104,3256624127,PL
3256624128,3256625151,UA
3256625152,3256626175,PL
+3256626176,3256627199,RU
3256627200,3256628223,PL
3256628224,3256629247,UA
3256629248,3256630271,RU
@@ -106827,6 +122216,11 @@
3256635392,3256636415,PL
3256636416,3256638463,UA
3256638464,3256639487,RU
+3256639488,3256639743,BE
+3256639744,3256639999,DE
+3256640000,3256640335,BE
+3256640336,3256640351,FR
+3256640352,3256640511,BE
3256640512,3256641535,UA
3256641536,3256642559,PL
3256642560,3256643583,SI
@@ -106839,8 +122233,7 @@
3256649728,3256650751,GB
3256650752,3256652799,UA
3256652800,3256653823,DE
-3256653824,3256654847,RU
-3256655872,3256656895,RU
+3256653824,3256656895,RU
3256656896,3256657919,GB
3256657920,3256658943,PL
3256658944,3256662015,UA
@@ -106860,17 +122253,19 @@
3256680448,3256688639,CH
3256688640,3256692735,IL
3256692736,3256693759,GR
-3256694784,3256695807,CH
+3256693760,3256694783,LT
+3256694784,3256695807,DE
3256695808,3256696831,UA
+3256698624,3256698879,GB
3256699136,3256699391,NL
+3256699392,3256699903,GB
3256700416,3256700671,NL
+3256705280,3256705535,FR
3256705536,3256705791,BE
-3256706048,3256706559,GR
3256711168,3256711423,DE
3256713216,3256727551,PL
3256727552,3256727807,DE
3256727808,3256728063,HU
-3256728064,3256728575,RU
3256728576,3256729599,DE
3256729600,3256731647,FI
3256731648,3256732671,NO
@@ -106910,7 +122305,9 @@
3256794624,3256794879,RU
3256794880,3256795135,AT
3256795136,3256811519,GR
-3256811520,3256819711,DE
+3256811520,3256813567,DE
+3256813568,3256814591,RU
+3256815104,3256819711,DE
3256819712,3256821503,PL
3256821504,3256821759,NO
3256821760,3256822271,PL
@@ -106919,6 +122316,7 @@
3256822784,3256823807,UA
3256823808,3256824319,PL
3256824320,3256824831,GB
+3256824832,3256825855,DE
3256825856,3256826111,EE
3256826112,3256826367,KW
3256826368,3256826623,IL
@@ -106927,11 +122325,20 @@
3256827136,3256827391,IS
3256827392,3256827647,GB
3256827648,3256827903,PL
-3256827904,3256844287,DE
+3256827904,3256829951,DE
+3256829952,3256830975,SY
+3256830976,3256834047,DE
+3256834048,3256835071,GB
+3256835072,3256836095,DE
+3256840192,3256844287,DE
3256860672,3256863743,DE
3256864256,3256864511,DE
3256864512,3256864767,CH
-3256864768,3256870911,DE
+3256864768,3256865791,DE
+3256865792,3256866815,UA
+3256866816,3256867839,CZ
+3256868096,3256868351,DE
+3256868864,3256870911,DE
3256870912,3256871167,RU
3256871168,3256871935,DE
3256872448,3256872703,DE
@@ -106941,10 +122348,12 @@
3256876032,3256876287,PL
3256876288,3256876543,RU
3256876544,3256876799,CH
-3256877056,3256897535,GB
+3256877056,3256896511,GB
+3256896512,3256897535,DE
3256898048,3256898303,GB
3256898560,3256899071,TR
3256899072,3256899583,RU
+3256913920,3256914943,SE
3256915456,3256915711,RS
3256915712,3256915967,SE
3256918016,3256934399,GB
@@ -106955,7 +122364,13 @@
3256946176,3256946431,RO
3256946432,3256946687,UA
3256946688,3256947711,DE
-3256948736,3256958975,GB
+3256947712,3256948735,RU
+3256948736,3256950015,GB
+3256950272,3256950527,NO
+3256950528,3256950783,GB
+3256951040,3256951295,GB
+3256951808,3256952831,RU
+3256954880,3256958975,GB
3256958976,3256959999,RO
3256960000,3256960255,SA
3256960256,3256960511,HU
@@ -106967,6 +122382,7 @@
3256963328,3256963839,RU
3256963840,3256964095,PL
3256964096,3256965119,RU
+3256965120,3256966143,PL
3256966144,3256967167,RU
3256967168,3256967423,LT
3256967424,3256967679,RU
@@ -106996,29 +122412,60 @@
3256991488,3256991743,RU
3256991744,3257011199,GB
3257011200,3257011455,BG
-3257011456,3257057279,GB
+3257011456,3257024511,GB
+3257024512,3257032703,AU
+3257036800,3257049087,GB
+3257049088,3257050111,IR
+3257050112,3257057279,GB
+3257057280,3257058303,DE
3257058816,3257059071,PL
+3257059328,3257060351,DE
3257060352,3257065471,GB
-3257073664,3257081855,GB
+3257073664,3257076735,GB
+3257076736,3257077759,DE
+3257077760,3257081855,GB
3257090048,3257092351,GB
3257092608,3257092863,RO
-3257093888,3257098239,GB
+3257093888,3257094143,GB
+3257094656,3257095167,GB
+3257095168,3257096191,SI
+3257096192,3257097215,ES
+3257097216,3257098239,GB
3257106432,3257118719,GB
+3257118720,3257119743,IT
3257120512,3257120767,GB
3257121280,3257121535,GB
3257122304,3257122559,GB
3257122560,3257122815,US
-3257122816,3257139199,GB
+3257122816,3257131007,GB
+3257135104,3257137151,GB
+3257137152,3257138175,AL
+3257138176,3257139199,GB
3257139200,3257139455,DK
3257139456,3257143295,GB
3257143296,3257143807,RU
3257143808,3257144063,DE
-3257144064,3257144319,RU
3257144320,3257144575,DE
3257144576,3257144831,GB
3257144832,3257145087,FR
3257145088,3257145343,GB
-3257151488,3257180159,GB
+3257151488,3257154047,GB
+3257154560,3257155583,DE
+3257155584,3257157631,GB
+3257157632,3257158655,IT
+3257158656,3257159679,GB
+3257160192,3257160447,GB
+3257160704,3257161727,TR
+3257161728,3257162751,IL
+3257162752,3257163263,GB
+3257167872,3257168895,GB
+3257168896,3257169919,FR
+3257170176,3257170431,GB
+3257170944,3257171967,HU
+3257171968,3257174015,GB
+3257174016,3257174271,US
+3257175040,3257176063,RO
+3257178112,3257180159,GB
3257180160,3257180415,TR
3257180416,3257180671,RU
3257180672,3257180927,EE
@@ -107027,10 +122474,14 @@
3257181440,3257181695,PL
3257181696,3257181951,FR
3257182208,3257182463,PL
+3257183232,3257184255,US
3257192448,3257196543,GB
3257196544,3257200639,LU
-3257200640,3257204735,GB
+3257200640,3257201151,GB
+3257201664,3257202687,ES
+3257202688,3257204735,GB
3257204736,3257225215,AT
+3257225216,3257226239,NL
3257226240,3257227263,DE
3257229312,3257268223,AT
3257268224,3257268479,UA
@@ -107042,22 +122493,38 @@
3257294848,3257303039,HU
3257303040,3257311231,PT
3257311232,3257335807,CH
-3257335808,3257352191,DE
+3257335808,3257342975,DE
+3257342976,3257343999,FR
+3257348096,3257352191,DE
3257354240,3257356799,DE
3257357312,3257357567,PT
3257357568,3257357823,SI
-3257357824,3257371903,DE
+3257357824,3257363455,DE
+3257363456,3257364479,RU
+3257364480,3257367039,DE
+3257367552,3257368575,PT
+3257368576,3257371903,DE
3257371904,3257372159,BE
3257372416,3257372671,GB
-3257372672,3257382911,DE
-3257382912,3257383167,NL
-3257383168,3257401343,DE
+3257372672,3257373695,IT
+3257374208,3257376767,DE
+3257378816,3257379839,HU
+3257379840,3257385983,DE
+3257385984,3257387007,PL
+3257389056,3257390079,FR
+3257390592,3257390847,DE
+3257391104,3257393151,DE
+3257397248,3257401343,DE
3257401344,3257453567,CH
3257453568,3257454591,RO
3257454592,3257455103,IT
3257455104,3257455359,RO
3257455360,3257455615,SI
-3257455616,3257466879,CH
+3257455616,3257461759,CH
+3257461760,3257463807,NL
+3257464064,3257464319,CH
+3257464832,3257465343,CH
+3257465856,3257466879,ES
3257466880,3257467135,DE
3257467392,3257467903,SE
3257467904,3257468927,IT
@@ -107066,6 +122533,7 @@
3257470976,3257471999,GB
3257472000,3257472511,SG
3257472512,3257475071,GB
+3257475072,3257476095,DK
3257476864,3257477119,DE
3257481472,3257481727,DE
3257482240,3257482751,GB
@@ -107088,11 +122556,15 @@
3257546688,3257546719,DE
3257546720,3257546751,DK
3257546752,3257548799,FI
-3257548800,3257551807,GB
+3257548800,3257551623,GB
+3257551624,3257551647,BE
+3257551648,3257551711,GB
+3257551712,3257551719,BE
+3257551720,3257551807,GB
3257551808,3257551871,BE
-3257551872,3257552732,GB
-3257552733,3257552733,SE
-3257552734,3257556991,GB
+3257551872,3257552731,GB
+3257552732,3257552735,NL
+3257552736,3257556991,GB
3257557504,3257558015,LU
3257558016,3257559039,RO
3257559552,3257560063,UA
@@ -107119,45 +122591,73 @@
3257588736,3257589759,NL
3257589760,3257663487,GB
3257663488,3257729023,UA
-3257729024,3257740799,DE
+3257729024,3257730047,DE
+3257730048,3257730559,NL
+3257730560,3257731071,DE
+3257731072,3257734143,NL
+3257734144,3257734911,DE
+3257734912,3257735679,NL
+3257735680,3257736191,DE
+3257736192,3257737471,NL
+3257737472,3257738751,DE
+3257738752,3257740543,NL
+3257740544,3257740799,DE
3257740800,3257741055,FR
-3257741056,3257745599,DE
-3257745600,3257745607,NL
-3257745608,3257757135,DE
-3257757136,3257757137,NL
-3257757138,3257757139,DE
-3257757140,3257757140,NL
-3257757141,3257758895,DE
-3257758896,3257758903,NL
-3257758904,3257774911,DE
-3257774912,3257774919,NL
-3257774920,3257778791,DE
-3257778792,3257778799,NL
-3257778800,3257781090,DE
-3257781091,3257781091,NL
-3257781092,3257784831,DE
-3257784832,3257785087,NL
-3257785088,3257786397,DE
-3257786398,3257786398,NL
-3257786399,3257786466,DE
-3257786467,3257786467,NL
-3257786468,3257787577,DE
-3257787578,3257787578,NL
-3257787579,3257791855,DE
-3257791856,3257791863,NL
-3257791864,3257794559,DE
+3257741056,3257741311,NL
+3257741312,3257741567,DE
+3257741568,3257741823,NL
+3257741824,3257743615,DE
+3257743616,3257747199,NL
+3257747200,3257747455,DE
+3257747456,3257748479,NL
+3257748480,3257749503,DE
+3257749504,3257753087,NL
+3257753088,3257756415,DE
+3257756416,3257761279,NL
+3257761280,3257761791,DE
+3257761792,3257763583,NL
+3257763584,3257763839,DE
+3257763840,3257765375,NL
+3257765376,3257768703,DE
+3257768704,3257771263,NL
+3257771264,3257772543,DE
+3257772544,3257775359,NL
+3257775360,3257775615,DE
+3257775616,3257776127,NL
+3257776128,3257776383,DE
+3257776384,3257779199,NL
+3257779712,3257780479,DE
+3257780480,3257782271,NL
+3257782272,3257784831,DE
+3257784832,3257787135,NL
+3257787136,3257787391,DE
+3257787392,3257788415,NL
+3257788416,3257789951,DE
+3257789952,3257794559,NL
3257794560,3257843711,GB
3257843712,3257860095,IE
3257860096,3257925631,SE
3257925632,3257925887,AT
3257925888,3257926143,SE
3257926144,3257926399,AT
-3257926656,3257977855,AT
+3257926656,3257949183,AT
+3257949184,3257950207,NL
+3257952256,3257953279,CH
+3257953280,3257961471,AT
+3257961472,3257962495,ES
+3257964544,3257965567,RU
+3257965568,3257967615,AT
+3257967616,3257968639,LT
+3257968640,3257969663,DE
+3257969664,3257970175,AT
+3257972736,3257974783,AT
+3257975296,3257975807,DE
+3257975808,3257977855,AT
3257977856,3257978111,GB
3257978112,3257978367,SE
3257978368,3257978623,BG
3257978624,3257978879,ES
-3257978880,3257979135,FR
+3257978880,3257979135,CZ
3257979136,3257979391,UA
3257979392,3257979647,GB
3257979904,3257980159,UA
@@ -107168,17 +122668,28 @@
3257981184,3257981439,GB
3257981440,3257981695,RU
3257981696,3257981951,PL
+3257981952,3257982975,FI
+3257985024,3257986047,GB
3257986048,3257987327,AT
3257987328,3257987583,CZ
3257987840,3257988095,AT
+3257988096,3257989119,CH
+3257989120,3257990143,DE
3257990656,3257990911,AT
+3257991168,3257992191,ES
3257992960,3257993215,DE
3257996032,3257996287,DE
3257996544,3257996799,CH
3257996800,3258003967,DE
3258003968,3258004479,RU
3258004992,3258005247,DE
-3258006528,3258015743,DE
+3258005504,3258006527,ES
+3258006528,3258011647,DE
+3258011648,3258012671,NL
+3258012928,3258013183,DE
+3258013696,3258014719,NL
+3258014720,3258014975,DE
+3258017792,3258018815,PL
3258019328,3258019583,DE
3258019840,3258021887,DE
3258021888,3258022911,RU
@@ -107189,9 +122700,9 @@
3258023936,3258056703,DE
3258057216,3258057471,CZ
3258058240,3258058495,RU
-3258059008,3258059263,UA
-3258059264,3258059519,RU
+3258059008,3258059519,RU
3258059520,3258059775,RO
+3258059776,3258060799,RU
3258062848,3258063103,RU
3258063360,3258063871,CZ
3258063872,3258064127,AT
@@ -107307,9 +122818,12 @@
3258109952,3258110207,DK
3258110464,3258110975,CZ
3258111488,3258111743,PL
-3258111744,3258118399,CZ
+3258111744,3258116351,CZ
+3258117120,3258118143,PT
+3258118144,3258118399,CZ
3258118400,3258118655,UA
3258118656,3258118911,CZ
+3258119168,3258120191,DE
3258120192,3258120703,CZ
3258121216,3258121471,PL
3258121728,3258121983,UA
@@ -107319,11 +122833,19 @@
3258230784,3258232831,NO
3258232832,3258249215,SE
3258249216,3258253311,NO
-3258253312,3258265599,NL
-3258267648,3258269695,NL
+3258253312,3258254335,NL
+3258254336,3258255359,FR
+3258255360,3258265599,NL
+3258267648,3258268671,NL
+3258268672,3258268927,IT
+3258269184,3258269695,NL
3258271744,3258272767,NL
3258272768,3258273791,FR
-3258273792,3258288127,NL
+3258273792,3258279935,NL
+3258281984,3258284031,NL
+3258284288,3258284543,NL
+3258285056,3258286079,RS
+3258286080,3258288127,NL
3258294272,3258297343,NL
3258297344,3258297599,BE
3258297600,3258298111,NL
@@ -107337,7 +122859,7 @@
3258327040,3258335231,TR
3258335232,3258336255,RU
3258336256,3258337279,NO
-3258337280,3258338303,DE
+3258337280,3258339327,DE
3258339328,3258340351,UA
3258340352,3258341375,PL
3258341376,3258342399,UA
@@ -107345,6 +122867,7 @@
3258343424,3258351615,NO
3258351616,3258352639,RO
3258352640,3258353663,RU
+3258353664,3258354687,KW
3258354688,3258355711,BG
3258355712,3258356735,NL
3258356736,3258357759,RU
@@ -107355,25 +122878,51 @@
3258362892,3258362892,GB
3258362893,3258363903,IM
3258363904,3258364927,RU
-3258364928,3258365951,RS
+3258364928,3258365951,XK
3258365952,3258366975,UA
3258366976,3258367999,PL
3258368000,3258384383,KW
-3258384384,3258426367,DE
+3258384384,3258385407,DE
+3258385408,3258386431,PL
+3258388480,3258395647,DE
+3258395648,3258396671,IT
+3258396672,3258404863,DE
+3258404864,3258405887,RO
+3258405888,3258407935,DE
+3258407936,3258408959,UZ
+3258408960,3258422271,DE
+3258422272,3258423295,IT
+3258423296,3258424319,RO
+3258424320,3258426367,DE
+3258426368,3258427391,RU
3258427648,3258427903,RO
3258427904,3258428159,DE
-3258428416,3258449919,DE
-3258449920,3258499071,CH
+3258428416,3258441727,DE
+3258443776,3258444287,DE
+3258444800,3258445823,RU
+3258445824,3258447871,DE
+3258447872,3258448895,SE
+3258448896,3258449919,DE
+3258449920,3258486783,CH
+3258486784,3258487807,LI
+3258487808,3258488831,RU
+3258488832,3258495999,CH
+3258496000,3258497023,RU
3258501120,3258503935,CH
3258503936,3258504191,PL
3258504704,3258504959,DE
3258504960,3258505215,IL
3258505728,3258506495,CH
3258506496,3258506751,DE
-3258507264,3258515455,CH
+3258507264,3258508287,GB
+3258508288,3258509567,CH
+3258509568,3258509823,FR
+3258509824,3258510335,CH
+3258510336,3258511359,ES
+3258511360,3258515455,CH
3258515456,3258580991,FR
3258580992,3258587135,SY
-3258587136,3258588159,GB
+3258587136,3258588159,US
3258588160,3258588927,ES
3258588928,3258589951,RU
3258589952,3258590207,ES
@@ -107394,7 +122943,7 @@
3258621952,3258630143,RU
3258630144,3258634239,SE
3258634240,3258636287,SY
-3258636288,3258637311,GB
+3258636288,3258637311,US
3258637312,3258637823,PS
3258637824,3258638335,RU
3258638336,3258642431,SY
@@ -107404,9 +122953,13 @@
3258643968,3258644223,RU
3258644224,3258644479,PS
3258644480,3258646527,SY
-3258646528,3258685439,DE
-3258685440,3258686207,CH
-3258686208,3258691583,DE
+3258646528,3258659839,DE
+3258659840,3258660863,SE
+3258660864,3258681343,DE
+3258681344,3258682367,NL
+3258683136,3258685439,DE
+3258685440,3258685695,CH
+3258685696,3258691583,DE
3258691840,3258692351,AT
3258692352,3258692607,DE
3258692608,3258692863,FR
@@ -107416,7 +122969,13 @@
3258693888,3258694143,SI
3258694144,3258694399,RU
3258694656,3258694911,GB
-3258694912,3258712063,DE
+3258694912,3258695679,DE
+3258699776,3258700799,IT
+3258700800,3258701311,DE
+3258701824,3258702847,NL
+3258703616,3258707967,DE
+3258707968,3258708991,CZ
+3258709760,3258710015,DE
3258712064,3258728447,GB
3258728448,3258729471,FR
3258729472,3258729727,DE
@@ -107434,7 +122993,9 @@
3258732800,3258733055,CH
3258733056,3258733311,RO
3258733312,3258734079,GB
-3258734592,3258762239,GB
+3258734592,3258745855,GB
+3258745856,3258746879,RU
+3258746880,3258763263,GB
3258764032,3258764287,GB
3258764288,3258764543,DE
3258764800,3258765055,BE
@@ -107463,22 +123024,43 @@
3258794496,3258794751,PL
3258794752,3258795007,RU
3258795008,3258796031,PL
+3258796032,3258797055,EE
3258797568,3258798079,GB
+3258800128,3258801151,AM
3258801152,3258802175,GB
3258802176,3258806271,LU
3258808832,3258809343,GB
+3258809344,3258810367,SY
3258814464,3258816511,GB
+3258816512,3258817535,DE
3258818048,3258818303,SE
3258818560,3258843135,GB
3258843136,3258843391,RU
3258844928,3258847231,GB
+3258847232,3258848255,RU
3258848256,3258848767,GB
3258848768,3258849023,RO
3258849024,3258849279,DE
-3258849280,3258859519,GB
+3258849280,3258853375,GB
+3258853376,3258854399,RU
+3258854400,3258856447,GB
+3258856448,3258857471,FR
3258859520,3258859775,BY
3258859776,3258860031,GB
-3258860544,3258900479,GB
+3258860544,3258867711,GB
+3258867712,3258868735,LT
+3258868736,3258869759,GB
+3258871808,3258875903,GB
+3258880000,3258881023,GB
+3258881024,3258882047,SA
+3258882048,3258883071,SE
+3258883072,3258883327,GB
+3258886144,3258887167,DK
+3258887168,3258889215,GB
+3258889216,3258890239,NL
+3258890240,3258894335,GB
+3258894336,3258895359,IT
+3258895360,3258898431,GB
3258902528,3258902783,GB
3258903040,3258903295,FR
3258903296,3258903551,GB
@@ -107489,7 +123071,9 @@
3258941440,3258943487,PL
3258943488,3258944511,BG
3258944512,3258945535,RU
+3258945536,3258946559,BG
3258946560,3258947583,CH
+3258947584,3258948607,CZ
3258948608,3258949631,RU
3258949632,3258972159,GR
3258972160,3258974207,NO
@@ -107499,11 +123083,13 @@
3259170816,3259236351,RU
3259236352,3259237887,SE
3259237888,3259238143,FR
-3259238144,3259244079,SE
-3259244080,3259244127,US
-3259244128,3259246591,SE
+3259238144,3259243007,SE
+3259243008,3259243519,AT
+3259243520,3259244543,US
+3259244800,3259246591,SE
3259246592,3259247615,IT
-3259247616,3259248127,SE
+3259247616,3259247871,RO
+3259247872,3259248127,SE
3259248128,3259248383,GB
3259248384,3259248895,SE
3259248896,3259249151,GB
@@ -107515,15 +123101,17 @@
3259262720,3259262975,DK
3259262976,3259265023,SE
3259265024,3259265535,DE
-3259265536,3259276287,SE
+3259265536,3259269375,SE
+3259269376,3259269631,FR
+3259269632,3259276287,SE
3259276288,3259276543,ES
-3259276544,3259280639,SE
+3259276544,3259278591,SE
+3259278592,3259278847,GB
+3259278848,3259280639,SE
3259280640,3259280895,US
-3259280896,3259282047,SE
-3259282048,3259282207,US
-3259282208,3259282367,SE
-3259282368,3259282399,US
-3259282400,3259283711,SE
+3259280896,3259281407,SE
+3259281408,3259282431,US
+3259282432,3259283711,SE
3259283712,3259283967,US
3259283968,3259284479,SE
3259284480,3259284735,US
@@ -107532,7 +123120,9 @@
3259286016,3259290623,SE
3259290624,3259290879,NO
3259290880,3259291135,US
-3259291136,3259297535,SE
+3259291136,3259293951,SE
+3259293952,3259294207,BG
+3259294208,3259297535,SE
3259297536,3259297791,GB
3259297792,3259301887,SE
3259301888,3259302143,DE
@@ -107543,7 +123133,56 @@
3259311104,3259311615,DE
3259312640,3259313151,GB
3259317248,3259318271,CH
-3259318272,3259326975,GB
+3259318272,3259318343,GB
+3259318344,3259318351,FR
+3259318352,3259318599,GB
+3259318600,3259318607,AT
+3259318608,3259318663,GB
+3259318664,3259318671,DK
+3259318672,3259318679,GB
+3259318680,3259318687,IT
+3259318688,3259318727,GB
+3259318728,3259318735,FR
+3259318736,3259319055,GB
+3259319056,3259319071,IT
+3259319072,3259319087,GB
+3259319088,3259319095,SE
+3259319096,3259319103,DK
+3259319104,3259319111,FR
+3259319112,3259319199,GB
+3259319200,3259319215,DE
+3259319216,3259319255,GB
+3259319256,3259319263,DK
+3259319264,3259319287,GB
+3259319288,3259319295,BE
+3259319296,3259319303,GB
+3259319304,3259319311,BE
+3259319312,3259319319,DK
+3259319320,3259319367,GB
+3259319368,3259319375,BE
+3259319376,3259319407,GB
+3259319408,3259319423,LU
+3259319424,3259319439,GB
+3259319440,3259319447,CH
+3259319448,3259319463,GB
+3259319464,3259319471,DK
+3259319472,3259319587,GB
+3259319588,3259319591,NL
+3259319592,3259319663,GB
+3259319664,3259319667,FR
+3259319668,3259319823,GB
+3259319824,3259319831,FR
+3259319832,3259319879,GB
+3259319880,3259319887,BY
+3259319888,3259319987,GB
+3259319988,3259319991,NL
+3259319992,3259320011,GB
+3259320012,3259320015,BE
+3259320016,3259320055,GB
+3259320056,3259320063,AT
+3259320064,3259320575,GB
+3259320576,3259320583,FR
+3259320584,3259326975,GB
3259326976,3259327487,IE
3259327488,3259328190,GB
3259328191,3259328191,US
@@ -107569,6 +123208,7 @@
3259351552,3259352063,FR
3259352064,3259352575,CH
3259352576,3259353087,IE
+3259353088,3259354111,BG
3259354112,3259354367,NL
3259354368,3259354623,DE
3259354880,3259355135,PL
@@ -107598,22 +123238,35 @@
3259485184,3259490303,SE
3259490304,3259490559,IN
3259490560,3259490815,NL
-3259490816,3259495935,SE
+3259490816,3259491071,SE
+3259491072,3259491327,BE
+3259491328,3259495935,SE
3259495936,3259496447,DK
3259496448,3259498495,SE
-3259498496,3259760639,GB
-3259760640,3259811839,DE
+3259498496,3259541503,GB
+3259541504,3259543551,NL
+3259543552,3259650047,GB
+3259652096,3259656191,GB
+3259658240,3259760639,GB
+3259760640,3259768831,DE
+3259768832,3259769855,RO
+3259770368,3259789311,DE
+3259791872,3259792383,DE
+3259792384,3259793407,RU
+3259795456,3259796479,LV
+3259796480,3259807743,DE
+3259808512,3259808767,DE
+3259808768,3259809791,UA
+3259809792,3259811839,DE
3259813888,3259814399,DE
3259814400,3259814655,AT
-3259814656,3259817983,DE
-3259819008,3259821055,DE
+3259814656,3259821055,DE
3259821824,3259822079,AT
3259822592,3259823103,DE
3259823104,3259823615,RO
3259823616,3259823871,NO
3259823872,3259824127,IE
-3259825408,3259825663,DE
-3259826176,3259891711,DE
+3259824128,3259891711,DE
3259891712,3259957247,BE
3259957248,3259958271,DE
3259958272,3259959295,RU
@@ -107626,8 +123279,10 @@
3259965024,3259965031,DE
3259965032,3259965439,GB
3259965440,3259966463,RU
+3259966464,3259967487,LU
3259967488,3259968511,RS
3259968512,3259969535,RU
+3259969536,3259970559,GB
3259970560,3259971583,CZ
3259971584,3259972607,IT
3259972608,3259973631,UA
@@ -107642,11 +123297,16 @@
3260021760,3260022271,GR
3260022272,3260022783,NL
3260022784,3260284927,GB
-3260284928,3260415999,RU
+3260284928,3260415487,RU
+3260415488,3260415999,BY
3260416000,3260481535,FI
3260481536,3260503039,RU
3260503040,3260504063,US
-3260504064,3260547071,RU
+3260504064,3260506367,RU
+3260506368,3260506623,CH
+3260506624,3260509439,RU
+3260509440,3260509695,CH
+3260509696,3260547071,RU
3260547072,3260547327,DE
3260547328,3260547583,UA
3260547584,3260547839,NL
@@ -107659,12 +123319,20 @@
3260550656,3260551167,RU
3260551168,3260553983,DE
3260553984,3260554239,GB
-3260554240,3260555263,SE
+3260554240,3260554751,DE
+3260554752,3260555263,CH
3260555264,3260563455,HU
-3260563456,3260573695,GB
+3260563456,3260571647,GB
+3260571648,3260573695,US
3260573696,3260574719,NL
3260574720,3260575743,IL
-3260575744,3260579327,US
+3260575744,3260575999,US
+3260576000,3260576255,CA
+3260576256,3260577023,US
+3260577024,3260577279,CA
+3260577280,3260578047,US
+3260578048,3260578303,CA
+3260578304,3260579327,US
3260579328,3260579583,CA
3260579584,3260579839,US
3260579840,3260580351,PL
@@ -107673,8 +123341,7 @@
3260581376,3260581887,RO
3260581888,3260582399,IL
3260582400,3260583423,RU
-3260583424,3260583679,GB
-3260583680,3260583935,PT
+3260583424,3260583935,EE
3260583936,3260584447,NO
3260584448,3260585471,RO
3260585472,3260586495,UA
@@ -107727,40 +123394,82 @@
3260906496,3260907519,PL
3260907520,3260915711,GB
3260915712,3260923903,UA
-3260923904,3260938751,DE
+3260923904,3260938751,IT
3260938752,3260939007,US
-3260939008,3261071359,DE
+3260939008,3260940287,IT
+3260940288,3261071359,DE
3261071360,3261136895,AT
-3261136896,3261202431,DE
+3261136896,3261150143,DE
+3261150144,3261150207,US
+3261150208,3261202431,DE
3261202432,3261213439,FR
3261213440,3261213695,AF
3261213696,3261267967,FR
-3261267968,3261296639,DE
+3261267968,3261270015,DE
+3261270016,3261271039,FR
+3261271040,3261272063,DE
+3261276160,3261278207,DE
+3261280256,3261282559,DE
+3261283328,3261284351,RU
+3261284352,3261292543,DE
+3261293056,3261293567,DE
+3261293568,3261294591,FR
+3261294592,3261294847,ES
+3261294848,3261295103,PL
+3261295104,3261295359,FR
+3261295360,3261295615,GB
+3261295616,3261296639,DE
3261296896,3261297151,DE
3261297664,3261297919,RU
3261297920,3261298175,PL
-3261298176,3261333503,DE
+3261298176,3261307903,DE
+3261307904,3261308927,RU
+3261308928,3261333503,DE
3261333504,3261399039,FI
3261399040,3261472767,GB
-3261472768,3261530111,RO
+3261472768,3261503487,RO
+3261503488,3261503935,MD
+3261503936,3261530111,RO
3261530112,3261531903,SE
3261531904,3261532159,GB
3261532160,3261532415,SE
3261532416,3261532671,GB
-3261532672,3261532927,SE
+3261532672,3261532927,US
3261532928,3261533183,GB
3261533184,3261533439,SE
3261533440,3261533695,US
3261533696,3261534719,SE
3261534720,3261534975,US
-3261534976,3261538559,SE
+3261534976,3261535999,SE
+3261536256,3261538559,SE
3261538560,3261538815,GB
3261538816,3261539327,SE
3261539328,3261540351,GB
-3261540352,3261555455,SE
+3261540352,3261543935,SE
+3261544192,3261544703,SE
+3261544960,3261555350,SE
+3261555351,3261555351,FI
+3261555352,3261555352,PL
+3261555353,3261555353,NO
+3261555354,3261555354,DK
+3261555355,3261555355,DE
+3261555356,3261555356,LT
+3261555357,3261555455,SE
3261555456,3261555711,DK
-3261555712,3261595647,SE
-3261595648,3261661183,NL
+3261555712,3261555967,GB
+3261555968,3261556223,US
+3261556224,3261570303,SE
+3261570304,3261570559,IT
+3261570560,3261595647,SE
+3261595648,3261595903,NL
+3261596672,3261597695,RU
+3261601792,3261632511,NL
+3261632512,3261633535,RU
+3261634048,3261634559,NL
+3261634560,3261635583,DE
+3261635584,3261643775,NL
+3261643776,3261644799,FR
+3261644800,3261661183,NL
3261661184,3261669375,RO
3261669376,3261673471,MT
3261673472,3261675519,IT
@@ -107813,12 +123522,14 @@
3261796352,3261796607,GB
3261796608,3261796863,RU
3261796864,3261797119,PL
-3261797120,3261797375,NL
+3261797120,3261797375,KR
3261797376,3261797631,AT
3261797632,3261797887,RU
3261797888,3261798143,TR
3261798144,3261798399,RU
-3261798400,3261810687,AT
+3261798400,3261805567,AT
+3261805568,3261806591,DE
+3261806592,3261810687,AT
3261812736,3261812991,RU
3261812992,3261815807,AT
3261816064,3261816575,AT
@@ -107839,7 +123550,14 @@
3261824000,3261824255,RU
3261824512,3261824767,FR
3261824768,3261825023,PT
-3261825024,3261857791,AT
+3261825024,3261827071,AT
+3261827072,3261828095,ES
+3261828096,3261833215,AT
+3261833216,3261834239,RU
+3261834752,3261837311,AT
+3261839360,3261844479,AT
+3261844480,3261845503,DE
+3261845504,3261857791,AT
3261857792,3261923327,CZ
3261923328,3261988863,NL
3261988864,3261989119,SE
@@ -107848,7 +123566,9 @@
3261994752,3261995263,FI
3261995264,3261995519,DE
3261995520,3261995775,PL
-3261996800,3262005247,FI
+3261996800,3262001151,FI
+3262003200,3262004223,IT
+3262004736,3262005247,FI
3262005248,3262005759,PL
3262005760,3262006015,RU
3262006016,3262006271,NL
@@ -107863,7 +123583,9 @@
3262008832,3262009087,AT
3262009088,3262009343,UA
3262013440,3262017535,SE
+3262017536,3262018559,RO
3262018560,3262018815,PL
+3262019584,3262020607,FR
3262021120,3262021375,UA
3262021376,3262021631,PL
3262021632,3262021887,CH
@@ -107871,17 +123593,20 @@
3262022912,3262023167,DE
3262023680,3262023935,DK
3262025216,3262025471,FI
+3262025728,3262026751,IE
3262027264,3262027519,TR
3262027520,3262027775,BE
3262027776,3262028287,RU
3262028288,3262028543,FR
3262028544,3262028799,AE
3262028800,3262029823,DE
-3262029824,3262030847,NL
3262030848,3262031871,FR
-3262033920,3262034434,FI
-3262034435,3262034435,AX
-3262034436,3262038015,FI
+3262033920,3262034511,FI
+3262034512,3262034519,AX
+3262034520,3262034943,FI
+3262034944,3262035199,AX
+3262035200,3262036991,FI
+3262036992,3262038015,AX
3262038016,3262038271,FR
3262038528,3262038783,IL
3262038784,3262039039,NO
@@ -107913,9 +123638,7 @@
3262049280,3262049535,JO
3262049536,3262049791,GB
3262049792,3262050559,PL
-3262050560,3262050815,GB
-3262050816,3262051071,CH
-3262051072,3262051583,GB
+3262050560,3262051583,GB
3262051584,3262051839,FR
3262052608,3262052863,IL
3262052864,3262053119,GB
@@ -107923,23 +123646,67 @@
3262053376,3262053631,UA
3262053632,3262053887,RU
3262054144,3262054399,RU
-3262054400,3262122751,FI
+3262054400,3262122143,FI
+3262122144,3262122147,AX
+3262122148,3262122175,FI
+3262122176,3262122183,SE
+3262122184,3262122751,FI
3262122752,3262122815,AX
3262122816,3262124031,FI
3262124032,3262128127,DE
-3262128128,3262152703,GB
+3262128128,3262136319,GB
+3262137600,3262137855,DE
+3262139392,3262140415,GB
+3262140416,3262140671,DE
+3262141184,3262141439,DE
+3262141440,3262142463,ES
+3262142464,3262142719,DE
+3262143488,3262143743,GB
+3262144000,3262144047,DE
+3262145024,3262145279,DE
+3262145552,3262145567,DE
+3262145616,3262145631,DE
+3262146048,3262146815,DE
+3262147584,3262147839,DE
+3262148608,3262148863,DE
+3262148880,3262148919,DE
+3262148928,3262149119,DE
+3262149120,3262149151,FR
+3262149152,3262149159,DE
+3262149168,3262149375,FR
+3262149632,3262149887,DE
+3262150912,3262151047,DE
+3262151072,3262151103,DE
+3262151136,3262151151,DE
+3262151168,3262151423,DE
+3262151936,3262152191,DE
+3262152664,3262152671,DE
3262152704,3262185471,AT
-3262185472,3262222335,DE
-3262223360,3262223871,DE
+3262185472,3262196223,DE
+3262196736,3262197759,GB
+3262197760,3262203903,DE
+3262203904,3262204927,CZ
+3262204928,3262207999,DE
+3262208000,3262209023,IT
+3262209280,3262209535,DE
+3262210048,3262224383,DE
3262224896,3262225151,AT
+3262225408,3262226431,ES
3262226432,3262227455,DE
3262227712,3262227967,RO
3262228480,3262228735,DE
3262229248,3262229503,NL
3262229760,3262230015,DE
-3262230528,3262283775,DE
+3262230528,3262235135,DE
+3262235648,3262236671,IQ
+3262236672,3262238975,DE
+3262239744,3262240767,GB
+3262240768,3262243327,DE
+3262243840,3262244863,CH
+3262246912,3262283775,DE
3262283776,3262284799,RU
3262284800,3262285823,UA
+3262285824,3262286847,LU
3262286848,3262287871,SE
3262287872,3262288127,MD
3262288128,3262288383,FR
@@ -107999,6 +123766,7 @@
3262444032,3262444543,AT
3262444544,3262445055,GB
3262445056,3262445567,RO
+3262445568,3262446591,GB
3262446592,3262447103,PL
3262447104,3262447615,GB
3262447616,3262460415,PT
@@ -108012,7 +123780,1612 @@
3262461824,3262461951,RO
3262461952,3262463999,IQ
3262464000,3262472191,RU
-3262472192,3262479873,DE
+3262472192,3262472207,DE
+3262472208,3262472211,FR
+3262472212,3262472215,DE
+3262472216,3262472219,NL
+3262472220,3262472223,AT
+3262472224,3262472231,DE
+3262472232,3262472235,AT
+3262472236,3262472247,DE
+3262472248,3262472251,IT
+3262472252,3262472275,DE
+3262472276,3262472279,BE
+3262472280,3262472307,DE
+3262472308,3262472311,ES
+3262472312,3262472315,NL
+3262472316,3262472351,DE
+3262472352,3262472355,NL
+3262472356,3262472363,DE
+3262472364,3262472367,GB
+3262472368,3262472371,NL
+3262472372,3262472375,FR
+3262472376,3262472379,GB
+3262472380,3262472387,DE
+3262472388,3262472391,FR
+3262472392,3262472395,GB
+3262472396,3262472399,DE
+3262472400,3262472403,NL
+3262472404,3262472415,DE
+3262472416,3262472419,ES
+3262472420,3262472423,DE
+3262472424,3262472427,BE
+3262472428,3262472459,DE
+3262472460,3262472463,CH
+3262472464,3262472495,DE
+3262472496,3262472499,CH
+3262472500,3262472511,DE
+3262472512,3262472515,CA
+3262472516,3262472519,GB
+3262472520,3262472527,DE
+3262472528,3262472531,CH
+3262472532,3262472547,DE
+3262472548,3262472551,NL
+3262472552,3262472563,DE
+3262472564,3262472567,DK
+3262472568,3262472575,DE
+3262472576,3262472579,CA
+3262472580,3262472583,AT
+3262472584,3262472591,US
+3262472592,3262472603,DE
+3262472604,3262472607,CH
+3262472608,3262472615,US
+3262472616,3262472631,DE
+3262472632,3262472635,ES
+3262472636,3262472655,DE
+3262472656,3262472659,GB
+3262472660,3262472679,DE
+3262472680,3262472683,CL
+3262472684,3262472687,US
+3262472688,3262472695,DE
+3262472696,3262472699,IT
+3262472700,3262472703,AT
+3262472704,3262472715,DE
+3262472716,3262472727,NL
+3262472728,3262472735,DE
+3262472736,3262472739,IT
+3262472740,3262472747,DE
+3262472748,3262472751,GB
+3262472752,3262472763,DE
+3262472764,3262472767,CA
+3262472768,3262472771,DE
+3262472772,3262472775,US
+3262472776,3262472779,DE
+3262472780,3262472783,US
+3262472784,3262472791,DE
+3262472792,3262472795,GB
+3262472796,3262472799,AT
+3262472800,3262472819,DE
+3262472820,3262472823,CH
+3262472824,3262472835,DE
+3262472836,3262472839,DK
+3262472840,3262472843,DE
+3262472844,3262472847,AT
+3262472848,3262472851,DE
+3262472852,3262472855,IT
+3262472856,3262472859,FR
+3262472860,3262472863,US
+3262472864,3262472867,FR
+3262472868,3262472871,GB
+3262472872,3262472875,DE
+3262472876,3262472879,FR
+3262472880,3262472883,DE
+3262472884,3262472887,CA
+3262472888,3262472899,DE
+3262472900,3262472903,AT
+3262472904,3262472927,DE
+3262472928,3262472931,NL
+3262472932,3262472939,DE
+3262472940,3262472943,CH
+3262472944,3262472947,DE
+3262472948,3262472951,LU
+3262472952,3262472963,DE
+3262472964,3262472967,AT
+3262472968,3262472979,DE
+3262472980,3262472983,AT
+3262472984,3262472995,DE
+3262472996,3262472999,FR
+3262473000,3262473039,DE
+3262473040,3262473043,GB
+3262473044,3262473051,DE
+3262473052,3262473055,AT
+3262473056,3262473075,DE
+3262473076,3262473079,GB
+3262473080,3262473083,DE
+3262473084,3262473087,US
+3262473088,3262473091,NL
+3262473092,3262473111,DE
+3262473112,3262473115,ES
+3262473116,3262473155,DE
+3262473156,3262473159,IT
+3262473160,3262473163,NL
+3262473164,3262473167,CH
+3262473168,3262473199,DE
+3262473200,3262473203,ES
+3262473204,3262473211,DE
+3262473212,3262473215,FR
+3262473216,3262473231,DE
+3262473232,3262473239,JP
+3262473240,3262473243,DE
+3262473244,3262473247,JP
+3262473248,3262473251,DE
+3262473252,3262473255,JP
+3262473256,3262473271,DE
+3262473272,3262473283,JP
+3262473284,3262473295,DE
+3262473296,3262473299,JP
+3262473300,3262473303,DE
+3262473304,3262473315,JP
+3262473316,3262473319,DE
+3262473320,3262473323,JP
+3262473324,3262473339,DE
+3262473340,3262473347,JP
+3262473348,3262473355,DE
+3262473356,3262473371,JP
+3262473372,3262473379,DE
+3262473380,3262473383,JP
+3262473384,3262473403,DE
+3262473404,3262473415,JP
+3262473416,3262473439,DE
+3262473440,3262473443,JP
+3262473444,3262473459,DE
+3262473460,3262473467,JP
+3262473468,3262473475,DE
+3262473476,3262473476,US
+3262473477,3262473482,DE
+3262473483,3262473483,US
+3262473484,3262473490,DE
+3262473491,3262473491,US
+3262473492,3262473492,DE
+3262473493,3262473493,US
+3262473494,3262473496,DE
+3262473497,3262473497,US
+3262473498,3262473499,DE
+3262473500,3262473500,US
+3262473501,3262473501,DE
+3262473502,3262473502,US
+3262473503,3262473503,DE
+3262473504,3262473504,US
+3262473505,3262473505,DE
+3262473506,3262473506,US
+3262473507,3262473511,DE
+3262473512,3262473512,US
+3262473513,3262473515,DE
+3262473516,3262473516,US
+3262473517,3262473517,CN
+3262473518,3262473519,DE
+3262473520,3262473523,US
+3262473524,3262473527,DE
+3262473528,3262473528,US
+3262473529,3262473529,DE
+3262473530,3262473532,US
+3262473533,3262473535,DE
+3262473536,3262473536,US
+3262473537,3262473537,DE
+3262473538,3262473538,US
+3262473539,3262473544,DE
+3262473545,3262473545,US
+3262473546,3262473548,DE
+3262473549,3262473549,CA
+3262473550,3262473550,US
+3262473551,3262473552,DE
+3262473553,3262473554,US
+3262473555,3262473560,DE
+3262473561,3262473562,US
+3262473563,3262473566,DE
+3262473567,3262473567,US
+3262473568,3262473572,DE
+3262473573,3262473573,US
+3262473574,3262473579,DE
+3262473580,3262473581,US
+3262473582,3262473587,DE
+3262473588,3262473588,US
+3262473589,3262473594,DE
+3262473595,3262473595,US
+3262473596,3262473596,DE
+3262473597,3262473597,US
+3262473598,3262473603,DE
+3262473604,3262473604,US
+3262473605,3262473607,DE
+3262473608,3262473608,US
+3262473609,3262473617,DE
+3262473618,3262473618,US
+3262473619,3262473628,DE
+3262473629,3262473629,US
+3262473630,3262473633,DE
+3262473634,3262473634,US
+3262473635,3262473643,DE
+3262473644,3262473644,US
+3262473645,3262473646,DE
+3262473647,3262473647,US
+3262473648,3262473651,DE
+3262473652,3262473652,US
+3262473653,3262473653,DE
+3262473654,3262473654,US
+3262473655,3262473659,DE
+3262473660,3262473661,US
+3262473662,3262473665,DE
+3262473666,3262473667,US
+3262473668,3262473669,DE
+3262473670,3262473671,US
+3262473672,3262473675,DE
+3262473676,3262473677,US
+3262473678,3262473680,DE
+3262473681,3262473681,US
+3262473682,3262473683,DE
+3262473684,3262473686,US
+3262473687,3262473691,DE
+3262473692,3262473692,CA
+3262473693,3262473731,DE
+3262473732,3262473733,US
+3262473734,3262473736,DE
+3262473737,3262473737,US
+3262473738,3262473742,DE
+3262473743,3262473743,US
+3262473744,3262473752,DE
+3262473753,3262473753,US
+3262473754,3262473754,DE
+3262473755,3262473755,US
+3262473756,3262473758,DE
+3262473759,3262473759,US
+3262473760,3262473765,DE
+3262473766,3262473766,US
+3262473767,3262473777,DE
+3262473778,3262473778,US
+3262473779,3262473780,DE
+3262473781,3262473782,US
+3262473783,3262473855,DE
+3262473856,3262473859,US
+3262473860,3262473903,DE
+3262473904,3262473907,US
+3262473908,3262473931,DE
+3262473932,3262473935,US
+3262473936,3262473963,DE
+3262473964,3262473967,US
+3262473968,3262473971,DE
+3262473972,3262473975,US
+3262473976,3262473985,DE
+3262473986,3262473986,TW
+3262473987,3262473987,DE
+3262473988,3262473988,SG
+3262473989,3262473989,IN
+3262473990,3262473990,SG
+3262473991,3262473991,DE
+3262473992,3262473992,SG
+3262473993,3262473993,IN
+3262473994,3262473995,TW
+3262473996,3262473996,MY
+3262473997,3262473997,ID
+3262473998,3262473998,DE
+3262473999,3262473999,TW
+3262474000,3262474000,SG
+3262474001,3262474001,TW
+3262474002,3262474002,DE
+3262474003,3262474003,TW
+3262474004,3262474004,SG
+3262474005,3262474005,TW
+3262474006,3262474007,SG
+3262474008,3262474009,TW
+3262474010,3262474010,SG
+3262474011,3262474011,DE
+3262474012,3262474013,SG
+3262474014,3262474014,HK
+3262474015,3262474016,SG
+3262474017,3262474018,MY
+3262474019,3262474024,SG
+3262474025,3262474025,DE
+3262474026,3262474026,SG
+3262474027,3262474027,CN
+3262474028,3262474030,SG
+3262474031,3262474031,IN
+3262474032,3262474032,MY
+3262474033,3262474033,SG
+3262474034,3262474034,MY
+3262474035,3262474035,SG
+3262474036,3262474036,MY
+3262474037,3262474037,SG
+3262474038,3262474038,MY
+3262474039,3262474039,TW
+3262474040,3262474041,MY
+3262474042,3262474042,DE
+3262474043,3262474043,SG
+3262474044,3262474044,DE
+3262474045,3262474047,SG
+3262474048,3262474048,DE
+3262474049,3262474049,IN
+3262474050,3262474051,SG
+3262474052,3262474052,DE
+3262474053,3262474061,SG
+3262474062,3262474063,CN
+3262474064,3262474064,TW
+3262474065,3262474065,IN
+3262474066,3262474066,SG
+3262474067,3262474067,MY
+3262474068,3262474068,SG
+3262474069,3262474069,MY
+3262474070,3262474070,SG
+3262474071,3262474071,TW
+3262474072,3262474072,IN
+3262474073,3262474075,SG
+3262474076,3262474076,MY
+3262474077,3262474077,SG
+3262474078,3262474078,IN
+3262474079,3262474080,DE
+3262474081,3262474083,SG
+3262474084,3262474084,DE
+3262474085,3262474085,SG
+3262474086,3262474086,DE
+3262474087,3262474087,SG
+3262474088,3262474088,MY
+3262474089,3262474089,SG
+3262474090,3262474091,MY
+3262474092,3262474094,SG
+3262474095,3262474095,HK
+3262474096,3262474097,SG
+3262474098,3262474098,MY
+3262474099,3262474100,SG
+3262474101,3262474101,DE
+3262474102,3262474102,SG
+3262474103,3262474103,MY
+3262474104,3262474104,CN
+3262474105,3262474105,DE
+3262474106,3262474106,MY
+3262474107,3262474107,CN
+3262474108,3262474108,HK
+3262474109,3262474110,MY
+3262474111,3262474111,TH
+3262474112,3262474112,SG
+3262474113,3262474113,PH
+3262474114,3262474114,IN
+3262474115,3262474115,SG
+3262474116,3262474117,DE
+3262474118,3262474118,TH
+3262474119,3262474119,TW
+3262474120,3262474121,DE
+3262474122,3262474122,SG
+3262474123,3262474125,MY
+3262474126,3262474126,IN
+3262474127,3262474127,SG
+3262474128,3262474128,DE
+3262474129,3262474130,MY
+3262474131,3262474131,IN
+3262474132,3262474133,DE
+3262474134,3262474134,CN
+3262474135,3262474136,SG
+3262474137,3262474138,DE
+3262474139,3262474139,CN
+3262474140,3262474140,TW
+3262474141,3262474142,SG
+3262474143,3262474143,PH
+3262474144,3262474150,SG
+3262474151,3262474151,MY
+3262474152,3262474152,SG
+3262474153,3262474156,DE
+3262474157,3262474157,SG
+3262474158,3262474159,MY
+3262474160,3262474161,DE
+3262474162,3262474162,SG
+3262474163,3262474163,MY
+3262474164,3262474164,IN
+3262474165,3262474165,CN
+3262474166,3262474166,SG
+3262474167,3262474167,HK
+3262474168,3262474168,TW
+3262474169,3262474169,DE
+3262474170,3262474170,SG
+3262474171,3262474171,DE
+3262474172,3262474172,SG
+3262474173,3262474173,DE
+3262474174,3262474174,TW
+3262474175,3262474175,SG
+3262474176,3262474176,MY
+3262474177,3262474177,DE
+3262474178,3262474178,TW
+3262474179,3262474179,CN
+3262474180,3262474180,MY
+3262474181,3262474181,SG
+3262474182,3262474182,MY
+3262474183,3262474183,SG
+3262474184,3262474184,DE
+3262474185,3262474185,SG
+3262474186,3262474186,MY
+3262474187,3262474187,SG
+3262474188,3262474188,MY
+3262474189,3262474189,SG
+3262474190,3262474190,CN
+3262474191,3262474192,SG
+3262474193,3262474193,DE
+3262474194,3262474194,SG
+3262474195,3262474195,MY
+3262474196,3262474197,DE
+3262474198,3262474198,SG
+3262474199,3262474199,CN
+3262474200,3262474200,DE
+3262474201,3262474201,SG
+3262474202,3262474203,CN
+3262474204,3262474204,IN
+3262474205,3262474205,SG
+3262474206,3262474206,DE
+3262474207,3262474207,MY
+3262474208,3262474208,SG
+3262474209,3262474211,DE
+3262474212,3262474212,MY
+3262474213,3262474213,SG
+3262474214,3262474214,CN
+3262474215,3262474215,DE
+3262474216,3262474216,SG
+3262474217,3262474217,DE
+3262474218,3262474218,SG
+3262474219,3262474219,MY
+3262474220,3262474220,IN
+3262474221,3262474221,DE
+3262474222,3262474222,IN
+3262474223,3262474223,SG
+3262474224,3262474224,MY
+3262474225,3262474225,SG
+3262474226,3262474226,MY
+3262474227,3262474227,DE
+3262474228,3262474228,SG
+3262474229,3262474230,DE
+3262474231,3262474231,SG
+3262474232,3262474232,DE
+3262474233,3262474233,IN
+3262474234,3262474234,DE
+3262474235,3262474236,MY
+3262474237,3262474237,DE
+3262474238,3262474238,SG
+3262474239,3262474475,DE
+3262474476,3262474479,AU
+3262474480,3262474631,DE
+3262474632,3262474635,DK
+3262474636,3262474795,DE
+3262474796,3262474799,JP
+3262474800,3262474807,DE
+3262474808,3262474815,JP
+3262474816,3262474899,DE
+3262474900,3262474907,JP
+3262474908,3262474911,DE
+3262474912,3262474915,JP
+3262474916,3262474919,DE
+3262474920,3262474935,JP
+3262474936,3262474939,DE
+3262474940,3262474947,JP
+3262474948,3262474951,DE
+3262474952,3262474959,JP
+3262474960,3262474963,DE
+3262474964,3262474971,JP
+3262474972,3262474975,DE
+3262474976,3262474987,JP
+3262474988,3262474991,DE
+3262474992,3262475003,JP
+3262475004,3262475013,DE
+3262475014,3262475014,US
+3262475015,3262475020,DE
+3262475021,3262475021,US
+3262475022,3262475023,DE
+3262475024,3262475024,CO
+3262475025,3262475027,DE
+3262475028,3262475028,US
+3262475029,3262475034,DE
+3262475035,3262475035,US
+3262475036,3262475060,DE
+3262475061,3262475061,US
+3262475062,3262475068,DE
+3262475069,3262475069,US
+3262475070,3262475070,DE
+3262475071,3262475071,US
+3262475072,3262475072,DE
+3262475073,3262475074,BR
+3262475075,3262475075,DE
+3262475076,3262475076,US
+3262475077,3262475081,DE
+3262475082,3262475082,BR
+3262475083,3262475085,DE
+3262475086,3262475086,US
+3262475087,3262475089,DE
+3262475090,3262475090,US
+3262475091,3262475092,DE
+3262475093,3262475094,BR
+3262475095,3262475096,DE
+3262475097,3262475098,US
+3262475099,3262475100,DE
+3262475101,3262475102,US
+3262475103,3262475104,DE
+3262475105,3262475105,US
+3262475106,3262475110,DE
+3262475111,3262475112,US
+3262475113,3262475113,DE
+3262475114,3262475115,US
+3262475116,3262475119,DE
+3262475120,3262475121,US
+3262475122,3262475122,DE
+3262475123,3262475123,US
+3262475124,3262475125,DE
+3262475126,3262475128,US
+3262475129,3262475131,DE
+3262475132,3262475132,US
+3262475133,3262475134,DE
+3262475135,3262475135,US
+3262475136,3262475136,DE
+3262475137,3262475138,US
+3262475139,3262475141,DE
+3262475142,3262475142,US
+3262475143,3262475144,DE
+3262475145,3262475152,US
+3262475153,3262475155,DE
+3262475156,3262475156,US
+3262475157,3262475166,DE
+3262475167,3262475167,US
+3262475168,3262475172,DE
+3262475173,3262475174,US
+3262475175,3262475175,DE
+3262475176,3262475176,US
+3262475177,3262475177,DE
+3262475178,3262475178,US
+3262475179,3262475181,DE
+3262475182,3262475185,US
+3262475186,3262475186,DE
+3262475187,3262475188,US
+3262475189,3262475190,DE
+3262475191,3262475191,BR
+3262475192,3262475192,MX
+3262475193,3262475193,US
+3262475194,3262475195,DE
+3262475196,3262475197,US
+3262475198,3262475199,DE
+3262475200,3262475200,US
+3262475201,3262475202,DE
+3262475203,3262475203,BR
+3262475204,3262475204,DE
+3262475205,3262475205,BR
+3262475206,3262475206,DE
+3262475207,3262475207,US
+3262475208,3262475208,DE
+3262475209,3262475209,US
+3262475210,3262475211,DE
+3262475212,3262475212,US
+3262475213,3262475215,DE
+3262475216,3262475216,US
+3262475217,3262475218,DE
+3262475219,3262475219,US
+3262475220,3262475220,DE
+3262475221,3262475221,US
+3262475222,3262475271,DE
+3262475272,3262475275,IT
+3262475276,3262475279,US
+3262475280,3262475283,DE
+3262475284,3262475287,NL
+3262475288,3262475295,DE
+3262475296,3262475303,NL
+3262475304,3262475307,DE
+3262475308,3262475311,AR
+3262475312,3262475315,FR
+3262475316,3262475359,DE
+3262475360,3262475363,IT
+3262475364,3262475371,DE
+3262475372,3262475375,NL
+3262475376,3262475383,DE
+3262475384,3262475387,US
+3262475388,3262475391,DE
+3262475392,3262475395,AT
+3262475396,3262475399,NL
+3262475400,3262475403,US
+3262475404,3262475415,DE
+3262475416,3262475419,CH
+3262475420,3262475427,DE
+3262475428,3262475431,ES
+3262475432,3262475435,IT
+3262475436,3262475443,DE
+3262475444,3262475447,US
+3262475448,3262475451,FR
+3262475452,3262475479,DE
+3262475480,3262475483,US
+3262475484,3262475487,IT
+3262475488,3262475491,DE
+3262475492,3262475495,CH
+3262475496,3262475499,NL
+3262475500,3262475523,DE
+3262475524,3262475527,US
+3262475528,3262475531,DE
+3262475532,3262475535,US
+3262475536,3262475543,DE
+3262475544,3262475559,US
+3262475560,3262475579,DE
+3262475580,3262475583,US
+3262475584,3262475587,DE
+3262475588,3262475591,US
+3262475592,3262475595,DE
+3262475596,3262475607,US
+3262475608,3262475631,DE
+3262475632,3262475635,US
+3262475636,3262475643,DE
+3262475644,3262475651,US
+3262475652,3262475655,DE
+3262475656,3262475671,US
+3262475672,3262475691,DE
+3262475692,3262475695,BR
+3262475696,3262475699,US
+3262475700,3262475711,DE
+3262475712,3262475715,US
+3262475716,3262475723,DE
+3262475724,3262475727,US
+3262475728,3262475735,DE
+3262475736,3262475743,US
+3262475744,3262475751,DE
+3262475752,3262475763,US
+3262475764,3262475767,DE
+3262475768,3262475771,US
+3262475772,3262475783,DE
+3262475784,3262475787,BE
+3262475788,3262475791,DE
+3262475792,3262475807,AE
+3262475808,3262475811,US
+3262475812,3262475815,IE
+3262475816,3262475819,FR
+3262475820,3262475823,DE
+3262475824,3262475839,RO
+3262475840,3262475855,DE
+3262475856,3262475871,TR
+3262475872,3262475875,BE
+3262475876,3262475879,NL
+3262475880,3262475883,PL
+3262475884,3262475887,BE
+3262475888,3262475891,DE
+3262475892,3262475895,SA
+3262475896,3262475903,CY
+3262475904,3262475919,GR
+3262475920,3262475935,DE
+3262475936,3262475951,FR
+3262475952,3262475963,US
+3262475964,3262475967,HU
+3262475968,3262475975,DE
+3262475976,3262475983,BG
+3262475984,3262475991,SG
+3262475992,3262476015,DE
+3262476016,3262476019,ES
+3262476020,3262476023,FR
+3262476024,3262476027,DE
+3262476028,3262476031,FR
+3262476032,3262476047,DE
+3262476048,3262476055,IL
+3262476056,3262476087,DE
+3262476088,3262476091,DK
+3262476092,3262476095,NL
+3262476096,3262476099,US
+3262476100,3262476107,DE
+3262476108,3262476111,BE
+3262476112,3262476119,DE
+3262476120,3262476123,FR
+3262476124,3262476139,DE
+3262476140,3262476143,BE
+3262476144,3262476147,CH
+3262476148,3262476151,DE
+3262476152,3262476155,US
+3262476156,3262476159,BE
+3262476160,3262476163,GR
+3262476164,3262476171,DE
+3262476172,3262476175,GB
+3262476176,3262476179,ES
+3262476180,3262476183,DE
+3262476184,3262476187,AT
+3262476188,3262476195,DE
+3262476196,3262476199,US
+3262476200,3262476203,GB
+3262476204,3262476211,DE
+3262476212,3262476215,CL
+3262476216,3262476223,FR
+3262476224,3262476227,DE
+3262476228,3262476231,SE
+3262476232,3262476235,DE
+3262476236,3262476239,US
+3262476240,3262476243,IT
+3262476244,3262476247,ES
+3262476248,3262476251,NL
+3262476252,3262476255,DE
+3262476256,3262476259,US
+3262476260,3262476275,DE
+3262476276,3262476279,CA
+3262476280,3262476283,BE
+3262476284,3262476291,DE
+3262476292,3262476295,ZA
+3262476296,3262476299,DE
+3262476300,3262476303,DO
+3262476304,3262476315,DE
+3262476316,3262476319,BE
+3262476320,3262476323,DE
+3262476324,3262476327,IT
+3262476328,3262476331,NL
+3262476332,3262476339,DE
+3262476340,3262476343,ES
+3262476344,3262476351,DE
+3262476352,3262476355,AR
+3262476356,3262476359,DE
+3262476360,3262476363,US
+3262476364,3262476367,DE
+3262476368,3262476371,US
+3262476372,3262476375,DE
+3262476376,3262476379,US
+3262476380,3262476383,DE
+3262476384,3262476387,US
+3262476388,3262476395,DE
+3262476396,3262476399,AT
+3262476400,3262476423,DE
+3262476424,3262476427,ES
+3262476428,3262476431,US
+3262476432,3262476435,IT
+3262476436,3262476439,AT
+3262476440,3262476459,DE
+3262476460,3262476463,DK
+3262476464,3262476471,DE
+3262476472,3262476475,CA
+3262476476,3262476479,US
+3262476480,3262476491,DE
+3262476492,3262476495,BE
+3262476496,3262476503,DE
+3262476504,3262476507,CH
+3262476508,3262476519,DE
+3262476520,3262476523,GB
+3262476524,3262476527,MX
+3262476528,3262476531,DE
+3262476532,3262476535,IL
+3262476536,3262476539,US
+3262476540,3262476543,DE
+3262476544,3262476547,DK
+3262476548,3262476551,DE
+3262476552,3262476555,IT
+3262476556,3262476559,FR
+3262476560,3262476579,DE
+3262476580,3262476587,US
+3262476588,3262476591,ES
+3262476592,3262476595,GB
+3262476596,3262476603,DE
+3262476604,3262476607,NL
+3262476608,3262476619,DE
+3262476620,3262476623,NL
+3262476624,3262476635,DE
+3262476636,3262476639,DK
+3262476640,3262476651,DE
+3262476652,3262476655,FR
+3262476656,3262476663,US
+3262476664,3262476667,DE
+3262476668,3262476671,GB
+3262476672,3262476675,SE
+3262476676,3262476679,DE
+3262476680,3262476683,NL
+3262476684,3262476687,IT
+3262476688,3262476691,DE
+3262476692,3262476695,FR
+3262476696,3262476707,DE
+3262476708,3262476711,US
+3262476712,3262476719,DE
+3262476720,3262476723,IT
+3262476724,3262476727,FR
+3262476728,3262476735,DE
+3262476736,3262476739,CA
+3262476740,3262476743,DE
+3262476744,3262476747,CH
+3262476748,3262476751,BE
+3262476752,3262476771,DE
+3262476772,3262476775,US
+3262476776,3262476783,DE
+3262476784,3262476787,IT
+3262476788,3262476791,US
+3262476792,3262476795,ES
+3262476796,3262476827,DE
+3262476828,3262476831,LU
+3262476832,3262476855,DE
+3262476856,3262476859,ES
+3262476860,3262476883,DE
+3262476884,3262476887,FR
+3262476888,3262476899,DE
+3262476900,3262476903,FR
+3262476904,3262476911,DE
+3262476912,3262476915,CH
+3262476916,3262476935,DE
+3262476936,3262476939,AT
+3262476940,3262476951,DE
+3262476952,3262476955,NL
+3262476956,3262476975,DE
+3262476976,3262476979,BE
+3262476980,3262476995,DE
+3262476996,3262476999,IT
+3262477000,3262477015,DE
+3262477016,3262477019,CH
+3262477020,3262477027,DE
+3262477028,3262477035,FR
+3262477036,3262477039,DK
+3262477040,3262477043,US
+3262477044,3262477083,DE
+3262477084,3262477087,NL
+3262477088,3262477091,DE
+3262477092,3262477095,BE
+3262477096,3262477151,DE
+3262477152,3262477155,CH
+3262477156,3262477159,ES
+3262477160,3262477163,US
+3262477164,3262477167,DE
+3262477168,3262477171,NL
+3262477172,3262477183,DE
+3262477184,3262477187,US
+3262477188,3262477191,DE
+3262477192,3262477195,GB
+3262477196,3262477199,PL
+3262477200,3262477203,GB
+3262477204,3262477211,DE
+3262477212,3262477215,AT
+3262477216,3262477223,DE
+3262477224,3262477227,BE
+3262477228,3262477231,GB
+3262477232,3262477239,DE
+3262477240,3262477243,CA
+3262477244,3262477247,US
+3262477248,3262477251,DE
+3262477252,3262477255,ES
+3262477256,3262477259,DE
+3262477260,3262477263,GB
+3262477264,3262477267,DE
+3262477268,3262477271,NL
+3262477272,3262477275,US
+3262477276,3262477279,NL
+3262477280,3262477283,DE
+3262477284,3262477287,FR
+3262477288,3262477291,BM
+3262477292,3262477299,DE
+3262477300,3262477303,IT
+3262477304,3262477311,DE
+3262477312,3262477315,ES
+3262477316,3262477319,DE
+3262477320,3262477327,US
+3262477328,3262477331,HU
+3262477332,3262477335,DE
+3262477336,3262477339,CA
+3262477340,3262477343,DE
+3262477344,3262477347,CH
+3262477348,3262477359,DE
+3262477360,3262477363,LU
+3262477364,3262477367,DE
+3262477368,3262477371,US
+3262477372,3262477375,FR
+3262477376,3262477379,AT
+3262477380,3262477383,US
+3262477384,3262477387,FR
+3262477388,3262477407,DE
+3262477408,3262477411,US
+3262477412,3262477443,DE
+3262477444,3262477447,BE
+3262477448,3262477451,AR
+3262477452,3262477467,DE
+3262477468,3262477471,AT
+3262477472,3262477475,DE
+3262477476,3262477479,FR
+3262477480,3262477483,DE
+3262477484,3262477487,NL
+3262477488,3262477503,DE
+3262477504,3262477507,FR
+3262477508,3262477511,CH
+3262477512,3262477515,US
+3262477516,3262477523,DE
+3262477524,3262477527,IT
+3262477528,3262477563,DE
+3262477564,3262477571,BE
+3262477572,3262477575,NL
+3262477576,3262477579,DE
+3262477580,3262477583,NO
+3262477584,3262477587,DE
+3262477588,3262477591,FR
+3262477592,3262477595,GB
+3262477596,3262477599,CH
+3262477600,3262477623,DE
+3262477624,3262477627,FR
+3262477628,3262477631,CH
+3262477632,3262477659,DE
+3262477660,3262477667,US
+3262477668,3262477671,DE
+3262477672,3262477675,NL
+3262477676,3262477695,DE
+3262477696,3262477699,NL
+3262477700,3262477703,DE
+3262477704,3262477707,IT
+3262477708,3262477711,GB
+3262477712,3262477727,DE
+3262477728,3262477731,AT
+3262477732,3262477739,DE
+3262477740,3262477743,NL
+3262477744,3262477751,CH
+3262477752,3262477763,DE
+3262477764,3262477767,VE
+3262477768,3262477771,DE
+3262477772,3262477775,CA
+3262477776,3262477779,DE
+3262477780,3262477783,GB
+3262477784,3262477791,DE
+3262477792,3262477795,GB
+3262477796,3262477799,FR
+3262477800,3262477803,DE
+3262477804,3262477807,CH
+3262477808,3262477811,CA
+3262477812,3262477823,DE
+3262477824,3262477827,GB
+3262477828,3262477831,US
+3262477832,3262477835,DE
+3262477836,3262477839,ES
+3262477840,3262477843,GB
+3262477844,3262477847,DE
+3262477848,3262477851,GB
+3262477852,3262477867,DE
+3262477868,3262477871,HU
+3262477872,3262477907,DE
+3262477908,3262477911,CH
+3262477912,3262477915,US
+3262477916,3262477931,DE
+3262477932,3262477935,US
+3262477936,3262477939,DE
+3262477940,3262477943,CA
+3262477944,3262477955,DE
+3262477956,3262477959,US
+3262477960,3262477987,DE
+3262477988,3262477991,NL
+3262477992,3262478007,DE
+3262478008,3262478011,IT
+3262478012,3262478015,DE
+3262478016,3262478019,CH
+3262478020,3262478031,DE
+3262478032,3262478035,AT
+3262478036,3262478039,DE
+3262478040,3262478043,NL
+3262478044,3262478211,DE
+3262478212,3262478215,NL
+3262478216,3262478219,FR
+3262478220,3262478223,SE
+3262478224,3262478227,GB
+3262478228,3262478239,DE
+3262478240,3262478243,FR
+3262478244,3262478247,DE
+3262478248,3262478251,IT
+3262478252,3262478255,CH
+3262478256,3262478263,DE
+3262478264,3262478267,IT
+3262478268,3262478271,ES
+3262478272,3262478299,DE
+3262478300,3262478303,ES
+3262478304,3262478307,PT
+3262478308,3262478311,ES
+3262478312,3262478327,DE
+3262478328,3262478331,ES
+3262478332,3262478335,GB
+3262478336,3262478418,DE
+3262478419,3262478419,FR
+3262478420,3262478563,DE
+3262478564,3262478564,RU
+3262478565,3262478851,DE
+3262478852,3262478852,CH
+3262478853,3262478855,DE
+3262478856,3262478856,FR
+3262478857,3262478857,LI
+3262478858,3262478862,DE
+3262478863,3262478863,AT
+3262478864,3262478865,DE
+3262478866,3262478866,CH
+3262478867,3262478867,GB
+3262478868,3262478868,IT
+3262478869,3262478870,FR
+3262478871,3262478872,DE
+3262478873,3262478873,NL
+3262478874,3262478874,AT
+3262478875,3262478877,DE
+3262478878,3262478878,AT
+3262478879,3262478881,DE
+3262478882,3262478882,GR
+3262478883,3262478887,DE
+3262478888,3262478888,DK
+3262478889,3262478890,FR
+3262478891,3262478893,DE
+3262478894,3262478894,AT
+3262478895,3262478895,DE
+3262478896,3262478896,NL
+3262478897,3262478897,FR
+3262478898,3262478898,DE
+3262478899,3262478899,SE
+3262478900,3262478900,GB
+3262478901,3262478901,DE
+3262478902,3262478902,IT
+3262478903,3262478904,DE
+3262478905,3262478905,SE
+3262478906,3262478910,DE
+3262478911,3262478911,BH
+3262478912,3262478912,NL
+3262478913,3262478913,FR
+3262478914,3262478914,DE
+3262478915,3262478915,NL
+3262478916,3262478920,DE
+3262478921,3262478921,AT
+3262478922,3262478924,DE
+3262478925,3262478925,NL
+3262478926,3262478926,AT
+3262478927,3262478935,DE
+3262478936,3262478937,CH
+3262478938,3262478938,NL
+3262478939,3262478939,GB
+3262478940,3262478940,NL
+3262478941,3262478941,DE
+3262478942,3262478942,BE
+3262478943,3262478947,DE
+3262478948,3262478948,IT
+3262478949,3262478954,DE
+3262478955,3262478955,FR
+3262478956,3262478956,DE
+3262478957,3262478957,PT
+3262478958,3262478958,SE
+3262478959,3262478960,DE
+3262478961,3262478961,NL
+3262478962,3262478966,DE
+3262478967,3262478967,NL
+3262478968,3262478968,ES
+3262478969,3262478969,DE
+3262478970,3262478970,BE
+3262478971,3262478971,DE
+3262478972,3262478972,NO
+3262478973,3262478973,CH
+3262478974,3262478974,GB
+3262478975,3262478983,DE
+3262478984,3262478984,CH
+3262478985,3262478985,PT
+3262478986,3262478986,DE
+3262478987,3262478987,GB
+3262478988,3262478988,IE
+3262478989,3262478989,NL
+3262478990,3262478990,DE
+3262478991,3262478992,FR
+3262478993,3262478993,NL
+3262478994,3262478997,DE
+3262478998,3262478998,GB
+3262478999,3262478999,AT
+3262479000,3262479000,DE
+3262479001,3262479001,AT
+3262479002,3262479002,DE
+3262479003,3262479003,FR
+3262479004,3262479007,DE
+3262479008,3262479008,NL
+3262479009,3262479009,DE
+3262479010,3262479011,NL
+3262479012,3262479012,DE
+3262479013,3262479013,NL
+3262479014,3262479014,DE
+3262479015,3262479015,CH
+3262479016,3262479016,SE
+3262479017,3262479017,DK
+3262479018,3262479018,IT
+3262479019,3262479019,DE
+3262479020,3262479022,CH
+3262479023,3262479024,DE
+3262479025,3262479025,NL
+3262479026,3262479027,DE
+3262479028,3262479028,CH
+3262479029,3262479029,DE
+3262479030,3262479030,ES
+3262479031,3262479031,AT
+3262479032,3262479036,DE
+3262479037,3262479037,AT
+3262479038,3262479038,DK
+3262479039,3262479039,DE
+3262479040,3262479040,NL
+3262479041,3262479041,CH
+3262479042,3262479042,DK
+3262479043,3262479043,FR
+3262479044,3262479047,DE
+3262479048,3262479048,NL
+3262479049,3262479050,DE
+3262479051,3262479051,GB
+3262479052,3262479052,DE
+3262479053,3262479053,NL
+3262479054,3262479056,DE
+3262479057,3262479057,GB
+3262479058,3262479058,FR
+3262479059,3262479063,DE
+3262479064,3262479064,FR
+3262479065,3262479065,DE
+3262479066,3262479066,IT
+3262479067,3262479067,DE
+3262479068,3262479068,ES
+3262479069,3262479069,FR
+3262479070,3262479070,ES
+3262479071,3262479075,DE
+3262479076,3262479076,BE
+3262479077,3262479078,DE
+3262479079,3262479079,ES
+3262479080,3262479080,DE
+3262479081,3262479081,CH
+3262479082,3262479082,IT
+3262479083,3262479083,NL
+3262479084,3262479084,CH
+3262479085,3262479085,DE
+3262479086,3262479086,FR
+3262479087,3262479088,DE
+3262479089,3262479089,CH
+3262479090,3262479090,FR
+3262479091,3262479091,DE
+3262479092,3262479092,IT
+3262479093,3262479093,FR
+3262479094,3262479095,GB
+3262479096,3262479096,ES
+3262479097,3262479097,DE
+3262479098,3262479098,GB
+3262479099,3262479100,DE
+3262479101,3262479101,CH
+3262479102,3262479102,IT
+3262479103,3262479105,DE
+3262479106,3262479106,ES
+3262479107,3262479107,DE
+3262479108,3262479108,AT
+3262479109,3262479110,DE
+3262479111,3262479111,LU
+3262479112,3262479115,DE
+3262479116,3262479116,IT
+3262479117,3262479117,DE
+3262479118,3262479118,GR
+3262479119,3262479121,DE
+3262479122,3262479122,FR
+3262479123,3262479124,DE
+3262479125,3262479125,IL
+3262479126,3262479130,DE
+3262479131,3262479131,NL
+3262479132,3262479132,AT
+3262479133,3262479133,NL
+3262479134,3262479134,ES
+3262479135,3262479139,DE
+3262479140,3262479140,NL
+3262479141,3262479142,DE
+3262479143,3262479143,GB
+3262479144,3262479144,CH
+3262479145,3262479145,NO
+3262479146,3262479146,DE
+3262479147,3262479147,IT
+3262479148,3262479149,ES
+3262479150,3262479151,DE
+3262479152,3262479152,NL
+3262479153,3262479153,DE
+3262479154,3262479154,FR
+3262479155,3262479155,NL
+3262479156,3262479160,DE
+3262479161,3262479161,FR
+3262479162,3262479162,DE
+3262479163,3262479163,FR
+3262479164,3262479164,DE
+3262479165,3262479167,CH
+3262479168,3262479168,DE
+3262479169,3262479169,IT
+3262479170,3262479170,CH
+3262479171,3262479178,DE
+3262479179,3262479179,AT
+3262479180,3262479180,NL
+3262479181,3262479182,DE
+3262479183,3262479183,DK
+3262479184,3262479184,DE
+3262479185,3262479185,IT
+3262479186,3262479186,ES
+3262479187,3262479187,DE
+3262479188,3262479188,CH
+3262479189,3262479189,ES
+3262479190,3262479191,IT
+3262479192,3262479192,FR
+3262479193,3262479193,GB
+3262479194,3262479199,DE
+3262479200,3262479200,NL
+3262479201,3262479201,HU
+3262479202,3262479202,FR
+3262479203,3262479208,DE
+3262479209,3262479209,ES
+3262479210,3262479212,DE
+3262479213,3262479213,NO
+3262479214,3262479214,DE
+3262479215,3262479215,IT
+3262479216,3262479219,DE
+3262479220,3262479220,NL
+3262479221,3262479226,DE
+3262479227,3262479227,NL
+3262479228,3262479228,DK
+3262479229,3262479233,DE
+3262479234,3262479234,GB
+3262479235,3262479238,DE
+3262479239,3262479239,FR
+3262479240,3262479241,DE
+3262479242,3262479242,FR
+3262479243,3262479243,NL
+3262479244,3262479244,IT
+3262479245,3262479249,DE
+3262479250,3262479250,AT
+3262479251,3262479252,DE
+3262479253,3262479253,NL
+3262479254,3262479254,FR
+3262479255,3262479255,DE
+3262479256,3262479256,IT
+3262479257,3262479257,US
+3262479258,3262479261,DE
+3262479262,3262479262,CH
+3262479263,3262479264,DE
+3262479265,3262479265,CH
+3262479266,3262479266,FR
+3262479267,3262479267,DE
+3262479268,3262479268,NL
+3262479269,3262479269,DE
+3262479270,3262479270,DK
+3262479271,3262479271,DE
+3262479272,3262479272,IT
+3262479273,3262479273,DE
+3262479274,3262479274,ES
+3262479275,3262479275,IT
+3262479276,3262479276,DE
+3262479277,3262479277,NL
+3262479278,3262479278,DE
+3262479279,3262479279,ES
+3262479280,3262479280,DE
+3262479281,3262479281,FR
+3262479282,3262479282,DE
+3262479283,3262479283,IT
+3262479284,3262479289,DE
+3262479290,3262479290,BE
+3262479291,3262479293,DE
+3262479294,3262479294,FR
+3262479295,3262479295,DE
+3262479296,3262479296,IT
+3262479297,3262479300,DE
+3262479301,3262479301,ES
+3262479302,3262479303,DE
+3262479304,3262479304,AT
+3262479305,3262479307,DE
+3262479308,3262479308,DK
+3262479309,3262479309,SE
+3262479310,3262479312,DE
+3262479313,3262479313,FR
+3262479314,3262479318,DE
+3262479319,3262479319,DK
+3262479320,3262479324,DE
+3262479325,3262479325,ES
+3262479326,3262479327,DE
+3262479328,3262479328,DK
+3262479329,3262479329,ES
+3262479330,3262479330,NL
+3262479331,3262479332,FR
+3262479333,3262479333,HU
+3262479334,3262479334,NL
+3262479335,3262479335,DE
+3262479336,3262479336,FR
+3262479337,3262479337,ES
+3262479338,3262479338,DE
+3262479339,3262479339,NL
+3262479340,3262479340,CH
+3262479341,3262479342,DE
+3262479343,3262479343,NO
+3262479344,3262479344,NL
+3262479345,3262479345,DE
+3262479346,3262479346,DK
+3262479347,3262479347,NO
+3262479348,3262479350,IT
+3262479351,3262479351,DE
+3262479352,3262479352,IT
+3262479353,3262479356,DE
+3262479357,3262479357,FR
+3262479358,3262479361,DE
+3262479362,3262479362,PT
+3262479363,3262479368,DE
+3262479369,3262479369,FR
+3262479370,3262479370,CH
+3262479371,3262479371,GB
+3262479372,3262479372,DE
+3262479373,3262479373,IT
+3262479374,3262479374,DE
+3262479375,3262479375,NL
+3262479376,3262479377,FR
+3262479378,3262479378,DE
+3262479379,3262479379,CH
+3262479380,3262479380,AT
+3262479381,3262479381,FR
+3262479382,3262479385,DE
+3262479386,3262479386,NL
+3262479387,3262479387,DK
+3262479388,3262479389,DE
+3262479390,3262479390,DK
+3262479391,3262479391,NO
+3262479392,3262479393,DE
+3262479394,3262479394,FR
+3262479395,3262479395,NL
+3262479396,3262479396,DE
+3262479397,3262479397,IT
+3262479398,3262479399,DE
+3262479400,3262479400,NL
+3262479401,3262479404,DE
+3262479405,3262479405,IE
+3262479406,3262479406,GB
+3262479407,3262479413,DE
+3262479414,3262479414,CH
+3262479415,3262479415,DE
+3262479416,3262479416,DK
+3262479417,3262479419,DE
+3262479420,3262479420,ES
+3262479421,3262479421,DE
+3262479422,3262479422,SE
+3262479423,3262479426,DE
+3262479427,3262479427,IT
+3262479428,3262479429,FR
+3262479430,3262479430,GB
+3262479431,3262479433,DE
+3262479434,3262479434,IT
+3262479435,3262479437,DE
+3262479438,3262479438,IT
+3262479439,3262479439,DE
+3262479440,3262479440,AT
+3262479441,3262479441,DK
+3262479442,3262479442,IT
+3262479443,3262479443,GR
+3262479444,3262479448,DE
+3262479449,3262479449,GB
+3262479450,3262479452,DE
+3262479453,3262479453,CH
+3262479454,3262479455,DE
+3262479456,3262479456,IT
+3262479457,3262479462,DE
+3262479463,3262479463,IT
+3262479464,3262479464,NL
+3262479465,3262479465,DE
+3262479466,3262479466,GB
+3262479467,3262479470,DE
+3262479471,3262479471,GB
+3262479472,3262479472,DE
+3262479473,3262479473,CH
+3262479474,3262479474,BE
+3262479475,3262479475,DE
+3262479476,3262479476,GB
+3262479477,3262479477,BE
+3262479478,3262479478,IT
+3262479479,3262479481,DE
+3262479482,3262479482,IT
+3262479483,3262479483,DE
+3262479484,3262479484,AT
+3262479485,3262479489,DE
+3262479490,3262479490,IT
+3262479491,3262479494,DE
+3262479495,3262479495,BE
+3262479496,3262479498,DE
+3262479499,3262479499,ES
+3262479500,3262479502,IT
+3262479503,3262479507,DE
+3262479508,3262479508,HU
+3262479509,3262479509,FR
+3262479510,3262479513,DE
+3262479514,3262479514,FR
+3262479515,3262479515,ES
+3262479516,3262479517,DE
+3262479518,3262479518,GB
+3262479519,3262479519,GR
+3262479520,3262479521,DE
+3262479522,3262479522,CH
+3262479523,3262479526,DE
+3262479527,3262479528,NL
+3262479529,3262479529,DE
+3262479530,3262479530,BE
+3262479531,3262479535,DE
+3262479536,3262479536,GB
+3262479537,3262479538,DE
+3262479539,3262479539,IT
+3262479540,3262479540,DE
+3262479541,3262479541,CH
+3262479542,3262479543,DE
+3262479544,3262479544,IT
+3262479545,3262479545,BE
+3262479546,3262479546,GB
+3262479547,3262479547,AT
+3262479548,3262479548,DE
+3262479549,3262479549,IT
+3262479550,3262479552,DE
+3262479553,3262479553,IL
+3262479554,3262479554,DK
+3262479555,3262479555,FR
+3262479556,3262479558,DE
+3262479559,3262479559,SE
+3262479560,3262479560,DE
+3262479561,3262479561,BE
+3262479562,3262479562,GB
+3262479563,3262479563,DE
+3262479564,3262479564,GB
+3262479565,3262479565,SE
+3262479566,3262479566,NL
+3262479567,3262479567,CH
+3262479568,3262479568,NO
+3262479569,3262479575,DE
+3262479576,3262479576,NL
+3262479577,3262479577,FR
+3262479578,3262479578,DE
+3262479579,3262479579,ZA
+3262479580,3262479580,DE
+3262479581,3262479581,IT
+3262479582,3262479583,DE
+3262479584,3262479584,NL
+3262479585,3262479585,DE
+3262479586,3262479586,GR
+3262479587,3262479588,DE
+3262479589,3262479589,IT
+3262479590,3262479590,DE
+3262479591,3262479591,NL
+3262479592,3262479592,DE
+3262479593,3262479593,FR
+3262479594,3262479594,DE
+3262479595,3262479595,FR
+3262479596,3262479599,DE
+3262479600,3262479600,IT
+3262479601,3262479601,DE
+3262479602,3262479602,GB
+3262479603,3262479604,DE
+3262479605,3262479605,SE
+3262479606,3262479606,FR
+3262479607,3262479607,NL
+3262479608,3262479609,DE
+3262479610,3262479610,SI
+3262479611,3262479611,DE
+3262479612,3262479612,ES
+3262479613,3262479613,NL
+3262479614,3262479617,DE
+3262479618,3262479618,NO
+3262479619,3262479619,ES
+3262479620,3262479620,GB
+3262479621,3262479622,DE
+3262479623,3262479623,CH
+3262479624,3262479624,ES
+3262479625,3262479625,NL
+3262479626,3262479628,DE
+3262479629,3262479629,SI
+3262479630,3262479630,NL
+3262479631,3262479631,HU
+3262479632,3262479632,DE
+3262479633,3262479633,LU
+3262479634,3262479634,DE
+3262479635,3262479636,GB
+3262479637,3262479637,ES
+3262479638,3262479638,DE
+3262479639,3262479639,AT
+3262479640,3262479641,DE
+3262479642,3262479642,GB
+3262479643,3262479643,DE
+3262479644,3262479644,NL
+3262479645,3262479645,DE
+3262479646,3262479646,GB
+3262479647,3262479647,DE
+3262479648,3262479648,NO
+3262479649,3262479653,DE
+3262479654,3262479654,ES
+3262479655,3262479656,DE
+3262479657,3262479657,NL
+3262479658,3262479658,DE
+3262479659,3262479659,NL
+3262479660,3262479660,PT
+3262479661,3262479662,FR
+3262479663,3262479664,DE
+3262479665,3262479665,DK
+3262479666,3262479667,DE
+3262479668,3262479668,NL
+3262479669,3262479669,IT
+3262479670,3262479670,DE
+3262479671,3262479671,IT
+3262479672,3262479673,DE
+3262479674,3262479674,BE
+3262479675,3262479676,DE
+3262479677,3262479677,ES
+3262479678,3262479678,DE
+3262479679,3262479679,AT
+3262479680,3262479680,IT
+3262479681,3262479681,DE
+3262479682,3262479682,IT
+3262479683,3262479683,HU
+3262479684,3262479688,DE
+3262479689,3262479689,NL
+3262479690,3262479690,LU
+3262479691,3262479691,DE
+3262479692,3262479692,LU
+3262479693,3262479693,DE
+3262479694,3262479694,CH
+3262479695,3262479695,DE
+3262479696,3262479696,CH
+3262479697,3262479697,GB
+3262479698,3262479698,FR
+3262479699,3262479699,NL
+3262479700,3262479700,DE
+3262479701,3262479701,NL
+3262479702,3262479702,AT
+3262479703,3262479703,FR
+3262479704,3262479707,DE
+3262479708,3262479708,CH
+3262479709,3262479709,NL
+3262479710,3262479711,DE
+3262479712,3262479712,GB
+3262479713,3262479713,DE
+3262479714,3262479714,AT
+3262479715,3262479716,DE
+3262479717,3262479717,BE
+3262479718,3262479720,DE
+3262479721,3262479721,AT
+3262479722,3262479727,DE
+3262479728,3262479728,BE
+3262479729,3262479729,DE
+3262479730,3262479730,ES
+3262479731,3262479731,CH
+3262479732,3262479732,IT
+3262479733,3262479734,DE
+3262479735,3262479736,CH
+3262479737,3262479737,DE
+3262479738,3262479738,AT
+3262479739,3262479739,DK
+3262479740,3262479740,DE
+3262479741,3262479741,NL
+3262479742,3262479742,FR
+3262479743,3262479745,DE
+3262479746,3262479746,GB
+3262479747,3262479747,CH
+3262479748,3262479748,DE
+3262479749,3262479749,FR
+3262479750,3262479750,AT
+3262479751,3262479753,DE
+3262479754,3262479754,FR
+3262479755,3262479755,NL
+3262479756,3262479756,FR
+3262479757,3262479763,DE
+3262479764,3262479764,FR
+3262479765,3262479765,DE
+3262479766,3262479766,CH
+3262479767,3262479770,DE
+3262479771,3262479771,IT
+3262479772,3262479775,DE
+3262479776,3262479776,IT
+3262479777,3262479777,BE
+3262479778,3262479778,NL
+3262479779,3262479782,DE
+3262479783,3262479783,GB
+3262479784,3262479784,AT
+3262479785,3262479785,FR
+3262479786,3262479786,CH
+3262479787,3262479788,DE
+3262479789,3262479789,IT
+3262479790,3262479790,DE
+3262479791,3262479791,IT
+3262479792,3262479793,DE
+3262479794,3262479794,FR
+3262479795,3262479795,CH
+3262479796,3262479797,DE
+3262479798,3262479799,GB
+3262479800,3262479808,DE
+3262479809,3262479809,FR
+3262479810,3262479816,DE
+3262479817,3262479817,HU
+3262479818,3262479818,DE
+3262479819,3262479819,NL
+3262479820,3262479820,DE
+3262479821,3262479822,NL
+3262479823,3262479823,ES
+3262479824,3262479824,GB
+3262479825,3262479825,DE
+3262479826,3262479826,BE
+3262479827,3262479828,DE
+3262479829,3262479829,CH
+3262479830,3262479832,DE
+3262479833,3262479833,ES
+3262479834,3262479834,DE
+3262479835,3262479835,AT
+3262479836,3262479836,NL
+3262479837,3262479837,HU
+3262479838,3262479838,CH
+3262479839,3262479839,NL
+3262479840,3262479840,DE
+3262479841,3262479841,FR
+3262479842,3262479842,DK
+3262479843,3262479843,GB
+3262479844,3262479846,DE
+3262479847,3262479847,LU
+3262479848,3262479860,DE
+3262479861,3262479861,NO
+3262479862,3262479862,BE
+3262479863,3262479864,DE
+3262479865,3262479865,FR
+3262479866,3262479866,DE
+3262479867,3262479867,SE
+3262479868,3262479873,DE
3262479874,3262479875,FR
3262479876,3262479876,DE
3262479877,3262479877,CH
@@ -108142,7 +125515,144 @@
3262480114,3262480114,IT
3262480115,3262480116,DE
3262480117,3262480117,BE
-3262480118,3262480383,DE
+3262480118,3262480133,DE
+3262480134,3262480134,AT
+3262480135,3262480135,NL
+3262480136,3262480136,FR
+3262480137,3262480139,DE
+3262480140,3262480140,FR
+3262480141,3262480141,AT
+3262480142,3262480146,DE
+3262480147,3262480147,IT
+3262480148,3262480148,GB
+3262480149,3262480150,DE
+3262480151,3262480151,GB
+3262480152,3262480158,DE
+3262480159,3262480159,IT
+3262480160,3262480161,DE
+3262480162,3262480162,NO
+3262480163,3262480164,DE
+3262480165,3262480165,FR
+3262480166,3262480172,DE
+3262480173,3262480173,NL
+3262480174,3262480174,DE
+3262480175,3262480175,NL
+3262480176,3262480177,DE
+3262480178,3262480178,IT
+3262480179,3262480179,DE
+3262480180,3262480180,FR
+3262480181,3262480181,ES
+3262480182,3262480184,DE
+3262480185,3262480185,FR
+3262480186,3262480187,DE
+3262480188,3262480188,FI
+3262480189,3262480189,CH
+3262480190,3262480194,DE
+3262480195,3262480195,GB
+3262480196,3262480197,DE
+3262480198,3262480198,NL
+3262480199,3262480199,GB
+3262480200,3262480201,DE
+3262480202,3262480202,GB
+3262480203,3262480205,DE
+3262480206,3262480206,CH
+3262480207,3262480212,DE
+3262480213,3262480213,FR
+3262480214,3262480215,DE
+3262480216,3262480216,HU
+3262480217,3262480218,DE
+3262480219,3262480219,ES
+3262480220,3262480220,NL
+3262480221,3262480221,BE
+3262480222,3262480226,DE
+3262480227,3262480227,IE
+3262480228,3262480229,DE
+3262480230,3262480230,SE
+3262480231,3262480232,DE
+3262480233,3262480233,SE
+3262480234,3262480238,DE
+3262480239,3262480239,NL
+3262480240,3262480243,DE
+3262480244,3262480244,CH
+3262480245,3262480246,DE
+3262480247,3262480247,NL
+3262480248,3262480248,DE
+3262480249,3262480249,NL
+3262480250,3262480250,DE
+3262480251,3262480251,NL
+3262480252,3262480264,DE
+3262480265,3262480265,GB
+3262480266,3262480268,DE
+3262480269,3262480269,NL
+3262480270,3262480270,DE
+3262480271,3262480271,CH
+3262480272,3262480272,DK
+3262480273,3262480273,DE
+3262480274,3262480274,IT
+3262480275,3262480275,BE
+3262480276,3262480276,ES
+3262480277,3262480282,DE
+3262480283,3262480283,GB
+3262480284,3262480293,DE
+3262480294,3262480294,FR
+3262480295,3262480295,DE
+3262480296,3262480296,NO
+3262480297,3262480303,DE
+3262480304,3262480304,IT
+3262480305,3262480305,DE
+3262480306,3262480306,AT
+3262480307,3262480311,DE
+3262480312,3262480312,NL
+3262480313,3262480313,FR
+3262480314,3262480314,NL
+3262480315,3262480315,DE
+3262480316,3262480316,IT
+3262480317,3262480317,DE
+3262480318,3262480318,IT
+3262480319,3262480319,AT
+3262480320,3262480320,DK
+3262480321,3262480321,DE
+3262480322,3262480322,GB
+3262480323,3262480324,DE
+3262480325,3262480325,ES
+3262480326,3262480329,DE
+3262480330,3262480330,FR
+3262480331,3262480332,DE
+3262480333,3262480333,CH
+3262480334,3262480334,DE
+3262480335,3262480335,GB
+3262480336,3262480336,DE
+3262480337,3262480337,NL
+3262480338,3262480340,DE
+3262480341,3262480341,CH
+3262480342,3262480342,DE
+3262480343,3262480343,DK
+3262480344,3262480346,DE
+3262480347,3262480347,NL
+3262480348,3262480352,DE
+3262480353,3262480353,CH
+3262480354,3262480354,DE
+3262480355,3262480355,GB
+3262480356,3262480356,DE
+3262480357,3262480357,GB
+3262480358,3262480358,CH
+3262480359,3262480365,DE
+3262480366,3262480366,AT
+3262480367,3262480367,DE
+3262480368,3262480368,GB
+3262480369,3262480369,FR
+3262480370,3262480370,ES
+3262480371,3262480371,GB
+3262480372,3262480372,DE
+3262480373,3262480373,AT
+3262480374,3262480374,ES
+3262480375,3262480375,NL
+3262480376,3262480377,DE
+3262480378,3262480378,IT
+3262480379,3262480379,CH
+3262480380,3262480380,GB
+3262480381,3262480381,IT
+3262480382,3262480383,DE
3262480384,3262488575,GB
3262488576,3262496767,SE
3262496768,3262504959,FR
@@ -108163,44 +125673,115 @@
3262611456,3262627839,GB
3262627840,3262636031,IT
3262636032,3262644223,BE
-3262644224,3262648319,DE
-3262648320,3262648575,NL
-3262648576,3262652415,DE
-3262652416,3262654463,NL
-3262654464,3262906367,DE
-3262906368,3262963711,CH
+3262644224,3262648319,NL
+3262648320,3262648831,DE
+3262648832,3262649855,NL
+3262649856,3262650623,DE
+3262650624,3262654463,NL
+3262654464,3262654719,DE
+3262654720,3262658303,NL
+3262658304,3262658559,DE
+3262658560,3262661119,NL
+3262661120,3262661375,DE
+3262661376,3262664703,NL
+3262664704,3262671359,DE
+3262671360,3262672127,NL
+3262672128,3262672895,DE
+3262672896,3262673919,NL
+3262673920,3262674943,DE
+3262674944,3262676479,NL
+3262676480,3262676735,DE
+3262676736,3262678271,NL
+3262678272,3262678527,DE
+3262678528,3262681087,NL
+3262681088,3262681343,DE
+3262681344,3262682623,NL
+3262682624,3262682879,DE
+3262682880,3262686207,NL
+3262686208,3262686463,DE
+3262686464,3262687743,NL
+3262687744,3262689023,DE
+3262689024,3262690815,NL
+3262690816,3262691583,DE
+3262691584,3262692607,NL
+3262692608,3262701567,DE
+3262701568,3262703103,NL
+3262703104,3262704383,DE
+3262704384,3262707807,NL
+3262707808,3262707839,DE
+3262707840,3262707967,NL
+3262707968,3262708223,DE
+3262708224,3262709759,NL
+3262709760,3262710527,DE
+3262710528,3262712575,NL
+3262712576,3262712831,DE
+3262712832,3262716415,NL
+3262716416,3262716671,DE
+3262716672,3262721535,NL
+3262721536,3262723071,DE
+3262723072,3262724095,NL
+3262724096,3262726911,DE
+3262726912,3262732799,NL
+3262732800,3262733055,DE
+3262733056,3262753791,NL
+3262753792,3262754815,DE
+3262754816,3262761727,NL
+3262761728,3262761983,DE
+3262761984,3262774783,NL
+3262774784,3262775039,DE
+3262775040,3262832639,NL
+3262832640,3262840319,DE
+3262840320,3262906367,NL
+3262906368,3262914559,CH
+3262924800,3262925823,IT
+3262926336,3262954495,CH
+3262954496,3262955519,LI
+3262957568,3262958591,CH
+3262958592,3262959615,DE
+3262959616,3262961663,CH
+3262961920,3262962175,CH
+3262962688,3262963711,PL
3262964224,3262964479,CH
3262964992,3262965247,DE
3262965248,3262971903,CH
3262971904,3263029247,IE
3263029248,3263030271,UA
+3263030272,3263031295,FR
3263031296,3263032319,TR
3263032320,3263033343,RU
3263033344,3263033855,LV
3263033856,3263034367,IT
3263034368,3263034879,UA
3263034880,3263035391,GB
+3263035392,3263036415,DE
3263036416,3263036927,GR
3263036928,3263037439,RU
3263037440,3263045631,LB
-3263045632,3263053823,KW
+3263045632,3263046847,KW
+3263046848,3263046911,IQ
+3263046912,3263047935,KW
+3263047936,3263048191,LB
+3263048192,3263053823,KW
3263053824,3263062015,GB
3263062016,3263070207,EE
3263070208,3263070719,FR
3263070720,3263070975,NL
+3263071232,3263072255,LU
3263072256,3263074303,LB
3263074304,3263074815,CH
3263074816,3263075327,RO
3263075328,3263075839,IT
-3263075840,3263076351,GB
+3263075840,3263077375,GB
3263077376,3263077887,FR
3263077888,3263078399,DE
+3263078400,3263079423,RU
3263079424,3263080447,PL
3263080448,3263081471,RU
3263081472,3263082495,NL
+3263082496,3263083519,FR
3263083520,3263084543,UA
3263084544,3263085567,RO
-3263085568,3263086591,GB
+3263085568,3263086591,NL
3263086592,3263086847,DK
3263086848,3263087103,NL
3263087360,3263087871,DE
@@ -108256,15 +125837,21 @@
3263104031,3263104031,FR
3263104032,3263104040,DE
3263104041,3263104041,GB
-3263104042,3263108351,DE
-3263108352,3263108607,US
-3263108608,3263109951,DE
+3263104042,3263107071,DE
+3263107072,3263109119,US
+3263109120,3263109951,DE
3263109952,3263109959,FR
-3263109960,3263137791,DE
+3263109960,3263130623,DE
+3263130624,3263131647,IQ
+3263131648,3263137791,DE
3263137792,3263138303,PL
3263138304,3263138559,DE
3263138560,3263138815,AT
-3263138816,3263168511,DE
+3263138816,3263144959,DE
+3263144960,3263145983,EE
+3263145984,3263165439,DE
+3263165440,3263167487,FR
+3263167488,3263168511,DE
3263168512,3263430655,GB
3263430656,3263433471,SE
3263433472,3263433727,NO
@@ -108279,7 +125866,10 @@
3263446016,3263446271,SE
3263446272,3263446527,CH
3263446528,3263447039,DE
-3263447040,3263450111,SE
+3263447040,3263449087,SE
+3263449088,3263449343,GB
+3263449344,3263449599,SE
+3263449600,3263450111,GB
3263450112,3263450367,DK
3263450368,3263458047,SE
3263458048,3263458303,DE
@@ -108291,27 +125881,37 @@
3263461632,3263461887,GB
3263461888,3263467519,SE
3263467520,3263468031,AX
-3263468032,3263469663,SE
+3263468032,3263469567,SE
+3263469568,3263469663,SG
3263469664,3263469695,US
-3263469696,3263469855,SE
+3263469696,3263469855,SG
3263469856,3263469887,US
-3263469888,3263476159,SE
+3263469888,3263470591,SG
+3263470592,3263475711,SE
+3263475712,3263476159,JP
3263476160,3263476191,GB
-3263476192,3263476255,SE
+3263476192,3263476255,JP
3263476256,3263476287,GB
-3263476288,3263476415,SE
+3263476288,3263476415,JP
3263476416,3263476479,GB
-3263476480,3263476671,SE
+3263476480,3263476671,JP
3263476672,3263476703,GB
-3263476704,3263478527,SE
+3263476704,3263476735,JP
+3263476736,3263478015,SE
+3263478016,3263478271,AU
+3263478272,3263478527,SE
3263478528,3263478783,ES
-3263478784,3263481343,SE
+3263478784,3263480831,SE
+3263480832,3263481343,JP
3263481344,3263481359,GB
-3263481360,3263481455,SE
+3263481360,3263481455,JP
3263481456,3263481471,GB
-3263481472,3263481487,SE
+3263481472,3263481487,JP
3263481488,3263481503,GB
-3263481504,3263496191,SE
+3263481504,3263481855,JP
+3263481856,3263482879,SE
+3263482880,3263483903,GB
+3263484416,3263496191,SE
3263496192,3263503103,GB
3263503104,3263503359,DE
3263503360,3263511551,GB
@@ -108329,19 +125929,27 @@
3263545344,3263561727,US
3263561728,3263627263,NL
3263627264,3263627519,ES
-3263627520,3263628031,RU
+3263627520,3263628031,UA
3263628032,3263628287,ES
3263628288,3263631359,RU
-3263631360,3263631871,UA
-3263631872,3263632127,RU
+3263631360,3263632127,UA
3263632128,3263632383,ES
-3263632384,3263633919,RU
+3263632384,3263633151,RU
+3263633152,3263633663,UA
+3263633664,3263633919,RU
3263634432,3263634943,ES
3263634944,3263635199,RU
3263635200,3263635455,ES
-3263635456,3263639295,RU
+3263635456,3263636223,UA
+3263636224,3263636479,RU
+3263636480,3263636991,UA
+3263636992,3263637247,RU
+3263637248,3263637503,UA
+3263637504,3263638527,RU
+3263638528,3263639039,UA
+3263639040,3263639295,RU
3263639296,3263639551,DE
-3263639552,3263640575,GB
+3263639552,3263640575,US
3263640576,3263641599,RU
3263641600,3263642623,ES
3263642624,3263646719,RU
@@ -108422,7 +126030,7 @@
3264282624,3264290815,GB
3264290816,3264296191,FI
3264296192,3264297727,FR
-3264297728,3264298751,PT
+3264297728,3264298751,DE
3264298752,3264299007,BG
3264299008,3264307199,DE
3264307200,3264311295,PL
@@ -108436,6 +126044,7 @@
3264313856,3264314623,DE
3264314880,3264315135,GB
3264315392,3264317439,IE
+3264317440,3264318463,TR
3264318464,3264318975,ES
3264319488,3264319743,FR
3264319744,3264319999,SE
@@ -108461,10 +126070,11 @@
3264332800,3264333311,GB
3264333312,3264333823,UA
3264333824,3264334335,NL
-3264334336,3264334847,UA
+3264334336,3264334591,CY
+3264334592,3264334847,UA
3264334848,3264335359,PL
3264335360,3264335871,SK
-3264335872,3264336383,BZ
+3264335872,3264336383,NL
3264337408,3264338431,UA
3264338432,3264338943,DE
3264338944,3264339455,UA
@@ -108486,11 +126096,19 @@
3264345088,3264346111,NL
3264346112,3264347135,SE
3264347136,3264348159,DE
-3264352256,3264356351,FR
+3264352256,3264355327,FR
+3264355328,3264356351,ES
+3264356352,3264357375,LB
3264357632,3264357887,DE
+3264358400,3264359423,KZ
3264359936,3264360191,FR
-3264360448,3264369151,FR
+3264360448,3264362495,FR
+3264362496,3264363519,RS
+3264363520,3264369151,FR
+3264369664,3264370687,RU
+3264370688,3264371711,FR
3264372736,3264373759,FR
+3264373760,3264374783,IT
3264374784,3264376063,SE
3264376064,3264376319,HR
3264376320,3264376575,UA
@@ -108512,18 +126130,23 @@
3264385024,3264386047,DE
3264386048,3264387071,IR
3264387072,3264388095,LB
+3264388096,3264389119,TR
3264389120,3264390143,RU
+3264390144,3264391167,IT
3264391168,3264392191,SE
3264392192,3264393215,FR
3264393216,3264394239,DE
3264394240,3264395263,UA
3264395264,3264396287,AT
3264396288,3264397311,UA
+3264397312,3264398335,DE
3264398336,3264399359,UA
3264399360,3264400383,RU
+3264400384,3264401407,FR
3264401408,3264402431,DE
3264402432,3264403455,CH
3264403456,3264404479,PL
+3264404480,3264405503,ES
3264405504,3264406527,FR
3264406528,3264407551,UA
3264407552,3264408575,BG
@@ -108531,7 +126154,11 @@
3264409600,3264410623,RU
3264410624,3264411647,NO
3264411648,3264413695,PL
-3264413696,3264430079,CH
+3264413696,3264423935,CH
+3264423936,3264424959,BE
+3264424960,3264425983,CH
+3264425984,3264427007,RU
+3264427008,3264430079,CH
3264430592,3264430847,CH
3264431104,3264431615,LI
3264431616,3264431871,CH
@@ -108539,18 +126166,21 @@
3264438272,3264440575,CH
3264441344,3264441599,PL
3264442368,3264442879,CH
+3264443392,3264444415,ES
+3264446464,3264447487,DE
3264447488,3264447743,CH
3264447744,3264447999,DE
-3264448000,3264448511,CH
-3264449536,3264450559,CH
+3264448000,3264450559,CH
+3264450560,3264451583,ES
3264452352,3264452607,CH
3264454656,3264455679,CH
+3264455680,3264456703,IR
3264456704,3264457215,CH
3264457472,3264457727,AT
3264457984,3264458239,CH
3264458752,3264463871,CH
-3264463872,3264466943,LI
-3264466944,3264475391,CH
+3264463872,3264465919,LI
+3264465920,3264475391,CH
3264476416,3264476671,CH
3264476672,3264477183,RU
3264477184,3264477439,PL
@@ -108580,42 +126210,47 @@
3264604160,3264604671,IT
3264604672,3264605183,RU
3264605184,3264605695,GR
-3264605696,3264606207,DK
+3264605696,3264606207,FI
3264606208,3264606463,PL
3264606464,3264606719,DE
3264606720,3264606975,RU
3264606976,3264607231,BE
3264607232,3264607487,IT
3264607488,3264610303,DE
-3264610304,3264612479,GB
-3264612480,3264612575,FR
-3264612576,3264613027,GB
-3264613028,3264613031,FR
-3264613032,3264614911,GB
+3264610304,3264614127,FR
+3264614128,3264614131,NL
+3264614132,3264614399,FR
+3264614400,3264614911,GB
3264614912,3264615167,SE
-3264615168,3264615423,GB
-3264615424,3264615935,CH
-3264615936,3264616263,GB
+3264615168,3264615575,GB
+3264615576,3264615579,CH
+3264615580,3264616263,GB
3264616264,3264616271,CH
3264616272,3264616335,GB
3264616336,3264616337,CH
3264616338,3264617983,GB
3264617984,3264618239,US
-3264618240,3264623971,GB
+3264618240,3264619391,GB
+3264619392,3264619519,BE
+3264619520,3264623971,GB
3264623972,3264623975,BE
3264623976,3264624639,GB
3264624640,3264624671,US
3264624672,3264626687,GB
3264626688,3264627711,EE
+3264627712,3264628735,IR
3264628736,3264629759,UA
+3264629760,3264630783,TR
3264630784,3264631807,DE
3264631808,3264632831,RO
3264632832,3264633855,RU
+3264633856,3264634879,AT
3264634880,3264636927,PL
3264636928,3264637951,RU
3264637952,3264639999,DK
3264640000,3264641023,BG
3264641024,3264642047,GB
+3264642048,3264643071,RO
3264643072,3264651263,RU
3264651264,3264651775,CH
3264651776,3264652287,IT
@@ -108699,7 +126334,6 @@
3264830464,3264830719,FR
3264830720,3264830975,AT
3264830976,3264831231,CH
-3264831232,3264831487,PL
3264831488,3264831743,CH
3264831744,3264831999,FR
3264832000,3264832255,IE
@@ -108770,41 +126404,55 @@
3265003520,3265005567,DE
3265009664,3265009919,FR
3265009920,3265010175,DE
-3265011712,3265018879,DE
+3265010688,3265018879,DE
3265018880,3265019903,HK
-3265036288,3265044479,DE
+3265036288,3265043455,DE
+3265043456,3265044479,GB
3265044736,3265044991,DE
3265045760,3265046015,TR
3265046528,3265048575,DE
3265050624,3265052671,DE
+3265052672,3265053695,NO
3265053696,3265054207,DE
3265055232,3265055743,FR
3265056256,3265056511,DE
-3265056768,3265069055,DE
+3265056768,3265063935,DE
+3265063936,3265064959,TR
+3265064960,3265069055,DE
3265069056,3265134591,FI
-3265134592,3265134863,CH
-3265134864,3265134879,BE
+3265134592,3265134847,CH
+3265134848,3265134879,BE
3265134880,3265135017,CH
3265135018,3265135018,BE
3265135019,3265135039,CH
3265135040,3265135071,BE
-3265135072,3265137983,CH
+3265135072,3265136128,CH
+3265136129,3265136129,FR
+3265136130,3265137551,CH
+3265137552,3265137555,NL
+3265137556,3265137983,CH
3265137984,3265138047,NL
3265138048,3265138303,CH
3265138304,3265138307,NL
3265138308,3265138599,CH
3265138600,3265138607,NL
-3265138608,3265140127,CH
-3265140128,3265140143,BE
+3265138608,3265139967,CH
+3265139968,3265139975,BE
+3265139976,3265139999,CH
+3265140000,3265140015,BE
+3265140016,3265140119,CH
+3265140120,3265140143,BE
3265140144,3265140159,CH
3265140160,3265140191,BE
3265140192,3265141551,CH
3265141552,3265141555,IE
-3265141556,3265141767,CH
-3265141768,3265141775,GB
-3265141776,3265141873,CH
-3265141874,3265141874,GB
-3265141875,3265142220,CH
+3265141556,3265141759,CH
+3265141760,3265141775,GB
+3265141776,3265141791,CH
+3265141792,3265141839,GB
+3265141840,3265141855,CH
+3265141856,3265141887,GB
+3265141888,3265142220,CH
3265142221,3265142221,GB
3265142222,3265142783,CH
3265142784,3265150975,MT
@@ -108914,11 +126562,13 @@
3265868800,3265869055,DE
3265871872,3265875967,GB
3265880064,3265886207,GB
+3265886208,3265887231,TR
3265887232,3265887487,GB
3265887488,3265887743,PT
3265887744,3265888255,PL
3265888256,3265896447,GB
-3265902336,3265902591,FR
+3265900544,3265902591,FR
+3265902592,3265903615,ES
3265904384,3265904639,RO
3265904640,3265904895,DE
3265905152,3265905663,GB
@@ -108995,7 +126645,17 @@
3266345984,3266346495,GB
3266346496,3266346751,IT
3266346752,3266347007,FR
-3266347008,3266355199,GB
+3266351360,3266352607,GB
+3266352896,3266353567,GB
+3266353584,3266353591,GB
+3266353664,3266353671,GB
+3266353680,3266353687,GB
+3266353776,3266353783,US
+3266353856,3266353863,GB
+3266353880,3266353887,GB
+3266353896,3266353903,GB
+3266353920,3266354175,GB
+3266354688,3266355199,GB
3266355200,3266363391,RO
3266363392,3266371583,GB
3266371584,3266379775,HU
@@ -109013,24 +126673,44 @@
3266420736,3266428927,GB
3266428928,3266437119,GR
3266437120,3266445311,GL
-3266445312,3266510847,NL
+3266445312,3266469887,NL
+3266469888,3266473983,GB
+3266473984,3266477055,NL
+3266477056,3266477311,US
+3266477312,3266510847,NL
3266510848,3266543615,ES
3266543616,3266576383,IT
-3266576384,3266616575,DE
+3266576384,3266578431,DE
+3266578432,3266579455,AT
+3266579456,3266591743,DE
+3266591744,3266592767,IE
+3266592768,3266603007,DE
+3266603008,3266604031,GB
+3266604032,3266606079,DE
+3266606080,3266607103,FR
+3266607104,3266616575,DE
3266617328,3266617343,GB
-3266617344,3266633727,DE
+3266617344,3266623487,DE
+3266623488,3266624511,GB
+3266624512,3266627583,DE
+3266627584,3266628095,SE
+3266628096,3266629119,DE
+3266629632,3266632703,DE
+3266632704,3266633727,PL
3266634392,3266634399,EE
+3266634752,3266635775,FR
3266635776,3266641919,DE
3266641920,3266707455,PL
3266707456,3266723839,DK
-3266723840,3266732031,IT
-3266732032,3266734079,DK
-3266734080,3266735103,IT
+3266723840,3266732031,CZ
+3266734080,3266735103,DE
3266735104,3266735615,DK
3266735616,3266736127,IT
3266736128,3266740223,FR
3266740224,3266748415,DK
-3266748416,3266756607,CH
+3266748416,3266750463,CH
+3266750464,3266751487,DE
+3266751488,3266756607,CH
3266756608,3266764799,DE
3266764800,3266766847,NO
3266766848,3266772991,DK
@@ -109038,13 +126718,14 @@
3266781184,3266789375,PL
3266789376,3266794361,IT
3266794362,3266794362,SM
-3266794363,3266794495,IT
-3266794496,3266797567,SM
+3266794363,3266797567,IT
3266797568,3266797823,GB
3266797824,3266798207,ES
3266798208,3266798847,GB
3266798848,3266798879,CZ
-3266798880,3266803215,GB
+3266798880,3266802367,GB
+3266802368,3266802399,BG
+3266802400,3266803215,GB
3266803216,3266803219,FR
3266803220,3266804095,GB
3266804096,3266804127,NL
@@ -109060,8 +126741,10 @@
3267035136,3267039231,NO
3267039232,3267040255,DE
3267040256,3267041279,RO
+3267041280,3267042303,GB
3267042304,3267043327,UA
3267043328,3267044351,GB
+3267044352,3267045375,RU
3267045376,3267046399,PL
3267046400,3267047423,NL
3267047424,3267048447,UA
@@ -109079,12 +126762,9 @@
3267059712,3267060735,NL
3267060736,3267061759,LV
3267061760,3267063807,UA
-3267063808,3267064319,DE
-3267064320,3267064575,BE
-3267064576,3267064576,DE
-3267064577,3267064577,BE
-3267064578,3267064831,DE
+3267063808,3267064831,BE
3267064832,3267065855,PL
+3267065856,3267066879,GB
3267066880,3267067903,IT
3267067904,3267068927,UA
3267068928,3267069951,BG
@@ -109094,11 +126774,12 @@
3267073024,3267075071,UA
3267075072,3267076095,CH
3267076096,3267078143,DE
-3267078144,3267079167,PL
+3267078144,3267079167,FR
3267079168,3267080191,IT
3267080192,3267081215,AT
3267081216,3267082239,PL
3267082240,3267083263,DE
+3267083264,3267084287,ES
3267084288,3267085311,FR
3267085312,3267086335,RU
3267086336,3267087359,PL
@@ -109108,16 +126789,13 @@
3267090432,3267091455,UA
3267091456,3267092479,DE
3267092480,3267093503,FR
-3267093504,3267094527,RU
+3267093504,3267094527,UA
3267094528,3267095551,FI
3267095552,3267096575,PL
3267096576,3267097599,DE
3267097600,3267098623,KZ
3267098624,3267098879,GB
-3267098880,3267098895,FR
-3267098896,3267099007,GB
-3267099008,3267099043,FR
-3267099044,3267099135,GB
+3267098880,3267099135,FR
3267099136,3267099263,DE
3267099264,3267099327,NL
3267099328,3267099383,GB
@@ -109164,12 +126842,17 @@
3267662896,3267662911,IE
3267665920,3267666943,GB
3267670016,3267671039,ZA
+3267671040,3267672063,DE
3267681304,3267681331,FR
3267681340,3267681343,FR
3267681888,3267681903,FR
3267681956,3267681963,FR
3267683936,3267683967,PL
-3267690496,3267756031,FI
+3267690496,3267691519,FI
+3267691520,3267692543,SE
+3267692544,3267741759,FI
+3267741760,3267741791,SE
+3267741792,3267756031,FI
3267756032,3267821567,SE
3267821568,3267839177,FR
3267839178,3267839178,RE
@@ -109186,7 +126869,133 @@
3268173824,3268182015,MT
3268182016,3268198399,PL
3268198400,3268214783,MA
-3268214784,3268280319,GB
+3268215584,3268215615,GB
+3268215648,3268215679,GB
+3268215712,3268215743,GB
+3268215808,3268216063,GB
+3268218112,3268218367,GB
+3268219808,3268219823,GB
+3268221440,3268221471,GB
+3268221504,3268221599,GB
+3268221696,3268221951,GB
+3268222976,3268223167,GB
+3268223200,3268223231,GB
+3268224768,3268225023,US
+3268226368,3268226399,GB
+3268226496,3268226655,GB
+3268226688,3268226815,GB
+3268227328,3268227391,GB
+3268227520,3268227615,GB
+3268231168,3268231199,GB
+3268231320,3268231359,GB
+3268231392,3268231423,GB
+3268231648,3268231679,GB
+3268231744,3268231807,GB
+3268232224,3268232243,GB
+3268232352,3268232367,GB
+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
+3268236192,3268236207,GB
+3268236544,3268236607,GB
+3268236672,3268236799,GB
+3268237824,3268237855,GB
+3268237904,3268237911,GB
+3268238336,3268238359,GB
+3268238384,3268238399,GB
+3268238472,3268238511,GB
+3268238536,3268238543,GB
+3268238552,3268238623,GB
+3268238632,3268238783,GB
+3268238816,3268238831,GB
+3268239584,3268240127,GB
+3268240160,3268240191,GB
+3268240384,3268240399,GB
+3268240480,3268240487,GB
+3268240688,3268240695,GB
+3268240712,3268240735,GB
+3268240744,3268240751,GB
+3268240976,3268240991,GB
+3268241008,3268241023,GB
+3268241544,3268241551,GB
+3268241640,3268241655,GB
+3268242496,3268242523,GB
+3268242880,3268243071,GB
+3268243328,3268243391,GB
+3268244776,3268244783,GB
+3268244792,3268244799,GB
+3268245504,3268245759,GB
+3268246272,3268246783,GB
+3268246976,3268246991,GB
+3268248320,3268248447,GB
+3268248512,3268248543,GB
+3268249600,3268251311,GB
+3268251312,3268251327,IE
+3268251328,3268251583,GB
+3268251584,3268251615,DE
+3268251616,3268251631,CH
+3268251632,3268251647,GB
+3268254464,3268254543,GB
+3268254624,3268254639,GB
+3268254896,3268254903,GB
+3268255824,3268255863,GB
+3268255896,3268255919,GB
+3268255952,3268255959,GB
+3268255968,3268255983,GB
+3268256896,3268256959,GB
+3268257024,3268257055,GB
+3268257088,3268257119,GB
+3268257416,3268257419,GB
+3268257432,3268257439,IT
+3268257464,3268257471,GB
+3268257488,3268257527,GB
+3268258560,3268258623,GB
+3268258688,3268258751,GB
+3268259520,3268259527,GB
+3268259544,3268259551,GB
+3268259560,3268259575,GB
+3268259808,3268259815,GB
+3268259832,3268260095,GB
+3268260352,3268260383,GB
+3268260416,3268260447,GB
+3268260512,3268260607,GB
+3268260640,3268260647,GB
+3268261936,3268261951,GB
+3268262768,3268262783,GB
+3268262880,3268262887,GB
+3268263232,3268263263,GB
+3268263776,3268263783,GB
+3268264736,3268264767,GB
+3268265416,3268265431,GB
+3268265984,3268266495,GB
+3268266984,3268266991,GB
+3268267536,3268267551,GB
+3268267584,3268267599,GB
+3268267616,3268267647,GB
+3268267744,3268267775,GB
+3268267952,3268267959,GB
+3268268032,3268272127,GB
+3268272728,3268272735,GB
+3268273024,3268273151,GB
+3268274112,3268274175,GB
+3268274456,3268274459,GB
+3268274528,3268274543,GB
+3268274560,3268274591,GB
+3268275984,3268275999,GB
+3268276640,3268276655,GB
+3268276672,3268276687,GB
+3268276864,3268276895,GB
+3268277056,3268277119,GB
+3268277760,3268278015,GB
+3268278464,3268278495,GB
+3268280064,3268280319,GB
3268280320,3268345855,FR
3268345856,3268411391,GB
3268411392,3268476927,AT
@@ -109239,16 +127048,115 @@
3268771328,3268771839,NL
3268771840,3268788223,NO
3268788224,3268804607,CZ
-3268804608,3268870143,FR
+3268804608,3268869375,FR
+3268869376,3268869631,PF
+3268869632,3268870143,FR
3268870144,3268935679,FI
3268935680,3269066751,GB
3269066752,3269132287,SE
3269132288,3269197823,GR
3269197824,3269263359,ES
-3269263360,3269459967,GB
+3269264640,3269264895,DE
+3269265856,3269265919,DE
+3269265920,3269266175,GB
+3269266688,3269266943,DE
+3269266944,3269267455,GB
+3269272576,3269272583,DE
+3269272704,3269272831,DE
+3269272832,3269272847,GB
+3269272848,3269272863,NL
+3269272864,3269272887,GB
+3269272896,3269273087,NL
+3269273088,3269273343,DE
+3269273600,3269273855,GB
+3269273856,3269275647,DE
+3269275904,3269276159,DE
+3269276160,3269276415,GB
+3269277184,3269277695,FR
+3269277696,3269277759,GB
+3269277760,3269278719,NL
+3269279232,3269279487,NL
+3269279672,3269279679,CH
+3269279744,3269280255,GB
+3269280256,3269280271,DE
+3269280272,3269280767,NL
+3269280768,3269281023,GB
+3269281024,3269281279,DE
+3269281280,3269281535,FR
+3269282048,3269282303,DE
+3269282304,3269282559,GB
+3269282560,3269282815,FR
+3269283328,3269283583,DE
+3269283872,3269283903,DE
+3269284096,3269284351,GB
+3269284864,3269285079,FR
+3269285088,3269285135,DE
+3269285136,3269285151,GB
+3269285152,3269285215,DE
+3269285216,3269285311,FR
+3269285312,3269285327,DE
+3269285336,3269285343,FR
+3269285344,3269285631,GB
+3269285632,3269285887,DE
+3269286400,3269286479,DE
+3269288688,3269288695,DE
+3269288704,3269288959,DE
+3269290560,3269290575,DE
+3269290592,3269290687,DE
+3269290736,3269290743,DE
+3269291264,3269291519,DE
+3269291520,3269291567,GB
+3269291584,3269291647,GB
+3269291776,3269292287,ES
+3269293120,3269293151,DE
+3269293208,3269293215,DE
+3269293248,3269293279,DE
+3269293376,3269293391,DE
+3269293856,3269293887,DE
+3269293920,3269293951,DE
+3269294080,3269295103,GB
+3269296232,3269296235,DE
+3269296368,3269296375,DE
+3269297152,3269297663,GB
+3269298664,3269298671,DE
+3269303040,3269303295,DE
+3269303296,3269303423,GB
+3269303552,3269303679,DE
+3269305344,3269305351,DE
+3269305856,3269306879,DE
+3269307648,3269307903,DE
+3269310656,3269310671,DE
+3269310976,3269311231,DE
+3269311872,3269311999,DE
+3269313792,3269314175,DE
+3269314192,3269314199,DE
+3269315584,3269315591,DE
+3269317632,3269317663,GB
+3269317664,3269317671,IE
+3269317672,3269317887,GB
+3269317888,3269318399,DE
+3269318400,3269318655,GB
+3269318656,3269318983,DE
+3269319008,3269319047,DE
+3269319056,3269319071,DE
+3269319136,3269320447,DE
+3269320704,3269321727,GB
+3269322240,3269322495,DE
+3269322656,3269322679,DE
+3269322752,3269323263,DE
+3269326848,3269326855,DE
+3269326960,3269326971,DE
+3269326992,3269326999,DE
+3269327024,3269327039,DE
+3269327056,3269327103,DE
+3269327760,3269327775,DE
+3269327864,3269328383,DE
+3269328896,3269459967,GB
3269459968,3269525503,ES
3269525504,3269591039,IR
-3269591040,3269656575,RU
+3269591040,3269621759,RU
+3269621760,3269623551,BY
+3269623552,3269656575,RU
3269656576,3269722111,GB
3269722112,3269787647,CZ
3269787648,3269853183,NL
@@ -109300,7 +127208,7 @@
3270655232,3270655487,IT
3270655488,3270655743,PL
3270655744,3270655999,CH
-3270656000,3270664191,NL
+3270660096,3270664191,NL
3270664192,3270666239,UA
3270666240,3270667263,PL
3270667264,3270668287,SE
@@ -109310,19 +127218,24 @@
3270672384,3270680575,GB
3270680576,3270684671,IL
3270684672,3270688767,FR
-3270688768,3270836223,IT
+3270688768,3270772079,IT
+3270772080,3270772087,NL
+3270772088,3270836223,IT
3270836224,3270901759,DE
-3270901760,3270905599,IT
-3270905600,3270905855,SE
+3270901760,3270903807,IT
+3270903808,3270905855,SE
3270905856,3270909951,IT
+3270909952,3270910975,DE
3270911840,3270911871,PL
3270911872,3270911935,DE
3270911968,3270911999,NL
+3270912000,3270913023,GB
3270913024,3270920703,DE
3270920704,3270921215,UA
3270921216,3270921471,DK
3270921472,3270921727,UA
3270921728,3270922239,GB
+3270922240,3270923263,RU
3270923264,3270924287,DE
3270926336,3270926591,AT
3270926592,3270926847,CH
@@ -109389,7 +127302,7 @@
3271010304,3271010815,RU
3271010816,3271011327,GB
3271011328,3271013375,UA
-3271013376,3271013887,US
+3271013376,3271013887,FR
3271014400,3271014911,RU
3271015424,3271015935,DK
3271015936,3271016447,RU
@@ -109529,10 +127442,20 @@
3271425280,3271425535,DK
3271425536,3271426047,DE
3271426048,3271491583,FR
-3271491584,3271557119,DK
+3271491584,3271495935,DK
+3271495936,3271495977,DE
+3271495978,3271495978,DK
+3271495979,3271496058,DE
+3271496059,3271496059,DK
+3271496060,3271496063,DE
+3271496064,3271557119,DK
3271557120,3271589887,BE
3271589888,3271688191,NO
-3271688192,3271698431,GB
+3271691776,3271692031,US
+3271692032,3271692287,GB
+3271694080,3271694335,IE
+3271694592,3271695103,GB
+3271696384,3271698431,GB
3271704576,3271712767,RU
3271712768,3271720959,LV
3271720960,3271729151,GB
@@ -109552,7 +127475,7 @@
3271745024,3271745535,PL
3271745536,3271746047,GB
3271746048,3271746559,CZ
-3271746560,3271747071,CH
+3271746560,3271747071,US
3271747072,3271747583,KZ
3271747584,3271748095,RU
3271748096,3271748607,GR
@@ -109562,12 +127485,12 @@
3271751168,3271751679,RO
3271751680,3271752191,NL
3271752192,3271752703,GB
-3271752704,3271753215,RU
+3271753104,3271753104,RU
3271753216,3271753727,PL
3271753728,3271770111,FR
3271770112,3271786495,AT
3271786496,3271788543,UA
-3271789568,3271790591,RU
+3271788544,3271790591,RU
3271790592,3271791615,LV
3271791616,3271792639,UA
3271792640,3271793663,PL
@@ -109591,7 +127514,8 @@
3271812096,3271813119,ES
3271813120,3271814143,PL
3271814144,3271815167,UA
-3271815168,3271817215,RU
+3271815168,3271816191,RU
+3271816192,3271817215,UA
3271817216,3271818239,DE
3271818240,3271819263,RU
3271819264,3271884799,DE
@@ -109638,7 +127562,9 @@
3271933184,3271933439,GB
3271933440,3271933695,SE
3271933696,3271933951,DE
-3271933952,3272015871,FR
+3271933952,3272001535,FR
+3272001536,3272001791,GP
+3272001792,3272015871,FR
3272019968,3272020991,IT
3272020992,3272024063,DK
3272024064,3272032255,IE
@@ -109649,7 +127575,9 @@
3272065024,3272073727,GB
3272073728,3272073855,IE
3272073856,3272081407,GB
-3272081408,3272089599,PT
+3272081408,3272087551,PT
+3272087552,3272088575,MR
+3272088576,3272089599,PT
3272089600,3272090111,NO
3272090112,3272091647,RU
3272091648,3272092671,UA
@@ -109685,7 +127613,8 @@
3272113920,3272114175,AT
3272114176,3272122367,PL
3272122368,3272131071,GB
-3272131072,3272131583,RO
+3272131072,3272131327,RO
+3272131328,3272131583,NL
3272131584,3272132095,GB
3272132096,3272132607,CH
3272132608,3272133119,UA
@@ -109702,13 +127631,112 @@
3272138240,3272138751,BG
3272138752,3272146943,DE
3272146944,3272212479,RU
-3272212480,3272217311,GB
-3272217312,3272217327,BE
-3272217328,3272221695,GB
+3272212480,3272212991,GB
+3272212992,3272213375,ES
+3272213376,3272213391,IT
+3272213392,3272213399,GB
+3272213400,3272213407,ES
+3272213408,3272213415,NL
+3272213416,3272213423,ES
+3272213424,3272213431,NL
+3272213432,3272213439,GB
+3272213440,3272213471,ES
+3272213472,3272213487,CY
+3272213488,3272213495,GB
+3272213496,3272213503,ES
+3272213504,3272213567,IT
+3272213568,3272213575,GB
+3272213576,3272213583,IE
+3272213584,3272213599,DE
+3272213600,3272213615,IT
+3272213632,3272213639,NL
+3272213656,3272213663,IT
+3272213672,3272213679,IT
+3272213696,3272213735,IT
+3272213752,3272213759,IT
+3272213760,3272214015,NL
+3272214016,3272214271,ES
+3272214272,3272214351,GB
+3272214352,3272214407,FR
+3272214432,3272214463,SE
+3272214528,3272215039,FR
+3272215040,3272215295,ES
+3272215296,3272215551,NL
+3272215552,3272215807,CH
+3272215808,3272215823,NL
+3272215872,3272215879,BE
+3272215884,3272215919,CH
+3272215920,3272215935,NL
+3272215936,3272215999,GB
+3272216000,3272216007,IT
+3272216016,3272216031,DE
+3272216032,3272216039,IT
+3272216040,3272216047,GB
+3272216048,3272216055,IT
+3272216216,3272216223,FR
+3272216480,3272216480,IR
+3272216992,3272217007,GB
+3272217088,3272217151,GB
+3272217152,3272217159,BE
+3272217216,3272217279,BE
+3272217280,3272217303,DE
+3272217304,3272217327,BE
+3272217344,3272217599,GB
+3272217600,3272217631,CH
+3272217856,3272217875,ES
+3272217880,3272217895,IT
+3272217896,3272217919,ES
+3272217920,3272217983,DE
+3272217984,3272218079,ES
+3272218112,3272218623,GB
+3272218632,3272218639,RU
+3272218688,3272218719,DE
+3272218752,3272218879,GB
+3272218880,3272219135,BE
+3272219136,3272219391,NL
+3272219392,3272219647,GB
+3272219648,3272219903,FR
+3272219904,3272220159,DE
+3272220672,3272221183,GB
+3272221184,3272221439,NL
+3272221440,3272221447,SE
+3272221448,3272221455,NO
+3272221456,3272221463,SE
+3272221472,3272221495,SE
+3272221504,3272221519,SE
3272221696,3272221951,NL
3272221952,3272222207,GB
-3272222208,3272222271,ES
-3272222272,3272228863,GB
+3272222208,3272222463,ES
+3272222464,3272222719,NL
+3272222720,3272223015,GB
+3272223024,3272223039,GB
+3272223232,3272223487,NL
+3272223488,3272223503,SG
+3272223520,3272223551,HK
+3272223744,3272225023,GB
+3272225280,3272225535,IT
+3272225536,3272225791,GB
+3272225792,3272225815,IT
+3272225856,3272225919,GB
+3272225920,3272226047,IT
+3272226048,3272226815,FR
+3272226816,3272227071,GB
+3272227072,3272227327,PT
+3272227328,3272227359,US
+3272227360,3272227511,GB
+3272227520,3272227583,GB
+3272227584,3272227839,FR
+3272227840,3272228095,ES
+3272228096,3272228223,GB
+3272228224,3272228351,ES
+3272228352,3272228607,FR
+3272228624,3272228631,CY
+3272228632,3272228639,NL
+3272228640,3272228671,IT
+3272228672,3272228703,DE
+3272228704,3272228735,FR
+3272228736,3272228799,NL
+3272228800,3272228863,CH
3272228864,3272237055,LU
3272237056,3272245247,IM
3272245248,3272261631,FI
@@ -109742,7 +127770,9 @@
3272351744,3272352767,PL
3272352768,3272353791,UA
3272353792,3272355839,CH
-3272355840,3272356863,GB
+3272355840,3272356351,GB
+3272356352,3272356607,ES
+3272356608,3272356863,GB
3272356864,3272357887,RO
3272357888,3272358911,UA
3272358912,3272359935,NL
@@ -109826,7 +127856,7 @@
3272625152,3272626175,UA
3272626176,3272627199,DE
3272627200,3272628223,NL
-3272628224,3272629247,LT
+3272628224,3272629247,UA
3272629248,3272638463,RU
3272638464,3272646655,ES
3272646656,3272647385,GB
@@ -109837,8 +127867,8 @@
3272671232,3272736767,SE
3272737792,3272738815,GB
3272738816,3272739839,IL
-3272739840,3272741887,UA
-3272741888,3272743935,RU
+3272739840,3272740863,UA
+3272740864,3272743935,RU
3272743936,3272744959,UA
3272744960,3272753151,RU
3272753152,3272769535,NL
@@ -109850,7 +127880,7 @@
3272870912,3272871935,FR
3272871936,3272872959,FI
3272873984,3272875007,BG
-3272875008,3272876031,UA
+3272875008,3272876031,RU
3272876032,3272884223,NL
3272884224,3272892415,DE
3272892416,3272892927,UA
@@ -109925,11 +127955,9 @@
3272943560,3272943567,DE
3272943568,3272943903,GB
3272943904,3272943907,HK
-3272943908,3272968231,GB
-3272968232,3272968232,US
-3272968233,3272969215,GB
-3272969216,3272970239,US
-3272970240,3272998911,GB
+3272943908,3272966143,GB
+3272966144,3272982527,US
+3272982528,3272998911,GB
3272998912,3273007103,PT
3273007104,3273015295,CZ
3273015296,3273023487,SE
@@ -110001,15 +128029,181 @@
3273269248,3273277439,GB
3273277440,3273278463,UA
3273279488,3273281535,PL
-3273281536,3273282559,RU
-3273282560,3273283583,UA
+3273281536,3273283583,UA
3273283584,3273284607,GB
3273284608,3273285631,UA
3273285632,3273293823,GB
3273293824,3273302015,MK
3273302016,3273310207,RU
3273310208,3273318399,AT
-3273318400,3273392127,GB
+3273318400,3273326591,GB
+3273326984,3273326987,DE
+3273326992,3273327047,DE
+3273327104,3273327295,DE
+3273327336,3273327359,DE
+3273327488,3273327495,GB
+3273327520,3273327551,IE
+3273327552,3273327583,GB
+3273328512,3273328639,DE
+3273328640,3273329199,GB
+3273329200,3273329215,DE
+3273329216,3273329279,GB
+3273329312,3273329327,GB
+3273329416,3273329423,GB
+3273329424,3273329439,DE
+3273329440,3273329599,GB
+3273329632,3273329639,GB
+3273329664,3273329887,GB
+3273329904,3273330171,GB
+3273330176,3273330183,IR
+3273330232,3273330235,GB
+3273330288,3273330295,IE
+3273330304,3273330431,IE
+3273330496,3273330519,GB
+3273330528,3273330551,GB
+3273330560,3273331191,GB
+3273331712,3273331743,GB
+3273331752,3273331791,GB
+3273331808,3273331823,GB
+3273331840,3273331887,GB
+3273331904,3273331967,GB
+3273331968,3273332031,DE
+3273332032,3273332095,GB
+3273332096,3273332223,DE
+3273332224,3273332231,GB
+3273332240,3273332255,GB
+3273332264,3273332479,GB
+3273332544,3273332575,DE
+3273332608,3273332671,DE
+3273333056,3273333119,DE
+3273334272,3273334671,DE
+3273334720,3273334783,DE
+3273334784,3273335039,AE
+3273335296,3273335423,GB
+3273335432,3273335455,GB
+3273335512,3273335535,GB
+3273335616,3273335623,GB
+3273335656,3273335663,GB
+3273335696,3273335703,GB
+3273335936,3273335999,DE
+3273336848,3273336863,DE
+3273336864,3273336871,GB
+3273336872,3273336895,DE
+3273336960,3273337087,DE
+3273337856,3273338111,DE
+3273338624,3273338879,DE
+3273339136,3273339391,DE
+3273339392,3273339919,GB
+3273339920,3273339943,DE
+3273339944,3273339955,GB
+3273339960,3273339967,GB
+3273339984,3273340095,GB
+3273340096,3273340111,GI
+3273340112,3273340119,GB
+3273340144,3273340415,GB
+3273340928,3273341711,FR
+3273341752,3273341823,FR
+3273341856,3273341951,FR
+3273342022,3273342022,GB
+3273342034,3273342034,GB
+3273342080,3273342095,GB
+3273342192,3273342207,GB
+3273342208,3273342231,AE
+3273342240,3273342255,AE
+3273342464,3273342975,DE
+3273342976,3273343999,GB
+3273344000,3273344767,DE
+3273345024,3273345279,DE
+3273346560,3273346815,OM
+3273346816,3273347071,DE
+3273347584,3273347839,GB
+3273347840,3273348351,DE
+3273349120,3273349631,DE
+3273350272,3273350287,DE
+3273350336,3273350351,DE
+3273351168,3273351423,GB
+3273351424,3273351455,DE
+3273351504,3273351519,DE
+3273351872,3273351903,DE
+3273351936,3273352191,DE
+3273352928,3273352959,DE
+3273352992,3273353023,DE
+3273357312,3273358335,GB
+3273359888,3273359903,DE
+3273360016,3273360079,DE
+3273361472,3273361535,DE
+3273361632,3273361663,DE
+3273361792,3273361823,DE
+3273361856,3273361919,DE
+3273362048,3273362175,DE
+3273362240,3273362255,DE
+3273363208,3273363211,DE
+3273363328,3273363391,DE
+3273363456,3273364479,GB
+3273364608,3273364735,DE
+3273364992,3273365247,DE
+3273365504,3273365519,NL
+3273365520,3273365543,GB
+3273365544,3273365759,NL
+3273365760,3273365767,GB
+3273365888,3273366015,FR
+3273366016,3273366527,DE
+3273366528,3273367551,GB
+3273367552,3273367567,DE
+3273368064,3273368575,DE
+3273369344,3273369855,DE
+3273369872,3273369903,FR
+3273369912,3273369919,FR
+3273369976,3273369983,FR
+3273370624,3273371135,DE
+3273371712,3273371743,DE
+3273371760,3273371775,DE
+3273371808,3273371823,DE
+3273371872,3273371875,DE
+3273372000,3273372055,DE
+3273372096,3273372159,DE
+3273372672,3273372927,GB
+3273372928,3273373183,NL
+3273373184,3273373455,GB
+3273373456,3273373567,DE
+3273373568,3273374847,GB
+3273374856,3273374863,GB
+3273374896,3273374903,GB
+3273374912,3273374931,GB
+3273375168,3273375168,GB
+3273375232,3273375551,DE
+3273375744,3273375871,DE
+3273376000,3273376255,DE
+3273376536,3273376543,DE
+3273377792,3273378095,DE
+3273378560,3273378815,DE
+3273381888,3273382143,DE
+3273382144,3273382399,GB
+3273382400,3273382463,DE
+3273382480,3273382591,DE
+3273382640,3273382687,DE
+3273384192,3273384703,DE
+3273384960,3273385215,DE
+3273385280,3273385343,DE
+3273385472,3273385727,DE
+3273385760,3273385791,DE
+3273385856,3273385919,DE
+3273387056,3273387071,DE
+3273387216,3273387231,DE
+3273387264,3273387519,DE
+3273387552,3273387583,DE
+3273388160,3273388223,DE
+3273388800,3273388807,DE
+3273388816,3273388863,DE
+3273388872,3273388879,DE
+3273388904,3273388911,DE
+3273388912,3273388927,GB
+3273390080,3273390111,DE
+3273390112,3273390143,US
+3273390144,3273390207,DE
+3273390368,3273390399,DE
+3273391104,3273391359,DE
+3273391488,3273391615,DE
3273392128,3273392639,PL
3273392640,3273393663,RO
3273394176,3273394687,RO
@@ -110055,11 +128249,15 @@
3273727136,3273727143,NO
3273727144,3273727151,CZ
3273727152,3273727167,IT
-3273727168,3273746943,NL
-3273746944,3273747199,GB
-3273747200,3273750119,NL
-3273750120,3273750120,GB
-3273750121,3273768959,NL
+3273727168,3273728511,NL
+3273728512,3273728590,GB
+3273728591,3273728592,NL
+3273728593,3273728767,GB
+3273728768,3273729023,NL
+3273732096,3273736191,GB
+3273736192,3273744383,FR
+3273744384,3273752575,GB
+3273752576,3273768959,NL
3273768960,3273785343,TR
3273785344,3273801727,RU
3273801728,3273802239,DE
@@ -110111,9 +128309,9 @@
3273877760,3273878015,GR
3273878016,3273878271,FR
3273878272,3273878527,LV
-3273878528,3273878783,RU
3273878784,3273879039,NO
-3273879040,3273879551,BE
+3273879040,3273879295,GB
+3273879296,3273879551,BE
3273879552,3273880063,GB
3273880064,3273880575,NL
3273880576,3273881087,RU
@@ -110125,7 +128323,8 @@
3273883392,3273883647,DE
3273883648,3273916415,NL
3273916416,3273932799,IT
-3273932800,3273949183,DE
+3273932800,3273940991,DE
+3273940992,3273949183,GB
3273949184,3273981951,FR
3273981952,3274047487,DE
3274050560,3274051583,PL
@@ -110151,7 +128350,7 @@
3274163712,3274164223,BG
3274164224,3274164735,AT
3274165760,3274166271,RU
-3274166272,3274166783,AT
+3274166272,3274166783,RO
3274166784,3274167295,UA
3274167296,3274167807,BG
3274168320,3274168831,PL
@@ -110250,7 +128449,6 @@
3274412032,3274412287,RU
3274412288,3274412543,NO
3274412544,3274412799,UA
-3274412800,3274413055,RU
3274413056,3274413311,UA
3274413312,3274413567,AT
3274413568,3274413823,FR
@@ -110262,10 +128460,92 @@
3274415104,3274415359,PL
3274415360,3274415615,GB
3274415616,3274415871,NL
-3274415872,3274416127,SI
3274416128,3274424319,IT
-3274424320,3274440703,SE
-3274440704,3274506239,GB
+3274424320,3274435711,SE
+3274435712,3274435839,US
+3274435840,3274440703,SE
+3274442752,3274443263,GB
+3274443520,3274443647,GB
+3274443712,3274443775,GB
+3274443808,3274444031,GB
+3274446336,3274447871,GB
+3274448384,3274448639,GB
+3274448896,3274449663,GB
+3274449920,3274450231,GB
+3274450248,3274450367,GB
+3274450376,3274450391,GB
+3274450408,3274450415,GB
+3274450432,3274450591,GB
+3274450656,3274450687,GB
+3274451200,3274452255,GB
+3274452264,3274452311,GB
+3274452320,3274452335,GB
+3274452344,3274452367,GB
+3274452384,3274452391,GB
+3274452400,3274452423,GB
+3274452432,3274452439,GB
+3274452448,3274452455,GB
+3274452464,3274452471,GB
+3274452496,3274452543,GB
+3274452560,3274452575,GB
+3274452656,3274452703,GB
+3274452736,3274452927,GB
+3274452992,3274453767,GB
+3274453784,3274453791,GB
+3274453800,3274453847,GB
+3274453864,3274453871,GB
+3274453888,3274453903,GB
+3274453920,3274453935,GB
+3274453944,3274453951,GB
+3274453960,3274453975,GB
+3274453984,3274453991,GB
+3274454000,3274454271,GB
+3274454656,3274455311,GB
+3274455328,3274455335,GB
+3274455344,3274455351,GB
+3274455360,3274455375,GB
+3274455384,3274455391,GB
+3274455400,3274455423,GB
+3274455432,3274455439,GB
+3274455448,3274455503,GB
+3274455520,3274455535,GB
+3274455744,3274455807,GB
+3274455872,3274455935,GB
+3274455968,3274456359,GB
+3274456368,3274456375,GB
+3274456384,3274456391,GB
+3274456400,3274456407,GB
+3274456416,3274456447,GB
+3274456456,3274456511,GB
+3274456528,3274456535,GB
+3274456544,3274456559,GB
+3274456568,3274460223,GB
+3274460416,3274462207,GB
+3274462464,3274465023,GB
+3274465152,3274466351,GB
+3274466368,3274466399,GB
+3274466416,3274466463,GB
+3274466560,3274466735,GB
+3274466744,3274466763,GB
+3274466768,3274466783,GB
+3274466816,3274467099,GB
+3274467104,3274467307,GB
+3274467328,3274470383,GB
+3274470400,3274470535,GB
+3274470656,3274471423,GB
+3274471536,3274471615,GB
+3274471680,3274471935,GB
+3274472960,3274483711,GB
+3274489600,3274489855,GB
+3274490176,3274490895,GB
+3274490912,3274491199,GB
+3274491208,3274491247,GB
+3274491256,3274491295,GB
+3274491304,3274491319,GB
+3274491328,3274491383,GB
+3274491392,3274504447,GB
+3274505728,3274505791,GB
+3274505793,3274505855,GB
3274506240,3274571775,IT
3274571776,3274579967,GR
3274579968,3274580991,UA
@@ -110283,11 +128563,11 @@
3274612736,3274620927,RU
3274620928,3274629119,FR
3274629120,3274635263,LU
-3274635264,3274635519,FR
+3274635264,3274635519,DE
3274635520,3274635775,LU
-3274635776,3274636287,FR
-3274636288,3274636799,LU
-3274636800,3274637311,FR
+3274635776,3274636031,DE
+3274636032,3274636799,LU
+3274636800,3274637311,DE
3274637312,3274670079,CZ
3274670080,3274686463,DK
3274686464,3274686719,RU
@@ -110341,12 +128621,14 @@
3274700544,3274700799,DK
3274700800,3274701055,UA
3274701056,3274701311,DE
-3274701568,3274701823,IT
+3274701568,3274701823,GB
3274701824,3274702079,IL
3274702080,3274702335,UA
3274702336,3274702591,SE
3274702592,3274702847,KZ
-3274702848,3274801151,CH
+3274702848,3274719231,CH
+3274719232,3274727423,GB
+3274727424,3274801151,CH
3274802176,3274803199,FR
3274803200,3274804223,DE
3274804224,3274805247,FR
@@ -110370,9 +128652,9 @@
3274831872,3274833919,RO
3274833920,3274842111,BY
3274842112,3274850303,DK
-3274850304,3274855487,GB
-3274855488,3274855519,AT
-3274855520,3274866687,GB
+3274850304,3274855423,GB
+3274855424,3274855935,AT
+3274855936,3274866687,GB
3274866688,3274883071,DE
3274883072,3274899455,EE
3274899456,3274902399,DE
@@ -110536,7 +128818,9 @@
3274964928,3274964991,GB
3274964992,3275030527,DE
3275030528,3275096063,ES
-3275096064,3275104767,RU
+3275096064,3275104255,RU
+3275104256,3275104256,DE
+3275104257,3275104767,RU
3275104768,3275105279,DE
3275105280,3275105791,GB
3275105792,3275106303,NL
@@ -110579,11 +128863,178 @@
3275399168,3275407359,AT
3275407360,3275415551,GB
3275415552,3275423743,UA
-3275423744,3275458303,GB
+3275423744,3275423751,GB
+3275423808,3275423839,GB
+3275423872,3275424295,GB
+3275424320,3275424383,GB
+3275424432,3275424439,GB
+3275424480,3275424487,GB
+3275424496,3275424639,GB
+3275424648,3275424703,GB
+3275424712,3275424743,GB
+3275424752,3275424863,GB
+3275424904,3275424911,GB
+3275424960,3275425063,GB
+3275425072,3275425135,GB
+3275425144,3275425311,GB
+3275425328,3275425343,GB
+3275425536,3275425559,GB
+3275425568,3275425583,GB
+3275425792,3275426559,GB
+3275426576,3275427103,GB
+3275427112,3275427263,GB
+3275427272,3275427279,GB
+3275427296,3275427599,GB
+3275427616,3275427715,GB
+3275427728,3275428367,GB
+3275428376,3275428399,GB
+3275428416,3275428447,GB
+3275428608,3275428863,GB
+3275429888,3275430143,GB
+3275430592,3275430631,GB
+3275430656,3275430911,GB
+3275431936,3275432863,GB
+3275432872,3275432883,GB
+3275433984,3275436543,GB
+3275436800,3275438623,GB
+3275438648,3275438655,GB
+3275438672,3275438847,GB
+3275439104,3275439455,GB
+3275439460,3275439679,GB
+3275439688,3275439695,GB
+3275439712,3275439839,GB
+3275439872,3275439935,GB
+3275439944,3275439951,GB
+3275439968,3275441407,GB
+3275441424,3275441439,GB
+3275441472,3275441567,GB
+3275441600,3275441823,GB
+3275441832,3275441835,GB
+3275441840,3275442687,GB
+3275442720,3275442723,GB
+3275443200,3275443227,GB
+3275443230,3275443230,GB
+3275443232,3275443239,GB
+3275443248,3275443407,GB
+3275443424,3275443727,GB
+3275443760,3275443775,GB
+3275443840,3275443967,GB
+3275444224,3275444735,GB
+3275446272,3275446783,GB
+3275446800,3275446815,GB
+3275446848,3275447039,GB
+3275447056,3275447135,GB
+3275448320,3275449359,GB
+3275449376,3275449399,GB
+3275449440,3275449471,GB
+3275449488,3275449519,GB
+3275449520,3275449527,FR
+3275449528,3275449567,GB
+3275449584,3275449887,GB
+3275449904,3275449911,GB
+3275449920,3275449927,GB
+3275450048,3275450071,GB
+3275450080,3275450207,GB
+3275450224,3275450879,GB
+3275451232,3275451263,GB
+3275451392,3275451663,GB
+3275451680,3275451711,GB
+3275451720,3275451727,GB
+3275451744,3275451767,GB
+3275451776,3275451779,GB
+3275451784,3275451791,GB
+3275452416,3275453023,GB
+3275453056,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
+3275454272,3275454303,GB
+3275454336,3275454383,GB
+3275454416,3275455231,GB
+3275455248,3275455295,GB
+3275455360,3275456391,GB
+3275456416,3275458303,GB
3275458304,3275458559,FK
-3275458560,3275460351,GB
+3275458560,3275459071,IE
+3275459600,3275459615,IE
+3275459840,3275460095,IE
+3275460096,3275460223,GB
+3275460224,3275460239,IE
+3275460288,3275460295,GB
3275460352,3275460607,IE
-3275460608,3275497471,GB
+3275460608,3275460863,HK
+3275460864,3275463183,GB
+3275463192,3275463199,GB
+3275463216,3275463239,GB
+3275463248,3275463279,GB
+3275463296,3275463423,GB
+3275463456,3275463495,GB
+3275463504,3275463523,GB
+3275463528,3275463635,GB
+3275463640,3275464031,GB
+3275464032,3275464047,IE
+3275464048,3275468655,GB
+3275468656,3275468671,IE
+3275468672,3275468735,GB
+3275468736,3275468751,IE
+3275468752,3275468767,GB
+3275468768,3275468799,IE
+3275468800,3275469071,GB
+3275469072,3275469087,IE
+3275469088,3275473151,GB
+3275473232,3275473311,GB
+3275473328,3275473343,GB
+3275473352,3275473359,GB
+3275473368,3275473895,GB
+3275473904,3275474047,GB
+3275474088,3275474735,GB
+3275474752,3275474887,GB
+3275474896,3275474911,GB
+3275474936,3275474951,GB
+3275474960,3275475039,GB
+3275475044,3275475287,GB
+3275475292,3275475295,GB
+3275475376,3275475399,GB
+3275475408,3275475447,GB
+3275475456,3275475759,GB
+3275475800,3275475807,GB
+3275475824,3275475831,GB
+3275475840,3275475855,GB
+3275475876,3275475879,GB
+3275475968,3275476223,GB
+3275476288,3275476479,GB
+3275476608,3275476631,GB
+3275476640,3275476687,GB
+3275476704,3275476735,GB
+3275476944,3275476959,GB
+3275476976,3275477015,GB
+3275477040,3275477095,GB
+3275477104,3275477151,GB
+3275477160,3275477247,GB
+3275477440,3275477567,GB
+3275477760,3275478271,GB
+3275478528,3275481087,GB
+3275481344,3275481599,GB
+3275482112,3275482455,GB
+3275482480,3275483647,GB
+3275484160,3275484415,GB
+3275485184,3275485215,GB
+3275485224,3275485231,GB
+3275485248,3275485375,GB
+3275485408,3275485431,GB
+3275485440,3275485759,GB
+3275485840,3275485855,GB
+3275485936,3275485936,GB
+3275486208,3275487231,GB
+3275487240,3275487243,CZ
+3275487248,3275487263,CZ
+3275488768,3275489279,CZ
+3275489280,3275497471,GB
3275497472,3275505663,DE
3275505664,3275506175,PL
3275506176,3275506687,UA
@@ -110658,6 +129109,7 @@
3275551744,3275552767,RU
3275552768,3275553791,LV
3275553792,3275554815,FI
+3275563584,3275563647,CH
3275588448,3275588463,BE
3275590656,3275590911,BE
3275612928,3275613183,LU
@@ -110679,7 +129131,7 @@
3275630592,3275631103,PL
3275631104,3275631615,FR
3275631616,3275632127,DE
-3275632128,3275633151,RU
+3275632640,3275633151,RU
3275633152,3275633663,FR
3275633664,3275634687,RU
3275634688,3275635199,RO
@@ -110813,21 +129265,65 @@
3275921920,3275922431,DE
3275922432,3275922943,UA
3275922944,3275923455,GR
-3275923456,3275931647,ME
+3275923456,3275924991,ME
+3275924992,3275925759,RS
+3275925760,3275928927,ME
+3275928928,3275928943,RS
+3275928944,3275931647,ME
3275931648,3275939839,UA
3275939840,3275948031,GB
3275948032,3276013567,SE
-3276013568,3276019711,GB
-3276019712,3276020735,FR
-3276020736,3276028031,GB
-3276028032,3276028039,FR
-3276028040,3276029375,GB
-3276029376,3276029439,FR
-3276029440,3276036543,GB
+3276013568,3276014239,GB
+3276014240,3276014247,FR
+3276014248,3276014463,GB
+3276014464,3276014479,FR
+3276014480,3276015055,GB
+3276015056,3276015063,FR
+3276015064,3276015103,GB
+3276015104,3276017663,FR
+3276017664,3276018383,GB
+3276018384,3276018399,FR
+3276018400,3276018687,GB
+3276018688,3276020991,FR
+3276020992,3276021007,GB
+3276021008,3276021015,FR
+3276021016,3276021055,GB
+3276021056,3276021071,FR
+3276021072,3276021247,GB
+3276021248,3276024831,FR
+3276024832,3276025159,GB
+3276025160,3276025167,FR
+3276025168,3276025855,GB
+3276025856,3276028159,FR
+3276028160,3276028279,GB
+3276028280,3276028287,FR
+3276028288,3276028383,GB
+3276028384,3276028391,FR
+3276028392,3276028543,GB
+3276028544,3276028671,FR
+3276028672,3276029375,GB
+3276029376,3276029951,FR
+3276029952,3276030591,GB
+3276030592,3276030607,FR
+3276030608,3276031479,GB
+3276031480,3276031999,FR
+3276032000,3276032311,GB
+3276032312,3276032319,FR
+3276032320,3276032511,GB
+3276032512,3276032767,ES
+3276032768,3276036543,GB
3276036544,3276036607,FR
-3276036608,3276042239,GB
+3276036608,3276038143,GB
+3276038144,3276039167,FR
+3276039168,3276039263,GB
+3276039264,3276039279,FR
+3276039280,3276042087,GB
+3276042088,3276042095,FR
+3276042096,3276042239,GB
3276042240,3276044287,FR
-3276044288,3276046335,GB
+3276044288,3276045247,GB
+3276045248,3276045255,FR
+3276045256,3276046335,GB
3276046336,3276062719,RU
3276062720,3276063231,PL
3276063232,3276063743,FR
@@ -110907,7 +129403,9 @@
3276185600,3276193791,NO
3276193792,3276201983,RU
3276201984,3276210175,AT
-3276210176,3276275711,DE
+3276210176,3276234303,DE
+3276234304,3276234367,GB
+3276234368,3276275711,DE
3276275712,3276283903,SK
3276283904,3276292095,GB
3276292096,3276292479,BE
@@ -110916,7 +129414,8 @@
3276300288,3276304383,DE
3276304384,3276304639,BG
3276304640,3276305407,GB
-3276305408,3276306431,IL
+3276305408,3276305919,IL
+3276305920,3276306431,SI
3276306432,3276308479,NL
3276308480,3276309503,GB
3276309504,3276310527,AT
@@ -110929,7 +129428,7 @@
3276316672,3276324863,GB
3276324864,3276333055,IT
3276333056,3276341247,RU
-3276341248,3276406783,DE
+3276341248,3276406783,NL
3276406784,3276414975,FI
3276414976,3276415999,DK
3276416000,3276417023,SE
@@ -110982,15 +129481,12 @@
3276490783,3276490783,CH
3276492232,3276492235,GB
3276492248,3276492259,GB
-3276492284,3276492287,GB
-3276492296,3276492299,GB
-3276492304,3276492307,GB
-3276492312,3276492315,GB
+3276492284,3276492319,GB
+3276494352,3276494367,GB
3276494476,3276494479,GB
-3276495528,3276495547,GB
+3276495528,3276495551,GB
3276498120,3276498123,GB
-3276499504,3276499571,DE
-3276499576,3276499579,DE
+3276499504,3276499579,DE
3276499680,3276499687,DE
3276499744,3276499775,DE
3276500088,3276500091,DE
@@ -111047,8 +129543,7 @@
3276687872,3276688383,KW
3276688384,3276688895,DE
3276688896,3276689407,ES
-3276689408,3276689919,GB
-3276689920,3276690431,CN
+3276689408,3276690431,GB
3276690432,3276690943,NL
3276690944,3276691455,GR
3276691456,3276691967,RO
@@ -111064,7 +129559,7 @@
3276696576,3276697087,CZ
3276697088,3276697599,GB
3276697600,3276698111,UA
-3276698112,3276699647,RU
+3276698112,3276699135,RU
3276699648,3276700159,NL
3276700160,3276700671,CZ
3276700672,3276701183,RO
@@ -111441,23 +129936,24 @@
3276860928,3276861183,BE
3276861184,3276861439,DE
3276861440,3276865535,DK
-3276865536,3276866303,GB
-3276866304,3276866559,NL
+3276865536,3276866559,NL
3276866560,3276868703,GB
3276868704,3276868711,BE
-3276868712,3276870719,GB
-3276870720,3276870735,IT
-3276870736,3276870911,GB
-3276870912,3276871679,IT
-3276871680,3276873759,GB
+3276868712,3276869631,GB
+3276869632,3276873727,IT
+3276873728,3276873759,GB
3276873760,3276873791,ES
-3276873792,3276874351,GB
+3276873792,3276873983,GB
+3276873984,3276874239,ES
+3276874240,3276874351,GB
3276874352,3276874367,ES
3276874368,3276874959,GB
3276874960,3276874975,NL
3276874976,3276876279,GB
3276876280,3276876283,DK
-3276876284,3276880427,GB
+3276876284,3276877055,GB
+3276877056,3276877063,AT
+3276877064,3276880427,GB
3276880428,3276880431,DK
3276880432,3276881411,GB
3276881412,3276881415,FR
@@ -111481,15 +129977,23 @@
3276886912,3276887039,DE
3276887040,3276889087,GB
3276889088,3276889215,IT
-3276889216,3276890175,GB
-3276890176,3276890191,US
-3276890192,3276892287,GB
-3276892288,3276892351,IT
-3276892352,3276893695,GB
+3276889216,3276890111,GB
+3276890112,3276892159,US
+3276892160,3276892287,GB
+3276892288,3276892367,IT
+3276892368,3276893055,GB
+3276893056,3276893087,IT
+3276893088,3276893695,GB
3276893696,3276893951,IT
-3276893952,3276898783,GB
+3276893952,3276897727,GB
+3276897728,3276897791,BE
+3276897792,3276898671,GB
+3276898672,3276898687,CH
+3276898688,3276898783,GB
3276898784,3276898799,CH
-3276898800,3276900207,GB
+3276898800,3276899263,GB
+3276899264,3276899295,CH
+3276899296,3276900207,GB
3276900208,3276900211,CH
3276900212,3276901613,GB
3276901614,3276901614,CH
@@ -111503,25 +130007,29 @@
3276903424,3276903487,SE
3276903488,3276903551,GB
3276903552,3276903679,SE
-3276903680,3276907341,GB
+3276903680,3276905471,GB
+3276905472,3276906495,SE
+3276906496,3276907341,GB
3276907342,3276907342,NL
3276907343,3276908759,GB
3276908760,3276908760,NL
3276908761,3276909831,GB
3276909832,3276909835,NL
-3276909836,3276911167,GB
-3276911168,3276911199,IT
-3276911200,3276911249,GB
-3276911250,3276911250,IT
-3276911251,3276911679,GB
+3276909836,3276910591,GB
+3276910592,3276911615,IT
+3276911616,3276911679,GB
3276911680,3276911711,IT
3276911712,3276912207,GB
3276912208,3276912215,IT
3276912216,3276912287,GB
3276912288,3276912319,IT
-3276912320,3276912671,GB
+3276912320,3276912383,GB
+3276912384,3276912511,IT
+3276912512,3276912671,GB
3276912672,3276912687,IT
-3276912688,3276917231,GB
+3276912688,3276912879,GB
+3276912880,3276912895,IT
+3276912896,3276917231,GB
3276917232,3276917247,FR
3276917248,3276917735,GB
3276917736,3276917739,ES
@@ -111531,11 +130039,16 @@
3276919376,3276919391,DE
3276919392,3276919487,GB
3276919488,3276919535,DE
-3276919536,3276922735,GB
-3276922736,3276922751,DE
-3276922752,3276922879,GB
+3276919536,3276920831,GB
+3276920832,3276922879,DE
3276922880,3276924927,FR
-3276924928,3276926683,GB
+3276924928,3276925761,GB
+3276925762,3276925762,FR
+3276925763,3276925911,GB
+3276925912,3276925919,FR
+3276925920,3276925951,GB
+3276925952,3276926207,FR
+3276926208,3276926683,GB
3276926684,3276926687,FR
3276926688,3276931071,GB
3276931072,3276939263,KZ
@@ -111557,7 +130070,7 @@
3276966912,3276968959,RU
3276968960,3276969471,RO
3276969472,3276969983,UA
-3276969984,3276970495,DE
+3276969984,3276970495,NL
3276970496,3276971519,RU
3276971520,3276972031,DE
3276972032,3276980223,PL
@@ -111704,7 +130217,9 @@
3277372416,3277372927,IR
3277373440,3277373951,RU
3277373952,3277374463,FR
-3277374464,3277375999,RU
+3277374464,3277374719,RU
+3277374720,3277374975,KZ
+3277374976,3277375999,RU
3277376000,3277376511,NL
3277377536,3277378047,RU
3277378560,3277379071,HR
@@ -111725,21 +130240,40 @@
3277388544,3277388799,HU
3277388800,3277389311,RU
3277389312,3277389823,AM
-3277389824,3277403439,GB
-3277403440,3277403455,FR
+3277390080,3277394943,GB
+3277394944,3277395455,US
+3277395456,3277402591,GB
+3277402592,3277402607,ES
+3277402608,3277403135,GB
+3277403136,3277403215,FR
+3277403216,3277403231,GB
+3277403232,3277403311,FR
+3277403312,3277403327,GB
+3277403328,3277403359,FR
+3277403360,3277403375,GB
+3277403376,3277403455,FR
3277403456,3277403471,AT
3277403472,3277403487,FR
-3277403488,3277404159,GB
+3277403488,3277403647,GB
+3277403648,3277403807,ES
+3277403808,3277404159,GB
3277404160,3277404415,DE
-3277404416,3277404664,GB
-3277404665,3277404665,IT
-3277404666,3277405208,GB
-3277405209,3277405209,SE
-3277405210,3277455359,GB
+3277404416,3277404671,IT
+3277404672,3277404735,CH
+3277404736,3277404927,GB
+3277404928,3277404975,NL
+3277404976,3277405183,GB
+3277405184,3277405263,SE
+3277405264,3277405439,GB
+3277405440,3277405471,DE
+3277405472,3277452639,GB
+3277452640,3277452647,IE
+3277452648,3277452655,DK
+3277452656,3277455359,GB
3277455360,3277463551,DE
3277463552,3277471743,US
-3277471744,3277479935,NL
-3277479936,3277480447,GB
+3277471744,3277473791,PL
+3277473792,3277480447,GB
3277480960,3277481471,DK
3277481472,3277481983,PL
3277481984,3277482495,SE
@@ -111758,7 +130292,7 @@
3277666816,3277667327,US
3277667328,3277676543,DE
3277676544,3277680639,FR
-3277680640,3277684735,GB
+3277680640,3277684735,US
3277684736,3277685247,RU
3277685248,3277685759,DE
3277685760,3277686271,IE
@@ -111813,7 +130347,8 @@
3277716480,3277716991,SE
3277716992,3277717503,IT
3277717504,3277725695,YE
-3277725696,3277730157,CH
+3277725696,3277729791,GB
+3277729792,3277730157,CH
3277730158,3277730158,GB
3277730159,3277730559,CH
3277730560,3277730563,GB
@@ -111821,9 +130356,22 @@
3277731104,3277731119,DE
3277731120,3277731122,CH
3277731123,3277731123,DE
-3277731124,3277732207,CH
+3277731124,3277731223,CH
+3277731224,3277731231,DE
+3277731232,3277731247,CH
+3277731248,3277731255,DE
+3277731256,3277731475,CH
+3277731476,3277731479,DE
+3277731480,3277732183,CH
+3277732184,3277732187,GB
+3277732188,3277732207,CH
3277732208,3277732223,GB
-3277732224,3277733887,CH
+3277732224,3277732227,CH
+3277732228,3277732231,GB
+3277732232,3277733375,CH
+3277733376,3277733407,GB
+3277733408,3277733411,DE
+3277733412,3277733887,CH
3277733888,3277742079,DE
3277742080,3277745151,FI
3277745152,3277746175,CH
@@ -111910,7 +130458,9 @@
3277856768,3277864959,DE
3277864960,3277873151,RU
3277873152,3277881343,NL
-3277881344,3277889535,IT
+3277881344,3277886463,IT
+3277886464,3277887487,IQ
+3277887488,3277889535,IT
3277889536,3277897727,RU
3277897728,3277905919,IT
3277905920,3277914111,BG
@@ -111923,9 +130473,17 @@
3278012416,3278020607,SK
3278020608,3278028799,RU
3278028800,3278036991,DE
-3278036992,3278045183,FR
-3278045184,3278110719,GB
-3278110720,3278176255,SE
+3278036992,3278039039,FR
+3278039040,3278039295,RE
+3278039296,3278045183,FR
+3278045184,3278061567,GB
+3278061568,3278065663,NL
+3278065664,3278110719,GB
+3278110720,3278116671,SE
+3278116672,3278116679,ES
+3278116680,3278118343,SE
+3278118344,3278118351,ES
+3278118352,3278176255,SE
3278176256,3278241791,FR
3278241792,3278307327,GB
3278307328,3278372863,IT
@@ -111954,7 +130512,7 @@
3278779392,3278779903,RU
3278779904,3278780415,BE
3278780416,3278780927,UA
-3278780928,3278781439,LT
+3278780928,3278781439,GB
3278781440,3278781951,DE
3278781952,3278782463,RU
3278782464,3278790655,GB
@@ -111967,7 +130525,2110 @@
3278913536,3278921727,CH
3278921728,3278929919,RU
3278929920,3278938111,TR
-3278938112,3278946303,DE
+3278938112,3278938151,DE
+3278938152,3278938155,GB
+3278938156,3278938159,DE
+3278938160,3278938163,ES
+3278938164,3278938171,DE
+3278938172,3278938175,NL
+3278938176,3278938179,FR
+3278938180,3278938183,NL
+3278938184,3278938191,DE
+3278938192,3278938195,ES
+3278938196,3278938199,NL
+3278938200,3278938203,CH
+3278938204,3278938207,DE
+3278938208,3278938215,IT
+3278938216,3278938227,DE
+3278938228,3278938231,FR
+3278938232,3278938235,DE
+3278938236,3278938239,FR
+3278938240,3278938243,LI
+3278938244,3278938247,IT
+3278938248,3278938251,AT
+3278938252,3278938259,DE
+3278938260,3278938263,CH
+3278938264,3278938267,DE
+3278938268,3278938275,FR
+3278938276,3278938279,NL
+3278938280,3278938283,AT
+3278938284,3278938287,DE
+3278938288,3278938291,ES
+3278938292,3278938299,DE
+3278938300,3278938303,ES
+3278938304,3278938307,DE
+3278938308,3278938311,GB
+3278938312,3278938315,DE
+3278938316,3278938323,FR
+3278938324,3278938335,DE
+3278938336,3278938339,CH
+3278938340,3278938343,DE
+3278938344,3278938347,NL
+3278938348,3278938351,FR
+3278938352,3278938359,DE
+3278938360,3278938363,DK
+3278938364,3278938367,BH
+3278938368,3278938375,FR
+3278938376,3278938399,DE
+3278938400,3278938403,AT
+3278938404,3278938407,DE
+3278938408,3278938411,CH
+3278938412,3278938415,DE
+3278938416,3278938419,CH
+3278938420,3278938423,GB
+3278938424,3278938427,DE
+3278938428,3278938431,FR
+3278938432,3278938439,DE
+3278938440,3278938443,IT
+3278938444,3278938447,DE
+3278938448,3278938451,IT
+3278938452,3278938455,DE
+3278938456,3278938459,ES
+3278938460,3278938463,FR
+3278938464,3278938487,DE
+3278938488,3278938491,NL
+3278938492,3278938495,ES
+3278938496,3278938499,NL
+3278938500,3278938519,DE
+3278938520,3278938523,NL
+3278938524,3278938527,FR
+3278938528,3278938531,NO
+3278938532,3278938563,DE
+3278938564,3278938567,FR
+3278938568,3278938583,DE
+3278938584,3278938587,GB
+3278938588,3278938591,CH
+3278938592,3278938595,DE
+3278938596,3278938599,DK
+3278938600,3278938607,DE
+3278938608,3278938611,AT
+3278938612,3278938615,NL
+3278938616,3278938619,DK
+3278938620,3278938627,FR
+3278938628,3278938631,DE
+3278938632,3278938635,NL
+3278938636,3278938639,GB
+3278938640,3278938643,DE
+3278938644,3278938647,GB
+3278938648,3278938659,DE
+3278938660,3278938663,CH
+3278938664,3278938667,GB
+3278938668,3278938675,DE
+3278938676,3278938679,FR
+3278938680,3278938695,DE
+3278938696,3278938699,IT
+3278938700,3278938703,ES
+3278938704,3278938707,FR
+3278938708,3278938719,DE
+3278938720,3278938723,NL
+3278938724,3278938727,BE
+3278938728,3278938731,ES
+3278938732,3278938735,CH
+3278938736,3278938739,DE
+3278938740,3278938743,FR
+3278938744,3278938751,DE
+3278938752,3278938755,CH
+3278938756,3278938759,DE
+3278938760,3278938763,GB
+3278938764,3278938767,DE
+3278938768,3278938771,GB
+3278938772,3278938775,SE
+3278938776,3278938779,GB
+3278938780,3278938783,IT
+3278938784,3278938787,BE
+3278938788,3278938791,ES
+3278938792,3278938803,DE
+3278938804,3278938807,IT
+3278938808,3278938815,GB
+3278938816,3278938831,DE
+3278938832,3278938835,IT
+3278938836,3278938839,FR
+3278938840,3278938863,DE
+3278938864,3278938871,IT
+3278938872,3278938875,DE
+3278938876,3278938879,NL
+3278938880,3278938887,FR
+3278938888,3278938891,ES
+3278938892,3278938895,DE
+3278938896,3278938903,FR
+3278938904,3278938911,GB
+3278938912,3278938927,DE
+3278938928,3278938931,GB
+3278938932,3278938943,DE
+3278938944,3278938947,IT
+3278938948,3278938951,DE
+3278938952,3278938955,FR
+3278938956,3278938967,DE
+3278938968,3278938971,BE
+3278938972,3278938975,DE
+3278938976,3278938979,NL
+3278938980,3278938987,FR
+3278938988,3278938991,AT
+3278938992,3278938995,FR
+3278938996,3278938999,DE
+3278939000,3278939003,ES
+3278939004,3278939007,NL
+3278939008,3278939011,DE
+3278939012,3278939015,RU
+3278939016,3278939047,DE
+3278939048,3278939055,FR
+3278939056,3278939075,DE
+3278939076,3278939079,CH
+3278939080,3278939083,DE
+3278939084,3278939087,IT
+3278939088,3278939091,IS
+3278939092,3278939095,DE
+3278939096,3278939099,IT
+3278939100,3278939103,DE
+3278939104,3278939107,CH
+3278939108,3278939111,FR
+3278939112,3278939131,DE
+3278939132,3278939135,NL
+3278939136,3278939147,US
+3278939148,3278939151,AR
+3278939152,3278939155,ES
+3278939156,3278939195,US
+3278939196,3278939199,CL
+3278939200,3278939259,US
+3278939260,3278939263,BR
+3278939264,3278939271,AR
+3278939272,3278939279,US
+3278939280,3278939283,CO
+3278939284,3278939291,US
+3278939292,3278939295,AR
+3278939296,3278939307,US
+3278939308,3278939311,MX
+3278939312,3278939315,US
+3278939316,3278939319,AR
+3278939320,3278939323,US
+3278939324,3278939327,CA
+3278939328,3278939331,US
+3278939332,3278939335,BR
+3278939336,3278939339,CA
+3278939340,3278939351,US
+3278939352,3278939355,BR
+3278939356,3278939379,US
+3278939380,3278939383,BR
+3278939384,3278939391,US
+3278939392,3278939403,DE
+3278939404,3278939407,CH
+3278939408,3278939419,DE
+3278939420,3278939423,IE
+3278939424,3278939439,DE
+3278939440,3278939443,IT
+3278939444,3278939459,DE
+3278939460,3278939463,DK
+3278939464,3278939467,CY
+3278939468,3278939471,DE
+3278939472,3278939475,PL
+3278939476,3278939479,BE
+3278939480,3278939483,DE
+3278939484,3278939491,NL
+3278939492,3278939495,DE
+3278939496,3278939499,CH
+3278939500,3278939515,DE
+3278939516,3278939523,NL
+3278939524,3278939527,LU
+3278939528,3278939531,FR
+3278939532,3278939535,DE
+3278939536,3278939539,BE
+3278939540,3278939571,DE
+3278939572,3278939575,ES
+3278939576,3278939579,DE
+3278939580,3278939583,NL
+3278939584,3278939587,IT
+3278939588,3278939591,LU
+3278939592,3278939595,DE
+3278939596,3278939599,NL
+3278939600,3278939603,GB
+3278939604,3278939607,DE
+3278939608,3278939611,DK
+3278939612,3278939615,FR
+3278939616,3278939631,DE
+3278939632,3278939635,GB
+3278939636,3278939639,DK
+3278939640,3278939647,DE
+3278939648,3278939651,FR
+3278939652,3278939743,DE
+3278939744,3278939747,GB
+3278939748,3278939751,DE
+3278939752,3278939755,GR
+3278939756,3278939759,DE
+3278939760,3278939763,FR
+3278939764,3278939783,DE
+3278939784,3278939787,BE
+3278939788,3278939803,DE
+3278939804,3278939807,GB
+3278939808,3278939823,DE
+3278939824,3278939827,HU
+3278939828,3278939835,DE
+3278939836,3278939839,FR
+3278939840,3278939859,DE
+3278939860,3278939863,GB
+3278939864,3278939867,IT
+3278939868,3278939871,DE
+3278939872,3278939875,ES
+3278939876,3278939879,IT
+3278939880,3278939887,DE
+3278939888,3278939891,PL
+3278939892,3278939899,ES
+3278939900,3278939903,IT
+3278939904,3278939907,HK
+3278939908,3278939911,MY
+3278939912,3278939919,DE
+3278939920,3278939923,SG
+3278939924,3278939927,DE
+3278939928,3278939931,SG
+3278939932,3278939935,IN
+3278939936,3278939939,MY
+3278939940,3278939947,DE
+3278939948,3278939951,SG
+3278939952,3278939955,MY
+3278939956,3278939963,DE
+3278939964,3278939967,MY
+3278939968,3278939971,TW
+3278939972,3278939975,MY
+3278939976,3278939991,DE
+3278939992,3278939995,SG
+3278939996,3278939999,DE
+3278940000,3278940007,SG
+3278940008,3278940015,DE
+3278940016,3278940043,SG
+3278940044,3278940047,DE
+3278940048,3278940059,SG
+3278940060,3278940067,CN
+3278940068,3278940071,TW
+3278940072,3278940079,DE
+3278940080,3278940083,SG
+3278940084,3278940087,DE
+3278940088,3278940091,MY
+3278940092,3278940095,SG
+3278940096,3278940099,DE
+3278940100,3278940103,SG
+3278940104,3278940107,MY
+3278940108,3278940111,SG
+3278940112,3278940115,DE
+3278940116,3278940127,SG
+3278940128,3278940163,DE
+3278940164,3278940167,CH
+3278940168,3278940171,DE
+3278940172,3278940175,FR
+3278940176,3278940179,GB
+3278940180,3278940183,CH
+3278940184,3278940187,DE
+3278940188,3278940195,GB
+3278940196,3278940215,DE
+3278940216,3278940219,NL
+3278940220,3278940223,DE
+3278940224,3278940227,CH
+3278940228,3278940231,DE
+3278940232,3278940235,CH
+3278940236,3278940239,ES
+3278940240,3278940247,DE
+3278940248,3278940251,FR
+3278940252,3278940255,IT
+3278940256,3278940259,BE
+3278940260,3278940263,DE
+3278940264,3278940267,ES
+3278940268,3278940275,DE
+3278940276,3278940279,GB
+3278940280,3278940283,CH
+3278940284,3278940291,NL
+3278940292,3278940295,DE
+3278940296,3278940299,IT
+3278940300,3278940311,DE
+3278940312,3278940315,IT
+3278940316,3278940319,DE
+3278940320,3278940323,NL
+3278940324,3278940327,ES
+3278940328,3278940335,DE
+3278940336,3278940339,NL
+3278940340,3278940347,DE
+3278940348,3278940351,GB
+3278940352,3278940355,DE
+3278940356,3278940359,NL
+3278940360,3278940363,DE
+3278940364,3278940367,IT
+3278940368,3278940371,FR
+3278940372,3278940375,GB
+3278940376,3278940379,PT
+3278940380,3278940383,FR
+3278940384,3278940387,NL
+3278940388,3278940391,IE
+3278940392,3278940395,FR
+3278940396,3278940403,DE
+3278940404,3278940407,FR
+3278940408,3278940411,IT
+3278940412,3278940423,DE
+3278940424,3278940427,CH
+3278940428,3278940431,DE
+3278940432,3278940435,CH
+3278940436,3278940439,DE
+3278940440,3278940443,CH
+3278940444,3278940447,DE
+3278940448,3278940451,GB
+3278940452,3278940463,DE
+3278940464,3278940467,FR
+3278940468,3278940471,DE
+3278940472,3278940475,ES
+3278940476,3278940479,FR
+3278940480,3278940483,CH
+3278940484,3278940487,FR
+3278940488,3278940491,ES
+3278940492,3278940495,IT
+3278940496,3278940499,NL
+3278940500,3278940503,FR
+3278940504,3278940507,DK
+3278940508,3278940511,FR
+3278940512,3278940515,DE
+3278940516,3278940523,CH
+3278940524,3278940531,ES
+3278940532,3278940535,DE
+3278940536,3278940539,CH
+3278940540,3278940543,ES
+3278940544,3278940551,DE
+3278940552,3278940555,GB
+3278940556,3278940563,DE
+3278940564,3278940571,FR
+3278940572,3278940579,CH
+3278940580,3278940587,DE
+3278940588,3278940591,IT
+3278940592,3278940595,FR
+3278940596,3278940599,BE
+3278940600,3278940603,DE
+3278940604,3278940607,FR
+3278940608,3278940611,ES
+3278940612,3278940615,PT
+3278940616,3278940623,DE
+3278940624,3278940631,IT
+3278940632,3278940635,GB
+3278940636,3278940639,BE
+3278940640,3278940643,CH
+3278940644,3278940647,IT
+3278940648,3278940651,DE
+3278940652,3278940655,FR
+3278940656,3278940663,DE
+3278940664,3278940667,FR
+3278940668,3278940683,DE
+3278940684,3278940691,NL
+3278940692,3278940695,SE
+3278940696,3278940707,DE
+3278940708,3278940711,ES
+3278940712,3278940715,BE
+3278940716,3278940719,DE
+3278940720,3278940723,ES
+3278940724,3278940727,FR
+3278940728,3278940731,DE
+3278940732,3278940739,FR
+3278940740,3278940743,GB
+3278940744,3278940747,ES
+3278940748,3278940751,DE
+3278940752,3278940759,FR
+3278940760,3278940763,NL
+3278940764,3278940767,DE
+3278940768,3278940771,GB
+3278940772,3278940783,DE
+3278940784,3278940787,CH
+3278940788,3278940791,GB
+3278940792,3278940795,NL
+3278940796,3278940803,DE
+3278940804,3278940807,DK
+3278940808,3278940815,DE
+3278940816,3278940819,IT
+3278940820,3278940835,DE
+3278940836,3278940839,IT
+3278940840,3278940847,DE
+3278940848,3278940851,CH
+3278940852,3278940859,DE
+3278940860,3278940863,NL
+3278940864,3278940867,CH
+3278940868,3278940871,GB
+3278940872,3278940875,DE
+3278940876,3278940879,IT
+3278940880,3278940883,CH
+3278940884,3278940887,ES
+3278940888,3278940891,BE
+3278940892,3278940899,DE
+3278940900,3278940903,FR
+3278940904,3278940911,ES
+3278940912,3278940919,DE
+3278940920,3278940923,PT
+3278940924,3278940931,DE
+3278940932,3278940935,NL
+3278940936,3278940939,ES
+3278940940,3278940943,FR
+3278940944,3278940947,NL
+3278940948,3278940951,FR
+3278940952,3278940955,IT
+3278940956,3278940959,DK
+3278940960,3278940963,FR
+3278940964,3278940967,IT
+3278940968,3278940983,DE
+3278940984,3278940987,IT
+3278940988,3278940991,NL
+3278940992,3278940999,DE
+3278941000,3278941003,NL
+3278941004,3278941023,DE
+3278941024,3278941027,IT
+3278941028,3278941031,FR
+3278941032,3278941035,DE
+3278941036,3278941039,IT
+3278941040,3278941043,DE
+3278941044,3278941047,FR
+3278941048,3278941051,ES
+3278941052,3278941059,DE
+3278941060,3278941063,GB
+3278941064,3278941067,IT
+3278941068,3278941071,ES
+3278941072,3278941083,DE
+3278941084,3278941087,GB
+3278941088,3278941095,DE
+3278941096,3278941099,FR
+3278941100,3278941107,DE
+3278941108,3278941111,DK
+3278941112,3278941119,FR
+3278941120,3278941127,DE
+3278941128,3278941131,BE
+3278941132,3278941135,NL
+3278941136,3278941143,DE
+3278941144,3278941151,IT
+3278941152,3278941155,DE
+3278941156,3278941159,SE
+3278941160,3278941167,DE
+3278941168,3278941171,GB
+3278941172,3278941175,AT
+3278941176,3278941179,IT
+3278941180,3278941183,FR
+3278941184,3278941191,US
+3278941192,3278941195,BR
+3278941196,3278941215,US
+3278941216,3278941219,BR
+3278941220,3278941243,US
+3278941244,3278941247,CO
+3278941248,3278941255,US
+3278941256,3278941259,MX
+3278941260,3278941279,US
+3278941280,3278941283,BR
+3278941284,3278941287,AR
+3278941288,3278941303,US
+3278941304,3278941307,CO
+3278941308,3278941319,US
+3278941320,3278941323,CA
+3278941324,3278941331,US
+3278941332,3278941335,BR
+3278941336,3278941343,US
+3278941344,3278941347,AR
+3278941348,3278941371,US
+3278941372,3278941375,CA
+3278941376,3278941399,US
+3278941400,3278941403,VE
+3278941404,3278941407,BR
+3278941408,3278941419,US
+3278941420,3278941423,DE
+3278941424,3278941427,CL
+3278941428,3278941431,PE
+3278941432,3278941439,US
+3278941440,3278941443,AR
+3278941444,3278941455,US
+3278941456,3278941459,JM
+3278941460,3278941475,US
+3278941476,3278941479,BR
+3278941480,3278941491,US
+3278941492,3278941495,MX
+3278941496,3278941499,US
+3278941500,3278941503,CA
+3278941504,3278941587,US
+3278941588,3278941591,DE
+3278941592,3278941595,US
+3278941596,3278941599,PE
+3278941600,3278941615,US
+3278941616,3278941619,CA
+3278941620,3278941639,US
+3278941640,3278941643,BR
+3278941644,3278941651,US
+3278941652,3278941655,VE
+3278941656,3278941659,US
+3278941660,3278941663,BR
+3278941664,3278941667,CA
+3278941668,3278941671,US
+3278941672,3278941675,VE
+3278941676,3278941691,US
+3278941692,3278941695,MX
+3278941696,3278941735,US
+3278941736,3278941739,CA
+3278941740,3278941743,US
+3278941744,3278941747,CA
+3278941748,3278941819,US
+3278941820,3278941823,CL
+3278941824,3278941847,US
+3278941848,3278941855,AR
+3278941856,3278941891,US
+3278941892,3278941895,CA
+3278941896,3278941911,US
+3278941912,3278941915,MX
+3278941916,3278941943,US
+3278941944,3278941947,CO
+3278941948,3278941951,US
+3278941952,3278941955,GB
+3278941956,3278941959,FR
+3278941960,3278941963,DE
+3278941964,3278941971,GB
+3278941972,3278941979,DE
+3278941980,3278941983,ES
+3278941984,3278941987,DE
+3278941988,3278941995,FR
+3278941996,3278941999,ES
+3278942000,3278942015,DE
+3278942016,3278942019,FR
+3278942020,3278942023,DE
+3278942024,3278942027,FR
+3278942028,3278942031,CH
+3278942032,3278942035,GR
+3278942036,3278942039,CH
+3278942040,3278942043,ES
+3278942044,3278942055,DE
+3278942056,3278942059,ES
+3278942060,3278942063,DE
+3278942064,3278942071,ES
+3278942072,3278942075,FR
+3278942076,3278942083,DE
+3278942084,3278942087,BE
+3278942088,3278942091,DE
+3278942092,3278942095,BE
+3278942096,3278942099,PL
+3278942100,3278942103,GB
+3278942104,3278942107,CH
+3278942108,3278942111,DE
+3278942112,3278942115,FR
+3278942116,3278942119,DE
+3278942120,3278942123,GB
+3278942124,3278942127,AT
+3278942128,3278942131,DE
+3278942132,3278942135,GB
+3278942136,3278942139,UA
+3278942140,3278942143,NL
+3278942144,3278942147,GB
+3278942148,3278942155,DE
+3278942156,3278942159,FR
+3278942160,3278942163,DE
+3278942164,3278942167,IT
+3278942168,3278942171,CH
+3278942172,3278942179,DE
+3278942180,3278942183,FR
+3278942184,3278942203,DE
+3278942204,3278942207,CH
+3278942208,3278942211,TW
+3278942212,3278942443,DE
+3278942444,3278942447,NZ
+3278942448,3278942463,DE
+3278942464,3278942467,SG
+3278942468,3278942471,MY
+3278942472,3278942479,DE
+3278942480,3278942483,SG
+3278942484,3278942487,DE
+3278942488,3278942491,IN
+3278942492,3278942495,MY
+3278942496,3278942499,DE
+3278942500,3278942507,MY
+3278942508,3278942511,TH
+3278942512,3278942515,SG
+3278942516,3278942519,DE
+3278942520,3278942523,IN
+3278942524,3278942527,DE
+3278942528,3278942531,IN
+3278942532,3278942551,DE
+3278942552,3278942555,TW
+3278942556,3278942559,IN
+3278942560,3278942563,DE
+3278942564,3278942571,MY
+3278942572,3278942575,IN
+3278942576,3278942591,DE
+3278942592,3278942595,TW
+3278942596,3278942599,DE
+3278942600,3278942603,SG
+3278942604,3278942607,TW
+3278942608,3278942615,DE
+3278942616,3278942627,SG
+3278942628,3278942635,MY
+3278942636,3278942639,SG
+3278942640,3278942651,DE
+3278942652,3278942655,MY
+3278942656,3278942659,DE
+3278942660,3278942667,SG
+3278942668,3278942671,DE
+3278942672,3278942675,SG
+3278942676,3278942679,DE
+3278942680,3278942683,TW
+3278942684,3278942687,DE
+3278942688,3278942691,SG
+3278942692,3278942703,DE
+3278942704,3278942707,MY
+3278942708,3278942719,SG
+3278942720,3278942721,DE
+3278942722,3278942722,GB
+3278942723,3278942724,DE
+3278942725,3278942725,GB
+3278942726,3278942726,IT
+3278942727,3278942727,DE
+3278942728,3278942728,CH
+3278942729,3278942730,BE
+3278942731,3278942731,DE
+3278942732,3278942732,ES
+3278942733,3278942733,DE
+3278942734,3278942734,GB
+3278942735,3278942735,DE
+3278942736,3278942736,IT
+3278942737,3278942739,DE
+3278942740,3278942740,NL
+3278942741,3278942741,GB
+3278942742,3278942742,DE
+3278942743,3278942743,ES
+3278942744,3278942749,DE
+3278942750,3278942750,IT
+3278942751,3278942751,FR
+3278942752,3278942752,CH
+3278942753,3278942754,DE
+3278942755,3278942755,GB
+3278942756,3278942756,DE
+3278942757,3278942757,GB
+3278942758,3278942759,IT
+3278942760,3278942761,DE
+3278942762,3278942762,GB
+3278942763,3278942763,NL
+3278942764,3278942764,FR
+3278942765,3278942765,CH
+3278942766,3278942766,PL
+3278942767,3278942767,FR
+3278942768,3278942768,NO
+3278942769,3278942769,GB
+3278942770,3278942773,DE
+3278942774,3278942774,CH
+3278942775,3278942775,FR
+3278942776,3278942776,DE
+3278942777,3278942778,GB
+3278942779,3278942779,SE
+3278942780,3278942784,DE
+3278942785,3278942785,GR
+3278942786,3278942786,SI
+3278942787,3278942789,DE
+3278942790,3278942790,ES
+3278942791,3278942791,IT
+3278942792,3278942792,US
+3278942793,3278942795,DE
+3278942796,3278942796,IT
+3278942797,3278942797,GB
+3278942798,3278942798,DE
+3278942799,3278942799,IT
+3278942800,3278942800,FR
+3278942801,3278942803,DE
+3278942804,3278942804,IT
+3278942805,3278942805,DE
+3278942806,3278942806,BE
+3278942807,3278942807,AT
+3278942808,3278942809,DE
+3278942810,3278942810,ES
+3278942811,3278942811,NL
+3278942812,3278942813,DE
+3278942814,3278942814,CH
+3278942815,3278942815,DE
+3278942816,3278942816,AT
+3278942817,3278942817,FR
+3278942818,3278942818,DK
+3278942819,3278942819,DE
+3278942820,3278942820,IT
+3278942821,3278942824,DE
+3278942825,3278942825,NL
+3278942826,3278942826,RU
+3278942827,3278942827,FR
+3278942828,3278942828,ES
+3278942829,3278942830,DE
+3278942831,3278942831,CH
+3278942832,3278942832,IT
+3278942833,3278942833,DE
+3278942834,3278942834,NL
+3278942835,3278942835,AT
+3278942836,3278942837,DE
+3278942838,3278942838,ES
+3278942839,3278942839,FR
+3278942840,3278942843,DE
+3278942844,3278942844,ES
+3278942845,3278942850,DE
+3278942851,3278942851,HU
+3278942852,3278942852,DE
+3278942853,3278942853,ES
+3278942854,3278942854,GB
+3278942855,3278942857,DE
+3278942858,3278942858,IT
+3278942859,3278942860,DE
+3278942861,3278942861,FR
+3278942862,3278942863,DE
+3278942864,3278942864,ES
+3278942865,3278942865,GB
+3278942866,3278942867,NL
+3278942868,3278942869,DE
+3278942870,3278942870,CH
+3278942871,3278942871,IS
+3278942872,3278942872,DE
+3278942873,3278942873,IT
+3278942874,3278942875,DE
+3278942876,3278942876,PL
+3278942877,3278942878,DE
+3278942879,3278942879,DK
+3278942880,3278942881,DE
+3278942882,3278942882,CH
+3278942883,3278942883,GB
+3278942884,3278942889,DE
+3278942890,3278942890,ES
+3278942891,3278942894,DE
+3278942895,3278942895,NL
+3278942896,3278942896,DE
+3278942897,3278942897,CH
+3278942898,3278942899,NL
+3278942900,3278942903,DE
+3278942904,3278942904,BE
+3278942905,3278942905,IE
+3278942906,3278942907,DE
+3278942908,3278942908,GB
+3278942909,3278942910,DE
+3278942911,3278942911,IT
+3278942912,3278942913,DE
+3278942914,3278942914,CH
+3278942915,3278942922,DE
+3278942923,3278942923,NL
+3278942924,3278942924,DE
+3278942925,3278942925,GB
+3278942926,3278942930,DE
+3278942931,3278942931,CH
+3278942932,3278942932,NL
+3278942933,3278942933,BE
+3278942934,3278942934,DE
+3278942935,3278942936,NL
+3278942937,3278942937,DE
+3278942938,3278942938,CH
+3278942939,3278942940,DE
+3278942941,3278942941,IT
+3278942942,3278942942,DE
+3278942943,3278942944,NL
+3278942945,3278942946,DE
+3278942947,3278942947,BE
+3278942948,3278942948,AT
+3278942949,3278942950,DE
+3278942951,3278942951,IT
+3278942952,3278942957,DE
+3278942958,3278942958,CH
+3278942959,3278942961,DE
+3278942962,3278942963,NL
+3278942964,3278942967,DE
+3278942968,3278942968,NL
+3278942969,3278942969,AT
+3278942970,3278942970,ES
+3278942971,3278942971,IT
+3278942972,3278942978,DE
+3278942979,3278942979,FR
+3278942980,3278942980,IT
+3278942981,3278942984,DE
+3278942985,3278942985,ES
+3278942986,3278942986,CH
+3278942987,3278942987,BE
+3278942988,3278942988,DE
+3278942989,3278942990,CH
+3278942991,3278942992,DE
+3278942993,3278942993,GB
+3278942994,3278942994,CH
+3278942995,3278943002,DE
+3278943003,3278943003,CH
+3278943004,3278943005,DE
+3278943006,3278943006,FR
+3278943007,3278943007,DE
+3278943008,3278943008,IT
+3278943009,3278943009,DE
+3278943010,3278943010,NL
+3278943011,3278943011,DE
+3278943012,3278943012,CZ
+3278943013,3278943013,IT
+3278943014,3278943014,DE
+3278943015,3278943016,ES
+3278943017,3278943017,FR
+3278943018,3278943018,CH
+3278943019,3278943019,DE
+3278943020,3278943020,CH
+3278943021,3278943021,BE
+3278943022,3278943022,ES
+3278943023,3278943023,BE
+3278943024,3278943024,FR
+3278943025,3278943025,DE
+3278943026,3278943026,DK
+3278943027,3278943027,DE
+3278943028,3278943029,GB
+3278943030,3278943030,ES
+3278943031,3278943031,NL
+3278943032,3278943032,FR
+3278943033,3278943034,DE
+3278943035,3278943035,ES
+3278943036,3278943036,DE
+3278943037,3278943037,FR
+3278943038,3278943039,DE
+3278943040,3278943040,IT
+3278943041,3278943041,DE
+3278943042,3278943042,BE
+3278943043,3278943043,SI
+3278943044,3278943044,FR
+3278943045,3278943048,DE
+3278943049,3278943049,GB
+3278943050,3278943050,IT
+3278943051,3278943056,DE
+3278943057,3278943057,CH
+3278943058,3278943058,DE
+3278943059,3278943059,CH
+3278943060,3278943065,DE
+3278943066,3278943066,GB
+3278943067,3278943069,DE
+3278943070,3278943070,PL
+3278943071,3278943073,DE
+3278943074,3278943074,ES
+3278943075,3278943076,FR
+3278943077,3278943077,DE
+3278943078,3278943079,CH
+3278943080,3278943080,BE
+3278943081,3278943081,DE
+3278943082,3278943082,CH
+3278943083,3278943084,DE
+3278943085,3278943085,NL
+3278943086,3278943087,DE
+3278943088,3278943088,NL
+3278943089,3278943090,DE
+3278943091,3278943091,IT
+3278943092,3278943092,ES
+3278943093,3278943096,DE
+3278943097,3278943097,BE
+3278943098,3278943099,DE
+3278943100,3278943100,SE
+3278943101,3278943101,DE
+3278943102,3278943102,ZA
+3278943103,3278943105,DE
+3278943106,3278943106,FR
+3278943107,3278943107,DE
+3278943108,3278943108,FR
+3278943109,3278943109,IT
+3278943110,3278943110,DK
+3278943111,3278943111,GB
+3278943112,3278943114,DE
+3278943115,3278943115,PT
+3278943116,3278943117,DE
+3278943118,3278943119,IT
+3278943120,3278943120,DE
+3278943121,3278943121,AT
+3278943122,3278943122,GB
+3278943123,3278943123,FR
+3278943124,3278943124,BE
+3278943125,3278943125,CH
+3278943126,3278943126,IT
+3278943127,3278943127,DE
+3278943128,3278943128,GB
+3278943129,3278943130,DE
+3278943131,3278943131,BE
+3278943132,3278943132,FR
+3278943133,3278943133,DE
+3278943134,3278943135,NL
+3278943136,3278943136,FR
+3278943137,3278943137,DE
+3278943138,3278943138,BE
+3278943139,3278943139,DE
+3278943140,3278943140,ES
+3278943141,3278943141,NL
+3278943142,3278943142,FR
+3278943143,3278943143,ES
+3278943144,3278943146,DE
+3278943147,3278943147,NL
+3278943148,3278943148,FR
+3278943149,3278943150,DE
+3278943151,3278943151,NL
+3278943152,3278943153,DE
+3278943154,3278943154,SE
+3278943155,3278943159,DE
+3278943160,3278943160,ES
+3278943161,3278943161,BE
+3278943162,3278943163,DE
+3278943164,3278943164,NL
+3278943165,3278943165,SE
+3278943166,3278943169,DE
+3278943170,3278943172,FR
+3278943173,3278943173,NL
+3278943174,3278943174,DE
+3278943175,3278943177,ES
+3278943178,3278943178,DE
+3278943179,3278943179,CH
+3278943180,3278943181,DE
+3278943182,3278943182,SE
+3278943183,3278943183,FR
+3278943184,3278943184,DE
+3278943185,3278943185,BE
+3278943186,3278943186,NL
+3278943187,3278943187,DE
+3278943188,3278943188,GB
+3278943189,3278943193,DE
+3278943194,3278943194,IT
+3278943195,3278943195,DE
+3278943196,3278943196,CH
+3278943197,3278943197,NL
+3278943198,3278943198,GR
+3278943199,3278943199,GB
+3278943200,3278943200,DE
+3278943201,3278943202,CH
+3278943203,3278943203,SE
+3278943204,3278943206,DE
+3278943207,3278943207,IT
+3278943208,3278943208,DE
+3278943209,3278943209,ES
+3278943210,3278943211,DE
+3278943212,3278943212,IT
+3278943213,3278943213,DE
+3278943214,3278943214,IT
+3278943215,3278943216,DE
+3278943217,3278943217,GB
+3278943218,3278943218,IT
+3278943219,3278943222,DE
+3278943223,3278943223,NL
+3278943224,3278943225,DE
+3278943226,3278943226,FR
+3278943227,3278943227,GB
+3278943228,3278943235,DE
+3278943236,3278943236,ES
+3278943237,3278943237,FR
+3278943238,3278943239,DE
+3278943240,3278943240,NL
+3278943241,3278943242,DE
+3278943243,3278943243,ES
+3278943244,3278943244,FR
+3278943245,3278943245,DE
+3278943246,3278943246,NL
+3278943247,3278943248,DE
+3278943249,3278943249,ES
+3278943250,3278943251,FR
+3278943252,3278943252,IT
+3278943253,3278943253,DE
+3278943254,3278943254,DK
+3278943255,3278943255,DE
+3278943256,3278943256,FR
+3278943257,3278943257,IT
+3278943258,3278943260,DE
+3278943261,3278943261,ES
+3278943262,3278943262,NL
+3278943263,3278943263,FR
+3278943264,3278943265,DE
+3278943266,3278943266,FR
+3278943267,3278943267,NL
+3278943268,3278943269,DE
+3278943270,3278943270,CH
+3278943271,3278943274,DE
+3278943275,3278943275,IT
+3278943276,3278943279,DE
+3278943280,3278943280,FR
+3278943281,3278943281,IT
+3278943282,3278943283,DE
+3278943284,3278943284,IT
+3278943285,3278943289,DE
+3278943290,3278943290,IT
+3278943291,3278943292,DE
+3278943293,3278943293,GB
+3278943294,3278943294,IT
+3278943295,3278943295,DE
+3278943296,3278943296,ES
+3278943297,3278943297,IT
+3278943298,3278943298,PT
+3278943299,3278943299,DK
+3278943300,3278943300,GB
+3278943301,3278943303,DE
+3278943304,3278943304,FR
+3278943305,3278943305,LU
+3278943306,3278943309,DE
+3278943310,3278943310,ES
+3278943311,3278943311,BE
+3278943312,3278943314,DE
+3278943315,3278943316,FR
+3278943317,3278943319,DE
+3278943320,3278943320,BE
+3278943321,3278943321,DE
+3278943322,3278943322,NL
+3278943323,3278943323,FR
+3278943324,3278943326,DE
+3278943327,3278943328,IT
+3278943329,3278943329,DE
+3278943330,3278943330,ES
+3278943331,3278943331,PL
+3278943332,3278943333,DE
+3278943334,3278943334,FR
+3278943335,3278943335,AT
+3278943336,3278943337,IT
+3278943338,3278943338,DE
+3278943339,3278943339,PT
+3278943340,3278943340,ES
+3278943341,3278943341,CH
+3278943342,3278943343,DE
+3278943344,3278943344,GB
+3278943345,3278943345,DE
+3278943346,3278943346,FR
+3278943347,3278943347,DE
+3278943348,3278943349,GB
+3278943350,3278943351,DE
+3278943352,3278943352,NL
+3278943353,3278943353,DE
+3278943354,3278943355,ES
+3278943356,3278943356,FR
+3278943357,3278943357,DE
+3278943358,3278943358,FR
+3278943359,3278943359,ES
+3278943360,3278943360,CH
+3278943361,3278943361,DE
+3278943362,3278943362,IT
+3278943363,3278943366,DE
+3278943367,3278943367,FR
+3278943368,3278943369,DE
+3278943370,3278943370,FR
+3278943371,3278943371,DE
+3278943372,3278943372,CH
+3278943373,3278943374,GR
+3278943375,3278943375,ES
+3278943376,3278943376,NO
+3278943377,3278943377,IT
+3278943378,3278943378,DE
+3278943379,3278943379,CH
+3278943380,3278943380,ES
+3278943381,3278943381,GB
+3278943382,3278943382,ES
+3278943383,3278943383,PL
+3278943384,3278943384,IT
+3278943385,3278943385,DE
+3278943386,3278943387,FR
+3278943388,3278943388,DE
+3278943389,3278943389,BE
+3278943390,3278943391,DE
+3278943392,3278943392,PL
+3278943393,3278943393,CH
+3278943394,3278943394,FR
+3278943395,3278943395,IT
+3278943396,3278943396,NL
+3278943397,3278943399,DE
+3278943400,3278943400,FR
+3278943401,3278943401,DE
+3278943402,3278943402,FR
+3278943403,3278943403,GB
+3278943404,3278943404,DE
+3278943405,3278943405,GB
+3278943406,3278943406,AT
+3278943407,3278943407,DE
+3278943408,3278943408,FR
+3278943409,3278943409,IT
+3278943410,3278943410,NL
+3278943411,3278943411,ES
+3278943412,3278943412,GB
+3278943413,3278943413,DE
+3278943414,3278943414,ES
+3278943415,3278943415,UA
+3278943416,3278943416,NL
+3278943417,3278943417,DE
+3278943418,3278943418,GB
+3278943419,3278943419,ES
+3278943420,3278943420,BE
+3278943421,3278943422,DE
+3278943423,3278943423,IT
+3278943424,3278943424,DE
+3278943425,3278943425,GB
+3278943426,3278943426,DE
+3278943427,3278943427,AT
+3278943428,3278943428,DE
+3278943429,3278943430,IT
+3278943431,3278943431,CH
+3278943432,3278943435,DE
+3278943436,3278943436,ES
+3278943437,3278943437,FR
+3278943438,3278943438,DE
+3278943439,3278943439,SE
+3278943440,3278943440,DE
+3278943441,3278943441,IT
+3278943442,3278943442,FR
+3278943443,3278943445,DE
+3278943446,3278943446,CH
+3278943447,3278943447,DE
+3278943448,3278943448,FR
+3278943449,3278943449,DE
+3278943450,3278943450,CH
+3278943451,3278943451,AT
+3278943452,3278943452,DE
+3278943453,3278943453,PT
+3278943454,3278943455,DE
+3278943456,3278943456,IT
+3278943457,3278943457,GB
+3278943458,3278943459,DE
+3278943460,3278943460,FR
+3278943461,3278943464,DE
+3278943465,3278943465,ES
+3278943466,3278943466,DE
+3278943467,3278943467,ES
+3278943468,3278943468,DE
+3278943469,3278943469,NL
+3278943470,3278943471,ES
+3278943472,3278943472,BE
+3278943473,3278943477,DE
+3278943478,3278943478,NL
+3278943479,3278943481,DE
+3278943482,3278943482,IT
+3278943483,3278943489,DE
+3278943490,3278943490,BE
+3278943491,3278943491,DE
+3278943492,3278943492,CH
+3278943493,3278943495,DE
+3278943496,3278943496,GB
+3278943497,3278943500,DE
+3278943501,3278943501,FR
+3278943502,3278943505,DE
+3278943506,3278943506,AT
+3278943507,3278943507,FR
+3278943508,3278943509,IT
+3278943510,3278943510,DE
+3278943511,3278943512,IT
+3278943513,3278943513,ES
+3278943514,3278943514,BE
+3278943515,3278943515,DE
+3278943516,3278943517,ES
+3278943518,3278943518,FR
+3278943519,3278943519,HU
+3278943520,3278943520,AT
+3278943521,3278943521,ES
+3278943522,3278943523,DE
+3278943524,3278943524,AT
+3278943525,3278943525,BE
+3278943526,3278943526,FR
+3278943527,3278943529,DE
+3278943530,3278943530,AT
+3278943531,3278943531,DE
+3278943532,3278943532,NL
+3278943533,3278943533,ES
+3278943534,3278943534,GB
+3278943535,3278943535,BR
+3278943536,3278943537,ES
+3278943538,3278943538,DE
+3278943539,3278943539,IT
+3278943540,3278943540,ES
+3278943541,3278943542,DE
+3278943543,3278943543,IT
+3278943544,3278943545,DE
+3278943546,3278943546,NL
+3278943547,3278943547,CH
+3278943548,3278943548,GB
+3278943549,3278943549,IL
+3278943550,3278943553,DE
+3278943554,3278943554,FR
+3278943555,3278943555,DE
+3278943556,3278943556,FR
+3278943557,3278943557,DE
+3278943558,3278943558,AT
+3278943559,3278943560,DE
+3278943561,3278943561,FR
+3278943562,3278943565,DE
+3278943566,3278943566,BE
+3278943567,3278943567,AE
+3278943568,3278943568,NL
+3278943569,3278943570,DE
+3278943571,3278943571,BE
+3278943572,3278943572,GB
+3278943573,3278943575,DE
+3278943576,3278943576,NL
+3278943577,3278943577,FR
+3278943578,3278943578,DE
+3278943579,3278943579,BE
+3278943580,3278943580,IT
+3278943581,3278943581,CH
+3278943582,3278943582,DE
+3278943583,3278943583,NL
+3278943584,3278943585,DE
+3278943586,3278943586,NL
+3278943587,3278943587,ES
+3278943588,3278943590,DE
+3278943591,3278943591,NL
+3278943592,3278943592,DE
+3278943593,3278943593,PL
+3278943594,3278943594,ES
+3278943595,3278943595,GB
+3278943596,3278943596,GR
+3278943597,3278943601,DE
+3278943602,3278943602,PL
+3278943603,3278943603,FR
+3278943604,3278943604,ES
+3278943605,3278943605,DE
+3278943606,3278943606,AT
+3278943607,3278943607,DE
+3278943608,3278943608,ES
+3278943609,3278943609,DE
+3278943610,3278943610,BE
+3278943611,3278943611,NL
+3278943612,3278943613,DE
+3278943614,3278943614,IT
+3278943615,3278943615,CH
+3278943616,3278943616,DE
+3278943617,3278943617,ES
+3278943618,3278943619,DE
+3278943620,3278943620,IT
+3278943621,3278943622,DE
+3278943623,3278943623,DK
+3278943624,3278943624,DE
+3278943625,3278943625,FR
+3278943626,3278943628,DE
+3278943629,3278943630,FR
+3278943631,3278943632,DE
+3278943633,3278943633,GB
+3278943634,3278943634,DE
+3278943635,3278943635,IT
+3278943636,3278943636,CH
+3278943637,3278943638,IT
+3278943639,3278943641,DE
+3278943642,3278943642,FR
+3278943643,3278943643,NL
+3278943644,3278943645,FR
+3278943646,3278943646,IT
+3278943647,3278943649,DE
+3278943650,3278943650,ES
+3278943651,3278943651,DE
+3278943652,3278943653,IT
+3278943654,3278943654,BE
+3278943655,3278943655,FR
+3278943656,3278943656,AT
+3278943657,3278943658,DE
+3278943659,3278943659,NL
+3278943660,3278943660,CY
+3278943661,3278943661,DE
+3278943662,3278943662,ES
+3278943663,3278943663,CH
+3278943664,3278943666,ES
+3278943667,3278943667,IT
+3278943668,3278943669,DE
+3278943670,3278943670,IT
+3278943671,3278943672,DE
+3278943673,3278943673,ES
+3278943674,3278943677,DE
+3278943678,3278943678,BE
+3278943679,3278943679,FR
+3278943680,3278943680,GB
+3278943681,3278943681,CH
+3278943682,3278943682,DE
+3278943683,3278943683,PT
+3278943684,3278943684,AD
+3278943685,3278943686,DE
+3278943687,3278943687,CH
+3278943688,3278943689,IT
+3278943690,3278943690,ES
+3278943691,3278943695,DE
+3278943696,3278943696,GB
+3278943697,3278943697,DE
+3278943698,3278943698,IT
+3278943699,3278943699,FR
+3278943700,3278943700,CH
+3278943701,3278943701,AT
+3278943702,3278943702,FR
+3278943703,3278943703,PL
+3278943704,3278943705,DE
+3278943706,3278943706,ES
+3278943707,3278943710,DE
+3278943711,3278943711,IT
+3278943712,3278943713,DE
+3278943714,3278943714,ES
+3278943715,3278943715,DE
+3278943716,3278943716,ES
+3278943717,3278943719,DE
+3278943720,3278943720,CH
+3278943721,3278943726,DE
+3278943727,3278943727,PL
+3278943728,3278943729,DE
+3278943730,3278943730,FR
+3278943731,3278943731,DK
+3278943732,3278943733,CH
+3278943734,3278943734,DE
+3278943735,3278943735,AD
+3278943736,3278943736,DE
+3278943737,3278943737,ES
+3278943738,3278943740,DE
+3278943741,3278943741,PT
+3278943742,3278943742,IL
+3278943743,3278943745,DE
+3278943746,3278943746,CH
+3278943747,3278943747,DE
+3278943748,3278943749,ES
+3278943750,3278943751,DE
+3278943752,3278943752,GR
+3278943753,3278943754,DE
+3278943755,3278943755,SL
+3278943756,3278943756,DE
+3278943757,3278943757,FR
+3278943758,3278943758,DE
+3278943759,3278943759,NL
+3278943760,3278943761,DE
+3278943762,3278943762,CY
+3278943763,3278943763,DE
+3278943764,3278943764,FR
+3278943765,3278943765,CH
+3278943766,3278943766,BE
+3278943767,3278943767,ES
+3278943768,3278943768,DE
+3278943769,3278943769,CZ
+3278943770,3278943770,FR
+3278943771,3278943772,DE
+3278943773,3278943773,IT
+3278943774,3278943777,DE
+3278943778,3278943778,CH
+3278943779,3278943780,DE
+3278943781,3278943781,GB
+3278943782,3278943782,IT
+3278943783,3278943786,DE
+3278943787,3278943787,IT
+3278943788,3278943788,DE
+3278943789,3278943789,ES
+3278943790,3278943790,DE
+3278943791,3278943791,IT
+3278943792,3278943792,FR
+3278943793,3278943793,IT
+3278943794,3278943794,HU
+3278943795,3278943796,DE
+3278943797,3278943797,ES
+3278943798,3278943798,DE
+3278943799,3278943799,IE
+3278943800,3278943800,DE
+3278943801,3278943801,LU
+3278943802,3278943802,DE
+3278943803,3278943803,GB
+3278943804,3278943804,DE
+3278943805,3278943805,DK
+3278943806,3278943806,ES
+3278943807,3278943807,DE
+3278943808,3278943808,IT
+3278943809,3278943809,FR
+3278943810,3278943810,DE
+3278943811,3278943811,GR
+3278943812,3278943812,IT
+3278943813,3278943813,DE
+3278943814,3278943814,ES
+3278943815,3278943815,DE
+3278943816,3278943816,GB
+3278943817,3278943817,FR
+3278943818,3278943818,DE
+3278943819,3278943819,AT
+3278943820,3278943820,DE
+3278943821,3278943821,SM
+3278943822,3278943823,DE
+3278943824,3278943824,CH
+3278943825,3278943826,DE
+3278943827,3278943827,AT
+3278943828,3278943828,ES
+3278943829,3278943829,CH
+3278943830,3278943830,ES
+3278943831,3278943831,US
+3278943832,3278943832,BE
+3278943833,3278943833,DE
+3278943834,3278943835,GB
+3278943836,3278943838,DE
+3278943839,3278943839,IT
+3278943840,3278943845,DE
+3278943846,3278943846,GB
+3278943847,3278943847,DE
+3278943848,3278943848,IT
+3278943849,3278943849,DE
+3278943850,3278943851,FR
+3278943852,3278943852,BE
+3278943853,3278943853,GB
+3278943854,3278943854,ES
+3278943855,3278943859,DE
+3278943860,3278943860,FR
+3278943861,3278943863,DE
+3278943864,3278943864,DK
+3278943865,3278943865,GB
+3278943866,3278943866,IT
+3278943867,3278943867,ES
+3278943868,3278943868,IT
+3278943869,3278943869,IE
+3278943870,3278943870,NL
+3278943871,3278943871,FR
+3278943872,3278943873,DE
+3278943874,3278943874,CH
+3278943875,3278943875,IL
+3278943876,3278943882,DE
+3278943883,3278943883,CH
+3278943884,3278943884,DE
+3278943885,3278943885,IT
+3278943886,3278943888,DE
+3278943889,3278943889,BE
+3278943890,3278943890,NL
+3278943891,3278943891,ES
+3278943892,3278943895,DE
+3278943896,3278943896,PL
+3278943897,3278943897,ES
+3278943898,3278943898,IT
+3278943899,3278943899,GB
+3278943900,3278943900,ES
+3278943901,3278943901,DE
+3278943902,3278943902,GB
+3278943903,3278943903,IT
+3278943904,3278943904,DE
+3278943905,3278943905,FR
+3278943906,3278943906,IT
+3278943907,3278943907,DE
+3278943908,3278943908,GB
+3278943909,3278943909,HU
+3278943910,3278943910,FR
+3278943911,3278943911,DE
+3278943912,3278943913,IT
+3278943914,3278943914,DE
+3278943915,3278943915,PL
+3278943916,3278943916,DE
+3278943917,3278943917,FR
+3278943918,3278943918,ES
+3278943919,3278943920,FR
+3278943921,3278943923,DE
+3278943924,3278943924,IT
+3278943925,3278943926,ES
+3278943927,3278943929,DE
+3278943930,3278943930,IT
+3278943931,3278943932,DE
+3278943933,3278943933,ES
+3278943934,3278943939,DE
+3278943940,3278943940,DK
+3278943941,3278943941,DE
+3278943942,3278943942,NL
+3278943943,3278943943,AT
+3278943944,3278943944,IT
+3278943945,3278943945,NL
+3278943946,3278943946,LU
+3278943947,3278943950,DE
+3278943951,3278943951,LU
+3278943952,3278943953,DE
+3278943954,3278943954,FR
+3278943955,3278943956,DE
+3278943957,3278943957,GB
+3278943958,3278943967,DE
+3278943968,3278943968,ES
+3278943969,3278943969,DE
+3278943970,3278943970,ES
+3278943971,3278943971,BE
+3278943972,3278943972,IT
+3278943973,3278943973,DE
+3278943974,3278943974,GR
+3278943975,3278943975,CH
+3278943976,3278943976,DE
+3278943977,3278943977,DK
+3278943978,3278943978,DE
+3278943979,3278943979,ES
+3278943980,3278943980,GB
+3278943981,3278943981,DE
+3278943982,3278943982,ES
+3278943983,3278943984,DE
+3278943985,3278943985,NL
+3278943986,3278943987,IT
+3278943988,3278943988,ES
+3278943989,3278943990,DE
+3278943991,3278943991,NL
+3278943992,3278943996,DE
+3278943997,3278943997,CH
+3278943998,3278944001,DE
+3278944002,3278944002,GB
+3278944003,3278944003,LU
+3278944004,3278944006,DE
+3278944007,3278944007,NL
+3278944008,3278944008,IT
+3278944009,3278944009,CH
+3278944010,3278944010,NL
+3278944011,3278944012,DE
+3278944013,3278944013,DK
+3278944014,3278944014,DE
+3278944015,3278944015,IS
+3278944016,3278944020,DE
+3278944021,3278944021,IT
+3278944022,3278944022,FR
+3278944023,3278944024,DE
+3278944025,3278944025,CH
+3278944026,3278944026,DE
+3278944027,3278944027,FR
+3278944028,3278944028,DE
+3278944029,3278944029,IT
+3278944030,3278944033,DE
+3278944034,3278944034,GR
+3278944035,3278944035,FR
+3278944036,3278944036,US
+3278944037,3278944037,FR
+3278944038,3278944039,DE
+3278944040,3278944040,FR
+3278944041,3278944043,DE
+3278944044,3278944045,FR
+3278944046,3278944046,NL
+3278944047,3278944047,GB
+3278944048,3278944048,BE
+3278944049,3278944049,IT
+3278944050,3278944050,DE
+3278944051,3278944051,BE
+3278944052,3278944052,AT
+3278944053,3278944053,IT
+3278944054,3278944058,DE
+3278944059,3278944059,ES
+3278944060,3278944060,BE
+3278944061,3278944061,FR
+3278944062,3278944063,DE
+3278944064,3278944064,FR
+3278944065,3278944065,IT
+3278944066,3278944066,GB
+3278944067,3278944067,DE
+3278944068,3278944068,ES
+3278944069,3278944069,PL
+3278944070,3278944071,DE
+3278944072,3278944072,AT
+3278944073,3278944073,FR
+3278944074,3278944075,ES
+3278944076,3278944076,DE
+3278944077,3278944077,GB
+3278944078,3278944078,DE
+3278944079,3278944079,GB
+3278944080,3278944080,DE
+3278944081,3278944081,GB
+3278944082,3278944082,IT
+3278944083,3278944084,ES
+3278944085,3278944085,DE
+3278944086,3278944086,NL
+3278944087,3278944087,DE
+3278944088,3278944088,IT
+3278944089,3278944089,DE
+3278944090,3278944090,IT
+3278944091,3278944091,DE
+3278944092,3278944092,GR
+3278944093,3278944094,DE
+3278944095,3278944095,AT
+3278944096,3278944097,DE
+3278944098,3278944098,SE
+3278944099,3278944099,GB
+3278944100,3278944102,DE
+3278944103,3278944104,IT
+3278944105,3278944105,DE
+3278944106,3278944106,AT
+3278944107,3278944108,DE
+3278944109,3278944109,ES
+3278944110,3278944111,DE
+3278944112,3278944112,NL
+3278944113,3278944113,DE
+3278944114,3278944114,IT
+3278944115,3278944116,ES
+3278944117,3278944118,IT
+3278944119,3278944119,ES
+3278944120,3278944121,DE
+3278944122,3278944122,FR
+3278944123,3278944123,IT
+3278944124,3278944124,DE
+3278944125,3278944125,SE
+3278944126,3278944127,DE
+3278944128,3278944128,PT
+3278944129,3278944129,BE
+3278944130,3278944130,DE
+3278944131,3278944131,FR
+3278944132,3278944132,IE
+3278944133,3278944133,IT
+3278944134,3278944134,DE
+3278944135,3278944135,NL
+3278944136,3278944137,DE
+3278944138,3278944138,GB
+3278944139,3278944139,FR
+3278944140,3278944140,PT
+3278944141,3278944141,FR
+3278944142,3278944142,GB
+3278944143,3278944144,DE
+3278944145,3278944145,SE
+3278944146,3278944147,DE
+3278944148,3278944148,ES
+3278944149,3278944149,DE
+3278944150,3278944150,IE
+3278944151,3278944158,DE
+3278944159,3278944159,CH
+3278944160,3278944160,FR
+3278944161,3278944163,DE
+3278944164,3278944164,IT
+3278944165,3278944166,DE
+3278944167,3278944167,IT
+3278944168,3278944168,CH
+3278944169,3278944169,DE
+3278944170,3278944171,CH
+3278944172,3278944172,DE
+3278944173,3278944173,FR
+3278944174,3278944174,GB
+3278944175,3278944175,DE
+3278944176,3278944176,ES
+3278944177,3278944177,LU
+3278944178,3278944179,DE
+3278944180,3278944180,GB
+3278944181,3278944181,IT
+3278944182,3278944182,DE
+3278944183,3278944184,ES
+3278944185,3278944185,NL
+3278944186,3278944192,DE
+3278944193,3278944193,FR
+3278944194,3278944194,GB
+3278944195,3278944195,IT
+3278944196,3278944197,DE
+3278944198,3278944198,IT
+3278944199,3278944199,AT
+3278944200,3278944200,DE
+3278944201,3278944201,SE
+3278944202,3278944202,NO
+3278944203,3278944203,NL
+3278944204,3278944207,DE
+3278944208,3278944208,NL
+3278944209,3278944209,PL
+3278944210,3278944210,AT
+3278944211,3278944211,DE
+3278944212,3278944212,FR
+3278944213,3278944213,DE
+3278944214,3278944214,GB
+3278944215,3278944215,IT
+3278944216,3278944216,DE
+3278944217,3278944217,IT
+3278944218,3278944219,DE
+3278944220,3278944220,GB
+3278944221,3278944221,GR
+3278944222,3278944224,DE
+3278944225,3278944225,NL
+3278944226,3278944226,RU
+3278944227,3278944227,IT
+3278944228,3278944230,DE
+3278944231,3278944231,CH
+3278944232,3278944232,NL
+3278944233,3278944233,GB
+3278944234,3278944234,AT
+3278944235,3278944238,DE
+3278944239,3278944239,SE
+3278944240,3278944240,FR
+3278944241,3278944241,IT
+3278944242,3278944242,ES
+3278944243,3278944243,DE
+3278944244,3278944244,ES
+3278944245,3278944245,BE
+3278944246,3278944246,NL
+3278944247,3278944247,ES
+3278944248,3278944248,NL
+3278944249,3278944249,DE
+3278944250,3278944250,IT
+3278944251,3278944251,AT
+3278944252,3278944252,DE
+3278944253,3278944254,GB
+3278944255,3278944257,DE
+3278944258,3278944258,US
+3278944259,3278944262,DE
+3278944263,3278944264,US
+3278944265,3278944268,DE
+3278944269,3278944269,US
+3278944270,3278944272,DE
+3278944273,3278944273,CA
+3278944274,3278944279,DE
+3278944280,3278944280,US
+3278944281,3278944288,DE
+3278944289,3278944289,US
+3278944290,3278944291,DE
+3278944292,3278944292,US
+3278944293,3278944293,DE
+3278944294,3278944294,CA
+3278944295,3278944295,US
+3278944296,3278944298,DE
+3278944299,3278944301,US
+3278944302,3278944302,DE
+3278944303,3278944303,US
+3278944304,3278944312,DE
+3278944313,3278944346,US
+3278944347,3278944347,AR
+3278944348,3278944360,US
+3278944361,3278944361,AR
+3278944362,3278944365,US
+3278944366,3278944366,MX
+3278944367,3278944367,US
+3278944368,3278944368,CA
+3278944369,3278944379,US
+3278944380,3278944380,DE
+3278944381,3278944385,US
+3278944386,3278944386,DE
+3278944387,3278944388,US
+3278944389,3278944389,CA
+3278944390,3278944390,AR
+3278944391,3278944391,CA
+3278944392,3278944395,US
+3278944396,3278944396,CA
+3278944397,3278944399,US
+3278944400,3278944400,BR
+3278944401,3278944401,US
+3278944402,3278944402,CA
+3278944403,3278944412,US
+3278944413,3278944413,CA
+3278944414,3278944418,US
+3278944419,3278944419,DE
+3278944420,3278944420,CA
+3278944421,3278944421,DE
+3278944422,3278944432,US
+3278944433,3278944433,DE
+3278944434,3278944444,US
+3278944445,3278944449,DE
+3278944450,3278944451,CA
+3278944452,3278944460,DE
+3278944461,3278944461,US
+3278944462,3278944470,DE
+3278944471,3278944471,US
+3278944472,3278944513,DE
+3278944514,3278944517,US
+3278944518,3278944518,DE
+3278944519,3278944520,US
+3278944521,3278944521,CA
+3278944522,3278944522,US
+3278944523,3278944523,CA
+3278944524,3278944524,US
+3278944525,3278944525,CL
+3278944526,3278944526,US
+3278944527,3278944527,CA
+3278944528,3278944528,US
+3278944529,3278944529,CA
+3278944530,3278944537,US
+3278944538,3278944538,AR
+3278944539,3278944544,US
+3278944545,3278944545,CA
+3278944546,3278944555,US
+3278944556,3278944556,CL
+3278944557,3278944559,US
+3278944560,3278944560,AR
+3278944561,3278944561,US
+3278944562,3278944562,CA
+3278944563,3278944563,US
+3278944564,3278944564,CA
+3278944565,3278944569,US
+3278944570,3278944570,DE
+3278944571,3278944572,US
+3278944573,3278944573,DE
+3278944574,3278944574,US
+3278944575,3278944575,DE
+3278944576,3278944578,US
+3278944579,3278944579,DE
+3278944580,3278944580,AR
+3278944581,3278944581,US
+3278944582,3278944583,DE
+3278944584,3278944588,US
+3278944589,3278944589,DE
+3278944590,3278944599,US
+3278944600,3278944600,SA
+3278944601,3278944606,US
+3278944607,3278944608,DE
+3278944609,3278944611,US
+3278944612,3278944612,DE
+3278944613,3278944626,US
+3278944627,3278944627,DE
+3278944628,3278944633,US
+3278944634,3278944634,DE
+3278944635,3278944638,US
+3278944639,3278944640,DE
+3278944641,3278944642,US
+3278944643,3278944643,CL
+3278944644,3278944650,US
+3278944651,3278944651,DE
+3278944652,3278944654,US
+3278944655,3278944657,AR
+3278944658,3278944659,US
+3278944660,3278944660,AR
+3278944661,3278944661,US
+3278944662,3278944663,DE
+3278944664,3278944665,AR
+3278944666,3278944667,US
+3278944668,3278944668,AR
+3278944669,3278944670,US
+3278944671,3278944671,CL
+3278944672,3278944672,DE
+3278944673,3278944673,PE
+3278944674,3278944674,DE
+3278944675,3278944677,US
+3278944678,3278944678,CA
+3278944679,3278944679,US
+3278944680,3278944680,CA
+3278944681,3278944683,US
+3278944684,3278944686,DE
+3278944687,3278944687,US
+3278944688,3278944688,AR
+3278944689,3278944693,US
+3278944694,3278944695,DE
+3278944696,3278944696,US
+3278944697,3278944697,CA
+3278944698,3278944706,US
+3278944707,3278944707,DE
+3278944708,3278944708,PE
+3278944709,3278944709,US
+3278944710,3278944710,DE
+3278944711,3278944712,CL
+3278944713,3278944713,DE
+3278944714,3278944714,JM
+3278944715,3278944715,CA
+3278944716,3278944716,DE
+3278944717,3278944718,US
+3278944719,3278944719,CA
+3278944720,3278944720,US
+3278944721,3278944721,CA
+3278944722,3278944727,US
+3278944728,3278944728,DE
+3278944729,3278944730,US
+3278944731,3278944731,DE
+3278944732,3278944734,US
+3278944735,3278944735,DE
+3278944736,3278944736,AR
+3278944737,3278944739,US
+3278944740,3278944740,CA
+3278944741,3278944741,DE
+3278944742,3278944743,US
+3278944744,3278944745,DE
+3278944746,3278944749,US
+3278944750,3278944750,DE
+3278944751,3278944751,US
+3278944752,3278944752,DE
+3278944753,3278944753,US
+3278944754,3278944754,BR
+3278944755,3278944755,AR
+3278944756,3278944758,US
+3278944759,3278944760,DE
+3278944761,3278944761,UY
+3278944762,3278944763,DE
+3278944764,3278944764,AR
+3278944765,3278944765,US
+3278944766,3278944767,DE
+3278944768,3278944771,DO
+3278944772,3278944819,US
+3278944820,3278944823,AR
+3278944824,3278944827,BR
+3278944828,3278944851,US
+3278944852,3278944855,CA
+3278944856,3278944863,US
+3278944864,3278944867,MX
+3278944868,3278944871,US
+3278944872,3278944875,DE
+3278944876,3278944887,US
+3278944888,3278944891,CO
+3278944892,3278944903,US
+3278944904,3278944907,BR
+3278944908,3278944919,US
+3278944920,3278944923,CO
+3278944924,3278944935,US
+3278944936,3278944939,BR
+3278944940,3278944947,US
+3278944948,3278944951,CO
+3278944952,3278944963,US
+3278944964,3278944971,CA
+3278944972,3278944975,US
+3278944976,3278944995,CA
+3278944996,3278944999,CO
+3278945000,3278945007,US
+3278945008,3278945011,CO
+3278945012,3278945015,PE
+3278945016,3278945023,US
+3278945024,3278945027,BR
+3278945028,3278945031,CW
+3278945032,3278945087,US
+3278945088,3278945091,BR
+3278945092,3278945099,US
+3278945100,3278945107,BR
+3278945108,3278945111,DO
+3278945112,3278945127,US
+3278945128,3278945131,AR
+3278945132,3278945135,BR
+3278945136,3278945151,US
+3278945152,3278945155,CA
+3278945156,3278945159,BR
+3278945160,3278945171,US
+3278945172,3278945175,AR
+3278945176,3278945191,US
+3278945192,3278945199,CA
+3278945200,3278945203,US
+3278945204,3278945207,AR
+3278945208,3278945227,US
+3278945228,3278945235,CA
+3278945236,3278945247,US
+3278945248,3278945255,CA
+3278945256,3278945267,US
+3278945268,3278945271,AR
+3278945272,3278945275,US
+3278945276,3278945279,CL
+3278945280,3278945283,CA
+3278945284,3278945299,US
+3278945300,3278945303,DE
+3278945304,3278945307,CO
+3278945308,3278945311,CA
+3278945312,3278945319,US
+3278945320,3278945323,MX
+3278945324,3278945327,AR
+3278945328,3278945331,CA
+3278945332,3278945335,US
+3278945336,3278945339,CA
+3278945340,3278945343,US
+3278945344,3278945347,BR
+3278945348,3278945363,US
+3278945364,3278945367,PR
+3278945368,3278945395,US
+3278945396,3278945399,AR
+3278945400,3278945403,MX
+3278945404,3278945427,US
+3278945428,3278945431,CA
+3278945432,3278945435,AR
+3278945436,3278945439,MX
+3278945440,3278945451,US
+3278945452,3278945455,BR
+3278945456,3278945459,US
+3278945460,3278945463,MX
+3278945464,3278945479,US
+3278945480,3278945483,CL
+3278945484,3278945491,BR
+3278945492,3278945503,US
+3278945504,3278945507,MX
+3278945508,3278945515,AR
+3278945516,3278945519,BR
+3278945520,3278945523,US
+3278945524,3278945527,CA
+3278945528,3278945531,US
+3278945532,3278945535,CW
+3278945536,3278945539,AR
+3278945540,3278945579,US
+3278945580,3278945583,AR
+3278945584,3278945587,US
+3278945588,3278945591,DO
+3278945592,3278945659,US
+3278945660,3278945663,AR
+3278945664,3278945667,US
+3278945668,3278945671,UY
+3278945672,3278945675,DE
+3278945676,3278945687,US
+3278945688,3278945691,BR
+3278945692,3278945699,US
+3278945700,3278945703,AR
+3278945704,3278945715,US
+3278945716,3278945719,CO
+3278945720,3278945723,US
+3278945724,3278945727,AR
+3278945728,3278945743,US
+3278945744,3278945747,MX
+3278945748,3278945763,US
+3278945764,3278945767,MX
+3278945768,3278945771,CO
+3278945772,3278945779,US
+3278945780,3278945783,PE
+3278945784,3278945791,US
+3278945792,3278945794,DE
+3278945795,3278945795,CH
+3278945796,3278945796,DE
+3278945797,3278945797,BE
+3278945798,3278945798,NL
+3278945799,3278945799,LU
+3278945800,3278945800,DE
+3278945801,3278945801,NL
+3278945802,3278945802,PT
+3278945803,3278945803,GB
+3278945804,3278945804,DE
+3278945805,3278945805,DK
+3278945806,3278945806,FR
+3278945807,3278945807,DE
+3278945808,3278945808,RU
+3278945809,3278945809,DE
+3278945810,3278945810,CH
+3278945811,3278945815,DE
+3278945816,3278945816,GB
+3278945817,3278945822,DE
+3278945823,3278945823,CH
+3278945824,3278945827,DE
+3278945828,3278945828,FR
+3278945829,3278945829,DE
+3278945830,3278945831,NL
+3278945832,3278945832,DE
+3278945833,3278945833,GB
+3278945834,3278945834,DE
+3278945835,3278945835,CH
+3278945836,3278945844,DE
+3278945845,3278945845,ES
+3278945846,3278945846,CH
+3278945847,3278945847,DE
+3278945848,3278945848,GB
+3278945849,3278945849,DE
+3278945850,3278945850,NL
+3278945851,3278945852,DE
+3278945853,3278945853,CH
+3278945854,3278945854,FR
+3278945855,3278945855,DE
+3278945856,3278945856,DK
+3278945857,3278945858,DE
+3278945859,3278945859,GB
+3278945860,3278945860,FR
+3278945861,3278945861,IT
+3278945862,3278945862,BE
+3278945863,3278945863,ES
+3278945864,3278945864,IE
+3278945865,3278945866,DE
+3278945867,3278945867,FR
+3278945868,3278945868,NO
+3278945869,3278945870,DE
+3278945871,3278945871,IT
+3278945872,3278945872,FR
+3278945873,3278945873,DE
+3278945874,3278945874,IT
+3278945875,3278945875,ES
+3278945876,3278945876,NL
+3278945877,3278945877,SE
+3278945878,3278945878,FR
+3278945879,3278945880,DE
+3278945881,3278945881,BE
+3278945882,3278945886,DE
+3278945887,3278945888,IT
+3278945889,3278945890,DE
+3278945891,3278945891,CH
+3278945892,3278945892,BE
+3278945893,3278945893,DE
+3278945894,3278945894,AT
+3278945895,3278945895,ES
+3278945896,3278945896,GB
+3278945897,3278945897,IT
+3278945898,3278945898,ES
+3278945899,3278945906,DE
+3278945907,3278945907,GB
+3278945908,3278945908,DE
+3278945909,3278945909,FR
+3278945910,3278945910,DE
+3278945911,3278945911,NL
+3278945912,3278945917,DE
+3278945918,3278945918,IT
+3278945919,3278946049,DE
+3278946050,3278946054,US
+3278946055,3278946055,CA
+3278946056,3278946059,US
+3278946060,3278946060,CN
+3278946061,3278946061,US
+3278946062,3278946062,DE
+3278946063,3278946067,US
+3278946068,3278946068,DE
+3278946069,3278946084,US
+3278946085,3278946085,DE
+3278946086,3278946091,US
+3278946092,3278946092,DE
+3278946093,3278946108,US
+3278946109,3278946109,GB
+3278946110,3278946142,US
+3278946143,3278946143,DE
+3278946144,3278946166,US
+3278946167,3278946167,DE
+3278946168,3278946208,US
+3278946209,3278946213,DE
+3278946214,3278946214,US
+3278946215,3278946221,DE
+3278946222,3278946222,US
+3278946223,3278946224,DE
+3278946225,3278946225,US
+3278946226,3278946229,DE
+3278946230,3278946231,US
+3278946232,3278946239,DE
+3278946240,3278946263,US
+3278946264,3278946267,DE
+3278946268,3278946271,US
+3278946272,3278946275,SV
+3278946276,3278946279,DO
+3278946280,3278946283,DE
+3278946284,3278946287,US
+3278946288,3278946291,DE
+3278946292,3278946299,US
+3278946300,3278946303,DE
3278946304,3278954495,LB
3278954496,3278962687,RU
3278962688,3279028223,CZ
@@ -112017,7 +132678,7 @@
3279297280,3279297535,ZA
3279297536,3279298047,SE
3279298048,3279298559,ZA
-3279298560,3279305471,DE
+3279298560,3279305215,DE
3279305488,3279305503,DE
3279305504,3279305535,GB
3279305536,3279305631,DE
@@ -112099,6 +132760,7 @@
3279355648,3279355903,BE
3279373312,3279374335,FI
3279374592,3279375359,FI
+3279386368,3279386495,CH
3279388672,3279396863,GR
3279402752,3279403007,CZ
3279403264,3279403903,CZ
@@ -112110,7 +132772,8 @@
3279559029,3279559029,US
3279559030,3279560703,LV
3279560704,3279568895,GB
-3279568896,3279577087,SA
+3279568896,3279570943,FR
+3279570944,3279577087,SA
3279577088,3279585279,BE
3279585280,3279586815,GB
3279586816,3279587327,DE
@@ -112120,24 +132783,26 @@
3279590400,3279590655,US
3279590656,3279590911,GB
3279590912,3279591167,DE
-3279591168,3279592447,GB
-3279592448,3279592959,DE
-3279592960,3279593593,GB
-3279593594,3279593594,DE
-3279593595,3279593599,GB
-3279593600,3279593727,DE
-3279593728,3279593919,GB
-3279593920,3279593983,DE
-3279593984,3279601663,GB
+3279591168,3279592703,GB
+3279592704,3279592959,DE
+3279592960,3279593471,GB
+3279593472,3279595519,DE
+3279595520,3279596543,GB
+3279596544,3279597311,DE
+3279597312,3279598591,GB
+3279598592,3279599615,DE
+3279599616,3279601663,GB
3279601664,3279609855,CZ
3279609856,3279618047,RU
-3279618048,3279671575,UA
-3279671576,3279671576,LV
-3279671577,3279675391,UA
+3279618048,3279671295,UA
+3279671296,3279673343,LV
+3279673344,3279675391,NL
3279675392,3279677439,BG
-3279677440,3279683583,UA
+3279677440,3279678463,US
+3279678464,3279679487,SG
+3279679488,3279683583,UA
3279683584,3279946751,DE
-3279946752,3279947775,SE
+3279946752,3279947775,BN
3279947776,3279948799,NL
3279949824,3279950847,UA
3279950848,3279951871,DE
@@ -112227,7 +132892,6 @@
3280131072,3280131327,PL
3280131328,3280131583,IT
3280131584,3280131839,RU
-3280131840,3280132095,RO
3280132096,3280132351,RU
3280132352,3280132607,GB
3280132608,3280132863,CH
@@ -112256,8 +132920,10 @@
3280381952,3280383999,NL
3280384000,3280386047,IT
3280386048,3280388095,SA
-3280388096,3280396287,GB
-3280396288,3280404479,FI
+3280388096,3280390719,GB
+3280390720,3280390751,FR
+3280390752,3280396287,GB
+3280396288,3280404479,US
3280404480,3280437247,IT
3280437248,3280453631,DE
3280453632,3280454655,IT
@@ -112340,7 +133006,8 @@
3280642048,3280650239,UA
3280650240,3280650495,RO
3280650496,3280650751,UA
-3280650752,3280651263,GB
+3280650752,3280651007,NL
+3280651008,3280651263,GB
3280651264,3280651519,SI
3280651520,3280651775,FR
3280651776,3280652031,UA
@@ -112365,7 +133032,23 @@
3280658176,3280658431,DE
3280658432,3280660479,MT
3280660480,3280662527,RU
-3280662528,3280664831,DE
+3280662528,3280662591,DE
+3280662592,3280662607,IT
+3280662608,3280662623,DE
+3280662624,3280662655,IT
+3280662656,3280662687,AR
+3280662688,3280662703,AT
+3280662704,3280662783,DE
+3280662784,3280663295,CZ
+3280663296,3280663327,AR
+3280663328,3280663343,DE
+3280663344,3280663391,IT
+3280663392,3280663407,HK
+3280663408,3280663423,IT
+3280663424,3280663999,DE
+3280664000,3280664063,IT
+3280664064,3280664319,CZ
+3280664320,3280664831,DE
3280664832,3280665087,CZ
3280665088,3280666623,DE
3280666624,3280732159,NO
@@ -112400,15 +133083,15 @@
3280796672,3280797695,CZ
3280797696,3280863231,CH
3280863232,3280928767,TR
-3280928768,3280934927,GB
-3280934928,3280934935,DE
-3280934936,3280935055,GB
+3280928768,3280932863,GB
+3280932864,3280935055,DE
3280935056,3280935063,IT
-3280935064,3280935087,GB
+3280935064,3280935087,DE
3280935088,3280935095,ES
-3280935096,3280935119,GB
+3280935096,3280935119,DE
3280935120,3280935127,FR
-3280935128,3280940787,GB
+3280935128,3280936959,DE
+3280936960,3280940787,GB
3280940788,3280940791,DE
3280940792,3280941387,GB
3280941388,3280941395,DE
@@ -112420,7 +133103,15 @@
3280952784,3280952799,DE
3280952800,3280955707,GB
3280955708,3280955711,DE
-3280955712,3280985279,GB
+3280955712,3280958919,GB
+3280958920,3280958927,DE
+3280958928,3280960679,GB
+3280960680,3280960683,ES
+3280960684,3280961023,GB
+3280961024,3280961279,ES
+3280961280,3280963375,GB
+3280963376,3280963383,DE
+3280963384,3280985279,GB
3280985280,3280985343,CH
3280985344,3280991231,GB
3280991232,3280991743,DE
@@ -112443,7 +133134,7 @@
3280998400,3280998655,GR
3280998656,3280999423,GB
3280999424,3280999679,HU
-3280999680,3280999935,SC
+3280999680,3280999935,AT
3280999936,3281000191,DE
3281000448,3281000703,FR
3281000704,3281000959,UA
@@ -112455,7 +133146,20 @@
3281002496,3281010687,CH
3281010688,3281018879,BE
3281018880,3281027071,CZ
-3281027072,3281035263,GB
+3281027080,3281027087,GB
+3281027136,3281027151,GB
+3281027200,3281027215,GB
+3281027280,3281027287,GB
+3281027304,3281027311,GB
+3281027320,3281027327,GB
+3281027584,3281027615,GB
+3281027632,3281027679,GB
+3281027696,3281027743,GB
+3281027776,3281027807,GB
+3281027840,3281027903,GB
+3281028064,3281028159,GB
+3281028992,3281029055,GB
+3281030400,3281035263,GB
3281035264,3281043455,CH
3281043456,3281049615,RU
3281049616,3281049622,GI
@@ -112555,28 +133259,13 @@
3281971200,3281971711,RU
3281971712,3281972223,RO
3281972224,3281972735,DE
-3281972736,3281973247,RU
3281973248,3281973759,FR
3281973760,3281974271,DK
3281974784,3281975295,PL
3281975296,3281976319,RU
3281976320,3281976831,DE
3281976832,3281977343,RU
-3281977344,3282012159,NO
-3282012160,3282016255,MP
-3282016256,3282018303,NO
-3282018304,3282019839,MP
-3282019840,3282021375,NO
-3282021376,3282022399,MP
-3282022400,3282026495,NO
-3282026496,3282028543,MP
-3282028544,3282030591,NO
-3282030592,3282032127,MP
-3282032128,3282032383,NO
-3282032384,3282032639,MP
-3282032640,3282034687,NO
-3282034688,3282037247,MP
-3282037248,3282042879,NO
+3281977344,3282042879,NO
3282042880,3282083839,CH
3282083840,3282084351,DE
3282084352,3282084863,RO
@@ -112627,7 +133316,7 @@
3282182144,3282190335,RU
3282190336,3282190847,UA
3282190848,3282191359,IL
-3282191360,3282191871,RU
+3282191360,3282191871,NL
3282191872,3282192383,UA
3282192384,3282192895,BG
3282192896,3282193407,UA
@@ -112696,9 +133385,12 @@
3282746624,3282746879,SE
3282747136,3282747391,PL
3282747392,3282763775,RU
-3282763776,3282960383,GB
+3282763776,3282772991,GB
+3282773248,3282960383,GB
3282960384,3283091455,TR
-3283091456,3283156991,CH
+3283091456,3283111935,CH
+3283111936,3283113471,LI
+3283113472,3283156991,CH
3283156992,3283173375,DE
3283173376,3283174399,PL
3283174400,3283175423,GB
@@ -112759,7 +133451,6 @@
3283247616,3283248127,BG
3283248128,3283248639,DE
3283248640,3283249151,RO
-3283249152,3283249663,UA
3283249664,3283249919,MD
3283249920,3283250175,RO
3283250176,3283250687,RU
@@ -112775,20 +133466,21 @@
3283288064,3283419135,DE
3283419136,3283451903,IR
3283451904,3283460095,NO
-3283460096,3283460607,GB
-3283460608,3283460863,US
-3283460864,3283461631,GB
+3283460096,3283460607,CZ
+3283460608,3283461119,US
+3283461120,3283461631,GB
3283461632,3283461887,SE
-3283461888,3283462143,GB
-3283462144,3283462399,US
-3283462400,3283462655,GB
+3283461888,3283462143,ES
+3283462144,3283462655,US
3283462656,3283462911,DE
3283462912,3283463167,GB
3283463168,3283463679,NL
3283463680,3283464191,DE
3283464192,3283468287,IT
3283468288,3283472383,FI
-3283472384,3283476479,CZ
+3283472384,3283474381,CZ
+3283474382,3283474382,BV
+3283474383,3283476479,CZ
3283476480,3283480575,LU
3283480576,3283482623,LT
3283482624,3283483647,SK
@@ -112847,7 +133539,8 @@
3283500544,3283500799,GB
3283500800,3283501055,UA
3283501056,3283509247,LT
-3283509248,3283517439,DE
+3283509248,3283513343,DE
+3283515392,3283517439,DE
3283517440,3283525631,RU
3283525632,3283533823,GB
3283533824,3283534847,UA
@@ -112868,6 +133561,7 @@
3283563520,3283564543,GB
3283568640,3283569663,GB
3283576832,3283579903,DE
+3283582976,3283583231,ZA
3283593216,3283595263,IT
3283615744,3283623935,HU
3283623936,3283632127,DK
@@ -112884,7 +133578,8 @@
3283639296,3283639807,CH
3283639808,3283640319,DE
3283640320,3283648511,DK
-3283648512,3283656703,BE
+3283648512,3283649023,GB
+3283649024,3283656703,BE
3283656704,3283664895,HU
3283664896,3283673087,UA
3283673088,3283681279,GB
@@ -112915,7 +133610,7 @@
3283963904,3283964927,BG
3283964928,3283966975,PL
3283966976,3283967999,DE
-3283968000,3283969023,UA
+3283968000,3283969023,LT
3283969024,3283970047,RU
3283970048,3283971071,UA
3283971072,3283972095,RU
@@ -113007,30 +133702,20 @@
3284016384,3284016639,CH
3284016640,3284017151,DK
3284017152,3284025343,GR
-3284025344,3284028139,GB
-3284028140,3284028143,US
-3284028144,3284028287,GB
-3284028288,3284028319,US
-3284028320,3284029183,GB
-3284029184,3284029199,US
-3284029200,3284029295,GB
-3284029296,3284029311,US
-3284029312,3284029439,GB
-3284029440,3284030463,US
-3284030464,3284030471,GB
+3284025344,3284030471,US
3284030472,3284030479,IL
3284030480,3284030495,FR
-3284030496,3284030575,GB
+3284030496,3284030575,US
3284030576,3284030583,DE
-3284030584,3284030615,GB
+3284030584,3284030615,US
3284030616,3284030623,SE
-3284030624,3284030775,GB
+3284030624,3284030775,US
3284030776,3284030783,SE
-3284030784,3284030799,GB
+3284030784,3284030799,US
3284030800,3284030815,SE
-3284030816,3284030991,GB
+3284030816,3284030991,US
3284030992,3284031007,FR
-3284031008,3284033535,GB
+3284031008,3284033535,US
3284033536,3284041727,RU
3284041728,3284041983,DK
3284041984,3284042239,SI
@@ -113168,7 +133853,7 @@
3284135936,3284136447,CH
3284136448,3284136959,RU
3284136960,3284137471,FR
-3284137472,3284137983,UA
+3284137472,3284137983,RU
3284137984,3284138495,PL
3284138496,3284139007,RU
3284139008,3284172799,AT
@@ -113203,11 +133888,11 @@
3284684288,3284684799,FR
3284684800,3284685311,DE
3284685312,3284685823,NL
-3284685824,3284686335,US
+3284685824,3284686335,DE
3284686336,3284686847,RO
3284686848,3284687359,PL
3284687360,3284687871,UA
-3284687872,3284688383,IL
+3284687872,3284688383,NG
3284688384,3284688895,IT
3284688896,3284697087,FR
3284697088,3284705279,GB
@@ -113270,7 +133955,10 @@
3284822280,3284822280,IT
3284822281,3284822281,GB
3284822282,3284822282,FR
-3284822283,3284828159,GB
+3284822283,3284822283,DE
+3284822284,3284822447,GB
+3284822448,3284822463,NL
+3284822464,3284828159,GB
3284828160,3284844543,AT
3284844544,3284860927,CH
3284860928,3284926463,DE
@@ -113278,9 +133966,19 @@
3284992000,3285057535,PL
3285057536,3285065727,IT
3285065728,3285073919,RU
-3285073920,3285076607,NL
-3285076608,3285076735,BE
-3285076736,3285082111,NL
+3285073920,3285074431,NL
+3285074432,3285074687,GB
+3285074688,3285076607,NL
+3285076608,3285076767,BE
+3285076768,3285078111,NL
+3285078112,3285078143,GB
+3285078144,3285078175,NL
+3285078176,3285078191,GB
+3285078192,3285079423,NL
+3285079424,3285079551,DE
+3285079552,3285079967,NL
+3285079968,3285079999,DE
+3285080000,3285082111,NL
3285082112,3285084159,AT
3285086208,3285088255,PL
3285088256,3285088511,RO
@@ -113367,8 +134065,7 @@
3285419008,3285420031,SE
3285420032,3285425151,UA
3285425152,3285426175,LV
-3285426176,3285426431,RU
-3285426432,3285427199,UA
+3285426176,3285427199,RU
3285427200,3285428223,GB
3285429248,3285430271,UA
3285430272,3285431295,DK
@@ -113389,8 +134086,7 @@
3285449728,3285450751,UA
3285451456,3285451471,GB
3285452496,3285452511,GB
-3285453440,3285453567,GB
-3285453664,3285453695,GB
+3285453440,3285453823,GB
3285458176,3285458431,GB
3285461280,3285461299,NL
3285461432,3285461435,NL
@@ -113404,6 +134100,7 @@
3285472256,3285472271,US
3285472272,3285472287,DE
3285472288,3285472511,US
+3285475328,3285476351,AT
3285477136,3285477151,IT
3285479396,3285479399,FR
3285480960,3285481215,CH
@@ -113413,16 +134110,32 @@
3285501312,3285501363,CZ
3285501364,3285501367,US
3285501368,3285501383,CZ
+3285501696,3285501743,TR
3285501744,3285501759,GB
+3285501760,3285501919,TR
3285501920,3285501923,CZ
+3285501924,3285501927,TR
3285501928,3285501935,CZ
+3285501936,3285501943,TR
3285501944,3285501947,CZ
+3285501948,3285501951,TR
3285510144,3285512191,GB
3285515776,3285515799,GR
3285515816,3285515823,GR
3285516032,3285516095,HR
-3285516288,3285581823,BE
-3285581824,3285614591,DE
+3285516288,3285581823,GB
+3285581824,3285596159,DE
+3285596160,3285596191,US
+3285596192,3285596223,DE
+3285596224,3285596255,US
+3285596256,3285596287,DE
+3285596288,3285596319,US
+3285596320,3285596351,DE
+3285596352,3285596383,FR
+3285596384,3285597183,DE
+3285597184,3285597215,US
+3285597216,3285606399,DE
+3285606400,3285614591,GB
3285614592,3285630975,TR
3285630976,3285633023,UA
3285633024,3285635071,NO
@@ -113430,7 +134143,9 @@
3285637120,3285638143,DE
3285638144,3285639167,UA
3285639168,3285641215,FR
-3285641216,3285642239,RU
+3285641216,3285641471,RU
+3285641472,3285641983,CH
+3285641984,3285642239,RU
3285642240,3285643263,UA
3285643264,3285645311,FR
3285645312,3285647359,BG
@@ -113483,7 +134198,7 @@
3285843968,3285852159,LU
3285852160,3285860351,GB
3285860352,3285868543,FI
-3285868544,3285876735,GB
+3285868544,3285876735,IE
3285876736,3285909503,RU
3285910336,3285910399,ES
3285911552,3285912575,GB
@@ -113491,15 +134206,16 @@
3285913656,3285913703,GB
3285913704,3285913711,FI
3285913712,3285913991,GB
+3285914000,3285914007,IE
3285914008,3285914015,GB
3285914624,3285914879,GB
3285915904,3285916159,AT
3285916416,3285916671,YE
3285917696,3285917703,GB
3285917712,3285917807,GB
+3285917884,3285917887,GB
3285917952,3285918463,GB
3285919744,3285921791,QA
-3285921792,3285923839,FR
3285924352,3285924415,ES
3285924912,3285924919,CH
3285924920,3285924927,FI
@@ -113513,32 +134229,35 @@
3285924996,3285924999,CZ
3285925000,3285925007,RU
3285925008,3285925059,DE
-3285925060,3285925063,CH
+3285925060,3285925061,DK
+3285925062,3285925063,DE
3285925064,3285925071,RU
3285925072,3285925079,PL
3285925080,3285925087,IT
3285925088,3285925103,DE
+3285925116,3285925117,DK
3285925164,3285925171,CH
3285926432,3285926463,CH
3285926592,3285926623,DE
3285928304,3285928311,GB
3285929216,3285929231,DE
+3285929234,3285929239,BG
+3285929240,3285929243,DE
3285930752,3285931007,GB
-3285931520,3285931527,HU
3285931528,3285931559,DE
3285931560,3285931567,HU
3285931568,3285931599,DE
-3285931600,3285931775,HU
+3285931608,3285931615,DE
3285935872,3285936127,GB
3285936136,3285936147,FR
-3285936152,3285936227,FR
+3285936152,3285936231,FR
3285939136,3285939175,GB
3285939184,3285939191,GB
3285939744,3285939759,GB
3285939840,3285939967,GB
3285940736,3285940767,IT
3285941248,3285941503,ES
-3285943808,3285944063,CH
+3285943808,3285944065,CH
3285947136,3285947159,NL
3285947168,3285947175,NL
3285949604,3285949607,CH
@@ -113546,8 +134265,9 @@
3285950208,3285950463,IT
3285951648,3285951679,ES
3285953536,3285953665,GB
-3285953672,3285953735,GB
+3285953672,3285953743,GB
3285953792,3285953919,GB
+3285953992,3285953999,GB
3285954048,3285954303,AE
3285954560,3285954567,IT
3285954568,3285954575,PL
@@ -113558,9 +134278,9 @@
3285964800,3285964935,DE
3285964944,3285964991,DE
3285964992,3285965007,HU
-3285965056,3285966079,DE
+3285965024,3285966143,DE
3285968896,3285970943,GB
-3285975040,3286013695,FR
+3285972992,3286013695,FR
3286013696,3286013951,RE
3286013952,3286106111,FR
3286106112,3286114303,EE
@@ -113639,9 +134359,11 @@
3286368256,3286376447,CH
3286376448,3286384639,GB
3286384640,3286401023,DE
-3286401024,3286407167,GB
-3286407168,3286408191,GG
-3286408192,3286409215,GB
+3286401024,3286403071,GB
+3286403072,3286403327,JE
+3286403328,3286407167,GB
+3286407168,3286407423,GG
+3286407424,3286409215,GB
3286409216,3286417407,DE
3286417408,3286417663,UA
3286417664,3286417919,IT
@@ -113684,7 +134406,9 @@
3286514688,3286552575,HU
3286552576,3286553087,BG
3286553088,3286564863,HU
-3286564864,3286630399,AE
+3286564864,3286566655,AE
+3286566656,3286567423,KW
+3286567424,3286630399,AE
3286630400,3286638591,BG
3286638592,3286646783,AT
3286646784,3286654975,RU
@@ -113712,19 +134436,49 @@
3286661376,3286661631,SI
3286661632,3286661887,GB
3286661888,3286662143,RU
-3286662144,3286662399,SK
3286662400,3286662655,UA
3286662656,3286662911,DE
3286662912,3286671359,UA
3286671360,3286679551,AT
3286679552,3286728703,IT
3286728704,3286761471,DK
-3286761472,3286794239,GB
-3286794240,3286891007,DE
-3286891008,3286891014,HU
-3286891015,3286891015,DE
-3286891016,3286891263,HU
-3286891264,3286892543,DE
+3286761472,3286761727,DE
+3286761728,3286769663,GB
+3286769664,3286769919,DE
+3286769920,3286773759,GB
+3286773760,3286777855,DE
+3286777856,3286781951,FR
+3286781952,3286782207,GB
+3286782208,3286782463,DE
+3286782464,3286782535,GB
+3286782536,3286782543,FR
+3286782544,3286782575,GB
+3286782576,3286782583,DE
+3286782584,3286783599,GB
+3286783600,3286783615,CH
+3286783616,3286783679,DE
+3286783680,3286784511,GB
+3286784512,3286784767,CH
+3286784768,3286785023,DE
+3286785024,3286787071,GB
+3286787072,3286787327,FR
+3286787328,3286787583,DE
+3286787584,3286788095,GB
+3286788096,3286788351,DE
+3286788352,3286788607,FR
+3286788608,3286789119,GB
+3286789120,3286789631,DE
+3286789632,3286790143,FR
+3286790144,3286790655,GB
+3286790656,3286790911,DE
+3286790912,3286791679,GB
+3286791680,3286791935,AT
+3286791936,3286794239,GB
+3286794240,3286798335,DE
+3286798336,3286802431,IT
+3286802432,3286888447,DE
+3286888448,3286889471,IE
+3286889472,3286892543,DE
3286892544,3286893055,LI
3286893056,3286893567,RU
3286893568,3286894591,UA
@@ -113736,6 +134490,7 @@
3286897152,3286897663,AT
3286897664,3286898175,PL
3286898176,3286898687,HR
+3286898944,3286899199,BE
3286899712,3286900223,DE
3286900224,3286900735,RO
3286900736,3286900991,BE
@@ -113772,8 +134527,7 @@
3286919168,3286920191,DE
3286921216,3286922239,UA
3286922240,3286923263,GB
-3286925312,3286925567,DE
-3286925568,3286925823,CH
+3286925312,3286925823,DE
3286926080,3286926335,LV
3286926336,3286926591,UA
3286926592,3286926847,DE
@@ -113825,7 +134579,7 @@
3286941184,3286941439,RU
3286941696,3286942719,DE
3286942720,3286943743,FI
-3286943744,3286944767,UA
+3286943744,3286944767,RU
3286944768,3286945791,CZ
3286945792,3286946815,RU
3286946816,3286947839,UA
@@ -113835,25 +134589,27 @@
3286950912,3286951935,DE
3286951936,3286952959,IT
3286952960,3286953983,BG
-3286953984,3286955007,GB
-3286955008,3286956031,DE
+3286953984,3286956031,GB
3286956032,3286957055,FR
3286957056,3286958079,EG
3286958080,3287023615,ES
3287023616,3287154687,FI
3287154688,3287162879,BE
-3287162880,3287165439,DE
+3287162880,3287164927,US
+3287164928,3287165183,DE
+3287165184,3287165439,US
3287165440,3287165695,SA
-3287165696,3287165951,DE
+3287165696,3287165951,US
3287165952,3287166207,SA
-3287166208,3287167487,DE
+3287166208,3287167487,US
3287167488,3287167743,SA
-3287167744,3287168511,DE
-3287168512,3287168767,US
+3287167744,3287168767,US
3287168768,3287169279,SA
-3287169280,3287169535,DE
+3287169280,3287169535,US
3287169536,3287169791,SA
-3287169792,3287171071,DE
+3287169792,3287170303,US
+3287170304,3287170559,DE
+3287170560,3287171071,US
3287171072,3287171583,EE
3287171584,3287172095,PL
3287172608,3287173119,PL
@@ -113867,7 +134623,6 @@
3287178240,3287178751,UA
3287179264,3287180287,FR
3287180288,3287181311,RU
-3287181312,3287182335,UZ
3287182336,3287185407,UA
3287187456,3287196671,DE
3287196672,3287198719,PL
@@ -113969,7 +134724,7 @@
3287467008,3287468031,SA
3287468032,3287469055,UA
3287469056,3287470079,DE
-3287471104,3287472127,GB
+3287471360,3287471615,CH
3287472128,3287472639,RU
3287472640,3287473151,UA
3287473152,3287474175,GB
@@ -114003,7 +134758,6 @@
3287605248,3287630335,DE
3287630336,3287631359,PL
3287631360,3287631871,IR
-3287631872,3287632383,RU
3287632384,3287632895,SE
3287632896,3287633407,RU
3287633408,3287633919,SK
@@ -114151,7 +134905,13 @@
3287834624,3287842815,GB
3287842816,3287851007,DE
3287851008,3287859199,UA
-3287859200,3287867391,GB
+3287859200,3287859711,GB
+3287859968,3287860479,GB
+3287861248,3287862015,GB
+3287863808,3287864063,GB
+3287866384,3287866439,GB
+3287866496,3287866591,GB
+3287866608,3287866623,GB
3287867392,3287867903,UA
3287867904,3287868415,PL
3287868416,3287868927,RO
@@ -114166,7 +134926,8 @@
3287874560,3287875071,DE
3287875072,3287875583,PL
3287875584,3287941119,DK
-3287941120,3287949311,IT
+3287941120,3287945215,IT
+3287945216,3287949311,GB
3287949312,3287949567,AT
3287949568,3287949823,IL
3287949824,3287950079,IT
@@ -114198,13 +134959,17 @@
3287965696,3287973887,RS
3287973888,3287982079,CZ
3287982080,3287990271,EE
-3287990272,3287996415,SI
+3287990272,3287994367,SI
+3287994368,3287995391,BA
+3287995392,3287996415,SI
3287996416,3287998463,BA
3287998464,3288006655,IT
3288006656,3288072191,GR
3288072192,3288088575,SE
3288088576,3288104959,RS
-3288104960,3288236031,DE
+3288104960,3288159231,DE
+3288159232,3288160255,NL
+3288160256,3288236031,DE
3288236032,3288236543,LI
3288236544,3288237055,FR
3288237056,3288238591,RO
@@ -114281,8 +135046,8 @@
3288436736,3288440831,ZA
3288440832,3288441343,VC
3288441344,3288442879,BB
-3288442880,3288443135,KN
-3288443136,3288443647,VC
+3288442880,3288443391,KN
+3288443392,3288443647,VC
3288443648,3288444927,BB
3288444928,3288449023,NG
3288449024,3288465407,SD
@@ -114291,9 +135056,7 @@
3288466432,3288467455,SY
3288467456,3288469503,BI
3288469504,3288481791,ZA
-3288481792,3288482303,ZW
-3288482304,3288485631,ZA
-3288485632,3288485887,ZW
+3288481792,3288485887,ZW
3288485888,3288489983,MA
3288489984,3288514559,ZA
3288514560,3288522751,EG
@@ -114302,14 +135065,16 @@
3288532992,3288534527,PR
3288534528,3288535039,EG
3288535040,3288539135,CW
-3288539136,3288543871,US
-3288543872,3288543983,GB
+3288539136,3288543231,US
+3288543232,3288543487,SG
+3288543488,3288543743,US
+3288543744,3288543983,CH
3288543984,3288543986,US
3288543987,3288543987,CH
3288543988,3288544767,US
3288544768,3288545023,MX
3288545024,3288545279,FR
-3288545280,3288545535,US
+3288545280,3288545535,AU
3288545536,3288545791,ZA
3288545792,3288546303,KE
3288547072,3288547327,NG
@@ -114342,7 +135107,9 @@
3288588288,3288608255,ZA
3288608256,3288608264,US
3288608265,3288608265,DE
-3288608266,3288614655,US
+3288608266,3288613887,US
+3288613888,3288614399,ZA
+3288614400,3288614655,US
3288614656,3288616959,ZA
3288616960,3288617215,ZW
3288617216,3288661759,ZA
@@ -114401,11 +135168,9 @@
3289048064,3289048319,UG
3289048320,3289048831,ZA
3289048832,3289049087,NG
-3289049088,3289053951,ZA
-3289053952,3289055231,NG
-3289055232,3289070591,ZA
-3289070592,3289070847,NA
-3289070848,3289071103,ZA
+3289049088,3289054207,ZA
+3289054208,3289055231,NG
+3289055232,3289071103,ZA
3289071104,3289071359,SO
3289071360,3289074431,ZA
3289074432,3289074687,DZ
@@ -114413,7 +135178,8 @@
3289075712,3289077759,MW
3289077760,3289078271,KE
3289078272,3289078527,GH
-3289078528,3289081855,ZA
+3289078528,3289081599,ZA
+3289081600,3289081855,MA
3289081856,3289082111,NG
3289082112,3289086975,ZA
3289086976,3289087231,SZ
@@ -114443,9 +135209,11 @@
3289124864,3289128959,ZA
3289128960,3289137151,IN
3289137152,3289153535,BM
-3289153536,3289156607,MU
-3289156608,3289158655,RW
-3289158656,3289161727,MU
+3289153536,3289157631,GB
+3289157632,3289158655,RW
+3289158656,3289159679,MU
+3289159680,3289160703,RW
+3289160704,3289161727,MU
3289161728,3289169919,PR
3289169920,3289186303,MA
3289186304,3289186559,NG
@@ -114503,9 +135271,7 @@
3289251584,3289251839,KE
3289251840,3289319423,ZA
3289319424,3289319679,MU
-3289319680,3289319935,ZA
-3289319936,3289320447,MU
-3289320448,3289321471,ZA
+3289319680,3289321471,ZA
3289321472,3289325567,IN
3289325568,3289333759,SA
3289333760,3289382911,ZA
@@ -114515,107 +135281,104 @@
3289400320,3289401343,US
3289401344,3289402367,AU
3289402368,3289403391,US
-3289403392,3289404415,SC
+3289403392,3289404415,GB
3289404416,3289405439,US
-3289405440,3289406463,SC
+3289405440,3289406463,GB
3289406464,3289409535,US
3289409536,3289410047,BE
3289410048,3289410559,CH
3289410560,3289411583,US
3289411584,3289412607,NL
3289412608,3289413631,US
-3289413632,3289414655,GB
-3289414656,3289415679,US
-3289415680,3289424895,SC
-3289424896,3289430015,US
+3289413632,3289413887,DE
+3289413888,3289414655,GB
+3289414656,3289422847,US
+3289422848,3289423871,NL
+3289423872,3289430015,US
3289430016,3289431039,GB
3289431040,3289434111,US
3289434112,3289434367,GB
3289434368,3289435135,SC
-3289435136,3289436159,US
-3289436160,3289437183,AU
-3289437184,3289438207,SC
+3289435136,3289438207,US
3289438208,3289439231,AU
3289439232,3289439487,DE
-3289439488,3289439743,GB
+3289439488,3289439743,SK
3289439744,3289439999,US
3289440000,3289440255,CA
-3289440256,3289440511,ZA
+3289440256,3289440511,IT
3289440512,3289441023,US
3289441024,3289441279,IE
3289441280,3289441535,US
-3289441536,3289441791,ZA
+3289441536,3289441791,RU
3289441792,3289442047,US
-3289442048,3289442303,ZA
+3289442048,3289442303,RU
3289442304,3289445375,US
3289445376,3289445631,DE
3289445632,3289445887,US
-3289445888,3289446143,ZA
+3289445888,3289446143,IT
3289446144,3289446399,US
-3289446400,3289446655,ZA
+3289446400,3289446655,ID
3289446656,3289446911,US
-3289446912,3289447167,ZA
-3289447168,3289447423,US
-3289447424,3289448447,ZA
-3289448448,3289465855,US
+3289446912,3289447167,BG
+3289447168,3289465855,US
3289465856,3289466879,AU
3289466880,3289467903,US
3289467904,3289468927,AU
3289468928,3289469951,US
-3289469952,3289470975,SC
+3289469952,3289470975,GB
3289470976,3289472255,US
3289472256,3289472511,IT
3289472512,3289472767,NL
-3289472768,3289473023,GB
+3289472768,3289473023,SK
3289473024,3289475071,US
3289475072,3289475583,HU
3289475584,3289475839,GB
3289475840,3289476095,SC
3289476096,3289477119,US
-3289477120,3289478143,GB
-3289478144,3289481215,US
-3289481216,3289490431,SC
+3289477120,3289477375,DE
+3289477376,3289478143,GB
+3289478144,3289488383,US
+3289488384,3289490431,NL
3289490432,3289491455,US
3289491456,3289492479,GB
3289492480,3289493503,US
3289493504,3289494527,GB
3289494528,3289495551,US
-3289495552,3289496575,GB
+3289495552,3289495807,DE
+3289495808,3289496575,GB
3289496576,3289499647,US
3289499648,3289499903,GB
3289499904,3289500671,SC
-3289500672,3289501695,US
-3289501696,3289502719,AU
-3289502720,3289503743,SC
+3289500672,3289503743,US
3289503744,3289504767,AU
3289504768,3289505023,IT
3289505024,3289505279,GB
-3289505280,3289505535,SC
+3289505280,3289505535,US
3289505536,3289505791,DE
-3289505792,3289506047,US
-3289506048,3289506815,SC
+3289505792,3289506303,US
+3289506304,3289506559,KR
+3289506560,3289506815,ID
3289506816,3289507071,DE
-3289507072,3289507839,SC
+3289507072,3289507327,KR
+3289507328,3289507583,BG
+3289507584,3289507839,ID
3289507840,3289517055,US
3289517056,3289518079,DE
-3289518080,3289530367,US
-3289530368,3289538559,NL
-3289538560,3289540607,US
+3289518080,3289540607,US
3289540608,3289541119,ES
3289541120,3289541631,AU
3289541632,3289542655,US
-3289542656,3289543679,GB
+3289542656,3289542911,DE
+3289542912,3289543679,GB
3289543680,3289544703,US
3289544704,3289545727,AU
-3289545728,3289546751,US
-3289546752,3289550847,SC
-3289550848,3289553919,US
+3289545728,3289553919,US
3289553920,3289554943,GB
3289554944,3289555967,US
3289555968,3289556991,GB
3289556992,3289558015,US
3289558016,3289558527,ID
-3289558528,3289558783,GB
+3289558528,3289558783,CZ
3289558784,3289559039,AT
3289559040,3289560063,US
3289560064,3289561087,AU
@@ -114628,44 +135391,41 @@
3289566720,3289566975,MY
3289566976,3289567103,ID
3289567104,3289567231,PH
-3289567232,3289568255,AU
+3289567232,3289568255,US
3289568256,3289569023,SC
3289569024,3289569279,GB
3289569280,3289571327,AU
3289571328,3289571583,US
-3289571584,3289571839,SC
+3289571584,3289571839,CA
3289571840,3289572095,US
3289572096,3289572351,DE
3289572352,3289572607,US
3289572608,3289572863,HK
3289572864,3289581567,US
3289581568,3289582591,DE
-3289582592,3289595903,US
-3289595904,3289604095,NL
-3289604096,3289606143,US
+3289582592,3289606143,US
3289606144,3289606655,AT
3289606656,3289607167,HK
3289607168,3289630719,US
3289630720,3289630975,GB
3289630976,3289631743,SC
-3289631744,3289632767,US
-3289632768,3289633791,AU
-3289633792,3289634815,US
+3289631744,3289634815,US
3289634816,3289636863,SC
3289636864,3289637887,CN
3289637888,3289638911,AU
-3289638912,3289639935,SC
+3289638912,3289639935,US
3289639936,3289640191,AU
-3289640192,3289640447,GB
+3289640192,3289640447,CZ
3289640448,3289640959,IE
3289640960,3289641215,ID
-3289641216,3289641727,SC
+3289641216,3289641727,JP
3289641728,3289641983,DE
3289641984,3289642239,AU
3289642240,3289642495,US
-3289642496,3289643263,SC
+3289642496,3289643007,IT
+3289643008,3289643263,ID
3289643264,3289643519,SG
-3289643520,3289644031,SC
+3289643520,3289644031,FR
3289644032,3289645055,US
3289645056,3289653247,NA
3289653248,3289661439,EG
@@ -114704,14 +135464,11 @@
3290171904,3290172159,NG
3290172160,3290172415,KE
3290172416,3290181631,ZA
-3290181632,3290181887,US
-3290181888,3290182399,PR
-3290182400,3290182655,US
-3290182656,3290183423,PR
-3290183424,3290183679,US
-3290183680,3290184959,PR
-3290184960,3290185215,US
-3290185216,3290185727,PR
+3290181632,3290185105,PR
+3290185106,3290185106,US
+3290185107,3290185107,PR
+3290185108,3290185108,US
+3290185109,3290185727,PR
3290185728,3290226687,ZA
3290226688,3290230783,MZ
3290230784,3290234879,BF
@@ -114793,9 +135550,7 @@
3291045888,3291078655,ZA
3291078656,3291086847,DZ
3291086848,3291103231,PR
-3291103232,3291119615,ZA
-3291119616,3291148287,BG
-3291148288,3291168767,ZA
+3291103232,3291168767,ZA
3291168768,3291176959,TZ
3291176960,3291185151,ZW
3291185152,3291201535,UG
@@ -114820,7 +135575,7 @@
3291207168,3291207423,MG
3291207424,3291207679,NG
3291207680,3291207935,BW
-3291207936,3291208447,KE
+3291208192,3291208447,KE
3291208448,3291208703,EG
3291208704,3291208959,KE
3291208960,3291209215,TZ
@@ -114829,7 +135584,6 @@
3291209728,3291209983,NG
3291209984,3291210239,GH
3291210240,3291210495,UG
-3291210496,3291210751,ZA
3291210752,3291211007,KE
3291211008,3291211263,SL
3291211264,3291211519,TZ
@@ -114846,7 +135600,7 @@
3291214336,3291214591,GH
3291214592,3291214847,ZA
3291214848,3291215103,NG
-3291215104,3291215615,KE
+3291215360,3291215615,KE
3291215616,3291215871,BF
3291215872,3291216127,KE
3291216128,3291216383,LS
@@ -114905,9 +135659,7 @@
3291385856,3291386879,NG
3291386880,3291387903,SC
3291387904,3291388927,BJ
-3291388928,3291389343,GA
-3291389344,3291389347,CG
-3291389348,3291389951,GA
+3291388928,3291389951,GA
3291389952,3291397119,ZA
3291397120,3291398143,EG
3291398144,3291406335,ZM
@@ -114920,24 +135672,48 @@
3291430912,3291432703,ZA
3291432704,3291432959,NA
3291432960,3291435263,ZA
-3291435264,3291437823,NA
-3291437824,3291438079,ZA
-3291438080,3291438847,NA
+3291435264,3291435519,NA
+3291435520,3291435775,ZA
+3291435776,3291438847,NA
3291438848,3291439103,ZA
3291439104,3291447295,NG
3291447296,3291463679,CI
3291463680,3291480063,ZA
3291480064,3291545599,SC
-3291545600,3291546367,MU
+3291545600,3291545855,CI
+3291545856,3291546111,GM
+3291546112,3291546367,NA
3291546368,3291546623,BI
3291546624,3291546879,SZ
-3291546880,3291548671,MU
+3291546880,3291547135,TZ
+3291547136,3291547391,AO
+3291547392,3291547647,RW
+3291547648,3291547903,BJ
+3291547904,3291548159,MU
+3291548160,3291548415,DJ
+3291548416,3291548671,SC
3291548672,3291548927,TZ
-3291548928,3291550207,MU
+3291548928,3291549183,MG
+3291549184,3291549439,GH
+3291549440,3291549695,UG
+3291549696,3291549951,LR
+3291549952,3291550207,GA
3291550208,3291550463,MR
-3291550464,3291553279,MU
-3291553280,3291553535,NG
-3291553536,3291611135,MU
+3291550464,3291550719,BF
+3291550720,3291550975,TZ
+3291551232,3291551487,KE
+3291551744,3291551999,BW
+3291552256,3291552511,NG
+3291552768,3291554047,NG
+3291554304,3291554559,MZ
+3291554816,3291555071,CD
+3291555328,3291555583,CM
+3291555840,3291556095,GN
+3291556352,3291556607,SN
+3291556864,3291557119,TG
+3291557376,3291557631,ZW
+3291557888,3291558143,ML
+3291558400,3291558655,TZ
3291611136,3291611647,ZA
3291611648,3291611903,MU
3291611904,3291612159,ZA
@@ -114972,16 +135748,13 @@
3291752960,3291753471,US
3291753472,3291753727,GB
3291753728,3291753983,KH
-3291753984,3291754239,JP
+3291753984,3291754239,CA
3291754240,3291754495,US
3291754496,3291754751,AU
3291754752,3291755007,GB
-3291755008,3291755263,AU
-3291755264,3291755519,US
+3291755008,3291755519,US
3291755520,3291755775,AU
-3291755776,3291756031,US
-3291756032,3291756287,AU
-3291756288,3291756543,US
+3291755776,3291756543,US
3291756544,3291756799,AU
3291756800,3291757311,US
3291757312,3291757567,GB
@@ -114990,10 +135763,12 @@
3291758080,3291758335,GB
3291758336,3291760639,US
3291760640,3291760895,AU
-3291760896,3291762175,US
+3291760896,3291761151,CA
+3291761152,3291762175,US
3291762176,3291762431,GB
3291762432,3291762687,AU
-3291762688,3291763199,US
+3291762688,3291762943,US
+3291762944,3291763199,BZ
3291763200,3291763455,GB
3291763456,3291763711,US
3291763712,3291763967,GB
@@ -115002,11 +135777,17 @@
3291766272,3291766527,AU
3291766528,3291766783,US
3291766784,3291767039,AU
-3291767040,3291813375,US
+3291767040,3291768831,US
+3291768832,3291769087,CA
+3291769088,3291808255,US
+3291808256,3291808511,CA
+3291808512,3291813375,US
3291813376,3291813631,GB
3291813632,3291813887,US
3291813888,3291814143,GB
-3291814144,3291815423,US
+3291814144,3291814399,US
+3291814400,3291814655,NL
+3291814656,3291815423,US
3291815424,3291815679,GB
3291815680,3291817471,US
3291817472,3291817983,NL
@@ -115028,16 +135809,24 @@
3291827456,3291828735,US
3291828736,3291829247,CA
3291829248,3291830271,US
-3291830272,3291832319,KH
-3291832320,3291835391,US
-3291835392,3291836415,DE
-3291836416,3291878655,US
+3291830272,3291831295,KH
+3291831296,3291831807,US
+3291831808,3291832063,KH
+3291832064,3291833343,US
+3291833344,3291834367,DE
+3291834368,3291835391,SE
+3291835392,3291836159,DE
+3291836160,3291837439,US
+3291837440,3291838463,JP
+3291838464,3291873535,US
+3291873536,3291873791,CA
+3291873792,3291875327,US
+3291875328,3291875839,CA
+3291875840,3291878655,US
3291878656,3291878911,GB
3291878912,3291879935,US
3291879936,3291880191,AU
-3291880192,3291880447,US
-3291880448,3291880703,DE
-3291880704,3291883775,US
+3291880192,3291883775,US
3291883776,3291884031,CA
3291884032,3291884287,US
3291884288,3291884543,NZ
@@ -115054,13 +135843,17 @@
3291891456,3291891711,GB
3291891712,3291893759,US
3291893760,3291894015,CA
-3291894016,3291906047,US
+3291894016,3291896831,US
+3291896832,3291897343,DE
+3291897344,3291906047,US
3291906048,3291907071,LK
3291907072,3291939063,US
3291939064,3291939064,GB
3291939065,3291939327,US
3291939328,3291939583,IN
-3291939584,3291943423,US
+3291939584,3291939839,US
+3291939840,3291940095,BZ
+3291940096,3291943423,US
3291943424,3291943679,FR
3291943680,3291943935,US
3291943936,3291944959,MX
@@ -115073,14 +135866,14 @@
3291971584,3291972607,JP
3291972608,3292004351,US
3292004352,3292004607,SE
-3292004608,3292004863,DK
-3292004864,3292005375,US
+3292004608,3292005119,SC
+3292005120,3292005375,US
3292005376,3292005631,CZ
3292005632,3292005887,SC
-3292005888,3292006655,US
-3292006656,3292006911,SC
-3292006912,3292007423,US
-3292007424,3292007679,SC
+3292005888,3292006143,US
+3292006144,3292006399,SC
+3292006400,3292007167,US
+3292007168,3292007679,SC
3292007680,3292008191,US
3292008192,3292008447,SC
3292008448,3292009727,US
@@ -115093,47 +135886,61 @@
3292013824,3292014079,SC
3292014080,3292014335,US
3292014336,3292014591,SC
-3292014592,3292016127,US
+3292014592,3292014847,US
+3292014848,3292015103,SC
+3292015104,3292016127,US
3292016128,3292016383,SC
-3292016384,3292018175,US
-3292018176,3292018687,SC
+3292016384,3292016895,US
+3292016896,3292017407,SC
+3292017408,3292017663,US
+3292017664,3292017919,SC
+3292017920,3292018431,US
+3292018432,3292018687,SC
3292018688,3292019199,US
3292019200,3292019455,SC
3292019456,3292019711,US
3292019712,3292019967,SC
3292019968,3292020479,US
3292020480,3292020735,SC
-3292020736,3292021247,US
-3292021248,3292021503,SC
-3292021504,3292021759,US
-3292021760,3292022271,SC
+3292020736,3292020991,US
+3292020992,3292022271,SC
3292022272,3292023039,US
3292023040,3292023551,SC
3292023552,3292024831,US
-3292024832,3292025343,SC
-3292025344,3292027647,US
+3292024832,3292025599,SC
+3292025600,3292027647,US
3292027648,3292027903,SC
3292027904,3292028415,US
3292028416,3292028671,SC
-3292028672,3292030463,US
-3292030464,3292030719,SC
+3292028672,3292029951,US
+3292029952,3292030719,SC
3292030720,3292031487,US
-3292031488,3292032511,SC
-3292032512,3292033791,US
-3292033792,3292034047,SC
-3292034048,3292034559,US
-3292034560,3292034815,SC
-3292034816,3292035071,US
-3292035072,3292035327,SC
-3292035328,3292035839,US
+3292031488,3292031999,SC
+3292032000,3292032255,US
+3292032256,3292033023,SC
+3292033024,3292033535,US
+3292033536,3292034303,SC
+3292034304,3292034559,US
+3292034560,3292035583,SC
+3292035584,3292035839,US
3292035840,3292036095,SC
3292036096,3292036607,US
3292036608,3292036863,SC
-3292036864,3292040959,US
+3292036864,3292038143,US
+3292038144,3292038399,SC
+3292038400,3292038655,US
+3292038656,3292038911,SC
+3292038912,3292039935,US
+3292039936,3292040447,SC
+3292040448,3292040959,US
3292040960,3292041471,SC
-3292041472,3292043007,US
+3292041472,3292041727,US
+3292041728,3292041983,SC
+3292041984,3292043007,US
3292043008,3292043263,SC
-3292043264,3292044543,US
+3292043264,3292044031,US
+3292044032,3292044287,SC
+3292044288,3292044543,US
3292044544,3292045055,SC
3292045056,3292045311,US
3292045312,3292045567,SC
@@ -115144,69 +135951,68 @@
3292049152,3292049663,US
3292049664,3292049919,SC
3292049920,3292051711,US
-3292051712,3292051967,SC
-3292051968,3292053503,US
+3292051712,3292052223,SC
+3292052224,3292053503,US
3292053504,3292053759,SC
3292053760,3292054015,US
3292054016,3292054527,SC
3292054528,3292055807,US
3292055808,3292056063,SC
-3292056064,3292056575,US
-3292056576,3292056831,SC
-3292056832,3292057087,US
-3292057088,3292057855,SC
-3292057856,3292058879,US
-3292058880,3292059135,SC
-3292059136,3292059391,US
+3292056064,3292056319,US
+3292056320,3292056831,SC
+3292056832,3292057343,US
+3292057344,3292057855,SC
+3292057856,3292059391,US
3292059392,3292059647,SC
-3292059648,3292060415,US
-3292060416,3292060671,SC
-3292060672,3292061439,US
-3292061440,3292061695,SC
-3292061696,3292062975,US
-3292062976,3292063231,SC
+3292059648,3292060927,US
+3292060928,3292061183,SC
+3292061184,3292062719,US
+3292062720,3292063231,SC
3292063232,3292063487,US
3292063488,3292063743,SC
3292063744,3292063999,US
-3292064000,3292064255,SC
-3292064256,3292064511,US
-3292064512,3292064767,SC
+3292064000,3292064767,SC
3292064768,3292065791,US
3292065792,3292066047,SC
-3292066048,3292066559,US
-3292066560,3292066815,SC
+3292066048,3292066303,US
+3292066304,3292066815,SC
3292066816,3292067327,US
-3292067328,3292067839,SC
-3292067840,3292068607,US
-3292068608,3292068863,SC
-3292068864,3292069375,US
-3292069376,3292069631,DE
-3292069632,3292069887,SC
+3292067328,3292068607,SC
+3292068608,3292069119,US
+3292069120,3292069631,SC
+3292069632,3292069887,AU
3292069888,3292070143,SE
3292070144,3292070399,DK
3292070400,3292070655,US
3292070656,3292070911,SC
3292070912,3292071167,CZ
-3292071168,3292071423,SC
-3292071424,3292071935,US
-3292071936,3292072191,SC
-3292072192,3292073215,US
-3292073216,3292073471,SC
-3292073472,3292073983,US
-3292073984,3292074495,SC
-3292074496,3292075263,US
+3292071168,3292071935,US
+3292071936,3292072447,SC
+3292072448,3292072703,US
+3292072704,3292073471,SC
+3292073472,3292073727,US
+3292073728,3292073983,SC
+3292073984,3292074239,US
+3292074240,3292074495,SC
+3292074496,3292074751,US
+3292074752,3292075007,SC
+3292075008,3292075263,US
3292075264,3292075775,SC
-3292075776,3292076287,US
-3292076288,3292076543,SC
-3292076544,3292078591,US
-3292078592,3292079103,SC
+3292075776,3292076031,US
+3292076032,3292076543,SC
+3292076544,3292076799,US
+3292076800,3292077567,SC
+3292077568,3292077823,US
+3292077824,3292078079,SC
+3292078080,3292078335,US
+3292078336,3292079103,SC
3292079104,3292079359,US
3292079360,3292079615,SC
3292079616,3292080127,US
3292080128,3292080383,SC
-3292080384,3292081151,US
-3292081152,3292081407,SC
-3292081408,3292082431,US
+3292080384,3292081663,US
+3292081664,3292081919,SC
+3292081920,3292082431,US
3292082432,3292082687,SC
3292082688,3292084735,US
3292084736,3292084991,SC
@@ -115216,59 +136022,69 @@
3292085760,3292086015,SC
3292086016,3292088063,US
3292088064,3292088319,SC
-3292088320,3292089087,US
+3292088320,3292088575,US
+3292088576,3292088831,SC
+3292088832,3292089087,US
3292089088,3292089343,SC
-3292089344,3292091903,US
+3292089344,3292090367,US
+3292090368,3292090623,SC
+3292090624,3292091135,US
+3292091136,3292091391,SC
+3292091392,3292091903,US
3292091904,3292092159,SC
3292092160,3292093439,US
3292093440,3292093951,SC
-3292093952,3292095231,US
-3292095232,3292095487,SC
-3292095488,3292097023,US
+3292093952,3292094463,US
+3292094464,3292094975,SC
+3292094976,3292095231,US
+3292095232,3292095743,SC
+3292095744,3292096511,US
+3292096512,3292096767,SC
+3292096768,3292097023,US
3292097024,3292097535,SC
3292097536,3292098047,US
3292098048,3292098303,SC
3292098304,3292098559,US
3292098560,3292098815,SC
3292098816,3292099327,US
-3292099328,3292099583,SC
-3292099584,3292100095,US
+3292099328,3292099839,SC
+3292099840,3292100095,US
3292100096,3292100351,SC
3292100352,3292102143,US
-3292102144,3292102399,SC
-3292102400,3292102911,US
+3292102144,3292102655,SC
+3292102656,3292102911,US
3292102912,3292103167,SC
3292103168,3292103423,US
3292103424,3292103679,SC
-3292103680,3292104447,US
+3292103680,3292103935,US
+3292103936,3292104191,SC
+3292104192,3292104447,US
3292104448,3292104703,SC
3292104704,3292104959,US
-3292104960,3292105471,SC
-3292105472,3292105983,US
+3292104960,3292105215,SC
+3292105216,3292105983,US
3292105984,3292106239,SC
-3292106240,3292106495,US
-3292106496,3292107007,SC
-3292107008,3292107519,US
-3292107520,3292108543,SC
-3292108544,3292108799,US
-3292108800,3292109055,SC
-3292109056,3292109567,US
+3292106240,3292106751,US
+3292106752,3292107263,SC
+3292107264,3292107519,US
+3292107520,3292109311,SC
+3292109312,3292109567,US
3292109568,3292109823,SC
3292109824,3292110079,US
-3292110080,3292110591,SC
-3292110592,3292111615,US
+3292110080,3292110847,SC
+3292110848,3292111615,US
3292111616,3292111871,SC
-3292111872,3292112127,US
-3292112128,3292112383,SC
-3292112384,3292112895,US
+3292111872,3292112895,US
3292112896,3292113151,SC
-3292113152,3292113919,US
+3292113152,3292113407,US
+3292113408,3292113663,SC
+3292113664,3292113919,US
3292113920,3292114175,SC
3292114176,3292114431,US
3292114432,3292114687,SC
3292114688,3292115967,US
-3292115968,3292116223,SC
-3292116224,3292116735,US
+3292115968,3292116479,SC
+3292116480,3292116735,US
3292116736,3292116991,SC
3292116992,3292117247,US
3292117248,3292117503,SC
@@ -115277,69 +136093,73 @@
3292118016,3292119039,US
3292119040,3292119295,SC
3292119296,3292119551,US
-3292119552,3292120063,SC
-3292120064,3292120575,US
+3292119552,3292120319,SC
+3292120320,3292120575,US
3292120576,3292121087,SC
-3292121088,3292121599,US
-3292121600,3292122111,SC
-3292122112,3292123903,US
-3292123904,3292124159,SC
-3292124160,3292124927,US
+3292121088,3292121343,US
+3292121344,3292122111,SC
+3292122112,3292124159,US
+3292124160,3292124415,SC
+3292124416,3292124927,US
3292124928,3292125183,SC
3292125184,3292125439,US
3292125440,3292125951,SC
-3292125952,3292127231,US
-3292127232,3292127487,SC
+3292125952,3292126719,US
+3292126720,3292127487,SC
3292127488,3292128767,US
3292128768,3292129023,SC
-3292129024,3292129791,US
-3292129792,3292130303,SC
-3292130304,3292131327,US
-3292131328,3292132095,SC
-3292132096,3292133887,US
+3292129024,3292129535,US
+3292129536,3292130559,SC
+3292130560,3292131583,US
+3292131584,3292132095,SC
+3292132096,3292132607,US
+3292132608,3292132863,SC
+3292132864,3292133119,US
+3292133120,3292133375,SC
+3292133376,3292133887,US
3292133888,3292134143,SC
3292134144,3292134399,US
-3292134400,3292134911,SC
-3292134912,3292135167,DE
+3292134400,3292135167,SC
3292135168,3292135423,AU
3292135424,3292135679,SE
3292135680,3292135935,DK
-3292135936,3292136191,US
-3292136192,3292136447,SC
+3292135936,3292136447,SC
3292136448,3292136703,CZ
3292136704,3292136959,SC
-3292136960,3292137215,US
-3292137216,3292137471,SC
-3292137472,3292137727,US
+3292136960,3292137727,US
3292137728,3292138239,SC
3292138240,3292138495,US
3292138496,3292138751,SC
3292138752,3292139519,US
3292139520,3292139775,SC
3292139776,3292140031,US
-3292140032,3292140287,SC
-3292140288,3292140799,US
+3292140032,3292140543,SC
+3292140544,3292140799,US
3292140800,3292141055,SC
-3292141056,3292141567,US
-3292141568,3292142079,SC
-3292142080,3292142591,US
-3292142592,3292142847,SC
+3292141056,3292141823,US
+3292141824,3292142847,SC
3292142848,3292143103,US
3292143104,3292143359,SC
3292143360,3292143871,US
3292143872,3292144127,SC
-3292144128,3292146431,US
+3292144128,3292144895,US
+3292144896,3292145151,SC
+3292145152,3292145663,US
+3292145664,3292145919,SC
+3292145920,3292146431,US
3292146432,3292146687,SC
3292146688,3292146943,US
3292146944,3292147455,SC
3292147456,3292147967,US
3292147968,3292148479,SC
-3292148480,3292149503,US
+3292148480,3292148991,US
+3292148992,3292149247,SC
+3292149248,3292149503,US
3292149504,3292149759,SC
-3292149760,3292150271,US
-3292150272,3292150527,SC
-3292150528,3292152063,US
-3292152064,3292152319,SC
+3292149760,3292150015,US
+3292150016,3292150783,SC
+3292150784,3292151807,US
+3292151808,3292152319,SC
3292152320,3292153343,US
3292153344,3292153855,SC
3292153856,3292154111,US
@@ -115348,43 +136168,49 @@
3292157440,3292157695,SC
3292157696,3292157951,US
3292157952,3292158463,SC
-3292158464,3292159999,US
+3292158464,3292158719,US
+3292158720,3292158975,SC
+3292158976,3292159999,US
3292160000,3292160511,SC
-3292160512,3292161791,US
-3292161792,3292162047,SC
-3292162048,3292162559,US
+3292160512,3292161535,US
+3292161536,3292162303,SC
+3292162304,3292162559,US
3292162560,3292163071,SC
3292163072,3292163327,US
3292163328,3292163583,SC
-3292163584,3292165887,US
+3292163584,3292165119,US
+3292165120,3292165375,SC
+3292165376,3292165887,US
3292165888,3292166143,SC
-3292166144,3292167935,US
+3292166144,3292166911,US
+3292166912,3292167423,SC
+3292167424,3292167935,US
3292167936,3292168191,SC
3292168192,3292168703,US
-3292168704,3292169727,SC
-3292169728,3292171775,US
+3292168704,3292170239,SC
+3292170240,3292171775,US
3292171776,3292172287,SC
-3292172288,3292173055,US
-3292173056,3292173567,SC
-3292173568,3292174335,US
+3292172288,3292172799,US
+3292172800,3292174079,SC
+3292174080,3292174335,US
3292174336,3292174591,SC
-3292174592,3292175103,US
-3292175104,3292175359,SC
-3292175360,3292176383,US
+3292174592,3292174847,US
+3292174848,3292175359,SC
+3292175360,3292175615,US
+3292175616,3292175871,SC
+3292175872,3292176383,US
3292176384,3292176639,SC
3292176640,3292177151,US
3292177152,3292177407,SC
3292177408,3292178175,US
-3292178176,3292178687,SC
-3292178688,3292178943,US
-3292178944,3292179199,SC
-3292179200,3292179711,US
-3292179712,3292179967,SC
+3292178176,3292179967,SC
3292179968,3292180479,US
3292180480,3292180735,SC
3292180736,3292180991,US
-3292180992,3292181503,SC
-3292181504,3292183039,US
+3292180992,3292181759,SC
+3292181760,3292182271,US
+3292182272,3292182527,SC
+3292182528,3292183039,US
3292183040,3292183551,SC
3292183552,3292184575,US
3292184576,3292184831,SC
@@ -115396,60 +136222,92 @@
3292187392,3292187903,SC
3292187904,3292188159,US
3292188160,3292188671,SC
-3292188672,3292190975,US
-3292190976,3292191231,SC
-3292191232,3292193791,US
+3292188672,3292189695,US
+3292189696,3292190207,SC
+3292190208,3292190463,US
+3292190464,3292190719,SC
+3292190720,3292190975,US
+3292190976,3292191487,SC
+3292191488,3292192255,US
+3292192256,3292192511,SC
+3292192512,3292192767,US
+3292192768,3292193023,SC
+3292193024,3292193791,US
3292193792,3292194047,SC
-3292194048,3292195839,US
+3292194048,3292194815,US
+3292194816,3292195071,SC
+3292195072,3292195327,US
+3292195328,3292195583,SC
+3292195584,3292195839,US
3292195840,3292196607,SC
3292196608,3292197119,US
-3292197120,3292197375,SC
-3292197376,3292198399,US
+3292197120,3292197631,SC
+3292197632,3292197887,US
+3292197888,3292198143,SC
+3292198144,3292198399,US
3292198400,3292198655,SC
-3292198656,3292199935,US
-3292199936,3292200191,SC
+3292198656,3292199167,US
+3292199168,3292199423,SC
+3292199424,3292199679,US
+3292199680,3292200191,SC
3292200192,3292200447,US
3292200448,3292200703,SC
3292200704,3292200959,AU
-3292200960,3292201215,SE
+3292200960,3292201215,SC
3292201216,3292201471,DK
3292201472,3292201983,US
-3292201984,3292202239,CZ
-3292202240,3292203007,US
+3292201984,3292202751,SC
+3292202752,3292203007,US
3292203008,3292203519,SC
3292203520,3292204031,US
3292204032,3292204287,SC
-3292204288,3292206335,US
+3292204288,3292204799,US
+3292204800,3292205055,SC
+3292205056,3292206335,US
3292206336,3292206847,SC
3292206848,3292209151,US
3292209152,3292209407,SC
-3292209408,3292209663,US
-3292209664,3292209919,SC
-3292209920,3292210175,US
-3292210176,3292210431,SC
-3292210432,3292212479,US
-3292212480,3292212735,SC
-3292212736,3292213247,US
-3292213248,3292213503,SC
-3292213504,3292213759,US
+3292209408,3292210175,US
+3292210176,3292210687,SC
+3292210688,3292211455,US
+3292211456,3292211711,SC
+3292211712,3292211967,US
+3292211968,3292212223,SC
+3292212224,3292212479,US
+3292212480,3292212991,SC
+3292212992,3292213759,US
3292213760,3292214015,SC
-3292214016,3292214783,US
-3292214784,3292215039,SC
-3292215040,3292215295,US
+3292214016,3292215295,US
3292215296,3292215807,SC
3292215808,3292216319,US
-3292216320,3292216831,SC
-3292216832,3292219391,US
-3292219392,3292219647,SC
-3292219648,3292220671,US
+3292216320,3292217343,SC
+3292217344,3292217855,US
+3292217856,3292218111,SC
+3292218112,3292218367,US
+3292218368,3292218623,SC
+3292218624,3292218879,US
+3292218880,3292219135,SC
+3292219136,3292219391,US
+3292219392,3292219903,SC
+3292219904,3292220159,US
+3292220160,3292220415,SC
+3292220416,3292220671,US
3292220672,3292221439,SC
3292221440,3292221695,US
-3292221696,3292221951,SC
-3292221952,3292223743,US
+3292221696,3292222207,SC
+3292222208,3292223231,US
+3292223232,3292223487,SC
+3292223488,3292223743,US
3292223744,3292223999,SC
-3292224000,3292227071,US
-3292227072,3292227327,SC
-3292227328,3292229887,US
+3292224000,3292225023,US
+3292225024,3292225535,SC
+3292225536,3292226815,US
+3292226816,3292227071,SC
+3292227072,3292227839,US
+3292227840,3292228351,SC
+3292228352,3292228863,US
+3292228864,3292229375,SC
+3292229376,3292229887,US
3292229888,3292230143,SC
3292230144,3292231935,US
3292231936,3292232191,SC
@@ -115457,13 +136315,19 @@
3292233216,3292233727,SC
3292233728,3292234495,US
3292234496,3292234751,SC
-3292234752,3292235775,US
+3292234752,3292235007,US
+3292235008,3292235263,SC
+3292235264,3292235775,US
3292235776,3292236031,SC
-3292236032,3292237311,US
+3292236032,3292236287,US
+3292236288,3292236543,SC
+3292236544,3292237311,US
3292237312,3292237823,SC
-3292237824,3292239359,US
-3292239360,3292240127,SC
-3292240128,3292240639,US
+3292237824,3292238591,US
+3292238592,3292238847,SC
+3292238848,3292239359,US
+3292239360,3292239871,SC
+3292239872,3292240639,US
3292240640,3292240895,SC
3292240896,3292241151,US
3292241152,3292241407,SC
@@ -115473,31 +136337,39 @@
3292243200,3292244223,SC
3292244224,3292244991,US
3292244992,3292245247,SC
-3292245248,3292246783,US
+3292245248,3292245503,US
+3292245504,3292245759,SC
+3292245760,3292246783,US
3292246784,3292247039,SC
-3292247040,3292247551,US
-3292247552,3292248063,SC
-3292248064,3292249343,US
-3292249344,3292249599,SC
-3292249600,3292250367,US
+3292247040,3292247295,US
+3292247296,3292248319,SC
+3292248320,3292249343,US
+3292249344,3292249855,SC
+3292249856,3292250367,US
3292250368,3292250623,SC
3292250624,3292250879,US
-3292250880,3292251135,SC
-3292251136,3292251903,US
+3292250880,3292251391,SC
+3292251392,3292251903,US
3292251904,3292252159,SC
3292252160,3292252415,US
3292252416,3292252671,SC
-3292252672,3292254975,US
-3292254976,3292255743,SC
+3292252672,3292253439,US
+3292253440,3292253695,SC
+3292253696,3292254207,US
+3292254208,3292255743,SC
3292255744,3292257023,US
3292257024,3292257279,SC
-3292257280,3292258559,US
+3292257280,3292257535,US
+3292257536,3292257791,SC
+3292257792,3292258559,US
3292258560,3292258815,SC
3292258816,3292259327,US
3292259328,3292259583,SC
-3292259584,3292260863,US
-3292260864,3292261375,SC
-3292261376,3292262399,US
+3292259584,3292260607,US
+3292260608,3292261375,SC
+3292261376,3292261631,US
+3292261632,3292261887,SC
+3292261888,3292262399,US
3292262400,3292263167,SC
3292263168,3292263935,US
3292263936,3292264191,SC
@@ -115505,13 +136377,23 @@
3292264448,3292264703,SC
3292264704,3292264959,US
3292264960,3292265215,SC
-3292265216,3292265983,US
+3292265216,3292265727,US
+3292265728,3292265983,SC
3292265984,3292266239,DE
3292266240,3292266495,SC
-3292266496,3292268543,MU
+3292266496,3292266751,TZ
+3292267008,3292267263,KE
+3292267520,3292267775,BW
+3292268032,3292268287,CM
3292268544,3292269055,ZA
-3292269056,3292332031,MU
-3292332032,3292334079,NG
+3292274688,3292274943,ZA
+3292275712,3292275967,KE
+3292276224,3292276479,GN
+3292276736,3292276991,SN
+3292277248,3292277503,TG
+3292277760,3292278015,ZW
+3292278272,3292278527,ML
+3292278784,3292279039,TZ
3292334080,3292336127,TZ
3292336128,3292340223,ZA
3292340224,3292344319,GH
@@ -115527,12 +136409,15 @@
3292389376,3292391423,ZA
3292391424,3292393471,MA
3292393472,3292397567,ZA
-3292397568,3292463103,US
+3292397568,3292430335,PK
+3292430336,3292463103,US
3292463104,3292528639,ZA
3292528640,3294625791,MA
3294625792,3295674367,KE
3295674368,3296722943,MA
-3296722944,3298820095,EG
+3296722944,3297288191,EG
+3297288192,3297292287,QA
+3297292288,3298820095,EG
3298820096,3299344383,ZA
3299344384,3299606527,TG
3299606528,3299868671,GH
@@ -115551,8 +136436,8 @@
3300953088,3300954111,MU
3300954112,3300958207,NG
3300958208,3301048319,ZA
-3301048320,3301081087,PK
-3301081088,3301113855,ZA
+3301048320,3301097471,PK
+3301097472,3301113855,ZA
3301113856,3301117951,AF
3301117952,3301130239,PK
3301130240,3301144319,ZA
@@ -115564,7 +136449,9 @@
3301172224,3301173759,UG
3301173760,3301174271,ZA
3301174272,3301175295,UG
-3301175296,3301179391,AF
+3301175296,3301178897,AF
+3301178898,3301178898,DE
+3301178899,3301179391,AF
3301179392,3301179903,RU
3301179904,3301181439,SC
3301181440,3301185535,US
@@ -115600,24 +136487,17 @@
3301246976,3301247999,SC
3301248000,3301250047,US
3301250048,3301251071,SC
-3301251072,3301253119,US
-3301253120,3301254143,SC
-3301254144,3301256191,US
+3301251072,3301256191,US
3301256192,3301257215,PR
-3301257216,3301259263,US
-3301259264,3301260287,SC
-3301260288,3301262335,US
+3301257216,3301262335,US
3301262336,3301263359,SC
-3301263360,3301267455,US
-3301267456,3301268479,SC
-3301268480,3301272575,US
-3301272576,3301277695,SC
-3301277696,3301278719,US
-3301278720,3301279743,SC
+3301263360,3301272575,US
+3301272576,3301275647,SC
+3301275648,3301276671,PR
+3301276672,3301277695,SC
+3301277696,3301279743,US
3301279744,3301280767,PR
-3301280768,3301282815,US
-3301282816,3301283839,SC
-3301283840,3301284863,US
+3301280768,3301284863,US
3301284864,3301286911,SC
3301286912,3301287935,NL
3301287936,3301288959,CH
@@ -115628,13 +136508,13 @@
3301294080,3301295103,LU
3301295104,3301296127,SC
3301296128,3301297151,HK
-3301297152,3301298175,SC
+3301297152,3301298175,AU
3301298176,3301299199,AT
3301299200,3301300223,BE
3301300224,3301301247,LV
3301301248,3301302271,CZ
3301302272,3301303295,DK
-3301303296,3301304319,SC
+3301303296,3301304319,DE
3301304320,3301305343,FR
3301305344,3301306367,AT
3301306368,3301307391,IN
@@ -115652,9 +136532,13 @@
3301315072,3301315327,ES
3301315328,3301315583,SC
3301315584,3301315839,NL
-3301315840,3301317375,SC
+3301315840,3301316095,SC
+3301316096,3301316351,US
+3301316352,3301317375,SC
3301317376,3301317631,PR
-3301317632,3301318655,SC
+3301317632,3301317887,SC
+3301317888,3301318143,US
+3301318144,3301318655,SC
3301318656,3301318911,US
3301318912,3301319679,SC
3301319680,3301319935,US
@@ -115664,7 +136548,9 @@
3301321216,3301321471,US
3301321472,3301322751,SC
3301322752,3301323007,CA
-3301323008,3301324287,SC
+3301323008,3301323263,SC
+3301323264,3301323519,US
+3301323520,3301324287,SC
3301324288,3301324543,US
3301324544,3301325567,SC
3301325568,3301325823,US
@@ -115673,14 +136559,14 @@
3301329408,3301330687,SC
3301330688,3301330943,HK
3301330944,3301331199,HU
-3301331200,3301331455,SC
+3301331200,3301331455,LU
3301331456,3301331711,NZ
3301331712,3301332479,SC
3301332480,3301332735,ES
3301332736,3301332991,SC
3301332992,3301333247,NL
-3301333248,3301333759,SC
-3301333760,3301334015,US
+3301333248,3301333503,SC
+3301333504,3301334015,US
3301334016,3301334527,SC
3301334528,3301334783,US
3301334784,3301335039,PR
@@ -115689,9 +136575,13 @@
3301337088,3301337343,US
3301337344,3301337855,SC
3301337856,3301338111,US
-3301338112,3301340671,SC
+3301338112,3301340159,SC
+3301340160,3301340415,US
+3301340416,3301340671,SC
3301340672,3301340927,PR
-3301340928,3301342975,SC
+3301340928,3301341183,SC
+3301341184,3301341439,US
+3301341440,3301342975,SC
3301342976,3301343743,US
3301343744,3301344511,SC
3301344512,3301344767,IN
@@ -115702,19 +136592,23 @@
3301345792,3301346047,CZ
3301346048,3301346303,SC
3301346304,3301346559,BE
-3301346560,3301349119,SC
+3301346560,3301348095,SC
+3301348096,3301348351,NO
+3301348352,3301349119,SC
3301349120,3301349375,CH
3301349376,3301351423,SC
3301351424,3301351935,US
3301351936,3301352703,SC
3301352704,3301352959,US
-3301352960,3301353727,SC
-3301353728,3301354239,US
+3301352960,3301353471,SC
+3301353472,3301354239,US
3301354240,3301355263,SC
3301355264,3301355519,US
3301355520,3301356799,SC
3301356800,3301357055,US
-3301357056,3301357823,SC
+3301357056,3301357311,SC
+3301357312,3301357567,US
+3301357568,3301357823,SC
3301357824,3301358335,US
3301358336,3301359359,SC
3301359360,3301359615,US
@@ -115727,25 +136621,32 @@
3301362432,3301362687,LV
3301362688,3301362943,SC
3301362944,3301363199,AT
-3301363200,3301364479,SC
+3301363200,3301363711,SC
+3301363712,3301363967,HU
+3301363968,3301364479,SC
3301364480,3301364735,NO
3301364736,3301364991,SC
3301364992,3301365247,PT
-3301365248,3301367551,SC
+3301365248,3301365503,ES
+3301365504,3301365759,SC
+3301365760,3301366015,NL
+3301366016,3301367551,SC
3301367552,3301367807,PR
-3301367808,3301371391,SC
+3301367808,3301368319,SC
+3301368320,3301368575,US
+3301368576,3301368831,PR
+3301368832,3301371391,SC
3301371392,3301372159,US
3301372160,3301373183,SC
3301373184,3301373439,US
3301373440,3301373695,SC
3301373696,3301373951,US
-3301373952,3301375231,SC
-3301375232,3301375487,US
-3301375488,3301375743,SC
-3301375744,3301376511,US
-3301376512,3301377535,SC
-3301377536,3301378559,US
-3301378560,3301379071,SC
+3301373952,3301374463,SC
+3301374464,3301374719,US
+3301374720,3301375231,SC
+3301375232,3301376511,US
+3301376512,3301378815,SC
+3301378816,3301379071,PR
3301379072,3301379327,US
3301379328,3301379583,SC
3301379584,3301379839,US
@@ -115755,21 +136656,25 @@
3301382656,3301382911,SC
3301382912,3301383423,US
3301383424,3301383679,SC
-3301383680,3301384959,US
-3301384960,3301385215,SC
+3301383680,3301384191,US
+3301384192,3301384447,SC
+3301384448,3301384703,US
+3301384704,3301385215,SC
3301385216,3301385727,US
3301385728,3301386239,SC
-3301386240,3301387007,US
+3301386240,3301386495,US
+3301386496,3301387007,SC
3301387008,3301387263,ES
3301387264,3301387519,PT
-3301387520,3301388287,US
+3301387520,3301387775,PL
+3301387776,3301388287,SC
3301388288,3301388543,LU
-3301388544,3301389311,US
-3301389312,3301389567,SC
+3301388544,3301389055,US
+3301389056,3301389567,SC
3301389568,3301390079,US
3301390080,3301390335,SC
3301390336,3301391359,US
-3301391360,3301391615,SC
+3301391360,3301391615,IN
3301391616,3301391871,RU
3301391872,3301392895,US
3301392896,3301393151,SC
@@ -115778,13 +136683,13 @@
3301393664,3301394687,US
3301394688,3301395199,SC
3301395200,3301395455,PR
-3301395456,3301396479,US
-3301396480,3301398015,SC
-3301398016,3301398271,US
-3301398272,3301398527,SC
+3301395456,3301396223,US
+3301396224,3301398527,SC
3301398528,3301399039,US
3301399040,3301399551,SC
-3301399552,3301400319,US
+3301399552,3301399807,US
+3301399808,3301400063,SC
+3301400064,3301400319,US
3301400320,3301400575,SC
3301400576,3301401343,US
3301401344,3301401599,SC
@@ -115807,17 +136712,17 @@
3301405952,3301406463,US
3301406464,3301406719,CZ
3301406720,3301406975,DK
-3301406976,3301407487,US
-3301407488,3301408511,SC
-3301408512,3301409023,US
+3301406976,3301407231,SC
+3301407232,3301407487,FR
+3301407488,3301408767,SC
+3301408768,3301409023,US
3301409024,3301409279,SC
-3301409280,3301410047,US
-3301410048,3301410303,SC
+3301409280,3301409535,US
+3301409536,3301410303,SC
3301410304,3301410559,US
3301410560,3301410815,SC
3301410816,3301411071,US
-3301411072,3301411327,SC
-3301411328,3301411583,US
+3301411072,3301411583,SC
3301411584,3301411839,PR
3301411840,3301412863,US
3301412864,3301413119,CA
@@ -115825,35 +136730,44 @@
3301413376,3301416191,US
3301416192,3301416447,SC
3301416448,3301416703,PR
-3301416704,3301418239,US
+3301416704,3301417471,US
+3301417472,3301417727,SC
+3301417728,3301418239,US
3301418240,3301418495,SC
3301418496,3301419007,US
-3301419008,3301419519,SC
+3301419008,3301419263,SC
+3301419264,3301419519,NL
3301419520,3301419775,CH
3301419776,3301420287,SC
3301420288,3301420543,PL
3301420544,3301421311,US
3301421312,3301421567,HU
3301421568,3301421823,HK
-3301421824,3301422847,SC
-3301422848,3301423615,US
+3301421824,3301423103,SC
+3301423104,3301423615,US
3301423616,3301423871,FR
-3301423872,3301424383,US
+3301423872,3301424127,US
+3301424128,3301424383,SC
3301424384,3301424639,RU
3301424640,3301424895,US
3301424896,3301425151,SC
-3301425152,3301426431,US
-3301426432,3301426687,SC
-3301426688,3301426943,US
-3301426944,3301427199,SC
-3301427200,3301427711,US
-3301427712,3301427967,SC
+3301425152,3301425663,US
+3301425664,3301425919,SC
+3301425920,3301426431,US
+3301426432,3301427199,SC
+3301427200,3301427967,US
3301427968,3301428223,PR
3301428224,3301428479,US
3301428480,3301428735,SC
-3301428736,3301430271,US
-3301430272,3301430527,SC
-3301430528,3301432831,US
+3301428736,3301429503,US
+3301429504,3301430015,SC
+3301430016,3301430271,US
+3301430272,3301430783,SC
+3301430784,3301431295,US
+3301431296,3301432063,SC
+3301432064,3301432319,US
+3301432320,3301432575,SC
+3301432576,3301432831,US
3301432832,3301433087,PR
3301433088,3301433343,SC
3301433344,3301433855,US
@@ -115863,9 +136777,14 @@
3301435648,3301435903,NL
3301435904,3301436159,SC
3301436160,3301436415,ES
-3301436416,3301437439,US
+3301436416,3301436671,US
+3301436672,3301436927,SC
+3301436928,3301437439,US
3301437440,3301437695,LU
-3301437696,3301439487,US
+3301437696,3301437951,SC
+3301437952,3301438207,HK
+3301438208,3301438719,SC
+3301438720,3301439487,US
3301439488,3301439743,DK
3301439744,3301439999,SC
3301440000,3301440767,US
@@ -115948,9 +136867,7 @@
3302531584,3302531839,TZ
3302531840,3302532095,BW
3302532096,3302533119,NA
-3302533120,3302533887,ZA
-3302533888,3302534143,MU
-3302534144,3302535167,ZA
+3302533120,3302535167,ZA
3302535168,3302536191,UG
3302536192,3302537215,GH
3302537216,3302538239,NG
@@ -115965,7 +136882,6 @@
3302543360,3302544383,NG
3302544384,3302544639,CM
3302544640,3302544895,MU
-3302544896,3302545151,GH
3302545152,3302545407,ZA
3302545408,3302545919,CD
3302545920,3302546431,TZ
@@ -116016,7 +136932,6 @@
3302950656,3302950911,EG
3302950912,3302951423,ZA
3302951424,3302951679,SL
-3302951680,3302951935,KE
3302951936,3302952191,RW
3302952192,3302952447,AO
3302952448,3302952959,ZA
@@ -116028,7 +136943,6 @@
3302954496,3302955007,ZA
3302955008,3302955263,LS
3302955264,3302955519,UG
-3302955520,3302955775,ZW
3302955776,3302956031,MW
3302956032,3302956287,CD
3302956544,3302957055,ZA
@@ -116061,15 +136975,13 @@
3303013632,3303014399,KE
3303014400,3303537151,TN
3303537152,3303537407,BI
-3303537408,3303612415,TN
-3303612416,3303620607,ZA
-3303620608,3304022271,TN
+3303537408,3304022271,TN
3304022272,3304022527,CF
3304022528,3304062975,TN
3304062976,3304065279,SC
3304065280,3304065535,US
-3304065536,3304066303,SC
-3304066304,3304066559,US
+3304065536,3304066047,SC
+3304066048,3304066559,US
3304066560,3304066815,CA
3304066816,3304067071,US
3304067072,3304067327,CA
@@ -116077,7 +136989,9 @@
3304071168,3304071423,US
3304071424,3304071679,SC
3304071680,3304071935,PR
-3304071936,3304072959,SC
+3304071936,3304072447,SC
+3304072448,3304072703,US
+3304072704,3304072959,SC
3304072960,3304073215,US
3304073216,3304073471,GB
3304073472,3304073727,NL
@@ -116097,7 +137011,8 @@
3304077824,3304078079,FR
3304078080,3304078335,SC
3304078336,3304078591,IN
-3304078592,3304079103,SC
+3304078592,3304078847,SC
+3304078848,3304079103,SG
3304079104,3304079359,BR
3304079360,3304080895,SC
3304080896,3304081407,US
@@ -116119,7 +137034,10 @@
3304087296,3304087551,US
3304087552,3304089343,SC
3304089344,3304089599,US
-3304089600,3304091135,SC
+3304089600,3304090111,SC
+3304090112,3304090367,CH
+3304090368,3304090623,ES
+3304090624,3304091135,SC
3304091136,3304091391,NO
3304091392,3304091647,SC
3304091648,3304091903,LU
@@ -116133,7 +137051,9 @@
3304094976,3304095231,RU
3304095232,3304096255,SC
3304096256,3304096511,US
-3304096512,3304098047,SC
+3304096512,3304097023,SC
+3304097024,3304097279,US
+3304097280,3304098047,SC
3304098048,3304098303,US
3304098304,3304098815,SC
3304098816,3304099071,US
@@ -116144,9 +137064,7 @@
3304100096,3304100607,SC
3304100608,3304101119,US
3304101120,3304102143,SC
-3304102144,3304102399,US
-3304102400,3304102655,SC
-3304102656,3304103167,US
+3304102144,3304103167,US
3304103168,3304103679,SC
3304103680,3304103935,US
3304103936,3304104959,SC
@@ -116173,7 +137091,7 @@
3304114176,3304114431,US
3304114432,3304115199,SC
3304115200,3304115711,US
-3304115712,3304115967,SC
+3304115712,3304115967,CA
3304115968,3304116223,US
3304116224,3304116735,SC
3304116736,3304116991,US
@@ -116192,15 +137110,20 @@
3304121344,3304122367,SC
3304122368,3304122623,GB
3304122624,3304122879,NL
-3304122880,3304124159,SC
+3304122880,3304123647,SC
+3304123648,3304123903,PL
+3304123904,3304124159,SC
3304124160,3304124415,NZ
3304124416,3304125183,SC
3304125184,3304125439,AU
3304125440,3304125695,AT
-3304125696,3304126719,SC
+3304125696,3304126463,SC
+3304126464,3304126719,DK
3304126720,3304126975,DE
3304126976,3304127231,FR
-3304127232,3304194303,SC
+3304127232,3304128255,SC
+3304128256,3304128511,BR
+3304128512,3304194303,SC
3304194304,3304194559,US
3304194560,3304194815,AT
3304194816,3304195071,SC
@@ -116208,7 +137131,9 @@
3304195328,3304198143,SC
3304198144,3304198399,PL
3304198400,3304198655,PT
-3304198656,3304199423,SC
+3304198656,3304198911,ES
+3304198912,3304199167,CH
+3304199168,3304199423,SC
3304199424,3304199679,GB
3304199680,3304201471,SC
3304201472,3304201983,US
@@ -116218,12 +137143,11 @@
3304204544,3304204799,US
3304204800,3304205567,SC
3304205568,3304205823,US
-3304205824,3304206335,SC
+3304205824,3304206079,SC
+3304206080,3304206335,US
3304206336,3304206591,CA
3304206592,3304207871,SC
-3304207872,3304208639,US
-3304208640,3304208895,SC
-3304208896,3304209151,US
+3304207872,3304209151,US
3304209152,3304209407,SC
3304209408,3304209663,US
3304209664,3304210431,SC
@@ -116237,12 +137161,17 @@
3304213248,3304213503,LV
3304213504,3304213759,SC
3304213760,3304214015,AT
-3304214016,3304216831,SC
+3304214016,3304214783,SC
+3304214784,3304215039,LU
+3304215040,3304216063,SC
+3304216064,3304216319,ES
+3304216320,3304216575,CH
+3304216576,3304216831,NL
3304216832,3304217087,GB
3304217088,3304218367,SC
3304218368,3304218623,PR
-3304218624,3304218879,US
-3304218880,3304222207,SC
+3304218624,3304219135,US
+3304219136,3304222207,SC
3304222208,3304222463,US
3304222464,3304223231,SC
3304223232,3304223487,US
@@ -116275,8 +137204,10 @@
3304234752,3304235007,PR
3304235008,3304235775,SC
3304235776,3304236031,PR
-3304236032,3304237823,SC
-3304237824,3304238079,US
+3304236032,3304236799,SC
+3304236800,3304237055,US
+3304237056,3304237567,SC
+3304237568,3304238079,US
3304238080,3304238591,SC
3304238592,3304239103,US
3304239104,3304240383,SC
@@ -116292,7 +137223,9 @@
3304245248,3304245503,DE
3304245504,3304246271,SC
3304246272,3304246527,BE
-3304246528,3304248063,SC
+3304246528,3304247039,SC
+3304247040,3304247295,HK
+3304247296,3304248063,SC
3304248064,3304248319,NO
3304248320,3304248831,SC
3304248832,3304249087,ES
@@ -116301,14 +137234,21 @@
3304249600,3304249855,GB
3304249856,3304250879,SC
3304250880,3304251135,US
-3304251136,3304251903,SC
+3304251136,3304251391,PR
+3304251392,3304251903,SC
3304251904,3304252159,US
-3304252160,3304255231,SC
+3304252160,3304254463,SC
+3304254464,3304254719,US
+3304254720,3304255231,SC
3304255232,3304255487,US
3304255488,3304255999,SC
3304256000,3304256255,US
3304256256,3304256511,CA
-3304256512,3304325375,SC
+3304256512,3304257023,SC
+3304257024,3304257279,PR
+3304257280,3304257535,SC
+3304257536,3304257791,US
+3304257792,3304325375,SC
3304325376,3304325631,US
3304325632,3304326143,SC
3304326144,3304326399,DE
@@ -116322,7 +137262,9 @@
3304329216,3304329471,PL
3304329472,3304331007,SC
3304331008,3304331263,US
-3304331264,3304332543,SC
+3304331264,3304331775,SC
+3304331776,3304332031,US
+3304332032,3304332543,SC
3304332544,3304332799,US
3304332800,3304333055,SC
3304333056,3304333311,PR
@@ -116330,18 +137272,22 @@
3304333824,3304334079,US
3304334080,3304334591,SC
3304334592,3304334847,US
-3304334848,3304336127,SC
+3304334848,3304335359,SC
+3304335360,3304335615,US
+3304335616,3304336127,SC
3304336128,3304336383,US
3304336384,3304337663,SC
3304337664,3304337919,US
-3304337920,3304340735,SC
-3304340736,3304340991,US
-3304340992,3304341503,SC
+3304337920,3304339967,SC
+3304339968,3304340223,US
+3304340224,3304340735,SC
+3304340736,3304341247,US
+3304341248,3304341503,SC
3304341504,3304341759,SG
-3304341760,3304342783,SC
+3304341760,3304342015,RU
+3304342016,3304342783,SC
3304342784,3304343039,IN
-3304343040,3304343295,SC
-3304343296,3304343551,FR
+3304343040,3304343551,SC
3304343552,3304343807,DE
3304343808,3304344063,DK
3304344064,3304344319,SC
@@ -116350,7 +137296,9 @@
3304345344,3304345599,HK
3304345600,3304345855,SC
3304345856,3304346111,LU
-3304346112,3304347135,SC
+3304346112,3304346367,SC
+3304346368,3304346623,NO
+3304346624,3304347135,SC
3304347136,3304347391,ES
3304347392,3304348671,SC
3304348672,3304348927,US
@@ -116359,14 +137307,16 @@
3304349440,3304349695,PR
3304349696,3304350975,SC
3304350976,3304351487,US
-3304351488,3304352511,SC
-3304352512,3304352767,US
+3304351488,3304352255,SC
+3304352256,3304352767,US
3304352768,3304353023,SC
3304353024,3304353791,US
-3304353792,3304356607,SC
-3304356608,3304357119,US
-3304357120,3304357887,SC
-3304357888,3304358143,US
+3304353792,3304355327,SC
+3304355328,3304355583,PR
+3304355584,3304356607,SC
+3304356608,3304357375,US
+3304357376,3304357631,SC
+3304357632,3304358143,US
3304358144,3304358399,SC
3304358400,3304358655,BR
3304358656,3304358911,SC
@@ -116384,8 +137334,7 @@
3304365056,3304365567,US
3304365568,3304365823,SC
3304365824,3304366079,PR
-3304366080,3304366335,SC
-3304366336,3304366591,US
+3304366080,3304366591,US
3304366592,3304367103,SC
3304367104,3304367359,US
3304367360,3304367871,SC
@@ -116394,14 +137343,13 @@
3304368896,3304369151,US
3304369152,3304370687,SC
3304370688,3304370943,US
-3304370944,3304371199,SC
+3304370944,3304371199,CA
3304371200,3304371455,US
3304371456,3304371967,SC
3304371968,3304372223,US
3304372224,3304373247,SC
3304373248,3304373503,US
-3304373504,3304376063,SC
-3304376064,3304376319,FR
+3304373504,3304376319,SC
3304376320,3304376575,DE
3304376576,3304376831,DK
3304376832,3304377087,CZ
@@ -116442,7 +137390,7 @@
3304423424,3304425471,US
3304425472,3304426495,PR
3304426496,3304428543,US
-3304428544,3304429567,SC
+3304428544,3304429567,SK
3304429568,3304430591,US
3304430592,3304431615,SC
3304431616,3304432639,GB
@@ -116722,7 +137670,8 @@
3320310784,3320311807,SS
3320312832,3320313855,ZM
3320313856,3320314879,BI
-3320314880,3320315903,CD
+3320314880,3320315391,US
+3320315392,3320315903,CD
3320315904,3320381439,KE
3320381440,3320446975,NA
3320446976,3320451071,SC
@@ -116765,7 +137714,11 @@
3321018368,3321020415,MU
3321020416,3321022463,TZ
3321022464,3321024511,ZA
-3321024512,3321028607,KE
+3321024512,3321025023,KE
+3321025024,3321025791,ZA
+3321025792,3321026815,KE
+3321026816,3321027327,ZA
+3321027328,3321028607,KE
3321028608,3321032703,CI
3321032704,3321036799,NG
3321036800,3321069567,RW
@@ -116984,7 +137937,9 @@
3322361907,3322361914,GB
3322361915,3322362367,US
3322362368,3322362431,DE
-3322362432,3322609663,US
+3322362432,3322454015,US
+3322454016,3322454271,GB
+3322454272,3322609663,US
3322609664,3322610687,SA
3322610688,3322678535,US
3322678536,3322678551,SA
@@ -116992,19 +137947,11 @@
3322678792,3322678799,SA
3322678800,3322683391,US
3322683392,3322691583,AR
-3322691584,3322691607,US
-3322691608,3322691615,RO
-3322691616,3322691775,US
+3322691584,3322691775,US
3322691776,3322691791,CA
-3322691792,3322692103,US
-3322692104,3322692111,RO
-3322692112,3322692223,US
-3322692224,3322692351,CA
-3322692352,3322692695,US
+3322691792,3322692695,US
3322692696,3322692703,FR
-3322692704,3322692775,US
-3322692776,3322692783,RO
-3322692784,3322692887,US
+3322692704,3322692887,US
3322692888,3322692891,RO
3322692892,3322692971,US
3322692972,3322692975,RO
@@ -117017,17 +137964,15 @@
3322693308,3322693311,CA
3322693312,3322694319,US
3322694320,3322694327,CA
-3322694328,3322695423,US
-3322695424,3322695679,NL
-3322695680,3322695919,US
+3322694328,3322695919,US
3322695920,3322695935,CA
3322695936,3322696543,US
3322696544,3322696551,GB
-3322696552,3322697215,US
-3322697216,3322697223,RO
-3322697224,3322697295,US
-3322697296,3322697303,MA
-3322697304,3322697415,US
+3322696552,3322697255,US
+3322697256,3322697263,IN
+3322697264,3322697335,US
+3322697336,3322697343,BD
+3322697344,3322697415,US
3322697416,3322697423,RO
3322697424,3322697431,US
3322697432,3322697439,CA
@@ -117037,8 +137982,7 @@
3322698304,3322698367,IL
3322698368,3322698383,US
3322698384,3322698391,CA
-3322698392,3322698399,RO
-3322698400,3322699199,US
+3322698392,3322699199,US
3322699200,3322699207,PK
3322699208,3322699215,US
3322699216,3322699223,CA
@@ -117049,15 +137993,21 @@
3322700288,3322700543,NL
3322700544,3322706575,US
3322706576,3322706591,CA
-3322706592,3322706631,US
-3322706632,3322706639,GB
-3322706640,3322706651,US
+3322706592,3322706651,US
3322706652,3322706655,CA
-3322706656,3322707743,US
+3322706656,3322707167,US
+3322707168,3322707183,IN
+3322707184,3322707295,US
+3322707296,3322707327,EE
+3322707328,3322707663,US
+3322707664,3322707671,IN
+3322707672,3322707743,US
3322707744,3322707751,CA
3322707752,3322748927,US
-3322748928,3322754559,JP
-3322754560,3322765415,US
+3322748928,3322755006,JP
+3322755007,3322755007,US
+3322755008,3322757119,JP
+3322757120,3322765415,US
3322765416,3322765431,IN
3322765432,3322765543,US
3322765544,3322765559,IN
@@ -117270,9 +138220,9 @@
3322963456,3322964479,GB
3322964480,3322965247,NL
3322965248,3322965503,DE
-3322965504,3322965759,US
-3322965760,3322966015,NL
-3322966016,3322969343,US
+3322965504,3322966015,NL
+3322966016,3322966527,FR
+3322966528,3322969343,US
3322969344,3322970111,NL
3322970112,3323002879,CA
3323002880,3323013887,US
@@ -117283,8 +138233,7 @@
3323020800,3323021055,SG
3323021056,3323022591,US
3323022592,3323022847,GB
-3323022848,3323023103,US
-3323023360,3323027455,US
+3323022848,3323027455,US
3323027456,3323027711,CA
3323027712,3323031807,US
3323032576,3323032831,US
@@ -117328,7 +138277,7 @@
3323241520,3323241527,TR
3323241528,3323241567,CA
3323241568,3323241575,US
-3323241576,3323241583,CA
+3323241576,3323241583,PA
3323241584,3323241591,CN
3323241592,3323241607,CA
3323241608,3323241623,US
@@ -117371,18 +138320,17 @@
3323243104,3323243119,CA
3323243120,3323243127,US
3323243128,3323243135,CA
-3323243136,3323243143,US
-3323243144,3323243159,CA
+3323243136,3323243151,US
+3323243152,3323243159,CA
3323243160,3323243175,US
3323243176,3323243183,CA
3323243184,3323243199,US
-3323243200,3323243207,CN
-3323243208,3323243215,CA
-3323243216,3323243231,US
+3323243200,3323243223,CA
+3323243224,3323243231,US
3323243232,3323243239,CA
3323243240,3323243255,US
3323243256,3323243263,CA
-3323243264,3323243391,CN
+3323243264,3323243391,US
3323243392,3323243455,CA
3323243456,3323243487,GB
3323243488,3323243519,CA
@@ -117390,8 +138338,8 @@
3323243536,3323243551,BD
3323243552,3323243583,CA
3323243584,3323243615,US
-3323243616,3323243663,CA
-3323243664,3323243711,US
+3323243616,3323243647,CA
+3323243648,3323243711,US
3323243712,3323243743,CA
3323243744,3323243791,US
3323243792,3323243799,CA
@@ -117400,16 +138348,13 @@
3323243816,3323243823,US
3323243824,3323243903,CA
3323243904,3323243967,US
-3323243968,3323244031,CA
-3323244032,3323244095,LT
-3323244096,3323244159,US
-3323244160,3323244175,CA
-3323244176,3323244255,US
+3323243968,3323244095,CA
+3323244096,3323244255,US
3323244256,3323244287,CA
3323244288,3323244327,US
-3323244328,3323244351,CA
-3323244352,3323244415,US
-3323244416,3323244487,CA
+3323244328,3323244399,CA
+3323244400,3323244407,US
+3323244408,3323244487,CA
3323244488,3323244503,US
3323244504,3323244511,CA
3323244512,3323244527,US
@@ -117424,21 +138369,15 @@
3323244928,3323245055,CA
3323245056,3323245087,US
3323245088,3323245119,GB
-3323245120,3323245247,US
-3323245248,3323245255,CA
-3323245256,3323245311,US
-3323245312,3323245343,LT
-3323245344,3323245383,US
+3323245120,3323245383,US
3323245384,3323245391,IN
3323245392,3323245399,GB
3323245400,3323245407,TR
3323245408,3323245415,AE
3323245416,3323245423,TR
3323245424,3323245439,CA
-3323245440,3323245455,GB
-3323245456,3323245463,AZ
-3323245464,3323245479,CA
-3323245480,3323245487,AE
+3323245440,3323245471,GB
+3323245472,3323245487,CA
3323245488,3323245495,BE
3323245496,3323245535,US
3323245536,3323245543,SG
@@ -117446,11 +138385,12 @@
3323245552,3323245559,GB
3323245560,3323245567,CN
3323245568,3323245655,US
-3323245656,3323245663,CA
-3323245664,3323245823,US
-3323245824,3323245951,CA
+3323245656,3323245663,TH
+3323245664,3323245855,US
+3323245856,3323245951,CA
3323245952,3323245959,US
-3323245960,3323245983,CA
+3323245960,3323245967,TH
+3323245968,3323245983,CA
3323245984,3323246015,US
3323246016,3323246079,CA
3323246080,3323246207,US
@@ -117478,7 +138418,9 @@
3323354368,3323355647,DE
3323355648,3323356671,US
3323356672,3323356927,CA
-3323356928,3323378687,US
+3323356928,3323359231,US
+3323359232,3323359743,CA
+3323359744,3323378687,US
3323378688,3323378943,CA
3323378944,3323382783,US
3323382784,3323383295,CA
@@ -117488,9 +138430,9 @@
3323394560,3323395071,CL
3323395072,3323416415,US
3323416416,3323416479,GB
-3323416480,3323437823,US
-3323437824,3323438079,CA
-3323438080,3323440703,US
+3323416480,3323436959,US
+3323436960,3323436967,PA
+3323436968,3323440703,US
3323440704,3323440735,GB
3323440736,3323441043,US
3323441044,3323441047,GB
@@ -117500,9 +138442,7 @@
3323446272,3323446527,GB
3323446528,3323457791,US
3323457792,3323458047,GB
-3323458048,3323458815,US
-3323458816,3323459071,NL
-3323459072,3323462911,US
+3323458048,3323462911,US
3323462912,3323463167,BR
3323463168,3323471615,US
3323471616,3323471623,GB
@@ -117532,23 +138472,61 @@
3323502032,3323502039,HK
3323502040,3323502839,US
3323502840,3323502847,PK
-3323502848,3323505287,US
+3323502848,3323503007,US
+3323503008,3323503015,CA
+3323503016,3323503951,US
+3323503952,3323503967,CA
+3323503968,3323504407,US
+3323504408,3323504415,CA
+3323504416,3323504535,US
+3323504536,3323504543,CA
+3323504544,3323504671,US
+3323504672,3323504679,CA
+3323504680,3323505039,US
+3323505040,3323505047,CA
+3323505048,3323505287,US
3323505288,3323505295,BR
3323505296,3323505311,US
3323505312,3323505343,BR
-3323505344,3323505527,US
+3323505344,3323505359,US
+3323505360,3323505367,CA
+3323505368,3323505455,US
+3323505456,3323505463,CA
+3323505464,3323505527,US
3323505528,3323505535,PK
-3323505536,3323506559,US
+3323505536,3323505615,US
+3323505616,3323505623,CA
+3323505624,3323505743,US
+3323505744,3323505751,CA
+3323505752,3323506559,US
3323506560,3323506567,PK
3323506568,3323506647,US
3323506648,3323506655,GB
-3323506656,3323507055,US
+3323506656,3323506727,US
+3323506728,3323506735,CA
+3323506736,3323507055,US
3323507056,3323507063,GB
-3323507064,3323507823,US
+3323507064,3323507743,US
+3323507744,3323507751,CA
+3323507752,3323507823,US
3323507824,3323507831,CA
-3323507832,3323508639,US
+3323507832,3323508295,US
+3323508296,3323508303,CA
+3323508304,3323508543,US
+3323508544,3323508575,CA
+3323508576,3323508639,US
3323508640,3323508647,GB
-3323508648,3323659263,US
+3323508648,3323508999,US
+3323509000,3323509007,CA
+3323509008,3323509447,US
+3323509448,3323509455,CA
+3323509456,3323509583,US
+3323509584,3323509591,CA
+3323509592,3323509663,US
+3323509664,3323509671,CA
+3323509672,3323510287,US
+3323510288,3323510295,CA
+3323510296,3323659263,US
3323659264,3323660543,NZ
3323660544,3323661311,US
3323661312,3323662335,CA
@@ -117562,13 +138540,14 @@
3323678060,3323678063,CA
3323678064,3323678079,GB
3323678080,3323678095,CA
-3323678096,3323678111,US
+3323678096,3323678103,CO
+3323678104,3323678111,GB
3323678112,3323678127,CA
3323678128,3323678143,GB
3323678144,3323678147,CA
3323678148,3323678151,US
3323678152,3323678159,CA
-3323678160,3323678167,GB
+3323678160,3323678167,VE
3323678168,3323678171,CA
3323678172,3323678175,US
3323678176,3323678195,CA
@@ -117579,15 +138558,12 @@
3323678524,3323678527,US
3323678528,3323678583,CA
3323678584,3323678587,US
-3323678588,3323678591,ID
-3323678592,3323678631,CA
-3323678632,3323678635,PL
-3323678636,3323678687,CA
+3323678588,3323678687,CA
3323678688,3323678691,PA
3323678692,3323678695,CA
3323678696,3323678699,PT
-3323678700,3323679871,CA
-3323679872,3323679903,IN
+3323678700,3323679887,CA
+3323679888,3323679903,IN
3323679904,3323679963,CA
3323679964,3323679999,US
3323680000,3323680255,CA
@@ -117605,8 +138581,8 @@
3323681440,3323681455,AE
3323681456,3323681479,CA
3323681480,3323681487,GB
-3323681488,3323681519,CA
-3323681520,3323681527,SI
+3323681488,3323681523,CA
+3323681524,3323681527,BR
3323681528,3323681535,CA
3323681536,3323681567,IN
3323681568,3323681583,US
@@ -117614,20 +138590,22 @@
3323681592,3323681599,US
3323681600,3323681631,CA
3323681632,3323681663,NO
-3323681664,3323681727,CA
-3323681728,3323681735,MY
-3323681736,3323681747,CA
+3323681664,3323681695,IN
+3323681696,3323681711,CA
+3323681712,3323681727,FR
+3323681728,3323681735,CA
+3323681736,3323681739,ES
+3323681740,3323681747,CA
3323681748,3323681751,VE
-3323681752,3323681759,BG
-3323681760,3323682559,CA
+3323681752,3323682559,CA
3323682560,3323682591,US
-3323682592,3323682655,CA
+3323682592,3323682647,CA
+3323682648,3323682651,BR
+3323682652,3323682655,CA
3323682656,3323682687,IE
3323682688,3323682751,CA
3323682752,3323682767,US
-3323682768,3323682771,CA
-3323682772,3323682775,RO
-3323682776,3323682787,CA
+3323682768,3323682787,CA
3323682788,3323682791,AF
3323682792,3323682831,CA
3323682832,3323682839,IN
@@ -117651,9 +138629,10 @@
3323683216,3323683223,VN
3323683224,3323683295,CA
3323683296,3323683299,CL
-3323683300,3323683359,CA
-3323683360,3323683367,MY
-3323683368,3323683399,CA
+3323683300,3323683303,BR
+3323683304,3323683359,CA
+3323683360,3323683371,IN
+3323683372,3323683399,CA
3323683400,3323683403,BR
3323683404,3323683427,CA
3323683428,3323683431,IT
@@ -117663,21 +138642,21 @@
3323683456,3323683471,CA
3323683472,3323683479,MX
3323683480,3323683487,BR
-3323683488,3323683523,CA
+3323683488,3323683503,US
+3323683504,3323683515,CA
+3323683516,3323683519,MX
+3323683520,3323683523,IN
3323683524,3323683527,DE
3323683528,3323683535,CA
-3323683536,3323683551,AU
-3323683552,3323683583,CA
-3323683584,3323683591,PA
-3323683592,3323683679,CA
+3323683536,3323683551,US
+3323683552,3323683679,CA
3323683680,3323683683,FR
3323683684,3323683687,BR
3323683688,3323683703,CA
3323683704,3323683707,CO
3323683708,3323683711,US
3323683712,3323683839,GP
-3323683840,3323683847,CA
-3323683848,3323683851,IN
+3323683840,3323683851,CA
3323683852,3323683855,GB
3323683856,3323683871,CA
3323683872,3323683903,IL
@@ -117692,14 +138671,12 @@
3323684228,3323684239,CA
3323684240,3323684243,GB
3323684244,3323684271,CA
-3323684272,3323684279,FR
+3323684272,3323684279,LK
3323684280,3323684287,ES
3323684288,3323684291,IN
3323684292,3323684387,CA
3323684388,3323684391,MX
-3323684392,3323684395,CA
-3323684396,3323684399,IN
-3323684400,3323684431,CA
+3323684392,3323684431,CA
3323684432,3323684435,US
3323684436,3323684443,CA
3323684444,3323684447,IN
@@ -117714,7 +138691,8 @@
3323684540,3323684559,US
3323684560,3323684615,CA
3323684616,3323684619,US
-3323684620,3323684735,CA
+3323684620,3323684703,CA
+3323684704,3323684735,BR
3323684736,3323684739,IN
3323684740,3323684783,CA
3323684784,3323684799,CO
@@ -117723,17 +138701,14 @@
3323684836,3323684839,MX
3323684840,3323684843,CA
3323684844,3323684847,US
-3323684848,3323684855,CA
-3323684856,3323684863,US
-3323684864,3323684883,CA
+3323684848,3323684883,CA
3323684884,3323684887,US
3323684888,3323684891,CA
3323684892,3323684895,AR
-3323684896,3323684951,CA
-3323684952,3323684959,US
+3323684896,3323684911,HR
+3323684912,3323684959,CA
3323684960,3323684975,BZ
-3323684976,3323684991,US
-3323684992,3323685023,CA
+3323684976,3323685023,CA
3323685024,3323685039,RO
3323685040,3323685167,CA
3323685168,3323685183,MX
@@ -117753,10 +138728,7 @@
3323685328,3323685343,BR
3323685344,3323685347,BZ
3323685348,3323685351,IN
-3323685352,3323685359,US
-3323685360,3323685391,CA
-3323685392,3323685399,MX
-3323685400,3323685407,CA
+3323685352,3323685407,CA
3323685408,3323685411,MX
3323685412,3323685415,CA
3323685416,3323685419,AR
@@ -117775,21 +138747,22 @@
3323685872,3323685887,US
3323685888,3323685899,CA
3323685900,3323685903,US
-3323685904,3323685907,CA
-3323685908,3323685911,CY
+3323685904,3323685911,CA
3323685912,3323685919,US
3323685920,3323685923,CA
3323685924,3323685927,BR
3323685928,3323685931,CA
-3323685932,3323685935,PE
+3323685932,3323685935,MT
3323685936,3323685943,CA
3323685944,3323685951,NL
3323685952,3323686047,CA
3323686048,3323686051,US
3323686052,3323686055,AR
-3323686056,3323686095,CA
-3323686096,3323686111,US
-3323686112,3323686135,CA
+3323686056,3323686071,CA
+3323686072,3323686079,BR
+3323686080,3323686111,CA
+3323686112,3323686127,US
+3323686128,3323686135,CA
3323686136,3323686143,MX
3323686144,3323686159,NO
3323686160,3323686163,US
@@ -117798,10 +138771,11 @@
3323686196,3323686199,VI
3323686200,3323686255,CA
3323686256,3323686263,DE
-3323686264,3323686271,US
+3323686264,3323686271,GB
3323686272,3323686287,CA
3323686288,3323686303,US
-3323686304,3323686367,CA
+3323686304,3323686335,CA
+3323686336,3323686367,FR
3323686368,3323686371,IN
3323686372,3323686383,CA
3323686384,3323686391,US
@@ -117809,41 +138783,41 @@
3323686440,3323686447,BR
3323686448,3323686591,CA
3323686592,3323686595,FR
-3323686596,3323686599,CA
+3323686596,3323686599,DK
3323686600,3323686607,BR
3323686608,3323686623,CA
3323686624,3323686631,NL
3323686632,3323686639,BR
3323686640,3323686655,US
3323686656,3323686659,PE
-3323686660,3323686663,US
-3323686664,3323686667,CA
+3323686660,3323686667,CA
3323686668,3323686671,FR
3323686672,3323686683,CA
3323686684,3323686687,IN
3323686688,3323686731,CA
3323686732,3323686735,US
-3323686736,3323686783,CA
-3323686784,3323686791,BR
-3323686792,3323686807,CA
+3323686736,3323686807,CA
3323686808,3323686811,CR
-3323686812,3323686815,PE
+3323686812,3323686815,BR
3323686816,3323686823,CA
3323686824,3323686827,US
3323686828,3323686847,CA
3323686848,3323686851,US
-3323686852,3323686879,CA
-3323686880,3323686887,US
+3323686852,3323686883,CA
+3323686884,3323686887,US
3323686888,3323686895,MX
3323686896,3323686911,CA
3323686912,3323686943,BR
-3323686944,3323686975,IN
-3323686976,3323687031,CA
+3323686944,3323686979,IN
+3323686980,3323687015,CA
+3323687016,3323687019,PL
+3323687020,3323687031,CA
3323687032,3323687039,US
3323687040,3323687073,CA
3323687074,3323687074,US
3323687075,3323687079,CA
-3323687080,3323687103,US
+3323687080,3323687087,US
+3323687088,3323687103,CA
3323687104,3323687111,BR
3323687112,3323687115,PT
3323687116,3323687167,CA
@@ -117863,31 +138837,32 @@
3323687568,3323687571,PL
3323687572,3323687575,CA
3323687576,3323687583,ES
-3323687584,3323687591,CA
-3323687592,3323687595,VE
-3323687596,3323687711,CA
-3323687712,3323687715,US
+3323687584,3323687711,CA
+3323687712,3323687715,PL
3323687716,3323687719,CA
3323687720,3323687727,US
-3323687728,3323687731,VE
+3323687728,3323687731,CA
3323687732,3323687735,AE
3323687736,3323687743,CA
3323687744,3323687747,ES
-3323687748,3323687815,CA
+3323687748,3323687775,CA
+3323687776,3323687783,MT
+3323687784,3323687791,CA
+3323687792,3323687799,AU
+3323687800,3323687815,CA
3323687816,3323687819,US
3323687820,3323687855,CA
3323687856,3323687863,US
-3323687864,3323687871,CA
+3323687864,3323687871,MX
3323687872,3323687887,PK
3323687888,3323687891,BR
-3323687892,3323687895,CA
-3323687896,3323687903,IN
+3323687892,3323687903,CA
3323687904,3323687911,BR
3323687912,3323687915,CA
3323687916,3323687919,US
3323687920,3323687923,CA
3323687924,3323687927,VN
-3323687928,3323687935,BR
+3323687928,3323687935,CA
3323687936,3323687999,US
3323688000,3323688051,CA
3323688052,3323688055,MX
@@ -117905,11 +138880,15 @@
3323688288,3323688303,PA
3323688304,3323688319,CA
3323688320,3323688335,US
-3323688336,3323688391,CA
+3323688336,3323688343,CA
+3323688344,3323688351,AE
+3323688352,3323688391,CA
3323688392,3323688395,ID
3323688396,3323688415,CA
3323688416,3323688447,DE
-3323688448,3323688463,CA
+3323688448,3323688455,CA
+3323688456,3323688459,BR
+3323688460,3323688463,CA
3323688464,3323688467,BR
3323688468,3323688471,CA
3323688472,3323688479,US
@@ -117918,32 +138897,33 @@
3323688536,3323688543,CA
3323688544,3323688551,VE
3323688552,3323688563,CA
-3323688564,3323688567,CL
+3323688564,3323688567,BD
3323688568,3323688571,VE
3323688572,3323688603,CA
3323688604,3323688607,FR
3323688608,3323688655,CA
3323688656,3323688659,IN
-3323688660,3323688663,CA
-3323688664,3323688671,CH
-3323688672,3323688675,CA
+3323688660,3323688675,CA
3323688676,3323688679,US
3323688680,3323688839,CA
3323688840,3323688843,US
3323688844,3323688847,CA
3323688848,3323688855,PT
3323688856,3323688863,CL
-3323688864,3323689055,CA
+3323688864,3323688911,CA
+3323688912,3323688927,HN
+3323688928,3323688959,CA
+3323688960,3323688975,US
+3323688976,3323689055,CA
3323689056,3323689059,FR
3323689060,3323689071,CA
3323689072,3323689079,ID
-3323689080,3323689167,CA
-3323689168,3323689183,US
+3323689080,3323689175,CA
+3323689176,3323689183,US
3323689184,3323689191,PE
3323689192,3323689247,CA
3323689248,3323689251,IN
-3323689252,3323689255,US
-3323689256,3323689279,CA
+3323689252,3323689279,CA
3323689280,3323689295,US
3323689296,3323689347,CA
3323689348,3323689351,VE
@@ -117951,21 +138931,25 @@
3323689360,3323689367,US
3323689368,3323689383,CA
3323689384,3323689391,BR
-3323689392,3323689399,CA
-3323689400,3323689403,MX
+3323689392,3323689403,CA
3323689404,3323689407,BR
3323689408,3323689427,CA
3323689428,3323689431,EC
3323689432,3323689435,CA
-3323689436,3323689439,MY
-3323689440,3323689491,CA
+3323689436,3323689439,BR
+3323689440,3323689459,CA
+3323689460,3323689463,US
+3323689464,3323689491,CA
3323689492,3323689495,BR
3323689496,3323689519,CA
3323689520,3323689527,ES
-3323689528,3323689559,CA
+3323689528,3323689535,CA
+3323689536,3323689543,CO
+3323689544,3323689559,CA
3323689560,3323689583,US
3323689584,3323689595,CA
-3323689596,3323689663,US
+3323689596,3323689599,BR
+3323689600,3323689663,US
3323689664,3323689711,CA
3323689712,3323689715,BR
3323689716,3323689719,US
@@ -117980,22 +138964,27 @@
3323689928,3323689935,US
3323689936,3323689983,CA
3323689984,3323690015,RS
-3323690016,3323690095,CA
+3323690016,3323690047,CA
+3323690048,3323690063,BR
+3323690064,3323690095,CA
3323690096,3323690111,PK
-3323690112,3323690143,CO
-3323690144,3323690199,CA
+3323690112,3323690127,US
+3323690128,3323690131,FR
+3323690132,3323690155,CA
+3323690156,3323690159,BE
+3323690160,3323690199,CA
3323690200,3323690207,US
3323690208,3323690223,CA
3323690224,3323690235,US
3323690236,3323690351,CA
3323690352,3323690359,AE
3323690360,3323690363,US
-3323690364,3323690463,CA
+3323690364,3323690403,CA
+3323690404,3323690407,DM
+3323690408,3323690463,CA
3323690464,3323690495,PE
-3323690496,3323741439,US
-3323741440,3323741695,GB
-3323741696,3323744255,US
-3323744256,3323748351,GB
+3323690496,3323740159,US
+3323740160,3323748351,GB
3323748352,3323805695,US
3323805696,3323805951,GB
3323805952,3324051455,US
@@ -118006,7 +138995,9 @@
3324196748,3324196751,NG
3324196752,3324255231,US
3324255232,3324256255,VI
-3324256256,3324260095,SA
+3324256256,3324259327,SA
+3324259328,3324259583,US
+3324259584,3324260095,SA
3324260096,3324277759,US
3324277760,3324278783,CA
3324278784,3324279071,US
@@ -118091,11 +139082,11 @@
3324601088,3324601343,GB
3324601344,3324604671,US
3324604672,3324604927,GB
-3324604928,3324613695,US
-3324613696,3324613727,LU
-3324613728,3324613759,US
-3324613760,3324613855,LU
-3324613856,3324624895,US
+3324604928,3324614143,US
+3324614144,3324614399,LU
+3324614400,3324614655,US
+3324614656,3324615679,LU
+3324615680,3324624895,US
3324633088,3324634111,PE
3324634112,3324635647,AR
3324635648,3324635903,HK
@@ -118103,7 +139094,9 @@
3324636160,3324637183,NZ
3324637184,3324638207,DE
3324638208,3324638719,IN
-3324638720,3324642303,US
+3324638720,3324638975,US
+3324638976,3324641279,DE
+3324641280,3324642303,US
3324642304,3324642559,CA
3324642560,3324645887,US
3324645888,3324646143,CA
@@ -118578,8 +139571,7 @@
3324824576,3324824831,DE
3324824832,3324937087,US
3324937088,3324937095,BD
-3324937096,3324937103,KH
-3324937104,3324937999,US
+3324937096,3324937999,US
3324938000,3324938007,PK
3324938008,3324938159,US
3324938160,3324938167,GB
@@ -118589,23 +139581,57 @@
3324939456,3324939519,IL
3324939520,3324939735,US
3324939736,3324939739,CA
-3324939740,3324942855,US
-3324942856,3324942863,RO
-3324942864,3324943047,US
-3324943048,3324943055,CA
-3324943056,3324943215,US
+3324939740,3324943215,US
3324943216,3324943231,GB
-3324943232,3324953087,US
+3324943232,3324945407,US
+3324945408,3324945663,CA
+3324945664,3324946687,US
+3324946688,3324946815,EE
+3324946816,3324947007,US
+3324947008,3324947071,EE
+3324947072,3324947263,US
+3324947264,3324947327,EE
+3324947328,3324947455,US
+3324947456,3324947583,EE
+3324947584,3324947775,US
+3324947776,3324947839,EE
+3324947840,3324947967,US
+3324947968,3324948095,EE
+3324948096,3324948223,US
+3324948224,3324948351,EE
+3324948352,3324948479,US
+3324948480,3324948607,EE
+3324948608,3324948735,US
+3324948736,3324948799,EE
+3324948800,3324948991,US
+3324948992,3324949119,EE
+3324949120,3324950527,US
+3324950528,3324950655,EE
+3324950656,3324950783,US
+3324950784,3324950911,EE
+3324950912,3324953087,US
3324953088,3324953151,EE
3324953152,3324954367,US
3324954368,3324954431,EE
3324954432,3324954495,US
3324954496,3324954559,EE
-3324954560,3324956223,US
+3324954560,3324955391,US
+3324955392,3324955455,EE
+3324955456,3324955711,US
+3324955712,3324955775,EE
+3324955776,3324955903,US
+3324955904,3324955967,EE
+3324955968,3324956031,BD
+3324956032,3324956159,US
+3324956160,3324956223,EE
3324956224,3324956255,IN
3324956256,3324957759,US
3324957760,3324957823,EE
-3324957824,3324963579,US
+3324957824,3324957951,US
+3324957952,3324958015,EE
+3324958016,3324958655,US
+3324958656,3324958719,EE
+3324958720,3324963579,US
3324963580,3324963583,RO
3324963584,3324963839,US
3324963840,3324963903,NL
@@ -118613,11 +139639,19 @@
3324964032,3324964095,EE
3324964096,3324964159,US
3324964160,3324964223,EE
-3324964224,3324964939,US
+3324964224,3324964543,US
+3324964544,3324964607,EE
+3324964608,3324964939,US
3324964940,3324964943,GB
-3324964944,3324964963,US
+3324964944,3324964951,US
+3324964952,3324964959,PH
+3324964960,3324964963,US
3324964964,3324964967,GB
-3324964968,3324980223,US
+3324964968,3324967871,US
+3324967872,3324967935,EE
+3324967936,3324968447,US
+3324968448,3324968511,EE
+3324968512,3324980223,US
3324980224,3324981247,CA
3324981248,3325034495,US
3325034496,3325035519,NZ
@@ -118626,7 +139660,9 @@
3325100288,3325100543,US
3325101056,3325117311,US
3325117312,3325117319,AF
-3325117320,3325119887,US
+3325117320,3325119743,US
+3325119744,3325119759,CA
+3325119760,3325119887,US
3325119888,3325119903,MX
3325119904,3325120076,US
3325120077,3325120081,MX
@@ -118650,18 +139686,640 @@
3325145088,3325169663,US
3325169664,3325171711,AR
3325171712,3325190143,US
-3325190144,3325191687,CA
-3325191688,3325191695,US
-3325191696,3325198367,CA
-3325198368,3325198375,MY
-3325198376,3325198415,CA
+3325190144,3325190151,MX
+3325190152,3325190159,GB
+3325190160,3325190175,CA
+3325190176,3325190183,TR
+3325190184,3325190191,IN
+3325190192,3325190207,CA
+3325190208,3325190215,RS
+3325190216,3325190247,CA
+3325190248,3325190255,IT
+3325190256,3325190263,CA
+3325190264,3325190271,BR
+3325190272,3325190279,SE
+3325190280,3325190287,MX
+3325190288,3325190295,NO
+3325190296,3325190303,CA
+3325190304,3325190311,DE
+3325190312,3325190327,CA
+3325190328,3325190335,US
+3325190336,3325190343,CA
+3325190344,3325190351,AU
+3325190352,3325190359,US
+3325190360,3325190383,CA
+3325190384,3325190391,AR
+3325190392,3325190399,CA
+3325190400,3325190407,SG
+3325190408,3325190415,AU
+3325190416,3325190431,CA
+3325190432,3325190439,GB
+3325190440,3325190447,KR
+3325190448,3325190455,RU
+3325190456,3325190463,US
+3325190464,3325190471,CL
+3325190472,3325190487,CA
+3325190488,3325190495,BR
+3325190496,3325190503,MX
+3325190504,3325190511,CA
+3325190512,3325190519,CO
+3325190520,3325190527,CI
+3325190528,3325190567,CA
+3325190568,3325190575,FR
+3325190576,3325190607,CA
+3325190608,3325190615,BH
+3325190616,3325190623,FR
+3325190624,3325190631,BR
+3325190632,3325190639,IN
+3325190640,3325190655,CA
+3325190656,3325190663,BR
+3325190664,3325190671,CA
+3325190672,3325190679,LB
+3325190680,3325190703,CA
+3325190704,3325190711,BR
+3325190712,3325190743,CA
+3325190744,3325190751,NZ
+3325190752,3325190767,CA
+3325190768,3325190775,MX
+3325190776,3325190791,CA
+3325190792,3325190799,BR
+3325190800,3325190807,US
+3325190808,3325190831,CA
+3325190832,3325190839,IE
+3325190840,3325190847,NL
+3325190848,3325190855,US
+3325190856,3325190863,AR
+3325190864,3325190871,TR
+3325190872,3325190879,CA
+3325190880,3325190887,YE
+3325190888,3325190903,CA
+3325190904,3325190911,BR
+3325190912,3325190919,CA
+3325190920,3325190927,US
+3325190928,3325190967,CA
+3325190968,3325190975,AR
+3325190976,3325191007,CA
+3325191008,3325191015,US
+3325191016,3325191023,CA
+3325191024,3325191031,UA
+3325191032,3325191047,CA
+3325191048,3325191055,KR
+3325191056,3325191079,CA
+3325191080,3325191087,US
+3325191088,3325191095,BR
+3325191096,3325191111,CA
+3325191112,3325191119,US
+3325191120,3325191127,AE
+3325191128,3325191143,CA
+3325191144,3325191151,US
+3325191152,3325191159,CN
+3325191160,3325191191,CA
+3325191192,3325191199,CO
+3325191200,3325191207,CL
+3325191208,3325191215,CA
+3325191216,3325191223,US
+3325191224,3325191239,CA
+3325191240,3325191247,AR
+3325191248,3325191263,IT
+3325191264,3325191295,CA
+3325191296,3325191303,IN
+3325191304,3325191311,PH
+3325191312,3325191319,CA
+3325191320,3325191327,GH
+3325191328,3325191335,CA
+3325191336,3325191343,PK
+3325191344,3325191351,AR
+3325191352,3325191359,DZ
+3325191360,3325191375,CA
+3325191376,3325191383,GR
+3325191384,3325191407,CA
+3325191408,3325191415,US
+3325191416,3325191423,ID
+3325191424,3325191431,AM
+3325191432,3325191447,CA
+3325191448,3325191455,US
+3325191456,3325191463,BR
+3325191464,3325191479,CA
+3325191480,3325191487,SA
+3325191488,3325191495,CA
+3325191496,3325191503,IN
+3325191504,3325191511,AR
+3325191512,3325191519,CA
+3325191520,3325191527,CO
+3325191528,3325191543,CA
+3325191544,3325191559,US
+3325191560,3325191567,BR
+3325191568,3325191583,CA
+3325191584,3325191591,BR
+3325191592,3325191599,CA
+3325191600,3325191615,US
+3325191616,3325191623,AE
+3325191624,3325191639,CA
+3325191640,3325191647,AR
+3325191648,3325191655,IE
+3325191656,3325191687,CA
+3325191688,3325191703,US
+3325191704,3325191711,GH
+3325191712,3325191719,EC
+3325191720,3325191735,CA
+3325191736,3325191743,BR
+3325191744,3325191751,QA
+3325191752,3325191767,CA
+3325191768,3325191775,US
+3325191776,3325191783,CA
+3325191784,3325191799,US
+3325191800,3325191807,PK
+3325191808,3325191815,MO
+3325191816,3325191823,BR
+3325191824,3325191831,CA
+3325191832,3325191839,US
+3325191840,3325191847,IT
+3325191848,3325191871,CA
+3325191872,3325191879,IL
+3325191880,3325191887,BD
+3325191888,3325191903,CA
+3325191904,3325191911,IN
+3325191912,3325191919,CA
+3325191920,3325191927,US
+3325191928,3325191935,VG
+3325191936,3325191943,CA
+3325191944,3325191951,BD
+3325191952,3325191959,IN
+3325191960,3325191967,CA
+3325191968,3325191975,VE
+3325191976,3325192047,CA
+3325192048,3325192055,FI
+3325192056,3325192079,CA
+3325192080,3325192087,CL
+3325192088,3325192111,CA
+3325192112,3325192119,CO
+3325192120,3325192135,CA
+3325192136,3325192143,IL
+3325192144,3325192151,MX
+3325192152,3325192191,CA
+3325192192,3325192199,CN
+3325192200,3325192207,FR
+3325192208,3325192215,BR
+3325192216,3325192223,HU
+3325192224,3325192231,BR
+3325192232,3325192239,YE
+3325192240,3325192247,CA
+3325192248,3325192255,CH
+3325192256,3325192263,CA
+3325192264,3325192271,NZ
+3325192272,3325192287,CA
+3325192288,3325192295,US
+3325192296,3325192303,CU
+3325192304,3325192311,YE
+3325192312,3325192335,CA
+3325192336,3325192343,BR
+3325192344,3325192351,IL
+3325192352,3325192375,CA
+3325192376,3325192383,US
+3325192384,3325192391,CR
+3325192392,3325192407,US
+3325192408,3325192415,CA
+3325192416,3325192423,FR
+3325192424,3325192431,UY
+3325192432,3325192439,US
+3325192440,3325192463,CA
+3325192464,3325192471,KR
+3325192472,3325192479,US
+3325192480,3325192487,CA
+3325192488,3325192495,AU
+3325192496,3325192519,CA
+3325192520,3325192527,BR
+3325192528,3325192535,CA
+3325192536,3325192543,IN
+3325192544,3325192551,CA
+3325192552,3325192559,CN
+3325192560,3325192567,GB
+3325192568,3325192591,CA
+3325192592,3325192599,US
+3325192600,3325192615,CA
+3325192616,3325192623,MX
+3325192624,3325192639,CA
+3325192640,3325192647,HK
+3325192648,3325192655,IN
+3325192656,3325192663,CA
+3325192664,3325192671,BR
+3325192672,3325192679,CA
+3325192680,3325192687,BY
+3325192688,3325192695,US
+3325192696,3325192703,MU
+3325192704,3325192719,CA
+3325192720,3325192727,US
+3325192728,3325192735,CA
+3325192736,3325192743,DZ
+3325192744,3325192751,MN
+3325192752,3325192759,CA
+3325192760,3325192767,BR
+3325192768,3325192775,US
+3325192776,3325192783,CA
+3325192784,3325192791,PE
+3325192792,3325192799,CA
+3325192800,3325192807,VE
+3325192808,3325192823,CA
+3325192824,3325192831,LU
+3325192832,3325192839,US
+3325192840,3325192847,CA
+3325192848,3325192855,GB
+3325192856,3325192863,CA
+3325192864,3325192871,VE
+3325192872,3325192879,NL
+3325192880,3325192911,CA
+3325192912,3325192919,AE
+3325192920,3325192927,IL
+3325192928,3325192935,CA
+3325192936,3325192951,DE
+3325192952,3325192959,IN
+3325192960,3325192983,CA
+3325192984,3325192991,ES
+3325192992,3325192999,CA
+3325193000,3325193007,IN
+3325193008,3325193023,CA
+3325193024,3325193031,US
+3325193032,3325193039,CA
+3325193040,3325193047,ES
+3325193048,3325193063,US
+3325193064,3325193087,CA
+3325193088,3325193095,MX
+3325193096,3325193103,CO
+3325193104,3325193167,CA
+3325193168,3325193175,MX
+3325193176,3325193207,CA
+3325193208,3325193215,MX
+3325193216,3325193231,US
+3325193232,3325193239,CN
+3325193240,3325193247,ES
+3325193248,3325193263,CA
+3325193264,3325193271,CN
+3325193272,3325193287,US
+3325193288,3325193295,BR
+3325193296,3325193311,CA
+3325193312,3325193319,EC
+3325193320,3325193327,DE
+3325193328,3325193335,CA
+3325193336,3325193343,PH
+3325193344,3325193351,CA
+3325193352,3325193359,DZ
+3325193360,3325193375,CA
+3325193376,3325193383,US
+3325193384,3325193391,RU
+3325193392,3325193399,IN
+3325193400,3325193407,CH
+3325193408,3325193415,BR
+3325193416,3325193423,MX
+3325193424,3325193431,CA
+3325193432,3325193439,NG
+3325193440,3325193447,BR
+3325193448,3325193455,IN
+3325193456,3325193463,CA
+3325193464,3325193471,GB
+3325193472,3325193479,CA
+3325193480,3325193495,BR
+3325193496,3325193503,CA
+3325193504,3325193511,BR
+3325193512,3325193519,MY
+3325193520,3325193583,CA
+3325193584,3325193591,US
+3325193592,3325193639,CA
+3325193640,3325193647,US
+3325193648,3325193655,MX
+3325193656,3325193663,CA
+3325193664,3325193671,SA
+3325193672,3325193687,CA
+3325193688,3325193695,GB
+3325193696,3325193703,CA
+3325193704,3325193711,CN
+3325193712,3325193727,CA
+3325193728,3325193735,BY
+3325193736,3325193751,US
+3325193752,3325193759,CA
+3325193760,3325193767,BD
+3325193768,3325193775,IL
+3325193776,3325193783,CO
+3325193784,3325193791,US
+3325193792,3325193799,LB
+3325193800,3325193807,CA
+3325193808,3325193815,BZ
+3325193816,3325193823,CA
+3325193824,3325193831,VG
+3325193832,3325193839,CA
+3325193840,3325193847,AE
+3325193848,3325193855,US
+3325193856,3325193903,CA
+3325193904,3325193911,AU
+3325193912,3325193959,CA
+3325193960,3325193967,DO
+3325193968,3325193991,CA
+3325193992,3325193999,NO
+3325194000,3325194015,CA
+3325194016,3325194023,IL
+3325194024,3325194031,RS
+3325194032,3325194039,US
+3325194040,3325194047,NZ
+3325194048,3325194055,US
+3325194056,3325194071,CA
+3325194072,3325194079,US
+3325194080,3325194087,UM
+3325194088,3325194151,CA
+3325194152,3325194159,DE
+3325194160,3325194175,US
+3325194176,3325194191,CA
+3325194192,3325194199,IN
+3325194200,3325194207,US
+3325194208,3325194215,CA
+3325194216,3325194223,SG
+3325194224,3325194231,PK
+3325194232,3325194239,CN
+3325194240,3325194247,US
+3325194248,3325194255,CA
+3325194256,3325194263,JP
+3325194264,3325194279,CA
+3325194280,3325194287,AR
+3325194288,3325194303,CA
+3325194304,3325194319,US
+3325194320,3325194327,CA
+3325194328,3325194335,BR
+3325194336,3325194343,US
+3325194344,3325194359,CA
+3325194360,3325194367,MY
+3325194368,3325194375,BR
+3325194376,3325194391,CA
+3325194392,3325194399,AE
+3325194400,3325194439,CA
+3325194440,3325194447,RU
+3325194448,3325194471,CA
+3325194472,3325194479,BR
+3325194480,3325194495,CA
+3325194496,3325194503,DE
+3325194504,3325194511,CA
+3325194512,3325194519,EG
+3325194520,3325194527,IN
+3325194528,3325194535,IR
+3325194536,3325194543,GB
+3325194544,3325194551,CA
+3325194552,3325194559,VE
+3325194560,3325194567,BB
+3325194568,3325194575,MX
+3325194576,3325194583,CO
+3325194584,3325194599,US
+3325194600,3325194623,CA
+3325194624,3325194631,US
+3325194632,3325194639,KW
+3325194640,3325194647,BR
+3325194648,3325194655,CA
+3325194656,3325194663,MX
+3325194664,3325194671,PE
+3325194672,3325194679,US
+3325194680,3325194687,IL
+3325194688,3325194719,CA
+3325194720,3325194727,DE
+3325194728,3325194743,CA
+3325194744,3325194751,BR
+3325194752,3325194759,US
+3325194760,3325194783,CA
+3325194784,3325194791,US
+3325194792,3325194799,CO
+3325194800,3325194807,CA
+3325194808,3325194823,US
+3325194824,3325194831,CA
+3325194832,3325194839,US
+3325194840,3325194847,CA
+3325194848,3325194863,US
+3325194864,3325194871,AE
+3325194872,3325194879,LV
+3325194880,3325194919,CA
+3325194920,3325194927,TR
+3325194928,3325194959,CA
+3325194960,3325194967,RU
+3325194968,3325194975,IN
+3325194976,3325194983,CA
+3325194984,3325194991,UA
+3325194992,3325195039,CA
+3325195040,3325195047,IN
+3325195048,3325195055,CA
+3325195056,3325195063,CH
+3325195064,3325195071,US
+3325195072,3325195127,CA
+3325195128,3325195135,BR
+3325195136,3325195143,CH
+3325195144,3325195151,CA
+3325195152,3325195159,LB
+3325195160,3325195167,IN
+3325195168,3325195175,AR
+3325195176,3325195183,BR
+3325195184,3325195191,CA
+3325195192,3325195199,AE
+3325195200,3325195207,TH
+3325195208,3325195215,BR
+3325195216,3325195231,CA
+3325195232,3325195239,HR
+3325195240,3325195247,CO
+3325195248,3325195255,BR
+3325195256,3325195263,CA
+3325195264,3325195271,US
+3325195272,3325195279,CA
+3325195280,3325195287,GT
+3325195288,3325195303,CA
+3325195304,3325195311,GB
+3325195312,3325195319,IL
+3325195320,3325195343,CA
+3325195344,3325195351,US
+3325195352,3325195359,CA
+3325195360,3325195367,ES
+3325195368,3325195375,CA
+3325195376,3325195383,CO
+3325195384,3325195391,VE
+3325195392,3325195407,CA
+3325195408,3325195415,US
+3325195416,3325195423,UY
+3325195424,3325195431,GI
+3325195432,3325195439,IN
+3325195440,3325195463,CA
+3325195464,3325195479,US
+3325195480,3325195487,SG
+3325195488,3325195495,JO
+3325195496,3325195503,CA
+3325195504,3325195511,LU
+3325195512,3325195519,IN
+3325195520,3325195527,CA
+3325195528,3325195535,BR
+3325195536,3325195543,CO
+3325195544,3325195559,BR
+3325195560,3325195575,US
+3325195576,3325195583,MX
+3325195584,3325195591,US
+3325195592,3325195599,CA
+3325195600,3325195607,IN
+3325195608,3325195623,CA
+3325195624,3325195631,EC
+3325195632,3325195639,CA
+3325195640,3325195647,BR
+3325195648,3325195687,CA
+3325195688,3325195695,SA
+3325195696,3325195703,AE
+3325195704,3325195711,IT
+3325195712,3325195719,CA
+3325195720,3325195727,RU
+3325195728,3325195751,CA
+3325195752,3325195759,ES
+3325195760,3325195767,PL
+3325195768,3325195775,US
+3325195776,3325195783,CA
+3325195784,3325195791,US
+3325195792,3325195807,CA
+3325195808,3325195815,US
+3325195816,3325195823,CN
+3325195824,3325195839,CA
+3325195840,3325195855,US
+3325195856,3325195863,UY
+3325195864,3325195871,CA
+3325195872,3325195879,PE
+3325195880,3325195887,BR
+3325195888,3325195895,YE
+3325195896,3325195903,US
+3325195904,3325195911,CY
+3325195912,3325195919,GB
+3325195920,3325195927,AR
+3325195928,3325195943,CA
+3325195944,3325195951,GB
+3325195952,3325195967,CA
+3325195968,3325195975,JO
+3325195976,3325195991,CA
+3325195992,3325195999,BR
+3325196000,3325196023,CA
+3325196024,3325196031,RU
+3325196032,3325196047,CA
+3325196048,3325196055,BR
+3325196056,3325196135,CA
+3325196136,3325196143,IN
+3325196144,3325196159,IL
+3325196160,3325196167,PK
+3325196168,3325196175,CA
+3325196176,3325196183,GB
+3325196184,3325196191,ID
+3325196192,3325196223,CA
+3325196224,3325196231,IN
+3325196232,3325196287,CA
+3325196288,3325196295,US
+3325196296,3325196303,CA
+3325196304,3325196311,IN
+3325196312,3325196319,CA
+3325196320,3325196327,VN
+3325196328,3325196343,CA
+3325196344,3325196351,SA
+3325196352,3325196359,US
+3325196360,3325196367,CA
+3325196368,3325196375,GB
+3325196376,3325196407,CA
+3325196408,3325196415,DE
+3325196416,3325196423,CA
+3325196424,3325196431,BR
+3325196432,3325196439,CA
+3325196440,3325196447,TR
+3325196448,3325196455,PH
+3325196456,3325196463,AR
+3325196464,3325196495,CA
+3325196496,3325196503,CY
+3325196504,3325196511,US
+3325196512,3325196527,CA
+3325196528,3325196535,US
+3325196536,3325196543,IN
+3325196544,3325196551,CA
+3325196552,3325196559,US
+3325196560,3325196575,AE
+3325196576,3325196583,CY
+3325196584,3325196607,CA
+3325196608,3325196615,US
+3325196616,3325196623,CA
+3325196624,3325196639,US
+3325196640,3325196647,IN
+3325196648,3325196655,MA
+3325196656,3325196663,NG
+3325196664,3325196671,BR
+3325196672,3325196679,DE
+3325196680,3325196687,TR
+3325196688,3325196695,US
+3325196696,3325196711,CA
+3325196712,3325196719,ID
+3325196720,3325196727,DE
+3325196728,3325196735,CA
+3325196736,3325196743,IL
+3325196744,3325196751,US
+3325196752,3325196759,UY
+3325196760,3325196775,CA
+3325196776,3325196783,BR
+3325196784,3325196791,AR
+3325196792,3325196799,US
+3325196800,3325196807,CA
+3325196808,3325196815,BG
+3325196816,3325196823,AG
+3325196824,3325196839,CA
+3325196840,3325196847,IN
+3325196848,3325196863,CA
+3325196864,3325196871,CW
+3325196872,3325196879,BR
+3325196880,3325196887,US
+3325196888,3325196895,RU
+3325196896,3325196903,LV
+3325196904,3325196911,BR
+3325196912,3325196919,US
+3325196920,3325196927,CA
+3325196928,3325196935,CO
+3325196936,3325196943,GB
+3325196944,3325196951,CA
+3325196952,3325196959,SE
+3325196960,3325196967,EC
+3325196968,3325196975,SG
+3325196976,3325196983,CO
+3325196984,3325196991,IR
+3325196992,3325196999,CA
+3325197000,3325197007,BR
+3325197008,3325197023,CA
+3325197024,3325197031,VN
+3325197032,3325197039,CA
+3325197040,3325197047,PK
+3325197048,3325197055,CO
+3325197056,3325197063,UA
+3325197064,3325197071,DE
+3325197072,3325197087,CA
+3325197088,3325197095,US
+3325197096,3325197119,CA
+3325197120,3325197127,IN
+3325197128,3325197135,CA
+3325197136,3325197143,BR
+3325197144,3325197151,CA
+3325197152,3325197159,EC
+3325197160,3325197167,BR
+3325197168,3325197175,CA
+3325197176,3325197183,IN
+3325197184,3325197191,SG
+3325197192,3325197215,CA
+3325197216,3325197223,GB
+3325197224,3325197231,CI
+3325197232,3325197239,IN
+3325197240,3325197247,US
+3325197248,3325197255,BR
+3325197256,3325197263,US
+3325197264,3325197271,CA
+3325197272,3325197279,GB
+3325197280,3325197287,SA
+3325197288,3325197295,US
+3325197296,3325197311,CA
+3325197312,3325197319,GR
+3325197320,3325198343,CA
+3325198344,3325198347,BR
+3325198348,3325198415,CA
3325198416,3325198419,VE
3325198420,3325198423,US
-3325198424,3325198559,CA
+3325198424,3325198535,CA
+3325198536,3325198543,US
+3325198544,3325198559,CA
3325198560,3325198575,PA
3325198576,3325198579,CA
-3325198580,3325198583,BR
-3325198584,3325198587,CA
+3325198580,3325198587,BR
3325198588,3325198591,US
3325198592,3325198619,CA
3325198620,3325198623,AR
@@ -118671,7 +140329,8 @@
3325198644,3325198647,BD
3325198648,3325198655,CA
3325198656,3325198659,PE
-3325198660,3325198695,CA
+3325198660,3325198663,IN
+3325198664,3325198695,CA
3325198696,3325198703,IL
3325198704,3325198719,US
3325198720,3325198727,CA
@@ -118691,57 +140350,47 @@
3325198864,3325198895,CA
3325198896,3325198911,BE
3325198912,3325198943,NP
-3325198944,3325198947,AU
-3325198948,3325198967,CA
-3325198968,3325198975,US
+3325198944,3325198963,CA
+3325198964,3325198975,US
3325198976,3325199039,CA
3325199040,3325199043,US
3325199044,3325199055,CA
3325199056,3325199063,US
3325199064,3325199071,CA
3325199072,3325199079,US
-3325199080,3325199143,CA
+3325199080,3325199083,CA
+3325199084,3325199087,BR
+3325199088,3325199143,CA
3325199144,3325199147,US
3325199148,3325199151,GT
-3325199152,3325199255,CA
-3325199256,3325199259,BR
-3325199260,3325199291,CA
+3325199152,3325199291,CA
3325199292,3325199295,US
3325199296,3325199303,BR
-3325199304,3325199315,CA
-3325199316,3325199319,AU
-3325199320,3325199343,CA
-3325199344,3325199351,CH
+3325199304,3325199351,CA
3325199352,3325199359,US
3325199360,3325199391,CA
3325199392,3325199399,US
-3325199400,3325199491,CA
+3325199400,3325199415,CA
+3325199416,3325199423,US
+3325199424,3325199491,CA
3325199492,3325199495,BR
3325199496,3325199559,CA
3325199560,3325199567,US
3325199568,3325199615,CA
3325199616,3325199619,BR
-3325199620,3325199623,CA
-3325199624,3325199627,BE
-3325199628,3325199775,CA
-3325199776,3325199779,BR
+3325199620,3325199779,CA
3325199780,3325199783,US
3325199784,3325199807,CA
3325199808,3325199839,US
3325199840,3325199855,BR
3325199856,3325199903,CA
3325199904,3325199911,IN
-3325199912,3325199923,CA
-3325199924,3325199927,US
-3325199928,3325199931,CA
-3325199932,3325199935,CN
-3325199936,3325199947,CA
+3325199912,3325199947,CA
3325199948,3325199951,BR
3325199952,3325199959,PT
3325199960,3325199967,CA
3325199968,3325199983,BZ
-3325199984,3325199991,GB
-3325199992,3325200063,CA
+3325199984,3325200063,CA
3325200064,3325200071,US
3325200072,3325200079,CA
3325200080,3325200083,US
@@ -118758,8 +140407,7 @@
3325200280,3325200287,NL
3325200288,3325200291,CA
3325200292,3325200295,FR
-3325200296,3325200303,IN
-3325200304,3325200311,CA
+3325200296,3325200311,CA
3325200312,3325200315,IN
3325200316,3325200323,CA
3325200324,3325200327,IL
@@ -118768,10 +140416,10 @@
3325200452,3325200455,CA
3325200456,3325200459,US
3325200460,3325200463,CA
-3325200464,3325200471,US
-3325200472,3325200527,CA
-3325200528,3325200543,MX
-3325200544,3325200567,CA
+3325200464,3325200467,US
+3325200468,3325200527,CA
+3325200528,3325200531,PA
+3325200532,3325200567,CA
3325200568,3325200571,US
3325200572,3325200575,UA
3325200576,3325200583,CA
@@ -118790,27 +140438,23 @@
3325200768,3325200783,US
3325200784,3325200807,CA
3325200808,3325200811,TR
-3325200812,3325200815,IE
-3325200816,3325200827,CA
+3325200812,3325200827,CA
3325200828,3325200831,CO
3325200832,3325200863,BA
3325200864,3325200879,ES
3325200880,3325200891,CA
3325200892,3325200895,US
-3325200896,3325200939,CA
-3325200940,3325200943,US
-3325200944,3325200947,CA
-3325200948,3325200951,BZ
-3325200952,3325201011,CA
+3325200896,3325201011,CA
3325201012,3325201015,US
3325201016,3325201039,CA
3325201040,3325201047,BR
3325201048,3325201055,US
-3325201056,3325201071,CA
+3325201056,3325201059,CA
+3325201060,3325201063,ZA
+3325201064,3325201071,CA
3325201072,3325201075,US
3325201076,3325201087,CA
-3325201088,3325201103,ID
-3325201104,3325201111,US
+3325201088,3325201111,US
3325201112,3325201115,CA
3325201116,3325201119,IN
3325201120,3325201187,CA
@@ -118829,15 +140473,17 @@
3325201560,3325201563,IN
3325201564,3325201591,CA
3325201592,3325201599,PT
-3325201600,3325201603,CA
-3325201604,3325201615,US
+3325201600,3325201607,CA
+3325201608,3325201615,US
3325201616,3325201627,CA
3325201628,3325201631,US
3325201632,3325201647,CA
3325201648,3325201655,US
3325201656,3325201663,ES
3325201664,3325201671,CO
-3325201672,3325201739,CA
+3325201672,3325201679,CA
+3325201680,3325201687,JO
+3325201688,3325201739,CA
3325201740,3325201759,US
3325201760,3325201763,SA
3325201764,3325201795,CA
@@ -118848,18 +140494,26 @@
3325201848,3325201851,BR
3325201852,3325201855,ES
3325201856,3325201919,BR
-3325201920,3325202015,CA
+3325201920,3325201935,CA
+3325201936,3325201951,FR
+3325201952,3325202015,CA
3325202016,3325202031,ES
3325202032,3325202039,CA
3325202040,3325202079,US
3325202080,3325202115,CA
3325202116,3325202119,US
-3325202120,3325202271,CA
+3325202120,3325202199,CA
+3325202200,3325202203,US
+3325202204,3325202211,CA
+3325202212,3325202215,IN
+3325202216,3325202219,CA
+3325202220,3325202223,GB
+3325202224,3325202239,CA
+3325202240,3325202255,US
+3325202256,3325202271,CA
3325202272,3325202275,GB
3325202276,3325202279,US
-3325202280,3325202327,CA
-3325202328,3325202331,AU
-3325202332,3325202367,CA
+3325202280,3325202367,CA
3325202368,3325202371,PH
3325202372,3325202395,CA
3325202396,3325202399,IN
@@ -118872,8 +140526,10 @@
3325206536,3325206551,CA
3325206552,3325206555,US
3325206556,3325206559,CZ
-3325206560,3325206591,IN
-3325206592,3325206623,CA
+3325206560,3325206575,RO
+3325206576,3325206591,CA
+3325206592,3325206599,BR
+3325206600,3325206623,CA
3325206624,3325206624,RO
3325206625,3325206626,CA
3325206627,3325206627,RO
@@ -118886,28 +140542,31 @@
3325206688,3325206719,US
3325206720,3325206799,CA
3325206800,3325206815,US
-3325206816,3325206831,CA
+3325206816,3325206819,CA
+3325206820,3325206823,BR
+3325206824,3325206831,CA
3325206832,3325206839,US
-3325206840,3325206847,BG
+3325206840,3325206847,FR
3325206848,3325206863,MX
3325206864,3325206879,CA
3325206880,3325206911,BA
3325206912,3325206915,BR
-3325206916,3325206919,US
-3325206920,3325206935,CA
-3325206936,3325206943,HR
-3325206944,3325207023,CA
+3325206916,3325207023,CA
3325207024,3325207039,US
-3325207040,3325207043,CA
-3325207044,3325207051,BR
+3325207040,3325207047,CA
+3325207048,3325207051,BR
3325207052,3325207055,US
3325207056,3325207059,GB
3325207060,3325207071,CA
3325207072,3325207103,MX
-3325207104,3325207131,CA
+3325207104,3325207119,CA
+3325207120,3325207123,FR
+3325207124,3325207131,CA
3325207132,3325207135,US
3325207136,3325207167,BD
-3325207168,3325207283,CA
+3325207168,3325207263,CA
+3325207264,3325207271,IN
+3325207272,3325207283,CA
3325207284,3325207287,US
3325207288,3325207379,CA
3325207380,3325207383,US
@@ -118916,11 +140575,15 @@
3325207424,3325207439,UA
3325207440,3325207503,CA
3325207504,3325207519,US
-3325207520,3325207591,CA
+3325207520,3325207575,CA
+3325207576,3325207583,BR
+3325207584,3325207591,CA
3325207592,3325207599,EC
3325207600,3325207699,CA
3325207700,3325207703,LU
-3325207704,3325207775,CA
+3325207704,3325207735,CA
+3325207736,3325207739,CL
+3325207740,3325207775,CA
3325207776,3325207783,US
3325207784,3325207791,CA
3325207792,3325207795,GB
@@ -118936,37 +140599,40 @@
3325208188,3325208191,IN
3325208192,3325208255,CA
3325208256,3325208327,US
-3325208328,3325208363,CA
+3325208328,3325208343,CA
+3325208344,3325208347,GB
+3325208348,3325208359,CA
+3325208360,3325208363,FR
3325208364,3325208367,PA
3325208368,3325208375,US
3325208376,3325208383,BR
3325208384,3325208391,US
3325208392,3325208403,CA
3325208404,3325208415,US
-3325208416,3325208487,CA
+3325208416,3325208479,CA
+3325208480,3325208483,MX
+3325208484,3325208487,CA
3325208488,3325208491,AE
3325208492,3325208495,US
3325208496,3325208499,IN
3325208500,3325208543,CA
3325208544,3325208547,US
-3325208548,3325208643,CA
-3325208644,3325208647,IN
-3325208648,3325208747,CA
+3325208548,3325208639,CA
+3325208640,3325208643,EG
+3325208644,3325208647,CA
+3325208648,3325208651,HR
+3325208652,3325208747,CA
3325208748,3325208751,CZ
3325208752,3325208767,CA
3325208768,3325208783,US
-3325208784,3325208791,CA
-3325208792,3325208799,US
-3325208800,3325208827,CA
+3325208784,3325208827,CA
3325208828,3325208831,EG
3325208832,3325208835,CO
-3325208836,3325208939,CA
-3325208940,3325208943,AU
+3325208836,3325208943,CA
3325208944,3325208947,BR
3325208948,3325208999,CA
-3325209000,3325209003,AU
-3325209004,3325209007,BR
-3325209008,3325209023,CA
+3325209000,3325209003,US
+3325209004,3325209023,CA
3325209024,3325209055,US
3325209056,3325209083,CA
3325209084,3325209087,US
@@ -118974,7 +140640,8 @@
3325209092,3325209095,AR
3325209096,3325209099,CA
3325209100,3325209103,DM
-3325209104,3325209151,CA
+3325209104,3325209135,CA
+3325209136,3325209151,RO
3325209152,3325209155,US
3325209156,3325209163,BZ
3325209164,3325209167,GB
@@ -118982,12 +140649,13 @@
3325209184,3325209215,AR
3325209216,3325209231,CA
3325209232,3325209247,DE
-3325209248,3325209295,CA
+3325209248,3325209259,CA
+3325209260,3325209263,US
+3325209264,3325209295,CA
3325209296,3325209311,US
3325209312,3325209327,CA
3325209328,3325209343,US
-3325209344,3325209359,RO
-3325209360,3325209379,CA
+3325209344,3325209379,CA
3325209380,3325209383,CH
3325209384,3325209387,CA
3325209388,3325209407,US
@@ -119022,7 +140690,8 @@
3325209880,3325209887,BD
3325209888,3325209915,CA
3325209916,3325209919,FR
-3325209920,3325209939,CA
+3325209920,3325209935,CA
+3325209936,3325209939,FR
3325209940,3325209943,US
3325209944,3325209951,CA
3325209952,3325209955,ID
@@ -119032,7 +140701,7 @@
3325209968,3325209983,US
3325209984,3325209987,DE
3325209988,3325209991,CA
-3325209992,3325209995,US
+3325209992,3325209995,MX
3325209996,3325210011,CA
3325210012,3325210015,US
3325210016,3325210031,CA
@@ -119042,9 +140711,14 @@
3325210048,3325210063,CA
3325210064,3325210067,BR
3325210068,3325210071,IE
-3325210072,3325210351,CA
+3325210072,3325210311,CA
+3325210312,3325210315,BR
+3325210316,3325210319,DM
+3325210320,3325210351,CA
3325210352,3325210367,HK
-3325210368,3325210399,CA
+3325210368,3325210383,CA
+3325210384,3325210387,IN
+3325210388,3325210399,CA
3325210400,3325210431,SE
3325210432,3325210435,IN
3325210436,3325210439,CA
@@ -119052,9 +140726,11 @@
3325210448,3325210451,FR
3325210452,3325210455,ES
3325210456,3325210511,CA
-3325210512,3325210519,GB
-3325210520,3325210631,CA
-3325210632,3325210635,US
+3325210512,3325210519,MX
+3325210520,3325210527,FR
+3325210528,3325210575,CA
+3325210576,3325210579,BR
+3325210580,3325210635,CA
3325210636,3325210639,FR
3325210640,3325210643,BR
3325210644,3325210647,US
@@ -119081,29 +140757,20 @@
3325210852,3325210863,CA
3325210864,3325210879,US
3325210880,3325210951,CA
-3325210952,3325210955,BR
+3325210952,3325210955,IN
3325210956,3325210959,VN
3325210960,3325210975,IN
3325210976,3325211071,CA
3325211072,3325211087,BD
3325211088,3325211091,US
3325211092,3325211095,CA
-3325211096,3325211103,US
+3325211096,3325211103,BE
3325211104,3325211115,CA
3325211116,3325211119,BR
3325211120,3325211127,US
-3325211128,3325211151,CA
-3325211152,3325211155,IN
-3325211156,3325211175,CA
-3325211176,3325211183,US
-3325211184,3325211235,CA
+3325211128,3325211235,CA
3325211236,3325211239,FR
-3325211240,3325211279,CA
-3325211280,3325211295,CN
-3325211296,3325211299,US
-3325211300,3325211411,CA
-3325211412,3325211415,IN
-3325211416,3325211419,CA
+3325211240,3325211419,CA
3325211420,3325211423,US
3325211424,3325211647,CA
3325211648,3325211807,US
@@ -119115,7 +140782,8 @@
3325211872,3325211883,CA
3325211884,3325211887,US
3325211888,3325211895,RO
-3325211896,3325211967,CA
+3325211896,3325211935,CA
+3325211936,3325211967,US
3325211968,3325211999,ES
3325212000,3325212007,US
3325212008,3325212063,CA
@@ -119127,8 +140795,7 @@
3325212120,3325212127,US
3325212128,3325212143,CA
3325212144,3325212151,US
-3325212152,3325212155,MX
-3325212156,3325212167,CA
+3325212152,3325212167,CA
3325212168,3325212171,BZ
3325212172,3325212175,IN
3325212176,3325212191,CA
@@ -119137,16 +140804,14 @@
3325212216,3325212223,HR
3325212224,3325212295,CA
3325212296,3325212303,IN
-3325212304,3325212407,CA
-3325212408,3325212411,PE
-3325212412,3325212495,CA
-3325212496,3325212503,FR
-3325212504,3325212511,HU
+3325212304,3325212495,CA
+3325212496,3325212511,FR
3325212512,3325212515,CY
-3325212516,3325212559,CA
-3325212560,3325212575,BR
-3325212576,3325212579,PE
-3325212580,3325212583,CA
+3325212516,3325212519,CA
+3325212520,3325212527,PK
+3325212528,3325212551,CA
+3325212552,3325212575,BR
+3325212576,3325212583,CA
3325212584,3325212587,HN
3325212588,3325212591,BR
3325212592,3325212611,CA
@@ -119156,37 +140821,33 @@
3325212656,3325212719,CA
3325212720,3325212727,ID
3325212728,3325212731,RO
-3325212732,3325212771,CA
-3325212772,3325212775,US
-3325212776,3325212927,CA
+3325212732,3325212927,CA
3325212928,3325212943,LK
-3325212944,3325213023,CA
+3325212944,3325212963,CA
+3325212964,3325212967,GB
+3325212968,3325213023,CA
3325213024,3325213055,SE
3325213056,3325213071,US
3325213072,3325213087,NZ
3325213088,3325213103,CA
3325213104,3325213111,US
-3325213112,3325213115,CA
-3325213116,3325213119,US
-3325213120,3325213227,CA
-3325213228,3325213231,US
-3325213232,3325213423,CA
+3325213112,3325213191,CA
+3325213192,3325213199,DE
+3325213200,3325213423,CA
3325213424,3325213431,US
3325213432,3325213435,CA
3325213436,3325213439,US
3325213440,3325213447,CA
3325213448,3325213451,BD
-3325213452,3325213471,CA
-3325213472,3325213479,IN
-3325213480,3325213483,CA
+3325213452,3325213483,CA
3325213484,3325213487,VE
3325213488,3325213535,CA
3325213536,3325213543,TR
3325213544,3325213551,CA
3325213552,3325213555,ES
-3325213556,3325213567,CA
-3325213568,3325213571,IE
-3325213572,3325213575,CA
+3325213556,3325213559,BD
+3325213560,3325213567,IN
+3325213568,3325213575,CA
3325213576,3325213591,IN
3325213592,3325213607,CA
3325213608,3325213615,US
@@ -119232,7 +140893,9 @@
3325214624,3325214639,DE
3325214640,3325214667,CA
3325214668,3325214671,US
-3325214672,3325214703,CA
+3325214672,3325214687,CA
+3325214688,3325214695,US
+3325214696,3325214703,CA
3325214704,3325214719,AU
3325214720,3325214735,CA
3325214736,3325214739,US
@@ -119246,15 +140909,19 @@
3325215000,3325215007,BZ
3325215008,3325215055,CA
3325215056,3325215059,IT
-3325215060,3325215131,CA
+3325215060,3325215119,CA
+3325215120,3325215127,IN
+3325215128,3325215131,CA
3325215132,3325215135,BZ
3325215136,3325215175,CA
3325215176,3325215183,VI
3325215184,3325215203,CA
3325215204,3325215207,GB
3325215208,3325215211,FR
-3325215212,3325215263,CA
-3325215264,3325215279,BE
+3325215212,3325215223,CA
+3325215224,3325215231,US
+3325215232,3325215263,CA
+3325215264,3325215279,RU
3325215280,3325215299,US
3325215300,3325215303,IN
3325215304,3325215319,CA
@@ -119265,11 +140932,12 @@
3325215456,3325215459,US
3325215460,3325215467,CA
3325215468,3325215471,BR
-3325215472,3325215475,ES
+3325215472,3325215475,CA
3325215476,3325215479,PE
3325215480,3325215495,CA
3325215496,3325215503,BR
-3325215504,3325215611,CA
+3325215504,3325215607,CA
+3325215608,3325215611,IN
3325215612,3325215615,BR
3325215616,3325215667,CA
3325215668,3325215675,BR
@@ -119279,7 +140947,7 @@
3325215732,3325215735,BR
3325215736,3325215743,CA
3325215744,3325215751,IN
-3325215752,3325215759,CA
+3325215752,3325215759,NL
3325215760,3325215767,BR
3325215768,3325215807,CA
3325215808,3325215839,US
@@ -119289,9 +140957,8 @@
3325215904,3325215911,DE
3325215912,3325215915,IN
3325215916,3325215919,GB
-3325215920,3325215927,US
-3325215928,3325215931,CA
-3325215932,3325215935,BR
+3325215920,3325215931,CA
+3325215932,3325215935,US
3325215936,3325215951,CA
3325215952,3325215967,BE
3325215968,3325215983,CA
@@ -119302,7 +140969,8 @@
3325216024,3325216027,MX
3325216028,3325216031,CA
3325216032,3325216035,IN
-3325216036,3325216043,CA
+3325216036,3325216039,CA
+3325216040,3325216043,AR
3325216044,3325216047,EG
3325216048,3325216063,CA
3325216064,3325216067,ES
@@ -119313,11 +140981,14 @@
3325216116,3325216119,US
3325216120,3325216127,CA
3325216128,3325216159,MX
-3325216160,3325216247,CA
+3325216160,3325216207,CA
+3325216208,3325216215,JO
+3325216216,3325216247,CA
3325216248,3325216251,BR
3325216252,3325216319,CA
3325216320,3325216327,US
-3325216328,3325216359,CA
+3325216328,3325216355,CA
+3325216356,3325216359,US
3325216360,3325216363,GB
3325216364,3325216367,CA
3325216368,3325216383,US
@@ -119327,21 +140998,23 @@
3325216448,3325216463,FR
3325216464,3325216527,CA
3325216528,3325216531,US
-3325216532,3325216707,CA
-3325216708,3325216711,US
-3325216712,3325216855,CA
+3325216532,3325216811,CA
+3325216812,3325216815,DM
+3325216816,3325216831,BR
+3325216832,3325216855,CA
3325216856,3325216859,VG
3325216860,3325216895,CA
3325216896,3325216927,PA
-3325216928,3325216975,CA
+3325216928,3325216963,CA
+3325216964,3325216967,US
+3325216968,3325216975,CA
3325216976,3325216979,FR
3325216980,3325217167,CA
3325217168,3325217183,PE
3325217184,3325217199,CA
3325217200,3325217215,US
3325217216,3325217223,VE
-3325217224,3325217227,AU
-3325217228,3325217231,CA
+3325217224,3325217231,CA
3325217232,3325217235,US
3325217236,3325217243,CA
3325217244,3325217247,US
@@ -119350,10 +141023,10 @@
3325217308,3325217311,HK
3325217312,3325217403,CA
3325217404,3325217407,FR
-3325217408,3325217471,CA
-3325217472,3325217503,IE
-3325217504,3325217527,CA
-3325217528,3325217531,HK
+3325217408,3325217503,CA
+3325217504,3325217519,US
+3325217520,3325217527,CA
+3325217528,3325217531,BR
3325217532,3325217651,CA
3325217652,3325217655,AE
3325217656,3325217663,CA
@@ -119361,8 +141034,7 @@
3325217668,3325217695,CA
3325217696,3325217699,US
3325217700,3325217703,BR
-3325217704,3325217707,US
-3325217708,3325217711,CA
+3325217704,3325217711,CA
3325217712,3325217715,US
3325217716,3325217823,CA
3325217824,3325217831,BR
@@ -119373,12 +141045,13 @@
3325217888,3325217939,CA
3325217940,3325217943,US
3325217944,3325217951,CO
-3325217952,3325217971,CA
-3325217972,3325217975,US
-3325217976,3325217983,CA
+3325217952,3325217967,CA
+3325217968,3325217975,US
+3325217976,3325217979,MX
+3325217980,3325217983,CA
3325217984,3325217987,US
3325217988,3325218015,CA
-3325218016,3325218031,US
+3325218016,3325218031,IN
3325218032,3325218039,CA
3325218040,3325218047,US
3325218048,3325218131,CA
@@ -119404,15 +141077,16 @@
3325218532,3325218535,US
3325218536,3325218559,CA
3325218560,3325218567,US
-3325218568,3325218583,CA
-3325218584,3325218591,IN
-3325218592,3325218615,CA
+3325218568,3325218591,CA
+3325218592,3325218595,BR
+3325218596,3325218615,CA
3325218616,3325218623,BR
3325218624,3325218663,CA
3325218664,3325218667,US
3325218668,3325218671,CA
3325218672,3325218687,IT
-3325218688,3325218703,CA
+3325218688,3325218695,CA
+3325218696,3325218703,EC
3325218704,3325218719,US
3325218720,3325218783,CA
3325218784,3325218815,AU
@@ -119421,7 +141095,9 @@
3325219084,3325219087,BZ
3325219088,3325219091,CA
3325219092,3325219095,VE
-3325219096,3325219175,CA
+3325219096,3325219159,CA
+3325219160,3325219167,RO
+3325219168,3325219175,CA
3325219176,3325219183,US
3325219184,3325219407,CA
3325219408,3325219411,FR
@@ -119434,12 +141110,11 @@
3325219464,3325219467,CA
3325219468,3325219471,DE
3325219472,3325219475,US
-3325219476,3325219479,CA
-3325219480,3325219483,IN
-3325219484,3325219503,CA
+3325219476,3325219483,CA
+3325219484,3325219487,US
+3325219488,3325219503,CA
3325219504,3325219511,VG
-3325219512,3325219531,CA
-3325219532,3325219535,BR
+3325219512,3325219535,CA
3325219536,3325219551,PK
3325219552,3325219583,CA
3325219584,3325219599,US
@@ -119456,46 +141131,54 @@
3325219792,3325219799,UY
3325219800,3325219807,CA
3325219808,3325219811,US
-3325219812,3325219839,CA
+3325219812,3325219815,PL
+3325219816,3325219839,CA
3325219840,3325219871,TN
3325219872,3325219875,BR
-3325219876,3325219903,CA
+3325219876,3325219887,CA
+3325219888,3325219903,MX
3325219904,3325219931,US
3325219932,3325219935,CA
3325219936,3325219951,US
3325219952,3325219983,CA
3325219984,3325219999,US
-3325220000,3325220011,CA
-3325220012,3325220015,AU
-3325220016,3325220027,CA
+3325220000,3325220027,CA
3325220028,3325220031,US
-3325220032,3325220039,CA
+3325220032,3325220039,BR
3325220040,3325220043,US
3325220044,3325220047,BR
-3325220048,3325220051,AU
-3325220052,3325220055,CA
+3325220048,3325220055,CA
3325220056,3325220063,GB
-3325220064,3325220107,CA
+3325220064,3325220079,CA
+3325220080,3325220095,PA
+3325220096,3325220107,CA
3325220108,3325220111,PE
3325220112,3325220295,CA
3325220296,3325220303,FR
-3325220304,3325220407,CA
-3325220408,3325220411,US
+3325220304,3325220383,CA
+3325220384,3325220399,NL
+3325220400,3325220411,CA
3325220412,3325220415,BZ
-3325220416,3325220511,CA
+3325220416,3325220463,CA
+3325220464,3325220479,US
+3325220480,3325220511,CA
3325220512,3325220519,BR
3325220520,3325220543,CA
3325220544,3325220559,US
3325220560,3325220579,CA
3325220580,3325220583,BZ
-3325220584,3325220587,US
-3325220588,3325220607,CA
+3325220584,3325220591,CA
+3325220592,3325220595,BE
+3325220596,3325220607,CA
3325220608,3325220623,US
3325220624,3325220635,CA
3325220636,3325220636,US
-3325220637,3325220651,CA
+3325220637,3325220647,CA
+3325220648,3325220651,MX
3325220652,3325220655,BR
-3325220656,3325220703,CA
+3325220656,3325220667,CA
+3325220668,3325220671,BR
+3325220672,3325220703,CA
3325220704,3325220719,US
3325220720,3325220831,CA
3325220832,3325220879,US
@@ -119511,7 +141194,8 @@
3325221120,3325221183,CA
3325221184,3325221199,US
3325221200,3325221215,BR
-3325221216,3325221263,CA
+3325221216,3325221247,US
+3325221248,3325221263,CA
3325221264,3325221279,TW
3325221280,3325221439,CA
3325221440,3325221443,PE
@@ -119533,14 +141217,12 @@
3325221628,3325221727,CA
3325221728,3325221731,US
3325221732,3325221739,CA
-3325221740,3325221743,BR
-3325221744,3325221751,CA
+3325221740,3325221751,BR
3325221752,3325221755,IN
-3325221756,3325221759,PE
-3325221760,3325221779,CA
+3325221756,3325221779,CA
3325221780,3325221783,US
-3325221784,3325221787,BR
-3325221788,3325221791,VN
+3325221784,3325221787,IE
+3325221788,3325221791,US
3325221792,3325221795,CA
3325221796,3325221799,US
3325221800,3325221807,BR
@@ -119557,29 +141239,32 @@
3325222016,3325222143,US
3325222144,3325222179,CA
3325222180,3325222183,US
-3325222184,3325222203,CA
+3325222184,3325222187,BD
+3325222188,3325222203,CA
3325222204,3325222207,BY
-3325222208,3325222351,CA
-3325222352,3325222359,US
-3325222360,3325222391,CA
-3325222392,3325222395,TR
-3325222396,3325222399,FR
+3325222208,3325222391,CA
+3325222392,3325222395,BD
+3325222396,3325222399,DM
3325222400,3325222463,US
3325222464,3325222567,CA
3325222568,3325222571,US
3325222572,3325222575,LK
3325222576,3325222607,CA
-3325222608,3325222623,US
+3325222608,3325222611,US
+3325222612,3325222615,CA
+3325222616,3325222623,US
3325222624,3325222627,DE
3325222628,3325222643,CA
3325222644,3325222647,VN
-3325222648,3325222651,LB
+3325222648,3325222651,IL
3325222652,3325222655,US
3325222656,3325222667,CA
3325222668,3325222671,MX
3325222672,3325222687,CA
3325222688,3325222703,GB
-3325222704,3325222719,CA
+3325222704,3325222707,CA
+3325222708,3325222711,BG
+3325222712,3325222719,CA
3325222720,3325222735,AU
3325222736,3325222751,US
3325222752,3325222783,MX
@@ -119589,13 +141274,15 @@
3325222852,3325222855,BZ
3325222856,3325222947,CA
3325222948,3325222951,AE
-3325222952,3325222963,CA
+3325222952,3325222959,BR
+3325222960,3325222963,CA
3325222964,3325222967,VE
3325222968,3325222983,CA
3325222984,3325222987,TW
3325222988,3325223027,CA
3325223028,3325223031,US
-3325223032,3325223039,CA
+3325223032,3325223035,CA
+3325223036,3325223039,US
3325223040,3325223043,AR
3325223044,3325223047,US
3325223048,3325223059,CA
@@ -119609,19 +141296,20 @@
3325223104,3325223119,US
3325223120,3325223231,CA
3325223232,3325223239,BR
-3325223240,3325223279,CA
+3325223240,3325223247,CA
+3325223248,3325223263,BR
+3325223264,3325223279,CA
3325223280,3325223283,FR
-3325223284,3325223303,CA
-3325223304,3325223311,RO
-3325223312,3325223335,CA
+3325223284,3325223323,CA
+3325223324,3325223327,DM
+3325223328,3325223335,CA
3325223336,3325223343,US
-3325223344,3325223347,CA
-3325223348,3325223351,IN
+3325223344,3325223351,CA
3325223352,3325223355,MX
3325223356,3325223375,CA
3325223376,3325223391,US
3325223392,3325223399,CA
-3325223400,3325223407,US
+3325223400,3325223407,IE
3325223408,3325223427,CA
3325223428,3325223431,US
3325223432,3325223435,CA
@@ -119638,7 +141326,8 @@
3325223648,3325223663,KN
3325223664,3325223723,CA
3325223724,3325223727,US
-3325223728,3325223795,CA
+3325223728,3325223731,AR
+3325223732,3325223795,CA
3325223796,3325223799,US
3325223800,3325223807,CA
3325223808,3325223811,HK
@@ -119664,11 +141353,7 @@
3325224072,3325224079,HR
3325224080,3325224087,CA
3325224088,3325224091,BZ
-3325224092,3325224383,CA
-3325224384,3325224391,GB
-3325224392,3325224455,CA
-3325224456,3325224463,FR
-3325224464,3325224479,CA
+3325224092,3325224479,CA
3325224480,3325224511,US
3325224512,3325224551,CA
3325224552,3325224559,BR
@@ -119679,12 +141364,11 @@
3325224676,3325224683,CA
3325224684,3325224687,VE
3325224688,3325224695,US
-3325224696,3325224699,CA
+3325224696,3325224699,DM
3325224700,3325224703,BR
3325224704,3325224719,US
3325224720,3325224735,CA
-3325224736,3325224751,LK
-3325224752,3325224767,CA
+3325224736,3325224767,LK
3325224768,3325224783,FR
3325224784,3325224795,CA
3325224796,3325224799,HR
@@ -119700,7 +141384,7 @@
3325224876,3325224879,CA
3325224880,3325224895,US
3325224896,3325224919,CA
-3325224920,3325224927,DJ
+3325224920,3325224927,US
3325224928,3325224943,CA
3325224944,3325224947,DE
3325224948,3325224951,CA
@@ -119715,20 +141399,21 @@
3325225208,3325225247,CA
3325225248,3325225263,TR
3325225264,3325225287,CA
-3325225288,3325225291,GB
+3325225288,3325225291,PK
3325225292,3325225295,CA
3325225296,3325225299,US
3325225300,3325225315,CA
3325225316,3325225319,ES
3325225320,3325225367,CA
-3325225368,3325225371,US
+3325225368,3325225371,IN
3325225372,3325225407,CA
3325225408,3325225411,IN
3325225412,3325225415,CA
-3325225416,3325225419,AU
+3325225416,3325225419,AR
3325225420,3325225439,CA
3325225440,3325225455,HK
-3325225456,3325225463,US
+3325225456,3325225459,BD
+3325225460,3325225463,US
3325225464,3325225467,BR
3325225468,3325225483,CA
3325225484,3325225487,CL
@@ -119738,8 +141423,8 @@
3325225632,3325225647,US
3325225648,3325225671,CA
3325225672,3325225675,US
-3325225676,3325225727,CA
-3325225728,3325225735,RO
+3325225676,3325225731,CA
+3325225732,3325225735,GB
3325225736,3325225743,US
3325225744,3325225775,CA
3325225776,3325225783,US
@@ -119753,7 +141438,8 @@
3325225916,3325225919,BR
3325225920,3325225923,EG
3325225924,3325225927,IN
-3325225928,3325225943,CA
+3325225928,3325225935,CO
+3325225936,3325225943,CA
3325225944,3325225951,PL
3325225952,3325225967,MX
3325225968,3325225983,US
@@ -119765,7 +141451,8 @@
3325226032,3325226039,HK
3325226040,3325226071,CA
3325226072,3325226075,BR
-3325226076,3325226087,CA
+3325226076,3325226079,CA
+3325226080,3325226087,ES
3325226088,3325226091,EC
3325226092,3325226095,CA
3325226096,3325226099,PL
@@ -119791,7 +141478,7 @@
3325226444,3325226447,CA
3325226448,3325226451,LT
3325226452,3325226455,CA
-3325226456,3325226463,IN
+3325226456,3325226463,US
3325226464,3325226495,CA
3325226496,3325227007,US
3325227008,3325227039,CA
@@ -119800,29 +141487,29 @@
3325227088,3325227107,CA
3325227108,3325227111,AR
3325227112,3325227119,US
-3325227120,3325227223,CA
-3325227224,3325227227,GB
-3325227228,3325227279,CA
+3325227120,3325227199,CA
+3325227200,3325227215,GB
+3325227216,3325227279,CA
3325227280,3325227295,BR
3325227296,3325227331,CA
-3325227332,3325227335,US
+3325227332,3325227335,MX
3325227336,3325227371,CA
-3325227372,3325227375,AU
+3325227372,3325227375,DM
3325227376,3325227383,CA
3325227384,3325227387,MA
3325227388,3325227391,CA
3325227392,3325227395,PK
3325227396,3325227399,CA
3325227400,3325227403,LK
-3325227404,3325227455,CA
-3325227456,3325227471,US
-3325227472,3325227483,CA
+3325227404,3325227439,CA
+3325227440,3325227443,CH
+3325227444,3325227483,CA
3325227484,3325227487,IT
3325227488,3325227503,RO
3325227504,3325227519,CA
3325227520,3325227527,VG
-3325227528,3325227539,CA
-3325227540,3325227543,CZ
+3325227528,3325227531,PE
+3325227532,3325227543,CA
3325227544,3325227551,BD
3325227552,3325227555,BR
3325227556,3325227567,CA
@@ -119838,19 +141525,21 @@
3325227632,3325227639,BR
3325227640,3325227791,CA
3325227792,3325227799,US
-3325227800,3325227871,CA
+3325227800,3325227803,BR
+3325227804,3325227871,CA
3325227872,3325227875,BR
3325227876,3325227879,US
-3325227880,3325227999,CA
-3325228000,3325228015,IN
-3325228016,3325228063,CA
-3325228064,3325228159,US
+3325227880,3325228063,CA
+3325228064,3325228079,US
+3325228080,3325228087,NZ
+3325228088,3325228159,US
3325228160,3325228175,AE
3325228176,3325228255,CA
3325228256,3325228263,US
3325228264,3325228287,CA
3325228288,3325228415,US
-3325228416,3325228615,CA
+3325228416,3325228607,CA
+3325228608,3325228615,DM
3325228616,3325228623,US
3325228624,3325228675,CA
3325228676,3325228683,US
@@ -119858,9 +141547,7 @@
3325228688,3325228691,BR
3325228692,3325228735,CA
3325228736,3325228739,FR
-3325228740,3325228783,CA
-3325228784,3325228787,US
-3325228788,3325228807,CA
+3325228740,3325228807,CA
3325228808,3325228815,PL
3325228816,3325228823,CA
3325228824,3325228831,BR
@@ -119871,14 +141558,15 @@
3325228932,3325228935,LU
3325228936,3325228991,CA
3325228992,3325229007,BR
-3325229008,3325229071,CA
+3325229008,3325229055,CA
+3325229056,3325229063,US
+3325229064,3325229071,JO
3325229072,3325229079,IN
3325229080,3325229083,CA
3325229084,3325229087,US
3325229088,3325229175,CA
3325229176,3325229183,IN
-3325229184,3325229247,US
-3325229248,3325229255,CA
+3325229184,3325229255,CA
3325229256,3325229263,BR
3325229264,3325229279,CA
3325229280,3325229295,US
@@ -119887,30 +141575,33 @@
3325229328,3325229331,US
3325229332,3325229351,CA
3325229352,3325229359,BR
-3325229360,3325229411,CA
+3325229360,3325229363,CA
+3325229364,3325229367,BD
+3325229368,3325229371,CA
+3325229372,3325229375,IN
+3325229376,3325229411,CA
3325229412,3325229415,RU
3325229416,3325229459,CA
-3325229460,3325229471,BR
-3325229472,3325229487,US
+3325229460,3325229463,BR
+3325229464,3325229487,US
3325229488,3325229499,CA
3325229500,3325229503,IN
3325229504,3325229511,CA
3325229512,3325229515,IN
-3325229516,3325229519,CA
-3325229520,3325229527,US
-3325229528,3325229535,CA
+3325229516,3325229535,CA
3325229536,3325229551,FR
3325229552,3325229555,US
-3325229556,3325229591,CA
+3325229556,3325229559,PL
+3325229560,3325229591,CA
3325229592,3325229599,US
3325229600,3325229615,CA
3325229616,3325229619,MX
-3325229620,3325229627,CA
-3325229628,3325229631,US
-3325229632,3325229647,CA
+3325229620,3325229647,CA
3325229648,3325229663,FR
3325229664,3325229695,MX
-3325229696,3325229747,CA
+3325229696,3325229735,CA
+3325229736,3325229739,DM
+3325229740,3325229747,CA
3325229748,3325229755,CY
3325229756,3325229795,CA
3325229796,3325229799,PA
@@ -119920,12 +141611,13 @@
3325229832,3325229835,US
3325229836,3325229855,CA
3325229856,3325229887,US
-3325229888,3325229955,CA
+3325229888,3325229919,CA
+3325229920,3325229935,FR
+3325229936,3325229955,CA
3325229956,3325229959,US
3325229960,3325229975,CA
3325229976,3325229979,IN
-3325229980,3325229983,BR
-3325229984,3325229991,CA
+3325229980,3325229991,CA
3325229992,3325229999,IN
3325230000,3325230047,CA
3325230048,3325230055,AE
@@ -119941,8 +141633,9 @@
3325230136,3325230143,FR
3325230144,3325230167,CA
3325230168,3325230171,PK
-3325230172,3325230175,US
-3325230176,3325230319,CA
+3325230172,3325230207,CA
+3325230208,3325230211,NL
+3325230212,3325230319,CA
3325230320,3325230323,US
3325230324,3325230447,CA
3325230448,3325230455,US
@@ -119958,12 +141651,10 @@
3325230780,3325230783,BR
3325230784,3325230815,CA
3325230816,3325230847,GB
-3325230848,3325230983,CA
-3325230984,3325230991,US
+3325230848,3325230991,CA
3325230992,3325231007,FR
-3325231008,3325231071,CA
-3325231072,3325231079,US
-3325231080,3325231095,CA
+3325231008,3325231039,JO
+3325231040,3325231095,CA
3325231096,3325231099,US
3325231100,3325231103,BR
3325231104,3325232127,US
@@ -119994,9 +141685,8 @@
3325290240,3325290495,CA
3325290496,3325296383,US
3325296384,3325296639,CA
-3325296640,3325304319,US
-3325304320,3325304575,AS
-3325304576,3325304831,US
+3325296640,3325303807,US
+3325303808,3325304831,AS
3325304832,3325305087,CA
3325305088,3325306111,US
3325306112,3325306367,BR
@@ -120005,11 +141695,13 @@
3325308928,3325313023,CA
3325313024,3325323687,US
3325323688,3325323695,GB
-3325323696,3325337599,US
+3325323696,3325329407,US
+3325329408,3325337599,CA
3325337600,3325338111,GB
-3325338112,3325340671,US
-3325340672,3325340927,CA
-3325340928,3325362175,US
+3325338112,3325340159,CA
+3325340160,3325340671,US
+3325340672,3325345791,CA
+3325345792,3325362175,US
3325362176,3325427711,CA
3325427712,3325427967,US
3325427968,3325430527,ZA
@@ -120026,7 +141718,9 @@
3325453312,3325454335,CA
3325454336,3325463807,US
3325463808,3325464063,ZA
-3325464064,3325465087,NA
+3325464064,3325464575,NA
+3325464576,3325464831,ZA
+3325464832,3325465087,NA
3325465088,3325466623,ZA
3325466624,3325467135,US
3325467136,3325469695,ZA
@@ -120056,9 +141750,7 @@
3325490944,3325492991,ZA
3325492992,3325497343,US
3325497344,3325499903,PR
-3325499904,3325500415,US
-3325500416,3325501439,TR
-3325501440,3325505535,US
+3325499904,3325505535,US
3325505536,3325509631,CA
3325509632,3325551615,US
3325551616,3325552639,CA
@@ -120067,7 +141759,8 @@
3325574144,3325575167,BB
3325575168,3325630975,US
3325630976,3325631487,CA
-3325631488,3325640703,US
+3325632004,3325632004,US
+3325632512,3325640703,US
3325640704,3325644799,CA
3325644800,3325689855,US
3325689856,3325690367,JM
@@ -120076,7 +141769,82 @@
3325691904,3325693183,BR
3325693184,3325722623,US
3325722624,3325755391,CA
-3325755392,3325956095,US
+3325755392,3325919267,US
+3325919268,3325919269,GB
+3325919270,3325919271,US
+3325919272,3325919279,AU
+3325919280,3325919375,US
+3325919376,3325919379,GB
+3325919380,3325919735,US
+3325919736,3325919743,AU
+3325919744,3325920351,US
+3325920352,3325920367,AU
+3325920368,3325920415,US
+3325920416,3325920431,IE
+3325920432,3325920679,US
+3325920680,3325920687,CH
+3325920688,3325920695,MX
+3325920696,3325920799,US
+3325920800,3325920803,PH
+3325920804,3325921287,US
+3325921288,3325921295,CA
+3325921296,3325921319,US
+3325921320,3325921323,CA
+3325921324,3325921439,US
+3325921440,3325921447,FI
+3325921448,3325921499,US
+3325921500,3325921501,CO
+3325921502,3325921641,US
+3325921642,3325921645,CO
+3325921646,3325921971,US
+3325921972,3325921975,PH
+3325921976,3325922051,US
+3325922052,3325922055,MX
+3325922056,3325922191,US
+3325922192,3325922195,BR
+3325922196,3325922503,US
+3325922504,3325922511,FR
+3325922512,3325922643,US
+3325922644,3325922647,MX
+3325922648,3325923075,US
+3325923076,3325923079,CA
+3325923080,3325923215,US
+3325923216,3325923263,GB
+3325923264,3325923295,US
+3325923296,3325923299,MX
+3325923300,3325923455,US
+3325923456,3325923519,NO
+3325923520,3325924191,US
+3325924192,3325924195,MX
+3325924196,3325924351,US
+3325924352,3325924355,CA
+3325924356,3325924735,US
+3325924736,3325924743,GB
+3325924744,3325925683,US
+3325925684,3325925687,NZ
+3325925688,3325925791,US
+3325925792,3325925793,MX
+3325925794,3325926639,US
+3325926640,3325926643,GB
+3325926644,3325926707,US
+3325926708,3325926711,MX
+3325926712,3325926865,US
+3325926866,3325926867,AT
+3325926868,3325927009,US
+3325927010,3325927011,NZ
+3325927012,3325927015,US
+3325927016,3325927017,ZA
+3325927018,3325948415,US
+3325948416,3325948447,AT
+3325948448,3325949187,US
+3325949188,3325949191,MX
+3325949192,3325951087,US
+3325951088,3325951091,GB
+3325951092,3325951163,US
+3325951164,3325951167,SE
+3325951168,3325951187,US
+3325951188,3325951191,ES
+3325951192,3325956095,US
3325956096,3325960191,CA
3325960192,3325976063,US
3325976064,3325976319,CA
@@ -120109,9 +141877,79 @@
3326526720,3326613503,US
3326613504,3326615551,CA
3326615552,3326619647,US
-3326619648,3326623743,CA
+3326619648,3326622719,CA
+3326622720,3326622975,US
+3326622976,3326623743,CA
3326623744,3326631935,US
-3326631936,3326640127,CA
+3326631936,3326632079,CA
+3326632080,3326632087,MX
+3326632088,3326632103,CA
+3326632104,3326632111,MT
+3326632112,3326632119,US
+3326632120,3326632127,EG
+3326632128,3326632143,CA
+3326632144,3326632151,BG
+3326632152,3326632159,CA
+3326632160,3326632167,US
+3326632168,3326632175,HU
+3326632176,3326632183,RU
+3326632184,3326632191,US
+3326632192,3326632207,CA
+3326632208,3326632215,BR
+3326632216,3326632223,SA
+3326632224,3326632231,BR
+3326632232,3326632239,AR
+3326632240,3326632247,RO
+3326632248,3326632255,US
+3326632256,3326632271,CA
+3326632272,3326632287,US
+3326632288,3326632295,CA
+3326632296,3326632303,US
+3326632304,3326632311,GI
+3326632312,3326632319,CA
+3326632320,3326632327,UA
+3326632328,3326632335,AR
+3326632336,3326632343,CA
+3326632344,3326632351,PA
+3326632352,3326632375,CA
+3326632376,3326632383,US
+3326632384,3326632391,TR
+3326632392,3326632399,CA
+3326632400,3326632407,US
+3326632408,3326632415,CA
+3326632416,3326632423,RU
+3326632424,3326632431,CA
+3326632432,3326632447,BR
+3326632448,3326632463,CA
+3326632464,3326632471,PK
+3326632472,3326632479,US
+3326632480,3326632487,IN
+3326632488,3326632495,US
+3326632496,3326632503,CA
+3326632504,3326632511,IN
+3326632512,3326632519,BR
+3326632520,3326632527,US
+3326632528,3326632535,AE
+3326632536,3326632583,CA
+3326632584,3326632591,BR
+3326632592,3326632599,CA
+3326632600,3326632607,MX
+3326632608,3326632615,CA
+3326632616,3326632623,IN
+3326632624,3326632647,CA
+3326632648,3326632655,BR
+3326632656,3326632671,PT
+3326632672,3326632679,BR
+3326632680,3326632687,CA
+3326632688,3326632695,LB
+3326632696,3326632703,US
+3326632704,3326633535,CA
+3326633536,3326633567,CY
+3326633568,3326634447,CA
+3326634448,3326634479,CR
+3326634480,3326637615,CA
+3326637616,3326637631,CH
+3326637632,3326640127,CA
3326640128,3326680831,US
3326680832,3326681087,CA
3326681088,3326681343,US
@@ -120168,7 +142006,9 @@
3327723520,3327725311,CA
3327725312,3327788543,US
3327788544,3327789055,CA
-3327789056,3327806463,US
+3327789056,3327803903,US
+3327803904,3327804159,CZ
+3327804160,3327806463,US
3327806464,3327811583,CA
3327811584,3327885311,US
3327885312,3327918079,CA
@@ -120212,7 +142052,9 @@
3328358400,3328360447,CA
3328360448,3328383999,US
3328384000,3328385023,CA
-3328385024,3328414719,US
+3328385024,3328394239,US
+3328394240,3328394495,GB
+3328394496,3328414719,US
3328414720,3328414975,CH
3328414976,3328420351,US
3328420352,3328420607,CA
@@ -120233,13 +142075,96 @@
3328481761,3328482303,CA
3328482304,3328482815,US
3328482816,3328483327,CA
-3328483328,3328515071,US
+3328483328,3328491007,US
+3328491008,3328491519,GB
+3328491520,3328515071,US
3328515072,3328516095,DM
-3328516096,3328617983,US
+3328516096,3328542879,US
+3328542880,3328542887,CA
+3328542888,3328543583,US
+3328543584,3328543591,CH
+3328543592,3328544031,US
+3328544032,3328544039,CA
+3328544040,3328544063,US
+3328544064,3328544071,MX
+3328544072,3328544087,US
+3328544088,3328544095,CA
+3328544096,3328544135,US
+3328544136,3328544143,MX
+3328544144,3328544151,US
+3328544152,3328544159,UY
+3328544160,3328544327,US
+3328544328,3328544331,MX
+3328544332,3328550279,US
+3328550280,3328550283,CA
+3328550284,3328550323,US
+3328550324,3328550327,GB
+3328550328,3328550975,US
+3328550976,3328550983,MX
+3328550984,3328551031,US
+3328551032,3328551039,GB
+3328551040,3328551103,US
+3328551104,3328551111,MX
+3328551112,3328551191,US
+3328551192,3328551199,FR
+3328551200,3328551231,US
+3328551232,3328551239,DO
+3328551240,3328551303,US
+3328551304,3328551311,KY
+3328551312,3328551319,US
+3328551320,3328551327,AW
+3328551328,3328551479,US
+3328551480,3328551483,CH
+3328551484,3328551871,US
+3328551872,3328551903,FR
+3328551904,3328552369,US
+3328552370,3328552371,CA
+3328552372,3328552433,US
+3328552434,3328552435,CN
+3328552436,3328552511,US
+3328552512,3328552519,CA
+3328552520,3328552911,US
+3328552912,3328552915,MX
+3328552916,3328555047,US
+3328555048,3328555055,IE
+3328555056,3328555063,AU
+3328555064,3328555127,US
+3328555128,3328555135,GB
+3328555136,3328555167,US
+3328555168,3328555175,MX
+3328555176,3328555255,US
+3328555256,3328555263,CA
+3328555264,3328555815,US
+3328555816,3328555819,CA
+3328555820,3328556555,US
+3328556556,3328556559,GB
+3328556560,3328556583,US
+3328556584,3328556587,CA
+3328556588,3328556707,US
+3328556708,3328556711,FR
+3328556712,3328556863,US
+3328556864,3328556867,IE
+3328556868,3328556883,US
+3328556884,3328556887,MX
+3328556888,3328556907,US
+3328556908,3328556911,CA
+3328556912,3328556975,US
+3328556976,3328556979,ES
+3328556980,3328556991,US
+3328556992,3328556995,MX
+3328556996,3328557027,US
+3328557028,3328557031,CA
+3328557032,3328557043,US
+3328557044,3328557047,ES
+3328557048,3328584543,US
+3328584544,3328584559,SG
+3328584560,3328584575,US
+3328584576,3328584591,GB
+3328584592,3328617983,US
3328617984,3328618239,CA
-3328618240,3328629631,US
-3328629632,3328629695,GB
-3328629696,3328630015,US
+3328618240,3328629503,US
+3328629504,3328629759,GB
+3328629760,3328630015,US
3328630016,3328630271,CA
3328630272,3328630783,US
3328630784,3328631807,CA
@@ -120347,7 +142272,9 @@
3330814840,3330814847,PK
3330814848,3330815743,US
3330815744,3330815999,IN
-3330816000,3330817882,US
+3330816000,3330816767,US
+3330816768,3330817023,BR
+3330817024,3330817882,US
3330817883,3330817887,CL
3330817888,3330817899,ES
3330817900,3330866943,US
@@ -120404,7 +142331,8 @@
3331272961,3331273471,US
3331273472,3331273472,IL
3331273473,3331273727,US
-3331273728,3331273983,AU
+3331273728,3331273728,AU
+3331273729,3331273983,US
3331273984,3331273984,HK
3331273985,3331274239,US
3331274240,3331274240,SE
@@ -120499,28 +142427,25 @@
3332002064,3332002071,CA
3332002072,3332002079,FI
3332002080,3332002111,CA
-3332002112,3332002143,US
-3332002144,3332002159,CA
-3332002160,3332002215,US
+3332002112,3332002215,US
3332002216,3332002223,CA
3332002224,3332002303,US
3332002304,3332002431,CA
3332002432,3332002495,US
-3332002496,3332002559,CA
-3332002560,3332002815,IN
-3332002816,3332003711,US
-3332003712,3332003839,IT
+3332002496,3332002527,CA
+3332002528,3332003839,US
3332003840,3332004607,CA
3332004608,3332004671,US
3332004672,3332004863,CA
-3332004864,3332005375,US
-3332005376,3332005631,IN
+3332004864,3332005631,US
3332005632,3332005632,CA
3332005633,3332005886,US
3332005887,3332005887,CA
3332005888,3332028415,US
3332028416,3332030463,CA
-3332030464,3332423423,US
+3332030464,3332392511,US
+3332392512,3332392527,DE
+3332392528,3332423423,US
3332423424,3332423679,CA
3332423680,3332440319,US
3332440320,3332460543,CA
@@ -120530,7 +142455,8 @@
3332461568,3332462335,CA
3332462336,3332462591,US
3332462592,3332473855,CA
-3332473856,3332477951,US
+3332474230,3332474230,US
+3332474880,3332477951,US
3332477952,3332482303,CA
3332482304,3332483071,US
3332483072,3332483615,CO
@@ -120548,15 +142474,11 @@
3332503040,3332503551,US
3332503552,3332505343,CA
3332505344,3332505855,US
-3332505856,3332508671,CA
-3332508672,3332508927,US
-3332508928,3332525311,CA
+3332505856,3332525311,CA
3332525312,3332525574,US
3332525575,3332525575,CA
3332525576,3332526079,US
-3332526080,3332526591,CA
-3332526592,3332527103,US
-3332527104,3332528127,CA
+3332526080,3332528127,CA
3332528128,3332529663,US
3332529664,3332554751,CA
3332554752,3332558847,US
@@ -120642,7 +142564,11 @@
3333018112,3333023231,CA
3333023232,3333025279,US
3333025280,3333029631,CA
-3333029632,3333385983,US
+3333029632,3333373951,US
+3333373952,3333375999,IN
+3333376000,3333383167,US
+3333383168,3333384191,CN
+3333384192,3333385983,US
3333385984,3333386239,JP
3333386240,3333396223,US
3333396224,3333396479,JP
@@ -120650,9 +142576,18 @@
3333396674,3333396674,DE
3333396675,3333427967,US
3333427968,3333428223,GB
-3333428224,3333444607,US
+3333428224,3333435647,US
+3333435648,3333435903,CN
+3333435904,3333444095,US
+3333444096,3333444607,GB
3333444608,3333444863,SG
-3333444864,3333471999,US
+3333444864,3333453823,US
+3333453824,3333454079,GB
+3333454080,3333454335,NL
+3333454336,3333454847,US
+3333454848,3333455103,SG
+3333455104,3333455359,JP
+3333455360,3333471999,US
3333472000,3333472255,NL
3333472256,3333480191,US
3333480192,3333481471,DE
@@ -120669,11 +142604,17 @@
3333519872,3333520383,US
3333520384,3333520639,NL
3333520640,3333520895,DE
-3333520896,3333583871,US
+3333520896,3333566463,US
+3333566464,3333568511,GB
+3333568512,3333583871,US
3333583872,3333584895,CA
3333584896,3333593855,US
3333593856,3333594111,CA
-3333594112,3333609983,US
+3333594112,3333603327,US
+3333603328,3333603328,GB
+3333603329,3333603329,US
+3333603330,3333603583,GB
+3333603584,3333609983,US
3333609984,3333610239,SG
3333610240,3333614591,US
3333614592,3333614847,GB
@@ -120723,12 +142664,14 @@
3333988864,3333997823,US
3333997824,3333998079,CA
3333998080,3334006527,US
-3334006528,3334006783,NL
+3334006528,3334006783,BE
3334006784,3334020095,US
3334020096,3334021119,CA
3334021120,3334068479,US
3334068480,3334068735,CA
-3334068736,3334138623,US
+3334068736,3334079487,US
+3334079488,3334079999,DE
+3334080000,3334138623,US
3334138624,3334138879,BM
3334138880,3334187775,US
3334187776,3334188031,BM
@@ -120736,8 +142679,8 @@
3334932224,3334932479,CA
3334932480,3334934015,US
3334934016,3334934527,CA
-3334934528,3334962431,US
-3334962432,3334963199,NL
+3334934528,3334962175,US
+3334962176,3334963199,NL
3334963200,3334995967,US
3334995968,3334998527,PH
3334998528,3335004159,US
@@ -120783,9 +142726,7 @@
3335010176,3335010239,US
3335010240,3335012351,CN
3335012352,3335028735,CA
-3335028736,3335057919,US
-3335057920,3335058175,CA
-3335058176,3335160319,US
+3335028736,3335160319,US
3335160320,3335160575,CA
3335160576,3335252735,US
3335252736,3335252991,CA
@@ -120825,7 +142766,9 @@
3335439616,3335439871,CH
3335439872,3335440383,US
3335440384,3335441151,CH
-3335441152,3335456767,US
+3335441152,3335451903,US
+3335451904,3335452159,CA
+3335452160,3335456767,US
3335458816,3335460863,BM
3335460864,3335475199,US
3335475200,3335475455,DE
@@ -120841,7 +142784,9 @@
3335573760,3335574015,IN
3335574016,3335719071,US
3335719072,3335719087,IN
-3335719088,3335784191,US
+3335719088,3335747071,US
+3335747072,3335749631,NL
+3335749632,3335784191,US
3335784192,3335784447,CA
3335784448,3335860991,US
3335860992,3335861247,MX
@@ -120880,9 +142825,9 @@
3337107200,3337107455,AU
3337107456,3337107711,JP
3337107712,3337107967,GB
-3337107968,3337198367,US
-3337198368,3337198399,CA
-3337198400,3337198703,US
+3337107968,3337198503,US
+3337198504,3337198511,CA
+3337198512,3337198703,US
3337198704,3337198707,CA
3337198708,3337201727,US
3337201728,3337201735,CA
@@ -120909,15 +142854,16 @@
3337341952,3337342463,US
3337342464,3337355007,CA
3337355008,3337650175,US
-3337650176,3337650431,GB
-3337650432,3337650687,CH
-3337650688,3337651199,US
-3337651200,3337651455,CH
-3337651456,3337651711,SG
-3337651712,3337653503,CH
-3337653504,3337653759,JP
-3337653760,3337682943,CH
-3337682944,3337882111,US
+3337650176,3337650687,GB
+3337650688,3337650943,US
+3337650944,3337651199,HK
+3337651200,3337652223,SG
+3337652224,3337654271,US
+3337654272,3337658367,AU
+3337658368,3337682943,CH
+3337682944,3337736191,US
+3337736192,3337738239,SG
+3337738240,3337882111,US
3337882112,3337882623,AU
3337882624,3337891839,US
3337891840,3337892127,IN
@@ -120954,14 +142900,18 @@
3337961496,3337961519,US
3337961520,3337961527,RO
3337961528,3337961535,US
-3337961536,3337961599,LT
-3337961600,3337961983,CA
+3337961536,3337961679,CA
+3337961680,3337961687,TH
+3337961688,3337961815,CA
+3337961816,3337961823,TH
+3337961824,3337961983,CA
3337961984,3337961999,US
3337962000,3337962007,CA
3337962008,3337962015,US
3337962016,3337962047,CA
3337962048,3337962111,US
-3337962112,3337962143,CA
+3337962112,3337962119,TH
+3337962120,3337962143,CA
3337962144,3337962151,US
3337962152,3337962167,CA
3337962168,3337962175,US
@@ -120969,16 +142919,18 @@
3337962216,3337962223,US
3337962224,3337962239,CA
3337962240,3337962327,US
-3337962328,3337962335,CA
-3337962336,3337962431,US
-3337962432,3337962511,CA
+3337962328,3337962335,TH
+3337962336,3337962495,US
+3337962496,3337962511,CA
3337962512,3337962519,US
-3337962520,3337962599,CA
+3337962520,3337962559,CA
+3337962560,3337962575,US
+3337962576,3337962599,CA
3337962600,3337962623,US
3337962624,3337962799,CA
3337962800,3337962807,US
-3337962808,3337962831,CA
-3337962832,3337962943,US
+3337962808,3337962815,CA
+3337962816,3337962943,US
3337962944,3337962951,CA
3337962952,3337962959,NO
3337962960,3337962967,CA
@@ -120996,26 +142948,30 @@
3337963328,3337963335,CA
3337963336,3337963343,US
3337963344,3337963359,CA
-3337963360,3337963399,US
+3337963360,3337963367,US
+3337963368,3337963375,CA
+3337963376,3337963383,US
+3337963384,3337963391,CA
+3337963392,3337963399,US
3337963400,3337963423,CA
3337963424,3337963439,US
3337963440,3337963447,CA
3337963448,3337963455,US
3337963456,3337963487,CA
3337963488,3337963495,US
-3337963496,3337963535,CA
-3337963536,3337963631,US
+3337963496,3337963519,CA
+3337963520,3337963631,US
3337963632,3337963647,CA
3337963648,3337963743,US
3337963744,3337963759,CA
3337963760,3337963767,US
3337963768,3337963775,CA
-3337963776,3337963783,AZ
+3337963776,3337963783,TH
3337963784,3337963791,US
3337963792,3337963799,AZ
-3337963800,3337963807,US
-3337963808,3337963847,CA
-3337963848,3337963855,BR
+3337963800,3337963807,TH
+3337963808,3337963839,CA
+3337963840,3337963855,US
3337963856,3337963863,CA
3337963864,3337963871,MA
3337963872,3337963879,US
@@ -121023,8 +142979,7 @@
3337963904,3337963911,MA
3337963912,3337963919,CA
3337963920,3337963951,US
-3337963952,3337963967,CA
-3337963968,3337964031,IN
+3337963952,3337964031,CA
3337964032,3337964287,US
3337964288,3337964295,CA
3337964296,3337964335,US
@@ -121303,7 +143258,9 @@
3339678786,3339678846,CN
3339678847,3339679487,US
3339679488,3339679743,CN
-3339679744,3339707391,US
+3339679744,3339693079,US
+3339693080,3339693087,LT
+3339693088,3339707391,US
3339707392,3339708415,BM
3339708416,3339722687,US
3339722688,3339722703,EG
@@ -121442,9 +143399,13 @@
3339963168,3339963199,SC
3339963200,3339965439,US
3339965440,3339968511,CA
-3339968512,3339975935,US
+3339968512,3339974911,US
+3339974912,3339975167,GB
+3339975168,3339975935,US
3339975936,3339976191,CA
-3339976192,3340080127,US
+3339976192,3339991039,US
+3339991040,3339992063,CA
+3339992064,3340080127,US
3340080128,3340081151,CA
3340081152,3340084223,US
3340084224,3340085247,KN
@@ -121480,8 +143441,7 @@
3340460032,3340462079,PR
3340462080,3340481535,US
3340481536,3340482559,CA
-3340482560,3340483583,US
-3340484608,3340490751,US
+3340482560,3340490751,US
3340490752,3340492799,CA
3340492800,3340493567,US
3340493568,3340493823,HK
@@ -121508,7 +143468,13 @@
3340857344,3340858015,CA
3340858016,3340858047,US
3340858048,3340858367,CA
-3340858368,3340925095,US
+3340858368,3340896255,US
+3340896256,3340896511,CA
+3340896512,3340896767,US
+3340896768,3340897023,AU
+3340897024,3340897279,US
+3340897280,3340897791,CA
+3340897792,3340925095,US
3340925096,3340925103,TR
3340925104,3340925111,US
3340925112,3340925119,CO
@@ -121621,9 +143587,7 @@
3340926960,3340926967,IL
3340926968,3341057023,US
3341057024,3341058047,CA
-3341058048,3341082623,US
-3341082624,3341084671,CA
-3341084672,3341180927,US
+3341058048,3341180927,US
3341180928,3341182975,CA
3341182976,3341186686,US
3341186687,3341186688,IN
@@ -121669,7 +143633,8 @@
3341533952,3341534207,CA
3341534720,3341535007,US
3341535008,3341535015,ID
-3341535016,3341535023,GH
+3341535016,3341535019,BR
+3341535020,3341535023,GH
3341535024,3341535031,PA
3341535032,3341535039,VN
3341535040,3341535047,MA
@@ -121677,9 +143642,10 @@
3341535056,3341535087,US
3341535088,3341535091,GH
3341535092,3341535095,AE
-3341535096,3341535167,US
-3341535168,3341535171,CN
-3341535172,3341535183,US
+3341535096,3341535103,BR
+3341535104,3341535171,US
+3341535172,3341535175,LI
+3341535176,3341535183,US
3341535184,3341535187,ID
3341535188,3341535195,US
3341535196,3341535199,SA
@@ -121690,8 +143656,8 @@
3341536768,3341546239,US
3341546240,3341547007,CA
3341547008,3341547519,CH
-3341547520,3341549311,CA
-3341549312,3341631999,US
+3341547520,3341549567,CA
+3341549568,3341631999,US
3341632000,3341632767,CA
3341632768,3341634815,US
3341634816,3341635071,CA
@@ -121705,16 +143671,19 @@
3341646080,3341646591,CA
3341646592,3341709311,US
3341709312,3341710335,CA
-3341710336,3341727999,US
-3341728000,3341728255,AU
-3341728256,3341758463,US
+3341710336,3341725695,US
+3341725696,3341727231,AU
+3341727232,3341727232,US
+3341727233,3341728767,AU
+3341728768,3341728768,US
+3341728769,3341729791,AU
+3341729792,3341758463,US
3341758464,3341759487,CA
3341759488,3341760511,BB
3341760512,3341762559,CA
3341762560,3341777919,US
3341777920,3341778943,CA
-3341778944,3341784063,US
-3341784064,3341784575,CA
+3341778944,3341784575,US
3341784576,3341785087,CH
3341785088,3341795583,US
3341795584,3341795839,GB
@@ -121746,7 +143715,9 @@
3341838336,3341838591,GB
3341838592,3341854551,US
3341854552,3341854559,SG
-3341854560,3341863935,US
+3341854560,3341854719,US
+3341854720,3341854975,CA
+3341854976,3341863935,US
3341863936,3341864959,AG
3341864960,3341867007,US
3341867008,3341869055,CA
@@ -121754,7 +143725,9 @@
3341870080,3341870335,CA
3341870336,3341873407,US
3341873408,3341873663,CA
-3341873664,3341881087,US
+3341873664,3341877759,US
+3341877760,3341878015,GB
+3341878016,3341881087,US
3341881088,3341881343,SG
3341881344,3341891071,US
3341891072,3341891327,AU
@@ -121767,15 +143740,9 @@
3342488576,3342488639,US
3342488640,3342488703,GB
3342488704,3342488831,SC
-3342488832,3342488863,GB
-3342488864,3342488872,US
-3342488873,3342488882,BG
-3342488883,3342488896,US
-3342488897,3342488908,GB
-3342488909,3342488909,US
-3342488910,3342488925,GB
-3342488926,3342489087,US
-3342489088,3342489215,SC
+3342488832,3342489151,US
+3342489152,3342489183,AR
+3342489184,3342489215,US
3342489216,3342489279,GB
3342489280,3342489301,US
3342489302,3342489311,AR
@@ -121835,11 +143802,15 @@
3342879488,3342879551,NL
3342879552,3342879567,US
3342879568,3342879743,NL
-3342879744,3343013887,US
+3342879744,3342974975,US
+3342974976,3342977023,CN
+3342977024,3343013887,US
3343013888,3343015695,CA
3343015696,3343015727,US
3343015728,3343015935,CA
-3343015936,3343046919,US
+3343015936,3343020031,US
+3343020032,3343021055,CA
+3343021056,3343046919,US
3343046920,3343046923,IT
3343046924,3343046939,US
3343046940,3343046943,RU
@@ -121851,8 +143822,8 @@
3343046972,3343046987,US
3343046988,3343046991,CA
3343046992,3343047111,US
-3343047112,3343047127,SG
-3343047128,3343047143,US
+3343047112,3343047119,SG
+3343047120,3343047143,US
3343047144,3343047151,IT
3343047152,3343047327,US
3343047328,3343047343,IT
@@ -121868,9 +143839,9 @@
3343047848,3343047855,IT
3343047856,3343055871,US
3343055872,3343056895,CA
-3343056896,3343117311,US
-3343117312,3343117567,JP
-3343117568,3343153151,US
+3343056896,3343090588,US
+3343090589,3343090589,MX
+3343090590,3343153151,US
3343153152,3343153167,CA
3343153168,3343153175,US
3343153176,3343154943,CA
@@ -121964,11 +143935,17 @@
3343653536,3343653551,CA
3343653552,3343653631,US
3343653632,3343653695,CA
-3343653696,3343746047,US
+3343653696,3343654079,US
+3343654080,3343654143,CA
+3343654144,3343656447,US
+3343656448,3343656959,VI
+3343656960,3343746047,US
3343746048,3343747071,VI
3343747072,3343763903,US
3343763904,3343763935,CA
-3343763936,3343858687,US
+3343763936,3343764479,US
+3343764480,3343765503,VI
+3343765504,3343858687,US
3343858688,3343859199,VG
3343859200,3343922975,US
3343922976,3343923007,PA
@@ -121984,9 +143961,7 @@
3344148480,3344154623,US
3344154624,3344156671,GD
3344156672,3344158719,CA
-3344158720,3344165631,US
-3344165632,3344165663,MX
-3344165664,3344166911,US
+3344158720,3344166911,US
3344166912,3344168959,CA
3344168960,3344171263,US
3344171264,3344195583,CA
@@ -122045,7 +144020,9 @@
3344486400,3344488447,NL
3344488448,3344534271,US
3344534272,3344534527,CA
-3344534528,3344633855,US
+3344534528,3344632063,US
+3344632064,3344632319,IN
+3344632320,3344633855,US
3344633856,3344637951,CH
3344637952,3344648703,US
3344648704,3344648959,SG
@@ -122124,45 +144101,41 @@
3345321984,3345327103,US
3345327104,3345328127,CA
3345328128,3345332287,US
-3345332288,3345332295,GH
+3345332288,3345332295,GB
3345332296,3345332303,PK
3345332304,3345332311,US
-3345332312,3345332319,LK
+3345332312,3345332319,ID
3345332320,3345332327,PT
-3345332328,3345332339,US
-3345332340,3345332343,GH
+3345332328,3345332343,US
3345332344,3345332347,ID
3345332348,3345332351,CY
-3345332352,3345332375,US
+3345332352,3345332359,PK
+3345332360,3345332375,US
3345332376,3345332383,CA
-3345332384,3345332403,US
-3345332404,3345332407,GH
+3345332384,3345332407,US
3345332408,3345332411,ID
3345332412,3345332423,US
3345332424,3345332431,MY
3345332432,3345332435,VN
-3345332436,3345332439,GB
-3345332440,3345332463,US
+3345332436,3345332451,US
+3345332452,3345332455,AE
+3345332456,3345332463,US
3345332464,3345332471,VN
3345332472,3345332487,US
3345332488,3345332495,AU
3345332496,3345332503,CA
-3345332504,3345332511,BR
-3345332512,3345332535,US
+3345332504,3345332535,US
3345332536,3345332539,VN
3345332540,3345332583,US
3345332584,3345332587,CY
-3345332588,3345332591,IN
-3345332592,3345332595,US
+3345332588,3345332595,US
3345332596,3345332599,MX
3345332600,3345332603,US
3345332604,3345332607,ID
3345332608,3345332655,US
3345332656,3345332659,CY
3345332660,3345332663,VN
-3345332664,3345332667,US
-3345332668,3345332671,ID
-3345332672,3345332751,US
+3345332664,3345332751,US
3345332752,3345332767,GB
3345332768,3345332799,US
3345332800,3345332815,GB
@@ -122170,8 +144143,7 @@
3345332992,3345333055,VN
3345333056,3345333183,US
3345333184,3345333215,IN
-3345333216,3345333219,BR
-3345333220,3345333223,GH
+3345333216,3345333223,US
3345333224,3345333227,MX
3345333228,3345333231,CY
3345333232,3345333247,US
@@ -122197,9 +144169,7 @@
3345408190,3345408193,AR
3345408194,3345408225,US
3345408226,3345408227,GB
-3345408228,3345408235,US
-3345408236,3345408239,CN
-3345408240,3345408319,US
+3345408228,3345408319,US
3345408320,3345408323,GB
3345408324,3345408390,US
3345408391,3345408394,GB
@@ -122318,8 +144288,8 @@
3346221688,3346221719,US
3346221720,3346221727,CA
3346221728,3346221871,US
-3346221872,3346221887,SG
-3346221888,3346221903,US
+3346221872,3346221879,SG
+3346221880,3346221903,US
3346221904,3346221911,IT
3346221912,3346221999,US
3346222000,3346222007,BR
@@ -122435,7 +144405,11 @@
3347033088,3347034111,CA
3347034112,3347039231,US
3347039232,3347040255,DM
-3347040256,3349268479,US
+3347040256,3347049471,US
+3347049472,3347050495,GU
+3347050496,3349065727,US
+3349065728,3349069823,PR
+3349069824,3349268479,US
3349268480,3349268991,CA
3349268992,3349273087,US
3349273088,3349273343,CA
@@ -122453,7 +144427,8 @@
3349545216,3349545727,CA
3349545728,3349545983,US
3349545984,3349551103,CA
-3349551104,3349553663,US
+3349551104,3349553407,US
+3349553408,3349553663,CA
3349553664,3349554687,IN
3349554688,3349600255,CA
3349600256,3349601023,US
@@ -122474,7 +144449,9 @@
3349616640,3349617663,CA
3349617664,3349619343,US
3349619344,3349619391,CA
-3349619392,3349619503,US
+3349619392,3349619475,US
+3349619476,3349619476,CA
+3349619477,3349619503,US
3349619504,3349619519,PA
3349619520,3349619583,CA
3349619584,3349637119,US
@@ -122490,9 +144467,7 @@
3349647360,3349648165,US
3349648166,3349648168,NG
3349648169,3349649407,US
-3349649408,3349650687,CA
-3349650688,3349650943,GB
-3349650944,3349653503,CA
+3349649408,3349653503,CA
3349653504,3349723175,US
3349723176,3349723183,LK
3349723184,3349723199,US
@@ -122505,9 +144480,7 @@
3349723997,3349724000,LK
3349724001,3349724191,US
3349724192,3349724199,AF
-3349724200,3349724207,US
-3349724208,3349724215,CA
-3349724216,3349724351,US
+3349724200,3349724351,US
3349724352,3349724359,PK
3349724360,3349724415,US
3349724416,3349724447,AE
@@ -122525,8 +144498,8 @@
3349987328,3349996543,BM
3349996544,3349997055,KY
3349997056,3350002687,BM
-3350002688,3350002719,US
-3350002720,3350002943,BM
+3350002688,3350002751,US
+3350002752,3350002943,BM
3350002944,3350003007,US
3350003008,3350003711,BM
3350003712,3350042879,US
@@ -122610,7 +144583,9 @@
3350519060,3350519063,IN
3350519064,3350548735,US
3350548736,3350548991,CA
-3350548992,3350574591,US
+3350548992,3350561535,US
+3350561536,3350561791,AU
+3350561792,3350574591,US
3350574848,3350575103,CA
3350575104,3350593535,US
3350593536,3350605823,CA
@@ -122627,18 +144602,23 @@
3350628352,3350642687,US
3350642688,3350643711,TC
3350643712,3350645759,US
-3350646784,3350648831,US
+3350645760,3350646015,CA
+3350646016,3350648831,US
3350648832,3350650623,CA
3350650624,3350650631,US
3350650632,3350650879,CA
-3350650880,3350762495,US
+3350650880,3350761705,US
+3350761706,3350761706,GB
+3350761707,3350762495,US
3350762496,3350762751,GB
3350762752,3350763263,SG
3350763264,3350763519,HK
3350763520,3350790399,US
3350790400,3350814975,CA
3350814976,3350815231,US
-3350815232,3350823423,CA
+3350815232,3350815743,CA
+3350815744,3350816767,US
+3350816768,3350823423,CA
3350823424,3350823935,US
3350823936,3350825727,CA
3350825728,3350825983,GB
@@ -122693,7 +144673,9 @@
3351012544,3351012575,SE
3351012576,3351012995,US
3351012996,3351012999,RO
-3351013000,3351013151,US
+3351013000,3351013055,US
+3351013056,3351013071,BD
+3351013072,3351013151,US
3351013152,3351013167,KW
3351013168,3351013375,US
3351013376,3351013391,CN
@@ -122752,18 +144734,18 @@
3351074303,3351074303,BR
3351074304,3351074367,US
3351074368,3351074369,AE
-3351074370,3351074373,US
+3351074370,3351074370,US
+3351074371,3351074371,AU
+3351074372,3351074373,US
3351074374,3351074374,AR
3351074375,3351074375,BR
-3351074376,3351074377,DE
+3351074376,3351074376,DE
+3351074377,3351074377,US
3351074378,3351074378,BD
-3351074379,3351074379,US
-3351074380,3351074380,DE
-3351074381,3351074381,US
+3351074379,3351074381,US
3351074382,3351074382,KW
3351074383,3351074383,BR
-3351074384,3351074385,US
-3351074386,3351074386,RU
+3351074384,3351074386,US
3351074387,3351074387,BR
3351074388,3351074388,DE
3351074389,3351074389,US
@@ -122797,75 +144779,56 @@
3351074441,3351074444,US
3351074445,3351074445,CA
3351074446,3351074446,CL
-3351074447,3351074456,US
-3351074457,3351074457,RU
-3351074458,3351074463,US
+3351074447,3351074463,US
3351074464,3351074466,BR
-3351074467,3351074467,US
-3351074468,3351074468,RU
-3351074469,3351074469,US
-3351074470,3351074471,RU
-3351074472,3351074472,US
+3351074467,3351074472,US
3351074473,3351074473,BR
-3351074474,3351074474,RU
+3351074474,3351074474,US
3351074475,3351074475,BR
-3351074476,3351074480,US
-3351074481,3351074482,RU
-3351074483,3351074483,US
+3351074476,3351074483,US
3351074484,3351074484,CA
3351074485,3351074486,US
3351074487,3351074487,DE
3351074488,3351074488,US
3351074489,3351074489,BR
-3351074490,3351074495,RU
-3351074496,3351074496,US
+3351074490,3351074496,US
3351074497,3351074497,BD
-3351074498,3351074498,RU
+3351074498,3351074498,US
3351074499,3351074499,CL
-3351074500,3351074500,RU
-3351074501,3351074504,US
+3351074500,3351074504,US
3351074505,3351074505,DE
-3351074506,3351074507,US
-3351074508,3351074511,RU
+3351074506,3351074511,US
3351074512,3351074512,AR
3351074513,3351074513,AE
-3351074514,3351074516,RU
+3351074514,3351074516,US
3351074517,3351074518,CA
-3351074519,3351074521,US
-3351074522,3351074524,RU
+3351074519,3351074524,US
3351074525,3351074528,CA
-3351074529,3351074538,US
-3351074539,3351074542,RU
+3351074529,3351074542,US
3351074543,3351074543,BR
-3351074544,3351074545,US
-3351074546,3351074550,RU
+3351074544,3351074550,US
3351074551,3351074551,SK
3351074552,3351074557,US
3351074558,3351074558,CA
3351074559,3351074559,MY
-3351074560,3351074690,US
-3351074691,3351074691,BR
-3351074692,3351074711,US
+3351074560,3351074711,US
3351074712,3351074712,TR
3351074713,3351074731,US
3351074732,3351074732,BR
3351074733,3351074734,US
3351074735,3351074735,BR
3351074736,3351074743,US
-3351074744,3351074745,BR
+3351074744,3351074744,BR
+3351074745,3351074745,US
3351074746,3351074746,AU
-3351074747,3351074750,US
-3351074751,3351074751,HU
-3351074752,3351074815,US
+3351074747,3351074815,US
3351074816,3351076863,CA
3351076864,3351080959,US
3351080960,3351081727,AG
3351081728,3351081983,DM
3351081984,3351086079,US
3351086080,3351087103,CA
-3351087104,3351094271,US
-3351094272,3351095295,CA
-3351095296,3351100887,US
+3351087104,3351100887,US
3351100888,3351100891,CA
3351100892,3351100895,US
3351100896,3351100927,CA
@@ -122875,23 +144838,24 @@
3351112704,3351113727,CA
3351113728,3351129087,US
3351129088,3351129343,HK
-3351129344,3351196159,US
+3351129344,3351194111,US
+3351194112,3351194367,GB
+3351194368,3351196159,US
3351196160,3351196671,VG
-3351196672,3351197695,US
-3351197696,3351197711,PT
+3351196672,3351197711,US
3351197712,3351197715,BR
-3351197716,3351197719,GH
+3351197716,3351197719,MX
3351197720,3351197735,US
3351197736,3351197739,CY
3351197740,3351197743,US
-3351197744,3351197751,VN
+3351197744,3351197751,PK
3351197752,3351197759,PT
-3351197760,3351197767,US
-3351197768,3351197775,IN
+3351197760,3351197775,US
3351197776,3351197783,BR
3351197784,3351197791,US
3351197792,3351197795,IN
-3351197796,3351197803,CN
+3351197796,3351197799,CN
+3351197800,3351197803,US
3351197804,3351197807,AE
3351197808,3351197811,CA
3351197812,3351197835,US
@@ -122900,48 +144864,41 @@
3351197860,3351197863,CY
3351197864,3351197867,US
3351197868,3351197871,CY
-3351197872,3351197879,US
-3351197880,3351197887,GH
+3351197872,3351197887,US
3351197888,3351197891,MX
3351197892,3351197899,BR
3351197900,3351197903,CY
3351197904,3351198023,US
-3351198024,3351198031,GH
-3351198032,3351198059,US
-3351198060,3351198063,GH
+3351198024,3351198031,BR
+3351198032,3351198063,US
3351198064,3351198079,IN
3351198080,3351198091,US
3351198092,3351198095,GT
3351198096,3351198103,MX
-3351198104,3351198111,VN
-3351198112,3351198127,US
-3351198128,3351198131,EG
+3351198104,3351198111,IN
+3351198112,3351198131,US
3351198132,3351198135,BR
3351198136,3351198147,US
-3351198148,3351198155,BR
+3351198148,3351198151,CN
+3351198152,3351198155,BR
3351198156,3351198159,EG
-3351198160,3351198171,US
-3351198172,3351198175,GH
-3351198176,3351198183,US
-3351198184,3351198187,GH
-3351198188,3351198215,US
-3351198216,3351198223,VN
-3351198224,3351198231,US
+3351198160,3351198215,US
+3351198216,3351198219,VN
+3351198220,3351198231,US
3351198232,3351198235,CA
3351198236,3351198239,US
3351198240,3351198247,TR
3351198248,3351198251,ID
-3351198252,3351198255,GH
+3351198252,3351198255,US
3351198256,3351198259,VN
3351198260,3351198263,DE
3351198264,3351198335,US
3351198336,3351198351,CA
-3351198352,3351198355,GT
-3351198356,3351198359,US
+3351198352,3351198359,US
3351198360,3351198363,GB
-3351198364,3351198371,US
-3351198372,3351198383,CA
-3351198384,3351198387,GH
+3351198364,3351198375,US
+3351198376,3351198383,CA
+3351198384,3351198387,US
3351198388,3351198391,VN
3351198392,3351198399,TR
3351198400,3351198403,VN
@@ -122950,31 +144907,31 @@
3351198412,3351198415,GB
3351198416,3351198423,GT
3351198424,3351198427,RO
-3351198428,3351198431,US
+3351198428,3351198431,RU
3351198432,3351198439,IN
3351198440,3351198447,US
3351198448,3351198463,JO
-3351198464,3351198471,BR
+3351198464,3351198471,US
3351198472,3351198475,VN
3351198476,3351198479,CY
3351198480,3351198495,US
-3351198496,3351198499,CN
+3351198496,3351198499,BR
3351198500,3351198519,US
3351198520,3351198527,IN
3351198528,3351198535,CN
3351198536,3351198539,CY
-3351198540,3351198551,US
+3351198540,3351198543,US
+3351198544,3351198551,ID
3351198552,3351198555,BD
-3351198556,3351198559,US
-3351198560,3351198563,ID
-3351198564,3351198567,CN
-3351198568,3351198575,US
+3351198556,3351198559,SA
+3351198560,3351198563,VN
+3351198564,3351198575,US
3351198576,3351198579,CY
3351198580,3351198599,US
3351198600,3351198607,VN
3351198608,3351198615,GR
3351198616,3351198619,MX
-3351198620,3351198623,BD
+3351198620,3351198623,US
3351198624,3351198627,CY
3351198628,3351198631,ID
3351198632,3351198687,US
@@ -123069,7 +145026,9 @@
3351357440,3351359487,CA
3351359488,3351372799,US
3351372800,3351373823,BM
-3351373824,3351380223,US
+3351373824,3351375871,US
+3351375872,3351376895,PR
+3351376896,3351380223,US
3351380224,3351380479,CA
3351380480,3351380991,US
3351380992,3351381759,CA
@@ -123147,7 +145106,9 @@
3351417088,3351417599,CA
3351417600,3351419647,US
3351419648,3351419903,CA
-3351419904,3351423743,US
+3351419904,3351422975,US
+3351422976,3351423231,CA
+3351423232,3351423743,US
3351423744,3351423999,PR
3351424000,3351428351,US
3351428352,3351428607,CA
@@ -123221,13 +145182,21 @@
3351912704,3351912959,US
3351912960,3351933439,CA
3351933440,3351939071,US
-3351939072,3351959551,CA
-3351959552,3351961599,US
-3351961600,3351963647,CA
+3351939072,3351963647,CA
3351963648,3351969279,US
3351969280,3351969535,CA
3351969536,3351969791,US
-3351969792,3352035327,IL
+3351969792,3351970047,IL
+3351970048,3351970815,US
+3351970816,3351987199,IL
+3351987200,3351987455,US
+3351987456,3351996671,IL
+3351996672,3351997183,US
+3351997184,3352002303,IL
+3352002304,3352002559,US
+3352002560,3352006911,IL
+3352006912,3352007167,US
+3352007168,3352035327,IL
3352035328,3352036351,CA
3352036352,3352046591,US
3352046592,3352046783,CA
@@ -123265,38 +145234,14 @@
3352616960,3352887295,CA
3352887296,3352916379,US
3352916380,3352916380,VE
-3352916381,3352916479,US
-3352916480,3352916506,BR
-3352916507,3352916507,US
-3352916508,3352916512,BR
-3352916513,3352916513,US
-3352916514,3352916514,BR
-3352916515,3352916515,US
-3352916516,3352916527,BR
-3352916528,3352916530,US
-3352916531,3352916533,BR
-3352916534,3352916534,US
-3352916535,3352916541,BR
-3352916542,3352916542,US
-3352916543,3352916557,BR
-3352916558,3352916561,US
+3352916381,3352916561,US
3352916562,3352916562,GB
3352916563,3352916564,BR
-3352916565,3352916566,US
-3352916567,3352916584,BR
-3352916585,3352916586,US
+3352916565,3352916586,US
3352916587,3352916593,BR
-3352916594,3352916607,US
-3352916608,3352916615,BR
-3352916616,3352916619,US
-3352916620,3352916635,BR
-3352916636,3352916636,US
-3352916637,3352916638,BR
+3352916594,3352916638,US
3352916639,3352916639,DE
-3352916640,3352916640,BR
-3352916641,3352916648,US
-3352916649,3352916689,BR
-3352916690,3352916690,US
+3352916640,3352916690,US
3352916691,3352916694,BR
3352916695,3352918015,US
3352918016,3352919039,CA
@@ -123313,22 +145258,20 @@
3353335340,3353335341,US
3353335342,3353335347,NL
3353335348,3353335353,US
-3353335354,3353335359,NL
+3353335354,3353335355,NL
+3353335356,3353335357,US
+3353335358,3353335359,NL
3353335360,3353335361,US
3353335362,3353335363,NL
-3353335364,3353335374,US
-3353335375,3353335376,NL
-3353335377,3353335378,US
+3353335364,3353335378,US
3353335379,3353335380,NL
3353335381,3353335382,US
3353335383,3353335386,NL
3353335387,3353335388,US
3353335389,3353335390,NL
-3353335391,3353335392,US
-3353335393,3353335394,NL
-3353335395,3353335396,US
-3353335397,3353335402,NL
-3353335403,3353335407,US
+3353335391,3353335396,US
+3353335397,3353335400,NL
+3353335401,3353335407,US
3353335408,3353335411,NL
3353335412,3353335416,US
3353335417,3353335420,NL
@@ -123336,8 +145279,8 @@
3353335423,3353335424,NL
3353335425,3353335426,US
3353335427,3353335435,NL
-3353335436,3353335437,US
-3353335438,3353335445,NL
+3353335436,3353335439,US
+3353335440,3353335445,NL
3353335446,3353335451,US
3353335452,3353335455,NL
3353335456,3353335458,US
@@ -123370,9 +145313,7 @@
3353335615,3353335616,NL
3353335617,3353335619,US
3353335620,3353335655,NL
-3353335656,3353335662,US
-3353335663,3353335664,NL
-3353335665,3353335666,US
+3353335656,3353335666,US
3353335667,3353335668,NL
3353335669,3353335670,US
3353335671,3353335676,NL
@@ -123385,8 +145326,8 @@
3353335707,3353335708,US
3353335709,3353335710,NL
3353335711,3353335712,US
-3353335713,3353335716,NL
-3353335717,3353335718,US
+3353335713,3353335714,NL
+3353335715,3353335718,US
3353335719,3353335722,NL
3353335723,3353335728,US
3353335729,3353335739,NL
@@ -123404,9 +145345,9 @@
3353335793,3353335794,NL
3353335795,3353653503,US
3353653504,3353653759,GB
-3353653760,3353688063,US
-3353688064,3353688575,GB
-3353688576,3353722367,US
+3353653760,3353681919,US
+3353681920,3353690111,GB
+3353690112,3353722367,US
3353722368,3353722623,GB
3353722624,3353726975,US
3353726976,3353727231,IN
@@ -123418,15 +145359,13 @@
3353731776,3353731823,IL
3353731824,3353731999,US
3353732000,3353732031,CN
-3353732032,3353732159,US
-3353732160,3353732191,CA
-3353732192,3353732351,US
+3353732032,3353732351,US
3353732352,3353732863,DE
3353732864,3353736191,US
-3353736192,3353736959,PR
-3353736960,3353737215,US
+3353736192,3353737215,PR
3353737216,3353737471,GB
-3353737472,3353739775,US
+3353737472,3353739519,US
+3353739520,3353739775,IN
3353739776,3353740007,HK
3353740008,3353740015,SG
3353740016,3353740031,CN
@@ -123434,8 +145373,8 @@
3353740264,3353740271,SG
3353740272,3353740287,CN
3353740288,3353740799,US
-3353740800,3353741055,IN
-3353741056,3353752585,US
+3353740800,3353741311,IN
+3353741312,3353752585,US
3353752586,3353752589,BE
3353752590,3353753055,US
3353753056,3353753059,BR
@@ -123489,7 +145428,9 @@
3353979648,3353979903,CA
3353979904,3353982719,US
3353982720,3353983231,CA
-3353983232,3353989631,US
+3353983232,3353987839,US
+3353987840,3353988095,DE
+3353988096,3353989631,US
3353989632,3353989887,CA
3353989888,3354066943,US
3354066944,3354132479,CA
@@ -123519,37 +145460,33 @@
3354501120,3354503167,CA
3354503168,3354507263,US
3354507264,3354507267,PK
-3354507268,3354507271,EG
+3354507268,3354507271,US
3354507272,3354507279,ID
3354507280,3354507283,NZ
3354507284,3354507287,US
3354507288,3354507291,CY
3354507292,3354507295,MX
3354507296,3354507299,BR
-3354507300,3354507303,PK
-3354507304,3354507307,US
+3354507300,3354507307,US
3354507308,3354507315,BR
3354507316,3354507319,US
3354507320,3354507323,PK
3354507324,3354507343,US
3354507344,3354507347,CA
3354507348,3354507351,CN
-3354507352,3354507355,CM
+3354507352,3354507355,US
3354507356,3354507359,ID
3354507360,3354507363,US
3354507364,3354507367,CY
-3354507368,3354507375,CA
-3354507376,3354507383,US
-3354507384,3354507387,CN
-3354507388,3354507391,VN
+3354507368,3354507375,GB
+3354507376,3354507391,US
3354507392,3354507399,CA
3354507400,3354507403,EG
-3354507404,3354507407,CN
-3354507408,3354507431,US
+3354507404,3354507431,US
3354507432,3354507439,BR
3354507440,3354507443,CY
3354507444,3354507451,US
-3354507452,3354507455,AU
+3354507452,3354507455,ID
3354507456,3354507459,US
3354507460,3354507463,BR
3354507464,3354507467,US
@@ -123561,24 +145498,25 @@
3354507512,3354507519,MA
3354507520,3354507535,US
3354507536,3354507539,BR
-3354507540,3354507543,HU
+3354507540,3354507543,AE
3354507544,3354507551,US
3354507552,3354507559,NI
3354507560,3354507567,ID
3354507568,3354507591,US
3354507592,3354507599,CY
-3354507600,3354507623,US
-3354507624,3354507631,CN
+3354507600,3354507615,US
+3354507616,3354507623,RS
+3354507624,3354507627,US
+3354507628,3354507631,CN
3354507632,3354507639,US
3354507640,3354507643,EG
3354507644,3354507647,MM
-3354507648,3354507655,EG
+3354507648,3354507655,UA
3354507656,3354507659,CA
3354507660,3354507667,CY
3354507668,3354507671,BR
-3354507672,3354507679,US
-3354507680,3354507683,GH
-3354507684,3354507687,PT
+3354507672,3354507679,IN
+3354507680,3354507687,US
3354507688,3354507691,CA
3354507692,3354507695,VN
3354507696,3354507703,US
@@ -123614,20 +145552,19 @@
3354507920,3354507931,US
3354507932,3354507943,CY
3354507944,3354507959,US
-3354507960,3354507967,GH
+3354507960,3354507967,BR
3354507968,3354507983,MX
3354507984,3354507991,AE
-3354507992,3354507999,UA
-3354508000,3354508015,US
+3354507992,3354508015,US
3354508016,3354508031,MX
-3354508032,3354508043,US
-3354508044,3354508047,DK
-3354508048,3354508051,BR
+3354508032,3354508051,US
3354508052,3354508055,VN
3354508056,3354508059,US
3354508060,3354508063,BR
3354508064,3354508071,US
-3354508072,3354508075,CY
+3354508072,3354508073,CY
+3354508074,3354508074,US
+3354508075,3354508075,CY
3354508076,3354508079,RU
3354508080,3354508083,US
3354508084,3354508087,VN
@@ -123640,12 +145577,11 @@
3354508120,3354508123,BR
3354508124,3354508127,US
3354508128,3354508135,CN
-3354508136,3354508139,IN
+3354508136,3354508139,US
3354508140,3354508143,CY
3354508144,3354508147,MY
3354508148,3354508151,BB
-3354508152,3354508159,US
-3354508160,3354508163,GH
+3354508152,3354508163,US
3354508164,3354508167,CY
3354508168,3354508191,US
3354508192,3354508195,IN
@@ -123659,41 +145595,46 @@
3354508224,3354508235,US
3354508236,3354508239,CA
3354508240,3354508247,US
-3354508248,3354508255,PK
+3354508248,3354508255,BR
3354508256,3354508259,EG
3354508260,3354508263,US
3354508264,3354508267,TH
3354508268,3354508271,US
3354508272,3354508275,TW
3354508276,3354508279,US
-3354508280,3354508287,AE
+3354508280,3354508287,NP
3354508288,3354508303,CY
3354508304,3354508311,US
3354508312,3354508319,VN
-3354508320,3354508327,US
+3354508320,3354508323,US
+3354508324,3354508327,VN
3354508328,3354508335,AE
3354508336,3354508339,BR
3354508340,3354508347,US
3354508348,3354508351,CA
-3354508352,3354508375,US
-3354508376,3354508383,MA
-3354508384,3354508395,US
+3354508352,3354508359,BR
+3354508360,3354508367,US
+3354508368,3354508383,MA
+3354508384,3354508391,PK
+3354508392,3354508395,US
3354508396,3354508399,VN
3354508400,3354508423,US
-3354508424,3354508431,LK
+3354508424,3354508431,IN
3354508432,3354508439,US
3354508440,3354508447,AE
3354508448,3354508487,US
3354508488,3354508491,VN
3354508492,3354508495,CY
-3354508496,3354508527,US
+3354508496,3354508519,US
+3354508520,3354508527,CA
3354508528,3354508535,AE
-3354508536,3354508543,BD
-3354508544,3354508567,US
-3354508568,3354508571,GH
+3354508536,3354508543,BB
+3354508544,3354508571,US
3354508572,3354508575,CN
3354508576,3354508579,BR
-3354508580,3354508603,US
+3354508580,3354508583,US
+3354508584,3354508591,BR
+3354508592,3354508603,US
3354508604,3354508607,CY
3354508608,3354508623,US
3354508624,3354508639,MX
@@ -123703,12 +145644,11 @@
3354508688,3354508703,US
3354508704,3354508735,AE
3354508736,3354508743,PK
-3354508744,3354508751,IN
-3354508752,3354508767,US
+3354508744,3354508767,US
3354508768,3354508775,PH
3354508776,3354508847,US
3354508848,3354508855,MA
-3354508856,3354508863,CN
+3354508856,3354508863,US
3354508864,3354508895,CY
3354508896,3354508927,US
3354508928,3354508943,GB
@@ -123729,7 +145669,7 @@
3354509256,3354509263,US
3354509264,3354509279,BR
3354509280,3354509283,AU
-3354509284,3354509287,GH
+3354509284,3354509287,US
3354509288,3354509291,CY
3354509292,3354509295,IN
3354509296,3354509299,CA
@@ -123788,13 +145728,20 @@
3354823424,3354823679,US
3354823680,3354853119,CA
3354853120,3354853375,US
-3354853376,3354866175,CA
+3354853376,3354855423,DE
+3354855424,3354857471,FR
+3354857472,3354859519,DE
+3354859520,3354861567,NL
+3354861568,3354865663,US
+3354865664,3354866175,CA
3354866176,3354866431,US
-3354866432,3354869759,CA
+3354866432,3354867711,CA
+3354867712,3354869759,DE
3354869760,3354873855,US
-3354873856,3354875391,CA
-3354875392,3354875903,US
-3354875904,3354918911,CA
+3354873856,3354874879,PR
+3354874880,3354875391,CA
+3354875392,3354886143,US
+3354886144,3354918911,CA
3354918912,3354955775,US
3354955776,3354956031,AR
3354956032,3354972159,US
@@ -123802,13 +145749,29 @@
3354972416,3355012607,US
3355012608,3355017215,CA
3355017216,3355052287,US
-3355052288,3355052543,HK
+3355052288,3355052543,AU
3355052544,3355053055,CA
-3355053056,3355249151,US
+3355053056,3355082751,US
+3355082752,3355083263,PS
+3355083264,3355083519,US
+3355083520,3355083775,PS
+3355083776,3355084031,US
+3355084032,3355084799,PS
+3355084800,3355084800,US
+3355084801,3355086846,PS
+3355086847,3355086848,US
+3355086849,3355088894,PS
+3355088895,3355088896,US
+3355088897,3355090942,PS
+3355090943,3355249151,US
3355249152,3355249663,CA
3355249664,3355260927,US
3355260928,3355262719,CA
-3355262720,3355310591,US
+3355262720,3355308287,US
+3355308288,3355308543,GB
+3355308544,3355309567,US
+3355309568,3355309823,GB
+3355309824,3355310591,US
3355310592,3355311103,CA
3355311104,3355319295,US
3355319296,3355320319,CA
@@ -123831,23 +145794,21 @@
3355407360,3355408383,PR
3355408384,3355412771,US
3355412772,3355412775,CY
-3355412776,3355412783,CN
-3355412784,3355412791,US
+3355412776,3355412783,BR
+3355412784,3355412791,UA
3355412792,3355412795,CY
3355412796,3355412799,US
3355412800,3355412803,CY
-3355412804,3355412807,CN
-3355412808,3355412815,US
+3355412804,3355412807,US
+3355412808,3355412815,IN
3355412816,3355412823,EG
-3355412824,3355412991,US
-3355412992,3355413023,IN
-3355413024,3355413055,US
+3355412824,3355412831,IN
+3355412832,3355413055,US
3355413056,3355413087,IN
3355413088,3355417735,US
3355417736,3355417743,NP
-3355417744,3355417799,US
-3355417800,3355417803,CN
-3355417804,3355417999,US
+3355417744,3355417991,US
+3355417992,3355417999,IN
3355418000,3355418015,BE
3355418016,3355418023,AE
3355418024,3355418063,US
@@ -123856,19 +145817,19 @@
3355418080,3355418111,CN
3355418112,3355418367,US
3355418368,3355418371,BR
-3355418372,3355418375,US
-3355418376,3355418383,GH
-3355418384,3355418395,US
+3355418372,3355418395,US
3355418396,3355418399,GT
3355418400,3355418431,BE
3355418432,3355418455,GB
3355418456,3355418463,AE
3355418464,3355418527,US
3355418528,3355418535,BR
-3355418536,3355418551,US
+3355418536,3355418543,US
+3355418544,3355418551,UA
3355418552,3355418555,CY
-3355418556,3355418567,US
-3355418568,3355418575,MX
+3355418556,3355418559,US
+3355418560,3355418567,IN
+3355418568,3355418575,TH
3355418576,3355418591,GB
3355418592,3355418607,US
3355418608,3355418615,MX
@@ -124171,24 +146132,9 @@
3356102400,3356102655,PA
3356102656,3356105727,CL
3356105728,3356106751,SV
-3356106752,3356106975,US
-3356106976,3356107007,FR
-3356107008,3356107263,US
-3356107264,3356107327,BR
-3356107328,3356107519,US
-3356107520,3356107551,BR
-3356107552,3356107775,US
-3356107776,3356107975,HN
-3356107976,3356107983,IS
-3356107984,3356108063,HN
-3356108064,3356108071,IT
-3356108072,3356108511,HN
-3356108512,3356108519,US
-3356108520,3356109119,HN
-3356109120,3356109135,FR
-3356109136,3356110015,HN
-3356110016,3356110031,US
-3356110032,3356110335,HN
+3356106752,3356107263,HN
+3356107264,3356107775,US
+3356107776,3356110335,HN
3356110336,3356110847,US
3356110848,3356113919,BR
3356113920,3356114943,UY
@@ -124341,14 +146287,12 @@
3356329984,3356332031,GF
3356332032,3356334079,CU
3356334080,3356336127,BO
-3356336128,3356336895,SV
-3356336896,3356337919,HN
+3356336128,3356336639,SV
+3356336640,3356337919,HN
3356337920,3356340479,SV
3356340480,3356340735,HN
-3356340736,3356340991,SV
-3356340992,3356341247,HN
-3356341248,3356341503,SV
-3356341504,3356342015,HN
+3356340736,3356341759,SV
+3356341760,3356342015,HN
3356342016,3356343039,SV
3356343040,3356343295,HN
3356343296,3356344319,SV
@@ -124376,17 +146320,19 @@
3356390400,3356390655,AR
3356390656,3356391167,CL
3356391168,3356391423,PA
-3356393472,3356413567,CL
+3356393472,3356413183,CL
+3356413184,3356413311,CO
+3356413312,3356413567,CL
3356413568,3356413951,CO
3356413952,3356419839,CL
3356419840,3356419967,CO
3356419968,3356420287,CL
3356420288,3356420351,CO
3356420352,3356420735,CL
-3356420736,3356420991,CO
-3356420992,3356421119,CL
-3356421120,3356422143,CO
-3356422144,3356426239,CL
+3356420736,3356422143,CO
+3356422144,3356425471,CL
+3356425472,3356425727,CO
+3356425728,3356426239,CL
3356426240,3356427263,BR
3356427264,3356491775,US
3356491776,3356493823,PE
@@ -124395,9 +146341,7 @@
3356499968,3356508159,MX
3356508160,3356508671,AR
3356508672,3356509183,CR
-3356509184,3356509439,CO
-3356509440,3356509503,US
-3356509504,3356510207,CO
+3356509184,3356510207,CO
3356510208,3356511999,AR
3356512000,3356512255,CO
3356512256,3356514303,AR
@@ -124503,13 +146447,11 @@
3357442432,3357442439,HN
3357442440,3357442655,GT
3357442656,3357442671,NI
-3357442672,3357442815,GT
-3357442816,3357443071,SV
+3357442672,3357443007,GT
+3357443008,3357443071,SV
3357443072,3357443599,GT
3357443600,3357443615,HN
-3357443616,3357443735,GT
-3357443736,3357443743,HN
-3357443744,3357444207,GT
+3357443616,3357444207,GT
3357444208,3357444215,HN
3357444216,3357444351,GT
3357444352,3357444607,HN
@@ -124521,18 +146463,13 @@
3357449152,3357449727,HN
3357449728,3357451167,GT
3357451168,3357451175,HN
-3357451176,3357451263,GT
-3357451264,3357451519,HN
-3357451520,3357451775,NI
-3357451776,3357452287,GT
+3357451176,3357452287,GT
3357452288,3357452543,HN
3357452544,3357452799,GT
3357452800,3357453055,NI
3357453056,3357453311,SV
3357453312,3357453567,HN
-3357453568,3357455871,GT
-3357455872,3357456127,NI
-3357456128,3357456639,GT
+3357453568,3357456639,GT
3357456640,3357456895,HN
3357456896,3357457919,GT
3357457920,3357458431,HN
@@ -124540,33 +146477,27 @@
3357474816,3357475071,US
3357475072,3357475887,AR
3357475888,3357475903,VE
-3357475904,3357476255,AR
-3357476256,3357476271,VE
-3357476272,3357476351,AR
+3357475904,3357476351,AR
3357476352,3357476607,EC
-3357476608,3357476863,AR
+3357476608,3357476863,US
3357476864,3357477375,EC
3357477376,3357477887,AR
3357477888,3357478911,CO
-3357478912,3357479087,AR
-3357479088,3357479095,CO
+3357478912,3357478991,AR
+3357478992,3357479007,CO
+3357479008,3357479079,AR
+3357479080,3357479095,CO
3357479096,3357480031,AR
3357480032,3357480039,CO
3357480040,3357480103,AR
3357480104,3357480111,CO
3357480112,3357480159,AR
3357480160,3357480175,CO
-3357480176,3357480407,AR
-3357480408,3357480415,CO
-3357480416,3357480423,AR
-3357480424,3357480427,CO
-3357480428,3357480463,AR
+3357480176,3357480463,AR
3357480464,3357480479,CO
3357480480,3357480559,AR
3357480560,3357480575,CO
-3357480576,3357480751,AR
-3357480752,3357480767,CO
-3357480768,3357480959,AR
+3357480576,3357480959,AR
3357480960,3357483007,EC
3357483008,3357491199,CL
3357491200,3357499391,CO
@@ -124574,14 +146505,17 @@
3357507584,3357515775,VE
3357515776,3357523967,SV
3357523968,3357532159,CO
-3357532160,3357556735,AR
-3357556736,3357556991,VE
-3357556992,3357557759,MX
-3357557760,3357559295,EC
+3357532160,3357556991,AR
+3357556992,3357557247,MX
+3357557248,3357558175,AR
+3357558176,3357558183,EC
+3357558184,3357559007,AR
+3357559008,3357559015,EC
+3357559016,3357559039,AR
+3357559040,3357559167,EC
+3357559168,3357559295,AR
3357559296,3357559551,CA
-3357559552,3357560175,AR
-3357560176,3357560183,VE
-3357560184,3357560319,AR
+3357559552,3357560319,AR
3357560320,3357560575,MX
3357560576,3357560831,AR
3357560832,3357561855,CO
@@ -124638,9 +146572,7 @@
3357728768,3357736959,BR
3357736960,3357745151,VE
3357745152,3357753343,CO
-3357753344,3357757487,VE
-3357757488,3357757495,BO
-3357757496,3357773823,VE
+3357753344,3357773823,VE
3357773824,3357775871,PA
3357775872,3357776127,US
3357776128,3357776383,UY
@@ -124648,7 +146580,9 @@
3357776896,3357777919,CL
3357777920,3357780559,GT
3357780560,3357780575,SV
-3357780576,3357784503,GT
+3357780576,3357783935,GT
+3357783936,3357784063,NI
+3357784064,3357784503,GT
3357784504,3357784511,SV
3357784512,3357785535,GT
3357785536,3357785567,SV
@@ -124662,37 +146596,36 @@
3358064640,3358130175,UY
3358130176,3358131199,EC
3358131200,3358132223,CO
-3358132224,3358133631,AR
-3358133632,3358133759,VE
-3358133760,3358142719,AR
+3358132224,3358142719,AR
3358142720,3358142975,US
3358142976,3358143231,CO
-3358143232,3358143487,VE
+3358143232,3358143311,AR
+3358143312,3358143327,VE
+3358143328,3358143359,AR
+3358143360,3358143367,VE
+3358143368,3358143487,AR
3358143488,3358143999,US
3358144000,3358144127,CL
3358144128,3358144255,AR
3358144256,3358144511,CL
3358144512,3358144639,AR
3358144640,3358144767,VE
-3358144768,3358144839,AR
-3358144840,3358144847,VE
-3358144848,3358149735,AR
+3358144768,3358149735,AR
3358149736,3358149743,CO
-3358149744,3358150367,AR
-3358150368,3358150399,CO
-3358150400,3358151039,AR
+3358149744,3358150351,AR
+3358150352,3358150655,CO
+3358150656,3358151039,AR
3358151040,3358151167,EC
-3358151168,3358151423,AR
-3358151424,3358151679,EC
+3358151168,3358151551,AR
+3358151552,3358151679,EC
3358151680,3358151807,PE
3358151808,3358152063,AR
3358152064,3358152191,PE
3358152192,3358153679,AR
3358153680,3358153695,PR
-3358153696,3358153855,AR
-3358153856,3358153983,EC
-3358153984,3358154239,AR
-3358154240,3358154751,CL
+3358153696,3358154431,AR
+3358154432,3358154447,CL
+3358154448,3358154751,AR
3358154752,3358158847,PE
3358158848,3358159423,AR
3358159424,3358159455,EC
@@ -124701,9 +146634,7 @@
3358160896,3358236671,AR
3358236672,3358244863,CL
3358244864,3358261247,DO
-3358261248,3358264063,AR
-3358264064,3358264319,PY
-3358264320,3358326783,AR
+3358261248,3358326783,AR
3358326784,3358392319,VE
3358392320,3358457855,AR
3358457856,3358482175,PA
@@ -124714,29 +146645,33 @@
3358527488,3358530047,AR
3358530048,3358530303,VE
3358530304,3358530815,AR
-3358530816,3358531583,VE
-3358531584,3358532095,AR
+3358530816,3358531839,VE
+3358531840,3358532095,AR
3358532096,3358532351,VE
-3358532352,3358533119,AR
-3358533120,3358533631,VE
-3358533632,3358533887,AR
+3358532352,3358532607,AR
+3358532608,3358532863,VE
+3358532864,3358533887,AR
3358533888,3358534143,VE
3358534144,3358543615,AR
3358543616,3358543871,VE
3358543872,3358544127,MX
3358544128,3358547967,AR
-3358547968,3358548623,VE
-3358548624,3358548639,AR
-3358548640,3358548991,VE
+3358547968,3358548479,VE
+3358548480,3358548735,AR
+3358548736,3358548991,VE
3358548992,3358549503,AR
3358549504,3358550015,VE
-3358550016,3358563327,AR
-3358563328,3358564095,CO
+3358550016,3358553599,AR
+3358553600,3358553855,VE
+3358553856,3358563327,AR
+3358563328,3358563839,CO
+3358563840,3358564095,VE
3358564096,3358567423,AR
3358567424,3358568447,CO
3358568448,3358578687,AR
3358578688,3358579711,CO
-3358579712,3358587903,AR
+3358579712,3358579967,VE
+3358579968,3358587903,AR
3358587904,3358588927,CL
3358588928,3358654463,PE
3358654464,3358658559,AR
@@ -124754,9 +146689,7 @@
3358738176,3358738687,GD
3358738688,3358739711,BB
3358739712,3358739967,KN
-3358739968,3358743039,BB
-3358743040,3358743295,TC
-3358743296,3358744575,BB
+3358739968,3358744575,BB
3358744576,3358752767,CL
3358752768,3358756863,BB
3358756864,3358760959,CL
@@ -124805,16 +146738,9 @@
3359505408,3359505663,VE
3359505664,3359505919,CW
3359505920,3359506431,AR
-3359506432,3359508479,US
-3359508480,3359514623,VE
-3359514624,3359516671,US
-3359516672,3359516927,VG
-3359516928,3359517183,US
-3359517184,3359517439,VG
-3359517440,3359517695,US
-3359517696,3359517951,VG
-3359517952,3359520255,US
-3359520256,3359520767,AR
+3359506432,3359510527,US
+3359510528,3359514623,VE
+3359514624,3359520767,US
3359520768,3359521791,VE
3359521792,3359522815,CO
3359522816,3359539199,NI
@@ -124834,7 +146760,9 @@
3359899648,3359916031,CL
3359916032,3359932415,AR
3359932416,3359948799,MX
-3359948800,3359989759,AR
+3359948800,3359989247,AR
+3359989248,3359989503,US
+3359989504,3359989759,AR
3359989760,3359997951,CO
3359997952,3360006143,AR
3360006144,3360014335,EC
@@ -124849,15 +146777,8 @@
3360118784,3360120831,AR
3360124928,3360125951,VE
3360125952,3360127999,BR
-3360128000,3360128295,HN
-3360128296,3360128303,IT
-3360128304,3360128319,HN
-3360128320,3360128327,IT
-3360128328,3360128543,HN
-3360128544,3360128575,US
-3360128576,3360128775,HN
-3360128776,3360128783,BE
-3360128784,3360129023,HN
+3360128000,3360128511,US
+3360128512,3360129023,HN
3360129024,3360145407,VE
3360145408,3360153599,CL
3360153600,3360157695,AR
@@ -124893,26 +146814,17 @@
3360669696,3360686079,MX
3360686080,3360698367,AR
3360698368,3360699135,UY
-3360699136,3360707839,AR
-3360707840,3360708095,US
-3360708096,3360708735,AR
-3360708736,3360708863,US
-3360708864,3360710527,AR
-3360710528,3360710655,US
+3360699136,3360710655,AR
3360710656,3360718847,HT
3360718848,3360763903,AR
3360765952,3360767999,CO
-3360768000,3360772351,AR
-3360772352,3360772479,BO
-3360772480,3360780991,AR
-3360780992,3360780995,BR
-3360780996,3360781055,AR
+3360768000,3360781055,AR
3360781056,3360781071,BR
-3360781072,3360781599,AR
+3360781072,3360781551,AR
+3360781552,3360781555,VE
+3360781556,3360781599,AR
3360781600,3360781615,BS
-3360781616,3360781791,AR
-3360781792,3360781795,MX
-3360781796,3360788479,AR
+3360781616,3360788479,AR
3360788480,3360790527,CL
3360790528,3360849919,AR
3360849920,3360882687,VE
@@ -124968,9 +146880,7 @@
3361726464,3361734655,MX
3361734656,3362258943,BR
3362258944,3362324479,CL
-3362324480,3362337791,AR
-3362337792,3362338047,US
-3362338048,3362349055,AR
+3362324480,3362349055,AR
3362349056,3362351103,CR
3362351104,3362353151,AR
3362353152,3362355199,EC
@@ -125011,15 +146921,15 @@
3362529280,3362537471,PA
3362537472,3362545663,AR
3362545664,3362549759,PE
-3362549760,3362552431,AR
+3362549760,3362552127,AR
+3362552128,3362552143,VE
+3362552144,3362552431,AR
3362552432,3362552447,MX
3362552448,3362552575,AR
3362552576,3362552591,MX
3362552592,3362552991,AR
3362552992,3362553007,MX
-3362553008,3362553167,AR
-3362553168,3362553183,DO
-3362553184,3362553791,AR
+3362553008,3362553791,AR
3362553792,3362553807,VI
3362553808,3362553855,AR
3362553856,3362557951,PY
@@ -125041,8 +146951,8 @@
3362707456,3362708203,CO
3362708204,3362708204,AR
3362708205,3362708383,CO
-3362708384,3362708384,AR
-3362708385,3362708413,CO
+3362708384,3362708399,AR
+3362708400,3362708413,CO
3362708414,3362708414,AR
3362708415,3362709503,CO
3362709504,3362711551,AR
@@ -125058,8 +146968,8 @@
3362838528,3362840575,EC
3362840576,3362897919,CL
3362897920,3362903295,HT
-3362903296,3362904063,MX
-3362904064,3362914303,HT
+3362903296,3362903551,MX
+3362903552,3362914303,HT
3362914304,3362930687,CO
3362930688,3362934783,CL
3362934784,3362936831,AR
@@ -125100,12 +147010,11 @@
3363504128,3363512319,PE
3363512320,3363553919,AR
3363553920,3363554303,US
-3363554304,3363554431,BR
-3363554432,3363555071,AR
-3363555072,3363555327,US
-3363555328,3363555839,AR
-3363555840,3363556607,US
-3363556608,3363557375,AR
+3363554304,3363555583,AR
+3363555584,3363555839,US
+3363555840,3363556095,AR
+3363556096,3363556351,US
+3363556352,3363557375,AR
3363557376,3363559423,BZ
3363559424,3363561471,AR
3363565568,3363569663,AR
@@ -125119,8 +147028,7 @@
3363601920,3363602175,AR
3363602176,3363602431,PA
3363602432,3363610623,CW
-3363614720,3363617791,AR
-3363617792,3363618815,PE
+3363614720,3363618815,AR
3363618816,3363627007,UY
3363627008,3363635199,EC
3363635200,3363651583,UY
@@ -125142,11 +147050,7 @@
3363831808,3367763967,BR
3367763968,3367804927,MX
3367804928,3367840767,BR
-3367840768,3367841023,HN
-3367841024,3367841039,CA
-3367841040,3367841407,HN
-3367841408,3367841423,CA
-3367841424,3367841791,HN
+3367840768,3367841791,US
3367841792,3368052991,BR
3368052992,3368053247,PE
3368053248,3368053503,CO
@@ -125159,7 +147063,8 @@
3370196992,3370214399,BR
3370214400,3370215423,AR
3370215424,3370487807,BR
-3370487808,3370488831,CR
+3370487808,3370488575,CR
+3370488576,3370488831,HN
3370488832,3370489855,AR
3370489856,3370490879,VE
3370490880,3370506239,BR
@@ -125171,7 +147076,9 @@
3370926080,3370942463,MX
3370942464,3371106303,BR
3371106304,3371122687,MX
-3371122688,3378511871,BR
+3371122688,3375816703,BR
+3375816704,3375816959,CN
+3375816960,3378511871,BR
3378511872,3380506879,MX
3380506880,3380507135,BR
3380507136,3380744191,MX
@@ -125266,13 +147173,9 @@
3381947392,3381952511,BR
3381952512,3381960703,MX
3381960704,3381962751,BR
-3381962752,3381962991,US
+3381962752,3381962991,HN
3381962992,3381962999,FR
-3381963000,3381963559,US
-3381963560,3381963567,FR
-3381963568,3381963711,US
-3381963712,3381963727,CA
-3381963728,3381963775,US
+3381963000,3381963775,HN
3381963776,3381968895,BR
3381968896,3381972991,MX
3381972992,3381974015,BR
@@ -125336,8 +147239,7 @@
3382677504,3382681599,BR
3382681600,3382683647,MX
3382683648,3382685695,CL
-3382685696,3382686655,MX
-3382686656,3382686719,US
+3382685696,3382686719,MX
3382686720,3382689791,BR
3382689792,3382695935,MX
3382695936,3382696959,AR
@@ -125401,11 +147303,7 @@
3386548224,3386556415,CR
3386556416,3386562047,PA
3386562048,3386562303,PE
-3386562304,3386571263,PA
-3386571264,3386571327,BZ
-3386571328,3386571391,PA
-3386571392,3386571519,BZ
-3386571520,3386572799,PA
+3386562304,3386572799,PA
3386572800,3386589183,EC
3386589184,3386601471,AR
3386601472,3386605567,CO
@@ -125471,15 +147369,12 @@
3387584512,3387585535,PE
3387585536,3387586047,AR
3387586048,3387586303,PE
-3387586304,3387586431,AR
-3387586432,3387587583,PE
-3387587584,3387588159,AR
-3387588160,3387588175,PE
-3387588176,3387600895,AR
+3387586304,3387586559,AR
+3387586560,3387587583,PE
+3387587584,3387600895,AR
3387600896,3387604991,CO
3387604992,3387613183,EC
-3387613184,3387613439,US
-3387613440,3387617279,VE
+3387613184,3387617279,VE
3387617280,3387619327,CO
3387619328,3387686911,AR
3387686912,3387736063,CL
@@ -125507,7 +147402,7 @@
3389016064,3389016575,JP
3389016576,3389017087,AU
3389017088,3389017343,JP
-3389017344,3389017599,HK
+3389017541,3389017541,HK
3389017600,3389017855,AU
3389017856,3389018111,VN
3389018112,3389018367,PG
@@ -125558,7 +147453,6 @@
3389064448,3389064703,SG
3389064704,3389065215,HK
3389065216,3389067263,NZ
-3389067264,3389071359,AU
3389071360,3389079551,PG
3389079552,3389087743,SG
3389087744,3389087999,HK
@@ -125577,8 +147471,8 @@
3389123584,3389123839,ID
3389123840,3389124351,AU
3389124352,3389124607,SG
-3389124608,3389128447,PG
-3389128448,3389129727,AU
+3389124608,3389128703,PG
+3389128704,3389129727,AU
3389129728,3389132799,NZ
3389132800,3389136895,AU
3389136896,3389142015,HK
@@ -125593,7 +147487,6 @@
3389194240,3389195775,AU
3389195776,3389196287,HK
3389196288,3389197567,AU
-3389197568,3389197823,IN
3389197824,3389198079,ID
3389198080,3389198335,IN
3389198336,3389202431,KR
@@ -125612,12 +147505,13 @@
3389214720,3389218815,NZ
3389218816,3389222911,AU
3389222912,3389223935,US
-3389223936,3389226495,IN
+3389223936,3389225983,IN
+3389225984,3389226495,AU
3389226496,3389226751,SG
3389226752,3389227007,IN
3389227008,3389227519,CN
3389227520,3389228031,PK
-3389228032,3389228799,AU
+3389228032,3389228543,AU
3389228800,3389229055,SG
3389229056,3389229311,JP
3389229312,3389229567,AU
@@ -125637,6 +147531,7 @@
3389284352,3389292543,BD
3389292544,3389300735,CN
3389300736,3389301247,ID
+3389301248,3389301759,HK
3389301760,3389302015,IN
3389302016,3389302527,AU
3389302528,3389302783,PK
@@ -125786,7 +147681,8 @@
3389595648,3389595903,CN
3389595904,3389596159,AU
3389596160,3389596671,CN
-3389596672,3389597439,SG
+3389596672,3389596927,MY
+3389596928,3389597439,SG
3389597440,3389597695,MY
3389597696,3389599743,MN
3389599744,3389600255,CN
@@ -125952,7 +147848,7 @@
3389962240,3389962751,CN
3389962752,3389963007,AU
3389963264,3389966335,AU
-3389966336,3389968383,SG
+3389966336,3389967359,SG
3389968384,3389968895,CN
3389968896,3389969663,AU
3389969664,3389969919,CN
@@ -126049,13 +147945,14 @@
3390484480,3390488575,GU
3390488576,3390492671,BD
3390492672,3390496767,JP
-3390496768,3390500863,NC
+3390496768,3390500351,NC
+3390500352,3390500479,AU
+3390500480,3390500863,NC
3390500864,3390502911,HK
3390502912,3390504959,CN
3390504960,3390767103,JP
3390767104,3390769407,NZ
3390769408,3390769663,IN
-3390769664,3390770175,TH
3390770176,3390770431,CN
3390770432,3390770687,AU
3390770688,3390770943,CN
@@ -126070,7 +147967,7 @@
3390963712,3391094783,KR
3391094784,3391356927,JP
3391356928,3391369215,NZ
-3391369216,3391373311,AU
+3391369216,3391373311,KH
3391373312,3391414783,NZ
3391414784,3391415039,CN
3391415040,3391444479,NZ
@@ -126580,11 +148477,7 @@
3391954944,3391971327,HK
3391971328,3391979519,AU
3391979520,3391979775,HK
-3391979776,3391979951,JP
-3391979952,3391979955,CN
-3391979956,3391979957,JP
-3391979958,3391979959,CN
-3391979960,3391980031,JP
+3391979776,3391980031,JP
3391980032,3391980543,HK
3391980544,3391983615,MY
3391983616,3391984639,NP
@@ -126618,7 +148511,7 @@
3392079872,3392086015,JP
3392086016,3392094207,PK
3392094208,3392098559,ID
-3392098560,3392098815,AU
+3392098560,3392098815,NZ
3392098816,3392099327,CN
3392099328,3392100095,AU
3392100096,3392100351,VN
@@ -126700,7 +148593,6 @@
3392418560,3392418815,SG
3392418816,3392419071,ID
3392419072,3392419327,IN
-3392419328,3392419839,PH
3392419840,3392420351,IN
3392420352,3392420863,ID
3392420864,3392421119,AU
@@ -126743,19 +148635,19 @@
3392479232,3392487423,AU
3392487424,3392499711,IN
3392499712,3392503807,JP
-3392503808,3392505343,HK
+3392503808,3392504831,HK
+3392505088,3392505343,HK
3392505344,3392505855,IN
3392505856,3392506879,HK
3392506880,3392507135,CN
-3392507136,3392507647,HK
+3392507392,3392507647,HK
3392507648,3392507903,CN
3392507904,3392508927,KH
3392508928,3392510975,HK
3392510976,3392511999,MM
3392512000,3392516095,BD
-3392516096,3392519167,AU
-3392519168,3392519679,NZ
-3392519680,3392524287,AU
+3392516096,3392520191,NZ
+3392520192,3392524287,AU
3392524288,3392528383,JP
3392528384,3392536575,ID
3392536576,3392602111,IN
@@ -126780,8 +148672,7 @@
3392681984,3392682239,SG
3392682240,3392682495,VN
3392682496,3392683007,IN
-3392683008,3392683519,AU
-3392683520,3392684031,NL
+3392683008,3392684031,AU
3392684032,3392688127,JP
3392688128,3392692223,MY
3392692224,3392700415,IN
@@ -126825,7 +148716,7 @@
3392833536,3392835583,AU
3392835584,3392839679,JP
3392839680,3392845823,ID
-3392845824,3392847871,HK
+3392845824,3392847871,SG
3392847872,3392856063,ID
3392856064,3392857087,AU
3392857088,3392857343,IN
@@ -126845,7 +148736,7 @@
3392863232,3392864255,BD
3392864256,3392864767,CN
3392864768,3392865279,IN
-3392865280,3392866303,NU
+3392865280,3392866303,NZ
3392866304,3392867327,MY
3392867328,3392868351,PK
3392868352,3392880639,AU
@@ -126877,6 +148768,7 @@
3392926720,3392927231,IN
3392927232,3392927743,AU
3392927744,3392927999,IN
+3392928000,3392928255,HK
3392928256,3392928767,TW
3392928768,3392929279,VN
3392929280,3392929535,PK
@@ -126913,13 +148805,16 @@
3393016832,3393017855,HK
3393017856,3393018879,CN
3393018880,3393019903,AU
-3393019904,3393021439,ID
+3393019904,3393020159,ID
+3393020160,3393020415,HK
+3393020416,3393021439,ID
3393021440,3393021695,IN
3393021696,3393021951,HK
3393021952,3393022463,ID
3393022464,3393022975,VU
3393023232,3393023487,AU
3393023488,3393023743,SG
+3393023744,3393023999,HK
3393024000,3393024511,ID
3393024512,3393025023,NZ
3393025024,3393025279,AU
@@ -127107,9 +149002,7 @@
3393736704,3393740799,CN
3393740800,3393741567,US
3393741568,3393741823,MG
-3393741824,3393742847,US
-3393742848,3393743871,TL
-3393743872,3393744895,US
+3393741824,3393744895,US
3393744896,3393748991,CN
3393748992,3393765375,AU
3393765376,3393773567,ID
@@ -127152,6 +149045,7 @@
3393858816,3393859071,ID
3393859072,3393859327,AU
3393859328,3393859583,JP
+3393859584,3393859839,BD
3393859840,3393860095,AU
3393860096,3393860607,HK
3393860608,3393860863,CN
@@ -127166,11 +149060,11 @@
3393863680,3393865727,AU
3393865728,3393867775,ID
3393867776,3393871871,CN
-3393871872,3393872127,HK
-3393872128,3393872383,JP
-3393872384,3393872655,HK
+3393871872,3393872655,HK
3393872656,3393872656,IN
-3393872657,3393874943,HK
+3393872657,3393872895,HK
+3393872896,3393873919,PH
+3393873920,3393874943,HK
3393874944,3393875967,AU
3393875968,3393876991,HK
3393876992,3393878015,SG
@@ -127223,7 +149117,7 @@
3394041856,3394042879,AU
3394042880,3394043903,CN
3394043904,3394060287,HK
-3394060288,3394064383,ID
+3394060288,3394064383,VU
3394064384,3394066431,CN
3394066432,3394067455,AU
3394067456,3394068479,CN
@@ -127236,8 +149130,8 @@
3394087472,3394087487,CN
3394087488,3394111487,HK
3394111488,3394113535,CN
-3394113536,3394116095,SG
-3394116096,3394116607,AU
+3394113536,3394116351,SG
+3394116352,3394116607,AU
3394116608,3394117631,SG
3394117632,3394121727,AU
3394121728,3394125823,SG
@@ -127257,8 +149151,7 @@
3394179072,3394181119,BD
3394181120,3394183167,KH
3394183168,3394191359,NP
-3394191360,3394207743,SG
-3394207744,3394215935,JP
+3394191360,3394215935,JP
3394215936,3394220031,AU
3394220032,3394232319,SG
3394232320,3394234367,CN
@@ -127295,7 +149188,9 @@
3394351104,3394355199,CN
3394355200,3394359295,IN
3394359296,3394363391,AU
-3394363392,3394441215,HK
+3394363392,3394365951,HK
+3394365952,3394366463,JP
+3394366464,3394441215,HK
3394441216,3394453503,IN
3394453504,3394461695,AU
3394461696,3394465791,SG
@@ -127551,7 +149446,7 @@
3395178496,3395178751,ID
3395178752,3395179007,CN
3395179008,3395179263,VN
-3395179264,3395180031,ID
+3395179264,3395179519,ID
3395180032,3395180287,JP
3395180288,3395180543,HK
3395180544,3395181055,VN
@@ -127570,7 +149465,9 @@
3395219456,3395223551,TH
3395223552,3395231743,CN
3395231744,3395239935,JP
-3395239936,3395254783,SG
+3395239936,3395244031,SG
+3395244032,3395248127,AU
+3395248128,3395254783,SG
3395254784,3395255039,IN
3395255040,3395256319,SG
3395256320,3395264511,ID
@@ -127609,10 +149506,9 @@
3397087232,3397088255,HK
3397088256,3397090303,CN
3397090304,3397091327,TW
-3397091328,3397093887,MP
-3397093888,3397094399,GU
-3397094400,3397097471,MP
-3397097472,3397099519,GU
+3397091328,3397094143,MP
+3397094144,3397095423,GU
+3397095424,3397099519,MP
3397099520,3397103615,HK
3397103616,3397105663,LA
3397105664,3397107711,JP
@@ -127634,7 +149530,6 @@
3397174016,3397174271,AU
3397174272,3397175295,ID
3397175296,3397175807,AU
-3397175808,3397176063,IN
3397176064,3397176319,ID
3397176320,3397176575,VN
3397176576,3397176831,ID
@@ -127649,7 +149544,6 @@
3397206016,3397210111,BD
3397210112,3397211135,ID
3397211136,3397212159,AU
-3397212160,3397212671,ID
3397212672,3397213183,HK
3397213184,3397213439,IN
3397213440,3397213695,AU
@@ -127701,7 +149595,9 @@
3397338456,3397338457,JP
3397338458,3397338459,HK
3397338460,3397338463,JP
-3397338464,3397339647,HK
+3397338464,3397338547,HK
+3397338548,3397338551,JP
+3397338552,3397339647,HK
3397339648,3397339687,SG
3397339688,3397340927,HK
3397340928,3397341183,TH
@@ -127841,9 +149737,14 @@
3397869824,3397870079,AU
3397870080,3397871871,JP
3397871872,3397872127,AU
-3397872128,3397887999,JP
+3397872128,3397875711,JP
+3397875712,3397876735,AU
+3397876736,3397877759,TW
+3397877760,3397887999,JP
3397888000,3397889023,IN
-3397889024,3397895423,JP
+3397889024,3397891071,JP
+3397891072,3397892095,IN
+3397892096,3397895423,JP
3397895424,3397895679,AU
3397895680,3397906111,JP
3397906112,3397906175,IN
@@ -127897,7 +149798,7 @@
3398172672,3398180863,JP
3398180864,3398189055,IN
3398189056,3398205439,HK
-3398205440,3398208511,IN
+3398205440,3398207487,IN
3398208512,3398213631,CN
3398213632,3398221823,TW
3398221824,3398230015,JP
@@ -127934,12 +149835,11 @@
3398467584,3398475775,BT
3398475776,3398481919,AU
3398481920,3398483967,LA
-3398483968,3398484735,US
-3398484736,3398484991,HK
+3398483968,3398484991,US
3398484992,3398485247,AQ
3398485248,3398485503,CN
3398485504,3398485759,US
-3398485760,3398486015,AQ
+3398485760,3398486015,CN
3398486016,3398487039,BD
3398487040,3398488063,NZ
3398488064,3398492159,TW
@@ -128069,15 +149969,18 @@
3399139328,3399147519,TW
3399147520,3399155711,PK
3399155712,3399196671,ID
-3399196672,3399204863,AU
+3399196672,3399200767,AU
3399204864,3399221247,HK
3399221248,3399286783,SG
3399286784,3399303167,JP
3399303168,3399311359,IN
3399311360,3399319551,JP
-3399319552,3399332351,SG
+3399319552,3399331839,SG
+3399331840,3399332351,MY
3399332352,3399332863,AU
-3399332864,3399335935,SG
+3399332864,3399333375,HK
+3399333376,3399335423,MY
+3399335424,3399335935,IN
3399335936,3399344127,CN
3399344128,3399352319,JP
3399352320,3399389183,ID
@@ -128177,7 +150080,9 @@
3399826432,3399826943,PH
3399826944,3399827455,IN
3399827456,3399835647,AU
-3399835648,3399839743,US
+3399835648,3399839231,US
+3399839232,3399839295,TW
+3399839296,3399839743,US
3399839744,3399841791,JP
3399841792,3399842815,HK
3399842816,3399843839,AU
@@ -128214,7 +150119,9 @@
3399995392,3399999487,KR
3399999488,3400000255,JP
3400000256,3400000511,AU
-3400000512,3400002303,JP
+3400000512,3400001791,JP
+3400001792,3400002047,PH
+3400002048,3400002303,JP
3400002304,3400002367,HK
3400002368,3400006143,JP
3400006144,3400006399,HK
@@ -128229,7 +150136,8 @@
3400032256,3400040447,AU
3400040448,3400044543,CN
3400044544,3400045567,IN
-3400045568,3400047615,HK
+3400045568,3400046591,HK
+3400046592,3400047615,KR
3400047616,3400048639,IN
3400048640,3400056831,CN
3400056832,3400060927,TW
@@ -128338,9 +150246,7 @@
3400446019,3400450047,NZ
3400450048,3400458239,JP
3400458240,3400466431,AU
-3400466432,3400491007,MO
-3400491008,3400495103,CN
-3400495104,3400499199,MO
+3400466432,3400499199,MO
3400499200,3400503295,NZ
3400503296,3400507391,JP
3400507392,3400515583,MO
@@ -128371,10 +150277,10 @@
3400649944,3400649951,HK
3400649952,3400650143,JP
3400650144,3400650159,HK
-3400650160,3400650409,JP
-3400650410,3400650410,AU
-3400650411,3400650751,JP
-3400650752,3400654847,AU
+3400650160,3400650407,JP
+3400650408,3400650431,AU
+3400650432,3400650495,JP
+3400650496,3400654847,AU
3400654848,3400663039,IN
3400663040,3400683519,MY
3400683520,3400691711,JP
@@ -128421,7 +150327,10 @@
3400925184,3400933375,TH
3400933376,3400937471,CN
3400937472,3400941567,ID
-3400941568,3400966143,AU
+3400941568,3400949759,AU
+3400949760,3400953855,JP
+3400953856,3400957951,US
+3400957952,3400966143,AU
3400966144,3400974335,ID
3400974336,3400982527,CN
3400982528,3400990719,HK
@@ -128430,11 +150339,8 @@
3401003008,3401007103,JP
3401007104,3401008143,CA
3401008144,3401008159,MY
-3401008160,3401010175,CA
-3401010176,3401010183,MY
-3401010184,3401010191,CA
-3401010192,3401010207,MY
-3401010208,3401011199,CA
+3401008160,3401009151,CA
+3401009152,3401011199,MY
3401011200,3401015295,JP
3401015296,3401023487,AU
3401023488,3401056255,TH
@@ -128444,7 +150350,8 @@
3401404416,3401408511,CN
3401408512,3401416703,HK
3401416704,3401416959,KR
-3401416960,3401420799,SG
+3401416960,3401418751,SG
+3401418752,3401420799,HK
3401420800,3401424895,JP
3401424896,3401428991,NZ
3401428992,3401431039,JP
@@ -128483,7 +150390,8 @@
3405786368,3405787135,CN
3405787136,3405793279,AU
3405793280,3405793535,US
-3405793536,3405795583,AU
+3405793536,3405793663,GB
+3405793664,3405795583,AU
3405795584,3405796351,CN
3405796352,3405797887,AU
3405797888,3405798399,CN
@@ -128669,9 +150577,7 @@
3406208768,3406209023,CN
3406209024,3406225407,AU
3406225408,3406229503,CN
-3406229504,3406231039,AU
-3406231040,3406231295,NZ
-3406231296,3406231551,AU
+3406229504,3406231551,AU
3406231552,3406232063,CN
3406232064,3406266623,AU
3406266624,3406266879,CN
@@ -128754,8 +150660,8 @@
3406382592,3406383359,CN
3406383360,3406383871,AU
3406383872,3406384639,CN
-3406384640,3406384895,SG
-3406384896,3406389247,AU
+3406384640,3406385151,SG
+3406385152,3406389247,AU
3406389248,3406390783,CN
3406390784,3406392319,AU
3406392320,3406392575,CN
@@ -129270,7 +151176,7 @@
3407294208,3407294463,CN
3407294464,3407300863,AU
3407300864,3407301119,CN
-3407301120,3407303935,AU
+3407301376,3407303935,AU
3407303936,3407304191,CN
3407304192,3407305727,AU
3407305728,3407306751,CN
@@ -129282,7 +151188,8 @@
3407310848,3407311103,CN
3407311104,3407314687,AU
3407314688,3407314943,HK
-3407314944,3407315455,AU
+3407314944,3407315199,CA
+3407315200,3407315455,AU
3407315456,3407315711,CN
3407315712,3407318015,AU
3407318016,3407318527,CN
@@ -129292,7 +151199,7 @@
3407328768,3407329023,CN
3407329024,3407329791,AU
3407329792,3407330303,CN
-3407330304,3407331327,AU
+3407330816,3407331327,AU
3407331328,3407331583,CN
3407331584,3407332607,AU
3407332608,3407333119,CN
@@ -129365,7 +151272,9 @@
3407403776,3407404031,CN
3407404032,3407410175,AU
3407410176,3407410431,CN
-3407410432,3407418111,AU
+3407410432,3407410943,AU
+3407410944,3407411199,US
+3407411200,3407418111,AU
3407418112,3407418879,CN
3407418880,3407425023,AU
3407425024,3407425279,CN
@@ -129373,7 +151282,7 @@
3407425536,3407427583,HK
3407427584,3407429631,AU
3407429632,3407430143,CN
-3407430144,3407436543,AU
+3407430400,3407436543,AU
3407436544,3407436799,CN
3407436800,3407438591,AU
3407438592,3407439103,CN
@@ -129415,10 +151324,8 @@
3407473408,3407473919,CN
3407473920,3407475199,AU
3407475200,3407475455,CN
-3407475456,3407480831,AU
-3407480832,3407480912,JP
-3407480913,3407480913,AU
-3407480914,3407481223,JP
+3407475456,3407481087,AU
+3407481088,3407481223,JP
3407481224,3407481231,AU
3407481232,3407481343,JP
3407481344,3407481855,AU
@@ -129566,7 +151473,7 @@
3407642624,3407643135,TH
3407643136,3407643391,AU
3407643392,3407643647,CN
-3407643648,3407644671,AU
+3407643648,3407644159,AU
3407644672,3407644927,CN
3407644928,3407645695,AU
3407645696,3407645951,CN
@@ -129631,7 +151538,8 @@
3407723264,3407723519,CN
3407723520,3407723775,AU
3407723776,3407724287,CN
-3407724288,3407727871,AU
+3407724288,3407726591,AU
+3407727616,3407727871,AU
3407727872,3407728127,CN
3407728128,3407729151,AU
3407729152,3407729407,CN
@@ -129851,7 +151759,9 @@
3407982080,3407982335,CN
3407982336,3407984895,AU
3407984896,3407985151,CN
-3407985152,3407987711,AU
+3407985152,3407985919,AU
+3407985920,3407986175,HK
+3407986176,3407987711,AU
3407987712,3407987967,PH
3407987968,3407988223,AU
3407988224,3407988735,IN
@@ -130113,7 +152023,9 @@
3409879296,3409879551,CN
3409879552,3409882111,AU
3409882112,3409883135,IN
-3409883136,3409887999,AU
+3409883136,3409884159,AU
+3409884160,3409885183,US
+3409885184,3409887999,AU
3409888000,3409888255,SG
3409888256,3409888511,AU
3409888512,3409888767,CN
@@ -130146,7 +152058,8 @@
3410813952,3410814975,IN
3410814976,3410817023,HK
3410817024,3410818047,CN
-3410818048,3410818815,JP
+3410818048,3410818559,JP
+3410818560,3410818815,SG
3410818816,3410819071,CN
3410819072,3410820095,IN
3410820096,3410821119,LA
@@ -130220,10 +152133,11 @@
3411051520,3411052543,CN
3411052544,3411052544,JP
3411052545,3411052799,HK
-3411052800,3411053055,JP
-3411053056,3411054591,HK
+3411052800,3411053567,JP
+3411053568,3411054591,HK
3411054592,3411058687,CN
-3411058688,3411061247,AU
+3411058688,3411060735,KH
+3411060736,3411061247,AU
3411061248,3411061759,KH
3411061760,3411062783,AU
3411062784,3411064831,HK
@@ -130286,6 +152200,7 @@
3411189760,3411197951,AU
3411197952,3411202047,BD
3411202048,3411204607,AU
+3411204608,3411204863,BD
3411204864,3411205631,KR
3411205632,3411206143,HK
3411206144,3411210239,CN
@@ -130302,14 +152217,19 @@
3411230720,3411247103,HK
3411247104,3411255295,KR
3411255296,3411263487,BD
-3411263488,3411269631,AU
-3411269632,3411270143,HK
+3411263488,3411264511,AU
+3411264512,3411264767,NZ
+3411264768,3411269631,AU
+3411269632,3411269695,TW
+3411269696,3411270143,HK
3411270144,3411270399,NZ
3411270400,3411270655,AU
3411270656,3411271679,SG
3411271680,3411275775,CN
3411275776,3411277823,JP
-3411277824,3411278335,HK
+3411277824,3411277887,HK
+3411277888,3411277951,IN
+3411277952,3411278335,HK
3411278336,3411278591,SG
3411278592,3411278847,FJ
3411278848,3411296255,HK
@@ -130348,7 +152268,6 @@
3411550208,3411558399,CN
3411558400,3411566591,HK
3411566592,3411567615,IN
-3411567616,3411568639,GB
3411568640,3411569663,AU
3411569664,3411570687,HK
3411570688,3411574783,AU
@@ -130420,7 +152339,9 @@
3411836928,3411845119,MY
3411845120,3411853311,CN
3411853312,3411857407,IN
-3411857408,3411859249,JP
+3411857408,3411858175,JP
+3411858176,3411858431,HK
+3411858432,3411859249,JP
3411859250,3411859251,AU
3411859252,3411859815,JP
3411859816,3411859816,CN
@@ -130526,7 +152447,6 @@
3412819968,3412852735,TH
3412852736,3412918271,AU
3412918272,3412926463,KR
-3412926464,3412934655,MY
3412934656,3412951039,IN
3412951040,3413000191,NZ
3413000192,3413004287,LA
@@ -130539,7 +152459,9 @@
3413041152,3413043199,JP
3413043200,3413043967,CN
3413043968,3413044223,AU
-3413044224,3413045247,HK
+3413044224,3413045055,HK
+3413045056,3413045119,IN
+3413045120,3413045247,HK
3413045248,3413047295,IN
3413047296,3413098495,AU
3413098496,3413102591,JP
@@ -130601,10 +152523,11 @@
3413574400,3413574655,TW
3413574656,3413575679,PH
3413575680,3413576703,VN
-3413576704,3413576959,AU
+3413576704,3413576959,CX
3413576960,3413577215,ID
3413577216,3413577727,AU
-3413577728,3413578751,JP
+3413577728,3413578495,JP
+3413578496,3413578751,BD
3413578752,3413579007,PK
3413579008,3413579263,AU
3413579264,3413579775,JP
@@ -130965,14 +152888,12 @@
3414670848,3414671359,MY
3414671360,3415080959,JP
3415080960,3415082239,MY
-3415082240,3415083007,SG
+3415082240,3415082495,SG
+3415082496,3415083007,MY
3415083008,3415083519,AU
3415083520,3415084031,SG
3415084032,3415084543,CN
-3415084544,3415085055,US
-3415085056,3415087615,SG
-3415087616,3415087871,US
-3415087872,3415088127,SG
+3415084544,3415088127,SG
3415088128,3415089151,HK
3415089152,3415097343,MY
3415097344,3415103487,ID
@@ -130987,7 +152908,9 @@
3415137536,3415137791,NF
3415137792,3415138303,AU
3415138304,3415146495,CN
-3415146496,3415162879,LK
+3415146496,3415149311,LK
+3415149312,3415149567,GB
+3415149568,3415162879,LK
3415162880,3415171071,AU
3415171072,3415179263,JP
3415179264,3415187455,SG
@@ -130996,7 +152919,9 @@
3415195648,3415199743,NZ
3415199744,3415220223,AU
3415220224,3415224319,NZ
-3415224320,3415228415,US
+3415224320,3415224831,US
+3415224832,3415225087,AU
+3415225088,3415228415,US
3415228416,3415236607,KH
3415236608,3415244799,CN
3415244800,3415277567,TH
@@ -131036,7 +152961,9 @@
3415737600,3415737855,JP
3415737856,3415738879,SG
3415738880,3415739135,JP
-3415739136,3415740159,SG
+3415739136,3415739391,SG
+3415739392,3415739647,TH
+3415739648,3415740159,SG
3415740160,3415740415,JP
3415740416,3415741695,SG
3415741696,3415741951,JP
@@ -131052,9 +152979,7 @@
3415749888,3415750143,SG
3415750144,3415750399,JP
3415750400,3415751423,SG
-3415751424,3415751679,JP
-3415751680,3415751935,TH
-3415751936,3415752191,JP
+3415751424,3415752191,JP
3415752192,3415752703,SG
3415752704,3415760895,CN
3415760896,3415769087,NZ
@@ -131072,7 +152997,6 @@
3415814656,3415815167,TH
3415815168,3415816191,IN
3415816192,3415817215,JP
-3415817216,3415818239,MY
3415818240,3415822335,JP
3415822336,3415822847,MY
3415822848,3415823103,MV
@@ -131259,13 +153183,15 @@
3417038592,3417038847,NZ
3417038848,3417042943,CN
3417042944,3417044991,IN
-3417044992,3417045247,AU
-3417045248,3417045311,CX
+3417044992,3417045247,CX
+3417045248,3417045279,AU
+3417045280,3417045311,CX
3417045312,3417045375,AU
-3417045376,3417045759,CX
-3417045760,3417045823,AU
-3417045824,3417046015,CX
-3417046016,3417047039,AU
+3417045376,3417045887,CX
+3417045888,3417045951,AU
+3417045952,3417046015,CX
+3417046016,3417046527,AU
+3417046528,3417047039,CC
3417047040,3417055231,PH
3417055232,3417112575,TH
3417112576,3417128959,AU
@@ -131384,8 +153310,8 @@
3418208256,3418210303,LK
3418210304,3418218495,CN
3418218496,3418220543,BD
-3418220544,3418221567,HK
-3418221568,3418223615,CN
+3418220544,3418222591,HK
+3418222592,3418223615,CN
3418223616,3418226687,IN
3418226688,3418227711,BD
3418227712,3418228735,KR
@@ -131429,9 +153355,7 @@
3418294272,3418296319,VN
3418296320,3418297343,HK
3418297344,3418298367,CN
-3418298368,3418298623,HK
-3418298624,3418298879,CN
-3418298880,3418299391,HK
+3418298368,3418299391,HK
3418299392,3418300415,CN
3418300416,3418300927,BD
3418300928,3418301439,IN
@@ -131502,10 +153426,8 @@
3418636288,3418642943,JP
3418642944,3418643199,ID
3418643200,3418643455,JP
-3418643456,3418644479,AU
-3418644480,3418644735,JP
-3418644736,3418644863,AU
-3418644864,3418650807,JP
+3418643456,3418648575,AU
+3418648576,3418650807,JP
3418650808,3418650808,HK
3418650809,3418652671,JP
3418652672,3418750975,IN
@@ -131575,14 +153497,13 @@
3419529216,3419537407,CN
3419537408,3419541503,HK
3419541504,3419553791,KR
-3419553792,3419556095,AU
+3419553792,3419555839,AU
+3419555840,3419556095,HK
3419556096,3419556351,CN
-3419556352,3419556607,AU
+3419556352,3419556607,HK
3419556608,3419556863,CN
-3419556864,3419557119,AU
-3419557120,3419557120,HK
-3419557121,3419557887,AU
-3419557888,3419558399,ID
+3419556864,3419557631,HK
+3419557632,3419557887,AU
3419558400,3419558655,AU
3419558656,3419559935,ID
3419559936,3419560959,JP
@@ -131613,6 +153534,7 @@
3419791360,3419873279,AU
3419873280,3419877375,AF
3419877376,3419877631,ID
+3419877632,3419877887,IN
3419877888,3419878143,ID
3419878144,3419878399,IN
3419878400,3419879423,GU
@@ -131628,9 +153550,7 @@
3419906048,3419914239,PK
3419914240,3419922431,KR
3419922432,3419924479,JP
-3419924480,3419925503,HK
-3419925504,3419925759,JP
-3419925760,3419930623,HK
+3419924480,3419930623,HK
3419930624,3419971583,JP
3419971584,3419979775,KR
3419979776,3419996159,JP
@@ -131736,10 +153656,11 @@
3423143936,3423145983,CA
3423145984,3423162367,US
3423162368,3423163391,CA
-3423163392,3423164415,US
-3423166464,3423182847,US
+3423163392,3423182847,US
3423182848,3423184895,CA
-3423184896,3423258623,US
+3423184896,3423225855,US
+3423225856,3423226879,CA
+3423226880,3423258623,US
3423258624,3423260671,CA
3423260672,3423268863,US
3423268864,3423269887,CA
@@ -131749,16 +153670,17 @@
3423287808,3423303679,US
3423303680,3423304703,CA
3423304704,3423311871,US
-3423311872,3423313151,VI
-3423313152,3423313407,US
+3423311872,3423313215,VI
+3423313216,3423313407,US
3423313408,3423313919,VI
-3423313920,3423366479,US
+3423313920,3423328767,US
+3423328768,3423329023,CA
+3423329024,3423366479,US
3423366480,3423366495,IT
3423366496,3423371263,US
3423371264,3423375359,ZA
3423375360,3423379455,CA
-3423379456,3423404031,US
-3423406080,3423410175,US
+3423379456,3423410175,US
3423410176,3423412223,BM
3423412224,3423416319,US
3423416320,3423417343,CA
@@ -131843,9 +153765,13 @@
3424507136,3424507391,CA
3424507392,3425173503,US
3425173504,3425304575,CA
-3425304576,3425471487,US
+3425304576,3425441791,US
+3425441792,3425443839,GB
+3425443840,3425471487,US
3425471488,3425472511,CA
-3425472512,3425516799,US
+3425472512,3425483775,US
+3425483776,3425484799,GU
+3425484800,3425516799,US
3425516800,3425517055,MX
3425517056,3425697791,US
3425697792,3425699839,CA
@@ -131865,7 +153791,9 @@
3426387968,3426388991,MX
3426388992,3426400255,US
3426400256,3426400511,CA
-3426400512,3426418687,US
+3426400512,3426415871,US
+3426415872,3426416127,GB
+3426416128,3426418687,US
3426418688,3426420479,GB
3426420480,3426420735,US
3426420736,3426435071,GB
@@ -131894,9 +153822,7 @@
3427127296,3427127551,CA
3427127552,3427487743,US
3427487744,3427487999,GB
-3427488000,3427488767,US
-3427488768,3427489023,AU
-3427489024,3427503615,US
+3427488000,3427503615,US
3427503616,3427503871,AU
3427503872,3427504127,SG
3427504128,3427618303,US
@@ -132068,10 +153994,8 @@
3428434944,3428435199,CA
3428435200,3428437503,US
3428437504,3428437759,MX
-3428437760,3428582655,US
-3428582656,3428582911,CA
-3428582912,3428585215,US
-3428585216,3428585471,CA
+3428437760,3428581375,US
+3428581376,3428585471,CA
3428585472,3428585983,US
3428585984,3428586239,CA
3428586240,3428586495,US
@@ -132083,16 +154007,12 @@
3428588032,3428588543,US
3428588544,3428588799,CA
3428588800,3428591871,US
-3428591872,3428592127,CA
-3428592128,3428592383,US
-3428592384,3428593919,CA
+3428591872,3428593919,CA
3428593920,3428594687,US
3428594688,3428595199,CA
3428595200,3428596223,US
-3428596224,3428596735,CA
-3428596736,3428597247,US
-3428597248,3428597503,CA
-3428597504,3428598015,US
+3428596224,3428597759,CA
+3428597760,3428598015,US
3428598016,3428598271,CA
3428598272,3428598591,US
3428598592,3428598623,CA
@@ -132106,8 +154026,8 @@
3428602112,3428602367,CA
3428602368,3428603903,US
3428603904,3428605183,CA
-3428605184,3428607999,US
-3428608000,3428609023,CA
+3428605184,3428605951,US
+3428605952,3428609023,CA
3428609024,3428610047,US
3428610048,3428610559,CA
3428610560,3428610815,US
@@ -132150,7 +154070,9 @@
3428646656,3428646911,CA
3428646912,3428660735,US
3428660736,3428661503,CA
-3428661504,3428721755,US
+3428661504,3428695567,US
+3428695568,3428695583,JP
+3428695584,3428721755,US
3428721756,3428721756,NO
3428721757,3428743167,US
3428743168,3428744191,CA
@@ -132160,19 +154082,31 @@
3428931464,3428931464,QA
3428931465,3428958207,US
3428958208,3428962303,CO
-3428962304,3429009479,US
-3429009480,3429009487,BE
+3428962304,3429009471,US
+3429009472,3429009487,BE
3429009488,3429027839,US
3429027840,3429028351,GB
-3429028352,3429028863,DE
+3429028352,3429028747,DE
+3429028748,3429028751,BE
+3429028752,3429028863,DE
3429028864,3429029375,FR
-3429029376,3429171199,US
+3429029376,3429029631,US
+3429029632,3429029887,GB
+3429029888,3429171199,US
3429171200,3429236735,CA
3429236736,3429381887,US
3429381888,3429382143,DE
-3429382144,3429500927,US
+3429382144,3429396223,US
+3429396224,3429396479,DE
+3429396480,3429408511,US
+3429408512,3429408767,DE
+3429408768,3429411583,US
+3429411584,3429411839,DE
+3429411840,3429500927,US
3429500928,3429502975,CA
-3429502976,3429616639,US
+3429502976,3429603583,US
+3429603584,3429603839,CA
+3429603840,3429616639,US
3429616640,3429616895,CA
3429616896,3429775359,US
3429775360,3429777407,TC
@@ -132253,11 +154187,22 @@
3431072000,3431072255,HK
3431072256,3431114495,US
3431114496,3431114751,CA
-3431114752,3431468031,US
+3431114752,3431358463,US
+3431358464,3431358716,SE
+3431358717,3431358717,US
+3431358718,3431358975,SE
+3431358976,3431468031,US
3431468032,3431469055,CA
3431469056,3431470847,US
3431470848,3431471103,GB
-3431471104,3431596287,US
+3431471104,3431517695,US
+3431517696,3431517823,NL
+3431517824,3431517887,US
+3431517888,3431517951,NL
+3431517952,3431518079,AU
+3431518080,3431518143,US
+3431518144,3431518207,AU
+3431518208,3431596287,US
3431596288,3431606271,CA
3431606272,3431609343,US
3431609344,3431613439,CA
@@ -132300,7 +154245,9 @@
3432004608,3432005631,CA
3432005632,3432009215,US
3432009216,3432009471,PR
-3432009472,3432106239,US
+3432009472,3432055807,US
+3432055808,3432056831,PH
+3432056832,3432106239,US
3432106240,3432106495,MX
3432106496,3432113407,US
3432113408,3432113663,CA
@@ -132316,7 +154263,9 @@
3432361984,3432366079,DE
3432366080,3432517119,US
3432517120,3432517631,NA
-3432517632,3432530943,US
+3432517632,3432520703,US
+3432520704,3432520959,GB
+3432520960,3432530943,US
3432530944,3432531007,TH
3432531008,3432531071,SG
3432531072,3432531199,JP
@@ -132334,7 +154283,9 @@
3432613888,3432634111,US
3432634112,3432634367,CA
3432634368,3432660991,US
-3432660992,3432663039,DE
+3432660992,3432662527,DE
+3432662528,3432662531,PT
+3432662532,3432663039,DE
3432663040,3432689151,US
3432689152,3432689663,CA
3432689664,3432695807,US
@@ -132394,7 +154345,9 @@
3434831360,3434831615,US
3434831616,3434872575,CA
3434872576,3435069439,US
-3435069440,3435134975,CA
+3435069440,3435072511,CA
+3435072512,3435072639,US
+3435072640,3435134975,CA
3435134976,3435216383,US
3435216384,3435216637,DE
3435216638,3435216638,US
@@ -132429,7 +154382,11 @@
3436684198,3436684198,DK
3436684199,3436697087,US
3436697088,3436697343,VE
-3436697344,3437232383,US
+3436697344,3436838911,US
+3436838912,3436965929,DE
+3436965930,3436965930,US
+3436965931,3436969983,DE
+3436969984,3437232383,US
3437232384,3437232639,CA
3437232640,3437242879,US
3437242880,3437243135,CA
@@ -132452,9 +154409,13 @@
3437301760,3437305855,US
3437305856,3437307391,CA
3437307392,3437307903,US
-3437307904,3437310975,CA
+3437307904,3437308415,CA
+3437308416,3437308927,BR
+3437308928,3437310975,CA
3437310976,3437311487,US
-3437311488,3437331711,CA
+3437311488,3437317119,CA
+3437317120,3437318143,US
+3437318144,3437331711,CA
3437331712,3437331967,US
3437331968,3437332479,CA
3437332480,3437332735,US
@@ -132524,7 +154485,9 @@
3437731584,3437731615,AF
3437731616,3437734399,US
3437734400,3437734655,SG
-3437734656,3437748223,US
+3437734656,3437741311,US
+3437741312,3437741567,HK
+3437741568,3437748223,US
3437748224,3437748479,GB
3437748480,3437748991,NL
3437748992,3437749247,US
@@ -132579,7 +154542,9 @@
3438252544,3438252799,US
3438252800,3438261759,CA
3438261760,3438262015,US
-3438262016,3438280703,CA
+3438262016,3438271487,CA
+3438271488,3438272511,US
+3438272512,3438280703,CA
3438280704,3438542847,US
3438542848,3438608383,CA
3438608384,3438610125,US
@@ -132590,11 +154555,11 @@
3438610326,3438610326,GB
3438610327,3438610408,US
3438610409,3438610410,GB
-3438610411,3438611455,US
-3438611456,3438611711,GB
-3438611712,3438611787,US
+3438610411,3438610431,US
+3438610432,3438611787,GB
3438611788,3438611791,HU
-3438611792,3438895103,US
+3438611792,3438612479,GB
+3438612480,3438895103,US
3438895104,3438896639,HN
3438896640,3438915605,US
3438915606,3438915606,GT
@@ -132602,9 +154567,11 @@
3439059712,3439059967,PR
3439059968,3439071103,US
3439071104,3439071135,MX
-3439071136,3448303615,US
-3448303616,3448303871,KY
-3448303872,3448377343,US
+3439071136,3444220159,US
+3444220160,3444220415,JP
+3444220416,3448338687,US
+3448338688,3448339455,GB
+3448339456,3448377343,US
3448377344,3448377855,AG
3448377856,3448379647,US
3448379648,3448379903,SG
@@ -132618,7 +154585,9 @@
3448398336,3448399103,CA
3448399104,3448399359,US
3448399360,3448399871,CA
-3448399872,3448444143,US
+3448399872,3448437791,US
+3448437792,3448437807,GB
+3448437808,3448444143,US
3448444144,3448444159,SG
3448444160,3448500479,US
3448500480,3448500735,SG
@@ -132727,7 +154696,11 @@
3449572070,3449573375,AU
3449573376,3449575423,US
3449575424,3449577471,AU
-3449577472,3449638911,US
+3449577472,3449598207,US
+3449598208,3449598463,GB
+3449598464,3449599999,US
+3449600000,3449602047,CA
+3449602048,3449638911,US
3449638912,3449639167,GB
3449639168,3449639423,US
3449639424,3449639679,GB
@@ -132808,7 +154781,9 @@
3451207424,3451207679,CH
3451207680,3451236351,US
3451236352,3451236607,HU
-3451236608,3451371519,US
+3451236608,3451293695,US
+3451293696,3451294719,GB
+3451294720,3451371519,US
3451371520,3451371775,GB
3451371776,3451503103,US
3451503104,3451503359,BR
@@ -132817,7 +154792,7 @@
3451507712,3451715839,US
3451715840,3451724543,CA
3451724544,3451725311,US
-3451725568,3451726847,CA
+3451725312,3451726847,CA
3451726848,3451727359,US
3451727360,3451737343,CA
3451737344,3451737599,US
@@ -132882,7 +154857,9 @@
3452516352,3452658431,US
3452658432,3452658687,HK
3452658688,3452715007,US
-3452715008,3452723199,CA
+3452715008,3452720383,CA
+3452720384,3452720639,US
+3452720640,3452723199,CA
3452723200,3452730623,US
3452730624,3452730879,HK
3452730880,3452764671,US
@@ -133118,22 +155095,21 @@
3453551846,3453552127,US
3453552128,3453552383,GB
3453552384,3453552639,US
-3453552640,3453552895,GB
-3453552896,3453553151,US
-3453553152,3453553407,GB
-3453553408,3453554431,US
-3453554432,3453554687,GB
+3453552640,3453554687,GB
3453554688,3453555967,US
3453555968,3453556031,GB
-3453556032,3453599999,US
+3453556032,3453587023,US
+3453587024,3453587071,SG
+3453587072,3453599999,US
3453600000,3453600767,GB
3453600768,3453607935,US
-3453607936,3453609983,KN
+3453607936,3453608959,KN
+3453608960,3453609983,LC
3453609984,3453610495,AG
-3453610496,3453611263,KN
-3453611264,3453611775,DM
-3453611776,3453612031,KN
-3453612032,3453612543,DM
+3453610496,3453610751,MS
+3453610752,3453611007,AG
+3453611008,3453611263,MS
+3453611264,3453612543,DM
3453612544,3453613055,KN
3453613056,3453614591,AG
3453614592,3453615103,DM
@@ -133146,8 +155122,7 @@
3454004998,3454004998,GB
3454004999,3454287871,US
3454287872,3454296063,GB
-3454296064,3454304255,JP
-3454304256,3454436351,US
+3454296064,3454436351,US
3454436352,3454436607,GU
3454436608,3454497791,US
3454497792,3454498815,MX
@@ -133180,11 +155155,7 @@
3454652416,3454661631,CA
3454661632,3454662655,US
3454662656,3454664447,CA
-3454664448,3454668799,US
-3454668800,3454669567,CA
-3454669568,3454669823,US
-3454669824,3454670847,CA
-3454670848,3454672895,US
+3454664448,3454672895,US
3454672896,3454681087,CA
3454681088,3454694143,US
3454694144,3454694399,CA
@@ -133335,10 +155306,10 @@
3455647232,3455647487,HK
3455647488,3455647743,IT
3455647744,3455713279,US
-3455713280,3455778815,CA
-3455778816,3455802623,US
-3455802624,3455802879,EG
-3455802880,3455848927,US
+3455713280,3455735039,CA
+3455735040,3455735167,US
+3455735168,3455778815,CA
+3455778816,3455848927,US
3455848928,3455848959,TW
3455848960,3455871999,US
3455872000,3455872255,ZM
@@ -133390,9 +155361,9 @@
3457684736,3457684991,CA
3457684992,3457756351,US
3457756352,3457756383,GB
-3457756384,3457762559,US
-3457762560,3457762687,CA
-3457762688,3457859839,US
+3457756384,3457762303,US
+3457762304,3457765375,CA
+3457765376,3457859839,US
3457859840,3457860095,CA
3457860096,3457892351,US
3457892352,3457892607,IN
@@ -133557,7 +155528,9 @@
3459731456,3459735551,CA
3459735552,3459745535,US
3459745536,3459745791,IT
-3459745792,3459848959,US
+3459745792,3459847807,US
+3459847808,3459847871,JP
+3459847872,3459848959,US
3459848960,3459849215,FR
3459849216,3459873311,US
3459873312,3459873327,MX
@@ -133565,7 +155538,8 @@
3460104704,3460105215,MX
3460105216,3460111971,US
3460111972,3460111972,MX
-3460111973,3460114431,US
+3460111973,3460111973,PE
+3460111974,3460114431,US
3460114432,3460116479,SR
3460116480,3460161535,US
3460161536,3460165631,PR
@@ -133579,7 +155553,9 @@
3460762368,3460762623,CA
3460762624,3460763391,US
3460763392,3460763647,VG
-3460763648,3460794623,US
+3460763648,3460785151,US
+3460785152,3460785919,CA
+3460785920,3460794623,US
3460794624,3460794879,CA
3460794880,3460878335,US
3460878336,3460878591,CA
@@ -133709,11 +155685,14 @@
3461332736,3461332991,SG
3461332992,3461356543,US
3461356544,3461357567,AS
-3461357568,3461409023,US
+3461357568,3461410047,US
+3461410048,3461410303,CA
+3461410304,3461410815,US
3461410816,3461414911,CA
-3461414912,3461462015,US
-3461462016,3461462271,AU
-3461462272,3461462527,NL
+3461414912,3461419007,US
+3461419008,3461423103,DE
+3461423104,3461462015,US
+3461462016,3461462527,AU
3461462528,3461462783,US
3461462784,3461463039,SG
3461463040,3461513727,US
@@ -133724,7 +155703,9 @@
3461515776,3461516031,CA
3461516032,3461516287,US
3461516288,3461516543,IL
-3461516544,3461808127,US
+3461516544,3461554175,US
+3461554176,3461556223,CA
+3461556224,3461808127,US
3461808128,3461873663,CA
3461873664,3461897727,US
3461897728,3461897983,CA
@@ -133826,7 +155807,9 @@
3462661376,3462661631,SG
3462661632,3463004159,US
3463004160,3463006207,CO
-3463006208,3463043071,US
+3463006208,3463017471,US
+3463017472,3463017599,HN
+3463017600,3463043071,US
3463043072,3463044095,ES
3463044096,3463089151,US
3463089152,3463090175,CA
@@ -133872,7 +155855,7 @@
3464203008,3464203263,RU
3464203264,3464203519,DE
3464203520,3464204799,US
-3464204800,3464205055,DK
+3464204800,3464205055,KW
3464205056,3464205311,NL
3464205312,3464205567,SE
3464205568,3464205823,US
@@ -133932,8 +155915,8 @@
3464630272,3464631295,US
3464631296,3464639487,CA
3464639488,3464639743,US
-3464639744,3464642047,CA
-3464642048,3464642559,US
+3464639744,3464641791,CA
+3464641792,3464642559,US
3464642560,3464642815,CA
3464642816,3464643071,US
3464643072,3464647935,CA
@@ -133963,17 +155946,17 @@
3465177088,3465179135,PE
3465179136,3465412607,US
3465412608,3465412863,HK
-3465412864,3465462783,US
-3465462784,3465463039,GB
-3465463040,3465466495,US
-3465466496,3465466527,GB
-3465466528,3465470207,US
+3465412864,3465461759,US
+3465461760,3465469951,GB
+3465469952,3465470207,US
3465470208,3465470463,GB
3465470464,3465474047,US
3465474048,3465476095,GB
3465476096,3465510911,US
3465510912,3465543679,JP
-3465543680,3465962495,US
+3465543680,3465953279,US
+3465953280,3465961471,CA
+3465961472,3465962495,US
3465962496,3465962751,CA
3465962752,3466067967,US
3466067968,3466068223,CA
@@ -133991,9 +155974,9 @@
3466072776,3466072783,CA
3466072784,3466073055,US
3466073056,3466073087,CA
-3466073088,3466074367,US
-3466074368,3466074623,CA
-3466074624,3466080191,US
+3466073088,3466074111,US
+3466074112,3466076159,CA
+3466076160,3466080191,US
3466080192,3466080199,CA
3466080200,3466080255,US
3466080256,3466084351,CA
@@ -134019,7 +156002,9 @@
3466907648,3466909695,DE
3466909696,3466914303,US
3466914304,3466914559,FR
-3466914560,3466926551,US
+3466914560,3466926285,US
+3466926286,3466926286,FR
+3466926287,3466926551,US
3466926552,3466926559,IT
3466926560,3466929407,US
3466929408,3466929663,IT
@@ -134031,9 +156016,7 @@
3466938808,3466938811,GB
3466938812,3466958079,US
3466958080,3466958335,CA
-3466958336,3466965503,US
-3466965504,3466965759,NL
-3466965760,3467051007,US
+3466958336,3467051007,US
3467051008,3467051263,CA
3467051264,3467051519,US
3467051520,3467056639,CA
@@ -134048,7 +156031,9 @@
3467229952,3467378687,US
3467378688,3467444223,CA
3467444224,3467554815,US
-3467554816,3467567103,CA
+3467554816,3467555825,CA
+3467555826,3467555826,US
+3467555827,3467567103,CA
3467567104,3467619935,US
3467619936,3467619967,CA
3467619968,3467706367,US
@@ -134223,9 +156208,22 @@
3468368896,3468443647,US
3468443648,3468460031,CA
3468460032,3468468223,BM
-3468468224,3468545791,US
-3468545792,3468546047,SG
-3468546048,3468597759,US
+3468468224,3468492799,US
+3468492800,3468496895,NL
+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
+3468554240,3468555263,NL
+3468555264,3468556287,US
+3468556288,3468557311,DE
+3468557312,3468597759,US
3468597760,3468598391,SG
3468598392,3468598399,NL
3468598400,3468599039,SG
@@ -134249,22 +156247,32 @@
3468682576,3468682591,HK
3468682592,3468682671,SG
3468682672,3468682735,HK
-3468682736,3468682751,US
-3468682752,3468682911,HK
-3468682912,3468682927,US
-3468682928,3468683103,HK
-3468683104,3468683279,US
+3468682736,3468682767,US
+3468682768,3468682911,HK
+3468682912,3468682943,US
+3468682944,3468683087,HK
+3468683088,3468683279,US
3468683280,3468683311,HK
3468683312,3468685311,US
-3468685312,3468685663,IE
+3468685312,3468685327,IE
+3468685328,3468685343,US
+3468685344,3468685535,IE
+3468685536,3468685583,US
+3468685584,3468685663,IE
3468685664,3468685791,NL
3468685792,3468685807,US
3468685808,3468685823,NL
3468685824,3468687087,US
3468687088,3468687263,NL
3468687264,3468687455,US
-3468687456,3468687631,IE
-3468687632,3468687983,NL
+3468687456,3468687583,IE
+3468687584,3468687615,US
+3468687616,3468687631,IE
+3468687632,3468687775,NL
+3468687776,3468687791,US
+3468687792,3468687951,NL
+3468687952,3468687967,US
+3468687968,3468687983,NL
3468687984,3468688159,IE
3468688160,3468688255,US
3468688256,3468688271,IE
@@ -134274,7 +156282,8 @@
3468688368,3468688399,IE
3468688400,3468688431,NL
3468688432,3468688463,IE
-3468688464,3468688495,NL
+3468688464,3468688479,NL
+3468688480,3468688495,US
3468688496,3468688527,IE
3468688528,3468688559,NL
3468688560,3468688591,IE
@@ -134294,19 +156303,27 @@
3468798464,3468798719,BE
3468798720,3468798975,US
3468798976,3468799231,BE
-3468799232,3468802303,US
+3468799232,3468799999,US
+3468800000,3468802047,GB
+3468802048,3468802303,US
3468802304,3468802559,CA
3468802560,3468894207,US
-3468894208,3468902399,DE
+3468894208,3468898815,DE
+3468898816,3468899327,US
+3468899328,3468902399,DE
3468902400,3469055743,US
3469055744,3469055999,CA
-3469056000,3469070335,US
-3469070336,3469070591,CA
-3469070592,3469176319,US
+3469056000,3469131775,US
+3469131776,3469132799,CA
+3469132800,3469176319,US
3469176320,3469176575,MX
3469176576,3469186303,US
3469186304,3469186559,MX
-3469186560,3469893631,US
+3469186560,3469272063,US
+3469272064,3469272575,DE
+3469272576,3469279231,US
+3469279232,3469283327,PH
+3469283328,3469893631,US
3469893632,3469901823,CA
3469901824,3469989887,US
3469989888,3469990399,CA
@@ -134315,15 +156332,13 @@
3470135296,3470136319,LC
3470136320,3470137343,AG
3470137344,3470139391,VG
-3470139392,3470153727,US
-3470153728,3470153983,IN
-3470153984,3470192639,US
+3470139392,3470192639,US
3470192640,3470194927,CA
3470194928,3470194935,US
3470194936,3470196735,CA
3470196736,3470453247,US
-3470453248,3470453503,GB
-3470453504,3470458879,US
+3470453248,3470453759,GB
+3470453760,3470458879,US
3470458880,3470475263,KR
3470475264,3470509311,US
3470509312,3470509567,CA
@@ -134376,9 +156391,7 @@
3470884864,3470885887,HK
3470885888,3470886655,US
3470886656,3470886911,GB
-3470886912,3470912255,US
-3470912256,3470912511,AU
-3470912512,3471057919,US
+3470886912,3471057919,US
3471057920,3471058943,VE
3471058944,3471059967,US
3471059968,3471060223,ES
@@ -134474,7 +156487,9 @@
3475670272,3475670527,AI
3475670528,3475670783,LC
3475670784,3475670847,DM
-3475670848,3475671039,AG
+3475670848,3475670857,AG
+3475670858,3475670858,DM
+3475670859,3475671039,AG
3475671040,3475684873,US
3475684874,3475684874,HN
3475684875,3475723779,US
@@ -134487,11 +156502,13 @@
3475882800,3475882815,FR
3475882816,3475885951,US
3475885952,3475885999,CA
-3475886000,3475896575,US
-3475896576,3475896831,FR
-3475896832,3475897471,US
+3475886000,3475896319,US
+3475896320,3475897343,FR
+3475897344,3475897471,US
3475897472,3475897503,FR
-3475897504,3475906711,US
+3475897504,3475901823,US
+3475901824,3475901951,TH
+3475901952,3475906711,US
3475906712,3475906715,IE
3475906716,3475907735,US
3475907736,3475907739,SG
@@ -134507,11 +156524,45 @@
3475909144,3475909359,US
3475909360,3475909367,IE
3475909368,3475910655,US
-3475910656,3475911519,SG
+3475910656,3475910719,SG
+3475910720,3475910783,US
+3475910784,3475910819,SG
+3475910820,3475910831,US
+3475910832,3475910895,SG
+3475910896,3475910911,US
+3475910912,3475911039,SG
+3475911040,3475911167,US
+3475911168,3475911427,SG
+3475911428,3475911435,US
+3475911436,3475911519,SG
3475911520,3475911551,HK
-3475911552,3475912959,SG
-3475912960,3475913215,US
-3475913216,3475914751,SG
+3475911552,3475911583,SG
+3475911584,3475911599,US
+3475911600,3475911647,SG
+3475911648,3475911655,US
+3475911656,3475911663,SG
+3475911664,3475911667,US
+3475911668,3475911671,SG
+3475911672,3475911675,US
+3475911676,3475912127,SG
+3475912128,3475912143,US
+3475912144,3475912159,SG
+3475912160,3475912167,US
+3475912168,3475912211,SG
+3475912212,3475912223,US
+3475912224,3475912271,SG
+3475912272,3475912287,US
+3475912288,3475912415,SG
+3475912416,3475912447,US
+3475912448,3475912703,SG
+3475912704,3475913215,US
+3475913216,3475913471,SG
+3475913472,3475913503,US
+3475913504,3475913983,SG
+3475913984,3475914239,US
+3475914240,3475914495,SG
+3475914496,3475914559,US
+3475914560,3475914751,SG
3475914752,3475914815,US
3475914816,3475914847,JP
3475914848,3475914855,US
@@ -134595,7 +156646,15 @@
3476447232,3476455423,CA
3476455424,3476881407,US
3476881408,3476946943,CA
-3476946944,3477384711,US
+3476946944,3477229823,US
+3477229824,3477230079,CA
+3477230080,3477230591,NL
+3477230592,3477231103,DE
+3477231104,3477231359,NL
+3477231360,3477235711,US
+3477235712,3477236223,GB
+3477236224,3477236479,IT
+3477236480,3477384711,US
3477384712,3477384719,CN
3477384720,3477384735,US
3477384736,3477384743,IE
@@ -134623,15 +156682,9 @@
3478277952,3478277983,GB
3478277984,3478278399,US
3478278400,3478278655,GB
-3478278656,3478286591,US
-3478286592,3478286847,GB
-3478286848,3478288607,US
-3478288608,3478288615,GB
-3478288616,3478288639,US
-3478288640,3478288895,GB
-3478288896,3478289663,US
-3478289664,3478289919,GB
-3478289920,3478720767,US
+3478278656,3478282239,US
+3478282240,3478290431,GB
+3478290432,3478720767,US
3478720768,3478721023,AU
3478721024,3478721535,US
3478721536,3478721791,CN
@@ -134641,7 +156694,9 @@
3478732800,3478749183,DE
3478749184,3479207935,US
3479207936,3479240703,CA
-3479240704,3479568383,US
+3479240704,3479296007,US
+3479296008,3479296015,CA
+3479296016,3479568383,US
3479568384,3479633919,CA
3479633920,3479896063,US
3479896064,3479956479,CA
@@ -134775,7 +156830,9 @@
3480907264,3480907775,FR
3480907776,3480968191,US
3480968192,3480968447,AU
-3480968448,3481665535,US
+3480968448,3481591807,US
+3481591808,3481595903,BH
+3481595904,3481665535,US
3481665536,3481731071,CA
3481731072,3481796607,US
3481796608,3481812991,AU
@@ -134897,16 +156954,25 @@
3482054144,3482054655,CA
3482054656,3482058239,US
3482058240,3482058495,CA
-3482058496,3482584063,US
-3482584064,3482599423,CA
-3482599424,3482600447,SG
-3482600448,3482615807,US
+3482058496,3482591231,US
+3482591232,3482595327,HK
+3482595328,3482599423,CA
+3482599424,3482603519,SG
+3482603520,3482605567,AU
+3482605568,3482612735,JP
+3482612736,3482615807,SG
3482615808,3482632191,CA
-3482632192,3482775551,US
+3482632192,3482758499,US
+3482758500,3482758527,VE
+3482758528,3482760447,US
+3482760448,3482760703,AI
+3482760704,3482775551,US
3482775552,3482779647,PR
3482779648,3482910719,US
3482910720,3482927103,CA
-3482927104,3483254783,US
+3482927104,3483025407,US
+3483025408,3483041791,DE
+3483041792,3483254783,US
3483254784,3483271167,AU
3483271168,3483336959,US
3483336960,3483337215,CA
@@ -134922,23 +156988,21 @@
3483342592,3483344895,CA
3483344896,3483435007,US
3483435008,3483533311,CA
-3483533312,3483552255,US
-3483552256,3483552511,CA
-3483552512,3483631615,US
+3483533312,3483631615,US
3483631616,3483697151,CA
3483697152,3483791359,US
3483791360,3483791623,PR
3483791624,3483791631,US
3483791632,3483791815,PR
3483791816,3483791823,US
-3483791824,3483793919,PR
-3483793920,3483794431,US
-3483794432,3483795455,PR
+3483791824,3483795455,PR
3483795456,3483828223,US
3483828224,3483836415,CA
3483836416,3483844607,US
3483860992,3483877375,US
-3483877376,3483893759,CA
+3483877376,3483880895,CA
+3483880896,3483880927,US
+3483880928,3483893759,CA
3483893760,3484006911,US
3484006912,3484007167,AU
3484007168,3484013055,US
@@ -134980,8 +157044,8 @@
3484461824,3484462079,CA
3484462080,3484462335,US
3484462336,3484462591,CA
-3484462592,3484463359,US
-3484463360,3484464127,CA
+3484462592,3484463615,US
+3484463616,3484464127,CA
3484464128,3484464319,US
3484464320,3484464335,CA
3484464336,3484464895,US
@@ -135024,13 +157088,25 @@
3484482560,3484483583,CA
3484483584,3484647423,US
3484647424,3484663807,CA
-3484663808,3484762111,US
+3484663808,3484729343,US
+3484729344,3484745727,DE
+3484745728,3484762111,US
3484762112,3484778495,CA
-3484778496,3484884991,US
+3484778496,3484811263,US
+3484811264,3484815359,CA
+3484815360,3484884991,US
3484884992,3484893183,CA
3484893184,3485220863,US
3485220864,3485229055,CA
-3485229056,3485270015,US
+3485229056,3485237247,US
+3485237248,3485237759,GB
+3485237760,3485243903,US
+3485243904,3485244159,DE
+3485244160,3485244415,US
+3485244416,3485245439,LU
+3485245440,3485246719,US
+3485246720,3485246975,CA
+3485246976,3485270015,US
3485270016,3485270527,FR
3485270528,3485270783,US
3485270784,3485270911,IN
@@ -135076,9 +157152,9 @@
3485696000,3485883903,US
3485883904,3485884159,CA
3485884160,3485884671,US
-3485884672,3485886463,CA
-3485886464,3485888511,US
-3485888512,3485889023,CA
+3485884672,3485886719,CA
+3485886720,3485887231,US
+3485887232,3485889023,CA
3485889024,3485890047,US
3485890048,3485890815,CA
3485890816,3485891327,US
@@ -135304,7 +157380,9 @@
3486632704,3486632959,JP
3486632960,3486633215,IT
3486633216,3486633471,GB
-3486633472,3486633983,US
+3486633472,3486633599,US
+3486633600,3486633727,CN
+3486633728,3486633983,US
3486633984,3486634239,HK
3486634240,3486634495,US
3486634496,3486634751,KR
@@ -135321,7 +157399,9 @@
3486637312,3486637823,BE
3486637824,3486638335,SE
3486638336,3486638591,FR
-3486638592,3486638847,US
+3486638592,3486638623,US
+3486638624,3486638639,CN
+3486638640,3486638847,US
3486638848,3486639103,DK
3486639104,3486639359,BE
3486639360,3486639615,SG
@@ -135332,7 +157412,9 @@
3486642176,3486642431,BR
3486642432,3486642687,PT
3486642688,3486642943,DK
-3486642944,3486646271,US
+3486642944,3486646015,US
+3486646016,3486646143,JP
+3486646144,3486646271,US
3486646272,3486662655,CA
3486662656,3486688255,US
3486688256,3486688511,GB
@@ -135342,7 +157424,11 @@
3486702592,3486702847,CA
3486702848,3487039487,US
3487039488,3487105023,CA
-3487105024,3487189247,US
+3487105024,3487177983,US
+3487177984,3487178111,NL
+3487178112,3487178175,MX
+3487178176,3487178239,NL
+3487178240,3487189247,US
3487189248,3487189503,DK
3487189504,3487216383,US
3487216384,3487216639,SE
@@ -135352,9 +157438,9 @@
3487706368,3487706623,RU
3487706624,3487750399,US
3487750400,3487750415,HK
-3487750416,3487750529,US
-3487750530,3487750530,HK
-3487750531,3487766527,US
+3487750416,3487750527,US
+3487750528,3487750543,HK
+3487750544,3487766527,US
3487766528,3487768575,CA
3487768576,3487842303,US
3487842304,3487858687,CA
@@ -135365,7 +157451,15 @@
3487891456,3487907839,CA
3487907840,3487913471,US
3487913472,3487913983,CA
-3487913984,3487969791,US
+3487913984,3487916543,US
+3487916544,3487916799,CA
+3487916800,3487920127,US
+3487920128,3487921407,NL
+3487921408,3487921663,US
+3487921664,3487922431,NL
+3487922432,3487922687,US
+3487922688,3487924223,NL
+3487924224,3487969791,US
3487969792,3487970047,KW
3487970048,3488014335,US
3488014336,3488022527,CA
@@ -135386,8 +157480,12 @@
3488911360,3488940031,US
3488940032,3488956415,CA
3488956416,3488989183,US
-3488989184,3489005567,CA
-3489005568,3489058047,US
+3488989184,3488996351,CA
+3488996352,3488997375,US
+3488997376,3489005567,CA
+3489005568,3489057023,US
+3489057024,3489057535,VI
+3489057536,3489058047,US
3489058048,3489058063,GB
3489058064,3489136639,US
3489136640,3489153535,MX
@@ -135449,7 +157547,9 @@
3489775104,3489775359,BO
3489775360,3489906943,US
3489906944,3489906944,VN
-3489906945,3489969151,US
+3489906945,3489906945,US
+3489906946,3489906946,VN
+3489906947,3489969151,US
3489969152,3489969663,PR
3489969664,3490020675,US
3490020676,3490020676,MK
@@ -135484,8 +157584,11 @@
3491585077,3491637247,US
3491637248,3491637759,CO
3491637760,3491651583,US
-3491651584,3491659775,VI
-3491659776,3491743743,US
+3491651584,3491658751,VI
+3491658752,3491659775,UM
+3491659776,3491712927,US
+3491712928,3491712959,TW
+3491712960,3491743743,US
3491743744,3491745791,CO
3491745792,3491830963,US
3491830964,3491830964,CO
@@ -135505,33 +157608,41 @@
3492669952,3492671487,PA
3492671488,3492807155,US
3492807156,3492807159,SE
-3492807160,3492812759,US
+3492807160,3492811775,US
+3492811776,3492812759,CA
3492812760,3492812763,JP
-3492812764,3492845823,US
+3492812764,3492812799,CA
+3492812800,3492818943,US
+3492818944,3492819711,GB
+3492819712,3492819967,US
+3492819968,3492820991,GB
+3492820992,3492845823,US
3492845824,3492846079,CH
-3492846080,3492865023,US
-3492865024,3492865535,GB
-3492865536,3492866047,US
+3492846080,3492866047,US
3492866048,3492868095,GB
3492868096,3492877954,US
3492877955,3492877955,CA
3492877956,3492880745,US
3492880746,3492880746,ES
-3492880747,3492893951,US
+3492880747,3492892671,US
+3492892672,3492893695,GB
+3492893696,3492893951,US
3492893952,3492893969,GB
3492893970,3492893971,US
-3492893972,3492894207,GB
-3492894208,3492904215,US
+3492893972,3492894719,GB
+3492894720,3492896767,US
+3492896768,3492897791,GB
+3492897792,3492904215,US
3492904216,3492904219,AT
3492904220,3492909989,US
3492909990,3492909990,DE
-3492909991,3492911103,US
-3492911104,3492912383,GB
-3492912384,3492912639,US
-3492912640,3492913151,GB
-3492913152,3492921855,US
+3492909991,3492912127,US
+3492912128,3492912383,GB
+3492912384,3492921855,US
3492921856,3492922111,VI
-3492922112,3492933375,US
+3492922112,3492929535,US
+3492929536,3492933119,CA
+3492933120,3492933375,US
3492933376,3492933503,CH
3492933504,3492933631,CA
3492933632,3492939022,US
@@ -135541,24 +157652,18 @@
3492956160,3492957695,US
3492957696,3492958207,VI
3492958208,3492969471,US
-3492969472,3492969599,VI
-3492969600,3492994815,US
-3492994816,3492995071,GB
+3492969472,3492969727,VI
+3492969728,3492994047,US
+3492994048,3492995071,GB
3492995072,3493039359,US
3493039360,3493039615,AR
3493039616,3493039695,US
3493039696,3493039703,RO
-3493039704,3493073151,US
-3493073152,3493073407,BO
-3493073408,3493073663,US
-3493073664,3493073919,BO
-3493073920,3493081599,US
-3493081600,3493082623,PY
-3493082624,3493089023,US
+3493039704,3493089023,US
3493089024,3493089279,CM
-3493089280,3493140223,US
-3493140224,3493140479,DE
-3493140480,3493244927,US
+3493089280,3493101055,US
+3493101056,3493101311,CU
+3493101312,3493244927,US
3493244928,3493249023,PR
3493249024,3493866495,US
3493866496,3493867519,VG
@@ -135655,7 +157760,9 @@
3494361088,3494362111,CA
3494362112,3494368255,US
3494368256,3494369279,CN
-3494369280,3494380543,US
+3494369280,3494371327,US
+3494371328,3494373375,PH
+3494373376,3494380543,US
3494380544,3494381567,CA
3494381568,3494402559,US
3494402560,3494402815,GB
@@ -135693,8 +157800,8 @@
3494625280,3494627327,US
3494627328,3494628351,BM
3494628352,3494642687,US
-3494642688,3494643711,CA
-3494643712,3494651903,US
+3494642688,3494643199,CA
+3494643200,3494651903,US
3494651904,3494652927,CA
3494652928,3494655743,US
3494655744,3494655759,GB
@@ -135742,8 +157849,8 @@
3494874912,3494893567,US
3494893568,3494894591,CA
3494894592,3494917119,US
-3494917120,3494917631,CA
-3494917632,3494928383,US
+3494917120,3494918143,CA
+3494918144,3494928383,US
3494928384,3494930431,CA
3494930432,3494950655,US
3494950656,3494950911,PH
@@ -135755,11 +157862,7 @@
3494979584,3494981631,CA
3494981632,3494984191,US
3494984192,3494984703,PR
-3494984704,3494985727,US
-3494985728,3494985975,NL
-3494985976,3494985976,US
-3494985977,3494985983,NL
-3494985984,3494999039,US
+3494984704,3494999039,US
3494999040,3494999551,ID
3494999552,3495000063,CN
3495000064,3495001087,CA
@@ -135789,7 +157892,11 @@
3495091200,3495098367,US
3495098368,3495100415,CA
3495100416,3495100927,IE
-3495100928,3495120895,US
+3495100928,3495109631,US
+3495109632,3495109887,CA
+3495109888,3495110143,US
+3495110144,3495110399,PR
+3495110400,3495120895,US
3495120896,3495122943,AG
3495122944,3495153663,US
3495153664,3495155711,CA
@@ -135797,7 +157904,9 @@
3495187200,3495187455,IM
3495187456,3495192575,US
3495192576,3495193599,CA
-3495193600,3495215103,US
+3495193600,3495197695,US
+3495197696,3495198719,CA
+3495198720,3495215103,US
3495215104,3495217151,VI
3495217152,3495219199,VC
3495219200,3495251967,US
@@ -135808,9 +157917,7 @@
3495271424,3495272447,ZA
3495272448,3495285759,US
3495285760,3495288831,CA
-3495288832,3495331881,US
-3495331882,3495331882,CA
-3495331883,3495332863,US
+3495288832,3495332863,US
3495332864,3495333887,CA
3495333888,3495349247,US
3495349248,3495350271,CA
@@ -135818,9 +157925,7 @@
3495358464,3495359487,CA
3495359488,3495367679,US
3495367680,3495368703,CA
-3495368704,3495370239,US
-3495370240,3495370495,RU
-3495370496,3495370751,US
+3495368704,3495370751,US
3495370752,3495372799,BS
3495372800,3495375871,US
3495375872,3495376895,CA
@@ -135925,15 +158030,19 @@
3496034304,3496050687,CA
3496050688,3496132607,US
3496132608,3496148991,CA
-3496148992,3496181759,US
+3496165376,3496181759,US
3496181760,3496189951,CA
3496189952,3496296447,US
3496296448,3496312831,CA
3496312832,3496451583,US
3496451584,3496452095,CA
-3496452096,3496454911,US
+3496452096,3496454599,US
+3496454600,3496454607,GB
+3496454608,3496454911,US
3496454912,3496455167,CA
-3496455168,3496468479,US
+3496455168,3496458239,US
+3496458240,3496458495,CA
+3496458496,3496468479,US
3496468480,3496476671,CA
3496476672,3496875263,US
3496875264,3496875519,BD
@@ -135983,7 +158092,9 @@
3497820160,3497852927,CA
3497852928,3498254591,US
3498254592,3498254847,JM
-3498254848,3498287103,US
+3498254848,3498285311,US
+3498285312,3498285567,AU
+3498285568,3498287103,US
3498287104,3498295295,JM
3498295296,3498509055,US
3498509056,3498509311,PR
@@ -136020,12 +158131,18 @@
3500126464,3500126719,GB
3500126720,3500351487,US
3500351488,3500359679,JM
-3500359680,3500689407,US
+3500359680,3500554239,US
+3500554240,3500554751,DE
+3500554752,3500555775,US
+3500555776,3500556287,SE
+3500556288,3500689407,US
3500689408,3500689919,CL
3500689920,3500728319,US
3500728320,3500736511,KY
-3500736512,3500759551,US
-3500759552,3500761087,KY
+3500736512,3500757247,US
+3500757248,3500757503,DM
+3500757504,3500759039,US
+3500759040,3500761087,KY
3500761088,3500807019,US
3500807020,3500807023,GB
3500807024,3500807195,US
@@ -136123,7 +158240,9 @@
3505661952,3505662463,JM
3505662464,3505818623,US
3505818624,3505819647,BS
-3505819648,3506043135,US
+3505819648,3505999871,US
+3505999872,3506000127,PR
+3506000128,3506043135,US
3506043136,3506044927,PA
3506044928,3506231807,US
3506231808,3506232063,IN
@@ -136428,9 +158547,7 @@
3508796160,3508796415,CA
3508796416,3508796927,US
3508796928,3508797439,CA
-3508797440,3508911231,US
-3508911232,3508911359,CA
-3508911360,3509144575,US
+3508797440,3509144575,US
3509144576,3509144831,BR
3509144832,3509157887,US
3509157888,3509166079,CA
@@ -136580,11 +158697,7 @@
3510253312,3510253567,NC
3510253568,3510254079,US
3510254080,3510254591,CA
-3510254592,3510261503,US
-3510261504,3510261759,ZM
-3510261760,3510263295,US
-3510263296,3510263551,CA
-3510263552,3510264063,US
+3510254592,3510264063,US
3510264064,3510264319,UG
3510264320,3510265087,US
3510265088,3510265343,CA
@@ -136617,14 +158730,18 @@
3510333184,3510333439,MS
3510333440,3510333951,KN
3510333952,3510334975,AG
-3510334976,3510335487,KN
-3510335488,3510335743,AI
+3510334976,3510335231,KN
+3510335232,3510335743,AI
3510335744,3510335999,VG
3510336000,3510337279,AG
3510337280,3510337535,LC
3510337536,3510470927,US
3510470928,3510470935,IL
-3510470936,3510479791,US
+3510470936,3510478015,US
+3510478016,3510478023,CA
+3510478024,3510479103,US
+3510479104,3510479359,GU
+3510479360,3510479791,US
3510479792,3510479799,IE
3510479800,3510546431,US
3510546432,3510550527,CA
@@ -136641,8 +158758,20 @@
3511258112,3511314215,US
3511314216,3511314223,CA
3511314224,3511812095,US
-3511812096,3511844863,CA
-3511844864,3512043519,US
+3511812096,3511832575,CA
+3511832576,3511833087,US
+3511833088,3511844863,CA
+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
@@ -136731,7 +158860,9 @@
3512451072,3512467455,PR
3512467456,3512532991,US
3512532992,3512598527,GB
-3512598528,3512647679,US
+3512598528,3512619519,US
+3512619520,3512620031,CA
+3512620032,3512647679,US
3512647680,3512655871,TT
3512655872,3512678655,US
3512678656,3512678911,CA
@@ -136740,21 +158871,37 @@
3512679424,3512679679,HK
3512679680,3512680191,US
3512680192,3512680447,SG
-3512680448,3512688895,US
-3512688896,3512689407,CA
-3512689408,3512689663,US
-3512689664,3512690175,CA
-3512690176,3512690431,US
-3512690432,3512690687,CA
-3512690688,3512695295,US
-3512695296,3512696319,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,3512844287,US
+3512696832,3512827903,US
+3512827904,3512831999,GB
+3512832000,3512836095,US
+3512836096,3512840191,SG
+3512840192,3512844287,US
3512844288,3512852479,CA
-3512852480,3512931583,US
-3512931584,3512931839,CA
-3512931840,3512983551,US
+3512852480,3512983551,US
3512983552,3512987647,AR
3512987648,3513188351,US
3513188352,3513204735,CA
@@ -136815,7 +158962,7 @@
3514724457,3514725247,US
3514725248,3514725248,UA
3514725249,3514761215,US
-3514826752,3514843135,CA
+3514761216,3514843135,CA
3514843136,3514993983,US
3514993984,3514993987,FR
3514993988,3514993991,DE
@@ -136842,7 +158989,9 @@
3515965440,3515973631,CA
3515973632,3515990015,US
3515990016,3516006399,CA
-3516006400,3516039167,US
+3516006400,3516010495,US
+3516010496,3516014591,PH
+3516014592,3516039167,US
3516039168,3516071935,CA
3516071936,3516088831,US
3516088832,3516088832,GB
@@ -136887,12 +159036,11 @@
3517021440,3517021695,NI
3517021696,3517038591,US
3517038592,3517054975,CA
-3517054976,3517095935,US
+3517054976,3517087743,US
+3517087744,3517095935,NL
3517095936,3517100031,CA
3517100032,3517112319,US
-3517112320,3517116159,CA
-3517116160,3517116415,US
-3517116416,3517120511,CA
+3517112320,3517120511,CA
3517120512,3517233151,US
3517233152,3517235199,GU
3517235200,3517382655,US
@@ -137054,7 +159202,9 @@
3517610176,3517644799,US
3517644800,3517710335,CA
3517710336,3517718527,US
-3517718528,3517726719,CA
+3517718528,3517720011,CA
+3517720012,3517720015,US
+3517720016,3517726719,CA
3517726720,3517990911,US
3517990912,3517991423,CA
3517991424,3518058495,US
@@ -137073,16 +159223,9 @@
3518075648,3518075903,AU
3518075904,3518076671,US
3518076672,3518076927,PA
-3518076928,3518374719,US
-3518374720,3518374783,IN
-3518374784,3518380223,US
-3518380224,3518380287,DE
-3518380288,3518381055,US
+3518076928,3518381055,US
3518381056,3518381311,IN
-3518381312,3518381439,US
-3518381440,3518381567,IN
-3518381568,3518381631,DE
-3518381632,3518392575,US
+3518381312,3518392575,US
3518392576,3518392831,NL
3518392832,3518393087,US
3518393088,3518393343,SG
@@ -137102,9 +159245,7 @@
3518918144,3518918399,IN
3518918400,3518919423,US
3518919424,3518919679,IN
-3518919680,3518929535,US
-3518929536,3518929599,CA
-3518929600,3519234047,US
+3518919680,3519234047,US
3519234048,3519250431,CA
3519250432,3519319807,US
3519319808,3519320063,CA
@@ -137175,14 +159316,19 @@
3519879728,3519879735,CA
3519879736,3519879935,US
3519879936,3519880447,CA
-3519880448,3519881215,US
-3519881216,3519884031,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,3519940607,IL
+3519938816,3519939071,BE
+3519939072,3519940095,IL
+3519940096,3519940351,DK
+3519940352,3519940607,IL
3519940608,3519940863,FR
3519940864,3519941375,IL
3519941376,3519941631,HU
@@ -137235,7 +159381,9 @@
3520390400,3520409599,US
3520409600,3520413439,DE
3520413440,3520413695,CA
-3520413696,3520454655,US
+3520413696,3520421887,US
+3520421888,3520430079,CA
+3520430080,3520454655,US
3520454656,3520462847,CA
3520462848,3520626687,US
3520626688,3520634879,CA
@@ -137257,11 +159405,7 @@
3521086464,3521196287,US
3521196288,3521196543,AR
3521196544,3521216511,US
-3521216512,3521220351,CA
-3521220352,3521220607,US
-3521220608,3521224959,CA
-3521224960,3521225215,US
-3521225216,3521232895,CA
+3521216512,3521232895,CA
3521232896,3521249279,US
3521249280,3521314815,CA
3521314816,3521347583,US
@@ -137314,21 +159458,23 @@
3522174976,3522179071,BM
3522179072,3522195455,US
3522195456,3522199551,CA
-3522199552,3522854911,US
+3522199552,3522816767,US
+3522816768,3522817023,CA
+3522817024,3522854911,US
3522854912,3522871295,CA
3522871296,3522879487,US
-3522879488,3522881023,GB
-3522881024,3522881535,US
-3522881536,3522883071,DE
-3522883072,3522883583,US
-3522883584,3522885631,NL
-3522885632,3522893823,US
+3522879488,3522881535,GB
+3522881536,3522883583,DE
+3522883584,3522887679,NL
+3522887680,3522893823,US
3522893824,3522894847,CA
3522894848,3522902015,US
3522902016,3522903039,CA
3522903040,3522903807,US
3522903808,3522904063,CA
-3522904064,3522940415,US
+3522904064,3522937855,US
+3522937856,3522938879,GB
+3522938880,3522940415,US
3522940416,3522940671,HK
3522940672,3522950655,US
3522950656,3522951167,CA
@@ -137477,15 +159623,14 @@
3524289536,3524290559,IN
3524290560,3524291327,CN
3524291328,3524291583,TW
-3524291584,3524294655,IN
+3524291584,3524293631,IN
+3524293632,3524294655,KR
3524294656,3524295679,SG
3524295680,3524296703,MY
3524296704,3524313087,CN
3524313088,3524329471,KR
3524329472,3524362239,TW
-3524362240,3524370687,HK
-3524370688,3524370943,JP
-3524370944,3524386303,HK
+3524362240,3524386303,HK
3524386304,3524386559,JP
3524386560,3524395007,HK
3524395008,3524444159,IN
@@ -137663,14 +159808,22 @@
3526950912,3526951935,MY
3526951936,3526952959,JP
3526952960,3526953983,ID
-3526953984,3526954495,JP
-3526954496,3526954751,PH
-3526954752,3526955007,JP
+3526953984,3526955007,JP
3526955008,3526955263,US
3526955264,3526956287,JP
3526956288,3526956799,HK
-3526956800,3526966271,JP
-3526966272,3526966783,HK
+3526956800,3526957311,US
+3526957312,3526957823,TW
+3526957824,3526958335,HK
+3526958336,3526958336,SG
+3526958337,3526958591,JP
+3526958592,3526958592,SG
+3526958593,3526958847,JP
+3526958848,3526959359,VN
+3526959360,3526964735,JP
+3526964736,3526965503,AU
+3526965504,3526966527,JP
+3526966528,3526966783,HK
3526966784,3526967295,SG
3526967296,3526971439,JP
3526971440,3526971443,HK
@@ -137689,6 +159842,8 @@
3528396800,3528400895,AU
3528400896,3528404991,JP
3528404992,3528407039,NZ
+3528407040,3528408063,SG
+3528408064,3528409087,HK
3528409088,3528425471,CN
3528441856,3528445951,JP
3528445952,3528450047,ID
@@ -137719,17 +159874,11 @@
3529113600,3531603967,KR
3531603968,3532290815,JP
3532290816,3532291071,GB
-3532291072,3533119487,JP
-3533119488,3533121209,CN
-3533121210,3533121210,JP
-3533121211,3533123583,CN
-3533123584,3534749695,JP
+3532291072,3534749695,JP
3534749696,3534757887,HK
3534757888,3534758143,AU
3534758144,3534758147,JP
-3534758148,3534758399,AU
-3534758400,3534758655,HK
-3534758656,3534758911,AU
+3534758148,3534758911,AU
3534758912,3534758927,PH
3534758928,3534758975,AU
3534758976,3534759039,PH
@@ -137883,9 +160032,13 @@
3557015552,3557016976,LV
3557016977,3557016977,ES
3557016978,3557023743,LV
-3557023744,3557028415,NL
+3557023744,3557027839,NL
+3557027840,3557028351,BE
+3557028352,3557028415,GB
3557028416,3557028479,BE
-3557028480,3557031935,NL
+3557028480,3557028607,GB
+3557028608,3557029887,BE
+3557029888,3557031935,GB
3557031936,3557040127,IT
3557040128,3557048319,NO
3557048320,3557056511,CH
@@ -137894,16 +160047,32 @@
3557072896,3557081087,DE
3557081088,3557089279,NL
3557089280,3557105663,DE
-3557105664,3557113599,BG
-3557113600,3557113855,IQ
+3557105664,3557107711,BG
+3557107712,3557109759,IQ
+3557109760,3557113343,BG
+3557113344,3557113855,IQ
3557113856,3557130239,RU
3557130240,3557138431,BG
3557138432,3557146623,RU
3557146624,3557154815,SK
3557154816,3557171199,RU
-3557171200,3557175295,IT
+3557171200,3557172479,IT
+3557172480,3557172991,IR
+3557172992,3557173503,IQ
+3557173504,3557173631,IR
+3557173632,3557173695,IQ
+3557173696,3557173703,AE
+3557173704,3557173759,IT
+3557173760,3557174015,IR
+3557174016,3557174527,IT
+3557174528,3557174783,IR
+3557174784,3557175039,IT
+3557175040,3557175295,IR
3557175296,3557175807,CH
-3557175808,3557179391,IT
+3557175808,3557176063,IR
+3557176064,3557176831,IT
+3557176832,3557177023,IQ
+3557177024,3557179391,IT
3557179392,3557228543,DE
3557228544,3557236735,EE
3557236736,3557244927,ES
@@ -137913,8 +160082,8 @@
3557277696,3557279743,NL
3557279744,3557280255,US
3557280256,3557280511,DE
-3557280512,3557283839,NL
-3557283840,3557285887,PL
+3557280512,3557282815,NL
+3557282816,3557285887,PL
3557285888,3557294079,RU
3557294080,3557302271,DE
3557302272,3557310463,UA
@@ -137926,16 +160095,39 @@
3557351424,3557355519,RU
3557355520,3557355775,NL
3557355776,3557356031,US
-3557356032,3557356287,NL
-3557356288,3557356543,RU
-3557356544,3557356799,NL
-3557356800,3557357311,UA
+3557356032,3557357311,NL
3557357312,3557357567,RU
-3557357568,3557357823,NL
-3557357824,3557358079,RU
-3557358080,3557359103,NL
+3557357568,3557359103,NL
3557359104,3557359615,MY
-3557359616,3557367807,JE
+3557359616,3557359991,JE
+3557359992,3557359999,GB
+3557360000,3557360047,JE
+3557360048,3557360055,GB
+3557360056,3557360127,JE
+3557360128,3557360135,GB
+3557360136,3557360263,JE
+3557360264,3557360271,GB
+3557360272,3557360743,JE
+3557360744,3557360751,GB
+3557360752,3557360863,JE
+3557360864,3557360871,GB
+3557360872,3557360935,JE
+3557360936,3557360943,GB
+3557360944,3557363583,JE
+3557363584,3557363595,GB
+3557363596,3557363631,JE
+3557363632,3557363639,GB
+3557363640,3557363703,JE
+3557363704,3557363711,GB
+3557363712,3557364551,JE
+3557364552,3557364559,GB
+3557364560,3557364703,JE
+3557364704,3557364711,GB
+3557364712,3557365095,JE
+3557365096,3557365103,GB
+3557365104,3557365791,JE
+3557365792,3557365799,GB
+3557365800,3557367807,JE
3557367808,3557375999,DE
3557376000,3557384191,ES
3557384192,3557392383,GB
@@ -137954,7 +160146,11 @@
3557556224,3557564415,RU
3557564416,3557572607,DE
3557572608,3557580799,RU
-3557580800,3557588991,DE
+3557580800,3557584287,DE
+3557584288,3557584319,GB
+3557584320,3557585695,DE
+3557585696,3557585711,CH
+3557585712,3557588991,DE
3557588992,3557597183,TR
3557597184,3557605375,SA
3557605376,3557613567,LT
@@ -138048,7 +160244,20 @@
3558170624,3558178815,GB
3558178816,3558187007,BG
3558187008,3558195199,DE
-3558195200,3558211583,ES
+3558195200,3558195983,GB
+3558195984,3558195991,IT
+3558195992,3558196159,GB
+3558196160,3558196167,IT
+3558196168,3558196247,GB
+3558196248,3558196255,IT
+3558196256,3558196327,GB
+3558196328,3558196351,IT
+3558196352,3558196535,GB
+3558196536,3558196543,IT
+3558196544,3558197247,GB
+3558197248,3558199295,US
+3558199296,3558203391,GB
+3558203392,3558211583,ES
3558211584,3558219775,GB
3558219776,3558227967,ES
3558227968,3558230015,RU
@@ -138062,10 +160271,26 @@
3558244352,3558252543,IT
3558252544,3558260735,KE
3558260736,3558268927,UA
-3558268928,3558277119,GI
-3558277120,3558290831,GB
+3558268928,3558273535,GI
+3558273536,3558273791,GB
+3558273792,3558276095,GI
+3558276096,3558276351,GB
+3558276352,3558277119,GI
+3558277120,3558285951,GB
+3558285952,3558286079,DE
+3558286080,3558286591,GB
+3558286592,3558286655,FR
+3558286656,3558289119,GB
+3558289120,3558289151,FR
+3558289152,3558289431,GB
+3558289432,3558289439,NL
+3558289440,3558289975,GB
+3558289976,3558289983,CZ
+3558289984,3558290831,GB
3558290832,3558290847,ES
-3558290848,3558292255,GB
+3558290848,3558291071,GB
+3558291072,3558291135,DE
+3558291136,3558292255,GB
3558292256,3558292271,SE
3558292272,3558293199,GB
3558293200,3558293215,NL
@@ -138090,7 +160315,11 @@
3558424576,3558440959,IL
3558440960,3558449151,SE
3558449152,3558457343,IT
-3558457344,3558465535,NL
+3558457344,3558457407,NL
+3558457408,3558457471,GB
+3558457472,3558457599,NL
+3558457600,3558457727,FR
+3558457728,3558465535,NL
3558465536,3558473727,GB
3558473728,3558506495,SA
3558506496,3558514687,UA
@@ -138100,18 +160329,23 @@
3558525184,3558525439,NL
3558525440,3558525695,FR
3558525696,3558525951,IE
-3558525952,3558531071,NL
+3558525952,3558526975,NL
+3558526976,3558527744,ES
+3558527745,3558531071,NL
3558531072,3558539263,RU
-3558539264,3558545407,DK
-3558545408,3558547455,SE
+3558539264,3558547455,DK
3558547456,3558555647,FR
3558555648,3558572031,AT
3558572032,3558580223,DE
-3558580224,3558588415,CH
+3558580224,3558586879,CH
+3558586880,3558587391,GB
+3558587392,3558588415,CH
3558588416,3558596607,CZ
3558596608,3558597343,EE
3558597344,3558597351,PL
-3558597352,3558604799,EE
+3558597352,3558598415,EE
+3558598416,3558598423,RU
+3558598424,3558604799,EE
3558604800,3558612991,GB
3558612992,3558621183,DE
3558621184,3558629375,MD
@@ -138125,15 +160359,7 @@
3558703104,3558711295,IT
3558711296,3558719487,NL
3558719488,3558735871,IL
-3558735872,3558736895,GG
-3558736896,3558737919,GB
-3558737920,3558739967,GG
-3558739968,3558740223,GB
-3558740224,3558740479,GG
-3558740480,3558740991,GB
-3558740992,3558741247,GG
-3558741248,3558741503,GB
-3558741504,3558744063,GG
+3558735872,3558744063,GG
3558744064,3558752255,LB
3558752256,3558760447,SI
3558760448,3558768639,FR
@@ -138145,7 +160371,14 @@
3558825984,3558834175,CY
3558834176,3558842367,GB
3558842368,3558850559,SE
-3558850560,3558858751,ES
+3558850560,3558851327,GB
+3558851328,3558851335,ES
+3558851336,3558851815,GB
+3558851816,3558851823,ES
+3558851824,3558854135,GB
+3558854136,3558854143,ES
+3558854144,3558856703,GB
+3558856704,3558858751,US
3558858752,3558866943,IT
3558866944,3558899711,GB
3558899712,3558916095,SE
@@ -138169,9 +160402,27 @@
3559055360,3559063551,AM
3559063552,3559079935,CH
3559079936,3559088127,JO
-3559088128,3559092243,GB
+3559088128,3559088991,GB
+3559088992,3559088999,BE
+3559089000,3559089527,GB
+3559089528,3559089535,BE
+3559089536,3559089935,GB
+3559089936,3559089951,BE
+3559089952,3559090239,GB
+3559090240,3559090303,BE
+3559090304,3559091023,GB
+3559091024,3559091031,BE
+3559091032,3559091175,GB
+3559091176,3559091183,ES
+3559091184,3559092243,GB
3559092244,3559092244,BE
-3559092245,3559095455,GB
+3559092245,3559093311,GB
+3559093312,3559093319,BE
+3559093320,3559093487,GB
+3559093488,3559093759,BE
+3559093760,3559094303,GB
+3559094304,3559094319,BE
+3559094320,3559095455,GB
3559095456,3559095456,BE
3559095457,3559096319,GB
3559096320,3559104511,RO
@@ -138181,7 +160432,19 @@
3559129088,3559137279,BG
3559137280,3559145471,GB
3559145472,3559153663,ES
-3559153664,3559178239,GB
+3559153664,3559161855,GB
+3559161856,3559161887,FR
+3559161888,3559162047,GB
+3559162048,3559162079,BE
+3559162080,3559163903,GB
+3559163904,3559163935,FR
+3559163936,3559163999,GB
+3559164000,3559164031,NL
+3559164032,3559164151,GB
+3559164152,3559164159,IT
+3559164160,3559167227,GB
+3559167228,3559167228,DE
+3559167229,3559178239,GB
3559178240,3559186431,LB
3559186432,3559194623,RU
3559194624,3559197551,SE
@@ -138189,8 +160452,8 @@
3559197568,3559200143,SE
3559200144,3559200151,FI
3559200152,3559200255,SE
-3559200256,3559200511,FI
-3559200512,3559200639,SE
+3559200256,3559200383,FI
+3559200384,3559200639,SE
3559200640,3559200671,FI
3559200672,3559201607,SE
3559201608,3559201615,FI
@@ -138217,7 +160480,8 @@
3559309312,3559317503,PL
3559317504,3559325695,FI
3559325696,3559333887,IT
-3559333888,3559336447,SE
+3559333888,3559334143,DK
+3559334144,3559336447,SE
3559336448,3559336703,US
3559336704,3559342079,SE
3559342080,3559350271,BG
@@ -138237,12 +160501,11 @@
3559448576,3559456767,ES
3559456768,3559473151,RU
3559473152,3559489535,CH
-3559489536,3559491247,ES
+3559489536,3559491247,GB
3559491248,3559491263,NL
-3559491264,3559491759,ES
+3559491264,3559491759,GB
3559491760,3559491767,NL
-3559491768,3559497727,ES
-3559497728,3559505919,GB
+3559491768,3559505919,GB
3559505920,3559514111,CH
3559514112,3559522303,AT
3559522304,3559530495,GB
@@ -138290,13 +160553,15 @@
3559882752,3559890943,AZ
3559890944,3559899135,CH
3559899136,3559899263,PL
-3559899264,3559899647,DE
+3559899264,3559899647,UA
3559899648,3559899967,EE
-3559899968,3559900007,DE
+3559899968,3559900007,UA
3559900008,3559900015,EE
-3559900016,3559900031,DE
+3559900016,3559900031,UA
3559900032,3559900351,EE
-3559900352,3559903231,DE
+3559900352,3559902719,UA
+3559902720,3559902975,EE
+3559902976,3559903231,UA
3559903232,3559907327,EE
3559907328,3559915519,FR
3559915520,3559923711,IT
@@ -138311,7 +160576,12 @@
3559989248,3559997439,PL
3559997440,3560005631,KE
3560005632,3560013823,RU
-3560013824,3560030207,ES
+3560013824,3560016063,GB
+3560016064,3560016064,ES
+3560016065,3560021247,GB
+3560021248,3560021263,ES
+3560021264,3560022015,GB
+3560022016,3560030207,ES
3560030208,3560046591,GB
3560046592,3560054783,BG
3560054784,3560062975,TR
@@ -138320,7 +160590,7 @@
3560079360,3560087551,FI
3560087552,3560095743,GB
3560095744,3560103935,FI
-3560103936,3560112127,IR
+3560103936,3560112127,US
3560112128,3560120319,DE
3560120320,3560128511,ES
3560128512,3560144895,HU
@@ -138335,7 +160605,8 @@
3560218624,3560226815,HU
3560226816,3560235007,AT
3560235008,3560243199,DE
-3560243200,3560251391,BE
+3560243200,3560247295,BE
+3560247296,3560251391,NL
3560251392,3560259583,RU
3560259584,3560267775,GB
3560267776,3560275967,EE
@@ -138367,9 +160638,7 @@
3560502528,3560502783,LU
3560502784,3560503039,DE
3560503040,3560505343,LU
-3560505344,3560507391,TR
-3560507392,3560507647,UA
-3560507648,3560513535,TR
+3560505344,3560513535,TR
3560513536,3560515583,SK
3560515584,3560517631,RS
3560517632,3560521727,NL
@@ -138381,7 +160650,7 @@
3560579072,3560587263,GB
3560587264,3560595455,DE
3560595456,3560603647,GE
-3560603648,3560611839,US
+3560603648,3560611839,GB
3560611840,3560620031,UA
3560620032,3560628223,RU
3560628224,3560636415,GB
@@ -138409,18 +160678,1794 @@
3560898560,3560906751,FI
3560906752,3560923135,DE
3560923136,3560931327,ES
-3560931328,3560942055,DE
+3560931328,3560939535,DE
+3560939536,3560939539,PT
+3560939540,3560939543,IT
+3560939544,3560939555,DE
+3560939556,3560939559,ES
+3560939560,3560939567,DE
+3560939568,3560939571,NL
+3560939572,3560939579,ES
+3560939580,3560939583,BE
+3560939584,3560939607,DE
+3560939608,3560939611,IT
+3560939612,3560939643,DE
+3560939644,3560939647,BE
+3560939648,3560939683,DE
+3560939684,3560939687,AT
+3560939688,3560939691,ES
+3560939692,3560939695,FR
+3560939696,3560939719,DE
+3560939720,3560939727,GR
+3560939728,3560939735,NL
+3560939736,3560939739,FR
+3560939740,3560939743,DE
+3560939744,3560939747,FR
+3560939748,3560939751,DE
+3560939752,3560939755,IT
+3560939756,3560939759,DE
+3560939760,3560939763,IT
+3560939764,3560939767,DE
+3560939768,3560939771,IE
+3560939772,3560939775,CZ
+3560939776,3560939779,BE
+3560939780,3560939795,DE
+3560939796,3560939799,GB
+3560939800,3560939807,DE
+3560939808,3560939811,FR
+3560939812,3560939827,DE
+3560939828,3560939831,FR
+3560939832,3560939839,DE
+3560939840,3560939843,GB
+3560939844,3560939847,DE
+3560939848,3560939851,BE
+3560939852,3560939855,DE
+3560939856,3560939859,FR
+3560939860,3560939863,HU
+3560939864,3560939867,ES
+3560939868,3560939875,DE
+3560939876,3560939879,CH
+3560939880,3560939895,DE
+3560939896,3560939899,ES
+3560939900,3560939903,GB
+3560939904,3560939907,BR
+3560939908,3560939915,DE
+3560939916,3560939919,ES
+3560939920,3560939927,DE
+3560939928,3560939931,NL
+3560939932,3560939943,DE
+3560939944,3560939951,FR
+3560939952,3560939955,DE
+3560939956,3560939959,AT
+3560939960,3560939975,DE
+3560939976,3560939979,BE
+3560939980,3560939983,DE
+3560939984,3560939987,FR
+3560939988,3560939991,ES
+3560939992,3560939995,IT
+3560939996,3560939999,DE
+3560940000,3560940007,ES
+3560940008,3560940015,DE
+3560940016,3560940019,BE
+3560940020,3560940023,GB
+3560940024,3560940027,GR
+3560940028,3560940043,DE
+3560940044,3560940047,GB
+3560940048,3560940051,ES
+3560940052,3560940055,BE
+3560940056,3560940059,NL
+3560940060,3560940063,LU
+3560940064,3560940067,CH
+3560940068,3560940071,FR
+3560940072,3560940075,DE
+3560940076,3560940079,ES
+3560940080,3560940087,DE
+3560940088,3560940091,IT
+3560940092,3560940099,DE
+3560940100,3560940103,FR
+3560940104,3560940115,DE
+3560940116,3560940119,FR
+3560940120,3560940123,GB
+3560940124,3560940131,DE
+3560940132,3560940135,IT
+3560940136,3560940139,AT
+3560940140,3560940147,DE
+3560940148,3560940151,IT
+3560940152,3560940155,FR
+3560940156,3560940159,ES
+3560940160,3560940163,IT
+3560940164,3560940171,FR
+3560940172,3560940179,DE
+3560940180,3560940183,BE
+3560940184,3560940187,FR
+3560940188,3560940191,IT
+3560940192,3560940195,AT
+3560940196,3560940199,DE
+3560940200,3560940203,CY
+3560940204,3560940207,DE
+3560940208,3560940211,ES
+3560940212,3560940215,FR
+3560940216,3560940219,IE
+3560940220,3560940227,DE
+3560940228,3560940231,CH
+3560940232,3560940235,IT
+3560940236,3560940239,DE
+3560940240,3560940243,PT
+3560940244,3560940247,GB
+3560940248,3560940251,DE
+3560940252,3560940255,CH
+3560940256,3560940271,DE
+3560940272,3560940275,GB
+3560940276,3560940279,FR
+3560940280,3560940283,AT
+3560940284,3560940287,DE
+3560940288,3560940291,FR
+3560940292,3560940307,DE
+3560940308,3560940311,BE
+3560940312,3560940327,DE
+3560940328,3560940331,ES
+3560940332,3560940339,DE
+3560940340,3560940343,CH
+3560940344,3560940347,NL
+3560940348,3560940367,DE
+3560940368,3560940371,FR
+3560940372,3560940379,CH
+3560940380,3560940387,DE
+3560940388,3560940391,ES
+3560940392,3560940395,DE
+3560940396,3560940399,IL
+3560940400,3560940403,CH
+3560940404,3560940407,DE
+3560940408,3560940411,IT
+3560940412,3560940419,DE
+3560940420,3560940423,GR
+3560940424,3560940431,DE
+3560940432,3560940435,FR
+3560940436,3560940439,DE
+3560940440,3560940443,BE
+3560940444,3560940447,SL
+3560940448,3560940451,DE
+3560940452,3560940455,NL
+3560940456,3560940463,DE
+3560940464,3560940467,CY
+3560940468,3560940471,DE
+3560940472,3560940475,FR
+3560940476,3560940479,CH
+3560940480,3560940487,ES
+3560940488,3560940491,CZ
+3560940492,3560940495,DE
+3560940496,3560940499,IT
+3560940500,3560940503,DE
+3560940504,3560940507,GB
+3560940508,3560940511,IT
+3560940512,3560940523,DE
+3560940524,3560940527,FR
+3560940528,3560940531,DE
+3560940532,3560940535,FR
+3560940536,3560940539,HU
+3560940540,3560940547,DE
+3560940548,3560940551,IE
+3560940552,3560940563,DE
+3560940564,3560940567,GB
+3560940568,3560940571,DE
+3560940572,3560940575,DK
+3560940576,3560940579,DE
+3560940580,3560940583,IT
+3560940584,3560940587,FR
+3560940588,3560940591,IT
+3560940592,3560940595,GR
+3560940596,3560940599,CH
+3560940600,3560940603,DE
+3560940604,3560940607,GB
+3560940608,3560940611,FR
+3560940612,3560940619,DE
+3560940620,3560940623,AT
+3560940624,3560940627,SM
+3560940628,3560940631,DE
+3560940632,3560940635,AT
+3560940636,3560940639,DE
+3560940640,3560940647,GB
+3560940648,3560940655,DE
+3560940656,3560940663,IT
+3560940664,3560940687,DE
+3560940688,3560940691,IT
+3560940692,3560940695,NO
+3560940696,3560940699,FR
+3560940700,3560940703,GB
+3560940704,3560940707,ES
+3560940708,3560940715,DE
+3560940716,3560940719,ES
+3560940720,3560940727,DE
+3560940728,3560940731,FR
+3560940732,3560940735,DE
+3560940736,3560940739,DK
+3560940740,3560940743,IT
+3560940744,3560940751,DE
+3560940752,3560940755,IE
+3560940756,3560940763,FR
+3560940764,3560940767,CH
+3560940768,3560940779,DE
+3560940780,3560940783,IT
+3560940784,3560940787,NL
+3560940788,3560940791,GB
+3560940792,3560940799,ES
+3560940800,3560940803,DE
+3560940804,3560940807,GB
+3560940808,3560940811,IT
+3560940812,3560940815,DE
+3560940816,3560940819,FR
+3560940820,3560940823,NL
+3560940824,3560940827,IT
+3560940828,3560940831,ES
+3560940832,3560940839,DE
+3560940840,3560940843,IT
+3560940844,3560940851,ES
+3560940852,3560940863,DE
+3560940864,3560940867,IT
+3560940868,3560940879,DE
+3560940880,3560940883,IT
+3560940884,3560940887,NL
+3560940888,3560940891,LU
+3560940892,3560940899,DE
+3560940900,3560940903,NL
+3560940904,3560940907,DE
+3560940908,3560940915,GB
+3560940916,3560940923,DE
+3560940924,3560940927,ES
+3560940928,3560940931,GR
+3560940932,3560940935,CH
+3560940936,3560940955,DE
+3560940956,3560940963,NL
+3560940964,3560940967,DE
+3560940968,3560940971,NL
+3560940972,3560940979,DE
+3560940980,3560940983,LU
+3560940984,3560940987,IT
+3560940988,3560940999,DE
+3560941000,3560941003,ES
+3560941004,3560941019,DE
+3560941020,3560941023,IT
+3560941024,3560941027,FR
+3560941028,3560941047,DE
+3560941048,3560941051,GR
+3560941052,3560941059,FR
+3560941060,3560941067,DE
+3560941068,3560941071,FR
+3560941072,3560941075,NL
+3560941076,3560941079,GB
+3560941080,3560941083,BE
+3560941084,3560941087,IT
+3560941088,3560941091,DE
+3560941092,3560941095,BE
+3560941096,3560941099,AT
+3560941100,3560941103,DE
+3560941104,3560941107,FR
+3560941108,3560941119,DE
+3560941120,3560941123,BE
+3560941124,3560941127,FR
+3560941128,3560941131,DE
+3560941132,3560941135,GB
+3560941136,3560941147,DE
+3560941148,3560941151,IT
+3560941152,3560941155,DE
+3560941156,3560941159,ES
+3560941160,3560941175,DE
+3560941176,3560941179,ES
+3560941180,3560941183,GB
+3560941184,3560941187,IT
+3560941188,3560941191,ES
+3560941192,3560941195,DE
+3560941196,3560941199,FR
+3560941200,3560941203,DE
+3560941204,3560941207,IT
+3560941208,3560941215,DE
+3560941216,3560941219,NL
+3560941220,3560941223,GB
+3560941224,3560941227,DE
+3560941228,3560941231,SE
+3560941232,3560941235,FR
+3560941236,3560941243,DE
+3560941244,3560941251,IT
+3560941252,3560941255,DE
+3560941256,3560941259,AT
+3560941260,3560941263,DE
+3560941264,3560941271,ES
+3560941272,3560941275,DE
+3560941276,3560941279,GR
+3560941280,3560941283,NL
+3560941284,3560941287,DE
+3560941288,3560941291,ES
+3560941292,3560941295,DE
+3560941296,3560941303,IT
+3560941304,3560941307,FR
+3560941308,3560941315,DE
+3560941316,3560941319,SE
+3560941320,3560941327,DE
+3560941328,3560941331,IT
+3560941332,3560941335,PT
+3560941336,3560941339,BE
+3560941340,3560941343,GB
+3560941344,3560941347,FR
+3560941348,3560941351,IE
+3560941352,3560941355,NL
+3560941356,3560941359,ES
+3560941360,3560941379,DE
+3560941380,3560941383,CH
+3560941384,3560941387,IE
+3560941388,3560941391,SE
+3560941392,3560941407,DE
+3560941408,3560941411,CH
+3560941412,3560941415,IT
+3560941416,3560941419,DE
+3560941420,3560941423,FR
+3560941424,3560941427,DE
+3560941428,3560941431,FR
+3560941432,3560941443,DE
+3560941444,3560941447,ES
+3560941448,3560941451,DE
+3560941452,3560941459,GB
+3560941460,3560941467,DE
+3560941468,3560941471,CH
+3560941472,3560941475,BE
+3560941476,3560941479,ES
+3560941480,3560941483,DE
+3560941484,3560941487,ES
+3560941488,3560941491,DE
+3560941492,3560941495,GB
+3560941496,3560941507,DE
+3560941508,3560941511,IT
+3560941512,3560941515,AT
+3560941516,3560941519,SE
+3560941520,3560941523,NO
+3560941524,3560941539,DE
+3560941540,3560941543,FR
+3560941544,3560941547,GB
+3560941548,3560941551,DE
+3560941552,3560941555,IT
+3560941556,3560941559,DE
+3560941560,3560941563,GB
+3560941564,3560941567,GR
+3560941568,3560941587,DE
+3560941588,3560941591,ES
+3560941592,3560941599,DE
+3560941600,3560941603,FR
+3560941604,3560941607,CH
+3560941608,3560941611,GB
+3560941612,3560941631,DE
+3560941632,3560941635,NL
+3560941636,3560941639,DE
+3560941640,3560941643,GB
+3560941644,3560941647,BE
+3560941648,3560941651,NO
+3560941652,3560941655,DE
+3560941656,3560941659,GB
+3560941660,3560941663,NL
+3560941664,3560941671,DE
+3560941672,3560941679,FR
+3560941680,3560941683,GB
+3560941684,3560941687,IT
+3560941688,3560941691,DE
+3560941692,3560941695,IT
+3560941696,3560941699,FR
+3560941700,3560941703,GB
+3560941704,3560941711,DE
+3560941712,3560941715,FR
+3560941716,3560941723,DE
+3560941724,3560941727,FR
+3560941728,3560941735,DE
+3560941736,3560941739,NL
+3560941740,3560941743,NO
+3560941744,3560941747,FR
+3560941748,3560941751,ES
+3560941752,3560941755,BE
+3560941756,3560941771,DE
+3560941772,3560941779,GB
+3560941780,3560941783,DE
+3560941784,3560941787,GB
+3560941788,3560941791,DE
+3560941792,3560941795,ES
+3560941796,3560941799,FR
+3560941800,3560941803,NL
+3560941804,3560941807,ES
+3560941808,3560941811,FR
+3560941812,3560941815,NO
+3560941816,3560941819,FR
+3560941820,3560941823,NL
+3560941824,3560941831,DE
+3560941832,3560941835,GB
+3560941836,3560941847,DE
+3560941848,3560941851,BE
+3560941852,3560941855,CH
+3560941856,3560941859,BE
+3560941860,3560941867,DE
+3560941868,3560941871,AT
+3560941872,3560941875,GB
+3560941876,3560941879,NL
+3560941880,3560941883,BG
+3560941884,3560941887,DE
+3560941888,3560941891,ES
+3560941892,3560941895,DE
+3560941896,3560941899,ES
+3560941900,3560941903,DE
+3560941904,3560941907,GB
+3560941908,3560941915,DE
+3560941916,3560941919,FR
+3560941920,3560941959,DE
+3560941960,3560941963,LU
+3560941964,3560941967,FR
+3560941968,3560941971,DE
+3560941972,3560941975,DK
+3560941976,3560941983,DE
+3560941984,3560941987,NL
+3560941988,3560941991,DE
+3560941992,3560941995,GB
+3560941996,3560941999,BE
+3560942000,3560942003,FR
+3560942004,3560942007,GB
+3560942008,3560942011,IT
+3560942012,3560942015,DE
+3560942016,3560942019,NL
+3560942020,3560942023,ES
+3560942024,3560942027,CH
+3560942028,3560942035,DE
+3560942036,3560942039,GB
+3560942040,3560942047,DE
+3560942048,3560942051,IT
+3560942052,3560942055,DE
3560942056,3560942059,IS
-3560942060,3560947711,DE
+3560942060,3560942063,DE
+3560942064,3560942067,ES
+3560942068,3560942083,DE
+3560942084,3560942087,FR
+3560942088,3560942095,DE
+3560942096,3560942099,FR
+3560942100,3560942103,DE
+3560942104,3560942107,NL
+3560942108,3560942119,DE
+3560942120,3560942123,AT
+3560942124,3560942131,DE
+3560942132,3560942135,ES
+3560942136,3560942143,DE
+3560942144,3560942147,GB
+3560942148,3560942151,DE
+3560942152,3560942155,IT
+3560942156,3560942163,DE
+3560942164,3560942171,ES
+3560942172,3560942175,SE
+3560942176,3560942179,DE
+3560942180,3560942183,ES
+3560942184,3560942191,DE
+3560942192,3560942195,HU
+3560942196,3560942199,ES
+3560942200,3560942203,FR
+3560942204,3560942219,DE
+3560942220,3560942227,FR
+3560942228,3560942231,IT
+3560942232,3560942243,DE
+3560942244,3560942247,IT
+3560942248,3560942251,DE
+3560942252,3560942255,GB
+3560942256,3560942259,DE
+3560942260,3560942263,ES
+3560942264,3560942267,NL
+3560942268,3560942271,DE
+3560942272,3560942275,PL
+3560942276,3560942279,IT
+3560942280,3560942283,NL
+3560942284,3560942287,DK
+3560942288,3560942291,FR
+3560942292,3560942295,BH
+3560942296,3560942299,MA
+3560942300,3560942307,DE
+3560942308,3560942319,ES
+3560942320,3560942323,DE
+3560942324,3560942327,IT
+3560942328,3560942335,PT
+3560942336,3560942343,DE
+3560942344,3560942347,FR
+3560942348,3560942351,DE
+3560942352,3560942355,ES
+3560942356,3560942359,IT
+3560942360,3560942363,AT
+3560942364,3560942371,DE
+3560942372,3560942375,FR
+3560942376,3560942379,DE
+3560942380,3560942383,GB
+3560942384,3560942387,DE
+3560942388,3560942391,IT
+3560942392,3560942407,DE
+3560942408,3560942411,GB
+3560942412,3560942415,DE
+3560942416,3560942419,IT
+3560942420,3560942455,DE
+3560942456,3560942459,ES
+3560942460,3560942463,RU
+3560942464,3560942467,BE
+3560942468,3560942471,ES
+3560942472,3560942475,DE
+3560942476,3560942479,CH
+3560942480,3560942483,ES
+3560942484,3560942487,HU
+3560942488,3560942495,FR
+3560942496,3560942503,DE
+3560942504,3560942511,ES
+3560942512,3560942523,DE
+3560942524,3560942527,NL
+3560942528,3560942555,DE
+3560942556,3560942559,FR
+3560942560,3560942563,IT
+3560942564,3560942567,ES
+3560942568,3560942575,DE
+3560942576,3560942579,FR
+3560942580,3560942583,DE
+3560942584,3560942587,GB
+3560942588,3560942590,ES
+3560942591,3560942619,DE
+3560942620,3560942623,BE
+3560942624,3560942627,IT
+3560942628,3560942631,GB
+3560942632,3560942635,FR
+3560942636,3560942643,DE
+3560942644,3560942647,FR
+3560942648,3560942651,DE
+3560942652,3560942655,GR
+3560942656,3560942659,ES
+3560942660,3560942663,DE
+3560942664,3560942667,NL
+3560942668,3560942671,DE
+3560942672,3560942675,IT
+3560942676,3560942679,BE
+3560942680,3560942691,DE
+3560942692,3560942695,LU
+3560942696,3560942699,DE
+3560942700,3560942703,ES
+3560942704,3560942707,DE
+3560942708,3560942711,IT
+3560942712,3560942715,LU
+3560942716,3560942719,BE
+3560942720,3560942723,DE
+3560942724,3560942727,IT
+3560942728,3560942731,GB
+3560942732,3560942735,DE
+3560942736,3560942739,CH
+3560942740,3560942743,ES
+3560942744,3560942751,GB
+3560942752,3560942763,DE
+3560942764,3560942767,FR
+3560942768,3560942779,DE
+3560942780,3560942783,CH
+3560942784,3560942787,DE
+3560942788,3560942791,HU
+3560942792,3560942795,DE
+3560942796,3560942799,FR
+3560942800,3560942807,DE
+3560942808,3560942811,AT
+3560942812,3560942815,FR
+3560942816,3560942819,DE
+3560942820,3560942823,ES
+3560942824,3560942827,GB
+3560942828,3560942831,AT
+3560942832,3560942835,IT
+3560942836,3560942843,DE
+3560942844,3560942847,ES
+3560942848,3560942851,IT
+3560942852,3560942855,ES
+3560942856,3560942879,DE
+3560942880,3560942883,GB
+3560942884,3560942887,DE
+3560942888,3560942891,FR
+3560942892,3560942895,DE
+3560942896,3560942899,ES
+3560942900,3560942903,DE
+3560942904,3560942907,CH
+3560942908,3560942915,DE
+3560942916,3560942919,BE
+3560942920,3560942923,DE
+3560942924,3560942927,IT
+3560942928,3560942931,SE
+3560942932,3560942935,AT
+3560942936,3560942939,DE
+3560942940,3560942943,AE
+3560942944,3560942951,DE
+3560942952,3560942955,ES
+3560942956,3560942959,DE
+3560942960,3560942963,GB
+3560942964,3560942983,DE
+3560942984,3560942987,BE
+3560942988,3560942991,DE
+3560942992,3560942999,IT
+3560943000,3560943003,DE
+3560943004,3560943007,DK
+3560943008,3560943011,CH
+3560943012,3560943015,IT
+3560943016,3560943019,ES
+3560943020,3560943023,DE
+3560943024,3560943027,GR
+3560943028,3560943031,DE
+3560943032,3560943035,FR
+3560943036,3560943039,PL
+3560943040,3560943043,NO
+3560943044,3560943047,DE
+3560943048,3560943051,HR
+3560943052,3560943055,CY
+3560943056,3560943059,BE
+3560943060,3560943075,DE
+3560943076,3560943079,ES
+3560943080,3560943110,DE
+3560943111,3560943111,ES
+3560943112,3560943114,DE
+3560943115,3560943115,ES
+3560943116,3560943116,DK
+3560943117,3560943117,IL
+3560943118,3560943121,DE
+3560943122,3560943122,ES
+3560943123,3560943125,DE
+3560943126,3560943126,FR
+3560943127,3560943129,DE
+3560943130,3560943130,BE
+3560943131,3560943131,RU
+3560943132,3560943132,BE
+3560943133,3560943133,ES
+3560943134,3560943136,DE
+3560943137,3560943137,ES
+3560943138,3560943138,CH
+3560943139,3560943139,DE
+3560943140,3560943140,ES
+3560943141,3560943142,DE
+3560943143,3560943145,HU
+3560943146,3560943149,DE
+3560943150,3560943150,ES
+3560943151,3560943151,DE
+3560943152,3560943152,HU
+3560943153,3560943154,DE
+3560943155,3560943155,FR
+3560943156,3560943157,DE
+3560943158,3560943158,FR
+3560943159,3560943161,DE
+3560943162,3560943162,GR
+3560943163,3560943163,DE
+3560943164,3560943164,PL
+3560943165,3560943165,DE
+3560943166,3560943166,GB
+3560943167,3560943167,FR
+3560943168,3560943168,ES
+3560943169,3560943169,DE
+3560943170,3560943170,ES
+3560943171,3560943171,IT
+3560943172,3560943172,ES
+3560943173,3560943173,BE
+3560943174,3560943176,DE
+3560943177,3560943177,CH
+3560943178,3560943178,DE
+3560943179,3560943179,PL
+3560943180,3560943180,GB
+3560943181,3560943181,DE
+3560943182,3560943183,ES
+3560943184,3560943184,IT
+3560943185,3560943185,DE
+3560943186,3560943186,ES
+3560943187,3560943187,PT
+3560943188,3560943192,DE
+3560943193,3560943193,ES
+3560943194,3560943195,DE
+3560943196,3560943197,IT
+3560943198,3560943198,DE
+3560943199,3560943199,PT
+3560943200,3560943200,DE
+3560943201,3560943201,IT
+3560943202,3560943202,IL
+3560943203,3560943207,DE
+3560943208,3560943208,AT
+3560943209,3560943210,ES
+3560943211,3560943211,FR
+3560943212,3560943212,DE
+3560943213,3560943213,FR
+3560943214,3560943214,PL
+3560943215,3560943221,DE
+3560943222,3560943222,ES
+3560943223,3560943223,FR
+3560943224,3560943224,DE
+3560943225,3560943226,GR
+3560943227,3560943227,DE
+3560943228,3560943230,NL
+3560943231,3560943231,FR
+3560943232,3560943232,DE
+3560943233,3560943233,PL
+3560943234,3560943234,EE
+3560943235,3560943235,CH
+3560943236,3560943236,NL
+3560943237,3560943238,DE
+3560943239,3560943239,FR
+3560943240,3560943240,GB
+3560943241,3560943241,FR
+3560943242,3560943243,DE
+3560943244,3560943244,PL
+3560943245,3560943245,CH
+3560943246,3560943247,DE
+3560943248,3560943248,GR
+3560943249,3560943249,CH
+3560943250,3560943250,AT
+3560943251,3560943251,GB
+3560943252,3560943252,BE
+3560943253,3560943253,DE
+3560943254,3560943254,ES
+3560943255,3560943255,GB
+3560943256,3560943256,DE
+3560943257,3560943257,ES
+3560943258,3560943259,DE
+3560943260,3560943260,ES
+3560943261,3560943261,IE
+3560943262,3560943262,DE
+3560943263,3560943263,IT
+3560943264,3560943264,CZ
+3560943265,3560943267,DE
+3560943268,3560943268,IT
+3560943269,3560943269,DE
+3560943270,3560943270,GB
+3560943271,3560943271,IT
+3560943272,3560943272,ES
+3560943273,3560943273,FR
+3560943274,3560943274,GB
+3560943275,3560943275,DE
+3560943276,3560943276,FR
+3560943277,3560943277,IT
+3560943278,3560943278,DE
+3560943279,3560943279,FR
+3560943280,3560943282,DE
+3560943283,3560943283,ES
+3560943284,3560943286,DE
+3560943287,3560943287,NL
+3560943288,3560943290,FR
+3560943291,3560943291,IT
+3560943292,3560943296,DE
+3560943297,3560943297,ES
+3560943298,3560943298,FR
+3560943299,3560943299,GB
+3560943300,3560943300,DE
+3560943301,3560943301,FR
+3560943302,3560943302,ES
+3560943303,3560943303,IT
+3560943304,3560943304,FR
+3560943305,3560943310,DE
+3560943311,3560943311,IT
+3560943312,3560943312,PL
+3560943313,3560943313,DE
+3560943314,3560943314,ES
+3560943315,3560943315,IT
+3560943316,3560943316,DE
+3560943317,3560943317,IT
+3560943318,3560943318,CH
+3560943319,3560943322,DE
+3560943323,3560943323,NL
+3560943324,3560943324,DE
+3560943325,3560943325,CH
+3560943326,3560943326,RU
+3560943327,3560943330,DE
+3560943331,3560943331,IT
+3560943332,3560943335,DE
+3560943336,3560943336,ES
+3560943337,3560943337,IT
+3560943338,3560943338,BE
+3560943339,3560943339,NL
+3560943340,3560943341,DE
+3560943342,3560943342,ES
+3560943343,3560943343,FR
+3560943344,3560943344,NL
+3560943345,3560943345,DE
+3560943346,3560943346,IT
+3560943347,3560943347,ES
+3560943348,3560943348,FR
+3560943349,3560943349,DE
+3560943350,3560943350,BE
+3560943351,3560943351,SE
+3560943352,3560943352,IT
+3560943353,3560943354,DE
+3560943355,3560943355,IT
+3560943356,3560943357,DE
+3560943358,3560943358,BE
+3560943359,3560943361,DE
+3560943362,3560943362,GB
+3560943363,3560943366,DE
+3560943367,3560943367,IT
+3560943368,3560943368,DE
+3560943369,3560943369,GR
+3560943370,3560943371,DE
+3560943372,3560943372,FR
+3560943373,3560943375,DE
+3560943376,3560943376,ES
+3560943377,3560943377,GB
+3560943378,3560943378,DE
+3560943379,3560943379,ES
+3560943380,3560943383,DE
+3560943384,3560943384,FR
+3560943385,3560943385,ES
+3560943386,3560943386,CH
+3560943387,3560943387,GB
+3560943388,3560943391,DE
+3560943392,3560943392,GB
+3560943393,3560943394,DE
+3560943395,3560943395,NL
+3560943396,3560943397,DE
+3560943398,3560943398,BE
+3560943399,3560943399,DE
+3560943400,3560943400,IT
+3560943401,3560943401,DE
+3560943402,3560943402,NL
+3560943403,3560943403,DE
+3560943404,3560943404,BE
+3560943405,3560943405,DE
+3560943406,3560943407,ES
+3560943408,3560943408,IT
+3560943409,3560943409,ES
+3560943410,3560943410,NL
+3560943411,3560943411,DE
+3560943412,3560943412,IT
+3560943413,3560943413,ES
+3560943414,3560943415,DE
+3560943416,3560943416,FR
+3560943417,3560943417,DE
+3560943418,3560943418,GB
+3560943419,3560943419,FR
+3560943420,3560943420,DE
+3560943421,3560943421,HU
+3560943422,3560943422,DE
+3560943423,3560943423,FR
+3560943424,3560943424,DE
+3560943425,3560943425,ES
+3560943426,3560943426,IT
+3560943427,3560943427,FR
+3560943428,3560943428,NO
+3560943429,3560943430,NL
+3560943431,3560943435,DE
+3560943436,3560943436,FR
+3560943437,3560943437,ES
+3560943438,3560943438,FR
+3560943439,3560943439,NO
+3560943440,3560943440,FR
+3560943441,3560943441,DE
+3560943442,3560943442,ES
+3560943443,3560943443,BE
+3560943444,3560943446,DE
+3560943447,3560943447,GB
+3560943448,3560943450,DE
+3560943451,3560943451,PL
+3560943452,3560943452,GB
+3560943453,3560943454,DE
+3560943455,3560943456,GB
+3560943457,3560943457,ES
+3560943458,3560943459,IT
+3560943460,3560943460,ES
+3560943461,3560943461,CH
+3560943462,3560943462,FR
+3560943463,3560943463,NL
+3560943464,3560943464,ES
+3560943465,3560943465,FR
+3560943466,3560943466,NO
+3560943467,3560943467,IT
+3560943468,3560943468,CH
+3560943469,3560943469,IT
+3560943470,3560943471,DE
+3560943472,3560943472,BE
+3560943473,3560943473,AT
+3560943474,3560943474,CH
+3560943475,3560943475,DE
+3560943476,3560943476,BE
+3560943477,3560943477,DE
+3560943478,3560943478,IT
+3560943479,3560943479,GB
+3560943480,3560943480,NL
+3560943481,3560943481,BG
+3560943482,3560943482,DE
+3560943483,3560943486,ES
+3560943487,3560943487,DE
+3560943488,3560943488,ES
+3560943489,3560943489,DE
+3560943490,3560943490,GB
+3560943491,3560943492,DE
+3560943493,3560943493,FR
+3560943494,3560943494,GB
+3560943495,3560943495,IT
+3560943496,3560943510,DE
+3560943511,3560943511,IT
+3560943512,3560943512,DE
+3560943513,3560943513,LU
+3560943514,3560943515,ES
+3560943516,3560943519,DE
+3560943520,3560943520,DK
+3560943521,3560943521,DE
+3560943522,3560943522,GB
+3560943523,3560943524,DE
+3560943525,3560943525,NL
+3560943526,3560943526,IT
+3560943527,3560943529,DE
+3560943530,3560943530,CH
+3560943531,3560943533,DE
+3560943534,3560943534,BY
+3560943535,3560943535,FR
+3560943536,3560943536,BE
+3560943537,3560943537,DE
+3560943538,3560943538,GB
+3560943539,3560943539,DE
+3560943540,3560943540,BE
+3560943541,3560943541,NL
+3560943542,3560943542,DE
+3560943543,3560943543,NL
+3560943544,3560943544,ES
+3560943545,3560943546,DE
+3560943547,3560943547,SI
+3560943548,3560943548,GB
+3560943549,3560943549,DE
+3560943550,3560943550,HU
+3560943551,3560943551,FR
+3560943552,3560943553,DE
+3560943554,3560943554,IS
+3560943555,3560943555,FR
+3560943556,3560943556,DE
+3560943557,3560943557,ES
+3560943558,3560943558,DE
+3560943559,3560943559,GB
+3560943560,3560943562,IT
+3560943563,3560943563,HU
+3560943564,3560943566,DE
+3560943567,3560943567,FR
+3560943568,3560943568,GB
+3560943569,3560943570,FR
+3560943571,3560943572,DE
+3560943573,3560943573,FR
+3560943574,3560943574,NO
+3560943575,3560943575,DE
+3560943576,3560943576,IT
+3560943577,3560943577,DK
+3560943578,3560943578,ES
+3560943579,3560943580,DE
+3560943581,3560943581,NL
+3560943582,3560943582,DE
+3560943583,3560943583,ES
+3560943584,3560943584,DE
+3560943585,3560943585,FR
+3560943586,3560943586,ES
+3560943587,3560943587,DE
+3560943588,3560943588,IT
+3560943589,3560943590,DE
+3560943591,3560943591,AT
+3560943592,3560943592,SK
+3560943593,3560943593,PL
+3560943594,3560943594,FR
+3560943595,3560943596,ES
+3560943597,3560943599,DE
+3560943600,3560943600,AT
+3560943601,3560943601,DE
+3560943602,3560943602,IT
+3560943603,3560943603,DE
+3560943604,3560943604,ES
+3560943605,3560943605,GB
+3560943606,3560943607,DE
+3560943608,3560943608,IT
+3560943609,3560943610,DE
+3560943611,3560943611,FR
+3560943612,3560943612,DE
+3560943613,3560943613,ES
+3560943614,3560943618,DE
+3560943619,3560943620,ES
+3560943621,3560943621,SE
+3560943622,3560943622,BE
+3560943623,3560943623,DE
+3560943624,3560943624,ES
+3560943625,3560943625,DE
+3560943626,3560943626,ES
+3560943627,3560943627,DK
+3560943628,3560943628,DE
+3560943629,3560943629,IT
+3560943630,3560943630,DE
+3560943631,3560943631,HU
+3560943632,3560943632,DE
+3560943633,3560943633,ES
+3560943634,3560943634,FR
+3560943635,3560943636,DE
+3560943637,3560943637,PL
+3560943638,3560943638,DE
+3560943639,3560943639,ES
+3560943640,3560943640,FR
+3560943641,3560943642,DE
+3560943643,3560943643,IT
+3560943644,3560943644,DE
+3560943645,3560943645,GB
+3560943646,3560943646,DE
+3560943647,3560943647,ES
+3560943648,3560943651,DE
+3560943652,3560943652,AT
+3560943653,3560943653,DE
+3560943654,3560943654,IT
+3560943655,3560943655,DE
+3560943656,3560943656,IT
+3560943657,3560943657,DE
+3560943658,3560943658,GB
+3560943659,3560943659,DE
+3560943660,3560943660,PT
+3560943661,3560943661,DK
+3560943662,3560943662,DE
+3560943663,3560943664,NL
+3560943665,3560943666,DE
+3560943667,3560943667,PL
+3560943668,3560943668,DK
+3560943669,3560943669,FR
+3560943670,3560943671,DE
+3560943672,3560943672,BH
+3560943673,3560943673,SE
+3560943674,3560943674,MA
+3560943675,3560943675,FR
+3560943676,3560943677,DE
+3560943678,3560943680,ES
+3560943681,3560943682,DE
+3560943683,3560943683,GR
+3560943684,3560943684,NL
+3560943685,3560943685,IT
+3560943686,3560943686,FR
+3560943687,3560943687,PT
+3560943688,3560943688,DE
+3560943689,3560943689,PT
+3560943690,3560943691,DE
+3560943692,3560943692,SE
+3560943693,3560943693,DE
+3560943694,3560943694,FR
+3560943695,3560943695,DE
+3560943696,3560943697,CH
+3560943698,3560943698,DE
+3560943699,3560943699,IT
+3560943700,3560943700,DE
+3560943701,3560943701,AT
+3560943702,3560943702,DE
+3560943703,3560943703,FR
+3560943704,3560943704,DE
+3560943705,3560943705,CH
+3560943706,3560943706,LI
+3560943707,3560943709,DE
+3560943710,3560943710,NL
+3560943711,3560943711,DE
+3560943712,3560943712,IT
+3560943713,3560943713,PL
+3560943714,3560943714,NL
+3560943715,3560943715,DE
+3560943716,3560943716,GB
+3560943717,3560943717,FR
+3560943718,3560943719,DE
+3560943720,3560943721,IT
+3560943722,3560943726,DE
+3560943727,3560943727,ES
+3560943728,3560943728,GB
+3560943729,3560943729,DE
+3560943730,3560943730,NL
+3560943731,3560943731,IT
+3560943732,3560943736,DE
+3560943737,3560943737,GR
+3560943738,3560943740,DE
+3560943741,3560943741,FR
+3560943742,3560943742,DE
+3560943743,3560943743,PL
+3560943744,3560943744,DE
+3560943745,3560943745,PL
+3560943746,3560943748,DE
+3560943749,3560943749,GB
+3560943750,3560943750,DE
+3560943751,3560943751,IT
+3560943752,3560943752,DE
+3560943753,3560943753,ES
+3560943754,3560943754,HU
+3560943755,3560943755,BE
+3560943756,3560943756,IT
+3560943757,3560943757,DE
+3560943758,3560943758,CZ
+3560943759,3560943759,IE
+3560943760,3560943760,NO
+3560943761,3560943761,DE
+3560943762,3560943762,IT
+3560943763,3560943763,FR
+3560943764,3560943764,DE
+3560943765,3560943765,SE
+3560943766,3560943766,CY
+3560943767,3560943768,DE
+3560943769,3560943769,FR
+3560943770,3560943770,NL
+3560943771,3560943771,IT
+3560943772,3560943774,DE
+3560943775,3560943775,FR
+3560943776,3560943780,DE
+3560943781,3560943781,ES
+3560943782,3560943782,DE
+3560943783,3560943783,BE
+3560943784,3560943788,DE
+3560943789,3560943789,IT
+3560943790,3560943790,DE
+3560943791,3560943791,IT
+3560943792,3560943793,DE
+3560943794,3560943794,FR
+3560943795,3560943795,DE
+3560943796,3560943796,IT
+3560943797,3560943800,DE
+3560943801,3560943801,FR
+3560943802,3560943802,IT
+3560943803,3560943803,DE
+3560943804,3560943804,ES
+3560943805,3560943805,DE
+3560943806,3560943806,ES
+3560943807,3560943810,DE
+3560943811,3560943811,ES
+3560943812,3560943812,IT
+3560943813,3560943813,CH
+3560943814,3560943816,DE
+3560943817,3560943817,FR
+3560943818,3560943818,PT
+3560943819,3560943819,DE
+3560943820,3560943820,FR
+3560943821,3560943821,IT
+3560943822,3560943822,DE
+3560943823,3560943823,GR
+3560943824,3560943827,DE
+3560943828,3560943828,ES
+3560943829,3560943829,NL
+3560943830,3560943830,DE
+3560943831,3560943831,FR
+3560943832,3560943832,DE
+3560943833,3560943833,FR
+3560943834,3560943836,DE
+3560943837,3560943837,CH
+3560943838,3560943840,DE
+3560943841,3560943841,GB
+3560943842,3560943844,DE
+3560943845,3560943845,CZ
+3560943846,3560943847,DE
+3560943848,3560943848,FR
+3560943849,3560943849,DE
+3560943850,3560943850,NL
+3560943851,3560943857,DE
+3560943858,3560943858,GB
+3560943859,3560943859,DE
+3560943860,3560943860,GB
+3560943861,3560943865,DE
+3560943866,3560943866,BE
+3560943867,3560943868,DE
+3560943869,3560943869,LU
+3560943870,3560943871,DE
+3560943872,3560943875,BR
+3560943876,3560943879,DE
+3560943880,3560943887,US
+3560943888,3560943891,CA
+3560943892,3560943895,DE
+3560943896,3560943899,CL
+3560943900,3560943903,DE
+3560943904,3560943915,US
+3560943916,3560943919,CA
+3560943920,3560943923,US
+3560943924,3560943927,MX
+3560943928,3560943935,US
+3560943936,3560943939,PE
+3560943940,3560943943,DE
+3560943944,3560943947,US
+3560943948,3560943975,DE
+3560943976,3560943979,US
+3560943980,3560943983,DE
+3560943984,3560943987,US
+3560943988,3560943991,DE
+3560943992,3560943999,US
+3560944000,3560944023,DE
+3560944024,3560944031,US
+3560944032,3560944035,MX
+3560944036,3560944039,US
+3560944040,3560944043,MX
+3560944044,3560944059,DE
+3560944060,3560944063,US
+3560944064,3560944067,DE
+3560944068,3560944071,US
+3560944072,3560944079,DE
+3560944080,3560944083,US
+3560944084,3560944087,CL
+3560944088,3560944103,DE
+3560944104,3560944107,US
+3560944108,3560944119,DE
+3560944120,3560944135,US
+3560944136,3560944139,DE
+3560944140,3560944143,US
+3560944144,3560944147,DE
+3560944148,3560944159,US
+3560944160,3560944163,MX
+3560944164,3560944167,AR
+3560944168,3560944175,US
+3560944176,3560944179,BR
+3560944180,3560944183,PA
+3560944184,3560944187,US
+3560944188,3560944191,CA
+3560944192,3560944195,US
+3560944196,3560944199,DE
+3560944200,3560944203,BO
+3560944204,3560944207,DE
+3560944208,3560944211,CA
+3560944212,3560944215,DE
+3560944216,3560944219,BR
+3560944220,3560944227,US
+3560944228,3560944231,IT
+3560944232,3560944235,US
+3560944236,3560944239,CA
+3560944240,3560944243,US
+3560944244,3560944247,MX
+3560944248,3560944267,US
+3560944268,3560944271,CO
+3560944272,3560944275,BR
+3560944276,3560944279,PE
+3560944280,3560944283,DE
+3560944284,3560944295,US
+3560944296,3560944299,CO
+3560944300,3560944307,US
+3560944308,3560944311,MX
+3560944312,3560944315,US
+3560944316,3560944323,AR
+3560944324,3560944339,US
+3560944340,3560944343,CO
+3560944344,3560944351,US
+3560944352,3560944355,GT
+3560944356,3560944359,CA
+3560944360,3560944363,DO
+3560944364,3560944367,AR
+3560944368,3560944371,BR
+3560944372,3560944375,DE
+3560944376,3560944379,AR
+3560944380,3560944383,DE
+3560944384,3560944395,US
+3560944396,3560944399,PR
+3560944400,3560944403,CA
+3560944404,3560944411,DE
+3560944412,3560944415,US
+3560944416,3560944419,SG
+3560944420,3560944431,US
+3560944432,3560944435,DE
+3560944436,3560944447,US
+3560944448,3560944451,DE
+3560944452,3560944459,US
+3560944460,3560944460,AR
+3560944461,3560944463,DE
+3560944464,3560944467,CA
+3560944468,3560944471,BR
+3560944472,3560944475,US
+3560944476,3560944479,AR
+3560944480,3560944487,US
+3560944488,3560944491,CA
+3560944492,3560944519,US
+3560944520,3560944523,DE
+3560944524,3560944531,US
+3560944532,3560944535,MX
+3560944536,3560944551,US
+3560944552,3560944555,BR
+3560944556,3560944559,MX
+3560944560,3560944563,US
+3560944564,3560944567,ES
+3560944568,3560944575,US
+3560944576,3560944579,BR
+3560944580,3560944603,US
+3560944604,3560944607,CA
+3560944608,3560944615,US
+3560944616,3560944619,EC
+3560944620,3560944623,US
+3560944624,3560944627,CL
+3560944628,3560944631,DE
+3560944632,3560944635,CA
+3560944636,3560944779,DE
+3560944780,3560944783,ES
+3560944784,3560944787,FR
+3560944788,3560944791,NL
+3560944792,3560944795,ES
+3560944796,3560944799,GB
+3560944800,3560944803,ES
+3560944804,3560944807,FR
+3560944808,3560944811,DE
+3560944812,3560944815,ES
+3560944816,3560944823,IT
+3560944824,3560944827,DE
+3560944828,3560944831,IE
+3560944832,3560944835,DE
+3560944836,3560944839,IT
+3560944840,3560944847,DE
+3560944848,3560944855,FR
+3560944856,3560944859,NL
+3560944860,3560944863,DE
+3560944864,3560944871,FR
+3560944872,3560944875,DE
+3560944876,3560944879,ES
+3560944880,3560944883,DE
+3560944884,3560944887,ES
+3560944888,3560944891,CH
+3560944892,3560944899,DE
+3560944900,3560944903,SG
+3560944904,3560944907,MY
+3560944908,3560944915,DE
+3560944916,3560944919,SG
+3560944920,3560944923,DE
+3560944924,3560944927,CN
+3560944928,3560944931,DE
+3560944932,3560944935,SG
+3560944936,3560944943,CN
+3560944944,3560944947,MY
+3560944948,3560944963,DE
+3560944964,3560944967,MY
+3560944968,3560944971,SG
+3560944972,3560944975,CN
+3560944976,3560944979,IN
+3560944980,3560944983,DE
+3560944984,3560944987,IN
+3560944988,3560944991,SG
+3560944992,3560944995,MY
+3560944996,3560944999,SG
+3560945000,3560945003,MY
+3560945004,3560945007,DE
+3560945008,3560945011,SG
+3560945012,3560945019,DE
+3560945020,3560945023,IN
+3560945024,3560945027,DE
+3560945028,3560945031,MY
+3560945032,3560945035,IN
+3560945036,3560945039,CN
+3560945040,3560945043,SG
+3560945044,3560945047,TW
+3560945048,3560945059,DE
+3560945060,3560945063,SG
+3560945064,3560945067,MY
+3560945068,3560945075,IN
+3560945076,3560945091,DE
+3560945092,3560945095,SG
+3560945096,3560945099,CN
+3560945100,3560945103,SG
+3560945104,3560945107,MY
+3560945108,3560945111,DE
+3560945112,3560945115,SG
+3560945116,3560945119,IN
+3560945120,3560945123,CN
+3560945124,3560945131,SG
+3560945132,3560945135,TW
+3560945136,3560945139,MY
+3560945140,3560945143,SG
+3560945144,3560945147,IN
+3560945148,3560945151,SG
+3560945152,3560945279,DE
+3560945280,3560945295,JP
+3560945296,3560945299,DE
+3560945300,3560945311,JP
+3560945312,3560945315,DE
+3560945316,3560945323,JP
+3560945324,3560945327,DE
+3560945328,3560945331,JP
+3560945332,3560945335,DE
+3560945336,3560945339,JP
+3560945340,3560945343,DE
+3560945344,3560945351,JP
+3560945352,3560945355,DE
+3560945356,3560945359,TH
+3560945360,3560945379,JP
+3560945380,3560945387,DE
+3560945388,3560945403,JP
+3560945404,3560945409,DE
+3560945410,3560945410,MY
+3560945411,3560945411,DE
+3560945412,3560945412,CN
+3560945413,3560945413,SG
+3560945414,3560945414,IN
+3560945415,3560945416,SG
+3560945417,3560945417,DE
+3560945418,3560945418,CN
+3560945419,3560945419,MY
+3560945420,3560945420,DE
+3560945421,3560945422,SG
+3560945423,3560945423,CN
+3560945424,3560945424,MY
+3560945425,3560945425,IN
+3560945426,3560945426,MY
+3560945427,3560945430,DE
+3560945431,3560945431,CN
+3560945432,3560945433,IN
+3560945434,3560945434,TW
+3560945435,3560945435,DE
+3560945436,3560945436,CN
+3560945437,3560945437,SG
+3560945438,3560945438,TW
+3560945439,3560945439,SG
+3560945440,3560945440,ID
+3560945441,3560945441,SG
+3560945442,3560945442,DE
+3560945443,3560945443,IN
+3560945444,3560945447,SG
+3560945448,3560945449,DE
+3560945450,3560945450,SG
+3560945451,3560945451,IN
+3560945452,3560945453,DE
+3560945454,3560945458,SG
+3560945459,3560945459,TW
+3560945460,3560945460,SG
+3560945461,3560945461,DE
+3560945462,3560945462,IN
+3560945463,3560945465,SG
+3560945466,3560945466,CN
+3560945467,3560945467,MY
+3560945468,3560945468,SG
+3560945469,3560945469,DE
+3560945470,3560945470,CN
+3560945471,3560945471,SG
+3560945472,3560945472,CN
+3560945473,3560945473,TW
+3560945474,3560945475,SG
+3560945476,3560945476,CN
+3560945477,3560945477,TW
+3560945478,3560945478,DE
+3560945479,3560945479,SG
+3560945480,3560945480,IN
+3560945481,3560945482,DE
+3560945483,3560945485,MY
+3560945486,3560945486,IN
+3560945487,3560945488,DE
+3560945489,3560945489,MY
+3560945490,3560945490,TH
+3560945491,3560945491,IN
+3560945492,3560945495,DE
+3560945496,3560945496,IN
+3560945497,3560945499,DE
+3560945500,3560945500,SG
+3560945501,3560945501,DE
+3560945502,3560945502,IN
+3560945503,3560945539,DE
+3560945540,3560945543,SG
+3560945544,3560945551,IN
+3560945552,3560945563,DE
+3560945564,3560945567,SG
+3560945568,3560945575,DE
+3560945576,3560945579,SG
+3560945580,3560945583,MY
+3560945584,3560945587,SG
+3560945588,3560945591,TW
+3560945592,3560945595,SG
+3560945596,3560945599,DE
+3560945600,3560945603,SG
+3560945604,3560945611,DE
+3560945612,3560945615,SG
+3560945616,3560945619,DE
+3560945620,3560945627,CN
+3560945628,3560945635,SG
+3560945636,3560945639,DE
+3560945640,3560945643,SG
+3560945644,3560945647,MY
+3560945648,3560945651,IN
+3560945652,3560945659,DE
+3560945660,3560945663,IN
+3560945664,3560945667,US
+3560945668,3560945671,BR
+3560945672,3560945675,US
+3560945676,3560945679,PE
+3560945680,3560945683,BR
+3560945684,3560945691,CO
+3560945692,3560945699,US
+3560945700,3560945703,CO
+3560945704,3560945707,US
+3560945708,3560945711,CO
+3560945712,3560945727,US
+3560945728,3560945731,AR
+3560945732,3560945739,US
+3560945740,3560945743,BR
+3560945744,3560945747,US
+3560945748,3560945751,AR
+3560945752,3560945763,US
+3560945764,3560945767,AR
+3560945768,3560945771,BR
+3560945772,3560945775,CA
+3560945776,3560945787,US
+3560945788,3560945791,CO
+3560945792,3560945795,AR
+3560945796,3560945799,US
+3560945800,3560945803,BR
+3560945804,3560945807,US
+3560945808,3560945811,CO
+3560945812,3560945815,US
+3560945816,3560945819,AR
+3560945820,3560945823,US
+3560945824,3560945827,BR
+3560945828,3560945835,US
+3560945836,3560945839,CL
+3560945840,3560945843,BR
+3560945844,3560945851,US
+3560945852,3560945855,DE
+3560945856,3560945859,US
+3560945860,3560945863,DE
+3560945864,3560945867,US
+3560945868,3560945871,DE
+3560945872,3560945875,CA
+3560945876,3560945911,US
+3560945912,3560945915,CA
+3560945916,3560945919,US
+3560945920,3560946017,DE
+3560946018,3560946018,FI
+3560946019,3560946019,CZ
+3560946020,3560946176,DE
+3560946177,3560946189,US
+3560946190,3560946190,AR
+3560946191,3560946194,US
+3560946195,3560946195,PE
+3560946196,3560946196,CA
+3560946197,3560946197,US
+3560946198,3560946198,CA
+3560946199,3560946199,AR
+3560946200,3560946200,US
+3560946201,3560946201,CA
+3560946202,3560946202,DE
+3560946203,3560946203,CA
+3560946204,3560946204,US
+3560946205,3560946205,PE
+3560946206,3560946208,US
+3560946209,3560946209,CA
+3560946210,3560946212,US
+3560946213,3560946213,CO
+3560946214,3560946214,CA
+3560946215,3560946215,PE
+3560946216,3560946216,DE
+3560946217,3560946229,US
+3560946230,3560946230,AR
+3560946231,3560946231,US
+3560946232,3560946232,CA
+3560946233,3560946234,US
+3560946235,3560946235,CL
+3560946236,3560946237,US
+3560946238,3560946238,AR
+3560946239,3560946253,US
+3560946254,3560946254,SG
+3560946255,3560946256,US
+3560946257,3560946257,MX
+3560946258,3560946259,US
+3560946260,3560946260,AR
+3560946261,3560946262,US
+3560946263,3560946263,AR
+3560946264,3560946266,US
+3560946267,3560946267,CA
+3560946268,3560946271,US
+3560946272,3560946272,DE
+3560946273,3560946273,CA
+3560946274,3560946279,US
+3560946280,3560946280,ES
+3560946281,3560946282,US
+3560946283,3560946283,CL
+3560946284,3560946284,US
+3560946285,3560946285,CO
+3560946286,3560946290,US
+3560946291,3560946291,CA
+3560946292,3560946295,US
+3560946296,3560946296,CL
+3560946297,3560946297,DE
+3560946298,3560946298,US
+3560946299,3560946299,DE
+3560946300,3560946300,CL
+3560946301,3560946311,DE
+3560946312,3560946312,US
+3560946313,3560946317,DE
+3560946318,3560946319,US
+3560946320,3560946320,DE
+3560946321,3560946326,US
+3560946327,3560946327,CA
+3560946328,3560946328,US
+3560946329,3560946329,DO
+3560946330,3560946330,US
+3560946331,3560946331,DO
+3560946332,3560946333,CA
+3560946334,3560946335,US
+3560946336,3560946336,CA
+3560946337,3560946337,DE
+3560946338,3560946338,CA
+3560946339,3560946339,US
+3560946340,3560946340,CL
+3560946341,3560946342,CA
+3560946343,3560946343,DO
+3560946344,3560946344,AR
+3560946345,3560946345,US
+3560946346,3560946346,PE
+3560946347,3560946347,US
+3560946348,3560946361,DE
+3560946362,3560946363,US
+3560946364,3560946367,DE
+3560946368,3560946368,US
+3560946369,3560946372,DE
+3560946373,3560946373,US
+3560946374,3560946374,DE
+3560946375,3560946375,US
+3560946376,3560946398,DE
+3560946399,3560946399,US
+3560946400,3560946408,DE
+3560946409,3560946409,US
+3560946410,3560946419,DE
+3560946420,3560946420,US
+3560946421,3560946431,DE
+3560946432,3560946443,US
+3560946444,3560946447,BR
+3560946448,3560946451,DE
+3560946452,3560946455,BO
+3560946456,3560946467,US
+3560946468,3560946471,BR
+3560946472,3560946483,US
+3560946484,3560946487,MX
+3560946488,3560946491,US
+3560946492,3560946495,BR
+3560946496,3560946499,VE
+3560946500,3560946503,AR
+3560946504,3560946507,US
+3560946508,3560946511,MX
+3560946512,3560946523,US
+3560946524,3560946527,MX
+3560946528,3560946531,US
+3560946532,3560946535,CA
+3560946536,3560946539,PE
+3560946540,3560946543,US
+3560946544,3560946547,CA
+3560946548,3560946551,US
+3560946552,3560946555,PE
+3560946556,3560946559,US
+3560946560,3560946563,BR
+3560946564,3560946567,US
+3560946568,3560946571,BR
+3560946572,3560946579,US
+3560946580,3560946583,CA
+3560946584,3560946587,US
+3560946588,3560946591,AR
+3560946592,3560946603,US
+3560946604,3560946607,AR
+3560946608,3560946611,BR
+3560946612,3560946623,US
+3560946624,3560946635,MX
+3560946636,3560946643,US
+3560946644,3560946647,AR
+3560946648,3560946651,MX
+3560946652,3560946655,CL
+3560946656,3560946659,BR
+3560946660,3560946663,MX
+3560946664,3560946667,US
+3560946668,3560946671,MX
+3560946672,3560946679,BR
+3560946680,3560946687,US
+3560946688,3560946689,DE
+3560946690,3560946695,US
+3560946696,3560946696,BR
+3560946697,3560946698,US
+3560946699,3560946700,DE
+3560946701,3560946701,CO
+3560946702,3560946706,US
+3560946707,3560946707,VE
+3560946708,3560946708,BR
+3560946709,3560946710,VE
+3560946711,3560946711,US
+3560946712,3560946712,VE
+3560946713,3560946714,US
+3560946715,3560946715,CO
+3560946716,3560946716,US
+3560946717,3560946717,AR
+3560946718,3560946718,US
+3560946719,3560946720,BR
+3560946721,3560946723,CO
+3560946724,3560946724,MX
+3560946725,3560946729,US
+3560946730,3560946730,MX
+3560946731,3560946733,US
+3560946734,3560946734,PR
+3560946735,3560946747,US
+3560946748,3560946748,DE
+3560946749,3560946760,US
+3560946761,3560946761,DE
+3560946762,3560946762,US
+3560946763,3560946763,DE
+3560946764,3560946767,US
+3560946768,3560946768,CA
+3560946769,3560946769,US
+3560946770,3560946825,DE
+3560946826,3560946826,US
+3560946827,3560946835,DE
+3560946836,3560946836,US
+3560946837,3560946839,DE
+3560946840,3560946840,US
+3560946841,3560946943,DE
+3560946944,3560946947,US
+3560946948,3560946951,BR
+3560946952,3560946955,MX
+3560946956,3560946959,CO
+3560946960,3560946963,MX
+3560946964,3560946967,AR
+3560946968,3560946979,US
+3560946980,3560946987,DE
+3560946988,3560946991,US
+3560946992,3560946995,DE
+3560946996,3560946999,UY
+3560947000,3560947015,US
+3560947016,3560947019,AR
+3560947020,3560947027,US
+3560947028,3560947031,CO
+3560947032,3560947039,US
+3560947040,3560947043,BR
+3560947044,3560947067,US
+3560947068,3560947071,AR
+3560947072,3560947075,BR
+3560947076,3560947095,US
+3560947096,3560947099,MX
+3560947100,3560947107,US
+3560947108,3560947111,DE
+3560947112,3560947123,US
+3560947124,3560947127,CO
+3560947128,3560947143,US
+3560947144,3560947147,DE
+3560947148,3560947159,US
+3560947160,3560947163,PR
+3560947164,3560947191,US
+3560947192,3560947195,VE
+3560947196,3560947199,DE
+3560947200,3560947203,CA
+3560947204,3560947207,US
+3560947208,3560947211,DE
+3560947212,3560947231,US
+3560947232,3560947235,CA
+3560947236,3560947239,CO
+3560947240,3560947247,US
+3560947248,3560947251,CA
+3560947252,3560947267,US
+3560947268,3560947271,CO
+3560947272,3560947275,US
+3560947276,3560947279,AR
+3560947280,3560947283,MX
+3560947284,3560947287,US
+3560947288,3560947291,BR
+3560947292,3560947331,US
+3560947332,3560947335,MX
+3560947336,3560947343,US
+3560947344,3560947347,MX
+3560947348,3560947351,CO
+3560947352,3560947355,US
+3560947356,3560947359,CW
+3560947360,3560947363,US
+3560947364,3560947367,HN
+3560947368,3560947371,BR
+3560947372,3560947375,CA
+3560947376,3560947383,US
+3560947384,3560947391,CO
+3560947392,3560947395,MX
+3560947396,3560947399,US
+3560947400,3560947407,AR
+3560947408,3560947411,US
+3560947412,3560947415,AR
+3560947416,3560947431,US
+3560947432,3560947435,MX
+3560947436,3560947439,DE
+3560947440,3560947443,BR
+3560947444,3560947455,US
+3560947456,3560947463,DE
+3560947464,3560947475,JP
+3560947476,3560947507,DE
+3560947508,3560947511,JP
+3560947512,3560947523,DE
+3560947524,3560947527,JP
+3560947528,3560947535,DE
+3560947536,3560947543,JP
+3560947544,3560947551,DE
+3560947552,3560947555,JP
+3560947556,3560947559,DE
+3560947560,3560947567,JP
+3560947568,3560947571,DE
+3560947572,3560947591,JP
+3560947592,3560947603,DE
+3560947604,3560947607,JP
+3560947608,3560947623,DE
+3560947624,3560947631,JP
+3560947632,3560947655,DE
+3560947656,3560947659,JP
+3560947660,3560947667,DE
+3560947668,3560947683,JP
+3560947684,3560947687,DE
+3560947688,3560947703,JP
+3560947704,3560947707,DE
+3560947708,3560947711,JP
3560947712,3560955903,SE
3560955904,3560964095,BE
3560964096,3560996863,CN
3560996864,3561005055,GB
3561005056,3561013247,ES
3561013248,3561021439,TR
-3561021440,3561021695,DE
-3561021696,3561029631,AT
-3561029632,3561037823,DE
+3561021440,3561022463,DE
+3561022464,3561022719,AT
+3561022720,3561037823,DE
3561037824,3561046015,BE
3561046016,3561054207,RU
3561054208,3561062399,MT
@@ -138450,14 +162495,16 @@
3561259008,3561267199,IL
3561267200,3561275391,UA
3561275392,3561291775,BE
-3561291776,3561299967,RS
+3561291776,3561297919,RS
+3561297920,3561298943,ME
+3561298944,3561299967,RS
3561299968,3561308159,GB
3561308160,3561316351,PL
3561316352,3561324543,RU
3561324544,3561325567,CZ
3561326592,3561328639,IT
3561328640,3561332735,US
-3561332736,3561340927,FR
+3561332736,3561340927,AT
3561340928,3561357311,GB
3561357312,3561365503,DK
3561365504,3561373695,SA
@@ -138475,11 +162522,14 @@
3561472000,3561480191,DE
3561480192,3561488383,GB
3561488384,3561496575,OM
-3561496576,3561498111,GB
-3561498112,3561498367,DE
-3561498368,3561498623,GB
-3561498624,3561500671,NL
-3561500672,3561504767,GB
+3561496576,3561497599,NL
+3561497600,3561498111,GB
+3561498112,3561498367,FR
+3561498368,3561498495,GB
+3561498496,3561498559,NL
+3561498560,3561502719,GB
+3561502720,3561503743,NL
+3561503744,3561504767,GB
3561504768,3561512959,DE
3561512960,3561521151,SI
3561521152,3561529343,GE
@@ -138493,30 +162543,29 @@
3561586688,3561594879,BG
3561594880,3561603071,SE
3561603072,3561607167,FR
-3561607168,3561607679,GB
+3561607168,3561607391,GB
+3561607392,3561607423,FR
+3561607424,3561607679,GB
3561607680,3561608191,FR
3561608192,3561609215,GB
-3561609216,3561611263,FR
-3561611264,3561611519,GB
-3561611520,3561611775,FR
-3561611776,3561612543,GB
-3561612544,3561612799,FR
-3561612800,3561613759,GB
-3561613760,3561613823,FR
+3561609216,3561613199,FR
+3561613200,3561613215,ES
+3561613216,3561613823,FR
3561613824,3561614207,GB
3561614208,3561614335,FR
3561614336,3561614847,GB
3561614848,3561615103,FR
3561615104,3561615359,GB
3561615360,3561617407,FR
-3561617408,3561618175,ES
-3561618176,3561618431,IE
+3561617408,3561618431,IE
3561618432,3561618877,ES
3561618878,3561618878,PL
3561618879,3561619071,ES
3561619072,3561619072,GB
3561619073,3561619455,ES
-3561619456,3561652223,GB
+3561619456,3561640575,GB
+3561640576,3561640831,FR
+3561640832,3561652223,GB
3561652224,3561668607,CH
3561668608,3561684991,RU
3561684992,3561693183,BG
@@ -138532,10 +162581,11 @@
3561775104,3561783295,IL
3561783296,3561799679,RU
3561799680,3561807871,DE
-3561807872,3561816063,BE
+3561807872,3561814015,BE
+3561814016,3561815039,LU
+3561815040,3561816063,BE
3561816064,3561824255,VA
-3561824256,3561828351,AT
-3561828352,3561832447,LI
+3561824256,3561832447,LI
3561832448,3561840639,IT
3561840640,3561848831,PL
3561848832,3561857023,RU
@@ -138547,9 +162597,13 @@
3561897984,3561906175,GB
3561906176,3561914367,DE
3561914368,3561922559,ES
-3561922560,3561923583,GB
-3561923584,3561924607,NL
-3561924608,3561926655,GB
+3561922560,3561925023,GB
+3561925024,3561925039,NL
+3561925040,3561925079,GB
+3561925080,3561925087,NL
+3561925088,3561925343,GB
+3561925344,3561925375,NL
+3561925376,3561926655,GB
3561926656,3561938943,NL
3561938944,3561947135,IE
3561947136,3561963519,DE
@@ -138563,24 +162617,45 @@
3562020864,3562029055,UA
3562029056,3562037247,CZ
3562037248,3562045439,CH
-3562045440,3562061823,ES
+3562045440,3562056711,ES
+3562056712,3562056719,NL
+3562056720,3562056911,ES
+3562056912,3562056927,FR
+3562056928,3562057471,ES
+3562057472,3562057727,DE
+3562057728,3562057975,ES
+3562057976,3562057983,FR
+3562057984,3562059327,ES
+3562059328,3562059335,CH
+3562059336,3562059391,ES
+3562059392,3562059519,CH
+3562059520,3562061823,ES
3562070016,3562078207,DE
3562078208,3562086399,SK
3562094592,3562094879,GB
3562094880,3562094975,CH
-3562094976,3562102449,GB
+3562094976,3562102256,GB
+3562102257,3562102257,DE
+3562102258,3562102449,GB
3562102450,3562102450,DE
3562102451,3562102847,GB
3562102848,3562102851,NO
3562102852,3562102963,GB
3562102964,3562102967,NO
-3562102968,3562110607,GB
+3562102968,3562104536,GB
+3562104537,3562104537,FR
+3562104538,3562110607,GB
3562110608,3562110623,FR
3562110624,3562110975,GB
3562110976,3562143743,ES
3562143744,3562151935,GB
3562151936,3562160127,DE
-3562160128,3562176511,GB
+3562160128,3562169343,GB
+3562169344,3562170367,CH
+3562170368,3562172415,IE
+3562172416,3562173951,CH
+3562173952,3562174463,GB
+3562174464,3562176511,CH
3562176512,3562184703,FR
3562184704,3562192895,DE
3562192896,3562201087,UA
@@ -138610,10 +162685,9 @@
3562373120,3562381311,FR
3562381312,3562389503,SI
3562389504,3562397695,GH
-3562397696,3562399743,GB
-3562399744,3562400767,ES
-3562400768,3562401791,GB
-3562401792,3562403839,ES
+3562397696,3562398975,GB
+3562398976,3562399743,FR
+3562399744,3562403839,ES
3562403840,3562405887,GB
3562405888,3562414079,FI
3562414080,3562422271,DE
@@ -138622,7 +162696,8 @@
3562431232,3562431487,RU
3562431488,3562431999,UA
3562432000,3562432255,NL
-3562432256,3562433535,UA
+3562432256,3562433279,UA
+3562433280,3562433535,CZ
3562433536,3562434047,NL
3562434048,3562435071,UA
3562435072,3562435583,NL
@@ -138633,7 +162708,11 @@
3562479616,3562487807,DE
3562487808,3562495999,GB
3562496000,3562504191,BE
-3562504192,3562512383,DE
+3562504192,3562507071,DE
+3562507072,3562507079,AT
+3562507080,3562507111,DE
+3562507112,3562507199,AT
+3562507200,3562512383,DE
3562512384,3562520575,UA
3562528768,3562536959,PL
3562536960,3562545151,AT
@@ -138690,7 +162769,15 @@
3562971136,3562987519,FR
3562987520,3562995711,DE
3562995712,3563003903,AT
-3563003904,3563012095,DE
+3563003904,3563005183,DE
+3563005184,3563005311,KZ
+3563005312,3563006591,DE
+3563006592,3563006719,CA
+3563006720,3563008255,DE
+3563008256,3563008511,PL
+3563008512,3563010815,DE
+3563010816,3563011071,PL
+3563011072,3563012095,DE
3563012096,3563020287,FR
3563020288,3563028479,DE
3563028480,3563036671,IR
@@ -138702,24 +162789,13 @@
3563067392,3563068415,MZ
3563068416,3563069439,NG
3563069440,3563077631,HU
-3563077632,3563080447,KZ
-3563080448,3563080703,SE
-3563080704,3563082239,KZ
-3563082240,3563082751,SE
-3563082752,3563083007,KZ
-3563083008,3563083263,SE
-3563083264,3563084287,KZ
-3563084288,3563084799,SE
-3563084800,3563085823,KZ
+3563077632,3563085823,KZ
3563085824,3563094015,RU
3563094016,3563102207,DE
3563102208,3563110399,CZ
3563110400,3563118591,RU
3563118592,3563126783,PL
-3563126784,3563127807,RU
-3563127808,3563128831,KG
-3563128832,3563130879,RU
-3563130880,3563134975,KG
+3563126784,3563134975,KG
3563134976,3563143167,IT
3563143168,3563151359,GB
3563151360,3563159551,DE
@@ -138738,14 +162814,18 @@
3563323648,3563331583,GB
3563331584,3563339775,DE
3563339776,3563347967,NG
-3563347968,3563356159,GB
+3563347968,3563348991,GB
+3563348992,3563353087,FI
+3563353088,3563356159,GB
3563356160,3563364351,RU
3563364352,3563372543,BE
3563372544,3563380735,SA
3563380736,3563388927,GB
3563388928,3563397119,CH
3563397120,3563405311,DE
-3563405312,3563413503,ES
+3563405312,3563407871,ES
+3563407872,3563407903,US
+3563407904,3563413503,ES
3563413504,3563421695,TR
3563421696,3563438079,SI
3563438080,3563446271,DE
@@ -138782,7 +162862,89 @@
3563749376,3563765759,PL
3563765760,3563782143,ES
3563790336,3563798527,EE
-3563798528,3563806719,FR
+3563798528,3563800607,FR
+3563800608,3563800623,GB
+3563800624,3563800767,FR
+3563800768,3563800783,GB
+3563800784,3563800911,FR
+3563800912,3563800927,GB
+3563800928,3563800943,FR
+3563800944,3563800991,GB
+3563800992,3563801135,FR
+3563801136,3563801151,DE
+3563801152,3563801183,FR
+3563801184,3563801199,DE
+3563801200,3563801279,FR
+3563801280,3563801295,NL
+3563801296,3563801375,FR
+3563801376,3563801391,GB
+3563801392,3563801407,IT
+3563801408,3563801423,DE
+3563801424,3563801455,FR
+3563801456,3563801519,GB
+3563801520,3563801551,FR
+3563801552,3563801567,GB
+3563801568,3563801599,FR
+3563801600,3563801631,GB
+3563801632,3563801647,FR
+3563801648,3563801743,GB
+3563801744,3563801775,FR
+3563801776,3563801791,BE
+3563801792,3563801839,FR
+3563801840,3563801855,GB
+3563801856,3563801871,FR
+3563801872,3563801887,GB
+3563801888,3563801922,FR
+3563801923,3563801935,GB
+3563801936,3563802015,FR
+3563802016,3563802031,BE
+3563802032,3563802047,FR
+3563802048,3563802063,IT
+3563802064,3563802207,FR
+3563802208,3563802223,GB
+3563802224,3563802255,FR
+3563802256,3563802271,GB
+3563802272,3563802303,FR
+3563802304,3563802319,IT
+3563802320,3563802447,FR
+3563802448,3563802463,GB
+3563802464,3563802623,FR
+3563802624,3563802655,GB
+3563802656,3563802735,FR
+3563802736,3563802751,US
+3563802752,3563802783,GB
+3563802784,3563803007,FR
+3563803008,3563803023,GB
+3563803024,3563803039,FR
+3563803040,3563803055,GB
+3563803056,3563803119,FR
+3563803120,3563803135,NL
+3563803136,3563803151,FR
+3563803152,3563803167,GB
+3563803168,3563803183,FR
+3563803184,3563803215,GB
+3563803216,3563803247,FR
+3563803248,3563803263,GB
+3563803264,3563803279,FR
+3563803280,3563803295,GB
+3563803296,3563803311,FR
+3563803312,3563803327,GB
+3563803328,3563803359,FR
+3563803360,3563803423,GB
+3563803424,3563803439,FR
+3563803440,3563803455,DE
+3563803456,3563803487,GB
+3563803488,3563803503,US
+3563803504,3563803519,GB
+3563803520,3563803631,FR
+3563803632,3563803647,GB
+3563803648,3563803967,FR
+3563803968,3563803983,BE
+3563803984,3563804695,FR
+3563804696,3563804703,GB
+3563804704,3563804719,FR
+3563804720,3563804727,GB
+3563804728,3563806719,FR
3563806720,3563814911,SA
3563814912,3563823103,SE
3563823104,3563831295,DE
@@ -138836,7 +162998,8 @@
3564176640,3564176671,PL
3564176672,3564183551,GB
3564183552,3564191743,UA
-3564191744,3564199935,BE
+3564191744,3564195839,NL
+3564197888,3564198143,BE
3564199936,3564208127,RU
3564208128,3564216319,GB
3564216320,3564224511,PT
@@ -138844,7 +163007,9 @@
3564232704,3564249087,RU
3564249088,3564265471,DE
3564265472,3564273663,NL
-3564273664,3564306431,DE
+3564273664,3564294399,DE
+3564294400,3564294403,IT
+3564294404,3564306431,DE
3564306432,3564314623,TR
3564322816,3564331007,IT
3564339200,3564355583,GB
@@ -138861,7 +163026,8 @@
3564421120,3564429311,SA
3564429312,3564437503,KZ
3564437504,3564445695,LT
-3564445696,3564453887,BG
+3564445696,3564449791,GB
+3564449792,3564453887,ID
3564453888,3564462079,DE
3564462080,3564470271,CH
3564470272,3564478463,IL
@@ -138872,13 +163038,17 @@
3564519424,3564527615,SI
3564527616,3564543999,SA
3564544000,3564560383,DE
-3564560384,3564572427,GB
+3564560384,3564571695,GB
+3564571696,3564571703,DE
+3564571704,3564572427,GB
3564572428,3564572431,ES
3564572432,3564572527,GB
3564572528,3564572531,DK
3564572532,3564574719,GB
3564574720,3564574975,NL
-3564574976,3564576767,GB
+3564574976,3564575487,GB
+3564575488,3564575615,DE
+3564575616,3564576767,GB
3564584960,3564593151,SA
3564593152,3564601343,RU
3564601344,3564609535,EE
@@ -138895,21 +163065,33 @@
3564724224,3564732415,NL
3564732416,3564733183,GB
3564733184,3564733215,DE
-3564733216,3564733343,GB
+3564733216,3564733259,GB
+3564733260,3564733263,DE
+3564733264,3564733343,GB
3564733344,3564733351,DE
-3564733352,3564733807,GB
+3564733352,3564733416,GB
+3564733417,3564733420,DE
+3564733421,3564733421,GB
+3564733422,3564733422,DE
+3564733423,3564733807,GB
3564733808,3564733823,DE
3564733824,3564734457,GB
3564734458,3564734458,DE
3564734459,3564734741,GB
3564734742,3564734742,DE
-3564734743,3564734775,GB
+3564734743,3564734743,GB
+3564734744,3564734751,DE
+3564734752,3564734775,GB
3564734776,3564734783,DE
-3564734784,3564739327,GB
+3564734784,3564738559,GB
+3564738560,3564739071,DE
+3564739072,3564739327,GB
3564739328,3564739343,DE
3564739344,3564739345,GB
3564739346,3564739346,DE
-3564739347,3564740607,GB
+3564739347,3564739375,GB
+3564739376,3564739383,DE
+3564739384,3564740607,GB
3564740608,3564748799,FR
3564748800,3564756991,GB
3564756992,3564765183,ES
@@ -138928,49 +163110,73 @@
3564847104,3564855295,IT
3564855296,3564863487,DE
3564863488,3564879871,NL
-3564879872,3564880651,GB
+3564879872,3564879935,GB
+3564879936,3564879999,NL
+3564880000,3564880519,GB
+3564880520,3564880523,NL
+3564880524,3564880651,GB
3564880652,3564880655,NL
3564880656,3564880945,GB
3564880946,3564880946,NL
3564880947,3564882015,GB
3564882016,3564882031,NL
-3564882032,3564882543,GB
+3564882032,3564882399,GB
+3564882400,3564882415,NL
+3564882416,3564882543,GB
3564882544,3564882551,NL
3564882552,3564882559,GB
3564882560,3564882591,NL
-3564882592,3564883071,GB
+3564882592,3564882617,GB
+3564882618,3564882618,NL
+3564882619,3564883071,GB
3564883072,3564883079,NL
-3564883080,3564886271,GB
-3564886272,3564886527,NL
-3564886528,3564888991,GB
-3564888992,3564889007,ES
+3564883080,3564883199,GB
+3564883200,3564883455,NL
+3564883456,3564883967,GB
+3564883968,3564884223,NL
+3564884224,3564886015,GB
+3564886016,3564886527,NL
+3564886528,3564886719,GB
+3564886720,3564886751,NL
+3564886752,3564888991,GB
+3564888992,3564888993,ES
+3564888994,3564888994,NL
+3564888995,3564889007,ES
3564889008,3564889633,GB
3564889634,3564889634,NL
-3564889635,3564895231,GB
+3564889635,3564891119,GB
+3564891120,3564891135,NL
+3564891136,3564891647,GB
+3564891648,3564892159,IT
+3564892160,3564895231,GB
3564895232,3564895743,NL
-3564895744,3564896255,GB
+3564895744,3564895959,GB
+3564895960,3564895967,DE
+3564895968,3564896095,GB
+3564896096,3564896111,DE
+3564896112,3564896255,GB
3564896256,3564904447,RU
3564904448,3564912639,DE
3564912640,3564913663,NL
3564913664,3564913919,ES
3564913920,3564914175,IE
3564914176,3564914431,FR
-3564914432,3564914687,IE
+3564914432,3564914687,NL
3564914688,3564915711,GB
3564915712,3564915712,IN
3564915713,3564916735,US
3564916736,3564917759,MX
3564917760,3564918783,US
3564918784,3564920831,IT
-3564920832,3564922879,RU
-3564922880,3564924927,US
-3564924928,3564926975,RU
+3564920832,3564922111,DE
+3564922112,3564924927,US
+3564924928,3564926975,DE
3564926976,3564929023,US
3564929024,3564937215,AT
3564937216,3564945407,IT
3564945408,3564953599,GB
-3564953600,3564955647,AT
-3564955648,3564957695,GB
+3564953600,3564954879,AT
+3564954880,3564957695,GB
3564957696,3564960959,AT
3564960960,3564960975,GB
3564960976,3564961791,AT
@@ -138981,7 +163187,14 @@
3564994560,3565002751,NL
3565002752,3565027327,NO
3565027328,3565035519,PL
-3565035520,3565043711,IE
+3565035520,3565037567,IE
+3565037568,3565038591,GB
+3565038592,3565038847,IE
+3565038848,3565038879,GB
+3565038880,3565038895,IE
+3565038896,3565039103,GB
+3565039104,3565041663,IE
+3565041664,3565043711,GB
3565043712,3565051903,AT
3565051904,3565060095,IQ
3565060096,3565068287,GB
@@ -139000,11 +163213,97 @@
3565256704,3565289471,CN
3565289472,3565355007,DK
3565355008,3565420543,IT
-3565420544,3565518847,GB
+3565420544,3565486335,GB
+3565486336,3565486975,FR
+3565486976,3565487615,NL
+3565487616,3565495295,GB
+3565495296,3565496319,FR
+3565496320,3565502463,GB
+3565502464,3565503487,NL
+3565503488,3565518847,GB
3565518848,3565551615,TR
3565551616,3565682687,GB
3565682688,3565748223,NL
-3565748224,3565813759,GB
+3565748224,3565752319,GB
+3565752464,3565752479,GB
+3565752536,3565752559,GB
+3565752576,3565752839,GB
+3565752856,3565752879,GB
+3565752888,3565752983,GB
+3565752992,3565752999,GB
+3565753016,3565753031,GB
+3565753040,3565753071,GB
+3565753080,3565753183,GB
+3565753248,3565753279,GB
+3565753344,3565753791,GB
+3565753800,3565753815,GB
+3565753824,3565753831,GB
+3565753840,3565753847,GB
+3565753984,3565754367,GB
+3565754496,3565754511,GB
+3565754624,3565755263,GB
+3565755280,3565755359,GB
+3565755376,3565755583,GB
+3565755648,3565755695,GB
+3565755704,3565755727,GB
+3565755736,3565755831,GB
+3565755840,3565755847,GB
+3565755856,3565755871,GB
+3565755880,3565755903,GB
+3565756152,3565756159,GB
+3565756416,3565760783,GB
+3565760792,3565760799,GB
+3565760808,3565760823,GB
+3565760832,3565760855,GB
+3565760864,3565760935,GB
+3565760944,3565760967,GB
+3565760976,3565761007,GB
+3565761016,3565761279,GB
+3565761344,3565761535,GB
+3565761544,3565761599,GB
+3565761616,3565761631,GB
+3565761640,3565761647,GB
+3565761656,3565761687,GB
+3565761704,3565761727,GB
+3565761752,3565761783,GB
+3565761792,3565762047,GB
+3565762048,3565762303,ZA
+3565762560,3565762815,GB
+3565763072,3565763455,GB
+3565763488,3565763599,GB
+3565763616,3565763671,GB
+3565763680,3565763703,GB
+3565763720,3565763735,GB
+3565763744,3565763751,GB
+3565763760,3565763799,GB
+3565763808,3565763815,GB
+3565763832,3565763839,GB
+3565763884,3565763891,GB
+3565764096,3565764183,GB
+3565764192,3565764207,GB
+3565764256,3565764367,GB
+3565764376,3565764431,GB
+3565764448,3565764455,GB
+3565764464,3565764551,GB
+3565764576,3565766655,GB
+3565766912,3565767167,GB
+3565767176,3565767255,GB
+3565767272,3565767287,GB
+3565767296,3565767351,GB
+3565767360,3565767399,GB
+3565767408,3565767439,GB
+3565767456,3565767487,GB
+3565767504,3565767519,GB
+3565767536,3565767599,GB
+3565767616,3565767631,GB
+3565767680,3565767999,GB
+3565768208,3565768223,GB
+3565768240,3565768247,GB
+3565768448,3565768575,GB
+3565768704,3565768983,GB
+3565769472,3565769727,GB
+3565770752,3565771775,GB
+3565777920,3565813759,GB
3565813760,3565879295,SA
3565879296,3566010367,GB
3566010368,3566075903,IT
@@ -139020,7 +163319,9 @@
3566403584,3566436351,CH
3566436352,3566469119,IE
3566469120,3566534655,GB
-3566534656,3566551039,DE
+3566534656,3566546943,DE
+3566546944,3566547967,GB
+3566547968,3566551039,DE
3566551040,3566600191,FI
3566600192,3566607359,IL
3566607360,3566607615,GN
@@ -139037,53 +163338,183 @@
3566927872,3566993407,FR
3566993408,3567058943,TR
3567058944,3567124479,FR
-3567124480,3567157247,GB
+3567124992,3567125023,GB
+3567125248,3567125503,GB
+3567126688,3567126759,GB
+3567127552,3567127807,GB
+3567129856,3567129887,GB
+3567130016,3567130079,GB
+3567131384,3567131647,GB
+3567133216,3567133247,GB
+3567133368,3567133375,GB
+3567134208,3567134335,GB
+3567134848,3567134975,GB
+3567136512,3567136575,GB
+3567136640,3567136671,GB
+3567136768,3567136895,GB
+3567137024,3567137279,GB
+3567137600,3567137663,GB
+3567137988,3567137991,GB
+3567138000,3567138003,GB
+3567140096,3567140351,GB
+3567140864,3567140927,GB
+3567141632,3567141887,GB
+3567142272,3567142399,GB
+3567143432,3567143439,GB
+3567143520,3567143551,GB
+3567143680,3567143687,GB
+3567143872,3567143935,GB
+3567143952,3567143967,GB
+3567144172,3567144175,GB
+3567144320,3567144447,GB
+3567144768,3567144831,GB
+3567147528,3567147535,GB
+3567147552,3567147559,GB
+3567148520,3567148527,GB
+3567148800,3567149055,GB
+3567149088,3567149119,GB
+3567149904,3567149911,GB
+3567149920,3567149935,GB
+3567151136,3567151199,GB
+3567151232,3567151263,GB
+3567152000,3567152127,GB
+3567152160,3567152191,GB
+3567152256,3567152383,GB
+3567152400,3567152407,GB
+3567152640,3567152647,GB
+3567152744,3567152751,GB
+3567152832,3567152863,GB
+3567152960,3567152991,GB
+3567153024,3567153055,GB
+3567153600,3567153607,GB
+3567153616,3567153623,GB
+3567153648,3567153663,GB
+3567153688,3567153703,GB
+3567153720,3567153727,GB
+3567153824,3567153847,GB
+3567154304,3567154367,GB
+3567155200,3567155967,GB
+3567156416,3567156607,GB
3567157248,3567165439,CZ
3567165440,3567169535,RU
3567169536,3567173631,MK
3567173632,3567239167,GB
-3567239168,3567255551,NL
+3567239168,3567243263,NL
+3567243264,3567247359,GB
+3567247360,3567255551,NL
3567255552,3567263743,PL
3567263744,3567271935,ES
3567271936,3567321087,PL
-3567321088,3567344455,GB
-3567344456,3567344463,ES
-3567344464,3567353855,GB
+3567321088,3567338615,GB
+3567338616,3567338639,DE
+3567338640,3567344447,GB
+3567344448,3567344479,ES
+3567344480,3567345623,GB
+3567345624,3567345631,IE
+3567345632,3567350271,GB
+3567350272,3567350527,ES
+3567350528,3567353855,GB
3567353856,3567386623,CH
-3567386624,3567388647,GB
+3567386624,3567388351,GB
+3567388352,3567388383,DE
+3567388384,3567388543,GB
+3567388544,3567388607,DE
+3567388608,3567388647,GB
3567388648,3567388655,DE
-3567388656,3567391865,GB
+3567388656,3567389695,GB
+3567389696,3567390719,DE
+3567390720,3567391865,GB
3567391866,3567391866,PL
3567391867,3567393801,GB
3567393802,3567393802,SI
-3567393803,3567403007,GB
+3567393803,3567399935,GB
+3567399936,3567401471,DE
+3567401472,3567403007,GB
3567403008,3567419391,IT
3567427584,3567435775,SE
-3567435776,3567452159,GB
-3567452160,3567453183,ES
-3567453184,3567453407,GB
+3567435776,3567453079,GB
+3567453080,3567453087,ES
+3567453088,3567453407,GB
3567453408,3567453439,ES
3567453440,3567453695,GB
3567453696,3567453951,ES
-3567453952,3567454207,GB
-3567454208,3567517695,ES
+3567453952,3567456407,GB
+3567456408,3567456415,ES
+3567456416,3567456511,GB
+3567456512,3567456767,ES
+3567456768,3567458305,GB
+3567458306,3567458306,ES
+3567458307,3567458471,GB
+3567458472,3567458479,ES
+3567458480,3567458911,GB
+3567458912,3567458943,ES
+3567458944,3567459135,GB
+3567459136,3567459151,ES
+3567459152,3567459935,GB
+3567459936,3567459943,ES
+3567459944,3567460767,GB
+3567460768,3567460799,ES
+3567460800,3567463135,GB
+3567463136,3567463143,ES
+3567463144,3567465983,GB
+3567465984,3567466239,ES
+3567466240,3567490047,GB
+3567490048,3567490303,ES
+3567490304,3567494847,GB
+3567494848,3567494911,ES
+3567494912,3567499007,GB
+3567499008,3567499135,ES
+3567499136,3567499519,GB
+3567499520,3567499775,ES
+3567499776,3567500543,GB
+3567500544,3567500799,ES
+3567500800,3567502615,GB
+3567502616,3567502623,ES
+3567502624,3567503359,GB
+3567503360,3567504383,ES
+3567504384,3567505151,GB
+3567505152,3567505407,ES
+3567505408,3567507271,GB
+3567507272,3567507287,ES
+3567507288,3567511487,GB
+3567511488,3567511495,ES
+3567511496,3567516671,GB
+3567516672,3567517695,ES
3567517696,3567583231,RU
-3567583232,3567591423,GB
+3567583232,3567583487,AT
+3567583744,3567583871,AT
+3567583936,3567583999,AT
+3567584256,3567584383,AT
+3567584392,3567584407,AT
+3567584512,3567584639,AT
+3567585280,3567585311,TR
+3567585792,3567586303,GB
+3567586304,3567586815,TR
+3567587328,3567591423,GB
3567591424,3567599615,IT
3567599616,3567615999,NL
3567616000,3567616767,GB
3567616768,3567617023,US
-3567617024,3567619583,GB
+3567617024,3567618047,GB
+3567618048,3567619071,IN
+3567619072,3567619583,GB
3567619584,3567619839,NG
3567619840,3567620095,GB
3567620096,3567620351,IN
-3567620352,3567648767,GB
+3567620352,3567627263,GB
+3567627264,3567629311,LU
+3567629312,3567630335,GB
+3567630336,3567634431,LU
+3567634432,3567636479,GB
+3567636480,3567640575,LU
+3567640576,3567644671,US
+3567644672,3567646719,LU
+3567646720,3567648767,GB
3567648768,3567665151,BE
3567665152,3567673343,ES
3567673344,3567681535,AT
3567681536,3567714303,ES
-3567714304,3567715327,GB
-3567716352,3567717631,GB
+3567714304,3567717631,GB
3567717888,3567718015,GB
3567718144,3567718399,CH
3567718400,3567718655,US
@@ -139117,7 +163548,9 @@
3568803840,3568812031,IT
3568812032,3568828415,ES
3568828416,3568959487,DE
-3568959488,3569025023,AT
+3568959488,3569001471,AT
+3569002752,3569012991,AT
+3569014272,3569025023,AT
3569025024,3569057791,NL
3569057792,3569074687,GB
3569074688,3569074943,IE
@@ -139135,9 +163568,262 @@
3569614848,3569680383,GB
3569680384,3569713151,SK
3569713152,3569729535,AT
-3569729536,3569811175,FR
-3569811176,3569811176,GP
-3569811177,3569811455,FR
+3569729536,3569731167,FR
+3569731168,3569731183,IT
+3569731184,3569731215,GB
+3569731216,3569731231,FR
+3569731232,3569731247,DE
+3569731248,3569731263,GB
+3569731264,3569731311,FR
+3569731312,3569731327,GB
+3569731328,3569731375,FR
+3569731376,3569731391,GB
+3569731392,3569731423,FR
+3569731424,3569731439,GB
+3569731440,3569731455,FR
+3569731456,3569731471,GB
+3569731472,3569731487,FR
+3569731488,3569731503,GB
+3569731504,3569731519,IT
+3569731520,3569731551,GB
+3569731552,3569731583,FR
+3569731584,3569731599,GB
+3569731600,3569731615,FR
+3569731616,3569731631,DE
+3569731632,3569731647,IT
+3569731648,3569731727,FR
+3569731728,3569731743,GB
+3569731744,3569731791,FR
+3569731792,3569731807,GB
+3569731808,3569731839,FR
+3569731840,3569731871,GB
+3569731872,3569731903,FR
+3569731904,3569731919,BE
+3569731920,3569731951,FR
+3569731952,3569731967,NL
+3569731968,3569731983,GB
+3569731984,3569732031,FR
+3569732032,3569732047,DE
+3569732048,3569732063,GB
+3569732064,3569732079,FR
+3569732080,3569732095,GB
+3569732096,3569732143,FR
+3569732144,3569732191,GB
+3569732192,3569732207,DE
+3569732208,3569732287,FR
+3569732288,3569732303,GB
+3569732304,3569732319,DE
+3569732320,3569732335,FR
+3569732336,3569732351,GB
+3569732352,3569732383,FR
+3569732384,3569732399,US
+3569732400,3569732447,FR
+3569732448,3569732479,US
+3569732480,3569732495,GB
+3569732496,3569732543,FR
+3569732544,3569732575,GB
+3569732576,3569732607,FR
+3569732608,3569732639,GB
+3569732640,3569732671,FR
+3569732672,3569732703,GB
+3569732704,3569732719,FR
+3569732720,3569732735,GB
+3569732736,3569732751,FR
+3569732752,3569732767,GB
+3569732768,3569732783,FR
+3569732784,3569732847,GB
+3569732848,3569732863,FR
+3569732864,3569732879,GB
+3569732880,3569732895,FR
+3569732896,3569732911,IT
+3569732912,3569733007,FR
+3569733008,3569733023,IE
+3569733024,3569733055,FR
+3569733056,3569733087,GB
+3569733088,3569733103,IT
+3569733104,3569733183,FR
+3569733184,3569733199,GB
+3569733200,3569733263,FR
+3569733264,3569733279,US
+3569733280,3569733295,DE
+3569733296,3569733311,GB
+3569733312,3569733327,FR
+3569733328,3569733343,GB
+3569733344,3569733423,FR
+3569733424,3569733439,GB
+3569733440,3569733471,FR
+3569733472,3569733487,GB
+3569733488,3569733519,FR
+3569733520,3569733535,GB
+3569733536,3569733551,NL
+3569733552,3569733567,FR
+3569733568,3569733583,GB
+3569733584,3569733599,FR
+3569733600,3569733615,GB
+3569733616,3569733647,FR
+3569733648,3569733663,GB
+3569733664,3569733679,FR
+3569733680,3569733695,GB
+3569733696,3569733775,FR
+3569733776,3569733791,IE
+3569733792,3569733807,FR
+3569733808,3569733823,GB
+3569733824,3569733887,FR
+3569733888,3569733919,GB
+3569733920,3569733935,FR
+3569733936,3569733951,GB
+3569733952,3569733967,FR
+3569733968,3569733983,ES
+3569733984,3569733999,GB
+3569734000,3569734047,FR
+3569734048,3569734079,GB
+3569734080,3569734143,FR
+3569734144,3569734159,GB
+3569734160,3569734191,FR
+3569734192,3569734207,GB
+3569734208,3569734367,FR
+3569734368,3569734399,GB
+3569734400,3569734447,BE
+3569734448,3569734463,FR
+3569734464,3569734511,BE
+3569734512,3569736047,FR
+3569736048,3569736063,GB
+3569736064,3569736071,FR
+3569736072,3569736079,ES
+3569736080,3569736191,FR
+3569736192,3569736223,NL
+3569736224,3569736239,FR
+3569736240,3569736383,NL
+3569736384,3569736399,SE
+3569736400,3569736655,NL
+3569736656,3569736671,FR
+3569736672,3569736703,NL
+3569736704,3569739263,FR
+3569739264,3569739295,NL
+3569739296,3569739327,FR
+3569739328,3569739471,NL
+3569739472,3569739487,FR
+3569739488,3569739599,NL
+3569739600,3569739631,FR
+3569739632,3569739647,NL
+3569739648,3569739663,FR
+3569739664,3569739679,NL
+3569739680,3569739695,FR
+3569739696,3569739839,NL
+3569739840,3569739855,FR
+3569739856,3569739903,NL
+3569739904,3569739919,FR
+3569739920,3569739935,NL
+3569739936,3569739951,FR
+3569739952,3569740047,NL
+3569740048,3569740063,FR
+3569740064,3569740111,NL
+3569740112,3569740127,FR
+3569740128,3569740255,NL
+3569740256,3569740271,FR
+3569740272,3569740303,NL
+3569740304,3569740319,FR
+3569740320,3569740367,NL
+3569740368,3569740383,FR
+3569740384,3569740415,NL
+3569740416,3569740431,FR
+3569740432,3569740463,NL
+3569740464,3569740479,FR
+3569740480,3569740495,NL
+3569740496,3569740511,FR
+3569740512,3569740543,NL
+3569740544,3569740559,FR
+3569740560,3569740655,NL
+3569740656,3569740671,FR
+3569740672,3569740687,NL
+3569740688,3569740703,FR
+3569740704,3569740799,NL
+3569740800,3569742335,FR
+3569742336,3569742351,BE
+3569742352,3569742383,FR
+3569742384,3569742399,BE
+3569742400,3569742415,FR
+3569742416,3569742511,BE
+3569742512,3569742527,FR
+3569742528,3569742623,BE
+3569742624,3569742639,FR
+3569742640,3569742671,BE
+3569742672,3569742687,FR
+3569742688,3569742735,BE
+3569742736,3569742751,FR
+3569742752,3569742767,BE
+3569742768,3569742783,FR
+3569742784,3569742927,BE
+3569742928,3569742943,FR
+3569742944,3569743087,BE
+3569743088,3569743103,FR
+3569743104,3569743135,BE
+3569743136,3569743199,FR
+3569743200,3569743215,BE
+3569743216,3569743359,FR
+3569743360,3569743391,BE
+3569743392,3569743407,FR
+3569743408,3569743423,BE
+3569743424,3569743455,FR
+3569743456,3569743583,BE
+3569743584,3569743599,NL
+3569743600,3569743615,FR
+3569743616,3569743631,BE
+3569743632,3569743647,FR
+3569743648,3569743679,BE
+3569743680,3569743711,FR
+3569743712,3569743775,BE
+3569743776,3569743791,FR
+3569743792,3569743871,BE
+3569743872,3569743983,NL
+3569743984,3569743999,FR
+3569744000,3569744047,NL
+3569744048,3569744063,FR
+3569744064,3569744127,NL
+3569744128,3569744143,FR
+3569744144,3569744543,NL
+3569744544,3569744559,FR
+3569744560,3569744575,NL
+3569744576,3569744623,FR
+3569744624,3569744815,NL
+3569744816,3569744831,FR
+3569744832,3569744911,NL
+3569744912,3569744927,FR
+3569744928,3569744975,NL
+3569744976,3569744991,FR
+3569744992,3569745007,NL
+3569745008,3569745023,FR
+3569745024,3569745039,NL
+3569745040,3569745055,FR
+3569745056,3569745103,NL
+3569745104,3569745119,FR
+3569745120,3569745167,NL
+3569745168,3569745183,FR
+3569745184,3569745215,NL
+3569745216,3569745231,FR
+3569745232,3569745247,NL
+3569745248,3569745279,FR
+3569745280,3569745311,NL
+3569745312,3569745327,FR
+3569745328,3569745359,NL
+3569745360,3569745375,FR
+3569745376,3569745407,NL
+3569745408,3569745663,FR
+3569745664,3569745727,NL
+3569745728,3569745743,FR
+3569745744,3569745813,NL
+3569745814,3569745823,FR
+3569745824,3569745839,NL
+3569745840,3569745871,FR
+3569745872,3569745887,NL
+3569745888,3569745903,FR
+3569745904,3569745919,NL
+3569745920,3569807871,FR
+3569807872,3569808383,GP
+3569808384,3569809407,FR
+3569809408,3569809919,GP
+3569809920,3569810175,FR
+3569810176,3569811455,GP
3569811456,3569876991,IL
3569876992,3569942527,RS
3569942528,3570073599,DE
@@ -139152,10 +163838,20 @@
3570401280,3570466815,FR
3570466816,3570532351,SE
3570532352,3570597887,IT
-3570597888,3570630655,GB
+3570597888,3570607103,GB
+3570607104,3570608127,DE
+3570608128,3570611199,GB
+3570611200,3570611455,FR
+3570611456,3570614271,GB
+3570614272,3570617343,DE
+3570617344,3570617855,GB
+3570617856,3570622463,DE
+3570622464,3570630655,GB
3570630656,3570663423,DE
3570663424,3570728959,GB
-3570728960,3570794495,FI
+3570728960,3570729983,FI
+3570729984,3570731007,SE
+3570731008,3570794495,FI
3570794496,3570817913,SE
3570817914,3570817914,AT
3570817915,3570860031,SE
@@ -139181,7 +163877,11 @@
3571515392,3571548159,GB
3571548160,3571580927,ES
3571580928,3571646463,FI
-3571646464,3571711999,DE
+3571646464,3571688383,DE
+3571688384,3571689215,ES
+3571689216,3571699711,DE
+3571699712,3571700735,GB
+3571700736,3571711999,DE
3571712000,3571843071,GB
3571843072,3571974143,ES
3571974144,3571978239,RU
@@ -139211,7 +163911,10 @@
3572355072,3572356095,CH
3572356096,3572357119,GB
3572357120,3572358143,NL
-3572358144,3572360191,GB
+3572358144,3572359167,GB
+3572359168,3572359423,US
+3572359424,3572359679,CA
+3572359680,3572360191,US
3572360192,3572360831,ES
3572360832,3572360895,MX
3572360896,3572361215,ES
@@ -139280,20 +163983,45 @@
3574005760,3574071295,CY
3574071296,3574136831,IL
3574136832,3574169599,DE
-3574169600,3574190591,ES
-3574190592,3574190847,GB
-3574190848,3574202367,ES
+3574169600,3574173695,GB
+3574173696,3574173951,ES
+3574173952,3574174815,GB
+3574174816,3574174823,ES
+3574174824,3574174839,GB
+3574174840,3574174847,ES
+3574174848,3574176511,GB
+3574176512,3574176767,ES
+3574176768,3574177289,GB
+3574177290,3574177290,ES
+3574177291,3574182904,GB
+3574182905,3574182905,ES
+3574182906,3574183423,GB
+3574183424,3574183679,ES
+3574183680,3574186799,GB
+3574186800,3574186815,ES
+3574186816,3574187001,GB
+3574187002,3574187002,ES
+3574187003,3574187007,GB
+3574187008,3574188031,ES
+3574188032,3574191615,GB
+3574191616,3574192127,ES
+3574192128,3574195199,GB
+3574195200,3574196223,ES
+3574196224,3574198271,GB
+3574198272,3574199295,ES
+3574199296,3574200831,GB
+3574200832,3574202367,ES
3574202368,3574267903,NL
3574267904,3574333439,FR
-3574333440,3574398975,GB
+3574333440,3574341631,GB
+3574348288,3574348543,GB
3574398976,3574464511,PT
3574464512,3574530047,TR
3574530048,3574530207,SE
3574530208,3574530239,DE
-3574530240,3574595583,SE
-3574595584,3574597631,MQ
-3574597632,3574598655,FR
-3574598656,3574599679,MQ
+3574530240,3574594559,SE
+3574594560,3574595583,GB
+3574595584,3574599679,MQ
3574599680,3574603775,GP
3574603776,3574611967,BG
3574611968,3574628351,HU
@@ -139302,11 +164030,11 @@
3574693888,3574726655,PL
3574726656,3574792191,GB
3574792192,3574824959,CZ
-3574824960,3574841599,GB
-3574841600,3574841855,NL
-3574841856,3574842367,GB
-3574842368,3574843391,NL
-3574843392,3574857727,GB
+3574824960,3574830079,GB
+3574830080,3574831103,NL
+3574831104,3574841629,GB
+3574841630,3574841630,NL
+3574841631,3574857727,GB
3574857728,3574923263,DE
3574923264,3574939647,RU
3574939648,3574941375,SE
@@ -139327,23 +164055,136 @@
3575447552,3575513087,CZ
3575513088,3575545855,PT
3575545856,3575562239,FR
-3575562240,3575578623,DE
-3575578624,3575581439,BE
-3575581440,3575581695,GB
-3575581696,3575589631,BE
+3575562240,3575570223,DE
+3575570224,3575570239,NL
+3575570240,3575578623,DE
+3575578624,3575589631,GB
3575589632,3575589887,CY
-3575589888,3575624703,BE
-3575624704,3575624959,GB
-3575624960,3575631103,BE
-3575631104,3575631359,GB
-3575631360,3575638181,BE
-3575638182,3575638182,GB
-3575638183,3575644159,BE
-3575644160,3575655615,FR
+3575589888,3575644159,GB
+3575644160,3575646303,FR
+3575646304,3575646319,ES
+3575646320,3575646679,FR
+3575646680,3575646683,PL
+3575646684,3575646815,FR
+3575646816,3575646847,PL
+3575646848,3575646911,FR
+3575646912,3575646975,PL
+3575646976,3575647231,GB
+3575647232,3575647447,FR
+3575647448,3575647451,PL
+3575647452,3575647991,FR
+3575647992,3575647995,NL
+3575647996,3575648223,FR
+3575648224,3575648255,PT
+3575648256,3575652991,FR
+3575652992,3575653119,GB
+3575653120,3575653143,FR
+3575653144,3575653151,ES
+3575653152,3575653239,FR
+3575653240,3575653247,ES
+3575653248,3575653371,FR
+3575653372,3575653375,PL
+3575653376,3575653567,FR
+3575653568,3575653631,PL
+3575653632,3575653711,FR
+3575653712,3575653727,ES
+3575653728,3575653759,FR
+3575653760,3575653887,ES
+3575653888,3575654591,FR
+3575654592,3575654655,CZ
+3575654656,3575654703,FR
+3575654704,3575654719,FI
+3575654720,3575655039,FR
+3575655040,3575655103,ES
+3575655104,3575655615,FR
3575655616,3575655623,IE
-3575655624,3575659007,FR
+3575655624,3575655855,FR
+3575655856,3575655859,PL
+3575655860,3575655863,FR
+3575655864,3575655867,ES
+3575655868,3575656287,FR
+3575656288,3575656319,PT
+3575656320,3575656575,FR
+3575656576,3575656703,BE
+3575656704,3575656911,FR
+3575656912,3575656927,NL
+3575656928,3575657087,FR
+3575657088,3575657215,ES
+3575657216,3575657983,FR
+3575657984,3575658239,ES
+3575658240,3575658303,FR
+3575658304,3575658367,FI
+3575658368,3575658559,FR
+3575658560,3575658623,DE
+3575658624,3575658639,NL
+3575658640,3575658655,FR
+3575658656,3575658671,ES
+3575658672,3575659007,FR
3575659008,3575659071,ES
-3575659072,3575676255,FR
+3575659072,3575660155,FR
+3575660156,3575660159,GB
+3575660160,3575660223,ES
+3575660224,3575660335,FR
+3575660336,3575660351,LT
+3575660352,3575660415,PT
+3575660416,3575664959,FR
+3575664960,3575665023,BE
+3575665024,3575665039,LT
+3575665040,3575665087,FR
+3575665088,3575665151,DE
+3575665152,3575665983,FR
+3575665984,3575666047,NL
+3575666048,3575666191,FR
+3575666192,3575666207,GB
+3575666208,3575666431,FR
+3575666432,3575666495,DE
+3575666496,3575667791,FR
+3575667792,3575667807,FI
+3575667808,3575667903,FR
+3575667904,3575667967,CZ
+3575667968,3575668271,FR
+3575668272,3575668279,ES
+3575668280,3575668447,FR
+3575668448,3575668479,PL
+3575668480,3575669247,FR
+3575669248,3575669263,DE
+3575669264,3575669375,FR
+3575669376,3575669503,IE
+3575669504,3575670779,FR
+3575670780,3575670783,DE
+3575670784,3575670911,FR
+3575670912,3575671039,ES
+3575671040,3575671103,GB
+3575671104,3575671615,FR
+3575671616,3575671679,FI
+3575671680,3575671807,BE
+3575671808,3575671855,FR
+3575671856,3575671871,GB
+3575671872,3575671935,NL
+3575671936,3575672063,IT
+3575672064,3575672703,FR
+3575672704,3575672831,DE
+3575672832,3575672879,FR
+3575672880,3575672895,GB
+3575672896,3575672911,FR
+3575672912,3575672927,LT
+3575672928,3575672959,PL
+3575672960,3575673087,FR
+3575673088,3575673343,GB
+3575673344,3575673923,FR
+3575673924,3575673927,GB
+3575673928,3575674831,FR
+3575674832,3575674847,LT
+3575674848,3575675215,FR
+3575675216,3575675231,PL
+3575675232,3575675295,FR
+3575675296,3575675327,LT
+3575675328,3575675391,NL
+3575675392,3575675399,FR
+3575675400,3575675407,ES
+3575675408,3575675615,FR
+3575675616,3575675647,PL
+3575675648,3575676255,FR
3575676256,3575676271,GB
3575676272,3575693311,FR
3575693312,3575697407,DE
@@ -139362,23 +164203,167 @@
3575873536,3575906303,EE
3575906304,3575971839,FR
3575971840,3576037375,ES
-3576037376,3576103491,GB
+3576038208,3576038271,GB
+3576038336,3576038463,GB
+3576038528,3576038591,GB
+3576038912,3576038975,GB
+3576039168,3576039231,GB
+3576039360,3576039383,GB
+3576039392,3576039455,GB
+3576039520,3576039551,GB
+3576039584,3576039647,GB
+3576039808,3576039839,GB
+3576039904,3576039935,GB
+3576040064,3576040127,GB
+3576040216,3576040223,GB
+3576040272,3576040287,GB
+3576040352,3576040383,GB
+3576040832,3576040959,GB
+3576041472,3576041535,GB
+3576041728,3576041791,GB
+3576041832,3576041847,GB
+3576041864,3576041871,GB
+3576041880,3576041887,GB
+3576041904,3576041919,GB
+3576041936,3576041943,GB
+3576041952,3576041975,GB
+3576042112,3576042239,GB
+3576042496,3576042623,GB
+3576042688,3576042695,GB
+3576042752,3576042815,GB
+3576045584,3576045599,GB
+3576045664,3576045679,GB
+3576045712,3576045735,GB
+3576045800,3576045807,GB
+3576045816,3576045823,GB
+3576048640,3576048767,GB
+3576048960,3576049023,GB
+3576049152,3576050047,GB
+3576053760,3576054911,GB
+3576055104,3576055111,GB
+3576055120,3576055127,GB
+3576055152,3576055167,GB
+3576055184,3576055199,GB
+3576055208,3576055215,GB
+3576055280,3576055551,GB
+3576055808,3576055871,GB
+3576055936,3576055999,GB
+3576056192,3576056255,GB
+3576056320,3576056447,GB
+3576056704,3576056767,GB
+3576056856,3576056871,GB
+3576056880,3576056887,GB
+3576056920,3576056927,GB
+3576056936,3576056943,GB
+3576056952,3576056975,GB
+3576056992,3576056999,GB
+3576057040,3576057047,GB
+3576057632,3576057639,GB
+3576057712,3576057743,GB
+3576057824,3576057839,GB
+3576058880,3576059007,GB
+3576059648,3576059679,GB
+3576059712,3576059743,GB
+3576059776,3576059807,GB
+3576060288,3576060351,GB
+3576061040,3576061055,GB
+3576061120,3576061135,GB
+3576061184,3576061247,GB
+3576061312,3576061439,GB
+3576061584,3576061591,GB
+3576061620,3576061631,GB
+3576061640,3576061647,GB
+3576061688,3576061695,GB
+3576062464,3576062479,GB
+3576064320,3576064448,GB
+3576064544,3576064559,GB
+3576065856,3576065887,GB
+3576066304,3576066431,GB
+3576068352,3576068479,GB
+3576068864,3576068927,GB
+3576069056,3576069119,GB
+3576069248,3576069279,GB
+3576069312,3576069343,GB
+3576070696,3576070703,GB
+3576070712,3576070719,GB
+3576070728,3576070735,GB
+3576070776,3576070783,GB
+3576071296,3576071423,GB
+3576071552,3576071679,GB
+3576071936,3576071951,GB
+3576072064,3576072079,GB
+3576072288,3576072319,GB
+3576072416,3576072447,GB
+3576073216,3576073279,GB
+3576074752,3576074879,GB
+3576075264,3576075327,GB
+3576075776,3576075903,GB
+3576076272,3576076351,GB
+3576076568,3576076575,GB
+3576076784,3576076791,GB
+3576077440,3576077471,GB
+3576077568,3576077695,GB
+3576077936,3576077967,GB
+3576078144,3576078175,GB
+3576078464,3576078591,GB
+3576080000,3576080127,GB
+3576080224,3576080255,GB
+3576080776,3576080783,GB
+3576080792,3576080799,GB
+3576080808,3576080815,GB
+3576080824,3576080831,GB
+3576082080,3576082111,GB
+3576082192,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
+3576088032,3576088047,GB
+3576088224,3576088231,GB
+3576088376,3576088383,GB
+3576088480,3576088511,GB
+3576088960,3576088967,GB
+3576089024,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
+3576093184,3576093247,GB
+3576095232,3576096767,GB
+3576099072,3576099327,GB
+3576099840,3576100863,GB
+3576101376,3576103491,GB
3576103492,3576103495,HU
3576103496,3576104911,GB
3576104912,3576104927,ES
3576104928,3576106879,GB
3576106880,3576106943,DE
-3576106944,3576107863,GB
-3576107864,3576107871,FR
-3576107872,3576109999,GB
-3576110000,3576110015,NL
+3576106944,3576107007,GB
+3576107008,3576109055,FR
+3576109056,3576109991,GB
+3576109992,3576110015,NL
3576110016,3576110939,GB
3576110940,3576110943,NL
-3576110944,3576114255,GB
-3576114256,3576114271,FR
-3576114272,3576114463,GB
+3576110944,3576111103,GB
+3576111104,3576114463,FR
3576114464,3576114471,US
-3576114472,3576116127,GB
+3576114472,3576115199,FR
+3576115200,3576116127,GB
3576116128,3576116135,DE
3576116136,3576120315,GB
3576120316,3576120319,SG
@@ -139386,25 +164371,75 @@
3576125960,3576125963,BE
3576125964,3576126779,GB
3576126780,3576126783,ES
-3576126784,3576134653,GB
-3576134654,3576134654,CH
-3576134655,3576135679,GB
+3576126784,3576130207,GB
+3576130208,3576130211,NL
+3576130212,3576131583,GB
+3576131584,3576133199,CH
+3576133200,3576133215,FR
+3576133216,3576135679,CH
3576135680,3576168447,DE
-3576168448,3576238463,GB
-3576238464,3576238464,FR
-3576238465,3576248583,GB
-3576248584,3576248591,AT
-3576248592,3576248625,GB
+3576168448,3576233983,GB
+3576233984,3576236543,FR
+3576236544,3576238079,GB
+3576238080,3576240127,FR
+3576240128,3576240383,GB
+3576240384,3576240511,BE
+3576240512,3576240639,ES
+3576240640,3576241991,GB
+3576241992,3576241999,FR
+3576242000,3576242383,GB
+3576242384,3576242391,FR
+3576242392,3576243199,GB
+3576243200,3576248575,FR
+3576248576,3576248625,AT
3576248626,3576248626,SK
-3576248627,3576248727,GB
-3576248728,3576248735,AT
-3576248736,3576255303,GB
+3576248627,3576248831,AT
+3576248832,3576250367,FR
+3576250368,3576251711,GB
+3576251712,3576251775,FR
+3576251776,3576252415,GB
+3576252416,3576253439,FR
+3576253440,3576253807,GB
+3576253808,3576253815,FR
+3576253816,3576254511,GB
+3576254512,3576254527,FR
+3576254528,3576254695,GB
+3576254696,3576254703,FR
+3576254704,3576254775,GB
+3576254776,3576254783,FR
+3576254784,3576255303,GB
3576255304,3576255311,ES
-3576255312,3576256511,GB
-3576256512,3576258559,FR
-3576258560,3576261631,GB
+3576255312,3576255359,GB
+3576255360,3576255367,FR
+3576255368,3576256223,GB
+3576256224,3576256231,ES
+3576256232,3576257999,GB
+3576258000,3576258007,DE
+3576258008,3576258015,GB
+3576258016,3576258023,DE
+3576258024,3576258047,GB
+3576258048,3576258559,FR
+3576258560,3576258927,GB
+3576258928,3576258935,FR
+3576258936,3576260607,GB
+3576260608,3576260623,FR
+3576260624,3576261631,GB
3576261632,3576262655,FR
-3576262656,3576266751,GB
+3576262656,3576263849,GB
+3576263850,3576263850,FR
+3576263851,3576263919,GB
+3576263920,3576263935,FR
+3576263936,3576264255,GB
+3576264256,3576264263,FR
+3576264264,3576264351,GB
+3576264352,3576264359,FR
+3576264360,3576264375,GB
+3576264376,3576264383,FR
+3576264384,3576264703,GB
+3576264704,3576265215,FR
+3576265216,3576265359,GB
+3576265360,3576265367,FR
+3576265368,3576266751,GB
3576266752,3576299519,FR
3576299520,3576365055,AE
3576365056,3576430591,TR
@@ -139413,47 +164448,53 @@
3576561664,3576622100,NL
3576622101,3576622101,GB
3576622102,3576627199,NL
-3576627200,3576692735,AT
+3576627200,3576683519,AT
+3576684544,3576692735,AT
3576692736,3576758271,GB
3576758272,3576823807,BE
3576823808,3576889343,SE
3576889344,3576954879,NL
3576954880,3576987647,NO
-3576987648,3576999935,GB
-3576999936,3577000191,AU
-3577000192,3577020415,GB
+3576987648,3577020415,GB
3577020416,3577085951,NL
3577085952,3577151487,DE
-3577151488,3577153535,RE
-3577153536,3577157631,FR
-3577157632,3577158911,RE
-3577158912,3577160703,FR
-3577160704,3577163775,RE
-3577163776,3577164073,FR
-3577164074,3577164074,RE
-3577164075,3577165464,FR
-3577165465,3577165465,RE
-3577165466,3577165823,FR
-3577165824,3577167871,RE
+3577151488,3577158143,RE
+3577158144,3577158655,FR
+3577158656,3577160191,RE
+3577160192,3577160703,FR
+3577160704,3577167871,RE
3577167872,3577184255,ET
3577184256,3577217023,CH
-3577217024,3577238112,FR
-3577238113,3577238113,RE
-3577238114,3577282559,FR
+3577217024,3577238015,FR
+3577238016,3577238271,RE
+3577238272,3577268223,FR
+3577268224,3577268479,RE
+3577268480,3577282559,FR
3577282560,3577348095,IL
3577348096,3577413631,PT
3577413632,3577454591,RU
3577454592,3577458687,UA
3577458688,3577479167,RU
3577479168,3577544703,ES
-3577544704,3577596527,DE
+3577544704,3577545983,DE
+3577545984,3577546111,SE
+3577546112,3577596527,DE
3577596528,3577596543,IT
-3577596544,3577610239,DE
+3577596544,3577596623,DE
+3577596624,3577596639,IT
+3577596640,3577596671,DE
+3577596672,3577596735,IT
+3577596736,3577596743,DE
+3577596744,3577596751,IT
+3577596752,3577610239,DE
+3577625600,3577626111,GB
3577626176,3577626239,GB
3577628672,3577629695,CH
3577635840,3577636863,DE
3577636864,3577637887,GB
3577639744,3577639775,FR
+3577639818,3577639818,FR
+3577639920,3577639927,FR
3577641200,3577641215,FR
3577641472,3577641983,FR
3577650048,3577650063,NL
@@ -139470,8 +164511,8 @@
3578396672,3578462207,TR
3578462208,3578527743,NL
3578527744,3578576895,PL
-3578576896,3578585087,ES
-3578585088,3578626047,PL
+3578576896,3578593279,ES
+3578593280,3578626047,PL
3578626048,3578658815,ES
3578658816,3578724351,GB
3578724352,3578732543,RU
@@ -139491,7 +164532,17 @@
3579117568,3579183103,RU
3579183104,3579193607,GB
3579193608,3579193615,NL
-3579193616,3579216033,GB
+3579193616,3579193759,GB
+3579193760,3579193775,NL
+3579193776,3579193791,GB
+3579193792,3579193799,NL
+3579193800,3579197311,GB
+3579197312,3579197439,US
+3579197440,3579209727,GB
+3579209728,3579210751,DE
+3579210752,3579215927,GB
+3579215928,3579215935,DE
+3579215936,3579216033,GB
3579216034,3579216034,DE
3579216035,3579244831,GB
3579244832,3579244879,AT
@@ -139500,8 +164551,119 @@
3579346944,3579362055,SE
3579362056,3579362063,NO
3579362064,3579445247,SE
-3579445248,3579478015,AT
-3579478016,3579527167,FR
+3579445248,3579467775,AT
+3579467776,3579469823,GB
+3579469824,3579478015,AT
+3579478016,3579482623,FR
+3579482624,3579482783,NL
+3579482784,3579482799,FR
+3579482800,3579482927,NL
+3579482928,3579482943,FR
+3579482944,3579482991,NL
+3579482992,3579483151,FR
+3579483152,3579483263,NL
+3579483264,3579483295,FR
+3579483296,3579483311,NL
+3579483312,3579483359,FR
+3579483360,3579483375,NL
+3579483376,3579484751,FR
+3579484752,3579484767,BE
+3579484768,3579485263,FR
+3579485264,3579485279,BE
+3579485280,3579485695,FR
+3579485696,3579485711,GB
+3579485712,3579485714,FR
+3579485715,3579485727,GB
+3579485728,3579485807,FR
+3579485808,3579485823,GB
+3579485824,3579485887,FR
+3579485888,3579485888,GB
+3579485889,3579485903,FR
+3579485904,3579485919,DE
+3579485920,3579485983,FR
+3579485984,3579485999,CH
+3579486000,3579486015,FR
+3579486016,3579486031,GB
+3579486032,3579486047,DE
+3579486048,3579486095,GB
+3579486096,3579486143,FR
+3579486144,3579486175,GB
+3579486176,3579486191,FR
+3579486192,3579486207,GB
+3579486208,3579486271,FR
+3579486272,3579486287,GB
+3579486288,3579486303,FR
+3579486304,3579486319,GB
+3579486320,3579486335,FR
+3579486336,3579486351,GB
+3579486352,3579486367,FR
+3579486368,3579486383,IT
+3579486384,3579486399,DE
+3579486400,3579486415,FR
+3579486416,3579486431,DE
+3579486432,3579486447,GB
+3579486448,3579486735,FR
+3579486736,3579486751,DE
+3579486752,3579486831,FR
+3579486832,3579486847,BE
+3579486848,3579486863,FR
+3579486864,3579486879,GB
+3579486880,3579487007,FR
+3579487008,3579487039,GB
+3579487040,3579487055,DE
+3579487056,3579487103,FR
+3579487104,3579487119,GB
+3579487120,3579487215,FR
+3579487216,3579487231,GB
+3579487232,3579487247,FR
+3579487248,3579487263,GB
+3579487264,3579487471,FR
+3579487472,3579487487,ES
+3579487488,3579487519,FR
+3579487520,3579487531,IT
+3579487532,3579487535,FR
+3579487536,3579487551,GB
+3579487552,3579487567,FR
+3579487568,3579487583,GB
+3579487584,3579487599,FR
+3579487600,3579487615,IT
+3579487616,3579487663,FR
+3579487664,3579487711,DE
+3579487712,3579487727,SE
+3579487728,3579487743,GB
+3579487744,3579487807,FR
+3579487808,3579487823,GB
+3579487824,3579487855,FR
+3579487856,3579487871,GB
+3579487872,3579487887,IE
+3579487888,3579487903,DE
+3579487904,3579487951,FR
+3579487952,3579487967,GB
+3579487968,3579487983,IT
+3579487984,3579487999,GB
+3579488000,3579488047,FR
+3579488048,3579488079,GB
+3579488080,3579490559,FR
+3579490560,3579490655,PT
+3579490656,3579490671,FR
+3579490672,3579490719,PT
+3579490720,3579490735,NL
+3579490736,3579490751,FR
+3579490752,3579490799,PT
+3579490800,3579490831,FR
+3579490832,3579490943,PT
+3579490944,3579490959,FR
+3579490960,3579490975,PT
+3579490976,3579491007,FR
+3579491008,3579491023,PT
+3579491024,3579491231,FR
+3579491232,3579491247,PT
+3579491248,3579491263,NL
+3579491264,3579491471,FR
+3579491472,3579491487,PT
+3579491488,3579497983,FR
+3579497984,3579497991,NL
+3579497992,3579527167,FR
3579527168,3579543551,BA
3579543552,3579576319,BG
3579576320,3579609087,IT
@@ -139511,26 +164673,36 @@
3579723776,3579740159,AT
3579740160,3579772927,IE
3579772928,3579838463,DE
-3579838464,3580100607,ES
+3579838464,3580039167,ES
+3580039168,3580039199,NL
+3580039200,3580039231,AT
+3580039232,3580039247,ES
+3580039248,3580039423,IT
+3580039424,3580039515,ES
+3580039516,3580039551,NL
+3580039552,3580100607,ES
3580100608,3580102143,SE
-3580102144,3580103679,LV
-3580103680,3580106751,SE
-3580106752,3580107775,LV
-3580107776,3580129279,SE
+3580102144,3580104703,LV
+3580104704,3580106751,SE
+3580106752,3580108799,LV
+3580108800,3580112895,SE
+3580112896,3580116991,LV
+3580116992,3580129279,SE
3580129280,3580131327,LV
3580131328,3580133375,SE
3580133376,3580134399,LV
-3580134400,3580141567,SE
-3580141568,3580142591,LV
-3580142592,3580143615,SE
-3580143616,3580145663,LV
+3580134400,3580135423,SE
+3580135424,3580136191,EE
+3580136192,3580136447,SE
+3580136448,3580141567,HR
+3580141568,3580145663,LV
3580145664,3580149759,SE
3580149760,3580162047,EE
3580162048,3580164095,SE
3580164096,3580166143,EE
3580166144,3580198911,SE
3580198912,3580199935,LV
-3580199936,3580200447,SE
+3580199936,3580200447,EE
3580200448,3580201983,LT
3580201984,3580203647,SE
3580203648,3580203775,AT
@@ -139538,47 +164710,48 @@
3580204032,3580204544,LT
3580204545,3580204799,SE
3580204800,3580204800,LT
-3580204801,3580208127,SE
-3580208128,3580209151,EE
-3580209152,3580213247,SE
+3580204801,3580205055,SE
+3580205056,3580213247,HR
3580213248,3580215295,LV
-3580215296,3580215551,EE
-3580215552,3580215807,SE
-3580215808,3580216319,EE
-3580216320,3580220415,SE
-3580220416,3580221951,LV
+3580215296,3580219391,SE
+3580219392,3580221951,LV
3580221952,3580223487,SE
3580223488,3580231679,HR
3580231680,3580231935,SE
3580231936,3580232191,LV
-3580232192,3580237823,SE
+3580232192,3580232447,SE
+3580232448,3580233215,LT
+3580233216,3580233727,SE
+3580233728,3580235775,LT
+3580235776,3580237823,SE
3580237824,3580239871,LV
-3580239872,3580241919,EE
-3580241920,3580249599,SE
-3580249600,3580254207,EE
-3580254208,3580255231,SE
+3580239872,3580243967,SE
+3580243968,3580244991,EE
+3580244992,3580246015,LT
+3580246016,3580248063,LV
+3580248064,3580255231,SE
3580255232,3580259327,LV
-3580259328,3580262399,SE
-3580262400,3580264447,AT
-3580264448,3580265727,SE
-3580265728,3580268543,EE
-3580268544,3580271359,SE
-3580271360,3580271615,LV
-3580271616,3580280831,SE
+3580259328,3580260351,SE
+3580260352,3580265471,AT
+3580265472,3580265727,SE
+3580265728,3580266495,EE
+3580266496,3580270591,SE
+3580270592,3580271615,LV
+3580271616,3580271871,SE
+3580271872,3580272639,LV
+3580272640,3580280831,SE
3580280832,3580297215,HR
-3580297216,3580297471,LT
-3580297472,3580313599,SE
-3580313600,3580321791,LT
-3580321792,3580329983,SE
+3580297216,3580329983,LT
3580329984,3580338175,EE
-3580338176,3580339199,SE
-3580339200,3580339711,EE
-3580339712,3580346367,SE
+3580338176,3580338687,SE
+3580338688,3580339199,HR
+3580339200,3580340223,EE
+3580340224,3580342271,LT
+3580342272,3580346367,SE
3580346368,3580354559,LT
-3580354560,3580358655,SE
-3580358656,3580362751,LT
+3580354560,3580356607,SE
+3580356608,3580362751,LT
3580362752,3580624895,GB
-3580624896,3580626943,RU
3580626944,3580628991,PL
3580628992,3580631039,RU
3580631040,3580631551,SE
@@ -139592,7 +164765,9 @@
3580641280,3580643327,FR
3580643328,3580645375,UA
3580645376,3580647423,PL
-3580647424,3580649471,DE
+3580647424,3580648027,GR
+3580648028,3580648028,DE
+3580648029,3580649471,GR
3580649472,3580651519,SE
3580651520,3580653567,NL
3580653568,3580655615,PL
@@ -139609,9 +164784,7 @@
3580698624,3580702719,PL
3580702720,3580706815,RU
3580706816,3580708863,KG
-3580708864,3580709119,RU
-3580709120,3580709375,NL
-3580709376,3580710911,RU
+3580708864,3580710911,RU
3580710912,3580715007,UA
3580715008,3580719103,RU
3580719104,3580723199,NL
@@ -139649,15 +164822,17 @@
3582001152,3582009343,DK
3582009344,3582017535,RU
3582017536,3582025727,GB
-3582025728,3582030591,RU
-3582030592,3582030847,CY
+3582025728,3582030335,RU
+3582030336,3582030847,CY
3582030848,3582033919,RU
3582033920,3582042111,CZ
3582042112,3582050303,ES
3582050304,3582058495,NL
3582058496,3582066687,AT
3582066688,3582074879,UA
-3582074880,3582083071,GB
+3582074880,3582077439,GB
+3582077440,3582077471,DE
+3582077472,3582083071,GB
3582083072,3582084095,BG
3582084096,3582084351,NZ
3582084352,3582084607,CA
@@ -139676,10 +164851,17 @@
3582091264,3582099455,QA
3582099456,3582107647,GB
3582107648,3582115839,NL
-3582115840,3582116095,SE
+3582115840,3582115903,EE
+3582115904,3582115935,SE
+3582115936,3582115967,EE
+3582115968,3582116095,SE
3582116096,3582116351,EE
-3582116352,3582123007,SE
-3582123008,3582124031,LT
+3582116352,3582116863,SE
+3582116864,3582117887,EE
+3582117888,3582119935,SE
+3582119936,3582120959,LT
+3582120960,3582121983,EE
+3582121984,3582124031,SE
3582124032,3582132223,FI
3582132224,3582140415,RU
3582140416,3582148607,GE
@@ -139704,12 +164886,14 @@
3582263296,3582271487,ME
3582271488,3582279679,NL
3582279680,3582281727,IE
-3582281728,3582283775,GB
+3582281728,3582283775,MC
3582283776,3582287871,CY
3582287872,3582296063,DE
3582296064,3582304255,GB
3582304256,3582312447,UA
-3582312448,3582320639,JE
+3582312448,3582313855,JE
+3582313856,3582313871,GB
+3582313872,3582320639,JE
3582320640,3582328831,CH
3582328832,3582337023,HU
3582337024,3582345215,ES
@@ -139737,12 +164921,12 @@
3582533632,3582541823,IT
3582541824,3582550015,IL
3582550016,3582558207,RS
-3582558208,3582559743,MC
+3582558976,3582559103,MC
3582559744,3582559815,BE
-3582559816,3582559823,MC
3582559824,3582559999,CH
-3582560000,3582566399,MC
+3582561280,3582565887,BE
3582569024,3582569031,AT
+3582570472,3582570479,FR
3582570912,3582570943,FR
3582572416,3582572423,CH
3582574592,3582582783,DE
@@ -139756,13 +164940,7 @@
3582640128,3582648319,RU
3582648320,3582656511,PT
3582656512,3582664703,ES
-3582664704,3582669823,JO
-3582669824,3582669951,PR
-3582669952,3582669967,JO
-3582669968,3582670011,PR
-3582670012,3582670012,JO
-3582670013,3582670079,PR
-3582670080,3582672895,JO
+3582664704,3582672895,JO
3582672896,3582681087,DE
3582681088,3582689279,FR
3582689280,3582697471,DE
@@ -139783,7 +164961,8 @@
3582812160,3582820351,FI
3582820352,3582828543,RU
3582828544,3582836735,KZ
-3582836736,3582853119,RU
+3582836736,3582844927,ES
+3582844928,3582853119,RU
3582853120,3582861311,SE
3582861312,3582869503,RU
3582869504,3582877695,NO
@@ -139793,7 +164972,9 @@
3582892544,3582894079,TR
3582894080,3582902271,CH
3582902272,3582910463,RU
-3582910464,3582918655,SI
+3582910464,3582916607,SI
+3582916608,3582917631,ZA
+3582917632,3582918655,LU
3582918656,3582926847,GB
3582926848,3582935039,ES
3582935040,3582943231,SI
@@ -139818,7 +164999,10 @@
3583082496,3583090687,KG
3583090688,3583098879,NO
3583098880,3583107071,FI
-3583107072,3583115263,AT
+3583107072,3583111167,AT
+3583111168,3583112191,DE
+3583112192,3583113215,RU
+3583113216,3583115263,AT
3583115264,3583123455,CH
3583123456,3583131647,PL
3583131648,3583131709,DE
@@ -139846,7 +165030,9 @@
3583328256,3583336447,DE
3583336448,3583337727,ME
3583337728,3583337983,AL
-3583337984,3583344639,ME
+3583337984,3583338143,ME
+3583338144,3583338175,RS
+3583338176,3583344639,ME
3583344640,3583352831,BG
3583352832,3583361023,CY
3583361024,3583369215,IT
@@ -139880,11 +165066,9 @@
3583574016,3583582207,NO
3583582208,3583590399,AT
3583590400,3583598591,DE
-3583598592,3583602943,SE
-3583602944,3583603072,UA
+3583598592,3583603072,UA
3583603073,3583603073,SE
-3583603074,3583603199,UA
-3583603200,3583606783,SE
+3583603074,3583606783,UA
3583606784,3583639551,TR
3583639552,3583647743,AZ
3583647744,3583655935,EG
@@ -139897,7 +165081,8 @@
3583713280,3583721471,CZ
3583721472,3583729663,DE
3583729664,3583737855,TR
-3583742976,3583743487,PL
+3583739077,3583739077,GB
+3583742824,3583742831,DE
3583743616,3583743743,GB
3583744112,3583744127,SE
3583744128,3583744255,PL
@@ -139906,6 +165091,7 @@
3583744960,3583744991,GB
3583745216,3583745279,SE
3583745536,3583745663,CZ
+3583745784,3583745791,RO
3583746048,3583754239,PL
3583754240,3583762431,RU
3583762432,3583770623,CZ
@@ -139934,7 +165120,8 @@
3583950848,3583959039,PL
3583959040,3583967231,NO
3583967232,3583969279,TR
-3583969280,3583969791,FR
+3583969280,3583969535,GB
+3583969536,3583969791,FR
3583969792,3583970047,US
3583970048,3583970303,CA
3583970304,3583971327,US
@@ -139948,7 +165135,7 @@
3584000000,3584001023,IE
3584001024,3584004095,US
3584004096,3584008191,CH
-3584008192,3584016383,DK
+3584008192,3584016383,SE
3584016384,3584024575,RU
3584024576,3584032767,UA
3584032768,3584040959,DE
@@ -139957,12 +165144,16 @@
3584057344,3584065535,GB
3584065536,3584073727,UA
3584073728,3584081919,SK
-3584081920,3584090111,NL
+3584081920,3584082007,NL
+3584082008,3584082015,AT
+3584082016,3584090111,NL
3584090112,3584096255,NO
3584096256,3584098303,NL
3584098304,3584106495,SI
3584106496,3584114687,FI
-3584114688,3584122879,GB
+3584114688,3584116991,GB
+3584116992,3584117247,NL
+3584117248,3584122879,GB
3584122880,3584131071,PL
3584131072,3584139263,TR
3584139264,3584147455,NO
@@ -139978,7 +165169,7 @@
3584221184,3584229375,NO
3584229376,3584245759,HU
3584245760,3584253951,NL
-3584253952,3584262143,ME
+3584253952,3584262143,AL
3584262144,3584270335,SE
3584270336,3584278527,FR
3584278528,3584286719,GB
@@ -139998,14 +165189,17 @@
3584409600,3584417791,RU
3584417792,3584434175,GB
3584434176,3584442367,LU
-3584442368,3584450559,GB
3584458752,3584466943,SA
3584466944,3584475135,NO
3584475136,3584483327,FR
3584483328,3584491519,DE
3584491520,3584499711,BG
3584499712,3584507903,RU
-3584507904,3584512942,GB
+3584507904,3584509231,GB
+3584509232,3584509239,AW
+3584509240,3584509855,GB
+3584509856,3584509871,AW
+3584509872,3584512942,GB
3584512943,3584512943,JE
3584512944,3584516095,GB
3584516096,3584524287,NO
@@ -140034,7 +165228,12 @@
3584663552,3584671743,FR
3584671744,3584688127,NL
3584688128,3584696319,GB
-3584696320,3584704511,ES
+3584696320,3584701695,ES
+3584701752,3584701823,NL
+3584701992,3584702007,CH
+3584702208,3584703095,ES
+3584703096,3584703103,BE
+3584703104,3584704511,ES
3584704512,3584720895,RU
3584720896,3584729087,GB
3584729088,3584737279,DE
@@ -140042,7 +165241,8 @@
3584753664,3584770047,RU
3584770048,3584778239,NL
3584778240,3584786431,IT
-3584786432,3584794623,NL
+3584786432,3584790527,NL
+3584790528,3584794623,BE
3584794624,3584802815,IT
3584802816,3584811007,GB
3584811008,3584819199,ES
@@ -140096,9 +165296,14 @@
3585261568,3585269759,IT
3585269760,3585277951,SY
3585277952,3585286143,SE
-3585286144,3585293263,NO
+3585286144,3585288959,NO
+3585288960,3585291007,GB
+3585291008,3585292543,NO
+3585292544,3585292863,GB
+3585292864,3585292895,NO
+3585292896,3585293263,GB
3585293264,3585293271,ZA
-3585293272,3585294335,NO
+3585293272,3585294335,GB
3585294336,3585302527,DE
3585302528,3585310719,ES
3585310720,3585318911,DE
@@ -140129,15 +165334,25 @@
3585523712,3585531903,LV
3585531904,3585540095,AT
3585540096,3585548287,DE
-3585548288,3585550335,LT
-3585550336,3585550399,DE
-3585550400,3585553151,LT
+3585548288,3585548543,NL
+3585548544,3585548799,RU
+3585548800,3585550399,DE
+3585550400,3585550591,NL
+3585550592,3585550847,RU
+3585550848,3585551103,DE
+3585551104,3585551359,NL
+3585551360,3585551615,DE
+3585551616,3585551871,RU
+3585551872,3585552127,NL
+3585552128,3585552383,DE
+3585552384,3585552639,RU
+3585552640,3585552895,DE
+3585552896,3585553151,RU
3585553152,3585553407,NL
-3585553408,3585553919,LT
-3585553920,3585554175,RU
-3585554176,3585554529,LT
-3585554530,3585554530,RU
-3585554531,3585556479,LT
+3585553408,3585553663,BG
+3585553664,3585555007,RU
+3585555008,3585555967,NL
+3585555968,3585556479,BG
3585556480,3585564671,DE
3585564672,3585572863,RU
3585572864,3585581055,IT
@@ -140156,18 +165371,16 @@
3585634560,3585634687,IL
3585634688,3585634815,NL
3585634816,3585635071,IT
-3585635072,3585635199,NL
-3585635200,3585635327,IL
+3585635072,3585635327,NL
3585635328,3585635583,AE
-3585635584,3585635711,NL
-3585635712,3585635839,IL
+3585635584,3585635839,NL
3585635840,3585635903,CZ
3585635904,3585635967,NO
3585635968,3585636031,HU
3585636032,3585636095,SK
3585636096,3585637375,IL
-3585637376,3585637503,NL
-3585637504,3585638399,IL
+3585637376,3585637631,NL
+3585637632,3585638399,IL
3585638400,3585646591,RU
3585646592,3585654783,SA
3585654784,3585662975,NO
@@ -140183,7 +165396,18 @@
3585736704,3585744895,HR
3585744896,3585747839,FR
3585747840,3585747903,GB
-3585747904,3585753087,FR
+3585747904,3585749295,FR
+3585749296,3585749311,ES
+3585749312,3585750015,FR
+3585750016,3585750031,GB
+3585750032,3585750271,FR
+3585750272,3585750287,ES
+3585750288,3585750335,FR
+3585750336,3585750351,GB
+3585750352,3585750367,FR
+3585750368,3585750383,ES
+3585750384,3585750399,PT
+3585750400,3585753087,FR
3585753088,3585761279,PL
3585761280,3585765375,UA
3585765376,3585765631,RU
@@ -140202,19 +165426,32 @@
3585835008,3585843199,NL
3585843200,3585851391,NO
3585851392,3585859583,SE
-3585859584,3585860607,AF
-3585860608,3585861631,RU
-3585861632,3585863679,EE
+3585859584,3585860095,FR
+3585860096,3585860351,MT
+3585860352,3585860607,GG
+3585860608,3585861119,CA
+3585861120,3585861631,RU
+3585861632,3585862143,EE
+3585862144,3585862399,GI
+3585862400,3585862655,FR
+3585862656,3585862911,EE
+3585862912,3585863167,MT
+3585863168,3585863423,EE
+3585863424,3585863679,PT
3585863680,3585865471,NL
3585865472,3585865727,LB
3585865728,3585865983,UA
3585865984,3585867775,EE
3585867776,3585875967,NO
3585875968,3585884159,CH
-3585884160,3585892351,IQ
+3585884160,3585892351,JO
3585892352,3585900543,DE
-3585900544,3585908735,NO
-3585908736,3585916927,GP
+3585900544,3585906687,NO
+3585906688,3585907711,CZ
+3585907712,3585908735,NO
+3585908736,3585914879,GP
+3585914880,3585915135,MF
+3585915136,3585916927,GP
3585916928,3585925119,IT
3585925120,3585933311,CH
3585933312,3585941503,NL
@@ -140249,11 +165486,10 @@
3586162688,3586179071,FI
3586179072,3586195455,ES
3586195456,3586203647,RU
-3586203648,3586205695,ZA
-3586205696,3586207743,BW
-3586207744,3586211071,ZA
-3586211072,3586211327,BW
-3586211328,3586211839,ZA
+3586203648,3586204671,ZA
+3586204672,3586207999,BW
+3586208000,3586208255,ZA
+3586208256,3586211839,BW
3586211840,3586228223,CH
3586228224,3586244607,BE
3586244608,3586246655,NL
@@ -140263,7 +165499,15 @@
3586254848,3586258943,NL
3586258944,3586259455,BE
3586259456,3586260991,NL
-3586260992,3586277375,ES
+3586260992,3586261031,GB
+3586261032,3586261047,LU
+3586261048,3586271807,GB
+3586271808,3586271823,IT
+3586271824,3586272799,GB
+3586272800,3586272807,IT
+3586272808,3586273015,GB
+3586273016,3586273023,IT
+3586273024,3586277375,GB
3586277376,3586293759,TR
3586293760,3586310143,ES
3586310144,3586326527,CZ
@@ -140283,64 +165527,82 @@
3586544268,3586544271,DK
3586544272,3586544383,DE
3586544384,3586544511,DK
-3586544512,3586555903,DE
+3586544512,3586546687,DE
+3586546688,3586546943,NL
+3586546944,3586555903,DE
3586555904,3586572287,IT
-3586572288,3586585215,RS
-3586585216,3586585223,XK
-3586585224,3586586255,RS
-3586586256,3586586263,XK
-3586586264,3586588671,RS
+3586572288,3586588671,RS
3586588672,3586596863,IT
3586596864,3586605055,GB
3586605056,3586621439,SE
3586621440,3586625535,NL
-3586625536,3586628127,GB
+3586625536,3586625711,IE
+3586625712,3586625719,GB
+3586625720,3586628118,IE
+3586628119,3586628119,GB
+3586628120,3586628127,IE
3586628128,3586628159,AT
3586628160,3586628191,IE
3586628192,3586628223,NL
3586628224,3586628255,AT
3586628256,3586628287,IE
-3586628288,3586628319,GB
+3586628288,3586628319,FI
3586628320,3586628351,AT
-3586628352,3586629631,GB
+3586628352,3586628607,IE
+3586628608,3586629631,GB
3586629632,3586631935,IE
3586631936,3586632191,CN
-3586632192,3586633727,IE
-3586633728,3586634047,GB
+3586632192,3586634047,IE
3586634048,3586634079,NL
-3586634080,3586634239,GB
-3586634240,3586634527,NL
-3586634528,3586634543,GB
+3586634080,3586634239,IE
+3586634240,3586634495,NL
+3586634496,3586634543,IE
3586634544,3586634623,NL
-3586634624,3586634783,GB
+3586634624,3586634783,IE
3586634784,3586634815,NL
-3586634816,3586634847,GB
+3586634816,3586634847,IE
3586634848,3586634911,NL
3586634912,3586634943,FI
3586634944,3586635007,NL
-3586635008,3586635519,GB
+3586635008,3586635519,IE
3586635520,3586635775,NL
3586635776,3586637823,IE
3586637824,3586654207,PL
3586654208,3586662399,GE
3586662400,3586670591,UA
-3586670592,3586677639,DE
+3586670592,3586675967,DE
+3586675968,3586676223,RO
+3586676224,3586676991,DE
+3586676992,3586677434,RO
+3586677435,3586677435,DE
+3586677436,3586677631,RO
+3586677632,3586677639,DE
3586677640,3586677643,GB
3586677644,3586677647,SG
3586677648,3586677655,US
-3586677656,3586679599,DE
+3586677656,3586679599,RO
3586679600,3586679615,IT
-3586679616,3586680511,DE
+3586679616,3586680511,RO
3586680512,3586680519,GB
-3586680520,3586681471,DE
+3586680520,3586680831,RO
+3586680832,3586680959,FR
+3586680960,3586681471,RO
3586681472,3586681487,GB
-3586681488,3586681527,DE
+3586681488,3586681527,RO
3586681528,3586681535,GB
-3586681536,3586681615,DE
+3586681536,3586681615,RO
3586681616,3586681631,CZ
-3586681632,3586682225,DE
+3586681632,3586681855,RO
+3586681856,3586682111,FR
+3586682112,3586682225,RO
3586682226,3586682226,IE
-3586682227,3586686975,DE
+3586682227,3586682239,RO
+3586682240,3586682367,US
+3586682368,3586682415,RO
+3586682416,3586682423,DE
+3586682424,3586682495,RO
+3586682496,3586682879,FR
+3586682880,3586686975,DE
3586686976,3586703359,SE
3586703360,3586719743,CH
3586719744,3586752511,ES
@@ -140358,8 +165620,10 @@
3586910720,3586911231,BE
3586911232,3586916351,DE
3586916352,3586924543,IT
-3586924544,3586928639,FI
-3586928640,3586929663,AX
+3586924544,3586925695,FI
+3586925696,3586925759,AX
+3586925760,3586926591,FI
+3586926592,3586929663,AX
3586929664,3586932735,FI
3586932736,3586949119,LB
3586949120,3586965503,SE
@@ -140412,19 +165676,34 @@
3587194880,3587211263,GB
3587211264,3587219455,AT
3587219456,3587227647,RU
-3587227648,3587227648,NL
-3587227649,3587231231,GB
-3587231232,3587231263,NL
-3587231264,3587233087,GB
-3587233088,3587233095,NL
-3587233096,3587235839,GB
+3587227648,3587233791,NL
+3587233792,3587234191,GB
+3587234192,3587234207,NL
+3587234208,3587235839,GB
3587235840,3587237887,NL
-3587237888,3587239551,GB
+3587237888,3587239487,GB
+3587239488,3587239495,NL
+3587239496,3587239551,GB
3587239552,3587239552,NL
-3587239553,3587244031,GB
+3587239553,3587239583,GB
+3587239584,3587239599,NL
+3587239600,3587239695,GB
+3587239696,3587239703,NL
+3587239704,3587239711,GB
+3587239712,3587239727,NL
+3587239728,3587239791,GB
+3587239792,3587239799,NL
+3587239800,3587239935,GB
+3587239936,3587240959,NL
+3587240960,3587242671,GB
+3587242672,3587242679,NL
+3587242680,3587244031,GB
3587244032,3587260415,IT
-3587260416,3587284991,DE
-3587284992,3587286527,FR
+3587260416,3587282943,DE
+3587282944,3587284991,PT
+3587284992,3587285247,FR
+3587285248,3587285503,IT
+3587285504,3587286527,FR
3587286784,3587289599,FR
3587290112,3587293183,FR
3587293184,3587309567,IT
@@ -140441,15 +165720,18 @@
3587415040,3587415807,NL
3587415808,3587424255,BE
3587424256,3587440639,DE
-3587440640,3587445759,SE
-3587445760,3587445823,FI
-3587445824,3587445983,SE
-3587445984,3587445999,FI
-3587446000,3587446143,SE
-3587446144,3587446271,FI
-3587446272,3587449087,SE
-3587449088,3587449151,DK
-3587449152,3587457023,SE
+3587440640,3587443711,SE
+3587443712,3587444735,NO
+3587444736,3587445025,FI
+3587445026,3587445026,DK
+3587445027,3587448831,FI
+3587448832,3587449087,SE
+3587449088,3587449169,DK
+3587449170,3587449170,SE
+3587449171,3587449343,DK
+3587449344,3587453351,SE
+3587453352,3587453355,NO
+3587453356,3587457023,SE
3587457024,3587473407,GB
3587473408,3587489791,IT
3587489792,3587506175,EG
@@ -140467,11 +165749,16 @@
3587646976,3587647231,MC
3587647232,3587653631,FR
3587653632,3587670015,SK
-3587670016,3587702783,IT
+3587670016,3587684279,IT
+3587684280,3587684287,GB
+3587684288,3587702783,IT
3587702784,3587710975,DE
3587710976,3587719167,CZ
3587719168,3587735551,PL
-3587735552,3587751935,GB
+3587735552,3587735711,GB
+3587735716,3587735823,GB
+3587735840,3587737087,GB
+3587737096,3587751935,GB
3587751936,3587768319,FI
3587776512,3587784703,IR
3587784704,3587801087,DE
@@ -140479,7 +165766,8 @@
3587817472,3587833855,MT
3587833856,3587842047,DE
3587842048,3587850239,IT
-3587850240,3587866623,PL
+3587850240,3587854335,NL
+3587854336,3587866623,PL
3587866624,3587874815,FR
3587874816,3587883007,DE
3587883008,3587915775,GB
@@ -140501,8 +165789,8 @@
3588128768,3588145151,HU
3588145152,3588153343,PL
3588153344,3588161535,RU
-3588161536,3588173311,FR
-3588173312,3588173567,RE
+3588161536,3588172799,FR
+3588172800,3588173567,RE
3588173568,3588173823,YT
3588173824,3588227071,FR
3588227072,3588292607,BE
@@ -140512,14 +165800,22 @@
3588333568,3588341759,FR
3588341760,3588358143,IT
3588358144,3588374527,BG
-3588390912,3588394239,LT
-3588394240,3588394495,LV
-3588394496,3588407295,LT
+3588390912,3588392959,LT
+3588392960,3588395007,LV
+3588395008,3588407295,LT
3588407296,3588423679,CZ
3588423680,3588440063,ES
3588440064,3588456447,PL
3588456448,3588464639,NL
-3588464640,3588472831,AT
+3588464640,3588465151,AT
+3588465152,3588465663,FR
+3588465664,3588466431,AT
+3588466432,3588466687,AU
+3588466688,3588467199,DE
+3588467200,3588467455,JP
+3588467456,3588468479,AT
+3588468480,3588468735,AE
+3588468736,3588472831,AT
3588472832,3588489215,UA
3588489216,3588505599,FR
3588505600,3588521983,RU
@@ -140527,13 +165823,22 @@
3588538368,3588554751,GB
3588554752,3588571135,AT
3588571136,3588587519,GB
-3588587520,3588603903,ES
+3588587520,3588588567,ES
+3588588568,3588588575,IT
+3588588576,3588590591,ES
+3588590592,3588590847,FR
+3588590848,3588595199,ES
+3588595200,3588595455,FR
+3588595456,3588603903,ES
3588603904,3588620287,SI
3588620288,3588628479,SA
3588628480,3588636671,CH
3588636672,3588653055,UZ
3588653056,3588661247,IT
-3588661248,3588669439,NO
+3588661248,3588666367,NO
+3588666368,3588667391,DE
+3588667392,3588668415,SG
+3588668416,3588669439,HK
3588669440,3588685823,GB
3588685824,3588702207,UA
3588702208,3588718591,ES
@@ -140570,11 +165875,13 @@
3588997120,3589013503,AT
3589013504,3589021695,ES
3589021696,3589029887,SA
-3589029888,3589034239,NL
-3589034240,3589034495,GB
-3589034496,3589037055,NL
-3589037056,3589037311,GB
-3589037312,3589046271,NL
+3589029888,3589030119,GB
+3589030120,3589030127,NL
+3589030128,3589031055,GB
+3589031056,3589031056,NL
+3589031057,3589043455,GB
+3589043456,3589043711,NL
+3589043712,3589046271,GB
3589046272,3589079039,NO
3589079040,3589128191,DK
3589128192,3589144575,GB
@@ -140606,7 +165913,9 @@
3589431328,3589432319,ES
3589432320,3589433855,GB
3589433856,3589434111,IE
-3589434112,3589435759,GB
+3589434112,3589434367,GB
+3589434368,3589435391,ES
+3589435392,3589435759,GB
3589435760,3589435763,ES
3589435764,3589439487,GB
3589439488,3589455871,SE
@@ -140618,11 +165927,17 @@
3589537792,3589545983,FR
3589545984,3589554175,DE
3589554176,3589570559,PS
-3589570560,3589572735,GB
+3589570560,3589571583,GB
+3589571584,3589571839,NL
+3589571840,3589572735,GB
3589572736,3589572863,NL
3589572864,3589580799,GB
3589580800,3589581823,NL
-3589581824,3589586943,GB
+3589581824,3589582719,GB
+3589582720,3589582847,NL
+3589582848,3589582975,GB
+3589582976,3589583103,NL
+3589583104,3589586943,GB
3589586944,3589587199,DE
3589587200,3589587455,NL
3589587456,3589587967,CH
@@ -140631,23 +165946,34 @@
3589599232,3589601279,SE
3589601280,3589603327,RS
3589603328,3589668863,FR
-3589668864,3589677055,RU
+3589668864,3589670911,LT
+3589670912,3589672959,RU
+3589672960,3589675007,LT
+3589675008,3589676031,RU
+3589676032,3589677055,LT
3589677056,3589685247,FR
3589685248,3589718015,GB
-3589718016,3589734399,BE
+3589718016,3589722023,BE
+3589722024,3589722031,FR
+3589722032,3589734399,BE
3589734400,3589742591,ZA
3589742592,3589746175,NL
3589746176,3589746687,US
3589746688,3589767167,NL
3589767168,3589810431,RU
-3589810432,3589810687,PL
+3589810432,3589810484,PL
+3589810485,3589810485,RU
+3589810486,3589810687,PL
3589810688,3589816319,RU
+3589816894,3589816894,GB
+3589818638,3589818638,DE
3589819562,3589819563,GB
3589825792,3589825807,DE
3589825808,3589825809,US
3589825810,3589826047,DE
3589826718,3589826718,AT
3589827584,3589827647,DE
+3589827696,3589827711,IE
3589828736,3589828863,NL
3589828992,3589829119,ES
3589829504,3589829631,DE
@@ -140678,24 +166004,38 @@
3590005056,3590005071,DE
3590005072,3590005119,GB
3590005120,3590005135,IT
-3590005136,3590005407,GB
-3590005408,3590005423,SE
-3590005424,3590009103,GB
+3590005136,3590008879,GB
+3590008880,3590008887,DE
+3590008888,3590009103,GB
3590009104,3590009119,DE
3590009120,3590009263,GB
3590009264,3590009279,DE
3590009280,3590012927,GB
3590012928,3590029311,BE
-3590029312,3590045695,FR
-3590045696,3590062079,RU
+3590029312,3590032159,FR
+3590032160,3590032175,ES
+3590032176,3590032191,GB
+3590032192,3590032207,PL
+3590032208,3590032223,NL
+3590032224,3590032271,DE
+3590032272,3590032295,PT
+3590032296,3590032303,PL
+3590032304,3590032311,CZ
+3590032312,3590032319,LT
+3590032320,3590032351,ES
+3590032352,3590045695,FR
+3590045696,3590047743,RU
+3590047744,3590049791,UA
+3590049792,3590062079,RU
3590062080,3590078463,DE
3590078464,3590094847,RU
3590094848,3590111231,DE
3590111232,3590127615,LT
3590127616,3590143999,GB
-3590144000,3590158591,SI
+3590144000,3590156287,SI
+3590156288,3590158591,HR
3590158592,3590158847,RS
-3590158848,3590160383,SI
+3590158848,3590160383,HR
3590160384,3590176767,GB
3590176768,3590193151,HU
3590193152,3590201343,IT
@@ -140703,24 +166043,59 @@
3590209536,3590225919,ES
3590225920,3590234111,TR
3590234112,3590242303,GB
-3590242304,3590245255,DE
+3590242304,3590244351,IE
+3590244352,3590244607,DE
+3590244608,3590245255,IE
3590245256,3590245271,GB
-3590245272,3590247048,DE
+3590245272,3590245279,DE
+3590245280,3590245311,IE
+3590245312,3590245439,US
+3590245440,3590247048,IE
3590247049,3590247049,IT
-3590247050,3590247103,DE
+3590247050,3590247103,IE
3590247104,3590247119,GB
-3590247120,3590247759,DE
-3590247760,3590247763,IE
-3590247764,3590254854,DE
+3590247120,3590247167,IE
+3590247168,3590247231,US
+3590247232,3590247295,IE
+3590247296,3590247423,US
+3590247424,3590247487,IE
+3590247488,3590247551,US
+3590247552,3590247711,IE
+3590247712,3590247743,HK
+3590247744,3590248447,IE
+3590248448,3590249471,DE
+3590249472,3590251647,IE
+3590251648,3590251775,NL
+3590251776,3590253567,IE
+3590253568,3590254079,FR
+3590254080,3590254854,IE
3590254855,3590254855,GB
-3590254856,3590256735,DE
+3590254856,3590255871,IE
+3590255872,3590255935,US
+3590255936,3590256127,IE
+3590256128,3590256383,ES
+3590256384,3590256735,IE
3590256736,3590256767,BE
-3590256768,3590258687,DE
+3590256768,3590257151,US
+3590257152,3590258559,IE
+3590258560,3590258687,US
3590258688,3590291455,IT
3590291456,3590299647,NG
3590299648,3590307839,FI
-3590307840,3590324223,GB
-3590324224,3623890943,US
+3590307840,3590308951,GB
+3590308952,3590308959,GH
+3590308960,3590309615,GB
+3590309616,3590309623,BF
+3590309624,3590311223,GB
+3590311224,3590311231,CD
+3590311232,3590317951,GB
+3590317952,3590318015,UA
+3590318016,3590324223,GB
+3590324224,3590542591,US
+3590542592,3590542847,SA
+3590542848,3593142178,US
+3593142179,3593142179,DE
+3593142180,3623890943,US
3623890944,3623891199,ZA
3623891200,3623891455,US
3623891456,3623891711,ZA
@@ -140815,8 +166190,8 @@
3625140224,3625148415,CA
3625148416,3625168895,US
3625168896,3625172991,CA
-3625172992,3625256959,US
-3625256960,3625257983,CA
+3625172992,3625257471,US
+3625257472,3625257983,CA
3625257984,3625261055,US
3625263104,3625287679,US
3625287680,3625295871,CA
@@ -140876,13 +166251,13 @@
3625549568,3625549823,CA
3625549824,3625631743,US
3625631744,3625639935,CA
-3625639936,3625961983,US
-3625961984,3625962239,GB
-3625962240,3626091519,US
+3625639936,3625959423,US
+3625959424,3625963519,GB
+3625963520,3626091519,US
3626091520,3626092031,AR
-3626092032,3626233655,US
-3626233656,3626233663,GB
-3626233664,3626234111,US
+3626092032,3626232831,US
+3626232832,3626233855,GB
+3626233856,3626234111,US
3626234112,3626234367,GB
3626234368,3626270719,US
3626270720,3626287103,CA
@@ -140898,17 +166273,24 @@
3626852352,3626860543,CA
3626860544,3626893311,US
3626893312,3626905599,CA
-3626905600,3626926079,US
+3626905600,3626924543,US
+3626924544,3626925055,AU
+3626925056,3626925567,GB
+3626925568,3626926079,US
3626926080,3626934271,CA
3626934272,3627044863,US
3627044864,3627048959,CA
3627048960,3627049983,AG
3627049984,3627065343,US
3627065344,3627069439,CA
-3627069440,3627220223,US
+3627069440,3627218943,US
+3627218944,3627219967,CA
+3627219968,3627220223,US
3627220224,3627220479,CA
3627220480,3627299071,US
-3627299072,3627299327,IN
+3627299072,3627299084,IN
+3627299085,3627299085,US
+3627299086,3627299327,IN
3627299328,3627507711,US
3627507712,3627511807,CA
3627511808,3627532287,US
@@ -140921,7 +166303,11 @@
3627667565,3627667565,CA
3627667566,3627679743,US
3627679744,3627712511,CA
-3627712512,3627753471,US
+3627712512,3627749375,US
+3627749376,3627749631,BR
+3627749632,3627750655,US
+3627750656,3627750911,BR
+3627750912,3627753471,US
3627753472,3627753727,AR
3627753728,3627759071,US
3627759072,3627759103,GB
@@ -141007,8 +166393,10 @@
3628225784,3628226927,US
3628226928,3628226935,IE
3628226936,3628227167,US
-3628227168,3628227199,PL
-3628227200,3628236799,US
+3628227168,3628227175,ZA
+3628227176,3628227199,PL
+3628227200,3628227263,LU
+3628227264,3628236799,US
3628236800,3628257279,CA
3628257280,3628552191,US
3628552192,3628556287,CA
@@ -141077,7 +166465,9 @@
3628753920,3628754943,AT
3628754944,3628755967,BE
3628755968,3628756991,AR
-3628756992,3628759039,DE
+3628756992,3628757503,DE
+3628757504,3628758527,HK
+3628758528,3628759039,DE
3628759040,3628761087,CN
3628761088,3628834815,US
3628834816,3628843007,CA
@@ -141241,7 +166631,7 @@
3630375424,3630383103,CA
3630383104,3630391295,US
3630391296,3630395391,CA
-3630395392,3630417407,US
+3630395392,3630416895,US
3630417408,3630417663,AU
3630417664,3630417919,US
3630417920,3630418175,CA
@@ -141270,7 +166660,9 @@
3630956544,3631005695,CA
3631005696,3631017983,US
3631017984,3631022079,HK
-3631022080,3631112191,US
+3631022080,3631098263,US
+3631098264,3631098271,FR
+3631098272,3631112191,US
3631112192,3631112703,VC
3631112704,3631116543,BB
3631116544,3631117567,GD
@@ -141285,7 +166677,9 @@
3631284224,3631316991,CA
3631316992,3631333375,US
3631333376,3631341567,CA
-3631341568,3631611903,US
+3631341568,3631514111,US
+3631514112,3631514623,CA
+3631514624,3631611903,US
3631611904,3631628287,AU
3631628288,3631644671,US
3631644672,3631652863,CA
@@ -141293,7 +166687,9 @@
3631665152,3631667199,CA
3631667200,3631667455,US
3631667456,3631668735,CA
-3631668736,3631806207,US
+3631668736,3631669247,US
+3631669248,3631677439,HK
+3631677440,3631806207,US
3631806208,3631806463,NL
3631806464,3631841279,US
3631841280,3631874047,CA
@@ -141413,11 +166809,11 @@
3633546240,3633546751,GA
3633546752,3633547263,US
3633547264,3633548287,GA
-3633548288,3633548543,US
-3633548544,3633548799,GA
-3633548800,3633549567,US
+3633548288,3633549567,US
3633549568,3633549823,GA
-3633549824,3633567231,US
+3633549824,3633550847,US
+3633550848,3633551359,GA
+3633551360,3633567231,US
3633567232,3633567743,NL
3633567744,3633568767,US
3633568768,3633569023,SG
@@ -141425,9 +166821,7 @@
3633569280,3633569535,CA
3633569536,3633709055,US
3633709056,3633717247,CA
-3633717248,3633720063,US
-3633720064,3633720191,MX
-3633720192,3633757439,US
+3633717248,3633757439,US
3633757440,3633757695,IN
3633757696,3633757951,US
3633757952,3633758207,PH
@@ -141442,7 +166836,9 @@
3633821696,3633821951,CA
3633821952,3633823743,US
3633823744,3633827839,HK
-3633827840,3633872895,US
+3633827840,3633865471,US
+3633865472,3633865727,GB
+3633865728,3633872895,US
3633872896,3633874431,CA
3633874432,3633874687,US
3633874688,3633876991,CA
@@ -141471,22 +166867,27 @@
3634098176,3634167807,US
3634167808,3634189055,CA
3634189056,3634189311,US
-3634189312,3634193263,CA
+3634189312,3634189496,CA
+3634189497,3634189497,US
+3634189498,3634193263,CA
3634193264,3634193279,US
3634193280,3634193940,CA
3634193941,3634193941,US
-3634193942,3634194367,CA
-3634194368,3634194399,US
-3634194400,3634196479,CA
+3634193942,3634194175,CA
+3634194176,3634194431,US
+3634194432,3634196479,CA
3634196480,3634257919,US
3634257920,3634262015,SE
3634262016,3634286079,US
-3634286080,3634286335,CA
-3634286336,3634288895,US
-3634288896,3634289151,CA
-3634289152,3634506495,US
+3634286080,3634286335,AL
+3634286336,3634288127,US
+3634288128,3634288383,BD
+3634288384,3634289407,US
+3634289408,3634289663,BG
+3634289664,3634506495,US
3634506496,3634506751,CA
-3634506752,3634507519,US
+3634506752,3634507263,US
+3634507264,3634507519,RU
3634507520,3634507775,NL
3634507776,3634511871,US
3634511872,3634515967,CA
@@ -141496,7 +166897,11 @@
3634741248,3634749439,CA
3634749440,3634880511,US
3634880512,3634888703,CA
-3634888704,3634913279,US
+3634888704,3634905087,US
+3634905088,3634905343,CA
+3634905344,3634905599,US
+3634905600,3634909183,CA
+3634909184,3634913279,US
3634913280,3634915663,CA
3634915664,3634915679,US
3634915680,3634921471,CA
@@ -141515,7 +166920,7 @@
3635159040,3635163135,CA
3635163136,3635167231,US
3635167232,3635167487,GB
-3635167488,3635171071,NL
+3635167488,3635171071,DE
3635171072,3635171327,CA
3635171328,3635187967,US
3635187968,3635188223,CN
@@ -141535,7 +166940,9 @@
3635531008,3635531263,PR
3635531264,3635533535,US
3635533536,3635533551,IN
-3635533552,3635643391,US
+3635533552,3635533823,US
+3635533824,3635535871,PR
+3635535872,3635643391,US
3635643392,3635644415,JP
3635644416,3635645183,TH
3635645184,3635645439,JP
@@ -141566,9 +166973,7 @@
3635675136,3635740671,US
3635740672,3635740927,CA
3635740928,3635741439,US
-3635741440,3635741695,CA
-3635741696,3635741951,US
-3635741952,3635745535,CA
+3635741440,3635745535,CA
3635745536,3635746047,US
3635746048,3635748223,CA
3635748224,3635748351,US
@@ -141650,11 +167055,57 @@
3636822016,3636854783,CA
3636854784,3636887551,US
3636887552,3636895743,CA
-3636895744,3636914175,US
+3636895744,3636904159,US
+3636904160,3636904191,CA
+3636904192,3636904447,US
+3636904448,3636904479,CA
+3636904480,3636904511,US
+3636904512,3636904543,CA
+3636904544,3636905887,US
+3636905888,3636905951,CA
+3636905952,3636906495,US
+3636906496,3636906623,CA
+3636906624,3636907007,US
+3636907008,3636907039,CA
+3636907040,3636907135,US
+3636907136,3636907167,CA
+3636907168,3636907199,US
+3636907200,3636907231,CA
+3636907232,3636910591,US
+3636910592,3636910719,CA
+3636910720,3636911295,US
+3636911296,3636911359,CA
+3636911360,3636911615,US
+3636911616,3636911743,CA
+3636911744,3636911903,US
+3636911904,3636911935,CA
+3636911936,3636914175,US
3636914176,3636914431,CA
-3636914432,3636918527,US
+3636914432,3636914879,US
+3636914880,3636914943,CA
+3636914944,3636915327,US
+3636915328,3636915455,CA
+3636915456,3636915583,US
+3636915584,3636915711,CA
+3636915712,3636915839,US
+3636915840,3636915967,CA
+3636915968,3636916031,US
+3636916032,3636916063,CA
+3636916064,3636916223,US
+3636916224,3636916351,CA
+3636916352,3636916479,US
+3636916480,3636916607,CA
+3636916608,3636916927,US
+3636916928,3636916959,CA
+3636916960,3636916991,US
+3636916992,3636917119,CA
+3636917120,3636918527,US
3636918528,3636918783,CA
-3636918784,3637075967,US
+3636918784,3636919103,US
+3636919104,3636919135,CA
+3636919136,3636919167,US
+3636919168,3636919199,CA
+3636919200,3637075967,US
3637075968,3637080063,CA
3637080064,3637510143,US
3637510144,3637641215,CA
@@ -141664,13 +167115,19 @@
3637706752,3637739519,CA
3637739520,3637821439,US
3637821440,3637829631,CA
-3637829632,3638165503,US
+3637829632,3637870591,US
+3637870592,3637886975,GB
+3637886976,3638165503,US
3638165504,3638181887,CA
-3638181888,3638226687,US
+3638181888,3638222273,US
+3638222274,3638222274,JP
+3638222275,3638222293,US
+3638222294,3638222294,JP
+3638222295,3638226687,US
3638226688,3638226943,NL
-3638226944,3638227967,US
-3638227968,3638228223,JP
-3638228224,3638247935,US
+3638226944,3638228005,US
+3638228006,3638228006,JP
+3638228007,3638247935,US
3638247936,3638248703,GB
3638248704,3638249215,US
3638249216,3638249471,GB
@@ -141682,7 +167139,11 @@
3638370304,3638386687,CA
3638386688,3638399743,US
3638399744,3638399999,CH
-3638400000,3638401087,US
+3638400000,3638400511,US
+3638400512,3638400591,CA
+3638400592,3638400599,US
+3638400600,3638401023,CA
+3638401024,3638401087,US
3638401088,3638401119,CA
3638401120,3638500125,US
3638500126,3638500126,CA
@@ -141690,13 +167151,21 @@
3638509568,3638534143,CA
3638534144,3638697983,US
3638697984,3638706175,CA
-3638706176,3638874111,US
+3638706176,3638749183,US
+3638749184,3638749439,AI
+3638749440,3638753279,US
+3638753280,3638754303,GA
+3638754304,3638874111,US
3638874112,3638878207,CA
3638878208,3638880511,US
3638880512,3638880767,CA
3638880768,3638898943,US
3638898944,3638899455,MX
-3638899456,3638984703,US
+3638899456,3638956287,US
+3638956288,3638956543,GP
+3638956544,3638956799,US
+3638956800,3638957055,GP
+3638957056,3638984703,US
3638984704,3638992895,GT
3638992896,3638996991,US
3639001088,3639069439,US
@@ -141809,7 +167278,9 @@
3639593984,3639595007,GB
3639595008,3639607295,US
3639607296,3639611391,CA
-3639611392,3639664639,US
+3639611392,3639638015,US
+3639638016,3639640063,CA
+3639640064,3639664639,US
3639664640,3639668735,CA
3639668736,3639672831,US
3639672832,3639681023,CL
@@ -142044,7 +167515,9 @@
3641323520,3641331711,DE
3641331712,3641335807,ES
3641335808,3641343999,SE
-3641344000,3641360383,GB
+3641344000,3641356535,GB
+3641356536,3641356543,CM
+3641356544,3641360383,GB
3641360384,3641368575,RO
3641368576,3641372671,GB
3641372672,3641376767,BG
@@ -142119,8 +167592,10 @@
3641659392,3641663487,FR
3641663488,3641667583,MT
3641667584,3641668863,GB
-3641668864,3641669119,ZW
-3641669120,3641671679,GB
+3641668864,3641670271,ZW
+3641670272,3641670911,GB
+3641670912,3641671167,LS
+3641671168,3641671679,GB
3641671680,3641679871,RU
3641683968,3641688063,KZ
3641688064,3641692159,RU
@@ -142129,13 +167604,12 @@
3641700352,3641704447,SE
3641704448,3641708543,FR
3641708544,3641712639,RU
-3641712640,3641716735,BE
+3641712640,3641716735,NL
3641716736,3641720831,GB
3641720832,3641729023,MK
3641729024,3641733119,DK
3641733120,3641737215,AT
-3641737216,3641739263,RS
-3641739264,3641741311,XK
+3641737216,3641741311,RS
3641741312,3641745407,ES
3641745408,3641749503,DE
3641749504,3641753599,CZ
@@ -142152,7 +167626,7 @@
3641794560,3641798655,RS
3641798656,3641802751,RU
3641802752,3641806847,NL
-3641806848,3641810943,TR
+3641806848,3641810943,DE
3641810944,3641819135,RU
3641819136,3641823231,DE
3641823232,3641827327,NO
@@ -142187,21 +167661,40 @@
3641957376,3641957887,MD
3641957888,3641958143,GB
3641958144,3641958399,MD
-3641958400,3641962495,BE
+3641958400,3641961727,BE
+3641961728,3641961743,NL
+3641961744,3641961791,BE
+3641961792,3641961799,US
+3641961800,3641962495,BE
3641962496,3641966591,GB
3641966592,3641970687,IT
3641970688,3641978879,GB
3641978880,3641982975,DK
3641982976,3641991167,RU
3641991168,3641995263,SE
-3641995264,3641999359,DE
+3641995264,3641998335,DE
+3641998848,3641999359,DE
3641999360,3642003455,HU
3642003456,3642007551,RU
3642007552,3642015743,UA
3642015744,3642019839,CH
3642019840,3642023935,SY
3642023936,3642028031,EG
-3642028032,3642032127,GB
+3642028032,3642028544,GB
+3642028545,3642028799,NG
+3642028800,3642028800,GB
+3642028801,3642028863,SO
+3642028864,3642028928,GB
+3642028929,3642029055,NG
+3642029056,3642029056,GB
+3642029057,3642029119,NG
+3642029120,3642029183,GB
+3642029184,3642029311,NG
+3642029312,3642030079,GB
+3642030080,3642031103,IT
+3642031104,3642031616,GB
+3642031617,3642031743,SL
+3642031744,3642032127,GB
3642032128,3642036223,PS
3642036224,3642040319,HU
3642040320,3642048511,BY
@@ -142218,13 +167711,16 @@
3642051072,3642051327,CA
3642051328,3642051583,US
3642051584,3642051839,AU
-3642051840,3642056703,GB
+3642051840,3642054399,DE
+3642054400,3642056703,US
3642056704,3642060799,RU
3642060800,3642064895,KE
-3642064896,3642068991,SE
+3642064896,3642068991,IT
3642068992,3642073087,AL
3642073088,3642077183,LV
-3642077184,3642081279,BE
+3642077184,3642081271,BE
+3642081272,3642081278,US
+3642081279,3642081279,BE
3642081280,3642085375,NL
3642085376,3642089471,RU
3642089472,3642093567,SE
@@ -142281,7 +167777,7 @@
3642310656,3642314751,DE
3642314752,3642318847,RU
3642318848,3642322943,FI
-3642322944,3642327039,AT
+3642324480,3642324991,AT
3642327040,3642331135,DE
3642331136,3642335231,RU
3642335232,3642339327,DE
@@ -142291,14 +167787,7 @@
3642355712,3642359807,SE
3642359808,3642367999,RU
3642368000,3642376191,CH
-3642376192,3642376447,XK
-3642376448,3642377983,RS
-3642377984,3642378047,XK
-3642378048,3642379007,RS
-3642379008,3642379263,XK
-3642379264,3642379775,RS
-3642379776,3642380063,XK
-3642380064,3642380287,RS
+3642376192,3642380287,RS
3642380288,3642384383,IT
3642384384,3642392575,NL
3642392576,3642394623,AT
@@ -142311,9 +167800,17 @@
3642415104,3642417151,GB
3642417152,3642419199,DE
3642419200,3642421247,GB
-3642421248,3642429439,DE
+3642421248,3642423091,DE
+3642423092,3642423099,US
+3642423100,3642424151,DE
+3642424152,3642424215,US
+3642424216,3642425087,DE
+3642425088,3642425343,US
+3642425344,3642429439,DE
3642429440,3642433535,GB
-3642433536,3642441727,CY
+3642433536,3642435583,CY
+3642435584,3642436607,RU
+3642436608,3642441727,CY
3642441728,3642449919,IT
3642449920,3642454015,CH
3642454016,3642458111,IT
@@ -142326,7 +167823,8 @@
3642486784,3642490879,GB
3642490880,3642494975,IM
3642494976,3642499071,GB
-3642499072,3642503167,SE
+3642499072,3642501119,SE
+3642501120,3642503167,LU
3642503168,3642507263,LV
3642507264,3642509311,FR
3642509312,3642511359,RU
@@ -142335,22 +167833,25 @@
3642519552,3642523647,IT
3642523648,3642527743,GB
3642527744,3642531839,PL
-3642531840,3642535935,DK
+3642531840,3642532607,DK
+3642532608,3642532863,US
+3642532864,3642535935,DK
3642535936,3642540031,IS
3642540032,3642544127,SE
3642544128,3642552319,RU
-3642552320,3642553343,DE
-3642553344,3642553599,RU
-3642553600,3642553855,DE
+3642552320,3642553343,UA
+3642553344,3642553603,RU
+3642553604,3642553615,UA
+3642553616,3642553623,DE
+3642553624,3642553855,UA
3642553856,3642554367,RU
3642554368,3642554623,LT
-3642554624,3642554720,DE
-3642554721,3642554721,LV
-3642554722,3642555103,DE
+3642554624,3642554879,LV
+3642554880,3642555103,UA
3642555104,3642555111,NL
-3642555112,3642555607,DE
+3642555112,3642555607,UA
3642555608,3642555615,PL
-3642555616,3642556415,DE
+3642555616,3642556415,UA
3642556416,3642560511,CZ
3642560512,3642564607,KG
3642564608,3642568703,DE
@@ -142371,7 +167872,7 @@
3642630144,3642634239,DK
3642634240,3642638335,DE
3642638336,3642642431,CZ
-3642642432,3642646527,DK
+3642642432,3642642943,US
3642646528,3642650623,MT
3642650624,3642654719,GB
3642654720,3642662911,PL
@@ -142429,7 +167930,7 @@
3644718848,3644719103,DE
3644719104,3644809215,NL
3644809216,3644809216,FR
-3644809217,3644817407,DK
+3644809217,3644816639,DK
3644817408,3644850175,NL
3644850176,3644854271,CZ
3644854272,3644858367,AZ
@@ -142503,12 +168004,16 @@
3645132800,3645136895,HR
3645136896,3645145087,NO
3645145088,3645149183,GB
-3645149184,3645165567,DE
+3645149184,3645161471,DE
+3645161472,3645163519,AT
+3645163520,3645164031,GB
+3645164032,3645165567,AT
3645165568,3645169663,TR
3645169664,3645173759,CH
3645173760,3645177855,GB
-3645177856,3645181951,GR
-3645181952,3645186047,FR
+3645177856,3645183375,FR
+3645183376,3645183383,SA
+3645183384,3645186047,FR
3645186048,3645190143,GB
3645190144,3645194239,FI
3645194240,3645202431,DE
@@ -142528,14 +168033,18 @@
3645263872,3645267967,FR
3645267968,3645276159,RU
3645276160,3645280255,DE
-3645280256,3645284351,IT
+3645280256,3645281279,IT
+3645281280,3645281535,DE
+3645281536,3645284351,IT
3645284352,3645288447,DE
3645288448,3645288895,FR
3645288896,3645288959,LU
3645288960,3645292543,FR
3645292544,3645296639,DE
3645296640,3645300735,NL
-3645300736,3645304831,BE
+3645300736,3645302011,IE
+3645302012,3645302012,BE
+3645302013,3645304831,IE
3645304832,3645308927,ES
3645308928,3645313023,DK
3645313024,3645317119,ES
@@ -142568,7 +168077,8 @@
3645423616,3645431807,DE
3645431808,3645435903,BE
3645435904,3645439999,GB
-3645440000,3645444095,SE
+3645440000,3645442047,SE
+3645442048,3645444095,GB
3645444096,3645448191,SK
3645448192,3645454335,DE
3645454336,3645456383,RU
@@ -142597,7 +168107,10 @@
3645546496,3645550591,RU
3645550592,3645558783,DE
3645558784,3645562879,DK
-3645562880,3645566975,GB
+3645562880,3645563135,GB
+3645563136,3645564671,LS
+3645564672,3645565951,GB
+3645565952,3645566975,ZW
3645566976,3645571071,RU
3645571072,3645575167,IE
3645575168,3645579263,CH
@@ -142619,7 +168132,37 @@
3645657088,3645661183,SE
3645661184,3645665279,DE
3645665280,3645669375,PL
-3645669376,3645677567,ES
+3645669376,3645669599,ES
+3645669600,3645669887,PT
+3645669888,3645670399,ES
+3645670400,3645670427,PT
+3645670428,3645670429,ES
+3645670430,3645670430,PT
+3645670431,3645670433,ES
+3645670434,3645670436,PT
+3645670437,3645670441,ES
+3645670442,3645670456,PT
+3645670457,3645670460,ES
+3645670461,3645670467,PT
+3645670468,3645670483,ES
+3645670484,3645670508,PT
+3645670509,3645670509,ES
+3645670510,3645670527,PT
+3645670528,3645670655,ES
+3645670656,3645670911,PT
+3645670912,3645673471,ES
+3645673472,3645673535,PT
+3645673536,3645674239,ES
+3645674240,3645674271,PT
+3645674272,3645675007,ES
+3645675008,3645675519,PT
+3645675520,3645675759,ES
+3645675760,3645675775,PT
+3645675776,3645676015,ES
+3645676016,3645676031,PT
+3645676032,3645676543,ES
+3645676544,3645676799,PT
+3645676800,3645677567,ES
3645677568,3645681663,AT
3645681664,3645685759,RU
3645685760,3645689855,UA
@@ -142633,9 +168176,7 @@
3645718528,3645722623,GA
3645722624,3645726719,IT
3645726720,3645727999,RU
-3645728000,3645728255,IN
3645728256,3645728511,RU
-3645728512,3645728767,IN
3645728768,3645730815,RU
3645730816,3645734911,IR
3645734912,3645743103,NL
@@ -142644,16 +168185,823 @@
3645751296,3645755391,FI
3645755392,3645759487,UA
3645759488,3645763583,FR
-3645763584,3645767679,DE
+3645763584,3645763585,DE
+3645763586,3645763587,IT
+3645763588,3645763588,DE
+3645763589,3645763589,IE
+3645763590,3645763590,ES
+3645763591,3645763591,BE
+3645763592,3645763593,DE
+3645763594,3645763594,CH
+3645763595,3645763595,IT
+3645763596,3645763597,DE
+3645763598,3645763598,NL
+3645763599,3645763600,DE
+3645763601,3645763601,GR
+3645763602,3645763603,FR
+3645763604,3645763609,DE
+3645763610,3645763610,PL
+3645763611,3645763612,DE
+3645763613,3645763613,HU
+3645763614,3645763614,CH
+3645763615,3645763615,DE
+3645763616,3645763616,FR
+3645763617,3645763617,DE
+3645763618,3645763618,ES
+3645763619,3645763619,DE
+3645763620,3645763620,FR
+3645763621,3645763621,CH
+3645763622,3645763622,GB
+3645763623,3645763623,FR
+3645763624,3645763624,DE
+3645763625,3645763625,FR
+3645763626,3645763626,NL
+3645763627,3645763627,AT
+3645763628,3645763629,DE
+3645763630,3645763631,NL
+3645763632,3645763632,GB
+3645763633,3645763633,DE
+3645763634,3645763634,NL
+3645763635,3645763635,DE
+3645763636,3645763636,AT
+3645763637,3645763637,FR
+3645763638,3645763638,NL
+3645763639,3645763639,DE
+3645763640,3645763640,HU
+3645763641,3645763641,IT
+3645763642,3645763642,GB
+3645763643,3645763645,DE
+3645763646,3645763647,ES
+3645763648,3645763648,DE
+3645763649,3645763649,IL
+3645763650,3645763650,DE
+3645763651,3645763651,NL
+3645763652,3645763653,DE
+3645763654,3645763654,ES
+3645763655,3645763660,DE
+3645763661,3645763662,FR
+3645763663,3645763663,HU
+3645763664,3645763670,DE
+3645763671,3645763671,FR
+3645763672,3645763672,DE
+3645763673,3645763673,BE
+3645763674,3645763676,DE
+3645763677,3645763678,HU
+3645763679,3645763679,IT
+3645763680,3645763683,DE
+3645763684,3645763684,CH
+3645763685,3645763687,DE
+3645763688,3645763690,NL
+3645763691,3645763691,CH
+3645763692,3645763692,DE
+3645763693,3645763693,NL
+3645763694,3645763696,DE
+3645763697,3645763697,NL
+3645763698,3645763698,DE
+3645763699,3645763699,BE
+3645763700,3645763700,NL
+3645763701,3645763705,DE
+3645763706,3645763706,GB
+3645763707,3645763707,NL
+3645763708,3645763708,GR
+3645763709,3645763709,NL
+3645763710,3645763710,GB
+3645763711,3645763713,NL
+3645763714,3645763714,DE
+3645763715,3645763715,NL
+3645763716,3645763716,DE
+3645763717,3645763717,NL
+3645763718,3645763719,DE
+3645763720,3645763720,IT
+3645763721,3645763721,DE
+3645763722,3645763722,GR
+3645763723,3645763723,NL
+3645763724,3645763726,IT
+3645763727,3645763727,NL
+3645763728,3645763728,GR
+3645763729,3645763729,DE
+3645763730,3645763730,IT
+3645763731,3645763732,DE
+3645763733,3645763733,FR
+3645763734,3645763734,DE
+3645763735,3645763735,GB
+3645763736,3645763736,FR
+3645763737,3645763737,DE
+3645763738,3645763738,CH
+3645763739,3645763740,ES
+3645763741,3645763746,DE
+3645763747,3645763747,NL
+3645763748,3645763748,DE
+3645763749,3645763750,NL
+3645763751,3645763751,DE
+3645763752,3645763752,NL
+3645763753,3645763753,DE
+3645763754,3645763755,NL
+3645763756,3645763757,DE
+3645763758,3645763758,FR
+3645763759,3645763759,DE
+3645763760,3645763760,NL
+3645763761,3645763761,SE
+3645763762,3645763762,ES
+3645763763,3645763763,DE
+3645763764,3645763764,NL
+3645763765,3645763765,DE
+3645763766,3645763766,IL
+3645763767,3645763768,NL
+3645763769,3645763769,FR
+3645763770,3645763770,NL
+3645763771,3645763771,GB
+3645763772,3645763773,DE
+3645763774,3645763774,NL
+3645763775,3645763775,DE
+3645763776,3645763776,NL
+3645763777,3645763783,DE
+3645763784,3645763784,NL
+3645763785,3645763785,DE
+3645763786,3645763786,CH
+3645763787,3645763787,NL
+3645763788,3645763788,IE
+3645763789,3645763789,AT
+3645763790,3645763790,ES
+3645763791,3645763791,IT
+3645763792,3645763792,FR
+3645763793,3645763793,ES
+3645763794,3645763794,DE
+3645763795,3645763795,IT
+3645763796,3645763797,DE
+3645763798,3645763798,FR
+3645763799,3645763801,DE
+3645763802,3645763802,ES
+3645763803,3645763803,NL
+3645763804,3645763806,DE
+3645763807,3645763807,IT
+3645763808,3645763808,DE
+3645763809,3645763809,IT
+3645763810,3645763810,NL
+3645763811,3645763813,DE
+3645763814,3645763814,IT
+3645763815,3645763816,DE
+3645763817,3645763817,GR
+3645763818,3645763818,ES
+3645763819,3645763825,DE
+3645763826,3645763826,IT
+3645763827,3645763827,ZA
+3645763828,3645763841,DE
+3645763842,3645763842,CH
+3645763843,3645763845,DE
+3645763846,3645763846,FR
+3645763847,3645763847,IT
+3645763848,3645763850,DE
+3645763851,3645763851,GB
+3645763852,3645763852,DE
+3645763853,3645763853,CH
+3645763854,3645763854,NL
+3645763855,3645763858,DE
+3645763859,3645763859,DK
+3645763860,3645763860,IT
+3645763861,3645763861,DE
+3645763862,3645763862,FR
+3645763863,3645763864,ES
+3645763865,3645763865,CH
+3645763866,3645763866,DE
+3645763867,3645763868,GB
+3645763869,3645763869,DE
+3645763870,3645763870,HU
+3645763871,3645763874,DE
+3645763875,3645763875,GB
+3645763876,3645763876,PL
+3645763877,3645763877,FR
+3645763878,3645763879,DE
+3645763880,3645763881,FR
+3645763882,3645763882,DE
+3645763883,3645763883,NL
+3645763884,3645763884,IT
+3645763885,3645763886,DE
+3645763887,3645763887,FR
+3645763888,3645763888,DE
+3645763889,3645763889,GR
+3645763890,3645763890,ES
+3645763891,3645763896,DE
+3645763897,3645763897,BE
+3645763898,3645763898,DE
+3645763899,3645763899,ES
+3645763900,3645763900,NL
+3645763901,3645763902,LU
+3645763903,3645763903,DE
+3645763904,3645763904,BE
+3645763905,3645763905,RS
+3645763906,3645763906,DE
+3645763907,3645763908,IT
+3645763909,3645763909,DE
+3645763910,3645763910,ES
+3645763911,3645763911,DE
+3645763912,3645763912,IE
+3645763913,3645763913,PT
+3645763914,3645763914,DE
+3645763915,3645763915,IL
+3645763916,3645763916,BE
+3645763917,3645763917,DE
+3645763918,3645763918,IT
+3645763919,3645763919,GB
+3645763920,3645763920,DE
+3645763921,3645763921,CH
+3645763922,3645763922,ES
+3645763923,3645763923,GB
+3645763924,3645763924,PL
+3645763925,3645763926,DE
+3645763927,3645763927,HU
+3645763928,3645763928,FR
+3645763929,3645763929,NL
+3645763930,3645763930,ES
+3645763931,3645763931,FR
+3645763932,3645763932,DE
+3645763933,3645763933,FR
+3645763934,3645763934,IT
+3645763935,3645763935,FR
+3645763936,3645763936,DE
+3645763937,3645763937,FR
+3645763938,3645763938,DE
+3645763939,3645763939,NL
+3645763940,3645763942,DE
+3645763943,3645763943,ES
+3645763944,3645763944,CH
+3645763945,3645763945,DE
+3645763946,3645763946,HU
+3645763947,3645763949,DE
+3645763950,3645763950,ES
+3645763951,3645763951,DE
+3645763952,3645763952,IT
+3645763953,3645763953,TR
+3645763954,3645763954,IT
+3645763955,3645763955,FR
+3645763956,3645763956,DE
+3645763957,3645763957,GB
+3645763958,3645763959,DE
+3645763960,3645763960,IT
+3645763961,3645763961,DE
+3645763962,3645763962,ES
+3645763963,3645763964,DE
+3645763965,3645763965,AT
+3645763966,3645763966,DE
+3645763967,3645763967,IT
+3645763968,3645763968,DE
+3645763969,3645763969,ES
+3645763970,3645763970,DE
+3645763971,3645763971,ES
+3645763972,3645763972,IT
+3645763973,3645763973,DE
+3645763974,3645763974,GB
+3645763975,3645763975,AT
+3645763976,3645763976,IT
+3645763977,3645763978,DE
+3645763979,3645763979,IT
+3645763980,3645763981,DE
+3645763982,3645763982,IT
+3645763983,3645763984,FR
+3645763985,3645763985,NL
+3645763986,3645763986,DE
+3645763987,3645763987,PL
+3645763988,3645763988,CH
+3645763989,3645763989,FR
+3645763990,3645763993,DE
+3645763994,3645763994,IT
+3645763995,3645763995,ES
+3645763996,3645764000,DE
+3645764001,3645764001,IT
+3645764002,3645764009,DE
+3645764010,3645764010,FR
+3645764011,3645764012,DE
+3645764013,3645764013,HU
+3645764014,3645764015,GB
+3645764016,3645764016,IT
+3645764017,3645764017,GB
+3645764018,3645764019,DE
+3645764020,3645764020,IT
+3645764021,3645764021,DE
+3645764022,3645764022,ES
+3645764023,3645764023,FR
+3645764024,3645764025,ES
+3645764026,3645764028,DE
+3645764029,3645764029,ES
+3645764030,3645764030,DE
+3645764031,3645764031,NL
+3645764032,3645764032,FR
+3645764033,3645764034,DE
+3645764035,3645764035,IT
+3645764036,3645764037,ES
+3645764038,3645764038,IT
+3645764039,3645764039,HU
+3645764040,3645764040,ES
+3645764041,3645764041,DE
+3645764042,3645764042,CH
+3645764043,3645764043,DE
+3645764044,3645764044,ES
+3645764045,3645764045,AE
+3645764046,3645764051,DE
+3645764052,3645764052,FR
+3645764053,3645764055,DE
+3645764056,3645764056,BE
+3645764057,3645764059,DE
+3645764060,3645764060,FR
+3645764061,3645764061,IT
+3645764062,3645764062,SE
+3645764063,3645764063,AT
+3645764064,3645764064,SI
+3645764065,3645764065,DE
+3645764066,3645764066,IT
+3645764067,3645764067,DE
+3645764068,3645764068,IT
+3645764069,3645764069,CH
+3645764070,3645764070,GB
+3645764071,3645764074,DE
+3645764075,3645764075,SE
+3645764076,3645764076,GR
+3645764077,3645764078,DE
+3645764079,3645764079,ES
+3645764080,3645764080,DE
+3645764081,3645764081,GB
+3645764082,3645764084,DE
+3645764085,3645764085,IE
+3645764086,3645764086,IT
+3645764087,3645764087,CH
+3645764088,3645764091,DE
+3645764092,3645764092,FR
+3645764093,3645764097,DE
+3645764098,3645764098,IT
+3645764099,3645764099,DE
+3645764100,3645764100,BE
+3645764101,3645764102,DE
+3645764103,3645764103,SK
+3645764104,3645764105,IT
+3645764106,3645764106,NL
+3645764107,3645764107,GR
+3645764108,3645764108,DE
+3645764109,3645764109,CH
+3645764110,3645764110,DK
+3645764111,3645764111,DE
+3645764112,3645764112,IT
+3645764113,3645764113,ES
+3645764114,3645764115,DE
+3645764116,3645764116,GR
+3645764117,3645764117,DE
+3645764118,3645764118,GB
+3645764119,3645764119,CH
+3645764120,3645764120,FR
+3645764121,3645764121,IT
+3645764122,3645764122,DE
+3645764123,3645764123,PL
+3645764124,3645764124,DE
+3645764125,3645764125,NO
+3645764126,3645764126,LU
+3645764127,3645764128,DE
+3645764129,3645764129,HR
+3645764130,3645764130,FR
+3645764131,3645764131,DE
+3645764132,3645764132,ES
+3645764133,3645764133,CY
+3645764134,3645764135,DE
+3645764136,3645764136,BE
+3645764137,3645764137,DE
+3645764138,3645764138,CH
+3645764139,3645764140,DE
+3645764141,3645764141,ES
+3645764142,3645764142,HU
+3645764143,3645764145,DE
+3645764146,3645764147,NL
+3645764148,3645764148,DK
+3645764149,3645764154,DE
+3645764155,3645764155,ES
+3645764156,3645764158,DE
+3645764159,3645764159,IT
+3645764160,3645764160,BE
+3645764161,3645764161,ES
+3645764162,3645764162,DE
+3645764163,3645764163,NL
+3645764164,3645764165,DE
+3645764166,3645764166,HU
+3645764167,3645764167,DE
+3645764168,3645764168,ES
+3645764169,3645764169,GR
+3645764170,3645764170,IT
+3645764171,3645764172,DE
+3645764173,3645764173,IT
+3645764174,3645764174,DE
+3645764175,3645764175,PL
+3645764176,3645764176,DE
+3645764177,3645764177,GB
+3645764178,3645764178,DE
+3645764179,3645764179,GR
+3645764180,3645764181,DE
+3645764182,3645764182,FR
+3645764183,3645764184,DE
+3645764185,3645764185,IT
+3645764186,3645764186,FR
+3645764187,3645764187,BE
+3645764188,3645764188,GB
+3645764189,3645764189,DE
+3645764190,3645764190,IT
+3645764191,3645764191,GB
+3645764192,3645764193,DE
+3645764194,3645764194,ES
+3645764195,3645764195,DE
+3645764196,3645764196,IT
+3645764197,3645764197,DE
+3645764198,3645764198,GR
+3645764199,3645764199,DE
+3645764200,3645764200,IT
+3645764201,3645764201,BE
+3645764202,3645764202,IT
+3645764203,3645764203,DE
+3645764204,3645764204,ES
+3645764205,3645764207,DE
+3645764208,3645764208,NO
+3645764209,3645764210,DE
+3645764211,3645764211,FR
+3645764212,3645764212,NL
+3645764213,3645764213,DE
+3645764214,3645764214,NL
+3645764215,3645764216,DE
+3645764217,3645764217,IT
+3645764218,3645764218,CH
+3645764219,3645764219,DE
+3645764220,3645764220,NL
+3645764221,3645764221,IT
+3645764222,3645764222,BE
+3645764223,3645764223,DE
+3645764224,3645764224,ES
+3645764225,3645764225,GB
+3645764226,3645764226,DE
+3645764227,3645764227,CH
+3645764228,3645764228,FR
+3645764229,3645764229,PL
+3645764230,3645764230,NL
+3645764231,3645764231,CH
+3645764232,3645764235,DE
+3645764236,3645764236,IT
+3645764237,3645764238,DE
+3645764239,3645764240,ES
+3645764241,3645764241,DE
+3645764242,3645764242,AT
+3645764243,3645764243,GR
+3645764244,3645764244,FR
+3645764245,3645764246,NL
+3645764247,3645764247,IT
+3645764248,3645764251,DE
+3645764252,3645764253,ES
+3645764254,3645764254,DE
+3645764255,3645764255,CH
+3645764256,3645764257,DE
+3645764258,3645764258,NL
+3645764259,3645764259,IT
+3645764260,3645764260,DE
+3645764261,3645764261,GB
+3645764262,3645764262,BE
+3645764263,3645764264,IT
+3645764265,3645764265,TR
+3645764266,3645764270,DE
+3645764271,3645764271,IT
+3645764272,3645764272,DE
+3645764273,3645764273,IT
+3645764274,3645764277,DE
+3645764278,3645764278,NL
+3645764279,3645764279,ES
+3645764280,3645764280,IT
+3645764281,3645764281,DE
+3645764282,3645764282,NL
+3645764283,3645764283,DE
+3645764284,3645764284,FR
+3645764285,3645764285,IT
+3645764286,3645764286,DE
+3645764287,3645764287,BE
+3645764288,3645764288,FR
+3645764289,3645764289,NL
+3645764290,3645764290,DE
+3645764291,3645764291,NL
+3645764292,3645764292,FR
+3645764293,3645764293,IT
+3645764294,3645764294,DE
+3645764295,3645764295,ES
+3645764296,3645764297,DE
+3645764298,3645764298,GR
+3645764299,3645764299,DE
+3645764300,3645764300,PL
+3645764301,3645764301,GR
+3645764302,3645764304,DE
+3645764305,3645764305,GB
+3645764306,3645764306,BM
+3645764307,3645764307,NL
+3645764308,3645764309,DE
+3645764310,3645764310,ZA
+3645764311,3645764311,DE
+3645764312,3645764313,ES
+3645764314,3645764316,DE
+3645764317,3645764317,ES
+3645764318,3645764318,HU
+3645764319,3645764319,FR
+3645764320,3645764320,IT
+3645764321,3645764321,DE
+3645764322,3645764322,CH
+3645764323,3645764323,DE
+3645764324,3645764324,FR
+3645764325,3645764326,DE
+3645764327,3645764327,DK
+3645764328,3645764328,CH
+3645764329,3645764329,ES
+3645764330,3645764330,DE
+3645764331,3645764331,RU
+3645764332,3645764332,NL
+3645764333,3645764336,DE
+3645764337,3645764337,HU
+3645764338,3645764338,NL
+3645764339,3645764340,DE
+3645764341,3645764341,IE
+3645764342,3645764342,IT
+3645764343,3645764343,ES
+3645764344,3645764345,DE
+3645764346,3645764346,IT
+3645764347,3645764347,IE
+3645764348,3645764348,NL
+3645764349,3645764349,BE
+3645764350,3645764350,IT
+3645764351,3645764357,DE
+3645764358,3645764358,FR
+3645764359,3645764360,DE
+3645764361,3645764361,CH
+3645764362,3645764362,DE
+3645764363,3645764363,NL
+3645764364,3645764364,DE
+3645764365,3645764365,BE
+3645764366,3645764367,DE
+3645764368,3645764368,IT
+3645764369,3645764369,DE
+3645764370,3645764370,GB
+3645764371,3645764371,ES
+3645764372,3645764372,FR
+3645764373,3645764375,DE
+3645764376,3645764377,NL
+3645764378,3645764378,DE
+3645764379,3645764380,GB
+3645764381,3645764381,DE
+3645764382,3645764382,NL
+3645764383,3645764383,DE
+3645764384,3645764384,AT
+3645764385,3645764388,DE
+3645764389,3645764389,NL
+3645764390,3645764390,DE
+3645764391,3645764391,NL
+3645764392,3645764392,GR
+3645764393,3645764393,DE
+3645764394,3645764394,FR
+3645764395,3645764396,NL
+3645764397,3645764397,DE
+3645764398,3645764398,NL
+3645764399,3645764399,DE
+3645764400,3645764401,NL
+3645764402,3645764403,FR
+3645764404,3645764404,NL
+3645764405,3645764410,DE
+3645764411,3645764411,FR
+3645764412,3645764412,DE
+3645764413,3645764413,FR
+3645764414,3645764415,DE
+3645764416,3645764417,NL
+3645764418,3645764418,DE
+3645764419,3645764419,NL
+3645764420,3645764420,GB
+3645764421,3645764421,DE
+3645764422,3645764422,IT
+3645764423,3645764423,HU
+3645764424,3645764424,DE
+3645764425,3645764425,GB
+3645764426,3645764433,DE
+3645764434,3645764434,NL
+3645764435,3645764435,AT
+3645764436,3645764436,DE
+3645764437,3645764437,FR
+3645764438,3645764439,DE
+3645764440,3645764440,CH
+3645764441,3645764441,DE
+3645764442,3645764442,IT
+3645764443,3645764456,DE
+3645764457,3645764457,IT
+3645764458,3645764458,DE
+3645764459,3645764459,IT
+3645764460,3645764462,DE
+3645764463,3645764463,NL
+3645764464,3645764467,DE
+3645764468,3645764468,IT
+3645764469,3645764470,DE
+3645764471,3645764471,IT
+3645764472,3645764472,GR
+3645764473,3645764473,NL
+3645764474,3645764476,DE
+3645764477,3645764477,NL
+3645764478,3645764479,DE
+3645764480,3645764481,NL
+3645764482,3645764482,DE
+3645764483,3645764483,NL
+3645764484,3645764484,DE
+3645764485,3645764485,NL
+3645764486,3645764487,DE
+3645764488,3645764490,NL
+3645764491,3645764491,DE
+3645764492,3645764492,NL
+3645764493,3645764493,ES
+3645764494,3645764494,FR
+3645764495,3645764495,NL
+3645764496,3645764496,DE
+3645764497,3645764497,NL
+3645764498,3645764498,FR
+3645764499,3645764500,NL
+3645764501,3645764501,DE
+3645764502,3645764503,NL
+3645764504,3645764504,DE
+3645764505,3645764505,NL
+3645764506,3645764506,DE
+3645764507,3645764507,ES
+3645764508,3645764508,IT
+3645764509,3645764510,DE
+3645764511,3645764511,NL
+3645764512,3645764512,DE
+3645764513,3645764513,NL
+3645764514,3645764514,ES
+3645764515,3645764515,DE
+3645764516,3645764516,NL
+3645764517,3645764519,DE
+3645764520,3645764522,NL
+3645764523,3645764524,DE
+3645764525,3645764531,NL
+3645764532,3645764533,DE
+3645764534,3645764535,NL
+3645764536,3645764536,IT
+3645764537,3645764538,DE
+3645764539,3645764539,NL
+3645764540,3645764540,DE
+3645764541,3645764541,IT
+3645764542,3645764549,NL
+3645764550,3645764550,DE
+3645764551,3645764551,GR
+3645764552,3645764553,DE
+3645764554,3645764554,NL
+3645764555,3645764555,DE
+3645764556,3645764556,CH
+3645764557,3645764557,NL
+3645764558,3645764561,DE
+3645764562,3645764562,FR
+3645764563,3645764563,ES
+3645764564,3645764565,NL
+3645764566,3645764567,DE
+3645764568,3645764568,NL
+3645764569,3645764569,DE
+3645764570,3645764570,MA
+3645764571,3645765135,DE
+3645765136,3645765139,BE
+3645765140,3645765143,IT
+3645765144,3645765147,DE
+3645765148,3645765151,IT
+3645765152,3645765155,BE
+3645765156,3645765167,IT
+3645765168,3645765171,DE
+3645765172,3645765175,NO
+3645765176,3645765179,DE
+3645765180,3645765183,FR
+3645765184,3645765187,GR
+3645765188,3645765195,DE
+3645765196,3645765199,CH
+3645765200,3645765215,DE
+3645765216,3645765219,ES
+3645765220,3645765223,PL
+3645765224,3645765227,BE
+3645765228,3645765231,GB
+3645765232,3645765235,IT
+3645765236,3645765239,DE
+3645765240,3645765243,GB
+3645765244,3645765247,IT
+3645765248,3645765251,ES
+3645765252,3645765255,DE
+3645765256,3645765259,GR
+3645765260,3645765263,PL
+3645765264,3645765267,DE
+3645765268,3645765271,PL
+3645765272,3645765275,IT
+3645765276,3645765283,DE
+3645765284,3645765287,ES
+3645765288,3645765295,DE
+3645765296,3645765299,ES
+3645765300,3645765307,DE
+3645765308,3645765311,IT
+3645765312,3645765315,TR
+3645765316,3645765319,IT
+3645765320,3645765323,DE
+3645765324,3645765331,ES
+3645765332,3645765335,DE
+3645765336,3645765339,IT
+3645765340,3645765343,FR
+3645765344,3645765347,DE
+3645765348,3645765351,GR
+3645765352,3645765359,DE
+3645765360,3645765363,FR
+3645765364,3645765367,ES
+3645765368,3645765371,IT
+3645765372,3645765375,CH
+3645765376,3645765379,DE
+3645765380,3645765383,BM
+3645765384,3645765387,NL
+3645765388,3645765391,DE
+3645765392,3645765399,ES
+3645765400,3645765407,DE
+3645765408,3645765411,DK
+3645765412,3645765415,IT
+3645765416,3645765419,FR
+3645765420,3645765423,DE
+3645765424,3645765427,IT
+3645765428,3645765451,DE
+3645765452,3645765455,FR
+3645765456,3645765459,AT
+3645765460,3645765463,FR
+3645765464,3645765467,GB
+3645765468,3645765471,DE
+3645765472,3645765475,NL
+3645765476,3645765487,DE
+3645765488,3645765491,HU
+3645765492,3645765495,DE
+3645765496,3645765499,GB
+3645765500,3645765503,NL
+3645765504,3645765511,DE
+3645765512,3645765515,GB
+3645765516,3645765523,DE
+3645765524,3645765527,IT
+3645765528,3645765535,FR
+3645765536,3645765539,SE
+3645765540,3645765543,IL
+3645765544,3645765559,DE
+3645765560,3645765563,IE
+3645765564,3645765567,ES
+3645765568,3645765571,FR
+3645765572,3645765575,DE
+3645765576,3645765579,IT
+3645765580,3645765591,DE
+3645765592,3645765595,IE
+3645765596,3645765619,DE
+3645765620,3645765623,CH
+3645765624,3645765639,DE
+3645765640,3645765643,DK
+3645765644,3645765647,GB
+3645765648,3645765651,NL
+3645765652,3645765671,DE
+3645765672,3645765675,FR
+3645765676,3645765679,DE
+3645765680,3645765683,FR
+3645765684,3645765687,DE
+3645765688,3645765691,FR
+3645765692,3645765695,CH
+3645765696,3645765703,IT
+3645765704,3645765715,DE
+3645765716,3645765719,FR
+3645765720,3645766401,DE
+3645766402,3645766407,US
+3645766408,3645767187,DE
+3645767188,3645767188,US
+3645767189,3645767193,DE
+3645767194,3645767194,US
+3645767195,3645767195,DE
+3645767196,3645767196,US
+3645767197,3645767197,DE
+3645767198,3645767198,US
+3645767199,3645767208,DE
+3645767209,3645767209,US
+3645767210,3645767222,DE
+3645767223,3645767223,US
+3645767224,3645767240,DE
+3645767241,3645767241,US
+3645767242,3645767426,DE
+3645767427,3645767427,US
+3645767428,3645767428,DE
+3645767429,3645767429,US
+3645767430,3645767431,DE
+3645767432,3645767433,US
+3645767434,3645767434,CA
+3645767435,3645767435,DE
+3645767436,3645767448,US
+3645767449,3645767449,DE
+3645767450,3645767450,US
+3645767451,3645767451,DE
+3645767452,3645767455,US
+3645767456,3645767502,DE
+3645767503,3645767503,US
+3645767504,3645767679,DE
3645767680,3645771775,IE
3645771776,3645779967,SE
3645779968,3645784063,PS
3645784064,3645788159,DJ
-3645788160,3645792255,GB
+3645788160,3645791999,GB
+3645792000,3645792255,AU
3645792256,3645796351,TR
3645796352,3645800447,CH
3645800448,3645804543,DE
-3645804544,3645808639,GB
+3645804544,3645805311,GB
+3645806592,3645807615,GB
+3645807872,3645808639,GB
3645808640,3645812735,DE
3645812736,3645816831,RU
3645816832,3645825023,FI
@@ -142679,34 +169027,92 @@
3647209472,3647602687,NL
3647602688,3647733759,RU
3647733760,3647864831,FR
-3647864832,3647965695,DE
+3647864832,3647916799,DE
+3647916800,3647917055,SE
+3647917056,3647947727,DE
+3647947728,3647947735,GB
+3647947736,3647964159,DE
+3647964160,3647964287,ES
+3647964288,3647964503,DE
+3647964504,3647964511,ES
+3647964512,3647964519,DE
+3647964520,3647964527,ES
+3647964528,3647964559,DE
+3647964560,3647964567,ES
+3647964568,3647964591,DE
+3647964592,3647964599,ES
+3647964600,3647964607,DE
+3647964608,3647964615,ES
+3647964616,3647964623,DE
+3647964624,3647964639,ES
+3647964640,3647965255,DE
+3647965256,3647965263,ES
+3647965264,3647965695,DE
3647965696,3647965951,CH
3647965952,3647966207,DE
-3647966208,3647966463,GB
-3647966464,3647966719,DE
-3647966720,3647967231,GB
-3647967232,3647971839,DE
-3647971840,3647972351,GB
-3647972352,3647974071,DE
-3647974072,3647974079,IT
-3647974080,3647975423,DE
+3647966208,3647967231,GB
+3647967232,3647967759,DE
+3647967760,3647967775,BE
+3647967776,3647968255,DE
+3647968256,3647969279,FR
+3647969280,3647969327,DE
+3647969328,3647969335,IT
+3647969336,3647970123,DE
+3647970124,3647970124,BE
+3647970125,3647970303,DE
+3647970304,3647971327,FR
+3647971328,3647972351,GB
+3647972352,3647973375,IT
+3647973376,3647973399,DE
+3647973400,3647973407,IT
+3647973408,3647973615,DE
+3647973616,3647973623,IT
+3647973624,3647973711,DE
+3647973712,3647973719,IT
+3647973720,3647973887,DE
+3647973888,3647974143,IT
+3647974144,3647975255,DE
+3647975256,3647975263,ES
+3647975264,3647975423,DE
3647975424,3647976447,ES
-3647976448,3647977471,DE
+3647976448,3647977471,BE
3647977472,3647978495,GB
3647978496,3647978511,NL
3647978512,3647978515,DE
3647978516,3647979007,NL
-3647979008,3647980543,DE
+3647979008,3647979071,IT
+3647979072,3647980223,DE
+3647980224,3647980239,FR
+3647980240,3647980383,DE
+3647980384,3647980415,FR
+3647980416,3647980543,DE
3647980544,3647981567,GB
-3647981568,3647984033,DE
-3647984034,3647984034,NL
-3647984035,3647987711,DE
-3647987712,3647988223,IT
-3647988224,3647995903,DE
+3647981568,3647982591,BE
+3647982592,3647983871,DE
+3647983872,3647983879,NL
+3647983880,3647984031,DE
+3647984032,3647984047,NL
+3647984048,3647984639,DE
+3647984640,3647985663,BE
+3647985664,3647986431,DE
+3647986432,3647987199,ES
+3647987200,3647987647,DE
+3647987648,3647987655,ES
+3647987656,3647987695,DE
+3647987696,3647987711,ES
+3647987712,3647988735,IT
+3647988736,3647988999,DE
+3647989000,3647989007,BE
+3647989008,3647989759,DE
+3647989760,3647991807,ES
+3647991808,3647995903,BE
3647995904,3648004095,RU
3648004096,3648004837,GB
3648004838,3648004838,RU
-3648004839,3648008191,GB
+3648004839,3648007167,GB
+3648007168,3648007679,US
+3648007680,3648007935,RU
+3648007936,3648008191,GB
3648008192,3648016383,FR
3648016384,3648020479,GB
3648020480,3648024575,IT
@@ -142722,14 +169128,27 @@
3648061440,3648069631,AM
3648069632,3648073727,DE
3648073728,3648077823,HU
-3648077824,3648080639,BE
+3648077824,3648078527,BE
+3648078528,3648078591,BF
+3648078592,3648079103,BE
+3648079104,3648079359,CG
+3648079360,3648080511,BE
+3648080512,3648080543,BF
+3648080544,3648080639,BE
3648080640,3648080895,GA
3648080896,3648081023,ZM
3648081024,3648081055,GA
3648081056,3648081151,ZM
-3648081152,3648084223,BE
+3648081152,3648081407,BE
+3648081408,3648081663,CG
+3648081664,3648082239,BE
+3648082240,3648082311,NE
+3648082312,3648082431,BE
+3648082432,3648082479,ZM
+3648082480,3648084223,BE
3648084224,3648084479,CD
-3648084480,3648086015,BE
+3648084480,3648084991,BE
+3648084992,3648086015,GB
3648086016,3648090111,AT
3648090112,3648094207,RU
3648094208,3648102399,PL
@@ -142747,7 +169166,14 @@
3648155648,3648159743,CH
3648159744,3648163839,ES
3648163840,3648167935,RU
-3648167936,3648172031,IE
+3648167936,3648168447,IE
+3648168448,3648168851,GB
+3648168852,3648168855,IR
+3648168856,3648170239,GB
+3648170240,3648170495,IE
+3648170496,3648171679,GB
+3648171680,3648171695,IE
+3648171696,3648172031,GB
3648172032,3648176127,RU
3648176128,3648178175,DE
3648178176,3648180223,FR
@@ -142799,7 +169225,9 @@
3648397312,3648405503,NO
3648405504,3648413695,RU
3648413696,3648417791,SK
-3648417792,3648425983,GB
+3648417792,3648419903,GB
+3648419904,3648419935,BE
+3648419936,3648425983,GB
3648425984,3648430079,IT
3648430080,3648434175,NL
3648434176,3648438271,RU
@@ -142821,7 +169249,8 @@
3648499712,3648503807,FR
3648503808,3648511999,DE
3648512000,3648516095,NL
-3648516096,3648520191,RS
+3648516096,3648519423,RS
+3648519424,3648520191,MK
3648520192,3648745820,NL
3648745821,3648745821,US
3648745822,3648747227,NL
@@ -142838,15 +169267,37 @@
3649241088,3649306623,TR
3649306624,3649372159,IL
3649372160,3649437695,IT
-3649437696,3649568767,GB
+3649437696,3649470463,GB
+3649470464,3649471487,SG
+3649471488,3649472511,HK
+3649472512,3649512191,GB
+3649512192,3649512447,FR
+3649512448,3649568767,GB
3649568768,3649634303,BE
3649634304,3649765375,GB
3649765376,3649830911,EG
-3649830912,3649847295,NL
-3649847296,3649855487,DE
-3649855488,3649857791,GB
+3649830912,3649835007,NL
+3649835008,3649837055,ES
+3649837056,3649839103,NL
+3649839104,3649840127,GB
+3649840128,3649841151,NL
+3649841152,3649843199,GB
+3649843200,3649847817,NL
+3649847818,3649848004,DE
+3649848005,3649848005,NL
+3649848006,3649848010,DE
+3649848011,3649848011,PL
+3649848012,3649848012,HR
+3649848013,3649848014,DE
+3649848015,3649848015,HU
+3649848016,3649848016,PL
+3649848017,3649848028,DE
+3649848029,3649848031,NL
+3649848032,3649855487,DE
+3649855488,3649856511,GB
+3649856512,3649857791,US
3649857792,3649858047,IN
-3649858048,3649859583,GB
+3649858048,3649859583,US
3649859584,3649863679,SE
3649863680,3649896447,FI
3649896448,3649961983,IT
@@ -142880,22 +169331,31 @@
3650220032,3650224127,SA
3650224128,3650224383,TH
3650224384,3650224639,ES
-3650224640,3650224895,AT
+3650224640,3650224895,UA
3650224896,3650225151,FR
-3650225152,3650225663,AT
+3650225152,3650225407,HU
+3650225408,3650225663,BR
3650225664,3650226175,TR
3650226176,3650226431,RS
-3650226432,3650226687,AT
+3650226432,3650226687,SG
3650226688,3650227455,IN
3650227456,3650227711,PL
-3650227712,3650229759,AT
+3650227712,3650227967,PT
+3650227968,3650229247,AT
+3650229248,3650229503,DE
+3650229504,3650229759,LU
3650229760,3650230527,DE
-3650230528,3650231551,AT
+3650230528,3650231295,AT
+3650231296,3650231551,AR
3650231552,3650231807,GB
-3650231808,3650232063,AT
+3650231808,3650231967,DE
+3650231968,3650231999,AT
+3650232000,3650232063,DE
3650232064,3650232319,SE
-3650232320,3650236415,RU
-3650236416,3650240511,GB
+3650232320,3650233343,RU
+3650233344,3650233599,CY
+3650233600,3650236415,RU
+3650238464,3650240511,GB
3650240512,3650244607,EE
3650244608,3650256895,GB
3650256896,3650265087,DE
@@ -142907,8 +169367,8 @@
3650285568,3650289663,UA
3650293760,3650297855,RU
3650297856,3650301951,LT
-3650301952,3650310143,DE
-3650310144,3650314239,GB
+3650301952,3650306047,DE
+3650306048,3650314239,GB
3650314240,3650318335,DE
3650318336,3650322431,GI
3650322432,3650330623,IT
@@ -142920,22 +169380,24 @@
3650338816,3650342911,FR
3650342912,3650347007,CH
3650347008,3650351103,GE
-3650351104,3650352264,GB
+3650351104,3650352127,GB
+3650352128,3650352264,HU
3650352265,3650352265,DE
-3650352266,3650355199,GB
+3650352266,3650353151,HU
+3650353152,3650355199,GB
3650355200,3650359295,CH
3650359296,3650363391,NL
3650363392,3650367487,GB
3650367488,3650371583,RU
3650371584,3650375679,ES
3650375680,3650379775,NL
-3650379776,3650383871,DE
-3650383872,3650387967,IT
+3650379776,3650381823,DE
+3650381824,3650387967,IT
3650392064,3650396159,NO
3650396160,3650404351,NL
3650404352,3650412543,RU
3650412544,3650416639,DE
-3650416640,3650420735,BE
+3650416640,3650420735,IE
3650420736,3650424831,ES
3650424832,3650428927,RU
3650428928,3650433023,NL
@@ -142971,7 +169433,10 @@
3650572288,3650575103,DE
3650575104,3650575167,AT
3650575168,3650576383,DE
-3650576384,3650580479,GB
+3650576384,3650576623,GB
+3650576624,3650576631,SE
+3650576632,3650576639,NO
+3650576640,3650580479,GB
3650580480,3650584575,CH
3650584576,3650588671,RU
3650588672,3650592767,DE
@@ -142980,10 +169445,10 @@
3650605056,3650610175,DE
3650610176,3650613247,RU
3650613248,3650616319,DE
-3650616320,3650616320,RU
-3650616321,3650616575,DE
-3650616576,3650616576,PL
-3650616577,3650617343,DE
+3650616320,3650616321,RU
+3650616322,3650616575,DE
+3650616576,3650616577,PL
+3650616578,3650617343,DE
3650617344,3650682879,FI
3650682880,3650748415,PL
3650748416,3650879487,GB
@@ -142996,9 +169461,13 @@
3650921088,3650921215,GR
3650921216,3650921389,GB
3650921390,3650921390,IL
-3650921391,3650922799,GB
+3650921391,3650921511,GB
+3650921512,3650921519,FR
+3650921520,3650922799,GB
3650922800,3650922815,FR
-3650922816,3650929831,GB
+3650922816,3650926591,GB
+3650926592,3650929663,ES
+3650929664,3650929831,GB
3650929832,3650929839,DK
3650929840,3650929847,BE
3650929848,3650929855,FR
@@ -143014,23 +169483,69 @@
3650932882,3650932882,DE
3650932883,3650932943,GB
3650932944,3650932975,IT
-3650932976,3650936319,GB
-3650936320,3650936455,FR
-3650936456,3650936456,GB
-3650936457,3650936575,FR
-3650936576,3650939607,GB
+3650932976,3650939607,GB
3650939608,3650939615,TR
-3650939616,3650945023,GB
+3650939616,3650940927,GB
+3650940928,3650941177,NL
+3650941178,3650941178,GB
+3650941179,3650941183,NL
+3650941184,3650941439,GB
+3650941440,3650941951,BE
+3650941952,3650943999,GB
+3650944000,3650944530,FR
+3650944531,3650944531,GB
+3650944532,3650944708,FR
+3650944709,3650944709,GB
+3650944710,3650945023,FR
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651108863,DE
3651108864,3651141631,EE
-3651141632,3651207167,DE
-3651207168,3651272703,GB
+3651141632,3651152895,DE
+3651152896,3651153919,GB
+3651153920,3651188991,DE
+3651188992,3651190015,ES
+3651190016,3651192319,DE
+3651192320,3651193343,GB
+3651193344,3651207167,DE
+3651207168,3651207199,GB
+3651207224,3651207295,GB
+3651207424,3651207615,GB
+3651207648,3651208959,GB
+3651209216,3651209231,US
+3651209232,3651209239,GB
+3651209240,3651209243,DE
+3651209472,3651210751,GB
+3651211264,3651211775,IR
+3651213824,3651214207,US
+3651215360,3651215395,GB
+3651215616,3651215871,GB
+3651217408,3651217535,GI
+3651219456,3651219967,US
+3651220384,3651220415,GB
+3651220432,3651220479,GB
+3651221504,3651221695,GB
+3651223552,3651223567,GB
+3651223584,3651223607,GB
+3651223648,3651223663,ES
+3651227136,3651227391,GB
+3651230720,3651231743,MU
+3651232256,3651232287,GB
+3651232320,3651232383,GB
+3651232448,3651232511,GB
+3651237376,3651237631,SC
+3651239936,3651272703,GB
3651272704,3651338239,CH
-3651338240,3651352575,GB
-3651352576,3651353599,FR
-3651353600,3651403775,GB
+3651338240,3651344127,GB
+3651344128,3651344383,DE
+3651344384,3651345407,GB
+3651345408,3651346175,DE
+3651346176,3651352575,GB
+3651352576,3651354623,FR
+3651354624,3651360767,GB
+3651360768,3651361279,FR
+3651361280,3651361535,IE
+3651361536,3651403775,GB
3651403776,3651534847,AE
3651534848,3651600383,NL
3651600384,3651665919,FR
@@ -143078,11 +169593,12 @@
3651870720,3651874815,IT
3651874816,3651878911,PL
3651878912,3651883007,IT
-3651883008,3651884287,BE
-3651884288,3651884543,CD
-3651884544,3651885055,BE
-3651885056,3651885311,CD
-3651885312,3651887103,BE
+3651883008,3651884543,CD
+3651884544,3651884799,BE
+3651884800,3651885311,CD
+3651885312,3651885839,BE
+3651885840,3651885843,CD
+3651885844,3651887103,BE
3651887104,3651891199,GB
3651891200,3651895295,DE
3651895296,3651899391,GB
@@ -143103,7 +169619,8 @@
3651936256,3651944447,DE
3651944448,3651948543,ES
3651948544,3651952639,FO
-3651952640,3651960831,IR
+3651952640,3651954175,AE
+3651954176,3651960831,IR
3651960832,3651964927,GB
3651964928,3651969023,SK
3651969024,3651977215,DE
@@ -143114,9 +169631,14 @@
3652005888,3652009983,GB
3652009984,3652014079,RU
3652014080,3652018175,SA
-3652018176,3652022271,IE
+3652018176,3652020991,IE
+3652020992,3652021247,AT
+3652021248,3652022015,IE
+3652022016,3652022271,DE
3652022272,3652026367,ES
-3652026368,3652034559,DE
+3652026368,3652032767,DE
+3652032768,3652033791,NL
+3652033792,3652034559,DE
3652034560,3652046847,PL
3652046848,3652050943,IE
3652050944,3652055039,LI
@@ -143142,11 +169664,12 @@
3652153344,3652157439,SE
3652157440,3652165631,RU
3652165632,3652169727,FR
-3652169728,3652171775,MQ
-3652171776,3652173823,FR
+3652169728,3652173823,MQ
3652173824,3652177919,AT
3652177920,3652182015,CY
-3652182016,3652190207,DE
+3652182016,3652186111,DE
+3652186112,3652186623,TH
+3652186624,3652190207,DE
3652190208,3652321279,GB
3652321280,3652386815,JP
3652386816,3652583423,GB
@@ -143154,27 +169677,275 @@
3652583436,3652583439,DE
3652583440,3652583487,FR
3652583488,3652583503,NL
-3652583504,3652586001,FR
-3652586002,3652586002,ES
-3652586003,3652586003,FR
-3652586004,3652586004,ES
-3652586005,3652599569,FR
+3652583504,3652583551,FR
+3652583552,3652583583,FI
+3652583584,3652583599,LT
+3652583600,3652583615,FR
+3652583616,3652583679,DE
+3652583680,3652584447,FR
+3652584448,3652584575,GB
+3652584576,3652584639,IE
+3652584640,3652584703,NL
+3652584704,3652584767,BE
+3652584768,3652584799,PL
+3652584800,3652584831,CZ
+3652584832,3652584895,IT
+3652584896,3652584927,PT
+3652584928,3652584959,FR
+3652584960,3652585023,ES
+3652585024,3652585087,DE
+3652585088,3652585151,ES
+3652585152,3652585343,FR
+3652585344,3652585359,LT
+3652585360,3652585407,FR
+3652585408,3652585471,PL
+3652585472,3652585695,FR
+3652585696,3652585727,GB
+3652585728,3652585791,FR
+3652585792,3652585823,FI
+3652585824,3652585983,FR
+3652585984,3652586047,ES
+3652586048,3652586079,FR
+3652586080,3652586111,CZ
+3652586112,3652587647,FR
+3652587648,3652587711,DE
+3652587712,3652588095,FR
+3652588096,3652588159,IT
+3652588160,3652589183,FR
+3652589184,3652589231,ES
+3652589232,3652589823,FR
+3652589824,3652589839,LT
+3652589840,3652589887,FR
+3652589888,3652589919,PL
+3652589920,3652590783,FR
+3652590784,3652590847,ES
+3652590848,3652591119,FR
+3652591120,3652591127,ES
+3652591128,3652591615,FR
+3652591616,3652591743,GB
+3652591744,3652591807,BE
+3652591808,3652592391,FR
+3652592392,3652592399,ES
+3652592400,3652592543,FR
+3652592544,3652592575,PL
+3652592576,3652592703,FR
+3652592704,3652592767,DE
+3652592768,3652592847,FR
+3652592848,3652592863,LT
+3652592864,3652592927,FR
+3652592928,3652592959,CZ
+3652592960,3652593023,FR
+3652593024,3652593055,PT
+3652593056,3652593215,FR
+3652593216,3652593279,IE
+3652593280,3652593407,FR
+3652593408,3652593471,ES
+3652593472,3652593511,FR
+3652593512,3652593519,ES
+3652593520,3652593631,FR
+3652593632,3652593663,PT
+3652593664,3652593943,FR
+3652593944,3652593951,ES
+3652593952,3652595007,FR
+3652595008,3652595071,DE
+3652595072,3652595167,FR
+3652595168,3652595183,ES
+3652595184,3652595871,FR
+3652595872,3652595935,PL
+3652595936,3652596351,FR
+3652596352,3652596415,IT
+3652596416,3652596479,FR
+3652596480,3652596543,ES
+3652596544,3652596799,FR
+3652596800,3652596831,CZ
+3652596832,3652597183,FR
+3652597184,3652597247,DE
+3652597248,3652597347,FR
+3652597348,3652597351,NL
+3652597352,3652597375,FR
+3652597376,3652597383,ES
+3652597384,3652597407,FR
+3652597408,3652597439,PL
+3652597440,3652597887,FR
+3652597888,3652597903,GB
+3652597904,3652599569,FR
3652599570,3652599570,PT
-3652599571,3652608255,FR
+3652599571,3652599615,FR
+3652599616,3652599623,DE
+3652599624,3652599679,FR
+3652599680,3652599743,IT
+3652599744,3652601855,FR
+3652601856,3652603903,PL
+3652603904,3652608191,FR
+3652608192,3652608223,PT
+3652608224,3652608255,FR
3652608256,3652608511,GB
-3652608512,3652608639,FR
+3652608512,3652608575,FR
+3652608576,3652608607,GB
+3652608608,3652608639,FR
3652608640,3652608767,GB
-3652608768,3652612223,FR
+3652608768,3652609023,FR
+3652609024,3652609279,GB
+3652609280,3652609503,FR
+3652609504,3652609535,FI
+3652609536,3652609727,FR
+3652609728,3652609759,PL
+3652609760,3652609791,CZ
+3652609792,3652609823,FR
+3652609824,3652609855,CZ
+3652609856,3652609919,FR
+3652609920,3652609983,ES
+3652609984,3652610047,BE
+3652610048,3652610815,FR
+3652610816,3652610847,CZ
+3652610848,3652611135,FR
+3652611136,3652611199,ES
+3652611200,3652611231,FR
+3652611232,3652611263,PT
+3652611264,3652611679,FR
+3652611680,3652611711,PT
+3652611712,3652611775,NL
+3652611776,3652612223,FR
3652612224,3652612287,ES
-3652612288,3652640575,FR
+3652612288,3652612351,FR
+3652612352,3652612479,GB
+3652612480,3652612543,IE
+3652612544,3652612607,NL
+3652612608,3652613335,FR
+3652613336,3652613343,ES
+3652613344,3652613375,FR
+3652613376,3652613407,FI
+3652613408,3652613615,FR
+3652613616,3652613623,ES
+3652613624,3652613679,FR
+3652613680,3652613695,LT
+3652613696,3652614015,FR
+3652614016,3652614079,BE
+3652614080,3652615871,FR
+3652615872,3652615935,DE
+3652615936,3652620639,FR
+3652620640,3652620671,CZ
+3652620672,3652620735,PT
+3652620736,3652620799,FR
+3652620800,3652620831,PT
+3652620832,3652620943,FR
+3652620944,3652620959,CZ
+3652620960,3652621247,FR
+3652621248,3652621311,DE
+3652621312,3652621375,FR
+3652621376,3652621439,ES
+3652621440,3652621503,FR
+3652621504,3652621567,IT
+3652621568,3652621631,FR
+3652621632,3652621663,PT
+3652621664,3652621823,FR
+3652621824,3652621951,IE
+3652621952,3652622271,FR
+3652622272,3652622335,GB
+3652622336,3652622879,FR
+3652622880,3652622911,CZ
+3652622912,3652623679,FR
+3652623680,3652623807,NL
+3652623808,3652624191,FR
+3652624192,3652624319,IT
+3652624320,3652628479,FR
+3652628480,3652628543,IT
+3652628544,3652628607,FR
+3652628608,3652628639,PL
+3652628640,3652628855,FR
+3652628856,3652628863,ES
+3652628864,3652629743,FR
+3652629744,3652629759,ES
+3652629760,3652630015,FR
+3652630016,3652630031,ES
+3652630032,3652630079,FR
+3652630080,3652630111,PL
+3652630112,3652631295,FR
+3652631296,3652631359,BE
+3652631360,3652631391,FR
+3652631392,3652631407,CH
+3652631408,3652631423,FR
+3652631424,3652631455,PL
+3652631456,3652631551,FR
+3652631552,3652631583,CZ
+3652631584,3652631807,FR
+3652631808,3652631823,GB
+3652631824,3652632031,FR
+3652632032,3652632063,PT
+3652632064,3652632303,FR
+3652632304,3652632311,ES
+3652632312,3652633599,FR
+3652633600,3652634623,DE
+3652634624,3652635647,PL
+3652635648,3652638655,FR
+3652638656,3652638719,ES
+3652638720,3652638815,FR
+3652638816,3652638847,FI
+3652638848,3652638975,GB
+3652638976,3652639359,FR
+3652639360,3652639423,DE
+3652639424,3652639679,FR
+3652639680,3652639807,NL
+3652639808,3652640575,FR
3652640576,3652640703,GB
-3652640704,3652641727,FR
+3652640704,3652640711,FR
+3652640712,3652640719,ES
+3652640720,3652640767,FR
+3652640768,3652640831,ES
+3652640832,3652641727,FR
3652641728,3652641791,GB
-3652641792,3652642367,FR
+3652641792,3652642111,FR
+3652642112,3652642175,IE
+3652642176,3652642239,FR
+3652642240,3652642303,DE
+3652642304,3652642367,FR
3652642368,3652642431,GB
-3652642432,3652643375,FR
+3652642432,3652642719,FR
+3652642720,3652642751,PT
+3652642752,3652642975,FR
+3652642976,3652643007,IE
+3652643008,3652643343,FR
+3652643344,3652643359,FI
+3652643360,3652643375,FR
3652643376,3652643379,ES
-3652643380,3652648959,FR
+3652643380,3652643519,FR
+3652643520,3652643583,NL
+3652643584,3652643647,ES
+3652643648,3652644031,FR
+3652644032,3652644063,BE
+3652644064,3652644199,FR
+3652644200,3652644215,ES
+3652644216,3652644223,FR
+3652644224,3652644239,NL
+3652644240,3652644247,FR
+3652644248,3652644255,ES
+3652644256,3652644351,FR
+3652644352,3652644383,FI
+3652644384,3652644415,PL
+3652644416,3652644575,FR
+3652644576,3652644607,DE
+3652644608,3652645119,FR
+3652645120,3652645503,GB
+3652645504,3652645663,FR
+3652645664,3652645695,FI
+3652645696,3652645887,FR
+3652645888,3652646015,NL
+3652646016,3652646079,ES
+3652646080,3652646111,FR
+3652646112,3652646143,CZ
+3652646144,3652646271,NL
+3652646272,3652646655,FR
+3652646656,3652646719,ES
+3652646720,3652646799,FR
+3652646800,3652646815,PL
+3652646816,3652646847,FR
+3652646848,3652646863,FI
+3652646864,3652647231,FR
+3652647232,3652647239,LT
+3652647240,3652648847,FR
+3652648848,3652648863,LT
+3652648864,3652648895,FI
+3652648896,3652648959,DE
3652648960,3652714495,IE
3652714496,3653238783,DE
3653238784,3653369855,CH
@@ -143189,7 +169960,13 @@
3653406558,3653406558,GN
3653406559,3653406617,GB
3653406618,3653406618,GN
-3653406619,3653410815,GB
+3653406619,3653407103,GB
+3653407104,3653407111,UG
+3653407112,3653408071,GB
+3653408072,3653408079,NG
+3653408080,3653408231,GB
+3653408232,3653408239,KE
+3653408240,3653410815,GB
3653410816,3653414911,CZ
3653414912,3653419007,IT
3653419008,3653423103,IL
@@ -143266,11 +170043,24 @@
3653758976,3653763071,RU
3653763072,3654025215,IT
3654025216,3654287359,GB
-3654287360,3654608404,SE
+3654287360,3654350847,SE
+3654350848,3654350975,DK
+3654350976,3654606975,SE
+3654607104,3654608404,SE
3654608405,3654608405,NO
-3654608406,3654614047,SE
+3654608406,3654608895,SE
+3654608896,3654609919,NO
+3654609920,3654610431,SE
+3654610432,3654610943,FR
+3654610944,3654610951,SE
+3654610952,3654610959,DE
+3654610960,3654612271,SE
+3654612272,3654612287,AT
+3654612288,3654614047,SE
3654614048,3654614063,GB
-3654614064,3654811647,SE
+3654614064,3654614079,SE
+3654614080,3654614271,FI
+3654614272,3654811647,SE
3654811648,3654942719,ES
3654942720,3655073791,IR
3655073792,3655335935,IT
@@ -143445,8 +170235,7 @@
3701380096,3701381119,KH
3701381120,3701390335,IN
3701390336,3701391359,AU
-3701391360,3701392383,IN
-3701392384,3701393407,HK
+3701392384,3701393407,MD
3701393408,3701394431,MY
3701394432,3701395455,BD
3701395456,3701396479,MY
@@ -143503,7 +170292,7 @@
3707207680,3707208703,BD
3707208704,3707209727,NZ
3707209728,3707211775,CN
-3707211776,3707215871,NP
+3707211776,3707215871,NC
3707215872,3707217919,BD
3707217920,3707219967,ID
3707219968,3707222015,AU
@@ -143691,7 +170480,6 @@
3749183488,3749838847,CN
3749838848,3749839871,SG
3749839872,3749840895,IN
-3749840896,3749841919,CN
3749841920,3749842943,AU
3749842944,3749843967,PH
3749843968,3749844991,ID
diff --git a/src/config/geoip6 b/src/config/geoip6
index f523d7bd02..82df893ae6 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,8 +1,9 @@
-# Last updated based on January 5 2018 Maxmind GeoLite2 Country
+# Last updated based on June 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
2001:218::,2001:218:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -19,9 +20,7 @@
2001:270::,2001:270:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:278::,2001:278:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:280::,2001:280:ffff:ffff:ffff:ffff:ffff:ffff,KR
-2001:288::,2001:288:8275:ffff:ffff:ffff:ffff:ffff,TW
-2001:288:8276::,2001:288:8276:7fff:ffff:ffff:ffff:ffff,US
-2001:288:8276:8000::,2001:288:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2001:288::,2001:288:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:290::,2001:290:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:298::,2001:298:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:2a0::,2001:2a0:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -51,9 +50,7 @@
2001:370::,2001:370:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:378::,2001:378:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:380::,2001:380:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:388::,2001:388:efff:ffff:ffff:ffff:ffff:ffff,AU
-2001:388:f000::,2001:388:f000:7fff:ffff:ffff:ffff:ffff,ID
-2001:388:f000:8000::,2001:388:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:388::,2001:388:ffff:ffff:ffff:ffff:ffff:ffff,AU
2001:390::,2001:390:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:398::,2001:398:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:3a0::,2001:3a0:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -75,47 +72,12 @@
2001:420:4480::,2001:420:4487:ffff:ffff:ffff:ffff:ffff,IL
2001:420:4488::,2001:420:4fff:ffff:ffff:ffff:ffff:ffff,NL
2001:420:5000::,2001:420:51ff:ffff:ffff:ffff:ffff:ffff,AU
-2001:420:5200::,2001:420:5240:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5241::,2001:420:5241:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5241:8000::,2001:420:5243:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5244::,2001:420:5244:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5244:8000::,2001:420:5245:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5246::,2001:420:5246:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5246:8000::,2001:420:524a:ffff:ffff:ffff:ffff:ffff,US
-2001:420:524b::,2001:420:524b:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:524b:8000::,2001:420:524b:ffff:ffff:ffff:ffff:ffff,US
-2001:420:524c::,2001:420:524c:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:524c:8000::,2001:420:524d:ffff:ffff:ffff:ffff:ffff,US
-2001:420:524e::,2001:420:524e:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:524e:8000::,2001:420:524e:ffff:ffff:ffff:ffff:ffff,US
-2001:420:524f::,2001:420:524f:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:524f:8000::,2001:420:543f:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5440::,2001:420:5440:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5440:8000::,2001:420:5440:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5441::,2001:420:5441:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5441:8000::,2001:420:5441:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5442::,2001:420:5442:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5442:8000::,2001:420:5442:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5443::,2001:420:5443:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5443:8000::,2001:420:5443:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5444::,2001:420:5444:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5444:8000::,2001:420:5445:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5446::,2001:420:5446:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5446:8000::,2001:420:5446:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5447::,2001:420:5447:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5447:8000::,2001:420:5502:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5503::,2001:420:5503:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5503:8000::,2001:420:5503:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5504::,2001:420:5504:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5504:8000::,2001:420:5504:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5505::,2001:420:5505:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5505:8000::,2001:420:5505:ffff:ffff:ffff:ffff:ffff,US
-2001:420:5506::,2001:420:5506:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5506:8000::,2001:420:550b:ffff:ffff:ffff:ffff:ffff,US
-2001:420:550c::,2001:420:550c:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:550c:8000::,2001:420:550d:ffff:ffff:ffff:ffff:ffff,US
-2001:420:550e::,2001:420:550e:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:550e:8000::,2001:420:57ff:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5200::,2001:420:527f:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:5280::,2001:420:53ff:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5400::,2001:420:547f:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:5480::,2001:420:54ff:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5500::,2001:420:557f:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:5580::,2001:420:57ff:ffff:ffff:ffff:ffff:ffff,US
2001:420:5800::,2001:420:5bff:ffff:ffff:ffff:ffff:ffff,HK
2001:420:5c00::,2001:420:5dff:ffff:ffff:ffff:ffff:ffff,SG
2001:420:5e00::,2001:420:5fff:ffff:ffff:ffff:ffff:ffff,JP
@@ -126,8 +88,8 @@
2001:420:c0d4::,2001:420:c0d7:ffff:ffff:ffff:ffff:ffff,SG
2001:420:c0d8::,2001:420:c0db:ffff:ffff:ffff:ffff:ffff,HK
2001:420:c0dc::,2001:420:c0df:ffff:ffff:ffff:ffff:ffff,JP
-2001:420:c0e0::,2001:420:c0e0:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:c0e0:8000::,2001:420:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:420:c0e0::,2001:420:c0e3:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:c0e4::,2001:420:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:428::,2001:428:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:430::,2001:430:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:438::,2001:438:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -144,33 +106,33 @@
2001:468::,2001:468:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:470::,2001:470:0:284::,US
2001:470:0:284::1,2001:470:0:284::1,AT
-2001:470:0:284::2,2001:470:4:7ff:ffff:ffff:ffff:ffff,US
-2001:470:4:800::,2001:470:4:fff:ffff:ffff:ffff:ffff,NL
-2001:470:4:1000::,2001:470:5:317:ffff:ffff:ffff:ffff,US
+2001:470:0:284::2,2001:470:5:317:ffff:ffff:ffff:ffff,US
2001:470:5:318::,2001:470:5:318:ffff:ffff:ffff:ffff,AR
-2001:470:5:319::,2001:470:5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6::,2001:470:6:7fff:ffff:ffff:ffff:ffff,MX
-2001:470:6:8000::,2001:470:d:11b:ffff:ffff:ffff:ffff,US
+2001:470:5:319::,2001:470:b:bff:ffff:ffff:ffff:ffff,US
+2001:470:b:c00::,2001:470:b:c3f:ffff:ffff:ffff:ffff,CN
+2001:470:b:c40::,2001:470:b:c40:ffff:ffff:ffff:ffff,US
+2001:470:b:c41::,2001:470:b:cff:ffff:ffff:ffff:ffff,CN
+2001:470:b:d00::,2001:470:b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:c::,2001:470:c:5ce::1,CN
+2001:470:c:5ce::2,2001:470:c:5ce::2,US
+2001:470:c:5ce::3,2001:470:d:11b:ffff:ffff:ffff:ffff,CN
2001:470:d:11c::,2001:470:d:11c:ffff:ffff:ffff:ffff,NZ
-2001:470:d:11d::,2001:470:17:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18::,2001:470:18:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:18:8000::,2001:470:18:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19::,2001:470:19:e7f:ffff:ffff:ffff:ffff,CN
+2001:470:d:11d::,2001:470:f:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:10::,2001:470:18:7ff:ffff:ffff:ffff:ffff,US
+2001:470:18:800::,2001:470:18:fff:ffff:ffff:ffff:ffff,CN
+2001:470:18:1000::,2001:470:18:ffff:ffff:ffff:ffff:ffff,US
+2001:470:19::,2001:470:19:9ff:ffff:ffff:ffff:ffff,CN
+2001:470:19:a00::,2001:470:19:e7f:ffff:ffff:ffff:ffff,US
2001:470:19:e80::,2001:470:19:e80:ffff:ffff:ffff:ffff,HK
-2001:470:19:e81::,2001:470:19:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:19:8000::,2001:470:1c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1d::,2001:470:1d:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:1d:8000::,2001:470:23:1ff:ffff:ffff:ffff:ffff,US
-2001:470:23:200::,2001:470:23:3ff:ffff:ffff:ffff:ffff,CN
-2001:470:23:400::,2001:470:23:429:ffff:ffff:ffff:ffff,US
+2001:470:19:e81::,2001:470:19:fff:ffff:ffff:ffff:ffff,US
+2001:470:19:1000::,2001:470:19:1fff:ffff:ffff:ffff:ffff,CN
+2001:470:19:2000::,2001:470:1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1c::,2001:470:1f:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:20::,2001:470:23:429:ffff:ffff:ffff:ffff,US
2001:470:23:42a::,2001:470:23:42a:ffff:ffff:ffff:ffff,RU
-2001:470:23:42b::,2001:470:23:7ff:ffff:ffff:ffff:ffff,US
-2001:470:23:800::,2001:470:23:fff:ffff:ffff:ffff:ffff,JP
-2001:470:23:1000::,2001:470:23:ffff:ffff:ffff:ffff:ffff,US
-2001:470:24::,2001:470:24:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:24:8000::,2001:470:24:ffff:ffff:ffff:ffff:ffff,US
-2001:470:25::,2001:470:25:3ff:ffff:ffff:ffff:ffff,RU
-2001:470:25:400::,2001:470:26:65b:ffff:ffff:ffff:ffff,US
+2001:470:23:42b::,2001:470:24:10ff:ffff:ffff:ffff:ffff,US
+2001:470:24:1100::,2001:470:24:11ff:ffff:ffff:ffff:ffff,CN
+2001:470:24:1200::,2001:470:26:65b:ffff:ffff:ffff:ffff,US
2001:470:26:65c::,2001:470:26:65c:ffff:ffff:ffff:ffff,CH
2001:470:26:65d::,2001:470:26:825:ffff:ffff:ffff:ffff,US
2001:470:26:826::,2001:470:26:826:ffff:ffff:ffff:ffff,CH
@@ -178,821 +140,217 @@
2001:470:26:b6d::,2001:470:26:b6d:ffff:ffff:ffff:ffff,AT
2001:470:26:b6e::,2001:470:27:1a5:ffff:ffff:ffff:ffff,US
2001:470:27:1a6::,2001:470:27:1a6:ffff:ffff:ffff:ffff,RU
-2001:470:27:1a7::,2001:470:28:35:ffff:ffff:ffff:ffff,US
-2001:470:28:36::,2001:470:28:36:ffff:ffff:ffff:ffff,SE
-2001:470:28:37::,2001:470:28:1a5:ffff:ffff:ffff:ffff,US
+2001:470:27:1a7::,2001:470:27:ffff:ffff:ffff:ffff:ffff,US
+2001:470:28::,2001:470:28:1a5:ffff:ffff:ffff:ffff,SE
2001:470:28:1a6::,2001:470:28:1a6:ffff:ffff:ffff:ffff,RU
-2001:470:28:1a7::,2001:470:28:2df:ffff:ffff:ffff:ffff,US
-2001:470:28:2e0::,2001:470:28:2e0:ffff:ffff:ffff:ffff,SE
-2001:470:28:2e1::,2001:470:28:36d:ffff:ffff:ffff:ffff,US
+2001:470:28:1a7::,2001:470:28:36d:ffff:ffff:ffff:ffff,SE
2001:470:28:36e::,2001:470:28:36e:ffff:ffff:ffff:ffff,DK
-2001:470:28:36f::,2001:470:28:3d4:ffff:ffff:ffff:ffff,US
-2001:470:28:3d5::,2001:470:28:3d5:ffff:ffff:ffff:ffff,SE
-2001:470:28:3d6::,2001:470:28:6dd:ffff:ffff:ffff:ffff,US
-2001:470:28:6de::,2001:470:28:6de:ffff:ffff:ffff:ffff,SE
-2001:470:28:6df::,2001:470:28:816:ffff:ffff:ffff:ffff,US
+2001:470:28:36f::,2001:470:28:7ff:ffff:ffff:ffff:ffff,SE
+2001:470:28:800::,2001:470:28:816:ffff:ffff:ffff:ffff,US
2001:470:28:817::,2001:470:28:817:ffff:ffff:ffff:ffff,DK
-2001:470:28:818::,2001:470:28:906:ffff:ffff:ffff:ffff,US
-2001:470:28:907::,2001:470:28:907:ffff:ffff:ffff:ffff,RU
-2001:470:28:908::,2001:470:28:9c1:ffff:ffff:ffff:ffff,US
+2001:470:28:818::,2001:470:28:8ff:ffff:ffff:ffff:ffff,US
+2001:470:28:900::,2001:470:28:9c1:ffff:ffff:ffff:ffff,RU
2001:470:28:9c2::,2001:470:28:9c2:ffff:ffff:ffff:ffff,SE
-2001:470:28:9c3::,2001:470:28:a2b:ffff:ffff:ffff:ffff,US
+2001:470:28:9c3::,2001:470:28:9ff:ffff:ffff:ffff:ffff,RU
+2001:470:28:a00::,2001:470:28:a2b:ffff:ffff:ffff:ffff,US
2001:470:28:a2c::,2001:470:28:a2c:ffff:ffff:ffff:ffff,SE
-2001:470:28:a2d::,2001:470:34:ffff:ffff:ffff:ffff:ffff,US
-2001:470:35::,2001:470:35:7fff:ffff:ffff:ffff:ffff,TH
-2001:470:35:8000::,2001:470:65:ffff:ffff:ffff:ffff:ffff,US
-2001:470:66::,2001:470:66:7ff:ffff:ffff:ffff:ffff,CN
-2001:470:66:800::,2001:470:66:bff:ffff:ffff:ffff:ffff,US
-2001:470:66:c00::,2001:470:66:fff:ffff:ffff:ffff:ffff,CN
-2001:470:66:1000::,2001:470:6d:6b1:ffff:ffff:ffff:ffff,US
+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: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
+2001:470:60::,2001:470:66:ffff:ffff:ffff:ffff:ffff,US
+2001:470:67::,2001:470:67:cff:ffff:ffff:ffff:ffff,CN
+2001:470:67:d00::,2001:470:6c:39d:ffff:ffff:ffff:ffff,US
+2001:470:6c:39e::,2001:470:6c:39e:ffff:ffff:ffff:ffff,DK
+2001:470:6c:39f::,2001:470:6d:ff:ffff:ffff:ffff:ffff,US
+2001:470:6d:100::,2001:470:6d:1ff:ffff:ffff:ffff:ffff,RU
+2001:470:6d:200::,2001:470:6d:39d:ffff:ffff:ffff:ffff,US
+2001:470:6d:39e::,2001:470:6d:39e:ffff:ffff:ffff:ffff,DK
+2001:470:6d:39f::,2001:470:6d:6b1:ffff:ffff:ffff:ffff,US
2001:470:6d:6b2::,2001:470:6d:6b2:ffff:ffff:ffff:ffff,ES
2001:470:6d:6b3::,2001:470:6d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6e::,2001:470:6e:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:6e:8000::,2001:470:6f:49e:ffff:ffff:ffff:ffff,US
+2001:470:6e::,2001:470:6f:49e:ffff:ffff:ffff:ffff,CZ
2001:470:6f:49f::,2001:470:6f:49f:ffff:ffff:ffff:ffff,SK
-2001:470:6f:4a0::,2001:470:70:dff:ffff:ffff:ffff:ffff,US
-2001:470:70:e00::,2001:470:70:fff:ffff:ffff:ffff:ffff,UA
-2001:470:70:1000::,2001:470:70:ffff:ffff:ffff:ffff:ffff,US
-2001:470:71::,2001:470:71:5ff:ffff:ffff:ffff:ffff,RU
+2001:470:6f:4a0::,2001:470:6f:9ff:ffff:ffff:ffff:ffff,CZ
+2001:470:6f:a00::,2001:470:6f:bff:ffff:ffff:ffff:ffff,US
+2001:470:6f:c00::,2001:470:6f:fff:ffff:ffff:ffff:ffff,CZ
+2001:470:6f:1000::,2001:470:6f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:70::,2001:470:70:ffff:ffff:ffff:ffff:ffff,UA
+2001:470:71::,2001:470:71:5ff:ffff:ffff:ffff:ffff,US
2001:470:71:600::,2001:470:71:600:ffff:ffff:ffff:ffff,PL
-2001:470:71:601::,2001:470:71:60b:ffff:ffff:ffff:ffff,RU
+2001:470:71:601::,2001:470:71:60b:ffff:ffff:ffff:ffff,US
2001:470:71:60c::,2001:470:71:60c:ffff:ffff:ffff:ffff,PL
-2001:470:71:60d::,2001:470:71:f43:ffff:ffff:ffff:ffff,RU
-2001:470:71:f44::,2001:470:71:f44:ffff:ffff:ffff:ffff,UA
-2001:470:71:f45::,2001:470:71:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:71:8000::,2001:470:184b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:184c::,2001:470:184c:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:184c:8000::,2001:470:1883:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1884::,2001:470:1884:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1884:8000::,2001:470:18a4:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18a5::,2001:470:18a5:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:18a5:8000::,2001:470:18aa:ffff:ffff:ffff:ffff:ffff,US
+2001:470:71:60d::,2001:470:71:9ff:ffff:ffff:ffff:ffff,US
+2001:470:71:a00::,2001:470:71:bff:ffff:ffff:ffff:ffff,RU
+2001:470:71:c00::,2001:470:71:dff:ffff:ffff:ffff:ffff,PL
+2001:470:71:e00::,2001:470:71:fff:ffff:ffff:ffff:ffff,UA
+2001:470:71:1000::,2001:470:18aa:ffff:ffff:ffff:ffff:ffff,US
2001:470:18ab::,2001:470:18ab:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:18ac::,2001:470:18b6:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18b7::,2001:470:18b7:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:18b7:8000::,2001:470:18c2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18c3::,2001:470:18c3:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:18c3:8000::,2001:470:18cc:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18cd::,2001:470:18cd:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:18cd:8000::,2001:470:18d6:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18d7::,2001:470:18d7:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:18d7:8000::,2001:470:18d8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18d9::,2001:470:18d9:7fff:ffff:ffff:ffff:ffff,ZA
-2001:470:18d9:8000::,2001:470:191f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1920::,2001:470:1920:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1920:8000::,2001:470:1920:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1921::,2001:470:1921:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1921:8000::,2001:470:1962:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1963::,2001:470:1963:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1963:8000::,2001:470:1973:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1974::,2001:470:1974:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1974:8000::,2001:470:1985:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1986::,2001:470:1986:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1986:8000::,2001:470:19a5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19a6::,2001:470:19a6:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:19a6:8000::,2001:470:19a8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19a9::,2001:470:19a9:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:19a9:8000::,2001:470:19cc:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19cd::,2001:470:19cd:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:19cd:8000::,2001:470:19d9:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19da::,2001:470:19da:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:19da:8000::,2001:470:19de:ffff:ffff:ffff:ffff:ffff,US
-2001:470:19df::,2001:470:19df:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:19df:8000::,2001:470:19ff:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1a00::,2001:470:1a00:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1a00:8000::,2001:470:1a10:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1a11::,2001:470:1a11:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1a11:8000::,2001:470:1a3d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1a3e::,2001:470:1a3e:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1a3e:8000::,2001:470:1ad8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1ad9::,2001:470:1ad9:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1ad9:8000::,2001:470:1b1e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1b1f::,2001:470:1b1f:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1b1f:8000::,2001:470:1b2d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:18ac::,2001:470:19e8:ffff:ffff:ffff:ffff:ffff,US
+2001:470:19e9::,2001:470:19e9:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:19ea::,2001:470:1b2d:ffff:ffff:ffff:ffff:ffff,US
2001:470:1b2e::,2001:470:1b2e:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:1b2f::,2001:470:1b4a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1b4b::,2001:470:1b4b:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1b4b:8000::,2001:470:1b62:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1b63::,2001:470:1b63:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1b63:8000::,2001:470:1bc7:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1bc8::,2001:470:1bc8:7fff:ffff:ffff:ffff:ffff,PT
-2001:470:1bc8:8000::,2001:470:1c09:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1c0a::,2001:470:1c0a:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1c0a:8000::,2001:470:1d20:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1d21::,2001:470:1d21:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1d21:8000::,2001:470:1d32:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1d33::,2001:470:1d33:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:1d33:8000::,2001:470:1f00:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f01::,2001:470:1f01:7fff:ffff:ffff:ffff:ffff,NZ
-2001:470:1f01:8000::,2001:470:1f07:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f08::,2001:470:1f08:fff:ffff:ffff:ffff:ffff,GB
-2001:470:1f08:1000::,2001:470:1f08:1219:ffff:ffff:ffff:ffff,US
-2001:470:1f08:121a::,2001:470:1f08:121a:ffff:ffff:ffff:ffff,GB
-2001:470:1f08:121b::,2001:470:1f08:1367:ffff:ffff:ffff:ffff,US
-2001:470:1f08:1368::,2001:470:1f08:1368:ffff:ffff:ffff:ffff,GB
-2001:470:1f08:1369::,2001:470:1f09:114:ffff:ffff:ffff:ffff,US
-2001:470:1f09:115::,2001:470:1f09:115:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:116::,2001:470:1f09:2b5:ffff:ffff:ffff:ffff,US
-2001:470:1f09:2b6::,2001:470:1f09:2b6:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:2b7::,2001:470:1f09:414:ffff:ffff:ffff:ffff,US
+2001:470:1b2f::,2001:470:1f05:ff:ffff:ffff:ffff:ffff,US
+2001:470:1f05:100::,2001:470:1f05:1ff:ffff:ffff:ffff:ffff,CN
+2001:470:1f05:200::,2001:470:1f05:fff:ffff:ffff:ffff:ffff,US
+2001:470:1f05:1000::,2001:470:1f05:1fff:ffff:ffff:ffff:ffff,CN
+2001:470:1f05:2000::,2001:470:1f07:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f08::,2001:470:1f09:3ff:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:400::,2001:470:1f09:414:ffff:ffff:ffff:ffff,ES
2001:470:1f09:415::,2001:470:1f09:415:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:416::,2001:470:1f09:1219:ffff:ffff:ffff:ffff,US
-2001:470:1f09:121a::,2001:470:1f09:121a:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:121b::,2001:470:1f09:1367:ffff:ffff:ffff:ffff,US
-2001:470:1f09:1368::,2001:470:1f09:1368:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:1369::,2001:470:1f0a:1ff:ffff:ffff:ffff:ffff,US
-2001:470:1f0a:200::,2001:470:1f0a:3ff:ffff:ffff:ffff:ffff,DE
-2001:470:1f0a:400::,2001:470:1f0b:30e:ffff:ffff:ffff:ffff,US
+2001:470:1f09:416::,2001:470:1f09:7ff:ffff:ffff:ffff:ffff,ES
+2001:470:1f09:800::,2001:470:1f09:1fff:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:2000::,2001:470:1f0a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f0b::,2001:470:1f0b:30e:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:30f::,2001:470:1f0b:30f:ffff:ffff:ffff:ffff,DE
-2001:470:1f0b:310::,2001:470:1f0b:4b0:ffff:ffff:ffff:ffff,US
-2001:470:1f0b:4b1::,2001:470:1f0b:4b1:ffff:ffff:ffff:ffff,UA
-2001:470:1f0b:4b2::,2001:470:1f0b:59f:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:310::,2001:470:1f0b:59f:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:5a0::,2001:470:1f0b:5a0:ffff:ffff:ffff:ffff,AT
-2001:470:1f0b:5a1::,2001:470:1f0b:779:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:5a1::,2001:470:1f0b:779:ffff:ffff:ffff:ffff,UA
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,US
+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,US
+2001:470:1f0b:786::,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:118a:ffff:ffff:ffff:ffff,US
+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
2001:470:1f0b:118b::,2001:470:1f0b:118b:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:118c::,2001:470:1f0b:11d1:ffff:ffff:ffff:ffff,US
2001:470:1f0b:11d2::,2001:470:1f0b:11d2:ffff:ffff:ffff:ffff,DE
-2001:470:1f0b:11d3::,2001:470:1f15:b3:ffff:ffff:ffff:ffff,US
-2001:470:1f15:b4::,2001:470:1f15:b4:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:b5::,2001:470:1f15:16b:ffff:ffff:ffff:ffff,US
-2001:470:1f15:16c::,2001:470:1f15:16c:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:16d::,2001:470:1f15:20f:ffff:ffff:ffff:ffff,US
-2001:470:1f15:210::,2001:470:1f15:210:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:211::,2001:470:1f15:44f:ffff:ffff:ffff:ffff,US
-2001:470:1f15:450::,2001:470:1f15:450:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:451::,2001:470:1f15:500:ffff:ffff:ffff:ffff,US
-2001:470:1f15:501::,2001:470:1f15:501:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:502::,2001:470:1f15:582:ffff:ffff:ffff:ffff,US
-2001:470:1f15:583::,2001:470:1f15:583:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:584::,2001:470:1f15:5ab:ffff:ffff:ffff:ffff,US
-2001:470:1f15:5ac::,2001:470:1f15:5ac:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:5ad::,2001:470:1f15:9c5:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:11d3::,2001:470:1f0b:11ff:ffff:ffff:ffff:ffff,US
+2001:470:1f0b:1200::,2001:470:1f0b:13ff:ffff:ffff:ffff:ffff,UA
+2001:470:1f0b:1400::,2001:470:1f14:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f15::,2001:470:1f15:9c5:ffff:ffff:ffff:ffff,NL
2001:470:1f15:9c6::,2001:470:1f15:9c6:ffff:ffff:ffff:ffff,AT
-2001:470:1f15:9c7::,2001:470:1f15:a5e:ffff:ffff:ffff:ffff,US
-2001:470:1f15:a5f::,2001:470:1f15:a60:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:a61::,2001:470:1f15:b25:ffff:ffff:ffff:ffff,US
-2001:470:1f15:b26::,2001:470:1f15:b26:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:b27::,2001:470:1f15:10db:ffff:ffff:ffff:ffff,US
-2001:470:1f15:10dc::,2001:470:1f15:10dc:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:10dd::,2001:470:1f15:110b:ffff:ffff:ffff:ffff,US
+2001:470:1f15:9c7::,2001:470:1f15:110b:ffff:ffff:ffff:ffff,NL
2001:470:1f15:110c::,2001:470:1f15:110c:ffff:ffff:ffff:ffff,BE
-2001:470:1f15:110d::,2001:470:1f16:1ff:ffff:ffff:ffff:ffff,US
-2001:470:1f16:200::,2001:470:1f16:2ff:ffff:ffff:ffff:ffff,CA
-2001:470:1f16:300::,2001:470:1f16:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f17::,2001:470:1f17:ff:ffff:ffff:ffff:ffff,MX
-2001:470:1f17:100::,2001:470:1f1d:195:ffff:ffff:ffff:ffff,US
-2001:470:1f1d:196::,2001:470:1f1d:196:ffff:ffff:ffff:ffff,GB
-2001:470:1f1d:197::,2001:470:1f1d:929:ffff:ffff:ffff:ffff,US
+2001:470:1f15:110d::,2001:470:1f15:ffff:ffff:ffff:ffff:ffff,NL
+2001:470:1f16::,2001:470:1f1a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f1b::,2001:470:1f1b:3ff:ffff:ffff:ffff:ffff,HU
+2001:470:1f1b:400::,2001:470:1f1b:4ff:ffff:ffff:ffff:ffff,UA
+2001:470:1f1b:500::,2001:470:1f1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f1c::,2001:470:1f1d:1ff:ffff:ffff:ffff:ffff,GB
+2001:470:1f1d:200::,2001:470:1f1d:2ff:ffff:ffff:ffff:ffff,US
+2001:470:1f1d:300::,2001:470:1f1d:3ff:ffff:ffff:ffff:ffff,RU
+2001:470:1f1d:400::,2001:470:1f1d:7ff:ffff:ffff:ffff:ffff,GB
+2001:470:1f1d:800::,2001:470:1f1d:929:ffff:ffff:ffff:ffff,US
2001:470:1f1d:92a::,2001:470:1f1d:92a:ffff:ffff:ffff:ffff,GB
2001:470:1f1d:92b::,2001:470:1f1d:a59:ffff:ffff:ffff:ffff,US
2001:470:1f1d:a5a::,2001:470:1f1d:a5a:ffff:ffff:ffff:ffff,GB
-2001:470:1f1d:a5b::,2001:470:1f1e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f1f::,2001:470:1f1f:ff:ffff:ffff:ffff:ffff,AU
-2001:470:1f1f:100::,2001:470:1f21:37:ffff:ffff:ffff:ffff,US
+2001:470:1f1d:a5b::,2001:470:1f1f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f20::,2001:470:1f21:37:ffff:ffff:ffff:ffff,ZA
2001:470:1f21:38::,2001:470:1f21:38:ffff:ffff:ffff:ffff,PT
-2001:470:1f21:39::,2001:470:1f22:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f23::,2001:470:1f23:7fff:ffff:ffff:ffff:ffff,ZA
-2001:470:1f23:8000::,2001:470:2000:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2001::,2001:470:2001:7fff:ffff:ffff:ffff:ffff,UA
-2001:470:2001:8000::,2001:470:206d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:206e::,2001:470:206e:7fff:ffff:ffff:ffff:ffff,RO
-2001:470:206e:8000::,2001:470:207f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2080::,2001:470:2080:7fff:ffff:ffff:ffff:ffff,UA
-2001:470:2080:8000::,2001:470:20c1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:20c2::,2001:470:20c2:7fff:ffff:ffff:ffff:ffff,HU
-2001:470:20c2:8000::,2001:470:20f1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:20f2::,2001:470:20f2:7fff:ffff:ffff:ffff:ffff,HU
-2001:470:20f2:8000::,2001:470:2102:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2103::,2001:470:2103:7fff:ffff:ffff:ffff:ffff,BG
-2001:470:2103:8000::,2001:470:2104:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2105::,2001:470:2105:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:2105:8000::,2001:470:2128:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2129::,2001:470:2129:7fff:ffff:ffff:ffff:ffff,HU
-2001:470:2129:8000::,2001:470:2166:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2167::,2001:470:2167:7fff:ffff:ffff:ffff:ffff,TR
-2001:470:2167:8000::,2001:470:216f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2170::,2001:470:2170:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:2170:8000::,2001:470:2184:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2185::,2001:470:2185:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:2185:8000::,2001:470:21fb:ffff:ffff:ffff:ffff:ffff,US
-2001:470:21fc::,2001:470:21fc:7fff:ffff:ffff:ffff:ffff,UA
-2001:470:21fc:8000::,2001:470:2218:ffff:ffff:ffff:ffff:ffff,US
-2001:470:2219::,2001:470:2219:7fff:ffff:ffff:ffff:ffff,HU
-2001:470:2219:8000::,2001:470:28d8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:28d9::,2001:470:28d9:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:28d9:8000::,2001:470:3049:ffff:ffff:ffff:ffff:ffff,US
-2001:470:304a::,2001:470:304a:7fff:ffff:ffff:ffff:ffff,MX
-2001:470:304a:8000::,2001:470:30b8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:30b9::,2001:470:30b9:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:30b9:8000::,2001:470:30ea:ffff:ffff:ffff:ffff:ffff,US
-2001:470:30eb::,2001:470:30eb:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:30eb:8000::,2001:470:3918:ffff:ffff:ffff:ffff:ffff,US
-2001:470:3919::,2001:470:3919:7fff:ffff:ffff:ffff:ffff,AU
-2001:470:3919:8000::,2001:470:4a08:ffff:ffff:ffff:ffff:ffff,US
-2001:470:4a09::,2001:470:4a09:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:4a09:8000::,2001:470:4a60:ffff:ffff:ffff:ffff:ffff,US
-2001:470:4a61::,2001:470:4a61:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:4a61:8000::,2001:470:4a63:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f21:39::,2001:470:1f3f:ffff:ffff:ffff:ffff:ffff,ZA
+2001:470:1f40::,2001:470:207f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:2080::,2001:470:20ff:ffff:ffff:ffff:ffff:ffff,HU
+2001:470:2100::,2001:470:21bf:ffff:ffff:ffff:ffff:ffff,US
+2001:470:21c0::,2001:470:21ff:ffff:ffff:ffff:ffff:ffff,UA
+2001:470:2200::,2001:470:227f:ffff:ffff:ffff:ffff:ffff,HU
+2001:470:2280::,2001:470:49ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:4a00::,2001:470:4a63:ffff:ffff:ffff:ffff:ffff,CN
2001:470:4a64::,2001:470:4a64:ffff:ffff:ffff:ffff:ffff,NZ
-2001:470:4a65::,2001:470:4a77:ffff:ffff:ffff:ffff:ffff,US
-2001:470:4a78::,2001:470:4a78:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:4a78:8000::,2001:470:4baa:7fff:ffff:ffff:ffff:ffff,US
-2001:470:4baa:8000::,2001:470:4baa:ffff:ffff:ffff:ffff:ffff,CN
-2001:470:4bab::,2001:470:4bbb:ffff:ffff:ffff:ffff:ffff,US
-2001:470:4bbc::,2001:470:4bbc:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:4bbc:8000::,2001:470:5065:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5066::,2001:470:5066:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:5066:8000::,2001:470:5090:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5091::,2001:470:5091:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:5091:8000::,2001:470:5106:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5107::,2001:470:5107:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:5107:8000::,2001:470:5167:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5168::,2001:470:5168:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:5168:8000::,2001:470:519d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:519e::,2001:470:519e:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:519e:8000::,2001:470:51d8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:51d9::,2001:470:51d9:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:51d9:8000::,2001:470:52ba:ffff:ffff:ffff:ffff:ffff,US
-2001:470:52bb::,2001:470:52bb:7fff:ffff:ffff:ffff:ffff,UA
-2001:470:52bb:8000::,2001:470:5329:ffff:ffff:ffff:ffff:ffff,US
-2001:470:532a::,2001:470:532a:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:532a:8000::,2001:470:581f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5820::,2001:470:5820:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:5821::,2001:470:591d:7fff:ffff:ffff:ffff:ffff,US
-2001:470:591d:8000::,2001:470:591d:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:591e::,2001:470:59c0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:59c1::,2001:470:59c1:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:59c1:8000::,2001:470:59d7:ffff:ffff:ffff:ffff:ffff,US
-2001:470:59d8::,2001:470:59d8:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:59d8:8000::,2001:470:59ed:ffff:ffff:ffff:ffff:ffff,US
-2001:470:59ee::,2001:470:59ee:7fff:ffff:ffff:ffff:ffff,SK
-2001:470:59ee:8000::,2001:470:59ff:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5a00::,2001:470:5a00:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a00:8000::,2001:470:5a0d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5a0e::,2001:470:5a0e:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a0e:8000::,2001:470:5a2e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5a2f::,2001:470:5a2f:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a2f:8000::,2001:470:5a34:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5a35::,2001:470:5a35:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a36::,2001:470:5a39:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5a3a::,2001:470:5a3a:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a3b::,2001:470:5a80:ffff:ffff:ffff:ffff:ffff,US
+2001:470:4a65::,2001:470:4a7f:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:4a80::,2001:470:4b7f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:4b80::,2001:470:4bff:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:4c00::,2001:470:53ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5400::,2001:470:547f:ffff:ffff:ffff:ffff:ffff,RU
+2001:470:5480::,2001:470:57ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5800::,2001:470:587f:ffff:ffff:ffff:ffff:ffff,CZ
+2001:470:5880::,2001:470:597f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5980::,2001:470:5a7f:ffff:ffff:ffff:ffff:ffff,CZ
+2001:470:5a80::,2001:470:5a80:ffff:ffff:ffff:ffff:ffff,US
2001:470:5a81::,2001:470:5a81:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:5a82::,2001:470:5aed:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5aee::,2001:470:5aee:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:5aee:8000::,2001:470:5b15:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5b16::,2001:470:5b16:7fff:ffff:ffff:ffff:ffff,SK
-2001:470:5b16:8000::,2001:470:5b55:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5b56::,2001:470:5b56:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5b56:8000::,2001:470:5b6c:7fff:ffff:ffff:ffff:ffff,US
-2001:470:5b6c:8000::,2001:470:5b6c:ffff:ffff:ffff:ffff:ffff,CZ
-2001:470:5b6d::,2001:470:5bb1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:5bb2::,2001:470:5bb2:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5bb2:8000::,2001:470:6004:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6005::,2001:470:6005:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6005:8000::,2001:470:605e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:605f::,2001:470:605f:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:605f:8000::,2001:470:613e:7fff:ffff:ffff:ffff:ffff,US
-2001:470:613e:8000::,2001:470:613e:ffff:ffff:ffff:ffff:ffff,PL
-2001:470:613f::,2001:470:613f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6140::,2001:470:6140:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6140:8000::,2001:470:6228:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6229::,2001:470:6229:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6229:8000::,2001:470:627f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6280::,2001:470:6280:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6280:8000::,2001:470:62d4:ffff:ffff:ffff:ffff:ffff,US
-2001:470:62d5::,2001:470:62d5:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:62d5:8000::,2001:470:6304:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5a82::,2001:470:6304:ffff:ffff:ffff:ffff:ffff,US
2001:470:6305::,2001:470:6305:ffff:ffff:ffff:ffff:ffff,UA
-2001:470:6306::,2001:470:6316:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6317::,2001:470:6317:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6317:8000::,2001:470:632d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:632e::,2001:470:632e:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:632e:8000::,2001:470:645e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:645f::,2001:470:645f:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:645f:8000::,2001:470:6857:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6858::,2001:470:6858:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6858:8000::,2001:470:686f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6870::,2001:470:6870:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6870:8000::,2001:470:6878:7fff:ffff:ffff:ffff:ffff,US
-2001:470:6878:8000::,2001:470:6878:ffff:ffff:ffff:ffff:ffff,AT
-2001:470:6879::,2001:470:68bd:ffff:ffff:ffff:ffff:ffff,US
-2001:470:68be::,2001:470:68be:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:68be:8000::,2001:470:68cb:ffff:ffff:ffff:ffff:ffff,US
-2001:470:68cc::,2001:470:68cc:7fff:ffff:ffff:ffff:ffff,IT
-2001:470:68cc:8000::,2001:470:691d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:691e::,2001:470:691e:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:691e:8000::,2001:470:6924:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6925::,2001:470:6925:7fff:ffff:ffff:ffff:ffff,ES
-2001:470:6925:8000::,2001:470:6953:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6954::,2001:470:6954:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6954:8000::,2001:470:6a28:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6a29::,2001:470:6a29:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6a29:8000::,2001:470:6a4d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6a4e::,2001:470:6a4e:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6a4e:8000::,2001:470:6a51:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6a52::,2001:470:6a52:7fff:ffff:ffff:ffff:ffff,IT
-2001:470:6a52:8000::,2001:470:6a62:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6a63::,2001:470:6a63:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6a63:8000::,2001:470:6ad1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6ad2::,2001:470:6ad2:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6ad2:8000::,2001:470:6b28:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6b29::,2001:470:6b29:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6b29:8000::,2001:470:6bb1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6bb2::,2001:470:6bb2:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6bb2:8000::,2001:470:6be2:7fff:ffff:ffff:ffff:ffff,US
-2001:470:6be2:8000::,2001:470:6be2:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:6be3::,2001:470:6c1b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c1c::,2001:470:6c1c:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c1c:8000::,2001:470:6c1f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c20::,2001:470:6c20:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c20:8000::,2001:470:6c2a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c2b::,2001:470:6c2b:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c2b:8000::,2001:470:6c3a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c3b::,2001:470:6c3b:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c3b:8000::,2001:470:6c3d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c3e::,2001:470:6c3e:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c3e:8000::,2001:470:6c8e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6c8f::,2001:470:6c8f:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6c8f:8000::,2001:470:6caa:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6cab::,2001:470:6cab:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6cab:8000::,2001:470:6cad:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6cae::,2001:470:6cae:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6cae:8000::,2001:470:6cda:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6cdb::,2001:470:6cdb:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6cdb:8000::,2001:470:6ce3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6ce4::,2001:470:6ce4:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:6ce4:8000::,2001:470:6d28:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d29::,2001:470:6d29:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:6d2a::,2001:470:6d70:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d71::,2001:470:6d71:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6d71:8000::,2001:470:6d74:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d75::,2001:470:6d75:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6d75:8000::,2001:470:6d75:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d76::,2001:470:6d76:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:6d77::,2001:470:6d7a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d7b::,2001:470:6d7b:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6d7b:8000::,2001:470:6e04:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6e05::,2001:470:6e05:7fff:ffff:ffff:ffff:ffff,GR
-2001:470:6e05:8000::,2001:470:6e14:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6e15::,2001:470:6e15:7fff:ffff:ffff:ffff:ffff,ZA
-2001:470:6e15:8000::,2001:470:6e1a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6e1b::,2001:470:6e1b:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6e1b:8000::,2001:470:6ef4:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6ef5::,2001:470:6ef5:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:6ef5:8000::,2001:470:6f5b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6306::,2001:470:687f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6880::,2001:470:68bf:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:68c0::,2001:470:6bff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6c00::,2001:470:6c7f:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:6c80::,2001:470:6cff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6d00::,2001:470:6d7f:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:6d80::,2001:470:6f5b:ffff:ffff:ffff:ffff:ffff,US
2001:470:6f5c::,2001:470:6f5c:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:6f5d::,2001:470:700c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:700d::,2001:470:700d:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:700d:8000::,2001:470:701e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:701f::,2001:470:701f:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:701f:8000::,2001:470:703f:7fff:ffff:ffff:ffff:ffff,US
-2001:470:703f:8000::,2001:470:703f:ffff:ffff:ffff:ffff:ffff,DE
-2001:470:7040::,2001:470:710f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7110::,2001:470:7110:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:7110:8000::,2001:470:7135:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7136::,2001:470:7136:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7136:8000::,2001:470:7142:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7143::,2001:470:7143:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7143:8000::,2001:470:714c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:714d::,2001:470:714d:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:714d:8000::,2001:470:7170:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6f5d::,2001:470:7170:ffff:ffff:ffff:ffff:ffff,US
2001:470:7171::,2001:470:7171:ffff:ffff:ffff:ffff:ffff,DE
-2001:470:7172::,2001:470:718d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:718e::,2001:470:718e:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:718e:8000::,2001:470:7204:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7205::,2001:470:7205:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7205:8000::,2001:470:7224:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7225::,2001:470:7225:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:7225:8000::,2001:470:7257:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7258::,2001:470:7258:7fff:ffff:ffff:ffff:ffff,HR
-2001:470:7258:8000::,2001:470:7263:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7264::,2001:470:7264:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:7264:8000::,2001:470:7271:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7172::,2001:470:7271:ffff:ffff:ffff:ffff:ffff,US
2001:470:7272::,2001:470:7272:ffff:ffff:ffff:ffff:ffff,DE
2001:470:7273::,2001:470:727f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7280::,2001:470:7280:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7280:8000::,2001:470:7286:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7280::,2001:470:7286:ffff:ffff:ffff:ffff:ffff,RU
2001:470:7287::,2001:470:7287:ffff:ffff:ffff:ffff:ffff,PL
-2001:470:7288::,2001:470:7292:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7293::,2001:470:7293:7fff:ffff:ffff:ffff:ffff,IT
-2001:470:7293:8000::,2001:470:72d1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:72d2::,2001:470:72d2:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:72d2:8000::,2001:470:72da:ffff:ffff:ffff:ffff:ffff,US
-2001:470:72db::,2001:470:72db:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:72db:8000::,2001:470:730f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7310::,2001:470:7310:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7310:8000::,2001:470:7333:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7334::,2001:470:7334:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7334:8000::,2001:470:733b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:733c::,2001:470:733c:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:733c:8000::,2001:470:733e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:733f::,2001:470:733f:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:733f:8000::,2001:470:7351:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7352::,2001:470:7352:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:7352:8000::,2001:470:7354:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7355::,2001:470:7355:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7355:8000::,2001:470:73a7:7fff:ffff:ffff:ffff:ffff,US
-2001:470:73a7:8000::,2001:470:73a7:ffff:ffff:ffff:ffff:ffff,RU
-2001:470:73a8::,2001:470:7403:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7404::,2001:470:7404:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7404:8000::,2001:470:7421:ffff:ffff:ffff:ffff:ffff,US
+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:743e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:743f::,2001:470:743f:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:743f:8000::,2001:470:7479:ffff:ffff:ffff:ffff:ffff,US
-2001:470:747a::,2001:470:747a:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:747a:8000::,2001:470:74b8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:74b9::,2001:470:74b9:7fff:ffff:ffff:ffff:ffff,RS
-2001:470:74b9:8000::,2001:470:7507:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7508::,2001:470:7508:7fff:ffff:ffff:ffff:ffff,GR
-2001:470:7508:8000::,2001:470:7557:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7558::,2001:470:7558:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7558:8000::,2001:470:756e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:756f::,2001:470:756f:7fff:ffff:ffff:ffff:ffff,EG
-2001:470:756f:8000::,2001:470:7572:7fff:ffff:ffff:ffff:ffff,US
-2001:470:7572:8000::,2001:470:7572:ffff:ffff:ffff:ffff:ffff,DE
-2001:470:7573::,2001:470:7594:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7595::,2001:470:7595:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:7595:8000::,2001:470:759e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:759f::,2001:470:759f:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:759f:8000::,2001:470:75b2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:75b3::,2001:470:75b3:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:75b3:8000::,2001:470:75e5:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7423::,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
-2001:470:75e7::,2001:470:7690:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7691::,2001:470:7691:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7691:8000::,2001:470:76e0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:76e1::,2001:470:76e1:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:76e1:8000::,2001:470:77ac:ffff:ffff:ffff:ffff:ffff,US
-2001:470:77ad::,2001:470:77ad:7fff:ffff:ffff:ffff:ffff,MD
-2001:470:77ad:8000::,2001:470:7829:ffff:ffff:ffff:ffff:ffff,US
-2001:470:782a::,2001:470:782a:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:782a:8000::,2001:470:782f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7830::,2001:470:7830:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7830:8000::,2001:470:7844:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7845::,2001:470:7845:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7845:8000::,2001:470:7852:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7853::,2001:470:7853:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7853:8000::,2001:470:7859:ffff:ffff:ffff:ffff:ffff,US
+2001:470:75e7::,2001:470:7837:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7838::,2001:470:7838:ffff:ffff:ffff:ffff:ffff,NL
+2001:470:7839::,2001:470:783c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:783d::,2001:470:783d:ffff:ffff:ffff:ffff:ffff,NL
+2001:470:783e::,2001:470:7859:ffff:ffff:ffff:ffff:ffff,US
2001:470:785a::,2001:470:785a:ffff:ffff:ffff:ffff:ffff,AT
-2001:470:785b::,2001:470:7872:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7873::,2001:470:7873:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7873:8000::,2001:470:7893:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7894::,2001:470:7894:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7894:8000::,2001:470:789e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:789f::,2001:470:789f:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:789f:8000::,2001:470:789f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78a0::,2001:470:78a0:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:78a0:8000::,2001:470:78c7:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78c8::,2001:470:78c8:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:78c8:8000::,2001:470:78db:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78dc::,2001:470:78dc:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:78dc:8000::,2001:470:78e8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78e9::,2001:470:78e9:7fff:ffff:ffff:ffff:ffff,LV
-2001:470:78e9:8000::,2001:470:78f6:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78f7::,2001:470:78f7:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:78f7:8000::,2001:470:7919:ffff:ffff:ffff:ffff:ffff,US
-2001:470:791a::,2001:470:791a:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:791a:8000::,2001:470:79ae:ffff:ffff:ffff:ffff:ffff,US
-2001:470:79af::,2001:470:79af:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:79af:8000::,2001:470:79dc:ffff:ffff:ffff:ffff:ffff,US
-2001:470:79dd::,2001:470:79dd:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:79dd:8000::,2001:470:79ec:ffff:ffff:ffff:ffff:ffff,US
-2001:470:79ed::,2001:470:79ed:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:79ed:8000::,2001:470:7a0e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7a0f::,2001:470:7a0f:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7a0f:8000::,2001:470:7a2e:7fff:ffff:ffff:ffff:ffff,US
-2001:470:7a2e:8000::,2001:470:7a2e:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7a2f::,2001:470:7a40:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7a41::,2001:470:7a41:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:7a41:8000::,2001:470:7a94:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7a95::,2001:470:7a95:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7a95:8000::,2001:470:7a99:ffff:ffff:ffff:ffff:ffff,US
+2001:470:785b::,2001:470:7a99:ffff:ffff:ffff:ffff:ffff,US
2001:470:7a9a::,2001:470:7a9a:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7a9b::,2001:470:7a9b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7a9c::,2001:470:7a9c:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7a9c:8000::,2001:470:7ab5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7ab6::,2001:470:7ab6:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7ab6:8000::,2001:470:7ad1:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7a9b::,2001:470:7ad1:ffff:ffff:ffff:ffff:ffff,US
2001:470:7ad2::,2001:470:7ad2:ffff:ffff:ffff:ffff:ffff,NL
2001:470:7ad3::,2001:470:7ad5:ffff:ffff:ffff:ffff:ffff,US
2001:470:7ad6::,2001:470:7ad6:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7ad7::,2001:470:7aeb:7fff:ffff:ffff:ffff:ffff,US
-2001:470:7aeb:8000::,2001:470:7aeb:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7aec::,2001:470:7b01:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7b02::,2001:470:7b02:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7b02:8000::,2001:470:7ba2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7ba3::,2001:470:7ba3:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:7ba3:8000::,2001:470:7ba6:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7ba7::,2001:470:7ba7:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7ba7:8000::,2001:470:7bbf:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7ad7::,2001:470:7bbf:ffff:ffff:ffff:ffff:ffff,US
2001:470:7bc0::,2001:470:7bc0:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7bc1::,2001:470:7d33:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7d34::,2001:470:7d34:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7d34:8000::,2001:470:7d60:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7d61::,2001:470:7d61:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7d61:8000::,2001:470:7d66:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7d67::,2001:470:7d67:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7d67:8000::,2001:470:7d6a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7bc1::,2001:470:7d6a:ffff:ffff:ffff:ffff:ffff,US
2001:470:7d6b::,2001:470:7d6b:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7d6c::,2001:470:7db1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7db2::,2001:470:7db2:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7db2:8000::,2001:470:7dbd:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7dbe::,2001:470:7dbe:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7dbe:8000::,2001:470:7e38:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7e39::,2001:470:7e39:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7e39:8000::,2001:470:7ea5:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7d6c::,2001:470:7ea5:ffff:ffff:ffff:ffff:ffff,US
2001:470:7ea6::,2001:470:7ea6:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7ea7::,2001:470:80b6:ffff:ffff:ffff:ffff:ffff,US
-2001:470:80b7::,2001:470:80b7:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:80b7:8000::,2001:470:81b0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:81b1::,2001:470:81b1:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:81b1:8000::,2001:470:823b:7fff:ffff:ffff:ffff:ffff,US
-2001:470:823b:8000::,2001:470:823b:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:823c::,2001:470:83a5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:83a6::,2001:470:83a6:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:83a6:8000::,2001:470:843a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:843b::,2001:470:843b:7fff:ffff:ffff:ffff:ffff,NZ
-2001:470:843b:8000::,2001:470:859e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:859f::,2001:470:859f:7fff:ffff:ffff:ffff:ffff,AU
-2001:470:859f:8000::,2001:470:8924:7fff:ffff:ffff:ffff:ffff,US
-2001:470:8924:8000::,2001:470:8924:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:8925::,2001:470:94eb:ffff:ffff:ffff:ffff:ffff,US
-2001:470:94ec::,2001:470:94ec:ffff:ffff:ffff:ffff:ffff,IM
-2001:470:94ed::,2001:470:9624:ffff:ffff:ffff:ffff:ffff,US
-2001:470:9625::,2001:470:9625:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:9625:8000::,2001:470:9678:ffff:ffff:ffff:ffff:ffff,US
-2001:470:9679::,2001:470:9679:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:9679:8000::,2001:470:96a0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:96a1::,2001:470:96a1:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:96a1:8000::,2001:470:971e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:971f::,2001:470:971f:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:971f:8000::,2001:470:9794:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7ea7::,2001:470:807f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:8080::,2001:470:80ff:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:8100::,2001:470:95ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:9600::,2001:470:967f:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:9680::,2001:470:9794:ffff:ffff:ffff:ffff:ffff,US
2001:470:9795::,2001:470:9795:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:9796::,2001:470:97d6:7fff:ffff:ffff:ffff:ffff,US
-2001:470:97d6:8000::,2001:470:97d6:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:97d7::,2001:470:97f0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:97f1::,2001:470:97f1:7fff:ffff:ffff:ffff:ffff,GB
-2001:470:97f1:8000::,2001:470:98a2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:98a3::,2001:470:98a3:7fff:ffff:ffff:ffff:ffff,IT
-2001:470:98a3:8000::,2001:470:999c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:9796::,2001:470:999c:ffff:ffff:ffff:ffff:ffff,US
2001:470:999d::,2001:470:999d:ffff:ffff:ffff:ffff:ffff,DE
-2001:470:999e::,2001:470:9ccc:ffff:ffff:ffff:ffff:ffff,US
-2001:470:9ccd::,2001:470:9ccd:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:9ccd:8000::,2001:470:9fa8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:9fa9::,2001:470:9fa9:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:9fa9:8000::,2001:470:b0e1:ffff:ffff:ffff:ffff:ffff,US
+2001:470:999e::,2001:470:b0e1:ffff:ffff:ffff:ffff:ffff,US
2001:470:b0e2::,2001:470:b0e2:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:b0e3::,2001:470:b160:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b161::,2001:470:b161:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:b161:8000::,2001:470:b285:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b286::,2001:470:b286:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:b286:8000::,2001:470:b2cf:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b2d0::,2001:470:b2d0:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:b2d0:8000::,2001:470:b310:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b311::,2001:470:b311:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:b311:8000::,2001:470:b3d7:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b3d8::,2001:470:b3d8:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:b3d8:8000::,2001:470:b40c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b40d::,2001:470:b40d:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b40d:8000::,2001:470:b41b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b41c::,2001:470:b41c:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b41c:8000::,2001:470:b436:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b437::,2001:470:b437:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b437:8000::,2001:470:b44f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b450::,2001:470:b450:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b450:8000::,2001:470:b4a5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b4a6::,2001:470:b4a6:7fff:ffff:ffff:ffff:ffff,HR
-2001:470:b4a6:8000::,2001:470:b4e9:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b0e3::,2001:470:b17f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b180::,2001:470:b1ff:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:b200::,2001:470:b4e9:ffff:ffff:ffff:ffff:ffff,US
2001:470:b4ea::,2001:470:b4ea:ffff:ffff:ffff:ffff:ffff,AT
-2001:470:b4eb::,2001:470:b510:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b511::,2001:470:b511:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b511:8000::,2001:470:b531:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b532::,2001:470:b532:7fff:ffff:ffff:ffff:ffff,IL
-2001:470:b532:8000::,2001:470:b539:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b53a::,2001:470:b53a:ffff:ffff:ffff:ffff:ffff,ES
-2001:470:b53b::,2001:470:b5e8:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b5e9::,2001:470:b5e9:7fff:ffff:ffff:ffff:ffff,NO
-2001:470:b5e9:8000::,2001:470:b625:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b4eb::,2001:470:b625:ffff:ffff:ffff:ffff:ffff,US
2001:470:b626::,2001:470:b626:ff:ffff:ffff:ffff:ffff,DE
-2001:470:b626:100::,2001:470:b662:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b663::,2001:470:b663:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:b663:8000::,2001:470:b670:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b671::,2001:470:b671:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b671:8000::,2001:470:b674:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b675::,2001:470:b675:7fff:ffff:ffff:ffff:ffff,CH
-2001:470:b675:8000::,2001:470:b6d3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b6d4::,2001:470:b6d4:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:b6d4:8000::,2001:470:b77d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:b77e::,2001:470:b77e:7fff:ffff:ffff:ffff:ffff,AT
-2001:470:b77e:8000::,2001:470:c322:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c323::,2001:470:c323:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:c323:8000::,2001:470:c3c2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c3c3::,2001:470:c3c3:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:c3c3:8000::,2001:470:c453:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c454::,2001:470:c454:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:c454:8000::,2001:470:c825:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c826::,2001:470:c826:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:c826:8000::,2001:470:c82c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c82d::,2001:470:c82d:7fff:ffff:ffff:ffff:ffff,LU
-2001:470:c82d:8000::,2001:470:c84d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c84e::,2001:470:c84e:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:c84e:8000::,2001:470:c886:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c887::,2001:470:c887:ffff:ffff:ffff:ffff:ffff,ES
-2001:470:c888::,2001:470:c963:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c964::,2001:470:c964:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:c965::,2001:470:ca2b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ca2c::,2001:470:ca2c:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:ca2c:8000::,2001:470:ca71:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ca72::,2001:470:ca72:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:ca72:8000::,2001:470:caeb:ffff:ffff:ffff:ffff:ffff,US
-2001:470:caec::,2001:470:caec:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:caec:8000::,2001:470:cbd2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:cbd3::,2001:470:cbd3:7fff:ffff:ffff:ffff:ffff,FR
-2001:470:cbd3:8000::,2001:470:ccb9:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ccba::,2001:470:ccba:7fff:ffff:ffff:ffff:ffff,ES
-2001:470:ccba:8000::,2001:470:ccc1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ccc2::,2001:470:ccc2:7fff:ffff:ffff:ffff:ffff,BE
-2001:470:ccc2:8000::,2001:470:cd93:7fff:ffff:ffff:ffff:ffff,US
-2001:470:cd93:8000::,2001:470:cd93:ffff:ffff:ffff:ffff:ffff,FR
-2001:470:cd94::,2001:470:d175:ffff:ffff:ffff:ffff:ffff,US
-2001:470:d176::,2001:470:d176:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:d176:8000::,2001:470:d19a:ffff:ffff:ffff:ffff:ffff,US
-2001:470:d19b::,2001:470:d19b:7fff:ffff:ffff:ffff:ffff,BE
-2001:470:d19b:8000::,2001:470:d2d5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:d2d6::,2001:470:d2d6:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:d2d6:8000::,2001:470:d673:7fff:ffff:ffff:ffff:ffff,US
-2001:470:d673:8000::,2001:470:d673:ffff:ffff:ffff:ffff:ffff,BE
-2001:470:d674::,2001:470:d6ee:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b626:100::,2001:470:c37f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:c380::,2001:470:c3ff:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:c400::,2001:470:d6ee:ffff:ffff:ffff:ffff:ffff,US
2001:470:d6ef::,2001:470:d6ef:ffff:ffff:ffff:ffff:ffff,FR
-2001:470:d6f0::,2001:470:d890:ffff:ffff:ffff:ffff:ffff,US
-2001:470:d891::,2001:470:d891:7fff:ffff:ffff:ffff:ffff,BR
-2001:470:d891:8000::,2001:470:da01:ffff:ffff:ffff:ffff:ffff,US
-2001:470:da02::,2001:470:da02:7fff:ffff:ffff:ffff:ffff,AR
-2001:470:da02:8000::,2001:470:da99:ffff:ffff:ffff:ffff:ffff,US
-2001:470:da9a::,2001:470:da9a:7fff:ffff:ffff:ffff:ffff,BS
-2001:470:da9a:8000::,2001:470:da9c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:da9d::,2001:470:da9d:7fff:ffff:ffff:ffff:ffff,BR
-2001:470:da9d:8000::,2001:470:dbba:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dbbb::,2001:470:dbbb:7fff:ffff:ffff:ffff:ffff,BR
-2001:470:dbbb:8000::,2001:470:dc23:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dc24::,2001:470:dc24:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dc24:8000::,2001:470:dc44:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dc45::,2001:470:dc45:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dc45:8000::,2001:470:dc8b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dc8c::,2001:470:dc8c:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dc8c:8000::,2001:470:dca5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dca6::,2001:470:dca6:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:dca6:8000::,2001:470:dcb3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dcb4::,2001:470:dcb4:7fff:ffff:ffff:ffff:ffff,NO
-2001:470:dcb4:8000::,2001:470:dcba:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dcbb::,2001:470:dcbb:7fff:ffff:ffff:ffff:ffff,FI
-2001:470:dcbb:8000::,2001:470:dce2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dce3::,2001:470:dce3:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dce3:8000::,2001:470:dd03:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dd04::,2001:470:dd04:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dd04:8000::,2001:470:dd51:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dd52::,2001:470:dd52:7fff:ffff:ffff:ffff:ffff,IT
-2001:470:dd52:8000::,2001:470:dd67:ffff:ffff:ffff:ffff:ffff,US
+2001:470:d6f0::,2001:470:dc1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dc1c::,2001:470:dc1c:ffff:ffff:ffff:ffff:ffff,RU
+2001:470:dc1d::,2001:470:dd67:ffff:ffff:ffff:ffff:ffff,US
2001:470:dd68::,2001:470:dd68:ffff:ffff:ffff:ffff:ffff,DK
-2001:470:dd69::,2001:470:dd8c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dd8d::,2001:470:dd8d:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:dd8d:8000::,2001:470:de09:ffff:ffff:ffff:ffff:ffff,US
-2001:470:de0a::,2001:470:de0a:7fff:ffff:ffff:ffff:ffff,NO
-2001:470:de0a:8000::,2001:470:de0f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:de10::,2001:470:de10:7fff:ffff:ffff:ffff:ffff,LV
-2001:470:de10:8000::,2001:470:de3f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:de40::,2001:470:de40:7fff:ffff:ffff:ffff:ffff,NO
-2001:470:de40:8000::,2001:470:de41:ffff:ffff:ffff:ffff:ffff,US
-2001:470:de42::,2001:470:de42:7fff:ffff:ffff:ffff:ffff,IS
-2001:470:de42:8000::,2001:470:de97:ffff:ffff:ffff:ffff:ffff,US
-2001:470:de98::,2001:470:de98:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:de98:8000::,2001:470:dea3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dea4::,2001:470:dea4:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dea4:8000::,2001:470:dec3:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dd69::,2001:470:dec3:ffff:ffff:ffff:ffff:ffff,US
2001:470:dec4::,2001:470:dec4:ffff:ffff:ffff:ffff:ffff,SE
-2001:470:dec5::,2001:470:ded3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ded4::,2001:470:ded4:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:ded4:8000::,2001:470:dedd:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dede::,2001:470:dede:7fff:ffff:ffff:ffff:ffff,NO
-2001:470:dede:8000::,2001:470:dee2:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dec5::,2001:470:dee2:ffff:ffff:ffff:ffff:ffff,US
2001:470:dee3::,2001:470:dee3:ffff:ffff:ffff:ffff:ffff,NO
-2001:470:dee4::,2001:470:df04:ffff:ffff:ffff:ffff:ffff,US
-2001:470:df05::,2001:470:df05:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:df05:8000::,2001:470:df19:7fff:ffff:ffff:ffff:ffff,US
-2001:470:df19:8000::,2001:470:df19:ffff:ffff:ffff:ffff:ffff,SE
-2001:470:df1a::,2001:470:df40:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dee4::,2001:470:df40:ffff:ffff:ffff:ffff:ffff,US
2001:470:df41::,2001:470:df41:ffff:ffff:ffff:ffff:ffff,SE
-2001:470:df42::,2001:470:df4f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:df50::,2001:470:df50:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:df50:8000::,2001:470:df6f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:df70::,2001:470:df70:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:df70:8000::,2001:470:df7c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:df7d::,2001:470:df7d:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:df7d:8000::,2001:470:dfa0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dfa1::,2001:470:dfa1:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dfa1:8000::,2001:470:dfb2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dfb3::,2001:470:dfb3:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:dfb3:8000::,2001:470:dfc9:ffff:ffff:ffff:ffff:ffff,US
+2001:470:df42::,2001:470:dfc9:ffff:ffff:ffff:ffff:ffff,US
2001:470:dfca::,2001:470:dfca:ffff:ffff:ffff:ffff:ffff,RU
-2001:470:dfcb::,2001:470:dfe3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:dfe4::,2001:470:dfe4:7fff:ffff:ffff:ffff:ffff,DK
-2001:470:dfe4:8000::,2001:470:dff7:7fff:ffff:ffff:ffff:ffff,US
-2001:470:dff7:8000::,2001:470:dff7:ffff:ffff:ffff:ffff:ffff,SE
-2001:470:dff8::,2001:470:e071:ffff:ffff:ffff:ffff:ffff,US
-2001:470:e072::,2001:470:e072:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:e072:8000::,2001:470:e1ed:7fff:ffff:ffff:ffff:ffff,US
-2001:470:e1ed:8000::,2001:470:e1ed:ffff:ffff:ffff:ffff:ffff,BR
-2001:470:e1ee::,2001:470:eaa2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:eaa3::,2001:470:eaa3:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:eaa3:8000::,2001:470:eae0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:eae1::,2001:470:eae1:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:eae1:8000::,2001:470:ebf4:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ebf5::,2001:470:ebf5:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:ebf5:8000::,2001:470:ecf5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ecf6::,2001:470:ecf6:7fff:ffff:ffff:ffff:ffff,ID
-2001:470:ecf6:8000::,2001:470:ed02:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ed03::,2001:470:ed03:7fff:ffff:ffff:ffff:ffff,MM
-2001:470:ed03:8000::,2001:470:ed0b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ed0c::,2001:470:ed0c:7fff:ffff:ffff:ffff:ffff,SG
-2001:470:ed0c:8000::,2001:470:ed26:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ed27::,2001:470:ed27:7fff:ffff:ffff:ffff:ffff,ID
-2001:470:ed27:8000::,2001:470:ed39:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ed3a::,2001:470:ed3a:7fff:ffff:ffff:ffff:ffff,SG
-2001:470:ed3a:8000::,2001:470:ed3c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ed3d::,2001:470:ed3d:7fff:ffff:ffff:ffff:ffff,SG
-2001:470:ed3d:8000::,2001:470:ee04:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ee05::,2001:470:ee05:7fff:ffff:ffff:ffff:ffff,MY
-2001:470:ee05:8000::,2001:470:ee1d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ee1e::,2001:470:ee1e:7fff:ffff:ffff:ffff:ffff,ID
-2001:470:ee1e:8000::,2001:470:ef3f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ef40::,2001:470:ef40:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:ef40:8000::,2001:470:eff5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:eff6::,2001:470:eff6:7fff:ffff:ffff:ffff:ffff,MY
-2001:470:eff6:8000::,2001:470:f011:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f012::,2001:470:f012:7fff:ffff:ffff:ffff:ffff,NZ
-2001:470:f012:8000::,2001:470:f091:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f092::,2001:470:f092:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f092:8000::,2001:470:f0ad:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f0ae::,2001:470:f0ae:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f0ae:8000::,2001:470:f0e7:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f0e8::,2001:470:f0e8:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f0e8:8000::,2001:470:f12f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f130::,2001:470:f130:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f130:8000::,2001:470:f166:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f167::,2001:470:f167:ff:ffff:ffff:ffff:ffff,CN
-2001:470:f167:100::,2001:470:f241:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f242::,2001:470:f242:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f242:8000::,2001:470:f301:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f302::,2001:470:f302:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f302:8000::,2001:470:f3ee:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f3ef::,2001:470:f3ef:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f3ef:8000::,2001:470:f42c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f42d::,2001:470:f42d:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f42d:8000::,2001:470:f518:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f519::,2001:470:f519:7fff:ffff:ffff:ffff:ffff,NZ
-2001:470:f519:8000::,2001:470:f5c3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f5c4::,2001:470:f5c4:7fff:ffff:ffff:ffff:ffff,JP
-2001:470:f5c4:8000::,2001:470:f5d0:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f5d1::,2001:470:f5d1:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f5d1:8000::,2001:470:f817:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f818::,2001:470:f818:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f818:8000::,2001:470:f81d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f81e::,2001:470:f81e:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f81e:8000::,2001:470:f825:7fff:ffff:ffff:ffff:ffff,US
-2001:470:f825:8000::,2001:470:f825:ffff:ffff:ffff:ffff:ffff,HK
-2001:470:f826::,2001:470:f83d:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f83e::,2001:470:f83e:7fff:ffff:ffff:ffff:ffff,HK
-2001:470:f83e:8000::,2001:470:f83f:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f840::,2001:470:f840:7fff:ffff:ffff:ffff:ffff,MY
-2001:470:f840:8000::,2001:470:f919:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f91a::,2001:470:f91a:7fff:ffff:ffff:ffff:ffff,SG
-2001:470:f91a:8000::,2001:470:f978:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f979::,2001:470:f979:7fff:ffff:ffff:ffff:ffff,HK
-2001:470:f979:8000::,2001:470:f9e5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f9e6::,2001:470:f9e6:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f9e6:8000::,2001:470:f9f9:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f9fa::,2001:470:f9fa:7fff:ffff:ffff:ffff:ffff,HK
-2001:470:f9fa:8000::,2001:470:fa38:ffff:ffff:ffff:ffff:ffff,US
-2001:470:fa39::,2001:470:fa39:7fff:ffff:ffff:ffff:ffff,HK
-2001:470:fa39:8000::,2001:470:fa84:ffff:ffff:ffff:ffff:ffff,US
-2001:470:fa85::,2001:470:fa85:7fff:ffff:ffff:ffff:ffff,HK
-2001:470:fa85:8000::,2001:470:fc92:ffff:ffff:ffff:ffff:ffff,US
-2001:470:fc93::,2001:470:fc93:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:fc93:8000::,2001:470:fc93:ffff:ffff:ffff:ffff:ffff,US
-2001:470:fc94::,2001:470:fc94:7fff:ffff:ffff:ffff:ffff,JP
-2001:470:fc94:8000::,2001:470:fd51:ffff:ffff:ffff:ffff:ffff,US
-2001:470:fd52::,2001:470:fd52:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:fd52:8000::,2001:470:ffe1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:ffe2::,2001:470:ffe2:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:ffe2:8000::,2001:470:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:dfcb::,2001:470:ea7f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:ea80::,2001:470:eaff:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:eb00::,2001:470:f07f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f080::,2001:470:f0bf:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f0c0::,2001:470:f13f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f140::,2001:470:f17f:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f180::,2001:470:f1ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f200::,2001:470:f24b:98::,CN
+2001:470:f24b:98::1,2001:470:f24b:98::1,US
+2001:470:f24b:98::2,2001:470:f27f:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f280::,2001:470:f7ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f800::,2001:470:f8ff:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f900::,2001:470:fc7f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:fc80::,2001:470:fcff:ffff:ffff:ffff:ffff:ffff,JP
+2001:470:fd00::,2001:470:fd7f:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:fd80::,2001:470:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:478::,2001:478:ffff:ffff:ffff:ffff:ffff:ffff,KN
2001:480::,2001:480:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:490::,2001:490:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -1009,7 +367,62 @@
2001:500:1::,2001:500:4:ffff:ffff:ffff:ffff:ffff,US
2001:500:6::,2001:500:f:ffff:ffff:ffff:ffff:ffff,CA
2001:500:10::,2001:500:10:ffff:ffff:ffff:ffff:ffff,PR
-2001:500:11::,2001:500:15:ffff:ffff:ffff:ffff:ffff,US
+2001:500:11::,2001:500:15:3ff:ffff:ffff:ffff:ffff,US
+2001:500:15:400::,2001:500:15:4ff:ffff:ffff:ffff:ffff,AT
+2001:500:15:500::,2001:500:15:8ff:ffff:ffff:ffff:ffff,US
+2001:500:15:900::,2001:500:15:9ff:ffff:ffff:ffff:ffff,SE
+2001:500:15:a00::,2001:500:15:10ff:ffff:ffff:ffff:ffff,US
+2001:500:15:1100::,2001:500:15:11ff:ffff:ffff:ffff:ffff,SG
+2001:500:15:1200::,2001:500:15:13ff:ffff:ffff:ffff:ffff,US
+2001:500:15:1400::,2001:500:15:14ff:ffff:ffff:ffff:ffff,NZ
+2001:500:15:1500::,2001:500:15:16ff:ffff:ffff:ffff:ffff,US
+2001:500:15:1700::,2001:500:15:17ff:ffff:ffff:ffff:ffff,NZ
+2001:500:15:1800::,2001:500:15:20ff:ffff:ffff:ffff:ffff,US
+2001:500:15:2100::,2001:500:15:21ff:ffff:ffff:ffff:ffff,BR
+2001:500:15:2200::,2001:500:15:22ff:ffff:ffff:ffff:ffff,US
+2001:500:15:2300::,2001:500:15:23ff:ffff:ffff:ffff:ffff,SG
+2001:500:15:2400::,2001:500:15:24ff:ffff:ffff:ffff:ffff,US
+2001:500:15:2500::,2001:500:15:25ff:ffff:ffff:ffff:ffff,ZA
+2001:500:15:2600::,2001:500:15:28ff:ffff:ffff:ffff:ffff,US
+2001:500:15:2900::,2001:500:15:29ff:ffff:ffff:ffff:ffff,BD
+2001:500:15:2a00::,2001:500:15:2fff:ffff:ffff:ffff:ffff,US
+2001:500:15:3000::,2001:500:15:30ff:ffff:ffff:ffff:ffff,GB
+2001:500:15:3100::,2001:500:15:31ff:ffff:ffff:ffff:ffff,AU
+2001:500:15:3200::,2001:500:15:32ff:ffff:ffff:ffff:ffff,CN
+2001:500:15:3300::,2001:500:15:33ff:ffff:ffff:ffff:ffff,JP
+2001:500:15:3400::,2001:500:15:34ff:ffff:ffff:ffff:ffff,US
+2001:500:15:3500::,2001:500:15:35ff:ffff:ffff:ffff:ffff,NL
+2001:500:15:3600::,2001:500:15:41ff:ffff:ffff:ffff:ffff,US
+2001:500:15:4200::,2001:500:15:42ff:ffff:ffff:ffff:ffff,FR
+2001:500:15:4300::,2001:500:15:43ff:ffff:ffff:ffff:ffff,US
+2001:500:15:4400::,2001:500:15:44ff:ffff:ffff:ffff:ffff,PH
+2001:500:15:4500::,2001:500:15:45ff:ffff:ffff:ffff:ffff,US
+2001:500:15:4600::,2001:500:15:46ff:ffff:ffff:ffff:ffff,AR
+2001:500:15:4700::,2001:500:15:47ff:ffff:ffff:ffff:ffff,US
+2001:500:15:4800::,2001:500:15:48ff:ffff:ffff:ffff:ffff,DE
+2001:500:15:4900::,2001:500:15:49ff:ffff:ffff:ffff:ffff,AU
+2001:500:15:4a00::,2001:500:15:4fff:ffff:ffff:ffff:ffff,US
+2001:500:15:5000::,2001:500:15:50ff:ffff:ffff:ffff:ffff,CA
+2001:500:15:5100::,2001:500:15:54ff:ffff:ffff:ffff:ffff,US
+2001:500:15:5500::,2001:500:15:55ff:ffff:ffff:ffff:ffff,EG
+2001:500:15:5600::,2001:500:15:56ff:ffff:ffff:ffff:ffff,US
+2001:500:15:5700::,2001:500:15:57ff:ffff:ffff:ffff:ffff,DE
+2001:500:15:5800::,2001:500:15:58ff:ffff:ffff:ffff:ffff,CH
+2001:500:15:5900::,2001:500:15:59ff:ffff:ffff:ffff:ffff,BH
+2001:500:15:5a00::,2001:500:15:5fff:ffff:ffff:ffff:ffff,US
+2001:500:15:6000::,2001:500:15:60ff:ffff:ffff:ffff:ffff,ZA
+2001:500:15:6100::,2001:500:15:61ff:ffff:ffff:ffff:ffff,US
+2001:500:15:6200::,2001:500:15:62ff:ffff:ffff:ffff:ffff,AE
+2001:500:15:6300::,2001:500:15:63ff:ffff:ffff:ffff:ffff,IT
+2001:500:15:6400::,2001:500:15:64ff:ffff:ffff:ffff:ffff,PL
+2001:500:15:6500::,2001:500:15:66ff:ffff:ffff:ffff:ffff,US
+2001:500:15:6700::,2001:500:15:67ff:ffff:ffff:ffff:ffff,KR
+2001:500:15:6800::,2001:500:15:68ff:ffff:ffff:ffff:ffff,US
+2001:500:15:6900::,2001:500:15:69ff:ffff:ffff:ffff:ffff,SG
+2001:500:15:6a00::,2001:500:15:6fff:ffff:ffff:ffff:ffff,US
+2001:500:15:7000::,2001:500:15:70ff:ffff:ffff:ffff:ffff,FI
+2001:500:15:7100::,2001:500:15:71ff:ffff:ffff:ffff:ffff,EE
+2001:500:15:7200::,2001:500:15:ffff:ffff:ffff:ffff:ffff,US
2001:500:16::,2001:500:2c:ffff:ffff:ffff:ffff:ffff,CA
2001:500:2d::,2001:500:31:ffff:ffff:ffff:ffff:ffff,US
2001:500:40::,2001:500:56:ffff:ffff:ffff:ffff:ffff,CA
@@ -1109,14 +522,14 @@
2001:504:46::,2001:504:46:ffff:ffff:ffff:ffff:ffff,CA
2001:504:47::,2001:504:47:ffff:ffff:ffff:ffff:ffff,US
2001:504:57::,2001:504:59:ffff:ffff:ffff:ffff:ffff,US
-2001:504:60::,2001:504:62:ffff:ffff:ffff:ffff:ffff,US
+2001:504:60::,2001:504:61:ffff:ffff:ffff:ffff:ffff,US
2001:504:63::,2001:504:63:ffff:ffff:ffff:ffff:ffff,DM
2001:504:64::,2001:504:68:ffff:ffff:ffff:ffff:ffff,US
2001:504:69::,2001:504:69:ffff:ffff:ffff:ffff:ffff,CA
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:8f:ffff:ffff:ffff:ffff:ffff,US
+2001:504:80::,2001:504:90: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
@@ -1140,17 +553,11 @@
2001:550:0:1000::9a19:326,2001:550:0:1000::9a19:326,SI
2001:550:0:1000::9a19:327,2001:550:0:1000::9a36:2631,US
2001:550:0:1000::9a36:2632,2001:550:0:1000::9a36:2632,DE
-2001:550:0:1000::9a36:2633,2001:550:7ff:ffff:ffff:ffff:ffff:ffff,US
-2001:550:800::,2001:550:800:7fff:ffff:ffff:ffff:ffff,CA
-2001:550:800:8000::,2001:550:909:ffff:ffff:ffff:ffff:ffff,US
-2001:550:90a::,2001:550:90a:7fff:ffff:ffff:ffff:ffff,CA
-2001:550:90a:8000::,2001:550:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:550:0:1000::9a36:2633,2001:550:8ff:ffff:ffff:ffff:ffff:ffff,US
+2001:550:900::,2001:550:97f:ffff:ffff:ffff:ffff:ffff,CA
+2001:550:980::,2001:550:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:558::,2001:560:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:568::,2001:569:7413:ffff:ffff:ffff:ffff:ffff,CA
-2001:569:7414::,2001:569:7414:7fff:ffff:ffff:ffff:ffff,US
-2001:569:7414:8000::,2001:569:79c9:bfff:ffff:ffff:ffff:ffff,CA
-2001:569:79c9:c000::,2001:569:79c9:dfff:ffff:ffff:ffff:ffff,GB
-2001:569:79c9:e000::,2001:56f:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:568::,2001:56f:ffff:ffff:ffff:ffff:ffff:ffff,CA
2001:570::,2001:570:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:578::,2001:57b:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:580::,2001:580:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -1180,12 +587,16 @@
2001:620::,2001:627:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:628::,2001:62f:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:630::,2001:630:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:638::,2001:638:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:638::,2001:638:8ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:638:900::,2001:638:97f:ffff:ffff:ffff:ffff:ffff,HU
+2001:638:980::,2001:63f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:640::,2001:640:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:648::,2001:64f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2001:650::,2001:65f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:660::,2001:667:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:668::,2001:668:1f:3d:ffff:ffff:ffff:ffff,DE
+2001:668::,2001:668:1f:31:f83f:a32d:c0f:9a16,DE
+2001:668:1f:31:f83f:a32d:c0f:9a17,2001:668:1f:31:f83f:a32d:c0f:9a17,US
+2001:668:1f:31:f83f:a32d:c0f:9a18,2001:668:1f:3d:ffff:ffff:ffff:ffff,DE
2001:668:1f:3e::,2001:668:1f:3e:ffff:ffff:ffff:ffff,GB
2001:668:1f:3f::,2001:668:1f:44:ffff:ffff:ffff:ffff,DE
2001:668:1f:45::,2001:668:1f:45:ffff:ffff:ffff:ffff,GB
@@ -1230,36 +641,7 @@
2001:678:74::,2001:678:74:ffff:ffff:ffff:ffff:ffff,DK
2001:678:78::,2001:678:78:ffff:ffff:ffff:ffff:ffff,DK
2001:678:7c::,2001:678:7c:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:80::,2001:678:80:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:84::,2001:678:84:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:88::,2001:678:88:ffff:ffff:ffff:ffff:ffff,LT
-2001:678:8c::,2001:678:8c:ffff:ffff:ffff:ffff:ffff,LT
-2001:678:90::,2001:678:90:ffff:ffff:ffff:ffff:ffff,SK
-2001:678:94::,2001:678:94:ffff:ffff:ffff:ffff:ffff,EE
-2001:678:98::,2001:678:98:ffff:ffff:ffff:ffff:ffff,KZ
-2001:678:9c::,2001:678:9c:ffff:ffff:ffff:ffff:ffff,SK
-2001:678:a0::,2001:678:a0:ffff:ffff:ffff:ffff:ffff,FI
-2001:678:a4::,2001:678:a4:ffff:ffff:ffff:ffff:ffff,AT
-2001:678:a8::,2001:678:a8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:ac::,2001:678:ac:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:b0::,2001:678:b3:ffff:ffff:ffff:ffff:ffff,IR
-2001:678:c0::,2001:678:c0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:c4::,2001:678:c4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:c8::,2001:678:c8:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:cc::,2001:678:cc:ffff:ffff:ffff:ffff:ffff,SA
-2001:678:d0::,2001:678:d0:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:d4::,2001:678:d4:ffff:ffff:ffff:ffff:ffff,IT
-2001:678:d8::,2001:678:d8:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:dc::,2001:678:dc:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:e0::,2001:678:e0:ffff:ffff:ffff:ffff:ffff,MD
-2001:678:e4::,2001:678:e4:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:e8::,2001:678:e8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:ec::,2001:678:ec:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:f0::,2001:678:f0:7fff:ffff:ffff:ffff:ffff,SE
-2001:678:f0:8000::,2001:678:f0:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:f4::,2001:678:f4:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:f8::,2001:678:f8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:fc::,2001:678:fc:ffff:ffff:ffff:ffff:ffff,LT
+2001:678:80::,2001:678:ff:ffff:ffff:ffff:ffff:ffff,UA
2001:678:100::,2001:678:100:ffff:ffff:ffff:ffff:ffff,BG
2001:678:104::,2001:678:104:ffff:ffff:ffff:ffff:ffff,CZ
2001:678:108::,2001:678:108:ffff:ffff:ffff:ffff:ffff,NL
@@ -1280,6 +662,7 @@
2001:678:144::,2001:678:144:ffff:ffff:ffff:ffff:ffff,UA
2001:678:148::,2001:678:148:ffff:ffff:ffff:ffff:ffff,FI
2001:678:14c::,2001:678:14c:ffff:ffff:ffff:ffff:ffff,UA
+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
@@ -1296,6 +679,7 @@
2001:678:188::,2001:678:188:ffff:ffff:ffff:ffff:ffff,UZ
2001:678:18c::,2001:678:18c:ffff:ffff:ffff:ffff:ffff,AT
2001:678:190::,2001:678:190:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:194::,2001:678:194:ffff:ffff:ffff:ffff:ffff,DE
2001:678:198::,2001:678:198:ffff:ffff:ffff:ffff:ffff,NL
2001:678:19c::,2001:678:19c:ffff:ffff:ffff:ffff:ffff,SE
2001:678:1a0::,2001:678:1a0:ffff:ffff:ffff:ffff:ffff,SE
@@ -1325,7 +709,7 @@
2001:678:200::,2001:678:200:ffff:ffff:ffff:ffff:ffff,PL
2001:678:204::,2001:678:204:ffff:ffff:ffff:ffff:ffff,CH
2001:678:208::,2001:678:208:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:20c::,2001:678:20c:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:210::,2001:678:210:ffff:ffff:ffff:ffff:ffff,LU
2001:678:214::,2001:678:214:ffff:ffff:ffff:ffff:ffff,HU
2001:678:218::,2001:678:218:ffff:ffff:ffff:ffff:ffff,RO
2001:678:21c::,2001:678:21c:ffff:ffff:ffff:ffff:ffff,UA
@@ -1343,7 +727,6 @@
2001:678:24c::,2001:678:24c:ffff:ffff:ffff:ffff:ffff,LT
2001:678:250::,2001:678:250:ffff:ffff:ffff:ffff:ffff,NL
2001:678:254::,2001:678:254:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:258::,2001:678:258:ffff:ffff:ffff:ffff:ffff,GB
2001:678:25c::,2001:678:25c:ffff:ffff:ffff:ffff:ffff,LU
2001:678:260::,2001:678:260:ffff:ffff:ffff:ffff:ffff,CH
2001:678:264::,2001:678:264:ffff:ffff:ffff:ffff:ffff,NL
@@ -1353,65 +736,7 @@
2001:678:274::,2001:678:274:ffff:ffff:ffff:ffff:ffff,DE
2001:678:278::,2001:678:278:ffff:ffff:ffff:ffff:ffff,RU
2001:678:27c::,2001:678:27c:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:280::,2001:678:280:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:284::,2001:678:284:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:288::,2001:678:288:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:28c::,2001:678:28c:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:290::,2001:678:290:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:294::,2001:678:294:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:298::,2001:678:298:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:29c::,2001:678:29c:ffff:ffff:ffff:ffff:ffff,SI
-2001:678:2a0::,2001:678:2a0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2a4::,2001:678:2a4:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:2a8::,2001:678:2a8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2ac::,2001:678:2ac:ffff:ffff:ffff:ffff:ffff,RO
-2001:678:2b0::,2001:678:2b0:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:2b4::,2001:678:2b4:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:2b8::,2001:678:2b9:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2c0::,2001:678:2c0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2c4::,2001:678:2c4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2c8::,2001:678:2c8:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:2cc::,2001:678:2cc:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2d0::,2001:678:2d0:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:2d4::,2001:678:2d4:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:2d8::,2001:678:2d8:ffff:ffff:ffff:ffff:ffff,AT
-2001:678:2dc::,2001:678:2dc:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:2e0::,2001:678:2e0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2e4::,2001:678:2e4:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:2e8::,2001:678:2e8:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:2ec::,2001:678:2ec:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:2f0::,2001:678:2f0:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:2f4::,2001:678:2f4:ffff:ffff:ffff:ffff:ffff,IL
-2001:678:2f8::,2001:678:2f8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:2fc::,2001:678:2fc:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:300::,2001:678:303:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:310::,2001:678:310:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:314::,2001:678:314:ffff:ffff:ffff:ffff:ffff,RO
-2001:678:318::,2001:678:318:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:31c::,2001:678:31c:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:320::,2001:678:320:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:324::,2001:678:324:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:328::,2001:678:328:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:32c::,2001:678:32c:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:330::,2001:678:330:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:334::,2001:678:334:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:338::,2001:678:338:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:33c::,2001:678:33c:ffff:ffff:ffff:ffff:ffff,DK
-2001:678:340::,2001:678:340:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:344::,2001:678:344:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:348::,2001:678:348:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:34c::,2001:678:34c:ffff:ffff:ffff:ffff:ffff,US
-2001:678:350::,2001:678:350:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:354::,2001:678:354:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:358::,2001:678:358:ffff:ffff:ffff:ffff:ffff,IE
-2001:678:35c::,2001:678:35c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:360::,2001:678:360:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:364::,2001:678:364:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:36c::,2001:678:36c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:370::,2001:678:370:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:374::,2001:678:374:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:378::,2001:678:378:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:37c::,2001:678:37c:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:280::,2001:678:37f:ffff:ffff:ffff:ffff:ffff,UA
2001:678:380::,2001:678:380:ffff:ffff:ffff:ffff:ffff,PL
2001:678:384::,2001:678:384:ffff:ffff:ffff:ffff:ffff,RU
2001:678:388::,2001:678:388:ffff:ffff:ffff:ffff:ffff,PL
@@ -1452,7 +777,6 @@
2001:678:414::,2001:678:414:ffff:ffff:ffff:ffff:ffff,DE
2001:678:418::,2001:678:418:ffff:ffff:ffff:ffff:ffff,GB
2001:678:41c::,2001:678:41c:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:420::,2001:678:420:ffff:ffff:ffff:ffff:ffff,RU
2001:678:424::,2001:678:424:ffff:ffff:ffff:ffff:ffff,GB
2001:678:428::,2001:678:428:ffff:ffff:ffff:ffff:ffff,NL
2001:678:42c::,2001:678:42c:ffff:ffff:ffff:ffff:ffff,SI
@@ -1551,42 +875,91 @@
2001:678:5a4::,2001:678:5a4:ffff:ffff:ffff:ffff:ffff,CZ
2001:678:5a8::,2001:678:5a8:ffff:ffff:ffff:ffff:ffff,AT
2001:678:5ac::,2001:678:5ac:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c::,2001:67c::ffff:ffff:ffff:ffff:ffff,IE
-2001:67c:4::,2001:67c:4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:8::,2001:67c:8:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:c::,2001:67c:c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:10::,2001:67c:10:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:14::,2001:67c:14:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:18::,2001:67c:18:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:1c::,2001:67c:1c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:20::,2001:67c:20:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:24::,2001:67c:24:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:28::,2001:67c:28:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2c::,2001:67c:2c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:30::,2001:67c:30:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:34::,2001:67c:34:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:38::,2001:67c:38:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:3c::,2001:67c:3c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:40::,2001:67c:40:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:44::,2001:67c:44:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:48::,2001:67c:48:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:4c::,2001:67c:4c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:50::,2001:67c:50:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:54::,2001:67c:54:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:58::,2001:67c:58:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:5c::,2001:67c:5c:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:60::,2001:67c:60:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:5b0::,2001:678:5b1:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:5b8::,2001:678:5b8:ffff:ffff:ffff:ffff:ffff,SI
+2001:678:5bc::,2001:678:5bc:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:5c0::,2001:678:5c0:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:5c4::,2001:678:5c4:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:5c8::,2001:678:5c8:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:5cc::,2001:678:5cc:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:5d0::,2001:678:5d0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:5d4::,2001:678:5d4:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:5d8::,2001:678:5d8:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:5dc::,2001:678:5dc:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:5e0::,2001:678:5e0:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:5e4::,2001:678:5e4:ffff:ffff:ffff:ffff:ffff,US
+2001:678:5e8::,2001:678:5e8:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:5ec::,2001:678:5ec:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:5f0::,2001:678:5f0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:5f4::,2001:678:5f4:ffff:ffff:ffff:ffff:ffff,PS
+2001:678:5f8::,2001:678:5f8:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:5fc::,2001:678:5fc:ffff:ffff:ffff:ffff:ffff,KG
+2001:678:600::,2001:678:600:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:604::,2001:678:604:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:608::,2001:678:608:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:60c::,2001:678:60c:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:610::,2001:678:610:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:614::,2001:678:614:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:618::,2001:678:618:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:61c::,2001:678:61c:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:620::,2001:678:620:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:624::,2001:678:624:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:628::,2001:678:628:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:62c::,2001:678:62c:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:630::,2001:678:630:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:634::,2001:678:634:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:638::,2001:678:638:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:63c::,2001:678:63c:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:640::,2001:678:640:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:644::,2001:678:644:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:648::,2001:678:649:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:650::,2001:678:650:ffff:ffff:ffff:ffff:ffff,TJ
+2001:678:654::,2001:678:654:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:658::,2001:678:658:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:65c::,2001:678:65c:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:660::,2001:678:660:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:664::,2001:678:664:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:668::,2001:678:668:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:66c::,2001:678:66c:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:670::,2001:678:670:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:674::,2001:678:674:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:678::,2001:678:678:ffff:ffff:ffff:ffff:ffff,CH
+2001:678:67c::,2001:678:67c:ffff:ffff:ffff:ffff:ffff,DK
+2001:678:680::,2001:678:680:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:684::,2001:678:684:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:688::,2001:678:688:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:68c::,2001:678:68c:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:690::,2001:678:690:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:694::,2001:678:694:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:698::,2001:678:698:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:69c::,2001:678:69c:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:6a0::,2001:678:6a0:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:6a4::,2001:678:6a4:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:6a8::,2001:678:6a8:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:6ac::,2001:678:6ac:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:6b0::,2001:678:6b0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:6b4::,2001:678:6b4:ffff:ffff:ffff:ffff:ffff,SI
+2001:678:6b8::,2001:678:6b8:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:6bc::,2001:678:6bc:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:6c0::,2001:678:6c0:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:6c4::,2001:678:6c4:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:6c8::,2001:678:6c8:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:6cc::,2001:678:6cc:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:6d0::,2001:678:6d0:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:6d4::,2001:678:6d4:ffff:ffff:ffff:ffff:ffff,MD
+2001:678:6d8::,2001:678:6d8:ffff:ffff:ffff:ffff:ffff,EE
+2001:678:6dc::,2001:678:6dc:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:6e0::,2001:678:6e7:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:700::,2001:678:700:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:704::,2001:678:704:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:708::,2001:678:708:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:70c::,2001:678:70c: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:68::,2001:67c:68:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:6c::,2001:67c:6c:ffff:ffff:ffff:ffff:ffff,IS
-2001:67c:70::,2001:67c:70:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:74::,2001:67c:74:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:78::,2001:67c:78:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:7c::,2001:67c:7c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:65::,2001:67c:7f:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:80::,2001:67c:80:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:84::,2001:67c:84:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:88::,2001:67c:88:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:8c::,2001:67c:8c:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:90::,2001:67c:90:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:94::,2001:67c:94:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:98::,2001:67c:98:ffff:ffff:ffff:ffff:ffff,CH
@@ -1599,22 +972,7 @@
2001:67c:b4::,2001:67c:b4:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:b8::,2001:67c:b8:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:bc::,2001:67c:bc:ffff:ffff:ffff:ffff:ffff,EE
-2001:67c:c0::,2001:67c:c0:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:c4::,2001:67c:c4:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:c8::,2001:67c:c8:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:cc::,2001:67c:cc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:d0::,2001:67c:d0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:d4::,2001:67c:d4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:d8::,2001:67c:d8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:dc::,2001:67c:dc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:e0::,2001:67c:e0:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:e4::,2001:67c:e4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:e8::,2001:67c:e8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:ec::,2001:67c:ec:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:f0::,2001:67c:f0:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:f4::,2001:67c:f4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:f8::,2001:67c:f8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:fc::,2001:67c:fc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:c0::,2001:67c:ff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:100::,2001:67c:100:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:104::,2001:67c:104:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:10c::,2001:67c:10c:ffff:ffff:ffff:ffff:ffff,GB
@@ -1643,8 +1001,7 @@
2001:67c:168::,2001:67c:168:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:16c::,2001:67c:16c:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:170::,2001:67c:170:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:174::,2001:67c:174:7fff:ffff:ffff:ffff:ffff,NL
-2001:67c:174:8000::,2001:67c:174:ffff:ffff:ffff:ffff:ffff,SM
+2001:67c:174::,2001:67c:174:ffff:ffff:ffff:ffff:ffff,SM
2001:67c:178::,2001:67c:178:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:17c::,2001:67c:17c:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:180::,2001:67c:180:ffff:ffff:ffff:ffff:ffff,AT
@@ -1711,70 +1068,13 @@
2001:67c:274::,2001:67c:274:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:278::,2001:67c:278:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:27c::,2001:67c:27c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:280::,2001:67c:280:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:284::,2001:67c:284:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:288::,2001:67c:288:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:28c::,2001:67c:28c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:290::,2001:67c:290:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:294::,2001:67c:294:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:298::,2001:67c:298:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:29c::,2001:67c:29c:ffff:ffff:ffff:ffff:ffff,IT
-2001:67c:2a0::,2001:67c:2a0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2a4::,2001:67c:2a4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2a8::,2001:67c:2a8:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2ac::,2001:67c:2ac:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2b0::,2001:67c:2b0:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2b4::,2001:67c:2b4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2b8::,2001:67c:2b8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2bc::,2001:67c:2bc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c0::,2001:67c:2c0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2c4::,2001:67c:2c4:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c8::,2001:67c:2c8:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2cc::,2001:67c:2cc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d0::,2001:67c:2d0:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2d4::,2001:67c:2d4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2d8::,2001:67c:2d8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2dc::,2001:67c:2dc:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2e0::,2001:67c:2e0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2e4::,2001:67c:2e4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2e8::,2001:67c:2e8:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2ec::,2001:67c:2ec:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:280::,2001:67c:2bf:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2c0::,2001:67c:2ef:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2f0::,2001:67c:2f0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2f4::,2001:67c:2f4:ffff:ffff:ffff:ffff:ffff,LU
-2001:67c:2f8::,2001:67c:2f8:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2fc::,2001:67c:2fc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:300::,2001:67c:300:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:304::,2001:67c:304:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:308::,2001:67c:308:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:30c::,2001:67c:30c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:310::,2001:67c:310:ffff:ffff:ffff:ffff:ffff,CY
-2001:67c:314::,2001:67c:314:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:318::,2001:67c:318:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:31c::,2001:67c:31c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:320::,2001:67c:320:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:324::,2001:67c:324:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:328::,2001:67c:328:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:32c::,2001:67c:32c:ffff:ffff:ffff:ffff:ffff,EE
-2001:67c:330::,2001:67c:330:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:334::,2001:67c:334:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:338::,2001:67c:338:ffff:ffff:ffff:ffff:ffff,IE
-2001:67c:33c::,2001:67c:33c:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:340::,2001:67c:340:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:344::,2001:67c:344:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:348::,2001:67c:348:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:34c::,2001:67c:34c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:350::,2001:67c:350:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:354::,2001:67c:354:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:358::,2001:67c:358:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:35c::,2001:67c:35c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:360::,2001:67c:360:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:364::,2001:67c:364:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:368::,2001:67c:368:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:36c::,2001:67c:36c:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:370::,2001:67c:370:ffff:ffff:ffff:ffff:ffff,SG
-2001:67c:374::,2001:67c:374:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:378::,2001:67c:378:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:37c::,2001:67c:37c:ffff:ffff:ffff:ffff:ffff,CH
+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: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
2001:67c:388::,2001:67c:388:ffff:ffff:ffff:ffff:ffff,DE
@@ -1806,6 +1106,7 @@
2001:67c:3f4::,2001:67c:3f4:ffff:ffff:ffff:ffff:ffff,HR
2001:67c:3f8::,2001:67c:3f8:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:3fc::,2001:67c:3fc:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:400::,2001:67c:400:ffff:ffff:ffff:ffff:ffff,ES
2001:67c:404::,2001:67c:404:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:408::,2001:67c:408:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:40c::,2001:67c:40c:ffff:ffff:ffff:ffff:ffff,SE
@@ -1819,16 +1120,12 @@
2001:67c:42c::,2001:67c:42c:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:430::,2001:67c:430:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:434::,2001:67c:434:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:438::,2001:67c:438:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:438::,2001:67c:438:ff:ffff:ffff:ffff:ffff,RU
+2001:67c:438:100::,2001:67c:438:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:43c::,2001:67c:43c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:440::,2001:67c:440:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:444::,2001:67c:444:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:448::,2001:67c:448:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:44c::,2001:67c:44c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:450::,2001:67c:450:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:454::,2001:67c:454:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:440::,2001:67c:457:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:458::,2001:67c:458:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:45c::,2001:67c:45c:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:459::,2001:67c:45f:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:460::,2001:67c:460:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:464::,2001:67c:464:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:468::,2001:67c:468:ffff:ffff:ffff:ffff:ffff,PL
@@ -1869,22 +1166,8 @@
2001:67c:4f4::,2001:67c:4f4:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:4f8::,2001:67c:4f8:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:4fc::,2001:67c:4fc:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:500::,2001:67c:500:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:504::,2001:67c:504:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:508::,2001:67c:508:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:50c::,2001:67c:50c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:510::,2001:67c:510:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:514::,2001:67c:514:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:518::,2001:67c:518:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:51c::,2001:67c:51c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:520::,2001:67c:520:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:524::,2001:67c:524:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:528::,2001:67c:528:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:52c::,2001:67c:52c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:530::,2001:67c:530:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:534::,2001:67c:534:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:538::,2001:67c:538:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:53c::,2001:67c:53c:ffff:ffff:ffff:ffff:ffff,HR
+2001:67c:500::,2001:67c:51f:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:520::,2001:67c:53f:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:540::,2001:67c:540:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:544::,2001:67c:544:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:548::,2001:67c:548:ffff:ffff:ffff:ffff:ffff,SI
@@ -1904,7 +1187,6 @@
2001:67c:580::,2001:67c:580:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:584::,2001:67c:584:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:588::,2001:67c:588:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:58c::,2001:67c:58c:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:590::,2001:67c:590:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:594::,2001:67c:594:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:598::,2001:67c:598:ffff:ffff:ffff:ffff:ffff,NO
@@ -1951,7 +1233,6 @@
2001:67c:640::,2001:67c:640:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:644::,2001:67c:644:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:648::,2001:67c:648:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:64c::,2001:67c:64c:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:650::,2001:67c:650:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:654::,2001:67c:654:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:658::,2001:67c:658:ffff:ffff:ffff:ffff:ffff,CZ
@@ -1980,22 +1261,7 @@
2001:67c:6b4::,2001:67c:6b4:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:6b8::,2001:67c:6b8:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:6bc::,2001:67c:6bc:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:6c0::,2001:67c:6c0:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:6c4::,2001:67c:6c4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:6c8::,2001:67c:6c8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:6cc::,2001:67c:6cc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:6d0::,2001:67c:6d0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:6d4::,2001:67c:6d4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:6d8::,2001:67c:6d8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:6dc::,2001:67c:6dc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:6e0::,2001:67c:6e0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:6e4::,2001:67c:6e4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:6e8::,2001:67c:6e8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:6ec::,2001:67c:6ec:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:6f0::,2001:67c:6f0:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:6f4::,2001:67c:6f4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:6f8::,2001:67c:6f8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:6fc::,2001:67c:6fc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:6c0::,2001:67c:6ff:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:700::,2001:67c:700:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:704::,2001:67c:704:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:708::,2001:67c:708:ffff:ffff:ffff:ffff:ffff,DE
@@ -2022,7 +1288,6 @@
2001:67c:75c::,2001:67c:75c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:760::,2001:67c:760:ffff:ffff:ffff:ffff:ffff,LV
2001:67c:764::,2001:67c:764:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:768::,2001:67c:768:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:76c::,2001:67c:76c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:770::,2001:67c:770:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:774::,2001:67c:774:ffff:ffff:ffff:ffff:ffff,NO
@@ -2064,6 +1329,7 @@
2001:67c:1020::,2001:67c:1021:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:1028::,2001:67c:1029:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1030::,2001:67c:1030:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:1034::,2001:67c:1034:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1038::,2001:67c:1038:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:103c::,2001:67c:103c:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:1040::,2001:67c:1040:ffff:ffff:ffff:ffff:ffff,DE
@@ -2081,36 +1347,9 @@
2001:67c:1070::,2001:67c:1071:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:1078::,2001:67c:1078:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:107c::,2001:67c:107c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1080::,2001:67c:1080:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:1084::,2001:67c:1084:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1088::,2001:67c:1089:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1090::,2001:67c:1090:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1080::,2001:67c:1093:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1094::,2001:67c:1094:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1098::,2001:67c:1098:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:109c::,2001:67c:109c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:10a0::,2001:67c:10a0:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:10a4::,2001:67c:10a4:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:10a8::,2001:67c:10a9:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:10b0::,2001:67c:10b0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:10b4::,2001:67c:10b4:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:10b8::,2001:67c:10b8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:10bc::,2001:67c:10bc:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:10c0::,2001:67c:10c0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10c4::,2001:67c:10c4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:10c8::,2001:67c:10c8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10cc::,2001:67c:10cc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10d0::,2001:67c:10d0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10d4::,2001:67c:10d4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:10d8::,2001:67c:10d8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:10dc::,2001:67c:10dc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10e0::,2001:67c:10e0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:10e4::,2001:67c:10e4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:10e8::,2001:67c:10e8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:10ec::,2001:67c:10ec:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:10f0::,2001:67c:10f0:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:10f4::,2001:67c:10f4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:10f8::,2001:67c:10f8:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:10fc::,2001:67c:10fc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1095::,2001:67c:10ff:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1100::,2001:67c:1100:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1104::,2001:67c:1104:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1108::,2001:67c:1109:ffff:ffff:ffff:ffff:ffff,FR
@@ -2141,91 +1380,11 @@
2001:67c:1174::,2001:67c:1174:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1178::,2001:67c:1178:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:117c::,2001:67c:117c:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:1180::,2001:67c:1180:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1184::,2001:67c:1184:ffff:ffff:ffff:ffff:ffff,HR
-2001:67c:1188::,2001:67c:1188:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:118c::,2001:67c:118c:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:1190::,2001:67c:1190:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1194::,2001:67c:1194:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1198::,2001:67c:1199:ffff:ffff:ffff:ffff:ffff,SA
-2001:67c:11a0::,2001:67c:11a0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:11a4::,2001:67c:11a4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:11a8::,2001:67c:11a8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:11ac::,2001:67c:11ac:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:11b0::,2001:67c:11b0:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:11b4::,2001:67c:11b4:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:11b8::,2001:67c:11b8:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:11bc::,2001:67c:11bc:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:11c0::,2001:67c:11c0:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:11c4::,2001:67c:11c4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:11c8::,2001:67c:11c8:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:11cc::,2001:67c:11cc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:11d0::,2001:67c:11d0:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:11d4::,2001:67c:11d4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:11d8::,2001:67c:11d8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:11dc::,2001:67c:11dc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:11e0::,2001:67c:11e0:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:11e4::,2001:67c:11e4:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:11e8::,2001:67c:11e8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:11ec::,2001:67c:11ec:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:11f0::,2001:67c:11f0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:11f4::,2001:67c:11f4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:11f8::,2001:67c:11f8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:11fc::,2001:67c:11fc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1200::,2001:67c:1200:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:1204::,2001:67c:1204:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1208::,2001:67c:1208:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:120c::,2001:67c:120c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1210::,2001:67c:1213:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1220::,2001:67c:1223:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1230::,2001:67c:1233:ffff:ffff:ffff:ffff:ffff,SG
-2001:67c:1240::,2001:67c:1240:ffff:ffff:ffff:ffff:ffff,IE
-2001:67c:1244::,2001:67c:1244:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1248::,2001:67c:1248:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:124c::,2001:67c:124c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1250::,2001:67c:1250:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:1254::,2001:67c:1254:7fff:ffff:ffff:ffff:ffff,JP
-2001:67c:1254:8000::,2001:67c:1254:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:1258::,2001:67c:1258:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:125c::,2001:67c:125c:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:1260::,2001:67c:1260:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1264::,2001:67c:1264:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1268::,2001:67c:1268:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:126c::,2001:67c:126c:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:1270::,2001:67c:1270:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1274::,2001:67c:1274:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1278::,2001:67c:1278:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:127c::,2001:67c:127c:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:1280::,2001:67c:1280:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:1284::,2001:67c:1284:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:1288::,2001:67c:1288:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:128c::,2001:67c:128c:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:1290::,2001:67c:1290:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1294::,2001:67c:1294:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1298::,2001:67c:1298:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:129c::,2001:67c:129c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:12a0::,2001:67c:12a0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:12a4::,2001:67c:12a4:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:12a8::,2001:67c:12a8:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:12ac::,2001:67c:12ac:ffff:ffff:ffff:ffff:ffff,LU
-2001:67c:12b0::,2001:67c:12b0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:12b4::,2001:67c:12b4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:12b8::,2001:67c:12b8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:12bc::,2001:67c:12bc:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:12c0::,2001:67c:12c1:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:12c8::,2001:67c:12c8:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:12cc::,2001:67c:12cc:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:12d0::,2001:67c:12d0:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:12d4::,2001:67c:12d4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:12d8::,2001:67c:12d8:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:12dc::,2001:67c:12dc:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:12e0::,2001:67c:12e0:ffff:ffff:ffff:ffff:ffff,KG
-2001:67c:12e4::,2001:67c:12e4:ffff:ffff:ffff:ffff:ffff,SA
-2001:67c:12e8::,2001:67c:12e9:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:12f0::,2001:67c:12f0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:12f4::,2001:67c:12f4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:12f8::,2001:67c:12f8:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:12fc::,2001:67c:12fc:ffff:ffff:ffff:ffff:ffff,PL
+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: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
2001:67c:1304::,2001:67c:1304:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1308::,2001:67c:1308:ffff:ffff:ffff:ffff:ffff,GB
@@ -2258,41 +1417,11 @@
2001:67c:1374::,2001:67c:1374:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1378::,2001:67c:1378:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:137c::,2001:67c:137c:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:1380::,2001:67c:1380:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1384::,2001:67c:1384:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1388::,2001:67c:1388:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:138c::,2001:67c:138c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1390::,2001:67c:1390:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1394::,2001:67c:1394:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:1398::,2001:67c:1398:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:139c::,2001:67c:139c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:13a0::,2001:67c:13a0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:13a4::,2001:67c:13a4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:13a8::,2001:67c:13a8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:13ac::,2001:67c:13ac:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:13b0::,2001:67c:13b0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:13b4::,2001:67c:13b4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:13b8::,2001:67c:13b8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:13bc::,2001:67c:13bc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:13c0::,2001:67c:13c0:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:13c4::,2001:67c:13c4:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:13c8::,2001:67c:13c8:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:13cc::,2001:67c:13cc:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:13d0::,2001:67c:13d0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:13d4::,2001:67c:13d4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:13d8::,2001:67c:13d8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:13dc::,2001:67c:13dc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:13e0::,2001:67c:13e0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:13e4::,2001:67c:13e4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:13e8::,2001:67c:13e8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:13ec::,2001:67c:13ec:ffff:ffff:ffff:ffff:ffff,PT
-2001:67c:13f0::,2001:67c:13f0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:13f4::,2001:67c:13f4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:13f8::,2001:67c:13f8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:13fc::,2001:67c:13fc:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1380::,2001:67c:13ff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:1400::,2001:67c:1407:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1420::,2001:67c:1420:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:1424::,2001:67c:1424:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:1428::,2001:67c:1428:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:142c::,2001:67c:142c:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1430::,2001:67c:1430:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1434::,2001:67c:1434:ffff:ffff:ffff:ffff:ffff,AT
@@ -2348,9 +1477,7 @@
2001:67c:1554::,2001:67c:1554:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:1558::,2001:67c:1558:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:155c::,2001:67c:155c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1560::,2001:67c:1562:7fff:ffff:ffff:ffff:ffff,GB
-2001:67c:1562:8000::,2001:67c:1562:ffff:ffff:ffff:ffff:ffff,AU
-2001:67c:1563::,2001:67c:1563:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1560::,2001:67c:1563:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1570::,2001:67c:1570:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1574::,2001:67c:1574:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1578::,2001:67c:1578:ffff:ffff:ffff:ffff:ffff,CZ
@@ -2385,40 +1512,11 @@
2001:67c:15fc::,2001:67c:15fc:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1600::,2001:67c:160f:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1640::,2001:67c:164f:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:1680::,2001:67c:1680:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1684::,2001:67c:1684:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:1688::,2001:67c:1688:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:168c::,2001:67c:168c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:1690::,2001:67c:1690:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:1694::,2001:67c:1694:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1698::,2001:67c:1698:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:169c::,2001:67c:169c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:16a0::,2001:67c:16a0:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:16a4::,2001:67c:16a4:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:16a8::,2001:67c:16a8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:16ac::,2001:67c:16ac:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:16b0::,2001:67c:16b0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:16b4::,2001:67c:16b4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:16b8::,2001:67c:16b8:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:16bc::,2001:67c:16bc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:16c0::,2001:67c:16c0:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:16c4::,2001:67c:16c4:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:1680::,2001:67c:16c7:ffff:ffff:ffff:ffff:ffff,HR
2001:67c:16c8::,2001:67c:16c8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:16cc::,2001:67c:16cc:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:16d0::,2001:67c:16d1:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:16d8::,2001:67c:16d8:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:16dc::,2001:67c:16dc:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:16e0::,2001:67c:16e0:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:16e4::,2001:67c:16e4:ffff:ffff:ffff:ffff:ffff,HR
-2001:67c:16e8::,2001:67c:16e8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:16ec::,2001:67c:16ec:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:16f0::,2001:67c:16f0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:16f4::,2001:67c:16f4:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:16f8::,2001:67c:16f8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:16fc::,2001:67c:16fc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:16c9::,2001:67c:16ff:ffff:ffff:ffff:ffff:ffff,HR
2001:67c:1700::,2001:67c:1700:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1704::,2001:67c:1704:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1708::,2001:67c:1708:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:170c::,2001:67c:170c:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:1710::,2001:67c:1710:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1714::,2001:67c:1714:ffff:ffff:ffff:ffff:ffff,DE
@@ -2429,8 +1527,7 @@
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
-2001:67c:1738::,2001:67c:1738:7fff:ffff:ffff:ffff:ffff,UA
-2001:67c:1738:8000::,2001:67c:1738:ffff:ffff:ffff:ffff:ffff,IL
+2001:67c:1738::,2001:67c:1738:ffff:ffff:ffff:ffff:ffff,IL
2001:67c:173c::,2001:67c:173c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1740::,2001:67c:1740:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1744::,2001:67c:1744:ffff:ffff:ffff:ffff:ffff,DK
@@ -2442,7 +1539,6 @@
2001:67c:175c::,2001:67c:175c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1760::,2001:67c:1760:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:1764::,2001:67c:1764:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:1768::,2001:67c:1768:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:176c::,2001:67c:176c:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:1770::,2001:67c:1770:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1774::,2001:67c:1774:ffff:ffff:ffff:ffff:ffff,RU
@@ -2458,7 +1554,6 @@
2001:67c:179c::,2001:67c:179c:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:17a0::,2001:67c:17a0:ffff:ffff:ffff:ffff:ffff,FI
2001:67c:17a4::,2001:67c:17a4:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:17a8::,2001:67c:17a8:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:17ac::,2001:67c:17ac:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:17b0::,2001:67c:17b0:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:17b4::,2001:67c:17b4:ffff:ffff:ffff:ffff:ffff,CZ
@@ -2483,8 +1578,7 @@
2001:67c:1800::,2001:67c:1800:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1804::,2001:67c:1804:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:1808::,2001:67c:1809:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:1810::,2001:67c:1810:7fff:ffff:ffff:ffff:ffff,BE
-2001:67c:1810:8000::,2001:67c:1810:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:1810::,2001:67c:1810:ffff:ffff:ffff:ffff:ffff,BE
2001:67c:1814::,2001:67c:1814:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1818::,2001:67c:1818:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:181c::,2001:67c:181c:ffff:ffff:ffff:ffff:ffff,DE
@@ -2541,6 +1635,7 @@
2001:67c:18ec::,2001:67c:18ec:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:18f0::,2001:67c:18f0:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:18f4::,2001:67c:18f4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:18f8::,2001:67c:18f8:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:18fc::,2001:67c:18fc:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1900::,2001:67c:1903:ffff:ffff:ffff:ffff:ffff,BE
2001:67c:1910::,2001:67c:1910:ffff:ffff:ffff:ffff:ffff,SE
@@ -2560,6 +1655,7 @@
2001:67c:1954::,2001:67c:1954:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1958::,2001:67c:1958:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:195c::,2001:67c:195c:ffff:ffff:ffff:ffff:ffff,ES
+2001:67c:1964::,2001:67c:1964:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:1968::,2001:67c:1968:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:196c::,2001:67c:196c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1970::,2001:67c:1970:ffff:ffff:ffff:ffff:ffff,RU
@@ -2569,8 +1665,6 @@
2001:67c:1980::,2001:67c:1980:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1984::,2001:67c:1984:ffff:ffff:ffff:ffff:ffff,BG
2001:67c:1988::,2001:67c:1988:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:198c::,2001:67c:198c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1990::,2001:67c:1990:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:1994::,2001:67c:1994:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1998::,2001:67c:1998:ffff:ffff:ffff:ffff:ffff,LU
2001:67c:199c::,2001:67c:199c:ffff:ffff:ffff:ffff:ffff,DE
@@ -2588,6 +1682,7 @@
2001:67c:19d8::,2001:67c:19d8:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:19dc::,2001:67c:19dc:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:19e0::,2001:67c:19e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:19e4::,2001:67c:19e4:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:19e8::,2001:67c:19e8:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:19ec::,2001:67c:19ec:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:19f0::,2001:67c:19f0:ffff:ffff:ffff:ffff:ffff,RU
@@ -2595,36 +1690,15 @@
2001:67c:19f8::,2001:67c:19f8:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:19fc::,2001:67c:19fc:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1a00::,2001:67c:1a3f:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:1b00::,2001:67c:1b00:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1b04::,2001:67c:1b04:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1b00::,2001:67c:1b07:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:1b08::,2001:67c:1b08:ffff:ffff:ffff:ffff:ffff,IT
-2001:67c:1b0c::,2001:67c:1b0c:ffff:ffff:ffff:ffff:ffff,SA
-2001:67c:1b10::,2001:67c:1b10:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1b14::,2001:67c:1b14:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1b18::,2001:67c:1b18:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1b1c::,2001:67c:1b1c:ffff:ffff:ffff:ffff:ffff,LU
-2001:67c:1b24::,2001:67c:1b24:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1b28::,2001:67c:1b28:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1b2c::,2001:67c:1b2c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1b34::,2001:67c:1b34:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1b38::,2001:67c:1b38:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:1b3c::,2001:67c:1b3c:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:1b40::,2001:67c:1b43:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1b50::,2001:67c:1b50:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1b58::,2001:67c:1b59:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:1b60::,2001:67c:1b60:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1b64::,2001:67c:1b64:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1b68::,2001:67c:1b68:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1b6c::,2001:67c:1b6c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1b70::,2001:67c:1b70:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:1b74::,2001:67c:1b74:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:1b78::,2001:67c:1b78:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:1b7c::,2001:67c:1b7c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1b09::,2001:67c:1b7f:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:1b80::,2001:67c:1b80:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1b84::,2001:67c:1b84:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1b88::,2001:67c:1b88:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:1b8c::,2001:67c:1b8c:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:1b90::,2001:67c:1b90:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1b94::,2001:67c:1b94:ffff:ffff:ffff:ffff:ffff,HU
2001:67c:1b98::,2001:67c:1b98:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1b9c::,2001:67c:1b9c:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:1ba0::,2001:67c:1ba0:ffff:ffff:ffff:ffff:ffff,AT
@@ -2642,6 +1716,7 @@
2001:67c:1bd0::,2001:67c:1bd0:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1bd4::,2001:67c:1bd4:ffff:ffff:ffff:ffff:ffff,SK
2001:67c:1bd8::,2001:67c:1bd8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1bdc::,2001:67c:1bdc:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1be0::,2001:67c:1be0:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1be4::,2001:67c:1be4:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1be8::,2001:67c:1be8:ffff:ffff:ffff:ffff:ffff,FI
@@ -2760,22 +1835,9 @@
2001:67c:21b4::,2001:67c:21b4:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:21b8::,2001:67c:21b8:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:21bc::,2001:67c:21bc:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:21c0::,2001:67c:21c0:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:21c4::,2001:67c:21c4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:21c8::,2001:67c:21c8:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:21cc::,2001:67c:21cc:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:21d0::,2001:67c:21d0:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:21d4::,2001:67c:21d4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:21d8::,2001:67c:21d8:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:21dc::,2001:67c:21dc:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:21e0::,2001:67c:21e0:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:21e4::,2001:67c:21e4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:21e8::,2001:67c:21e8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:21ec::,2001:67c:21ec:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:21f0::,2001:67c:21f0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:21f4::,2001:67c:21f4:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:21f8::,2001:67c:21f8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:21fc::,2001:67c:21fc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:21c0::,2001:67c:21df:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:21e0::,2001:67c:21ef:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:21f0::,2001:67c:21ff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2200::,2001:67c:2200:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:2204::,2001:67c:2204:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:2208::,2001:67c:2208:ffff:ffff:ffff:ffff:ffff,AT
@@ -2806,37 +1868,8 @@
2001:67c:2270::,2001:67c:2270:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:2274::,2001:67c:2274:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2278::,2001:67c:2278:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2280::,2001:67c:2280:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2284::,2001:67c:2284:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2288::,2001:67c:2288:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:228c::,2001:67c:228c:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2290::,2001:67c:2290:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2294::,2001:67c:2294:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:2298::,2001:67c:2298:ffff:ffff:ffff:ffff:ffff,US
-2001:67c:229c::,2001:67c:229c:ffff:ffff:ffff:ffff:ffff,GR
-2001:67c:22a0::,2001:67c:22a0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:22a4::,2001:67c:22a4:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:22a8::,2001:67c:22a8:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:22b0::,2001:67c:22b0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:22b4::,2001:67c:22b4:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:22b8::,2001:67c:22b8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:22bc::,2001:67c:22bc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:22c0::,2001:67c:22c0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:22c4::,2001:67c:22c4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:22c8::,2001:67c:22c8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:22cc::,2001:67c:22cc:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:22d0::,2001:67c:22d0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:22d4::,2001:67c:22d4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:22d8::,2001:67c:22d8:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:22dc::,2001:67c:22dc:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:22e0::,2001:67c:22e0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:22e4::,2001:67c:22e4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:22e8::,2001:67c:22e8:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:22ec::,2001:67c:22ec:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:22f0::,2001:67c:22f0:ffff:ffff:ffff:ffff:ffff,RS
-2001:67c:22f4::,2001:67c:22f4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:22f8::,2001:67c:22f8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:22fc::,2001:67c:22fc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:227c::,2001:67c:227c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2280::,2001:67c:22ff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2300::,2001:67c:2300:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:2304::,2001:67c:2304:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2308::,2001:67c:2308:ffff:ffff:ffff:ffff:ffff,DE
@@ -2845,61 +1878,12 @@
2001:67c:2314::,2001:67c:2314:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2318::,2001:67c:2318:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:231c::,2001:67c:231c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2320::,2001:67c:2320:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2324::,2001:67c:2324:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2328::,2001:67c:2328:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2320::,2001:67c:232b:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:232c::,2001:67c:232c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2330::,2001:67c:2330:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2334::,2001:67c:2334:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2338::,2001:67c:2338:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:233c::,2001:67c:233c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2340::,2001:67c:2340:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2344::,2001:67c:2344:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2348::,2001:67c:2348:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:234c::,2001:67c:234c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2350::,2001:67c:2350:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2354::,2001:67c:2354:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2358::,2001:67c:2358:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:235c::,2001:67c:235c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2360::,2001:67c:2360:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2364::,2001:67c:2364:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2368::,2001:67c:2368:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:236c::,2001:67c:236c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2370::,2001:67c:2370:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2374::,2001:67c:2374:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2378::,2001:67c:2378:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:237c::,2001:67c:237c:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2380::,2001:67c:2380:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2384::,2001:67c:2384:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2388::,2001:67c:2388:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:238c::,2001:67c:238c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2390::,2001:67c:2390:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2394::,2001:67c:2394:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2398::,2001:67c:2398:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:239c::,2001:67c:239c:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:23a0::,2001:67c:23a0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:23a4::,2001:67c:23a4:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:23a8::,2001:67c:23a8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:23ac::,2001:67c:23ac:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:23b0::,2001:67c:23b0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:23b4::,2001:67c:23b4:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:23b8::,2001:67c:23b8:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:23bc::,2001:67c:23bc:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:23c0::,2001:67c:23c0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:23c4::,2001:67c:23c4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:23c8::,2001:67c:23c8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:23cc::,2001:67c:23cc:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:23d0::,2001:67c:23d0:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:23d4::,2001:67c:23d4:ffff:ffff:ffff:ffff:ffff,EE
-2001:67c:23d8::,2001:67c:23d9:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:23e0::,2001:67c:23e0:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:23e4::,2001:67c:23e4:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:23e8::,2001:67c:23e8:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:23ec::,2001:67c:23ec:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:23f0::,2001:67c:23f0:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:23f4::,2001:67c:23f4:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:23f8::,2001:67c:23f8:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:23fc::,2001:67c:23fc:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:232d::,2001:67c:232f:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2330::,2001:67c:235f:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2360::,2001:67c:237f:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2380::,2001:67c:23ff:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:2400::,2001:67c:2400:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2404::,2001:67c:2404:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:2408::,2001:67c:2408:ffff:ffff:ffff:ffff:ffff,AE
@@ -2929,7 +1913,6 @@
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
@@ -2938,6 +1921,7 @@
2001:67c:2498::,2001:67c:2498:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:249c::,2001:67c:249c:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:24a0::,2001:67c:24a0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:24a4::,2001:67c:24a4:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:24a8::,2001:67c:24a8:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:24ac::,2001:67c:24ac:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:24b0::,2001:67c:24b0:ffff:ffff:ffff:ffff:ffff,DE
@@ -2994,6 +1978,7 @@
2001:67c:259c::,2001:67c:259c:ffff:ffff:ffff:ffff:ffff,AE
2001:67c:25a0::,2001:67c:25a0:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:25a4::,2001:67c:25a4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:25a8::,2001:67c:25a8:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:25ac::,2001:67c:25ac:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:25b0::,2001:67c:25b0:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:25b4::,2001:67c:25b4:ffff:ffff:ffff:ffff:ffff,SE
@@ -3024,27 +2009,12 @@
2001:67c:261c::,2001:67c:261c:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2620::,2001:67c:2620:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:2624::,2001:67c:2624:ffff:ffff:ffff:ffff:ffff,SA
-2001:67c:2628::,2001:67c:2628:ffff:ffff:ffff:ffff:ffff,LV
2001:67c:262c::,2001:67c:262c:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2630::,2001:67c:2630:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:2634::,2001:67c:2634:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:2638::,2001:67c:2638:ffff:ffff:ffff:ffff:ffff,SK
2001:67c:263c::,2001:67c:263c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2640::,2001:67c:2640:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:2644::,2001:67c:2644:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2648::,2001:67c:2648:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:264c::,2001:67c:264c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2650::,2001:67c:2650:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2654::,2001:67c:2654:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:2658::,2001:67c:2658:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:265c::,2001:67c:265c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2664::,2001:67c:2664:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2668::,2001:67c:2668:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:266c::,2001:67c:266c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2670::,2001:67c:2670:ffff:ffff:ffff:ffff:ffff,SK
-2001:67c:2674::,2001:67c:2674:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:267c::,2001:67c:267c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2680::,2001:67c:2680:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2640::,2001:67c:2680:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2684::,2001:67c:2684:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:2688::,2001:67c:2688:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:268c::,2001:67c:268c:ffff:ffff:ffff:ffff:ffff,SE
@@ -3104,70 +2074,8 @@
2001:67c:2770::,2001:67c:2770:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2774::,2001:67c:2774:ffff:ffff:ffff:ffff:ffff,AE
2001:67c:277c::,2001:67c:277c:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2780::,2001:67c:2780:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2784::,2001:67c:2784:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2788::,2001:67c:2788:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:278c::,2001:67c:278c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2790::,2001:67c:2790:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2794::,2001:67c:2794:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2798::,2001:67c:2798:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:279c::,2001:67c:279c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:27a0::,2001:67c:27a0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:27a4::,2001:67c:27a4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:27a8::,2001:67c:27a8:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:27ac::,2001:67c:27ac:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:27b0::,2001:67c:27b0:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:27b4::,2001:67c:27b4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:27b8::,2001:67c:27b8:ffff:ffff:ffff:ffff:ffff,SA
-2001:67c:27bc::,2001:67c:27bc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:27c0::,2001:67c:27c0:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:27c4::,2001:67c:27c4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:27c8::,2001:67c:27c8:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:27cc::,2001:67c:27cc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:27d0::,2001:67c:27d0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:27d4::,2001:67c:27d4:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:27d8::,2001:67c:27d8:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:27dc::,2001:67c:27dc:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:27e0::,2001:67c:27e0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:27e4::,2001:67c:27e4:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:27e8::,2001:67c:27e8:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:27ec::,2001:67c:27ec:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:27f0::,2001:67c:27f0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:27f4::,2001:67c:27f4:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:27f8::,2001:67c:27f8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:27fc::,2001:67c:27fc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2800::,2001:67c:2800:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2804::,2001:67c:2804:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2808::,2001:67c:2808:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:280c::,2001:67c:280c:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:2810::,2001:67c:2810:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2814::,2001:67c:2814:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2818::,2001:67c:2818:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:281c::,2001:67c:281c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2820::,2001:67c:2820:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2824::,2001:67c:2824:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2828::,2001:67c:2828:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:282c::,2001:67c:282c:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:2830::,2001:67c:2830:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2834::,2001:67c:2834:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2838::,2001:67c:2838:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:283c::,2001:67c:283c:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:2840::,2001:67c:2840:ffff:ffff:ffff:ffff:ffff,IL
-2001:67c:2844::,2001:67c:2844:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:2848::,2001:67c:2848:ffff:ffff:ffff:ffff:ffff,ES
-2001:67c:284c::,2001:67c:284c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2850::,2001:67c:2850:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2854::,2001:67c:2854:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2858::,2001:67c:2858:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:285c::,2001:67c:285c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2860::,2001:67c:2860:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2864::,2001:67c:2864:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2868::,2001:67c:2868:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:286c::,2001:67c:286c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2870::,2001:67c:2870:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2874::,2001:67c:2874:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2878::,2001:67c:2878:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:287c::,2001:67c:287c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2780::,2001:67c:27ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2800::,2001:67c:287f:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:2880::,2001:67c:2880:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2884::,2001:67c:2884:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2888::,2001:67c:2889:ffff:ffff:ffff:ffff:ffff,NL
@@ -3213,7 +2121,6 @@
2001:67c:29ac::,2001:67c:29ac:ffff:ffff:ffff:ffff:ffff,CY
2001:67c:29b0::,2001:67c:29b1:ffff:ffff:ffff:ffff:ffff,CY
2001:67c:29b8::,2001:67c:29b8:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:29bc::,2001:67c:29bc:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:29c0::,2001:67c:29c1:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:29c8::,2001:67c:29c8:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:29cc::,2001:67c:29cc:ffff:ffff:ffff:ffff:ffff,AT
@@ -3233,6 +2140,7 @@
2001:67c:2a04::,2001:67c:2a04:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2a08::,2001:67c:2a08:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:2a0c::,2001:67c:2a0c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2a10::,2001:67c:2a10:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2a14::,2001:67c:2a14:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2a18::,2001:67c:2a18:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2a1c::,2001:67c:2a1c:ffff:ffff:ffff:ffff:ffff,DE
@@ -3260,38 +2168,9 @@
2001:67c:2a74::,2001:67c:2a74:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:2a78::,2001:67c:2a78:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:2a7c::,2001:67c:2a7c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2a80::,2001:67c:2a80:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:2a84::,2001:67c:2a84:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2a88::,2001:67c:2a88:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:2a8c::,2001:67c:2a8c:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2a90::,2001:67c:2a90:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2a94::,2001:67c:2a94:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2a98::,2001:67c:2a98:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2a9c::,2001:67c:2a9c:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2aa0::,2001:67c:2aa0:ffff:ffff:ffff:ffff:ffff,LU
-2001:67c:2aa4::,2001:67c:2aa4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2aa8::,2001:67c:2aa8:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2aac::,2001:67c:2aac:ffff:ffff:ffff:ffff:ffff,IS
-2001:67c:2ab0::,2001:67c:2ab0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ab4::,2001:67c:2ab4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2ab8::,2001:67c:2ab8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2abc::,2001:67c:2abc:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2ac0::,2001:67c:2ac0:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2a80::,2001:67c:2ac3:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2ac4::,2001:67c:2ac4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ac8::,2001:67c:2ac8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2acc::,2001:67c:2acc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ad0::,2001:67c:2ad0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2ad4::,2001:67c:2ad4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ad8::,2001:67c:2ad8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2adc::,2001:67c:2adc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ae0::,2001:67c:2ae0:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2ae4::,2001:67c:2ae4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ae8::,2001:67c:2ae8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2aec::,2001:67c:2aec:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2af0::,2001:67c:2af0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2af4::,2001:67c:2af4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2af8::,2001:67c:2af8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2afc::,2001:67c:2afc:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2ac5::,2001:67c:2aff:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2b04::,2001:67c:2b04:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:2b08::,2001:67c:2b08:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2b0c::,2001:67c:2b0c:ffff:ffff:ffff:ffff:ffff,NL
@@ -3317,73 +2196,12 @@
2001:67c:2b5c::,2001:67c:2b5c:ffff:ffff:ffff:ffff:ffff,SK
2001:67c:2b60::,2001:67c:2b60:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2b64::,2001:67c:2b64:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2b68::,2001:67c:2b68:ffff:ffff:ffff:ffff:ffff,PL
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:2b79:ffff:ffff:ffff:ffff:ffff,GR
-2001:67c:2b80::,2001:67c:2b80:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2b84::,2001:67c:2b84:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2b88::,2001:67c:2b88:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2b8c::,2001:67c:2b8c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2b90::,2001:67c:2b90:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2b94::,2001:67c:2b94:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2b98::,2001:67c:2b98:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2b9c::,2001:67c:2b9c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ba0::,2001:67c:2ba0:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:2ba4::,2001:67c:2ba4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ba8::,2001:67c:2ba8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2bac::,2001:67c:2bac:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2bb0::,2001:67c:2bb0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2bb4::,2001:67c:2bb4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2bb8::,2001:67c:2bb8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2bbc::,2001:67c:2bbc:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2bc0::,2001:67c:2bc0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bc4::,2001:67c:2bc4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bc8::,2001:67c:2bc8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2bcc::,2001:67c:2bcc:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:2bd0::,2001:67c:2bd0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bd4::,2001:67c:2bd4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bd8::,2001:67c:2bd8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bdc::,2001:67c:2bdc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2be0::,2001:67c:2be0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2be8::,2001:67c:2be8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2bec::,2001:67c:2bec:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2bf0::,2001:67c:2bf0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2bf4::,2001:67c:2bf4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2bf8::,2001:67c:2bf8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2bfc::,2001:67c:2bfc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c00::,2001:67c:2c00:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2c04::,2001:67c:2c04:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c08::,2001:67c:2c08:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c0c::,2001:67c:2c0c:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c10::,2001:67c:2c10:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c14::,2001:67c:2c14:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c18::,2001:67c:2c18:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c1c::,2001:67c:2c1c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2c20::,2001:67c:2c20:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c24::,2001:67c:2c24:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2c28::,2001:67c:2c28:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c2c::,2001:67c:2c2c:ffff:ffff:ffff:ffff:ffff,HU
-2001:67c:2c30::,2001:67c:2c30:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c34::,2001:67c:2c34:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c38::,2001:67c:2c38:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c3c::,2001:67c:2c3c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c40::,2001:67c:2c40:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2c44::,2001:67c:2c44:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2c48::,2001:67c:2c48:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2c4c::,2001:67c:2c4c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c50::,2001:67c:2c50:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c54::,2001:67c:2c54:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c58::,2001:67c:2c58:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c5c::,2001:67c:2c5c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2c60::,2001:67c:2c60:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:2c64::,2001:67c:2c64:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2c68::,2001:67c:2c68:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2c6c::,2001:67c:2c6c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2c70::,2001:67c:2c70:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c74::,2001:67c:2c74:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c78::,2001:67c:2c78:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2c7c::,2001:67c:2c7c:ffff:ffff:ffff:ffff:ffff,CH
+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
2001:67c:2c84::,2001:67c:2c84:ffff:ffff:ffff:ffff:ffff,BE
2001:67c:2c88::,2001:67c:2c89:ffff:ffff:ffff:ffff:ffff,BG
@@ -3405,36 +2223,8 @@
2001:67c:2cf4::,2001:67c:2cf4:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2cf8::,2001:67c:2cf8:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2cfc::,2001:67c:2cfc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2d04::,2001:67c:2d04:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2d08::,2001:67c:2d08:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d0c::,2001:67c:2d0c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d10::,2001:67c:2d10:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2d14::,2001:67c:2d14:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2d18::,2001:67c:2d19:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d20::,2001:67c:2d20:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2d24::,2001:67c:2d24:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2d28::,2001:67c:2d28:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d2c::,2001:67c:2d2c:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2d30::,2001:67c:2d30:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2d34::,2001:67c:2d34:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2d38::,2001:67c:2d38:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2d3c::,2001:67c:2d3c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2d40::,2001:67c:2d40:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2d44::,2001:67c:2d44:ffff:ffff:ffff:ffff:ffff,PT
-2001:67c:2d48::,2001:67c:2d48:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:2d4c::,2001:67c:2d4c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2d50::,2001:67c:2d50:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d54::,2001:67c:2d54:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2d58::,2001:67c:2d58:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2d5c::,2001:67c:2d5c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2d60::,2001:67c:2d60:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2d64::,2001:67c:2d64:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:2d68::,2001:67c:2d68:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:2d6c::,2001:67c:2d6c:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2d70::,2001:67c:2d70:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2d74::,2001:67c:2d74:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2d78::,2001:67c:2d78:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2d7c::,2001:67c:2d7c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2d00::,2001:67c:2d00:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2d01::,2001:67c:2d7f:ffff:ffff:ffff:ffff:ffff,FI
2001:67c:2d80::,2001:67c:2d80:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2d84::,2001:67c:2d84:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:2d88::,2001:67c:2d88:ffff:ffff:ffff:ffff:ffff,DE
@@ -3467,136 +2257,20 @@
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:2e00:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2e04::,2001:67c:2e04:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e08::,2001:67c:2e08:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2e0c::,2001:67c:2e0c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2e10::,2001:67c:2e10:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2e14::,2001:67c:2e14:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2e18::,2001:67c:2e18:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e1c::,2001:67c:2e1c:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:2e20::,2001:67c:2e20:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2e24::,2001:67c:2e24:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e28::,2001:67c:2e28:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e2c::,2001:67c:2e2c:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2e30::,2001:67c:2e30:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2e34::,2001:67c:2e34:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2e38::,2001:67c:2e38:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2e3c::,2001:67c:2e3c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2e40::,2001:67c:2e40:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2e44::,2001:67c:2e44:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2e48::,2001:67c:2e48:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2e4c::,2001:67c:2e4c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2e50::,2001:67c:2e50:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2e54::,2001:67c:2e54:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2e58::,2001:67c:2e58:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2e5c::,2001:67c:2e5c:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2e60::,2001:67c:2e60:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e64::,2001:67c:2e64:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2e68::,2001:67c:2e69:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:2e70::,2001:67c:2e70:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2e74::,2001:67c:2e74:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2e78::,2001:67c:2e78:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2e7c::,2001:67c:2e7c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2e80::,2001:67c:2e80:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2e84::,2001:67c:2e84:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2e88::,2001:67c:2e88:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2e8c::,2001:67c:2e8c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2e90::,2001:67c:2e90:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:2e94::,2001:67c:2e94:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2e98::,2001:67c:2e98:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2e9c::,2001:67c:2e9c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ea0::,2001:67c:2ea0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ea4::,2001:67c:2ea4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ea8::,2001:67c:2ea8:ffff:ffff:ffff:ffff:ffff,LV
-2001:67c:2eac::,2001:67c:2eac:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2eb0::,2001:67c:2eb0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2eb4::,2001:67c:2eb4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2eb8::,2001:67c:2eb8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ebc::,2001:67c:2ebc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ec0::,2001:67c:2ec0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ec4::,2001:67c:2ec4:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2ec8::,2001:67c:2ec8:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ecc::,2001:67c:2ecc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ed0::,2001:67c:2ed0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ed4::,2001:67c:2ed4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2ed8::,2001:67c:2ed8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2edc::,2001:67c:2edc:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2ee0::,2001:67c:2ee0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2ee4::,2001:67c:2ee4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2ee8::,2001:67c:2ee8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2eec::,2001:67c:2eec:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2ef0::,2001:67c:2ef0:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2ef4::,2001:67c:2ef4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2ef8::,2001:67c:2ef8:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2efc::,2001:67c:2efc:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2f00::,2001:67c:2f00:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2f04::,2001:67c:2f04:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2f08::,2001:67c:2f08:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2f0c::,2001:67c:2f0c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f10::,2001:67c:2f10:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f14::,2001:67c:2f14:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f18::,2001:67c:2f18:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2f1c::,2001:67c:2f1c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2f20::,2001:67c:2f20:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f24::,2001:67c:2f24:ffff:ffff:ffff:ffff:ffff,HR
-2001:67c:2f28::,2001:67c:2f28:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2f30::,2001:67c:2f30:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f34::,2001:67c:2f34:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2f38::,2001:67c:2f38:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2f3c::,2001:67c:2f3c:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f40::,2001:67c:2f40:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:2f44::,2001:67c:2f44:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f48::,2001:67c:2f48:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2f4c::,2001:67c:2f4c:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:2f50::,2001:67c:2f50:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2f54::,2001:67c:2f54:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2f58::,2001:67c:2f58:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2f5c::,2001:67c:2f5c:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2f60::,2001:67c:2f60:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f64::,2001:67c:2f64:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2f68::,2001:67c:2f68:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2f6c::,2001:67c:2f6c:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2f70::,2001:67c:2f70:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2f74::,2001:67c:2f74:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2f78::,2001:67c:2f78:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2f7c::,2001:67c:2f7c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2f80::,2001:67c:2f80:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2f84::,2001:67c:2f84:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2e00::,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
+2001:67c:2f80::,2001:67c:2f87:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2f88::,2001:67c:2f88:ffff:ffff:ffff:ffff:ffff,ZA
-2001:67c:2f8c::,2001:67c:2f8c:ffff:ffff:ffff:ffff:ffff,IT
-2001:67c:2f90::,2001:67c:2f90:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2f94::,2001:67c:2f94:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2f98::,2001:67c:2f98:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:2f9c::,2001:67c:2f9c:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2fa0::,2001:67c:2fa0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2fa4::,2001:67c:2fa4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fa8::,2001:67c:2fa8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fac::,2001:67c:2fac:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2fb0::,2001:67c:2fb0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fb4::,2001:67c:2fb4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:2fb8::,2001:67c:2fb8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2fbc::,2001:67c:2fbc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fc0::,2001:67c:2fc0:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2fc4::,2001:67c:2fc4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2fc8::,2001:67c:2fc8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2fcc::,2001:67c:2fcc:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2fd0::,2001:67c:2fd0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2fd4::,2001:67c:2fd4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2fd8::,2001:67c:2fd8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fdc::,2001:67c:2fdc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2fe4::,2001:67c:2fe4:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2fe8::,2001:67c:2fe8:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2fec::,2001:67c:2fec:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2ff0::,2001:67c:2ff0:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2ff4::,2001:67c:2ff4:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2ff8::,2001:67c:2ff8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2ffc::,2001:67c:2ffc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2f89::,2001:67c:2fff:ffff:ffff:ffff:ffff:ffff,RU
2001:680::,2001:680:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:688::,2001:688:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:690::,2001:697:ffff:ffff:ffff:ffff:ffff:ffff,PT
2001:6a0::,2001:6a0:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2001:6a8::,2001:6af:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2001:6a8::,2001:6a8:20ff:ffff:ffff:ffff:ffff:ffff,BE
+2001:6a8:2100::,2001:6a8:217f:ffff:ffff:ffff:ffff:ffff,NL
+2001:6a8:2180::,2001:6af:ffff:ffff:ffff:ffff:ffff:ffff,BE
2001:6b0::,2001:6b0:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:6b8::,2001:6b8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:6c8::,2001:6cf:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -3607,22 +2281,16 @@
2001:6f0::,2001:6f7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:6f8::,2001:6f8:2ff:ffff:ffff:ffff:ffff:ffff,GB
2001:6f8:300::,2001:6f8:3ff:ffff:ffff:ffff:ffff:ffff,BE
-2001:6f8:400::,2001:6f8:900:7fff:ffff:ffff:ffff:ffff,GB
-2001:6f8:900:8000::,2001:6f8:900:ffff:ffff:ffff:ffff:ffff,DE
-2001:6f8:901::,2001:6f8:13ff:ffff:ffff:ffff:ffff:ffff,GB
+2001:6f8:400::,2001:6f8:13ff:ffff:ffff:ffff:ffff:ffff,GB
2001:6f8:1400::,2001:6f8:14ff:ffff:ffff:ffff:ffff:ffff,BE
-2001:6f8:1500::,2001:6f8:1d2c:ffff:ffff:ffff:ffff:ffff,GB
-2001:6f8:1d2d::,2001:6f8:1d2d:7fff:ffff:ffff:ffff:ffff,DE
-2001:6f8:1d2d:8000::,2001:6f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:6f8:1500::,2001:6f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:700::,2001:700:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:708::,2001:708:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:710::,2001:710:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:718::,2001:71f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:720::,2001:727:ffff:ffff:ffff:ffff:ffff:ffff,ES
2001:728::,2001:728:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:730::,2001:730:3e0b:ffff:ffff:ffff:ffff:ffff,AT
-2001:730:3e0c::,2001:730:3e0c:7fff:ffff:ffff:ffff:ffff,NL
-2001:730:3e0c:8000::,2001:737:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2001:730::,2001:737:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:738::,2001:738:ffff:ffff:ffff:ffff:ffff:ffff,HU
2001:748::,2001:748:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:750::,2001:750:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -3641,36 +2309,12 @@
2001:7b8::,2001:7bf:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:7c0::,2001:7c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:7c8::,2001:7c8:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2001:7d0::,2001:7d0:833c:7fff:ffff:ffff:ffff:ffff,EE
-2001:7d0:833c:8000::,2001:7d0:833c:ffff:ffff:ffff:ffff:ffff,CA
-2001:7d0:833d::,2001:7d0:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2001:7d0::,2001:7d0:ffff:ffff:ffff:ffff:ffff:ffff,EE
2001:7d8::,2001:7d8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:7e0::,2001:7e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:7e8::,2001:7e8:c03f:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:c040::,2001:7e8:c040:7fff:ffff:ffff:ffff:ffff,FR
-2001:7e8:c040:8000::,2001:7e8:c68a:7fff:ffff:ffff:ffff:ffff,LU
-2001:7e8:c68a:8000::,2001:7e8:c68a:ffff:ffff:ffff:ffff:ffff,BE
-2001:7e8:c68b::,2001:7e8:c9b7:7fff:ffff:ffff:ffff:ffff,LU
-2001:7e8:c9b7:8000::,2001:7e8:c9b7:ffff:ffff:ffff:ffff:ffff,DE
-2001:7e8:c9b8::,2001:7e8:cc63:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:cc64::,2001:7e8:cc64:7fff:ffff:ffff:ffff:ffff,FR
-2001:7e8:cc64:8000::,2001:7e8:d04f:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d050::,2001:7e8:d050:7fff:ffff:ffff:ffff:ffff,DE
-2001:7e8:d050:8000::,2001:7e8:d2db:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d2dc::,2001:7e8:d2dc:7fff:ffff:ffff:ffff:ffff,FR
-2001:7e8:d2dc:8000::,2001:7e8:d2e4:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d2e5::,2001:7e8:d2e5:7fff:ffff:ffff:ffff:ffff,FR
-2001:7e8:d2e5:8000::,2001:7e8:d302:7fff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d302:8000::,2001:7e8:d302:ffff:ffff:ffff:ffff:ffff,DE
-2001:7e8:d303::,2001:7e8:d361:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d362::,2001:7e8:d362:7fff:ffff:ffff:ffff:ffff,BE
-2001:7e8:d362:8000::,2001:7e8:d4ae:ffff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d4af::,2001:7e8:d4af:7fff:ffff:ffff:ffff:ffff,DE
-2001:7e8:d4af:8000::,2001:7e8:d4e0:7fff:ffff:ffff:ffff:ffff,LU
-2001:7e8:d4e0:8000::,2001:7e8:d4e0:ffff:ffff:ffff:ffff:ffff,FR
-2001:7e8:d4e1::,2001:7ef:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2001:7f0:1::,2001:7f0:1:7fff:ffff:ffff:ffff:ffff,DE
-2001:7f0:3003::,2001:7f0:3003:7fff:ffff:ffff:ffff:ffff,DE
+2001:7e8::,2001:7ef:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2001:7f0::,2001:7f0:7f:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f0:4000::,2001:7f0:407f:ffff:ffff:ffff:ffff:ffff,DE
2001:7f8::,2001:7f8::ffff:ffff:ffff:ffff:ffff,DE
2001:7f8:1::,2001:7f8:1:ffff:ffff:ffff:ffff:ffff,NL
2001:7f8:2::,2001:7f8:2:ffff:ffff:ffff:ffff:ffff,IT
@@ -3795,6 +2439,7 @@
2001:7f8:80::,2001:7f8:80:ffff:ffff:ffff:ffff:ffff,UA
2001:7f8:81::,2001:7f8:81:ffff:ffff:ffff:ffff:ffff,FR
2001:7f8:82::,2001:7f8:82:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:83::,2001:7f8:83:ffff:ffff:ffff:ffff:ffff,NL
2001:7f8:84::,2001:7f8:84:ffff:ffff:ffff:ffff:ffff,RU
2001:7f8:85::,2001:7f8:85:ffff:ffff:ffff:ffff:ffff,HU
2001:7f8:86::,2001:7f8:86:ffff:ffff:ffff:ffff:ffff,NL
@@ -3855,6 +2500,11 @@
2001:7f8:c1::,2001:7f8:c1:ffff:ffff:ffff:ffff:ffff,SE
2001:7f8:c2::,2001:7f8:c2:ffff:ffff:ffff:ffff:ffff,LB
2001:7f8:c3::,2001:7f8:c3:ffff:ffff:ffff:ffff:ffff,IE
+2001:7f8:c4::,2001:7f8:c4:ffff:ffff:ffff:ffff:ffff,LT
+2001:7f8:c5::,2001:7f8:c5:ffff:ffff:ffff:ffff:ffff,IT
+2001:7f8:c6::,2001:7f8:c6:ffff:ffff:ffff:ffff:ffff,ES
+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: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
@@ -3872,7 +2522,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:1:ffff:ffff:ffff:ffff:ffff,RU
+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
2001:810::,2001:810:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -3893,9 +2543,7 @@
2001:888::,2001:88f:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:890::,2001:891:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:898::,2001:89f:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2001:8a0::,2001:8a0:5225:7fff:ffff:ffff:ffff:ffff,PT
-2001:8a0:5225:8000::,2001:8a0:5225:ffff:ffff:ffff:ffff:ffff,GB
-2001:8a0:5226::,2001:8a7:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2001:8a0::,2001:8a7:ffff:ffff:ffff:ffff:ffff:ffff,PT
2001:8a8::,2001:8a8:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:8b0::,2001:8b0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:8b8::,2001:8bf:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -3911,41 +2559,13 @@
2001:908::,2001:90f:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:910::,2001:917:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:918::,2001:91f:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2001:920::,2001:920:1804:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1805::,2001:920:1805:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1805:8000::,2001:920:1840:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1841::,2001:920:1841:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1841:8000::,2001:920:1845:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1846::,2001:920:1846:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1846:8000::,2001:920:186a:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:186b::,2001:920:186b:ffff:ffff:ffff:ffff:ffff,DE
-2001:920:186c::,2001:920:187f:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1880::,2001:920:1880:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1880:8000::,2001:920:1881:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1882::,2001:920:1882:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1882:8000::,2001:920:18a0:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:18a1::,2001:920:18a1:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:18a1:8000::,2001:920:18ad:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:18ae::,2001:920:18ae:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:18ae:8000::,2001:920:18c0:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:18c1::,2001:920:18c1:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:18c1:8000::,2001:920:18ef:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:18f0::,2001:920:18f0:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:18f0:8000::,2001:920:1907:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1908::,2001:920:1908:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1908:8000::,2001:920:1940:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:1941::,2001:920:1941:7fff:ffff:ffff:ffff:ffff,DE
-2001:920:1941:8000::,2001:920:1960:ffff:ffff:ffff:ffff:ffff,GB
+2001:920::,2001:920:183f:ffff:ffff:ffff:ffff:ffff,GB
+2001:920:1840::,2001:920:187f:ffff:ffff:ffff:ffff:ffff,DE
+2001:920:1880::,2001:920:1960:ffff:ffff:ffff:ffff:ffff,GB
2001:920:1961::,2001:920:1961:ffff:ffff:ffff:ffff:ffff,DE
-2001:920:1962::,2001:920:4008:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:4009::,2001:920:4009:7fff:ffff:ffff:ffff:ffff,BE
-2001:920:4009:8000::,2001:920:5843:7fff:ffff:ffff:ffff:ffff,GB
-2001:920:5843:8000::,2001:920:5843:ffff:ffff:ffff:ffff:ffff,ES
-2001:920:5844::,2001:920:5845:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:5846::,2001:920:5846:ffff:ffff:ffff:ffff:ffff,ES
-2001:920:5847::,2001:920:584d:ffff:ffff:ffff:ffff:ffff,GB
-2001:920:584e::,2001:920:584e:7fff:ffff:ffff:ffff:ffff,ES
-2001:920:584e:8000::,2001:927:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:920:1962::,2001:920:57ff:ffff:ffff:ffff:ffff:ffff,GB
+2001:920:5800::,2001:920:587f:ffff:ffff:ffff:ffff:ffff,ES
+2001:920:5880::,2001:927:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:928::,2001:928:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:930::,2001:930:ffff:ffff:ffff:ffff:ffff:ffff,TR
2001:938::,2001:938:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -3958,31 +2578,16 @@
2001:978::,2001:978:2:39::5:1,DE
2001:978:2:39::5:2,2001:978:2:39::5:2,SI
2001:978:2:39::5:3,2001:978:22ff:ffff:ffff:ffff:ffff:ffff,DE
-2001:978:2300::,2001:978:2300:7fff:ffff:ffff:ffff:ffff,GB
-2001:978:2300:8000::,2001:978:2304:ffff:ffff:ffff:ffff:ffff,DE
-2001:978:2305::,2001:978:2305:ffff:ffff:ffff:ffff:ffff,US
-2001:978:2306::,2001:978:29ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:978:2300::,2001:978:2303:ffff:ffff:ffff:ffff:ffff,GB
+2001:978:2304::,2001:978:2307:ffff:ffff:ffff:ffff:ffff,US
+2001:978:2308::,2001:978:29ff:ffff:ffff:ffff:ffff:ffff,DE
2001:978:2a00::,2001:978:2a00:ffff:ffff:ffff:ffff:ffff,IE
2001:978:2a01::,2001:978:33ff:ffff:ffff:ffff:ffff:ffff,DE
-2001:978:3400::,2001:978:3400:ffff:ffff:ffff:ffff:ffff,US
-2001:978:3401::,2001:978:3500:7fff:ffff:ffff:ffff:ffff,DE
-2001:978:3500:8000::,2001:978:3500:ffff:ffff:ffff:ffff:ffff,PL
-2001:978:3501::,2001:978:3bff:ffff:ffff:ffff:ffff:ffff,DE
-2001:978:3c00::,2001:978:3c00:7fff:ffff:ffff:ffff:ffff,NL
-2001:978:3c00:8000::,2001:978:3c03:ffff:ffff:ffff:ffff:ffff,DE
-2001:978:3c04::,2001:978:3c04:7fff:ffff:ffff:ffff:ffff,NL
-2001:978:3c04:8000::,2001:978:73ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:978:3400::,2001:978:347f:ffff:ffff:ffff:ffff:ffff,US
+2001:978:3480::,2001:978:73ff:ffff:ffff:ffff:ffff:ffff,DE
2001:978:7400::,2001:978:7400:ffff:ffff:ffff:ffff:ffff,FI
2001:978:7401::,2001:978:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:980::,2001:981:6566:ffff:ffff:ffff:ffff:ffff,NL
-2001:981:6567::,2001:981:6567:7fff:ffff:ffff:ffff:ffff,GB
-2001:981:6567:8000::,2001:981:d262:ffff:ffff:ffff:ffff:ffff,NL
-2001:981:d263::,2001:981:d263:7fff:ffff:ffff:ffff:ffff,PL
-2001:981:d263:8000::,2001:984:55a9:ffff:ffff:ffff:ffff:ffff,NL
-2001:984:55aa::,2001:984:55aa:7fff:ffff:ffff:ffff:ffff,PT
-2001:984:55aa:8000::,2001:985:40b4:ffff:ffff:ffff:ffff:ffff,NL
-2001:985:40b5::,2001:985:40b5:7fff:ffff:ffff:ffff:ffff,PL
-2001:985:40b5:8000::,2001:987:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:980::,2001:987:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:988::,2001:988:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:990::,2001:990:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:998::,2001:99b:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -3998,7 +2603,7 @@
2001:9f0::,2001:9f7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:a00::,2001:a00:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:a08::,2001:a08:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:a10::,2001:a10:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:a10::,2001:a17:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:a18::,2001:a1f:ffff:ffff:ffff:ffff:ffff:ffff,LU
2001:a20::,2001:a20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:a30::,2001:a30:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -4010,7 +2615,7 @@
2001:a60::,2001:a67:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:a68::,2001:a68:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:a70::,2001:a70:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:a78::,2001:a78:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:a78::,2001:a7f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:a80::,2001:a80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:a88::,2001:a88:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:a90::,2001:a90:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -4022,10 +2627,8 @@
2001:ac8::,2001:ac8:1f:ffff:ffff:ffff:ffff:ffff,GB
2001:ac8:20::,2001:ac8:20:ffff:ffff:ffff:ffff:ffff,DE
2001:ac8:21::,2001:ac8:21:ffff:ffff:ffff:ffff:ffff,GB
-2001:ac8:22::,2001:ac8:22:7fff:ffff:ffff:ffff:ffff,NL
-2001:ac8:22:8000::,2001:ac8:22:ffff:ffff:ffff:ffff:ffff,GB
-2001:ac8:23::,2001:ac8:23:7fff:ffff:ffff:ffff:ffff,ES
-2001:ac8:23:8000::,2001:ac8:23:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:22::,2001:ac8:22:ffff:ffff:ffff:ffff:ffff,NL
+2001:ac8:23::,2001:ac8:23:ffff:ffff:ffff:ffff:ffff,ES
2001:ac8:24::,2001:ac8:24:ffff:ffff:ffff:ffff:ffff,IT
2001:ac8:25::,2001:ac8:25:ffff:ffff:ffff:ffff:ffff,FR
2001:ac8:26::,2001:ac8:26:ffff:ffff:ffff:ffff:ffff,HU
@@ -4034,9 +2637,9 @@
2001:ac8:29::,2001:ac8:29:ffff:ffff:ffff:ffff:ffff,AT
2001:ac8:2a::,2001:ac8:2f:ffff:ffff:ffff:ffff:ffff,GB
2001:ac8:30::,2001:ac8:30:ffff:ffff:ffff:ffff:ffff,BG
-2001:ac8:31::,2001:ac8:32:ffff:ffff:ffff:ffff:ffff,GB
-2001:ac8:33::,2001:ac8:33:ffff:ffff:ffff:ffff:ffff,CZ
-2001:ac8:34::,2001:ac8:34:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:31::,2001:ac8:31:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:32::,2001:ac8:33:ffff:ffff:ffff:ffff:ffff,CZ
+2001:ac8:34::,2001:ac8:34:ffff:ffff:ffff:ffff:ffff,DE
2001:ac8:35::,2001:ac8:35:ffff:ffff:ffff:ffff:ffff,ES
2001:ac8:36::,2001:ac8:36:ffff:ffff:ffff:ffff:ffff,DE
2001:ac8:37::,2001:ac8:37:ffff:ffff:ffff:ffff:ffff,DK
@@ -4058,18 +2661,24 @@
2001:ac8:50::,2001:ac8:50:ffff:ffff:ffff:ffff:ffff,AT
2001:ac8:51::,2001:ac8:51:ffff:ffff:ffff:ffff:ffff,CH
2001:ac8:52::,2001:ac8:52:ffff:ffff:ffff:ffff:ffff,NL
-2001:ac8:53::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:53::,2001:ac8:55:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:56::,2001:ac8:56:ffff:ffff:ffff:ffff:ffff,IT
+2001:ac8:57::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:ad0::,2001:ad0:ffff:ffff:ffff:ffff:ffff:ffff,EE
2001:ad8::,2001:ae1:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:ae8::,2001:ae8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:af0::,2001:af0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:af8::,2001:af8:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2001:b00::,2001:b07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:b00::,2001:b07:a15:fff:ffff:ffff:ffff:ffff,IT
+2001:b07:a15:1000::,2001:b07:a15:1fff:ffff:ffff:ffff:ffff,CZ
+2001:b07:a15:2000::,2001:b07:af5:cfff:ffff:ffff:ffff:ffff,IT
+2001:b07:af5:d000::,2001:b07:af5:d7ff:ffff:ffff:ffff:ffff,CN
+2001:b07:af5:d800::,2001:b07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:b08::,2001:b08:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:b10::,2001:b10:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:b18::,2001:b18:ffff:ffff:ffff:ffff:ffff:ffff,BG
2001:b20::,2001:b27:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2001:b28::,2001:b28:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2001:b28::,2001:b28:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:b30::,2001:b37:ffff:ffff:ffff:ffff:ffff:ffff,RO
2001:b40::,2001:b40:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:b48::,2001:b4f:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -4084,19 +2693,11 @@
2001:b98::,2001:b9f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:ba0::,2001:ba0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2001:ba8::,2001:baf:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:bb0::,2001:bb6:355d:ffff:ffff:ffff:ffff:ffff,IE
-2001:bb6:355e::,2001:bb6:355e:7fff:ffff:ffff:ffff:ffff,GB
-2001:bb6:355e:8000::,2001:bb6:b215:7fff:ffff:ffff:ffff:ffff,IE
-2001:bb6:b215:8000::,2001:bb6:b215:ffff:ffff:ffff:ffff:ffff,ES
-2001:bb6:b216::,2001:bb7:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2001:bb0::,2001:bb7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2001:bb8::,2001:bb8:ffff:ffff:ffff:ffff:ffff:ffff,EE
-2001:bc8::,2001:bc8:204f:ffff:ffff:ffff:ffff:ffff,FR
-2001:bc8:2050::,2001:bc8:2050:7fff:ffff:ffff:ffff:ffff,DE
-2001:bc8:2050:8000::,2001:bc8:3f13:7fff:ffff:ffff:ffff:ffff,FR
-2001:bc8:3f13:8000::,2001:bc8:3f13:ffff:ffff:ffff:ffff:ffff,DE
-2001:bc8:3f14::,2001:bc8:46ff:ffff:ffff:ffff:ffff:ffff,FR
-2001:bc8:4700::,2001:bc8:4700:7fff:ffff:ffff:ffff:ffff,NL
-2001:bc8:4700:8000::,2001:bc8:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:bc8::,2001:bc8:46ff:ffff:ffff:ffff:ffff:ffff,FR
+2001:bc8:4700::,2001:bc8:477f:ffff:ffff:ffff:ffff:ffff,NL
+2001:bc8:4780::,2001:bc8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:bd0::,2001:bd0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:be0::,2001:be7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:be8::,2001:bef:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -4104,9 +2705,7 @@
2001:bf8::,2001:bf8:ffff:ffff:ffff:ffff:ffff:ffff,IL
2001:c00::,2001:c00:ffff:ffff:ffff:ffff:ffff:ffff,TH
2001:c08::,2001:c08:ffff:ffff:ffff:ffff:ffff:ffff,TW
-2001:c10::,2001:c10:ff08:ffff:ffff:ffff:ffff:ffff,SG
-2001:c10:ff09::,2001:c10:ff09:7fff:ffff:ffff:ffff:ffff,TW
-2001:c10:ff09:8000::,2001:c10:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2001:c10::,2001:c10:ffff:ffff:ffff:ffff:ffff:ffff,SG
2001:c18::,2001:c18:ffff:ffff:ffff:ffff:ffff:ffff,MY
2001:c20::,2001:c20:ffff:ffff:ffff:ffff:ffff:ffff,SG
2001:c28::,2001:c28:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -4148,7 +2747,9 @@
2001:d58::,2001:d58:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:d68::,2001:d68:ffff:ffff:ffff:ffff:ffff:ffff,ID
2001:d70::,2001:d73:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:d80::,2001:d80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:d80::,2001:d80:10ff:ffff:ffff:ffff:ffff:ffff,JP
+2001:d80:1100::,2001:d80:117f:ffff:ffff:ffff:ffff:ffff,CN
+2001:d80:1180::,2001:d80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:d88::,2001:d88:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:d90::,2001:d90:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:d98::,2001:d98:ffff:ffff:ffff:ffff:ffff:ffff,SG
@@ -4199,6 +2800,7 @@
2001:ddd::,2001:ddd::ffff:ffff:ffff:ffff:ffff,AU
2001:dde::,2001:dde::ffff:ffff:ffff:ffff:ffff,MV
2001:de1::,2001:de1:3f:ffff:ffff:ffff:ffff:ffff,JP
+2001:de4::,2001:de4::ffff:ffff:ffff:ffff:ffff,TW
2001:de8::,2001:de8::ffff:ffff:ffff:ffff:ffff,TH
2001:de8:1::,2001:de8:1:ffff:ffff:ffff:ffff:ffff,IN
2001:de8:2::,2001:de8:2:ffff:ffff:ffff:ffff:ffff,ID
@@ -4223,7 +2825,9 @@
2001:de8:1e::,2001:de8:1e:ffff:ffff:ffff:ffff:ffff,JP
2001:de8:4000::,2001:de8:4000:ffff:ffff:ffff:ffff:ffff,IN
2001:de8:8000::,2001:de8:8000:ffff:ffff:ffff:ffff:ffff,WS
+2001:de8:c000::,2001:de8:c000:ffff:ffff:ffff:ffff:ffff,IN
2001:de9::,2001:de9::ffff:ffff:ffff:ffff:ffff,LK
+2001:de9:4000::,2001:de9:4000:ffff:ffff:ffff:ffff:ffff,GU
2001:de9:8000::,2001:de9:8000:ffff:ffff:ffff:ffff:ffff,ID
2001:dea::,2001:dea::ffff:ffff:ffff:ffff:ffff,AU
2001:dea:8000::,2001:dea:8000:ffff:ffff:ffff:ffff:ffff,PG
@@ -4237,10 +2841,7 @@
2001:dee:8000::,2001:dee:8001:ffff:ffff:ffff:ffff:ffff,NZ
2001:def::,2001:def::ffff:ffff:ffff:ffff:ffff,HK
2001:def:8000::,2001:def:8001:ffff:ffff:ffff:ffff:ffff,NP
-2001:df0::,2001:df0:1:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:2::,2001:df0:2:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:4::,2001:df0:4:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:7::,2001:df0:7:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0::,2001:df0:7:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:8::,2001:df0:8:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:9::,2001:df0:a:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:c::,2001:df0:13:ffff:ffff:ffff:ffff:ffff,VN
@@ -4274,33 +2875,12 @@
2001:df0:71::,2001:df0:71:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:73::,2001:df0:74:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:75::,2001:df0:75:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:76::,2001:df0:76:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:77::,2001:df0:77:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:78::,2001:df0:78:ffff:ffff:ffff:ffff:ffff,HK
2001:df0:7b::,2001:df0:7b:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:7d::,2001:df0:7d:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:7e::,2001:df0:81:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:82::,2001:df0:82:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:83::,2001:df0:83:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:84::,2001:df0:84:ffff:ffff:ffff:ffff:ffff,PK
-2001:df0:85::,2001:df0:85:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:86::,2001:df0:87:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:89::,2001:df0:89:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:8b::,2001:df0:8b:ffff:ffff:ffff:ffff:ffff,NP
-2001:df0:8c::,2001:df0:8c:ffff:ffff:ffff:ffff:ffff,NU
-2001:df0:8e::,2001:df0:90:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:91::,2001:df0:91:ffff:ffff:ffff:ffff:ffff,FJ
-2001:df0:92::,2001:df0:92:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:93::,2001:df0:93:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:94::,2001:df0:94:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:95::,2001:df0:95:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:96::,2001:df0:96:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:97::,2001:df0:97:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:98::,2001:df0:9a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:9c::,2001:df0:9c:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:9d::,2001:df0:9d:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:9e::,2001:df0:9e:ffff:ffff:ffff:ffff:ffff,TH
-2001:df0:9f::,2001:df0:9f:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:7e::,2001:df0:7f:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:80::,2001:df0:9f:ffff:ffff:ffff:ffff:ffff,IN
2001:df0:a0::,2001:df0:a1:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:a2::,2001:df0:a2:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:a3::,2001:df0:a3:ffff:ffff:ffff:ffff:ffff,ID
@@ -4315,110 +2895,16 @@
2001:df0:ba::,2001:df0:bd:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:be::,2001:df0:be:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:bf::,2001:df0:bf:ffff:ffff:ffff:ffff:ffff,LA
-2001:df0:c0::,2001:df0:c0:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:c1::,2001:df0:c2:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:c4::,2001:df0:c4:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:c5::,2001:df0:c5:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:c6::,2001:df0:c6:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:c7::,2001:df0:c8:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:c9::,2001:df0:cc:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:cd::,2001:df0:cd:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:ce::,2001:df0:ce:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:cf::,2001:df0:cf:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:d1::,2001:df0:d1:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:d2::,2001:df0:d2:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:d4::,2001:df0:d5:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:d7::,2001:df0:d7:ffff:ffff:ffff:ffff:ffff,KR
-2001:df0:d8::,2001:df0:d8:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:d9::,2001:df0:d9:1ff:ffff:ffff:ffff:ffff,TW
+2001:df0:c0::,2001:df0:d9:1ff:ffff:ffff:ffff:ffff,AU
2001:df0:d9:200::,2001:df0:d9:2ff:ffff:ffff:ffff:ffff,HK
-2001:df0:d9:300::,2001:df0:d9:ffff:ffff:ffff:ffff:ffff,TW
-2001:df0:da::,2001:df0:da:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:d9:300::,2001:df0:db:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:dc::,2001:df0:dc:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:dd::,2001:df0:dd:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:de::,2001:df0:df:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:e1::,2001:df0:e1:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:e2::,2001:df0:e2:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:e3::,2001:df0:e3:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:e4::,2001:df0:e5:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:e6::,2001:df0:e6:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:e7::,2001:df0:e8:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:e9::,2001:df0:e9:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:ea::,2001:df0:ea:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:eb::,2001:df0:eb:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:ed::,2001:df0:ed:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:ee::,2001:df0:ee:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:ef::,2001:df0:f0:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:f1::,2001:df0:f1:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:f2::,2001:df0:f2:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:f3::,2001:df0:f3:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:f4::,2001:df0:f4:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:f6::,2001:df0:f6:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:f7::,2001:df0:f7:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:f8::,2001:df0:fa:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:fb::,2001:df0:fb:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:fc::,2001:df0:fc:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:fd::,2001:df0:fe:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:dd::,2001:df0:df:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:e0::,2001:df0:ff:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:100::,2001:df0:1ff:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:201::,2001:df0:201:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:202::,2001:df0:202:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:203::,2001:df0:203:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:204::,2001:df0:204:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:205::,2001:df0:205:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:206::,2001:df0:206:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:207::,2001:df0:207:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:208::,2001:df0:208:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:209::,2001:df0:209:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:20a::,2001:df0:20a:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:20b::,2001:df0:20b:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:20c::,2001:df0:20c:ffff:ffff:ffff:ffff:ffff,NF
-2001:df0:20d::,2001:df0:20d:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:20e::,2001:df0:20e:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:210::,2001:df0:210:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:211::,2001:df0:211:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:212::,2001:df0:212:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:213::,2001:df0:213:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:214::,2001:df0:214:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:215::,2001:df0:215:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:216::,2001:df0:217:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:218::,2001:df0:219:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:21a::,2001:df0:21a:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:21b::,2001:df0:21b:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:21c::,2001:df0:21c:ffff:ffff:ffff:ffff:ffff,PH
-2001:df0:21e::,2001:df0:21e:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:21f::,2001:df0:220:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:221::,2001:df0:221:ffff:ffff:ffff:ffff:ffff,VN
-2001:df0:222::,2001:df0:222:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:224::,2001:df0:224:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:226::,2001:df0:228:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:229::,2001:df0:229:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:22b::,2001:df0:22b:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:22c::,2001:df0:22d:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:22e::,2001:df0:22e:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:22f::,2001:df0:22f:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:230::,2001:df0:230:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:232::,2001:df0:232:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:233::,2001:df0:234:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:235::,2001:df0:235:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:237::,2001:df0:237:ffff:ffff:ffff:ffff:ffff,TH
-2001:df0:238::,2001:df0:238:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:239::,2001:df0:239:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:23a::,2001:df0:23a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:23b::,2001:df0:23b:ffff:ffff:ffff:ffff:ffff,PH
-2001:df0:23c::,2001:df0:23d:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:23e::,2001:df0:23e:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:23f::,2001:df0:23f:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:241::,2001:df0:241:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:242::,2001:df0:242:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:243::,2001:df0:243:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:245::,2001:df0:246:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:247::,2001:df0:247:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:248::,2001:df0:248:ffff:ffff:ffff:ffff:ffff,TH
-2001:df0:249::,2001:df0:24a:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:24b::,2001:df0:24b:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:24c::,2001:df0:24c:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:24e::,2001:df0:24e:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:24f::,2001:df0:24f:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:200::,2001:df0:21f:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:220::,2001:df0:23f:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:240::,2001:df0:24f:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:250::,2001:df0:250:ffff:ffff:ffff:ffff:ffff,IN
2001:df0:251::,2001:df0:252:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:253::,2001:df0:253:ffff:ffff:ffff:ffff:ffff,IN
@@ -4457,7 +2943,6 @@
2001:df0:27f::,2001:df0:27f:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:280::,2001:df0:28f:ffff:ffff:ffff:ffff:ffff,HK
2001:df0:290::,2001:df0:290:ffff:ffff:ffff:ffff:ffff,KR
-2001:df0:291::,2001:df0:291:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:292::,2001:df0:292:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:293::,2001:df0:293:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:294::,2001:df0:294:ffff:ffff:ffff:ffff:ffff,AU
@@ -4494,104 +2979,11 @@
2001:df0:2bd::,2001:df0:2bd:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:2be::,2001:df0:2be:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:2bf::,2001:df0:2bf:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:2c1::,2001:df0:2c1:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:2c2::,2001:df0:2c2:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2c3::,2001:df0:2c3:ffff:ffff:ffff:ffff:ffff,BD
-2001:df0:2c4::,2001:df0:2c4:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2c5::,2001:df0:2c5:ffff:ffff:ffff:ffff:ffff,BD
-2001:df0:2c6::,2001:df0:2c8:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:2c9::,2001:df0:2c9:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2ca::,2001:df0:2ca:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2cb::,2001:df0:2cb:ffff:ffff:ffff:ffff:ffff,PK
-2001:df0:2cc::,2001:df0:2cc:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2ce::,2001:df0:2e0:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:2e1::,2001:df0:2e1:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:2e2::,2001:df0:2e2:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:2e3::,2001:df0:2e3:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2e4::,2001:df0:2e4:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2e5::,2001:df0:2e5:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2e6::,2001:df0:2e7:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:2e8::,2001:df0:2e8:ffff:ffff:ffff:ffff:ffff,VN
-2001:df0:2e9::,2001:df0:2e9:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:2ea::,2001:df0:2ea:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:2ec::,2001:df0:2ec:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:2ed::,2001:df0:2ee:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2ef::,2001:df0:2ef:ffff:ffff:ffff:ffff:ffff,PH
-2001:df0:2f0::,2001:df0:2f3:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2f4::,2001:df0:2f4:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:2f5::,2001:df0:2f5:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2f6::,2001:df0:2f6:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2f9::,2001:df0:2f9:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2fa::,2001:df0:2fa:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:2fb::,2001:df0:2fb:ffff:ffff:ffff:ffff:ffff,TH
-2001:df0:2fc::,2001:df0:2fc:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:2fd::,2001:df0:2fd:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:2fe::,2001:df0:2fe:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2c0::,2001:df0:2e1:3114:ffff:ffff:ffff:ffff,JP
+2001:df0:2e1:3115::,2001:df0:2e1:3115:ffff:ffff:ffff:ffff,ID
+2001:df0:2e1:3116::,2001:df0:2ff:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:300::,2001:df0:319:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:400::,2001:df0:400:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:401::,2001:df0:401:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:402::,2001:df0:403:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:408::,2001:df0:408:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:409::,2001:df0:409:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:40a::,2001:df0:40a:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:40c::,2001:df0:40c:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:40d::,2001:df0:40d:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:40e::,2001:df0:40f:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:410::,2001:df0:410:ffff:ffff:ffff:ffff:ffff,VU
-2001:df0:411::,2001:df0:411:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:412::,2001:df0:412:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:413::,2001:df0:413:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:415::,2001:df0:415:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:418::,2001:df0:419:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:41a::,2001:df0:41a:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:41b::,2001:df0:41b:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:41c::,2001:df0:41c:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:41d::,2001:df0:41e:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:41f::,2001:df0:41f:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:420::,2001:df0:420:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:421::,2001:df0:421:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:422::,2001:df0:422:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:423::,2001:df0:423:ffff:ffff:ffff:ffff:ffff,CN
-2001:df0:425::,2001:df0:425:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:426::,2001:df0:426:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:427::,2001:df0:427:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:430::,2001:df0:43f:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:440::,2001:df0:440:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:441::,2001:df0:441:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:442::,2001:df0:443:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:444::,2001:df0:445:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:446::,2001:df0:446:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:447::,2001:df0:447:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:448::,2001:df0:448:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:449::,2001:df0:449:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:44a::,2001:df0:44a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:44b::,2001:df0:44b:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:44c::,2001:df0:44d:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:44e::,2001:df0:44e:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:44f::,2001:df0:44f:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:450::,2001:df0:450:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:451::,2001:df0:451:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:452::,2001:df0:452:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:453::,2001:df0:453:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:454::,2001:df0:454:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:455::,2001:df0:455:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:456::,2001:df0:456:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:457::,2001:df0:457:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:458::,2001:df0:458:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:45a::,2001:df0:45a:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:45c::,2001:df0:45d:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:45f::,2001:df0:45f:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:460::,2001:df0:460:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:461::,2001:df0:461:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:462::,2001:df0:462:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:464::,2001:df0:464:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:465::,2001:df0:465:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:466::,2001:df0:466:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:467::,2001:df0:467:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:468::,2001:df0:469:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:46a::,2001:df0:46a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:46b::,2001:df0:46b:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:46c::,2001:df0:46c:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:400::,2001:df0:47f:ffff:ffff:ffff:ffff:ffff,IN
2001:df0:500::,2001:df0:600:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:700::,2001:df0:700:ffff:ffff:ffff:ffff:ffff,PG
2001:df0:800::,2001:df0:800:ffff:ffff:ffff:ffff:ffff,ID
@@ -4682,9 +3074,7 @@
2001:df0:6600::,2001:df0:6600:ffff:ffff:ffff:ffff:ffff,SG
2001:df0:6700::,2001:df0:6700:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:6800::,2001:df0:6800:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:6900::,2001:df0:6900:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:6a00::,2001:df0:6a00:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:6b00::,2001:df0:6b00:ffff:ffff:ffff:ffff:ffff,CN
2001:df0:6d00::,2001:df0:6d00:ffff:ffff:ffff:ffff:ffff,HK
2001:df0:6e00::,2001:df0:6e00:ffff:ffff:ffff:ffff:ffff,BD
2001:df0:6f00::,2001:df0:6f00:ffff:ffff:ffff:ffff:ffff,MY
@@ -4745,7 +3135,7 @@
2001:df0:a900::,2001:df0:a900:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:aa00::,2001:df0:aa00:ffff:ffff:ffff:ffff:ffff,SG
2001:df0:ab00::,2001:df0:ab00:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:ac00::,2001:df0:ac00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:ac00::,2001:df0:ac0f:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:ad00::,2001:df0:ad00:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:ae00::,2001:df0:ae00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:af00::,2001:df0:af00:ffff:ffff:ffff:ffff:ffff,ID
@@ -4809,7 +3199,6 @@
2001:df0:ed00::,2001:df0:ed00:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:ee00::,2001:df0:ee00:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:ef00::,2001:df0:ef00:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:f000::,2001:df0:f000:ffff:ffff:ffff:ffff:ffff,HK
2001:df0:f100::,2001:df0:f100:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:f200::,2001:df0:f200:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:f300::,2001:df0:f300:ffff:ffff:ffff:ffff:ffff,ID
@@ -4823,7 +3212,6 @@
2001:df0:fb00::,2001:df0:fb00:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:fc00::,2001:df0:fc01:ffff:ffff:ffff:ffff:ffff,IN
2001:df0:fd00::,2001:df0:fd00:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:fe00::,2001:df0:fe00:ffff:ffff:ffff:ffff:ffff,IN
2001:df0:ff00::,2001:df0:ff00:ffff:ffff:ffff:ffff:ffff,PH
2001:df1:100::,2001:df1:100:ffff:ffff:ffff:ffff:ffff,IN
2001:df1:200::,2001:df1:200:ffff:ffff:ffff:ffff:ffff,NZ
@@ -4990,7 +3378,6 @@
2001:df1:a900::,2001:df1:a900:ffff:ffff:ffff:ffff:ffff,ID
2001:df1:aa00::,2001:df1:aa00:ffff:ffff:ffff:ffff:ffff,ID
2001:df1:ab00::,2001:df1:ab00:ffff:ffff:ffff:ffff:ffff,HK
-2001:df1:ac00::,2001:df1:ac00:ffff:ffff:ffff:ffff:ffff,HK
2001:df1:ad00::,2001:df1:ad00:ffff:ffff:ffff:ffff:ffff,IN
2001:df1:af00::,2001:df1:af00:ffff:ffff:ffff:ffff:ffff,AU
2001:df1:b000::,2001:df1:b000:ffff:ffff:ffff:ffff:ffff,TH
@@ -5015,8 +3402,7 @@
2001:df1:c400::,2001:df1:c400:ffff:ffff:ffff:ffff:ffff,AU
2001:df1:c500::,2001:df1:c500:ffff:ffff:ffff:ffff:ffff,IN
2001:df1:c600::,2001:df1:c600:ffff:ffff:ffff:ffff:ffff,ID
-2001:df1:c700::,2001:df1:c700:ffff:ffff:ffff:ffff:ffff,MM
-2001:df1:c701::,2001:df1:c701:ffff:ffff:ffff:ffff:ffff,KH
+2001:df1:c700::,2001:df1:c77f:ffff:ffff:ffff:ffff:ffff,MM
2001:df1:c800::,2001:df1:c800:ffff:ffff:ffff:ffff:ffff,HK
2001:df1:c900::,2001:df1:c900:ffff:ffff:ffff:ffff:ffff,CN
2001:df1:ca00::,2001:df1:ca00:ffff:ffff:ffff:ffff:ffff,ID
@@ -5113,7 +3499,7 @@
2001:df2:2900::,2001:df2:2900:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:2a00::,2001:df2:2a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:2b00::,2001:df2:2b00:ffff:ffff:ffff:ffff:ffff,ID
-2001:df2:2c00::,2001:df2:2c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:2c00::,2001:df2:2c7f:ffff:ffff:ffff:ffff:ffff,HK
2001:df2:2d00::,2001:df2:2d00:ffff:ffff:ffff:ffff:ffff,SG
2001:df2:2e00::,2001:df2:2e00:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:2f00::,2001:df2:2f00:ffff:ffff:ffff:ffff:ffff,TH
@@ -5269,7 +3655,7 @@
2001:df2:c900::,2001:df2:c900:ffff:ffff:ffff:ffff:ffff,JP
2001:df2:ca00::,2001:df2:ca00:ffff:ffff:ffff:ffff:ffff,VN
2001:df2:cb00::,2001:df2:cb00:ffff:ffff:ffff:ffff:ffff,AU
-2001:df2:cc00::,2001:df2:cc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:cc00::,2001:df2:cc7f:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:cd00::,2001:df2:cd00:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:ce00::,2001:df2:ce00:ffff:ffff:ffff:ffff:ffff,VN
2001:df2:cf00::,2001:df2:cf00:ffff:ffff:ffff:ffff:ffff,IN
@@ -5292,7 +3678,7 @@
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
-2001:df2:e400::,2001:df2:e400:ffff:ffff:ffff:ffff:ffff,PH
+2001:df2:e400::,2001:df2:e47f:ffff:ffff:ffff:ffff:ffff,PH
2001:df2:e500::,2001:df2:e500:ffff:ffff:ffff:ffff:ffff,US
2001:df2:e600::,2001:df2:e600:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:e700::,2001:df2:e700:ffff:ffff:ffff:ffff:ffff,AU
@@ -5320,7 +3706,7 @@
2001:df2:fd00::,2001:df2:fd00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df2:fe00::,2001:df2:fe00:ffff:ffff:ffff:ffff:ffff,US
2001:df2:ff00::,2001:df2:ff00:ffff:ffff:ffff:ffff:ffff,IN
-2001:df3::,2001:df3::ffff:ffff:ffff:ffff:ffff,MY
+2001:df3::,2001:df3:7f:ffff:ffff:ffff:ffff:ffff,MY
2001:df3:100::,2001:df3:101:ffff:ffff:ffff:ffff:ffff,TH
2001:df3:200::,2001:df3:200:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:300::,2001:df3:300:ffff:ffff:ffff:ffff:ffff,MV
@@ -5328,9 +3714,7 @@
2001:df3:500::,2001:df3:500:ffff:ffff:ffff:ffff:ffff,BD
2001:df3:600::,2001:df3:600:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:700::,2001:df3:700:ffff:ffff:ffff:ffff:ffff,PK
-2001:df3:800::,2001:df3:80d:ffff:ffff:ffff:ffff:ffff,US
-2001:df3:80e::,2001:df3:80e:7fff:ffff:ffff:ffff:ffff,IN
-2001:df3:80e:8000::,2001:df3:81f:ffff:ffff:ffff:ffff:ffff,US
+2001:df3:800::,2001:df3:81f:ffff:ffff:ffff:ffff:ffff,US
2001:df3:900::,2001:df3:900:ffff:ffff:ffff:ffff:ffff,VN
2001:df3:a00::,2001:df3:a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:b00::,2001:df3:b00:ffff:ffff:ffff:ffff:ffff,ID
@@ -5353,7 +3737,6 @@
2001:df3:1e00::,2001:df3:1e00:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:1f00::,2001:df3:1f00:ffff:ffff:ffff:ffff:ffff,HK
2001:df3:2000::,2001:df3:2000:ffff:ffff:ffff:ffff:ffff,ID
-2001:df3:2100::,2001:df3:2100:ffff:ffff:ffff:ffff:ffff,BD
2001:df3:2200::,2001:df3:2200:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:2300::,2001:df3:2300:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:2400::,2001:df3:2400:ffff:ffff:ffff:ffff:ffff,TH
@@ -5423,7 +3806,6 @@
2001:df3:6500::,2001:df3:6500:ffff:ffff:ffff:ffff:ffff,JP
2001:df3:6600::,2001:df3:6600:ffff:ffff:ffff:ffff:ffff,NZ
2001:df3:6700::,2001:df3:6700:ffff:ffff:ffff:ffff:ffff,HK
-2001:df3:6800::,2001:df3:6800:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:6900::,2001:df3:6900:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:6a00::,2001:df3:6a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:6b00::,2001:df3:6b00:ffff:ffff:ffff:ffff:ffff,NZ
@@ -5464,7 +3846,6 @@
2001:df3:8f00::,2001:df3:8f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:9100::,2001:df3:9100:ffff:ffff:ffff:ffff:ffff,HK
2001:df3:9200::,2001:df3:9200:ffff:ffff:ffff:ffff:ffff,VN
-2001:df3:9300::,2001:df3:9300:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:9400::,2001:df3:9400:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:9500::,2001:df3:9500:ffff:ffff:ffff:ffff:ffff,HK
2001:df3:9600::,2001:df3:9600:ffff:ffff:ffff:ffff:ffff,ID
@@ -5495,202 +3876,411 @@
2001:df3:b000::,2001:df3:b000:ffff:ffff:ffff:ffff:ffff,TH
2001:df3:b100::,2001:df3:b100:ffff:ffff:ffff:ffff:ffff,CN
2001:df3:b200::,2001:df3:b200:ffff:ffff:ffff:ffff:ffff,PK
+2001:df3:b300::,2001:df3:b300:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:b400::,2001:df3:b400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:b500::,2001:df3:b500:ffff:ffff:ffff:ffff:ffff,VN
2001:df3:b600::,2001:df3:b600:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df3:b700::,2001:df3:b700:ffff:ffff:ffff:ffff:ffff,VN
2001:df3:b800::,2001:df3:b800:ffff:ffff:ffff:ffff:ffff,IN
-2001:df3:ba00::,2001:df3:ba00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:b900::,2001:df3:b900:ffff:ffff:ffff:ffff:ffff,MY
+2001:df3:ba00::,2001:df3:ba7f:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:bc00::,2001:df3:bc00:ffff:ffff:ffff:ffff:ffff,JP
+2001:df3:bd00::,2001:df3:bd00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:be00::,2001:df3:be00:ffff:ffff:ffff:ffff:ffff,BD
+2001:df3:bf00::,2001:df3:bf00:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:c000::,2001:df3:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:c100::,2001:df3:c100:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:c200::,2001:df3:c200:ffff:ffff:ffff:ffff:ffff,TH
+2001:df3:c300::,2001:df3:c300:ffff:ffff:ffff:ffff:ffff,SG
2001:df3:c400::,2001:df3:c400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:c500::,2001:df3:c500:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:c600::,2001:df3:c600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:c700::,2001:df3:c700:ffff:ffff:ffff:ffff:ffff,TH
2001:df3:c800::,2001:df3:c800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:c900::,2001:df3:c900:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:ca00::,2001:df3:ca00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:cb00::,2001:df3:cb00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:cc00::,2001:df3:cc00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:cd00::,2001:df3:cd00:ffff:ffff:ffff:ffff:ffff,HK
2001:df3:ce00::,2001:df3:ce00:ffff:ffff:ffff:ffff:ffff,MM
+2001:df3:cf00::,2001:df3:cf00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:d000::,2001:df3:d000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:d100::,2001:df3:d100:ffff:ffff:ffff:ffff:ffff,MY
2001:df3:d200::,2001:df3:d200:ffff:ffff:ffff:ffff:ffff,HK
+2001:df3:d300::,2001:df3:d300:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:d400::,2001:df3:d400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:d500::,2001:df3:d500:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:d600::,2001:df3:d600:ffff:ffff:ffff:ffff:ffff,AF
+2001:df3:d700::,2001:df3:d700:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:d900::,2001:df3:d900:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:da00::,2001:df3:da00:ffff:ffff:ffff:ffff:ffff,US
+2001:df3:db00::,2001:df3:db00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:dc00::,2001:df3:dc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:dd00::,2001:df3:dd00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:de00::,2001:df3:de00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:df00::,2001:df3:df00:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:e000::,2001:df3:e000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df3:e100::,2001:df3:e100:ffff:ffff:ffff:ffff:ffff,VN
2001:df3:e200::,2001:df3:e200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:e300::,2001:df3:e300:ffff:ffff:ffff:ffff:ffff,BD
2001:df3:e400::,2001:df3:e400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:e500::,2001:df3:e500:ffff:ffff:ffff:ffff:ffff,VN
2001:df3:e600::,2001:df3:e600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:e700::,2001:df3:e700:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:e800::,2001:df3:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:e900::,2001:df3:e900:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:ea00::,2001:df3:ea00:ffff:ffff:ffff:ffff:ffff,MV
+2001:df3:ed00::,2001:df3:ed00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:ee00::,2001:df3:ee00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df3:ef00::,2001:df3:ef00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:f000::,2001:df3:f000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:f100::,2001:df3:f100:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:f200::,2001:df3:f200:ffff:ffff:ffff:ffff:ffff,HK
+2001:df3:f300::,2001:df3:f300:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:f400::,2001:df3:f400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:f500::,2001:df3:f500:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:f600::,2001:df3:f600:ffff:ffff:ffff:ffff:ffff,VN
+2001:df3:f700::,2001:df3:f700:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:f800::,2001:df3:f800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:f900::,2001:df3:f900:ffff:ffff:ffff:ffff:ffff,TH
2001:df3:fa00::,2001:df3:fa00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:fb00::,2001:df3:fb00:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:fc00::,2001:df3:fc00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df3:fd00::,2001:df3:fd00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:fe00::,2001:df3:fe00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:ff00::,2001:df3:ff00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4::,2001:df4::ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:100::,2001:df4:100:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:200::,2001:df4:200:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:300::,2001:df4:300:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:400::,2001:df4:400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:500::,2001:df4:500:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:600::,2001:df4:600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:700::,2001:df4:700:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:800::,2001:df4:800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:900::,2001:df4:900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:a00::,2001:df4:a00:ffff:ffff:ffff:ffff:ffff,NP
+2001:df4:b00::,2001:df4:b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:c00::,2001:df4:c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:d00::,2001:df4:d00:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:e00::,2001:df4:e00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:f00::,2001:df4:f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:1000::,2001:df4:1000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:1100::,2001:df4:1100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:1200::,2001:df4:1200:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:1300::,2001:df4:1300:ffff:ffff:ffff:ffff:ffff,NZ
2001:df4:1400::,2001:df4:1400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:1500::,2001:df4:1500:ffff:ffff:ffff:ffff:ffff,CN
2001:df4:1600::,2001:df4:1600:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:1700::,2001:df4:1700:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:1800::,2001:df4:1800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:1900::,2001:df4:1900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:1a00::,2001:df4:1a00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:1b00::,2001:df4:1b00:ffff:ffff:ffff:ffff:ffff,LK
2001:df4:1c00::,2001:df4:1c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:1d00::,2001:df4:1d00:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:1e00::,2001:df4:1e00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:1f00::,2001:df4:1f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:2000::,2001:df4:2000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df4:2100::,2001:df4:2100:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:2200::,2001:df4:2200:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:2300::,2001:df4:2300:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:2400::,2001:df4:2400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:2500::,2001:df4:2500:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:2600::,2001:df4:2600:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:2700::,2001:df4:2700:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:2800::,2001:df4:2800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:2900::,2001:df4:2900:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:2a00::,2001:df4:2a00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:2b00::,2001:df4:2b00:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:2c00::,2001:df4:2c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:2d00::,2001:df4:2d00:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:2e00::,2001:df4:2e00:ffff:ffff:ffff:ffff:ffff,BD
+2001:df4:2f00::,2001:df4:2f00:ffff:ffff:ffff:ffff:ffff,CN
2001:df4:3000::,2001:df4:3000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df4:3100::,2001:df4:3100:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:3200::,2001:df4:3200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:3300::,2001:df4:3300:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:3400::,2001:df4:3400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:3500::,2001:df4:3500:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:3600::,2001:df4:3600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:3700::,2001:df4:3700:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:3800::,2001:df4:3800:ffff:ffff:ffff:ffff:ffff,BD
+2001:df4:3900::,2001:df4:3900:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:3a00::,2001:df4:3a00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:3b00::,2001:df4:3b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:3c00::,2001:df4:3c00:ffff:ffff:ffff:ffff:ffff,BD
+2001:df4:3d00::,2001:df4:3d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:3e00::,2001:df4:3e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:3f00::,2001:df4:3f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:4000::,2001:df4:400f:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:4100::,2001:df4:4100:ffff:ffff:ffff:ffff:ffff,PK
2001:df4:4200::,2001:df4:4200:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:4300::,2001:df4:4300:ffff:ffff:ffff:ffff:ffff,NZ
2001:df4:4400::,2001:df4:4400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:4500::,2001:df4:4500:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:4600::,2001:df4:4600:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:4700::,2001:df4:4700:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:4900::,2001:df4:4900:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:4b00::,2001:df4:4b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:4c00::,2001:df4:4c00:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:4d00::,2001:df4:4d00:ffff:ffff:ffff:ffff:ffff,NP
2001:df4:4e00::,2001:df4:4e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:4f00::,2001:df4:4f00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df4:5000::,2001:df4:5000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:5100::,2001:df4:5100:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:5200::,2001:df4:5200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:5300::,2001:df4:5300:ffff:ffff:ffff:ffff:ffff,NZ
2001:df4:5400::,2001:df4:5400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:5500::,2001:df4:5500:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:5600::,2001:df4:5600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:5700::,2001:df4:5700:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:5800::,2001:df4:5800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:5900::,2001:df4:5900:ffff:ffff:ffff:ffff:ffff,CN
2001:df4:5a00::,2001:df4:5a00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:5b00::,2001:df4:5b00:ffff:ffff:ffff:ffff:ffff,MV
2001:df4:5c00::,2001:df4:5c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:5d00::,2001:df4:5d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:5e00::,2001:df4:5e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:5f00::,2001:df4:5f01:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:6000::,2001:df4:6000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:6100::,2001:df4:6100:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:6200::,2001:df4:6200:ffff:ffff:ffff:ffff:ffff,PK
+2001:df4:6300::,2001:df4:6300:ffff:ffff:ffff:ffff:ffff,PH
2001:df4:6400::,2001:df4:6400:ffff:ffff:ffff:ffff:ffff,LA
+2001:df4:6500::,2001:df4:6500:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:6600::,2001:df4:6600:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:6700::,2001:df4:6700:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:6800::,2001:df4:6800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:6900::,2001:df4:6900:ffff:ffff:ffff:ffff:ffff,PG
2001:df4:6a00::,2001:df4:6a00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:6b00::,2001:df4:6b00:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:6c00::,2001:df4:6c00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:6d00::,2001:df4:6d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:6e00::,2001:df4:6e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:6f00::,2001:df4:6f00:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:7000::,2001:df4:7000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:7100::,2001:df4:7100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:7200::,2001:df4:7200:ffff:ffff:ffff:ffff:ffff,JP
+2001:df4:7300::,2001:df4:7300:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:7400::,2001:df4:7400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:7500::,2001:df4:7500:ffff:ffff:ffff:ffff:ffff,MM
2001:df4:7600::,2001:df4:7600:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:7700::,2001:df4:7703:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:7900::,2001:df4:7900:ffff:ffff:ffff:ffff:ffff,PK
2001:df4:7a00::,2001:df4:7a00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:7b00::,2001:df4:7b00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:7c00::,2001:df4:7c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:7d00::,2001:df4:7d00:ffff:ffff:ffff:ffff:ffff,HK
2001:df4:7e00::,2001:df4:7e00:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:7f00::,2001:df4:7f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:8000::,2001:df4:8000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:8100::,2001:df4:8100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:8200::,2001:df4:8200:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:8300::,2001:df4:8300:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:8400::,2001:df4:8400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:8500::,2001:df4:8500:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:8600::,2001:df4:8600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:8700::,2001:df4:8700:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:8900::,2001:df4:8900:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:8a00::,2001:df4:8a00:ffff:ffff:ffff:ffff:ffff,TW
+2001:df4:8b00::,2001:df4:8b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:8c00::,2001:df4:8c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:8d00::,2001:df4:8d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:8e00::,2001:df4:8e00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:8f00::,2001:df4:8f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:9000::,2001:df4:9000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:9100::,2001:df4:9100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:9200::,2001:df4:9200:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:9300::,2001:df4:9300:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:9500::,2001:df4:9500:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:9600::,2001:df4:9600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:9700::,2001:df4:9700:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:9800::,2001:df4:9800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:9900::,2001:df4:9900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:9a00::,2001:df4:9a00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:9b00::,2001:df4:9b00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:9c00::,2001:df4:9c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:9d00::,2001:df4:9d00:ffff:ffff:ffff:ffff:ffff,TW
2001:df4:9e00::,2001:df4:9e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:9f00::,2001:df4:9f00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:a000::,2001:df4:a000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:a100::,2001:df4:a100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:a200::,2001:df4:a200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:a300::,2001:df4:a300:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:a400::,2001:df4:a400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:a500::,2001:df4:a500:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:a600::,2001:df4:a600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:a700::,2001:df4:a700:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:a800::,2001:df4:a800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:a900::,2001:df4:a900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:aa00::,2001:df4:aa00:ffff:ffff:ffff:ffff:ffff,PK
+2001:df4:ab00::,2001:df4:ab00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:ac00::,2001:df4:ac00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:ad00::,2001:df4:ad00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:ae00::,2001:df4:ae00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:af00::,2001:df4:af00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:b000::,2001:df4:b000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:b100::,2001:df4:b100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:b200::,2001:df4:b200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:b300::,2001:df4:b300:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:b400::,2001:df4:b400:ffff:ffff:ffff:ffff:ffff,JP
+2001:df4:b500::,2001:df4:b500:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:b600::,2001:df4:b600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:b700::,2001:df4:b700:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:b900::,2001:df4:b900:ffff:ffff:ffff:ffff:ffff,LA
2001:df4:ba00::,2001:df4:ba01:ffff:ffff:ffff:ffff:ffff,PH
+2001:df4:bb00::,2001:df4:bb00:ffff:ffff:ffff:ffff:ffff,TH
2001:df4:bc00::,2001:df4:bc00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:bd00::,2001:df4:bd00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:be00::,2001:df4:be00:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:bf00::,2001:df4:bf00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:c000::,2001:df4:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:c100::,2001:df4:c100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:c200::,2001:df4:c200:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:c300::,2001:df4:c300:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:c400::,2001:df4:c400:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:c500::,2001:df4:c500:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:c600::,2001:df4:c600:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:c700::,2001:df4:c700:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:c800::,2001:df4:c800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:c900::,2001:df4:c900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:ca00::,2001:df4:ca00:ffff:ffff:ffff:ffff:ffff,NP
+2001:df4:cb00::,2001:df4:cb00:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:cc00::,2001:df4:cc00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:cd00::,2001:df4:cd00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:ce00::,2001:df4:ce00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:cf00::,2001:df4:cf00:ffff:ffff:ffff:ffff:ffff,CN
2001:df4:d000::,2001:df4:d000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:d100::,2001:df4:d100:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:d200::,2001:df4:d200:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:d300::,2001:df4:d300:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:d400::,2001:df4:d400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:d500::,2001:df4:d500:ffff:ffff:ffff:ffff:ffff,VN
2001:df4:d600::,2001:df4:d600:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:d700::,2001:df4:d700:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:d800::,2001:df4:d800:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:d900::,2001:df4:d900:ffff:ffff:ffff:ffff:ffff,IN
2001:df4:da00::,2001:df4:da00:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:db00::,2001:df4:db00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:dd00::,2001:df4:dd00:ffff:ffff:ffff:ffff:ffff,SG
2001:df4:de00::,2001:df4:de00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:df00::,2001:df4:df00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:e000::,2001:df4:e000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:e100::,2001:df4:e100:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:e200::,2001:df4:e200:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:e300::,2001:df4:e300:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:e400::,2001:df4:e400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:e500::,2001:df4:e500:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:e600::,2001:df4:e600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:e700::,2001:df4:e700:ffff:ffff:ffff:ffff:ffff,PH
2001:df4:e800::,2001:df4:e800:ffff:ffff:ffff:ffff:ffff,MN
+2001:df4:e900::,2001:df4:e900:ffff:ffff:ffff:ffff:ffff,PH
2001:df4:ea00::,2001:df4:ea00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:eb00::,2001:df4:eb00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:ec00::,2001:df4:ec00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:ed00::,2001:df4:ed00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:ee00::,2001:df4:ee00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:ef00::,2001:df4:ef00:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:f000::,2001:df4:f000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:f100::,2001:df4:f100:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:f200::,2001:df4:f200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:f300::,2001:df4:f300:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:f400::,2001:df4:f400:ffff:ffff:ffff:ffff:ffff,BD
+2001:df4:f500::,2001:df4:f500:ffff:ffff:ffff:ffff:ffff,AU
2001:df4:f600::,2001:df4:f600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:f700::,2001:df4:f700:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:f800::,2001:df4:f800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:f900::,2001:df4:f900:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:fa00::,2001:df4:fa00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:fb00::,2001:df4:fb00:ffff:ffff:ffff:ffff:ffff,ID
2001:df4:fc00::,2001:df4:fc00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:fd00::,2001:df4:fd00:ffff:ffff:ffff:ffff:ffff,BD
2001:df4:fe00::,2001:df4:fe00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:ff00::,2001:df4:ff00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5::,2001:df5::ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:100::,2001:df5:100:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:200::,2001:df5:200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:300::,2001:df5:300:ffff:ffff:ffff:ffff:ffff,MN
2001:df5:400::,2001:df5:400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:500::,2001:df5:500:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:600::,2001:df5:600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:700::,2001:df5:700:ffff:ffff:ffff:ffff:ffff,NZ
2001:df5:800::,2001:df5:800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:900::,2001:df5:900:ffff:ffff:ffff:ffff:ffff,MO
+2001:df5:b00::,2001:df5:b00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:c00::,2001:df5:c00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:d00::,2001:df5:d00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:e00::,2001:df5:e00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:f00::,2001:df5:f00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:1000::,2001:df5:1000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:1100::,2001:df5:1100:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:1200::,2001:df5:1200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:1300::,2001:df5:1300:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:1400::,2001:df5:1400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:1500::,2001:df5:1500:ffff:ffff:ffff:ffff:ffff,HK
2001:df5:1600::,2001:df5:1600:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:1700::,2001:df5:1700:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:1900::,2001:df5:1900:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:1a00::,2001:df5:1a00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:1b00::,2001:df5:1b00:ffff:ffff:ffff:ffff:ffff,MM
2001:df5:1c00::,2001:df5:1c00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:1d00::,2001:df5:1d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:1e00::,2001:df5:1e00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:1f00::,2001:df5:1f00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:2000::,2001:df5:2000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:2100::,2001:df5:2100:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:2200::,2001:df5:2200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:2300::,2001:df5:2300:ffff:ffff:ffff:ffff:ffff,SG
2001:df5:2400::,2001:df5:2400:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:2500::,2001:df5:2500:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:2600::,2001:df5:2600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:2700::,2001:df5:2700:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:2800::,2001:df5:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:2900::,2001:df5:2900:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:2b00::,2001:df5:2b00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:2c00::,2001:df5:2c00:ffff:ffff:ffff:ffff:ffff,JP
+2001:df5:2d00::,2001:df5:2d00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:2e00::,2001:df5:2e00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:2f00::,2001:df5:2f00:ffff:ffff:ffff:ffff:ffff,BD
2001:df5:3000::,2001:df5:3000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:3100::,2001:df5:3100:ffff:ffff:ffff:ffff:ffff,NP
2001:df5:3200::,2001:df5:3200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:3300::,2001:df5:3300:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:3400::,2001:df5:3400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:3500::,2001:df5:3500:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:3600::,2001:df5:3600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:3700::,2001:df5:3700:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:3800::,2001:df5:3800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:3900::,2001:df5:3900:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:3a00::,2001:df5:3a00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:3b00::,2001:df5:3b00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:3c00::,2001:df5:3c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:3d00::,2001:df5:3d00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:3e00::,2001:df5:3e00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:3f00::,2001:df5:3f00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:4000::,2001:df5:4000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:4100::,2001:df5:4100:ffff:ffff:ffff:ffff:ffff,US
2001:df5:4200::,2001:df5:4200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:4300::,2001:df5:4300:ffff:ffff:ffff:ffff:ffff,NP
2001:df5:4400::,2001:df5:4400:ffff:ffff:ffff:ffff:ffff,PH
+2001:df5:4500::,2001:df5:4500:ffff:ffff:ffff:ffff:ffff,TH
2001:df5:4600::,2001:df5:4600:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:4700::,2001:df5:4700:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:4800::,2001:df5:4800:ffff:ffff:ffff:ffff:ffff,BN
+2001:df5:4900::,2001:df5:4900:ffff:ffff:ffff:ffff:ffff,VN
2001:df5:4a00::,2001:df5:4a00:ffff:ffff:ffff:ffff:ffff,VN
+2001:df5:4b00::,2001:df5:4b00:ffff:ffff:ffff:ffff:ffff,VN
2001:df5:4c00::,2001:df5:4c01:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:4d00::,2001:df5:4d00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:4e00::,2001:df5:4e00:ffff:ffff:ffff:ffff:ffff,MY
+2001:df5:4f00::,2001:df5:4f00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:5100::,2001:df5:5100:ffff:ffff:ffff:ffff:ffff,GB
2001:df5:5200::,2001:df5:5200:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:5300::,2001:df5:5300:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:5500::,2001:df5:5500:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:5600::,2001:df5:5600:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:5700::,2001:df5:5700:ffff:ffff:ffff:ffff:ffff,FJ
2001:df5:5800::,2001:df5:5800:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:5a00::,2001:df5:5a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:5e00::,2001:df5:5e00:ffff:ffff:ffff:ffff:ffff,IN
@@ -5733,7 +4323,7 @@
2001:df5:aa00::,2001:df5:aa00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:ac00::,2001:df5:ac00:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:ae00::,2001:df5:ae00:ffff:ffff:ffff:ffff:ffff,PH
-2001:df5:b000::,2001:df5:b000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:b000::,2001:df5:b07f:ffff:ffff:ffff:ffff:ffff,NZ
2001:df5:b200::,2001:df5:b200:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:b400::,2001:df5:b400:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:b600::,2001:df5:b600:ffff:ffff:ffff:ffff:ffff,NZ
@@ -5755,7 +4345,7 @@
2001:df5:d800::,2001:df5:d800:ffff:ffff:ffff:ffff:ffff,SG
2001:df5:da00::,2001:df5:da00:ffff:ffff:ffff:ffff:ffff,PH
2001:df5:de00::,2001:df5:de00:ffff:ffff:ffff:ffff:ffff,IN
-2001:df5:e000::,2001:df5:e000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df5:e000::,2001:df5:e07f:ffff:ffff:ffff:ffff:ffff,MY
2001:df5:e200::,2001:df5:e200:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:e600::,2001:df5:e600:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:e800::,2001:df5:e800:ffff:ffff:ffff:ffff:ffff,PH
@@ -5776,6 +4366,7 @@
2001:df6:600::,2001:df6:600:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:800::,2001:df6:80f:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:a00::,2001:df6:a00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:c00::,2001:df6:c00:ffff:ffff:ffff:ffff:ffff,TH
2001:df6:e00::,2001:df6:e00:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:1000::,2001:df6:1000:ffff:ffff:ffff:ffff:ffff,PH
2001:df6:1200::,2001:df6:1200:ffff:ffff:ffff:ffff:ffff,AU
@@ -5816,7 +4407,6 @@
2001:df6:5c00::,2001:df6:5c00:ffff:ffff:ffff:ffff:ffff,TH
2001:df6:5e00::,2001:df6:5e01:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:6000::,2001:df6:6000:ffff:ffff:ffff:ffff:ffff,JP
-2001:df6:6200::,2001:df6:6200:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:6400::,2001:df6:6400:ffff:ffff:ffff:ffff:ffff,SG
2001:df6:6600::,2001:df6:6600:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:6800::,2001:df6:6800:ffff:ffff:ffff:ffff:ffff,CN
@@ -5826,7 +4416,6 @@
2001:df6:7000::,2001:df6:7000:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:7200::,2001:df6:7200:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:7400::,2001:df6:7400:ffff:ffff:ffff:ffff:ffff,TH
-2001:df6:7600::,2001:df6:7600:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:7800::,2001:df6:7800:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:7a00::,2001:df6:7a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:7c00::,2001:df6:7c00:ffff:ffff:ffff:ffff:ffff,AU
@@ -5857,7 +4446,7 @@
2001:df6:b200::,2001:df6:b200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:b400::,2001:df6:b400:ffff:ffff:ffff:ffff:ffff,MY
2001:df6:b600::,2001:df6:b600:ffff:ffff:ffff:ffff:ffff,AU
-2001:df6:b800::,2001:df6:b800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6:b800::,2001:df6:b87f:ffff:ffff:ffff:ffff:ffff,SG
2001:df6:bc00::,2001:df6:bc00:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:be00::,2001:df6:be00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df6:c200::,2001:df6:c200:ffff:ffff:ffff:ffff:ffff,AU
@@ -5929,7 +4518,7 @@
2001:df7:5000::,2001:df7:5000:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:5200::,2001:df7:5200:ffff:ffff:ffff:ffff:ffff,NP
2001:df7:5400::,2001:df7:5400:ffff:ffff:ffff:ffff:ffff,ID
-2001:df7:5600::,2001:df7:5600:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:5600::,2001:df7:567f:ffff:ffff:ffff:ffff:ffff,JP
2001:df7:5a00::,2001:df7:5a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:5e00::,2001:df7:5e00:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:6000::,2001:df7:6000:ffff:ffff:ffff:ffff:ffff,IN
@@ -5955,7 +4544,6 @@
2001:df7:8a00::,2001:df7:8a00:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:8e00::,2001:df7:8e00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:9200::,2001:df7:921f:ffff:ffff:ffff:ffff:ffff,IN
-2001:df7:9400::,2001:df7:9400:ffff:ffff:ffff:ffff:ffff,US
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
@@ -5963,14 +4551,11 @@
2001:df7:9e00::,2001:df7:9e00:ffff:ffff:ffff:ffff:ffff,SG
2001:df7:a000::,2001:df7:a000:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:a200::,2001:df7:a200:ffff:ffff:ffff:ffff:ffff,ID
-2001:df7:a400::,2001:df7:a400:ffff:ffff:ffff:ffff:ffff,SG
-2001:df7:a401::,2001:df7:a401:7fff:ffff:ffff:ffff:ffff,TH
-2001:df7:a401:8000::,2001:df7:a401:ffff:ffff:ffff:ffff:ffff,SG
+2001:df7:a400::,2001:df7:a401:ffff:ffff:ffff:ffff:ffff,SG
2001:df7:a600::,2001:df7:a600:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:a800::,2001:df7:a800:ffff:ffff:ffff:ffff:ffff,JP
2001:df7:aa00::,2001:df7:aa00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:ac00::,2001:df7:ac00:ffff:ffff:ffff:ffff:ffff,AU
-2001:df7:ae00::,2001:df7:ae00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df7:b000::,2001:df7:b000:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:b200::,2001:df7:b200:ffff:ffff:ffff:ffff:ffff,PG
2001:df7:b400::,2001:df7:b400:ffff:ffff:ffff:ffff:ffff,ID
@@ -6011,8 +4596,8 @@
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,AU
-2001:df9::,2001:df9:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2001:df8::,2001:df8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+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
2001:e08::,2001:e08:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -6056,8 +4641,7 @@
2001:f48::,2001:f48:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:f50::,2001:f50:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2001:f58::,2001:f58:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:f60::,2001:f6f:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:f80::,2001:f80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:f60::,2001:f80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:f88::,2001:f88:ffff:ffff:ffff:ffff:ffff:ffff,CN
2001:f90::,2001:f90:ffff:ffff:ffff:ffff:ffff:ffff,MO
2001:f98::,2001:f98:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -6146,12 +4730,7 @@
2001:13c7:6007::,2001:13c7:600e:ffff:ffff:ffff:ffff:ffff,AR
2001:13c7:6010::,2001:13c7:601f:ffff:ffff:ffff:ffff:ffff,AR
2001:13c7:6f00::,2001:13c7:6fff:ffff:ffff:ffff:ffff:ffff,EC
-2001:13c7:7000::,2001:13c7:7000:ffff:ffff:ffff:ffff:ffff,MX
-2001:13c7:7001::,2001:13c7:7003:ffff:ffff:ffff:ffff:ffff,UY
-2001:13c7:7004::,2001:13c7:7004:ffff:ffff:ffff:ffff:ffff,CR
-2001:13c7:7005::,2001:13c7:7009:ffff:ffff:ffff:ffff:ffff,UY
-2001:13c7:7010::,2001:13c7:7013:ffff:ffff:ffff:ffff:ffff,UY
-2001:13c7:7014::,2001:13c7:7014:ffff:ffff:ffff:ffff:ffff,MX
+2001:13c7:7000::,2001:13c7:707f:ffff:ffff:ffff:ffff:ffff,CR
2001:13c8::,2001:13c8:ffff:ffff:ffff:ffff:ffff:ffff,CU
2001:13d0::,2001:13d7:ffff:ffff:ffff:ffff:ffff:ffff,AR
2001:13d8::,2001:13d8:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -6174,7 +4753,9 @@
2001:1460::,2001:1460:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:1468::,2001:1468:7fff:ffff:ffff:ffff:ffff:ffff,CZ
2001:1468:8000::,2001:1468:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2001:1469::,2001:146b:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:1469::,2001:146a:7f:ffff:ffff:ffff:ffff:ffff,CZ
+2001:146a:80::,2001:146a:ff:ffff:ffff:ffff:ffff:ffff,RU
+2001:146a:100::,2001:146b:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:146c::,2001:146c:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:146d::,2001:146e:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:146f::,2001:146f:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -6239,53 +4820,13 @@
2001:1688::,2001:168f:ffff:ffff:ffff:ffff:ffff:ffff,SI
2001:1690::,2001:1690:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:1698::,2001:1698:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2001:16a0::,2001:16a2:596:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:597::,2001:16a2:597:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:597:8000::,2001:16a2:4367:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:4368::,2001:16a2:4368:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:4368:8000::,2001:16a2:82aa:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:82ab::,2001:16a2:82ab:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:82ab:8000::,2001:16a2:8452:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:8452:8000::,2001:16a2:8452:ffff:ffff:ffff:ffff:ffff,GB
-2001:16a2:8453::,2001:16a2:84cc:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:84cc:8000::,2001:16a2:84cc:ffff:ffff:ffff:ffff:ffff,GB
-2001:16a2:84cd::,2001:16a2:84da:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:84da:8000::,2001:16a2:84da:ffff:ffff:ffff:ffff:ffff,DE
-2001:16a2:84db::,2001:16a2:85a7:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:85a8::,2001:16a2:85a8:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:85a8:8000::,2001:16a2:8601:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:8601:8000::,2001:16a2:8601:ffff:ffff:ffff:ffff:ffff,GB
-2001:16a2:8602::,2001:16a2:861c:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:861d::,2001:16a2:861d:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:861d:8000::,2001:16a2:87a5:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:87a6::,2001:16a2:87a6:7fff:ffff:ffff:ffff:ffff,GB
-2001:16a2:87a6:8000::,2001:16a2:8858:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:8858:8000::,2001:16a2:8858:ffff:ffff:ffff:ffff:ffff,GB
-2001:16a2:8859::,2001:16a2:8baa:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:8baa:8000::,2001:16a2:8baa:ffff:ffff:ffff:ffff:ffff,GB
-2001:16a2:8bab::,2001:16a2:96d7:7fff:ffff:ffff:ffff:ffff,SA
-2001:16a2:96d7:8000::,2001:16a2:96d7:ffff:ffff:ffff:ffff:ffff,ZA
-2001:16a2:96d8::,2001:16a2:b7d4:ffff:ffff:ffff:ffff:ffff,SA
-2001:16a2:b7d5::,2001:16a2:b7d5:7fff:ffff:ffff:ffff:ffff,IN
-2001:16a2:b7d5:8000::,2001:16a7:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2001:16a0::,2001:16a7:ffff:ffff:ffff:ffff:ffff:ffff,SA
2001:16a8::,2001:16a8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:16b0::,2001:16b0:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2001:16b8::,2001:16b8:2486:ffff:ffff:ffff:ffff:ffff,DE
-2001:16b8:2487::,2001:16b8:2487:7fff:ffff:ffff:ffff:ffff,FR
-2001:16b8:2487:8000::,2001:16b8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:16b8::,2001:16b8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:16c0::,2001:16c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2001:16d0::,2001:16d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2001:16d8::,2001:16d8:dd00:7fff:ffff:ffff:ffff:ffff,SE
-2001:16d8:dd00:8000::,2001:16d8:dd00:ffff:ffff:ffff:ffff:ffff,DK
-2001:16d8:dd01::,2001:16d8:dda3:ffff:ffff:ffff:ffff:ffff,SE
-2001:16d8:dda4::,2001:16d8:dda4:7fff:ffff:ffff:ffff:ffff,DK
-2001:16d8:dda4:8000::,2001:16d8:ddcd:ffff:ffff:ffff:ffff:ffff,SE
-2001:16d8:ddce::,2001:16d8:ddce:7fff:ffff:ffff:ffff:ffff,DK
-2001:16d8:ddce:8000::,2001:16d8:ee00:7fff:ffff:ffff:ffff:ffff,SE
-2001:16d8:ee00:8000::,2001:16d8:ee00:ffff:ffff:ffff:ffff:ffff,NO
-2001:16d8:ee01::,2001:16d8:ee5b:ffff:ffff:ffff:ffff:ffff,SE
-2001:16d8:ee5c::,2001:16d8:ee5c:7fff:ffff:ffff:ffff:ffff,NO
-2001:16d8:ee5c:8000::,2001:16d8:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:16d8::,2001:16d8:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:16e0::,2001:16e7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:16e8::,2001:16e8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:16f0::,2001:16f7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -6357,24 +4898,23 @@
2001:19c0::,2001:19c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2001:19c8::,2001:19c8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19d0::,2001:19d0:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:19d8::,2001:19d8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19e0::,2001:19e0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19e8::,2001:19e8:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:19f0::,2001:19f0:5000:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:5000:8000::,2001:19f0:5001:7fff:ffff:ffff:ffff:ffff,NL
-2001:19f0:5001:8000::,2001:19f0:5800:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:5800:8000::,2001:19f0:5801:7fff:ffff:ffff:ffff:ffff,AU
-2001:19f0:5801:8000::,2001:19f0:6800:ffff:ffff:ffff:ffff:ffff,US
-2001:19f0:6801::,2001:19f0:6801:7fff:ffff:ffff:ffff:ffff,FR
-2001:19f0:6801:8000::,2001:19f0:6c00:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:6c00:8000::,2001:19f0:6c01:7fff:ffff:ffff:ffff:ffff,DE
-2001:19f0:6c01:8000::,2001:19f0:7000:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:7000:8000::,2001:19f0:7001:7fff:ffff:ffff:ffff:ffff,JP
-2001:19f0:7001:8000::,2001:19f0:7400:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:7400:8000::,2001:19f0:7400:ffff:ffff:ffff:ffff:ffff,GB
-2001:19f0:7401::,2001:19f0:7401:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:7401:8000::,2001:19f0:7401:ffff:ffff:ffff:ffff:ffff,GB
-2001:19f0:7402::,2001:19f0:7800:3fff:ffff:ffff:ffff:ffff,US
+2001:19f0::,2001:19f0:43ff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:4400::,2001:19f0:447f:ffff:ffff:ffff:ffff:ffff,SG
+2001:19f0:4480::,2001:19f0:4fff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:5000::,2001:19f0:507f:ffff:ffff:ffff:ffff:ffff,NL
+2001:19f0:5080::,2001:19f0:57ff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:5800::,2001:19f0:587f:ffff:ffff:ffff:ffff:ffff,AU
+2001:19f0:5880::,2001:19f0:67ff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:6800::,2001:19f0:687f:ffff:ffff:ffff:ffff:ffff,FR
+2001:19f0:6880::,2001:19f0:6bff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:6c00::,2001:19f0:6c7f:ffff:ffff:ffff:ffff:ffff,DE
+2001:19f0:6c80::,2001:19f0:6fff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:7000::,2001:19f0:707f:ffff:ffff:ffff:ffff:ffff,JP
+2001:19f0:7080::,2001:19f0:73ff:ffff:ffff:ffff:ffff:ffff,US
+2001:19f0:7400::,2001:19f0:747f:ffff:ffff:ffff:ffff:ffff,GB
+2001:19f0:7480::,2001:19f0:7800:3fff:ffff:ffff:ffff:ffff,US
2001:19f0:7800:4000::,2001:19f0:7800:4000:ffff:ffff:ffff:ffff,CA
2001:19f0:7800:4001::,2001:19f0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19f8::,2001:19f8:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -6407,9 +4947,7 @@
2001:1ae0::,2001:1ae0:ffff:ffff:ffff:ffff:ffff:ffff,BG
2001:1ae8::,2001:1aef:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:1af0::,2001:1af7:ffff:ffff:ffff:ffff:ffff:ffff,HR
-2001:1af8::,2001:1af8:4010:7fff:ffff:ffff:ffff:ffff,NL
-2001:1af8:4010:8000::,2001:1af8:4010:ffff:ffff:ffff:ffff:ffff,DE
-2001:1af8:4011::,2001:1af8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:1af8::,2001:1af8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:1b00::,2001:1b00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:1b08::,2001:1b08:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:1b10::,2001:1b10:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -6440,59 +4978,36 @@
2001:1be0::,2001:1be0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:1be8::,2001:1be8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:1bf0::,2001:1bf7:ffff:ffff:ffff:ffff:ffff:ffff,EE
-2001:1bf8::,2001:1bf8:ffff:ffff:ffff:ffff:ffff:ffff,LV
-2001:1c00::,2001:1c00:d06:ffff:ffff:ffff:ffff:ffff,NL
-2001:1c00:d07::,2001:1c00:d07:7fff:ffff:ffff:ffff:ffff,GB
-2001:1c00:d07:8000::,2001:1c01:1d04:2fff:ffff:ffff:ffff:ffff,NL
-2001:1c01:1d04:3000::,2001:1c01:1d04:3fff:ffff:ffff:ffff:ffff,US
-2001:1c01:1d04:4000::,2001:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:1bf8::,2001:1bff:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2001:1c00::,2001:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:2002::,2001:2002:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:2003::,2001:2003:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2001:2010:9::,2001:2010:9:7fff:ffff:ffff:ffff:ffff,DK
-2001:2010:ea7:8000::,2001:2010:ea7:ffff:ffff:ffff:ffff:ffff,DK
+2001:2010::,2001:2010:7f:ffff:ffff:ffff:ffff:ffff,DK
2001:2011:c002::,2001:2011:c002:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012::,2001:2012::7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:100::,2001:2012:127:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:200::,2001:2012:200:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:200:b800::,2001:2012:20c:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:20d::,2001:2012:229:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:22a::,2001:2012:22b:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:22c::,2001:2012:232:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:233:8000::,2001:2012:235:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:300::,2001:2012:317:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:318::,2001:2012:321:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:400::,2001:2012:404:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:405::,2001:2012:433:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1002::,2001:2012:1002:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1100::,2001:2012:1128:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1129::,2001:2012:1129:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1200::,2001:2012:1201:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1202::,2001:2012:1219:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:121a::,2001:2012:1225:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:1226:8000::,2001:2012:1226:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:1228::,2001:2012:1231:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:1300::,2001:2012:131c:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:131d::,2001:2012:131d:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1400::,2001:2012:1406:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1407::,2001:2012:1409:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:140b:8000::,2001:2012:140d:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:140e::,2001:2012:1410:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:1411:8000::,2001:2012:141a:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:141c:8000::,2001:2012:1427:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:3ec6::,2001:2012:3ec7:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:c2ff:8000::,2001:2012:c2ff:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:d94a:8000::,2001:2012:d94a:ffff:ffff:ffff:ffff:ffff,DK
-2001:2040:5::,2001:2040:5:7fff:ffff:ffff:ffff:ffff,SE
-2001:2040:4a::,2001:2040:4a:7fff:ffff:ffff:ffff:ffff,SE
+2001:2012:100::,2001:2012:17f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:200::,2001:2012:27f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:300::,2001:2012:30e:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:30f::,2001:2012:317:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:318:8000::,2001:2012:321:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:400::,2001:2012:47f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1100::,2001:2012:1114:5fff:ffff:ffff:ffff:ffff,DK
+2001:2012:1114:8000::,2001:2012:1119:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:111a:8000::,2001:2012:111b:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:111c:8000::,2001:2012:111f:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:1120::,2001:2012:1126:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1128::,2001:2012:112f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1200::,2001:2012:127f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1300::,2001:2012:137f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1400::,2001:2012:1404:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:1405::,2001:2012:1406:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:1407::,2001:2012:143f:ffff:ffff:ffff:ffff:ffff,DK
+2001:2030::1c:6129:fc61:4a70:fc91,2001:2030::1c:6129:fc61:4a70:fc91,US
+2001:2030::1d:b985:4aff:c872:815a,2001:2030::1d:b985:4aff:c872:815a,US
+2001:2030::3e:344c:f8ec:e9b9:2c27,2001:2030::3e:344c:f8ec:e9b9:2c27,US
+2001:2030::3f:4144:aaf7:902:29fa,2001:2030::3f:4144:aaf7:902:29fa,US
2001:2040:4b::,2001:2040:4b:ffff:ffff:ffff:ffff:ffff,SE
-2001:2040:6c::,2001:2040:6c:7fff:ffff:ffff:ffff:ffff,SE
-2001:2040:70::,2001:2040:70:7fff:ffff:ffff:ffff:ffff,SE
2001:2040:c006::,2001:2040:c006:ffff:ffff:ffff:ffff:ffff,SE
-2001:2060:41::,2001:2060:41:7fff:ffff:ffff:ffff:ffff,FI
-2001:2060:49::,2001:2060:49:7fff:ffff:ffff:ffff:ffff,FI
-2001:2060:59::,2001:2060:59:7fff:ffff:ffff:ffff:ffff,FI
-2001:2060:5b:8000::,2001:2060:5b:ffff:ffff:ffff:ffff:ffff,FI
-2001:2060:60::,2001:2060:60:7fff:ffff:ffff:ffff:ffff,FI
+2001:2060::,2001:2060:7f:ffff:ffff:ffff:ffff:ffff,FI
2001:2060:bffb::,2001:2060:bffb:ffff:ffff:ffff:ffff:ffff,FI
2001:4000::,2001:4000:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:4010::,2001:4010:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -6509,7 +5024,7 @@
2001:4068::,2001:4068:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4070::,2001:4070:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:4078::,2001:407f:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2001:4080::,2001:4080:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:4080::,2001:4087:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:4088::,2001:4088:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4090::,2001:4090:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:40a0::,2001:40a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -6554,9 +5069,7 @@
2001:41d0:601:1100::5ff,2001:41d0:601:1100::5ff,PL
2001:41d0:601:1100::600,2001:41d0:1000:171a:ffff:ffff:ffff:ffff,FR
2001:41d0:1000:171b::,2001:41d0:1000:171b:ffff:ffff:ffff:ffff,DE
-2001:41d0:1000:171c::,2001:41d0:1007:ffff:ffff:ffff:ffff:ffff,FR
-2001:41d0:1008::,2001:41d0:1008:7fff:ffff:ffff:ffff:ffff,BE
-2001:41d0:1008:8000::,2001:41d0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:41d0:1000:171c::,2001:41d0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:41d8::,2001:41d8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:41e0::,2001:41e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:41e8::,2001:41e8:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -6567,21 +5080,7 @@
2001:4218::,2001:4218:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:4220::,2001:4220:ffff:ffff:ffff:ffff:ffff:ffff,EG
2001:4228::,2001:4228:ffff:ffff:ffff:ffff:ffff:ffff,SD
-2001:4238::,2001:4238:27a0:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:27a1::,2001:4238:27a1:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:27a1:8000::,2001:4238:28e4:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:28e5::,2001:4238:28e5:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:28e5:8000::,2001:4238:29aa:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:29ab::,2001:4238:29ab:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:29ab:8000::,2001:4238:29e9:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:29ea::,2001:4238:29ea:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:29ea:8000::,2001:4238:2af1:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:2af2::,2001:4238:2af2:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:2af2:8000::,2001:4238:2b30:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:2b31::,2001:4238:2b31:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:2b31:8000::,2001:4238:2b33:ffff:ffff:ffff:ffff:ffff,MU
-2001:4238:2b34::,2001:4238:2b34:7fff:ffff:ffff:ffff:ffff,KE
-2001:4238:2b34:8000::,2001:4238:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2001:4238::,2001:4238:ffff:ffff:ffff:ffff:ffff:ffff,MU
2001:4240::,2001:4240:ffff:ffff:ffff:ffff:ffff:ffff,TZ
2001:4248::,2001:4248:ffff:ffff:ffff:ffff:ffff:ffff,MU
2001:4250::,2001:4250:ffff:ffff:ffff:ffff:ffff:ffff,AO
@@ -6634,11 +5133,10 @@
2001:43e0::,2001:43e0:ffff:ffff:ffff:ffff:ffff:ffff,GH
2001:43e8::,2001:43e8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f0::,2001:43f0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
-2001:43f8::,2001:43f8:3:ffff:ffff:ffff:ffff:ffff,TZ
+2001:43f8::,2001:43f8:4: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:30::,2001:43f8:30:ffff:ffff:ffff:ffff:ffff,ZA
-2001:43f8:50::,2001:43f8:50: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
2001:43f8:80::,2001:43f8:80:ffff:ffff:ffff:ffff:ffff,NA
@@ -6647,6 +5145,7 @@
2001:43f8:a0::,2001:43f8:a0:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:b0::,2001:43f8:b0:ffff:ffff:ffff:ffff:ffff,SL
2001:43f8:c0::,2001:43f8:c1:ffff:ffff:ffff:ffff:ffff,KE
+2001:43f8:d0::,2001:43f8:d0:ffff:ffff:ffff:ffff:ffff,MU
2001:43f8:e0::,2001:43f8:e0:ffff:ffff:ffff:ffff:ffff,TZ
2001:43f8:100::,2001:43f8:100:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:110::,2001:43f8:110:ffff:ffff:ffff:ffff:ffff,ZA
@@ -6804,6 +5303,19 @@
2001:43f8:1050::,2001:43f8:1050:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:1060::,2001:43f8:1060:ffff:ffff:ffff:ffff:ffff,NG
2001:43f8:1070::,2001:43f8:1070:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:1080::,2001:43f8:1080:ffff:ffff:ffff:ffff:ffff,TZ
+2001:43f8:1090::,2001:43f8:1090:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:10a0::,2001:43f8:10a0:ffff:ffff:ffff:ffff:ffff,MA
+2001:43f8:10b0::,2001:43f8:10b0:ffff:ffff:ffff:ffff:ffff,ZW
+2001:43f8:10c0::,2001:43f8:10c0:ffff:ffff:ffff:ffff:ffff,MA
+2001:43f8:10d0::,2001:43f8:10d0:ffff:ffff:ffff:ffff:ffff,ML
+2001:43f8:10e0::,2001:43f8:10e0:ffff:ffff:ffff:ffff:ffff,ML
+2001:43f8:10f0::,2001:43f8:10f0:ffff:ffff:ffff:ffff:ffff,MA
+2001:43f8:1100::,2001:43f8:1100:ffff:ffff:ffff:ffff:ffff,AO
+2001:43f8:1110::,2001:43f8:1110:ffff:ffff:ffff:ffff:ffff,TG
+2001:43f8:1130::,2001:43f8:1130:ffff:ffff:ffff:ffff:ffff,MW
+2001:43f8:1140::,2001:43f8:1141:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:1160::,2001:43f8:1160:ffff:ffff:ffff:ffff:ffff,GA
2001:4400::,2001:4403:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2001:4408::,2001:4408:ffff:ffff:ffff:ffff:ffff:ffff,IN
2001:4410::,2001:4410:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -6836,28 +5348,16 @@
2001:4538::,2001:4538:ffff:ffff:ffff:ffff:ffff:ffff,PK
2001:4540::,2001:455f:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:4580::,2001:45bf:ffff:ffff:ffff:ffff:ffff:ffff,TW
-2001:4600::,2001:4618:bb28:ffff:ffff:ffff:ffff:ffff,NO
-2001:4618:bb29::,2001:4618:bb29:7fff:ffff:ffff:ffff:ffff,SE
-2001:4618:bb29:8000::,2001:4640:7864:ffff:ffff:ffff:ffff:ffff,NO
-2001:4640:7865::,2001:4640:7865:7fff:ffff:ffff:ffff:ffff,US
-2001:4640:7865:8000::,2001:4641:666e:ffff:ffff:ffff:ffff:ffff,NO
-2001:4641:666f::,2001:4641:666f:7fff:ffff:ffff:ffff:ffff,LV
-2001:4641:666f:8000::,2001:4644:3fb8:ffff:ffff:ffff:ffff:ffff,NO
-2001:4644:3fb9::,2001:4644:3fb9:7fff:ffff:ffff:ffff:ffff,SE
-2001:4644:3fb9:8000::,2001:4644:40cf:ffff:ffff:ffff:ffff:ffff,NO
-2001:4644:40d0::,2001:4644:40d0:7fff:ffff:ffff:ffff:ffff,AE
-2001:4644:40d0:8000::,2001:4646:39c1:ffff:ffff:ffff:ffff:ffff,NO
-2001:4646:39c2::,2001:4646:39c2:7fff:ffff:ffff:ffff:ffff,US
-2001:4646:39c2:8000::,2001:464f:2257:ffff:ffff:ffff:ffff:ffff,NO
-2001:464f:2258::,2001:464f:2258:7fff:ffff:ffff:ffff:ffff,HU
-2001:464f:2258:8000::,2001:46ff:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2001:4600::,2001:4641:3c4c::1130:3492:8468:a50a,NO
+2001:4641:3c4c::1130:3492:8468:a50b,2001:4641:3c4c::1130:3492:8468:a50b,IE
+2001:4641:3c4c::1130:3492:8468:a50c,2001:464f:21ff:ffff:ffff:ffff:ffff:ffff,NO
+2001:464f:2200::,2001:464f:227f:ffff:ffff:ffff:ffff:ffff,HU
+2001:464f:2280::,2001:46ff:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:4800::,2001:4808:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4810::,2001:4810:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4818::,2001:4818:ffff:ffff:ffff:ffff:ffff:ffff,CA
2001:4828::,2001:4828:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:4830::,2001:4830:1200:7fff:ffff:ffff:ffff:ffff,US
-2001:4830:1200:8000::,2001:4830:1200:ffff:ffff:ffff:ffff:ffff,AU
-2001:4830:1201::,2001:4830:121d:ffff:ffff:ffff:ffff:ffff,US
+2001:4830::,2001:4830:121d:ffff:ffff:ffff:ffff:ffff,US
2001:4830:121e::,2001:4830:121e:ffff:ffff:ffff:ffff:ffff,AU
2001:4830:121f::,2001:4830:600f:ffff:ffff:ffff:ffff:ffff,US
2001:4830:6010::,2001:4830:601f:ffff:ffff:ffff:ffff:ffff,GB
@@ -6976,34 +5476,31 @@
2001:4878:4348::,2001:4878:4348:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:4349::,2001:4878:8128:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8129::,2001:4878:8129:ffff:ffff:ffff:ffff:ffff,CR
-2001:4878:812a::,2001:4878:8203:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:812a::,2001:4878:81ff:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8200::,2001:4878:8203:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8204::,2001:4878:8204:ffff:ffff:ffff:ffff:ffff,DE
-2001:4878:8205::,2001:4878:8214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8205::,2001:4878:8214:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8215::,2001:4878:8215:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:8216::,2001:4878:8216:7fff:ffff:ffff:ffff:ffff,FR
-2001:4878:8216:8000::,2001:4878:8216:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8217::,2001:4878:8217:7fff:ffff:ffff:ffff:ffff,ES
-2001:4878:8217:8000::,2001:4878:821f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8216::,2001:4878:821f:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8220::,2001:4878:8220:ffff:ffff:ffff:ffff:ffff,SE
-2001:4878:8221::,2001:4878:8224:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8221::,2001:4878:8224:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8225::,2001:4878:8225:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:8226::,2001:4878:8227:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8228::,2001:4878:8228:ffff:ffff:ffff:ffff:ffff,IL
-2001:4878:8229::,2001:4878:8233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8226::,2001:4878:8233:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8234::,2001:4878:8234:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:8235::,2001:4878:8241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8235::,2001:4878:8241:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8242::,2001:4878:8242:ffff:ffff:ffff:ffff:ffff,NL
2001:4878:8243::,2001:4878:8243:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:8244::,2001:4878:8245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8244::,2001:4878:8245:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8246::,2001:4878:8246:ffff:ffff:ffff:ffff:ffff,DK
-2001:4878:8247::,2001:4878:8248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8247::,2001:4878:8248:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8249::,2001:4878:8249:ffff:ffff:ffff:ffff:ffff,FR
-2001:4878:824a::,2001:4878:824f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:824a::,2001:4878:824f:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8250::,2001:4878:8250:ffff:ffff:ffff:ffff:ffff,IT
-2001:4878:8251::,2001:4878:8304:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8251::,2001:4878:827f:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:8280::,2001:4878:8304:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8305::,2001:4878:8305:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:8306::,2001:4878:8320:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8321::,2001:4878:8321:ffff:ffff:ffff:ffff:ffff,SG
+2001:4878:8306::,2001:4878:831f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8320::,2001:4878:8321:ffff:ffff:ffff:ffff:ffff,SG
2001:4878:8322::,2001:4878:8322:ffff:ffff:ffff:ffff:ffff,JP
2001:4878:8323::,2001:4878:8323:ffff:ffff:ffff:ffff:ffff,AU
2001:4878:8324::,2001:4878:8324:ffff:ffff:ffff:ffff:ffff,KR
@@ -7011,47 +5508,40 @@
2001:4878:8340::,2001:4878:8340:ffff:ffff:ffff:ffff:ffff,HK
2001:4878:8341::,2001:4878:8343:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8344::,2001:4878:8344:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:8345::,2001:4878:8346:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:8347::,2001:4878:8347:7fff:ffff:ffff:ffff:ffff,HK
-2001:4878:8347:8000::,2001:4878:8347:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:8345::,2001:4878:8347:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8348::,2001:4878:8348:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:8349::,2001:4878:a128:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a129::,2001:4878:a129:ffff:ffff:ffff:ffff:ffff,CR
-2001:4878:a12a::,2001:4878:a203:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a12a::,2001:4878:a1ff:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a200::,2001:4878:a203:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a204::,2001:4878:a204:ffff:ffff:ffff:ffff:ffff,DE
-2001:4878:a205::,2001:4878:a214:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a205::,2001:4878:a214:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a215::,2001:4878:a215:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:a216::,2001:4878:a21f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a216::,2001:4878:a21f:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a220::,2001:4878:a220:ffff:ffff:ffff:ffff:ffff,SE
-2001:4878:a221::,2001:4878:a224:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:a225::,2001:4878:a225:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:a226::,2001:4878:a227:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a221::,2001:4878:a227:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a228::,2001:4878:a228:ffff:ffff:ffff:ffff:ffff,IL
-2001:4878:a229::,2001:4878:a233:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a229::,2001:4878:a233:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a234::,2001:4878:a234:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:a235::,2001:4878:a241:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a235::,2001:4878:a241:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a242::,2001:4878:a242:ffff:ffff:ffff:ffff:ffff,NL
-2001:4878:a243::,2001:4878:a243:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:a244::,2001:4878:a245:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a243::,2001:4878:a245:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a246::,2001:4878:a246:ffff:ffff:ffff:ffff:ffff,DK
-2001:4878:a247::,2001:4878:a248:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a247::,2001:4878:a248:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a249::,2001:4878:a249:ffff:ffff:ffff:ffff:ffff,FR
-2001:4878:a24a::,2001:4878:a24f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a24a::,2001:4878:a24f:ffff:ffff:ffff:ffff:ffff,PL
2001:4878:a250::,2001:4878:a250:ffff:ffff:ffff:ffff:ffff,IT
-2001:4878:a251::,2001:4878:a304:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:a305::,2001:4878:a305:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:a306::,2001:4878:a320:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a251::,2001:4878:a27f:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:a280::,2001:4878:a2ff:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a300::,2001:4878:a320:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:a321::,2001:4878:a321:ffff:ffff:ffff:ffff:ffff,SG
2001:4878:a322::,2001:4878:a322:ffff:ffff:ffff:ffff:ffff,JP
2001:4878:a323::,2001:4878:a323:ffff:ffff:ffff:ffff:ffff,AU
2001:4878:a324::,2001:4878:a324:ffff:ffff:ffff:ffff:ffff,KR
-2001:4878:a325::,2001:4878:a33f:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a325::,2001:4878:a33f:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:a340::,2001:4878:a340:ffff:ffff:ffff:ffff:ffff,HK
-2001:4878:a341::,2001:4878:a343:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:a344::,2001:4878:a344:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:a345::,2001:4878:a347:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:a348::,2001:4878:a348:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:a349::,2001:4878:c128:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a341::,2001:4878:a37f:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a380::,2001:4878:c128:ffff:ffff:ffff:ffff:ffff,US
2001:4878:c129::,2001:4878:c129:ffff:ffff:ffff:ffff:ffff,CR
2001:4878:c12a::,2001:4878:c203:ffff:ffff:ffff:ffff:ffff,US
2001:4878:c204::,2001:4878:c204:ffff:ffff:ffff:ffff:ffff,DE
@@ -7127,7 +5617,9 @@
2001:4980::,2001:4980:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4988::,2001:4988:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4990::,2001:4990:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:4998::,2001:4998:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4998::,2001:4998:ef6c:ffff:ffff:ffff:ffff:ffff,US
+2001:4998:ef6d::,2001:4998:ef6d:ffff:ffff:ffff:ffff:ffff,CA
+2001:4998:ef6e::,2001:4998:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:49a0::,2001:49a0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:49a8::,2001:49a8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:49b0::,2001:49b0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -7185,9 +5677,7 @@
2001:4b80::,2001:4b87:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:4b88::,2001:4b88:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4b90::,2001:4b90:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:4b98::,2001:4b98:dc2:7fff:ffff:ffff:ffff:ffff,FR
-2001:4b98:dc2:8000::,2001:4b98:dc2:ffff:ffff:ffff:ffff:ffff,LU
-2001:4b98:dc3::,2001:4b9f:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:4b98::,2001:4b9f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:4ba0::,2001:4ba7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4ba8::,2001:4baf:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:4bb0::,2001:4bb0:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -7201,12 +5691,12 @@
2001:4bf0::,2001:4bf0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4bf8::,2001:4bf8:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:4c00::,2001:4c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2001:4c08::,2001:4c08:2000:ffff:ffff:ffff:ffff:ffff,GB
-2001:4c08:2001::,2001:4c08:2001:7fff:ffff:ffff:ffff:ffff,NL
-2001:4c08:2001:8000::,2001:4c08:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4c08::,2001:4c08:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4c10::,2001:4c10:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:4c20::,2001:4c20:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:4c28::,2001:4c28:3000:632:107:167:111:91,NO
+2001:4c28::,2001:4c28:17f:ffff:ffff:ffff:ffff:ffff,NO
+2001:4c28:180::,2001:4c28:1ff:ffff:ffff:ffff:ffff:ffff,US
+2001:4c28:200::,2001:4c28:3000:632:107:167:111:91,NO
2001:4c28:3000:632:107:167:111:92,2001:4c28:3000:632:107:167:111:92,IN
2001:4c28:3000:632:107:167:111:93,2001:4c28:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:4c30::,2001:4c30:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -7260,66 +5750,10 @@
2001:4de8::,2001:4de8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:4df0::,2001:4df0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2001:5000::,2001:57ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:8000::,2001:8003:a105:93ff:ffff:ffff:ffff:ffff,AU
-2001:8003:a105:9400::,2001:8003:a105:97ff:ffff:ffff:ffff:ffff,IN
-2001:8003:a105:9800::,2001:8fff:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:8000::,2001:8fff:ffff:ffff:ffff:ffff:ffff:ffff,AU
2001:a000::,2001:a7ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:b000::,2001:b011:380b:fff:ffff:ffff:ffff:ffff,TW
-2001:b011:380b:1000::,2001:b011:380b:17ff:ffff:ffff:ffff:ffff,US
-2001:b011:380b:1800::,2001:b7ff:ffff:ffff:ffff:ffff:ffff:ffff,TW
-2003::,2003:6:1725:7fff:ffff:ffff:ffff:ffff,DE
-2003:6:1725:8000::,2003:6:1725:ffff:ffff:ffff:ffff:ffff,US
-2003:6:1726::,2003:42:2e35:ffff:ffff:ffff:ffff:ffff,DE
-2003:42:2e36::,2003:42:2e36:7fff:ffff:ffff:ffff:ffff,ES
-2003:42:2e36:8000::,2003:43:ae20:ffff:ffff:ffff:ffff:ffff,DE
-2003:43:ae21::,2003:43:ae21:7fff:ffff:ffff:ffff:ffff,CH
-2003:43:ae21:8000::,2003:52:ef50:7fff:ffff:ffff:ffff:ffff,DE
-2003:52:ef50:8000::,2003:52:ef50:ffff:ffff:ffff:ffff:ffff,AT
-2003:52:ef51::,2003:57:e508:bfff:ffff:ffff:ffff:ffff,DE
-2003:57:e508:c000::,2003:57:e508:ffff:ffff:ffff:ffff:ffff,US
-2003:57:e509::,2003:5c:ac42:7fff:ffff:ffff:ffff:ffff,DE
-2003:5c:ac42:8000::,2003:5c:ac42:ffff:ffff:ffff:ffff:ffff,IT
-2003:5c:ac43::,2003:63:2a36:bfff:ffff:ffff:ffff:ffff,DE
-2003:63:2a36:c000::,2003:63:2a36:ffff:ffff:ffff:ffff:ffff,KW
-2003:63:2a37::,2003:63:2a72:ffff:ffff:ffff:ffff:ffff,DE
-2003:63:2a73::,2003:63:2a73:7fff:ffff:ffff:ffff:ffff,US
-2003:63:2a73:8000::,2003:63:2e34:ffff:ffff:ffff:ffff:ffff,DE
-2003:63:2e35::,2003:63:2e35:7fff:ffff:ffff:ffff:ffff,AT
-2003:63:2e35:8000::,2003:68:ea18:ffff:ffff:ffff:ffff:ffff,DE
-2003:68:ea19::,2003:68:ea19:7fff:ffff:ffff:ffff:ffff,CH
-2003:68:ea19:8000::,2003:6a:6c7d:7fff:ffff:ffff:ffff:ffff,DE
-2003:6a:6c7d:8000::,2003:6a:6c7d:ffff:ffff:ffff:ffff:ffff,GB
-2003:6a:6c7e::,2003:6b:e08:ffff:ffff:ffff:ffff:ffff,DE
-2003:6b:e09::,2003:6b:e09:7fff:ffff:ffff:ffff:ffff,CH
-2003:6b:e09:8000::,2003:70:ce46:ffff:ffff:ffff:ffff:ffff,DE
-2003:70:ce47::,2003:70:ce47:7fff:ffff:ffff:ffff:ffff,NL
-2003:70:ce47:8000::,2003:75:f0d:ffff:ffff:ffff:ffff:ffff,DE
-2003:75:f0e::,2003:75:f0e:7fff:ffff:ffff:ffff:ffff,US
-2003:75:f0e:8000::,2003:75:2e35:5fff:ffff:ffff:ffff:ffff,DE
-2003:75:2e35:6000::,2003:75:2e35:7fff:ffff:ffff:ffff:ffff,US
-2003:75:2e35:8000::,2003:76:2f2c:ffff:ffff:ffff:ffff:ffff,DE
-2003:76:2f2d::,2003:76:2f2d:7fff:ffff:ffff:ffff:ffff,NL
-2003:76:2f2d:8000::,2003:76:2f50:7fff:ffff:ffff:ffff:ffff,DE
-2003:76:2f50:8000::,2003:76:2f50:ffff:ffff:ffff:ffff:ffff,NL
-2003:76:2f51::,2003:78:cf69:ffff:ffff:ffff:ffff:ffff,DE
-2003:78:cf6a::,2003:78:cf6a:7fff:ffff:ffff:ffff:ffff,AT
-2003:78:cf6a:8000::,2003:86:a749:ffff:ffff:ffff:ffff:ffff,DE
-2003:86:a74a::,2003:86:a74a:7fff:ffff:ffff:ffff:ffff,AT
-2003:86:a74a:8000::,2003:c2:5bc3:ffff:ffff:ffff:ffff:ffff,DE
-2003:c2:5bc4::,2003:c2:5bc4:7fff:ffff:ffff:ffff:ffff,IT
-2003:c2:5bc4:8000::,2003:c6:43d5:ffff:ffff:ffff:ffff:ffff,DE
-2003:c6:43d6::,2003:c6:43d6:7fff:ffff:ffff:ffff:ffff,US
-2003:c6:43d6:8000::,2003:c8:cbc5:ffff:ffff:ffff:ffff:ffff,DE
-2003:c8:cbc6::,2003:c8:cbc6:7fff:ffff:ffff:ffff:ffff,CH
-2003:c8:cbc6:8000::,2003:d2:93ec:7fff:ffff:ffff:ffff:ffff,DE
-2003:d2:93ec:8000::,2003:d2:93ec:ffff:ffff:ffff:ffff:ffff,DK
-2003:d2:93ed::,2003:da:6bdd:7fff:ffff:ffff:ffff:ffff,DE
-2003:da:6bdd:8000::,2003:da:6bdd:ffff:ffff:ffff:ffff:ffff,US
-2003:da:6bde::,2003:dd:1bc3:7fff:ffff:ffff:ffff:ffff,DE
-2003:dd:1bc3:8000::,2003:dd:1bc3:ffff:ffff:ffff:ffff:ffff,GB
-2003:dd:1bc4::,2003:e3:dbce:7fff:ffff:ffff:ffff:ffff,DE
-2003:e3:dbce:8000::,2003:e3:dbce:ffff:ffff:ffff:ffff:ffff,HU
-2003:e3:dbcf::,2003:1fff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:b000::,2001:b7ff:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2003::,2003:1fff:ffff:ffff:ffff:ffff:ffff:ffff,DE
2067:8e00::,2067:8e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2160:150::,2160:150:7fff:ffff:ffff:ffff:ffff:ffff,US
2400::,2400:fff:ffff:ffff:ffff:ffff:ffff:ffff,KR
@@ -7383,21 +5817,7 @@
2400:1f40::,2400:1f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:1f80::,2400:1f80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:1fc0::,2400:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2400:2000::,2400:2410:3c1:fff:ffff:ffff:ffff:ffff,JP
-2400:2410:3c1:1000::,2400:2410:3c1:1fff:ffff:ffff:ffff:ffff,US
-2400:2410:3c1:2000::,2400:2411:91c2:23ff:ffff:ffff:ffff:ffff,JP
-2400:2411:91c2:2400::,2400:2411:91c2:27ff:ffff:ffff:ffff:ffff,US
-2400:2411:91c2:2800::,2400:2412:27a1:bfff:ffff:ffff:ffff:ffff,JP
-2400:2412:27a1:c000::,2400:2412:27a1:ffff:ffff:ffff:ffff:ffff,US
-2400:2412:27a2::,2400:2652:719f:ffff:ffff:ffff:ffff:ffff,JP
-2400:2652:71a0::,2400:2652:71a0:7fff:ffff:ffff:ffff:ffff,NO
-2400:2652:71a0:8000::,2400:2653:282:7fff:ffff:ffff:ffff:ffff,JP
-2400:2653:282:8000::,2400:2653:282:ffff:ffff:ffff:ffff:ffff,CA
-2400:2653:283::,2400:2653:3c0:7fff:ffff:ffff:ffff:ffff,JP
-2400:2653:3c0:8000::,2400:2653:3c0:ffff:ffff:ffff:ffff:ffff,US
-2400:2653:3c1::,2400:2653:a1a1:ffff:ffff:ffff:ffff:ffff,JP
-2400:2653:a1a2::,2400:2653:a1a2:7fff:ffff:ffff:ffff:ffff,US
-2400:2653:a1a2:8000::,2400:3000:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:2000::,2400:3000:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:3040::,2400:3040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3080::,2400:3080:ffff:ffff:ffff:ffff:ffff:ffff,AF
2400:30c0::,2400:30c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -7455,23 +5875,10 @@
2400:3e40::,2400:3e40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:3e80::,2400:3e80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:3ec0::,2400:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2400:3f00::,2400:3f00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:3f40::,2400:3f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:3f80::,2400:3f80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:3fc0::,2400:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2400:4000::,2400:402d:a2d8:ffff:ffff:ffff:ffff:ffff,JP
-2400:402d:a2d9::,2400:402d:a2d9:7fff:ffff:ffff:ffff:ffff,US
-2400:402d:a2d9:8000::,2400:402e:9fba:7fff:ffff:ffff:ffff:ffff,JP
-2400:402e:9fba:8000::,2400:402e:9fba:ffff:ffff:ffff:ffff:ffff,MY
-2400:402e:9fbb::,2400:402e:abad:2bff:ffff:ffff:ffff:ffff,JP
-2400:402e:abad:2c00::,2400:402e:abad:2cff:ffff:ffff:ffff:ffff,US
-2400:402e:abad:2d00::,2400:4120:aa50:ffff:ffff:ffff:ffff:ffff,JP
-2400:4120:aa51::,2400:4120:aa51:7fff:ffff:ffff:ffff:ffff,BR
-2400:4120:aa51:8000::,2400:4122:8b5d:ffff:ffff:ffff:ffff:ffff,JP
-2400:4122:8b5e::,2400:4122:8b5e:7fff:ffff:ffff:ffff:ffff,CO
-2400:4122:8b5e:8000::,2400:4136:9f46:ffff:ffff:ffff:ffff:ffff,JP
-2400:4136:9f47::,2400:4136:9f47:7fff:ffff:ffff:ffff:ffff,DE
-2400:4136:9f47:8000::,2400:43ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:4000::,2400:43ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:4400::,2400:4400:ffff:ffff:ffff:ffff:ffff:ffff,MY
2400:4440::,2400:4440:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4480::,2400:4480:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -7555,7 +5962,6 @@
2400:5880::,2400:5880:ffff:ffff:ffff:ffff:ffff:ffff,MY
2400:58c0::,2400:58c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:5900::,2400:5900:ffff:ffff:ffff:ffff:ffff:ffff,NZ
-2400:5940::,2400:5940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:59c0::,2400:59c0:ffff:ffff:ffff:ffff:ffff:ffff,TH
2400:5a00::,2400:5a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:5a40::,2400:5a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -7585,9 +5991,9 @@
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:ff:ffff:ffff:ffff:ffff:ffff,SG
-2400:6180:100::,2400:6180:100:7fff:ffff:ffff:ffff:ffff,IN
-2400:6180:100:8000::,2400:6180:ffff:ffff:ffff:ffff:ffff:ffff,SG
+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: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
@@ -7683,9 +6089,7 @@
2400:7740::,2400:7740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:7780::,2400:7780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:77c0::,2400:77c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2400:7800::,2400:7800:4319:ffff:ffff:ffff:ffff:ffff,JP
-2400:7800:431a::,2400:7800:431a:7fff:ffff:ffff:ffff:ffff,US
-2400:7800:431a:8000::,2400:7800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2400:7800::,2400:7800:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:7840::,2400:7840:ffff:ffff:ffff:ffff:ffff:ffff,SE
2400:7880::,2400:7880:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2400:78c0::,2400:78c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -7734,9 +6138,8 @@
2400:8400::,2400:8400:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:8440::,2400:8440:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:8480::,2400:8480:ffff:ffff:ffff:ffff:ffff:ffff,MM
-2400:84c0::,2400:84c0:e:ffff:ffff:ffff:ffff:ffff,HK
-2400:84c0:f::,2400:84c0:f:7fff:ffff:ffff:ffff:ffff,US
-2400:84c0:f:8000::,2400:84c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:84c0::,2400:84c0:7f:ffff:ffff:ffff:ffff:ffff,US
+2400:84c0:80::,2400:84c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:8500::,2400:8500:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:8540::,2400:8540:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:8580::,2400:8580:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -7757,7 +6160,7 @@
2400:8900:e001:294d:49c2:953c:2c0c:16a2,2400:8900:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:8901::,2400:8901:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:8902::,2400:8902:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2400:8903::,2400:8903:ffff:ffff:ffff:ffff:ffff:ffff,US
+2400:8903::,2400:8907:ffff:ffff:ffff:ffff:ffff:ffff,US
2400:8940::,2400:8940:ffff:ffff:ffff:ffff:ffff:ffff,MY
2400:8980::,2400:8980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:89c0::,2400:89c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -7822,14 +6225,12 @@
2400:9980::,2400:9980:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:99c0::,2400:99c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:9a00::,2400:9a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2400:9a40::,2400:9a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:9a80::,2400:9a80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:9ac0::,2400:9ac0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2400:9b40::,2400:9b40:ffff:ffff:ffff:ffff:ffff:ffff,VN
2400:9b80::,2400:9b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:9bc0::,2400:9bc0:ffff:ffff:ffff:ffff:ffff:ffff,VN
2400:9c00::,2400:9c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:9c40::,2400:9c40:ffff:ffff:ffff:ffff:ffff:ffff,TH
2400:9c80::,2400:9c80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:9cc0::,2400:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,AF
2400:9d00::,2400:9d00:ffff:ffff:ffff:ffff:ffff:ffff,PH
@@ -7886,7 +6287,6 @@
2400:abc0::,2400:abc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:ac00::,2400:ac00:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:ac40::,2400:ac40:ffff:ffff:ffff:ffff:ffff:ffff,MM
-2400:ac80::,2400:ac80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:acc0::,2400:acc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:ad00::,2400:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:ad40::,2400:ad40:ffff:ffff:ffff:ffff:ffff:ffff,BD
@@ -8061,7 +6461,7 @@
2400:cb00:73::,2400:cb00:73:ffff:ffff:ffff:ffff:ffff,PL
2400:cb00:74::,2400:cb00:74:ffff:ffff:ffff:ffff:ffff,BG
2400:cb00:75::,2400:cb00:75:ffff:ffff:ffff:ffff:ffff,DE
-2400:cb00:76::,2400:cb00:76:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:76::,2400:cb00:76:ffff:ffff:ffff:ffff:ffff,GB
2400:cb00:77::,2400:cb00:77:ffff:ffff:ffff:ffff:ffff,PH
2400:cb00:78::,2400:cb00:78:ffff:ffff:ffff:ffff:ffff,BE
2400:cb00:79::,2400:cb00:79:ffff:ffff:ffff:ffff:ffff,FI
@@ -8077,8 +6477,8 @@
2400:cb00:8a::,2400:cb00:8f:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:90::,2400:cb00:90:ffff:ffff:ffff:ffff:ffff,PA
2400:cb00:91::,2400:cb00:91:ffff:ffff:ffff:ffff:ffff,US
-2400:cb00:92::,2400:cb00:92:ffff:ffff:ffff:ffff:ffff,IN
-2400:cb00:93::,2400:cb00:94:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:92::,2400:cb00:93:ffff:ffff:ffff:ffff:ffff,IN
+2400:cb00:94::,2400:cb00:94:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:95::,2400:cb00:95:ffff:ffff:ffff:ffff:ffff,EC
2400:cb00:96::,2400:cb00:96:ffff:ffff:ffff:ffff:ffff,AO
2400:cb00:97::,2400:cb00:97:ffff:ffff:ffff:ffff:ffff,BR
@@ -8100,7 +6500,8 @@
2400:cb00:114::,2400:cb00:114:ffff:ffff:ffff:ffff:ffff,AT
2400:cb00:115::,2400:cb00:116:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:117::,2400:cb00:117:ffff:ffff:ffff:ffff:ffff,AM
-2400:cb00:118::,2400:cb00:11f:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:118::,2400:cb00:118:ffff:ffff:ffff:ffff:ffff,TR
+2400:cb00:119::,2400:cb00:11f:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:120::,2400:cb00:120:ffff:ffff:ffff:ffff:ffff,RS
2400:cb00:121::,2400:cb00:121:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:122::,2400:cb00:122:ffff:ffff:ffff:ffff:ffff,DJ
@@ -8111,9 +6512,39 @@
2400:cb00:127::,2400:cb00:127:ffff:ffff:ffff:ffff:ffff,TH
2400:cb00:128::,2400:cb00:128:ffff:ffff:ffff:ffff:ffff,SE
2400:cb00:129::,2400:cb00:129:ffff:ffff:ffff:ffff:ffff,TH
-2400:cb00:12a::,2400:cb00:131:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:12a::,2400:cb00:12f:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:130::,2400:cb00:130:ffff:ffff:ffff:ffff:ffff,SA
+2400:cb00:131::,2400:cb00:131:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:132::,2400:cb00:132:ffff:ffff:ffff:ffff:ffff,UA
-2400:cb00:133::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:133::,2400:cb00:133:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:134::,2400:cb00:134:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00:135::,2400:cb00:135:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:136::,2400:cb00:136:ffff:ffff:ffff:ffff:ffff,ZA
+2400:cb00:137::,2400:cb00:138:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:139::,2400:cb00:139:ffff:ffff:ffff:ffff:ffff,MU
+2400:cb00:13a::,2400:cb00:13f:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:140::,2400:cb00:140:ffff:ffff:ffff:ffff:ffff,MO
+2400:cb00:141::,2400:cb00:141:ffff:ffff:ffff:ffff:ffff,PH
+2400:cb00:142::,2400:cb00:142:ffff:ffff:ffff:ffff:ffff,NP
+2400:cb00:143::,2400:cb00:143:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:144::,2400:cb00:144:ffff:ffff:ffff:ffff:ffff,KH
+2400:cb00:145::,2400:cb00:145:ffff:ffff:ffff:ffff:ffff,IS
+2400:cb00:146::,2400:cb00:146:ffff:ffff:ffff:ffff:ffff,IQ
+2400:cb00:147::,2400:cb00:147:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:148::,2400:cb00:148:ffff:ffff:ffff:ffff:ffff,LT
+2400:cb00:149::,2400:cb00:149:ffff:ffff:ffff:ffff:ffff,IL
+2400:cb00:14a::,2400:cb00:14f:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:150::,2400:cb00:150:ffff:ffff:ffff:ffff:ffff,LB
+2400:cb00:151::,2400:cb00:151:ffff:ffff:ffff:ffff:ffff,LV
+2400:cb00:152::,2400:cb00:152:ffff:ffff:ffff:ffff:ffff,EE
+2400:cb00:153::,2400:cb00:153:ffff:ffff:ffff:ffff:ffff,CA
+2400:cb00:154::,2400:cb00:160:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:161::,2400:cb00:161:ffff:ffff:ffff:ffff:ffff,CO
+2400:cb00:162::,2400:cb00:165:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:166::,2400:cb00:166:ffff:ffff:ffff:ffff:ffff,MD
+2400:cb00:167::,2400:cb00:168:ffff:ffff:ffff:ffff:ffff,CA
+2400:cb00:169::,2400:cb00:169:ffff:ffff:ffff:ffff:ffff,LU
+2400:cb00:16a::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
2400:cb40::,2400:cb40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cb80::,2400:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cbc0::,2400:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8140,7 +6571,6 @@
2400:d180::,2400:d180:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:d1c0::,2400:d1c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:d200::,2400:d200:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2400:d240::,2400:d240:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:d280::,2400:d280:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:d2c0::,2400:d2c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:d300::,2400:d300:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8152,7 +6582,6 @@
2400:d480::,2400:d480:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:d4c0::,2400:d4c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:d500::,2400:d500:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:d540::,2400:d540:ffff:ffff:ffff:ffff:ffff:ffff,AF
2400:d580::,2400:d580:ffff:ffff:ffff:ffff:ffff:ffff,TW
2400:d5c0::,2400:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,AF
2400:d600::,2400:d600:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8263,7 +6692,6 @@
2400:f240::,2400:f240:ffff:ffff:ffff:ffff:ffff:ffff,MM
2400:f280::,2400:f280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:f2c0::,2400:f2c0:ffff:ffff:ffff:ffff:ffff:ffff,PH
-2400:f300::,2400:f300:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:f340::,2400:f340:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:f380::,2400:f380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:f3c0::,2400:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -8345,7 +6773,6 @@
2401:740::,2401:740:ffff:ffff:ffff:ffff:ffff:ffff,PH
2401:780::,2401:780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7c0::,2401:7c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2401:800::,2401:800:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:840::,2401:840:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:880::,2401:880:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:8c0::,2401:8c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -8405,11 +6832,7 @@
2401:1740::,2401:1740:ffff:ffff:ffff:ffff:ffff:ffff,US
2401:1780::,2401:1780:ffff:ffff:ffff:ffff:ffff:ffff,TW
2401:17c0::,2401:17c0:ffff:ffff:ffff:ffff:ffff:ffff,MY
-2401:1800::,2401:1801:77ff:ffff:ffff:ffff:ffff:ffff,HK
-2401:1801:7800::,2401:1801:7800:7fff:ffff:ffff:ffff:ffff,AU
-2401:1801:7800:8000::,2401:1801:7800:ffff:ffff:ffff:ffff:ffff,HK
-2401:1801:7801::,2401:1801:7801:7fff:ffff:ffff:ffff:ffff,AU
-2401:1801:7801:8000::,2401:1801:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:1800::,2401:1801:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:1840::,2401:1840:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:1880::,2401:1880:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:18c0::,2401:18c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8437,7 +6860,7 @@
2401:1e40::,2401:1e40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:1e80::,2401:1e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:1ec0::,2401:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2401:1f00::,2401:1f01:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:1f00::,2401:1f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:1f40::,2401:1f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:1f80::,2401:1f80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:1fc0::,2401:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -8457,7 +6880,6 @@
2401:2380::,2401:2380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:23c0::,2401:23c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:2400::,2401:2400:ffff:ffff:ffff:ffff:ffff:ffff,ID
-2401:2440::,2401:2440:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:2480::,2401:2480:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:24c0::,2401:24c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:2500::,2401:2500:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -8669,7 +7091,7 @@
2401:5b40::,2401:5b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:5b80::,2401:5b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:5bc0::,2401:5bc0:ffff:ffff:ffff:ffff:ffff:ffff,KH
-2401:5c00::,2401:5c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:5c00::,2401:5c00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:5c40::,2401:5c40:ffff:ffff:ffff:ffff:ffff:ffff,PH
2401:5c80::,2401:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:5cc0::,2401:5cc0:ffff:ffff:ffff:ffff:ffff:ffff,MY
@@ -8986,7 +7408,6 @@
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:bf80::,2401:bf80:ffff:ffff:ffff:ffff:ffff:ffff,MY
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
@@ -9023,19 +7444,17 @@
2401:c840::,2401:c840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:c880::,2401:c880:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:c8c0::,2401:c8c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2401:c900::,2401:c900:1000:ffff:ffff:ffff:ffff:ffff,SG
-2401:c900:1001::,2401:c900:1001:7fff:ffff:ffff:ffff:ffff,JP
-2401:c900:1001:8000::,2401:c900:11ff:ffff:ffff:ffff:ffff:ffff,SG
+2401:c900::,2401:c900:fff:ffff:ffff:ffff:ffff:ffff,SG
+2401:c900:1000::,2401:c900:107f:ffff:ffff:ffff:ffff:ffff,JP
+2401:c900:1080::,2401:c900:11ff:ffff:ffff:ffff:ffff:ffff,SG
2401:c900:1200::,2401:c900:1201:175:ffff:ffff:ffff:ffff,US
2401:c900:1201:176::,2401:c900:1201:176:ffff:ffff:ffff:ffff,HK
2401:c900:1201:177::,2401:c900:1201:1cb:ffff:ffff:ffff:ffff,US
2401:c900:1201:1cc::,2401:c900:1201:1cc:ffff:ffff:ffff:ffff,HK
2401:c900:1201:1cd::,2401:c900:12ff:ffff:ffff:ffff:ffff:ffff,US
-2401:c900:1300::,2401:c900:1300:7fff:ffff:ffff:ffff:ffff,SG
-2401:c900:1300:8000::,2401:c900:1301:7fff:ffff:ffff:ffff:ffff,AU
-2401:c900:1301:8000::,2401:c900:1600:ffff:ffff:ffff:ffff:ffff,SG
-2401:c900:1601::,2401:c900:1601:7fff:ffff:ffff:ffff:ffff,KR
-2401:c900:1601:8000::,2401:c901:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2401:c900:1300::,2401:c900:1601:11c:ffff:ffff:ffff:ffff,SG
+2401:c900:1601:11d::,2401:c900:1601:11d:ffff:ffff:ffff:ffff,KR
+2401:c900:1601:11e::,2401:c901:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:c940::,2401:c940:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:c980::,2401:c980:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:c9c0::,2401:c9c0:ffff:ffff:ffff:ffff:ffff:ffff,NP
@@ -9055,7 +7474,9 @@
2401:cd40::,2401:cd40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:cd80::,2401:cd80:1:ffff:ffff:ffff:ffff:ffff,AU
2401:cd80:2::,2401:cd80:2:ffff:ffff:ffff:ffff:ffff,NZ
-2401:cd80:3::,2401:cd81:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:cd80:3::,2401:cd80:4:ffff:ffff:ffff:ffff:ffff,AU
+2401:cd80:5::,2401:cd80:5:ffff:ffff:ffff:ffff:ffff,US
+2401:cd80:6::,2401:cd81:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:cdc0::,2401:cdc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:ce00::,2401:ce00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:ce40::,2401:ce40:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -9113,9 +7534,7 @@
2401:d9c0::,2401:d9c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:da00::,2401:da00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:da40::,2401:da40:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2401:da80::,2401:da80:17ff:ffff:ffff:ffff:ffff:ffff,HK
-2401:da80:1800::,2401:da80:1800:7fff:ffff:ffff:ffff:ffff,PH
-2401:da80:1800:8000::,2401:da80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:da80::,2401:da80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:dac0::,2401:dac0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:db00::,2401:db00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:db40::,2401:db40:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -9238,65 +7657,52 @@
2401:f900::,2401:f900:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:f940::,2401:f940:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:f980::,2401:f980:ffff:ffff:ffff:ffff:ffff:ffff,ID
-2401:f9c0::,2401:f9c0:ffff:ffff:ffff:ffff:ffff:ffff,US
-2401:fa00::,2401:fa00::ffff:ffff:ffff:ffff:ffff,AU
-2401:fa00:1::,2401:fa00:2:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:3::,2401:fa00:3:ffff:ffff:ffff:ffff:ffff,SG
+2401:f9c0::,2401:f9c0:cdcc:ffff:ffff:ffff:ffff:ffff,US
+2401:f9c0:cdcd::,2401:f9c0:cdcd:ffff:ffff:ffff:ffff:ffff,CN
+2401:f9c0:cdce::,2401:f9c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2401:fa00::,2401:fa00:3:fcff:ffff:ffff:ffff:ffff,MY
+2401:fa00:3:fd00::,2401:fa00:3:fd00:ffff:ffff:ffff:ffff,SG
+2401:fa00:3:fd01::,2401:fa00:3:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:4::,2401:fa00:4:ffff:ffff:ffff:ffff:ffff,JP
-2401:fa00:5::,2401:fa00:7:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:8::,2401:fa00:8:7fff:ffff:ffff:ffff:ffff,MY
-2401:fa00:8:8000::,2401:fa00:8:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:5::,2401:fa00:8:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:9::,2401:fa00:9:ffff:ffff:ffff:ffff:ffff,AU
-2401:fa00:a::,2401:fa00:a:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:b::,2401:fa00:b:7fff:ffff:ffff:ffff:ffff,US
-2401:fa00:b:8000::,2401:fa00:c:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:a::,2401:fa00:b:ffff:ffff:ffff:ffff:ffff,MY
+2401:fa00:c::,2401:fa00:c:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:d::,2401:fa00:d:ffff:ffff:ffff:ffff:ffff,KR
-2401:fa00:e::,2401:fa00:e:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:f::,2401:fa00:f:7fff:ffff:ffff:ffff:ffff,SG
-2401:fa00:f:8000::,2401:fa00:10:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:11::,2401:fa00:11:ffff:ffff:ffff:ffff:ffff,AU
+2401:fa00:e::,2401:fa00:11:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:12::,2401:fa00:12:ffff:ffff:ffff:ffff:ffff,NZ
2401:fa00:13::,2401:fa00:13:ffff:ffff:ffff:ffff:ffff,HK
-2401:fa00:14::,2401:fa00:15:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:16::,2401:fa00:16:7fff:ffff:ffff:ffff:ffff,ID
-2401:fa00:16:8000::,2401:fa00:16:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:14::,2401:fa00:16:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:17::,2401:fa00:17:ffff:ffff:ffff:ffff:ffff,KR
-2401:fa00:18::,2401:fa00:18:ffff:ffff:ffff:ffff:ffff,PH
+2401:fa00:18::,2401:fa00:18:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:19::,2401:fa00:19:ffff:ffff:ffff:ffff:ffff,TH
-2401:fa00:1a::,2401:fa00:1b:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:1a::,2401:fa00:1b:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:1c::,2401:fa00:1c:ffff:ffff:ffff:ffff:ffff,KR
-2401:fa00:1d::,2401:fa00:1e:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:1f::,2401:fa00:1f:7fff:ffff:ffff:ffff:ffff,JP
-2401:fa00:1f:8000::,2401:fa00:23:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:24::,2401:fa00:24:ffff:ffff:ffff:ffff:ffff,MY
-2401:fa00:25::,2401:fa00:25:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:1d::,2401:fa00:1d:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:1e::,2401:fa00:25:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:26::,2401:fa00:26:ffff:ffff:ffff:ffff:ffff,PH
-2401:fa00:27::,2401:fa00:27:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:28::,2401:fa00:28:7fff:ffff:ffff:ffff:ffff,AU
-2401:fa00:28:8000::,2401:fa00:28:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:29::,2401:fa00:29:7fff:ffff:ffff:ffff:ffff,US
-2401:fa00:29:8000::,2401:fa00:2c:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:27::,2401:fa00:2c:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:2d::,2401:fa00:2d:ffff:ffff:ffff:ffff:ffff,SG
-2401:fa00:2e::,2401:fa00:30:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:31::,2401:fa00:31:7fff:ffff:ffff:ffff:ffff,PH
-2401:fa00:31:8000::,2401:fa00:32:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:2e::,2401:fa00:32:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:33::,2401:fa00:33:ffff:ffff:ffff:ffff:ffff,PH
-2401:fa00:34::,2401:fa00:34:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:35::,2401:fa00:35:ffff:ffff:ffff:ffff:ffff,US
+2401:fa00:34::,2401:fa00:35:ffff:ffff:ffff:ffff:ffff,MY
2401:fa00:36::,2401:fa00:36:ffff:ffff:ffff:ffff:ffff,SG
-2401:fa00:37::,2401:fa00:40:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:41::,2401:fa00:41:7fff:ffff:ffff:ffff:ffff,CN
-2401:fa00:41:8000::,2401:fa00:41:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:42::,2401:fa00:42:7fff:ffff:ffff:ffff:ffff,CN
-2401:fa00:42:8000::,2401:fa00:43:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:44::,2401:fa00:44:7fff:ffff:ffff:ffff:ffff,CN
-2401:fa00:44:8000::,2401:fa00:5f:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:60::,2401:fa00:60:7fff:ffff:ffff:ffff:ffff,US
-2401:fa00:60:8000::,2401:fa00:f7:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:37::,2401:fa00:7f:ffff:ffff:ffff:ffff:ffff,MY
+2401:fa00:80::,2401:fa00:f7:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:f8::,2401:fa00:f8:ffff:ffff:ffff:ffff:ffff,PH
-2401:fa00:f9::,2401:fa00:47f:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:480::,2401:fa00:480:7fff:ffff:ffff:ffff:ffff,US
-2401:fa00:480:8000::,2401:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:f9::,2401:fa00:fb:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:fc::,2401:fa00:fd:ffff:ffff:ffff:ffff:ffff,TW
+2401:fa00:fe::,2401:fa00:fe:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:ff::,2401:fa00:ff:ffff:ffff:ffff:ffff:ffff,AU
+2401:fa00:100::,2401:fa00:400:dbff:ffff:ffff:ffff:ffff,IN
+2401:fa00:400:dc00::,2401:fa00:400:ddff:ffff:ffff:ffff:ffff,TW
+2401:fa00:400:de00::,2401:fa00:400:e1ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:400:e200::,2401:fa00:400:e3ff:ffff:ffff:ffff:ffff,TW
+2401:fa00:400:e400::,2401:fa00:480:8fff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:9000::,2401:fa00:480:91ff:ffff:ffff:ffff:ffff,TW
+2401:fa00:480:9200::,2401:fa00:480:93ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:9400::,2401:fa00:480:95ff:ffff:ffff:ffff:ffff,TW
+2401:fa00:480:9600::,2401:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:fa40::,2401:fa40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:fa80::,2401:fa80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:fac0::,2401:fac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -9467,7 +7873,11 @@
2402:2800::,2402:2800:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:2840::,2402:2840:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:2880::,2402:2880:ffff:ffff:ffff:ffff:ffff:ffff,AF
-2402:28c0::,2402:28c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2402:28c0::,2402:28c0:1:ffff:ffff:ffff:ffff:ffff,GB
+2402:28c0:2::,2402:28c0:2:ffff:ffff:ffff:ffff:ffff,US
+2402:28c0:3::,2402:28c0:fff1:ffff:ffff:ffff:ffff:ffff,GB
+2402:28c0:fff2::,2402:28c0:fff2:ffff:ffff:ffff:ffff:ffff,US
+2402:28c0:fff3::,2402:28c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2402:2900::,2402:2900:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:2940::,2402:2940:ffff:ffff:ffff:ffff:ffff:ffff,FJ
2402:2980::,2402:2980:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -9585,367 +7995,712 @@
2402:4680::,2402:4680:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:46c0::,2402:46c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:4700::,2402:4700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:4740::,2402:4740:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:4780::,2402:4780:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:47c0::,2402:47c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:4800::,2402:4800:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:4840::,2402:4840:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:4880::,2402:4880:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:48c0::,2402:48c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:4900::,2402:4900:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2402:4940::,2402:4940:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:4980::,2402:4980:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:49c0::,2402:49c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:4a00::,2402:4a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4a40::,2402:4a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4a80::,2402:4a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4ac0::,2402:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4b00::,2402:4b00:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:4b40::,2402:4b40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:4b80::,2402:4b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4bc0::,2402:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4c00::,2402:4c01:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:4c40::,2402:4c40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4c80::,2402:4c80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:4cc0::,2402:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:4d00::,2402:4d00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:4d40::,2402:4d40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:4d80::,2402:4d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4dc0::,2402:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:4e00::,2402:4e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4e40::,2402:4e40:ffff:ffff:ffff:ffff:ffff:ffff,AF
2402:4e80::,2402:4e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:4ec0::,2402:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4f00::,2402:4f00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:4f40::,2402:4f40:ffff:ffff:ffff:ffff:ffff:ffff,PH
2402:4f80::,2402:4f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:4fc0::,2402:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:5040::,2402:5040:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:5080::,2402:5080:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:50c0::,2402:50c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5100::,2402:5100:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2402:5140::,2402:5140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5180::,2402:5180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:51c0::,2402:51c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5200::,2402:5200:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:5240::,2402:5240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5280::,2402:5280:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:52c0::,2402:52c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5300::,2402:5300:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2402:5340::,2402:5340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5380::,2402:5380:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:53c0::,2402:53c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:5400::,2402:5400:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:5440::,2402:5440:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:5480::,2402:5480:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:54c0::,2402:54c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:5500::,2402:5500:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2402:5540::,2402:5540:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:5580::,2402:5580:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:55c0::,2402:55c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:5600::,2402:5600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:5640::,2402:5640:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:5680::,2402:5680:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:56c0::,2402:56c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:5700::,2402:5700:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:5740::,2402:5740:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:5780::,2402:5780:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:57c0::,2402:57c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:5800::,2402:5800:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2402:5840::,2402:5840:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:5880::,2402:5880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:58c0::,2402:58c0:ffff:ffff:ffff:ffff:ffff:ffff,PG
2402:5900::,2402:5900:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:5940::,2402:5940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5980::,2402:5980:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:59c0::,2402:59c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5a00::,2402:5a00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:5a40::,2402:5a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:5ac0::,2402:5ac0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:5b00::,2402:5b00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:5b40::,2402:5b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:5bc0::,2402:5bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5c00::,2402:5c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:5c40::,2402:5c40:ffff:ffff:ffff:ffff:ffff:ffff,US
2402:5c80::,2402:5c80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:5cc0::,2402:5cc0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2402:5d00::,2402:5d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:5d40::,2402:5d40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:5d80::,2402:5d80:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:5dc0::,2402:5dc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:5e00::,2402:5e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:5e40::,2402:5e40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5e80::,2402:5e80:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:5ec0::,2402:5ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5f00::,2402:5f00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:5f40::,2402:5f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:5f80::,2402:5f80:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2402:6000::,2402:6000:ff:ffff:ffff:ffff:ffff:ffff,AU
-2402:6000:100::,2402:6000:100:7fff:ffff:ffff:ffff:ffff,NZ
-2402:6000:100:8000::,2402:6000:100:ffff:ffff:ffff:ffff:ffff,AU
-2402:6000:101::,2402:6000:101:7fff:ffff:ffff:ffff:ffff,NZ
-2402:6000:101:8000::,2402:6000:103:ffff:ffff:ffff:ffff:ffff,AU
-2402:6000:104::,2402:6000:104:ffff:ffff:ffff:ffff:ffff,NZ
-2402:6000:105::,2402:6000:10f:ffff:ffff:ffff:ffff:ffff,AU
-2402:6000:110::,2402:6000:110:7fff:ffff:ffff:ffff:ffff,NZ
-2402:6000:110:8000::,2402:6000:202:ffff:ffff:ffff:ffff:ffff,AU
-2402:6000:203::,2402:6000:203:7fff:ffff:ffff:ffff:ffff,NZ
-2402:6000:203:8000::,2402:6000:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:5fc0::,2402:5fc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:6000::,2402:6000:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:6040::,2402:6040:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:60c0::,2402:60c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:6100::,2402:6100:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2402:6140::,2402:6140:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:61c0::,2402:61c0:ffff:ffff:ffff:ffff:ffff:ffff,PH
2402:6200::,2402:6200:ffff:ffff:ffff:ffff:ffff:ffff,GU
+2402:6240::,2402:6240:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:6280::,2402:6280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:62c0::,2402:62c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:6340::,2402:6340:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:63c0::,2402:63c0:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:6400::,2402:6400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6440::,2402:6440:ffff:ffff:ffff:ffff:ffff:ffff,VN
2402:6480::,2402:6480:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:64c0::,2402:64c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6500::,2402:6500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6540::,2402:6540:ffff:ffff:ffff:ffff:ffff:ffff,MM
2402:6580::,2402:6580:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:65c0::,2402:65c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6600::,2402:6600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6640::,2402:6640:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:6680::,2402:6680:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:66c0::,2402:66c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6700::,2402:6700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:6740::,2402:6740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6780::,2402:6780:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:67c0::,2402:67c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6800::,2402:6800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:6840::,2402:6840:ffff:ffff:ffff:ffff:ffff:ffff,LA
2402:6880::,2402:6880:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:68c0::,2402:68c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:6900::,2402:6900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6940::,2402:6940:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:6980::,2402:6980:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:69c0::,2402:69c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:6a00::,2402:6a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:6a40::,2402:6a40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:6a80::,2402:6a80:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2402:6b00::,2402:6b00:38b0:ffff:ffff:ffff:ffff:ffff,JP
-2402:6b00:38b1::,2402:6b00:38b1:7fff:ffff:ffff:ffff:ffff,US
-2402:6b00:38b1:8000::,2402:6b00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:6ac0::,2402:6ac0:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:6b00::,2402:6b00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:6b40::,2402:6b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6b80::,2402:6b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6bc0::,2402:6bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6c00::,2402:6c00:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:6c40::,2402:6c40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:6c80::,2402:6c80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:6cc0::,2402:6cc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:6d00::,2402:6d00:ffff:ffff:ffff:ffff:ffff:ffff,PF
2402:6d80::,2402:6d80:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2402:6dc0::,2402:6dc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6e00::,2402:6e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:6e40::,2402:6e40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:6e80::,2402:6e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:6ec0::,2402:6ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6f00::,2402:6f00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:6f40::,2402:6f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:6f80::,2402:6f80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:6fc0::,2402:6fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7000::,2402:7000:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2402:7040::,2402:7040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7080::,2402:7080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:70c0::,2402:70c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7100::,2402:7100:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:7140::,2402:7140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7180::,2402:7180:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:71c0::,2402:71c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7200::,2402:7200:ffff:ffff:ffff:ffff:ffff:ffff,TK
+2402:7240::,2402:7240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7280::,2402:7280:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:72c0::,2402:72c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7300::,2402:7300:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:7340::,2402:7340:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7380::,2402:7380:7ff:ffff:ffff:ffff:ffff:ffff,JP
2402:7380:800::,2402:7380:fff:ffff:ffff:ffff:ffff:ffff,HK
+2402:73c0::,2402:73c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:7400::,2402:7400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7440::,2402:7440:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:7480::,2402:7481:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:74c0::,2402:74c0:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:7500::,2402:7500:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2402:7540::,2402:7540:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:75c0::,2402:75c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7600::,2402:7600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7640::,2402:7640:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:7680::,2402:7680:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:76c0::,2402:76c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:7700::,2402:7700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:7740::,2402:7740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7780::,2402:7780:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:77c0::,2402:77c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:7800::,2402:7800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7840::,2402:7840:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:7880::,2402:7880:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:78c0::,2402:78c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7900::,2402:7900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7940::,2402:7940:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7980::,2402:7980:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:79c0::,2402:79c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2402:7a00::,2402:7a00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:7a40::,2402:7a40:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:7a80::,2402:7a80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:7ac0::,2402:7ac0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:7b00::,2402:7b00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:7b40::,2402:7b40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7b80::,2402:7b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7bc0::,2402:7bc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7c00::,2402:7c00:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2402:7c40::,2402:7c40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7c80::,2402:7c80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7d00::,2402:7d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:7d40::,2402:7d40:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:7d80::,2402:7d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:7dc0::,2402:7dc0:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:7e00::,2402:7e00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:7e40::,2402:7e40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:7e80::,2402:7e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7ec0::,2402:7ec0:ffff:ffff:ffff:ffff:ffff:ffff,MM
2402:7f00::,2402:7f00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:7f40::,2402:7f40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:7f80::,2402:7f80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:7fc0::,2402:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:8000::,2402:8000:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:8040::,2402:8040:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8080::,2402:8080:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:80c0::,2402:80c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8100::,2402:8100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8140::,2402:8140:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8180::,2402:8180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:81c0::,2402:81c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8200::,2402:8200:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:8240::,2402:8240:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:8280::,2402:8280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:82c0::,2402:82c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:8300::,2402:8300:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:8340::,2402:8340:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8380::,2402:8380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:83c0::,2402:83c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:8400::,2402:8400:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8440::,2402:8440:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8480::,2402:8480:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:84c0::,2402:84c0:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:8540::,2402:8540:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:85c0::,2402:85c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8600::,2402:8600:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:8640::,2402:8640:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8680::,2402:8680:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:86c0::,2402:86c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8700::,2402:8700:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:8740::,2402:8740:ffff:ffff:ffff:ffff:ffff:ffff,IR
2402:8780::,2402:8780:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:87c0::,2402:87c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8800::,2402:8800:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:8840::,2402:8840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8880::,2402:8880:ffff:ffff:ffff:ffff:ffff:ffff,MN
+2402:88c0::,2402:88c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8900::,2402:8900:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:8940::,2402:8940:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:89c0::,2402:89c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8a00::,2402:8a00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8a40::,2402:8a40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:8a80::,2402:8a80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8ac0::,2402:8ac0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:8b00::,2402:8b00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:8b40::,2402:8b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8b80::,2402:8b80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:8bc0::,2402:8bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8c00::,2402:8c00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8c40::,2402:8c40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:8c80::,2402:8c80:ffff:ffff:ffff:ffff:ffff:ffff,LA
+2402:8cc0::,2402:8cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8d00::,2402:8d03:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:8d40::,2402:8d40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8d80::,2402:8d80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:8dc0::,2402:8dc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:8e00::,2402:8e00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:8e40::,2402:8e40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:8e80::,2402:8e80:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:8ec0::,2402:8ec0:ffff:ffff:ffff:ffff:ffff:ffff,MM
2402:8f00::,2402:8f00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:8f40::,2402:8f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:8f80::,2402:8f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:8fc0::,2402:8fc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:9040::,2402:9040:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9080::,2402:9080:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:90c0::,2402:90c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:9100::,2402:9100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9140::,2402:9140:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9180::,2402:9180:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:91c0::,2402:91c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9200::,2402:9200:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9240::,2402:9240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9280::,2402:9280:ffff:ffff:ffff:ffff:ffff:ffff,MO
+2402:92c0::,2402:92c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9300::,2402:9300:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:9340::,2402:9340:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:9380::,2402:9380:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:93c0::,2402:93c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9400::,2402:9400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9440::,2402:9440:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9480::,2402:9480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:94c0::,2402:94c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9500::,2402:9500:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:9540::,2402:9540:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:9580::,2402:9580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:95c0::,2402:95c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9640::,2402:9640:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:9680::,2402:9680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:96c0::,2402:96c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9740::,2402:9740:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:9780::,2402:9780:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:97c0::,2402:97c0:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:9800::,2402:9800:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:9840::,2402:9840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9880::,2402:9880:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:98c0::,2402:98c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9900::,2402:9900:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2402:9980::,2402:9980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9940::,2402:9940:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:99c0::,2402:99c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9a00::,2402:9a00:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:9a40::,2402:9a40:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:9a80::,2402:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9ac0::,2402:9ac0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:9b00::,2402:9b00:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:9b40::,2402:9b40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:9b80::,2402:9b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9bc0::,2402:9bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:9c00::,2402:9c00:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2402:9c40::,2402:9c40:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:9c80::,2402:9c80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9cc0::,2402:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9d40::,2402:9d40:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:9d80::,2402:9d80:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2402:9dc0::,2402:9dc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9e00::,2402:9e00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
-2402:9e80::,2402:9e80::ffff:ffff:ffff:ffff:ffff,HK
-2402:9e80:1::,2402:9e80:1:7fff:ffff:ffff:ffff:ffff,AU
-2402:9e80:1:8000::,2402:9e80:13:ffff:ffff:ffff:ffff:ffff,HK
+2402:9e40::,2402:9e40:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2402:9e80::,2402:9e80:13:ffff:ffff:ffff:ffff:ffff,JP
2402:9e80:14::,2402:9e80:14:ffff:ffff:ffff:ffff:ffff,VN
2402:9e80:15::,2402:9e80:15:ffff:ffff:ffff:ffff:ffff,US
-2402:9e80:16::,2402:9e80:17:ffff:ffff:ffff:ffff:ffff,HK
-2402:9e80:18::,2402:9e80:18:7fff:ffff:ffff:ffff:ffff,CN
-2402:9e80:18:8000::,2402:9e80:18:ffff:ffff:ffff:ffff:ffff,HK
+2402:9e80:16::,2402:9e80:18:ffff:ffff:ffff:ffff:ffff,JP
2402:9e80:19::,2402:9e80:19:ffff:ffff:ffff:ffff:ffff,KR
-2402:9e80:1a::,2402:9e80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:9e80:1a::,2402:9e80:23:ffff:ffff:ffff:ffff:ffff,JP
+2402:9e80:24::,2402:9e80:24:ffff:ffff:ffff:ffff:ffff,AU
+2402:9e80:25::,2402:9e80:7f:ffff:ffff:ffff:ffff:ffff,JP
+2402:9e80:80::,2402:9e80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:9ec0::,2402:9ec0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:9f00::,2402:9f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:9f40::,2402:9f40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:9f80::,2402:9f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:9fc0::,2402:9fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a000::,2402:a000:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:a040::,2402:a040:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:a080::,2402:a080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a0c0::,2402:a0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2402:a100::,2402:a100:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:a140::,2402:a140:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:a180::,2402:a180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a1c0::,2402:a1c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:a200::,2402:a200:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a240::,2402:a240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a280::,2402:a280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a2c0::,2402:a2c0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:a300::,2402:a300:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2402:a340::,2402:a340:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:a380::,2402:a380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a3c0::,2402:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a400::,2402:a400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:a440::,2402:a440:ffff:ffff:ffff:ffff:ffff:ffff,PH
2402:a480::,2402:a480:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:a4c0::,2402:a4c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:a500::,2402:a500:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:a540::,2402:a540:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:a5c0::,2402:a5c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:a600::,2402:a600:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:a640::,2402:a640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a680::,2402:a680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a6c0::,2402:a6c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a700::,2402:a700:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:a740::,2402:a740:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:a780::,2402:a780:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:a7c0::,2402:a7c1:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:a800::,2402:a800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:a840::,2402:a840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a880::,2402:a880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:a8c0::,2402:a8c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:a900::,2402:a900:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:a940::,2402:a940:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:a980::,2402:a980:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:a9c0::,2402:a9c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:aa40::,2402:aa40:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:aa80::,2402:aa80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:aac0::,2402:aac0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:ab00::,2402:ab00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:ab40::,2402:ab40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ab80::,2402:ab80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:abc0::,2402:abc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ac00::,2402:ac00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:ac40::,2402:ac40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ac80::,2402:ac80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:acc0::,2402:acc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ad00::,2402:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:ad40::,2402:ad40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:ad80::,2402:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2402:adc0::,2402:adc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:ae00::,2402:ae00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:ae40::,2402:ae40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:ae80::,2402:ae80:ffff:ffff:ffff:ffff:ffff:ffff,WS
+2402:aec0::,2402:aec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:af00::,2402:af00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:af40::,2402:af40:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:af80::,2402:af80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:afc0::,2402:afc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b040::,2402:b040:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:b080::,2402:b080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b0c0::,2402:b0c0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:b100::,2402:b100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:b140::,2402:b140:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:b180::,2402:b180:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:b1c0::,2402:b1c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:b200::,2402:b200:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b240::,2402:b240:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:b280::,2402:b280:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:b2c0::,2402:b2c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:b300::,2402:b300:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:b340::,2402:b340:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:b380::,2402:b380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b3c0::,2402:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:b400::,2402:b400:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:b440::,2402:b440:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:b480::,2402:b480:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:b4c0::,2402:b4c0:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:b500::,2402:b500:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:b540::,2402:b540:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:b580::,2402:b580:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:b5c0::,2402:b5c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:b600::,2402:b600:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2402:b640::,2402:b640:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:b6c0::,2402:b6c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:b700::,2402:b700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:b740::,2402:b740:ffff:ffff:ffff:ffff:ffff:ffff,TH
2402:b780::,2402:b780:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:b7c0::,2402:b7c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:b800::,2402:b801:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:b840::,2402:b840:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:b880::,2402:b880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b8c0::,2402:b8c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b940::,2402:b940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:b980::,2402:b980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:b9c0::,2402:b9c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:ba00::,2402:ba00:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2402:ba40::,2402:ba40:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:ba80::,2402:ba80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:bac0::,2402:bac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:bb00::,2402:bb00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:bb40::,2402:bb40:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:bb80::,2402:bb80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:bbc0::,2402:bbc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:bc00::,2402:bc07:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:bc40::,2402:bc40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:bc80::,2402:bc80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:bcc0::,2402:bcc0:ffff:ffff:ffff:ffff:ffff:ffff,KR
2402:bd00::,2402:bd00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:bd40::,2402:bd40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:bd80::,2402:bd81:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:bd82::,2402:bd83:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:bdc0::,2402:bdc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:be00::,2402:be00:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2402:be40::,2402:be40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:be80::,2402:be80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:bec0::,2402:bec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:bf00::,2402:bf00:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:bf40::,2402:bf40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:bf80::,2402:bf80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:bfc0::,2402:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:c000::,2402:c000:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:c040::,2402:c040:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:c080::,2402:c081:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:c0c0::,2402:c0c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c100::,2402:c100:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2402:c140::,2402:c140:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c180::,2402:c180:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:c1c0::,2402:c1c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c200::,2402:c200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:c240::,2402:c240:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:c280::,2402:c280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:c2c0::,2402:c2c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c300::,2402:c300:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:c340::,2402:c340:ffff:ffff:ffff:ffff:ffff:ffff,TW
2402:c380::,2402:c380:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:c3c0::,2402:c3c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:c400::,2402:c400:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2402:c480::,2402:c480:4fff:ffff:ffff:ffff:ffff:ffff,HK
-2402:c480:5000::,2402:c480:5000:7fff:ffff:ffff:ffff:ffff,SG
-2402:c480:5000:8000::,2402:c480:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:c440::,2402:c440:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:c480::,2402:c480:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:c4c0::,2402:c4c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:c500::,2402:c500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:c540::,2402:c540:ffff:ffff:ffff:ffff:ffff:ffff,TW
2402:c580::,2402:c580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2402:c5c0::,2402:c5c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:c600::,2402:c600:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:c640::,2402:c640:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:c680::,2402:c680:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:c6c0::,2402:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c700::,2402:c700:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2402:c740::,2402:c740:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:c780::,2402:c780:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2402:c7c0::,2402:c7c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:c800::,2402:c800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:c840::,2402:c840:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:c880::,2402:c880:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:c8c0::,2402:c8c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:c900::,2402:c900:ffff:ffff:ffff:ffff:ffff:ffff,MN
+2402:c940::,2402:c940:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:c980::,2402:c980:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:c9c0::,2402:c9c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:ca00::,2402:ca00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:ca40::,2402:ca40:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:cac0::,2402:cac0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:cb00::,2402:cb01:ffff:ffff:ffff:ffff:ffff:ffff,LK
+2402:cb40::,2402:cb40:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2402:cbc0::,2402:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:cc00::,2402:cc00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:cc40::,2402:cc40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:cc80::,2402:cc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:ccc0::,2402:ccc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:cd00::,2402:cd00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:cd40::,2402:cd40:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:cd80::,2402:cd80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:cdc0::,2402:cdc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ce00::,2402:ce01:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:ce40::,2402:ce40:ffff:ffff:ffff:ffff:ffff:ffff,US
2402:ce80::,2402:ce80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:cec0::,2402:cec0:ffff:ffff:ffff:ffff:ffff:ffff,TH
2402:cf00::,2402:cf00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:cf40::,2402:cf40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:cf80::,2402:cf80:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:cfc0::,2402:cfc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d000::,2402:d000:ffff:ffff:ffff:ffff:ffff:ffff,LK
+2402:d040::,2402:d040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d080::,2402:d080:ffff:ffff:ffff:ffff:ffff:ffff,TL
+2402:d0c0::,2402:d0c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:d100::,2402:d100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:d140::,2402:d140:ff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d140:100::,2402:d140:1ff:ffff:ffff:ffff:ffff:ffff,US
+2402:d140:200::,2402:d140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d180::,2402:d180:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:d1c0::,2402:d1c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:d200::,2402:d200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:d240::,2402:d240:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:d280::,2402:d280:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2402:d2c0::,2402:d2c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d300::,2402:d300:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d340::,2402:d340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d380::,2402:d380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d3c0::,2402:d3c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:d400::,2402:d400:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d500::,2402:d500:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:d540::,2402:d540:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d580::,2402:d580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2402:d5c0::,2402:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d600::,2402:d600:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:d640::,2402:d640:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d680::,2402:d680:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:d6c0::,2402:d6c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d700::,2402:d700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:d740::,2402:d740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:d780::,2402:d780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d7c0::,2402:d7c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d800::,2402:d800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:d840::,2402:d840:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:d880::,2402:d880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d8c0::,2402:d8c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:d900::,2402:d900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:d940::,2402:d940:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:d980::,2402:d980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:d9c0::,2402:d9c0:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:da00::,2402:da00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:da40::,2402:da40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:da80::,2402:da80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:dac0::,2402:dac0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:db00::,2402:db00:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:db40::,2402:db40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:db80::,2402:db80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:dbc0::,2402:dbc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:dc00::,2402:dc00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:dc40::,2402:dc40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:dc80::,2402:dc80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:dcc0::,2402:dcc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:dd40::,2402:dd40:ffff:ffff:ffff:ffff:ffff:ffff,VN
2402:dd80::,2402:dd80:ffff:ffff:ffff:ffff:ffff:ffff,AF
+2402:ddc0::,2402:ddc0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:de00::,2402:de00:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2402:de40::,2402:de40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:de80::,2402:de80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:dec0::,2402:dec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:df00::,2402:df00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:df40::,2402:df40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:df80::,2402:df80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:dfc0::,2402:dfc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e000::,2402:e000:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2402:e040::,2402:e040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e080::,2402:e080:ffff:ffff:ffff:ffff:ffff:ffff,AF
+2402:e0c0::,2402:e0c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e100::,2402:e100:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:e140::,2402:e140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e180::,2402:e180:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:e1c0::,2402:e1c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:e200::,2402:e200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:e240::,2402:e240:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:e280::,2402:e280:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:e2c0::,2402:e2c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e300::,2402:e300:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:e340::,2402:e340:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:e380::,2402:e380::ffff:ffff:ffff:ffff:ffff,HK
2402:e380:1::,2402:e380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2402:e3c0::,2402:e3c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e400::,2402:e400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:e440::,2402:e440:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:e480::,2402:e480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:e4c0::,2402:e4c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:e500::,2402:e500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:e540::,2402:e540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e580::,2402:e580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2402:e5c0::,2402:e5c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:e600::,2402:e600:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2402:e640::,2402:e640:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:e680::,2402:e680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:e6c0::,2402:e6c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:e740::,2402:e740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e780::,2402:e780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:e7c0::,2402:e7c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:e800::,2402:e800:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2402:e840::,2402:e840:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:e880::,2402:e880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:e8c0::,2402:e8c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:e900::,2402:e900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:e940::,2402:e940:ffff:ffff:ffff:ffff:ffff:ffff,MO
2402:e980::,2402:e980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:e9c0::,2402:e9c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:ea40::,2402:ea40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ea80::,2402:ea80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:eac0::,2402:eac0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:eb00::,2402:eb00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:eb40::,2402:eb40:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:eb80::,2402:eb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:ebc0::,2402:ebc0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:ec00::,2402:ec00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:ec40::,2402:ec40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:ec80::,2402:ec80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:ecc0::,2402:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:ed40::,2402:ed40:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:ed80::,2402:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:edc0::,2402:edc0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:ee00::,2402:ee00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:ee40::,2402:ee40:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:ee80::,2402:ee80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:eec0::,2402:eec0:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:ef00::,2402:ef3f:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:ef40::,2402:ef40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:ef80::,2402:ef80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:efc0::,2402:efc0:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:f000::,2402:f000:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f040::,2402:f040:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:f080::,2402:f080:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:f0c0::,2402:f0c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:f100::,2402:f100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:f140::,2402:f140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f180::,2402:f180:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:f1c0::,2402:f1c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:f200::,2402:f200:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:f240::,2402:f240:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:f280::,2402:f280:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:f2c0::,2402:f2c0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:f300::,2402:f300:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:f340::,2402:f340:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f3c0::,2402:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f400::,2402:f400:ffff:ffff:ffff:ffff:ffff:ffff,KR
2402:f480::,2402:f480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f4c0::,2402:f4c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:f500::,2402:f500:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:f540::,2402:f540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f580::,2402:f580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f5c0::,2402:f5c0:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:f600::,2402:f600:ffff:ffff:ffff:ffff:ffff:ffff,NZ
-2402:f680::,2402:f680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f640::,2402:f640:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:f6c0::,2402:f6c0:ffff:ffff:ffff:ffff:ffff:ffff,MM
2402:f700::,2402:f700:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:f740::,2402:f740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f780::,2402:f780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f7c0::,2402:f7c0:ffff:ffff:ffff:ffff:ffff:ffff,PK
2402:f800::,2402:f800:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2402:f840::,2402:f840:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2402:f8c0::,2402:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:f900::,2402:f900:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:f940::,2402:f940:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:f980::,2402:f980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2402:f9c0::,2402:f9c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:fa00::,2402:fa00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:fa40::,2402:fa40:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:fa80::,2402:fa80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:fac0::,2402:fac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:fb00::,2402:fb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2402:fb40::,2402:fb40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:fb80::,2402:fb80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2402:fbc0::,2402:fbc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:fc00::,2402:fc00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2402:fc40::,2402:fc40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:fc80::,2402:fc80:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2402:fcc0::,2402:fcc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:fd00::,2402:fd00:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2402:fd40::,2402:fd40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:fe00::,2402:fe00:ffff:ffff:ffff:ffff:ffff:ffff,PH
2402:fe80::,2402:fe80:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:ff00::,2402:ff00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -9962,7 +8717,9 @@
2403:300:a08::,2403:300:a08:ffff:ffff:ffff:ffff:ffff,AU
2403:300:a09::,2403:300:a09:ffff:ffff:ffff:ffff:ffff,SG
2403:300:a0a::,2403:300:a0a:ffff:ffff:ffff:ffff:ffff,HK
-2403:300:a0b::,2403:300:a13:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a0b::,2403:300:a0b:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a0c::,2403:300:a0c:ffff:ffff:ffff:ffff:ffff,JP
+2403:300:a0d::,2403:300:a13:ffff:ffff:ffff:ffff:ffff,SG
2403:300:a14::,2403:300:a14:ffff:ffff:ffff:ffff:ffff,JP
2403:300:a15::,2403:300:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:380::,2403:380:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -10029,7 +8786,6 @@
2403:2300::,2403:2300:ffff:ffff:ffff:ffff:ffff:ffff,TH
2403:2380::,2403:2380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2400::,2403:2400:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2403:2480::,2403:2480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2500::,2403:2500:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:2580::,2403:2580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2600::,2403:2600:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -10059,18 +8815,19 @@
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:2c80::,2403:2c80::7fff:ffff:ffff:ffff:ffff,CN
-2403:2c80:0:8000::,2403:2c80::ffff:ffff:ffff:ffff:ffff,HK
+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
-2403:2c80:3::,2403:2c80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:2c80:3::,2403:2c80:3:ffff:ffff:ffff:ffff:ffff,CN
+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:2d00::,2403:2d00:ffff:ffff:ffff:ffff:ffff:ffff,JP
2403:2d80::,2403:2d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2e00::,2403:2e00:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:2e80::,2403:2e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:2f00::,2403:2f00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2403:2f80::,2403:2f80:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2403:3080::,2403:3080:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:3100::,2403:3100:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:3180::,2403:3180:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:3200::,2403:3200:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -10098,7 +8855,6 @@
2403:3d80::,2403:3d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3e00::,2403:3e00:ffff:ffff:ffff:ffff:ffff:ffff,KR
2403:3e80::,2403:3e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2403:3f00::,2403:3f00:ffff:ffff:ffff:ffff:ffff:ffff,MY
2403:3f80::,2403:3f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4000::,2403:4000:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:4080::,2403:4080:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -10115,7 +8871,6 @@
2403:4600::,2403:4600:ffff:ffff:ffff:ffff:ffff:ffff,FJ
2403:4680::,2403:4680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4700::,2403:4700:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2403:4780::,2403:4780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4800::,2403:4800:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:4880::,2403:4880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4900::,2403:4900:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -10141,7 +8896,6 @@
2403:5300::,2403:5300:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:5380::,2403:5380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5400::,2403:5400:ffff:ffff:ffff:ffff:ffff:ffff,TH
-2403:5480::,2403:5480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5500::,2403:5500:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:5580::,2403:5580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5600::,2403:5600:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -10151,7 +8905,6 @@
2403:5700::,2403:5700:ffff:ffff:ffff:ffff:ffff:ffff,JP
2403:5780::,2403:5780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5800::,2403:5800:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2403:5880::,2403:5880:ffff:ffff:ffff:ffff:ffff:ffff,CN
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
@@ -10173,7 +8926,6 @@
2403:6300::,2403:6300:ffff:ffff:ffff:ffff:ffff:ffff,KR
2403:6380::,2403:6380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:6400::,2403:6400:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2403:6480::,2403:6480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:6500::,2403:6500:ffff:ffff:ffff:ffff:ffff:ffff,KR
2403:6580::,2403:6580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:6600::,2403:6600:ffff:ffff:ffff:ffff:ffff:ffff,KH
@@ -10453,20 +9205,16 @@
2403:f280::,2403:f280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:f300::,2403:f300:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:f380::,2403:f380:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2403:f480::,2403:f480:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2403:f481::,2403:f481:ffff:ffff:ffff:ffff:ffff:ffff,US
+2403:f480::,2403:f481:ffff:ffff:ffff:ffff:ffff:ffff,US
2403:f500::,2403:f500:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:f580::,2403:f580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:f600::,2403:f600:ffff:ffff:ffff:ffff:ffff:ffff,NR
2403:f680::,2403:f680:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:f700::,2403:f700:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2403:f780::,2403:f780:ffff:ffff:ffff:ffff:ffff:ffff,BD
-2403:f800::,2403:f800:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:f880::,2403:f880:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2403:f900::,2403:f900:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:f980::,2403:f980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:fa00::,2403:fa00:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2403:fa80::,2403:fa80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:fb00::,2403:fb00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:fb80::,2403:fb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:fc00::,2403:fc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -10611,7 +9359,6 @@
2404:3a00::,2404:3a00:ffff:ffff:ffff:ffff:ffff:ffff,VN
2404:3a80::,2404:3a80:ffff:ffff:ffff:ffff:ffff:ffff,TH
2404:3b00::,2404:3b00:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2404:3b80::,2404:3b80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:3c00::,2404:3c00:ffff:ffff:ffff:ffff:ffff:ffff,PH
2404:3c80::,2404:3c80:ffff:ffff:ffff:ffff:ffff:ffff,PK
2404:3d00::,2404:3d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -10646,7 +9393,7 @@
2404:4d00::,2404:4d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:4d80::,2404:4d80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:4e00::,2404:4e00:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2404:4f00::,2404:4f01:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2404:4f00::,2404:4f03:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:4f80::,2404:4f80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:5000::,2404:5000:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:5080::,2404:5080:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -10676,12 +9423,9 @@
2404:5d00::,2404:5d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:5d80::,2404:5d80:5fff:ffff:ffff:ffff:ffff:ffff,JP
2404:5d80:6000::,2404:5d80:60ff:ffff:ffff:ffff:ffff:ffff,AU
-2404:5d80:6100::,2404:5d80:6100:ffff:ffff:ffff:ffff:ffff,JP
-2404:5d80:6101::,2404:5d80:6101:7fff:ffff:ffff:ffff:ffff,SG
-2404:5d80:6101:8000::,2404:5d80:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2404:5d80:6100::,2404:5d80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2404:5e00::,2404:5e00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:5e80::,2404:5e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2404:5f80::,2404:5f80:ffff:ffff:ffff:ffff:ffff:ffff,PH
2404:6000::,2404:6000:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:6080::,2404:6080:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:6100::,2404:6100:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -10694,10 +9438,11 @@
2404:6480::,2404:6480:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:6500::,2404:6500:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:6600::,2404:6600:ffff:ffff:ffff:ffff:ffff:ffff,NZ
-2404:6680::,2404:6680:ffff:ffff:ffff:ffff:ffff:ffff,PK
2404:6700::,2404:6700:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:6780::,2404:6780:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2404:6800::,2404:6800:4002:ffff:ffff:ffff:ffff:ffff,AU
+2404:6800::,2404:6800:3fff:ffff:ffff:ffff:ffff:ffff,AU
+2404:6800:4000::,2404:6800:4000:ffff:ffff:ffff:ffff:ffff,IN
+2404:6800:4001::,2404:6800:4002:ffff:ffff:ffff:ffff:ffff,AU
2404:6800:4003::,2404:6800:4003:ffff:ffff:ffff:ffff:ffff,SG
2404:6800:4004::,2404:6800:4007:ffff:ffff:ffff:ffff:ffff,AU
2404:6800:4008::,2404:6800:4008:ffff:ffff:ffff:ffff:ffff,TW
@@ -10736,11 +9481,7 @@
2404:7900::,2404:7900:ffff:ffff:ffff:ffff:ffff:ffff,JP
2404:7980::,2404:7980:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:7a00::,2404:7a00:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2404:7a80::,2404:7a80:8200:7fff:ffff:ffff:ffff:ffff,JP
-2404:7a80:8200:8000::,2404:7a80:8200:ffff:ffff:ffff:ffff:ffff,CN
-2404:7a80:8201::,2404:7a82:26df:ffff:ffff:ffff:ffff:ffff,JP
-2404:7a82:26e0::,2404:7a82:26e0:7fff:ffff:ffff:ffff:ffff,US
-2404:7a82:26e0:8000::,2404:7a87:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2404:7a80::,2404:7a87:ffff:ffff:ffff:ffff:ffff:ffff,JP
2404:7b00::,2404:7b00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:7c00::,2404:7c00:ffff:ffff:ffff:ffff:ffff:ffff,NP
2404:7c80::,2404:7c80:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -10752,7 +9493,6 @@
2404:7f80::,2404:7f80:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:8000::,2404:8000:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:8100::,2404:8100:ffff:ffff:ffff:ffff:ffff:ffff,MY
-2404:8180::,2404:8180:ffff:ffff:ffff:ffff:ffff:ffff,PK
2404:8200::,2404:8200:ffff:ffff:ffff:ffff:ffff:ffff,JP
2404:8280::,2404:8280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:8300::,2404:8300:ffff:ffff:ffff:ffff:ffff:ffff,PK
@@ -10957,7 +9697,6 @@
2404:f000::,2404:f000:ffff:ffff:ffff:ffff:ffff:ffff,LK
2404:f080::,2404:f080:ffff:ffff:ffff:ffff:ffff:ffff,VN
2404:f100::,2404:f100:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2404:f180::,2404:f180:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:f200::,2404:f200:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:f280::,2404:f280:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:f300::,2404:f300:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -10976,19 +9715,16 @@
2404:f801:8:1011::,2404:f801:8:1011::,AU
2404:f801:8:1011::1,2404:f801:8:1013:ffff:ffff:ffff:ffff,SG
2404:f801:8:1014::,2404:f801:8:1014::,AU
-2404:f801:8:1014::1,2404:f801:28:7fff:ffff:ffff:ffff:ffff,SG
-2404:f801:28:8000::,2404:f801:28:ffff:ffff:ffff:ffff:ffff,US
-2404:f801:29::,2404:f801:2f:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8:1014::1,2404:f801:2f:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:30::,2404:f801:30::,AU
-2404:f801:30::1,2404:f801:8027:ffff:ffff:ffff:ffff:ffff,SG
-2404:f801:8028::,2404:f801:8028:ffff:ffff:ffff:ffff:ffff,IN
-2404:f801:8029::,2404:f801:8050::ffff:ffff:ffff:ffff,SG
-2404:f801:8050:1::,2404:f801:8050:8:ffff:ffff:ffff:ffff,JP
-2404:f801:8050:9::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:30::1,2404:f801:7fff:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8000::,2404:f801:803f:ffff:ffff:ffff:ffff:ffff,IN
+2404:f801:8040::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,JP
2404:f801:8058::,2404:f801:8058:ffff:ffff:ffff:ffff:ffff,IN
-2404:f801:8059::,2404:f801:e817:ffff:ffff:ffff:ffff:ffff,SG
-2404:f801:e818::,2404:f801:e818:7fff:ffff:ffff:ffff:ffff,AU
-2404:f801:e818:8000::,2404:f801:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8059::,2404:f801:807f:ffff:ffff:ffff:ffff:ffff,JP
+2404:f801:8080::,2404:f801:e7ff:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:e800::,2404:f801:e87f:ffff:ffff:ffff:ffff:ffff,AU
+2404:f801:e880::,2404:f801:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:f880::,2404:f880:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:f900::,2404:f900:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:f980::,2404:f980:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -11092,7 +9828,9 @@
2405:2000:2300::,2405:2000:2300:ff:ffff:ffff:ffff:ffff,MY
2405:2000:2300:100::,2405:2000:24ff:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:2500::,2405:2000:2500:ffff:ffff:ffff:ffff:ffff,JP
-2405:2000:2501::,2405:2000:ffc7:ffff:ffff:ffff:ffff:ffff,IN
+2405:2000:2501::,2405:2000:2700:1f:ffff:ffff:ffff:ffff,IN
+2405:2000:2700:20::,2405:2000:2700:2f:ffff:ffff:ffff:ffff,AU
+2405:2000:2700:30::,2405:2000:ffc7:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:ffc8::,2405:2000:ffc8:ffff:ffff:ffff:ffff:ffff,SG
2405:2000:ffc9::,2405:2001::ffff:ffff:ffff:ffff:ffff,IN
2405:2001:1::,2405:2001:1:ff:ffff:ffff:ffff:ffff,SG
@@ -11105,17 +9843,9 @@
2405:2180::,2405:2180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:2200::,2405:2200:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2405:2280::,2405:2280:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2405:2300::,2405:2300:ff01:ffff:ffff:ffff:ffff:ffff,SG
-2405:2300:ff02::,2405:2300:ff02:ffff:ffff:ffff:ffff:ffff,IN
-2405:2300:ff03::,2405:2300:ff04:ffff:ffff:ffff:ffff:ffff,SG
-2405:2300:ff05::,2405:2300:ff05:7fff:ffff:ffff:ffff:ffff,IN
-2405:2300:ff05:8000::,2405:2300:ff05:ffff:ffff:ffff:ffff:ffff,SG
-2405:2300:ff06::,2405:2300:ff06:7fff:ffff:ffff:ffff:ffff,AU
-2405:2300:ff06:8000::,2405:2300:ff06:ffff:ffff:ffff:ffff:ffff,SG
-2405:2300:ff07::,2405:2300:ff07:7fff:ffff:ffff:ffff:ffff,AU
-2405:2300:ff07:8000::,2405:2300:ff09:ffff:ffff:ffff:ffff:ffff,SG
-2405:2300:ff0a::,2405:2300:ff0a:7fff:ffff:ffff:ffff:ffff,AU
-2405:2300:ff0a:8000::,2405:2300:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2405:2300::,2405:2300:feff:ffff:ffff:ffff:ffff:ffff,SG
+2405:2300:ff00::,2405:2300:ff03:ffff:ffff:ffff:ffff:ffff,IN
+2405:2300:ff04::,2405:2300:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:2380::,2405:2380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:2400::,2405:2400:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:2480::,2405:2480:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11244,11 +9974,7 @@
2405:6400::,2405:6400:ffff:ffff:ffff:ffff:ffff:ffff,MY
2405:6480::,2405:6480:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:6500::,2405:6500:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2405:6580::,2405:6581:e3f:ffff:ffff:ffff:ffff:ffff,JP
-2405:6581:e40::,2405:6581:e40:7fff:ffff:ffff:ffff:ffff,US
-2405:6581:e40:8000::,2405:6581:417f:ffff:ffff:ffff:ffff:ffff,JP
-2405:6581:4180::,2405:6581:4180:7fff:ffff:ffff:ffff:ffff,US
-2405:6581:4180:8000::,2405:6587:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:6580::,2405:6587:ffff:ffff:ffff:ffff:ffff:ffff,JP
2405:6600::,2405:6600:ffff:ffff:ffff:ffff:ffff:ffff,NP
2405:6680::,2405:6680:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:6780::,2405:6780:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11402,9 +10128,9 @@
2405:b880::,2405:b880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:b900::,2405:b900:ffff:ffff:ffff:ffff:ffff:ffff,ID
2405:b980::,2405:b980:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2405:ba00::,2405:ba00:8700:ffff:ffff:ffff:ffff:ffff,IN
-2405:ba00:8701::,2405:ba00:8701:7fff:ffff:ffff:ffff:ffff,AU
-2405:ba00:8701:8000::,2405:ba00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:ba00::,2405:ba00:86ff:ffff:ffff:ffff:ffff:ffff,IN
+2405:ba00:8700::,2405:ba00:877f:ffff:ffff:ffff:ffff:ffff,AU
+2405:ba00:8780::,2405:ba00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:ba80::,2405:ba80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:bb00::,2405:bb00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:bb80::,2405:bb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11436,7 +10162,6 @@
2405:c880::,2405:c880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c900::,2405:c900:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:c980::,2405:c980:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2405:ca00::,2405:ca00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2405:ca80::,2405:ca80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:cb00::,2405:cb00:ffff:ffff:ffff:ffff:ffff:ffff,VN
2405:cb80::,2405:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11590,9 +10315,12 @@
2406:1e80::,2406:1e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:1f00::,2406:1f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:1f80::,2406:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:2000::,2406:2000:efb9:ffff:ffff:ffff:ffff:ffff,TW
-2406:2000:efba::,2406:2000:efba:7fff:ffff:ffff:ffff:ffff,HK
-2406:2000:efba:8000::,2406:2000:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000::,2406:2000:ef68:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000:ef69::,2406:2000:ef69:ffff:ffff:ffff:ffff:ffff,SG
+2406:2000:ef6a::,2406:2000:ef6a:ffff:ffff:ffff:ffff:ffff,JP
+2406:2000:ef6b::,2406:2000:efb2:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000:efb3::,2406:2000:efb3:ffff:ffff:ffff:ffff:ffff,SG
+2406:2000:efb4::,2406:2000:ffff:ffff:ffff:ffff:ffff:ffff,TW
2406:2080::,2406:2080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:2100::,2406:2100:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:2180::,2406:2180:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11668,7 +10396,6 @@
2406:4700::,2406:4700:ffff:ffff:ffff:ffff:ffff:ffff,SG
2406:4800::,2406:4800:ffff:ffff:ffff:ffff:ffff:ffff,SG
2406:4880::,2406:4880:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2406:4900::,2406:4900:ffff:ffff:ffff:ffff:ffff:ffff,MY
2406:4980::,2406:4980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:4a00::,2406:4a00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:4a80::,2406:4a80:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -11840,9 +10567,7 @@
2406:a280::,2406:a280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:a300::,2406:a300:ffff:ffff:ffff:ffff:ffff:ffff,ID
2406:a380::,2406:a380:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:a400::,2406:a400::ffff:ffff:ffff:ffff:ffff,SG
-2406:a400:1::,2406:a400:1:7fff:ffff:ffff:ffff:ffff,ID
-2406:a400:1:8000::,2406:a400:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2406:a400::,2406:a400:ffff:ffff:ffff:ffff:ffff:ffff,SG
2406:a480::,2406:a480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:a500::,2406:a500:ffff:ffff:ffff:ffff:ffff:ffff,ID
2406:a580::,2406:a580:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11953,7 +10678,9 @@
2406:da00:2000::,2406:da00:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:da00:2100::,2406:da00:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:da00:4000::,2406:da00:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:da00:4100::,2406:da00:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:4100::,2406:da00:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:da00:6000::,2406:da00:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:da00:6100::,2406:da00:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:da00:8000::,2406:da00:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:da00:8100::,2406:da00:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:da00:a000::,2406:da00:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11963,7 +10690,9 @@
2406:da12::,2406:da12:fff:ffff:ffff:ffff:ffff:ffff,KR
2406:da12:1000::,2406:da13:ffff:ffff:ffff:ffff:ffff:ffff,US
2406:da14::,2406:da14:fff:ffff:ffff:ffff:ffff:ffff,JP
-2406:da14:1000::,2406:da17:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da14:1000::,2406:da15:ffff:ffff:ffff:ffff:ffff:ffff,US
+2406:da16::,2406:da16:fff:ffff:ffff:ffff:ffff:ffff,JP
+2406:da16:1000::,2406:da17:ffff:ffff:ffff:ffff:ffff:ffff,US
2406:da18::,2406:da18:fff:ffff:ffff:ffff:ffff:ffff,SG
2406:da18:1000::,2406:da19:ffff:ffff:ffff:ffff:ffff:ffff,US
2406:da1a::,2406:da1a:fff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11973,7 +10702,9 @@
2406:daa0:2000::,2406:daa0:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:daa0:2100::,2406:daa0:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:daa0:4000::,2406:daa0:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:daa0:4100::,2406:daa0:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:4100::,2406:daa0:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daa0:6000::,2406:daa0:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:daa0:6100::,2406:daa0:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:daa0:8000::,2406:daa0:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:daa0:8100::,2406:daa0:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:daa0:a000::,2406:daa0:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11983,7 +10714,9 @@
2406:daf8:2000::,2406:daf8:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:daf8:2100::,2406:daf8:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf8:4000::,2406:daf8:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:daf8:4100::,2406:daf8:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daf8:4100::,2406:daf8:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daf8:6000::,2406:daf8:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:daf8:6100::,2406:daf8:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf8:8000::,2406:daf8:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:daf8:8100::,2406:daf8:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf8:a000::,2406:daf8:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11993,7 +10726,9 @@
2406:daf9:2000::,2406:daf9:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:daf9:2100::,2406:daf9:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf9:4000::,2406:daf9:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:daf9:4100::,2406:daf9:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daf9:4100::,2406:daf9:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daf9:6000::,2406:daf9:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:daf9:6100::,2406:daf9:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf9:8000::,2406:daf9:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:daf9:8100::,2406:daf9:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:daf9:a000::,2406:daf9:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12003,7 +10738,9 @@
2406:dafa:2000::,2406:dafa:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:dafa:2100::,2406:dafa:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafa:4000::,2406:dafa:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:dafa:4100::,2406:dafa:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafa:4100::,2406:dafa:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafa:6000::,2406:dafa:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:dafa:6100::,2406:dafa:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafa:8000::,2406:dafa:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:dafa:8100::,2406:dafa:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafa:a000::,2406:dafa:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12013,7 +10750,9 @@
2406:dafc:2000::,2406:dafc:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:dafc:2100::,2406:dafc:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafc:4000::,2406:dafc:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:dafc:4100::,2406:dafc:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:4100::,2406:dafc:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafc:6000::,2406:dafc:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:dafc:6100::,2406:dafc:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafc:8000::,2406:dafc:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:dafc:8100::,2406:dafc:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafc:a000::,2406:dafc:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12023,7 +10762,9 @@
2406:dafe:2000::,2406:dafe:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:dafe:2100::,2406:dafe:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafe:4000::,2406:dafe:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:dafe:4100::,2406:dafe:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafe:4100::,2406:dafe:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:dafe:6000::,2406:dafe:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:dafe:6100::,2406:dafe:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafe:8000::,2406:dafe:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:dafe:8100::,2406:dafe:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:dafe:a000::,2406:dafe:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12033,7 +10774,9 @@
2406:daff:2000::,2406:daff:20ff:ffff:ffff:ffff:ffff:ffff,KR
2406:daff:2100::,2406:daff:3fff:ffff:ffff:ffff:ffff:ffff,US
2406:daff:4000::,2406:daff:40ff:ffff:ffff:ffff:ffff:ffff,JP
-2406:daff:4100::,2406:daff:7fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daff:4100::,2406:daff:5fff:ffff:ffff:ffff:ffff:ffff,US
+2406:daff:6000::,2406:daff:60ff:ffff:ffff:ffff:ffff:ffff,JP
+2406:daff:6100::,2406:daff:7fff:ffff:ffff:ffff:ffff:ffff,US
2406:daff:8000::,2406:daff:80ff:ffff:ffff:ffff:ffff:ffff,SG
2406:daff:8100::,2406:daff:9fff:ffff:ffff:ffff:ffff:ffff,US
2406:daff:a000::,2406:daff:a0ff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12064,7 +10807,6 @@
2406:e580::,2406:e580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:e600::,2406:e600:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:e680::,2406:e680:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:e700::,2406:e700:ffff:ffff:ffff:ffff:ffff:ffff,JP
2406:e780::,2406:e780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:e800::,2406:e800:ffff:ffff:ffff:ffff:ffff:ffff,JP
2406:e880::,2406:e880:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -12200,7 +10942,6 @@
2407:2d00::,2407:2d00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2407:2d80::,2407:2d80:ffff:ffff:ffff:ffff:ffff:ffff,TH
2407:2e00::,2407:2e01:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2407:2e80::,2407:2e80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2407:2f00::,2407:2f00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2407:2f80::,2407:2f80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:3000::,2407:3000:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -12244,7 +10985,6 @@
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
-2407:4500::,2407:4500:ffff:ffff:ffff:ffff:ffff:ffff,PK
2407:4580::,2407:4580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:4600::,2407:4600:ffff:ffff:ffff:ffff:ffff:ffff,ID
2407:4680::,2407:4680:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -12268,7 +11008,6 @@
2407:4f80::,2407:4f80:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:5000::,2407:5000:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:5080::,2407:5080:ffff:ffff:ffff:ffff:ffff:ffff,KR
-2407:5100::,2407:5100:ffff:ffff:ffff:ffff:ffff:ffff,JP
2407:5180::,2407:5180:ffff:ffff:ffff:ffff:ffff:ffff,KR
2407:5200::,2407:5200:ffff:ffff:ffff:ffff:ffff:ffff,NP
2407:5280::,2407:5280:ffff:ffff:ffff:ffff:ffff:ffff,NP
@@ -12330,7 +11069,9 @@
2407:6e80::,2407:6e80:ffff:ffff:ffff:ffff:ffff:ffff,MM
2407:6f00::,2407:6f00:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:6f80::,2407:6f80:ffff:ffff:ffff:ffff:ffff:ffff,ID
-2407:7000::,2407:7000:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2407:7000::,2407:7000:963b:ffff:ffff:ffff:ffff:ffff,NZ
+2407:7000:963c::,2407:7000:963f:ffff:ffff:ffff:ffff:ffff,JP
+2407:7000:9640::,2407:7000:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2407:7080::,2407:7080:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:7100::,2407:7100:ffff:ffff:ffff:ffff:ffff:ffff,TW
2407:7180::,2407:7180:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -12544,7 +11285,6 @@
2407:e080::,2407:e080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e100::,2407:e100:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:e180::,2407:e180:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2407:e200::,2407:e200:ffff:ffff:ffff:ffff:ffff:ffff,MY
2407:e280::,2407:e280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e300::,2407:e301:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:e380::,2407:e380:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -12558,7 +11298,6 @@
2407:e780::,2407:e780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e800::,2407:e800:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:e880::,2407:e880:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2407:e900:1::,2407:e900:1:7fff:ffff:ffff:ffff:ffff,IN
2407:e980::,2407:e980:ffff:ffff:ffff:ffff:ffff:ffff,BD
2407:ea00::,2407:ea00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:ea80::,2407:ea80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -12611,83 +11350,23 @@
240a::,240a:7f:ffff:ffff:ffff:ffff:ffff:ffff,JP
240a:4000::,240a:47ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
240a:8000::,240a:87ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
-240b::,240b:11:4180:9fff:ffff:ffff:ffff:ffff,JP
-240b:11:4180:a000::,240b:11:4180:bfff:ffff:ffff:ffff:ffff,US
-240b:11:4180:c000::,240b:11:4a00:8fff:ffff:ffff:ffff:ffff,JP
-240b:11:4a00:9000::,240b:11:4a00:91ff:ffff:ffff:ffff:ffff,US
-240b:11:4a00:9200::,240b:11:519f:ffff:ffff:ffff:ffff:ffff,JP
-240b:11:51a0::,240b:11:51a0:7fff:ffff:ffff:ffff:ffff,US
-240b:11:51a0:8000::,240b:3f:ffff:ffff:ffff:ffff:ffff:ffff,JP
+240b::,240b:10:27ff:ffff:ffff:ffff:ffff:ffff,JP
+240b:10:2800::,240b:10:287f:ffff:ffff:ffff:ffff:ffff,US
+240b:10:2880::,240b:3f:ffff:ffff:ffff:ffff:ffff:ffff,JP
240b:240::,240b:27f:ffff:ffff:ffff:ffff:ffff:ffff,JP
240b:8000::,240b:87ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
240c::,240c:f:ffff:ffff:ffff:ffff:ffff:ffff,CN
240c:8000::,240c:87ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
-240d::,240d:2:410a:7fff:ffff:ffff:ffff:ffff,JP
-240d:2:410a:8000::,240d:2:410a:ffff:ffff:ffff:ffff:ffff,US
-240d:2:410b::,240d:1f:ffff:ffff:ffff:ffff:ffff:ffff,JP
+240d::,240d:1f:ffff:ffff:ffff:ffff:ffff:ffff,JP
240d:8000::,240d:80ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
240e::,240e:fff:ffff:ffff:ffff:ffff:ffff:ffff,CN
-240f::,240f:4:c3db:ffff:ffff:ffff:ffff:ffff,JP
-240f:4:c3dc::,240f:4:c3dc:7fff:ffff:ffff:ffff:ffff,US
-240f:4:c3dc:8000::,240f:6:849:ffff:ffff:ffff:ffff:ffff,JP
-240f:6:84a::,240f:6:84a:7fff:ffff:ffff:ffff:ffff,US
-240f:6:84a:8000::,240f:8:ef3:ffff:ffff:ffff:ffff:ffff,JP
-240f:8:ef4::,240f:8:ef4:7fff:ffff:ffff:ffff:ffff,US
-240f:8:ef4:8000::,240f:14:5ff4:ffff:ffff:ffff:ffff:ffff,JP
-240f:14:5ff5::,240f:14:5ff5:7fff:ffff:ffff:ffff:ffff,GB
-240f:14:5ff5:8000::,240f:31:707d:ffff:ffff:ffff:ffff:ffff,JP
-240f:31:707e::,240f:31:707e:7fff:ffff:ffff:ffff:ffff,GB
-240f:31:707e:8000::,240f:71:978:ffff:ffff:ffff:ffff:ffff,JP
-240f:71:979::,240f:71:979:7fff:ffff:ffff:ffff:ffff,KR
-240f:71:979:8000::,240f:77:1908:ffff:ffff:ffff:ffff:ffff,JP
-240f:77:1909::,240f:77:1909:7fff:ffff:ffff:ffff:ffff,CN
-240f:77:1909:8000::,240f:78:30b1:ffff:ffff:ffff:ffff:ffff,JP
-240f:78:30b2::,240f:78:30b2:7fff:ffff:ffff:ffff:ffff,CN
-240f:78:30b2:8000::,240f:98:8f77:ffff:ffff:ffff:ffff:ffff,JP
-240f:98:8f78::,240f:98:8f78:7fff:ffff:ffff:ffff:ffff,SE
-240f:98:8f78:8000::,240f:b5:2520:ffff:ffff:ffff:ffff:ffff,JP
-240f:b5:2521::,240f:b5:2521:7fff:ffff:ffff:ffff:ffff,US
-240f:b5:2521:8000::,240f:d1:cbc8:ffff:ffff:ffff:ffff:ffff,JP
-240f:d1:cbc9::,240f:d1:cbc9:7fff:ffff:ffff:ffff:ffff,AU
-240f:d1:cbc9:8000::,240f:1ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
+240f::,240f:e3:c57f:ffff:ffff:ffff:ffff:ffff,JP
+240f:e3:c580::,240f:e3:c5ff:ffff:ffff:ffff:ffff:ffff,US
+240f:e3:c600::,240f:1ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
240f:8000::,240f:80ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2600::,2600:1:d000:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d001::,2600:1:d001:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d001:8000::,2600:1:d001:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d002::,2600:1:d002:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d003::,2600:1:d004:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d004:8000::,2600:1:d005:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d005:8000::,2600:1:d006:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d007::,2600:1:d007:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d008::,2600:1:d008:ffff:ffff:ffff:ffff:ffff,VI
-2600:1:d009::,2600:1:d009:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d009:8000::,2600:1:d00a:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d00a:8000::,2600:1:d00a:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d00b::,2600:1:d00b:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d00c::,2600:1:d00c:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d00c:8000::,2600:1:d00d:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d00e::,2600:1:d00e:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d00e:8000::,2600:1:d00e:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d00f::,2600:1:d00f:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d00f:8000::,2600:1:d00f:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d010::,2600:1:d010:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d010:8000::,2600:1:d011:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d011:8000::,2600:1:d012:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d013::,2600:1:d013:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d014::,2600:1:d015:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d015:8000::,2600:1:d016:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d016:8000::,2600:1:d016:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d017::,2600:1:d017:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d018::,2600:1:d018:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d018:8000::,2600:1:d018:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d019::,2600:1:d019:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d019:8000::,2600:1:d019:ffff:ffff:ffff:ffff:ffff,US
-2600:1:d01a::,2600:1:d01a:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d01b::,2600:1:d01c:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d01c:8000::,2600:1:d01d:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:d01d:8000::,2600:1:d01f:7fff:ffff:ffff:ffff:ffff,US
-2600:1:d01f:8000::,2600:1:d01f:ffff:ffff:ffff:ffff:ffff,PR
-2600:1:d020::,2600:7:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600::,2600:1:cfff:ffff:ffff:ffff:ffff:ffff,US
+2600:1:d000::,2600:1:d07f:ffff:ffff:ffff:ffff:ffff,PR
+2600:1:d080::,2600:7:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:100::,2600:10f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:200::,2600:20f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:300::,2600:400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12760,7 +11439,9 @@
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:3000::,2600:3007:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:3100::,2600:310f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3400::,2600:340f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3800::,2600:380f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3c00::,2600:3c03:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12776,24 +11457,31 @@
2600:6400::,2600:640f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:6800::,2600:68ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:6c00::,2600:6cff:ffff:ffff:ffff:ffff:ffff:ffff,US
-2600:7000::,2600:70ff:e810:ffff:ffff:ffff:ffff:ffff,US
-2600:70ff:e811::,2600:70ff:e811:7fff:ffff:ffff:ffff:ffff,ZA
-2600:70ff:e811:8000::,2600:70ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:7000::,2600:70ff:e7ff:ffff:ffff:ffff:ffff:ffff,US
+2600:70ff:e800::,2600:70ff:e87f:ffff:ffff:ffff:ffff:ffff,ZA
+2600:70ff:e880::,2600:70ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:7400::,2600:740f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:7800::,2600:780f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:7c00::,2600:7c0f:ffff:ffff:ffff:ffff:ffff:ffff,LC
2600:8000::,2600:80ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:8400::,2600:840f:ffff:ffff:ffff:ffff:ffff:ffff,BB
-2600:8800::,2600:8802:3802:afff:ffff:ffff:ffff:ffff,US
-2600:8802:3802:b000::,2600:8802:3802:b3ff:ffff:ffff:ffff:ffff,AU
-2600:8802:3802:b400::,2600:880f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:8800::,2600:880f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:8c00::,2600:8c0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:9000::,2600:900f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:a000::,2600:a00f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:a400::,2600:a40f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:b000::,2600:b00f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:b400::,2600:b40f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:e000::,2600:e00f:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2601::,2601:fff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2601::,2601:1c0:ca80:4fff:ffff:ffff:ffff:ffff,US
+2601:1c0:ca80:5000::,2601:1c0:ca80:57ff:ffff:ffff:ffff:ffff,CN
+2601:1c0:ca80:5800::,2601:446:c400:99ff:ffff:ffff:ffff:ffff,US
+2601:446:c400:9a00::,2601:446:c400:9aff:ffff:ffff:ffff:ffff,CN
+2601:446:c400:9b00::,2601:583:4302:7bff:ffff:ffff:ffff:ffff,US
+2601:583:4302:7c00::,2601:583:4302:7cff:ffff:ffff:ffff:ffff,JP
+2601:583:4302:7d00::,2601:646:8881:9bff:ffff:ffff:ffff:ffff,US
+2601:646:8881:9c00::,2601:646:8881:9dff:ffff:ffff:ffff:ffff,CN
+2601:646:8881:9e00::,2601:fff:ffff:ffff:ffff:ffff:ffff:ffff,US
2602::,2602:10f:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:200::,2602:200:ffff:ffff:ffff:ffff:ffff:ffff,CA
2602:210::,2602:210:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -12802,6 +11490,69 @@
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:fe64::,2602:fe64:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe65::,2602:fe65:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe66::,2602:fe66:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe67::,2602:fe67:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe68::,2602:fe68:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe69::,2602:fe69:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe6a::,2602:fe6a:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe6b::,2602:fe6b:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe6c::,2602:fe6c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe6d::,2602:fe6d:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe6e::,2602:fe6e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe6f::,2602:fe6f:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe70::,2602:fe70:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe71::,2602:fe71:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe72::,2602:fe72:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe73::,2602:fe73:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe74::,2602:fe74:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe75::,2602:fe75:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe76::,2602:fe76:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe77::,2602:fe77:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe78::,2602:fe78:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe79::,2602:fe79:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7a::,2602:fe7a:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7b::,2602:fe7b:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7c::,2602:fe7c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7d::,2602:fe7d:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7e::,2602:fe7e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe7f::,2602:fe7f:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe80::,2602:fe80:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe81::,2602:fe81:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe82::,2602:fe82:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe83::,2602:fe83:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe84::,2602:fe84:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe85::,2602:fe85:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe86::,2602:fe86:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe87::,2602:fe87:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe88::,2602:fe88:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe89::,2602:fe89:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe8a::,2602:fe8a:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe8b::,2602:fe8b:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe8c::,2602:fe8c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe8d::,2602:fe8d:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe8e::,2602:fe8e:fff:ffff:ffff:ffff:ffff:ffff,LC
+2602:fe8f::,2602:fe8f:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe90::,2602:fe90:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe91::,2602:fe91:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe92::,2602:fe92:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe93::,2602:fe93:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe94::,2602:fe94:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe95::,2602:fe95:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe96::,2602:fe96:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe97::,2602:fe97:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe98::,2602:fe98:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe99::,2602:fe99:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe9a::,2602:fe9a:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe9b::,2602:fe9b:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe9c::,2602:fe9c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe9d::,2602:fe9d:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe9e::,2602:fe9e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe9f::,2602:fe9f:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fea0::,2602:fea0:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fea1::,2602:fea1:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fea2::,2602:fea2:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fea3::,2602:fea3:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fea4::,2602:fea4:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fea5::,2602:fea5:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -12920,7 +11671,6 @@
2602:ff28::,2602:ff28:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff29::,2602:ff29:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2a::,2602:ff2b:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff2c::,2602:ff2c:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2d::,2602:ff2d:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2e::,2602:ff2e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2f::,2602:ff2f:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -12938,9 +11688,7 @@
2602:ff3b::,2602:ff3b:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff3c::,2602:ff3c:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff3d::,2602:ff3d:fff:ffff:ffff:ffff:ffff:ffff,CA
-2602:ff3e::,2602:ff3e:7ff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff3e:800::,2602:ff3e:800:7fff:ffff:ffff:ffff:ffff,IN
-2602:ff3e:800:8000::,2602:ff3e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff3e::,2602:ff3e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff3f::,2602:ff3f:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff40::,2602:ff40:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff41::,2602:ff41:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -13022,7 +11770,7 @@
2602:ff90::,2602:ff90:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff91::,2602:ff91:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff92::,2602:ff92:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff93::,2602:ff93:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:ff93::,2602:ff93:ffff:ffff:ffff:ffff:ffff:ffff,CA
2602:ff94::,2602:ff94:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff95::,2602:ff95:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff96::,2602:ff97:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -13064,7 +11812,7 @@
2602:ffbe::,2602:ffbe:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ffbf::,2602:ffbf:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc0::,2602:ffc0:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ffc1::,2602:ffc1:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:ffc1::,2602:ffc1:ffff:ffff:ffff:ffff:ffff:ffff,CA
2602:ffc2::,2602:ffc2:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc3::,2602:ffc3:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffc4::,2602:ffc4:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -13088,7 +11836,6 @@
2602:ffd7::,2602:ffd7:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffd8::,2602:ffd8:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffd9::,2602:ffd9:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ffda:aaa::,2602:ffda:aaa:7fff:ffff:ffff:ffff:ffff,NL
2602:ffdb::,2602:ffdb:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffdc::,2602:ffdc:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffdd::,2602:ffdd:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -13101,12 +11848,9 @@
2602:ffe4::,2602:ffe4:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffe5::,2602:ffe5:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffe7::,2602:ffe7:fff:ffff:ffff:ffff:ffff:ffff,PR
-2602:ffe8::,2602:ffe8:3ff:ffff:ffff:ffff:ffff:ffff,US
2602:ffe8:400::,2602:ffe8:4ff:ffff:ffff:ffff:ffff:ffff,AU
-2602:ffe8:500::,2602:ffe8:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:ffea::,2602:ffeb:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffec::,2602:ffec:fff:ffff:ffff:ffff:ffff:ffff,CA
-2602:ffed::,2602:ffed:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffee::,2602:ffee:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffef::,2602:ffef:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fff0::,2602:fff0:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -13123,9 +11867,21 @@
2602:fffc::,2602:fffc:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:fffd::,2602:fffd:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ffff::,2602:ffff:fff:ffff:ffff:ffff:ffff:ffff,US
-2603::,2603:100f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603::,2603:1005:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1006::,2603:1006::3:ffff:ffff:ffff:ffff,ZA
+2603:1006:0:4::,2603:1006::ffff:ffff:ffff:ffff:ffff,US
+2603:1006:1::,2603:1006:1:7ff:ffff:ffff:ffff:ffff,ZA
+2603:1006:1:800::,2603:1006:1:ffff:ffff:ffff:ffff:ffff,US
+2603:1006:2::,2603:1006:2:7ff:ffff:ffff:ffff:ffff,ZA
+2603:1006:2:800::,2603:1006:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1007::,2603:1007::ffff:ffff:ffff:ffff:ffff,ZA
+2603:1007:1::,2603:1007:ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1007:100::,2603:1007:101:ffff:ffff:ffff:ffff:ffff,ZA
+2603:1007:102::,2603:100f:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1010::,2603:1010:2ff:ffff:ffff:ffff:ffff:ffff,AU
-2603:1010:300::,2603:1015:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1010:300::,2603:1010:3ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1010:400::,2603:1010:4ff:ffff:ffff:ffff:ffff:ffff,AU
+2603:1010:500::,2603:1015:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1016::,2603:1016:f:ffff:ffff:ffff:ffff:ffff,AU
2603:1016:10::,2603:1016:1f:ffff:ffff:ffff:ffff:ffff,US
2603:1016:20::,2603:1016:29:ffff:ffff:ffff:ffff:ffff,AU
@@ -13133,8 +11889,12 @@
2603:1016:200::,2603:1016:201:3f:ffff:ffff:ffff:ffff,AU
2603:1016:201:40::,2603:1016:227:ffff:ffff:ffff:ffff:ffff,US
2603:1016:228::,2603:1016:228:ffff:ffff:ffff:ffff:ffff,AU
-2603:1016:229::,2603:1016:fff:ffff:ffff:ffff:ffff:ffff,US
-2603:1016:1000::,2603:1016:13ff:ffff:ffff:ffff:ffff:ffff,AU
+2603:1016:229::,2603:1016:400:ffff:ffff:ffff:ffff:ffff,US
+2603:1016:401::,2603:1016:402:ffff:ffff:ffff:ffff:ffff,AU
+2603:1016:403::,2603:1016:fff:ffff:ffff:ffff:ffff:ffff,US
+2603:1016:1000::,2603:1016:11ff:ffff:ffff:ffff:ffff:ffff,AU
+2603:1016:1200::,2603:1016:12ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1016:1300::,2603:1016:13ff:ffff:ffff:ffff:ffff:ffff,AU
2603:1016:1400::,2603:1018:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1019::,2603:1019:100:ffff:ffff:ffff:ffff:ffff,AU
2603:1019:101::,2603:1019:1ff:ffff:ffff:ffff:ffff:ffff,US
@@ -13147,7 +11907,8 @@
2603:1020:500::,2603:1020:5ff:ffff:ffff:ffff:ffff:ffff,FI
2603:1020:600::,2603:1020:7ff:ffff:ffff:ffff:ffff:ffff,GB
2603:1020:800::,2603:1020:9ff:ffff:ffff:ffff:ffff:ffff,FR
-2603:1020:a00::,2603:1023:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1020:a00::,2603:1020:aff:ffff:ffff:ffff:ffff:ffff,CH
+2603:1020:b00::,2603:1023:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1024::,2603:1024:ff:ffff:ffff:ffff:ffff:ffff,IE
2603:1024:100::,2603:1025:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1026::,2603:1026:2:ffff:ffff:ffff:ffff:ffff,IE
@@ -13178,7 +11939,10 @@
2603:1026:720::,2603:1026:72f:ffff:ffff:ffff:ffff:ffff,FR
2603:1026:730::,2603:1026:7ff:ffff:ffff:ffff:ffff:ffff,US
2603:1026:800::,2603:1026:8ff:ffff:ffff:ffff:ffff:ffff,GB
-2603:1026:900::,2603:1026:c00:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:900::,2603:1026:bff:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:c00::,2603:1026:c00:1:ffff:ffff:ffff:ffff,GB
+2603:1026:c00:2::,2603:1026:c00:3:ffff:ffff:ffff:ffff,NL
+2603:1026:c00:4::,2603:1026:c00:ffff:ffff:ffff:ffff:ffff,US
2603:1026:c01::,2603:1026:c01:ffff:ffff:ffff:ffff:ffff,AT
2603:1026:c02::,2603:1026:c02:ffff:ffff:ffff:ffff:ffff,IE
2603:1026:c03::,2603:1026:c03:ffff:ffff:ffff:ffff:ffff,NL
@@ -13189,7 +11953,10 @@
2603:1026:1000::,2603:1026:10ff:ffff:ffff:ffff:ffff:ffff,IE
2603:1026:1100::,2603:1026:12ff:ffff:ffff:ffff:ffff:ffff,FR
2603:1026:1300::,2603:1026:13ff:ffff:ffff:ffff:ffff:ffff,NL
-2603:1026:1400::,2603:1027::1:ffff:ffff:ffff:ffff,US
+2603:1026:1400::,2603:1026:14ff:ffff:ffff:ffff:ffff:ffff,FI
+2603:1026:1500::,2603:1026:16ff:ffff:ffff:ffff:ffff:ffff,GB
+2603:1026:1700::,2603:1026:17ff:ffff:ffff:ffff:ffff:ffff,AT
+2603:1026:1800::,2603:1027::1:ffff:ffff:ffff:ffff,US
2603:1027:0:2::,2603:1027::3:ffff:ffff:ffff:ffff,NL
2603:1027:0:4::,2603:1027::4:ffff:ffff:ffff:ffff,IE
2603:1027:0:5::,2603:1027::5:ffff:ffff:ffff:ffff,US
@@ -13231,9 +11998,13 @@
2603:1030:208::,2603:1030:20b:ffff:ffff:ffff:ffff:ffff,CA
2603:1030:20c::,2603:1030:eff:ffff:ffff:ffff:ffff:ffff,US
2603:1030:f00::,2603:1030:10ff:ffff:ffff:ffff:ffff:ffff,CA
-2603:1030:1100::,2603:1036:aff:ffff:ffff:ffff:ffff:ffff,US
+2603:1030:1100::,2603:1036:308:ffff:ffff:ffff:ffff:ffff,US
+2603:1036:309::,2603:1036:30a:ffff:ffff:ffff:ffff:ffff,CA
+2603:1036:30b::,2603:1036:aff:ffff:ffff:ffff:ffff:ffff,US
2603:1036:b00::,2603:1036:cff:ffff:ffff:ffff:ffff:ffff,CA
-2603:1036:d00::,2603:1037::d:ffff:ffff:ffff:ffff,US
+2603:1036:d00::,2603:1036:17ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1036:1800::,2603:1036:19ff:ffff:ffff:ffff:ffff:ffff,CA
+2603:1036:1a00::,2603:1037::d:ffff:ffff:ffff:ffff,US
2603:1037:0:e::,2603:1037::f:ffff:ffff:ffff:ffff,CA
2603:1037:0:10::,2603:1037::8d:ffff:ffff:ffff:ffff,US
2603:1037:0:8e::,2603:1037::8f:ffff:ffff:ffff:ffff,CA
@@ -13241,8 +12012,7 @@
2603:1039:e00::,2603:1039:eff:ffff:ffff:ffff:ffff:ffff,CA
2603:1039:f00::,2603:1039:fff:ffff:ffff:ffff:ffff:ffff,US
2603:1039:1000::,2603:1039:10ff:ffff:ffff:ffff:ffff:ffff,CA
-2603:1039:1100::,2603:1039:1100:ffff:ffff:ffff:ffff:ffff,PR
-2603:1039:1101::,2603:103f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1039:1100::,2603:103f:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1040::,2603:1040:ff:ffff:ffff:ffff:ffff:ffff,SG
2603:1040:100::,2603:1040:1ff:ffff:ffff:ffff:ffff:ffff,MY
2603:1040:200::,2603:1040:2ff:ffff:ffff:ffff:ffff:ffff,HK
@@ -13252,9 +12022,9 @@
2603:1040:600::,2603:1040:6ff:ffff:ffff:ffff:ffff:ffff,JP
2603:1040:700::,2603:1040:7ff:ffff:ffff:ffff:ffff:ffff,US
2603:1040:800::,2603:1040:8ff:ffff:ffff:ffff:ffff:ffff,IN
-2603:1040:900::,2603:1040:9ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1040:900::,2603:1040:9ff:ffff:ffff:ffff:ffff:ffff,AE
2603:1040:a00::,2603:1040:aff:ffff:ffff:ffff:ffff:ffff,IN
-2603:1040:b00::,2603:1040:bff:ffff:ffff:ffff:ffff:ffff,US
+2603:1040:b00::,2603:1040:bff:ffff:ffff:ffff:ffff:ffff,AE
2603:1040:c00::,2603:1040:cff:ffff:ffff:ffff:ffff:ffff,IN
2603:1040:d00::,2603:1040:dff:ffff:ffff:ffff:ffff:ffff,US
2603:1040:e00::,2603:1040:fff:ffff:ffff:ffff:ffff:ffff,KR
@@ -13283,7 +12053,17 @@
2603:1046:82b::,2603:1046:82b:ffff:ffff:ffff:ffff:ffff,KR
2603:1046:82c::,2603:1046:8ff:ffff:ffff:ffff:ffff:ffff,US
2603:1046:900::,2603:1046:9ff:ffff:ffff:ffff:ffff:ffff,IN
-2603:1046:a00::,2603:1046:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1046:a00::,2603:1046:bff:ffff:ffff:ffff:ffff:ffff,US
+2603:1046:c00::,2603:1046:c00:1:ffff:ffff:ffff:ffff,HK
+2603:1046:c00:2::,2603:1046:c00:3:ffff:ffff:ffff:ffff,JP
+2603:1046:c00:4::,2603:1046:c00:ffff:ffff:ffff:ffff:ffff,US
+2603:1046:c01::,2603:1046:c01:ffff:ffff:ffff:ffff:ffff,SG
+2603:1046:c02::,2603:1046:c02:ffff:ffff:ffff:ffff:ffff,HK
+2603:1046:c03::,2603:1046:c03:ffff:ffff:ffff:ffff:ffff,MY
+2603:1046:c04::,2603:1046:c06:ffff:ffff:ffff:ffff:ffff,IN
+2603:1046:c07::,2603:1046:c08:ffff:ffff:ffff:ffff:ffff,KR
+2603:1046:c09::,2603:1046:c0a:ffff:ffff:ffff:ffff:ffff,JP
+2603:1046:c0b::,2603:1046:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1047::,2603:1047::ffff:ffff:ffff:ffff,KR
2603:1047:0:1::,2603:1047::1:ffff:ffff:ffff:ffff,HK
2603:1047:0:2::,2603:1047::3:ffff:ffff:ffff:ffff,SG
@@ -13336,7 +12116,9 @@
2603:1047:200::,2603:1047:2ff:ffff:ffff:ffff:ffff:ffff,HK
2603:1047:300::,2603:1047:4ff:ffff:ffff:ffff:ffff:ffff,JP
2603:1047:500::,2603:1047:5ff:ffff:ffff:ffff:ffff:ffff,KR
-2603:1047:600::,2603:1048:ffff:ffff:ffff:ffff:ffff:ffff,US
+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: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
@@ -13377,7 +12159,10 @@
2603:1056:c01:1000::,2603:1056:c01:ffff:ffff:ffff:ffff:ffff,US
2603:1056:c02::,2603:1056:c03:ffff:ffff:ffff:ffff:ffff,BR
2603:1056:c04::,2603:1056:c04:ffff:ffff:ffff:ffff:ffff,CL
-2603:1056:c05::,2603:1057:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1056:c05::,2603:1057:ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1057:100::,2603:1057:1ff:ffff:ffff:ffff:ffff:ffff,BR
+2603:1057:200::,2603:1057:2ff:ffff:ffff:ffff:ffff:ffff,CL
+2603:1057:300::,2603:1057:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1058::,2603:1058:1f:ffff:ffff:ffff:ffff:ffff,CL
2603:1058:20::,2603:1058:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1059::,2603:1059::ffff:ffff:ffff:ffff:ffff,BR
@@ -13397,6 +12182,7 @@
2603:8000::,2603:80ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:9000::,2603:90ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:a000::,2603:a0ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:b000::,2603:b0ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2604::,2604::ffff:ffff:ffff:ffff:ffff:ffff,US
2604:10::,2604:10:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:50::,2604:50:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13518,14 +12304,12 @@
2604:1e00::,2604:1e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:1e40::,2604:1e40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:1e80::,2604:1e80:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2604:1ec0::,2604:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:1ec0::,2604:1ec0:fff:ffff:ffff:ffff:ffff:ffff,CA
2604:1f00::,2604:1f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:1f40::,2604:1f40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:1f80::,2604:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:1fc0::,2604:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:2000::,2604:2000:9143:1fff:ffff:ffff:ffff:ffff,US
-2604:2000:9143:2000::,2604:2000:9143:2fff:ffff:ffff:ffff:ffff,NL
-2604:2000:9143:3000::,2604:2000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:2000::,2604:2000:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:2040::,2604:2040:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:2080::,2604:2080:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:20c0::,2604:20c0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13772,7 +12556,9 @@
2604:5f40::,2604:5f40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5f80::,2604:5f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5fc0::,2604:5fc0:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:6000::,2604:6000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:6000::,2604:6000:e541:ffff:ffff:ffff:ffff:ffff,US
+2604:6000:e542::,2604:6000:e542:7fff:ffff:ffff:ffff:ffff,CN
+2604:6000:e542:8000::,2604:6000:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:6040::,2604:6040:fff:ffff:ffff:ffff:ffff:ffff,US
2604:6080::,2604:6080:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:60c0::,2604:60c0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13858,7 +12644,7 @@
2604:7540::,2604:7540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7580::,2604:7580:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:75c0::,2604:75c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2604:7600::,2604:7600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:7600::,2604:760f:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7640::,2604:7640:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7680::,2604:7680:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:76c0::,2604:76c0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13888,7 +12674,6 @@
2604:7cc0::,2604:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7d40::,2604:7d40:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:7d80::,2604:7d80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:7dc0::,2604:7dc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7e00::,2604:7e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7e40::,2604:7e40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:7e80::,2604:7e80:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13923,7 +12708,7 @@
2604:85c0::,2604:85c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8600::,2604:8600:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:8640::,2604:8640:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:86c0::,2604:86c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:86c0::,2604:86c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8700::,2604:8700:fff:ffff:ffff:ffff:ffff:ffff,US
2604:8740::,2604:8740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8780::,2604:8780:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13938,7 +12723,6 @@
2604:89c0::,2604:89c0:ffff:ffff:ffff:ffff:ffff:ffff,PR
2604:8a00::,2604:8a00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8a40::,2604:8a40:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:8a80::,2604:8a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8ac0::,2604:8ac0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8b00::,2604:8b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8b40::,2604:8b40:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13968,141 +12752,405 @@
2604:9180::,2604:9180:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:91c0::,2604:91c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9200::,2604:9200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9240::,2604:9240:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9280::,2604:9280:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:92c0::,2604:92c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9300::,2604:9300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9340::,2604:9340:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9380::,2604:9380:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:93c0::,2604:93c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9440::,2604:9440:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9480::,2604:9480:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:94c0::,2604:94c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9500::,2604:9500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9540::,2604:9540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9580::,2604:9580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:95c0::,2604:95c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9600::,2604:9600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9640::,2604:9640:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:96c0::,2604:96c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9700::,2604:9700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9740::,2604:9740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9780::,2604:9780:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:97c0::,2604:97c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9800::,2604:9800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9840::,2604:9840:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9880::,2604:9880:fff:ffff:ffff:ffff:ffff:ffff,CA
+2604:98c0::,2604:98c0:ffff:ffff:ffff:ffff:ffff:ffff,PR
2604:9900::,2604:9900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9940::,2604:9940:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9980::,2604:9980:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:99c0::,2604:99c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9a00::,2604:9a00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9a40::,2604:9a40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9a80::,2604:9a80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9ac0::,2604:9ac0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9b00::,2604:9b00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9b40::,2604:9b40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9b80::,2604:9b80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9bc0::,2604:9bc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9c00::,2604:9c00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9c40::,2604:9c40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9c80::,2604:9c80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9cc0::,2604:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9d00::,2604:9d00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9d40::,2604:9d40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9d80::,2604:9d80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9dc0::,2604:9dc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9e00::,2604:9e0f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9e40::,2604:9e40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9e80::,2604:9e80:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:9ec0::,2604:9ec0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9f00::,2604:9f00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9f40::,2604:9f40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:9f80::,2604:9f80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:9fc0::,2604:9fc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a000::,2604:a000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a040::,2604:a040:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a080::,2604:a080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a0c0::,2604:a0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a100::,2604:a100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a140::,2604:a140:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a180::,2604:a180:ffff:ffff:ffff:ffff:ffff:ffff,BB
+2604:a1c0::,2604:a1c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a200::,2604:a200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a240::,2604:a240:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a280::,2604:a280:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:a2c0::,2604:a2c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a300::,2604:a300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a340::,2604:a340:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a3c0::,2604:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:a400::,2604:a400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a440::,2604:a440:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a480::,2604:a480:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a4c0::,2604:a4c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a540::,2604:a540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a580::,2604:a580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a5c0::,2604:a5c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:a600::,2604:a600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a640::,2604:a640:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:a680::,2604:a680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a6c0::,2604:a6c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a700::,2604:a700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a740::,2604:a740:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:a780::,2604:a780:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a7c0::,2604:a7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a800::,2604:a800:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:a880::,2604:a880:cac:ffff:ffff:ffff:ffff:ffff,US
-2604:a880:cad::,2604:a880:cad:7fff:ffff:ffff:ffff:ffff,CA
-2604:a880:cad:8000::,2604:a880: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: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
2604:a980::,2604:a980:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a9c0::,2604:a9c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:aa00::,2604:aa00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:aa40::,2604:aa40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:aa80::,2604:aa80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:aac0::,2604:aac0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ab00::,2604:ab00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ab40::,2604:ab40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ab80::,2604:ab80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:abc0::,2604:abc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ac00::,2604:ac00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ac40::,2604:ac40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ac80::,2604:ac80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:acc0::,2604:acc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ad00::,2604:ad00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ad40::,2604:ad40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ad80::,2604:ad80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:adc0::,2604:adc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ae00::,2604:ae00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ae40::,2604:ae40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ae80::,2604:ae80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:aec0::,2604:aec0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:af00::,2604:af00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:af40::,2604:af40:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:af80::,2604:af80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:afc0::,2604:afc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b000::,2604:b000:ffff:ffff:ffff:ffff:ffff:ffff,PR
+2604:b040::,2604:b040:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b080::,2604:b080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b0c0::,2604:b0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b100::,2604:b100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b140::,2604:b140:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b180::,2604:b180:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b1c0::,2604:b1c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b200::,2604:b200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b240::,2604:b240:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b280::,2604:b280:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:b2c0::,2604:b2c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b300::,2604:b300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b340::,2604:b340:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:b380::,2604:b380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b3c0::,2604:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b400::,2604:b400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b440::,2604:b440:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b480::,2604:b480:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b4c0::,2604:b4c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b500::,2604:b500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b540::,2604:b540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b580::,2604:b580:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:b600::,2604:b600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b5c0::,2604:b5c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b640::,2604:b640:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b680::,2604:b680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b6c0::,2604:b6c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b700::,2604:b700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b740::,2604:b740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b780::,2604:b780:fff:ffff:ffff:ffff:ffff:ffff,US
+2604:b7c0::,2604:b7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b800::,2604:b800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b840::,2604:b840:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b880::,2604:b880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b8c0::,2604:b8c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b900::,2604:b900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b940::,2604:b940:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b980::,2604:b980:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:b9c0::,2604:b9c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ba00::,2604:ba00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ba40::,2604:ba40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ba80::,2604:ba80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bac0::,2604:bac0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:bb00::,2604:bb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bb40::,2604:bb40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:bb80::,2604:bb80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bbc0::,2604:bbc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:bc00::,2604:bc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bc40::,2604:bc40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:bc80::,2604:bc80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bcc0::,2604:bcc0:ffff:ffff:ffff:ffff:ffff:ffff,LC
2604:bd00::,2604:bd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bd40::,2604:bd40:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bdc0::,2604:bdc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:be00::,2604:be00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:be40::,2604:be40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:be80::,2604:be80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bec0::,2604:bec0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:bf00::,2604:bf00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bf40::,2604:bf40:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:bf80::,2604:bf80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:bfc0::,2604:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c000::,2604:c000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c040::,2604:c040:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c080::,2604:c080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c0c0::,2604:c0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c100::,2604:c100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c140::,2604:c140:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c180::,2604:c180:ffff:ffff:ffff:ffff:ffff:ffff,VI
+2604:c1c0::,2604:c1c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c200::,2604:c200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c240::,2604:c240:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c2c0::,2604:c2c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:c300::,2604:c300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c340::,2604:c340:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c380::,2604:c380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c3c0::,2604:c3c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c400::,2604:c400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c440::,2604:c440:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:c4c0::,2604:c4c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:c500::,2604:c500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c540::,2604:c540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c580::,2604:c580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c5c0::,2604:c5c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c600::,2604:c600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c640::,2604:c640:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c680::,2604:c680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c6c0::,2604:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c700::,2604:c700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c740::,2604:c740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c780::,2604:c780:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c7c0::,2604:c7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c800::,2604:c800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c840::,2604:c840:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:c880::,2604:c880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c8c0::,2604:c8c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:c900::,2604:c900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c940::,2604:c940:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c980::,2604:c980:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:ca00::,2604:ca00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:c9c0::,2604:c9c0:ffff:ffff:ffff:ffff:ffff:ffff,JM
+2604:ca00::,2604:ca00:100:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:101::,2604:ca00:101:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:102::,2604:ca00:102:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:103::,2604:ca00:103:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:104::,2604:ca00:104:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:105::,2604:ca00:105:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:106::,2604:ca00:110:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:111::,2604:ca00:111:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:112::,2604:ca00:112:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:113::,2604:ca00:113:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:114::,2604:ca00:114:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:115::,2604:ca00:115:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:116::,2604:ca00:120:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:121::,2604:ca00:121:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:122::,2604:ca00:122:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:123::,2604:ca00:123:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:124::,2604:ca00:124:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:125::,2604:ca00:125:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:126::,2604:ca00:130:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:131::,2604:ca00:131:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:132::,2604:ca00:132:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:133::,2604:ca00:133:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:134::,2604:ca00:134:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:135::,2604:ca00:135:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:136::,2604:ca00:140:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:141::,2604:ca00:141:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:142::,2604:ca00:142:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:143::,2604:ca00:143:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:144::,2604:ca00:144:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:145::,2604:ca00:145:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:146::,2604:ca00:150:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:151::,2604:ca00:151:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:152::,2604:ca00:152:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:153::,2604:ca00:153:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:154::,2604:ca00:154:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:155::,2604:ca00:155:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:156::,2604:ca00:160:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:161::,2604:ca00:161:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:162::,2604:ca00:162:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:163::,2604:ca00:163:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:164::,2604:ca00:164:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:165::,2604:ca00:165:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:166::,2604:ca00:170:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:171::,2604:ca00:171:ffff:ffff:ffff:ffff:ffff,CA
+2604:ca00:172::,2604:ca00:172:ffff:ffff:ffff:ffff:ffff,MX
+2604:ca00:173::,2604:ca00:173:ffff:ffff:ffff:ffff:ffff,PR
+2604:ca00:174::,2604:ca00:174:ffff:ffff:ffff:ffff:ffff,VI
+2604:ca00:175::,2604:ca00:175:ffff:ffff:ffff:ffff:ffff,UM
+2604:ca00:176::,2604:ca00:17f:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:180::,2604:ca00:180:7fff:ffff:ffff:ffff:ffff,DE
+2604:ca00:180:8000::,2604:ca00:180:ffff:ffff:ffff:ffff:ffff,FR
+2604:ca00:181::,2604:ca00:181:7fff:ffff:ffff:ffff:ffff,GB
+2604:ca00:181:8000::,2604:ca00:181:ffff:ffff:ffff:ffff:ffff,IT
+2604:ca00:182::,2604:ca00:182:7fff:ffff:ffff:ffff:ffff,ES
+2604:ca00:182:8000::,2604:ca00:182:ffff:ffff:ffff:ffff:ffff,NL
+2604:ca00:183::,2604:ca00:183:7fff:ffff:ffff:ffff:ffff,BE
+2604:ca00:183:8000::,2604:ca00:183:ffff:ffff:ffff:ffff:ffff,GR
+2604:ca00:184::,2604:ca00:184:7fff:ffff:ffff:ffff:ffff,PT
+2604:ca00:184:8000::,2604:ca00:184:ffff:ffff:ffff:ffff:ffff,SE
+2604:ca00:185::,2604:ca00:185:7fff:ffff:ffff:ffff:ffff,AT
+2604:ca00:185:8000::,2604:ca00:185:ffff:ffff:ffff:ffff:ffff,CH
+2604:ca00:186::,2604:ca00:186:7fff:ffff:ffff:ffff:ffff,DK
+2604:ca00:186:8000::,2604:ca00:186:ffff:ffff:ffff:ffff:ffff,FI
+2604:ca00:187::,2604:ca00:187:7fff:ffff:ffff:ffff:ffff,NO
+2604:ca00:187:8000::,2604:ca00:187:ffff:ffff:ffff:ffff:ffff,IE
+2604:ca00:188::,2604:ca00:188:7fff:ffff:ffff:ffff:ffff,IS
+2604:ca00:188:8000::,2604:ca00:188:ffff:ffff:ffff:ffff:ffff,FO
+2604:ca00:189::,2604:ca00:18f:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:190::,2604:ca00:190:7fff:ffff:ffff:ffff:ffff,DE
+2604:ca00:190:8000::,2604:ca00:190:ffff:ffff:ffff:ffff:ffff,FR
+2604:ca00:191::,2604:ca00:191:7fff:ffff:ffff:ffff:ffff,GB
+2604:ca00:191:8000::,2604:ca00:191:ffff:ffff:ffff:ffff:ffff,IT
+2604:ca00:192::,2604:ca00:192:7fff:ffff:ffff:ffff:ffff,ES
+2604:ca00:192:8000::,2604:ca00:192:ffff:ffff:ffff:ffff:ffff,NL
+2604:ca00:193::,2604:ca00:193:7fff:ffff:ffff:ffff:ffff,BE
+2604:ca00:193:8000::,2604:ca00:193:ffff:ffff:ffff:ffff:ffff,GR
+2604:ca00:194::,2604:ca00:194:7fff:ffff:ffff:ffff:ffff,PT
+2604:ca00:194:8000::,2604:ca00:194:ffff:ffff:ffff:ffff:ffff,SE
+2604:ca00:195::,2604:ca00:195:7fff:ffff:ffff:ffff:ffff,AT
+2604:ca00:195:8000::,2604:ca00:195:ffff:ffff:ffff:ffff:ffff,CH
+2604:ca00:196::,2604:ca00:196:7fff:ffff:ffff:ffff:ffff,DK
+2604:ca00:196:8000::,2604:ca00:196:ffff:ffff:ffff:ffff:ffff,FI
+2604:ca00:197::,2604:ca00:197:7fff:ffff:ffff:ffff:ffff,NO
+2604:ca00:197:8000::,2604:ca00:197:ffff:ffff:ffff:ffff:ffff,IE
+2604:ca00:198::,2604:ca00:198:7fff:ffff:ffff:ffff:ffff,IS
+2604:ca00:198:8000::,2604:ca00:198:ffff:ffff:ffff:ffff:ffff,FO
+2604:ca00:199::,2604:ca00:19f:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:1a0::,2604:ca00:1a0:7fff:ffff:ffff:ffff:ffff,AT
+2604:ca00:1a0:8000::,2604:ca00:1a0:ffff:ffff:ffff:ffff:ffff,BE
+2604:ca00:1a1::,2604:ca00:1a1:7fff:ffff:ffff:ffff:ffff,CH
+2604:ca00:1a1:8000::,2604:ca00:1a1:ffff:ffff:ffff:ffff:ffff,DE
+2604:ca00:1a2::,2604:ca00:1a2:7fff:ffff:ffff:ffff:ffff,DK
+2604:ca00:1a2:8000::,2604:ca00:1a2:ffff:ffff:ffff:ffff:ffff,ES
+2604:ca00:1a3::,2604:ca00:1a3:7fff:ffff:ffff:ffff:ffff,FI
+2604:ca00:1a3:8000::,2604:ca00:1a3:ffff:ffff:ffff:ffff:ffff,FO
+2604:ca00:1a4::,2604:ca00:1a4:7fff:ffff:ffff:ffff:ffff,FR
+2604:ca00:1a4:8000::,2604:ca00:1a4:ffff:ffff:ffff:ffff:ffff,GB
+2604:ca00:1a5::,2604:ca00:1a5:7fff:ffff:ffff:ffff:ffff,GR
+2604:ca00:1a5:8000::,2604:ca00:1a5:ffff:ffff:ffff:ffff:ffff,IE
+2604:ca00:1a6::,2604:ca00:1a6:7fff:ffff:ffff:ffff:ffff,IS
+2604:ca00:1a6:8000::,2604:ca00:1a6:ffff:ffff:ffff:ffff:ffff,IT
+2604:ca00:1a7::,2604:ca00:1a7:7fff:ffff:ffff:ffff:ffff,NL
+2604:ca00:1a7:8000::,2604:ca00:1a7:ffff:ffff:ffff:ffff:ffff,NO
+2604:ca00:1a8::,2604:ca00:1a8:7fff:ffff:ffff:ffff:ffff,PT
+2604:ca00:1a8:8000::,2604:ca00:1a8:ffff:ffff:ffff:ffff:ffff,SE
+2604:ca00:1a9::,2604:ca00:1af:ffff:ffff:ffff:ffff:ffff,US
+2604:ca00:1b0::,2604:ca00:1b0:7fff:ffff:ffff:ffff:ffff,AT
+2604:ca00:1b0:8000::,2604:ca00:1b0:ffff:ffff:ffff:ffff:ffff,BE
+2604:ca00:1b1::,2604:ca00:1b1:7fff:ffff:ffff:ffff:ffff,CH
+2604:ca00:1b1:8000::,2604:ca00:1b1:ffff:ffff:ffff:ffff:ffff,DE
+2604:ca00:1b2::,2604:ca00:1b2:7fff:ffff:ffff:ffff:ffff,DK
+2604:ca00:1b2:8000::,2604:ca00:1b2:ffff:ffff:ffff:ffff:ffff,ES
+2604:ca00:1b3::,2604:ca00:1b3:7fff:ffff:ffff:ffff:ffff,FI
+2604:ca00:1b3:8000::,2604:ca00:1b3:ffff:ffff:ffff:ffff:ffff,FO
+2604:ca00:1b4::,2604:ca00:1b4:7fff:ffff:ffff:ffff:ffff,FR
+2604:ca00:1b4:8000::,2604:ca00:1b4:ffff:ffff:ffff:ffff:ffff,GB
+2604:ca00:1b5::,2604:ca00:1b5:7fff:ffff:ffff:ffff:ffff,GR
+2604:ca00:1b5:8000::,2604:ca00:1b5:ffff:ffff:ffff:ffff:ffff,IE
+2604:ca00:1b6::,2604:ca00:1b6:7fff:ffff:ffff:ffff:ffff,IS
+2604:ca00:1b6:8000::,2604:ca00:1b6:ffff:ffff:ffff:ffff:ffff,IT
+2604:ca00:1b7::,2604:ca00:1b7:7fff:ffff:ffff:ffff:ffff,NL
+2604:ca00:1b7:8000::,2604:ca00:1b7:ffff:ffff:ffff:ffff:ffff,NO
+2604:ca00:1b8::,2604:ca00:1b8:7fff:ffff:ffff:ffff:ffff,PT
+2604:ca00:1b8:8000::,2604:ca00:1b8:ffff:ffff:ffff:ffff:ffff,SE
+2604:ca00:1b9::,2604:ca00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ca40::,2604:ca40:ffff:ffff:ffff:ffff:ffff:ffff,PM
2604:ca80::,2604:ca80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cac0::,2604:cac0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cb00::,2604:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cb40::,2604:cb40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cb80::,2604:cb80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cbc0::,2604:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cc00::,2604:cc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cc40::,2604:cc40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cc80::,2604:cc80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ccc0::,2604:ccc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cd00::,2604:cd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cd40::,2604:cd40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cd80::,2604:cd80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cdc0::,2604:cdc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ce00::,2604:ce00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ce40::,2604:ce40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ce80::,2604:ce80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cec0::,2604:cec0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:cf00::,2604:cf00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cf40::,2604:cf40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cf80::,2604:cf80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:cfc0::,2604:cfc0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:d000::,2604:d000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d040::,2604:d040:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:d080::,2604:d080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d0c0::,2604:d0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d100::,2604:d100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d140::,2604:d140:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d180::,2604:d180:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d1c0::,2604:d1c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d200::,2604:d200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d240::,2604:d240:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d280::,2604:d280:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:d300::,2604:d300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d2c0::,2604:d2c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d340::,2604:d340:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d380::,2604:d380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d3c0::,2604:d3c0:ffff:ffff:ffff:ffff:ffff:ffff,PR
2604:d400::,2604:d400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d440::,2604:d440:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d480::,2604:d480:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d4c0::,2604:d4c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d500::,2604:d500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d540::,2604:d540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d580::,2604:d580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d5c0::,2604:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d600::,2604:d600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d640::,2604:d640:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d680::,2604:d680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d6c0::,2604:d6c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d700::,2604:d700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d740::,2604:d740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d780::,2604:d780:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:d7c0::,2604:d7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d800::,2604:d801:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d840::,2604:d840:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:d8c0::,2604:d8c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:d900::,2604:d900:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d980::,2604:d980:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:da00::,2604:da00:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -14128,7 +13176,6 @@
2604:e580::,2604:e580:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e600::,2604:e600:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e680::,2604:e680:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:e700::,2604:e700:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e780::,2604:e780:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e800::,2604:e800:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e880::,2604:e880:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14150,7 +13197,6 @@
2604:f200::,2604:f200:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:f280::,2604:f280:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:f300::,2604:f300:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:f380::,2604:f380:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:f400::,2604:f400:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:f480::,2604:f480:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:f500::,2604:f500:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14178,7 +13224,6 @@
2605:80::,2605:80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:100::,2605:100:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:180::,2605:180:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:200::,2605:200:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:280::,2605:280:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:300::,2605:300:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:380::,2605:380:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14279,7 +13324,6 @@
2605:3800::,2605:3800:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3880::,2605:3880:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:3900::,2605:3900:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:3980::,2605:3980: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
@@ -14290,7 +13334,9 @@
2605:3e00::,2605:3e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3e80::,2605:3e80:700:f:ffff:ffff:ffff:ffff,US
2605:3e80:700:10::,2605:3e80:700:10:ffff:ffff:ffff:ffff,DE
-2605:3e80:700:11::,2605:3e80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:3e80:700:11::,2605:3e80:17ff:ffff:ffff:ffff:ffff:ffff,US
+2605:3e80:1800::,2605:3e80:187f:ffff:ffff:ffff:ffff:ffff,JP
+2605:3e80:1880::,2605:3e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3f00::,2605:3f00:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:3f80::,2605:3f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4000::,2605:4000:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14326,7 +13372,6 @@
2605:5080::,2605:5080:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:5100::,2605:5100:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5180::,2605:5180:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:5200::,2605:5200:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5280::,2605:5280:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5300::,2605:5300:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5380::,2605:5380:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14353,7 +13398,6 @@
2605:6080::,2605:6080:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6100::,2605:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6180::,2605:6180:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:6200::,2605:6200:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6280::,2605:6280:ffff:ffff:ffff:ffff:ffff:ffff,AI
2605:6300::,2605:6300:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6380::,2605:6380:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14436,7 +13480,7 @@
2605:8d00::,2605:8d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:8d80::,2605:8d80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:8e00::,2605:8e00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:8f00::,2605:8f00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:8f00::,2605:8f00:fff:ffff:ffff:ffff:ffff:ffff,US
2605:8f80::,2605:8f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9000::,2605:9000:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:9080::,2605:9080:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14595,7 +13639,9 @@
2605:de80::,2605:de80:ffff:ffff:ffff:ffff:ffff:ffff,VI
2605:df00::,2605:df00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:df80::,2605:df80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:e000::,2605:e000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:e000::,2605:e000:ac7f:ffff:ffff:ffff:ffff:ffff,US
+2605:e000:ac80::,2605:e000:acff:ffff:ffff:ffff:ffff:ffff,CN
+2605:e000:ad00::,2605:e000:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e100::,2605:e100:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e180::,2605:e180:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e200::,2605:e200:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -14676,9 +13722,9 @@
2606:180::,2606:180:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:200::,2606:200:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:280::,2606:280:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:300::,2606:300:107:ffff:ffff:ffff:ffff:ffff,US
-2606:300:108::,2606:300:108:7fff:ffff:ffff:ffff:ffff,PR
-2606:300:108:8000::,2606:300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:300::,2606:300:ff:ffff:ffff:ffff:ffff:ffff,US
+2606:300:100::,2606:300:17f:ffff:ffff:ffff:ffff:ffff,PR
+2606:300:180::,2606:300:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:380::,2606:380:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:400::,2606:400:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:480::,2606:480:ffff:ffff:ffff:ffff:ffff:ffff,BM
@@ -14696,12 +13742,9 @@
2606:a80::,2606:a80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:b00::,2606:b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:b80::,2606:b80:ffff:ffff:ffff:ffff:ffff:ffff,BM
-2606:c00::,2606:c00:4:ffff:ffff:ffff:ffff:ffff,US
-2606:c00:5::,2606:c00:5:7fff:ffff:ffff:ffff:ffff,CN
-2606:c00:5:8000::,2606:c00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:c00::,2606:c00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d00::,2606:d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d80::,2606:d80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:e00::,2606:e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:e80::,2606:e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:f00::,2606:f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:f80::,2606:f80:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14709,7 +13752,6 @@
2606:1080::,2606:1080:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1100::,2606:1100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1180::,2606:1180:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:1200::,2606:1200:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1280::,2606:1280:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1300::,2606:1300:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:1380::,2606:1380:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14773,7 +13815,9 @@
2606:2800:5080::,2606:2800:5080:ffff:ffff:ffff:ffff:ffff,IT
2606:2800:5081::,2606:2800:508f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5090::,2606:2800:5090:ffff:ffff:ffff:ffff:ffff,PL
-2606:2800:5091::,2606:2800:5fff:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5091::,2606:2800:510f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5110::,2606:2800:5110:ffff:ffff:ffff:ffff:ffff,ZA
+2606:2800:5111::,2606:2800:5fff:ffff:ffff:ffff:ffff:ffff,US
2606:2800:6000::,2606:2800:6001:ffff:ffff:ffff:ffff:ffff,SG
2606:2800:6002::,2606:2800:600f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:6010::,2606:2800:6011:ffff:ffff:ffff:ffff:ffff,HK
@@ -14803,33 +13847,19 @@
2606:2c00::,2606:2c00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2c80::,2606:2c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2d00::,2606:2d00:fff:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00::,2606:2e00:8001:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8002::,2606:2e00:8002:7fff:ffff:ffff:ffff:ffff,JP
-2606:2e00:8002:8000::,2606:2e00:8008:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8009::,2606:2e00:8009:7fff:ffff:ffff:ffff:ffff,DE
-2606:2e00:8009:8000::,2606:2e00:800a:2:ffff:ffff:ffff:ffff,US
+2606:2e00::,2606:2e00:800a:2:ffff:ffff:ffff:ffff,US
2606:2e00:800a:3::,2606:2e00:800a:3:ffff:ffff:ffff:ffff,HK
2606:2e00:800a:4::,2606:2e00:800a:4::41c,US
2606:2e00:800a:4::41d,2606:2e00:800a:4::41e,HK
2606:2e00:800a:4::41f,2606:2e00:800a:4::4f0,US
2606:2e00:800a:4::4f1,2606:2e00:800a:4::4f1,HK
-2606:2e00:800a:4::4f2,2606:2e00:800c:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:800d::,2606:2e00:800d:7fff:ffff:ffff:ffff:ffff,AU
-2606:2e00:800d:8000::,2606:2e00:800d:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:800e::,2606:2e00:800e:7fff:ffff:ffff:ffff:ffff,MX
-2606:2e00:800e:8000::,2606:2e00:800e:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:800f::,2606:2e00:800f:7fff:ffff:ffff:ffff:ffff,IT
-2606:2e00:800f:8000::,2606:2e00:8010:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8011::,2606:2e00:8011:7fff:ffff:ffff:ffff:ffff,FR
-2606:2e00:8011:8000::,2606:2e00:8014:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8015::,2606:2e00:8015:7fff:ffff:ffff:ffff:ffff,AU
-2606:2e00:8015:8000::,2606:2e00:8015:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8016::,2606:2e00:8016:7fff:ffff:ffff:ffff:ffff,JP
-2606:2e00:8016:8000::,2606:2e00:8016:ffff:ffff:ffff:ffff:ffff,US
+2606:2e00:800a:4::4f2,2606:2e00:8014:ffff:ffff:ffff:ffff:ffff,US
+2606:2e00:8015::,2606:2e00:8015:ffff:ffff:ffff:ffff:ffff,AU
+2606:2e00:8016::,2606:2e00:8016:ffff:ffff:ffff:ffff:ffff,JP
2606:2e00:8017::,2606:2e00:8017::ffff:ffff:ffff:ffff,CA
2606:2e00:8017:1::,2606:2e00:8017:ffff:ffff:ffff:ffff:ffff,US
-2606:2e00:8018::,2606:2e00:8018:7fff:ffff:ffff:ffff:ffff,BR
-2606:2e00:8018:8000::,2606:2e00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:2e00:8018::,2606:2e00:801f:ffff:ffff:ffff:ffff:ffff,BR
+2606:2e00:8020::,2606:2e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2e80::,2606:2e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2f00::,2606:2f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2f80::,2606:2f80:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -14994,6 +14024,7 @@
2606:8100::,2606:8100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:8180::,2606:8180:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:8200::,2606:8200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:8280::,2606:8280:fff:ffff:ffff:ffff:ffff:ffff,US
2606:8300::,2606:830f:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:8380::,2606:8380:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:8400::,2606:8400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15240,7 +14271,6 @@
2606:ff80::,2606:ff80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607::,2607::ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:80::,2607:80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:90:44::,2607:90:44:7fff:ffff:ffff:ffff:ffff,US
2607:100::,2607:100:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:180::,2607:180:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:200::,2607:200:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15347,7 +14377,8 @@
2607:3480::,2607:3480:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:3500::,2607:3500:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:3580::,2607:3580:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:3600::,2607:3600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:3600:beef::16:3e29:bd56,2607:3600:beef::16:3e29:bd56,US
+2607:3600:beef::16:3e79:bb1f,2607:3600:beef::16:3e79:bb1f,US
2607:3680::,2607:3680:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:3700::,2607:3700:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:3780::,2607:3780:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15400,7 +14431,7 @@
2607:4f80::,2607:4f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5000::,2607:5006:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5080::,2607:5080:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:5100::,2607:5100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5100::,2607:510f:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5180::,2607:5180:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5200::,2607:5201:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5280::,2607:5280:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15505,15 +14536,11 @@
2607:8580::,2607:8580:ffff:ffff:ffff:ffff:ffff:ffff,VI
2607:8600::,2607:8600:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:8680::,2607:8680:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:8700::,2607:8700:100:ffff:ffff:ffff:ffff:ffff,CA
-2607:8700:101::,2607:8700:104:ffff:ffff:ffff:ffff:ffff,US
+2607:8700::,2607:8700:ff:ffff:ffff:ffff:ffff:ffff,CA
+2607:8700:100::,2607:8700:104:ffff:ffff:ffff:ffff:ffff,US
2607:8700:105::,2607:8700:105:ffff:ffff:ffff:ffff:ffff,NL
2607:8700:106::,2607:8700:109:ffff:ffff:ffff:ffff:ffff,US
-2607:8700:10a::,2607:8700:110:7fff:ffff:ffff:ffff:ffff,CA
-2607:8700:110:8000::,2607:8700:110:ffff:ffff:ffff:ffff:ffff,US
-2607:8700:111::,2607:8700:111:ffff:ffff:ffff:ffff:ffff,CA
-2607:8700:112::,2607:8700:112:7fff:ffff:ffff:ffff:ffff,US
-2607:8700:112:8000::,2607:8700:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:8700:10a::,2607:8700:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:8780::,2607:8780:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:8800::,2607:8800:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:8880::,2607:8880:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -15652,7 +14679,6 @@
2607:ce00::,2607:ce00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:ce80::,2607:ce80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:cf00::,2607:cf03:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:cf80::,2607:cf80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d000::,2607:d000:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d080::,2607:d080:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:d100::,2607:d100:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15675,7 +14701,6 @@
2607:d980::,2607:d980:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:da00::,2607:da00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:da80::,2607:da80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:db80::,2607:db80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:dc00::,2607:dc00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:dc80::,2607:dc80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:dd00::,2607:dd00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15740,12 +14765,22 @@
2607:f0b0::,2607:f0b0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:f0c0::,2607:f0c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f0c8::,2607:f0c8:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2607:f0d0::,2607:f0d0:1c00:ffff:ffff:ffff:ffff:ffff,US
-2607:f0d0:1c01::,2607:f0d0:1c01:7fff:ffff:ffff:ffff:ffff,MX
-2607:f0d0:1c01:8000::,2607:f0d0:3601:3a:ffff:ffff:ffff:ffff,US
+2607:f0d0::,2607:f0d0:1bff:ffff:ffff:ffff:ffff:ffff,US
+2607:f0d0:1c00::,2607:f0d0:1c00:20::8:0,MX
+2607:f0d0:1c00:20::8:1,2607:f0d0:1c00:20::8:1,US
+2607:f0d0:1c00:20::8:2,2607:f0d0:1c00:20::a:0,MX
+2607:f0d0:1c00:20::a:1,2607:f0d0:1c00:20::a:1,US
+2607:f0d0:1c00:20::a:2,2607:f0d0:1c00:20::b:0,MX
+2607:f0d0:1c00:20::b:1,2607:f0d0:1c00:20::b:1,US
+2607:f0d0:1c00:20::b:2,2607:f0d0:1c7f:ffff:ffff:ffff:ffff:ffff,MX
+2607:f0d0:1c80::,2607:f0d0:3601:3a:ffff:ffff:ffff:ffff,US
2607:f0d0:3601:3b::,2607:f0d0:3601:3b:ffff:ffff:ffff:ffff,CA
2607:f0d0:3601:3c::,2607:f0d1:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:f0d8::,2607:f0e0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f0d8::,2607:f0dc:4fff:ffff:ffff:ffff:ffff:ffff,US
+2607:f0dc:5000::,2607:f0dc:5000:ffff:ffff:ffff:ffff:ffff,JP
+2607:f0dc:5001::,2607:f0dc:5001:ffff:ffff:ffff:ffff:ffff,US
+2607:f0dc:5002::,2607:f0dc:507f:ffff:ffff:ffff:ffff:ffff,JP
+2607:f0dc:5080::,2607:f0e0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f0e8::,2607:f0e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f0f8::,2607:f0f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f100::,2607:f100:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15814,9 +14849,7 @@
2607:f340::,2607:f340:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f348::,2607:f348:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f350::,2607:f350:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:f358::,2607:f358:7:ffff:ffff:ffff:ffff:ffff,US
-2607:f358:8::,2607:f358:8:7fff:ffff:ffff:ffff:ffff,CH
-2607:f358:8:8000::,2607:f358:1e:ffff:ffff:ffff:ffff:ffff,US
+2607:f358::,2607:f358:1e:ffff:ffff:ffff:ffff:ffff,US
2607:f358:1f::,2607:f358:1f:ffff:ffff:ffff:ffff:ffff,DE
2607:f358:20::,2607:f358:20:467:3b8c:afeb:b1c4:942b,US
2607:f358:20:467:3b8c:afeb:b1c4:942c,2607:f358:20:467:3b8c:afeb:b1c4:942c,PH
@@ -15932,7 +14965,9 @@
2607:f6f8::,2607:f6f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f700::,2607:f700:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f708::,2607:f708:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:f710::,2607:f710:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f710::,2607:f710:7f:ffff:ffff:ffff:ffff:ffff,US
+2607:f710:80::,2607:f710:ff:ffff:ffff:ffff:ffff:ffff,RO
+2607:f710:100::,2607:f710:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f718::,2607:f718:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f720::,2607:f720:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f728::,2607:f728:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15978,9 +15013,9 @@
2607:f890::,2607:f890:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:f898::,2607:f898:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8a8::,2607:f8a8:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:f8b0::,2607:f8b0:400c:c08::242,US
-2607:f8b0:400c:c08::243,2607:f8b0:400c:c08::243,DO
-2607:f8b0:400c:c08::244,2607:f8b0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f8b0::,2607:f8b0:401f:ffff:ffff:ffff:ffff:ffff,US
+2607:f8b0:4020::,2607:f8b0:4020:ffff:ffff:ffff:ffff:ffff,CA
+2607:f8b0:4021::,2607:f8b0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8b8::,2607:f8b8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8c0::,2607:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8c8::,2607:f8c8:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15989,7 +15024,9 @@
2607:f8e0::,2607:f8e0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8e8::,2607:f8e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f8f0::,2607:f8f0:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2607:f8f8::,2607:f8f8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f8f8::,2607:f8f8:202:29ff:ffff:ffff:ffff:ffff,US
+2607:f8f8:202:2a00::,2607:f8f8:202:2a00:ffff:ffff:ffff:ffff,ID
+2607:f8f8:202:2a01::,2607:f8f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f900::,2607:f900:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f908::,2607:f908:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f910::,2607:f910:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -16048,7 +15085,6 @@
2607:fb00::,2607:fb00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb08::,2607:fb08:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb10::,2607:fb10:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fb18::,2607:fb18:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb20::,2607:fb20:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb28::,2607:fb28:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb30::,2607:fb30:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -16062,13 +15098,7 @@
2607:fb78::,2607:fb78:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb80::,2607:fb80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb88::,2607:fb88:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fb90::,2607:fb90:c29:7fff:ffff:ffff:ffff:ffff,US
-2607:fb90:c29:8000::,2607:fb90:c29:8fff:ffff:ffff:ffff:ffff,PR
-2607:fb90:c29:9000::,2607:fb90:1b06:3fff:ffff:ffff:ffff:ffff,US
-2607:fb90:1b06:4000::,2607:fb90:1b06:5fff:ffff:ffff:ffff:ffff,PR
-2607:fb90:1b06:6000::,2607:fb90:1bc5:3fff:ffff:ffff:ffff:ffff,US
-2607:fb90:1bc5:4000::,2607:fb90:1bc5:4fff:ffff:ffff:ffff:ffff,PR
-2607:fb90:1bc5:5000::,2607:fb90:75ff:ffff:ffff:ffff:ffff:ffff,US
+2607:fb90::,2607:fb90:75ff:ffff:ffff:ffff:ffff:ffff,US
2607:fb90:7600::,2607:fb90:76ff:ffff:ffff:ffff:ffff:ffff,PR
2607:fb90:7700::,2607:fb90:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fb98::,2607:fb98:1b:ffff:ffff:ffff:ffff:ffff,US
@@ -16166,7 +15196,9 @@
2607:fe90::,2607:fe90:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fe98::,2607:fe98:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fea0::,2607:fea0:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fea8::,2607:fea8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fea8::,2607:fea8:6df:f5ff:ffff:ffff:ffff:ffff,CA
+2607:fea8:6df:f600::,2607:fea8:6df:f6ff:ffff:ffff:ffff:ffff,CN
+2607:fea8:6df:f700::,2607:fea8:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:feb0::,2607:feb0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:feb8::,2607:feb8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fec0::,2607:fec0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -16286,7 +15318,6 @@
2620:0:20::,2620::20:ffff:ffff:ffff:ffff:ffff,US
2620:0:30::,2620::37:ffff:ffff:ffff:ffff:ffff,US
2620:0:60::,2620::60:ffff:ffff:ffff:ffff:ffff,US
-2620:0:70::,2620::70:ffff:ffff:ffff:ffff:ffff,US
2620:0:80::,2620::80:ffff:ffff:ffff:ffff:ffff,US
2620:0:90::,2620::90:ffff:ffff:ffff:ffff:ffff,US
2620:0:a0::,2620::a0:ffff:ffff:ffff:ffff:ffff,US
@@ -16314,16 +15345,7 @@
2620:0:240::,2620::240:ffff:ffff:ffff:ffff:ffff,US
2620:0:250::,2620::250:ffff:ffff:ffff:ffff:ffff,US
2620:0:260::,2620::260:ffff:ffff:ffff:ffff:ffff,US
-2620:0:280::,2620::280:ffff:ffff:ffff:ffff:ffff,US
-2620:0:290::,2620::290:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b0::,2620::2b0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2c0::,2620::2c0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2d0::,2620::2d0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2f0::,2620::2f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:300::,2620::300:ffff:ffff:ffff:ffff:ffff,US
-2620:0:320::,2620::320:ffff:ffff:ffff:ffff:ffff,US
-2620:0:350::,2620::353:ffff:ffff:ffff:ffff:ffff,US
-2620:0:360::,2620::361:ffff:ffff:ffff:ffff:ffff,US
+2620:0:280::,2620::37f:ffff:ffff:ffff:ffff:ffff,US
2620:0:390::,2620::390:ffff:ffff:ffff:ffff:ffff,US
2620:0:3b0::,2620::3b0:ffff:ffff:ffff:ffff:ffff,US
2620:0:3c0::,2620::3c0:ffff:ffff:ffff:ffff:ffff,US
@@ -16337,20 +15359,101 @@
2620:0:650::,2620::650:ffff:ffff:ffff:ffff:ffff,US
2620:0:660::,2620::660:ffff:ffff:ffff:ffff:ffff,US
2620:0:670::,2620::671:ffff:ffff:ffff:ffff:ffff,US
-2620:0:680::,2620::680:ffff:ffff:ffff:ffff:ffff,US
-2620:0:690::,2620::6a0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6b0::,2620::6b0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6c0::,2620::6c7:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6d0::,2620::6d0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6e0::,2620::6e0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6f0::,2620::6f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:700::,2620::77f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:680::,2620::77f:ffff:ffff:ffff:ffff:ffff,US
2620:0:800::,2620::802:ffff:ffff:ffff:ffff:ffff,US
2620:0:810::,2620::810:ffff:ffff:ffff:ffff:ffff,CA
2620:0:840::,2620::840:ffff:ffff:ffff:ffff:ffff,US
2620:0:850::,2620::850:ffff:ffff:ffff:ffff:ffff,US
2620:0:860::,2620::863:ffff:ffff:ffff:ffff:ffff,US
-2620:0:870::,2620::877:ffff:ffff:ffff:ffff:ffff,US
+2620:0:870::,2620::876:fff:ffff:ffff:ffff:ffff,US
+2620:0:876:1000::,2620::876:11ff:ffff:ffff:ffff:ffff,ZA
+2620:0:876:1200::,2620::876:14ff:ffff:ffff:ffff:ffff,CA
+2620:0:876:1500::,2620::876:15ff:ffff:ffff:ffff:ffff,MW
+2620:0:876:1600::,2620::876:16ff:ffff:ffff:ffff:ffff,MS
+2620:0:876:1700::,2620::876:17ff:ffff:ffff:ffff:ffff,BI
+2620:0:876:1800::,2620::876:18ff:ffff:ffff:ffff:ffff,AO
+2620:0:876:1900::,2620::876:20ff:ffff:ffff:ffff:ffff,US
+2620:0:876:2100::,2620::876:21ff:ffff:ffff:ffff:ffff,DM
+2620:0:876:2200::,2620::876:22ff:ffff:ffff:ffff:ffff,BO
+2620:0:876:2300::,2620::876:23ff:ffff:ffff:ffff:ffff,AR
+2620:0:876:2400::,2620::876:24ff:ffff:ffff:ffff:ffff,PS
+2620:0:876:2500::,2620::876:25ff:ffff:ffff:ffff:ffff,US
+2620:0:876:2600::,2620::876:26ff:ffff:ffff:ffff:ffff,FR
+2620:0:876:2700::,2620::876:27ff:ffff:ffff:ffff:ffff,AT
+2620:0:876:2800::,2620::876:28ff:ffff:ffff:ffff:ffff,CR
+2620:0:876:2900::,2620::876:29ff:ffff:ffff:ffff:ffff,JM
+2620:0:876:2a00::,2620::876:2fff:ffff:ffff:ffff:ffff,US
+2620:0:876:3000::,2620::876:31ff:ffff:ffff:ffff:ffff,TN
+2620:0:876:3200::,2620::876:32ff:ffff:ffff:ffff:ffff,MX
+2620:0:876:3300::,2620::876:33ff:ffff:ffff:ffff:ffff,KE
+2620:0:876:3400::,2620::876:34ff:ffff:ffff:ffff:ffff,AR
+2620:0:876:3500::,2620::876:35ff:ffff:ffff:ffff:ffff,GD
+2620:0:876:3600::,2620::876:36ff:ffff:ffff:ffff:ffff,SD
+2620:0:876:3700::,2620::876:37ff:ffff:ffff:ffff:ffff,UA
+2620:0:876:3800::,2620::876:39ff:ffff:ffff:ffff:ffff,GB
+2620:0:876:3a00::,2620::876:3fff:ffff:ffff:ffff:ffff,US
+2620:0:876:4000::,2620::876:41ff:ffff:ffff:ffff:ffff,TZ
+2620:0:876:4200::,2620::876:42ff:ffff:ffff:ffff:ffff,NG
+2620:0:876:4300::,2620::876:43ff:ffff:ffff:ffff:ffff,GM
+2620:0:876:4400::,2620::876:44ff:ffff:ffff:ffff:ffff,IN
+2620:0:876:4500::,2620::876:45ff:ffff:ffff:ffff:ffff,US
+2620:0:876:4600::,2620::876:46ff:ffff:ffff:ffff:ffff,VU
+2620:0:876:4700::,2620::876:47ff:ffff:ffff:ffff:ffff,HT
+2620:0:876:4800::,2620::876:48ff:ffff:ffff:ffff:ffff,BJ
+2620:0:876:4900::,2620::876:49ff:ffff:ffff:ffff:ffff,RW
+2620:0:876:4a00::,2620::876:4fff:ffff:ffff:ffff:ffff,US
+2620:0:876:5000::,2620::876:50ff:ffff:ffff:ffff:ffff,LB
+2620:0:876:5100::,2620::876:51ff:ffff:ffff:ffff:ffff,TT
+2620:0:876:5200::,2620::876:52ff:ffff:ffff:ffff:ffff,BB
+2620:0:876:5300::,2620::876:53ff:ffff:ffff:ffff:ffff,NA
+2620:0:876:5400::,2620::876:54ff:ffff:ffff:ffff:ffff,MU
+2620:0:876:5500::,2620::876:55ff:ffff:ffff:ffff:ffff,AO
+2620:0:876:5600::,2620::876:56ff:ffff:ffff:ffff:ffff,HN
+2620:0:876:5700::,2620::876:57ff:ffff:ffff:ffff:ffff,LR
+2620:0:876:5800::,2620::876:5fff:ffff:ffff:ffff:ffff,US
+2620:0:876:6000::,2620::876:60ff:ffff:ffff:ffff:ffff,CA
+2620:0:876:6100::,2620::876:61ff:ffff:ffff:ffff:ffff,UG
+2620:0:876:6200::,2620::876:62ff:ffff:ffff:ffff:ffff,LC
+2620:0:876:6300::,2620::876:63ff:ffff:ffff:ffff:ffff,BZ
+2620:0:876:6400::,2620::876:64ff:ffff:ffff:ffff:ffff,MG
+2620:0:876:6500::,2620::876:65ff:ffff:ffff:ffff:ffff,QA
+2620:0:876:6600::,2620::876:66ff:ffff:ffff:ffff:ffff,US
+2620:0:876:6700::,2620::876:67ff:ffff:ffff:ffff:ffff,GB
+2620:0:876:6800::,2620::876:68ff:ffff:ffff:ffff:ffff,US
+2620:0:876:6900::,2620::876:69ff:ffff:ffff:ffff:ffff,BW
+2620:0:876:6a00::,2620::876:6fff:ffff:ffff:ffff:ffff,US
+2620:0:876:7000::,2620::876:70ff:ffff:ffff:ffff:ffff,AT
+2620:0:876:7100::,2620::876:71ff:ffff:ffff:ffff:ffff,LK
+2620:0:876:7200::,2620::876:72ff:ffff:ffff:ffff:ffff,US
+2620:0:876:7300::,2620::876:73ff:ffff:ffff:ffff:ffff,CL
+2620:0:876:7400::,2620::876:74ff:ffff:ffff:ffff:ffff,PY
+2620:0:876:7500::,2620::876:75ff:ffff:ffff:ffff:ffff,US
+2620:0:876:7600::,2620::876:76ff:ffff:ffff:ffff:ffff,KH
+2620:0:876:7700::,2620::876:77ff:ffff:ffff:ffff:ffff,LB
+2620:0:876:7800::,2620::876:78ff:ffff:ffff:ffff:ffff,US
+2620:0:876:7900::,2620::876:79ff:ffff:ffff:ffff:ffff,AM
+2620:0:876:7a00::,2620::876:7fff:ffff:ffff:ffff:ffff,US
+2620:0:876:8000::,2620::876:80ff:ffff:ffff:ffff:ffff,RO
+2620:0:876:8100::,2620::876:81ff:ffff:ffff:ffff:ffff,US
+2620:0:876:8200::,2620::876:82ff:ffff:ffff:ffff:ffff,CA
+2620:0:876:8300::,2620::876:83ff:ffff:ffff:ffff:ffff,CI
+2620:0:876:8400::,2620::876:84ff:ffff:ffff:ffff:ffff,CD
+2620:0:876:8500::,2620::876:86ff:ffff:ffff:ffff:ffff,US
+2620:0:876:8700::,2620::876:87ff:ffff:ffff:ffff:ffff,GH
+2620:0:876:8800::,2620::876:88ff:ffff:ffff:ffff:ffff,US
+2620:0:876:8900::,2620::876:89ff:ffff:ffff:ffff:ffff,TG
+2620:0:876:8a00::,2620::876:8fff:ffff:ffff:ffff:ffff,US
+2620:0:876:9000::,2620::876:90ff:ffff:ffff:ffff:ffff,GA
+2620:0:876:9100::,2620::876:91ff:ffff:ffff:ffff:ffff,BT
+2620:0:876:9200::,2620::876:92ff:ffff:ffff:ffff:ffff,EC
+2620:0:876:9300::,2620::876:93ff:ffff:ffff:ffff:ffff,IL
+2620:0:876:9400::,2620::876:94ff:ffff:ffff:ffff:ffff,TH
+2620:0:876:9500::,2620::876:95ff:ffff:ffff:ffff:ffff,US
+2620:0:876:9600::,2620::876:96ff:ffff:ffff:ffff:ffff,LT
+2620:0:876:9700::,2620::876:97ff:ffff:ffff:ffff:ffff,ZW
+2620:0:876:9800::,2620::876:98ff:ffff:ffff:ffff:ffff,AR
+2620:0:876:9900::,2620::876:99ff:ffff:ffff:ffff:ffff,DE
+2620:0:876:9a00::,2620::877:ffff:ffff:ffff:ffff:ffff,US
2620:0:880::,2620::880:ffff:ffff:ffff:ffff:ffff,US
2620:0:890::,2620::890:ffff:ffff:ffff:ffff:ffff,US
2620:0:8a0::,2620::8a0:ffff:ffff:ffff:ffff:ffff,US
@@ -16403,92 +15506,53 @@
2620:0:ccf::,2620::ccf:ffff:ffff:ffff:ffff:ffff,AU
2620:0:ce0::,2620::ce0:ffff:ffff:ffff:ffff:ffff,US
2620:0:cf0::,2620::cf0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d20::,2620::d20:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d30::,2620::d30:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d50::,2620::d50:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d60::,2620::d63:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d70::,2620::d77:ffff:ffff:ffff:ffff:ffff,US
-2620:0:d80::,2620::d80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:d00::,2620::d80:ffff:ffff:ffff:ffff:ffff,US
2620:0:d90::,2620::d90:ffff:ffff:ffff:ffff:ffff,US
2620:0:dc0::,2620::dc0:ffff:ffff:ffff:ffff:ffff,US
2620:0:dd0::,2620::dd0:ffff:ffff:ffff:ffff:ffff,US
2620:0:de0::,2620::de0:ffff:ffff:ffff:ffff:ffff,US
2620:0:df0::,2620::df0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e00::,2620::e00:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e10::,2620::e10:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e20::,2620::e23:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e30::,2620::e30:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e50::,2620::e60:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e80::,2620::e80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:e00::,2620::e80:ffff:ffff:ffff:ffff:ffff,US
2620:0:e90::,2620::e90:ffff:ffff:ffff:ffff:ffff,US
2620:0:ea0::,2620::eb0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:ed0::,2620::ed0:7fff:ffff:ffff:ffff:ffff,CN
-2620:0:ed0:8000::,2620::ed0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:ed0::,2620::ed0:ffff:ffff:ffff:ffff:ffff,US
2620:0:ee0::,2620::ee0:ffff:ffff:ffff:ffff:ffff,US
2620:0:ef0::,2620::ef0:ffff:ffff:ffff:ffff:ffff,US
2620:0:f00::,2620::f7f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1000::,2620::100b:ffff:ffff:ffff:ffff:ffff,US
-2620:0:100c::,2620::100c:ffff:ffff:ffff:ffff:ffff,CA
-2620:0:100d::,2620::1010:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1011::,2620::1011:ffff:ffff:ffff:ffff:ffff,AR
-2620:0:1012::,2620::101f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1020::,2620::1020:7fff:ffff:ffff:ffff:ffff,MX
-2620:0:1020:8000::,2620::1024:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1025::,2620::1025:ffff:ffff:ffff:ffff:ffff,BR
-2620:0:1026::,2620::1034:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1035::,2620::1035:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:100c::,2620::100d:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:100e::,2620::100f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1010::,2620::1011:ffff:ffff:ffff:ffff:ffff,AR
+2620:0:1012::,2620::1023:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1024::,2620::1027:ffff:ffff:ffff:ffff:ffff,BR
+2620:0:1028::,2620::1033:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1034::,2620::1035:ffff:ffff:ffff:ffff:ffff,CA
2620:0:1036::,2620::103f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1040::,2620::1040:7fff:ffff:ffff:ffff:ffff,IE
-2620:0:1040:8000::,2620::1041:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1040::,2620::1041:ffff:ffff:ffff:ffff:ffff,IE
2620:0:1042::,2620::1042:ffff:ffff:ffff:ffff:ffff,GB
-2620:0:1043::,2620::1043:ffff:ffff:ffff:ffff:ffff,SE
-2620:0:1044::,2620::1044:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1045::,2620::1045:ffff:ffff:ffff:ffff:ffff,IL
-2620:0:1046::,2620::1046:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1047::,2620::1047:ffff:ffff:ffff:ffff:ffff,PL
-2620:0:1048::,2620::1048:ffff:ffff:ffff:ffff:ffff,IL
-2620:0:1049::,2620::1049:ffff:ffff:ffff:ffff:ffff,DE
-2620:0:104a::,2620::104a:7fff:ffff:ffff:ffff:ffff,AE
-2620:0:104a:8000::,2620::104a:ffff:ffff:ffff:ffff:ffff,US
-2620:0:104b::,2620::104b:ffff:ffff:ffff:ffff:ffff,NL
-2620:0:104c::,2620::104f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1050::,2620::1050:ffff:ffff:ffff:ffff:ffff,GB
-2620:0:1051::,2620::1051:ffff:ffff:ffff:ffff:ffff,ES
-2620:0:1052::,2620::1052:7fff:ffff:ffff:ffff:ffff,IE
-2620:0:1052:8000::,2620::1052:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1043::,2620::1043:ffff:ffff:ffff:ffff:ffff,IE
+2620:0:1044::,2620::1045:ffff:ffff:ffff:ffff:ffff,IL
+2620:0:1046::,2620::1047:ffff:ffff:ffff:ffff:ffff,PL
+2620:0:1048::,2620::1049:ffff:ffff:ffff:ffff:ffff,DE
+2620:0:104a::,2620::104b:ffff:ffff:ffff:ffff:ffff,NL
+2620:0:104c::,2620::1051:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1052::,2620::1052:ffff:ffff:ffff:ffff:ffff,IE
2620:0:1053::,2620::1053:ffff:ffff:ffff:ffff:ffff,FR
2620:0:1054::,2620::1054:ffff:ffff:ffff:ffff:ffff,US
2620:0:1055::,2620::1055:ffff:ffff:ffff:ffff:ffff,BE
-2620:0:1056::,2620::1058:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1059::,2620::1059:7fff:ffff:ffff:ffff:ffff,DK
-2620:0:1059:8000::,2620::105e:ffff:ffff:ffff:ffff:ffff,US
-2620:0:105f::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
-2620:0:1060::,2620::1060:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1061::,2620::1061:7fff:ffff:ffff:ffff:ffff,CH
-2620:0:1061:8000::,2620::1068:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1069::,2620::1069:7fff:ffff:ffff:ffff:ffff,PL
-2620:0:1069:8000::,2620::1069:ffff:ffff:ffff:ffff:ffff,US
-2620:0:106a::,2620::106a:7fff:ffff:ffff:ffff:ffff,PT
-2620:0:106a:8000::,2620::106a:ffff:ffff:ffff:ffff:ffff,US
-2620:0:106b::,2620::106b:ffff:ffff:ffff:ffff:ffff,RU
-2620:0:106c::,2620::106e:ffff:ffff:ffff:ffff:ffff,US
-2620:0:106f::,2620::106f:ffff:ffff:ffff:ffff:ffff,CZ
-2620:0:1070::,2620::1070:7fff:ffff:ffff:ffff:ffff,DE
-2620:0:1070:8000::,2620::1072:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1073::,2620::1073:ffff:ffff:ffff:ffff:ffff,GB
-2620:0:1074::,2620::1074:7fff:ffff:ffff:ffff:ffff,IE
-2620:0:1074:8000::,2620::1077:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1078::,2620::1078:7fff:ffff:ffff:ffff:ffff,NG
-2620:0:1078:8000::,2620::1079:ffff:ffff:ffff:ffff:ffff,US
-2620:0:107a::,2620::107a:ffff:ffff:ffff:ffff:ffff,IE
-2620:0:107b::,2620::107b:ffff:ffff:ffff:ffff:ffff,US
-2620:0:107c::,2620::107c:7fff:ffff:ffff:ffff:ffff,GR
-2620:0:107c:8000::,2620::107e:ffff:ffff:ffff:ffff:ffff,US
-2620:0:107f::,2620::107f:7fff:ffff:ffff:ffff:ffff,FR
-2620:0:107f:8000::,2620::107f:ffff:ffff:ffff:ffff:ffff,BE
-2620:0:1080::,2620::10cb:ffff:ffff:ffff:ffff:ffff,US
-2620:0:10cc::,2620::10cc:7fff:ffff:ffff:ffff:ffff,CN
-2620:0:10cc:8000::,2620::10e7:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1056::,2620::1057:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1058::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
+2620:0:1060::,2620::1067:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1068::,2620::1069:ffff:ffff:ffff:ffff:ffff,PL
+2620:0:106a::,2620::106b:ffff:ffff:ffff:ffff:ffff,RU
+2620:0:106c::,2620::106f:ffff:ffff:ffff:ffff:ffff,CZ
+2620:0:1070::,2620::1071:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1072::,2620::1073:ffff:ffff:ffff:ffff:ffff,GB
+2620:0:1074::,2620::1077:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1078::,2620::107f:ffff:ffff:ffff:ffff:ffff,BE
+2620:0:1080::,2620::10bf:ffff:ffff:ffff:ffff:ffff,US
+2620:0:10c0::,2620::10df:ffff:ffff:ffff:ffff:ffff,CN
+2620:0:10e0::,2620::10e7:ffff:ffff:ffff:ffff:ffff,US
2620:0:10e8::,2620::10e8:ffff:ffff:ffff:ffff:ffff,AR
2620:0:10e9::,2620::10ff:ffff:ffff:ffff:ffff:ffff,US
2620:0:1400::,2620::143f:ffff:ffff:ffff:ffff:ffff,US
@@ -16496,14 +15560,7 @@
2620:0:1600::,2620::167f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1700::,2620::170f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1800::,2620::181f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a00::,2620::1a00:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a10::,2620::1a10:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a20::,2620::1a20:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a30::,2620::1a30:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a40::,2620::1a40:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a50::,2620::1a50:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a70::,2620::1a70:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a80::,2620::1a80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1a00::,2620::1a80:ffff:ffff:ffff:ffff:ffff,US
2620:0:1aa0::,2620::1aa0:ffff:ffff:ffff:ffff:ffff,US
2620:0:1ab0::,2620::1ab0:ffff:ffff:ffff:ffff:ffff,US
2620:0:1ac0::,2620::1ac0:ffff:ffff:ffff:ffff:ffff,US
@@ -16513,12 +15570,7 @@
2620:0:1b00::,2620::1b07:ffff:ffff:ffff:ffff:ffff,US
2620:0:1c00::,2620::1cff:ffff:ffff:ffff:ffff:ffff,US
2620:0:2000::,2620::203f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2210::,2620::2210:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2220::,2620::222f:ffff:ffff:ffff:ffff:ffff,CA
-2620:0:2240::,2620::2240:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2250::,2620::2250:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2260::,2620::2260:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2280::,2620::2280:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2200::,2620::2280:ffff:ffff:ffff:ffff:ffff,US
2620:0:2290::,2620::2290:ffff:ffff:ffff:ffff:ffff,US
2620:0:22a0::,2620::22a0:ffff:ffff:ffff:ffff:ffff,US
2620:0:22b0::,2620::22b0:ffff:ffff:ffff:ffff:ffff,US
@@ -16528,24 +15580,9 @@
2620:0:22f0::,2620::22f0:ffff:ffff:ffff:ffff:ffff,US
2620:0:2300::,2620::230f:ffff:ffff:ffff:ffff:ffff,US
2620:0:2400::,2620::24ff:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2800::,2620::2800:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2810::,2620::2810:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2820::,2620::2820:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2830::,2620::2830:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2840::,2620::2840:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2850::,2620::2850:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2880::,2620::2880:ffff:ffff:ffff:ffff:ffff,US
-2620:0:28a0::,2620::28b0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:28d0::,2620::28d0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:28f0::,2620::28f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2900::,2620::290f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2800::,2620::290f:ffff:ffff:ffff:ffff:ffff,US
2620:0:2a00::,2620::2a1f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b00::,2620::2b00:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b10::,2620::2b20:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b30::,2620::2b40:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b50::,2620::2b50:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b60::,2620::2b60:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2b70::,2620::2b8f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2b00::,2620::2b8f:ffff:ffff:ffff:ffff:ffff,US
2620:0:2bc0::,2620::2bc3:ffff:ffff:ffff:ffff:ffff,US
2620:0:2be0::,2620::2be0:ffff:ffff:ffff:ffff:ffff,US
2620:0:2d00::,2620::2d7f:ffff:ffff:ffff:ffff:ffff,US
@@ -16553,12 +15590,7 @@
2620:0:2e10::,2620::2e10:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e30::,2620::2e30:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e40::,2620::2e40:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2e50::,2620::2e60:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2e70::,2620::2e80:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2ea0::,2620::2eb0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2ed0::,2620::2ed0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2ee0::,2620::2ee0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2f00::,2620::2f7f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e50::,2620::2f7f:ffff:ffff:ffff:ffff:ffff,US
2620:0:5000::,2620::5000:ffff:ffff:ffff:ffff:ffff,US
2620:0:5010::,2620::5010:ffff:ffff:ffff:ffff:ffff,US
2620:0:5030::,2620::5030:ffff:ffff:ffff:ffff:ffff,US
@@ -16566,17 +15598,9 @@
2620:0:5050::,2620::5050:ffff:ffff:ffff:ffff:ffff,US
2620:0:5060::,2620::5060:ffff:ffff:ffff:ffff:ffff,CA
2620:0:5070::,2620::5070:ffff:ffff:ffff:ffff:ffff,US
-2620:0:5080::,2620::5080:ffff:ffff:ffff:ffff:ffff,US
-2620:0:5090::,2620::5090:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50a0::,2620::50a0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50b0::,2620::50b0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50c0::,2620::50c0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50d0::,2620::50d1:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50e0::,2620::50e0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:50f0::,2620::50f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:5100::,2620::510f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5080::,2620::510f:ffff:ffff:ffff:ffff:ffff,US
2620:0:5200::,2620::5200:ffff:ffff:ffff:ffff:ffff,US
-2620:0:5300::,2620::530f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5300::,2620::537f:ffff:ffff:ffff:ffff:ffff,US
2620:0:7f00::,2620::7f00:ffff:ffff:ffff:ffff:ffff,CA
2620:0:aa00::,2620::aa00:ffff:ffff:ffff:ffff:ffff,US
2620:0:d500::,2620::d500:ffff:ffff:ffff:ffff:ffff,US
@@ -16589,7 +15613,7 @@
2620:1:c000::,2620:1:c000:ffff:ffff:ffff:ffff:ffff,US
2620:1:e000::,2620:1:e000:ffff:ffff:ffff:ffff:ffff,US
2620:2::,2620:2::ffff:ffff:ffff:ffff:ffff,US
-2620:2:2000::,2620:2:2000: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:8000::,2620:2:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -16606,16 +15630,15 @@
2620:3:e000::,2620:3:e000:ffff:ffff:ffff:ffff:ffff,US
2620:4::,2620:4::ffff:ffff:ffff:ffff:ffff,US
2620:4:2000::,2620:4:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:4:4000::,2620:4:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4:4000::,2620:4:407f:ffff:ffff:ffff:ffff:ffff,US
2620:4:6000::,2620:4:6000:ffff:ffff:ffff:ffff:ffff,US
2620:4:8000::,2620:4:8000:ffff:ffff:ffff:ffff:ffff,US
2620:4:a000::,2620:4:a000:ffff:ffff:ffff:ffff:ffff,US
2620:4:c000::,2620:4:c000:ffff:ffff:ffff:ffff:ffff,US
2620:4:e000::,2620:4:e000:ffff:ffff:ffff:ffff:ffff,US
2620:5::,2620:5::ffff:ffff:ffff:ffff:ffff,US
-2620:5:2000::,2620:5:2000:ffff:ffff:ffff:ffff:ffff,US
2620:5:4000::,2620:5:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:5:8000::,2620:5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5:8000::,2620:5:807f:ffff:ffff:ffff:ffff:ffff,US
2620:5:a000::,2620:5:a000:ffff:ffff:ffff:ffff:ffff,US
2620:5:c000::,2620:5:c000:ffff:ffff:ffff:ffff:ffff,US
2620:5:e000::,2620:5:e000:ffff:ffff:ffff:ffff:ffff,US
@@ -16632,14 +15655,12 @@
2620:7:4000::,2620:7:4000:ffff:ffff:ffff:ffff:ffff,US
2620:7:6000::,2620:7:6000:ffff:ffff:ffff:ffff:ffff,US
2620:7:8000::,2620:7:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:7:a000::,2620:7:a000:ffff:ffff:ffff:ffff:ffff,US
2620:7:c000::,2620:7:c000:ffff:ffff:ffff:ffff:ffff,US
2620:7:e000::,2620:7:e000:ffff:ffff:ffff:ffff:ffff,US
2620:8::,2620:8:7f:ffff:ffff:ffff:ffff:ffff,CA
2620:8:4300::,2620:8:4300:ffff:ffff:ffff:ffff:ffff,US
2620:8:8200::,2620:8:8200:ffff:ffff:ffff:ffff:ffff,US
2620:8:c100::,2620:8:c100:ffff:ffff:ffff:ffff:ffff,US
-2620:9::,2620:9::ffff:ffff:ffff:ffff:ffff,US
2620:9:2000::,2620:9:2000:ffff:ffff:ffff:ffff:ffff,US
2620:9:4000::,2620:9:4000:ffff:ffff:ffff:ffff:ffff,US
2620:9:6000::,2620:9:6000:ffff:ffff:ffff:ffff:ffff,US
@@ -16664,7 +15685,6 @@
2620:c::,2620:c:f:ffff:ffff:ffff:ffff:ffff,US
2620:c:2000::,2620:c:2000:ffff:ffff:ffff:ffff:ffff,US
2620:c:4000::,2620:c:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:c:6000::,2620:c:6000:ffff:ffff:ffff:ffff:ffff,CA
2620:c:8000::,2620:c:8000:ffff:ffff:ffff:ffff:ffff,US
2620:c:a000::,2620:c:a000:ffff:ffff:ffff:ffff:ffff,US
2620:c:c000::,2620:c:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -16686,7 +15706,6 @@
2620:e:e000::,2620:e:e000:ffff:ffff:ffff:ffff:ffff,US
2620:f::,2620:f:f:ffff:ffff:ffff:ffff:ffff,US
2620:f:2000::,2620:f:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:f:4000::,2620:f:4000:ffff:ffff:ffff:ffff:ffff,US
2620:f:6000::,2620:f:6000:ffff:ffff:ffff:ffff:ffff,US
2620:f:8000::,2620:f:8000:ffff:ffff:ffff:ffff:ffff,AE
2620:f:a000::,2620:f:a000:ffff:ffff:ffff:ffff:ffff,US
@@ -16730,7 +15749,7 @@
2620:14:8000::,2620:14:8000:ffff:ffff:ffff:ffff:ffff,US
2620:14:a000::,2620:14:a000:ffff:ffff:ffff:ffff:ffff,US
2620:14:c000::,2620:14:c000:ffff:ffff:ffff:ffff:ffff,CA
-2620:14:e000::,2620:14:e000:ffff:ffff:ffff:ffff:ffff,US
+2620:14:e000::,2620:14:e07f:ffff:ffff:ffff:ffff:ffff,US
2620:15::,2620:15::ffff:ffff:ffff:ffff:ffff,US
2620:15:2000::,2620:15:2000:ffff:ffff:ffff:ffff:ffff,US
2620:15:6000::,2620:15:6000:ffff:ffff:ffff:ffff:ffff,CA
@@ -16818,7 +15837,7 @@
2620:1f:e000::,2620:1f:e000:ffff:ffff:ffff:ffff:ffff,US
2620:20::,2620:20::ffff:ffff:ffff:ffff:ffff,US
2620:20:2000::,2620:20:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:20:4000::,2620:20:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:20:4000::,2620:20:407f:ffff:ffff:ffff:ffff:ffff,US
2620:20:6000::,2620:20:6000:ffff:ffff:ffff:ffff:ffff,US
2620:20:8000::,2620:20:8000:ffff:ffff:ffff:ffff:ffff,US
2620:20:a000::,2620:20:a000:ffff:ffff:ffff:ffff:ffff,US
@@ -16830,11 +15849,11 @@
2620:21:6000::,2620:21:600f:ffff:ffff:ffff:ffff:ffff,US
2620:21:8000::,2620:21:8000:ffff:ffff:ffff:ffff:ffff,US
2620:21:a000::,2620:21:a000:ffff:ffff:ffff:ffff:ffff,US
-2620:21:c000::,2620:21:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:21:c000::,2620:21:c07f:ffff:ffff:ffff:ffff:ffff,CA
2620:21:e000::,2620:21:e000:ffff:ffff:ffff:ffff:ffff,US
2620:22::,2620:22::ffff:ffff:ffff:ffff:ffff,US
2620:22:2000::,2620:22:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:22:4000::,2620:22:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:22:4000::,2620:22:407f:ffff:ffff:ffff:ffff:ffff,CA
2620:22:6000::,2620:22:6000:ffff:ffff:ffff:ffff:ffff,US
2620:22:8000::,2620:22:8000:ffff:ffff:ffff:ffff:ffff,US
2620:22:a000::,2620:22:a000:ffff:ffff:ffff:ffff:ffff,US
@@ -16849,7 +15868,7 @@
2620:23:e000::,2620:23:e000:ffff:ffff:ffff:ffff:ffff,US
2620:24::,2620:24:1f:ffff:ffff:ffff:ffff:ffff,US
2620:24:40c0::,2620:24:40c0:ffff:ffff:ffff:ffff:ffff,US
-2620:24:8080::,2620:24:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:24:8080::,2620:24:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:24:c040::,2620:24:c040:ffff:ffff:ffff:ffff:ffff,US
2620:25::,2620:25::ffff:ffff:ffff:ffff:ffff,US
2620:25:2000::,2620:25:2000:ffff:ffff:ffff:ffff:ffff,US
@@ -16947,7 +15966,7 @@
2620:34:4000::,2620:34:4000:ffff:ffff:ffff:ffff:ffff,US
2620:34:6000::,2620:34:600f:ffff:ffff:ffff:ffff:ffff,US
2620:34:8000::,2620:34:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:34:a000::,2620:34:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:34:a000::,2620:34:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:34:c000::,2620:34:c000:ffff:ffff:ffff:ffff:ffff,US
2620:34:e000::,2620:34:e000:ffff:ffff:ffff:ffff:ffff,US
2620:35:2000::,2620:35:2000:ffff:ffff:ffff:ffff:ffff,US
@@ -16958,7 +15977,7 @@
2620:36::,2620:36::ffff:ffff:ffff:ffff:ffff,US
2620:36:2000::,2620:36:2000:ffff:ffff:ffff:ffff:ffff,US
2620:36:4000::,2620:36:400f:ffff:ffff:ffff:ffff:ffff,CA
-2620:36:8000::,2620:36:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:36:8000::,2620:36:807f:ffff:ffff:ffff:ffff:ffff,US
2620:36:a000::,2620:36:a000:ffff:ffff:ffff:ffff:ffff,US
2620:36:c000::,2620:36:c000:ffff:ffff:ffff:ffff:ffff,CA
2620:36:e000::,2620:36:e000:ffff:ffff:ffff:ffff:ffff,US
@@ -16976,7 +15995,7 @@
2620:38:a000::,2620:38:a000:ffff:ffff:ffff:ffff:ffff,US
2620:38:c000::,2620:38:c000:ffff:ffff:ffff:ffff:ffff,US
2620:38:e000::,2620:38:e000:ffff:ffff:ffff:ffff:ffff,US
-2620:39::,2620:39::ffff:ffff:ffff:ffff:ffff,US
+2620:39::,2620:39:f:ffff:ffff:ffff:ffff:ffff,US
2620:39:2000::,2620:39:2000:ffff:ffff:ffff:ffff:ffff,US
2620:39:4000::,2620:39:4000:ffff:ffff:ffff:ffff:ffff,US
2620:39:6000::,2620:39:6000:ffff:ffff:ffff:ffff:ffff,US
@@ -16988,7 +16007,7 @@
2620:3a:4000::,2620:3a:400f:ffff:ffff:ffff:ffff:ffff,US
2620:3a:8000::,2620:3a:8000:ffff:ffff:ffff:ffff:ffff,US
2620:3a:a000::,2620:3a:a000:ffff:ffff:ffff:ffff:ffff,US
-2620:3a:c000::,2620:3a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:3a:c000::,2620:3a:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:3a:e000::,2620:3a:e000:ffff:ffff:ffff:ffff:ffff,US
2620:3b::,2620:3b::ffff:ffff:ffff:ffff:ffff,US
2620:3b:2000::,2620:3b:2000:ffff:ffff:ffff:ffff:ffff,US
@@ -17018,51 +16037,93 @@
2620:3e:c000::,2620:3e:c000:ffff:ffff:ffff:ffff:ffff,US
2620:3e:e000::,2620:3e:e000:ffff:ffff:ffff:ffff:ffff,US
2620:3f::,2620:3f::ffff:ffff:ffff:ffff:ffff,US
+2620:3f:2000::,2620:3f:2000:ffff:ffff:ffff:ffff:ffff,US
2620:3f:4000::,2620:3f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3f:6000::,2620:3f:600f:ffff:ffff:ffff:ffff:ffff,US
2620:3f:8000::,2620:3f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:3f:a000::,2620:3f:a000:ffff:ffff:ffff:ffff:ffff,US
2620:3f:c000::,2620:3f:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:40::,2620:40::ffff:ffff:ffff:ffff:ffff,US
+2620:40:2000::,2620:40:2000:ffff:ffff:ffff:ffff:ffff,US
2620:40:4000::,2620:40:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:40:6000::,2620:40:6000:ffff:ffff:ffff:ffff:ffff,US
2620:40:8000::,2620:40:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:40:a000::,2620:40:a000:ffff:ffff:ffff:ffff:ffff,US
2620:40:c000::,2620:40:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:40:e000::,2620:40:e000:ffff:ffff:ffff:ffff:ffff,US
2620:41::,2620:41:1:ffff:ffff:ffff:ffff:ffff,US
+2620:41:2000::,2620:41:2000:ffff:ffff:ffff:ffff:ffff,US
+2620:41:6000::,2620:41:6000:ffff:ffff:ffff:ffff:ffff,US
2620:41:8000::,2620:41:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:41:a000::,2620:41:a000:ffff:ffff:ffff:ffff:ffff,US
2620:42::,2620:42::ffff:ffff:ffff:ffff:ffff,US
+2620:42:2000::,2620:42:2000:ffff:ffff:ffff:ffff:ffff,US
2620:42:4000::,2620:42:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:42:6000::,2620:42:6000:ffff:ffff:ffff:ffff:ffff,US
+2620:42:a000::,2620:42:a000:ffff:ffff:ffff:ffff:ffff,US
2620:42:c000::,2620:42:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:42:e000::,2620:42:e000:ffff:ffff:ffff:ffff:ffff,CA
2620:43::,2620:43::ffff:ffff:ffff:ffff:ffff,US
+2620:43:2000::,2620:43:2000:ffff:ffff:ffff:ffff:ffff,US
2620:43:4000::,2620:43:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:43:6000::,2620:43:6000:ffff:ffff:ffff:ffff:ffff,US
2620:43:8000::,2620:43:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:43:a000::,2620:43:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:43:e000::,2620:43:e000:ffff:ffff:ffff:ffff:ffff,US
2620:44::,2620:44:1:ffff:ffff:ffff:ffff:ffff,US
+2620:44:2000::,2620:44:2000:ffff:ffff:ffff:ffff:ffff,US
2620:44:4000::,2620:44:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:44:6000::,2620:44:6000:ffff:ffff:ffff:ffff:ffff,US
2620:44:8000::,2620:44:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:44:a000::,2620:44:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:44:e000::,2620:44:e000:ffff:ffff:ffff:ffff:ffff,CA
2620:45::,2620:45::ffff:ffff:ffff:ffff:ffff,CA
+2620:45:2000::,2620:45:2000:ffff:ffff:ffff:ffff:ffff,CA
2620:45:4000::,2620:45:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:45:6000::,2620:45:6000:ffff:ffff:ffff:ffff:ffff,US
2620:45:8000::,2620:45:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:45:a000::,2620:45:a000:ffff:ffff:ffff:ffff:ffff,US
2620:45:c000::,2620:45:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:45:e000::,2620:45:e000:ffff:ffff:ffff:ffff:ffff,US
2620:46::,2620:46::ffff:ffff:ffff:ffff:ffff,US
+2620:46:2000::,2620:46:2000:ffff:ffff:ffff:ffff:ffff,US
2620:46:4000::,2620:46:4000:ffff:ffff:ffff:ffff:ffff,CA
-2620:46:8000::,2620:46:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:46:6000::,2620:46:6000:ffff:ffff:ffff:ffff:ffff,CA
+2620:46:8000::,2620:46:807f:ffff:ffff:ffff:ffff:ffff,US
+2620:46:a000::,2620:46:a000:ffff:ffff:ffff:ffff:ffff,US
2620:46:c000::,2620:46:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:47::,2620:47::ffff:ffff:ffff:ffff:ffff,US
+2620:47:2000::,2620:47:2000:ffff:ffff:ffff:ffff:ffff,US
2620:47:4000::,2620:47:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:6000::,2620:47:6000:ffff:ffff:ffff:ffff:ffff,US
2620:47:8000::,2620:47:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:a000::,2620:47:a000:ffff:ffff:ffff:ffff:ffff,US
2620:47:c000::,2620:47:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:e000::,2620:47:e000:ffff:ffff:ffff:ffff:ffff,US
2620:48::,2620:48::ffff:ffff:ffff:ffff:ffff,US
+2620:48:2000::,2620:48:2000:ffff:ffff:ffff:ffff:ffff,US
2620:48:4000::,2620:48:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:48:6000::,2620:48:6000:ffff:ffff:ffff:ffff:ffff,US
2620:48:8000::,2620:48:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:48:a000::,2620:48:a000:ffff:ffff:ffff:ffff:ffff,VG
2620:48:c000::,2620:48:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:49::,2620:49:f:ffff:ffff:ffff:ffff:ffff,CA
2620:49:40c0::,2620:49:40c0:ffff:ffff:ffff:ffff:ffff,US
2620:49:8080::,2620:49:8080:ffff:ffff:ffff:ffff:ffff,US
2620:49:c040::,2620:49:c040:ffff:ffff:ffff:ffff:ffff,US
2620:4a::,2620:4a::ffff:ffff:ffff:ffff:ffff,US
+2620:4a:2000::,2620:4a:2000:ffff:ffff:ffff:ffff:ffff,US
2620:4a:4000::,2620:4a:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4a:6000::,2620:4a:6000:ffff:ffff:ffff:ffff:ffff,US
2620:4a:8000::,2620:4a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4a:a000::,2620:4a:a000:ffff:ffff:ffff:ffff:ffff,US
2620:4a:c000::,2620:4a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4a:e000::,2620:4a:e000:ffff:ffff:ffff:ffff:ffff,US
2620:4b::,2620:4b::ffff:ffff:ffff:ffff:ffff,CA
+2620:4b:2000::,2620:4b:2000:ffff:ffff:ffff:ffff:ffff,US
2620:4b:4000::,2620:4b:400f:ffff:ffff:ffff:ffff:ffff,US
2620:4b:8000::,2620:4b:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:4b:a000::,2620:4b:a000:ffff:ffff:ffff:ffff:ffff,CA
2620:4b:c000::,2620:4b:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:4c::,2620:4c:1:ffff:ffff:ffff:ffff:ffff,US
2620:4c:4000::,2620:4c:400f:ffff:ffff:ffff:ffff:ffff,US
@@ -17112,10 +16173,10 @@
2620:57:4000::,2620:57:40ff:ffff:ffff:ffff:ffff:ffff,KY
2620:57:8000::,2620:57:8000:ffff:ffff:ffff:ffff:ffff,US
2620:58::,2620:58:ff:ffff:ffff:ffff:ffff:ffff,US
-2620:58:4c00::,2620:58:4c00:ffff:ffff:ffff:ffff:ffff,US
+2620:58:4c00::,2620:58:4c7f:ffff:ffff:ffff:ffff:ffff,US
2620:58:8800::,2620:58:8800:ffff:ffff:ffff:ffff:ffff,US
2620:58:c400::,2620:58:c400:ffff:ffff:ffff:ffff:ffff,CA
-2620:59::,2620:59::ffff:ffff:ffff:ffff:ffff,US
+2620:59::,2620:59:7f:ffff:ffff:ffff:ffff:ffff,US
2620:59:4000::,2620:59:4000:ffff:ffff:ffff:ffff:ffff,US
2620:59:8000::,2620:59:8000:ffff:ffff:ffff:ffff:ffff,US
2620:59:c000::,2620:59:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17160,11 +16221,10 @@
2620:64::,2620:64::ffff:ffff:ffff:ffff:ffff,US
2620:64:4000::,2620:64:4000:ffff:ffff:ffff:ffff:ffff,US
2620:64:c000::,2620:64:c00f:ffff:ffff:ffff:ffff:ffff,US
-2620:65::,2620:65::7fff:ffff:ffff:ffff:ffff,MX
-2620:65:0:8000::,2620:65:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:65::,2620:65:ff:ffff:ffff:ffff:ffff:ffff,US
2620:65:4080::,2620:65:4080:ffff:ffff:ffff:ffff:ffff,US
-2620:65:8000::,2620:65:800f:ffff:ffff:ffff:ffff:ffff,US
-2620:65:c000::,2620:65:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:65:8000::,2620:65:807f:ffff:ffff:ffff:ffff:ffff,US
+2620:65:c000::,2620:65:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:66::,2620:66::ffff:ffff:ffff:ffff:ffff,CA
2620:66:4000::,2620:66:400f:ffff:ffff:ffff:ffff:ffff,US
2620:66:8000::,2620:66:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17211,7 +16271,7 @@
2620:71:4000::,2620:71:4000:ffff:ffff:ffff:ffff:ffff,US
2620:71:8000::,2620:71:8000:ffff:ffff:ffff:ffff:ffff,US
2620:71:c000::,2620:71:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:72::,2620:72::ffff:ffff:ffff:ffff:ffff,US
+2620:72::,2620:72:7f:ffff:ffff:ffff:ffff:ffff,US
2620:72:4000::,2620:72:4000:ffff:ffff:ffff:ffff:ffff,US
2620:72:8000::,2620:72:8000:ffff:ffff:ffff:ffff:ffff,US
2620:72:c000::,2620:72:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17226,7 +16286,10 @@
2620:74:3b::,2620:74:3b:ffff:ffff:ffff:ffff:ffff,US
2620:74:3c::,2620:74:3e:ffff:ffff:ffff:ffff:ffff,DE
2620:74:3f::,2620:74:3f:ffff:ffff:ffff:ffff:ffff,JP
-2620:74:40::,2620:74:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:74:40::,2620:74:48:ffff:ffff:ffff:ffff:ffff,US
+2620:74:49::,2620:74:4a:ffff:ffff:ffff:ffff:ffff,DE
+2620:74:4b::,2620:74:4c:ffff:ffff:ffff:ffff:ffff,HK
+2620:74:4d::,2620:74:ff:ffff:ffff:ffff:ffff:ffff,US
2620:74:40c0::,2620:74:40c0:ffff:ffff:ffff:ffff:ffff,US
2620:74:8080::,2620:74:8080:ffff:ffff:ffff:ffff:ffff,US
2620:74:c040::,2620:74:c040:ffff:ffff:ffff:ffff:ffff,US
@@ -17269,7 +16332,7 @@
2620:7e::,2620:7e:f:ffff:ffff:ffff:ffff:ffff,US
2620:7e:30e0::,2620:7e:30e0:ffff:ffff:ffff:ffff:ffff,US
2620:7e:60c0::,2620:7e:60c0:ffff:ffff:ffff:ffff:ffff,US
-2620:7e:90a0::,2620:7e:90a0:ffff:ffff:ffff:ffff:ffff,US
+2620:7e:9080::,2620:7e:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:7e:c080::,2620:7e:c080:ffff:ffff:ffff:ffff:ffff,US
2620:7e:f060::,2620:7e:f060:ffff:ffff:ffff:ffff:ffff,CA
2620:7f:8000::,2620:7f:8000:ffff:ffff:ffff:ffff:ffff,CA
@@ -17285,8 +16348,8 @@
2620:82:8000::,2620:82:8000:ffff:ffff:ffff:ffff:ffff,US
2620:82:c000::,2620:82:c000:ffff:ffff:ffff:ffff:ffff,US
2620:83::,2620:83::ffff:ffff:ffff:ffff:ffff,US
-2620:83:4000::,2620:83:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:83:8000::,2620:83:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:83:4000::,2620:83:407f:ffff:ffff:ffff:ffff:ffff,US
+2620:83:8000::,2620:83:807f:ffff:ffff:ffff:ffff:ffff,US
2620:83:c000::,2620:83:c000:ffff:ffff:ffff:ffff:ffff,US
2620:84::,2620:84:1:ffff:ffff:ffff:ffff:ffff,US
2620:84:4000::,2620:84:4000:ffff:ffff:ffff:ffff:ffff,US
@@ -17310,7 +16373,7 @@
2620:88:c000::,2620:88:c000:ffff:ffff:ffff:ffff:ffff,US
2620:89::,2620:89::ffff:ffff:ffff:ffff:ffff,US
2620:89:8000::,2620:89:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:89:c000::,2620:89:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:89:c000::,2620:89:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:8a::,2620:8a::ffff:ffff:ffff:ffff:ffff,US
2620:8a:4000::,2620:8a:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:8a:8000::,2620:8a:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17323,7 +16386,7 @@
2620:8c:8000::,2620:8c:8000:ffff:ffff:ffff:ffff:ffff,US
2620:8d::,2620:8d::ffff:ffff:ffff:ffff:ffff,US
2620:8d:4000::,2620:8d:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:8d:8000::,2620:8d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:8d:8000::,2620:8d:807f:ffff:ffff:ffff:ffff:ffff,US
2620:8d:c000::,2620:8d:c000:ffff:ffff:ffff:ffff:ffff,US
2620:8e:4000::,2620:8e:4000:ffff:ffff:ffff:ffff:ffff,US
2620:8e:8000::,2620:8e:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17336,7 +16399,7 @@
2620:90:4000::,2620:90:4000:ffff:ffff:ffff:ffff:ffff,US
2620:90:8000::,2620:90:8000:ffff:ffff:ffff:ffff:ffff,US
2620:90:c000::,2620:90:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:91::,2620:91::ffff:ffff:ffff:ffff:ffff,US
+2620:91::,2620:91:7f:ffff:ffff:ffff:ffff:ffff,US
2620:91:4000::,2620:91:4000:ffff:ffff:ffff:ffff:ffff,US
2620:91:8000::,2620:91:8000:ffff:ffff:ffff:ffff:ffff,US
2620:91:c000::,2620:91:c00f:ffff:ffff:ffff:ffff:ffff,US
@@ -17364,7 +16427,7 @@
2620:98::,2620:98::ffff:ffff:ffff:ffff:ffff,US
2620:98:4000::,2620:98:400f:ffff:ffff:ffff:ffff:ffff,CA
2620:98:8000::,2620:98:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:98:c000::,2620:98:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:98:c000::,2620:98:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:99::,2620:99::ffff:ffff:ffff:ffff:ffff,US
2620:99:8000::,2620:99:8000:ffff:ffff:ffff:ffff:ffff,US
2620:99:c000::,2620:99:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17406,14 +16469,14 @@
2620:a3:8000::,2620:a3:8000:ffff:ffff:ffff:ffff:ffff,US
2620:a3:a010::,2620:a3:a010:ffff:ffff:ffff:ffff:ffff,US
2620:a3:c020::,2620:a3:c020:ffff:ffff:ffff:ffff:ffff,US
-2620:a3:e030::,2620:a3:e030:ffff:ffff:ffff:ffff:ffff,US
+2620:a3:e000::,2620:a3:e07f:ffff:ffff:ffff:ffff:ffff,US
2620:a4:40::,2620:a4:40:ffff:ffff:ffff:ffff:ffff,US
2620:a4:2050::,2620:a4:205f:ffff:ffff:ffff:ffff:ffff,US
2620:a4:4060::,2620:a4:4060:ffff:ffff:ffff:ffff:ffff,US
2620:a4:6070::,2620:a4:6070:ffff:ffff:ffff:ffff:ffff,US
2620:a4:8080::,2620:a4:8080:ffff:ffff:ffff:ffff:ffff,US
2620:a5::,2620:a5::ffff:ffff:ffff:ffff:ffff,US
-2620:a5:4000::,2620:a5:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:a5:4000::,2620:a5:407f:ffff:ffff:ffff:ffff:ffff,US
2620:a5:8000::,2620:a5:8000:ffff:ffff:ffff:ffff:ffff,US
2620:a5:c000::,2620:a5:c000:ffff:ffff:ffff:ffff:ffff,US
2620:a6::,2620:a6::ffff:ffff:ffff:ffff:ffff,US
@@ -17448,10 +16511,10 @@
2620:ad:4000::,2620:ad:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ad:8000::,2620:ad:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:ad:c000::,2620:ad:c000:ffff:ffff:ffff:ffff:ffff,CA
-2620:ae::,2620:ae::ffff:ffff:ffff:ffff:ffff,CA
+2620:ae::,2620:ae:7f:ffff:ffff:ffff:ffff:ffff,CA
2620:ae:4000::,2620:ae:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ae:8000::,2620:ae:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:ae:c000::,2620:ae:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:ae:c000::,2620:ae:c07f:ffff:ffff:ffff:ffff:ffff,CA
2620:af::,2620:af:f:ffff:ffff:ffff:ffff:ffff,US
2620:af:4000::,2620:af:4000:ffff:ffff:ffff:ffff:ffff,US
2620:af:8000::,2620:af:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17484,12 +16547,11 @@
2620:b6:8000::,2620:b6:8000:ffff:ffff:ffff:ffff:ffff,US
2620:b6:c000::,2620:b6:c000:ffff:ffff:ffff:ffff:ffff,US
2620:b7::,2620:b7::ffff:ffff:ffff:ffff:ffff,US
+2620:b7:4000::,2620:b7:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:b7:8000::,2620:b7:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:b7:c000::,2620:b7:c000:ffff:ffff:ffff:ffff:ffff,US
2620:b8::,2620:b8::ffff:ffff:ffff:ffff:ffff,US
-2620:b8:4000::,2620:b8:4000:fff:ffff:ffff:ffff:ffff,CA
-2620:b8:4000:1000::,2620:b8:4000:10ff:ffff:ffff:ffff:ffff,US
-2620:b8:4000:1100::,2620:b8:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:b8:4000::,2620:b8:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:b8:8000::,2620:b8:8000:ffff:ffff:ffff:ffff:ffff,US
2620:b8:c000::,2620:b8:c000:ffff:ffff:ffff:ffff:ffff,US
2620:b9::,2620:b9::ffff:ffff:ffff:ffff:ffff,US
@@ -17523,13 +16585,13 @@
2620:c0:8000::,2620:c0:8000:ffff:ffff:ffff:ffff:ffff,US
2620:c0:c000::,2620:c0:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:c1::,2620:c1::ffff:ffff:ffff:ffff:ffff,US
-2620:c1:4000::,2620:c1:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c1:4000::,2620:c1:407f:ffff:ffff:ffff:ffff:ffff,US
2620:c1:8000::,2620:c1:8000:ffff:ffff:ffff:ffff:ffff,US
2620:c1:c000::,2620:c1:c000:ffff:ffff:ffff:ffff:ffff,CA
2620:c2::,2620:c2::ffff:ffff:ffff:ffff:ffff,US
2620:c2:4000::,2620:c2:4000:ffff:ffff:ffff:ffff:ffff,US
2620:c2:8000::,2620:c2:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:c2:c000::,2620:c2:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c2:c000::,2620:c2:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:c3::,2620:c3::ffff:ffff:ffff:ffff:ffff,US
2620:c3:4000::,2620:c3:4000:ffff:ffff:ffff:ffff:ffff,US
2620:c3:8000::,2620:c3:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17541,7 +16603,7 @@
2620:c5::,2620:c5::ffff:ffff:ffff:ffff:ffff,US
2620:c5:4000::,2620:c5:4000:ffff:ffff:ffff:ffff:ffff,US
2620:c5:c000::,2620:c5:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:c6::,2620:c6::ffff:ffff:ffff:ffff:ffff,US
+2620:c6::,2620:c6:7f:ffff:ffff:ffff:ffff:ffff,US
2620:c6:4000::,2620:c6:4000:ffff:ffff:ffff:ffff:ffff,US
2620:c6:8000::,2620:c6:8000:ffff:ffff:ffff:ffff:ffff,US
2620:c6:c000::,2620:c6:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17560,13 +16622,13 @@
2620:ca:4000::,2620:ca:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ca:8000::,2620:ca:8000:ffff:ffff:ffff:ffff:ffff,US
2620:ca:c000::,2620:ca:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:cb::,2620:cb:f:ffff:ffff:ffff:ffff:ffff,US
+2620:cb::,2620:cb:7f:ffff:ffff:ffff:ffff:ffff,US
2620:cb:4000::,2620:cb:4000:ffff:ffff:ffff:ffff:ffff,US
2620:cb:8000::,2620:cb:8000:ffff:ffff:ffff:ffff:ffff,US
2620:cb:c000::,2620:cb:c000:ffff:ffff:ffff:ffff:ffff,US
2620:cc::,2620:cc::ffff:ffff:ffff:ffff:ffff,US
2620:cc:4000::,2620:cc:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:cc:8000::,2620:cc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cc:8000::,2620:cc:807f:ffff:ffff:ffff:ffff:ffff,US
2620:cc:c000::,2620:cc:c000:ffff:ffff:ffff:ffff:ffff,US
2620:cd::,2620:cd::ffff:ffff:ffff:ffff:ffff,US
2620:cd:4000::,2620:cd:4000:ffff:ffff:ffff:ffff:ffff,US
@@ -17578,7 +16640,7 @@
2620:ce:c000::,2620:ce:c000:ffff:ffff:ffff:ffff:ffff,US
2620:cf:4000::,2620:cf:4000:ffff:ffff:ffff:ffff:ffff,US
2620:cf:8000::,2620:cf:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:cf:c000::,2620:cf:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:cf:c000::,2620:cf:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:d0::,2620:d0::ffff:ffff:ffff:ffff:ffff,US
2620:d0:4000::,2620:d0:4000:ffff:ffff:ffff:ffff:ffff,US
2620:d0:8000::,2620:d0:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17589,7 +16651,6 @@
2620:d1:c000::,2620:d1:c000:ffff:ffff:ffff:ffff:ffff,US
2620:d2::,2620:d2::ffff:ffff:ffff:ffff:ffff,US
2620:d2:4000::,2620:d2:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:d2:8000::,2620:d2:8000:ffff:ffff:ffff:ffff:ffff,US
2620:d2:c000::,2620:d2:c000:ffff:ffff:ffff:ffff:ffff,CA
2620:d3:4000::,2620:d3:4000:ffff:ffff:ffff:ffff:ffff,US
2620:d3:8000::,2620:d3:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17616,7 +16677,6 @@
2620:d9::,2620:d9::ffff:ffff:ffff:ffff:ffff,US
2620:d9:4000::,2620:d9:4000:ffff:ffff:ffff:ffff:ffff,US
2620:d9:8000::,2620:d9:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:d9:c000::,2620:d9:c000:ffff:ffff:ffff:ffff:ffff,US
2620:da::,2620:da::ffff:ffff:ffff:ffff:ffff,US
2620:da:4000::,2620:da:4000:ffff:ffff:ffff:ffff:ffff,US
2620:da:c000::,2620:da:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17639,12 +16699,12 @@
2620:de:c000::,2620:de:c000:ffff:ffff:ffff:ffff:ffff,US
2620:df::,2620:df::ffff:ffff:ffff:ffff:ffff,US
2620:df:4000::,2620:df:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:df:8000::,2620:df:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:df:8000::,2620:df:807f:ffff:ffff:ffff:ffff:ffff,US
2620:df:c000::,2620:df:c000:ffff:ffff:ffff:ffff:ffff,US
2620:e0::,2620:e0::ffff:ffff:ffff:ffff:ffff,US
2620:e0:4000::,2620:e0:4000:ffff:ffff:ffff:ffff:ffff,US
2620:e0:8000::,2620:e0:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:e0:c000::,2620:e0:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e0:c000::,2620:e0:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:e1::,2620:e1::ffff:ffff:ffff:ffff:ffff,US
2620:e1:4000::,2620:e1:4000:ffff:ffff:ffff:ffff:ffff,US
2620:e1:8000::,2620:e1:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17684,7 +16744,6 @@
2620:ea::,2620:ea:f:ffff:ffff:ffff:ffff:ffff,US
2620:ea:4000::,2620:ea:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ea:8000::,2620:ea:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:ea:c000::,2620:ea:c000:ffff:ffff:ffff:ffff:ffff,US
2620:eb::,2620:eb::ffff:ffff:ffff:ffff:ffff,US
2620:eb:4000::,2620:eb:4000:ffff:ffff:ffff:ffff:ffff,US
2620:eb:8000::,2620:eb:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17694,9 +16753,9 @@
2620:ec:8000::,2620:ec:8000:ffff:ffff:ffff:ffff:ffff,US
2620:ec:c000::,2620:ec:c000:ffff:ffff:ffff:ffff:ffff,US
2620:ed::,2620:ed::ffff:ffff:ffff:ffff:ffff,US
-2620:ed:4000::,2620:ed:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:ed:4000::,2620:ed:407f:ffff:ffff:ffff:ffff:ffff,CA
2620:ed:8000::,2620:ed:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:ed:c000::,2620:ed:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ed:c000::,2620:ed:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:ee::,2620:ee::ffff:ffff:ffff:ffff:ffff,US
2620:ee:4000::,2620:ee:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ee:8000::,2620:ee:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17716,14 +16775,14 @@
2620:f0:c00b::,2620:f0:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:f1:4000::,2620:f1:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:f1:8000::,2620:f1:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:f1:c000::,2620:f1:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f1:c000::,2620:f1:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:f2::,2620:f2::ffff:ffff:ffff:ffff:ffff,CA
2620:f2:4000::,2620:f2:4000:ffff:ffff:ffff:ffff:ffff,US
2620:f2:8000::,2620:f2:8000:ffff:ffff:ffff:ffff:ffff,US
2620:f2:c000::,2620:f2:c000:ffff:ffff:ffff:ffff:ffff,US
2620:f3::,2620:f3::ffff:ffff:ffff:ffff:ffff,US
2620:f3:4000::,2620:f3:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:f3:8000::,2620:f3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f3:8000::,2620:f3:807f:ffff:ffff:ffff:ffff:ffff,US
2620:f3:c000::,2620:f3:c000:ffff:ffff:ffff:ffff:ffff,US
2620:f4::,2620:f4::ffff:ffff:ffff:ffff:ffff,US
2620:f4:4000::,2620:f4:40ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17756,7 +16815,7 @@
2620:fb::,2620:fb::ffff:ffff:ffff:ffff:ffff,US
2620:fb:4000::,2620:fb:4000:ffff:ffff:ffff:ffff:ffff,US
2620:fb:8000::,2620:fb:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:fc::,2620:fc::ffff:ffff:ffff:ffff:ffff,CA
+2620:fc::,2620:fc:7f:ffff:ffff:ffff:ffff:ffff,CA
2620:fc:4000::,2620:fc:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:fc:8000::,2620:fc:8000:ffff:ffff:ffff:ffff:ffff,US
2620:fc:c000::,2620:fc:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17793,19 +16852,17 @@
2620:101:5000::,2620:101:503f:ffff:ffff:ffff:ffff:ffff,US
2620:101:6000::,2620:101:6001:ffff:ffff:ffff:ffff:ffff,US
2620:101:7000::,2620:101:7001:ffff:ffff:ffff:ffff:ffff,US
-2620:101:8000::,2620:101:80f1:ffff:ffff:ffff:ffff:ffff,US
-2620:101:80f2::,2620:101:80f2:7fff:ffff:ffff:ffff:ffff,CA
-2620:101:80f2:8000::,2620:101:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:101:8000::,2620:101:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:101:9000::,2620:101:900f:ffff:ffff:ffff:ffff:ffff,US
2620:101:b000::,2620:101:b07f:ffff:ffff:ffff:ffff:ffff,US
2620:101:c000::,2620:101:c0ff:ffff:ffff:ffff:ffff:ffff,CA
2620:101:d000::,2620:101:d007:ffff:ffff:ffff:ffff:ffff,US
2620:101:e000::,2620:101:e00f:ffff:ffff:ffff:ffff:ffff,US
-2620:101:f000::,2620:101:f001:ffff:ffff:ffff:ffff:ffff,CA
+2620:101:f000::,2620:101:f07f:ffff:ffff:ffff:ffff:ffff,CA
2620:102::,2620:102:f:ffff:ffff:ffff:ffff:ffff,US
2620:102:2000::,2620:102:200f:ffff:ffff:ffff:ffff:ffff,US
2620:102:3000::,2620:102:300f:ffff:ffff:ffff:ffff:ffff,US
-2620:102:4000::,2620:102:403f:ffff:ffff:ffff:ffff:ffff,US
+2620:102:4000::,2620:102:407f:ffff:ffff:ffff:ffff:ffff,US
2620:102:5000::,2620:102:501f:ffff:ffff:ffff:ffff:ffff,US
2620:102:6000::,2620:102:6003:ffff:ffff:ffff:ffff:ffff,US
2620:102:7000::,2620:102:700f:ffff:ffff:ffff:ffff:ffff,US
@@ -17820,13 +16877,13 @@
2620:103:1000::,2620:103:100f:ffff:ffff:ffff:ffff:ffff,US
2620:103:2000::,2620:103:200f:ffff:ffff:ffff:ffff:ffff,CA
2620:103:3000::,2620:103:30ff:ffff:ffff:ffff:ffff:ffff,US
-2620:103:4000::,2620:103:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:103:4000::,2620:103:407f:ffff:ffff:ffff:ffff:ffff,US
2620:103:5000::,2620:103:500f:ffff:ffff:ffff:ffff:ffff,US
2620:103:6000::,2620:103:600f:ffff:ffff:ffff:ffff:ffff,US
2620:103:7000::,2620:103:700f:ffff:ffff:ffff:ffff:ffff,US
2620:103:8000::,2620:103:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:103:9000::,2620:103:90ff:ffff:ffff:ffff:ffff:ffff,US
-2620:103:a000::,2620:103:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:103:a000::,2620:103:a07f:ffff:ffff:ffff:ffff:ffff,US
2620:103:b000::,2620:103:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:103:c000::,2620:103:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:103:d000::,2620:103:d00f:ffff:ffff:ffff:ffff:ffff,US
@@ -17835,9 +16892,7 @@
2620:104:1000::,2620:104:100f:ffff:ffff:ffff:ffff:ffff,US
2620:104:2000::,2620:104:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:104:3000::,2620:104:300f:ffff:ffff:ffff:ffff:ffff,US
-2620:104:4000::,2620:104:4001:ffff:ffff:ffff:ffff:ffff,GB
-2620:104:4002::,2620:104:4003:ffff:ffff:ffff:ffff:ffff,US
-2620:104:4004::,2620:104:4007:ffff:ffff:ffff:ffff:ffff,GB
+2620:104:4000::,2620:104:4007:ffff:ffff:ffff:ffff:ffff,GB
2620:104:4008::,2620:104:400f:ffff:ffff:ffff:ffff:ffff,US
2620:104:5000::,2620:104:500f:ffff:ffff:ffff:ffff:ffff,US
2620:104:6000::,2620:104:600f:ffff:ffff:ffff:ffff:ffff,US
@@ -17861,7 +16916,7 @@
2620:105:9000::,2620:105:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:105:a000::,2620:105:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:105:b000::,2620:105:b0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:105:c000::,2620:105:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:105:c000::,2620:105:c07f:ffff:ffff:ffff:ffff:ffff,US
2620:105:e000::,2620:105:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:105:f000::,2620:105:f0ff:ffff:ffff:ffff:ffff:ffff,US
2620:106::,2620:106:f:ffff:ffff:ffff:ffff:ffff,US
@@ -17870,20 +16925,17 @@
2620:106:3000::,2620:106:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:106:4000::,2620:106:400f:ffff:ffff:ffff:ffff:ffff,US
2620:106:5000::,2620:106:50ff:ffff:ffff:ffff:ffff:ffff,US
-2620:106:6000::,2620:106:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:106:6000::,2620:106:607f:ffff:ffff:ffff:ffff:ffff,US
2620:106:7000::,2620:106:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:106:8000::,2620:106:800f:ffff:ffff:ffff:ffff:ffff,US
2620:106:9000::,2620:106:900f:ffff:ffff:ffff:ffff:ffff,US
-2620:106:a000::,2620:106:a000:ffff:ffff:ffff:ffff:ffff,US
-2620:106:a001::,2620:106:a001:7fff:ffff:ffff:ffff:ffff,IN
-2620:106:a001:8000::,2620:106:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:106:a000::,2620:106:a07f:ffff:ffff:ffff:ffff:ffff,US
2620:106:b000::,2620:106:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:106:c000::,2620:106:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:106:d000::,2620:106:d0ff:ffff:ffff:ffff:ffff:ffff,US
2620:106:e000::,2620:106:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:106:f000::,2620:106:f00f:ffff:ffff:ffff:ffff:ffff,CA
2620:107::,2620:107:ff:ffff:ffff:ffff:ffff:ffff,US
-2620:107:1000::,2620:107:100f:ffff:ffff:ffff:ffff:ffff,US
2620:107:2000::,2620:107:200f:ffff:ffff:ffff:ffff:ffff,US
2620:107:3000::,2620:107:300f:ffff:ffff:ffff:ffff:ffff,US
2620:107:4000::,2620:107:4000:77ff:ffff:ffff:ffff:ffff,US
@@ -17906,7 +16958,6 @@
2620:108:4000::,2620:108:40ff:ffff:ffff:ffff:ffff:ffff,US
2620:108:5000::,2620:108:500f:ffff:ffff:ffff:ffff:ffff,US
2620:108:6000::,2620:108:700f:ffff:ffff:ffff:ffff:ffff,US
-2620:108:8000::,2620:108:800f:ffff:ffff:ffff:ffff:ffff,US
2620:108:9000::,2620:108:900f:ffff:ffff:ffff:ffff:ffff,US
2620:108:a000::,2620:108:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:108:b000::,2620:108:b00f:ffff:ffff:ffff:ffff:ffff,US
@@ -17988,13 +17039,7 @@
2620:10d:9000::,2620:10d:900f:ffff:ffff:ffff:ffff:ffff,US
2620:10d:a000::,2620:10d:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:10d:b000::,2620:10d:b00f:ffff:ffff:ffff:ffff:ffff,US
-2620:10d:c000::,2620:10d:c091:ffff:ffff:ffff:ffff:ffff,US
-2620:10d:c092::,2620:10d:c092:7fff:ffff:ffff:ffff:ffff,IE
-2620:10d:c092:8000::,2620:10d:c092:ffff:ffff:ffff:ffff:ffff,US
-2620:10d:c093::,2620:10d:c093:7fff:ffff:ffff:ffff:ffff,FR
-2620:10d:c093:8000::,2620:10d:c099:ffff:ffff:ffff:ffff:ffff,US
-2620:10d:c09a::,2620:10d:c09a:7fff:ffff:ffff:ffff:ffff,BR
-2620:10d:c09a:8000::,2620:10d:c0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:10d:c000::,2620:10d:c0ff:ffff:ffff:ffff:ffff:ffff,US
2620:10d:d000::,2620:10d:d00f:ffff:ffff:ffff:ffff:ffff,CA
2620:10d:e000::,2620:10d:e00f:ffff:ffff:ffff:ffff:ffff,CA
2620:10e::,2620:10e:f:ffff:ffff:ffff:ffff:ffff,US
@@ -18070,7 +17115,7 @@
2620:112:a000::,2620:112:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:112:b000::,2620:112:b0ff:ffff:ffff:ffff:ffff:ffff,US
2620:112:c000::,2620:112:c0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:112:d000::,2620:112:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:112:d000::,2620:112:d07f:ffff:ffff:ffff:ffff:ffff,US
2620:112:e000::,2620:112:e00f:ffff:ffff:ffff:ffff:ffff,US
2620:112:f000::,2620:112:f00f:ffff:ffff:ffff:ffff:ffff,US
2620:113::,2620:113:f:ffff:ffff:ffff:ffff:ffff,US
@@ -18081,9 +17126,8 @@
2620:113:5000::,2620:113:500f:ffff:ffff:ffff:ffff:ffff,US
2620:113:6000::,2620:113:600f:ffff:ffff:ffff:ffff:ffff,US
2620:113:7000::,2620:113:700f:ffff:ffff:ffff:ffff:ffff,US
-2620:113:8000::,2620:113:80bf:ffff:ffff:ffff:ffff:ffff,US
-2620:113:80c0::,2620:113:80c0:7fff:ffff:ffff:ffff:ffff,DE
-2620:113:80c0:8000::,2620:113:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:113:8000::,2620:113:807f:ffff:ffff:ffff:ffff:ffff,US
+2620:113:8080::,2620:113:80ff:ffff:ffff:ffff:ffff:ffff,DE
2620:113:9000::,2620:113:900f:ffff:ffff:ffff:ffff:ffff,US
2620:113:a000::,2620:113:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:113:c000::,2620:113:c0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18103,8 +17147,7 @@
2620:114:d000::,2620:114:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:114:e000::,2620:114:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:114:f000::,2620:114:f00f:ffff:ffff:ffff:ffff:ffff,US
-2620:115::,2620:115:f:ffff:ffff:ffff:ffff:ffff,US
-2620:115:15::,2620:115:15:7fff:ffff:ffff:ffff:ffff,US
+2620:115::,2620:115:7f:ffff:ffff:ffff:ffff:ffff,US
2620:115:1000::,2620:115:100f:ffff:ffff:ffff:ffff:ffff,US
2620:115:2000::,2620:115:200f:ffff:ffff:ffff:ffff:ffff,US
2620:115:3000::,2620:115:300f:ffff:ffff:ffff:ffff:ffff,US
@@ -18127,9 +17170,7 @@
2620:116:5000::,2620:116:50ff:ffff:ffff:ffff:ffff:ffff,US
2620:116:6000::,2620:116:600f:ffff:ffff:ffff:ffff:ffff,US
2620:116:7000::,2620:116:700f:ffff:ffff:ffff:ffff:ffff,US
-2620:116:8000::,2620:116:8086:ffff:ffff:ffff:ffff:ffff,US
-2620:116:8087::,2620:116:8087:7fff:ffff:ffff:ffff:ffff,AU
-2620:116:8087:8000::,2620:116:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:116:8000::,2620:116:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:116:9000::,2620:116:90ff:ffff:ffff:ffff:ffff:ffff,CA
2620:116:a000::,2620:116:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:116:b000::,2620:116:b0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18149,7 +17190,8 @@
2620:117:9000::,2620:117:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:a000::,2620:117:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:b000::,2620:117:b0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:117:c000::,2620:117:c0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:117:c000::,2620:117:c07f:ffff:ffff:ffff:ffff:ffff,US
+2620:117:c080::,2620:117:c0ff:ffff:ffff:ffff:ffff:ffff,ID
2620:117:d000::,2620:117:d0ff:ffff:ffff:ffff:ffff:ffff,CA
2620:117:e000::,2620:117:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:118:1000::,2620:118:10ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18174,9 +17216,7 @@
2620:119:2000::,2620:119:200f:ffff:ffff:ffff:ffff:ffff,US
2620:119:3000::,2620:119:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:4000::,2620:119:40ff:ffff:ffff:ffff:ffff:ffff,US
-2620:119:5000::,2620:119:500d:ffff:ffff:ffff:ffff:ffff,US
-2620:119:500e::,2620:119:500e:7fff:ffff:ffff:ffff:ffff,BR
-2620:119:500e:8000::,2620:119:50ff:ffff:ffff:ffff:ffff:ffff,US
+2620:119:5000::,2620:119:50ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:6000::,2620:119:600f:ffff:ffff:ffff:ffff:ffff,US
2620:119:7000::,2620:119:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:8000::,2620:119:800f:ffff:ffff:ffff:ffff:ffff,US
@@ -18204,7 +17244,7 @@
2620:11b:2000::,2620:11b:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:3000::,2620:11b:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:4000::,2620:11b:40ff:ffff:ffff:ffff:ffff:ffff,US
-2620:11b:5000::,2620:11b:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:11b:5000::,2620:11b:507f:ffff:ffff:ffff:ffff:ffff,US
2620:11b:6000::,2620:11b:600f:ffff:ffff:ffff:ffff:ffff,US
2620:11b:7000::,2620:11b:700f:ffff:ffff:ffff:ffff:ffff,US
2620:11b:8000::,2620:11b:80ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18215,7 +17255,7 @@
2620:11b:d000::,2620:11b:d0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:e000::,2620:11b:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:f000::,2620:11b:f0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:11c::,2620:11c:f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c::,2620:11c:7f:ffff:ffff:ffff:ffff:ffff,US
2620:11c:1000::,2620:11c:10ff:ffff:ffff:ffff:ffff:ffff,BB
2620:11c:2000::,2620:11c:20ff:ffff:ffff:ffff:ffff:ffff,CA
2620:11c:3000::,2620:11c:30ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18426,7 +17466,7 @@
2620:128:e000::,2620:128:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:128:f000::,2620:128:f0ff:ffff:ffff:ffff:ffff:ffff,US
2620:129::,2620:129:f:ffff:ffff:ffff:ffff:ffff,US
-2620:129:1000::,2620:129:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:129:1000::,2620:129:107f:ffff:ffff:ffff:ffff:ffff,US
2620:129:2000::,2620:129:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:129:3000::,2620:129:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:129:4000::,2620:129:40ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18618,6 +17658,69 @@
2620:134:f000::,2620:134:f00f:ffff:ffff:ffff:ffff:ffff,US
2620:135::,2620:135:f:ffff:ffff:ffff:ffff:ffff,US
2620:135:1000::,2620:135:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:2000::,2620:135:20ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:3000::,2620:135:300f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:4000::,2620:135:400f:ffff:ffff:ffff:ffff:ffff,CA
+2620:135:5000::,2620:135:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:6000::,2620:135:60ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:7000::,2620:135:70ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:8000::,2620:135:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:9000::,2620:135:90ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:a000::,2620:135:a0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:b000::,2620:135:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:c000::,2620:135:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:d000::,2620:135:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:135:e000::,2620:135:e0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:f000::,2620:135:f00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:136::,2620:136:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:1000::,2620:136:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:2000::,2620:136:20ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:3000::,2620:136:30ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:4000::,2620:136:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:5000::,2620:136:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:6000::,2620:136:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:7000::,2620:136:700f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:8000::,2620:136:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:9000::,2620:136:90ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:a000::,2620:136:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:136:b000::,2620:136:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:c000::,2620:136:c00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:136:d000::,2620:136:d0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:e000::,2620:136:e0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:136:f000::,2620:136:f00f:ffff:ffff:ffff:ffff:ffff,US
+2620:137::,2620:137:f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:1000::,2620:137:10ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:2000::,2620:137:200f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:3000::,2620:137:30ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:4000::,2620:137:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:5000::,2620:137:50ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:6000::,2620:137:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:7000::,2620:137:70ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:8000::,2620:137:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:9000::,2620:137:900f:ffff:ffff:ffff:ffff:ffff,CA
+2620:137:a000::,2620:137:a00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:137:b000::,2620:137:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:c000::,2620:137:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:d000::,2620:137:d0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:137:e000::,2620:137:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:137:f000::,2620:137:f0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:138::,2620:138:f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:1000::,2620:138:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:2000::,2620:138:200f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:3000::,2620:138:300f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:4000::,2620:138:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:138:5000::,2620:138:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:6000::,2620:138:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:7000::,2620:138:700f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:8000::,2620:138:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:9000::,2620:138:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:a000::,2620:138:a0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:138:b000::,2620:138:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:138:c000::,2620:138:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:d000::,2620:138:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:e000::,2620:138:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:138:f000::,2620:138:f0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:139::,2620:139:ff: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
@@ -18650,9 +17753,7 @@
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:2d:ffff:ffff:ffff:ffff:ffff,US
-2620:15c:2e::,2620:15c:2e:7fff:ffff:ffff:ffff:ffff,MX
-2620:15c:2e:8000::,2620:15c:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:15c:f::,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
@@ -18666,7 +17767,71 @@
2620:16b::,2620:16c:fff:ffff:ffff:ffff:ffff:ffff,US
2620:16d::,2620:16f:fff:ffff:ffff:ffff:ffff:ffff,US
2620:170::,2620:170:fff:ffff:ffff:ffff:ffff:ffff,US
-2620:171::,2620:171:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:171::,2620:171:3:ffff:ffff:ffff:ffff:ffff,US
+2620:171:4::,2620:171:4:ffff:ffff:ffff:ffff:ffff,AT
+2620:171:5::,2620:171:10:ffff:ffff:ffff:ffff:ffff,US
+2620:171:11::,2620:171:11:ffff:ffff:ffff:ffff:ffff,SG
+2620:171:12::,2620:171:13:ffff:ffff:ffff:ffff:ffff,US
+2620:171:14::,2620:171:14:ffff:ffff:ffff:ffff:ffff,NZ
+2620:171:15::,2620:171:16:ffff:ffff:ffff:ffff:ffff,US
+2620:171:17::,2620:171:17:ffff:ffff:ffff:ffff:ffff,NZ
+2620:171:18::,2620:171:18:ffff:ffff:ffff:ffff:ffff,CZ
+2620:171:19::,2620:171:22:ffff:ffff:ffff:ffff:ffff,US
+2620:171:23::,2620:171:23:ffff:ffff:ffff:ffff:ffff,SG
+2620:171:24::,2620:171:24:ffff:ffff:ffff:ffff:ffff,NP
+2620:171:25::,2620:171:25:ffff:ffff:ffff:ffff:ffff,ZA
+2620:171:26::,2620:171:2f:ffff:ffff:ffff:ffff:ffff,US
+2620:171:30::,2620:171:30:ffff:ffff:ffff:ffff:ffff,GB
+2620:171:31::,2620:171:31:ffff:ffff:ffff:ffff:ffff,AU
+2620:171:32::,2620:171:32:ffff:ffff:ffff:ffff:ffff,CN
+2620:171:33::,2620:171:33:ffff:ffff:ffff:ffff:ffff,JP
+2620:171:34::,2620:171:34:ffff:ffff:ffff:ffff:ffff,US
+2620:171:35::,2620:171:35:ffff:ffff:ffff:ffff:ffff,NL
+2620:171:36::,2620:171:36:ffff:ffff:ffff:ffff:ffff,ID
+2620:171:37::,2620:171:37:ffff:ffff:ffff:ffff:ffff,KE
+2620:171:38::,2620:171:41:ffff:ffff:ffff:ffff:ffff,US
+2620:171:42::,2620:171:42:ffff:ffff:ffff:ffff:ffff,FR
+2620:171:43::,2620:171:43:ffff:ffff:ffff:ffff:ffff,MY
+2620:171:44::,2620:171:47:ffff:ffff:ffff:ffff:ffff,US
+2620:171:48::,2620:171:48:ffff:ffff:ffff:ffff:ffff,DE
+2620:171:49::,2620:171:49:ffff:ffff:ffff:ffff:ffff,AU
+2620:171:4a::,2620:171:4f:ffff:ffff:ffff:ffff:ffff,US
+2620:171:50::,2620:171:51:ffff:ffff:ffff:ffff:ffff,CA
+2620:171:52::,2620:171:54:ffff:ffff:ffff:ffff:ffff,US
+2620:171:55::,2620:171:55:ffff:ffff:ffff:ffff:ffff,EG
+2620:171:56::,2620:171:56:ffff:ffff:ffff:ffff:ffff,IE
+2620:171:57::,2620:171:57:ffff:ffff:ffff:ffff:ffff,DE
+2620:171:58::,2620:171:58:ffff:ffff:ffff:ffff:ffff,CH
+2620:171:59::,2620:171:60:ffff:ffff:ffff:ffff:ffff,US
+2620:171:61::,2620:171:61:ffff:ffff:ffff:ffff:ffff,MZ
+2620:171:62::,2620:171:63:ffff:ffff:ffff:ffff:ffff,US
+2620:171:64::,2620:171:64:ffff:ffff:ffff:ffff:ffff,PL
+2620:171:65::,2620:171:65:ffff:ffff:ffff:ffff:ffff,TR
+2620:171:66::,2620:171:66:ffff:ffff:ffff:ffff:ffff,BG
+2620:171:67::,2620:171:67:ffff:ffff:ffff:ffff:ffff,KR
+2620:171:68::,2620:171:73:ffff:ffff:ffff:ffff:ffff,US
+2620:171:74::,2620:171:74:ffff:ffff:ffff:ffff:ffff,ID
+2620:171:75::,2620:171:e4:ffff:ffff:ffff:ffff:ffff,US
+2620:171:e5::,2620:171:e5:ffff:ffff:ffff:ffff:ffff,AT
+2620:171:e6::,2620:171:e6:ffff:ffff:ffff:ffff:ffff,PL
+2620:171:e7::,2620:171:e7:ffff:ffff:ffff:ffff:ffff,ID
+2620:171:e8::,2620:171:e8:ffff:ffff:ffff:ffff:ffff,CZ
+2620:171:e9::,2620:171:e9:ffff:ffff:ffff:ffff:ffff,IE
+2620:171:ea::,2620:171:ea:ffff:ffff:ffff:ffff:ffff,CA
+2620:171:eb::,2620:171:f1:ffff:ffff:ffff:ffff:ffff,US
+2620:171:f2::,2620:171:f2:ffff:ffff:ffff:ffff:ffff,AR
+2620:171:f3::,2620:171:f3:ffff:ffff:ffff:ffff:ffff,BR
+2620:171:f4::,2620:171:f4:ffff:ffff:ffff:ffff:ffff,SG
+2620:171:f5::,2620:171:f5:ffff:ffff:ffff:ffff:ffff,JP
+2620:171:f6::,2620:171:f6:ffff:ffff:ffff:ffff:ffff,EG
+2620:171:f7::,2620:171:f7:ffff:ffff:ffff:ffff:ffff,ZA
+2620:171:f8::,2620:171:f8:ffff:ffff:ffff:ffff:ffff,DE
+2620:171:f9::,2620:171:f9:ffff:ffff:ffff:ffff:ffff,NL
+2620:171:fa::,2620:171:fa:ffff:ffff:ffff:ffff:ffff,GB
+2620:171:fb::,2620:171:fb:ffff:ffff:ffff:ffff:ffff,CN
+2620:171:fc::,2620:171:fe:ffff:ffff:ffff:ffff:ffff,US
+2620:171:ff::,2620:171:ff:ffff:ffff:ffff:ffff:ffff,AU
+2620:171:100::,2620:171:fff:ffff:ffff:ffff:ffff:ffff,US
2620:172::,2620:172:fff:ffff:ffff:ffff:ffff:ffff,US
2620:173::,2620:173:fff:ffff:ffff:ffff:ffff:ffff,US
2620:174::,2620:174:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -18693,6 +17858,9 @@
2620:18e::,2620:18e:fff:ffff:ffff:ffff:ffff:ffff,US
2620:18f::,2620:18f:fff:ffff:ffff:ffff:ffff:ffff,US
2620:190::,2620:191:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:192::,2620:192:fff:ffff:ffff:ffff:ffff:ffff,CA
+2620:193::,2620:193:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:194::,2620:194: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
@@ -18727,9 +17895,12 @@
2620:1f2::,2620:1f4:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1f5::,2620:1f5:fff:ffff:ffff:ffff:ffff:ffff,CA
2620:1f6::,2620:1f6:fff:ffff:ffff:ffff:ffff:ffff,US
-2620:1f7::,2620:1f7:3807:ffff:ffff:ffff:ffff:ffff,US
-2620:1f7:3808::,2620:1f7:3808:7fff:ffff:ffff:ffff:ffff,AU
-2620:1f7:3808:8000::,2620:1f9:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:1f7::,2620:1f7:37ff:ffff:ffff:ffff:ffff:ffff,US
+2620:1f7:3800::,2620:1f7:387f:ffff:ffff:ffff:ffff:ffff,AU
+2620:1f7:3880::,2620:1f7:38ff:ffff:ffff:ffff:ffff:ffff,MY
+2620:1f7:3900::,2620:1f7:3aff:ffff:ffff:ffff:ffff:ffff,US
+2620:1f7:3b00::,2620:1f7:3b7f:ffff:ffff:ffff:ffff:ffff,KR
+2620:1f7:3b80::,2620:1f9:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1fa::,2620:1fb:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1fc::,2620:1fc:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1fd::,2620:1fd:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -18748,9 +17919,7 @@
2800:88::,2800:88:ffff:ffff:ffff:ffff:ffff:ffff,BO
2800:90::,2800:90:ffff:ffff:ffff:ffff:ffff:ffff,SV
2800:98::,2800:98:ffff:ffff:ffff:ffff:ffff:ffff,GT
-2800:a0::,2800:a4:110:7fff:ffff:ffff:ffff:ffff,UY
-2800:a4:110:8000::,2800:a4:110:ffff:ffff:ffff:ffff:ffff,PE
-2800:a4:111::,2800:af:ffff:ffff:ffff:ffff:ffff:ffff,UY
+2800:a0::,2800:af:ffff:ffff:ffff:ffff:ffff:ffff,UY
2800:e0::,2800:ef:ffff:ffff:ffff:ffff:ffff:ffff,CO
2800:f0::,2800:f0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2800:100::,2800:100:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -18798,7 +17967,9 @@
2800:3c0::,2800:3c0:ffff:ffff:ffff:ffff:ffff:ffff,GY
2800:3d0::,2800:3d0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:3e0::,2800:3e0:ffff:ffff:ffff:ffff:ffff:ffff,VE
-2800:3f0::,2800:3f0:4002:ffff:ffff:ffff:ffff:ffff,AR
+2800:3f0::,2800:3f0:4000:ffff:ffff:ffff:ffff:ffff,AR
+2800:3f0:4001::,2800:3f0:4001:ffff:ffff:ffff:ffff:ffff,BR
+2800:3f0:4002::,2800:3f0:4002:ffff:ffff:ffff:ffff:ffff,AR
2800:3f0:4003::,2800:3f0:4003:ffff:ffff:ffff:ffff:ffff,CL
2800:3f0:4004::,2800:3f0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:400::,2800:400:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -18908,12 +18079,13 @@
2800:bc0::,2800:bc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2800:bd0::,2800:bd0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2800:be0::,2800:be0:ffff:ffff:ffff:ffff:ffff:ffff,CL
-2800:bf0::,2800:bf0:ffff:ffff:ffff:ffff:ffff:ffff,EC
+2800:bf0::,2800:bf0:80ff:ffff:ffff:ffff:ffff:ffff,EC
+2800:bf0:8100::,2800:bf0:817f:ffff:ffff:ffff:ffff:ffff,US
+2800:bf0:8180::,2800:bf0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2800:c00::,2800:c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:c10::,2800:c10:ffff:ffff:ffff:ffff:ffff:ffff,EC
2800:c20::,2800:c20:ffff:ffff:ffff:ffff:ffff:ffff,CR
2800:c30::,2800:c30:ffff:ffff:ffff:ffff:ffff:ffff,AR
-2800:c40::,2800:c40:ffff:ffff:ffff:ffff:ffff:ffff,EC
2800:c50::,2800:c50:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:c70::,2800:c70:ffff:ffff:ffff:ffff:ffff:ffff,PY
2800:c80::,2800:c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -18927,7 +18099,7 @@
2800:d00::,2800:d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:d10::,2800:d10:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:d20::,2800:d20:ffff:ffff:ffff:ffff:ffff:ffff,DO
-2800:e00::,2800:eff:ffff:ffff:ffff:ffff:ffff:ffff,TT
+2800:e00::,2800:e0f:ffff:ffff:ffff:ffff:ffff:ffff,TT
2800:1000::,2800:10ff:ffff:ffff:ffff:ffff:ffff:ffff,VE
2800:2000::,2800:2fff:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:a000::,2800:a000:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -19005,7 +18177,6 @@
2801:0:4a0::,2801::4a0:ffff:ffff:ffff:ffff:ffff,CR
2801:0:4c0::,2801::4c0:ffff:ffff:ffff:ffff:ffff,CO
2801:0:4d0::,2801::4d0:ffff:ffff:ffff:ffff:ffff,EC
-2801:0:4e0::,2801::4e0:ffff:ffff:ffff:ffff:ffff,CL
2801:0:2000::,2801::2fff:ffff:ffff:ffff:ffff:ffff,UY
2801:1::,2801:1:ffff:ffff:ffff:ffff:ffff:ffff,CR
2801:2::,2801:2:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19016,6 +18187,7 @@
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: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
2801:10:a000::,2801:10:a000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19030,6 +18202,7 @@
2801:11:4000::,2801:11:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:5000::,2801:11:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:6000::,2801:11:6000:ffff:ffff:ffff:ffff:ffff,AR
+2801:11:7000::,2801:11:7000:ffff:ffff:ffff:ffff:ffff,AR
2801:11:8000::,2801:11:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:9000::,2801:11:9000:ffff:ffff:ffff:ffff:ffff,CO
2801:11:a000::,2801:11:a000:ffff:ffff:ffff:ffff:ffff,VE
@@ -19044,6 +18217,7 @@
2801:12:4000::,2801:12:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:12:5000::,2801:12:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:12:6000::,2801:12:6000:ffff:ffff:ffff:ffff:ffff,SV
+2801:12:7000::,2801:12:7000:ffff:ffff:ffff:ffff:ffff,CO
2801:12:8000::,2801:12:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:12:9000::,2801:12:9000:ffff:ffff:ffff:ffff:ffff,AR
2801:12:b000::,2801:12:b000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19057,9 +18231,11 @@
2801:13:4000::,2801:13:4000:ffff:ffff:ffff:ffff:ffff,CL
2801:13:5000::,2801:13:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:6000::,2801:13:6000:ffff:ffff:ffff:ffff:ffff,GT
+2801:13:7000::,2801:13:7000:ffff:ffff:ffff:ffff:ffff,EC
2801:13:8000::,2801:13:8000:ffff:ffff:ffff:ffff:ffff,SV
2801:13:9000::,2801:13:9000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:a000::,2801:13:a000:ffff:ffff:ffff:ffff:ffff,CO
+2801:13:b000::,2801:13:b000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:c000::,2801:13:c000:ffff:ffff:ffff:ffff:ffff,TT
2801:13:d000::,2801:13:d000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:e000::,2801:13:e000:ffff:ffff:ffff:ffff:ffff,CO
@@ -19069,6 +18245,7 @@
2801:14:3000::,2801:14:3000:ffff:ffff:ffff:ffff:ffff,CO
2801:14:5000::,2801:14:5000:ffff:ffff:ffff:ffff:ffff,NI
2801:14:6000::,2801:14:6000:ffff:ffff:ffff:ffff:ffff,BO
+2801:14:7000::,2801:14:7000:ffff:ffff:ffff:ffff:ffff,CL
2801:14:8000::,2801:14:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:14:9000::,2801:14:9000:ffff:ffff:ffff:ffff:ffff,CL
2801:14:a000::,2801:14:a001:ffff:ffff:ffff:ffff:ffff,UY
@@ -19083,9 +18260,11 @@
2801:15:4000::,2801:15:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:15:5000::,2801:15:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:15:6000::,2801:15:6000:ffff:ffff:ffff:ffff:ffff,SV
-2801:15:8000::,2801:15:8000:ffff:ffff:ffff:ffff:ffff,CR
+2801:15:7000::,2801:15:7000:ffff:ffff:ffff:ffff:ffff,CO
+2801:15:8000::,2801:15:800f:ffff:ffff:ffff:ffff:ffff,CR
2801:15:9000::,2801:15:9000:ffff:ffff:ffff:ffff:ffff,AR
2801:15:a000::,2801:15:a000:ffff:ffff:ffff:ffff:ffff,DO
+2801:15:b000::,2801:15:b000:ffff:ffff:ffff:ffff:ffff,AR
2801:15:c000::,2801:15:c000:ffff:ffff:ffff:ffff:ffff,GT
2801:15:d000::,2801:15:d000:ffff:ffff:ffff:ffff:ffff,CL
2801:15:e000::,2801:15:e000:ffff:ffff:ffff:ffff:ffff,DO
@@ -19097,6 +18276,7 @@
2801:16:4000::,2801:16:4000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:5000::,2801:16:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:16:6000::,2801:16:6000:ffff:ffff:ffff:ffff:ffff,AR
+2801:16:7000::,2801:16:7000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:8000::,2801:16:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:16:9000::,2801:16:9000:ffff:ffff:ffff:ffff:ffff,BO
2801:16:a000::,2801:16:a000:ffff:ffff:ffff:ffff:ffff,CR
@@ -19110,18 +18290,20 @@
2801:17:4000::,2801:17:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:17:5000::,2801:17:5000:ffff:ffff:ffff:ffff:ffff,HT
2801:17:6000::,2801:17:6000:ffff:ffff:ffff:ffff:ffff,AR
+2801:17:7000::,2801:17:7000:ffff:ffff:ffff:ffff:ffff,BO
2801:17:8000::,2801:17:8000:ffff:ffff:ffff:ffff:ffff,CR
2801:17:9000::,2801:17:9000:ffff:ffff:ffff:ffff:ffff,PA
2801:17:a000::,2801:17:a000:ffff:ffff:ffff:ffff:ffff,HT
+2801:17:b000::,2801:17:b000:ffff:ffff:ffff:ffff:ffff,CL
2801:17:c000::,2801:17:c000:ffff:ffff:ffff:ffff:ffff,PA
2801:17:d000::,2801:17:d000:ffff:ffff:ffff:ffff:ffff,CO
2801:17:e000::,2801:17:e000:ffff:ffff:ffff:ffff:ffff,AR
2801:18::,2801:18::ffff:ffff:ffff:ffff:ffff,CR
-2801:18:1000::,2801:18:1000:ffff:ffff:ffff:ffff:ffff,PA
2801:18:2000::,2801:18:2000:ffff:ffff:ffff:ffff:ffff,CO
2801:18:3000::,2801:18:3000:ffff:ffff:ffff:ffff:ffff,CO
2801:18:5000::,2801:18:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:18:6000::,2801:18:6000:ffff:ffff:ffff:ffff:ffff,AR
+2801:18:7000::,2801:18:7000:ffff:ffff:ffff:ffff:ffff,BO
2801:18:8000::,2801:18:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:18:9000::,2801:18:900f:ffff:ffff:ffff:ffff:ffff,CO
2801:18:a000::,2801:18:a000:ffff:ffff:ffff:ffff:ffff,BO
@@ -19136,6 +18318,7 @@
2801:19:4000::,2801:19:4000:ffff:ffff:ffff:ffff:ffff,PY
2801:19:5000::,2801:19:5000:ffff:ffff:ffff:ffff:ffff,CO
2801:19:6000::,2801:19:6000:ffff:ffff:ffff:ffff:ffff,CW
+2801:19:7000::,2801:19:7000:ffff:ffff:ffff:ffff:ffff,AR
2801:19:8000::,2801:19:8000:ffff:ffff:ffff:ffff:ffff,EC
2801:19:9000::,2801:19:9000:ffff:ffff:ffff:ffff:ffff,AR
2801:19:a000::,2801:19:a000:ffff:ffff:ffff:ffff:ffff,BO
@@ -19147,6 +18330,7 @@
2801:1a:1000::,2801:1a:1000:ffff:ffff:ffff:ffff:ffff,CL
2801:1a:3000::,2801:1a:3000:ffff:ffff:ffff:ffff:ffff,EC
2801:1a:5000::,2801:1a:5000:ffff:ffff:ffff:ffff:ffff,AR
+2801:1a:7000::,2801:1a:7000:ffff:ffff:ffff:ffff:ffff,BO
2801:1a:8000::,2801:1a:8000:ffff:ffff:ffff:ffff:ffff,CL
2801:1a:9000::,2801:1a:9000:ffff:ffff:ffff:ffff:ffff,DO
2801:1a:a000::,2801:1a:a000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19161,9 +18345,11 @@
2801:1b:4000::,2801:1b:4000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:5000::,2801:1b:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:1b:6000::,2801:1b:6000:ffff:ffff:ffff:ffff:ffff,CL
+2801:1b:7000::,2801:1b:7000:ffff:ffff:ffff:ffff:ffff,PA
2801:1b:8000::,2801:1b:8000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:9000::,2801:1b:9000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:a000::,2801:1b:a000:ffff:ffff:ffff:ffff:ffff,AR
+2801:1b:b000::,2801:1b:b000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:c000::,2801:1b:c000:ffff:ffff:ffff:ffff:ffff,PA
2801:1b:d000::,2801:1b:d000:ffff:ffff:ffff:ffff:ffff,CO
2801:1b:e000::,2801:1b:e000:ffff:ffff:ffff:ffff:ffff,NI
@@ -19174,6 +18360,7 @@
2801:1c:4000::,2801:1c:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:1c:5000::,2801:1c:5000:ffff:ffff:ffff:ffff:ffff,CL
2801:1c:6000::,2801:1c:6000:ffff:ffff:ffff:ffff:ffff,PA
+2801:1c:7000::,2801:1c:7000:ffff:ffff:ffff:ffff:ffff,AR
2801:1c:8000::,2801:1c:8000:ffff:ffff:ffff:ffff:ffff,EC
2801:1c:a000::,2801:1c:a000:ffff:ffff:ffff:ffff:ffff,CO
2801:1c:b000::,2801:1c:b000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19187,9 +18374,11 @@
2801:1d:4000::,2801:1d:4000:ffff:ffff:ffff:ffff:ffff,TT
2801:1d:5000::,2801:1d:5000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:6000::,2801:1d:6000:ffff:ffff:ffff:ffff:ffff,NI
+2801:1d:7000::,2801:1d:7000:ffff:ffff:ffff:ffff:ffff,CL
2801:1d:8000::,2801:1d:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:9000::,2801:1d:9000:ffff:ffff:ffff:ffff:ffff,CO
2801:1d:a000::,2801:1d:a00f:ffff:ffff:ffff:ffff:ffff,CR
+2801:1d:b000::,2801:1d:b000:ffff:ffff:ffff:ffff:ffff,CO
2801:1d:c000::,2801:1d:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:d000::,2801:1d:d000:ffff:ffff:ffff:ffff:ffff,BO
2801:1d:e000::,2801:1d:e000:ffff:ffff:ffff:ffff:ffff,CO
@@ -19200,6 +18389,7 @@
2801:1e:4000::,2801:1e:4007:ffff:ffff:ffff:ffff:ffff,AR
2801:1e:5000::,2801:1e:5000:ffff:ffff:ffff:ffff:ffff,EC
2801:1e:6000::,2801:1e:6000:ffff:ffff:ffff:ffff:ffff,CO
+2801:1e:7000::,2801:1e:7000:ffff:ffff:ffff:ffff:ffff,AR
2801:1e:8000::,2801:1e:8000:ffff:ffff:ffff:ffff:ffff,CR
2801:1e:9000::,2801:1e:9000:ffff:ffff:ffff:ffff:ffff,SV
2801:1e:a000::,2801:1e:a000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19215,6 +18405,7 @@
2801:1f:8000::,2801:1f:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:1f:9000::,2801:1f:9000:ffff:ffff:ffff:ffff:ffff,AR
2801:1f:a000::,2801:1f:a000:ffff:ffff:ffff:ffff:ffff,CL
+2801:1f:b000::,2801:1f:b000:ffff:ffff:ffff:ffff:ffff,CL
2801:1f:c000::,2801:1f:c000:ffff:ffff:ffff:ffff:ffff,CR
2801:1f:d000::,2801:1f:d000:ffff:ffff:ffff:ffff:ffff,CO
2801:1f:e000::,2801:1f:e000:ffff:ffff:ffff:ffff:ffff,AR
@@ -19300,7 +18491,6 @@
2801:80:530::,2801:80:530:ffff:ffff:ffff:ffff:ffff,BR
2801:80:540::,2801:80:540:ffff:ffff:ffff:ffff:ffff,BR
2801:80:550::,2801:80:550:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:560::,2801:80:560:ffff:ffff:ffff:ffff:ffff,BR
2801:80:570::,2801:80:570:ffff:ffff:ffff:ffff:ffff,BR
2801:80:580::,2801:80:581:ffff:ffff:ffff:ffff:ffff,BR
2801:80:590::,2801:80:590:ffff:ffff:ffff:ffff:ffff,BR
@@ -19539,15 +18729,7 @@
2801:80:1b50::,2801:80:1b50:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1b60::,2801:80:1b60:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1b70::,2801:80:1b70:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1b80::,2801:80:1b80:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1b90::,2801:80:1b90:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1ba0::,2801:80:1ba0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1bb0::,2801:80:1bb0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1bc0::,2801:80:1bc0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1bd0::,2801:80:1bd0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1be0::,2801:80:1be0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1bf0::,2801:80:1bf0:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:1c00::,2801:80:1c00:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1b80::,2801:80:1c00:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1c10::,2801:80:1c10:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1c20::,2801:80:1c20:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1c30::,2801:80:1c30:ffff:ffff:ffff:ffff:ffff,BR
@@ -19596,6 +18778,21 @@
2801:80:22e0::,2801:80:22e0:ffff:ffff:ffff:ffff:ffff,BR
2801:80:22f0::,2801:80:22f0:ffff:ffff:ffff:ffff:ffff,BR
2801:80:2300::,2801:80:2300:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2310::,2801:80:2310:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2320::,2801:80:2320:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2330::,2801:80:2330:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2340::,2801:80:2340:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2350::,2801:80:2350:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2360::,2801:80:2361:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2370::,2801:80:2370:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2380::,2801:80:2380:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2390::,2801:80:2390:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:23a0::,2801:80:23a0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:23b0::,2801:80:23b0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:23c0::,2801:80:23c0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:23d0::,2801:80:23d0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:23e0::,2801:80:23e0: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
2801:84::,2801:84:ffff:ffff:ffff:ffff:ffff:ffff,BR
2801:86::,2801:86:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -19632,7 +18829,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:1b:ffff:ffff:ffff:ffff:ffff,MX
+2801:c4:19::,2801:c4:1c: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
@@ -19643,10 +18840,7 @@
2801:c4:b0::,2801:c4:b4:ffff:ffff:ffff:ffff:ffff,MX
2801:c5::,2801:c5:ffff:ffff:ffff:ffff:ffff:ffff,MX
2801:d0::,2801:d0:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2801:f0::,2801:f0::ffff:ffff:ffff:ffff:ffff,MX
-2801:f0:16::,2801:f0:16:ffff:ffff:ffff:ffff:ffff,MX
-2801:f0:20::,2801:f0:20:ffff:ffff:ffff:ffff:ffff,MX
-2801:f0:28::,2801:f0:28:ffff:ffff:ffff:ffff:ffff,MX
+2801:f0::,2801:f0:7f:ffff:ffff:ffff:ffff:ffff,MX
2801:100::,2801:100:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:104::,2801:104:ff:ffff:ffff:ffff:ffff:ffff,BO
2801:108::,2801:108:f:ffff:ffff:ffff:ffff:ffff,CO
@@ -19657,6 +18851,7 @@
2801:124::,2801:124:f:ffff:ffff:ffff:ffff:ffff,CO
2801:128::,2801:128:fff:ffff:ffff:ffff:ffff:ffff,UY
2801:130::,2801:130:fff:ffff:ffff:ffff:ffff:ffff,CO
+2801:134::,2801:134:1f:ffff:ffff:ffff:ffff:ffff,CO
2801:138::,2801:138:ff:ffff:ffff:ffff:ffff:ffff,PA
2801:140::,2801:140:ffff:ffff:ffff:ffff:ffff:ffff,AR
2801:144::,2801:144:3f:ffff:ffff:ffff:ffff:ffff,CO
@@ -19668,6 +18863,7 @@
2801:164::,2801:164:ff:ffff:ffff:ffff:ffff:ffff,CO
2801:168::,2801:168:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:170::,2801:170:fff:ffff:ffff:ffff:ffff:ffff,CO
+2801:174::,2801:174:f:ffff:ffff:ffff:ffff:ffff,CO
2801:178::,2801:178:1fff:ffff:ffff:ffff:ffff:ffff,CO
2801:180::,2801:180:f:ffff:ffff:ffff:ffff:ffff,PA
2801:184::,2801:184:f:ffff:ffff:ffff:ffff:ffff,DO
@@ -19675,15 +18871,17 @@
2801:190::,2801:190:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:194::,2801:194:f:ffff:ffff:ffff:ffff:ffff,CO
2801:198::,2801:198:ffff:ffff:ffff:ffff:ffff:ffff,CL
-2801:1a0::,2801:1a0:3f:ffff:ffff:ffff:ffff:ffff,CO
+2801:1a0::,2801:1a0:7f:ffff:ffff:ffff:ffff:ffff,CO
2801:1a4::,2801:1a4:f:ffff:ffff:ffff:ffff:ffff,AR
2801:1a8::,2801:1a8:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:1b0::,2801:1b0:ff:ffff:ffff:ffff:ffff:ffff,CO
+2801:1b4::,2801:1b4:f:ffff:ffff:ffff:ffff:ffff,CO
2801:1b8::,2801:1b8:f:ffff:ffff:ffff:ffff:ffff,UY
2801:1c0::,2801:1c0:1ff:ffff:ffff:ffff:ffff:ffff,AR
2801:1c4::,2801:1c4:f:ffff:ffff:ffff:ffff:ffff,CO
2801:1c8::,2801:1c8:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:1d0::,2801:1d0:f:ffff:ffff:ffff:ffff:ffff,CO
+2801:1d4::,2801:1d4:fff:ffff:ffff:ffff:ffff:ffff,CR
2801:1d8::,2801:1d8:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:1e0::,2801:1e0:7f:ffff:ffff:ffff:ffff:ffff,AR
2801:1e4::,2801:1e4:3f:ffff:ffff:ffff:ffff:ffff,CO
@@ -19705,8 +18903,9 @@
2803:40::,2803:40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:80::,2803:80::ffff:ffff:ffff:ffff,BR
2803:80:0:1::,2803:80:fff:ffff:ffff:ffff:ffff:ffff,CL
-2803:80:1000::,2803:80:1fff:ffff:ffff:ffff:ffff:ffff,BR
-2803:80:2000::,2803:80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:80:1000::,2803:80:7fff:ffff:ffff:ffff:ffff:ffff,BR
+2803:80:8000::,2803:80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:a0::,2803:a0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:b4::,2803:b4:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:c0::,2803:c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:100::,2803:100:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -19719,6 +18918,7 @@
2803:240::,2803:240:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:280::,2803:280:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:380::,2803:380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3c0::,2803:3c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
@@ -19738,6 +18938,7 @@
2803:680::,2803:680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6c0::,2803:6c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:700::,2803:700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:720::,2803:720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:740::,2803:740:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:780::,2803:780:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:7c0::,2803:7c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19745,6 +18946,7 @@
2803:820::,2803:820:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:840::,2803:840:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:880::,2803:880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:8a0::,2803:8a0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:8c0::,2803:8c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:900::,2803:900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:920::,2803:920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19757,6 +18959,7 @@
2803:a80::,2803:a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
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
2803:b40::,2803:b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b80::,2803:b80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:bc0::,2803:bc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19766,6 +18969,7 @@
2803:c80::,2803:c80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:cc0::,2803:cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d00::,2803:d00:ffff:ffff:ffff:ffff:ffff:ffff,GY
+2803:d20::,2803:d20:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:d40::,2803:d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:d80::,2803:d87:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dc0::,2803:dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19777,6 +18981,7 @@
2803:f00::,2803:f00:48a:ffff:ffff:ffff:ffff:ffff,PE
2803:f00:48b::,2803:f00:48e:ffff:ffff:ffff:ffff:ffff,CO
2803:f00:48f::,2803:f00:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:f20::,2803:f20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:f40::,2803:f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f80::,2803:f80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fc0::,2803:fc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19784,6 +18989,7 @@
2803:1020::,2803:1020:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1040::,2803:1040:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:1080::,2803:1080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:10a0::,2803:10a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:10c0::,2803:10c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:1100::,2803:1100:ffff:ffff:ffff:ffff:ffff:ffff,CW
2803:1120::,2803:1120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19796,6 +19002,7 @@
2803:1280::,2803:1280:ffff:ffff:ffff:ffff:ffff:ffff,PE
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
2803:1340::,2803:1340:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1380::,2803:1380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:13c0::,2803:13c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19814,12 +19021,14 @@
2803:1680::,2803:1680:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:16c0::,2803:16c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1700::,2803:1700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1720::,2803:1720:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:1740::,2803:1740:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:1780::,2803:1780:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:17c0::,2803:17c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1800::,2803:1800:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1820::,2803:1820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1840::,2803:1840:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:18a0::,2803:18a0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:1900::,2803:1900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1920::,2803:1920:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:1940::,2803:1940:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19830,6 +19039,7 @@
2803:1a80::,2803:1a80:ffff:ffff:ffff:ffff:ffff:ffff,CR
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
2803:1b40::,2803:1b40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1b80::,2803:1b80:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:1bc0::,2803:1bc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19838,6 +19048,7 @@
2803:1c80::,2803:1c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:1d40::,2803:1d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1d80::,2803:1d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1dc0::,2803:1dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19847,6 +19058,7 @@
2803:1e80::,2803:1e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1ec0::,2803:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:1f00::,2803:1f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1f20::,2803:1f20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1f40::,2803:1f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1f80::,2803:1f80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:1fc0::,2803:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19854,6 +19066,7 @@
2803:2020::,2803:2020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2040::,2803:2040:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:2080::,2803:2080:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:20a0::,2803:20a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:20c0::,2803:20c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2120::,2803:2120:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2140::,2803:2140:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19865,6 +19078,7 @@
2803:2280::,2803:2280:ffff:ffff:ffff:ffff:ffff:ffff,BZ
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
2803:2340::,2803:2340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2380::,2803:2380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:23c0::,2803:23c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19884,6 +19098,7 @@
2803:2680::,2803:2680:ffff:ffff:ffff:ffff:ffff:ffff,UY
2803:26c0::,2803:26c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2700::,2803:2700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2720::,2803:2720:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:2740::,2803:2740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2780::,2803:2780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:27c0::,2803:27c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19891,6 +19106,7 @@
2803:2820::,2803:2820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2840::,2803:2840:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:2880::,2803:2880:ffff:ffff:ffff:ffff:ffff:ffff,BO
+2803:28a0::,2803:28a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:28c0::,2803:28c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2900::,2803:2900:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:2920::,2803:2920:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19903,6 +19119,7 @@
2803:2a80::,2803:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
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
2803:2b40::,2803:2b40:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:2b80::,2803:2b80:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:2bc0::,2803:2bc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19911,6 +19128,7 @@
2803:2c80::,2803:2c80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:2cc0::,2803:2cc0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:2d00::,2803:2d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2d20::,2803:2d20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2d40::,2803:2d40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2d80::,2803:2d80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:2dc0::,2803:2dc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19920,12 +19138,14 @@
2803:2e80::,2803:2e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2ec0::,2803:2ec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:2f00::,2803:2f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2f20::,2803:2f20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2f40::,2803:2f40:ffff:ffff:ffff:ffff:ffff:ffff,UY
2803:2f80::,2803:2f80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2fc0::,2803:2fc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:3000::,2803:3000:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:3020::,2803:3020:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:3040::,2803:3040:ffff:ffff:ffff:ffff:ffff:ffff,CW
+2803:30a0::,2803:30a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:30c0::,2803:30c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3100::,2803:3100:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:3120::,2803:3120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19937,7 +19157,7 @@
2803:3240::,2803:3240:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:3280::,2803:3280:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:32c0::,2803:32c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
-2803:3300::,2803:3300:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:3320::,2803:3320:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3340::,2803:3340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3380::,2803:3380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:33c0::,2803:33c0:ffff:ffff:ffff:ffff:ffff:ffff,DO
@@ -19947,6 +19167,7 @@
2803:3480::,2803:3480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:34c0::,2803:34c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3500::,2803:3500:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:3520::,2803:3520:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:3540::,2803:3540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3580::,2803:3580:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:35c0::,2803:35c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19956,6 +19177,7 @@
2803:3680::,2803:3680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:36c0::,2803:36c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3700::,2803:3700:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:3720::,2803:3720:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:3740::,2803:3740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3780::,2803:3780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:37c0::,2803:37c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19963,6 +19185,7 @@
2803:3820::,2803:3820:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:3840::,2803:3840:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3880::,2803:3880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:38a0::,2803:38a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:38c0::,2803:38c0:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:3900::,2803:3900:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:3920::,2803:3920:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19975,6 +19198,7 @@
2803:3a80::,2803:3a80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:3ac0::,2803:3ac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3b00::,2803:3b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:3b20::,2803:3b20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3b40::,2803:3b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3b80::,2803:3b80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3bc0::,2803:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,PY
@@ -19984,6 +19208,7 @@
2803:3c80::,2803:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
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
2803:3d40::,2803:3d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3d80::,2803:3d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3dc0::,2803:3dc0:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -19993,6 +19218,7 @@
2803:3e80::,2803:3e80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:3ec0::,2803:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:3f00::,2803:3f00:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:3f20::,2803:3f20:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:3f40::,2803:3f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3f80::,2803:3f80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3fc0::,2803:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20000,6 +19226,7 @@
2803:4020::,2803:4020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4040::,2803:4040:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4080::,2803:4080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:40a0::,2803:40a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:40c0::,2803:40c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4100::,2803:4100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4120::,2803:4120:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20011,6 +19238,7 @@
2803:4280::,2803:4280:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:4340::,2803:4340:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:4380::,2803:4380:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:43c0::,2803:43c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20030,6 +19258,7 @@
2803:4680::,2803:4680:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:46c0::,2803:46c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:4700::,2803:4701:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:4720::,2803:4720:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4740::,2803:4740:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:4780::,2803:4780:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:47c0::,2803:47c0:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -20037,6 +19266,7 @@
2803:4820::,2803:4820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4840::,2803:4840:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4880::,2803:4880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:48a0::,2803:48a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:48c0::,2803:48c0:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:4900::,2803:4900:ffff:ffff:ffff:ffff:ffff:ffff,BQ
2803:4920::,2803:4920:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -20048,6 +19278,7 @@
2803:4a80::,2803:4a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:4b40::,2803:4b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4b80::,2803:4b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4bc0::,2803:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20057,6 +19288,7 @@
2803:4c80::,2803:4c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4cc0::,2803:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4d00::,2803:4d00:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:4d20::,2803:4d20:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:4d40::,2803:4d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4d80::,2803:4d80:ffff:ffff:ffff:ffff:ffff:ffff,CW
2803:4dc0::,2803:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,DO
@@ -20066,6 +19298,7 @@
2803:4e80::,2803:4e80:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:4ec0::,2803:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4f00::,2803:4f00:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:4f20::,2803:4f20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4f40::,2803:4f40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:4f80::,2803:4f80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4fc0::,2803:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20073,6 +19306,7 @@
2803:5020::,2803:5020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5040::,2803:5040:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:5080::,2803:5080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:50a0::,2803:50a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:50c0::,2803:50c0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:5100::,2803:5100:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:5120::,2803:5120:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -20085,6 +19319,7 @@
2803:5280::,2803:5280:ffff:ffff:ffff:ffff:ffff:ffff,DO
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
2803:5340::,2803:5340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5380::,2803:5380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:53c0::,2803:53c0:ffff:ffff:ffff:ffff:ffff:ffff,GF
@@ -20104,12 +19339,14 @@
2803:5680::,2803:5680:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:56c0::,2803:56c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:5700::,2803:5700:ffff:ffff:ffff:ffff:ffff:ffff,BO
+2803:5720::,2803:5720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5740::,2803:5740:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:5780::,2803:5780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:57c0::,2803:57c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:5820::,2803:5820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5840::,2803:5840:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:5880::,2803:5880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:58a0::,2803:58a0:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:58c0::,2803:58c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5900::,2803:5900:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:5920::,2803:5920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20122,6 +19359,7 @@
2803:5a80::,2803:5a80:ffff:ffff:ffff:ffff:ffff:ffff,DO
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
2803:5b40::,2803:5b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5b80::,2803:5b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5bc0::,2803:5bc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20131,6 +19369,7 @@
2803:5c80::,2803:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
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
2803:5d40::,2803:5d40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:5d80::,2803:5d80:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:5dc0::,2803:5dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20139,6 +19378,7 @@
2803:5e40::,2803:5e40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:5e80::,2803:5e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5ec0::,2803:5ec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:5f20::,2803:5f20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5f40::,2803:5f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5f80::,2803:5f80:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:5fc0::,2803:5fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20146,6 +19386,7 @@
2803:6020::,2803:6020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6040::,2803:6040:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6080::,2803:6087:ffff:ffff:ffff:ffff:ffff:ffff,US
+2803:60a0::,2803:60a0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:60c0::,2803:60c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6100::,2803:6100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6120::,2803:6120:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20158,6 +19399,7 @@
2803:6280::,2803:6280:ffff:ffff:ffff:ffff:ffff:ffff,PA
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
2803:6340::,2803:6340:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:6380::,2803:6380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:63c0::,2803:63c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20176,6 +19418,7 @@
2803:6680::,2803:6680:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:66c0::,2803:66c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6700::,2803:6700:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:6720::,2803:6720:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:6740::,2803:6740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6780::,2803:6780:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:67c0::,2803:67c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20183,6 +19426,7 @@
2803:6820::,2803:6820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6840::,2803:6840:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6880::,2803:6880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:68a0::,2803:68a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:68c0::,2803:68c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6900::,2803:6900:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:6920::,2803:6920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20195,6 +19439,7 @@
2803:6a80::,2803:6a80:ffff:ffff:ffff:ffff:ffff:ffff,NI
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
2803:6b40::,2803:6b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6b80::,2803:6b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6bc0::,2803:6bc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20204,6 +19449,7 @@
2803:6c80::,2803:6c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6cc0::,2803:6cc0:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:6d00::,2803:6d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:6d20::,2803:6d20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6d40::,2803:6d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6d80::,2803:6d80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6dc0::,2803:6dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20213,6 +19459,7 @@
2803:6e80::,2803:6e80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:6ec0::,2803:6ec0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:6f00::,2803:6f00:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:6f20::,2803:6f20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6f40::,2803:6f40:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:6f80::,2803:6f80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:6fc0::,2803:6fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20220,6 +19467,7 @@
2803:7020::,2803:7020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7040::,2803:7040:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7080::,2803:7080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:70a0::,2803:70a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:70c0::,2803:70c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7100::,2803:7100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7120::,2803:7120:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20232,6 +19480,7 @@
2803:7280::,2803:7280:ffff:ffff:ffff:ffff:ffff:ffff,PA
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
2803:7340::,2803:7340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7380::,2803:7380:ffff:ffff:ffff:ffff:ffff:ffff,SX
2803:73c0::,2803:73c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20241,6 +19490,7 @@
2803:7480::,2803:7480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:74c0::,2803:74c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7500::,2803:7500:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:7520::,2803:7520:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7540::,2803:7540:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7580::,2803:7580:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:75c0::,2803:75c0:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -20250,6 +19500,7 @@
2803:7680::,2803:7680:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:76c0::,2803:76c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7700::,2803:7700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:7720::,2803:7720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7740::,2803:7740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7780::,2803:7780:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:77c0::,2803:77c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20257,6 +19508,7 @@
2803:7820::,2803:7820:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:7840::,2803:7840:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7880::,2803:7880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:78a0::,2803:78a0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:78c0::,2803:78c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7900::,2803:7900:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:7920::,2803:7920:ffff:ffff:ffff:ffff:ffff:ffff,GT
@@ -20269,6 +19521,7 @@
2803:7a80::,2803:7a80:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:7ac0::,2803:7ac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7b00::,2803:7b00:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:7b20::,2803:7b20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7b40::,2803:7b40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7b80::,2803:7b80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:7bc0::,2803:7bc0:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -20278,6 +19531,7 @@
2803:7c80::,2803:7c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
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
2803:7d40::,2803:7d40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7d80::,2803:7d80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7dc0::,2803:7dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20287,6 +19541,7 @@
2803:7e80::,2803:7e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7ec0::,2803:7ec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:7f00::,2803:7f00:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:7f20::,2803:7f20:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:7f40::,2803:7f40:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7f80::,2803:7f80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7fc0::,2803:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20294,6 +19549,7 @@
2803:8020::,2803:8020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8040::,2803:8040:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:8080::,2803:8080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:80a0::,2803:80a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:80c0::,2803:80c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8100::,2803:8100:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:8120::,2803:8120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20306,6 +19562,7 @@
2803:8280::,2803:8280:ffff:ffff:ffff:ffff:ffff:ffff,VE
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
2803:8340::,2803:8340:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8380::,2803:8380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:83c0::,2803:83c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20325,6 +19582,7 @@
2803:8680::,2803:8680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:86c0::,2803:86c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8700::,2803:8700:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:8720::,2803:8720:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:8740::,2803:8740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8780::,2803:8780:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:87c0::,2803:87c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20332,6 +19590,7 @@
2803:8820::,2803:8820:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:8840::,2803:8840:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:8880::,2803:8880:ffff:ffff:ffff:ffff:ffff:ffff,NI
+2803:88a0::,2803:88a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:88c0::,2803:88c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8900::,2803:8900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8920::,2803:8920:ffff:ffff:ffff:ffff:ffff:ffff,PY
@@ -20343,6 +19602,7 @@
2803:8a80::,2803:8a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:8b40::,2803:8b40:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8b80::,2803:8b80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8bc0::,2803:8bc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20352,6 +19612,7 @@
2803:8c80::,2803:8c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:8cc0::,2803:8cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8d00::,2803:8d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:8d20::,2803:8d20:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:8d43::,2803:8d43:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8d80::,2803:8d80:ffff:ffff:ffff:ffff:ffff:ffff,UY
2803:8dc0::,2803:8dc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20361,6 +19622,7 @@
2803:8e80::,2803:8e80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:8ec0::,2803:8ec0:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:8f00::,2803:8f00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:8f20::,2803:8f20:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8f40::,2803:8f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8f80::,2803:8f80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8fc0::,2803:8fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20368,6 +19630,7 @@
2803:9020::,2803:9020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9040::,2803:9040:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:9080::,2803:9080:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:90a0::,2803:90a0:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:90c0::,2803:90c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9100::,2803:9100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9120::,2803:9120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20380,6 +19643,7 @@
2803:9280::,2803:9280:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:9340::,2803:9340:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9380::,2803:9380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:93c0::,2803:93c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20398,6 +19662,7 @@
2803:9640::,2803:9640:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:9680::,2803:9680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:96c0::,2803:96c0:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:9720::,2803:9720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9740::,2803:9740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9780::,2803:9780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:97c0::,2803:97c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20405,8 +19670,8 @@
2803:9820::,2803:9820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9840::,2803:9840:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:9880::,2803:9880:ffff:ffff:ffff:ffff:ffff:ffff,BZ
+2803:98a0::,2803:98a0:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:98c0::,2803:98c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
-2803:9900::,2803:9900:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:9920::,2803:9920:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:9940::,2803:9940:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9980::,2803:9980:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -20417,6 +19682,7 @@
2803:9a80::,2803:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
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
2803:9b40::,2803:9b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9b80::,2803:9b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9bc0::,2803:9bc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20426,6 +19692,7 @@
2803:9c80::,2803:9c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:9d40::,2803:9d40:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9d80::,2803:9d80:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:9dc0::,2803:9dc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20435,6 +19702,7 @@
2803:9e80::,2803:9e80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:9ec0::,2803:9ec0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:9f00::,2803:9f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:9f20::,2803:9f20:ffff:ffff:ffff:ffff:ffff:ffff,CW
2803:9f40::,2803:9f40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9f80::,2803:9f80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9fc0::,2803:9fc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20442,6 +19710,7 @@
2803:a020::,2803:a020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a040::,2803:a040:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:a080::,2803:a080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:a0a0::,2803:a0a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a0c0::,2803:a0c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a100::,2803:a100:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:a120::,2803:a120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20453,6 +19722,7 @@
2803:a240::,2803:a240:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a280::,2803:a280:ffff:ffff:ffff:ffff:ffff:ffff,DO
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
2803:a380::,2803:a380:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:a3c0::,2803:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20472,12 +19742,14 @@
2803:a680::,2803:a680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a6c0::,2803:a6c0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:a700::,2803:a700:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:a720::,2803:a720:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:a740::,2803:a740:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:a780::,2803:a780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a7c0::,2803:a7c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a800::,2803:a800:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:a820::,2803:a820:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a880::,2803:a880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:a8a0::,2803:a8a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a8c0::,2803:a8c0:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:a900::,2803:a900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a920::,2803:a920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20490,6 +19762,7 @@
2803:aa80::,2803:aa80:ffff:ffff:ffff:ffff:ffff:ffff,CR
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
2803:ab40::,2803:ab40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ab80::,2803:ab80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:abc0::,2803:abc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20498,6 +19771,7 @@
2803:ac80::,2803:ac80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:acc0::,2803:acc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:ad00::,2803:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:ad20::,2803:ad20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ad40::,2803:ad40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:ad80::,2803:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:adc0::,2803:adc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20507,13 +19781,14 @@
2803:ae80::,2803:ae80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:aec0::,2803:aec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:af00::,2803:af00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:af20::,2803:af20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:af40::,2803:af40:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:af80::,2803:af80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:afc0::,2803:afc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b000::,2803:b000:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:b020::,2803:b020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b080::,2803:b080:ffff:ffff:ffff:ffff:ffff:ffff,BZ
-2803:b0c0::,2803:b0c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:b0a0::,2803:b0a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b100::,2803:b100:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:b120::,2803:b120:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:b140::,2803:b140:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -20525,6 +19800,7 @@
2803:b280::,2803:b280:ffff:ffff:ffff:ffff:ffff:ffff,CL
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
2803:b340::,2803:b340:ffff:ffff:ffff:ffff:ffff:ffff,SX
2803:b380::,2803:b380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b3c0::,2803:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20534,6 +19810,7 @@
2803:b480::,2803:b480:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b4c0::,2803:b4c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:b500::,2803:b500:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:b520::,2803:b520:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b540::,2803:b540:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:b580::,2803:b580:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b5c0::,2803:b5c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20543,6 +19820,7 @@
2803:b680::,2803:b680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b6c0::,2803:b6c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b700::,2803:b700:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:b720::,2803:b720:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:b740::,2803:b740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b780::,2803:b780:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:b7c0::,2803:b7c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20550,6 +19828,7 @@
2803:b820::,2803:b820:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:b840::,2803:b840:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:b880::,2803:b880:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:b8a0::,2803:b8a0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:b8c0::,2803:b8c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b900::,2803:b900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b920::,2803:b920:ffff:ffff:ffff:ffff:ffff:ffff,PY
@@ -20561,6 +19840,7 @@
2803:ba80::,2803:ba80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bac0::,2803:bac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bb00::,2803:bb00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:bb20::,2803:bb20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bb40::,2803:bb40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bb80::,2803:bb80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:bbc0::,2803:bbc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20570,6 +19850,7 @@
2803:bc80::,2803:bc80:ffff:ffff:ffff:ffff:ffff:ffff,CO
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
2803:bd40::,2803:bd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd80::,2803:bd80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:bdc0::,2803:bdc0:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -20579,6 +19860,7 @@
2803:be80::,2803:be80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:bec0::,2803:bec0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bf00::,2803:bf00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:bf20::,2803:bf20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:bf40::,2803:bf40:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:bf80::,2803:bf80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:bfc0::,2803:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20586,6 +19868,7 @@
2803:c020::,2803:c020:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c040::,2803:c040:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:c080::,2803:c080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:c0a0::,2803:c0a0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:c0c0::,2803:c0c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c100::,2803:c100:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:c120::,2803:c120:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20598,6 +19881,7 @@
2803:c280::,2803:c280:ffff:ffff:ffff:ffff:ffff:ffff,EC
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
2803:c340::,2803:c340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c380::,2803:c380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:c3c0::,2803:c3c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20617,6 +19901,7 @@
2803:c680::,2803:c680:ffff:ffff:ffff:ffff:ffff:ffff,HT
2803:c6c0::,2803:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c700::,2803:c700:ffff:ffff:ffff:ffff:ffff:ffff,GF
+2803:c720::,2803:c720:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:c740::,2803:c740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c780::,2803:c780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c7c0::,2803:c7c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -20624,6 +19909,7 @@
2803:c820::,2803:c820:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:c840::,2803:c840:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:c880::,2803:c880:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:c8a0::,2803:c8a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:c8c0::,2803:c8c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c900::,2803:c900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c920::,2803:c920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20636,6 +19922,7 @@
2803:ca80::,2803:ca80:ffff:ffff:ffff:ffff:ffff:ffff,CL
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
2803:cb40::,2803:cb40:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:cb80::,2803:cb80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cbc0::,2803:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20645,6 +19932,7 @@
2803:cc80::,2803:cc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ccc0::,2803:ccc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd00::,2803:cd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:cd20::,2803:cd20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd40::,2803:cd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd80::,2803:cd80:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:cdc0::,2803:cdc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20654,6 +19942,7 @@
2803:ce80::,2803:ce80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cec0::,2803:cec0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:cf00::,2803:cf00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:cf20::,2803:cf20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:cf40::,2803:cf40:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:cf80::,2803:cf80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cfc0::,2803:cfc0:ffff:ffff:ffff:ffff:ffff:ffff,UY
@@ -20663,6 +19952,7 @@
2803:d020::,2803:d020:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:d040::,2803:d040:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:d080::,2803:d080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:d0a0::,2803:d0a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d0c0::,2803:d0c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d100::,2803:d100:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:d120::,2803:d120:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20674,6 +19964,7 @@
2803:d240::,2803:d240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d280::,2803:d280:ffff:ffff:ffff:ffff:ffff:ffff,PY
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
2803:d380::,2803:d380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d3c0::,2803:d3c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20693,6 +19984,7 @@
2803:d680::,2803:d680:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:d6c0::,2803:d6c0:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:d700::,2803:d700:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:d720::,2803:d720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d740::,2803:d740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d780::,2803:d780:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d7c0::,2803:d7c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20700,6 +19992,7 @@
2803:d820::,2803:d820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d840::,2803:d840:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:d880::,2803:d880:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:d8a0::,2803:d8a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:d8c0::,2803:d8c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d900::,2803:d900:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:d920::,2803:d920:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20712,6 +20005,7 @@
2803:da80::,2803:da80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:db40::,2803:db40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:db80::,2803:db80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:dbc0::,2803:dbc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20721,6 +20015,7 @@
2803:dc80::,2803:dc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:dd40::,2803:dd40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:dd80::,2803:dd80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:ddc0::,2803:ddc0:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -20730,6 +20025,7 @@
2803:de80::,2803:de80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dec0::,2803:dec0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:df00::,2803:df00:ffff:ffff:ffff:ffff:ffff:ffff,SV
+2803:df20::,2803:df20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:df40::,2803:df40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:df80::,2803:df80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:dfc0::,2803:dfc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20737,6 +20033,7 @@
2803:e020::,2803:e020:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:e040::,2803:e040:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e080::,2803:e080:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:e0a0::,2803:e0a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e0c0::,2803:e0c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e100::,2803:e100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e120::,2803:e120:ffff:ffff:ffff:ffff:ffff:ffff,BO
@@ -20749,6 +20046,7 @@
2803:e280::,2803:e280: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
2803:e340::,2803:e340:ffff:ffff:ffff:ffff:ffff:ffff,GY
2803:e380::,2803:e380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:e3c0::,2803:e3c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20768,6 +20066,7 @@
2803:e680::,2803:e680:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:e6c0::,2803:e6c0:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:e700::,2803:e700:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:e720::,2803:e720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e740::,2803:e740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e780::,2803:e780:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:e7c0::,2803:e7c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20775,6 +20074,7 @@
2803:e820::,2803:e820:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:e840::,2803:e840:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:e880::,2803:e880:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:e8a0::,2803:e8a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:e8c0::,2803:e8c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:e900::,2803:e900:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e920::,2803:e920:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20786,6 +20086,7 @@
2803:ea80::,2803:ea80: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
2803:eb40::,2803:eb40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:eb80::,2803:eb80:7fff:ffff:ffff:ffff:ffff:ffff,AR
2803:eb80:8000::,2803:eb80:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20795,7 +20096,7 @@
2803:ec40::,2803:ec40:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:ec80::,2803:ec80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ecc0::,2803:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
-2803:ed00::,2803:ed00:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:ed20::,2803:ed20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ed40::,2803:ed40:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:ed80::,2803:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:edc0::,2803:edc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20805,6 +20106,7 @@
2803:ee80::,2803:ee80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:eec0::,2803:eec0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:ef00::,2803:ef00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:ef20::,2803:ef20:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:ef40::,2803:ef40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ef80::,2803:ef80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:efc0::,2803:efc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20812,6 +20114,7 @@
2803:f020::,2803:f020:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:f040::,2803:f040:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f080::,2803:f080:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:f0a0::,2803:f0a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:f0c0::,2803:f0c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:f100::,2803:f100:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f120::,2803:f120:ffff:ffff:ffff:ffff:ffff:ffff,UY
@@ -20824,6 +20127,7 @@
2803:f280::,2803:f280:ffff:ffff:ffff:ffff:ffff:ffff,DO
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
2803:f340::,2803:f340:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:f380::,2803:f380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f3c0::,2803:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20833,6 +20137,7 @@
2803:f480::,2803:f480:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:f4c0::,2803:f4c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f500::,2803:f500:ffff:ffff:ffff:ffff:ffff:ffff,CW
+2803:f520::,2803:f520:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:f540::,2803:f540:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:f580::,2803:f580:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f5c0::,2803:f5c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20842,12 +20147,14 @@
2803:f680::,2803:f680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f6c0::,2803:f6c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f700::,2803:f700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:f720::,2803:f720:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f740::,2803:f740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f780::,2803:f780:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:f7c0::,2803:f7c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f800::,2803:f800:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:f820::,2803:f820:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f840::,2803:f840:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:f8a0::,2803:f8a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:f8c0::,2803:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:f900::,2803:f900:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:f920::,2803:f920:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20860,6 +20167,7 @@
2803:fa80::,2803:fa80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fac0::,2803:fac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fb00::,2803:fb00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:fb20::,2803:fb20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fb40::,2803:fb40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:fb80::,2803:fb80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fbc0::,2803:fbc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20869,6 +20177,7 @@
2803:fc80::,2803:fc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
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
2803:fd40::,2803:fd40:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:fd80::,2803:fd80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:fdc0::,2803:fdc0:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -20877,6 +20186,7 @@
2803:fe40::,2803:fe40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:fe80::,2803:fe80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:fec0::,2803:fec0:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:ff20::,2803:ff20:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:ff40::,2803:ff40:ffff:ffff:ffff:ffff:ffff:ffff,SR
2803:ff80::,2803:ff80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:ffc0::,2803:ffc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20928,7 +20238,6 @@
2804:b4::,2804:b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:b8::,2804:b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:c0::,2804:c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:c4::,2804:c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:c8::,2804:c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:cc::,2804:cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d0::,2804:d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -20938,7 +20247,6 @@
2804:e4::,2804:e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:e8::,2804:e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:ec::,2804:ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:f0::,2804:f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:f4::,2804:f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:f8::,2804:f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fc::,2804:fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -20959,9 +20267,7 @@
2804:140::,2804:140:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:144::,2804:144:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:148::,2804:148:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:14c::,2804:14c:34:1fff:ffff:ffff:ffff:ffff,BR
-2804:14c:34:2000::,2804:14c:34:20ff:ffff:ffff:ffff:ffff,BE
-2804:14c:34:2100::,2804:14d:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:14c::,2804:14d:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:150::,2804:154:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:158::,2804:158:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:15c::,2804:15c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -21030,7 +20336,6 @@
2804:274::,2804:274:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:27c::,2804:27c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:280::,2804:280:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:284::,2804:284:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:288::,2804:288:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:28c::,2804:28c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:290::,2804:290:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -21104,7 +20409,6 @@
2804:3c0::,2804:3c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3c4::,2804:3c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3c8::,2804:3c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:3cc::,2804:3cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3d0::,2804:3d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3d4::,2804:3d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3d8::,2804:3d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -21393,7 +20697,7 @@
2804:884::,2804:884:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:888::,2804:888:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:88c::,2804:88c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:890::,2804:890:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:890::,2804:890:ffff:ffff:ffff:ffff:ffff:ffff,US
2804:894::,2804:894:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:898::,2804:898:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:89c::,2804:89c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -21471,7 +20775,6 @@
2804:9d8::,2804:9d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:9dc::,2804:9dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:9e0::,2804:9e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:9e4::,2804:9e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:9e8::,2804:9e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:9ec::,2804:9ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:9f0::,2804:9f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -21678,11 +20981,7 @@
2804:d34::,2804:d34:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d38::,2804:d38:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d3c::,2804:d3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:d40::,2804:d57:1266:7fff:ffff:ffff:ffff:ffff,BR
-2804:d57:1266:8000::,2804:d57:1266:ffff:ffff:ffff:ffff:ffff,AU
-2804:d57:1267::,2804:d57:12ce:ffff:ffff:ffff:ffff:ffff,BR
-2804:d57:12cf::,2804:d57:12cf:7fff:ffff:ffff:ffff:ffff,GB
-2804:d57:12cf:8000::,2804:d60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:d40::,2804:d60:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d64::,2804:d64:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d68::,2804:d68:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:d6c::,2804:d6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22161,7 +21460,6 @@
2804:14f4::,2804:14f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:14f8::,2804:14f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:14fc::,2804:14fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1500::,2804:1500:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1504::,2804:1504:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1508::,2804:1508:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:150c::,2804:150c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22548,6 +21846,7 @@
2804:1b2c::,2804:1b2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b30::,2804:1b30:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b34::,2804:1b34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b38::,2804:1b38:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b3c::,2804:1b3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b40::,2804:1b40:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b44::,2804:1b44:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22717,7 +22016,6 @@
2804:1df8::,2804:1df8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1dfc::,2804:1dfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e00::,2804:1e00:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1e04::,2804:1e04:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e08::,2804:1e08:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e0c::,2804:1e0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e10::,2804:1e10:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22802,6 +22100,7 @@
2804:1f2e::,2804:1f2e:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f30::,2804:1f30:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f32::,2804:1f32:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f34::,2804:1f34:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2000::,2804:2000:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2004::,2804:2004:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2008::,2804:2008:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22883,7 +22182,6 @@
2804:2140::,2804:2140:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2144::,2804:2144:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2148::,2804:2148:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:214c::,2804:214c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2150::,2804:2150:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2154::,2804:2154:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2158::,2804:2158:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22980,6 +22278,7 @@
2804:22e4::,2804:22e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:22e8::,2804:22e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:22ec::,2804:22ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:22f0::,2804:22f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:22f4::,2804:22f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:22f8::,2804:22f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:22fc::,2804:22fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23513,7 +22812,6 @@
2804:2b74::,2804:2b74:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2b78::,2804:2b78:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2b7c::,2804:2b7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2b80::,2804:2b80:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2b84::,2804:2b84:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2b88::,2804:2b88:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2b8c::,2804:2b8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23523,7 +22821,6 @@
2804:2b9c::,2804:2b9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2ba0::,2804:2ba0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2ba4::,2804:2ba4:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2ba8::,2804:2ba8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2bac::,2804:2bac:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2bb0::,2804:2bb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2bb4::,2804:2bb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23560,7 +22857,6 @@
2804:2c34::,2804:2c34:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2c38::,2804:2c38:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2c3c::,2804:2c3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2c40::,2804:2c40:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2c44::,2804:2c44:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2c48::,2804:2c48:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2c4c::,2804:2c4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23671,7 +22967,6 @@
2804:2df0::,2804:2df0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2df4::,2804:2df4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2df8::,2804:2df8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2dfc::,2804:2dfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2e00::,2804:2e00:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2e04::,2804:2e04:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2e08::,2804:2e08:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -24818,7 +24113,6 @@
2804:3fdc::,2804:3fdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3fe0::,2804:3fe0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3fe4::,2804:3fe4:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:3fe8::,2804:3fe8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3fec::,2804:3fec:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3ff0::,2804:3ff0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3ff4::,2804:3ff4:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -24883,7 +24177,7 @@
2804:40e0::,2804:40e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:40e4::,2804:40e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:40e8::,2804:40e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:40ec::,2804:40ec:ffff:ffff:ffff:ffff:ffff:ffff,US
+2804:40ec::,2804:40ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:40f0::,2804:40f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:40f4::,2804:40f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:40f8::,2804:40f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -24916,7 +24210,7 @@
2804:4164::,2804:4164:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4168::,2804:4168:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:416c::,2804:416c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:4170::,2804:4170:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4170::,2804:4170:ffff:ffff:ffff:ffff:ffff:ffff,US
2804:4174::,2804:4174:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4178::,2804:4178:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:417c::,2804:417c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -25363,28 +24657,425 @@
2804:4860::,2804:4860:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4864::,2804:4864:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4868::,2804:4868:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:486c::,2804:486c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4870::,2804:4870:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4874::,2804:4874:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4878::,2804:4878:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:487c::,2804:487c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4880::,2804:4880:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4884::,2804:4884:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4888::,2804:4888:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:488c::,2804:488c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4890::,2804:4890:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4894::,2804:4894:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4898::,2804:4898:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:489c::,2804:489c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48a0::,2804:48a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48a4::,2804:48a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48a8::,2804:48a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48ac::,2804:48ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48b0::,2804:48b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48b4::,2804:48b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48b8::,2804:48b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48bc::,2804:48bc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48c0::,2804:48c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48c4::,2804:48c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48c8::,2804:48c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48cc::,2804:48cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48d0::,2804:48d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48d4::,2804:48d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48d8::,2804:48d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48dc::,2804:48dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48e0::,2804:48e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48e4::,2804:48e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48e8::,2804:48e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48ec::,2804:48ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48f0::,2804:48f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48f4::,2804:48f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48f8::,2804:48f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:48fc::,2804:48fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4900::,2804:4900:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4904::,2804:4904:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4908::,2804:4908:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:490c::,2804:490c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4910::,2804:4910:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4914::,2804:4914:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4918::,2804:4918:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:491c::,2804:491c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4920::,2804:4920:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4924::,2804:4924:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4928::,2804:4928:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:492c::,2804:492c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4930::,2804:4930:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4934::,2804:4934:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4938::,2804:4938:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:493c::,2804:493c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4940::,2804:4940:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4944::,2804:4944:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4948::,2804:4948:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:494c::,2804:494c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4950::,2804:4950:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4954::,2804:4954:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4958::,2804:4958:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:495c::,2804:495c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4960::,2804:4960:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4964::,2804:4964:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4968::,2804:4968:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:496c::,2804:496c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4970::,2804:4970:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4974::,2804:4974:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4978::,2804:4978:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:497c::,2804:497c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4980::,2804:4980:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4984::,2804:4984:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4988::,2804:4988:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:498c::,2804:498c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4990::,2804:4990:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4994::,2804:4994:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4998::,2804:4998:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:499c::,2804:499c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49a0::,2804:49a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49a4::,2804:49a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49a8::,2804:49a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49ac::,2804:49ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49b0::,2804:49b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49b4::,2804:49b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49b8::,2804:49b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49bc::,2804:49bc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49c0::,2804:49c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49c4::,2804:49c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49c8::,2804:49c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49cc::,2804:49cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49d0::,2804:49d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49d4::,2804:49d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49d8::,2804:49d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49dc::,2804:49dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49e0::,2804:49e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49e4::,2804:49e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49e8::,2804:49e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49ec::,2804:49ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49f0::,2804:49f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49f4::,2804:49f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49f8::,2804:49f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:49fc::,2804:49fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a00::,2804:4a00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a04::,2804:4a04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a08::,2804:4a08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a0c::,2804:4a0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a10::,2804:4a10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a14::,2804:4a14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a18::,2804:4a18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a1c::,2804:4a1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a20::,2804:4a20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a24::,2804:4a24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a28::,2804:4a28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a2c::,2804:4a2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a30::,2804:4a30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a34::,2804:4a34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a38::,2804:4a38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a3c::,2804:4a3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a40::,2804:4a40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a44::,2804:4a44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a48::,2804:4a48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a4c::,2804:4a4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a50::,2804:4a50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a54::,2804:4a54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a58::,2804:4a58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a5c::,2804:4a5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a60::,2804:4a60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a64::,2804:4a64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a68::,2804:4a68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a6c::,2804:4a6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a70::,2804:4a70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a74::,2804:4a74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a78::,2804:4a78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a7c::,2804:4a7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a80::,2804:4a80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a84::,2804:4a84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a88::,2804:4a88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a8c::,2804:4a8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a90::,2804:4a90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a94::,2804:4a94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a98::,2804:4a98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4a9c::,2804:4a9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4aa0::,2804:4aa0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4aa4::,2804:4aa4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4aa8::,2804:4aa8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4aac::,2804:4aac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ab0::,2804:4ab0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ab4::,2804:4ab4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ab8::,2804:4ab8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4abc::,2804:4abc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ac0::,2804:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ac4::,2804:4ac4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ac8::,2804:4ac8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4acc::,2804:4acc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ad0::,2804:4ad0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ad4::,2804:4ad4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ad8::,2804:4ad8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4adc::,2804:4adc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ae0::,2804:4ae0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ae4::,2804:4ae4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ae8::,2804:4ae8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4aec::,2804:4aec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4af0::,2804:4af0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4af4::,2804:4af4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4af8::,2804:4af8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4afc::,2804:4afc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b00::,2804:4b00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b04::,2804:4b04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b08::,2804:4b08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b0c::,2804:4b0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b10::,2804:4b10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b14::,2804:4b14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b18::,2804:4b18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b1c::,2804:4b1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b20::,2804:4b20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b24::,2804:4b24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b28::,2804:4b28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b2c::,2804:4b2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b30::,2804:4b30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b34::,2804:4b34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b38::,2804:4b38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b3c::,2804:4b3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b40::,2804:4b40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b44::,2804:4b44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b48::,2804:4b48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b4c::,2804:4b4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b50::,2804:4b50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b54::,2804:4b54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b58::,2804:4b58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b5c::,2804:4b5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b60::,2804:4b60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b64::,2804:4b64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b68::,2804:4b68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b6c::,2804:4b6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b70::,2804:4b70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b74::,2804:4b74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b78::,2804:4b78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b7c::,2804:4b7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b80::,2804:4b80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b84::,2804:4b84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b88::,2804:4b88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b8c::,2804:4b8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b90::,2804:4b90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b94::,2804:4b94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b98::,2804:4b98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4b9c::,2804:4b9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ba0::,2804:4ba0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ba4::,2804:4ba4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ba8::,2804:4ba8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bac::,2804:4bac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bb0::,2804:4bb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bb4::,2804:4bb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bb8::,2804:4bb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bbc::,2804:4bbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bc0::,2804:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bc4::,2804:4bc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bc8::,2804:4bc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bcc::,2804:4bcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bd0::,2804:4bd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bd4::,2804:4bd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bd8::,2804:4bd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bdc::,2804:4bdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4be0::,2804:4be0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4be4::,2804:4be4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4be8::,2804:4be8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bec::,2804:4bec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bf0::,2804:4bf0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bf4::,2804:4bf4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bf8::,2804:4bf8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4bfc::,2804:4bfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c00::,2804:4c00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c04::,2804:4c04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c08::,2804:4c08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c0c::,2804:4c0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c10::,2804:4c10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c14::,2804:4c14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c18::,2804:4c18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c1c::,2804:4c1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c20::,2804:4c20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c24::,2804:4c24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c28::,2804:4c28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c2c::,2804:4c2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c30::,2804:4c30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c34::,2804:4c34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c38::,2804:4c38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c3c::,2804:4c3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c40::,2804:4c40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c44::,2804:4c44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c48::,2804:4c48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c4c::,2804:4c4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c50::,2804:4c50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c54::,2804:4c54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c58::,2804:4c58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c5c::,2804:4c5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c60::,2804:4c60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c64::,2804:4c64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c68::,2804:4c68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c6c::,2804:4c6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c70::,2804:4c70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c74::,2804:4c74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c78::,2804:4c78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c7c::,2804:4c7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c80::,2804:4c80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c84::,2804:4c84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c88::,2804:4c88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c8c::,2804:4c8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c90::,2804:4c90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c94::,2804:4c94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c98::,2804:4c98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4c9c::,2804:4c9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ca0::,2804:4ca0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ca4::,2804:4ca4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ca8::,2804:4ca8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cac::,2804:4cac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cb0::,2804:4cb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cb4::,2804:4cb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cb8::,2804:4cb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cbc::,2804:4cbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cc0::,2804:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cc4::,2804:4cc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cc8::,2804:4cc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ccc::,2804:4ccc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cd0::,2804:4cd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cd4::,2804:4cd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cd8::,2804:4cd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cdc::,2804:4cdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ce0::,2804:4ce0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ce4::,2804:4ce4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ce8::,2804:4ce8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cec::,2804:4cec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cf0::,2804:4cf0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cf4::,2804:4cf4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cf8::,2804:4cf8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4cfc::,2804:4cfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d00::,2804:4d00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d04::,2804:4d04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d08::,2804:4d08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d0c::,2804:4d0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d10::,2804:4d10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d14::,2804:4d14:ffff:ffff:ffff:ffff:ffff:ffff,US
+2804:4d18::,2804:4d18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d1c::,2804:4d1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d20::,2804:4d20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d24::,2804:4d24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d28::,2804:4d28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d2c::,2804:4d2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d30::,2804:4d30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d34::,2804:4d34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d38::,2804:4d38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d3c::,2804:4d3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d40::,2804:4d40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d44::,2804:4d44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d48::,2804:4d48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d4c::,2804:4d4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d50::,2804:4d50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d54::,2804:4d54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d58::,2804:4d58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d5c::,2804:4d5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d60::,2804:4d60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d64::,2804:4d64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d68::,2804:4d68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d6c::,2804:4d6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d70::,2804:4d70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d74::,2804:4d74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d78::,2804:4d78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d7c::,2804:4d7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d80::,2804:4d80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d84::,2804:4d84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d88::,2804:4d88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d8c::,2804:4d8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d90::,2804:4d90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d94::,2804:4d94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d98::,2804:4d98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4d9c::,2804:4d9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4da0::,2804:4da0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4da4::,2804:4da4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4da8::,2804:4da8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dac::,2804:4dac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4db0::,2804:4db0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4db4::,2804:4db4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4db8::,2804:4db8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dbc::,2804:4dbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dc0::,2804:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dc4::,2804:4dc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dc8::,2804:4dc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dcc::,2804:4dcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dd0::,2804:4dd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dd4::,2804:4dd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dd8::,2804:4dd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ddc::,2804:4ddc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4de0::,2804:4de0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4de4::,2804:4de4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4de8::,2804:4de8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dec::,2804:4dec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4df0::,2804:4df0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4df4::,2804:4df4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4df8::,2804:4df8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4dfc::,2804:4dfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e00::,2804:4e00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e04::,2804:4e04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e08::,2804:4e08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e0c::,2804:4e0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e10::,2804:4e10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e14::,2804:4e14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e18::,2804:4e18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e1c::,2804:4e1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e20::,2804:4e20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e24::,2804:4e24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e28::,2804:4e28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e2c::,2804:4e2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e30::,2804:4e30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e34::,2804:4e34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e38::,2804:4e38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e3c::,2804:4e3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e40::,2804:4e40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e44::,2804:4e44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e48::,2804:4e48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e4c::,2804:4e4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e50::,2804:4e50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e54::,2804:4e54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e58::,2804:4e58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e5c::,2804:4e5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e60::,2804:4e60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e64::,2804:4e64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e68::,2804:4e68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e6c::,2804:4e6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e70::,2804:4e70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e74::,2804:4e74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e78::,2804:4e78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e7c::,2804:4e7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e80::,2804:4e80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e84::,2804:4e84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e88::,2804:4e88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e8c::,2804:4e8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e90::,2804:4e90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e94::,2804:4e94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e98::,2804:4e98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4e9c::,2804:4e9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ea0::,2804:4ea0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ea4::,2804:4ea4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ea8::,2804:4ea8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4eac::,2804:4eac:ffff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:200::,2806:216::ffff:ffff:ffff:ffff:ffff,MX
+2806:200::,2806:215:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:217::,2806:220:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:230::,2806:230:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:238::,2806:238::ffff:ffff:ffff:ffff:ffff,MX
2806:238:10::,2806:238:10:ffff:ffff:ffff:ffff:ffff,MX
2806:239::,2806:240:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:250::,2806:250:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:260::,2806:260:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:270::,2806:270:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:260::,2806:270:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:280::,2806:290:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2a0::,2806:2a0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2b0::,2806:2b0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2c0::,2806:2c0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2d0::,2806:2d0:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:2e0::,2806:2e6:d:ffff:ffff:ffff:ffff:ffff,MX
-2806:2e6:e::,2806:2e6:e:7fff:ffff:ffff:ffff:ffff,US
-2806:2e6:e:8000::,2806:2ee:ffff:ffff:ffff:ffff:ffff:ffff,MX
+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:2f6:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:300::,2806:300:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:2f6::,2806:301: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
@@ -25393,9 +25084,7 @@
2806:370::,2806:370:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:1000::,2806:10ff:ffff:ffff:ffff:ffff:ffff:ffff,MX
2a00::,2a00:3ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:800::,2a00:865:7d68:7fff:ffff:ffff:ffff:ffff,SE
-2a00:865:7d68:8000::,2a00:865:7d68:ffff:ffff:ffff:ffff:ffff,NL
-2a00:865:7d69::,2a00:87f:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a00:800::,2a00:87f:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:c00::,2a00:c00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:c08::,2a00:c08:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:c10::,2a00:c10:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -25418,9 +25107,7 @@
2a00:ca8::,2a00:ca8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:cb0::,2a00:cb0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cb8::,2a00:cb8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:cc0::,2a00:cc0:fffd:ffff:ffff:ffff:ffff:ffff,DE
-2a00:cc0:fffe::,2a00:cc0:fffe:7fff:ffff:ffff:ffff:ffff,NL
-2a00:cc0:fffe:8000::,2a00:cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:cc0::,2a00:cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cc8::,2a00:cc8:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:cd0::,2a00:cd0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cd8::,2a00:cd8:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -25450,9 +25137,7 @@
2a00:db8::,2a00:db8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:dc0::,2a00:dc0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:dc8::,2a00:dc8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:dd0::,2a00:dd0:fffe:ffff:ffff:ffff:ffff:ffff,NL
-2a00:dd0:ffff::,2a00:dd0:ffff:7fff:ffff:ffff:ffff:ffff,SE
-2a00:dd0:ffff:8000::,2a00:dd0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:dd0::,2a00:dd0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:dd8::,2a00:dd8:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a00:de8::,2a00:de8:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:df0::,2a00:df0:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -25471,7 +25156,7 @@
2a00:e70::,2a00:e70:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:e78::,2a00:e7b:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:e80::,2a00:e80:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:e88::,2a00:e88:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a00:e88::,2a00:e8f:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:e90::,2a00:e90:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a00:e98::,2a00:e98:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:ea0::,2a00:ea7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -25482,9 +25167,7 @@
2a00:ec8::,2a00:ec8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:ed0::,2a00:ed0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:ed8::,2a00:ed8:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a00:ee0::,2a00:ee2:2201:7fff:ffff:ffff:ffff:ffff,SI
-2a00:ee2:2201:8000::,2a00:ee2:2201:9fff:ffff:ffff:ffff:ffff,FR
-2a00:ee2:2201:a000::,2a00:ee7:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a00:ee0::,2a00:ee7:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a00:ee8::,2a00:ee8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:ef0::,2a00:ef0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:ef8::,2a00:ef8:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -25568,28 +25251,18 @@
2a00:1190::,2a00:1190:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:1198::,2a00:1198:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:11a8::,2a00:11a8:ffff:ffff:ffff:ffff:ffff:ffff,OM
-2a00:11b0::,2a00:11b0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:11b0::,2a00:11b7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:11b8::,2a00:11b8:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:11c0::,2a00:11c0:1:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:2::,2a00:11c0:2:7fff:ffff:ffff:ffff:ffff,FR
-2a00:11c0:2:8000::,2a00:11c0:3:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:4::,2a00:11c0:4:7fff:ffff:ffff:ffff:ffff,CZ
-2a00:11c0:4:8000::,2a00:11c0:4:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:5::,2a00:11c0:5:7fff:ffff:ffff:ffff:ffff,CH
-2a00:11c0:5:8000::,2a00:11c0:5:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:6::,2a00:11c0:6:7fff:ffff:ffff:ffff:ffff,JP
-2a00:11c0:6:8000::,2a00:11c0:7:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0::,2a00:11c0:3:ffff:ffff:ffff:ffff:ffff,FR
+2a00:11c0:4::,2a00:11c0:5:ffff:ffff:ffff:ffff:ffff,CH
+2a00:11c0:6::,2a00:11c0:7:ffff:ffff:ffff:ffff:ffff,JP
2a00:11c0:8::,2a00:11c0:8:ffff:ffff:ffff:ffff:ffff,GB
-2a00:11c0:9::,2a00:11c0:9:7fff:ffff:ffff:ffff:ffff,IE
-2a00:11c0:9:8000::,2a00:11c0:a:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:9::,2a00:11c0:a:ffff:ffff:ffff:ffff:ffff,AT
2a00:11c0:b::,2a00:11c0:b:ffff:ffff:ffff:ffff:ffff,IT
-2a00:11c0:c::,2a00:11c0:d:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:e::,2a00:11c0:e:7fff:ffff:ffff:ffff:ffff,DE
-2a00:11c0:e:8000::,2a00:11c0:1f:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:20::,2a00:11c0:20:7fff:ffff:ffff:ffff:ffff,US
-2a00:11c0:20:8000::,2a00:11c0:33:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:34::,2a00:11c0:34:7fff:ffff:ffff:ffff:ffff,SG
-2a00:11c0:34:8000::,2a00:11c0:62:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:c::,2a00:11c0:1f:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:20::,2a00:11c0:2f:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:30::,2a00:11c0:37:ffff:ffff:ffff:ffff:ffff,SG
+2a00:11c0:38::,2a00:11c0:62:ffff:ffff:ffff:ffff:ffff,AT
2a00:11c0:63::,2a00:11c0:63:ffff:ffff:ffff:ffff:ffff,NL
2a00:11c0:64::,2a00:11c0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:11c8::,2a00:11c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -25607,14 +25280,27 @@
2a00:1228::,2a00:1228:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:1230::,2a00:1237:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1238::,2a00:1238:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a00:1240::,2a00:1240:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:1248::,2a00:1248:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1258::,2a00:1258:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a00:1260::,2a00:1260:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1268::,2a00:1268:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:1278::,2a00:1278:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1280::,2a00:1280:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:1288::,2a00:1288:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288::,2a00:1288:ef69:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:ef6a::,2a00:1288:ef6a:ffff:ffff:ffff:ffff:ffff,IE
+2a00:1288:ef6b::,2a00:1288:ef6b:ffff:ffff:ffff:ffff:ffff,DE
+2a00:1288:ef6c::,2a00:1288:ef6c:ffff:ffff:ffff:ffff:ffff,FR
+2a00:1288:ef6d::,2a00:1288:ef83:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:ef84::,2a00:1288:ef84:ffff:ffff:ffff:ffff:ffff,IE
+2a00:1288:ef85::,2a00:1288:ef9a:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:ef9b::,2a00:1288:ef9b:ffff:ffff:ffff:ffff:ffff,IL
+2a00:1288:ef9c::,2a00:1288:efc1:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:efc2::,2a00:1288:efc2:ffff:ffff:ffff:ffff:ffff,NO
+2a00:1288:efc3::,2a00:1288:efc3:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:efc4::,2a00:1288:efc4:ffff:ffff:ffff:ffff:ffff,DE
+2a00:1288:efc5::,2a00:1288:efc9:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1288:efca::,2a00:1288:efca:ffff:ffff:ffff:ffff:ffff,IL
+2a00:1288:efcb::,2a00:1288:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1290::,2a00:1290:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1298::,2a00:1298:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a00:12a0::,2a00:12a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25629,62 +25315,17 @@
2a00:12f8::,2a00:12f8:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a00:1300::,2a00:1300:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1308::,2a00:1308:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a00:1318::,2a00:1318:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1320::,2a00:1327:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1328::,2a00:1328:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1338::,2a00:1338:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1340::,2a00:1340:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1348::,2a00:1348:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1350::,2a00:1350:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:1358::,2a00:1358:d019:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:d01a::,2a00:1358:d01a:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:d01a:8000::,2a00:1358:e03d:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e03e::,2a00:1358:e03e:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e03e:8000::,2a00:1358:e07b:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e07b:8000::,2a00:1358:e07b:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e07c::,2a00:1358:e0fb:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e0fc::,2a00:1358:e0fc:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e0fc:8000::,2a00:1358:e10d:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e10d:8000::,2a00:1358:e10d:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e10e::,2a00:1358:e122:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e122:8000::,2a00:1358:e122:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e123::,2a00:1358:e123:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e124::,2a00:1358:e124:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e124:8000::,2a00:1358:e13f:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e13f:8000::,2a00:1358:e13f:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e140::,2a00:1358:e140:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e140:8000::,2a00:1358:e140:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e141::,2a00:1358:e149:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e149:8000::,2a00:1358:e149:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e14a::,2a00:1358:e150:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e150:8000::,2a00:1358:e150:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e151::,2a00:1358:e158:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e159::,2a00:1358:e159:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e159:8000::,2a00:1358:e15e:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e15f::,2a00:1358:e15f:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e15f:8000::,2a00:1358:e167:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e167:8000::,2a00:1358:e167:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e168::,2a00:1358:e17f:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e17f:8000::,2a00:1358:e17f:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e180::,2a00:1358:e186:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e186:8000::,2a00:1358:e186:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e187::,2a00:1358:e198:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e198:8000::,2a00:1358:e198:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e199::,2a00:1358:e19a:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e19b::,2a00:1358:e19b:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e19b:8000::,2a00:1358:e1b8:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e1b9::,2a00:1358:e1b9:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e1b9:8000::,2a00:1358:e1f3:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e1f3:8000::,2a00:1358:e1f3:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e1f4::,2a00:1358:e1f5:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e1f5:8000::,2a00:1358:e1f5:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e1f6::,2a00:1358:e1f8:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e1f8:8000::,2a00:1358:e1f8:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e1f9::,2a00:1358:e204:ffff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e205::,2a00:1358:e205:7fff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e205:8000::,2a00:1358:e263:7fff:ffff:ffff:ffff:ffff,GR
-2a00:1358:e263:8000::,2a00:1358:e263:ffff:ffff:ffff:ffff:ffff,CY
-2a00:1358:e264::,2a00:135b:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a00:1358::,2a00:1358:cfff:ffff:ffff:ffff:ffff:ffff,GR
+2a00:1358:d000::,2a00:1358:d07f:ffff:ffff:ffff:ffff:ffff,CY
+2a00:1358:d080::,2a00:1358:e0ff:ffff:ffff:ffff:ffff:ffff,GR
+2a00:1358:e100::,2a00:1358:e27f:ffff:ffff:ffff:ffff:ffff,CY
+2a00:1358:e280::,2a00:135f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a00:1360::,2a00:1360:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:1368::,2a00:1368:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a00:1370::,2a00:1370:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25711,11 +25352,15 @@
2a00:1410::,2a00:1410:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1418::,2a00:1418:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1420::,2a00:1420:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a00:1428::,2a00:1428:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a00:1428::,2a00:142f:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a00:1430::,2a00:1430:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1440::,2a00:1440:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1448::,2a00:144f:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a00:1450::,2a00:1450:400b:ffff:ffff:ffff:ffff:ffff,IE
+2a00:1450::,2a00:1450:4000:ffff:ffff:ffff:ffff:ffff,IE
+2a00:1450:4001::,2a00:1450:4001:ffff:ffff:ffff:ffff:ffff,DE
+2a00:1450:4002::,2a00:1450:4008:ffff:ffff:ffff:ffff:ffff,IE
+2a00:1450:4009::,2a00:1450:4009:ffff:ffff:ffff:ffff:ffff,GB
+2a00:1450:400a::,2a00:1450:400b:ffff:ffff:ffff:ffff:ffff,IE
2a00:1450:400c::,2a00:1450:400c:ffff:ffff:ffff:ffff:ffff,BE
2a00:1450:400d::,2a00:1450:400f:ffff:ffff:ffff:ffff:ffff,IE
2a00:1450:4010::,2a00:1450:4010:ffff:ffff:ffff:ffff:ffff,FI
@@ -25761,9 +25406,7 @@
2a00:1588::,2a00:1588:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:1590::,2a00:1590:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a00:1598::,2a00:159f:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a00:15a0::,2a00:15a0:f:ffff:ffff:ffff:ffff:ffff,NO
-2a00:15a0:10::,2a00:15a0:10:7fff:ffff:ffff:ffff:ffff,SE
-2a00:15a0:10:8000::,2a00:15a0:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a00:15a0::,2a00:15a0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:15a8::,2a00:15a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:15b0::,2a00:15b0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:15b8::,2a00:15b8:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -25812,7 +25455,7 @@
2a00:1778::,2a00:1778:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:1780::,2a00:1780:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a00:1788::,2a00:1788:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:1790::,2a00:1790:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:1790::,2a00:1797:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:1798::,2a00:1798:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:17a0::,2a00:17a0:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:17a8::,2a00:17a8:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -25848,7 +25491,7 @@
2a00:18b0::,2a00:18b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:18b8::,2a00:18b8:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:18c0::,2a00:18c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:18c8::,2a00:18c8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:18c8::,2a00:18cf:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:18d0::,2a00:18d0:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a00:18d8::,2a00:18d8:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a00:18e0::,2a00:18e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -25856,9 +25499,7 @@
2a00:18f0::,2a00:18f0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:18f8::,2a00:18f8:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a00:1900::,2a00:1900:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:1908::,2a00:1908:a0:ffff:ffff:ffff:ffff:ffff,UA
-2a00:1908:a1::,2a00:1908:a1:7fff:ffff:ffff:ffff:ffff,DE
-2a00:1908:a1:8000::,2a00:1908:fffa:ffff:ffff:ffff:ffff:ffff,UA
+2a00:1908::,2a00:1908:fffa:ffff:ffff:ffff:ffff:ffff,UA
2a00:1908:fffb::,2a00:1908:fffb:ffff:ffff:ffff:ffff:ffff,DE
2a00:1908:fffc::,2a00:1908:fffc:ffff:ffff:ffff:ffff:ffff,UA
2a00:1908:fffd::,2a00:1908:fffd:ffff:ffff:ffff:ffff:ffff,DE
@@ -25872,8 +25513,7 @@
2a00:1938::,2a00:1938:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1940::,2a00:1940:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1948::,2a00:1948:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1950::,2a00:1950:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:1958::,2a00:1958:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:1950::,2a00:1958:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1960::,2a00:1960:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:1968::,2a00:196f:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1970::,2a00:1970:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -25899,9 +25539,7 @@
2a00:1a10::,2a00:1a17:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1a18::,2a00:1a1f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1a20::,2a00:1a27:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a00:1a28::,2a00:1a28:200f:ffff:ffff:ffff:ffff:ffff,SE
-2a00:1a28:2010::,2a00:1a28:2010:7fff:ffff:ffff:ffff:ffff,NO
-2a00:1a28:2010:8000::,2a00:1a28:23ff:ffff:ffff:ffff:ffff:ffff,SE
+2a00:1a28::,2a00:1a28:23ff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1a28:2400::,2a00:1a28:24ff:ffff:ffff:ffff:ffff:ffff,FI
2a00:1a28:2500::,2a00:1a28:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1a30::,2a00:1a30:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -25958,8 +25596,7 @@
2a00:1bb8::,2a00:1bb8:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a00:1bc0::,2a00:1bc0:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1bc8::,2a00:1bc8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:1bd0::,2a00:1bd0:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:1bd8::,2a00:1bd8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:1bd0::,2a00:1bd8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1be0::,2a00:1be7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:1be8::,2a00:1bef:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:1bf0::,2a00:1bf0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -25969,7 +25606,7 @@
2a00:1c10::,2a00:1c10:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1c18::,2a00:1c1f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1c20::,2a00:1c20:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a00:1c28::,2a00:1c28:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a00:1c28::,2a00:1c2f:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1c30::,2a00:1c30:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:1c38::,2a00:1c3f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1c40::,2a00:1c40:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -26012,7 +25649,7 @@
2a00:1d68::,2a00:1d68:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:1d70::,2a00:1d70:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:1d78::,2a00:1d78:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1d80::,2a00:1d80:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a00:1d80::,2a00:1d80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1d88::,2a00:1d88:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:1d90::,2a00:1d90:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1da0::,2a00:1da0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -26053,7 +25690,7 @@
2a00:1eb8::,2a00:1eb8:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a00:1ec0::,2a00:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a00:1ec8::,2a00:1ecf:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1ed0::,2a00:1ed0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:1ed0::,2a00:1ed7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:1ed8::,2a00:1edf:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a00:1ee0::,2a00:1ee0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:1ee8::,2a00:1ee8:ffff:ffff:ffff:ffff:ffff:ffff,SY
@@ -26089,21 +25726,7 @@
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:23c0:3cb3:7fff:ffff:ffff:ffff:ffff,GB
-2a00:23c0:3cb3:8000::,2a00:23c0:3cb3:ffff:ffff:ffff:ffff:ffff,US
-2a00:23c0:3cb4::,2a00:23c3:49e9:ffff:ffff:ffff:ffff:ffff,GB
-2a00:23c3:49ea::,2a00:23c3:49ea:7fff:ffff:ffff:ffff:ffff,CZ
-2a00:23c3:49ea:8000::,2a00:23c3:6956:7fff:ffff:ffff:ffff:ffff,GB
-2a00:23c3:6956:8000::,2a00:23c3:6956:ffff:ffff:ffff:ffff:ffff,DE
-2a00:23c3:6957::,2a00:23c4:5a1a:ffff:ffff:ffff:ffff:ffff,GB
-2a00:23c4:5a1b::,2a00:23c4:5a1b:7fff:ffff:ffff:ffff:ffff,US
-2a00:23c4:5a1b:8000::,2a00:23c5:754:ffff:ffff:ffff:ffff:ffff,GB
-2a00:23c5:755::,2a00:23c5:755:7fff:ffff:ffff:ffff:ffff,US
-2a00:23c5:755:8000::,2a00:23c5:ca6:ffff:ffff:ffff:ffff:ffff,GB
-2a00:23c5:ca7::,2a00:23c5:ca7:3fff:ffff:ffff:ffff:ffff,NO
-2a00:23c5:ca7:4000::,2a00:23c5:68c3:7fff:ffff:ffff:ffff:ffff,GB
-2a00:23c5:68c3:8000::,2a00:23c5:68c3:ffff:ffff:ffff:ffff:ffff,MY
-2a00:23c5:68c4::,2a00:23ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:2000::,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
@@ -26148,7 +25771,7 @@
2a00:4520::,2a00:4527:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a00:4540::,2a00:4540:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:4560::,2a00:4560:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a00:4580::,2a00:4580:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a00:4580::,2a00:4583:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:45a0::,2a00:45a0:ffff:ffff:ffff:ffff:ffff:ffff,SY
2a00:45c0::,2a00:45c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:45e0::,2a00:45e7:ffff:ffff:ffff:ffff:ffff:ffff,IM
@@ -26230,7 +25853,7 @@
2a00:4f80::,2a00:4f80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:4fa0::,2a00:4fa7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:4fc0::,2a00:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:4fe0::,2a00:4fe0:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a00:4fe0::,2a00:4fe7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:5000::,2a00:5007:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a00:5020::,2a00:5020:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:5060::,2a00:5060:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -26268,31 +25891,20 @@
2a00:54a0::,2a00:54a0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:54c0::,2a00:54c0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:54e0::,2a00:54e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a00:5500::,2a00:5500::7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:0:8000::,2a00:5500:1:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:2::,2a00:5500:2:7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:2:8000::,2a00:5500:1fff:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:2000::,2a00:5500:2000:7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:2000:8000::,2a00:5500:80f1:7fff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80f1:8000::,2a00:5500:80f1:ffff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80f2::,2a00:5500:80f3:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80f4::,2a00:5500:80f4:ffff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80f5::,2a00:5500:80f5:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80f6::,2a00:5500:80f6:7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80f6:8000::,2a00:5500:80f6:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80f7::,2a00:5500:80f7:7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80f7:8000::,2a00:5500:80f7:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80f8::,2a00:5500:80fa:7fff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80fa:8000::,2a00:5500:80fa:ffff:ffff:ffff:ffff:ffff,FI
-2a00:5500:80fb::,2a00:5500:80fe:ffff:ffff:ffff:ffff:ffff,AX
-2a00:5500:80ff::,2a00:5500:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a00:5500::,2a00:5500:807f:ffff:ffff:ffff:ffff:ffff,FI
+2a00:5500:8080::,2a00:5500:80ff:ffff:ffff:ffff:ffff:ffff,AX
+2a00:5500:8100::,2a00:5500:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:5520::,2a00:5520:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:5540::,2a00:5540:385:ffff:ffff:ffff:ffff:ffff,GB
2a00:5540:386::,2a00:5540:387:ffff:ffff:ffff:ffff:ffff,SI
2a00:5540:388::,2a00:5540:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:5560::,2a00:5560:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:5580::,2a00:5580:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:55a0::,2a00:55a0:e9ff:ffff:ffff:ffff:ffff:ffff,IL
+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: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
2a00:55a0:ea00::,2a00:55a0:eaff:ffff:ffff:ffff:ffff:ffff,GB
2a00:55a0:eb00::,2a00:55a0:efff:ffff:ffff:ffff:ffff:ffff,IL
2a00:55a0:f000::,2a00:55a0:f0ff:ffff:ffff:ffff:ffff:ffff,GB
@@ -26348,7 +25960,7 @@
2a00:5bc0::,2a00:5bc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:5be0::,2a00:5be0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:5c00::,2a00:5c00:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a00:5c20::,2a00:5c20:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:5c20::,2a00:5c23:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:5c40::,2a00:5c47:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a00:5c60::,2a00:5c60:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:5c80::,2a00:5c80:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -26403,8 +26015,7 @@
2a00:62e0::,2a00:62e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:6300::,2a00:6300:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:6320::,2a00:6320:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:6340::,2a00:6340:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a00:6360::,2a00:6360:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:6340::,2a00:6347:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:6380::,2a00:6380:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:63a0::,2a00:63a0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:63c0::,2a00:63c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -26452,7 +26063,6 @@
2a00:6920::,2a00:6920:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a00:6940::,2a00:6940:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:6960::,2a00:6960:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:6980::,2a00:6980:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:69a0::,2a00:69a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:69c0::,2a00:69c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:69e0::,2a00:69e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -26580,28 +26190,12 @@
2a00:7960::,2a00:7960:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:79a0::,2a00:79a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:79c0::,2a00:79c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:79e0::,2a00:79e0::ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:1::,2a00:79e0:1:7fff:ffff:ffff:ffff:ffff,CZ
-2a00:79e0:1:8000::,2a00:79e0:2:7fff:ffff:ffff:ffff:ffff,PL
-2a00:79e0:2:8000::,2a00:79e0:2:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:3::,2a00:79e0:3:7fff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:3:8000::,2a00:79e0:3:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:4::,2a00:79e0:4:7fff:ffff:ffff:ffff:ffff,FI
-2a00:79e0:4:8000::,2a00:79e0:5:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:6::,2a00:79e0:6:7fff:ffff:ffff:ffff:ffff,GB
-2a00:79e0:6:8000::,2a00:79e0:a:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:b::,2a00:79e0:b:ffff:ffff:ffff:ffff:ffff,IT
-2a00:79e0:c::,2a00:79e0:c:7fff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:c:8000::,2a00:79e0:c:ffff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:d::,2a00:79e0:d:ffff:ffff:ffff:ffff:ffff,GB
-2a00:79e0:e::,2a00:79e0:13:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0::,2a00:79e0:7:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:79e0:8::,2a00:79e0:f:ffff:ffff:ffff:ffff:ffff,GB
+2a00:79e0:10::,2a00:79e0:13:ffff:ffff:ffff:ffff:ffff,GH
2a00:79e0:14::,2a00:79e0:14:ffff:ffff:ffff:ffff:ffff,ZA
2a00:79e0:15::,2a00:79e0:15:ffff:ffff:ffff:ffff:ffff,DE
-2a00:79e0:16::,2a00:79e0:17:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:18::,2a00:79e0:18:7fff:ffff:ffff:ffff:ffff,NO
-2a00:79e0:18:8000::,2a00:79e0:19:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:1a::,2a00:79e0:1a:7fff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:1a:8000::,2a00:79e0:1b:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:16::,2a00:79e0:1b:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:1c::,2a00:79e0:1c:ffff:ffff:ffff:ffff:ffff,NL
2a00:79e0:1d::,2a00:79e0:1e:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:1f::,2a00:79e0:1f:ffff:ffff:ffff:ffff:ffff,LT
@@ -26611,14 +26205,24 @@
2a00:79e0:27::,2a00:79e0:27:ffff:ffff:ffff:ffff:ffff,NL
2a00:79e0:28::,2a00:79e0:30:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:31::,2a00:79e0:31:ffff:ffff:ffff:ffff:ffff,SK
-2a00:79e0:32::,2a00:79e0:3f:ffff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:40::,2a00:79e0:40:7fff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:40:8000::,2a00:79e0:ffe2:4ff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:32::,2a00:79e0:34:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:35::,2a00:79e0:35:ffff:ffff:ffff:ffff:ffff,IE
+2a00:79e0:36::,2a00:79e0:36:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:37::,2a00:79e0:37:ffff:ffff:ffff:ffff:ffff,DE
+2a00:79e0:38::,2a00:79e0:3f:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:40::,2a00:79e0:5f:ffff:ffff:ffff:ffff:ffff,IE
+2a00:79e0:60::,2a00:79e0:ffe2:4ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:500::,2a00:79e0:ffe2:5ff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:ffe2:600::,2a00:79e1:abb:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:600::,2a00:79e1:a7f:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e1:a80::,2a00:79e1:abb:ffff:ffff:ffff:ffff:ffff,IN
2a00:79e1:abc::,2a00:79e1:abc:ff:ffff:ffff:ffff:ffff,GB
-2a00:79e1:abc:100::,2a00:79e1:abc:7fff:ffff:ffff:ffff:ffff,US
-2a00:79e1:abc:8000::,2a00:79e1:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e1:abc:100::,2a00:79e1:abc:1ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:200::,2a00:79e1:abc:6eff:ffff:ffff:ffff:ffff,IN
+2a00:79e1:abc:6f00::,2a00:79e1:abc:6fff:ffff:ffff:ffff:ffff,TW
+2a00:79e1:abc:7000::,2a00:79e1:abc:90ff:ffff:ffff:ffff:ffff,IN
+2a00:79e1:abc:9100::,2a00:79e1:abc:91ff:ffff:ffff:ffff:ffff,TW
+2a00:79e1:abc:9200::,2a00:79e1:aff:ffff:ffff:ffff:ffff:ffff,IN
+2a00:79e1:b00::,2a00:79e1:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:7a00::,2a00:7a00:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:7a20::,2a00:7a20:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:7a40::,2a00:7a40:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -26727,7 +26331,6 @@
2a00:87e0::,2a00:87e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8820::,2a00:8820:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a00:8840::,2a00:8840:ffff:ffff:ffff:ffff:ffff:ffff,UZ
-2a00:8860:8007::,2a00:8860:8007:7fff:ffff:ffff:ffff:ffff,NL
2a00:8880::,2a00:8880:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:88a0::,2a00:88a0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:88c0::,2a00:88c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -26750,16 +26353,14 @@
2a00:8ae0::,2a00:8ae0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8b00::,2a00:8b00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:8b20::,2a00:8b20:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:8b40::,2a00:8b40:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:8b40::,2a00:8b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8b60::,2a00:8b60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:8b80::,2a00:8b80:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:8ba0::,2a00:8ba0:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a00:8be0::,2a00:8be7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:8c00::,2a00:8c00:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a00:8c20::,2a00:8c20:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:8c40::,2a00:8c40:242:ffff:ffff:ffff:ffff:ffff,GB
-2a00:8c40:243::,2a00:8c40:243:7fff:ffff:ffff:ffff:ffff,FR
-2a00:8c40:243:8000::,2a00:8c40:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:8c40::,2a00:8c40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8c60::,2a00:8c60:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:8c80::,2a00:8c80:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a00:8ca0::,2a00:8ca0:ffff:ffff:ffff:ffff:ffff:ffff,BA
@@ -26830,7 +26431,7 @@
2a00:9500::,2a00:9500:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a00:9520::,2a00:9520:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:9540::,2a00:9540:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a00:9560::,2a00:9560:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a00:9560::,2a00:9567:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:9580::,2a00:9580:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:95a0::,2a00:95a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:95c0::,2a00:95c0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -27019,7 +26620,7 @@
2a00:aca0::,2a00:aca0:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:acc0::,2a00:acc0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:ace0::,2a00:ace0:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a00:ad00::,2a00:ad00:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a00:ad00::,2a00:ad07:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a00:ad20::,2a00:ad20:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:ad40::,2a00:ad47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:ad60::,2a00:ad60:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27035,7 +26636,6 @@
2a00:aec0::,2a00:aec0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:aee0::,2a00:aee7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:af00::,2a00:af00:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:af20::,2a00:af20:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:af40::,2a00:af40:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:af60::,2a00:af60:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a00:af80::,2a00:af80:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27069,7 +26669,7 @@
2a00:b340::,2a00:b340:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:b360::,2a00:b360:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:b380::,2a00:b380:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a00:b3a0::,2a00:b3a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:b3a0::,2a00:b3a7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:b3c0::,2a00:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a00:b400::,2a00:b407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:b420::,2a00:b420:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -27262,7 +26862,7 @@
2a00:cbe0::,2a00:cbe0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:cc00::,2a00:cc00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:cc20::,2a00:cc20:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:cc40::,2a00:cc40:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a00:cc40::,2a00:cc47:ffff:ffff:ffff:ffff:ffff:ffff,AM
2a00:cc60::,2a00:cc60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:cc80::,2a00:cc80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:cca0::,2a00:cca0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -27511,7 +27111,7 @@
2a00:ec00::,2a00:ec00:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:ec20::,2a00:ec23:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:ec40::,2a00:ec47:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:ec80::,2a00:ec80:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a00:ec80::,2a00:ec87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:eca0::,2a00:eca0:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:ecc0::,2a00:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:ece0::,2a00:ece7:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -27604,9 +27204,7 @@
2a00:f860::,2a00:f860:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:f880::,2a00:f880:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:f8a0::,2a00:f8a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:f8c0::,2a00:f8c0:4000:ffff:ffff:ffff:ffff:ffff,LI
-2a00:f8c0:4001::,2a00:f8c0:4001:7fff:ffff:ffff:ffff:ffff,AT
-2a00:f8c0:4001:8000::,2a00:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,LI
+2a00:f8c0::,2a00:f8c0:ffff:ffff:ffff:ffff:ffff:ffff,LI
2a00:f8e0::,2a00:f8e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:f900::,2a00:f907:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a00:f920::,2a00:f920:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27642,9 +27240,7 @@
2a00:fd20::,2a00:fd20:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a00:fd40::,2a00:fd40:5:ffff:ffff:ffff:ffff:ffff,NL
2a00:fd40:6::,2a00:fd40:7:ffff:ffff:ffff:ffff:ffff,SK
-2a00:fd40:8::,2a00:fd41:5297:ffff:ffff:ffff:ffff:ffff,NL
-2a00:fd41:5298::,2a00:fd41:5298:7fff:ffff:ffff:ffff:ffff,GB
-2a00:fd41:5298:8000::,2a00:fd47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:fd40:8::,2a00:fd47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:fd60::,2a00:fd60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:fd80::,2a00:fd80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:fda0::,2a00:fda0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -27691,15 +27287,7 @@
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:896c:7fff:ffff:ffff:ffff:ffff,UA
-2a01:d0:896c:8000::,2a01:d0:896c:ffff:ffff:ffff:ffff:ffff,RU
-2a01:d0:896d::,2a01:d0:9637:7fff:ffff:ffff:ffff:ffff,UA
-2a01:d0:9637:8000::,2a01:d0:9637:ffff:ffff:ffff:ffff:ffff,NL
-2a01:d0:9638::,2a01:d0:e16e:ffff:ffff:ffff:ffff:ffff,UA
-2a01:d0:e16f::,2a01:d0:e16f:7fff:ffff:ffff:ffff:ffff,DK
-2a01:d0:e16f:8000::,2a01:d0:e314:ffff:ffff:ffff:ffff:ffff,UA
-2a01:d0:e315::,2a01:d0:e315:7fff:ffff:ffff:ffff:ffff,RU
-2a01:d0:e315:8000::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,UA
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
@@ -27707,11 +27295,17 @@
2a01:f8::,2a01:f8:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:100::,2a01:100:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:108::,2a01:108:ffff:ffff:ffff:ffff:ffff:ffff,SK
-2a01:110::,2a01:110:9007:ffff:ffff:ffff:ffff:ffff,GB
-2a01:110:9008::,2a01:110:9008:7fff:ffff:ffff:ffff:ffff,EE
-2a01:110:9008:8000::,2a01:110:a007:ffff:ffff:ffff:ffff:ffff,GB
-2a01:110:a008::,2a01:110:a008:7fff:ffff:ffff:ffff:ffff,IE
-2a01:110:a008:8000::,2a01:111:2000:3:ffff:ffff:ffff:ffff,GB
+2a01:110::,2a01:110:8fff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:9000::,2a01:110:907f:ffff:ffff:ffff:ffff:ffff,EE
+2a01:110:9080::,2a01:110:9fff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:a000::,2a01:110:a07f:ffff:ffff:ffff:ffff:ffff,IE
+2a01:110:a080::,2a01:110:dfff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e000::,2a01:110:e000:ffff:ffff:ffff:ffff:ffff,SI
+2a01:110:e001::,2a01:110:e007:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e008::,2a01:110:e008:ffff:ffff:ffff:ffff:ffff,EG
+2a01:110:e009::,2a01:110:e00f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e010::,2a01:110:e010:ffff:ffff:ffff:ffff:ffff,ZA
+2a01:110:e011::,2a01:111:2000:3:ffff:ffff:ffff:ffff,GB
2a01:111:2000:4::,2a01:111:2000:4:ffff:ffff:ffff:ffff,US
2a01:111:2000:5::,2a01:111:2000:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:2001::,2a01:111:2001:ffff:ffff:ffff:ffff:ffff,US
@@ -27721,7 +27315,7 @@
2a01:111:2008::,2a01:111:2008:ffff:ffff:ffff:ffff:ffff,US
2a01:111:2009::,2a01:111:2009:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:200a::,2a01:111:2010:ffff:ffff:ffff:ffff:ffff,US
-2a01:111:2011::,2a01:111:2011:ffff:ffff:ffff:ffff:ffff,PR
+2a01:111:2011::,2a01:111:2011:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:2012::,2a01:111:2013:ffff:ffff:ffff:ffff:ffff,US
2a01:111:2014::,2a01:111:2015:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:2016::,2a01:111:2016::ffff:ffff:ffff:ffff,US
@@ -27770,8 +27364,7 @@
2a01:111:2081::,2a01:111:f00f:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:f010::,2a01:111:f013:ffff:ffff:ffff:ffff:ffff,US
2a01:111:f014::,2a01:111:f0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:111:f100::,2a01:111:f100:4fff:ffff:ffff:ffff:ffff,US
-2a01:111:f100:5000::,2a01:111:f100:5fff:ffff:ffff:ffff:ffff,GB
+2a01:111:f100::,2a01:111:f100:5fff:ffff:ffff:ffff:ffff,US
2a01:111:f100:6000::,2a01:111:f100:6fff:ffff:ffff:ffff:ffff,HK
2a01:111:f100:7000::,2a01:111:f100:7fff:ffff:ffff:ffff:ffff,SG
2a01:111:f100:8000::,2a01:111:f100:9fff:ffff:ffff:ffff:ffff,NL
@@ -27998,8 +27591,8 @@
2a01:111:f400:70b2::,2a01:111:f400:70b5:ffff:ffff:ffff:ffff,HK
2a01:111:f400:70b6::,2a01:111:f400:70b6:ffff:ffff:ffff:ffff,GB
2a01:111:f400:70b7::,2a01:111:f400:70d1:ffff:ffff:ffff:ffff,HK
-2a01:111:f400:70d2::,2a01:111:f400:70e6:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:70e7::,2a01:111:f400:7116:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:70d2::,2a01:111:f400:70e7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:70e8::,2a01:111:f400:7116:ffff:ffff:ffff:ffff,IE
2a01:111:f400:7117::,2a01:111:f400:73ff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7400::,2a01:111:f400:742d:ffff:ffff:ffff:ffff,US
2a01:111:f400:742e::,2a01:111:f400:7431:ffff:ffff:ffff:ffff,GB
@@ -28168,7 +27761,9 @@
2a01:111:f400:e2da::,2a01:111:f400:e2db:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e2dc::,2a01:111:f400:e2dd:ffff:ffff:ffff:ffff,HK
2a01:111:f400:e2de::,2a01:111:f400:e2df:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e2e0::,2a01:111:f400:e2eb:ffff:ffff:ffff:ffff,US
+2a01:111:f400:e2e0::,2a01:111:f400:e2e8:ffff:ffff:ffff:ffff,US
+2a01:111:f400:e2e9::,2a01:111:f400:e2e9:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e2ea::,2a01:111:f400:e2eb:ffff:ffff:ffff:ffff,US
2a01:111:f400:e2ec::,2a01:111:f400:e2ec:ffff:ffff:ffff:ffff,FI
2a01:111:f400:e2ed::,2a01:111:f400:e2ed:ffff:ffff:ffff:ffff,NL
2a01:111:f400:e2ee::,2a01:111:f400:e2ee:ffff:ffff:ffff:ffff,AT
@@ -28211,7 +27806,7 @@
2a01:111:f400:e313::,2a01:111:f400:e313:ffff:ffff:ffff:ffff,IE
2a01:111:f400:e314::,2a01:111:f400:e33f:ffff:ffff:ffff:ffff,US
2a01:111:f400:e340::,2a01:111:f400:e340:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e341::,2a01:111:f400:e341:ffff:ffff:ffff:ffff,US
+2a01:111:f400:e341::,2a01:111:f400:e341:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e342::,2a01:111:f400:e343:ffff:ffff:ffff:ffff,IE
2a01:111:f400:e344::,2a01:111:f400:e344:ffff:ffff:ffff:ffff,NL
2a01:111:f400:e345::,2a01:111:f400:e345:ffff:ffff:ffff:ffff,US
@@ -28227,13 +27822,12 @@
2a01:111:f400:f35b::,2a01:111:f400:f361:ffff:ffff:ffff:ffff,US
2a01:111:f400:f362::,2a01:111:f400:f367:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f368::,2a01:111:f400:f36c:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:f36d::,2a01:111:f400:f37f:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:f380::,2a01:111:f400:f380:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:f36d::,2a01:111:f400:f380:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f381::,2a01:111:f400:f381:ffff:ffff:ffff:ffff,AT
2a01:111:f400:f382::,2a01:111:f400:f500:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f501::,2a01:111:f400:f506:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:f507::,2a01:111:f400:f510:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:f511::,2a01:111:f400:f531:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f507::,2a01:111:f400:f511:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f512::,2a01:111:f400:f531:ffff:ffff:ffff:ffff,US
2a01:111:f400:f532::,2a01:111:f400:f53f:ffff:ffff:ffff:ffff,IE
2a01:111:f400:f540::,2a01:111:f400:f543:ffff:ffff:ffff:ffff,US
2a01:111:f400:f544::,2a01:111:f400:f547:ffff:ffff:ffff:ffff,BR
@@ -28302,7 +27896,9 @@
2a01:111:f400:ffcc::,2a01:111:f400:ffcc:ffff:ffff:ffff:ffff,FI
2a01:111:f400:ffcd::,2a01:111:f400:ffd1:ffff:ffff:ffff:ffff,GB
2a01:111:f400:ffd2::,2a01:111:f400:ffd2:ffff:ffff:ffff:ffff,FR
-2a01:111:f400:ffd3::,2a01:111:f400:ffe7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:ffd3::,2a01:111:f400:ffe4:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:ffe5::,2a01:111:f400:ffe5:ffff:ffff:ffff:ffff,US
+2a01:111:f400:ffe6::,2a01:111:f400:ffe7:ffff:ffff:ffff:ffff,GB
2a01:111:f400:ffe8::,2a01:111:f400:ffe9:ffff:ffff:ffff:ffff,US
2a01:111:f400:ffea::,2a01:111:f400:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:f401::,2a01:111:f401::ffff:ffff:ffff:ffff,US
@@ -28318,8 +27914,10 @@
2a01:111:f402:1801::,2a01:111:f402:180b:ffff:ffff:ffff:ffff,GB
2a01:111:f402:180c::,2a01:111:f402:180c:ffff:ffff:ffff:ffff,US
2a01:111:f402:180d::,2a01:111:f402:180d:ffff:ffff:ffff:ffff,GB
-2a01:111:f402:180e::,2a01:111:f402:180e:ffff:ffff:ffff:ffff,US
-2a01:111:f402:180f::,2a01:111:f402:1fff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:180e::,2a01:111:f402:180f:ffff:ffff:ffff:ffff,US
+2a01:111:f402:1810::,2a01:111:f402:1bff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:1c00::,2a01:111:f402:1c00:ffff:ffff:ffff:ffff,BR
+2a01:111:f402:1c01::,2a01:111:f402:1fff:ffff:ffff:ffff:ffff,GB
2a01:111:f402:2000::,2a01:111:f402:23ff:ffff:ffff:ffff:ffff,NL
2a01:111:f402:2400::,2a01:111:f402:27ff:ffff:ffff:ffff:ffff,US
2a01:111:f402:2800::,2a01:111:f402:2bff:ffff:ffff:ffff:ffff,IE
@@ -28332,8 +27930,9 @@
2a01:111:f402:5400::,2a01:111:f402:57ff:ffff:ffff:ffff:ffff,JP
2a01:111:f402:5800::,2a01:111:f402:5bff:ffff:ffff:ffff:ffff,NL
2a01:111:f402:5c00::,2a01:111:f402:5fff:ffff:ffff:ffff:ffff,AU
-2a01:111:f402:6000::,2a01:111:f402:63ff:ffff:ffff:ffff:ffff,JP
-2a01:111:f402:6400::,2a01:111:f402:6fff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:6000::,2a01:111:f402:67ff:ffff:ffff:ffff:ffff,JP
+2a01:111:f402:6800::,2a01:111:f402:6bff:ffff:ffff:ffff:ffff,HK
+2a01:111:f402:6c00::,2a01:111:f402:6fff:ffff:ffff:ffff:ffff,US
2a01:111:f402:7000::,2a01:111:f402:77ff:ffff:ffff:ffff:ffff,AU
2a01:111:f402:7800::,2a01:111:f402:7bff:ffff:ffff:ffff:ffff,US
2a01:111:f402:7c00::,2a01:111:f402:7fff:ffff:ffff:ffff:ffff,IE
@@ -28352,17 +27951,19 @@
2a01:111:f402:a806::,2a01:111:f402:a806:ffff:ffff:ffff:ffff,SG
2a01:111:f402:a807::,2a01:111:f402:abff:ffff:ffff:ffff:ffff,GB
2a01:111:f402:ac00::,2a01:111:f402:afff:ffff:ffff:ffff:ffff,NL
-2a01:111:f402:b000::,2a01:111:f402:b3ff:ffff:ffff:ffff:ffff,GB
-2a01:111:f402:b400::,2a01:111:f402:b402:ffff:ffff:ffff:ffff,SG
-2a01:111:f402:b403::,2a01:111:f402:b404:ffff:ffff:ffff:ffff,GB
-2a01:111:f402:b405::,2a01:111:f402:b406:ffff:ffff:ffff:ffff,SG
-2a01:111:f402:b407::,2a01:111:f402:b7ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:b000::,2a01:111:f402:b000:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:b001::,2a01:111:f402:b001:ffff:ffff:ffff:ffff,JP
+2a01:111:f402:b002::,2a01:111:f402:b3ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:b400::,2a01:111:f402:b407:ffff:ffff:ffff:ffff,SG
+2a01:111:f402:b408::,2a01:111:f402:b7ff:ffff:ffff:ffff:ffff,GB
2a01:111:f402:b800::,2a01:111:f402:bbff:ffff:ffff:ffff:ffff,FR
2a01:111:f402:bc00::,2a01:111:f402:bfff:ffff:ffff:ffff:ffff,JP
2a01:111:f402:c000::,2a01:111:f402:c3ff:ffff:ffff:ffff:ffff,FR
2a01:111:f402:c400::,2a01:111:f402:cbff:ffff:ffff:ffff:ffff,US
2a01:111:f402:cc00::,2a01:111:f402:cfff:ffff:ffff:ffff:ffff,IN
-2a01:111:f402:d000::,2a01:111:f404:c05:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:d000::,2a01:111:f402:d3ff:ffff:ffff:ffff:ffff,IE
+2a01:111:f402:d400::,2a01:111:f402:d7ff:ffff:ffff:ffff:ffff,IN
+2a01:111:f402:d800::,2a01:111:f404:c05:ffff:ffff:ffff:ffff,GB
2a01:111:f404:c06::,2a01:111:f404:c0a:ffff:ffff:ffff:ffff,US
2a01:111:f404:c0b::,2a01:111:f404:33ff:ffff:ffff:ffff:ffff,GB
2a01:111:f404:3400::,2a01:111:f404:37ff:ffff:ffff:ffff:ffff,US
@@ -28408,7 +28009,9 @@
2a01:111:f406:a806::,2a01:111:f406:afff:ffff:ffff:ffff:ffff,GB
2a01:111:f406:b000::,2a01:111:f406:b3ff:ffff:ffff:ffff:ffff,JP
2a01:111:f406:b400::,2a01:111:f406:b7ff:ffff:ffff:ffff:ffff,SG
-2a01:111:f406:b800::,2a01:111:f4ff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:111:f406:b800::,2a01:111:f409:ffff:ffff:ffff:ffff:ffff,GB
+2a01:111:f40a::,2a01:111:f40a:ffff:ffff:ffff:ffff:ffff,US
+2a01:111:f40b::,2a01:111:f4ff:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:f500::,2a01:111:f5ff:ffff:ffff:ffff:ffff:ffff,US
2a01:111:f600::,2a01:111:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:120::,2a01:127:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28429,7 +28032,7 @@
2a01:198::,2a01:198:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:1a0::,2a01:1a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:1a8::,2a01:1a8:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:1b0::,2a01:1b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a01:1b0::,2a01:1b7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:1b8::,2a01:1b8:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a01:1c0::,2a01:1c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:1c8::,2a01:1cf:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -28465,11 +28068,10 @@
2a01:2b0:2000:114::,2a01:2b7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a01:2b8::,2a01:2b8:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a01:2c0::,2a01:2c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:2c8::,2a01:2c8:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a01:2c8::,2a01:2cf:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:2d0::,2a01:2d0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:2d8::,2a01:2df:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:2e0::,2a01:2ef:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a01:300:1::,2a01:300:1:7fff:ffff:ffff:ffff:ffff,FR
2a01:308::,2a01:308:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:310::,2a01:310:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:320::,2a01:327:ffff:ffff:ffff:ffff:ffff:ffff,MD
@@ -28483,13 +28085,11 @@
2a01:368::,2a01:36f:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a01:378::,2a01:378:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:380::,2a01:380:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a01:388::,2a01:388:24e:ffff:ffff:ffff:ffff:ffff,GB
-2a01:388:24f::,2a01:388:24f:7fff:ffff:ffff:ffff:ffff,NL
-2a01:388:24f:8000::,2a01:388:250:ffff:ffff:ffff:ffff:ffff,GB
-2a01:388:251::,2a01:388:251:7fff:ffff:ffff:ffff:ffff,NL
-2a01:388:251:8000::,2a01:388:473:ffff:ffff:ffff:ffff:ffff,GB
-2a01:388:474::,2a01:388:474:7fff:ffff:ffff:ffff:ffff,NL
-2a01:388:474:8000::,2a01:38f:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:388::,2a01:388:250:ffff:ffff:ffff:ffff:ffff,GB
+2a01:388:251::,2a01:388:251:ffff:ffff:ffff:ffff:ffff,NL
+2a01:388:252::,2a01:388:377:ffff:ffff:ffff:ffff:ffff,GB
+2a01:388:378::,2a01:388:379:ffff:ffff:ffff:ffff:ffff,NL
+2a01:388:37a::,2a01:38f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:390::,2a01:397:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a01:398::,2a01:398:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:3a0::,2a01:3a7:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -28526,11 +28126,7 @@
2a01:3f8::,2a01:3f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:400::,2a01:400:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:408::,2a01:408:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:410::,2a01:410:1:ffff:ffff:ffff:ffff:ffff,GB
-2a01:410:2::,2a01:410:2:7fff:ffff:ffff:ffff:ffff,ZM
-2a01:410:2:8000::,2a01:410:108:ffff:ffff:ffff:ffff:ffff,GB
-2a01:410:109::,2a01:410:109:7fff:ffff:ffff:ffff:ffff,ZW
-2a01:410:109:8000::,2a01:410:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:410::,2a01:410:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:418::,2a01:418:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:420::,2a01:420:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:428::,2a01:428:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28548,11 +28144,9 @@
2a01:488::,2a01:488:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:490::,2a01:490:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a01:498::,2a01:498:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a01:4a0::,2a01:4a0:2c:ffff:ffff:ffff:ffff:ffff,DE
-2a01:4a0:2d::,2a01:4a0:2d:7fff:ffff:ffff:ffff:ffff,CH
-2a01:4a0:2d:8000::,2a01:4a0:2d:ffff:ffff:ffff:ffff:ffff,DE
-2a01:4a0:2e::,2a01:4a0:2e:7fff:ffff:ffff:ffff:ffff,CZ
-2a01:4a0:2e:8000::,2a01:4af:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:4a0::,2a01:4a0:2d:ffff:ffff:ffff:ffff:ffff,DE
+2a01:4a0:2e::,2a01:4a0:2f:ffff:ffff:ffff:ffff:ffff,CZ
+2a01:4a0:30::,2a01:4af:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:4b0::,2a01:4b0:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:4c0::,2a01:4c0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:4c8::,2a01:4cf:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28561,9 +28155,15 @@
2a01:4e0::,2a01:4e7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a01:4e8::,2a01:4e8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:4f0::,2a01:4f0:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a01:4f8::,2a01:4f8:bc:ffff:ffff:ffff:ffff:ffff,DE
-2a01:4f8:bd::,2a01:4f8:bd:7fff:ffff:ffff:ffff:ffff,NL
-2a01:4f8:bd:8000::,2a01:4ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:4f8::,2a01:4f8:d0:64ff:ffff:ffff:ffff:ffff,DE
+2a01:4f8:d0:6500::,2a01:4f8:d0:67ff:ffff:ffff:ffff:ffff,CH
+2a01:4f8:d0:6800::,2a01:4f8:df:fffc:ffff:ffff:ffff:ffff,DE
+2a01:4f8:df:fffd::,2a01:4f8:df:ffff:ffff:ffff:ffff:ffff,CH
+2a01:4f8:e0::,2a01:4f8:151:226:ffff:ffff:ffff:ffff,DE
+2a01:4f8:151:227::,2a01:4f8:151:227:ffff:ffff:ffff:ffff,AQ
+2a01:4f8:151:228::,2a01:4f8:1c0c:4059:ffff:ffff:ffff:ffff,DE
+2a01:4f8:1c0c:405a::,2a01:4f8:1c0c:405a:ffff:ffff:ffff:ffff,BV
+2a01:4f8:1c0c:405b::,2a01:4ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:500::,2a01:500:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:508::,2a01:508:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:510::,2a01:510:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -28648,26 +28248,24 @@
2a01:780::,2a01:780:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:788::,2a01:788:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:790::,2a01:790:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a01:798::,2a01:79e:7be3:7fff:ffff:ffff:ffff:ffff,NO
-2a01:79e:7be3:8000::,2a01:79e:7be3:ffff:ffff:ffff:ffff:ffff,DK
-2a01:79e:7be4::,2a01:79f:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a01:798::,2a01:79f:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a01:7a0::,2a01:7a7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7a8::,2a01:7a8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:7b0::,2a01:7b0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:7b8::,2a01:7b8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:7c0::,2a01:7c0:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a01:7c8::,2a01:7c8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a01:7c8::,2a01:7cf:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:7d0::,2a01:7d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:7d8::,2a01:7d8:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a01:7e0::,2a01:7e7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7e8::,2a01:7e8:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a01:7f0::,2a01:7f0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7f8::,2a01:7f8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:800::,2a01:838:fffe:ffff:ffff:ffff:ffff:ffff,DE
-2a01:838:ffff::,2a01:838:ffff:7fff:ffff:ffff:ffff:ffff,MT
-2a01:838:ffff:8000::,2a01:8ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:800::,2a01:8ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:c00::,2a01:c3f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:e00::,2a01:e3f:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:e00::,2a01:e35:8ac8:3fff:ffff:ffff:ffff:ffff,FR
+2a01:e35:8ac8:4000::,2a01:e35:8ac8:7fff:ffff:ffff:ffff:ffff,UA
+2a01:e35:8ac8:8000::,2a01:e3f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:1000::,2a01:17ff:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:2000::,2a01:2fff:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:4000::,2a01:4000:ffff:ffff:ffff:ffff:ffff:ffff,AM
@@ -28716,7 +28314,7 @@
2a01:45e0::,2a01:45e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:4600::,2a01:4600:ffff:ffff:ffff:ffff:ffff:ffff,BH
2a01:4620::,2a01:4620:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:4640::,2a01:4640:ffff:ffff:ffff:ffff:ffff:ffff,CH
+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
@@ -28907,25 +28505,12 @@
2a01:5e60::,2a01:5e60:ffff:ffff:ffff:ffff:ffff:ffff,AE
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::bfff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:0:c000::,2a01:5ec0::efff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:0:f000::,2a01:5ec0:1:1fff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:1:2000::,2a01:5ec0:1:5fff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:1:6000::,2a01:5ec0:1:9fff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:1:a000::,2a01:5ec0:1:bfff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:1:c000::,2a01:5ec0:1:ffff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:2::,2a01:5ec0:2:1fff:ffff:ffff:ffff:ffff,NL
-2a01:5ec0:2:2000::,2a01:5ec0:2:3fff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:2:4000::,2a01:5ec0:2:7fff:ffff:ffff:ffff:ffff,NL
-2a01:5ec0:2:8000::,2a01:5ec0:8:7fff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:8:8000::,2a01:5ec0:8:ffff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:9::,2a01:5ec0:1000:ffff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:1001::,2a01:5ec0:1001:7fff:ffff:ffff:ffff:ffff,US
-2a01:5ec0:1001:8000::,2a01:5ec0:1019:7fff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:1019:8000::,2a01:5ec0:1019:ffff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:101a::,2a01:5ec0:2000:7fff:ffff:ffff:ffff:ffff,IR
-2a01:5ec0:2000:8000::,2a01:5ec0:2000:ffff:ffff:ffff:ffff:ffff,GB
-2a01:5ec0:2001::,2a01:5ec0:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a01:5ec0::,2a01:5ec0:7f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:5ec0:80::,2a01:5ec0:1fff:ffff:ffff:ffff:ffff:ffff,IR
+2a01:5ec0:2000::,2a01:5ec0:201f:ffff:ffff:ffff:ffff:ffff,US
+2a01:5ec0:2020::,2a01:5ec0:4fff:ffff:ffff:ffff:ffff:ffff,IR
+2a01:5ec0:5000::,2a01:5ec0:507f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:5ec0:5080::,2a01:5ec0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a01:5ee0::,2a01:5ee0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:5f00::,2a01:5f00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:5f20::,2a01:5f20:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -28945,7 +28530,7 @@
2a01:60e0::,2a01:60e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:6100::,2a01:6100:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:6120::,2a01:6120:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:6140::,2a01:6140:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a01:6140::,2a01:6147:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:6160::,2a01:6160:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:6180::,2a01:6180:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:61a0::,2a01:61a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28981,7 +28566,7 @@
2a01:65a0::,2a01:65a0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:65c0::,2a01:65c0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:65e0::,2a01:65e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:6600::,2a01:6600:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:6600::,2a01:6607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:6620::,2a01:6620:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:6640::,2a01:6647:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:6680::,2a01:6680:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -29037,7 +28622,7 @@
2a01:6c60:12::,2a01:6c60:12:ffff:ffff:ffff:ffff:ffff,ES
2a01:6c60:13::,2a01:6c60:fff:ffff:ffff:ffff:ffff:ffff,GB
2a01:6c60:1000::,2a01:6c60:1fff:ffff:ffff:ffff:ffff:ffff,US
-2a01:6c60:2000::,2a01:6c60:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:6c60:2000::,2a01:6c67:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:6ca0::,2a01:6ca0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:6ce0::,2a01:6ce0:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:6d00::,2a01:6d00:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -29184,7 +28769,7 @@
2a01:7f20::,2a01:7f20:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:7f40::,2a01:7f40:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a01:7f60::,2a01:7f60:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:7f80::,2a01:7f80:ffff:ffff:ffff:ffff:ffff:ffff,PS
+2a01:7f80::,2a01:7f87:ffff:ffff:ffff:ffff:ffff:ffff,PS
2a01:7fa0::,2a01:7fa0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:7fc0::,2a01:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:7fe0::,2a01:7fe7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -29238,7 +28823,7 @@
2a01:85a0::,2a01:85a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:85c0::,2a01:85c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:85e0::,2a01:85e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a01:8600::,2a01:8600:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a01:8600::,2a01:8607:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:8640::,2a01:8640::ffff:ffff:ffff:ffff:ffff,NL
2a01:8640:1::,2a01:8640:1:ffff:ffff:ffff:ffff:ffff,GB
2a01:8640:2::,2a01:8640:2:ffff:ffff:ffff:ffff:ffff,NL
@@ -29322,7 +28907,7 @@
2a01:8f80::,2a01:8f87:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:8fa0::,2a01:8fa0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:8fc0::,2a01:8fc0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a01:8fe0::,2a01:8fe0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:8fe0::,2a01:8fe0:ffff:ffff:ffff:ffff:ffff:ffff,MC
2a01:9000::,2a01:9000:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:9040::,2a01:9040:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a01:9060::,2a01:9060:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -29544,9 +29129,7 @@
2a01:aca0::,2a01:aca0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:acc0::,2a01:acc0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:ace0::,2a01:ace0:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a01:ad00::,2a01:ad00:2:ffff:ffff:ffff:ffff:ffff,IE
-2a01:ad00:3::,2a01:ad00:3:7fff:ffff:ffff:ffff:ffff,UA
-2a01:ad00:3:8000::,2a01:ad00:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a01:ad00::,2a01:ad00:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:ad20::,2a01:ad20:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:ad40::,2a01:ad40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:ad60::,2a01:ad60:ffff:ffff:ffff:ffff:ffff:ffff,RS
@@ -29665,7 +29248,7 @@
2a01:ba00::,2a01:ba07:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:ba20::,2a01:ba20:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:ba40::,2a01:ba40:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a01:ba60::,2a01:ba60:ffff:ffff:ffff:ffff:ffff:ffff,PS
+2a01:ba60::,2a01:ba67:ffff:ffff:ffff:ffff:ffff:ffff,PS
2a01:ba80::,2a01:ba80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:baa0::,2a01:baa0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:bac0::,2a01:bac0:ffff:ffff:ffff:ffff:ffff:ffff,HU
@@ -29706,65 +29289,89 @@
2a01:bfa0::,2a01:bfa0:ffff:ffff:ffff:ffff:ffff:ffff,KG
2a01:bfc0::,2a01:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:bfe0::,2a01:bfe0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c000::,2a01:c4ff:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c500::,2a01:c50f:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a01:c510::,2a01:c843:fffb:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c843:fffc::,2a01:c843:fffc:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c843:fffc:8000::,2a01:c844:fff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c000::,2a01:c50e:ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:100::,2a01:c50e:17f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:180::,2a01:c50e:dff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:e00::,2a01:c50e:e7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:e80::,2a01:c50e:10ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:1100::,2a01:c50e:117f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:1180::,2a01:c50e:11ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:1200::,2a01:c50e:127f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:1280::,2a01:c50e:13ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:1400::,2a01:c50e:147f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:1480::,2a01:c50e:17ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:1800::,2a01:c50e:187f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:1880::,2a01:c50e:19ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:1a00::,2a01:c50e:1a7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:1a80::,2a01:c50e:20ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:2100::,2a01:c50e:22ff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:2300::,2a01:c50e:2eff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:2f00::,2a01:c50e:2f7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:2f80::,2a01:c50e:2fff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:3000::,2a01:c50e:307f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:3080::,2a01:c50e:34ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:3500::,2a01:c50e:357f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:3580::,2a01:c50e:35ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:3600::,2a01:c50e:367f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:3680::,2a01:c50e:37ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:3800::,2a01:c50e:387f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:3880::,2a01:c50e:50ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:5100::,2a01:c50e:513f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:5140::,2a01:c50e:5fff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:6000::,2a01:c50e:607f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:6080::,2a01:c50e:64ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:6500::,2a01:c50e:657f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:6580::,2a01:c50e:7fff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:8000::,2a01:c50e:807f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:8080::,2a01:c50e:80ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:8100::,2a01:c50e:817f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:8180::,2a01:c50e:81ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:8200::,2a01:c50e:827f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:8280::,2a01:c50e:82ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:8300::,2a01:c50e:837f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:8380::,2a01:c50e:87ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:8800::,2a01:c50e:89ff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:8a00::,2a01:c50e:90ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:9100::,2a01:c50e:917f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:9180::,2a01:c50e:9aff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:9b00::,2a01:c50e:9b7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:9b80::,2a01:c50e:9cff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:9d00::,2a01:c50e:9d7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:9d80::,2a01:c50e:9dff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:9e00::,2a01:c50e:9e7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:9e80::,2a01:c50e:a8ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:a900::,2a01:c50e:a97f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:a980::,2a01:c50e:abff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:ac00::,2a01:c50e:ac7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:ac80::,2a01:c50e:acff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:ad00::,2a01:c50e:ad7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:ad80::,2a01:c50e:b1ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:b200::,2a01:c50e:b27f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:b280::,2a01:c50e:b7ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:b800::,2a01:c50e:b87f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:b880::,2a01:c50e:bdff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:be00::,2a01:c50e:be7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:be80::,2a01:c50e:d1ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:d200::,2a01:c50e:d27f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:d280::,2a01:c50e:d5ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:d600::,2a01:c50e:d6ff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:d700::,2a01:c50e:ddff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:de00::,2a01:c50e:de7f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:de80::,2a01:c50e:e0ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:e100::,2a01:c50e:e17f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:e180::,2a01:c50e:e6ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:e700::,2a01:c50e:e77f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:e780::,2a01:c50e:e7ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:e800::,2a01:c50e:e87f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:e880::,2a01:c50e:e8ff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c50e:e900::,2a01:c50e:e97f:ffff:ffff:ffff:ffff:ffff,ES
+2a01:c50e:e980::,2a01:c844:fff:ffff:ffff:ffff:ffff:ffff,FR
2a01:c844:1000::,2a01:c844:11ff:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1200::,2a01:c844:1401:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:1401:8000::,2a01:c844:1401:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1402::,2a01:c844:1402:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:1402:8000::,2a01:c844:1402:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1403::,2a01:c844:140a:e00:50e1:6f6d:63d4:31e,FR
+2a01:c844:1200::,2a01:c844:140a:e00:50e1:6f6d:63d4:31e,FR
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:141a:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:141b::,2a01:c844:141b:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:141b:8000::,2a01:c844:142b:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:142b:8000::,2a01:c844:142b:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:142c::,2a01:c844:1450:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:1450:8000::,2a01:c844:1450:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1451::,2a01:c844:1458:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:1459::,2a01:c844:1459:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1459:8000::,2a01:c844:148e:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:148e:8000::,2a01:c844:148e:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:148f::,2a01:c844:149e:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:149f::,2a01:c844:149f:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:149f:8000::,2a01:c844:14a3:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:14a4::,2a01:c844:14a4:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:14a4:8000::,2a01:c844:14a8:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:14a9::,2a01:c844:14a9:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:14a9:8000::,2a01:c844:14c6:7fff:ffff:ffff:ffff:ffff,FR
-2a01:c844:14c6:8000::,2a01:c844:14c6:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:14c7::,2a01:c844:14cd:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:14ce::,2a01:c844:14ce:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:14ce:8000::,2a01:c844:14d1:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:14d2::,2a01:c844:14d2:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:14d2:8000::,2a01:c844:181f:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c844:1820::,2a01:c844:1820:7fff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1820:8000::,2a01:cb04::ffff:ffff:ffff:ffff:ffff,FR
-2a01:cb04:1::,2a01:cb04:1:7fff:ffff:ffff:ffff:ffff,US
-2a01:cb04:1:8000::,2a01:cb05:89d9:7fff:ffff:ffff:ffff:ffff,FR
-2a01:cb05:89d9:8000::,2a01:cb05:89d9:ffff:ffff:ffff:ffff:ffff,BG
-2a01:cb05:89da::,2a01:cb0c:81bb:3fff:ffff:ffff:ffff:ffff,FR
-2a01:cb0c:81bb:4000::,2a01:cb0c:81bb:5fff:ffff:ffff:ffff:ffff,AU
-2a01:cb0c:81bb:6000::,2a01:cb11:176:7fff:ffff:ffff:ffff:ffff,FR
-2a01:cb11:176:8000::,2a01:cb11:176:ffff:ffff:ffff:ffff:ffff,LU
-2a01:cb11:177::,2a01:cb11:65b:ffff:ffff:ffff:ffff:ffff,FR
-2a01:cb11:65c::,2a01:cb11:65c:7fff:ffff:ffff:ffff:ffff,DE
-2a01:cb11:65c:8000::,2a01:cb15:62:ffff:ffff:ffff:ffff:ffff,FR
-2a01:cb15:63::,2a01:cb15:63:7fff:ffff:ffff:ffff:ffff,CH
-2a01:cb15:63:8000::,2a01:cb15:6f:bfff:ffff:ffff:ffff:ffff,FR
-2a01:cb15:6f:c000::,2a01:cb15:6f:ffff:ffff:ffff:ffff:ffff,NL
-2a01:cb15:70::,2a01:cb15:9b:7fff:ffff:ffff:ffff:ffff,FR
-2a01:cb15:9b:8000::,2a01:cb15:9b:ffff:ffff:ffff:ffff:ffff,CH
-2a01:cb15:9c::,2a01:cb15:1f5:ffff:ffff:ffff:ffff:ffff,FR
-2a01:cb15:1f6::,2a01:cb15:1f6:7fff:ffff:ffff:ffff:ffff,CH
-2a01:cb15:1f6:8000::,2a01:cb19:5e9:7fff:ffff:ffff:ffff:ffff,FR
-2a01:cb19:5e9:8000::,2a01:cb19:5e9:ffff:ffff:ffff:ffff:ffff,GF
-2a01:cb19:5ea::,2a01:cb19:8563:7fff:ffff:ffff:ffff:ffff,FR
-2a01:cb19:8563:8000::,2a01:cb19:8563:ffff:ffff:ffff:ffff:ffff,ES
-2a01:cb19:8564::,2a01:cb19:8742:2000:f154:67e2:3b75:f718,FR
+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: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
@@ -29793,7 +29400,7 @@
2a02:d0::,2a02:d0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:d8::,2a02:d8:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:e0::,2a02:e0:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a02:e8::,2a02:e8:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a02:e8::,2a02:ef:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a02:f0::,2a02:f0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:f8::,2a02:f8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:100::,2a02:100:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -29815,9 +29422,7 @@
2a02:150::,2a02:150:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:158::,2a02:158:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:160::,2a02:160:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:168::,2a02:168:2074:ffff:ffff:ffff:ffff:ffff,CH
-2a02:168:2075::,2a02:168:2075:7fff:ffff:ffff:ffff:ffff,LI
-2a02:168:2075:8000::,2a02:16b:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:168::,2a02:16b:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:170::,2a02:170:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:178::,2a02:178:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:180::,2a02:180:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -29835,7 +29440,9 @@
2a02:1f8::,2a02:1f8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:200::,2a02:207:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:208::,2a02:208:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a02:210::,2a02:210:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:210::,2a02:210:2044:980:3c8e:f9c3:c19e:7aa4,IT
+2a02:210:2044:980:3c8e:f9c3:c19e:7aa5,2a02:210:2044:980:3c8e:f9c3:c19e:7aa5,NL
+2a02:210:2044:980:3c8e:f9c3:c19e:7aa6,2a02:210:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:218::,2a02:21f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:220::,2a02:220:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:228::,2a02:22f:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -29858,8 +29465,8 @@
2a02:2b8::,2a02:2b8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2c0::,2a02:2c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2c8::,2a02:2c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a02:2d8::,2a02:2d8::7fff:ffff:ffff:ffff:ffff,RU
-2a02:2d8:0:8000::,2a02:2d8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:2d8::,2a02:2d8:7f:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2d8:80::,2a02:2d8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2e0::,2a02:2e7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2e8::,2a02:2e8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:2f0::,2a02:2f7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -29907,7 +29514,7 @@
2a02:458::,2a02:458:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:460::,2a02:460:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:468::,2a02:46f:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a02:470::,2a02:470:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:470::,2a02:477:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:478::,2a02:478:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:480::,2a02:480:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:488::,2a02:488:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -29937,12 +29544,8 @@
2a02:560::,2a02:560:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:568::,2a02:568:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:570::,2a02:570:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:578::,2a02:578:5002:7fff:ffff:ffff:ffff:ffff,BE
-2a02:578:5002:8000::,2a02:578:5002:ffff:ffff:ffff:ffff:ffff,RU
-2a02:578:5003::,2a02:578:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a02:580::,2a02:587:c40a:bfff:ffff:ffff:ffff:ffff,GR
-2a02:587:c40a:c000::,2a02:587:c40a:dfff:ffff:ffff:ffff:ffff,FR
-2a02:587:c40a:e000::,2a02:587:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:578::,2a02:578:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:580::,2a02:587:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a02:588::,2a02:588:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:590::,2a02:597:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:598::,2a02:598:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -29971,7 +29574,7 @@
2a02:678::,2a02:678:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a02:680::,2a02:680:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:688::,2a02:688:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:690::,2a02:690:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:690::,2a02:697:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:698::,2a02:698:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6a0::,2a02:6a0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:6a8::,2a02:6a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -29994,9 +29597,7 @@
2a02:730::,2a02:730:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:738::,2a02:738:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:740::,2a02:740:ffff:ffff:ffff:ffff:ffff:ffff,PT
-2a02:748::,2a02:748:afff:ffff:ffff:ffff:ffff:ffff,PL
-2a02:748:b000::,2a02:748:b000:7fff:ffff:ffff:ffff:ffff,US
-2a02:748:b000:8000::,2a02:748:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a02:748::,2a02:748:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:750::,2a02:750:7:ffff:ffff:ffff:ffff:ffff,SE
2a02:750:8::,2a02:750:8:ffff:ffff:ffff:ffff:ffff,US
2a02:750:9::,2a02:757:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -30086,13 +29687,11 @@
2a02:a10::,2a02:a10::ffff:ffff:ffff:ffff:ffff,US
2a02:a10:1::,2a02:a10:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:a11::,2a02:a17:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a18::,2a02:a18:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a02:a20::,2a02:a20:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:a18::,2a02:a20:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:a28::,2a02:a28:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:a30::,2a02:a30:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a02:a38::,2a02:a38:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a02:a40::,2a02:a40:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:a48::,2a02:a4f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:a40::,2a02:a4f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:a50::,2a02:a50:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:a58::,2a02:a58:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a02:a60::,2a02:a60:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30106,7 +29705,7 @@
2a02:aa0::,2a02:aa6:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:aa7::,2a02:aa7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:aa8::,2a02:aaf:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:ab0::,2a02:ab0:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:ab0::,2a02:ab7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ab8::,2a02:abf:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:ac0::,2a02:ac0:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:ac8::,2a02:ac8:ffff:ffff:ffff:ffff:ffff:ffff,HR
@@ -30167,7 +29766,6 @@
2a02:ca8::,2a02:ca8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:cb0::,2a02:cb0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:cc0::,2a02:cc9:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:cd0::,2a02:cd0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:cd8::,2a02:cd8:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ce0::,2a02:ce0:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a02:ce8::,2a02:ce8:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -30227,11 +29825,7 @@
2a02:eb8::,2a02:ebf:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:ec0::,2a02:ec0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:ec8::,2a02:ec8:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:ed0::,2a02:ed0:431d:7fff:ffff:ffff:ffff:ffff,IL
-2a02:ed0:431d:8000::,2a02:ed0:431d:ffff:ffff:ffff:ffff:ffff,RO
-2a02:ed0:431e::,2a02:ed0:53f9:ffff:ffff:ffff:ffff:ffff,IL
-2a02:ed0:53fa::,2a02:ed0:53fa:7fff:ffff:ffff:ffff:ffff,US
-2a02:ed0:53fa:8000::,2a02:ed7:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a02:ed0::,2a02:ed7:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a02:ed8::,2a02:ed8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:ee0::,2a02:ee0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:ef0::,2a02:ef0:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -30267,16 +29861,22 @@
2a02:fe0::,2a02:fe7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:fe8::,2a02:fe9:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:ff0::,2a02:ff0:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a02:1000::,2a02:103f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:1200::,2a02:1206:4559:ffff:ffff:ffff:ffff:ffff,CH
-2a02:1206:455a::,2a02:1206:455a:7fff:ffff:ffff:ffff:ffff,FR
-2a02:1206:455a:8000::,2a02:1206:45c7:ffff:ffff:ffff:ffff:ffff,CH
-2a02:1206:45c8::,2a02:1206:45c8:7fff:ffff:ffff:ffff:ffff,DE
-2a02:1206:45c8:8000::,2a02:121e:48d:ffff:ffff:ffff:ffff:ffff,CH
-2a02:121e:48e::,2a02:121e:48e:7fff:ffff:ffff:ffff:ffff,DE
-2a02:121e:48e:8000::,2a02:121f:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1000::,2a02:11ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:1200::,2a02:1203:ecb8:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1203:ecb9::,2a02:1203:ecb9:1fff:ffff:ffff:ffff:ffff,DE
+2a02:1203:ecb9:2000::,2a02:1205:34c0:bfff:ffff:ffff:ffff:ffff,CH
+2a02:1205:34c0:c000::,2a02:1205:34c0:cfff:ffff:ffff:ffff:ffff,IT
+2a02:1205:34c0:d000::,2a02:1205:34d3:2fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:34d3:3000::,2a02:1205:34d3:37ff:ffff:ffff:ffff:ffff,SE
+2a02:1205:34d3:3800::,2a02:1205:34ee:7fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:34ee:8000::,2a02:1205:34ee:bfff:ffff:ffff:ffff:ffff,IT
+2a02:1205:34ee:c000::,2a02:1205:500c:3fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:500c:4000::,2a02:1205:500c:7fff:ffff:ffff:ffff:ffff,DE
+2a02:1205:500c:8000::,2a02:1205:c6a3:7fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:c6a3:8000::,2a02:1205:c6a3:ffff:ffff:ffff:ffff:ffff,FR
+2a02:1205:c6a4::,2a02:121f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:1300::,2a02:1300:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a02:1308::,2a02:1308:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:1308::,2a02:130f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:1310::,2a02:1310:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:1318::,2a02:1318:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:1320::,2a02:1320:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -30334,9 +29934,7 @@
2a02:16c0::,2a02:16c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:16c8::,2a02:16c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:16d0::,2a02:16d0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:16d8::,2a02:16d8:103:ffff:ffff:ffff:ffff:ffff,LV
-2a02:16d8:104::,2a02:16d8:104:7fff:ffff:ffff:ffff:ffff,DE
-2a02:16d8:104:8000::,2a02:16d8:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a02:16d8::,2a02:16d8:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a02:16e0::,2a02:16e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:16e8::,2a02:16e8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:16f0::,2a02:16f0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30398,9 +29996,7 @@
2a02:20b0::,2a02:20b7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:20b8::,2a02:20b8:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a02:20c0::,2a02:20c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:20c8::,2a02:20c8:3361:ffff:ffff:ffff:ffff:ffff,NO
-2a02:20c8:3362::,2a02:20c8:3362:7fff:ffff:ffff:ffff:ffff,DE
-2a02:20c8:3362:8000::,2a02:20c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:20c8::,2a02:20c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:20d0::,2a02:20d7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:20d8::,2a02:20df:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:20e0::,2a02:20e7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -30412,21 +30008,11 @@
2a02:2118::,2a02:211f:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:2120::,2a02:2123:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:2140::,2a02:2147:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a02:2148::,2a02:2149:8832:7fff:ffff:ffff:ffff:ffff,GR
-2a02:2149:8832:8000::,2a02:2149:8832:ffff:ffff:ffff:ffff:ffff,US
-2a02:2149:8833::,2a02:214f:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:2148::,2a02:214f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a02:2150::,2a02:2150:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:2158::,2a02:215f:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:2160::,2a02:2160:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a02:2168::,2a02:2168:1770:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2168:1770:8000::,2a02:2168:1770:ffff:ffff:ffff:ffff:ffff,CN
-2a02:2168:1771::,2a02:2168:284c:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2168:284c:8000::,2a02:2168:284c:ffff:ffff:ffff:ffff:ffff,AE
-2a02:2168:284d::,2a02:2168:3bc5:ffff:ffff:ffff:ffff:ffff,RU
-2a02:2168:3bc6::,2a02:2168:3bc6:7fff:ffff:ffff:ffff:ffff,US
-2a02:2168:3bc6:8000::,2a02:2168:3bcb:ffff:ffff:ffff:ffff:ffff,RU
-2a02:2168:3bcc::,2a02:2168:3bcc:7fff:ffff:ffff:ffff:ffff,US
-2a02:2168:3bcc:8000::,2a02:216f:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2168::,2a02:216f:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2170::,2a02:2170:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2178::,2a02:217f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2180::,2a02:2180:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -30453,7 +30039,7 @@
2a02:2228::,2a02:2228:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2230::,2a02:2230:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a02:2240::,2a02:2247:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a02:2248::,2a02:2248:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a02:2248::,2a02:224f:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a02:2250::,2a02:2250:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2258::,2a02:2258:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2260::,2a02:2260:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30480,8 +30066,7 @@
2a02:2300::,2a02:2300:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2308::,2a02:2308:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2310::,2a02:2310:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:2318::,2a02:2318::7fff:ffff:ffff:ffff:ffff,IM
-2a02:2318:0:8000::,2a02:231f:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:2318::,2a02:231f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2328::,2a02:2328:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2330::,2a02:2337:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a02:2338::,2a02:233f:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -30525,8 +30110,8 @@
2a02:2488::,2a02:2488:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2490::,2a02:2490:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:2498::,2a02:2498:efff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:2498:f000::,2a02:2498:f000:7fff:ffff:ffff:ffff:ffff,NL
-2a02:2498:f000:8000::,2a02:2498:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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
@@ -30602,19 +30187,13 @@
2a02:2710::,2a02:2710:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:2718::,2a02:271f:ffff:ffff:ffff:ffff:ffff:ffff,YE
2a02:2720::,2a02:2720:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a02:2728::,2a02:2728:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:2730::,2a02:2730:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2738::,2a02:2738:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2740::,2a02:2740:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:2748::,2a02:2748:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2750::,2a02:2750:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:2760::,2a02:2760:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:2768:1::,2a02:2768:1:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2768:166:8000::,2a02:2768:166:ffff:ffff:ffff:ffff:ffff,RU
-2a02:2768:11fa::,2a02:2768:11fa:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2768:11fb::,2a02:2768:11fb:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2768:84ff::,2a02:2768:84ff:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2768:97fe::,2a02:2768:97fe:7fff:ffff:ffff:ffff:ffff,RU
+2a02:2768:9780::,2a02:2768:97ff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2770::,2a02:2770:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2778::,2a02:2778:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2780::,2a02:2780:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -30639,9 +30218,7 @@
2a02:27f0::,2a02:27f0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:27f8::,2a02:27f8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2800::,2a02:2807:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:2808::,2a02:2808:2500:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:2808:2501::,2a02:2808:2501:7fff:ffff:ffff:ffff:ffff,RU
-2a02:2808:2501:8000::,2a02:2808:3000:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:2808::,2a02:2808:3000:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2808:3001::,2a02:2808:3001:ffff:ffff:ffff:ffff:ffff,RU
2a02:2808:3002::,2a02:2808:5300:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2808:5301::,2a02:2808:5301:ffff:ffff:ffff:ffff:ffff,RU
@@ -30677,7 +30254,7 @@
2a02:28f0::,2a02:28f0:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:28f8::,2a02:28f8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2900::,2a02:2900:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:2908::,2a02:2908:ffff:ffff:ffff:ffff:ffff:ffff,OM
+2a02:2908::,2a02:290f:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a02:2910::,2a02:2910:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2918::,2a02:2920:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2928::,2a02:2928:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -30706,9 +30283,9 @@
2a02:29c8::,2a02:29c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:29d0::,2a02:29d0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:29d8::,2a02:29d8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:29e0::,2a02:29e0::ffff:ffff:ffff:ffff:ffff,IT
-2a02:29e0:1::,2a02:29e0:1:7fff:ffff:ffff:ffff:ffff,GB
-2a02:29e0:1:8000::,2a02:29e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:29e0::,2a02:29e0:1:1ff:ffff:ffff:ffff:ffff,IT
+2a02:29e0:1:200::,2a02:29e0:1:2ff:ffff:ffff:ffff:ffff,GB
+2a02:29e0:1:300::,2a02:29e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:29e8::,2a02:29ef:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a02:29f0::,2a02:29f0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:29f8::,2a02:29f8:ffff:ffff:ffff:ffff:ffff:ffff,AM
@@ -30747,9 +30324,7 @@
2a02:2b00::,2a02:2b00:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:2b08::,2a02:2b08:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2b10::,2a02:2b10:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a02:2b18::,2a02:2b18::7fff:ffff:ffff:ffff:ffff,RU
-2a02:2b18:0:8000::,2a02:2b18::ffff:ffff:ffff:ffff:ffff,UA
-2a02:2b18:1::,2a02:2b18:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2b18::,2a02:2b18:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2b20::,2a02:2b20:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:2b28::,2a02:2b28:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2b30::,2a02:2b30:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -30784,9 +30359,7 @@
2a02:2dc0::,2a02:2dc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2de0::,2a02:2de0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:2e00::,2a02:2e1f:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:2f00::,2a02:2f04:d17:7fff:ffff:ffff:ffff:ffff,RO
-2a02:2f04:d17:8000::,2a02:2f04:d17:ffff:ffff:ffff:ffff:ffff,HU
-2a02:2f04:d18::,2a02:2f0f:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a02:2f00::,2a02:2f0f:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a02:2f80::,2a02:2f87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:2fa0::,2a02:2fa0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2fc0::,2a02:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30998,7 +30571,7 @@
2a02:5980::,2a02:5980:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:59a0::,2a02:59a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:59c0::,2a02:59c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a02:59e0::,2a02:59e0:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a02:59e0::,2a02:59e7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a02:5a20::,2a02:5a20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:5a40::,2a02:5a40:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:5a60::,2a02:5a60:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -31116,7 +30689,6 @@
2a02:68c0::,2a02:68c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:68e0::,2a02:68e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:6900::,2a02:6900:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:6920:56fd::,2a02:6920:56fd:7fff:ffff:ffff:ffff:ffff,RU
2a02:6940::,2a02:6940:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:6960::,2a02:6960:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:6980::,2a02:6980:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -31135,7 +30707,6 @@
2a02:6b40::,2a02:6b40:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:6b60::,2a02:6b60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:6b80::,2a02:6b80:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a02:6ba0::,2a02:6ba7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6bc0::,2a02:6bc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6be0::,2a02:6be0:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a02:6c00::,2a02:6c00:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -31170,8 +30741,12 @@
2a02:6ea0:c900::,2a02:6ea0:c9ff:ffff:ffff:ffff:ffff:ffff,FR
2a02:6ea0:ca00::,2a02:6ea0:cc00::,GB
2a02:6ea0:cc00::1,2a02:6ea0:cc00::1,US
-2a02:6ea0:cc00::2,2a02:6ea0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:6ec0::,2a02:6ec0:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a02:6ea0:cc00::2,2a02:6ea0:cdff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:6ea0:ce00::,2a02:6ea0:ce00::,CZ
+2a02:6ea0:ce00::1,2a02:6ea0:ce00::1,PL
+2a02:6ea0:ce00::2,2a02:6ea0:ce00::ffff:ffff:ffff:ffff,CZ
+2a02:6ea0:ce00:1::,2a02:6ea0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:6ec0::,2a02:6ec7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:6f00::,2a02:6f00:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a02:6f20::,2a02:6f20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:6f40::,2a02:6f40:ffff:ffff:ffff:ffff:ffff:ffff,HU
@@ -31262,9 +30837,9 @@
2a02:7a40::,2a02:7a40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:7a60::,2a02:7a60:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:7a80::,2a02:7a80:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:7aa0::,2a02:7aa0:42:ffff:ffff:ffff:ffff:ffff,LV
-2a02:7aa0:43::,2a02:7aa0:43:7fff:ffff:ffff:ffff:ffff,SE
-2a02:7aa0:43:8000::,2a02:7aa0:1618:ffff:ffff:ffff:ffff:ffff,LV
+2a02:7aa0::,2a02:7aa0:11ff:ffff:ffff:ffff:ffff:ffff,LV
+2a02:7aa0:1200::,2a02:7aa0:127f:ffff:ffff:ffff:ffff:ffff,GB
+2a02:7aa0:1280::,2a02:7aa0:1618:ffff:ffff:ffff:ffff:ffff,LV
2a02:7aa0:1619::,2a02:7aa0:1619:ffff:ffff:ffff:ffff:ffff,SE
2a02:7aa0:161a::,2a02:7aa0:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a02:7ac0::,2a02:7ac0:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -31283,9 +30858,7 @@
2a02:7c60::,2a02:7c60:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:7c80::,2a02:7c80:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:7ca0::,2a02:7ca0:ffff:ffff:ffff:ffff:ffff:ffff,PS
-2a02:7cc0::,2a02:7cc0::ffff:ffff:ffff:ffff:ffff,CY
-2a02:7cc0:1::,2a02:7cc0:1:7fff:ffff:ffff:ffff:ffff,RU
-2a02:7cc0:1:8000::,2a02:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a02:7cc0::,2a02:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a02:7ce0::,2a02:7ce0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:7d00::,2a02:7d00:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:7d20::,2a02:7d20:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -31314,54 +30887,32 @@
2a02:8020::,2a02:8023:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:8040::,2a02:8043:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:8060::,2a02:8061:ffff:ffff:ffff:ffff:ffff:ffff,AD
-2a02:8070::,2a02:8070:88ab:3fff:ffff:ffff:ffff:ffff,DE
-2a02:8070:88ab:4000::,2a02:8070:88ab:7fff:ffff:ffff:ffff:ffff,US
-2a02:8070:88ab:8000::,2a02:8071:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:8080::,2a02:8085:6fff:ffff:ffff:ffff:ffff:ffff,IE
-2a02:8085:7000::,2a02:8085:7000:7fff:ffff:ffff:ffff:ffff,GB
-2a02:8085:7000:8000::,2a02:8087:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a02:8070::,2a02:8070:947f:ffff:ffff:ffff:ffff:ffff,DE
+2a02:8070:9480::,2a02:8070:948f:ffff:ffff:ffff:ffff:ffff,CH
+2a02:8070:9490::,2a02:8071:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:8080::,2a02:8087:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:80c0::,2a02:80c3:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:80e0::,2a02:80e3:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a02:8100::,2a02:811f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:8200::,2a02:821f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:8300::,2a02:830f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:8300::,2a02:8308:a03f:7fff:ffff:ffff:ffff:ffff,CZ
+2a02:8308:a03f:8000::,2a02:8308:a03f:bfff:ffff:ffff:ffff:ffff,UA
+2a02:8308:a03f:c000::,2a02:830f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:8380::,2a02:838f:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a02:8400::,2a02:8433:308f:ffff:ffff:ffff:ffff:ffff,FR
-2a02:8433:3090::,2a02:8433:3090:7fff:ffff:ffff:ffff:ffff,NL
-2a02:8433:3090:8000::,2a02:847f:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:8400::,2a02:8434:29ff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:8434:2a00::,2a02:8434:2a3f:ffff:ffff:ffff:ffff:ffff,CH
+2a02:8434:2a40::,2a02:847f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:8800::,2a02:88ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:9000::,2a02:91ff:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:9940::,2a02:9940:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:a000::,2a02:a03f:1e4e:7fff:ffff:ffff:ffff:ffff,BE
-2a02:a03f:1e4e:8000::,2a02:a03f:1e4e:ffff:ffff:ffff:ffff:ffff,FR
-2a02:a03f:1e4f::,2a02:a03f:24d7:ffff:ffff:ffff:ffff:ffff,BE
-2a02:a03f:24d8::,2a02:a03f:24d8:7fff:ffff:ffff:ffff:ffff,FR
-2a02:a03f:24d8:8000::,2a02:a03f:40c6:7fff:ffff:ffff:ffff:ffff,BE
-2a02:a03f:40c6:8000::,2a02:a03f:40c6:ffff:ffff:ffff:ffff:ffff,LU
-2a02:a03f:40c7::,2a02:a03f:6025:ffff:ffff:ffff:ffff:ffff,BE
-2a02:a03f:6026::,2a02:a03f:6026:7fff:ffff:ffff:ffff:ffff,FR
-2a02:a03f:6026:8000::,2a02:a03f:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:a000::,2a02:a03f:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:a200::,2a02:a21f:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a300::,2a02:a317:e242:7fff:ffff:ffff:ffff:ffff,PL
-2a02:a317:e242:8000::,2a02:a317:e242:ffff:ffff:ffff:ffff:ffff,US
-2a02:a317:e243::,2a02:a31f:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a02:a400::,2a02:a441:813a:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a441:813b::,2a02:a441:813b:7fff:ffff:ffff:ffff:ffff,US
-2a02:a441:813b:8000::,2a02:a451:6958:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a451:6959::,2a02:a451:6959:7fff:ffff:ffff:ffff:ffff,US
-2a02:a451:6959:8000::,2a02:a453:3ccc:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a453:3ccd::,2a02:a453:3ccd:7fff:ffff:ffff:ffff:ffff,US
-2a02:a453:3ccd:8000::,2a02:a453:629a:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a453:629b::,2a02:a453:629b:7fff:ffff:ffff:ffff:ffff,DE
-2a02:a453:629b:8000::,2a02:a453:bc11:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a453:bc12::,2a02:a453:bc12:7fff:ffff:ffff:ffff:ffff,NZ
-2a02:a453:bc12:8000::,2a02:a47f:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:a300::,2a02:a31f:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a02:a400::,2a02:a47f:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a800::,2a02:a83f:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:aa00::,2a02:aa11:117e:7fff:ffff:ffff:ffff:ffff,CH
-2a02:aa11:117e:8000::,2a02:aa11:117e:ffff:ffff:ffff:ffff:ffff,DE
-2a02:aa11:117f::,2a02:aa12:6480:ffff:ffff:ffff:ffff:ffff,CH
-2a02:aa12:6481::,2a02:aa12:6481:7fff:ffff:ffff:ffff:ffff,DE
-2a02:aa12:6481:8000::,2a02:aa1f:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:aa00::,2a02:aa11:f0ff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:aa11:f100::,2a02:aa11:f17f:ffff:ffff:ffff:ffff:ffff,DE
+2a02:aa11:f180::,2a02:aa1f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ab00::,2a02:ab07:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:ab40::,2a02:ab47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ab80::,2a02:ab8f:ffff:ffff:ffff:ffff:ffff:ffff,HU
@@ -31369,6 +30920,7 @@
2a02:ac40::,2a02:ac47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:ac80::,2a02:ac87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:acc0::,2a02:acc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:ad00::,2a02:ad07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:ad40::,2a02:ad47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:ad80::,2a02:ad87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:adc0::,2a02:adc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -31389,9 +30941,7 @@
2a02:c140::,2a02:c147:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:c180::,2a02:c187:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:c1c0::,2a02:c1c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:c200::,2a02:c207:2013:ffff:ffff:ffff:ffff:ffff,DE
-2a02:c207:2014::,2a02:c207:2014:7fff:ffff:ffff:ffff:ffff,US
-2a02:c207:2014:8000::,2a02:c207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:c200::,2a02:c207:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:c280::,2a02:c287:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:c2c0::,2a02:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:c300::,2a02:c307:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -31408,9 +30958,7 @@
2a02:c540::,2a02:c547:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:c580::,2a02:c587:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:c5c0::,2a02:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2a02:c600::,2a02:c600:ff:ffff:ffff:ffff:ffff:ffff,CH
-2a02:c600:100::,2a02:c600:100:7fff:ffff:ffff:ffff:ffff,CZ
-2a02:c600:100:8000::,2a02:c607:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:c600::,2a02:c607:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:c640::,2a02:c647:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:c680::,2a02:c681:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:c690::,2a02:c691:ffff:ffff:ffff:ffff:ffff:ffff,AD
@@ -31418,7 +30966,7 @@
2a02:c6c0::,2a02:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:c700::,2a02:c707:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:c740::,2a02:c747:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:c780::,2a02:c787:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a02:c780::,2a02:c787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:c7c0::,2a02:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:c800::,2a02:c807:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:c840::,2a02:c847:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -31583,6 +31131,7 @@
2a02:ed80::,2a02:ed87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:edc0::,2a02:edc7:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a02:ee00::,2a02:ee07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a02:ee40::,2a02:ee47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:ee80::,2a02:ee87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:eec0::,2a02:eec7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:ef00::,2a02:ef07:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -31596,9 +31145,7 @@
2a02:f0c0::,2a02:f0c7:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a02:f100::,2a02:f107:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:f140::,2a02:f147:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:f180::,2a02:f181:fff:ffff:ffff:ffff:ffff:ffff,FR
-2a02:f181:1000::,2a02:f181:1000:7fff:ffff:ffff:ffff:ffff,GB
-2a02:f181:1000:8000::,2a02:f187:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:f180::,2a02:f187:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:f1c0::,2a02:f1c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:f200::,2a02:f207:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:f280::,2a02:f287:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -31699,7 +31246,7 @@
2a03:500::,2a03:500:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:520::,2a03:527:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:540::,2a03:540:ffff:ffff:ffff:ffff:ffff:ffff,UZ
-2a03:560::,2a03:560:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:560::,2a03:567:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:580::,2a03:580:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:5a0::,2a03:5a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:5c0::,2a03:5c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -31774,13 +31321,9 @@
2a03:f00::,2a03:f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:f40::,2a03:f40:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:f60::,2a03:f60:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a03:f80::,2a03:f80:3f:ffff:ffff:ffff:ffff:ffff,AT
-2a03:f80:40::,2a03:f80:40:7fff:ffff:ffff:ffff:ffff,RO
-2a03:f80:40:8000::,2a03:f80:43:ffff:ffff:ffff:ffff:ffff,AT
+2a03:f80::,2a03:f80:43:ffff:ffff:ffff:ffff:ffff,AT
2a03:f80:44::,2a03:f80:44:ffff:ffff:ffff:ffff:ffff,IM
-2a03:f80:45::,2a03:f80:47:ffff:ffff:ffff:ffff:ffff,AT
-2a03:f80:48::,2a03:f80:48:7fff:ffff:ffff:ffff:ffff,PL
-2a03:f80:48:8000::,2a03:f80:55:ffff:ffff:ffff:ffff:ffff,AT
+2a03:f80:45::,2a03:f80:55:ffff:ffff:ffff:ffff:ffff,AT
2a03:f80:56::,2a03:f80:56:ffff:ffff:ffff:ffff:ffff,CL
2a03:f80:57::,2a03:f80:353:ffff:ffff:ffff:ffff:ffff,AT
2a03:f80:354::,2a03:f80:354:ffff:ffff:ffff:ffff:ffff,IS
@@ -31816,7 +31359,7 @@
2a03:1340::,2a03:1340:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:1360::,2a03:1360:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:1380::,2a03:1380:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a03:13a0::,2a03:13a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:13a0::,2a03:13a7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:13c0::,2a03:13c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:13e0::,2a03:13e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:1400::,2a03:1400:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -31835,7 +31378,6 @@
2a03:15e0::,2a03:15e0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:1600::,2a03:1600:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:1620::,2a03:1620:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:1640::,2a03:1640:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1660::,2a03:1660:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a03:1680::,2a03:1680:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:16a0::,2a03:16a0:ffff:ffff:ffff:ffff:ffff:ffff,ME
@@ -31851,7 +31393,6 @@
2a03:1800::,2a03:1800:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1820::,2a03:1820:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:1840::,2a03:1840:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a03:1860::,2a03:1860:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1880::,2a03:1880:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:18a0::,2a03:18a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:18e0::,2a03:18e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -31868,14 +31409,13 @@
2a03:1a40::,2a03:1a40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:1a60::,2a03:1a60:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:1a80::,2a03:1a80:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a03:1aa0::,2a03:1aa0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2a03:1aa0::,2a03:1aa0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:1ac0::,2a03:1ac0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1ae0::,2a03:1ae0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:1b00::,2a03:1b00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1b20::,2a03:1b20:2:ffff:ffff:ffff:ffff:ffff,SE
2a03:1b20:3::,2a03:1b20:3:ffff:ffff:ffff:ffff:ffff,NL
2a03:1b20:4::,2a03:1b20:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:1b40::,2a03:1b40:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:1b60::,2a03:1b60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1b80::,2a03:1b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1bc0::,2a03:1bc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -31929,11 +31469,7 @@
2a03:2200::,2a03:2200:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:2220::,2a03:2220:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:2240::,2a03:2240:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2260::,2a03:2260:116:ffff:ffff:ffff:ffff:ffff,DE
-2a03:2260:117::,2a03:2260:117:7fff:ffff:ffff:ffff:ffff,NL
-2a03:2260:117:8000::,2a03:2260:3005:7ff:ffff:ffff:ffff:ffff,DE
-2a03:2260:3005:800::,2a03:2260:3005:fff:ffff:ffff:ffff:ffff,SI
-2a03:2260:3005:1000::,2a03:2267:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2260::,2a03:2267:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2280::,2a03:2280:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:22a0::,2a03:22a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:22c0::,2a03:22c0:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -31980,47 +31516,14 @@
2a03:2820::,2a03:2820:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:2840::,2a03:2840:ffff:ffff:ffff:ffff:ffff:ffff,US
2a03:2860::,2a03:2860:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:2880::,2a03:2880:10:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:11::,2a03:2880:12:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:12:8000::,2a03:2880:1f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:20::,2a03:2880:21:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:21:8000::,2a03:2880:2f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:30::,2a03:2880:30:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:31::,2a03:2880:100f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:1010::,2a03:2880:1011:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:1011:8000::,2a03:2880:101f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:1020::,2a03:2880:1020:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:1021::,2a03:2880:102f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:1030::,2a03:2880:1030:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:1031::,2a03:2880:10ff:7fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:10ff:8000::,2a03:2880:10ff:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:1100::,2a03:2880:110f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:1110::,2a03:2880:1110:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:1111::,2a03:2880:111f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:1120::,2a03:2880:1120:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:1120:8000::,2a03:2880:2010:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2011::,2a03:2880:2011:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:2011:8000::,2a03:2880:201f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2020::,2a03:2880:2020:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2021::,2a03:2880:202f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2030::,2a03:2880:2030:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2031::,2a03:2880:2040:7fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2040:8000::,2a03:2880:2040:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2041::,2a03:2880:204f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2050::,2a03:2880:2050:7fff:ffff:ffff:ffff:ffff,US
-2a03:2880:2050:8000::,2a03:2880:2060:7fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2060:8000::,2a03:2880:2060:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2061::,2a03:2880:2110:7fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2110:8000::,2a03:2880:2111:bfff:ffff:ffff:ffff:ffff,US
-2a03:2880:2111:c000::,2a03:2880:211f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2120::,2a03:2880:2120:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2121::,2a03:2880:212f:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2130::,2a03:2880:2130:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2131::,2a03:2880:3010:7fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:3010:8000::,2a03:2880:3010:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:3011::,2a03:2880:3020:9fff:ffff:ffff:ffff:ffff,IE
-2a03:2880:3020:a000::,2a03:2880:3020:afff:ffff:ffff:ffff:ffff,GB
-2a03:2880:3020:b000::,2a03:2887:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:2880::,2a03:2880:7f:ffff:ffff:ffff:ffff:ffff,US
+2a03:2880:80::,2a03:2880:fff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:2880:1000::,2a03:2880:117f:ffff:ffff:ffff:ffff:ffff,US
+2a03:2880:1180::,2a03:2880:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:2880:2000::,2a03:2880:207f:ffff:ffff:ffff:ffff:ffff,US
+2a03:2880:2080::,2a03:2880:20ff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:2880:2100::,2a03:2880:217f:ffff:ffff:ffff:ffff:ffff,US
+2a03:2880:2180::,2a03:2887:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:28a0::,2a03:28a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:28c0::,2a03:28c0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:28e0::,2a03:28e0:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -32489,9 +31992,7 @@
2a03:6240::,2a03:6240:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:6260::,2a03:6260:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:6280::,2a03:6287:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a03:62a0::,2a03:62a0:3500:ffff:ffff:ffff:ffff:ffff,AU
-2a03:62a0:3501::,2a03:62a0:3501:7fff:ffff:ffff:ffff:ffff,FI
-2a03:62a0:3501:8000::,2a03:62a0:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2a03:62a0::,2a03:62a0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2a03:62c0::,2a03:62c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:62e0::,2a03:62e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:6300::,2a03:6300:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -32607,7 +32108,7 @@
2a03:71c0::,2a03:71c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:71e0::,2a03:71e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:7200::,2a03:7207:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:7220::,2a03:7220:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:7220::,2a03:7227:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:7240::,2a03:7240:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:7260::,2a03:7260:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:7280::,2a03:7280:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -32728,11 +32229,9 @@
2a03:8120::,2a03:8120:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:8140::,2a03:8140:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:8160::,2a03:8160:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a03:8180::,2a03:8180:1100:ffff:ffff:ffff:ffff:ffff,NL
-2a03:8180:1101::,2a03:8180:1101:7fff:ffff:ffff:ffff:ffff,GB
-2a03:8180:1101:8000::,2a03:8180:1300:ffff:ffff:ffff:ffff:ffff,NL
-2a03:8180:1301::,2a03:8180:1301:7fff:ffff:ffff:ffff:ffff,FR
-2a03:8180:1301:8000::,2a03:8180:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:8180::,2a03:8180:10ff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:8180:1100::,2a03:8180:117f:ffff:ffff:ffff:ffff:ffff,GB
+2a03:8180:1180::,2a03:8180:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:81a0::,2a03:81a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:81e0::,2a03:81e0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:8200::,2a03:8200:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -32892,7 +32391,7 @@
2a03:9340::,2a03:9340:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:9360::,2a03:9360:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a03:9380::,2a03:9380:3fff:ffff:ffff:ffff:ffff:ffff,IR
-2a03:9380:4000::,2a03:9380:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:9380:4000::,2a03:9387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:93a0::,2a03:93a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:93c0::,2a03:93c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:93e0::,2a03:93e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -32990,7 +32489,7 @@
2a03:a040::,2a03:a040:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:a060::,2a03:a060:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:a080::,2a03:a080:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:a0a0::,2a03:a0a0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:a0a0::,2a03:a0a7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:a0c0::,2a03:a0c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:a0e0::,2a03:a0e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:a100::,2a03:a100:ffff:ffff:ffff:ffff:ffff:ffff,SI
@@ -33025,7 +32524,6 @@
2a03:a4c0::,2a03:a4c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:a4e0::,2a03:a4e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:a500::,2a03:a500:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a03:a520::,2a03:a520:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:a540::,2a03:a540:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:a560::,2a03:a560:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:a580::,2a03:a580:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -33167,21 +32665,43 @@
2a03:af20::,2a03:af20:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:af40::,2a03:af40:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a03:af60::,2a03:af60:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:af80::,2a03:af80:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:af80::,2a03:af87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:afa0::,2a03:afa0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:afc0::,2a03:afc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:afe0::,2a03:afe7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:b000::,2a03:b000:9ff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:b000:a00::,2a03:b000:a00:7fff:ffff:ffff:ffff:ffff,GB
-2a03:b000:a00:8000::,2a03:b000:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:b000:a00::,2a03:b000:a7f:ffff:ffff:ffff:ffff:ffff,GB
+2a03:b000:a80::,2a03:b000:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:b020::,2a03:b027:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:b040::,2a03:b040:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03: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::ffff:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:1::,2a03:b0c0:1:ffff:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:2::,2a03:b0c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+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: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
2a03:b140::,2a03:b140:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -34220,7 +33740,7 @@
2a03:bbc0::,2a03:bbc0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:bc00::,2a03:bc00:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:bc40::,2a03:bc47:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:bc80::,2a03:bc80:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:bc80::,2a03:bc87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:bcc0::,2a03:bcc0:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a03:bd00::,2a03:bd00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:bd40::,2a03:bd47:ffff:ffff:ffff:ffff:ffff:ffff,BA
@@ -34269,6 +33789,7 @@
2a03:c800::,2a03:c800:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a03:c840::,2a03:c840:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a03:c880::,2a03:c880:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:c8c0::,2a03:c8c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:c900::,2a03:c900:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:c940::,2a03:c940:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:c980::,2a03:c980:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -34276,11 +33797,9 @@
2a03:ca00::,2a03:ca00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:ca40::,2a03:ca40:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:ca80::,2a03:ca87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:cac0::,2a03:cac0:f022:ffff:ffff:ffff:ffff:ffff,IL
-2a03:cac0:f023::,2a03:cac0:f023:7fff:ffff:ffff:ffff:ffff,UA
-2a03:cac0:f023:8000::,2a03:cac0:f061:ffff:ffff:ffff:ffff:ffff,IL
-2a03:cac0:f062::,2a03:cac0:f062:7fff:ffff:ffff:ffff:ffff,UA
-2a03:cac0:f062:8000::,2a03:cac0:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:cac0::,2a03:cac0:efff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:cac0:f000::,2a03:cac0:f07f:ffff:ffff:ffff:ffff:ffff,UA
+2a03:cac0:f080::,2a03:cac0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a03:cb00::,2a03:cb00:ffff:ffff:ffff:ffff:ffff:ffff,MT
2a03:cb40::,2a03:cb40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:cb80::,2a03:cb87:ffff:ffff:ffff:ffff:ffff:ffff,BA
@@ -34293,7 +33812,6 @@
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:ce00:ffff:ffff:ffff:ffff:ffff:ffff,RU
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
@@ -34312,7 +33830,6 @@
2a03:d200::,2a03:d200:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:d240::,2a03:d240:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a03:d280::,2a03:d280:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a03:d2c0::,2a03:d2c0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:d300::,2a03:d300:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:d340::,2a03:d340:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:d380::,2a03:d380:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -34324,9 +33841,7 @@
2a03:d500::,2a03:d500:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:d540::,2a03:d540:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:d580::,2a03:d587:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:d5c0::,2a03:d5c0:1c20:ffff:ffff:ffff:ffff:ffff,IL
-2a03:d5c0:1c21::,2a03:d5c0:1c21:ffff:ffff:ffff:ffff:ffff,NL
-2a03:d5c0:1c22::,2a03:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:d5c0::,2a03:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a03:d600::,2a03:d607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:d640::,2a03:d640:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:d680::,2a03:d680:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -34342,6 +33857,7 @@
2a03:d900::,2a03:d900:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:d940::,2a03:d940:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:d980::,2a03:d980:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:d9c0::,2a03:d9c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:da00::,2a03:da00:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:da40::,2a03:da40:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:da80::,2a03:da80:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -34370,6 +33886,7 @@
2a03:e040::,2a03:e040:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e080::,2a03:e080:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:e0c0::,2a03:e0c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:e100::,2a03:e107:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:e140::,2a03:e140:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e180::,2a03:e180:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a03:e1c0::,2a03:e1c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -34423,16 +33940,12 @@
2a03:edc0::,2a03:edc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:ee00::,2a03:ee00:ffff:ffff:ffff:ffff:ffff:ffff,FO
2a03:ee40::,2a03:ee40:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:ee80::,2a03:ee80:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:ee80::,2a03:ee87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:eec0::,2a03:eec0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:ef00::,2a03:ef00:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:ef40::,2a03:ef41:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a03:ef42::,2a03:ef42::1fff:ffff:ffff:ffff:ffff,GB
-2a03:ef42:0:2000::,2a03:ef47:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a03:ef40::,2a03:ef47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:ef80::,2a03:ef80:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a03:efc0::,2a03:efc0:4ff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:efc0:500::,2a03:efc0:500:7fff:ffff:ffff:ffff:ffff,SE
-2a03:efc0:500:8000::,2a03:efc0:6ff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:efc0::,2a03:efc0:6ff:ffff:ffff:ffff:ffff:ffff,GB
2a03:efc0:700::,2a03:efc0:7ff:ffff:ffff:ffff:ffff:ffff,FR
2a03:efc0:800::,2a03:efc0:8ff:ffff:ffff:ffff:ffff:ffff,GB
2a03:efc0:900::,2a03:efc0:9ff:ffff:ffff:ffff:ffff:ffff,ES
@@ -34454,6 +33967,7 @@
2a03:f300::,2a03:f300:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:f340::,2a03:f347:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:f380::,2a03:f380:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:f3c0::,2a03:f3c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
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
@@ -34484,7 +33998,6 @@
2a03:fb00::,2a03:fb00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:fb40::,2a03:fb47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:fb80::,2a03:fb80:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a03:fbc0::,2a03:fbc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:fc00::,2a03:fc07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:fc40::,2a03:fc40:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:fc80::,2a03:fc87:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -34499,6 +34012,7 @@
2a03:fec0::,2a03:fec0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:ff00::,2a03:ff00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:ff40::,2a03:ff40:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:ff80::,2a03:ff87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:ffc0::,2a03:ffc0:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a04::,2a04:7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:40::,2a04:47:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -34556,7 +34070,7 @@
2a04:d00::,2a04:d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:d40::,2a04:d47:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:d80::,2a04:d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:dc0::,2a04:dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:dc0::,2a04:dc7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a04:e00::,2a04:e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:e40::,2a04:e47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:e80::,2a04:e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -34904,7 +34418,7 @@
2a04:6440::,2a04:6447:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:6480::,2a04:6487:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a04:64c0::,2a04:64c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a04:6500::,2a04:6507:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a04:6500::,2a04:6507:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:6540::,2a04:6547:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a04:6580::,2a04:6587:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:65c0::,2a04:65c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -34912,11 +34426,9 @@
2a04:6640::,2a04:6647:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:6650::,2a04:6651:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:6680::,2a04:6687:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a04:66c0::,2a04:66c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:6700::,2a04:6707:ffff:ffff:ffff:ffff:ffff:ffff,MT
2a04:6740::,2a04:6747:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:6780::,2a04:6787:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a04:67c0::,2a04:67c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:6800::,2a04:6807:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a04:6840::,2a04:6847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:6880::,2a04:6887:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -35053,7 +34565,7 @@
2a04:87c0::,2a04:87c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
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,RU
+2a04:88c0::,2a04:88c7:ffff:ffff:ffff:ffff:ffff:ffff,SC
2a04:8900::,2a04:8907:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:8940::,2a04:8947:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a04:8980::,2a04:8987:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -35116,7 +34628,6 @@
2a04:9800::,2a04:9807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:9840::,2a04:9847:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a04:9880::,2a04:9887:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a04:98c0::,2a04:98c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:9900::,2a04:9907:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:9940::,2a04:9947:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:9980::,2a04:9987:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -35124,7 +34635,6 @@
2a04:9a00::,2a04:9a07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:9a40::,2a04:9a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:9a80::,2a04:9a87:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a04:9ac0::,2a04:9ac7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:9b00::,2a04:9b07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:9b40::,2a04:9b47:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a04:9b80::,2a04:9b87:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -35200,8 +34710,7 @@
2a04:acc0::,2a04:acc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:ad00::,2a04:ad07:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a04:ad40::,2a04:ad47:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2a04:ad80::,2a04:ad80::7fff:ffff:ffff:ffff:ffff,NL
-2a04:ad80:0:8000::,2a04:ad87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:ad80::,2a04:ad87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:adc0::,2a04:adc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:ae00::,2a04:ae3f:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a04:b000::,2a04:b007:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -35210,7 +34719,7 @@
2a04:b0c0::,2a04:b0c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:b100::,2a04:b107:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:b140::,2a04:b147:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a04:b180::,2a04:b187:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a04:b180::,2a04:b180:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:b1c0::,2a04:b1c7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a04:b200::,2a04:b207:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:b240::,2a04:b247:ffff:ffff:ffff:ffff:ffff:ffff,IM
@@ -35236,7 +34745,6 @@
2a04:b740::,2a04:b747:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:b780::,2a04:b787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:b7c0::,2a04:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a04:b800::,2a04:b807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:b840::,2a04:b847:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:b880::,2a04:b887:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:b8c0::,2a04:b8c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -35426,10 +34934,14 @@
2a04:e4c0:14::,2a04:e4c0:14:ffff:ffff:ffff:ffff:ffff,RO
2a04:e4c0:15::,2a04:e4c0:15:ffff:ffff:ffff:ffff:ffff,CZ
2a04:e4c0:16::,2a04:e4c0:16:ffff:ffff:ffff:ffff:ffff,PL
+2a04:e4c0:17::,2a04:e4c0:17:ffff:ffff:ffff:ffff:ffff,DK
+2a04:e4c0:18::,2a04:e4c0:18:ffff:ffff:ffff:ffff:ffff,IE
2a04:e4c0:20::,2a04:e4c0:20:ffff:ffff:ffff:ffff:ffff,JP
2a04:e4c0:21::,2a04:e4c0:21:ffff:ffff:ffff:ffff:ffff,AU
+2a04:e4c0:22::,2a04:e4c0:22:ffff:ffff:ffff:ffff:ffff,IN
2a04:e4c0:30::,2a04:e4c0:30:ffff:ffff:ffff:ffff:ffff,ZA
2a04:e4c0:31::,2a04:e4c0:31:ffff:ffff:ffff:ffff:ffff,AE
+2a04:e4c0:40::,2a04:e4c0:40:ffff:ffff:ffff:ffff:ffff,BR
2a04:e500::,2a04:e507:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:e540::,2a04:e547:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:e580::,2a04:e587:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -35499,7 +35011,6 @@
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:f640:1::,2a04:f640:1:7fff:ffff:ffff:ffff:ffff,GB
2a04:f680::,2a04:f687:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a04:f6c0::,2a04:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:f700::,2a04:f707:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -35645,7 +35156,6 @@
2a05:1d80::,2a05:1d87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:1dc0::,2a05:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:1e00::,2a05:1e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a05:1e40::,2a05:1e47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:1e80::,2a05:1e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:1ec0::,2a05:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:1f00::,2a05:1f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -35705,9 +35215,7 @@
2a05:2cc0::,2a05:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:2d00::,2a05:2d00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:2d01::,2a05:2d01::ffff:ffff:ffff:ffff:ffff,US
-2a05:2d01:1::,2a05:2d01:2016:ffff:ffff:ffff:ffff:ffff,NL
-2a05:2d01:2017::,2a05:2d01:2017:7fff:ffff:ffff:ffff:ffff,NO
-2a05:2d01:2017:8000::,2a05:2d01:8fff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2d01:1::,2a05:2d01:8fff:ffff:ffff:ffff:ffff:ffff,NL
2a05:2d01:9000::,2a05:2d01:9000:ffff:ffff:ffff:ffff:ffff,GB
2a05:2d01:9001::,2a05:2d06:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:2d07::,2a05:2d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -35761,7 +35269,6 @@
2a05:3980::,2a05:3987:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:39c0::,2a05:39c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:3a00::,2a05:3a07:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a05:3a40::,2a05:3a47:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:3a80::,2a05:3a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:3ac0::,2a05:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a05:3b00::,2a05:3b07:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -35841,7 +35348,7 @@
2a05:4f40::,2a05:4f47:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a05:4fc0::,2a05:4fc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:5000::,2a05:5007:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a05:5040::,2a05:5047:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:5040::,2a05:5047:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:5080::,2a05:5080:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:50a0::,2a05:50a3:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:50c0::,2a05:50c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
@@ -35863,7 +35370,6 @@
2a05:5480::,2a05:5487:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:54c0::,2a05:54c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:5500::,2a05:5507:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a05:5540::,2a05:5547:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a05:5580::,2a05:5587:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:55c0::,2a05:55c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a05:5600::,2a05:5607:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -35879,10 +35385,8 @@
2a05:5880::,2a05:5887:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a05:58c0::,2a05:58c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:5900::,2a05:5907:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:5940::,2a05:5947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:5980::,2a05:5987:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:59c0::,2a05:59c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a05:5a00::,2a05:5a07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:5a40::,2a05:5a47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:5a80::,2a05:5a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:5ac0::,2a05:5ac7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -36068,7 +35572,6 @@
2a05:8940::,2a05:8947:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:8980::,2a05:8987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:8a00::,2a05:8a07:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:8a40::,2a05:8a47:ffff:ffff:ffff:ffff:ffff:ffff,GB
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
@@ -36109,7 +35612,6 @@
2a05:9500::,2a05:9507:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:9540::,2a05:9547:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:9580::,2a05:9587:ffff:ffff:ffff:ffff:ffff:ffff,HU
-2a05:95c0::,2a05:95c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:9600::,2a05:9607:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:9680::,2a05:9687:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:96c0::,2a05:96c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -36260,7 +35762,6 @@
2a05:bb00::,2a05:bb07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:bb40::,2a05:bb47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:bb80::,2a05:bb87:ffff:ffff:ffff:ffff:ffff:ffff,IL
-2a05:bbc0::,2a05:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:bc00::,2a05:bc07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:bcc0::,2a05:bcc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:bd00::,2a05:bd07:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36285,8 +35786,8 @@
2a05:c2c0::,2a05:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:c300::,2a05:c307:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a05:c340::,2a05:c347:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:c380::,2a05:c387:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:c3c0::,2a05:c3c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:c400::,2a05:c407:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:c480::,2a05:c487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:c4c0::,2a05:c4c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:c500::,2a05:c507:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -36335,55 +35836,73 @@
2a05:d000:2000::,2a05:d000:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d000:2100::,2a05:d000:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d000:4000::,2a05:d000:40ff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:d000:4100::,2a05:d000:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000:4100::,2a05:d000:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d014:1000::,2a05:d01b:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d014:1000::,2a05:d015:ffff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d050:4100::,2a05:d050:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:4100::,2a05:d050:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d078:4100::,2a05:d078:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d078:4100::,2a05:d078:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d079:4100::,2a05:d079:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d079:4100::,2a05:d079:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d07a:4100::,2a05:d07a:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07a:4100::,2a05:d07a:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d07c:4100::,2a05:d07c:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07c:4100::,2a05:d07c:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d07e:4100::,2a05:d07e:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07e:4100::,2a05:d07e:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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: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
-2a05:d07f:4100::,2a05:d07f:bfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07f:4100::,2a05:d07f:5fff:ffff:ffff:ffff:ffff:ffff,IE
+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:d400::,2a05:d407:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -36435,26 +35954,28 @@
2a05:dfc0:1ee4::,2a05:dfc0:1ee4:ffff:ffff:ffff:ffff:ffff,CA
2a05:dfc0:1ee5::,2a05:dfc0:6938:ffff:ffff:ffff:ffff:ffff,GB
2a05:dfc0:6939::,2a05:dfc0:6939:ffff:ffff:ffff:ffff:ffff,NL
-2a05:dfc0:693a::,2a05:dfc7:4:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc0:693a::,2a05:dfc6:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7::,2a05:dfc7:4:ffff:ffff:ffff:ffff:ffff,SG
2a05:dfc7:5::,2a05:dfc7:5:ffff:ffff:ffff:ffff:ffff,AQ
-2a05:dfc7:6::,2a05:dfc7:7:ffff:ffff:ffff:ffff:ffff,GB
-2a05:dfc7:8::,2a05:dfc7:8:7fff:ffff:ffff:ffff:ffff,SG
-2a05:dfc7:8:8000::,2a05:dfc7:f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:6::,2a05:dfc7:f:ffff:ffff:ffff:ffff:ffff,SG
2a05:dfc7:10::,2a05:dfc7:10:ffff:ffff:ffff:ffff:ffff,NL
2a05:dfc7:11::,2a05:dfc7:19:ffff:ffff:ffff:ffff:ffff,CH
2a05:dfc7:1a::,2a05:dfc7:1a::,AT
2a05:dfc7:1a::1,2a05:dfc7:1f:ffff:ffff:ffff:ffff:ffff,CH
-2a05:dfc7:20::,2a05:dfc7:2f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:20::,2a05:dfc7:2f:ffff:ffff:ffff:ffff:ffff,SG
2a05:dfc7:30::,2a05:dfc7:30:ffff:ffff:ffff:ffff:ffff,US
-2a05:dfc7:31::,2a05:dfc7:3f:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:31::,2a05:dfc7:3f:ffff:ffff:ffff:ffff:ffff,SG
2a05:dfc7:40::,2a05:dfc7:40:ffff:ffff:ffff:ffff:ffff,BY
-2a05:dfc7:41::,2a05:dfc7:5352:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dfc7:41::,2a05:dfc7:7f:ffff:ffff:ffff:ffff:ffff,SG
+2a05:dfc7:80::,2a05:dfc7:5352:ffff:ffff:ffff:ffff:ffff,GB
2a05:dfc7:5353::,2a05:dfc7:5353:ffff:ffff:ffff:ffff:ffff,AQ
2a05:dfc7:5354::,2a05:dfc7:beee:ffff:ffff:ffff:ffff:ffff,GB
2a05:dfc7:beef::,2a05:dfc7:beef:ffff:ffff:ffff:ffff:ffff,AQ
2a05:dfc7:bef0::,2a05:dfc7:dfc6:ffff:ffff:ffff:ffff:ffff,GB
2a05:dfc7:dfc7::,2a05:dfc7:dfc7:ffff:ffff:ffff:ffff:ffff,UA
-2a05:dfc7:dfc8::,2a05:dfc7:dfc8:ffff:ffff:ffff:ffff:ffff,US
+2a05:dfc7:dfc8::,2a05:dfc7:dfc8:1d4::b4ec,US
+2a05:dfc7:dfc8:1d4::b4ed,2a05:dfc7:dfc8:1d4::b4ed,UA
+2a05:dfc7:dfc8:1d4::b4ee,2a05:dfc7:dfc8:ffff:ffff:ffff:ffff:ffff,US
2a05:dfc7:dfc9::,2a05:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:e000::,2a05:e007:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:e040::,2a05:e047:ffff:ffff:ffff:ffff:ffff:ffff,KZ
@@ -36497,7 +36018,7 @@
2a05:ea00::,2a05:ea07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:ea40::,2a05:ea47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:ea80::,2a05:ea87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:eb20::,2a05:eb23:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:eb20::,2a05:eb27:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:eb40::,2a05:eb47:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a05:eb80::,2a05:eb87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:ebc0::,2a05:ebc7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -36536,29 +36057,22 @@
2a05:f440::,2a05:f447:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:f480::,2a05:f487:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:f4c0::,2a05:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a05:f500::,2a05:f507:1:ffff:ffff:ffff:ffff:ffff,IE
-2a05:f507:2::,2a05:f507:2:7fff:ffff:ffff:ffff:ffff,DE
-2a05:f507:2:8000::,2a05:f507:2:ffff:ffff:ffff:ffff:ffff,IE
-2a05:f507:3::,2a05:f507:3:7fff:ffff:ffff:ffff:ffff,ES
-2a05:f507:3:8000::,2a05:f507:5:ffff:ffff:ffff:ffff:ffff,IE
-2a05:f507:6::,2a05:f507:6:7fff:ffff:ffff:ffff:ffff,GB
-2a05:f507:6:8000::,2a05:f507:8:ffff:ffff:ffff:ffff:ffff,IE
-2a05:f507:9::,2a05:f507:9:7fff:ffff:ffff:ffff:ffff,FR
-2a05:f507:9:8000::,2a05:f507:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:f500::,2a05:f506:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:f507::,2a05:f507:7:ffff:ffff:ffff:ffff:ffff,GB
+2a05:f507:8::,2a05:f507:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:f540::,2a05:f547:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:f580::,2a05:f587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:f5c0::,2a05:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a05:f600::,2a05:f607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:f640::,2a05:f647:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a05:f6c0::,2a05:f6c2:4837:ffff:ffff:ffff:ffff:ffff,DK
-2a05:f6c2:4838::,2a05:f6c2:4838:7fff:ffff:ffff:ffff:ffff,SE
-2a05:f6c2:4838:8000::,2a05:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:f6c0::,2a05:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:f700::,2a05:f707:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:f740::,2a05:f747:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:f780::,2a05:f787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:f7c0::,2a05:f7c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:f800::,2a05:f807:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:f840::,2a05:f847:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:f880::,2a05:f887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:f900::,2a05:f907:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:f940::,2a05:f947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:f980::,2a05:f987:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -36611,11 +36125,9 @@
2a06:5c0::,2a06:5c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:600::,2a06:607:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:640::,2a06:647:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a06:680::,2a06:687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:6c0::,2a06:6c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:700::,2a06:707:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:740::,2a06:747:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a06:780::,2a06:787:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a06:7c0::,2a06:7c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:800::,2a06:807:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:840::,2a06:847:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -36633,7 +36145,6 @@
2a06:b40::,2a06:b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:b80::,2a06:b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:c00::,2a06:c07:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a06:c40::,2a06:c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:c80::,2a06:c87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:cc0::,2a06:cc7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a06:d00::,2a06:d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -36773,14 +36284,14 @@
2a06:2e80::,2a06:2e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:2ec0::,2a06:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:2f00::,2a06:2f07:ffff:ffff:ffff:ffff:ffff:ffff,QA
-2a06:2f40::,2a06:2f47:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a06:2f40::,2a06:2f47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:2f80::,2a06:2f87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:2fc0::,2a06:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a06:3000::,2a06:3007:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:3000::,2a06:3000:7f:ffff:ffff:ffff:ffff:ffff,RU
+2a06:3000:80::,2a06:3007:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:3040::,2a06:3047:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a06:3080::,2a06:3087:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:30c0::,2a06:30c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:3100::,2a06:3107:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3140::,2a06:3147:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3180::,2a06:3187:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a06:31c0::,2a06:31c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -36797,8 +36308,8 @@
2a06:3500::,2a06:3507:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3540::,2a06:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:3580::,2a06:3587:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a06:35c0::,2a06:35c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:3600::,2a06:3607:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:35c0::,2a06:35c7:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a06:3600::,2a06:3607:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:3640::,2a06:3647:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a06:3680::,2a06:3687:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:36c0::,2a06:36c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -36819,7 +36330,7 @@
2a06:3b00::,2a06:3b07:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:3b40::,2a06:3b47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3b80::,2a06:3b87:ffff:ffff:ffff:ffff:ffff:ffff,IL
-2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:3c00::,2a06:3c07:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:3c40::,2a06:3c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:3c80::,2a06:3c87:ffff:ffff:ffff:ffff:ffff:ffff,CY
@@ -36894,7 +36405,7 @@
2a06:4cc0::,2a06:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:4d00::,2a06:4d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:4d40::,2a06:4d47:ffff:ffff:ffff:ffff:ffff:ffff,SA
-2a06:4d80::,2a06:4d87:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:4d80::,2a06:4d87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:4dc0::,2a06:4dc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:4e00::,2a06:4e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:4e40::,2a06:4e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36904,7 +36415,6 @@
2a06:4f40::,2a06:4f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:4f80::,2a06:4f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:5000::,2a06:5007:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a06:5040::,2a06:5047:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:5080::,2a06:5087:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:50c0::,2a06:50c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:5100::,2a06:5107:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -36915,7 +36425,7 @@
2a06:5207:100::,2a06:5207:100:ffff:ffff:ffff:ffff:ffff,US
2a06:5207:101::,2a06:5207:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a06:5240::,2a06:5247:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:5280::,2a06:5287:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:5280::,2a06:5287:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:5300::,2a06:5307:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:5340::,2a06:5347:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:5380::,2a06:5387:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36931,9 +36441,8 @@
2a06:5600::,2a06:5607:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:5640::,2a06:5647:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:5680::,2a06:5687:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a06:56c0::,2a06:56c0:10:ffff:ffff:ffff:ffff:ffff,CH
-2a06:56c0:11::,2a06:56c0:11:7fff:ffff:ffff:ffff:ffff,EE
-2a06:56c0:11:8000::,2a06:56c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:56c0::,2a06:56c0:7f:ffff:ffff:ffff:ffff:ffff,EE
+2a06:56c0:80::,2a06:56c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:5700::,2a06:5707:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:5740::,2a06:5747:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a06:5780::,2a06:5787:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -37032,7 +36541,7 @@
2a06:7140::,2a06:7147:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:7180::,2a06:7187:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:71c0::,2a06:71c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:7200::,2a06:7207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:7200::,2a06:7207:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:7240:3::,2a06:7240:3:ffff:ffff:ffff:ffff:ffff,GB
2a06:7240:5::,2a06:7240:6:ffff:ffff:ffff:ffff:ffff,NL
2a06:7241::,2a06:7241::ffff:ffff:ffff:ffff:ffff,AT
@@ -37067,6 +36576,7 @@
2a06:7940::,2a06:7947:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:7980::,2a06:7987:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:79c0::,2a06:79c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:7a04::,2a06:7a04:1f:ffff:ffff:ffff:ffff:ffff,NL
2a06:7a40::,2a06:7a47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:7a80::,2a06:7a87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:7ac0::,2a06:7ac7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37088,35 +36598,33 @@
2a06:7f00::,2a06:7f07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:7f40::,2a06:7f47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:7f80::,2a06:7f87:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:7fc0::,2a06:7fc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:8000::,2a06:8007:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:8040::,2a06:8047:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:8080::,2a06:8087:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:80c0::,2a06:80c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:8100::,2a06:8107:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:8140::,2a06:8147:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:8180::,2a06:8180::7fff:ffff:ffff:ffff:ffff,DE
-2a06:8180:0:8000::,2a06:8181:fdf:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8180::,2a06:8181:fdf:ffff:ffff:ffff:ffff:ffff,GB
2a06:8181:fe0::,2a06:8181:fff:ffff:ffff:ffff:ffff:ffff,AT
2a06:8181:1000::,2a06:8181:1fcf:ffff:ffff:ffff:ffff:ffff,GB
2a06:8181:1fd0::,2a06:8181:1fdf:ffff:ffff:ffff:ffff:ffff,AT
2a06:8181:1fe0::,2a06:8184:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:8185::,2a06:8185:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a06:8186::,2a06:8187:fbb9:ffff:ffff:ffff:ffff:ffff,GB
-2a06:8187:fbba::,2a06:8187:fbba:7fff:ffff:ffff:ffff:ffff,DE
-2a06:8187:fbba:8000::,2a06:8187:fcff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8186::,2a06:8187:fb7f:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8187:fb80::,2a06:8187:fbff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:8187:fc00::,2a06:8187:fcff:ffff:ffff:ffff:ffff:ffff,GB
2a06:8187:fd00::,2a06:8187:fd02:ffff:ffff:ffff:ffff:ffff,FR
2a06:8187:fd03::,2a06:8187:fd03:ffff:ffff:ffff:ffff:ffff,IE
2a06:8187:fd04::,2a06:8187:fd98:ffff:ffff:ffff:ffff:ffff,FR
2a06:8187:fd99::,2a06:8187:fd99:ffff:ffff:ffff:ffff:ffff,LI
2a06:8187:fd9a::,2a06:8187:fdff:ffff:ffff:ffff:ffff:ffff,FR
-2a06:8187:fe00::,2a06:8187:fe00:ffff:ffff:ffff:ffff:ffff,GB
-2a06:8187:fe01::,2a06:8187:fe01:7fff:ffff:ffff:ffff:ffff,DE
-2a06:8187:fe01:8000::,2a06:8187:fe12:ffff:ffff:ffff:ffff:ffff,GB
-2a06:8187:fe13::,2a06:8187:fe13:7fff:ffff:ffff:ffff:ffff,DO
-2a06:8187:fe13:8000::,2a06:8187:fe16:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8187:fe00::,2a06:8187:fe13:ffff:ffff:ffff:ffff:ffff,GB
+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:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8187:fe18::,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
@@ -37168,12 +36676,10 @@
2a06:8d40::,2a06:8d47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:8d80::,2a06:8d87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:8dc0::,2a06:8dc0:f:ffff:ffff:ffff:ffff:ffff,RO
-2a06:8dc2:1::,2a06:8dc2:1:7fff:ffff:ffff:ffff:ffff,NL
2a06:8e40::,2a06:8e47:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:8e80::,2a06:8e87:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a06:8ec0::,2a06:8ec0::7fff:ffff:ffff:ffff:ffff,GB
+2a06:8ec0:0:7e::,2a06:8ec0::7e:ffff:ffff:ffff:ffff,GB
2a06:8ec0:2::,2a06:8ec0:2:ffff:ffff:ffff:ffff:ffff,CH
-2a06:8ec0:3::,2a06:8ec0:3:7fff:ffff:ffff:ffff:ffff,GB
2a06:8ec0:4::,2a06:8ec0:4:ffff:ffff:ffff:ffff:ffff,NL
2a06:8ec0:6::,2a06:8ec0:6:ffff:ffff:ffff:ffff:ffff,SE
2a06:8f00::,2a06:8f07:ffff:ffff:ffff:ffff:ffff:ffff,AL
@@ -37244,11 +36750,7 @@
2a06:9fc0::,2a06:9fc7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:a000::,2a06:a005:ff:ffff:ffff:ffff:ffff:ffff,IS
2a06:a005:100::,2a06:a005:1ff:ffff:ffff:ffff:ffff:ffff,AT
-2a06:a005:200::,2a06:a006:c2:ffff:ffff:ffff:ffff:ffff,IS
-2a06:a006:c3::,2a06:a006:c3:7fff:ffff:ffff:ffff:ffff,NL
-2a06:a006:c3:8000::,2a06:a006:c4:ffff:ffff:ffff:ffff:ffff,IS
-2a06:a006:c5::,2a06:a006:c5:7fff:ffff:ffff:ffff:ffff,US
-2a06:a006:c5:8000::,2a06:a007:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a06:a005:200::,2a06:a007:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a06:a040::,2a06:a047:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:a080::,2a06:a087:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:a0c0::,2a06:a0c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -37270,8 +36772,8 @@
2a06:a500::,2a06:a507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:a580::,2a06:a587:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:a5c0::,2a06:a5c7:ffff:ffff:ffff:ffff:ffff:ffff,SC
-2a06:a600::,2a06:a600::7fff:ffff:ffff:ffff:ffff,PT
-2a06:a600:0:8000::,2a06:a607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:a600::,2a06:a600:7f:ffff:ffff:ffff:ffff:ffff,PT
+2a06:a600:80::,2a06:a607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:a640::,2a06:a647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:a680::,2a06:a687:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:a6c0::,2a06:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -37282,7 +36784,6 @@
2a06:a880::,2a06:a887:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:a8c0::,2a06:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:a940::,2a06:a947:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a06:a980::,2a06:a987:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:a9c0::,2a06:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:aa40::,2a06:aa47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:aa80::,2a06:aa87:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37292,7 +36793,9 @@
2a06:abc0::,2a06:abc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:ac00::,2a06:ac07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:ac40::,2a06:ac47:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:ac80::,2a06:ac87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:ac80::,2a06:ac80:10:ffff:ffff:ffff:ffff:ffff,DE
+2a06:ac80:11::,2a06:ac80:11:ffff:ffff:ffff:ffff:ffff,US
+2a06:ac80:12::,2a06:ac87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:acc0::,2a06:acc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:ad00::,2a06:ad07:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:ad40::,2a06:ad47:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -37350,7 +36853,6 @@
2a06:bac0::,2a06:bac7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:bb00::,2a06:bb07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:bb80::,2a06:bb87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:bbc0::,2a06:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
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
@@ -37365,7 +36867,7 @@
2a06:bec0::,2a06:bec7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:bf00::,2a06:bf07:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a06:bf40::,2a06:bf47:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a06:bf80::,2a06:bf87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:bf80::,2a06:bf87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:bfc0::,2a06:bfc7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a06:c000::,2a06:c007:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:c040::,2a06:c047:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -37389,7 +36891,7 @@
2a06:c4c0::,2a06:c4c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:c500::,2a06:c507:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:c580::,2a06:c587:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:c5c0::,2a06:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:c5c0::,2a06:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:c600::,2a06:c607:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:c640::,2a06:c647:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:c680::,2a06:c687:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37453,12 +36955,13 @@
2a06:d580::,2a06:d587:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:d5c0::,2a06:d5c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:d600::,2a06:d607:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a06:d640::,2a06:d647:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a06:d640::,2a06:d642:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a06:d643::,2a06:d643:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a06:d644::,2a06:d647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:d680::,2a06:d687:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:d700::,2a06:d707:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a06:d740::,2a06:d747:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:d7c0::,2a06:d7c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
-2a06:d800::,2a06:d807:ffff:ffff:ffff:ffff:ffff:ffff,UA
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
@@ -37488,7 +36991,7 @@
2a06:df00::,2a06:df07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:df40::,2a06:df47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:df80::,2a06:df87:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:dfc0::,2a06:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+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
2a06:e080::,2a06:e087:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -37524,9 +37027,7 @@
2a06:e840::,2a06:e847:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:e880::,2a06:e881:105:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:106::,2a06:e881:106:ffff:ffff:ffff:ffff:ffff,FR
-2a06:e881:107::,2a06:e881:107:ffff:ffff:ffff:ffff:ffff,CH
-2a06:e881:108::,2a06:e881:108:7fff:ffff:ffff:ffff:ffff,LT
-2a06:e881:108:8000::,2a06:e881:1ff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:107::,2a06:e881:1ff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:200::,2a06:e881:2ff:ffff:ffff:ffff:ffff:ffff,AT
2a06:e881:300::,2a06:e881:10ff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:1100::,2a06:e881:110f:ffff:ffff:ffff:ffff:ffff,FR
@@ -37535,16 +37036,18 @@
2a06:e881:1510::,2a06:e881:16ff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:1700::,2a06:e881:170f:ffff:ffff:ffff:ffff:ffff,DE
2a06:e881:1710::,2a06:e881:1fff:ffff:ffff:ffff:ffff:ffff,CH
-2a06:e881:2000::,2a06:e881:200f:ffff:ffff:ffff:ffff:ffff,DE
-2a06:e881:2010::,2a06:e881:20ff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:2000::,2a06:e881:207f:ffff:ffff:ffff:ffff:ffff,DE
+2a06:e881:2080::,2a06:e881:20ff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e881:2100::,2a06:e881:210f:ffff:ffff:ffff:ffff:ffff,DE
-2a06:e881:2110::,2a06:e881:2502:ffff:ffff:ffff:ffff:ffff,CH
-2a06:e881:2503::,2a06:e881:2503:7fff:ffff:ffff:ffff:ffff,JP
-2a06:e881:2503:8000::,2a06:e881:f000:ffff:ffff:ffff:ffff:ffff,CH
-2a06:e881:f001::,2a06:e881:f001:7fff:ffff:ffff:ffff:ffff,GB
-2a06:e881:f001:8000::,2a06:e887:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:2110::,2a06:e881:36ff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:3700::,2a06:e881:370f:ffff:ffff:ffff:ffff:ffff,DE
+2a06:e881:3710::,2a06:e881:37ff:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:3800::,2a06:e881:3800:ffff:ffff:ffff:ffff:ffff,CN
+2a06:e881:3801::,2a06:e881:4000:ffff:ffff:ffff:ffff:ffff,CH
+2a06:e881:4001::,2a06:e881:4001:ffff:ffff:ffff:ffff:ffff,GB
+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,RO
+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
@@ -37588,6 +37091,7 @@
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:f500::,2a06:f507:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:f540::,2a06:f547:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:f580::,2a06:f587:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37638,7 +37142,7 @@
2a07:c0::,2a07:c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:100::,2a07:107:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:140::,2a07:147:ffff:ffff:ffff:ffff:ffff:ffff,JO
-2a07:180::,2a07:187:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:180::,2a07:187:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:1c0::,2a07:1c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:200::,2a07:207:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a07:240::,2a07:247:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -37681,18 +37185,17 @@
2a07:bc0::,2a07:bc7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:c00::,2a07:c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:c40::,2a07:c47:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a07:c80::,2a07:c87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:c80::,2a07:c87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:cc0::,2a07:cc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:d00::,2a07:d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:d40::,2a07:d47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a07:d80::,2a07:d87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:dc0::,2a07:dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a07:e00::,2a07:e07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:e40::,2a07:e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:e80::,2a07:e87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:ec0::,2a07:ec7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:f00::,2a07:f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a07:f40::,2a07:f47:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:f40::,2a07:f47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:f80::,2a07:f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:fc0::,2a07:fc7:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a07:1000::,2a07:1007:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37748,23 +37251,31 @@
2a07:1c00::,2a07:1c07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:1c40::,2a07:1c44:3ff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c44:400::,2a07:1c44:4ff:ffff:ffff:ffff:ffff:ffff,DE
-2a07:1c44:500::,2a07:1c44:609:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:500::,2a07:1c44:5ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:600::,2a07:1c44:609:ffff:ffff:ffff:ffff:ffff,KR
2a07:1c44:60a::,2a07:1c44:60a:ffff:ffff:ffff:ffff:ffff,DE
-2a07:1c44:60b::,2a07:1c44:619:ffff:ffff:ffff:ffff:ffff,AT
-2a07:1c44:61a::,2a07:1c44:61a:ffff:ffff:ffff:ffff:ffff,KR
-2a07:1c44:61b::,2a07:1c44:67f:ffff:ffff:ffff:ffff:ffff,AT
-2a07:1c44:680::,2a07:1c44:6bf:ffff:ffff:ffff:ffff:ffff,KR
+2a07:1c44:60b::,2a07:1c44:6bf:ffff:ffff:ffff:ffff:ffff,KR
2a07:1c44:6c0::,2a07:1c44:6ff:ffff:ffff:ffff:ffff:ffff,DE
2a07:1c44:700::,2a07:1c44:70f:ffff:ffff:ffff:ffff:ffff,US
2a07:1c44:710::,2a07:1c44:1800:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c44:1801::,2a07:1c44:1802:ffff:ffff:ffff:ffff:ffff,US
-2a07:1c44:1803::,2a07:1c44:35ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:1803::,2a07:1c44:24ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:2500::,2a07:1c44:25ff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c44:2600::,2a07:1c44:35ff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c44:3600::,2a07:1c44:36ff:ffff:ffff:ffff:ffff:ffff,GB
-2a07:1c44:3700::,2a07:1c44:3fff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:3700::,2a07:1c44:397f:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:3980::,2a07:1c44:39ff:ffff:ffff:ffff:ffff:ffff,US
+2a07:1c44:3a00::,2a07:1c44:3fff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c44:4000::,2a07:1c44:40ff:ffff:ffff:ffff:ffff:ffff,US
-2a07:1c44:4100::,2a07:1c44:4fff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:4100::,2a07:1c44:42ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:4300::,2a07:1c44:430f:ffff:ffff:ffff:ffff:ffff,HR
+2a07:1c44:4310::,2a07:1c44:4310:ffff:ffff:ffff:ffff:ffff,DE
+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:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+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:8800::,2a07:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c80::,2a07:1c87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:1cc0::,2a07:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:1d00::,2a07:1d07:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -37775,7 +37286,6 @@
2a07:1e40::,2a07:1e47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:1e80::,2a07:1e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:1ec0::,2a07:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:1f00::,2a07:1f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:1f40::,2a07:1f47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:1f80::,2a07:1f87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:1fc0::,2a07:1fc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -37812,7 +37322,7 @@
2a07:27c0::,2a07:27c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:2800::,2a07:2807:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2840::,2a07:2847:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:2880::,2a07:2887:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2880::,2a07:2887:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:28c0::,2a07:28c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:2900::,2a07:291f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:2a00::,2a07:2a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -37823,20 +37333,19 @@
2a07:2b40::,2a07:2b47:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:2b80::,2a07:2b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:2bc0::,2a07:2bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a07:2c00::,2a07:2c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:2c40::,2a07:2c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2c80::,2a07:2c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2cc0::,2a07:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:2d00::,2a07:2d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2d40::,2a07:2d47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:2d80::,2a07:2d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a07:2dc0::,2a07:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a07:2dc0::,2a07:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:2e00::,2a07:2e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:2e40::,2a07:2e47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:2e80::,2a07:2e87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:2ec0::,2a07:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2f00::,2a07:2f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a07:2f40::,2a07:2f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:2f40::,2a07:2f47:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:2f80::,2a07:2f87:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:2fc0::,2a07:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:3000::,2a07:3007:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -37855,7 +37364,7 @@
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,UA
+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
2a07:3500::,2a07:3507:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -37883,7 +37392,7 @@
2a07:3ac0::,2a07:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3b00::,2a07:3b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:3b40::,2a07:3b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a07:3b80::,2a07:3b87:ffff:ffff:ffff:ffff:ffff:ffff,GI
+2a07:3b80::,2a07:3b87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:3bc0::,2a07:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:3c00::,2a07:3c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:3c40::,2a07:3c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -37993,7 +37502,6 @@
2a07:5740::,2a07:5747:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:5780::,2a07:5787:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a07:57c0::,2a07:57c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a07:5800::,2a07:5807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:5840::,2a07:5847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:5880::,2a07:5887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:58c0::,2a07:58c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -38128,7 +37636,6 @@
2a07:7900::,2a07:7907:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a07:7940::,2a07:7947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:7980::,2a07:7987:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a07:79c0::,2a07:79c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:7a00::,2a07:7a07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:7a40::,2a07:7a47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7a80::,2a07:7a87:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -38190,9 +37697,7 @@
2a07:88c0::,2a07:88c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:8900::,2a07:8907:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:8940::,2a07:8947:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a07:8980::,2a07:8980:43:ffff:ffff:ffff:ffff:ffff,LT
-2a07:8980:44::,2a07:8980:44:7fff:ffff:ffff:ffff:ffff,GB
-2a07:8980:44:8000::,2a07:8987:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a07:8980::,2a07:8987:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a07:89c0::,2a07:89c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a07:8a00::,2a07:8a07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:8a40::,2a07:8a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -38224,7 +37729,7 @@
2a07:90c0::,2a07:90c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:9100::,2a07:9107:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:9140::,2a07:9147:ffff:ffff:ffff:ffff:ffff:ffff,SK
-2a07:9180::,2a07:9187:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:9180::,2a07:9187:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:91c0::,2a07:91c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:9200::,2a07:9207:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a07:9240::,2a07:9247:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -38326,11 +37831,15 @@
2a07:a840::,2a07:a847:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:a880::,2a07:a887:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:a8c0::,2a07:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a07:a900::,2a07:a905:ffef:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a900::,2a07:a904:fff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a904:1000::,2a07:a904:10cc:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a904:10cd::,2a07:a904:10cd:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a904:10ce::,2a07:a904:10ff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a904:1100::,2a07:a905:ffeb:ffff:ffff:ffff:ffff:ffff,GB
+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:50b:ffff:ffff:ffff:ffff:ffff,GB
-2a07:a907:50c::,2a07:a907:50c:7fff:ffff:ffff:ffff:ffff,DE
-2a07:a907:50c:8000::,2a07:a907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a905:fff1::,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
@@ -38409,7 +37918,7 @@
2a07:ba80::,2a07:ba87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:bac0::,2a07:bac7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:bb00::,2a07:bb07:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a07:bb40::,2a07:bb47:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:bb40::,2a07:bb47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:bb80::,2a07:bb87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:bbc0::,2a07:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:bc00::,2a07:bc07:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -38467,13 +37976,89 @@
2a07:c940::,2a07:c947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:c980::,2a07:c987:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:c9c0::,2a07:c9c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a07:ca00::,2a07:ca07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:ca00::,2a07:ca03:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:ca04::,2a07:ca04:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a07:ca05::,2a07:ca07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:ca40::,2a07:ca47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:ca80::,2a07:ca87:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a07:cac0::,2a07:cac7:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a07:cb00::,2a07:cb00:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a07:cb40::,2a07:cb47:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:cb80::,2a07:cb87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:ce00::,2a07:ce07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:ce80::,2a07:ce87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a07:cf00::,2a07:cf07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:cf80::,2a07:cf80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:d000::,2a07:d0ff:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:d800::,2a07:d807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:d880::,2a07:d887:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a07:d900::,2a07:d907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:d980::,2a07:d987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:da00::,2a07:da07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:da80::,2a07:da87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:db00::,2a07:db07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:db80::,2a07:db87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dc00::,2a07:dc07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:dc80::,2a07:dc87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dd00::,2a07:dd00:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:dd80::,2a07:dd87:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a07:de00::,2a07:de07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:de80::,2a07:de87:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a07:df00::,2a07:df07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:df80::,2a07:df87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:e000::,2a07:e007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:e080::,2a07:e087:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:e100::,2a07:e100:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e180::,2a07:e187:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e200::,2a07:e207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e280::,2a07:e287:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:e300::,2a07:e307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e380::,2a07:e387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:e400::,2a07:e407:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e480::,2a07:e487:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e500::,2a07:e507:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e580::,2a07:e587:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e600::,2a07:e607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:e680::,2a07:e687:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:e700::,2a07:e707:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:e780::,2a07:e787:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:e800::,2a07:e807:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a07:e880::,2a07:e887:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e900::,2a07:e907:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a07:e980::,2a07:e987:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:ea00::,2a07:ea07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:ea80::,2a07:ea87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:eb00::,2a07:eb07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:eb80::,2a07:eb80:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:ec00::,2a07:ec00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:ec80::,2a07:ec87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:ed00::,2a07:ed07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:ed80::,2a07:ed80:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a07:ee00::,2a07:ee00:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:ee80::,2a07:ee87:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:ef00::,2a07:ef07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:ef80::,2a07:ef87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:f000::,2a07:f007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f080::,2a07:f087:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:f100::,2a07:f107:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a07:f180::,2a07:f187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f200::,2a07:f207:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:f280::,2a07:f287:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:f300::,2a07:f307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f380::,2a07:f387:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:f400::,2a07:f407:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:f480::,2a07:f487:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f500::,2a07:f507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:f600::,2a07:f607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f700::,2a07:f707:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:f800::,2a07:f807:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:f900::,2a07:f900:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:fa00::,2a07:fa07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:fb00::,2a07:fb00:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:fc00::,2a07:fc07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:fd00::,2a07:fd07:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a07:fe00::,2a07:fe07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:ff00::,2a07:ff07:ffff:ffff:ffff:ffff:ffff:ffff,IT
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
@@ -38522,7 +38107,7 @@
2a0a:b00::,2a0a:b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:b40::,2a0a:b47:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0a:b80::,2a0a:b87:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a0a:bc0::,2a0a:bc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0a:bc0::,2a0a:bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:c00::,2a0a:c07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:c40::,2a0a:c47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:c80::,2a0a:c87:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -38606,7 +38191,7 @@
2a0a:1fc0::,2a0a:1fc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:2000::,2a0a:2007:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0a:2040::,2a0a:2047:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0a:2080::,2a0a:2087:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:2080::,2a0a:2087:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a0a:20c0::,2a0a:20c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:2100::,2a0a:2107:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:2140::,2a0a:2147:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -38616,6 +38201,7 @@
2a0a:2240::,2a0a:2247:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:2280::,2a0a:2287:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:22c0::,2a0a:22c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:2300::,2a0a:2303:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:2340::,2a0a:2347:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:2380::,2a0a:2380:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0a:23c0::,2a0a:23c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -38715,6 +38301,7 @@
2a0a:3ac0::,2a0a:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:3b00::,2a0a:3b00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:3b40::,2a0a:3b47:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0a:3b80::,2a0a:3b87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:3bc0::,2a0a:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:3c00::,2a0a:3c00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:3c40::,2a0a:3c47:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -38909,7 +38496,6 @@
2a0a:6a80::,2a0a:6a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:6ac0::,2a0a:6ac0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:6b00::,2a0a:6b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0a:6b40::,2a0a:6b47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:6b80::,2a0a:6b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:6bc0::,2a0a:6bc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:6c00::,2a0a:6c07:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -38966,7 +38552,6 @@
2a0a:78c0::,2a0a:78c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:7900::,2a0a:7907:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:7940::,2a0a:7940:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a0a:7980::,2a0a:7987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:79c0::,2a0a:79c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:7a00::,2a0a:7a03:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:7a04::,2a0a:7a04::ffff:ffff:ffff:ffff:ffff,BR
@@ -39004,6 +38589,7 @@
2a0a:8040::,2a0a:8047:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8080::,2a0a:8087:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:80c0::,2a0a:80c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0a:8100::,2a0a:8107:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8140::,2a0a:8140:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:8180::,2a0a:8187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:81c0::,2a0a:81c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -39164,9 +38750,7 @@
2a0a:a480::,2a0a:a487:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:a4c0::,2a0a:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:a500::,2a0a:a507:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0a:a540::,2a0a:a540:29df:ffff:ffff:ffff:ffff:ffff,DE
-2a0a:a540:29e0::,2a0a:a540:29e0:7fff:ffff:ffff:ffff:ffff,US
-2a0a:a540:29e0:8000::,2a0a:a547:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:a540::,2a0a:a547:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:a580::,2a0a:a587:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:a5c0::,2a0a:a5c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:a600::,2a0a:a607:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -39223,7 +38807,9 @@
2a0a:b2c0::,2a0a:b2c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:b300::,2a0a:b307:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:b340::,2a0a:b347:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a0a:b380::,2a0a:b387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+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
@@ -39239,6 +38825,7 @@
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:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:b740::,2a0a:b747:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:b780::,2a0a:b787:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:b7c0::,2a0a:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -39364,6 +38951,7 @@
2a0a:d5c0::,2a0a:d5c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:d600::,2a0a:d607:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:d640::,2a0a:d647:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:d680::,2a0a:d687:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:d6c0::,2a0a:d6c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:d700::,2a0a:d707:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:d740::,2a0a:d747:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39409,6 +38997,7 @@
2a0a:e140::,2a0a:e147:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:e180::,2a0a:e187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:e1c0::,2a0a:e1c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:e200::,2a0a:e207:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:e240::,2a0a:e247:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:e280::,2a0a:e287:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a0a:e2c0::,2a0a:e2c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -39454,6 +39043,7 @@
2a0a:ecc0::,2a0a:ecc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:ed00::,2a0a:ed07:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0a:ed40::,2a0a:ed47:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0a:ed80::,2a0a:ed87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0a:edc0::,2a0a:edc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:ee00::,2a0a:ee07:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0a:ee40::,2a0a:ee40:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39488,7 +39078,7 @@
2a0a:f580::,2a0a:f587:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:f5c0::,2a0a:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0a:f600::,2a0a:f607:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0a:f640::,2a0a:f647:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0a:f640::,2a0a:f647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f680::,2a0a:f687:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0a:f6c0::,2a0a:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f700::,2a0a:f707:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -39502,6 +39092,7 @@
2a0a:f900::,2a0a:f907:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0a:f940::,2a0a:f940:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f980::,2a0a:f987:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0a:f9c5::,2a0a:f9c5:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:fa00::,2a0a:fa07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:fa40::,2a0a:fa47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:fa80::,2a0a:fa87:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -39563,7 +39154,7 @@
2a0b:880::,2a0b:880:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0b:8c0::,2a0b:8c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:900::,2a0b:900:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a0b:940::,2a0b:947:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:940::,2a0b:947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:980::,2a0b:980:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:9c0::,2a0b:9c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:a00::,2a0b:a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39572,9 +39163,7 @@
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:ffe6:ffff:ffff:ffff:ffff:ffff,GB
-2a0b:b87:ffe7::,2a0b:b87:ffe7:7fff:ffff:ffff:ffff:ffff,BE
-2a0b:b87:ffe7:8000::,2a0b:b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0b:b80::,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
@@ -39662,7 +39251,8 @@
2a0b:2100::,2a0b:2107:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0b:2140::,2a0b:2147:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:2180::,2a0b:2180:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a0b:21c0::,2a0b:21c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:21c0::,2a0b:21c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:21c1::,2a0b:21c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:2200::,2a0b:2207:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0b:2240::,2a0b:2247:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:2280::,2a0b:2287:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -39697,7 +39287,8 @@
2a0b:29c0::,2a0b:29c7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0b:2a00::,2a0b:2a07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:2a40::,2a0b:2a47:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0b:2a80::,2a0b:2a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:2a80::,2a0b:2a84:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:2a85::,2a0b:2a87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0b:2ac0::,2a0b:2ac7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0b:2b00::,2a0b:2b07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:2b40::,2a0b:2b47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39709,15 +39300,15 @@
2a0b:2cc0::,2a0b:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0b:2d00::,2a0b:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:2d40::,2a0b:2d40:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0b:2d80::,2a0b:2d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:2d80::,2a0b:2d84:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:2d85::,2a0b:2d85:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:2d86::,2a0b:2d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:2dc0::,2a0b:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0b:2e00::,2a0b:2e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0b:2e40::,2a0b:2e47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:2e80::,2a0b:2e87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:2ec0::,2a0b:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a0b:2f00::,2a0b:2f00:bd:ffff:ffff:ffff:ffff:ffff,RO
-2a0b:2f00:be::,2a0b:2f00:be:7fff:ffff:ffff:ffff:ffff,BE
-2a0b:2f00:be:8000::,2a0b:2f07:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0b:2f00::,2a0b:2f07:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0b:2f40::,2a0b:2f40:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:2f80::,2a0b:2f87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:2fc0::,2a0b:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -39742,6 +39333,7 @@
2a0b:3480::,2a0b:3487:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0b:34c0::,2a0b:34c7:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0b:3500::,2a0b:3500:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:3540::,2a0b:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:3580::,2a0b:3587:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0b:35c0::,2a0b:35c7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0b:3600::,2a0b:3607:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -39769,7 +39361,8 @@
2a0b:3b80::,2a0b:3b87:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a0b:3bc0::,2a0b:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a0b:3c00::,2a0b:3c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0b:3c40::,2a0b:3c47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:3c40::,2a0b:3c46:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:3c47::,2a0b:3c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:3c80::,2a0b:3c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:3cc0::,2a0b:3cc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0b:3d00::,2a0b:3d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39781,7 +39374,7 @@
2a0b:3e80::,2a0b:3e87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0b:3ec0::,2a0b:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0b:3f00::,2a0b:3f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a0b:3f40::,2a0b:3f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:3f40::,2a0b:3f47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:3f80::,2a0b:3f87:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0b:3fc0::,2a0b:3fc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:4000::,2a0b:4007:ffff:ffff:ffff:ffff:ffff:ffff,SK
@@ -39797,11 +39390,11 @@
2a0b:4280::,2a0b:4287:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:42c0::,2a0b:42c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:4300::,2a0b:4307:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0b:4340::,2a0b:4340:98:ffff:ffff:ffff:ffff:ffff,DE
-2a0b:4340:99::,2a0b:4340:99:7fff:ffff:ffff:ffff:ffff,CN
-2a0b:4340:99:8000::,2a0b:4342:1fff:ffff:ffff:ffff:ffff:ffff,DE
-2a0b:4342:2000::,2a0b:4342:2000:7fff:ffff:ffff:ffff:ffff,RU
-2a0b:4342:2000:8000::,2a0b:4342:4fff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:4340::,2a0b:4340:5f:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:4340:60::,2a0b:4340:6f:ffff:ffff:ffff:ffff:ffff,JP
+2a0b:4340:70::,2a0b:4342:3fff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:4342:4000::,2a0b:4342:407f:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:4342:4080::,2a0b:4342:4fff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:4342:5000::,2a0b:4342:5fff:ffff:ffff:ffff:ffff:ffff,KR
2a0b:4342:6000::,2a0b:4347:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:4380::,2a0b:4387:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -39820,6 +39413,7 @@
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
2a0b:47c0::,2a0b:47c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:4800::,2a0b:4807:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:4840::,2a0b:4847:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39872,6 +39466,7 @@
2a0b:5400::,2a0b:5400:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0b:5440::,2a0b:5447:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:5480::,2a0b:5487:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0b:54c0::,2a0b:54c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:5500::,2a0b:5507:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0b:5540::,2a0b:5547:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:5580::,2a0b:5587:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -39961,7 +39556,12 @@
2a0b:6ac0::,2a0b:6ac7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0b:6b00::,2a0b:6b07:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0b:6b40::,2a0b:6b47:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0b:6b80::,2a0b:6b87:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:6b80::,2a0b:6b82:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:6b83::,2a0b:6b83:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:6b84::,2a0b:6b86:1ff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:6b86:200::,2a0b:6b86:2ff:ffff:ffff:ffff:ffff:ffff,GB
+2a0b:6b86:300::,2a0b:6b86:3ff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:6b86:400::,2a0b:6b87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0b:6bc0::,2a0b:6bc7:ffff:ffff:ffff:ffff:ffff:ffff,TJ
2a0b:6c00::,2a0b:6c07:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0b:6c40::,2a0b:6c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -39988,6 +39588,7 @@
2a0b:7180::,2a0b:7187:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:71c0::,2a0b:71c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:7200::,2a0b:7207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:7240::,2a0b:7247:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:7280::,2a0b:7287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:72c0::,2a0b:72c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:7300::,2a0b:7307:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40049,7 +39650,7 @@
2a0b:8100::,2a0b:8107:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:8140::,2a0b:8147:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:8180::,2a0b:8187:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0b:81c0::,2a0b:81c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0b:81c0::,2a0b:81c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:8200::,2a0b:8207:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:8240::,2a0b:8247:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:8280::,2a0b:8280:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -40102,7 +39703,6 @@
2a0b:8e40::,2a0b:8e40:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0b:8e80::,2a0b:8e87:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0b:8ec0::,2a0b:8ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0b:8f00::,2a0b:8f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:8f40::,2a0b:8f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:8f80::,2a0b:8f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:8fc0::,2a0b:8fc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40121,9 +39721,9 @@
2a0b:9300::,2a0b:9307:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:9340::,2a0b:9347:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:9380::,2a0b:9380:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0b:93c0::,2a0b:93c7:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0b:93c0::,2a0b:93c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:9400::,2a0b:9407:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:9440::,2a0b:9447:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a0b:9480::,2a0b:9480:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:94c0::,2a0b:94c0:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0b:9500::,2a0b:9507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:9540::,2a0b:9547:ffff:ffff:ffff:ffff:ffff:ffff,UZ
@@ -40184,10 +39784,11 @@
2a0b:a240::,2a0b:a247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:a280::,2a0b:a280:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:a2c0::,2a0b:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a0b:a300::,2a0b:a307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0b:a300::,2a0b:a307:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:a340::,2a0b:a347:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0b:a380::,2a0b:a380:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:a3c0::,2a0b:a3c7:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a0b:a400::,2a0b:a407:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:a440::,2a0b:a447:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:a480::,2a0b:a480:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0b:a4c0::,2a0b:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,RS
@@ -40256,7 +39857,6 @@
2a0b:b480::,2a0b:b487:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0b:b4c0::,2a0b:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:b500::,2a0b:b503:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0b:b540::,2a0b:b547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:b580::,2a0b:b587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:b5c0::,2a0b:b5c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:b600::,2a0b:b607:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -40327,6 +39927,7 @@
2a0b:c640::,2a0b:c647:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0b:c680::,2a0b:c687:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:c6c0::,2a0b:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:c700::,2a0b:c707:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0b:c740::,2a0b:c747:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a0b:c780::,2a0b:c787:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:c7c0::,2a0b:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -40347,7 +39948,6 @@
2a0b:cb80::,2a0b:cb80:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0b:cbc0::,2a0b:cbc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:cc00::,2a0b:cc00:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a0b:cc40::,2a0b:cc47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:cc80::,2a0b:cc87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:ccc0::,2a0b:ccc7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0b:cd00::,2a0b:cd07:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -40503,7 +40103,6 @@
2a0b:f280::,2a0b:f287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:f2c0::,2a0b:f2c7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0b:f300::,2a0b:f307:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0b:f340::,2a0b:f340:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0b:f380::,2a0b:f387:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:f3c0::,2a0b:f3c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0b:f400::,2a0b:f400:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -40555,587 +40154,1462 @@
2a0b:ff80::,2a0b:ff87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:ffc0::,2a0b:ffc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c::,2a0c:7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:40::,2a0c:40:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:80::,2a0c:87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:c0::,2a0c:c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:100::,2a0c:107:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:140::,2a0c:147:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:180::,2a0c:187:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:1c0::,2a0c:1c7:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0c:200::,2a0c:207:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:240::,2a0c:247:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:280::,2a0c:287:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:2c0::,2a0c:2c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:300::,2a0c:307:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a0c:340::,2a0c:347:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:380::,2a0c:387:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0c:3c0::,2a0c:3c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:400::,2a0c:407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:440::,2a0c:440:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:480::,2a0c:487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:4c0::,2a0c:4c7:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a0c:500::,2a0c:503:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:540::,2a0c:547:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:580::,2a0c:587:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:5c0::,2a0c:5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:600::,2a0c:607:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:640::,2a0c:647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:680::,2a0c:687:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:6c0::,2a0c:6c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:700::,2a0c:700:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:740::,2a0c:747:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:780::,2a0c:787:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:7c0::,2a0c:7c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:800::,2a0c:807:ffff:ffff:ffff:ffff:ffff:ffff,AZ
+2a0c:840::,2a0c:847:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:880::,2a0c:887:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:8c0::,2a0c:8c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:900::,2a0c:907:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:940::,2a0c:947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:980::,2a0c:987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9c0::,2a0c:9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:a00::,2a0c:a07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:a40::,2a0c:a47:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a0c:a80::,2a0c:a87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:ac0::,2a0c:ac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b00::,2a0c:b00:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:b40::,2a0c:b47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:b80::,2a0c:b87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:bc0::,2a0c:bc7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0c:c00::,2a0c:c07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:c40::,2a0c:c40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:c80::,2a0c:c87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:cc0::,2a0c:cc7:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0c:d00::,2a0c:d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d40::,2a0c:d47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d80::,2a0c:d87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:dc0::,2a0c:dc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:e00::,2a0c:e07:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a0c:e40::,2a0c:e47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:e80::,2a0c:e87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:ec0::,2a0c:ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:f00::,2a0c:f07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:f40::,2a0c:f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f80::,2a0c:f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:fc0::,2a0c:fc7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:1000::,2a0c:1007:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:1040::,2a0c:1047:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:1080::,2a0c:1087:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0c:10c0::,2a0c:10c0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0c:1100::,2a0c:1107:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:1140::,2a0c:1147:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:1180::,2a0c:1187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:11c0::,2a0c:11c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:1200::,2a0c:1207:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:1240::,2a0c:1247:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:1280::,2a0c:1287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:12c0::,2a0c:12c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:1300::,2a0c:1307:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:1340::,2a0c:1347:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:1380::,2a0c:1387:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:13c0::,2a0c:13c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:1400::,2a0c:1407:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:1440::,2a0c:1447:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1480::,2a0c:1487:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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: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
2a0c:1680::,2a0c:1687:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:16c0::,2a0c:16c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1700::,2a0c:1707:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:1740::,2a0c:1747:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:1780::,2a0c:1787:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:17c0::,2a0c:17c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:1800::,2a0c:1807:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:1840::,2a0c:1847:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:1880::,2a0c:1887:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:18c0::,2a0c:18c0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:1900::,2a0c:1907:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:1940::,2a0c:1947:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:1980::,2a0c:1980:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:19c0::,2a0c:19c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:1a00::,2a0c:1a00:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:1a40::,2a0c:1a40:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:1a80::,2a0c:1a87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:1ac0::,2a0c:1ac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1b00::,2a0c:1b07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:1b40::,2a0c:1b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1b80::,2a0c:1b87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:1bc0::,2a0c:1bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1c00::,2a0c:1c07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:1c40::,2a0c:1c47:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0c:1c80::,2a0c:1c87:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0c:1cc0::,2a0c:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:1d00::,2a0c:1d03:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:1d40::,2a0c:1d47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:1d80::,2a0c:1d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:1dc0::,2a0c:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:1e00::,2a0c:1e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:1e40::,2a0c:1e47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:1e80::,2a0c:1e87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:1ec0::,2a0c:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:1f00::,2a0c:1f07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:1f40::,2a0c:1f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:1f80::,2a0c:1f87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:1fc0::,2a0c:1fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:2000::,2a0c:2007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:2040::,2a0c:2047:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:2080::,2a0c:2087:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:20c0::,2a0c:20c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:2100::,2a0c:2107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2140::,2a0c:2147:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:2180::,2a0c:2187:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:21c0::,2a0c:21c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:2200::,2a0c:2207:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2240::,2a0c:2247:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:2280::,2a0c:2287:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:22c0::,2a0c:22c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:2300::,2a0c:2307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:2340::,2a0c:2347:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:2380::,2a0c:2387:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:23c0::,2a0c:23c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2400::,2a0c:2407:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:2440::,2a0c:2447:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:2480::,2a0c:2487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:24c0::,2a0c:24c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:2500::,2a0c:2507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:2540::,2a0c:2547:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:2580::,2a0c:2587:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:25c0::,2a0c:25c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2600::,2a0c:2607:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:2640::,2a0c:2647:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:2680::,2a0c:2687:ffff:ffff:ffff:ffff:ffff:ffff,NL
+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
2a0c:2880::,2a0c:2887:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:28c0::,2a0c:28c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:2900::,2a0c:2907:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:2940::,2a0c:2947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2980::,2a0c:2980:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:29c0::,2a0c:29c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2a00::,2a0c:2a07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:2a40::,2a0c:2a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2a80::,2a0c:2a87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0c:2b00::,2a0c:2b07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:2ac0::,2a0c:2ac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2b00::,2a0c:2b07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:2b40::,2a0c:2b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2b80::,2a0c:2b87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2bc0::,2a0c:2bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2c00::,2a0c:2c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:2c40::,2a0c:2c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2c80::,2a0c:2c87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:2cc0::,2a0c:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2d00::,2a0c:2d07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:2d40::,2a0c:2d47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:2d80::,2a0c:2d87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:2dc0::,2a0c:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:2e00::,2a0c:2e07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:2e40::,2a0c:2e43:ffff:ffff:ffff:ffff:ffff:ffff,LI
2a0c:2e80::,2a0c:2e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:2ec0::,2a0c:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:2f00::,2a0c:2f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:2f40::,2a0c:2f43:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2f44::,2a0c:2f44:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:2f45::,2a0c:2f46:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:2f47::,2a0c:2f47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0c:2f80::,2a0c:2f87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:2fc0::,2a0c:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3000::,2a0c:3000:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:3040::,2a0c:3047:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:3080::,2a0c:3080:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:30c0::,2a0c:30c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:3100::,2a0c:3107:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:3140::,2a0c:3147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3180::,2a0c:3180:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:31c0::,2a0c:31c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3200::,2a0c:3207:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0c:3240::,2a0c:3247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:3280::,2a0c:3287:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:32c0::,2a0c:32c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:3300::,2a0c:3307:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a0c:3340::,2a0c:3347:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3380::,2a0c:3387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:33c0::,2a0c:33c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:3400::,2a0c:3407:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:3440::,2a0c:3447:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0c:3480::,2a0c:3487:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:34c0::,2a0c:34c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a0c:3500::,2a0c:3507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:3540::,2a0c:3547:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:3580::,2a0c:3587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:35c0::,2a0c:35c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
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:3700::,2a0c:3700:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a0c:3780::,2a0c:3787:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:3740::,2a0c:3747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:3780::,2a0c:3787:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:37c0::,2a0c:37c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3800::,2a0c:3800:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:3840::,2a0c:3847:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0c:3880::,2a0c:3887:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:38c0::,2a0c:38c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3900::,2a0c:3907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:3940::,2a0c:3947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3980::,2a0c:3987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:39c0::,2a0c:39c7:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a0c:3a00::,2a0c:3a07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:3a40::,2a0c:3a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3a80::,2a0c:3a87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:3ac0::,2a0c:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:3b00::,2a0c:3b07:ffff:ffff:ffff:ffff:ffff:ffff,MD
-2a0c:3b80::,2a0c:3b87:ffff:ffff:ffff:ffff:ffff:ffff,CH
+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
2a0c:3c80::,2a0c:3c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:3cc0::,2a0c:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:3d00::,2a0c:3d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:3d40::,2a0c:3d40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3d80::,2a0c:3d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:3dc0::,2a0c:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:3e00::,2a0c:3e07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:3e40::,2a0c:3e47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:3e80::,2a0c:3e87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:3ec0::,2a0c:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:3f00::,2a0c:3f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:3f40::,2a0c:3f40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3f80::,2a0c:3f87:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0c:3fc0::,2a0c:3fc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:4000::,2a0c:4000:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:4040::,2a0c:4047:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:4080::,2a0c:4087:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:40c0::,2a0c:40c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:4100::,2a0c:4107:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:4140::,2a0c:4140:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:4180::,2a0c:4187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:41c0::,2a0c:41c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:4200::,2a0c:4207:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:4240::,2a0c:4247:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0c:4280::,2a0c:4287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:42c0::,2a0c:42c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:4300::,2a0c:4300:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4340::,2a0c:4347:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:4380::,2a0c:4387:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:43c0::,2a0c:43c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:4400::,2a0c:4400:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:4440::,2a0c:4447:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:4480::,2a0c:4487:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:44c0::,2a0c:44c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:4500::,2a0c:4507:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0c:4540::,2a0c:4547:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:4580::,2a0c:4587:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:45c0::,2a0c:45c7:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0c:4600::,2a0c:4607:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:4640::,2a0c:4647:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:4680::,2a0c:4687:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:46c0::,2a0c:46c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0c:4700::,2a0c:4707:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:4740::,2a0c:4747:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:4780::,2a0c:4787:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a0c:47c0::,2a0c:47c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:4800::,2a0c:4807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:4840::,2a0c:4847:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4880::,2a0c:4887:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:48c0::,2a0c:48c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:4900::,2a0c:4907:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:4940::,2a0c:4947:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:4980::,2a0c:4987:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:49c0::,2a0c:49c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:4a00::,2a0c:4a07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4a40::,2a0c:4a47:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:4a80::,2a0c:4a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:4ac0::,2a0c:4ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:4b00::,2a0c:4b07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:4b40::,2a0c:4b47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:4b80::,2a0c:4b87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:4bc0::,2a0c:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:4c00::,2a0c:4c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:4c40::,2a0c:4c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4c80::,2a0c:4c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4cc0::,2a0c:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:4d00::,2a0c:4d07:ffff:ffff:ffff:ffff:ffff:ffff,SC
+2a0c:4d40::,2a0c:4d47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:4d80::,2a0c:4d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:4dc0::,2a0c:4dc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:4e00::,2a0c:4e00:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:4e40::,2a0c:4e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:4e80::,2a0c:4e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:4ec0::,2a0c:4ec7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:4f00::,2a0c:4f07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:4f40::,2a0c:4f47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:4f80::,2a0c:4f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:4fc0::,2a0c:4fc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:5000::,2a0c:5003:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:5040::,2a0c:5047:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:5080::,2a0c:5087:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:50c0::,2a0c:50c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:5100::,2a0c:5107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:5140::,2a0c:5140:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:5180::,2a0c:5187:ffff:ffff:ffff:ffff:ffff:ffff,QA
+2a0c:51c0::,2a0c:51c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:5200::,2a0c:5207:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:5240::,2a0c:5247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:5280::,2a0c:5287:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:52c0::,2a0c:52c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:5300::,2a0c:5307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:5340::,2a0c:5347:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:5380::,2a0c:5387:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:53c0::,2a0c:53c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:5400::,2a0c:5407:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:5440::,2a0c:5447:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:5480::,2a0c:5487:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:54c0::,2a0c:54c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:5500::,2a0c:5500:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:5540::,2a0c:5540:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a0c:5580::,2a0c:5587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:55c0::,2a0c:55c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:5600::,2a0c:5607:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:5640::,2a0c:5647:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:5680::,2a0c:5687:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:56c0::,2a0c:56c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:5700::,2a0c:5707:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:5740::,2a0c:5747:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:5780::,2a0c:5787:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:57c0::,2a0c:57c7:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0c:5800::,2a0c:5807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:5840::,2a0c:5847:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:5880::,2a0c:5887:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:58c0::,2a0c:58c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0c:5900::,2a0c:5907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:5940::,2a0c:5947:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:5980::,2a0c:5987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:59c0::,2a0c:59c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:5a00::,2a0c:5a07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:5a40::,2a0c:5a47:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:5a80::,2a0c:5a87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:5ac0::,2a0c:5ac7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0c:5b00::,2a0c:5b07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:5b40::,2a0c:5b47:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:5b80::,2a0c:5b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:5bc0::,2a0c:5bc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:5c00::,2a0c:5c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:5c40::,2a0c:5c47:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:5c80::,2a0c:5c87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:5cc0::,2a0c:5cc7:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a0c:5d00::,2a0c:5d07:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:5d40::,2a0c:5d47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:5d80::,2a0c:5d87:ffff:ffff:ffff:ffff:ffff:ffff,UZ
+2a0c:5dc0::,2a0c:5dc7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:5e00::,2a0c:5e00:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a0c:5e40::,2a0c:5e47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:5e80::,2a0c:5e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:5ec0::,2a0c:5ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:5f00::,2a0c:5f00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:5f40::,2a0c:5f47:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:5f80::,2a0c:5f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:5fc0::,2a0c:5fc7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:6000::,2a0c:6007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6040::,2a0c:6047:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:6080::,2a0c:6087:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:60c0::,2a0c:60c7:ffff:ffff:ffff:ffff:ffff:ffff,ME
2a0c:6100::,2a0c:6107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:6140::,2a0c:6147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:6180::,2a0c:6187:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:61c0::,2a0c:61c0:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:6200::,2a0c:6207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:6240::,2a0c:6247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6280::,2a0c:6287:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:62c0::,2a0c:62c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:6300::,2a0c:6307:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a0c:6340::,2a0c:6347:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0c:6380::,2a0c:6387:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:63c0::,2a0c:63c0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0c:6400::,2a0c:6400:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:6440::,2a0c:6447:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:6480::,2a0c:6487:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:64c0::,2a0c:64c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0c:6500::,2a0c:6507:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:6540::,2a0c:6540:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:6580::,2a0c:6587:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:65c0::,2a0c:65c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:6600::,2a0c:6607:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:6640::,2a0c:6647:ffff:ffff:ffff:ffff:ffff:ffff,OM
+2a0c:6680::,2a0c:6687:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:66c0::,2a0c:66c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:6700::,2a0c:6707:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:6740::,2a0c:6747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6780::,2a0c:6787:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:67c0::,2a0c:67c7:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0c:6800::,2a0c:6800:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0c:6840::,2a0c:6847:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:6880::,2a0c:6880:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:68c0::,2a0c:68c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:6900::,2a0c:6907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6940::,2a0c:6947:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:6980::,2a0c:6987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:69c0::,2a0c:69c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:6a00::,2a0c:6a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:6a40::,2a0c:6a47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:6a80::,2a0c:6a87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:6ac0::,2a0c:6ac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:6b00::,2a0c:6b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:6b40::,2a0c:6b47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:6b80::,2a0c:6b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:6bc0::,2a0c:6bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:6c00::,2a0c:6c00:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:6c40::,2a0c:6c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6c80::,2a0c:6c87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:6cc0::,2a0c:6cc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:6d00::,2a0c:6d00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6d40::,2a0c:6d47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6d80::,2a0c:6d87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:6dc0::,2a0c:6dc7:ffff:ffff:ffff:ffff:ffff:ffff,AM
2a0c:6e00::,2a0c:6e07:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:6e40::,2a0c:6e47:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:6e80::,2a0c:6e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:6ec0::,2a0c:6ec0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:6f00::,2a0c:6f07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:6f40::,2a0c:6f47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:6f80::,2a0c:6f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:6fc0::,2a0c:6fc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7000::,2a0c:7007:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a0c:7040::,2a0c:7047:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:7080::,2a0c:7087:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:70c0::,2a0c:70c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7100::,2a0c:7107:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:7140::,2a0c:7147:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:7180::,2a0c:7187:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:71c0::,2a0c:71c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:7200::,2a0c:7207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:7240::,2a0c:7247:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:7280::,2a0c:7287:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:72c0::,2a0c:72c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:7300::,2a0c:7300:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0c:7340::,2a0c:7340:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:7380::,2a0c:7387:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:73c0::,2a0c:73c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:7400::,2a0c:7407:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:7440::,2a0c:7447:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7480::,2a0c:7487:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0c:74c0::,2a0c:74c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7500::,2a0c:7507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:7540::,2a0c:7547:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7580::,2a0c:7587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:75c0::,2a0c:75c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:7600::,2a0c:7607:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:7640::,2a0c:7647:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:7680::,2a0c:7680:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:76c0::,2a0c:76c0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:7700::,2a0c:7700:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:7740::,2a0c:7747:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:7780::,2a0c:7787:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:77c0::,2a0c:77c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7800::,2a0c:7807:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:7840::,2a0c:7847:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:7880::,2a0c:7887:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:78c0::,2a0c:78c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7900::,2a0c:7907:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:7940::,2a0c:7947:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:7980::,2a0c:7987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:79c0::,2a0c:79c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:7a00::,2a0c:7a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:7a40::,2a0c:7a47:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:7a80::,2a0c:7a87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:7ac0::,2a0c:7ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:7b00::,2a0c:7b07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7b40::,2a0c:7b47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:7b80::,2a0c:7b87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7bc0::,2a0c:7bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:7c00::,2a0c:7c07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:7c40::,2a0c:7c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:7c80::,2a0c:7c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7cc0::,2a0c:7cc7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:7d00::,2a0c:7d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7d40::,2a0c:7d40:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:7d80::,2a0c:7d87:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:7dc0::,2a0c:7dc7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:7e00::,2a0c:7e07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:7e40::,2a0c:7e47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:7e80::,2a0c:7e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:7ec0::,2a0c:7ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:7f00::,2a0c:7f07:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:7f40::,2a0c:7f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:7f80::,2a0c:7f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:7fc0::,2a0c:7fc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:8000::,2a0c:8007:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:8040::,2a0c:8047:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8080::,2a0c:8080:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:80c0::,2a0c:80c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:8100::,2a0c:8107:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:8140::,2a0c:8147:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8180::,2a0c:8187:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:81c0::,2a0c:81c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:8200::,2a0c:8207:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:8240::,2a0c:8247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8280::,2a0c:8287:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0c:82c0::,2a0c:82c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:8300::,2a0c:8307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:8340::,2a0c:8347:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a0c:8380::,2a0c:8387:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:83c0::,2a0c:83c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:8400::,2a0c:8407:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:8440::,2a0c:8447:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:8480::,2a0c:8487:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:84c0::,2a0c:84c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:8500::,2a0c:8507:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8540::,2a0c:8547:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:8580::,2a0c:8587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:85c0::,2a0c:85c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:8600::,2a0c:8607:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:8640::,2a0c:8647:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:8680::,2a0c:8687:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:86c0::,2a0c:86c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:8700::,2a0c:8707:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:8740::,2a0c:8747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8780::,2a0c:8787:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:87c0::,2a0c:87c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:8800::,2a0c:8807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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
2a0c:8a00::,2a0c:8a07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:8a40::,2a0c:8a47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:8a80::,2a0c:8a87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:8ac0::,2a0c:8ac0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:8b00::,2a0c:8b00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:8b40::,2a0c:8b47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:8b80::,2a0c:8b87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:8bc0::,2a0c:8bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:8c00::,2a0c:8c07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:8c40::,2a0c:8c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8c80::,2a0c:8c80:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:8cc0::,2a0c:8cc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:8d00::,2a0c:8d07:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a0c:8d40::,2a0c:8d47:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:8d80::,2a0c:8d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:8dc0::,2a0c:8dc7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:8e00::,2a0c:8e07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:8e40::,2a0c:8e47:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:8e80::,2a0c:8e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:8ec0::,2a0c:8ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:8f00::,2a0c:8f07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:8f40::,2a0c:8f47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:8f80::,2a0c:8f87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:8fc0::,2a0c:8fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9000::,2a0c:9007:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:9040::,2a0c:9043:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:9080::,2a0c:9087:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:90c0::,2a0c:90c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9100::,2a0c:9107:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0c:9140::,2a0c:9147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:9180::,2a0c:9187:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:91c0::,2a0c:91c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:9200::,2a0c:9207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:9240::,2a0c:9247:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:9280::,2a0c:9287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:92c0::,2a0c:92c0:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0c:9300::,2a0c:9307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9340::,2a0c:9347:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:9380::,2a0c:9387:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:93c0::,2a0c:93c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:9400::,2a0c:9407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:9440::,2a0c:9447:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:9480::,2a0c:9487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:94c0::,2a0c:94c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9500::,2a0c:9500:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:9540::,2a0c:9540:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:9580::,2a0c:9587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+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
+2a0c:9780::,2a0c:9787:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:97c0::,2a0c:97c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:9800::,2a0c:9807:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:9840::,2a0c:9847:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9880::,2a0c:9887:ffff:ffff:ffff:ffff:ffff:ffff,IM
+2a0c:98c0::,2a0c:98c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:9900::,2a0c:9900:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9940::,2a0c:9947:ffff:ffff:ffff:ffff:ffff:ffff,SY
+2a0c:9980::,2a0c:9987:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:99c0::,2a0c:99c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:9a00::,2a0c:9a00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9a40::,2a0c:9a40:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:9a80::,2a0c:9a87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:9ac0::,2a0c:9ac7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:9b00::,2a0c:9b07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:9b40::,2a0c:9b47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:9b80::,2a0c:9b87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:9bc0::,2a0c:9bc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9c00::,2a0c:9c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:9c40::,2a0c:9c40:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:9c80::,2a0c:9c87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:9cc0::,2a0c:9cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9d00::,2a0c:9d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:9d40::,2a0c:9d47:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:9d80::,2a0c:9d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:9dc0::,2a0c:9dc7:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a0c:9e00::,2a0c:9e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:9e40::,2a0c:9e47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:9ec0::,2a0c:9ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:9f00::,2a0c:9f07:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0c:9f40::,2a0c:9f47:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:9f80::,2a0c:9f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:9fc0::,2a0c:9fc0:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:a000::,2a0c:a007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a040::,2a0c:a040:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:a080::,2a0c:a087:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:a0c0::,2a0c:a0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:a100::,2a0c:a107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:a140::,2a0c:a147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:a180::,2a0c:a183:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a184::,2a0c:a184:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:a185::,2a0c:a185:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a186::,2a0c:a186:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:a187::,2a0c:a187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a1c0::,2a0c:a1c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:a200::,2a0c:a207:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:a240::,2a0c:a247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a280::,2a0c:a287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a2c0::,2a0c:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:a300::,2a0c:a307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a340::,2a0c:a347:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:a380::,2a0c:a387:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:a3c0::,2a0c:a3c7:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a0c:a400::,2a0c:a407:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a440::,2a0c:a447:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:a480::,2a0c:a487:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:a4c0::,2a0c:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:a500::,2a0c:a500:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:a540::,2a0c:a547:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:a580::,2a0c:a587:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:a5c0::,2a0c:a5c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:a600::,2a0c:a607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:a640::,2a0c:a640:ffff:ffff:ffff:ffff:ffff:ffff,QA
+2a0c:a680::,2a0c:a687:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0c:a6c0::,2a0c:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:a700::,2a0c:a707:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:a740::,2a0c:a747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a780::,2a0c:a781:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:a7c0::,2a0c:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:a800::,2a0c:a807:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:a840::,2a0c:a847:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a880::,2a0c:a887:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:a8c0::,2a0c:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:a900::,2a0c:a900:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:a940::,2a0c:a947:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:a9c0::,2a0c:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:aa00::,2a0c:aa07:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:aa40::,2a0c:aa47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:aa80::,2a0c:aa87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:aac0::,2a0c:aac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:ab00::,2a0c:ab07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ab40::,2a0c:ab47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ab80::,2a0c:ab87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:abc0::,2a0c:abc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:ac00::,2a0c:ac07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:ac40::,2a0c:ac47:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:ac80::,2a0c:ac87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:acc0::,2a0c:acc7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:ad00::,2a0c:ad07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+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
2a0c:af00::,2a0c:af07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:af40::,2a0c:af47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:af80::,2a0c:af87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:afc0::,2a0c:afc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:b000::,2a0c:b007:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:b040::,2a0c:b047:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:b080::,2a0c:b087:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:b0c0::,2a0c:b0c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:b100::,2a0c:b107:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:b140::,2a0c:b147:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b180::,2a0c:b187:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:b1c0::,2a0c:b1c7:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a0c:b200::,2a0c:b207:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:b240::,2a0c:b240:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a0c:b280::,2a0c:b287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b2c0::,2a0c:b2c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:b300::,2a0c:b307:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:b340::,2a0c:b347:ffff:ffff:ffff:ffff:ffff:ffff,AL
+2a0c:b380::,2a0c:b387:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:b3c0::,2a0c:b3c7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:b400::,2a0c:b407:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0c:b440::,2a0c:b447:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:b480::,2a0c:b487:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:b4c0::,2a0c:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b500::,2a0c:b507:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:b540::,2a0c:b547:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b580::,2a0c:b587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b5c0::,2a0c:b5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b600::,2a0c:b607:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2a0c:b640::,2a0c:b647:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:b6c0::,2a0c:b6c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b700::,2a0c:b707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b740::,2a0c:b747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b780::,2a0c:b780:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:b7c0::,2a0c:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b800::,2a0c:b807:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:b840::,2a0c:b847:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b880::,2a0c:b887:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:b8c0::,2a0c:b8c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:b900::,2a0c:b907:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:b940::,2a0c:b947:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:b980::,2a0c:b987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:b9c0::,2a0c:b9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:ba00::,2a0c:ba07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:ba40::,2a0c:ba47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ba80::,2a0c:ba87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:bac0::,2a0c:bac7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:bb00::,2a0c:bb07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:bb40::,2a0c:bb47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:bb80::,2a0c:bb87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:bbc0::,2a0c:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:bc00::,2a0c:bc07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:bc40::,2a0c:bc47:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:bc80::,2a0c:bc87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:bcc0::,2a0c:bcc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:bd00::,2a0c:bd07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:bd40::,2a0c:bd47:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:bd80::,2a0c:bd87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:bdc0::,2a0c:bdc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:be00::,2a0c:be00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:be40::,2a0c:be47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:be80::,2a0c:be87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:bec0::,2a0c:bec7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:bf00::,2a0c:bf07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:bf40::,2a0c:bf47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:bf80::,2a0c:bf87:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0c:bfc0::,2a0c:bfc7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:c000::,2a0c:c007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c040::,2a0c:c047:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:c080::,2a0c:c087:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:c0c0::,2a0c:c0c7:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0c:c100::,2a0c:c107:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:c140::,2a0c:c147:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c180::,2a0c:c183:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c184::,2a0c:c184:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:c185::,2a0c:c186:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c187::,2a0c:c187:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:c1c0::,2a0c:c1c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:c200::,2a0c:c200:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0c:c240::,2a0c:c247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c280::,2a0c:c287:ffff:ffff:ffff:ffff:ffff:ffff,MT
+2a0c:c2c0::,2a0c:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0c:c300::,2a0c:c307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:c340::,2a0c:c347:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:c380::,2a0c:c380:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:c3c0::,2a0c:c3c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:c400::,2a0c:c400:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:c440::,2a0c:c447:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c480::,2a0c:c487:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:c4c0::,2a0c:c4c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:c500::,2a0c:c500:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0c:c540::,2a0c:c547:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:c580::,2a0c:c587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c5c0::,2a0c:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:c600::,2a0c:c600:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:c640::,2a0c:c647:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c680::,2a0c:c687:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:c6c0::,2a0c:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:c700::,2a0c:c707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:c740::,2a0c:c740:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:c780::,2a0c:c787:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:c7c0::,2a0c:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:c800::,2a0c:c807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:c840::,2a0c:c847:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:c880::,2a0c:c887:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a0c:c8c0::,2a0c:c8c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:c900::,2a0c:c907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:c940::,2a0c:c947:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a0c:c980::,2a0c:c987:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:c9c0::,2a0c:c9c7:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a0c:ca00::,2a0c:ca07:ffff:ffff:ffff:ffff:ffff:ffff,KW
+2a0c:ca40::,2a0c:ca47:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:cac0::,2a0c:cac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:cb00::,2a0c:cb07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:cb40::,2a0c:cb47:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0c:cb80::,2a0c:cb87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:cbc0::,2a0c:cbc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:cc00::,2a0c:cc00:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:cc40::,2a0c:cc47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:ccc0::,2a0c:ccc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0c:cd00::,2a0c:cd00:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:cd40::,2a0c:cd47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:cd80::,2a0c:cd80:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:cdc0::,2a0c:cdc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:ce00::,2a0c:ce07:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0c:ce40::,2a0c:ce40:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:ce80::,2a0c:ce87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:cec0::,2a0c:cec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:cf00::,2a0c:cf07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:cf40::,2a0c:cf47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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:d080::,2a0c:d080:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:d100::,2a0c:d107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d180::,2a0c:d187:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:d200::,2a0c:d207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d280::,2a0c:d283:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d300::,2a0c:d307:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:d380::,2a0c:d387:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d400::,2a0c:d407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d480::,2a0c:d487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d500::,2a0c:d507:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:d580::,2a0c:d587:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d600::,2a0c:d607:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0c:d680::,2a0c:d687:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:d700::,2a0c:d707:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:d780::,2a0c:d787:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:d800::,2a0c:d807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:d880::,2a0c:d880:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d900::,2a0c:d907:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:da00::,2a0c:da07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:da80::,2a0c:da87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:db00::,2a0c:db07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:db80::,2a0c:db87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:dc00::,2a0c:dc00:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0c:dc80::,2a0c:dc80:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:dd00::,2a0c:dd07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:dd80::,2a0c:dd87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:de00::,2a0c:de07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:de80::,2a0c:de87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:df00::,2a0c:df07:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0c:df80::,2a0c:df87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:e000::,2a0c:e007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e080::,2a0c:e087:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:e100::,2a0c:e107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:e180::,2a0c:e187:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:e200::,2a0c:e207:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:e280::,2a0c:e280:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:e300::,2a0c:e307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:e380::,2a0c:e380:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:e400::,2a0c:e407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:e480::,2a0c:e487:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:e500::,2a0c:e507:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:e580::,2a0c:e587:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0c:e600::,2a0c:e607:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:e680::,2a0c:e687:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a0c:e700::,2a0c:e707:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e780::,2a0c:e787:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:e800::,2a0c:e807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e880::,2a0c:e887:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:e900::,2a0c:e907:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:e980::,2a0c:e987:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:ea00::,2a0c:ea07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:ea80::,2a0c:ea87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:eb00::,2a0c:eb00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:eb80::,2a0c:eb87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:ec00::,2a0c:ec07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:ec80::,2a0c:ec80:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:ed00::,2a0c:ed07:ffff:ffff:ffff:ffff:ffff:ffff,AZ
+2a0c:ed80::,2a0c:ed87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:ee00::,2a0c:ee07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ee80::,2a0c:ee87:ffff:ffff:ffff:ffff:ffff:ffff,ES
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:ef80::,2a0c:ef87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:f000::,2a0c:f000:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:f080::,2a0c:f083:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a0c:f100::,2a0c:f107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:f180::,2a0c:f187:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:f200::,2a0c:f207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f280::,2a0c:f287:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f300::,2a0c:f307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:f380::,2a0c:f387:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f400::,2a0c:f407:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:f480::,2a0c:f487:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:f500::,2a0c:f507:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:f580::,2a0c:f587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:f600::,2a0c:f607:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0c:f680::,2a0c:f687:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:f700::,2a0c:f707:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:f780::,2a0c:f787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:f800::,2a0c:f807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f880::,2a0c:f887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f900::,2a0c:f907:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:f980::,2a0c:f987:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:fa00::,2a0c:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:fa80::,2a0c:fa87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:fb00::,2a0c:fb07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:fb80::,2a0c:fb87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:fc00::,2a0c:fc07:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:fc80::,2a0c:fc87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:fd00::,2a0c:fd07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:fd80::,2a0c:fd87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:fe00::,2a0c:fe07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:fe80::,2a0c:fe87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:ff00::,2a0c:ff07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:ff80::,2a0c:ff87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d::,2a0d:7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:80::,2a0d:87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:100::,2a0d:107:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:180::,2a0d:187:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:200::,2a0d:207:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:280::,2a0d:287:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:300::,2a0d:307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:380::,2a0d:387:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:400::,2a0d:407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:480::,2a0d:487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:500::,2a0d:507:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:580::,2a0d:580:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:600::,2a0d:607:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0d:680::,2a0d:687:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:700::,2a0d:707:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:780::,2a0d:787:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:800::,2a0d:807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:880::,2a0d:887:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:900::,2a0d:900:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0d:980::,2a0d:987:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:a00::,2a0d:a07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:a80::,2a0d:a87:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a0d:b00::,2a0d:b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:b80::,2a0d:b80:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a0d:c00::,2a0d:c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:c80::,2a0d:c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
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
+2a0d:e80::,2a0d:e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:f00::,2a0d:f07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0d:f80::,2a0d:f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:1000::,2a0d:1007:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:1080::,2a0d:1087:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:1100::,2a0d:1107:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:1180::,2a0d:1187:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:1200::,2a0d:1207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:1280::,2a0d:1287:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:1300::,2a0d:1307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:1380::,2a0d:1387:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:1400::,2a0d:1403:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:1480::,2a0d:1487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:1500::,2a0d:1500:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:1580::,2a0d:1580:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a0d:1600::,2a0d:1600:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:1680::,2a0d:1687:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:1700::,2a0d:1707:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:1780::,2a0d:1787:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:1800::,2a0d:1807:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:1880::,2a0d:1887:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:1900::,2a0d:1907:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:1980::,2a0d:1987:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:1a00::,2a0d:1a07:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0d:1a80::,2a0d:1a87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:1b00::,2a0d:1b07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:1b80::,2a0d:1b80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:1c00::,2a0d:1c07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:1c80::,2a0d:1c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:1d00::,2a0d:1d07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:1d80::,2a0d:1d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:1e00::,2a0d:1e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:1e80::,2a0d:1e87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0d:1f00::,2a0d:1f07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:1f80::,2a0d:1f80:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2000::,2a0d:2007:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:2080::,2a0d:2087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:2100::,2a0d:2107:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:2180::,2a0d:2187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:2200::,2a0d:2207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:2280::,2a0d:2287:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:2300::,2a0d:2307:ffff:ffff:ffff:ffff:ffff:ffff,HU
-2a0d:2400::,2a0d:2407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+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: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
2a0d:2600::,2a0d:2607:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0d:2680::,2a0d:2687:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2700::,2a0d:2707:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0d:2780::,2a0d:2787:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2800::,2a0d:2807:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a0d:2880::,2a0d:2887:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:2900::,2a0d:2907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:2980::,2a0d:2987:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a0d:2a00::,2a0d:2a07:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0d:2a80::,2a0d:2a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:2b00::,2a0d:2b07:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0d:2b80::,2a0d:2b87:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:2c00::,2a0d:2c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:2c80::,2a0d:2c87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:2d00::,2a0d:2d00:ffff:ffff:ffff:ffff:ffff:ffff,BY
+2a0d:2d80::,2a0d:2d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2e00::,2a0d:2e07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:2e80::,2a0d:2e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2f00::,2a0d:2f07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:2f80::,2a0d:2f87:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:3000::,2a0d:3007:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:3080::,2a0d:3087:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:3100::,2a0d:3107:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:3180::,2a0d:3187:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:3200::,2a0d:3207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:3280::,2a0d:3287:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:3300::,2a0d:3307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:3380::,2a0d:3387:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0d:3400::,2a0d:3400:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:3480::,2a0d:3487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:3500::,2a0d:3507:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:3580::,2a0d:3587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:3600::,2a0d:3607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:3680::,2a0d:3680:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:3700::,2a0d:3707:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0d:3780::,2a0d:3787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:3800::,2a0d:3807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:3880::,2a0d:3887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:3900::,2a0d:3907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:3980::,2a0d:3987:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0d:3a00::,2a0d:3a07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:3a80::,2a0d:3a87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:3b00::,2a0d:3b07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:3b80::,2a0d:3b87:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0d:3c00::,2a0d:3c07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:3c80::,2a0d:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:3d00::,2a0d:3d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:3d80::,2a0d:3d87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:3e00::,2a0d:3e07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:3e80::,2a0d:3e87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:3f00::,2a0d:3f00:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:3f80::,2a0d:3f87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:4000::,2a0d:4007:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:4080::,2a0d:4087:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:4100::,2a0d:4100:ffff:ffff:ffff:ffff:ffff:ffff,SY
+2a0d:4180::,2a0d:4187:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:4200::,2a0d:4207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:4280::,2a0d:4287:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:4300::,2a0d:4307:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:4380::,2a0d:4387:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:4400::,2a0d:4407:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:4480::,2a0d:4487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:4500::,2a0d:4507:ffff:ffff:ffff:ffff:ffff:ffff,MK
+2a0d:4580::,2a0d:4587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:4600::,2a0d:4607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:4680::,2a0d:4687:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:4700::,2a0d:4707:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0d:4780::,2a0d:4787:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:4800::,2a0d:4807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:4880::,2a0d:4887:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:4900::,2a0d:4900:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:4980::,2a0d:4980:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:4a00::,2a0d:4a00:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0d:4a80::,2a0d:4a87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:4b00::,2a0d:4b07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0d:4b80::,2a0d:4b87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:4c00::,2a0d:4c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:4c80::,2a0d:4c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:4d00::,2a0d:4d07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:4d80::,2a0d:4d87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:4e00::,2a0d:4e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:4e80::,2a0d:4e87:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:4f00::,2a0d:4f07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:4f80::,2a0d:4f87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:5000::,2a0d:5007:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a0d:5080::,2a0d:5087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:5100::,2a0d:5107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:5180::,2a0d:5187:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:5200::,2a0d:5207:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:5280::,2a0d:5287:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:5300::,2a0d:5307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:5380::,2a0d:5387:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:5400::,2a0d:5407:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:5480::,2a0d:5487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:5500::,2a0d:5507:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:5580::,2a0d:5587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:5600::,2a0d:5600:c:ffff:ffff:ffff:ffff:ffff,US
2a0d:5600:d::,2a0d:5600:d:ffff:ffff:ffff:ffff:ffff,SG
2a0d:5600:e::,2a0d:5600:f:ffff:ffff:ffff:ffff:ffff,JP
-2a0d:5600:10::,2a0d:5607:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:10::,2a0d:5600:10:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:11::,2a0d:5600:12:ffff:ffff:ffff:ffff:ffff,SK
+2a0d:5600:13::,2a0d:5600:13:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:5600:14::,2a0d:5600:15:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:16::,2a0d:5600:16:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:5600:17::,2a0d:5607:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5680::,2a0d:5687:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:5700::,2a0d:5707:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:5780::,2a0d:5787:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:5800::,2a0d:5807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:5880::,2a0d:5887:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:5900::,2a0d:5907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:5980::,2a0d:5987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:5a00::,2a0d:5a07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:5a80::,2a0d:5a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:5b00::,2a0d:5b07:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a0d:5c00::,2a0d:5c07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5b80::,2a0d:5b87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:5c00::,2a0d:5c03:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:5c04::,2a0d:5c04:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5c05::,2a0d:5c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:5c80::,2a0d:5c87:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:5d00::,2a0d:5d07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:5d80::,2a0d:5d87:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:5e00::,2a0d:5e07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:5e80::,2a0d:5e87:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:5f00::,2a0d:5f03:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:5f80::,2a0d:5f87:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:6000::,2a0d:6007:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:6080::,2a0d:6087:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:6100::,2a0d:6107:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:6180::,2a0d:6187:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:6200::,2a0d:6207:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0d:6280::,2a0d:6287:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:6300::,2a0d:6307:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0d:6380::,2a0d:6387:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:6400::,2a0d:6400:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:6480::,2a0d:6480:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:6500::,2a0d:6507:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:6580::,2a0d:6587:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:6600::,2a0d:6607:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0d:6680::,2a0d:6687:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:6700::,2a0d:6707:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:6780::,2a0d:6787:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:6800::,2a0d:6807:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:6880::,2a0d:6887:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a0d:6900::,2a0d:6907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:6980::,2a0d:6987:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:6a00::,2a0d:6a07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:6a80::,2a0d:6a87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:6b00::,2a0d:6b07:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0d:6b80::,2a0d:6b87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:6c00::,2a0d:6c07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:6c80::,2a0d:6c87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:6d00::,2a0d:6d07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:6d80::,2a0d:6d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:6e00::,2a0d:6e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:6e80::,2a0d:6e87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:6f00::,2a0d:6f07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:6f80::,2a0d:6f87:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a0d:7000::,2a0d:7000:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0d:7080::,2a0d:7087:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:7100::,2a0d:7107:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:7180::,2a0d:7187:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:7200::,2a0d:7207:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0d:7280::,2a0d:7287:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:7300::,2a0d:7307:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:7380::,2a0d:7387:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:7400::,2a0d:7407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:7480::,2a0d:7487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:7500::,2a0d:7500:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:7580::,2a0d:7587:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:7600::,2a0d:7607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:7680::,2a0d:7687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:7700::,2a0d:7707:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:7780::,2a0d:7787:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:7800::,2a0d:7807:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0d:7900::,2a0d:7907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:7880::,2a0d:7887:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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
2a0d:7b00::,2a0d:7b07:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a0d:7b80::,2a0d:7b87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:7c00::,2a0d:7c07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0d:7c80::,2a0d:7c80:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:7d00::,2a0d:7d07:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0d:7d80::,2a0d:7d87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:7e00::,2a0d:7e00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:7e80::,2a0d:7e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:7f00::,2a0d:7f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:7f80::,2a0d:7f87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:8000::,2a0d:8007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:8080::,2a0d:8087:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:8100::,2a0d:8100:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:8180::,2a0d:8187:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:8200::,2a0d:8207:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:8280::,2a0d:8287:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:8300::,2a0d:8307:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:8380::,2a0d:8387:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:8400::,2a0d:8400:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:8480::,2a0d:8487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:8500::,2a0d:8507:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:8580::,2a0d:8580:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:8600::,2a0d:8607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:8680::,2a0d:8687:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:8700::,2a0d:8707:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a0d:8780::,2a0d:8787:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:8800::,2a0d:8807:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:8880::,2a0d:8887:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a0d:8900::,2a0d:8907:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:8980::,2a0d:8987:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:8a00::,2a0d:8a00:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0d:8a80::,2a0d:8a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:8b00::,2a0d:8b07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:8b80::,2a0d:8b87:ffff:ffff:ffff:ffff:ffff:ffff,SY
2a0d:8c00::,2a0d:8c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:8c80::,2a0d:8c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:8d00::,2a0d:8d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:8d80::,2a0d:8d80:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:8e00::,2a0d:8e07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:8e80::,2a0d:8e87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:8f00::,2a0d:8f07:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0d:8f80::,2a0d:8f87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:9000::,2a0d:9007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:9080::,2a0d:9087:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:9100::,2a0d:9100:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:9180::,2a0d:9187:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:9200::,2a0d:9207:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:9280::,2a0d:9280:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:9300::,2a0d:9307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:9380::,2a0d:9387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:9400::,2a0d:9407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:9480::,2a0d:9487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:9500::,2a0d:9507:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0d:9580::,2a0d:9587:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:9600::,2a0d:9600:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0d:9680::,2a0d:9687:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:9700::,2a0d:9700:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:9780::,2a0d:9787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:9800::,2a0d:9807:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a0d:9880::,2a0d:9887:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:9900::,2a0d:9907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:9980::,2a0d:9987:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:9a00::,2a0d:9a07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0d:9a80::,2a0d:9a87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:9b00::,2a0d:9b07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:9b80::,2a0d:9b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:9c00::,2a0d:9c00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:9c80::,2a0d:9c87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:9d00::,2a0d:9d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:9d80::,2a0d:9d80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:9e00::,2a0d:9e07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:9e80::,2a0d:9e87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:9f00::,2a0d:9f07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:9f80::,2a0d:9f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:a000::,2a0d:a007:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0d:a080::,2a0d:a080:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:a100::,2a0d:a107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:a180::,2a0d:a187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:a200::,2a0d:a207:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:a280::,2a0d:a287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:a300::,2a0d:a307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:a380::,2a0d:a387:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0d:a400::,2a0d:a407:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0d:a480::,2a0d:a487:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:a500::,2a0d:a507:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a0d:a580::,2a0d:a587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:a600::,2a0d:a603:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:a680::,2a0d:a680:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0d:a700::,2a0d:a707:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0d:a780::,2a0d:a787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:a800::,2a0d:a807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:a880::,2a0d:a887:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:a900::,2a0d:a907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:a980::,2a0d:a987:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:aa00::,2a0d:aa07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:aa80::,2a0d:aa87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:ab00::,2a0d:ab07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:ab80::,2a0d:ab80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:ac00::,2a0d:ac07:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:ac80::,2a0d:ac87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:ad00::,2a0d:ad07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:ad80::,2a0d:ad87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0d:ae00::,2a0d:ae07:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0d:ae80::,2a0d:ae80:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:af00::,2a0d:af07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:af80::,2a0d:af87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:b000::,2a0d:b007:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:b080::,2a0d:b080:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0d:b100::,2a0d:b107:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:b180::,2a0d:b187:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:b200::,2a0d:b207:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a0d:b280::,2a0d:b287:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:b300::,2a0d:b307:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0d:b380::,2a0d:b387:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:b400::,2a0d:b407:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:b480::,2a0d:b480:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:b500::,2a0d:b507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:b580::,2a0d:b580:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:b600::,2a0d:b607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:b680::,2a0d:b687:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:b700::,2a0d:b707:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0d:b780::,2a0d:b787:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:b800::,2a0d:b807:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a0d:b880::,2a0d:b887:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:b900::,2a0d:b907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:b980::,2a0d:b987:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:ba00::,2a0d:ba07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:ba80::,2a0d:ba87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:bb00::,2a0d:bb07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:bb80::,2a0d:bb87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:bc00::,2a0d:bc07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:bc80::,2a0d:bc87:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a0d:bd00::,2a0d:bd07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:bd80::,2a0d:bd87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:be00::,2a0d:be07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:be80::,2a0d:be87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:bf00::,2a0d:bf07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:bf80::,2a0d:bf87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:c000::,2a0d:c007:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0d:c080::,2a0d:c087:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:c100::,2a0d:c107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:c180::,2a0d:c187:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0d:c200::,2a0d:c207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:c280::,2a0d:c287:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:c300::,2a0d:c307:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0d:c380::,2a0d:c387:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0d:c400::,2a0d:c407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:c480::,2a0d:c487:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:c500::,2a0d:c507:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:c580::,2a0d:c587:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:c600::,2a0d:c607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:c680::,2a0d:c687:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0d:c700::,2a0d:c707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:c780::,2a0d:c787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:c800::,2a0d:c807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:c880::,2a0d:c887:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:c900::,2a0d:c907:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:c980::,2a0d:c987:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:ca00::,2a0d:ca07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:ca80::,2a0d:ca87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:cb00::,2a0d:cb07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:cb80::,2a0d:cb87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:cc00::,2a0d:cc07:ffff:ffff:ffff:ffff:ffff:ffff,AL
+2a0d:cc80::,2a0d:cc87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:cd00::,2a0d:cd07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:cd80::,2a0d:cd87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:ce00::,2a0d:ce07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:ce80::,2a0d:ce87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:cf00::,2a0d:cf07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:cf80::,2a0d:cf87:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:d000::,2a0d:d007:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:d080::,2a0d:d087:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:d100::,2a0d:d107:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0d:d180::,2a0d:d187:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:d200::,2a0d:d207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:d280::,2a0d:d280:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:d300::,2a0d:d300:ffff:ffff:ffff:ffff:ffff:ffff,LI
+2a0d:d380::,2a0d:d387:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0d:d400::,2a0d:d407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:d480::,2a0d:d487:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:d500::,2a0d:d507:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:d580::,2a0d:d580:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:d600::,2a0d:d607:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0d:d680::,2a0d:d687:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a0d:d700::,2a0d:d707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:d780::,2a0d:d787:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0d:d800::,2a0d:d807:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0d:d880::,2a0d:d887:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:d900::,2a0d:d907:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:d980::,2a0d:d987:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:da00::,2a0d:da07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:da80::,2a0d:da80:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:db00::,2a0d:db07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:db80::,2a0d:db87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:dc00::,2a0d:dc07:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a0d:dc80::,2a0d:dc87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:dd00::,2a0d:dd07:ffff:ffff:ffff:ffff:ffff:ffff,KG
+2a0d:dd80::,2a0d:dd87:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0d:de00::,2a0d:de07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:de80::,2a0d:de87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:df00::,2a0d:df07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:df80::,2a0d:df87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:e000::,2a0d:e007:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:e080::,2a0d:e087:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:e100::,2a0d:e107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:e180::,2a0d:e180:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:e200::,2a0d:e207:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:e280::,2a0d:e287:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:e300::,2a0d:e307:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a0d:e380::,2a0d:e387:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:e400::,2a0d:e400:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:e480::,2a0d:e487:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:e500::,2a0d:e507:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:e580::,2a0d:e587:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:e600::,2a0d:e607:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:e680::,2a0d:e687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:e700::,2a0d:e707:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0d:e780::,2a0d:e787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:e800::,2a0d:e807:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:e880::,2a0d:e887:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a0d:e900::,2a0d:e907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:e980::,2a0d:e980:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0d:ea00::,2a0d:ea07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:ea80::,2a0d:ea87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:eb00::,2a0d:eb07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:eb80::,2a0d:eb87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:ec00::,2a0d:ec07:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:ec80::,2a0d:ec87:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0d:ed00::,2a0d:ed07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:ed80::,2a0d:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:ee00::,2a0d:ee00:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:ee80::,2a0d:ee80:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:ef00::,2a0d:ef07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:ef80::,2a0d:ef80:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:f000::,2a0d:f007:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:f080::,2a0d:f087:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:f100::,2a0d:f107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:f180::,2a0d:f187:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:f200::,2a0d:f207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:f280::,2a0d:f287:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:f300::,2a0d:f307:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0d:f400::,2a0d:f407:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:f380::,2a0d:f387:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:f480::,2a0d:f487:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0d:f500::,2a0d:f500:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:f580::,2a0d:f587:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0d:f680::,2a0d:f687:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:f700::,2a0d:f707:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0d:f780::,2a0d:f787:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0d:f800::,2a0d:f807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:f880::,2a0d:f887:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:f900::,2a0d:f907:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0d:f980::,2a0d:f987:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:fa00::,2a0d:fa07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:fa80::,2a0d:fa87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:fb00::,2a0d:fb07:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0d:fb80::,2a0d:fb87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:fc00::,2a0d:fc07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:fc80::,2a0d:fc87:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0d:fd00::,2a0d:fd07:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a0d:fd80::,2a0d:fd87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0d:fe00::,2a0d:fe07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:fe80::,2a0d:fe80:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:ff00::,2a0d:ff07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:ff80::,2a0d:ff80:ffff:ffff:ffff:ffff:ffff:ffff,NL
2c0e::,2c0e:fff:ffff:ffff:ffff:ffff:ffff:ffff,EG
2c0e:2000::,2c0e:2fff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0e:4000::,2c0e:40ff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
@@ -41152,6 +41626,27 @@
2c0f:ee48::,2c0f:ee48:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:ee50::,2c0f:ee50:ffff:ffff:ffff:ffff:ffff:ffff,SN
2c0f:ee58::,2c0f:ee58:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee60::,2c0f:ee60:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee68::,2c0f:ee68:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:ee70::,2c0f:ee70:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee78::,2c0f:ee78:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee80::,2c0f:ee80:ffff:ffff:ffff:ffff:ffff:ffff,SN
+2c0f:ee88::,2c0f:ee88:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee90::,2c0f:ee90:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ee98::,2c0f:ee98:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eea0::,2c0f:eea0:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:eea8::,2c0f:eea8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eeb0::,2c0f:eeb0:ffff:ffff:ffff:ffff:ffff:ffff,SL
+2c0f:eeb8::,2c0f:eeb8:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:eec0::,2c0f:eec0:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:eec8::,2c0f:eec8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eed0::,2c0f:eed0:ffff:ffff:ffff:ffff:ffff:ffff,BF
+2c0f:eed8::,2c0f:eed8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eee0::,2c0f:eee0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eee8::,2c0f:eee8:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:eef0::,2c0f:eef0:ffff:ffff:ffff:ffff:ffff:ffff,MA
+2c0f:eef8::,2c0f:eef8:ffff:ffff:ffff:ffff:ffff:ffff,SO
+2c0f:ef00::,2c0f:ef00:ffff:ffff:ffff:ffff:ffff:ffff,TZ
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
@@ -41328,7 +41823,6 @@
2c0f:f578::,2c0f:f578:ffff:ffff:ffff:ffff:ffff:ffff,TG
2c0f:f580::,2c0f:f580:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:f588::,2c0f:f588:ffff:ffff:ffff:ffff:ffff:ffff,ZA
-2c0f:f590::,2c0f:f590:ffff:ffff:ffff:ffff:ffff:ffff,CI
2c0f:f598::,2c0f:f598:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f5a0::,2c0f:f5a0:ffff:ffff:ffff:ffff:ffff:ffff,NG
2c0f:f5a8::,2c0f:f5a8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
@@ -41348,10 +41842,8 @@
2c0f:f618::,2c0f:f618:ffff:ffff:ffff:ffff:ffff:ffff,GH
2c0f:f620::,2c0f:f620:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:f628::,2c0f:f628:ffff:ffff:ffff:ffff:ffff:ffff,RW
-2c0f:f630::,2c0f:f630:ffff:ffff:ffff:ffff:ffff:ffff,BJ
2c0f:f638::,2c0f:f638:ffff:ffff:ffff:ffff:ffff:ffff,NG
2c0f:f640::,2c0f:f640:ffff:ffff:ffff:ffff:ffff:ffff,GA
-2c0f:f648::,2c0f:f648:ffff:ffff:ffff:ffff:ffff:ffff,TD
2c0f:f650::,2c0f:f650:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f658::,2c0f:f658:ffff:ffff:ffff:ffff:ffff:ffff,UG
2c0f:f660::,2c0f:f660:ffff:ffff:ffff:ffff:ffff:ffff,CM
@@ -41384,9 +41876,7 @@
2c0f:f738:1::,2c0f:f738:1:ffff:ffff:ffff:ffff:ffff,RU
2c0f:f738:2::,2c0f:f738:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f740::,2c0f:f740:ffff:ffff:ffff:ffff:ffff:ffff,AO
-2c0f:f748::,2c0f:f748:3e7:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:f748:3e8::,2c0f:f748:3e8:7fff:ffff:ffff:ffff:ffff,ZA
-2c0f:f748:3e8:8000::,2c0f:f748:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:f748::,2c0f:f748:ffff:ffff:ffff:ffff:ffff:ffff,MU
2c0f:f750::,2c0f:f750:ffff:ffff:ffff:ffff:ffff:ffff,UG
2c0f:f758::,2c0f:f758:ffff:ffff:ffff:ffff:ffff:ffff,ZW
2c0f:f760::,2c0f:f760:ffff:ffff:ffff:ffff:ffff:ffff,ZA
@@ -41416,7 +41906,6 @@
2c0f:f830::,2c0f:f830:ffff:ffff:ffff:ffff:ffff:ffff,MU
2c0f:f838::,2c0f:f838:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f840::,2c0f:f840:ffff:ffff:ffff:ffff:ffff:ffff,GQ
-2c0f:f848::,2c0f:f848:ffff:ffff:ffff:ffff:ffff:ffff,GH
2c0f:f850::,2c0f:f850:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f858::,2c0f:f858:ffff:ffff:ffff:ffff:ffff:ffff,DZ
2c0f:f860::,2c0f:f860:ffff:ffff:ffff:ffff:ffff:ffff,RW
@@ -41433,11 +41922,9 @@
2c0f:f8d8::,2c0f:f8d8:ffff:ffff:ffff:ffff:ffff:ffff,BW
2c0f:f8e0::,2c0f:f8e0:ffff:ffff:ffff:ffff:ffff:ffff,MU
2c0f:f8e8::,2c0f:f8e8:ffff:ffff:ffff:ffff:ffff:ffff,GH
-2c0f:f8f0::,2c0f:f8f0:f0ab:ffff:ffff:ffff:ffff:ffff,ZW
-2c0f:f8f0:f0ac::,2c0f:f8f0:f0ac:7fff:ffff:ffff:ffff:ffff,GB
-2c0f:f8f0:f0ac:8000::,2c0f:f8f0:f907:ffff:ffff:ffff:ffff:ffff,ZW
-2c0f:f8f0:f908::,2c0f:f8f0:f908:7fff:ffff:ffff:ffff:ffff,DE
-2c0f:f8f0:f908:8000::,2c0f:f8f0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:f8f0::,2c0f:f8f0:f8ff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:f8f0:f900::,2c0f:f8f0:f97f:ffff:ffff:ffff:ffff:ffff,DE
+2c0f:f8f0:f980::,2c0f:f8f0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
2c0f:f8f8::,2c0f:f8f8:ffff:ffff:ffff:ffff:ffff:ffff,SO
2c0f:f900::,2c0f:f900:ffff:ffff:ffff:ffff:ffff:ffff,ML
2c0f:f908::,2c0f:f908:ffff:ffff:ffff:ffff:ffff:ffff,BI
@@ -41449,9 +41936,7 @@
2c0f:f940::,2c0f:f940:ffff:ffff:ffff:ffff:ffff:ffff,DZ
2c0f:f948::,2c0f:f948:ffff:ffff:ffff:ffff:ffff:ffff,GA
2c0f:f950::,2c0f:f950:ffff:ffff:ffff:ffff:ffff:ffff,SS
-2c0f:f958::,2c0f:f958:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f960::,2c0f:f960:ffff:ffff:ffff:ffff:ffff:ffff,TZ
-2c0f:f968::,2c0f:f968:ffff:ffff:ffff:ffff:ffff:ffff,MZ
2c0f:f970::,2c0f:f970:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f978::,2c0f:f978:ffff:ffff:ffff:ffff:ffff:ffff,CD
2c0f:f980::,2c0f:f980:ffff:ffff:ffff:ffff:ffff:ffff,NA
@@ -41474,9 +41959,8 @@
2c0f:f9f8::,2c0f:f9f8:ffff:ffff:ffff:ffff:ffff:ffff,BJ
2c0f:fa00::,2c0f:fa00:ffff:ffff:ffff:ffff:ffff:ffff,GH
2c0f:fa08::,2c0f:fa08:ffff:ffff:ffff:ffff:ffff:ffff,CD
-2c0f:fa10::,2c0f:fa10:fffc:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:fa10:fffd::,2c0f:fa10:fffd:7fff:ffff:ffff:ffff:ffff,ZM
-2c0f:fa10:fffd:8000::,2c0f:fa10:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fa10::,2c0f:fa10:ff7f:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fa10:ff80::,2c0f:fa10:ffff:ffff:ffff:ffff:ffff:ffff,ZM
2c0f:fa18::,2c0f:fa18:ffff:ffff:ffff:ffff:ffff:ffff,MA
2c0f:fa20::,2c0f:fa20:ffff:ffff:ffff:ffff:ffff:ffff,SS
2c0f:fa28::,2c0f:fa28:ffff:ffff:ffff:ffff:ffff:ffff,MG
@@ -41589,9 +42073,7 @@
2c0f:fe38::,2c0f:fe38:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:fe40::,2c0f:fe40:8001:f:ffff:ffff:ffff:ffff,MU
2c0f:fe40:8001:10::,2c0f:fe40:8001:10:ffff:ffff:ffff:ffff,KE
-2c0f:fe40:8001:11::,2c0f:fe40:80fe:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:fe40:80ff::,2c0f:fe40:80ff:7fff:ffff:ffff:ffff:ffff,KE
-2c0f:fe40:80ff:8000::,2c0f:fe40:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fe40:8001:11::,2c0f:fe40:ffff:ffff:ffff:ffff:ffff:ffff,MU
2c0f:fe50::,2c0f:fe50:ffff:ffff:ffff:ffff:ffff:ffff,DZ
2c0f:fe58::,2c0f:fe58:ffff:ffff:ffff:ffff:ffff:ffff,LS
2c0f:fe60::,2c0f:fe60:ffff:ffff:ffff:ffff:ffff:ffff,RW
@@ -41603,15 +42085,10 @@
2c0f:fe98::,2c0f:fe98:ffff:ffff:ffff:ffff:ffff:ffff,TZ
2c0f:fea0::,2c0f:fea0:ffff:ffff:ffff:ffff:ffff:ffff,NG
2c0f:fea8::,2c0f:fea8:ffff:ffff:ffff:ffff:ffff:ffff,NG
-2c0f:feb0::,2c0f:feb0:16:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:feb0:17::,2c0f:feb0:17:7fff:ffff:ffff:ffff:ffff,KE
-2c0f:feb0:17:8000::,2c0f:feb0:1e:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:feb0:1f::,2c0f:feb0:1f:7fff:ffff:ffff:ffff:ffff,ZA
-2c0f:feb0:1f:8000::,2c0f:feb0:1f:ffff:ffff:ffff:ffff:ffff,MU
-2c0f:feb0:20::,2c0f:feb0:20:7fff:ffff:ffff:ffff:ffff,ZA
-2c0f:feb0:20:8000::,2c0f:feb0:2f:7fff:ffff:ffff:ffff:ffff,MU
-2c0f:feb0:2f:8000::,2c0f:feb0:2f:ffff:ffff:ffff:ffff:ffff,ZA
-2c0f:feb0:30::,2c0f:feb1:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:feb0::,2c0f:feb0:2c:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:feb0:2d::,2c0f:feb0:32:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:feb0:33::,2c0f:feb0:7f:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:feb0:80::,2c0f:feb1:ffff:ffff:ffff:ffff:ffff:ffff,MU
2c0f:feb8::,2c0f:feb8:ffff:ffff:ffff:ffff:ffff:ffff,ZM
2c0f:fec0::,2c0f:fec0:ffff:ffff:ffff:ffff:ffff:ffff,UG
2c0f:fec8::,2c0f:fec8:ffff:ffff:ffff:ffff:ffff:ffff,SD
diff --git a/src/config/torrc.sample.in b/src/config/torrc.sample.in
index 37777443ac..8f3597f3f6 100644
--- a/src/config/torrc.sample.in
+++ b/src/config/torrc.sample.in
@@ -209,3 +209,12 @@
## address manually to your friends, uncomment this line:
#PublishServerDescriptor 0
+## Configuration options can be imported from files or folders using the %include
+## option with the value being a path. If the path is a file, the options from the
+## file will be parsed as if they were written where the %include option is. If
+## the path is a folder, all files on that folder will be parsed following lexical
+## order. Files starting with a dot are ignored. Files on subfolders are ignored.
+## The %include option can be used recursively.
+#%include /etc/torrc.d/
+#%include /etc/torrc.custom
+
diff --git a/src/ext/byteorder.h b/src/ext/byteorder.h
new file mode 100644
index 0000000000..c8ba52184b
--- /dev/null
+++ b/src/ext/byteorder.h
@@ -0,0 +1,67 @@
+/* <MIT License>
+ Copyright (c) 2013-2014 Marek Majkowski <marek@popcount.org>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ </MIT License>
+
+ Original location:
+ https://github.com/majek/csiphash/
+
+ Solution inspired by code from:
+ Samuel Neves (supercop/crypto_auth/siphash24/little)
+ djb (supercop/crypto_auth/siphash24/little2)
+ Jean-Philippe Aumasson (https://131002.net/siphash/siphash24.c)
+*/
+
+/* This code is extracted from csiphash.h */
+
+#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
+ __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+# define _le64toh(x) ((uint64_t)(x))
+#elif defined(_WIN32)
+/* Windows is always little endian, unless you're on xbox360
+ http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx */
+# define _le64toh(x) ((uint64_t)(x))
+#elif defined(__APPLE__)
+# include <libkern/OSByteOrder.h>
+# define _le64toh(x) OSSwapLittleToHostInt64(x)
+#elif defined(sun) || defined(__sun)
+# include <sys/byteorder.h>
+# define _le64toh(x) LE_64(x)
+
+#else
+
+/* See: http://sourceforge.net/p/predef/wiki/Endianness/ */
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(OpenBSD)
+# include <sys/endian.h>
+# else
+# include <endian.h>
+# endif
+# if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
+ __BYTE_ORDER == __LITTLE_ENDIAN
+# define _le64toh(x) ((uint64_t)(x))
+# else
+# if defined(OpenBSD)
+# define _le64toh(x) letoh64(x)
+# else
+# define _le64toh(x) le64toh(x)
+# endif
+# endif
+
+#endif
diff --git a/src/ext/csiphash.c b/src/ext/csiphash.c
index a8f3d5b8b8..508e4f6ceb 100644
--- a/src/ext/csiphash.c
+++ b/src/ext/csiphash.c
@@ -35,41 +35,7 @@
#include "util.h"
/* for memcpy */
#include <string.h>
-
-#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
- __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-# define _le64toh(x) ((uint64_t)(x))
-#elif defined(_WIN32)
-/* Windows is always little endian, unless you're on xbox360
- http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx */
-# define _le64toh(x) ((uint64_t)(x))
-#elif defined(__APPLE__)
-# include <libkern/OSByteOrder.h>
-# define _le64toh(x) OSSwapLittleToHostInt64(x)
-#elif defined(sun) || defined(__sun)
-# include <sys/byteorder.h>
-# define _le64toh(x) LE_64(x)
-
-#else
-
-/* See: http://sourceforge.net/p/predef/wiki/Endianness/ */
-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(OpenBSD)
-# include <sys/endian.h>
-# else
-# include <endian.h>
-# endif
-# if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
- __BYTE_ORDER == __LITTLE_ENDIAN
-# define _le64toh(x) ((uint64_t)(x))
-# else
-# if defined(OpenBSD)
-# define _le64toh(x) letoh64(x)
-# else
-# define _le64toh(x) le64toh(x)
-# endif
-# endif
-
-#endif
+#include "byteorder.h"
#define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
diff --git a/src/ext/ed25519/donna/ed25519-hash-custom.h b/src/ext/ed25519/donna/ed25519-hash-custom.h
index 7dc249129d..609451abd5 100644
--- a/src/ext/ed25519/donna/ed25519-hash-custom.h
+++ b/src/ext/ed25519/donna/ed25519-hash-custom.h
@@ -9,3 +9,34 @@
void ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);
*/
+#include "crypto.h"
+
+typedef struct ed25519_hash_context {
+ crypto_digest_t *ctx;
+} ed25519_hash_context;
+
+
+static void
+ed25519_hash_init(ed25519_hash_context *ctx)
+{
+ ctx->ctx = crypto_digest512_new(DIGEST_SHA512);
+}
+static void
+ed25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen)
+{
+ crypto_digest_add_bytes(ctx->ctx, (const char *)in, inlen);
+}
+static void
+ed25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash)
+{
+ crypto_digest_get_digest(ctx->ctx, (char *)hash, DIGEST512_LEN);
+ crypto_digest_free(ctx->ctx);
+ ctx->ctx = NULL;
+}
+static void
+ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen)
+{
+ crypto_digest512((char *)hash, (const char *)in, inlen,
+ DIGEST_SHA512);
+}
+
diff --git a/src/ext/ed25519/ref10/crypto_hash_sha512.h b/src/ext/ed25519/ref10/crypto_hash_sha512.h
index 0278571522..5dad935c79 100644
--- a/src/ext/ed25519/ref10/crypto_hash_sha512.h
+++ b/src/ext/ed25519/ref10/crypto_hash_sha512.h
@@ -1,30 +1,32 @@
/* Added for Tor. */
-#include <openssl/sha.h>
+#include "crypto.h"
/* Set 'out' to the 512-bit SHA512 hash of the 'len'-byte string in 'inp' */
#define crypto_hash_sha512(out, inp, len) \
- SHA512((inp), (len), (out))
+ crypto_digest512((char *)(out), (const char *)(inp), (len), DIGEST_SHA512)
/* Set 'out' to the 512-bit SHA512 hash of the 'len1'-byte string in 'inp1',
* concatenated with the 'len2'-byte string in 'inp2'. */
#define crypto_hash_sha512_2(out, inp1, len1, inp2, len2) \
do { \
- SHA512_CTX sha_ctx_; \
- SHA512_Init(&sha_ctx_); \
- SHA512_Update(&sha_ctx_, (inp1), (len1)); \
- SHA512_Update(&sha_ctx_, (inp2), (len2)); \
- SHA512_Final((out), &sha_ctx_); \
- } while(0)
+ crypto_digest_t *sha_ctx_; \
+ sha_ctx_ = crypto_digest512_new(DIGEST_SHA512); \
+ crypto_digest_add_bytes(sha_ctx_, (const char *)(inp1), (len1)); \
+ crypto_digest_add_bytes(sha_ctx_, (const char *)(inp2), (len2)); \
+ crypto_digest_get_digest(sha_ctx_, (char *)out, DIGEST512_LEN); \
+ crypto_digest_free(sha_ctx_); \
+ } while (0)
/* Set 'out' to the 512-bit SHA512 hash of the 'len1'-byte string in 'inp1',
* concatenated with the 'len2'-byte string in 'inp2', concatenated with
* the 'len3'-byte string in 'len3'. */
#define crypto_hash_sha512_3(out, inp1, len1, inp2, len2, inp3, len3) \
do { \
- SHA512_CTX sha_ctx_; \
- SHA512_Init(&sha_ctx_); \
- SHA512_Update(&sha_ctx_, (inp1), (len1)); \
- SHA512_Update(&sha_ctx_, (inp2), (len2)); \
- SHA512_Update(&sha_ctx_, (inp3), (len3)); \
- SHA512_Final((out), &sha_ctx_); \
+ crypto_digest_t *sha_ctx_; \
+ sha_ctx_ = crypto_digest512_new(DIGEST_SHA512); \
+ crypto_digest_add_bytes(sha_ctx_, (const char *)(inp1), (len1)); \
+ crypto_digest_add_bytes(sha_ctx_, (const char *)(inp2), (len2)); \
+ crypto_digest_add_bytes(sha_ctx_, (const char *)(inp3), (len3)); \
+ crypto_digest_get_digest(sha_ctx_, (char *)out, DIGEST512_LEN); \
+ crypto_digest_free(sha_ctx_); \
} while(0)
diff --git a/src/ext/ht.h b/src/ext/ht.h
index a441d0b685..caa420e9b5 100644
--- a/src/ext/ht.h
+++ b/src/ext/ht.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2002, Christopher Clark.
* Copyright (c) 2005-2006, Nick Mathewson.
- * Copyright (c) 2007-2015, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See license at end. */
/* Based on ideas by Christopher Clark and interfaces from Niels Provos. */
diff --git a/src/ext/include.am b/src/ext/include.am
index f00f3e031e..7ec2e43312 100644
--- a/src/ext/include.am
+++ b/src/ext/include.am
@@ -5,6 +5,7 @@ EXTRA_DIST += src/ext/README
EXTHEADERS = \
src/ext/ht.h \
+ src/ext/byteorder.h \
src/ext/tinytest.h \
src/ext/tor_readpassphrase.h \
src/ext/strlcat.c \
@@ -100,6 +101,7 @@ noinst_LIBRARIES += $(LIBED25519_REF10)
src_ext_ed25519_donna_libed25519_donna_a_CFLAGS=\
@CFLAGS_CONSTTIME@ \
-DED25519_CUSTOMRANDOM \
+ -DED25519_CUSTOMHASH \
-DED25519_SUFFIX=_donna
src_ext_ed25519_donna_libed25519_donna_a_SOURCES= \
diff --git a/src/ext/keccak-tiny/keccak-tiny-unrolled.c b/src/ext/keccak-tiny/keccak-tiny-unrolled.c
index d1342c3601..d8d7fe335a 100644
--- a/src/ext/keccak-tiny/keccak-tiny-unrolled.c
+++ b/src/ext/keccak-tiny/keccak-tiny-unrolled.c
@@ -10,28 +10,21 @@
#include <string.h>
#include "crypto.h"
+#include "byteorder.h"
/******** Endianness conversion helpers ********/
static inline uint64_t
loadu64le(const unsigned char *x) {
- uint64_t r = 0;
- size_t i;
-
- for (i = 0; i < 8; ++i) {
- r |= (uint64_t)x[i] << 8 * i;
- }
- return r;
+ uint64_t r;
+ memcpy(&r, x, sizeof(r));
+ return _le64toh(r);
}
static inline void
storeu64le(uint8_t *x, uint64_t u) {
- size_t i;
-
- for(i=0; i<8; ++i) {
- x[i] = u;
- u >>= 8;
- }
+ uint64_t val = _le64toh(u);
+ memcpy(x, &val, sizeof(u));
}
/******** The Keccak-f[1600] permutation ********/
diff --git a/src/ext/rust b/src/ext/rust
new file mode 160000
+Subproject 240296800824e40b10cb8c16da0e71156335394
diff --git a/src/ext/trunnel/trunnel-impl.h b/src/ext/trunnel/trunnel-impl.h
index bc805851b1..85c847b3fd 100644
--- a/src/ext/trunnel/trunnel-impl.h
+++ b/src/ext/trunnel/trunnel-impl.h
@@ -5,7 +5,7 @@
/* trunnel-impl.h -- Implementation helpers for trunnel, included by
* generated trunnel files
*
- * Copyright 2014-2015, The Tor Project, Inc.
+ * Copyright 2014-2017, The Tor Project, Inc.
* See license at the end of this file for copying information.
*/
diff --git a/src/ext/trunnel/trunnel.c b/src/ext/trunnel/trunnel.c
index 8f72351277..6a42417241 100644
--- a/src/ext/trunnel/trunnel.c
+++ b/src/ext/trunnel/trunnel.c
@@ -4,7 +4,7 @@
*/
/* trunnel.c -- Helper functions to implement trunnel.
*
- * Copyright 2014-2015, The Tor Project, Inc.
+ * Copyright 2014-2017, The Tor Project, Inc.
* See license at the end of this file for copying information.
*
* See trunnel-impl.h for documentation of these functions.
@@ -31,7 +31,7 @@
# define IS_LITTLE_ENDIAN
# endif
#else
-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(OpenBSD)
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
# include <sys/endian.h>
# else
# include <endian.h>
diff --git a/src/ext/trunnel/trunnel.h b/src/ext/trunnel/trunnel.h
index 85bbcc5451..dd78553c77 100644
--- a/src/ext/trunnel/trunnel.h
+++ b/src/ext/trunnel/trunnel.h
@@ -5,7 +5,7 @@
/* trunnel.h -- Public declarations for trunnel, to be included
* in trunnel header files.
- * Copyright 2014-2015, The Tor Project, Inc.
+ * Copyright 2014-2017, The Tor Project, Inc.
* See license at the end of this file for copying information.
*/
diff --git a/src/include.am b/src/include.am
index d12684e187..90ecf90d45 100644
--- a/src/include.am
+++ b/src/include.am
@@ -2,8 +2,10 @@ include src/ext/include.am
include src/trunnel/include.am
include src/common/include.am
include src/or/include.am
+include src/rust/include.am
include src/test/include.am
include src/tools/include.am
include src/win32/include.am
include src/config/include.am
include src/test/fuzz/include.am
+include src/trace/include.am
diff --git a/src/or/Makefile.nmake b/src/or/Makefile.nmake
index 2ac98cd372..429ae67858 100644
--- a/src/or/Makefile.nmake
+++ b/src/or/Makefile.nmake
@@ -14,6 +14,7 @@ LIBTOR_OBJECTS = \
addressmap.obj \
buffers.obj \
channel.obj \
+ channelpadding.obj \
channeltls.obj \
circpathbias.obj \
circuitbuild.obj \
diff --git a/src/or/addressmap.c b/src/or/addressmap.c
index 85a6434f4a..c92af38254 100644
--- a/src/or/addressmap.c
+++ b/src/or/addressmap.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/addressmap.h b/src/or/addressmap.h
index 67648d0518..80f453b4c1 100644
--- a/src/or/addressmap.h
+++ b/src/or/addressmap.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ADDRESSMAP_H
diff --git a/src/or/auth_dirs.inc b/src/or/auth_dirs.inc
new file mode 100644
index 0000000000..e0937541ea
--- /dev/null
+++ b/src/or/auth_dirs.inc
@@ -0,0 +1,34 @@
+"moria1 orport=9101 "
+ "v3ident=D586D18309DED4CD6D57C18FDB97EFA96D330566 "
+ "128.31.0.39:9131 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31",
+"tor26 orport=443 "
+ "v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
+ "ipv6=[2001:858:2:2:aabb:0:563b:1526]:443 "
+ "86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
+"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",
+"gabelmoo orport=443 "
+ "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
+ "ipv6=[2001:638:a000:4140::ffff:189]:443 "
+ "131.188.40.189:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
+"dannenberg orport=443 "
+ "v3ident=0232AF901C31A04EE9848595AF9BB7620D4C5B2E "
+ "ipv6=[2001:678:558:1000::244]:443 "
+ "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
+"maatuska orport=80 "
+ "v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
+ "ipv6=[2001:67c:289c::9]:80 "
+ "171.25.193.9:443 BD6A 8292 55CB 08E6 6FBE 7D37 4836 3586 E46B 3810",
+"Faravahar orport=443 "
+ "v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
+ "154.35.175.225:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
+"longclaw orport=443 "
+ "v3ident=23D15D965BC35114467363C165C4F724B64B4F66 "
+ "199.58.81.140:80 74A9 1064 6BCE EFBC D2E8 74FC 1DC9 9743 0F96 8145",
+"bastet orport=443 "
+ "v3ident=27102BC123E7AF1D4741AE047E160C91ADC76B21 "
+ "ipv6=[2620:13:4000:6000::1000:118]:443 "
+ "204.13.164.118:80 24E2 F139 121D 4394 C54B 5BCC 368B 3B41 1857 C413",
diff --git a/src/or/bridges.c b/src/or/bridges.c
index 0b4588307c..0818fb0812 100644
--- a/src/or/bridges.c
+++ b/src/or/bridges.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -571,15 +571,23 @@ launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge)
return;
}
+ tor_addr_port_t bridge_addrport;
+ memcpy(&bridge_addrport.addr, &bridge->addr, sizeof(tor_addr_t));
+ bridge_addrport.port = bridge->port;
+
guard_state = get_guard_state_for_bridge_desc_fetch(bridge->identity);
- directory_initiate_command(&bridge->addr, bridge->port,
- NULL, 0, /*no dirport*/
- bridge->identity,
- DIR_PURPOSE_FETCH_SERVERDESC,
- ROUTER_PURPOSE_BRIDGE,
- DIRIND_ONEHOP, "authority.z", NULL, 0, 0,
- guard_state);
+ directory_request_t *req =
+ directory_request_new(DIR_PURPOSE_FETCH_SERVERDESC);
+ directory_request_set_or_addr_port(req, &bridge_addrport);
+ directory_request_set_directory_id_digest(req, bridge->identity);
+ directory_request_set_router_purpose(req, ROUTER_PURPOSE_BRIDGE);
+ directory_request_set_resource(req, "authority.z");
+ if (guard_state) {
+ directory_request_set_guard_state(req, guard_state);
+ }
+ directory_initiate_request(req);
+ directory_request_free(req);
}
/** Fetching the bridge descriptor from the bridge authority returned a
diff --git a/src/or/bridges.h b/src/or/bridges.h
index 27ea5e197c..3bfc782f9a 100644
--- a/src/or/bridges.h
+++ b/src/or/bridges.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 201778e301..12a6c0239b 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -83,7 +83,11 @@ static int parse_socks_client(const uint8_t *data, size_t datalen,
#define CHUNK_HEADER_LEN STRUCT_OFFSET(chunk_t, mem[0])
/* We leave this many NUL bytes at the end of the buffer. */
+#ifdef DISABLE_MEMORY_SENTINELS
+#define SENTINEL_LEN 0
+#else
#define SENTINEL_LEN 4
+#endif
/* Header size plus NUL bytes at the end */
#define CHUNK_OVERHEAD (CHUNK_HEADER_LEN + SENTINEL_LEN)
@@ -97,18 +101,22 @@ static int parse_socks_client(const uint8_t *data, size_t datalen,
#define DEBUG_SENTINEL
-#ifdef DEBUG_SENTINEL
+#if defined(DEBUG_SENTINEL) && !defined(DISABLE_MEMORY_SENTINELS)
#define DBG_S(s) s
#else
#define DBG_S(s) (void)0
#endif
+#ifdef DISABLE_MEMORY_SENTINELS
+#define CHUNK_SET_SENTINEL(chunk, alloclen) STMT_NIL
+#else
#define CHUNK_SET_SENTINEL(chunk, alloclen) do { \
uint8_t *a = (uint8_t*) &(chunk)->mem[(chunk)->memlen]; \
DBG_S(uint8_t *b = &((uint8_t*)(chunk))[(alloclen)-SENTINEL_LEN]); \
DBG_S(tor_assert(a == b)); \
memset(a,0,SENTINEL_LEN); \
} while (0)
+#endif
/** Return the next character in <b>chunk</b> onto which data can be appended.
* If the chunk is full, this might be off the end of chunk->mem. */
@@ -1311,7 +1319,7 @@ fetch_from_buf_http(buf_t *buf,
/**
* Wait this many seconds before warning the user about using SOCKS unsafely
- * again (requires that WarnUnsafeSocks is turned on). */
+ * again. */
#define SOCKS_WARN_INTERVAL 5
/** Warn that the user application has made an unsafe socks request using
@@ -1323,9 +1331,6 @@ log_unsafe_socks_warning(int socks_protocol, const char *address,
{
static ratelim_t socks_ratelim = RATELIM_INIT(SOCKS_WARN_INTERVAL);
- const or_options_t *options = get_options();
- if (! options->WarnUnsafeSocks)
- return;
if (safe_socks) {
log_fn_ratelim(&socks_ratelim, LOG_WARN, LD_APP,
"Your application (using socks%d to port %d) is giving "
@@ -2081,13 +2086,13 @@ fetch_from_buf_line(buf_t *buf, char *data_out, size_t *data_len)
}
/** Compress on uncompress the <b>data_len</b> bytes in <b>data</b> using the
- * zlib state <b>state</b>, appending the result to <b>buf</b>. If
+ * compression state <b>state</b>, appending the result to <b>buf</b>. If
* <b>done</b> is true, flush the data in the state and finish the
* compression/uncompression. Return -1 on failure, 0 on success. */
int
-write_to_buf_zlib(buf_t *buf, tor_zlib_state_t *state,
- const char *data, size_t data_len,
- int done)
+write_to_buf_compress(buf_t *buf, tor_compress_state_t *state,
+ const char *data, size_t data_len,
+ const int done)
{
char *next;
size_t old_avail, avail;
@@ -2101,22 +2106,31 @@ write_to_buf_zlib(buf_t *buf, tor_zlib_state_t *state,
}
next = CHUNK_WRITE_PTR(buf->tail);
avail = old_avail = CHUNK_REMAINING_CAPACITY(buf->tail);
- switch (tor_zlib_process(state, &next, &avail, &data, &data_len, done)) {
- case TOR_ZLIB_DONE:
+ switch (tor_compress_process(state, &next, &avail,
+ &data, &data_len, done)) {
+ case TOR_COMPRESS_DONE:
over = 1;
break;
- case TOR_ZLIB_ERR:
+ case TOR_COMPRESS_ERROR:
return -1;
- case TOR_ZLIB_OK:
- if (data_len == 0)
+ case TOR_COMPRESS_OK:
+ if (data_len == 0) {
+ tor_assert_nonfatal(!done);
over = 1;
+ }
break;
- case TOR_ZLIB_BUF_FULL:
+ case TOR_COMPRESS_BUFFER_FULL:
if (avail) {
- /* Zlib says we need more room (ZLIB_BUF_FULL). Start a new chunk
- * automatically, whether were going to or not. */
+ /* The compression module says we need more room
+ * (TOR_COMPRESS_BUFFER_FULL). Start a new chunk automatically,
+ * whether were going to or not. */
need_new_chunk = 1;
}
+ if (data_len == 0 && !done) {
+ /* We've consumed all the input data, though, so there's no
+ * point in forging ahead right now. */
+ over = 1;
+ }
break;
}
buf->datalen += old_avail - avail;
diff --git a/src/or/buffers.h b/src/or/buffers.h
index bb53b3bbff..23b58a571a 100644
--- a/src/or/buffers.h
+++ b/src/or/buffers.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -36,8 +36,8 @@ int flush_buf(tor_socket_t s, buf_t *buf, size_t sz, size_t *buf_flushlen);
int flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t sz, size_t *buf_flushlen);
int write_to_buf(const char *string, size_t string_len, buf_t *buf);
-int write_to_buf_zlib(buf_t *buf, tor_zlib_state_t *state,
- const char *data, size_t data_len, int done);
+int write_to_buf_compress(buf_t *buf, tor_compress_state_t *state,
+ const char *data, size_t data_len, int done);
int move_buf_to_buf(buf_t *buf_out, buf_t *buf_in, size_t *buf_flushlen);
int fetch_from_buf(char *string, size_t string_len, buf_t *buf);
int fetch_var_cell_from_buf(buf_t *buf, var_cell_t **out, int linkproto);
diff --git a/src/or/channel.c b/src/or/channel.c
index 45f1602ab2..9f652b5845 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -49,6 +49,7 @@
#include "or.h"
#include "channel.h"
#include "channeltls.h"
+#include "channelpadding.h"
#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuitstats.h"
@@ -63,6 +64,9 @@
#include "router.h"
#include "routerlist.h"
#include "scheduler.h"
+#include "compat_time.h"
+#include "networkstatus.h"
+#include "rendservice.h"
/* Global lists of channels */
@@ -84,6 +88,28 @@ static smartlist_t *active_listeners = NULL;
/* All channel_listener_t instances in LISTENING state */
static smartlist_t *finished_listeners = NULL;
+/** Map from channel->global_identifier to channel. Contains the same
+ * elements as all_channels. */
+static HT_HEAD(channel_gid_map, channel_s) channel_gid_map = HT_INITIALIZER();
+
+static unsigned
+channel_id_hash(const channel_t *chan)
+{
+ return (unsigned) chan->global_identifier;
+}
+static int
+channel_id_eq(const channel_t *a, const channel_t *b)
+{
+ return a->global_identifier == b->global_identifier;
+}
+HT_PROTOTYPE(channel_gid_map, channel_s, gidmap_node,
+ channel_id_hash, channel_id_eq)
+HT_GENERATE2(channel_gid_map, channel_s, gidmap_node,
+ channel_id_hash, channel_id_eq,
+ 0.6, tor_reallocarray_, tor_free_)
+
+HANDLE_IMPL(channel, channel_s,)
+
/* Counter for ID numbers */
static uint64_t n_channels_allocated = 0;
/*
@@ -429,6 +455,7 @@ void
channel_register(channel_t *chan)
{
tor_assert(chan);
+ tor_assert(chan->global_identifier);
/* No-op if already registered */
if (chan->registered) return;
@@ -443,6 +470,8 @@ channel_register(channel_t *chan)
/* Make sure we have all_channels, then add it */
if (!all_channels) all_channels = smartlist_new();
smartlist_add(all_channels, chan);
+ channel_t *oldval = HT_REPLACE(channel_gid_map, &channel_gid_map, chan);
+ tor_assert(! oldval);
/* Is it finished? */
if (CHANNEL_FINISHED(chan)) {
@@ -498,7 +527,9 @@ channel_unregister(channel_t *chan)
}
/* Get it out of all_channels */
- if (all_channels) smartlist_remove(all_channels, chan);
+ if (all_channels) smartlist_remove(all_channels, chan);
+ channel_t *oldval = HT_REMOVE(channel_gid_map, &channel_gid_map, chan);
+ tor_assert(oldval == NULL || oldval == chan);
/* Mark it as unregistered */
chan->registered = 0;
@@ -533,7 +564,7 @@ channel_listener_register(channel_listener_t *chan_l)
channel_listener_state_to_string(chan_l->state),
chan_l->state);
- /* Make sure we have all_channels, then add it */
+ /* Make sure we have all_listeners, then add it */
if (!all_listeners) all_listeners = smartlist_new();
smartlist_add(all_listeners, chan_l);
@@ -578,7 +609,7 @@ channel_listener_unregister(channel_listener_t *chan_l)
if (active_listeners) smartlist_remove(active_listeners, chan_l);
}
- /* Get it out of all_channels */
+ /* Get it out of all_listeners */
if (all_listeners) smartlist_remove(all_listeners, chan_l);
/* Mark it as unregistered */
@@ -719,15 +750,13 @@ channel_remove_from_digest_map(channel_t *chan)
channel_t *
channel_find_by_global_id(uint64_t global_identifier)
{
+ channel_t lookup;
channel_t *rv = NULL;
- if (all_channels && smartlist_len(all_channels) > 0) {
- SMARTLIST_FOREACH_BEGIN(all_channels, channel_t *, curr) {
- if (curr->global_identifier == global_identifier) {
- rv = curr;
- break;
- }
- } SMARTLIST_FOREACH_END(curr);
+ lookup.global_identifier = global_identifier;
+ rv = HT_FIND(channel_gid_map, &channel_gid_map, &lookup);
+ if (rv) {
+ tor_assert(rv->global_identifier == global_identifier);
}
return rv;
@@ -809,6 +838,83 @@ channel_next_with_rsa_identity(channel_t *chan)
}
/**
+ * Relays run this once an hour to look over our list of channels to other
+ * relays. It prints out some statistics if there are multiple connections
+ * to many relays.
+ *
+ * This function is similar to connection_or_set_bad_connections(),
+ * and probably could be adapted to replace it, if it was modified to actually
+ * take action on any of these connections.
+ */
+void
+channel_check_for_duplicates(void)
+{
+ channel_idmap_entry_t **iter;
+ channel_t *chan;
+ int total_relay_connections = 0, total_relays = 0, total_canonical = 0;
+ int total_half_canonical = 0;
+ int total_gt_one_connection = 0, total_gt_two_connections = 0;
+ int total_gt_four_connections = 0;
+
+ HT_FOREACH(iter, channel_idmap, &channel_identity_map) {
+ int connections_to_relay = 0;
+
+ /* Only consider relay connections */
+ if (!connection_or_digest_is_known_relay((char*)(*iter)->digest))
+ continue;
+
+ total_relays++;
+
+ for (chan = TOR_LIST_FIRST(&(*iter)->channel_list); chan;
+ chan = channel_next_with_rsa_identity(chan)) {
+
+ if (CHANNEL_CONDEMNED(chan) || !CHANNEL_IS_OPEN(chan))
+ continue;
+
+ connections_to_relay++;
+ total_relay_connections++;
+
+ if (chan->is_canonical(chan, 0)) total_canonical++;
+
+ if (!chan->is_canonical_to_peer && chan->is_canonical(chan, 0)
+ && chan->is_canonical(chan, 1)) {
+ total_half_canonical++;
+ }
+ }
+
+ if (connections_to_relay > 1) total_gt_one_connection++;
+ if (connections_to_relay > 2) total_gt_two_connections++;
+ if (connections_to_relay > 4) total_gt_four_connections++;
+ }
+
+#define MIN_RELAY_CONNECTIONS_TO_WARN 5
+
+ /* If we average 1.5 or more connections per relay, something is wrong */
+ if (total_relays > MIN_RELAY_CONNECTIONS_TO_WARN &&
+ total_relay_connections >= 1.5*total_relays) {
+ log_notice(LD_OR,
+ "Your relay has a very large number of connections to other relays. "
+ "Is your outbound address the same as your relay address? "
+ "Found %d connections to %d relays. Found %d current canonical "
+ "connections, in %d of which we were a non-canonical peer. "
+ "%d relays had more than 1 connection, %d had more than 2, and "
+ "%d had more than 4 connections.",
+ total_relay_connections, total_relays, total_canonical,
+ total_half_canonical, total_gt_one_connection,
+ total_gt_two_connections, total_gt_four_connections);
+ } else {
+ log_info(LD_OR, "Performed connection pruning. "
+ "Found %d connections to %d relays. Found %d current canonical "
+ "connections, in %d of which we were a non-canonical peer. "
+ "%d relays had more than 1 connection, %d had more than 2, and "
+ "%d had more than 4 connections.",
+ total_relay_connections, total_relays, total_canonical,
+ total_half_canonical, total_gt_one_connection,
+ total_gt_two_connections, total_gt_four_connections);
+ }
+}
+
+/**
* Initialize a channel
*
* This function should be called by subclasses to set up some per-channel
@@ -822,7 +928,7 @@ channel_init(channel_t *chan)
tor_assert(chan);
/* Assign an ID and bump the counter */
- chan->global_identifier = n_channels_allocated++;
+ chan->global_identifier = ++n_channels_allocated;
/* Init timestamp */
chan->timestamp_last_had_circuits = time(NULL);
@@ -861,7 +967,7 @@ channel_init_listener(channel_listener_t *chan_l)
tor_assert(chan_l);
/* Assign an ID and bump the counter */
- chan_l->global_identifier = n_channels_allocated++;
+ chan_l->global_identifier = ++n_channels_allocated;
/* Timestamp it */
channel_listener_timestamp_created(chan_l);
@@ -898,6 +1004,11 @@ channel_free(channel_t *chan)
circuitmux_set_policy(chan->cmux, NULL);
}
+ /* Remove all timers and associated handle entries now */
+ timer_free(chan->padding_timer);
+ channel_handle_free(chan->timer_handle);
+ channel_handles_clear(chan);
+
/* Call a free method if there is one */
if (chan->free_fn) chan->free_fn(chan);
@@ -976,6 +1087,11 @@ channel_force_free(channel_t *chan)
circuitmux_set_policy(chan->cmux, NULL);
}
+ /* Remove all timers and associated handle entries now */
+ timer_free(chan->padding_timer);
+ channel_handle_free(chan->timer_handle);
+ channel_handles_clear(chan);
+
/* Call a free method if there is one */
if (chan->free_fn) chan->free_fn(chan);
@@ -2580,9 +2696,10 @@ channel_do_open_actions(channel_t *chan)
router_set_status(chan->identity_digest, 1);
} else {
/* only report it to the geoip module if it's not a known router */
- if (!router_get_by_id_digest(chan->identity_digest)) {
+ if (!connection_or_digest_is_known_relay(chan->identity_digest)) {
if (channel_get_addr_if_possible(chan, &remote_addr)) {
char *transport_name = NULL;
+ channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
if (chan->get_transport_name(chan, &transport_name) < 0)
transport_name = NULL;
@@ -2590,11 +2707,41 @@ channel_do_open_actions(channel_t *chan)
&remote_addr, transport_name,
now);
tor_free(transport_name);
+ /* Notify the DoS subsystem of a new client. */
+ if (tlschan && tlschan->conn) {
+ dos_new_client_conn(tlschan->conn);
+ }
}
/* Otherwise the underlying transport can't tell us this, so skip it */
}
}
+ /* Disable or reduce padding according to user prefs. */
+ if (chan->padding_enabled || get_options()->ConnectionPadding == 1) {
+ if (!get_options()->ConnectionPadding) {
+ /* Disable if torrc disabled */
+ channelpadding_disable_padding_on_channel(chan);
+ } else if (get_options()->Tor2webMode &&
+ !networkstatus_get_param(NULL,
+ CHANNELPADDING_TOR2WEB_PARAM,
+ CHANNELPADDING_TOR2WEB_DEFAULT, 0, 1)) {
+ /* Disable if we're using tor2web and the consensus disabled padding
+ * for tor2web */
+ channelpadding_disable_padding_on_channel(chan);
+ } else if (rend_service_allow_non_anonymous_connection(get_options()) &&
+ !networkstatus_get_param(NULL,
+ CHANNELPADDING_SOS_PARAM,
+ CHANNELPADDING_SOS_DEFAULT, 0, 1)) {
+ /* Disable if we're using RSOS and the consensus disabled padding
+ * for RSOS*/
+ channelpadding_disable_padding_on_channel(chan);
+ } else if (get_options()->ReducedConnectionPadding) {
+ /* Padding can be forced and/or reduced by clients, regardless of if
+ * the channel supports it */
+ channelpadding_reduce_padding_on_channel(chan);
+ }
+ }
+
circuit_n_chan_done(chan, 1, close_origin_circuits);
}
@@ -3232,6 +3379,11 @@ channel_free_all(void)
/* Geez, anything still left over just won't die ... let it leak then */
HT_CLEAR(channel_idmap, &channel_identity_map);
+ /* Same with channel_gid_map */
+ log_debug(LD_CHANNEL,
+ "Freeing channel_gid_map");
+ HT_CLEAR(channel_gid_map, &channel_gid_map);
+
log_debug(LD_CHANNEL,
"Done cleaning up after channels");
}
@@ -3267,22 +3419,20 @@ channel_connect(const tor_addr_t *addr, uint16_t port,
*/
int
-channel_is_better(time_t now, channel_t *a, channel_t *b,
- int forgive_new_connections)
+channel_is_better(channel_t *a, channel_t *b)
{
- int a_grace, b_grace;
int a_is_canonical, b_is_canonical;
- int a_has_circs, b_has_circs;
-
- /*
- * Do not definitively deprecate a new channel with no circuits on it
- * until this much time has passed.
- */
-#define NEW_CHAN_GRACE_PERIOD (15*60)
tor_assert(a);
tor_assert(b);
+ /* If one channel is bad for new circuits, and the other isn't,
+ * use the one that is still good. */
+ if (!channel_is_bad_for_new_circs(a) && channel_is_bad_for_new_circs(b))
+ return 1;
+ if (channel_is_bad_for_new_circs(a) && !channel_is_bad_for_new_circs(b))
+ return 0;
+
/* Check if one is canonical and the other isn't first */
a_is_canonical = channel_is_canonical(a);
b_is_canonical = channel_is_canonical(b);
@@ -3290,26 +3440,31 @@ channel_is_better(time_t now, channel_t *a, channel_t *b,
if (a_is_canonical && !b_is_canonical) return 1;
if (!a_is_canonical && b_is_canonical) return 0;
+ /* Check if we suspect that one of the channels will be preferred
+ * by the peer */
+ if (a->is_canonical_to_peer && !b->is_canonical_to_peer) return 1;
+ if (!a->is_canonical_to_peer && b->is_canonical_to_peer) return 0;
+
/*
- * Okay, if we're here they tied on canonicity. Next we check if
- * they have any circuits, and if one does and the other doesn't,
- * we prefer the one that does, unless we are forgiving and the
- * one that has no circuits is in its grace period.
+ * Okay, if we're here they tied on canonicity, the prefer the older
+ * connection, so that the adversary can't create a new connection
+ * and try to switch us over to it (which will leak information
+ * about long-lived circuits). Additionally, switching connections
+ * too often makes us more vulnerable to attacks like Torscan and
+ * passive netflow-based equivalents.
+ *
+ * Connections will still only live for at most a week, due to
+ * the check in connection_or_group_set_badness() against
+ * TIME_BEFORE_OR_CONN_IS_TOO_OLD, which marks old connections as
+ * unusable for new circuits after 1 week. That check sets
+ * is_bad_for_new_circs, which is checked in channel_get_for_extend().
+ *
+ * We check channel_is_bad_for_new_circs() above here anyway, for safety.
*/
+ if (channel_when_created(a) < channel_when_created(b)) return 1;
+ else if (channel_when_created(a) > channel_when_created(b)) return 0;
- a_has_circs = (channel_num_circuits(a) > 0);
- b_has_circs = (channel_num_circuits(b) > 0);
- a_grace = (forgive_new_connections &&
- (now < channel_when_created(a) + NEW_CHAN_GRACE_PERIOD));
- b_grace = (forgive_new_connections &&
- (now < channel_when_created(b) + NEW_CHAN_GRACE_PERIOD));
-
- if (a_has_circs && !b_has_circs && !b_grace) return 1;
- if (!a_has_circs && b_has_circs && !a_grace) return 0;
-
- /* They tied on circuits too; just prefer whichever is newer */
-
- if (channel_when_created(a) > channel_when_created(b)) return 1;
+ if (channel_num_circuits(a) > channel_num_circuits(b)) return 1;
else return 0;
}
@@ -3334,7 +3489,6 @@ channel_get_for_extend(const char *rsa_id_digest,
channel_t *chan, *best = NULL;
int n_inprogress_goodaddr = 0, n_old = 0;
int n_noncanonical = 0, n_possible = 0;
- time_t now = approx_time();
tor_assert(msg_out);
tor_assert(launch_out);
@@ -3404,7 +3558,7 @@ channel_get_for_extend(const char *rsa_id_digest,
continue;
}
- if (channel_is_better(now, chan, best, 0))
+ if (channel_is_better(chan, best))
best = chan;
}
@@ -3847,8 +4001,8 @@ channel_get_canonical_remote_descr(channel_t *chan)
* supports this operation, and return 1. Return 0 if the underlying transport
* doesn't let us do this.
*/
-int
-channel_get_addr_if_possible(channel_t *chan, tor_addr_t *addr_out)
+MOCK_IMPL(int,
+channel_get_addr_if_possible,(channel_t *chan, tor_addr_t *addr_out))
{
tor_assert(chan);
tor_assert(addr_out);
@@ -4186,8 +4340,12 @@ channel_timestamp_active(channel_t *chan)
time_t now = time(NULL);
tor_assert(chan);
+ chan->timestamp_xfer_ms = monotime_coarse_absolute_msec();
chan->timestamp_active = now;
+
+ /* Clear any potential netflow padding timer. We're active */
+ chan->next_padding_time_ms = 0;
}
/**
@@ -4270,11 +4428,14 @@ void
channel_timestamp_recv(channel_t *chan)
{
time_t now = time(NULL);
-
tor_assert(chan);
+ chan->timestamp_xfer_ms = monotime_coarse_absolute_msec();
chan->timestamp_active = now;
chan->timestamp_recv = now;
+
+ /* Clear any potential netflow padding timer. We're active */
+ chan->next_padding_time_ms = 0;
}
/**
@@ -4287,11 +4448,15 @@ void
channel_timestamp_xmit(channel_t *chan)
{
time_t now = time(NULL);
-
tor_assert(chan);
+ chan->timestamp_xfer_ms = monotime_coarse_absolute_msec();
+
chan->timestamp_active = now;
chan->timestamp_xmit = now;
+
+ /* Clear any potential netflow padding timer. We're active */
+ chan->next_padding_time_ms = 0;
}
/***************************************************************
diff --git a/src/or/channel.h b/src/or/channel.h
index 26aa93b5e2..264743691f 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,6 +11,8 @@
#include "or.h"
#include "circuitmux.h"
+#include "timers.h"
+#include "handles.h"
/* Channel handler function pointer typedefs */
typedef void (*channel_listener_fn_ptr)(channel_listener_t *, channel_t *);
@@ -22,6 +24,17 @@ TOR_SIMPLEQ_HEAD(chan_cell_queue, cell_queue_entry_s);
typedef struct chan_cell_queue chan_cell_queue_t;
/**
+ * This enum is used by channelpadding to decide when to pad channels.
+ * Don't add values to it without updating the checks in
+ * channelpadding_decide_to_pad_channel().
+ */
+typedef enum {
+ CHANNEL_USED_NOT_USED_FOR_FULL_CIRCS = 0,
+ CHANNEL_USED_FOR_FULL_CIRCS,
+ CHANNEL_USED_FOR_USER_TRAFFIC,
+} channel_usage_info_t;
+
+/**
* Channel struct; see the channel_t typedef in or.h. A channel is an
* abstract interface for the OR-to-OR connection, similar to connection_or_t,
* but without the strong coupling to the underlying TLS implementation. They
@@ -34,11 +47,17 @@ struct channel_s {
/** Magic number for type-checking cast macros */
uint32_t magic;
+ /** List entry for hashtable for global-identifier lookup. */
+ HT_ENTRY(channel_s) gidmap_node;
+
+ /** Handle entry for handle-based lookup */
+ HANDLE_ENTRY(channel, channel_s);
+
/** Current channel state */
channel_state_t state;
/** Globally unique ID number for a channel over the lifetime of a Tor
- * process.
+ * process. This may not be 0.
*/
uint64_t global_identifier;
@@ -48,6 +67,61 @@ struct channel_s {
/** has this channel ever been open? */
unsigned int has_been_open:1;
+ /**
+ * This field indicates if the other side has enabled or disabled
+ * padding via either the link protocol version or
+ * channelpadding_negotiate cells.
+ *
+ * Clients can override this with ConnectionPadding in torrc to
+ * disable or force padding to relays, but relays cannot override the
+ * client's request.
+ */
+ unsigned int padding_enabled:1;
+
+ /** Cached value of our decision to pad (to avoid expensive
+ * checks during critical path statistics counting). */
+ unsigned int currently_padding:1;
+
+ /** Is there a pending netflow padding callback? */
+ unsigned int pending_padding_callback:1;
+
+ /** Is our peer likely to consider this channel canonical? */
+ unsigned int is_canonical_to_peer:1;
+
+ /** Has this channel ever been used for non-directory traffic?
+ * Used to decide what channels to pad, and when. */
+ channel_usage_info_t channel_usage;
+
+ /** When should we send a cell for netflow padding, in absolute
+ * milliseconds since monotime system start. 0 means no padding
+ * is scheduled. */
+ uint64_t next_padding_time_ms;
+
+ /** The callback pointer for the padding callbacks */
+ tor_timer_t *padding_timer;
+ /** The handle to this channel (to free on canceled timers) */
+ struct channel_handle_t *timer_handle;
+
+ /**
+ * These two fields specify the minimum and maximum negotiated timeout
+ * values for inactivity (send or receive) before we decide to pad a
+ * channel. These fields can be set either via a PADDING_NEGOTIATE cell,
+ * or the torrc option ReducedConnectionPadding. The consensus parameters
+ * nf_ito_low and nf_ito_high are used to ensure that padding can only be
+ * negotiated to be less frequent than what is specified in the consensus.
+ * (This is done to prevent wingnut clients from requesting excessive
+ * padding).
+ *
+ * The actual timeout value is randomly chosen between these two values
+ * as per the table in channelpadding_get_netflow_inactive_timeout_ms(),
+ * after ensuring that these values do not specify lower timeouts than
+ * the consensus parameters.
+ *
+ * If these are 0, we have not negotiated or specified custom padding
+ * times, and instead use consensus defaults. */
+ uint16_t padding_timeout_low_ms;
+ uint16_t padding_timeout_high_ms;
+
/** Why did we close?
*/
enum {
@@ -87,6 +161,18 @@ struct channel_s {
time_t timestamp_created; /* Channel created */
time_t timestamp_active; /* Any activity */
+ /**
+ * This is a high-resolution monotonic timestamp that marks when we
+ * believe the channel has actually sent or received data to/from
+ * the wire. Right now, it is used to determine when we should send
+ * a padding cell for channelpadding.
+ *
+ * XXX: Are we setting timestamp_xfer_ms in the right places to
+ * accurately reflect actual network data transfer? Or might this be
+ * very wrong wrt when bytes actually go on the wire?
+ */
+ uint64_t timestamp_xfer_ms;
+
/* Methods implemented by the lower layer */
/** Free a channel */
@@ -214,8 +300,8 @@ struct channel_s {
unsigned int is_bad_for_new_circs:1;
/** True iff we have decided that the other end of this connection
- * is a client. Channels with this flag set should never be used
- * to satisfy an EXTEND request. */
+ * is a client or bridge relay. Connections with this flag set should never
+ * be used to satisfy an EXTEND request. */
unsigned int is_client:1;
/** Set if the channel was initiated remotely (came from a listener) */
@@ -516,9 +602,7 @@ channel_t * channel_get_for_extend(const char *rsa_id_digest,
int *launch_out);
/* Ask which of two channels is better for circuit-extension purposes */
-int channel_is_better(time_t now,
- channel_t *a, channel_t *b,
- int forgive_new_connections);
+int channel_is_better(channel_t *a, channel_t *b);
/** Channel lookups
*/
@@ -574,7 +658,8 @@ MOCK_DECL(void, channel_dump_statistics, (channel_t *chan, int severity));
void channel_dump_transport_statistics(channel_t *chan, int severity);
const char * channel_get_actual_remote_descr(channel_t *chan);
const char * channel_get_actual_remote_address(channel_t *chan);
-int channel_get_addr_if_possible(channel_t *chan, tor_addr_t *addr_out);
+MOCK_DECL(int, channel_get_addr_if_possible, (channel_t *chan,
+ tor_addr_t *addr_out));
const char * channel_get_canonical_remote_descr(channel_t *chan);
int channel_has_queued_writes(channel_t *chan);
int channel_is_bad_for_new_circs(channel_t *chan);
@@ -601,6 +686,7 @@ void channel_listener_dump_statistics(channel_listener_t *chan_l,
int severity);
void channel_listener_dump_transport_statistics(channel_listener_t *chan_l,
int severity);
+void channel_check_for_duplicates(void);
void channel_update_bad_for_new_circs(const char *digest, int force);
@@ -630,5 +716,8 @@ int packed_cell_is_destroy(channel_t *chan,
const packed_cell_t *packed_cell,
circid_t *circid_out);
+/* Declare the handle helpers */
+HANDLE_DECL(channel, channel_s,)
+
#endif
diff --git a/src/or/channelpadding.c b/src/or/channelpadding.c
new file mode 100644
index 0000000000..ccaf5b4ec8
--- /dev/null
+++ b/src/or/channelpadding.c
@@ -0,0 +1,793 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2015, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/* TOR_CHANNEL_INTERNAL_ define needed for an O(1) implementation of
+ * channelpadding_channel_to_channelinfo() */
+#define TOR_CHANNEL_INTERNAL_
+
+#include "or.h"
+#include "channel.h"
+#include "channelpadding.h"
+#include "channeltls.h"
+#include "config.h"
+#include "networkstatus.h"
+#include "connection.h"
+#include "connection_or.h"
+#include "main.h"
+#include "rephist.h"
+#include "router.h"
+#include "compat_time.h"
+#include <event2/event.h>
+#include "rendservice.h"
+
+STATIC int channelpadding_get_netflow_inactive_timeout_ms(const channel_t *);
+STATIC int channelpadding_send_disable_command(channel_t *);
+STATIC int64_t channelpadding_compute_time_until_pad_for_netflow(channel_t *);
+
+/** The total number of pending channelpadding timers */
+static uint64_t total_timers_pending;
+
+/** These are cached consensus parameters for netflow */
+/** The timeout lower bound that is allowed before sending padding */
+static int consensus_nf_ito_low;
+/** The timeout upper bound that is allowed before sending padding */
+static int consensus_nf_ito_high;
+/** The timeout lower bound that is allowed before sending reduced padding */
+static int consensus_nf_ito_low_reduced;
+/** The timeout upper bound that is allowed before sending reduced padding */
+static int consensus_nf_ito_high_reduced;
+/** The connection timeout between relays */
+static int consensus_nf_conntimeout_relays;
+/** The connection timeout for client connections */
+static int consensus_nf_conntimeout_clients;
+/** Should we pad before circuits are actually used for client data? */
+static int consensus_nf_pad_before_usage;
+/** Should we pad relay-to-relay connections? */
+static int consensus_nf_pad_relays;
+/** Should we pad tor2web connections? */
+static int consensus_nf_pad_tor2web;
+/** Should we pad rosos connections? */
+static int consensus_nf_pad_single_onion;
+
+#define TOR_MSEC_PER_SEC 1000
+#define TOR_USEC_PER_MSEC 1000
+
+/**
+ * How often do we get called by the connection housekeeping (ie: once
+ * per second) */
+#define TOR_HOUSEKEEPING_CALLBACK_MSEC 1000
+/**
+ * Additional extra time buffer on the housekeeping callback, since
+ * it can be delayed. This extra slack is used to decide if we should
+ * schedule a timer or wait for the next callback. */
+#define TOR_HOUSEKEEPING_CALLBACK_SLACK_MSEC 100
+
+/**
+ * This macro tells us if either end of the channel is connected to a client.
+ * (If we're not a server, we're definitely a client. If the channel thinks
+ * its a client, use that. Then finally verify in the consensus).
+ */
+#define CHANNEL_IS_CLIENT(chan, options) \
+ (!public_server_mode((options)) || (chan)->is_client || \
+ !connection_or_digest_is_known_relay((chan)->identity_digest))
+
+/**
+ * This function is called to update cached consensus parameters every time
+ * there is a consensus update. This allows us to move the consensus param
+ * search off of the critical path, so it does not need to be evaluated
+ * for every single connection, every second.
+ */
+void
+channelpadding_new_consensus_params(networkstatus_t *ns)
+{
+#define DFLT_NETFLOW_INACTIVE_KEEPALIVE_LOW 1500
+#define DFLT_NETFLOW_INACTIVE_KEEPALIVE_HIGH 9500
+#define DFLT_NETFLOW_INACTIVE_KEEPALIVE_MIN 0
+#define DFLT_NETFLOW_INACTIVE_KEEPALIVE_MAX 60000
+ consensus_nf_ito_low = networkstatus_get_param(ns, "nf_ito_low",
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_LOW,
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_MIN,
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_MAX);
+ consensus_nf_ito_high = networkstatus_get_param(ns, "nf_ito_high",
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_HIGH,
+ consensus_nf_ito_low,
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_MAX);
+
+#define DFLT_NETFLOW_REDUCED_KEEPALIVE_LOW 9000
+#define DFLT_NETFLOW_REDUCED_KEEPALIVE_HIGH 14000
+#define DFLT_NETFLOW_REDUCED_KEEPALIVE_MIN 0
+#define DFLT_NETFLOW_REDUCED_KEEPALIVE_MAX 60000
+ consensus_nf_ito_low_reduced =
+ networkstatus_get_param(ns, "nf_ito_low_reduced",
+ DFLT_NETFLOW_REDUCED_KEEPALIVE_LOW,
+ DFLT_NETFLOW_REDUCED_KEEPALIVE_MIN,
+ DFLT_NETFLOW_REDUCED_KEEPALIVE_MAX);
+
+ consensus_nf_ito_high_reduced =
+ networkstatus_get_param(ns, "nf_ito_high_reduced",
+ DFLT_NETFLOW_REDUCED_KEEPALIVE_HIGH,
+ consensus_nf_ito_low_reduced,
+ DFLT_NETFLOW_REDUCED_KEEPALIVE_MAX);
+
+#define CONNTIMEOUT_RELAYS_DFLT (60*60) // 1 hour
+#define CONNTIMEOUT_RELAYS_MIN 60
+#define CONNTIMEOUT_RELAYS_MAX (7*24*60*60) // 1 week
+ consensus_nf_conntimeout_relays =
+ networkstatus_get_param(ns, "nf_conntimeout_relays",
+ CONNTIMEOUT_RELAYS_DFLT,
+ CONNTIMEOUT_RELAYS_MIN,
+ CONNTIMEOUT_RELAYS_MAX);
+
+#define CIRCTIMEOUT_CLIENTS_DFLT (30*60) // 30 minutes
+#define CIRCTIMEOUT_CLIENTS_MIN 60
+#define CIRCTIMEOUT_CLIENTS_MAX (24*60*60) // 24 hours
+ consensus_nf_conntimeout_clients =
+ networkstatus_get_param(ns, "nf_conntimeout_clients",
+ CIRCTIMEOUT_CLIENTS_DFLT,
+ CIRCTIMEOUT_CLIENTS_MIN,
+ CIRCTIMEOUT_CLIENTS_MAX);
+
+ consensus_nf_pad_before_usage =
+ networkstatus_get_param(ns, "nf_pad_before_usage", 1, 0, 1);
+
+ consensus_nf_pad_relays =
+ networkstatus_get_param(ns, "nf_pad_relays", 0, 0, 1);
+
+ consensus_nf_pad_tor2web =
+ networkstatus_get_param(ns,
+ CHANNELPADDING_TOR2WEB_PARAM,
+ CHANNELPADDING_TOR2WEB_DEFAULT, 0, 1);
+
+ consensus_nf_pad_single_onion =
+ networkstatus_get_param(ns,
+ CHANNELPADDING_SOS_PARAM,
+ CHANNELPADDING_SOS_DEFAULT, 0, 1);
+}
+
+/**
+ * Get a random netflow inactive timeout keepalive period in milliseconds,
+ * the range for which is determined by consensus parameters, negotiation,
+ * configuration, or default values. The consensus parameters enforce the
+ * minimum possible value, to avoid excessively frequent padding.
+ *
+ * The ranges for this value were chosen to be low enough to ensure that
+ * routers do not emit a new netflow record for a connection due to it
+ * being idle.
+ *
+ * Specific timeout values for major routers are listed in Proposal 251.
+ * No major router appeared capable of setting an inactive timeout below 10
+ * seconds, so we set the defaults below that value, since we can always
+ * scale back if it ends up being too much padding.
+ *
+ * Returns the next timeout period (in milliseconds) after which we should
+ * send a padding packet, or 0 if padding is disabled.
+ */
+STATIC int
+channelpadding_get_netflow_inactive_timeout_ms(const channel_t *chan)
+{
+ int low_timeout = consensus_nf_ito_low;
+ int high_timeout = consensus_nf_ito_high;
+ int X1, X2;
+
+ if (low_timeout == 0 && low_timeout == high_timeout)
+ return 0; // No padding
+
+ /* If we have negotiated different timeout values, use those, but
+ * don't allow them to be lower than the consensus ones */
+ if (chan->padding_timeout_low_ms && chan->padding_timeout_high_ms) {
+ low_timeout = MAX(low_timeout, chan->padding_timeout_low_ms);
+ high_timeout = MAX(high_timeout, chan->padding_timeout_high_ms);
+ }
+
+ if (low_timeout == high_timeout)
+ return low_timeout; // No randomization
+
+ /*
+ * This MAX() hack is here because we apply the timeout on both the client
+ * and the server. This creates the situation where the total time before
+ * sending a packet in either direction is actually
+ * min(client_timeout,server_timeout).
+ *
+ * If X is a random variable uniform from 0..R-1 (where R=high-low),
+ * then Y=max(X,X) has Prob(Y == i) = (2.0*i + 1)/(R*R).
+ *
+ * If we create a third random variable Z=min(Y,Y), then it turns out that
+ * Exp[Z] ~= Exp[X]. Here's a table:
+ *
+ * R Exp[X] Exp[Z] Exp[min(X,X)] Exp[max(X,X)]
+ * 2000 999.5 1066 666.2 1332.8
+ * 3000 1499.5 1599.5 999.5 1999.5
+ * 5000 2499.5 2666 1666.2 3332.8
+ * 6000 2999.5 3199.5 1999.5 3999.5
+ * 7000 3499.5 3732.8 2332.8 4666.2
+ * 8000 3999.5 4266.2 2666.2 5332.8
+ * 10000 4999.5 5328 3332.8 6666.2
+ * 15000 7499.5 7995 4999.5 9999.5
+ * 20000 9900.5 10661 6666.2 13332.8
+ *
+ * In other words, this hack makes it so that when both the client and
+ * the guard are sending this padding, then the averages work out closer
+ * to the midpoint of the range, making the overhead easier to tune.
+ * If only one endpoint is padding (for example: if the relay does not
+ * support padding, but the client has set ConnectionPadding 1; or
+ * if the relay does support padding, but the client has set
+ * ReducedConnectionPadding 1), then the defense will still prevent
+ * record splitting, but with less overhead than the midpoint
+ * (as seen by the Exp[max(X,X)] column).
+ *
+ * To calculate average padding packet frequency (and thus overhead),
+ * index into the table by picking a row based on R = high-low. Then,
+ * use the appropriate column (Exp[Z] for two-sided padding, and
+ * Exp[max(X,X)] for one-sided padding). Finally, take this value
+ * and add it to the low timeout value. This value is the average
+ * frequency which padding packets will be sent.
+ */
+
+ X1 = crypto_rand_int(high_timeout - low_timeout);
+ X2 = crypto_rand_int(high_timeout - low_timeout);
+ return low_timeout + MAX(X1, X2);
+}
+
+/**
+ * Update this channel's padding settings based on the PADDING_NEGOTIATE
+ * contents.
+ *
+ * Returns -1 on error; 1 on success.
+ */
+int
+channelpadding_update_padding_for_channel(channel_t *chan,
+ const channelpadding_negotiate_t *pad_vars)
+{
+ if (pad_vars->version != 0) {
+ static ratelim_t version_limit = RATELIM_INIT(600);
+
+ log_fn_ratelim(&version_limit,LOG_PROTOCOL_WARN,LD_PROTOCOL,
+ "Got a PADDING_NEGOTIATE cell with an unknown version. Ignoring.");
+ return -1;
+ }
+
+ // We should not allow malicious relays to disable or reduce padding for
+ // us as clients. In fact, we should only accept this cell at all if we're
+ // operating as a relay. Bridges should not accept it from relays, either
+ // (only from their clients).
+ if ((get_options()->BridgeRelay &&
+ connection_or_digest_is_known_relay(chan->identity_digest)) ||
+ !get_options()->ORPort_set) {
+ static ratelim_t relay_limit = RATELIM_INIT(600);
+
+ log_fn_ratelim(&relay_limit,LOG_PROTOCOL_WARN,LD_PROTOCOL,
+ "Got a PADDING_NEGOTIATE from relay at %s (%s). "
+ "This should not happen.",
+ chan->get_remote_descr(chan, 0),
+ hex_str(chan->identity_digest, DIGEST_LEN));
+ return -1;
+ }
+
+ chan->padding_enabled = (pad_vars->command == CHANNELPADDING_COMMAND_START);
+
+ /* Min must not be lower than the current consensus parameter
+ nf_ito_low. */
+ chan->padding_timeout_low_ms = MAX(consensus_nf_ito_low,
+ pad_vars->ito_low_ms);
+
+ /* Max must not be lower than ito_low_ms */
+ chan->padding_timeout_high_ms = MAX(chan->padding_timeout_low_ms,
+ pad_vars->ito_high_ms);
+
+ log_fn(LOG_INFO,LD_OR,
+ "Negotiated padding=%d, lo=%d, hi=%d on "U64_FORMAT,
+ chan->padding_enabled, chan->padding_timeout_low_ms,
+ chan->padding_timeout_high_ms,
+ U64_PRINTF_ARG(chan->global_identifier));
+
+ return 1;
+}
+
+/**
+ * Sends a CELL_PADDING_NEGOTIATE on the channel to tell the other side not
+ * to send padding.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+STATIC int
+channelpadding_send_disable_command(channel_t *chan)
+{
+ channelpadding_negotiate_t disable;
+ cell_t cell;
+
+ tor_assert(BASE_CHAN_TO_TLS(chan)->conn->link_proto >=
+ MIN_LINK_PROTO_FOR_CHANNEL_PADDING);
+
+ memset(&cell, 0, sizeof(cell_t));
+ memset(&disable, 0, sizeof(channelpadding_negotiate_t));
+ cell.command = CELL_PADDING_NEGOTIATE;
+
+ channelpadding_negotiate_set_command(&disable, CHANNELPADDING_COMMAND_STOP);
+
+ if (channelpadding_negotiate_encode(cell.payload, CELL_PAYLOAD_SIZE,
+ &disable) < 0)
+ return -1;
+
+ if (chan->write_cell(chan, &cell) == 1)
+ return 0;
+ else
+ return -1;
+}
+
+/**
+ * Sends a CELL_PADDING_NEGOTIATE on the channel to tell the other side to
+ * resume sending padding at some rate.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+int
+channelpadding_send_enable_command(channel_t *chan, uint16_t low_timeout,
+ uint16_t high_timeout)
+{
+ channelpadding_negotiate_t enable;
+ cell_t cell;
+
+ tor_assert(BASE_CHAN_TO_TLS(chan)->conn->link_proto >=
+ MIN_LINK_PROTO_FOR_CHANNEL_PADDING);
+
+ memset(&cell, 0, sizeof(cell_t));
+ memset(&enable, 0, sizeof(channelpadding_negotiate_t));
+ cell.command = CELL_PADDING_NEGOTIATE;
+
+ channelpadding_negotiate_set_command(&enable, CHANNELPADDING_COMMAND_START);
+ channelpadding_negotiate_set_ito_low_ms(&enable, low_timeout);
+ channelpadding_negotiate_set_ito_high_ms(&enable, high_timeout);
+
+ if (channelpadding_negotiate_encode(cell.payload, CELL_PAYLOAD_SIZE,
+ &enable) < 0)
+ return -1;
+
+ if (chan->write_cell(chan, &cell) == 1)
+ return 0;
+ else
+ return -1;
+}
+
+/**
+ * Sends a CELL_PADDING cell on a channel if it has been idle since
+ * our callback was scheduled.
+ *
+ * This function also clears the pending padding timer and the callback
+ * flags.
+ */
+static void
+channelpadding_send_padding_cell_for_callback(channel_t *chan)
+{
+ cell_t cell;
+
+ /* Check that the channel is still valid and open */
+ if (!chan || chan->state != CHANNEL_STATE_OPEN) {
+ if (chan) chan->pending_padding_callback = 0;
+ log_fn(LOG_INFO,LD_OR,
+ "Scheduled a netflow padding cell, but connection already closed.");
+ return;
+ }
+
+ /* We should have a pending callback flag set. */
+ if (BUG(chan->pending_padding_callback == 0))
+ return;
+
+ chan->pending_padding_callback = 0;
+
+ if (!chan->next_padding_time_ms ||
+ chan->has_queued_writes(chan)) {
+ /* We must have been active before the timer fired */
+ chan->next_padding_time_ms = 0;
+ return;
+ }
+
+ {
+ uint64_t now = monotime_coarse_absolute_msec();
+
+ log_fn(LOG_INFO,LD_OR,
+ "Sending netflow keepalive on "U64_FORMAT" to %s (%s) after "
+ I64_FORMAT" ms. Delta "I64_FORMAT"ms",
+ U64_PRINTF_ARG(chan->global_identifier),
+ safe_str_client(chan->get_remote_descr(chan, 0)),
+ safe_str_client(hex_str(chan->identity_digest, DIGEST_LEN)),
+ U64_PRINTF_ARG(now - chan->timestamp_xfer_ms),
+ U64_PRINTF_ARG(now - chan->next_padding_time_ms));
+ }
+
+ /* Clear the timer */
+ chan->next_padding_time_ms = 0;
+
+ /* Send the padding cell. This will cause the channel to get a
+ * fresh timestamp_active */
+ memset(&cell, 0, sizeof(cell));
+ cell.command = CELL_PADDING;
+ chan->write_cell(chan, &cell);
+}
+
+/**
+ * tor_timer callback function for us to send padding on an idle channel.
+ *
+ * This function just obtains the channel from the callback handle, ensures
+ * it is still valid, and then hands it off to
+ * channelpadding_send_padding_cell_for_callback(), which checks if
+ * the channel is still idle before sending padding.
+ */
+static void
+channelpadding_send_padding_callback(tor_timer_t *timer, void *args,
+ const struct monotime_t *when)
+{
+ channel_t *chan = channel_handle_get((struct channel_handle_t*)args);
+ (void)timer; (void)when;
+
+ if (chan && CHANNEL_CAN_HANDLE_CELLS(chan)) {
+ /* Hrmm.. It might be nice to have an equivalent to assert_connection_ok
+ * for channels. Then we could get rid of the channeltls dependency */
+ tor_assert(TO_CONN(BASE_CHAN_TO_TLS(chan)->conn)->magic ==
+ OR_CONNECTION_MAGIC);
+ assert_connection_ok(TO_CONN(BASE_CHAN_TO_TLS(chan)->conn), approx_time());
+
+ channelpadding_send_padding_cell_for_callback(chan);
+ } else {
+ log_fn(LOG_INFO,LD_OR,
+ "Channel closed while waiting for timer.");
+ }
+
+ total_timers_pending--;
+}
+
+/**
+ * Schedules a callback to send padding on a channel in_ms milliseconds from
+ * now.
+ *
+ * Returns CHANNELPADDING_WONTPAD on error, CHANNELPADDING_PADDING_SENT if we
+ * sent the packet immediately without a timer, and
+ * CHANNELPADDING_PADDING_SCHEDULED if we decided to schedule a timer.
+ */
+static channelpadding_decision_t
+channelpadding_schedule_padding(channel_t *chan, int in_ms)
+{
+ struct timeval timeout;
+ tor_assert(!chan->pending_padding_callback);
+
+ if (in_ms <= 0) {
+ chan->pending_padding_callback = 1;
+ channelpadding_send_padding_cell_for_callback(chan);
+ return CHANNELPADDING_PADDING_SENT;
+ }
+
+ timeout.tv_sec = in_ms/TOR_MSEC_PER_SEC;
+ timeout.tv_usec = (in_ms%TOR_USEC_PER_MSEC)*TOR_USEC_PER_MSEC;
+
+ if (!chan->timer_handle) {
+ chan->timer_handle = channel_handle_new(chan);
+ }
+
+ if (chan->padding_timer) {
+ timer_set_cb(chan->padding_timer,
+ channelpadding_send_padding_callback,
+ chan->timer_handle);
+ } else {
+ chan->padding_timer = timer_new(channelpadding_send_padding_callback,
+ chan->timer_handle);
+ }
+ timer_schedule(chan->padding_timer, &timeout);
+
+ rep_hist_padding_count_timers(++total_timers_pending);
+
+ chan->pending_padding_callback = 1;
+ return CHANNELPADDING_PADDING_SCHEDULED;
+}
+
+/**
+ * Calculates the number of milliseconds from now to schedule a padding cell.
+ *
+ * Returns the number of milliseconds from now (relative) to schedule the
+ * padding callback. If the padding timer is more than 1.1 seconds in the
+ * future, we return -1, to avoid scheduling excessive callbacks. If padding
+ * is disabled in the consensus, we return -2.
+ *
+ * Side-effects: Updates chan->next_padding_time_ms, storing an (absolute, not
+ * relative) millisecond representation of when we should send padding, unless
+ * other activity happens first. This side-effect allows us to avoid
+ * scheduling a libevent callback until we're within 1.1 seconds of the padding
+ * time.
+ */
+#define CHANNELPADDING_TIME_LATER -1
+#define CHANNELPADDING_TIME_DISABLED -2
+STATIC int64_t
+channelpadding_compute_time_until_pad_for_netflow(channel_t *chan)
+{
+ uint64_t long_now = monotime_coarse_absolute_msec();
+
+ if (!chan->next_padding_time_ms) {
+ /* If the below line or crypto_rand_int() shows up on a profile,
+ * we can avoid getting a timeout until we're at least nf_ito_lo
+ * from a timeout window. That will prevent us from setting timers
+ * on connections that were active up to 1.5 seconds ago.
+ * Idle connections should only call this once every 5.5s on average
+ * though, so that might be a micro-optimization for little gain. */
+ int64_t padding_timeout =
+ channelpadding_get_netflow_inactive_timeout_ms(chan);
+
+ if (!padding_timeout)
+ return CHANNELPADDING_TIME_DISABLED;
+
+ chan->next_padding_time_ms = padding_timeout
+ + chan->timestamp_xfer_ms;
+ }
+
+ /* If the next padding time is beyond the maximum possible consensus value,
+ * then this indicates a clock jump, so just send padding now. This is
+ * better than using monotonic time because we want to avoid the situation
+ * where we wait around forever for monotonic time to move forward after
+ * a clock jump far into the past.
+ */
+ if (chan->next_padding_time_ms > long_now +
+ DFLT_NETFLOW_INACTIVE_KEEPALIVE_MAX) {
+ tor_fragile_assert();
+ log_warn(LD_BUG,
+ "Channel padding timeout scheduled "I64_FORMAT"ms in the future. "
+ "Did the monotonic clock just jump?",
+ I64_PRINTF_ARG(chan->next_padding_time_ms - long_now));
+ return 0; /* Clock jumped: Send padding now */
+ }
+
+ /* If the timeout will expire before the next time we're called (1000ms
+ from now, plus some slack), then calculate the number of milliseconds
+ from now which we should send padding, so we can schedule a callback
+ then.
+ */
+ if (long_now +
+ (TOR_HOUSEKEEPING_CALLBACK_MSEC + TOR_HOUSEKEEPING_CALLBACK_SLACK_MSEC)
+ >= chan->next_padding_time_ms) {
+ int64_t ms_until_pad_for_netflow = chan->next_padding_time_ms -
+ long_now;
+ /* If the padding time is in the past, that means that libevent delayed
+ * calling the once-per-second callback due to other work taking too long.
+ * See https://bugs.torproject.org/22212 and
+ * https://bugs.torproject.org/16585. This is a systemic problem
+ * with being single-threaded, but let's emit a notice if this
+ * is long enough in the past that we might have missed a netflow window,
+ * and allowed a router to emit a netflow frame, just so we don't forget
+ * about it entirely.. */
+#define NETFLOW_MISSED_WINDOW (150000 - DFLT_NETFLOW_INACTIVE_KEEPALIVE_HIGH)
+ if (ms_until_pad_for_netflow < 0) {
+ int severity = (ms_until_pad_for_netflow < -NETFLOW_MISSED_WINDOW)
+ ? LOG_NOTICE : LOG_INFO;
+ log_fn(severity, LD_OR,
+ "Channel padding timeout scheduled "I64_FORMAT"ms in the past. ",
+ I64_PRINTF_ARG(-ms_until_pad_for_netflow));
+ return 0; /* Clock jumped: Send padding now */
+ }
+
+ return ms_until_pad_for_netflow;
+ }
+ return CHANNELPADDING_TIME_LATER;
+}
+
+/**
+ * Returns a randomized value for channel idle timeout in seconds.
+ * The channel idle timeout governs how quickly we close a channel
+ * after its last circuit has disappeared.
+ *
+ * There are three classes of channels:
+ * 1. Client+non-canonical. These live for 3-4.5 minutes
+ * 2. relay to relay. These live for 45-75 min by default
+ * 3. Reduced padding clients. These live for 1.5-2.25 minutes.
+ *
+ * Also allows the default relay-to-relay value to be controlled by the
+ * consensus.
+ */
+unsigned int
+channelpadding_get_channel_idle_timeout(const channel_t *chan,
+ int is_canonical)
+{
+ const or_options_t *options = get_options();
+ unsigned int timeout;
+
+ /* Non-canonical and client channels only last for 3-4.5 min when idle */
+ if (!is_canonical || CHANNEL_IS_CLIENT(chan, options)) {
+#define CONNTIMEOUT_CLIENTS_BASE 180 // 3 to 4.5 min
+ timeout = CONNTIMEOUT_CLIENTS_BASE
+ + crypto_rand_int(CONNTIMEOUT_CLIENTS_BASE/2);
+ } else { // Canonical relay-to-relay channels
+ // 45..75min or consensus +/- 25%
+ timeout = consensus_nf_conntimeout_relays;
+ timeout = 3*timeout/4 + crypto_rand_int(timeout/2);
+ }
+
+ /* If ReducedConnectionPadding is set, we want to halve the duration of
+ * the channel idle timeout, since reducing the additional time that
+ * a channel stays open will reduce the total overhead for making
+ * new channels. This reduction in overhead/channel expense
+ * is important for mobile users. The option cannot be set by relays.
+ *
+ * We also don't reduce any values for timeout that the user explicitly
+ * set.
+ */
+ if (options->ReducedConnectionPadding
+ && !options->CircuitsAvailableTimeout) {
+ timeout /= 2;
+ }
+
+ return timeout;
+}
+
+/**
+ * This function controls how long we keep idle circuits open,
+ * and how long we build predicted circuits. This behavior is under
+ * the control of channelpadding because circuit availability is the
+ * dominant factor in channel lifespan, which influences total padding
+ * overhead.
+ *
+ * Returns a randomized number of seconds in a range from
+ * CircuitsAvailableTimeout to 2*CircuitsAvailableTimeout. This value is halved
+ * if ReducedConnectionPadding is set. The default value of
+ * CircuitsAvailableTimeout can be controlled by the consensus.
+ */
+int
+channelpadding_get_circuits_available_timeout(void)
+{
+ const or_options_t *options = get_options();
+ int timeout = options->CircuitsAvailableTimeout;
+
+ if (!timeout) {
+ timeout = consensus_nf_conntimeout_clients;
+
+ /* If ReducedConnectionPadding is set, we want to halve the duration of
+ * the channel idle timeout, since reducing the additional time that
+ * a channel stays open will reduce the total overhead for making
+ * new connections. This reduction in overhead/connection expense
+ * is important for mobile users. The option cannot be set by relays.
+ *
+ * We also don't reduce any values for timeout that the user explicitly
+ * set.
+ */
+ if (options->ReducedConnectionPadding) {
+ // half the value to 15..30min by default
+ timeout /= 2;
+ }
+ }
+
+ // 30..60min by default
+ timeout = timeout + crypto_rand_int(timeout);
+
+ return timeout;
+}
+
+/**
+ * Calling this function on a channel causes it to tell the other side
+ * not to send padding, and disables sending padding from this side as well.
+ */
+void
+channelpadding_disable_padding_on_channel(channel_t *chan)
+{
+ chan->padding_enabled = 0;
+
+ // Send cell to disable padding on the other end
+ channelpadding_send_disable_command(chan);
+}
+
+/**
+ * Calling this function on a channel causes it to tell the other side
+ * not to send padding, and reduces the rate that padding is sent from
+ * this side.
+ */
+void
+channelpadding_reduce_padding_on_channel(channel_t *chan)
+{
+ /* Padding can be forced and reduced by clients, regardless of if
+ * the channel supports it. So we check for support here before
+ * sending any commands. */
+ if (chan->padding_enabled) {
+ channelpadding_send_disable_command(chan);
+ }
+
+ chan->padding_timeout_low_ms = consensus_nf_ito_low_reduced;
+ chan->padding_timeout_high_ms = consensus_nf_ito_high_reduced;
+
+ log_fn(LOG_INFO,LD_OR,
+ "Reduced padding on channel "U64_FORMAT": lo=%d, hi=%d",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan->padding_timeout_low_ms, chan->padding_timeout_high_ms);
+}
+
+/**
+ * This function is called once per second by run_connection_housekeeping(),
+ * but only if the channel is still open, valid, and non-wedged.
+ *
+ * It decides if and when we should send a padding cell, and if needed,
+ * schedules a callback to send that cell at the appropriate time.
+ *
+ * Returns an enum that represents the current padding decision state.
+ * Return value is currently used only by unit tests.
+ */
+channelpadding_decision_t
+channelpadding_decide_to_pad_channel(channel_t *chan)
+{
+ const or_options_t *options = get_options();
+
+ /* Only pad open channels */
+ if (chan->state != CHANNEL_STATE_OPEN)
+ return CHANNELPADDING_WONTPAD;
+
+ if (chan->channel_usage == CHANNEL_USED_FOR_FULL_CIRCS) {
+ if (!consensus_nf_pad_before_usage)
+ return CHANNELPADDING_WONTPAD;
+ } else if (chan->channel_usage != CHANNEL_USED_FOR_USER_TRAFFIC) {
+ return CHANNELPADDING_WONTPAD;
+ }
+
+ if (chan->pending_padding_callback)
+ return CHANNELPADDING_PADDING_ALREADY_SCHEDULED;
+
+ /* Don't pad the channel if we didn't negotiate it, but still
+ * allow clients to force padding if options->ChannelPadding is
+ * explicitly set to 1.
+ */
+ if (!chan->padding_enabled && options->ConnectionPadding != 1) {
+ return CHANNELPADDING_WONTPAD;
+ }
+
+ if (options->Tor2webMode && !consensus_nf_pad_tor2web) {
+ /* If the consensus just changed values, this channel may still
+ * think padding is enabled. Negotiate it off. */
+ if (chan->padding_enabled)
+ channelpadding_disable_padding_on_channel(chan);
+
+ return CHANNELPADDING_WONTPAD;
+ }
+
+ if (rend_service_allow_non_anonymous_connection(options) &&
+ !consensus_nf_pad_single_onion) {
+ /* If the consensus just changed values, this channel may still
+ * think padding is enabled. Negotiate it off. */
+ if (chan->padding_enabled)
+ channelpadding_disable_padding_on_channel(chan);
+
+ return CHANNELPADDING_WONTPAD;
+ }
+
+ if (!chan->has_queued_writes(chan)) {
+ int is_client_channel = 0;
+
+ if (CHANNEL_IS_CLIENT(chan, options)) {
+ is_client_channel = 1;
+ }
+
+ /* If nf_pad_relays=1 is set in the consensus, we pad
+ * on *all* idle connections, relay-relay or relay-client.
+ * Otherwise pad only for client+bridge cons */
+ if (is_client_channel || consensus_nf_pad_relays) {
+ int64_t pad_time_ms =
+ channelpadding_compute_time_until_pad_for_netflow(chan);
+
+ if (pad_time_ms == CHANNELPADDING_TIME_DISABLED) {
+ return CHANNELPADDING_WONTPAD;
+ } else if (pad_time_ms == CHANNELPADDING_TIME_LATER) {
+ chan->currently_padding = 1;
+ return CHANNELPADDING_PADLATER;
+ } else {
+ if (BUG(pad_time_ms > INT_MAX)) {
+ pad_time_ms = INT_MAX;
+ }
+ /* We have to schedule a callback because we're called exactly once per
+ * second, but we don't want padding packets to go out exactly on an
+ * integer multiple of seconds. This callback will only be scheduled
+ * if we're within 1.1 seconds of the padding time.
+ */
+ chan->currently_padding = 1;
+ return channelpadding_schedule_padding(chan, (int)pad_time_ms);
+ }
+ } else {
+ chan->currently_padding = 0;
+ return CHANNELPADDING_WONTPAD;
+ }
+ } else {
+ return CHANNELPADDING_PADLATER;
+ }
+}
+
diff --git a/src/or/channelpadding.h b/src/or/channelpadding.h
new file mode 100644
index 0000000000..a227e27d5b
--- /dev/null
+++ b/src/or/channelpadding.h
@@ -0,0 +1,45 @@
+/* Copyright (c) 2001 Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2015, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file circuitbuild.h
+ * \brief Header file for circuitbuild.c.
+ **/
+#ifndef TOR_CHANNELPADDING_H
+#define TOR_CHANNELPADDING_H
+
+#include "channelpadding_negotiation.h"
+
+#define CHANNELPADDING_TOR2WEB_PARAM "nf_pad_tor2web"
+#define CHANNELPADDING_TOR2WEB_DEFAULT 1
+#define CHANNELPADDING_SOS_PARAM "nf_pad_single_onion"
+#define CHANNELPADDING_SOS_DEFAULT 1
+
+typedef enum {
+ CHANNELPADDING_WONTPAD,
+ CHANNELPADDING_PADLATER,
+ CHANNELPADDING_PADDING_SCHEDULED,
+ CHANNELPADDING_PADDING_ALREADY_SCHEDULED,
+ CHANNELPADDING_PADDING_SENT,
+} channelpadding_decision_t;
+
+channelpadding_decision_t channelpadding_decide_to_pad_channel(channel_t
+ *chan);
+int channelpadding_update_padding_for_channel(channel_t *,
+ const channelpadding_negotiate_t
+ *chan);
+
+void channelpadding_disable_padding_on_channel(channel_t *chan);
+void channelpadding_reduce_padding_on_channel(channel_t *chan);
+int channelpadding_send_enable_command(channel_t *chan, uint16_t low_timeout,
+ uint16_t high_timeout);
+
+int channelpadding_get_circuits_available_timeout(void);
+unsigned int channelpadding_get_channel_idle_timeout(const channel_t *, int);
+void channelpadding_new_consensus_params(networkstatus_t *ns);
+
+#endif
+
diff --git a/src/or/channeltls.c b/src/or/channeltls.c
index dbed95fb43..8fb91d412f 100644
--- a/src/or/channeltls.c
+++ b/src/or/channeltls.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -57,6 +57,9 @@
#include "routerlist.h"
#include "scheduler.h"
#include "torcert.h"
+#include "networkstatus.h"
+#include "channelpadding_negotiation.h"
+#include "channelpadding.h"
/** How many CELL_PADDING cells have we received, ever? */
uint64_t stats_n_padding_cells_processed = 0;
@@ -122,6 +125,8 @@ static void channel_tls_process_netinfo_cell(cell_t *cell,
static int command_allowed_before_handshake(uint8_t command);
static int enter_v3_handshake_with_cell(var_cell_t *cell,
channel_tls_t *tlschan);
+static void channel_tls_process_padding_negotiate_cell(cell_t *cell,
+ channel_tls_t *chan);
/**
* Do parts of channel_tls_t initialization common to channel_tls_connect()
@@ -517,7 +522,7 @@ channel_tls_get_remote_addr_method(channel_t *chan, tor_addr_t *addr_out)
tor_assert(addr_out);
if (tlschan->conn) {
- tor_addr_copy(addr_out, &(TO_CONN(tlschan->conn)->addr));
+ tor_addr_copy(addr_out, &(tlschan->conn->real_addr));
rv = 1;
} else tor_addr_make_unspec(addr_out);
@@ -734,6 +739,15 @@ channel_tls_matches_target_method(channel_t *chan,
return 0;
}
+ /* real_addr is the address this connection came from.
+ * base_.addr is updated by connection_or_init_conn_from_address()
+ * to be the address in the descriptor. It may be tempting to
+ * allow either address to be allowed, but if we did so, it would
+ * enable someone who steals a relay's keys to impersonate/MITM it
+ * from anywhere on the Internet! (Because they could make long-lived
+ * TLS connections from anywhere to all relays, and wait for them to
+ * be used for extends).
+ */
return tor_addr_eq(&(tlschan->conn->real_addr), target);
}
@@ -1098,9 +1112,16 @@ channel_tls_handle_cell(cell_t *cell, or_connection_t *conn)
/* We note that we're on the internet whenever we read a cell. This is
* a fast operation. */
entry_guards_note_internet_connectivity(get_guard_selection_info());
+ rep_hist_padding_count_read(PADDING_TYPE_TOTAL);
+
+ if (TLS_CHAN_TO_BASE(chan)->currently_padding)
+ rep_hist_padding_count_read(PADDING_TYPE_ENABLED_TOTAL);
switch (cell->command) {
case CELL_PADDING:
+ rep_hist_padding_count_read(PADDING_TYPE_CELL);
+ if (TLS_CHAN_TO_BASE(chan)->currently_padding)
+ rep_hist_padding_count_read(PADDING_TYPE_ENABLED_CELL);
++stats_n_padding_cells_processed;
/* do nothing */
break;
@@ -1111,6 +1132,10 @@ channel_tls_handle_cell(cell_t *cell, or_connection_t *conn)
++stats_n_netinfo_cells_processed;
PROCESS_CELL(netinfo, cell, chan);
break;
+ case CELL_PADDING_NEGOTIATE:
+ ++stats_n_netinfo_cells_processed;
+ PROCESS_CELL(padding_negotiate, cell, chan);
+ break;
case CELL_CREATE:
case CELL_CREATE_FAST:
case CELL_CREATED:
@@ -1566,9 +1591,12 @@ channel_tls_process_versions_cell(var_cell_t *cell, channel_tls_t *chan)
/* We set this after sending the verions cell. */
/*XXXXX symbolic const.*/
- chan->base_.wide_circ_ids =
+ TLS_CHAN_TO_BASE(chan)->wide_circ_ids =
chan->conn->link_proto >= MIN_LINK_PROTO_FOR_WIDE_CIRC_IDS;
- chan->conn->wide_circ_ids = chan->base_.wide_circ_ids;
+ chan->conn->wide_circ_ids = TLS_CHAN_TO_BASE(chan)->wide_circ_ids;
+
+ TLS_CHAN_TO_BASE(chan)->padding_enabled =
+ chan->conn->link_proto >= MIN_LINK_PROTO_FOR_CHANNEL_PADDING;
if (send_certs) {
if (connection_or_send_certs_cell(chan->conn) < 0) {
@@ -1595,6 +1623,43 @@ channel_tls_process_versions_cell(var_cell_t *cell, channel_tls_t *chan)
}
/**
+ * Process a 'padding_negotiate' cell
+ *
+ * This function is called to handle an incoming PADDING_NEGOTIATE cell;
+ * enable or disable padding accordingly, and read and act on its timeout
+ * value contents.
+ */
+static void
+channel_tls_process_padding_negotiate_cell(cell_t *cell, channel_tls_t *chan)
+{
+ channelpadding_negotiate_t *negotiation;
+ tor_assert(cell);
+ tor_assert(chan);
+ tor_assert(chan->conn);
+
+ if (chan->conn->link_proto < MIN_LINK_PROTO_FOR_CHANNEL_PADDING) {
+ log_fn(LOG_PROTOCOL_WARN, LD_OR,
+ "Received a PADDING_NEGOTIATE cell on v%d connection; dropping.",
+ chan->conn->link_proto);
+ return;
+ }
+
+ if (channelpadding_negotiate_parse(&negotiation, cell->payload,
+ CELL_PAYLOAD_SIZE) < 0) {
+ log_fn(LOG_PROTOCOL_WARN, LD_OR,
+ "Received malformed PADDING_NEGOTIATE cell on v%d connection; "
+ "dropping.", chan->conn->link_proto);
+
+ return;
+ }
+
+ channelpadding_update_padding_for_channel(TLS_CHAN_TO_BASE(chan),
+ negotiation);
+
+ channelpadding_negotiate_free(negotiation);
+}
+
+/**
* Process a 'netinfo' cell
*
* This function is called to handle an incoming NETINFO cell; read and act
@@ -1611,6 +1676,7 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
const uint8_t *cp, *end;
uint8_t n_other_addrs;
time_t now = time(NULL);
+ const routerinfo_t *me = router_get_my_routerinfo();
long apparent_skew = 0;
tor_addr_t my_apparent_addr = TOR_ADDR_NULL;
@@ -1654,6 +1720,10 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
tor_assert(tor_mem_is_zero(
(const char*)(chan->conn->handshake_state->
authenticated_ed25519_peer_id.pubkey), 32));
+ /* If the client never authenticated, it's a tor client or bridge
+ * relay, and we must not use it for EXTEND requests (nor could we, as
+ * there are no authenticated peer IDs) */
+ channel_mark_client(TLS_CHAN_TO_BASE(chan));
channel_set_circid_type(TLS_CHAN_TO_BASE(chan), NULL,
chan->conn->link_proto < MIN_LINK_PROTO_FOR_WIDE_CIRC_IDS);
@@ -1689,8 +1759,20 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
if (my_addr_type == RESOLVED_TYPE_IPV4 && my_addr_len == 4) {
tor_addr_from_ipv4n(&my_apparent_addr, get_uint32(my_addr_ptr));
+
+ if (!get_options()->BridgeRelay && me &&
+ get_uint32(my_addr_ptr) == htonl(me->addr)) {
+ TLS_CHAN_TO_BASE(chan)->is_canonical_to_peer = 1;
+ }
+
} else if (my_addr_type == RESOLVED_TYPE_IPV6 && my_addr_len == 16) {
tor_addr_from_ipv6_bytes(&my_apparent_addr, (const char *) my_addr_ptr);
+
+ if (!get_options()->BridgeRelay && me &&
+ !tor_addr_is_null(&me->ipv6_addr) &&
+ tor_addr_eq(&my_apparent_addr, &me->ipv6_addr)) {
+ TLS_CHAN_TO_BASE(chan)->is_canonical_to_peer = 1;
+ }
}
n_other_addrs = (uint8_t) *cp++;
@@ -1706,6 +1788,14 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
connection_or_close_for_error(chan->conn, 0);
return;
}
+ /* A relay can connect from anywhere and be canonical, so
+ * long as it tells you from where it came. This may be a bit
+ * concerning.. Luckily we have another check in
+ * channel_tls_matches_target_method() to ensure that extends
+ * only go to the IP they ask for.
+ *
+ * XXX: Bleh. That check is not used if the connection is canonical.
+ */
if (tor_addr_eq(&addr, &(chan->conn->real_addr))) {
connection_or_set_canonical(chan->conn, 1);
break;
@@ -1714,11 +1804,26 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
--n_other_addrs;
}
+ if (me && !TLS_CHAN_TO_BASE(chan)->is_canonical_to_peer &&
+ channel_is_canonical(TLS_CHAN_TO_BASE(chan))) {
+ const char *descr =
+ TLS_CHAN_TO_BASE(chan)->get_remote_descr(TLS_CHAN_TO_BASE(chan), 0);
+ log_info(LD_OR,
+ "We made a connection to a relay at %s (fp=%s) but we think "
+ "they will not consider this connection canonical. They "
+ "think we are at %s, but we think its %s.",
+ safe_str(descr),
+ safe_str(hex_str(chan->conn->identity_digest, DIGEST_LEN)),
+ safe_str(tor_addr_is_null(&my_apparent_addr) ?
+ "<none>" : fmt_and_decorate_addr(&my_apparent_addr)),
+ safe_str(fmt_addr32(me->addr)));
+ }
+
/* Act on apparent skew. */
/** Warn when we get a netinfo skew with at least this value. */
#define NETINFO_NOTICE_SKEW 3600
if (labs(apparent_skew) > NETINFO_NOTICE_SKEW &&
- router_get_by_id_digest(chan->conn->identity_digest)) {
+ connection_or_digest_is_known_relay(chan->conn->identity_digest)) {
int trusted = router_digest_is_trusted_dir(chan->conn->identity_digest);
clock_skew_warning(TO_CONN(chan->conn), apparent_skew, trusted, LD_GENERAL,
"NETINFO cell", "OR");
diff --git a/src/or/channeltls.h b/src/or/channeltls.h
index 729e595615..1f9a39d8a4 100644
--- a/src/or/channeltls.h
+++ b/src/or/channeltls.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circpathbias.c b/src/or/circpathbias.c
index cdcb6deae4..4c0bd9e455 100644
--- a/src/or/circpathbias.c
+++ b/src/or/circpathbias.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circpathbias.h b/src/or/circpathbias.h
index ce76689d5f..2a4c316807 100644
--- a/src/or/circpathbias.h
+++ b/src/or/circpathbias.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 79962e8dbb..41ae51a3f2 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -73,7 +73,6 @@ static int circuit_deliver_create_cell(circuit_t *circ,
static int onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit);
static crypt_path_t *onion_next_hop_in_cpath(crypt_path_t *cpath);
static int onion_extend_cpath(origin_circuit_t *circ);
-static int count_acceptable_nodes(smartlist_t *routers);
static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice);
/** This function tries to get a channel to the specified endpoint,
@@ -817,12 +816,7 @@ should_use_create_fast_for_circuit(origin_circuit_t *circ)
* creating on behalf of others. */
return 0;
}
- if (options->FastFirstHopPK == -1) {
- /* option is "auto", so look at the consensus. */
- return networkstatus_get_param(NULL, "usecreatefast", 1, 0, 1);
- }
-
- return options->FastFirstHopPK;
+ return networkstatus_get_param(NULL, "usecreatefast", 0, 0, 1);
}
/** Return true if <b>circ</b> is the type of circuit we want to count
@@ -940,9 +934,18 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
memset(&cc, 0, sizeof(cc));
if (circ->build_state->onehop_tunnel)
control_event_bootstrap(BOOTSTRAP_STATUS_ONEHOP_CREATE, 0);
- else
+ else {
control_event_bootstrap(BOOTSTRAP_STATUS_CIRCUIT_CREATE, 0);
+ /* If this is not a one-hop tunnel, the channel is being used
+ * for traffic that wants anonymity and protection from traffic
+ * analysis (such as netflow record retention). That means we want
+ * to pad it.
+ */
+ if (circ->base_.n_chan->channel_usage < CHANNEL_USED_FOR_FULL_CIRCS)
+ circ->base_.n_chan->channel_usage = CHANNEL_USED_FOR_FULL_CIRCS;
+ }
+
node = node_get_by_id(circ->base_.n_chan->identity_digest);
fast = should_use_create_fast_for_circuit(circ);
if (!fast) {
@@ -1264,6 +1267,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Client asked me to extend back to the previous hop "
"(by Ed25519 ID).");
+ return -1;
}
n_chan = channel_get_for_extend((const char*)ec.node_id,
@@ -1546,13 +1550,98 @@ onionskin_answer(or_circuit_t *circ,
return 0;
}
-/** Choose a length for a circuit of purpose <b>purpose</b>: three + the
- * number of endpoints that would give something away about our destination.
+/** Helper for new_route_len(). Choose a circuit length for purpose
+ * <b>purpose</b>: DEFAULT_ROUTE_LEN (+ 1 if someone else chose the
+ * exit). If someone else chose the exit, they could be colluding
+ * with the exit, so add a randomly selected node to preserve
+ * anonymity.
+ *
+ * Here, "exit node" sometimes means an OR acting as an internal
+ * endpoint, rather than as a relay to an external endpoint. This
+ * means there need to be at least DEFAULT_ROUTE_LEN routers between
+ * us and the internal endpoint to preserve the same anonymity
+ * properties that we would get when connecting to an external
+ * endpoint. These internal endpoints can include:
+ *
+ * - Connections to a directory of hidden services
+ * (CIRCUIT_PURPOSE_C_GENERAL)
+ *
+ * - A client connecting to an introduction point, which the hidden
+ * service picked (CIRCUIT_PURPOSE_C_INTRODUCING, via
+ * circuit_get_open_circ_or_launch() which rewrites it from
+ * CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT)
+ *
+ * - A hidden service connecting to a rendezvous point, which the
+ * client picked (CIRCUIT_PURPOSE_S_CONNECT_REND, via
+ * rend_service_receive_introduction() and
+ * rend_service_relaunch_rendezvous)
+ *
+ * There are currently two situations where we picked the exit node
+ * ourselves, making DEFAULT_ROUTE_LEN a safe circuit length:
+ *
+ * - We are a hidden service connecting to an introduction point
+ * (CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, via
+ * rend_service_launch_establish_intro())
+ *
+ * - We are a router testing its own reachabiity
+ * (CIRCUIT_PURPOSE_TESTING, via consider_testing_reachability())
+ *
+ * onion_pick_cpath_exit() bypasses us (by not calling
+ * new_route_len()) in the one-hop tunnel case, so we don't need to
+ * handle that.
+ */
+static int
+route_len_for_purpose(uint8_t purpose, extend_info_t *exit_ei)
+{
+ int routelen = DEFAULT_ROUTE_LEN;
+ int known_purpose = 0;
+
+ if (!exit_ei)
+ return routelen;
+
+ switch (purpose) {
+ /* These two purposes connect to a router that we chose, so
+ * DEFAULT_ROUTE_LEN is safe. */
+ case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO:
+ /* hidden service connecting to introduction point */
+ case CIRCUIT_PURPOSE_TESTING:
+ /* router reachability testing */
+ known_purpose = 1;
+ break;
+
+ /* These three purposes connect to a router that someone else
+ * might have chosen, so add an extra hop to protect anonymity. */
+ case CIRCUIT_PURPOSE_C_GENERAL:
+ /* connecting to hidden service directory */
+ case CIRCUIT_PURPOSE_C_INTRODUCING:
+ /* client connecting to introduction point */
+ case CIRCUIT_PURPOSE_S_CONNECT_REND:
+ /* hidden service connecting to rendezvous point */
+ known_purpose = 1;
+ routelen++;
+ break;
+
+ default:
+ /* Got a purpose not listed above along with a chosen exit.
+ * Increase the circuit length by one anyway for safety. */
+ routelen++;
+ break;
+ }
+
+ if (BUG(exit_ei && !known_purpose)) {
+ log_warn(LD_BUG, "Unhandled purpose %d with a chosen exit; "
+ "assuming routelen %d.", purpose, routelen);
+ }
+ return routelen;
+}
+
+/** Choose a length for a circuit of purpose <b>purpose</b> and check
+ * if enough routers are available.
*
* If the routerlist <b>nodes</b> doesn't have enough routers
* to handle the desired path length, return -1.
*/
-static int
+STATIC int
new_route_len(uint8_t purpose, extend_info_t *exit_ei, smartlist_t *nodes)
{
int num_acceptable_routers;
@@ -1560,11 +1649,7 @@ new_route_len(uint8_t purpose, extend_info_t *exit_ei, smartlist_t *nodes)
tor_assert(nodes);
- routelen = DEFAULT_ROUTE_LEN;
- if (exit_ei &&
- purpose != CIRCUIT_PURPOSE_TESTING &&
- purpose != CIRCUIT_PURPOSE_S_ESTABLISH_INTRO)
- routelen++;
+ routelen = route_len_for_purpose(purpose, exit_ei);
num_acceptable_routers = count_acceptable_nodes(nodes);
@@ -1748,15 +1833,16 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
* we'll retry later in this function with need_update and
* need_capacity set to 0. */
}
- if (!(node->is_valid || options->AllowInvalid_ & ALLOW_INVALID_EXIT)) {
+ if (!(node->is_valid)) {
/* if it's invalid and we don't want it */
n_supported[i] = -1;
// log_fn(LOG_DEBUG,"Skipping node %s (index %d) -- invalid router.",
// router->nickname, i);
continue; /* skip invalid routers */
}
- if (options->ExcludeSingleHopRelays &&
- node_allows_single_hop_exits(node)) {
+ /* We do not allow relays that allow single hop exits by default. Option
+ * was deprecated in 0.2.9.2-alpha and removed in 0.3.1.0-alpha. */
+ if (node_allows_single_hop_exits(node)) {
n_supported[i] = -1;
continue;
}
@@ -1888,7 +1974,6 @@ pick_tor2web_rendezvous_node(router_crn_flags_t flags,
const or_options_t *options)
{
const node_t *rp_node = NULL;
- const int allow_invalid = (flags & CRN_ALLOW_INVALID) != 0;
const int need_desc = (flags & CRN_NEED_DESC) != 0;
const int pref_addr = (flags & CRN_PREF_ADDR) != 0;
const int direct_conn = (flags & CRN_DIRECT_CONN) != 0;
@@ -1900,7 +1985,6 @@ pick_tor2web_rendezvous_node(router_crn_flags_t flags,
/* Add all running nodes to all_live_nodes */
router_add_running_nodes_to_smartlist(all_live_nodes,
- allow_invalid,
0, 0, 0,
need_desc,
pref_addr,
@@ -1942,9 +2026,6 @@ pick_rendezvous_node(router_crn_flags_t flags)
{
const or_options_t *options = get_options();
- if (options->AllowInvalid_ & ALLOW_INVALID_RENDEZVOUS)
- flags |= CRN_ALLOW_INVALID;
-
#ifdef ENABLE_TOR2WEB_MODE
/* We want to connect directly to the node if we can */
router_crn_flags_t direct_flags = flags;
@@ -2001,8 +2082,6 @@ choose_good_exit_server(uint8_t purpose,
switch (purpose) {
case CIRCUIT_PURPOSE_C_GENERAL:
- if (options->AllowInvalid_ & ALLOW_INVALID_MIDDLE)
- flags |= CRN_ALLOW_INVALID;
if (is_internal) /* pick it like a middle hop */
return router_choose_random_node(NULL, options->ExcludeNodes, flags);
else
@@ -2188,8 +2267,8 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit_ei)
/** Return the number of routers in <b>routers</b> that are currently up
* and available for building circuits through.
*/
-static int
-count_acceptable_nodes(smartlist_t *nodes)
+MOCK_IMPL(STATIC int,
+count_acceptable_nodes, (smartlist_t *nodes))
{
int num=0;
@@ -2200,10 +2279,6 @@ count_acceptable_nodes(smartlist_t *nodes)
if (! node->is_running)
// log_debug(LD_CIRC,"Nope, the directory says %d is not running.",i);
continue;
- /* XXX This clause makes us count incorrectly: if AllowInvalidRouters
- * allows this node in some places, then we're getting an inaccurate
- * count. For now, be conservative and don't count it. But later we
- * should try to be smarter. */
if (! node->is_valid)
// log_debug(LD_CIRC,"Nope, the directory says %d is not valid.",i);
continue;
@@ -2274,8 +2349,6 @@ choose_good_middle_server(uint8_t purpose,
flags |= CRN_NEED_UPTIME;
if (state->need_capacity)
flags |= CRN_NEED_CAPACITY;
- if (options->AllowInvalid_ & ALLOW_INVALID_MIDDLE)
- flags |= CRN_ALLOW_INVALID;
choice = router_choose_random_node(excluded, options->ExcludeNodes, flags);
smartlist_free(excluded);
return choice;
@@ -2328,8 +2401,6 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state,
if (state->need_capacity)
flags |= CRN_NEED_CAPACITY;
}
- if (options->AllowInvalid_ & ALLOW_INVALID_ENTRY)
- flags |= CRN_ALLOW_INVALID;
choice = router_choose_random_node(excluded, options->ExcludeNodes, flags);
smartlist_free(excluded);
diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h
index ddb070b427..45d9b2fb75 100644
--- a/src/or/circuitbuild.h
+++ b/src/or/circuitbuild.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -77,6 +77,9 @@ void circuit_upgrade_circuits_from_guard_wait(void);
#ifdef CIRCUITBUILD_PRIVATE
STATIC circid_t get_unique_circ_id_by_chan(channel_t *chan);
+STATIC int new_route_len(uint8_t purpose, extend_info_t *exit_ei,
+ smartlist_t *nodes);
+MOCK_DECL(STATIC int, count_acceptable_nodes, (smartlist_t *nodes));
#if defined(ENABLE_TOR2WEB_MODE) || defined(TOR_UNIT_TESTS)
STATIC const node_t *pick_tor2web_rendezvous_node(router_crn_flags_t flags,
const or_options_t *options);
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index 8d6a4a7cc2..6ffaabc16f 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -1,7 +1,7 @@
/* Copyright 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -78,6 +78,7 @@
#include "rephist.h"
#include "routerlist.h"
#include "routerset.h"
+#include "channelpadding.h"
#include "ht.h"
@@ -358,8 +359,8 @@ channel_note_destroy_pending(channel_t *chan, circid_t id)
/** Called to indicate that a DESTROY is no longer pending on <b>chan</b> with
* circuit ID <b>id</b> -- typically, because it has been sent. */
-MOCK_IMPL(void, channel_note_destroy_not_pending,
- (channel_t *chan, circid_t id))
+MOCK_IMPL(void,
+channel_note_destroy_not_pending,(channel_t *chan, circid_t id))
{
circuit_t *circ = circuit_get_by_circid_channel_even_if_marked(id,chan);
if (circ) {
@@ -814,6 +815,11 @@ init_circuit_base(circuit_t *circ)
circ->global_circuitlist_idx = smartlist_len(circuit_get_global_list()) - 1;
}
+/** If we haven't yet decided on a good timeout value for circuit
+ * building, we close idle circuits aggressively so we can get more
+ * data points. */
+#define IDLE_TIMEOUT_WHILE_LEARNING (1*60)
+
/** Allocate space for a new circuit, initializing with <b>p_circ_id</b>
* and <b>p_conn</b>. Add it to the global circuit list.
*/
@@ -841,6 +847,41 @@ origin_circuit_new(void)
circuit_build_times_update_last_circ(get_circuit_build_times_mutable());
+ if (! circuit_build_times_disabled(get_options()) &&
+ circuit_build_times_needs_circuits(get_circuit_build_times())) {
+ /* Circuits should be shorter lived if we need more of them
+ * for learning a good build timeout */
+ circ->circuit_idle_timeout = IDLE_TIMEOUT_WHILE_LEARNING;
+ } else {
+ // This should always be larger than the current port prediction time
+ // remaining, or else we'll end up with the case where a circuit times out
+ // and another one is built, effectively doubling the timeout window.
+ //
+ // We also randomize it by up to 5% more (ie 5% of 0 to 3600 seconds,
+ // depending on how much circuit prediction time is remaining) so that
+ // we don't close a bunch of unused circuits all at the same time.
+ int prediction_time_remaining =
+ predicted_ports_prediction_time_remaining(time(NULL));
+ circ->circuit_idle_timeout = prediction_time_remaining+1+
+ crypto_rand_int(1+prediction_time_remaining/20);
+
+ if (circ->circuit_idle_timeout <= 0) {
+ log_warn(LD_BUG,
+ "Circuit chose a negative idle timeout of %d based on "
+ "%d seconds of predictive building remaining.",
+ circ->circuit_idle_timeout,
+ prediction_time_remaining);
+ circ->circuit_idle_timeout = IDLE_TIMEOUT_WHILE_LEARNING;
+ }
+
+ log_info(LD_CIRC,
+ "Circuit " U64_FORMAT " chose an idle timeout of %d based on "
+ "%d seconds of predictive building remaining.",
+ U64_PRINTF_ARG(circ->global_identifier),
+ circ->circuit_idle_timeout,
+ prediction_time_remaining);
+ }
+
return circ;
}
@@ -943,10 +984,6 @@ circuit_free(circuit_t *circ)
crypto_cipher_free(ocirc->n_crypto);
crypto_digest_free(ocirc->n_digest);
- if (ocirc->hs_token) {
- hs_circuitmap_remove_circuit(ocirc);
- }
-
if (ocirc->rend_splice) {
or_circuit_t *other = ocirc->rend_splice;
tor_assert(other->base_.magic == OR_CIRCUIT_MAGIC);
@@ -978,6 +1015,11 @@ circuit_free(circuit_t *circ)
/* Remove from map. */
circuit_set_n_circid_chan(circ, 0, NULL);
+ /* Clear HS circuitmap token from this circ (if any) */
+ if (circ->hs_token) {
+ hs_circuitmap_remove_circuit(circ);
+ }
+
/* Clear cell queue _after_ removing it from the map. Otherwise our
* "active" checks will be violated. */
cell_queue_clear(&circ->n_chan_cells);
@@ -1990,10 +2032,10 @@ single_conn_free_bytes(connection_t *conn)
}
if (conn->type == CONN_TYPE_DIR) {
dir_connection_t *dir_conn = TO_DIR_CONN(conn);
- if (dir_conn->zlib_state) {
- result += tor_zlib_state_size(dir_conn->zlib_state);
- tor_zlib_free(dir_conn->zlib_state);
- dir_conn->zlib_state = NULL;
+ if (dir_conn->compress_state) {
+ result += tor_compress_state_size(dir_conn->compress_state);
+ tor_compress_free(dir_conn->compress_state);
+ dir_conn->compress_state = NULL;
}
}
return result;
diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h
index 6abee37dc4..d647062f46 100644
--- a/src/or/circuitlist.h
+++ b/src/or/circuitlist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux.c b/src/or/circuitmux.c
index 036fb9570d..6c825011b6 100644
--- a/src/or/circuitmux.c
+++ b/src/or/circuitmux.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux.h b/src/or/circuitmux.h
index f53abdd8c8..bf93bb8cbf 100644
--- a/src/or/circuitmux.h
+++ b/src/or/circuitmux.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux_ewma.c b/src/or/circuitmux_ewma.c
index 0219459cdb..c2440b13f0 100644
--- a/src/or/circuitmux_ewma.c
+++ b/src/or/circuitmux_ewma.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitmux_ewma.h b/src/or/circuitmux_ewma.h
index a7b8961ac6..1f04408789 100644
--- a/src/or/circuitmux_ewma.h
+++ b/src/or/circuitmux_ewma.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index 6e73372550..51d580a1a4 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuitstats.h b/src/or/circuitstats.h
index c748f82d5e..8a1dec4bfd 100644
--- a/src/or/circuitstats.h
+++ b/src/or/circuitstats.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index c2b450606b..9f9d3abf7c 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -705,18 +705,15 @@ circuit_expire_building(void)
}
}
- /* If this is a hidden service client circuit which is far enough
- * along in connecting to its destination, and we haven't already
- * flagged it as 'timed out', and the user has not told us to
- * close such circs immediately on timeout, flag it as 'timed out'
- * so we'll launch another intro or rend circ, but don't mark it
- * for close yet.
+ /* If this is a hidden service client circuit which is far enough along in
+ * connecting to its destination, and we haven't already flagged it as
+ * 'timed out', flag it so we'll launch another intro or rend circ, but
+ * don't mark it for close yet.
*
* (Circs flagged as 'timed out' are given a much longer timeout
* period above, so we won't close them in the next call to
* circuit_expire_building.) */
- if (!(options->CloseHSClientCircuitsImmediatelyOnTimeout) &&
- !(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out)) {
+ if (!(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out)) {
switch (victim->purpose) {
case CIRCUIT_PURPOSE_C_REND_READY:
/* We only want to spare a rend circ if it has been specified in
@@ -750,8 +747,7 @@ circuit_expire_building(void)
/* If this is a service-side rendezvous circuit which is far
* enough along in connecting to its destination, consider sparing
* it. */
- if (!(options->CloseHSServiceRendCircuitsImmediatelyOnTimeout) &&
- !(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out) &&
+ if (!(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out) &&
victim->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND) {
log_info(LD_CIRC,"Marking circ %u (state %d:%s, purpose %d) "
"as timed-out HS circ; relaunching rendezvous attempt.",
@@ -1240,8 +1236,8 @@ circuit_predict_and_launch_new(void)
/** Build a new test circuit every 5 minutes */
#define TESTING_CIRCUIT_INTERVAL 300
-/** This function is called once a second, if router_have_min_dir_info() is
- * true. Its job is to make sure all services we offer have enough circuits
+/** This function is called once a second, if router_have_minimum_dir_info()
+ * is true. Its job is to make sure all services we offer have enough circuits
* available. Some services just want enough circuits for current tasks,
* whereas others want a minimum set of idle circuits hanging around.
*/
@@ -1383,11 +1379,6 @@ circuit_detach_stream(circuit_t *circ, edge_connection_t *conn)
tor_fragile_assert();
}
-/** If we haven't yet decided on a good timeout value for circuit
- * building, we close idles circuits aggressively so we can get more
- * data points. */
-#define IDLE_TIMEOUT_WHILE_LEARNING (10*60)
-
/** Find each circuit that has been unused for too long, or dirty
* for too long and has no streams on it: mark it for close.
*/
@@ -1397,21 +1388,15 @@ circuit_expire_old_circuits_clientside(void)
struct timeval cutoff, now;
tor_gettimeofday(&now);
- cutoff = now;
last_expired_clientside_circuits = now.tv_sec;
- if (! circuit_build_times_disabled(get_options()) &&
- circuit_build_times_needs_circuits(get_circuit_build_times())) {
- /* Circuits should be shorter lived if we need more of them
- * for learning a good build timeout */
- cutoff.tv_sec -= IDLE_TIMEOUT_WHILE_LEARNING;
- } else {
- cutoff.tv_sec -= get_options()->CircuitIdleTimeout;
- }
-
SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, circ) {
if (circ->marked_for_close || !CIRCUIT_IS_ORIGIN(circ))
continue;
+
+ cutoff = now;
+ cutoff.tv_sec -= TO_ORIGIN_CIRCUIT(circ)->circuit_idle_timeout;
+
/* If the circuit has been dirty for too long, and there are no streams
* on it, mark it for close.
*/
@@ -1437,8 +1422,10 @@ circuit_expire_old_circuits_clientside(void)
(circ->purpose >= CIRCUIT_PURPOSE_C_INTRODUCING &&
circ->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) ||
circ->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND) {
- log_debug(LD_CIRC,
- "Closing circuit that has been unused for %ld msec.",
+ log_info(LD_CIRC,
+ "Closing circuit "U64_FORMAT
+ " that has been unused for %ld msec.",
+ U64_PRINTF_ARG(TO_ORIGIN_CIRCUIT(circ)->global_identifier),
tv_mdiff(&circ->timestamp_began, &now));
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) {
diff --git a/src/or/circuituse.h b/src/or/circuituse.h
index e5f8700ea2..ad4c214a3b 100644
--- a/src/or/circuituse.h
+++ b/src/or/circuituse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/command.c b/src/or/command.c
index 5866c386e4..be912dffa7 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -46,6 +46,7 @@
#include "config.h"
#include "control.h"
#include "cpuworker.h"
+#include "dos.h"
#include "hibernate.h"
#include "nodelist.h"
#include "onion.h"
@@ -247,6 +248,11 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
(unsigned)cell->circ_id,
U64_PRINTF_ARG(chan->global_identifier), chan);
+ /* First thing we do, even though the cell might be invalid, is inform the
+ * DoS mitigation subsystem layer of this event. Validation is done by this
+ * function. */
+ dos_cc_new_create_cell(chan);
+
/* We check for the conditions that would make us drop the cell before
* we check for the conditions that would make us send a DESTROY back,
* since those conditions would make a DESTROY nonsensical. */
@@ -284,6 +290,13 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
return;
}
+ /* Check if we should apply a defense for this channel. */
+ if (dos_cc_get_defense_type(chan) == DOS_CC_DEFENSE_REFUSE_CELL) {
+ channel_send_destroy(cell->circ_id, chan,
+ END_CIRC_REASON_RESOURCELIMIT);
+ return;
+ }
+
if (!server_mode(options) ||
(!public_server_mode(options) && channel_is_outgoing(chan))) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
@@ -326,10 +339,13 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
return;
}
+ if (connection_or_digest_is_known_relay(chan->identity_digest)) {
+ rep_hist_note_circuit_handshake_requested(create_cell->handshake_type);
+ }
+
if (create_cell->handshake_type != ONION_HANDSHAKE_TYPE_FAST) {
/* hand it off to the cpuworkers, and then return. */
- if (connection_or_digest_is_known_relay(chan->identity_digest))
- rep_hist_note_circuit_handshake_requested(create_cell->handshake_type);
+
if (assign_onionskin_to_cpuworker(circ, create_cell) < 0) {
log_debug(LD_GENERAL,"Failed to hand off onionskin. Closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT);
@@ -344,10 +360,6 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
int len;
created_cell_t created_cell;
- /* Make sure we never try to use the OR connection on which we
- * received this cell to satisfy an EXTEND request, */
- channel_mark_client(chan);
-
memset(&created_cell, 0, sizeof(created_cell));
len = onion_skin_server_handshake(ONION_HANDSHAKE_TYPE_FAST,
create_cell->onionskin,
diff --git a/src/or/command.h b/src/or/command.h
index 12cda6a463..5079d42e75 100644
--- a/src/or/command.h
+++ b/src/or/command.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/config.c b/src/or/config.c
index ea98ddacdc..cac4ce8125 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -69,16 +69,19 @@
#include "circuitmux.h"
#include "circuitmux_ewma.h"
#include "circuitstats.h"
+#include "compress.h"
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
#include "connection_or.h"
+#include "consdiffmgr.h"
#include "control.h"
#include "confparse.h"
#include "cpuworker.h"
#include "dirserv.h"
#include "dirvote.h"
#include "dns.h"
+#include "dos.h"
#include "entrynodes.h"
#include "geoip.h"
#include "hibernate.h"
@@ -99,7 +102,6 @@
#include "statefile.h"
#include "transports.h"
#include "ext_orport.h"
-#include "torgzip.h"
#ifdef _WIN32
#include <shlobj.h>
#endif
@@ -205,10 +207,10 @@ static config_var_t option_vars_[] = {
V(AccountingStart, STRING, NULL),
V(Address, STRING, NULL),
V(AllowDotExit, BOOL, "0"),
- V(AllowInvalidNodes, CSV, "middle,rendezvous"),
+ OBSOLETE("AllowInvalidNodes"),
V(AllowNonRFC953Hostnames, BOOL, "0"),
- V(AllowSingleHopCircuits, BOOL, "0"),
- V(AllowSingleHopExits, BOOL, "0"),
+ OBSOLETE("AllowSingleHopCircuits"),
+ OBSOLETE("AllowSingleHopExits"),
V(AlternateBridgeAuthority, LINELIST, NULL),
V(AlternateDirAuthority, LINELIST, NULL),
OBSOLETE("AlternateHSAuthority"),
@@ -242,9 +244,11 @@ static config_var_t option_vars_[] = {
V(BridgeRecordUsageByCountry, BOOL, "1"),
V(BridgeRelay, BOOL, "0"),
V(CellStatistics, BOOL, "0"),
+ V(PaddingStatistics, BOOL, "1"),
V(LearnCircuitBuildTimeout, BOOL, "1"),
V(CircuitBuildTimeout, INTERVAL, "0"),
- V(CircuitIdleTimeout, INTERVAL, "1 hour"),
+ OBSOLETE("CircuitIdleTimeout"),
+ V(CircuitsAvailableTimeout, INTERVAL, "0"),
V(CircuitStreamTimeout, INTERVAL, "0"),
V(CircuitPriorityHalflife, DOUBLE, "-100.0"), /*negative:'Use default'*/
V(ClientDNSRejectInternalAddresses, BOOL,"1"),
@@ -261,7 +265,7 @@ static config_var_t option_vars_[] = {
V(ConstrainedSockets, BOOL, "0"),
V(ConstrainedSockSize, MEMUNIT, "8192"),
V(ContactInfo, STRING, NULL),
- V(ControlListenAddress, LINELIST, NULL),
+ OBSOLETE("ControlListenAddress"),
VPORT(ControlPort),
V(ControlPortFileGroupReadable,BOOL, "0"),
V(ControlPortWriteToFile, FILENAME, NULL),
@@ -278,7 +282,7 @@ static config_var_t option_vars_[] = {
V(DisableNetwork, BOOL, "0"),
V(DirAllowPrivateAddresses, BOOL, "0"),
V(TestingAuthDirTimeToLearnReachability, INTERVAL, "30 minutes"),
- V(DirListenAddress, LINELIST, NULL),
+ OBSOLETE("DirListenAddress"),
V(DirPolicy, LINELIST, NULL),
VPORT(DirPort),
V(DirPortFrontPage, FILENAME, NULL),
@@ -299,7 +303,20 @@ static config_var_t option_vars_[] = {
OBSOLETE("DisableV2DirectoryInfo_"),
OBSOLETE("DynamicDHGroups"),
VPORT(DNSPort),
- V(DNSListenAddress, LINELIST, NULL),
+ OBSOLETE("DNSListenAddress"),
+ /* DoS circuit creation options. */
+ V(DoSCircuitCreationEnabled, AUTOBOOL, "auto"),
+ V(DoSCircuitCreationMinConnections, UINT, "0"),
+ V(DoSCircuitCreationRate, UINT, "0"),
+ V(DoSCircuitCreationBurst, UINT, "0"),
+ V(DoSCircuitCreationDefenseType, INT, "0"),
+ V(DoSCircuitCreationDefenseTimePeriod, INTERVAL, "0"),
+ /* DoS connection options. */
+ V(DoSConnectionEnabled, AUTOBOOL, "auto"),
+ V(DoSConnectionMaxConcurrentCount, UINT, "0"),
+ V(DoSConnectionDefenseType, INT, "0"),
+ /* DoS single hop client options. */
+ V(DoSRefuseSingleHopClientRendezvous, AUTOBOOL, "auto"),
V(DownloadExtraInfo, BOOL, "0"),
V(TestingEnableConnBwEvent, BOOL, "0"),
V(TestingEnableCellStatsEvent, BOOL, "0"),
@@ -310,7 +327,7 @@ static config_var_t option_vars_[] = {
V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "10 minutes"),
V(ExcludeNodes, ROUTERSET, NULL),
V(ExcludeExitNodes, ROUTERSET, NULL),
- V(ExcludeSingleHopRelays, BOOL, "1"),
+ OBSOLETE("ExcludeSingleHopRelays"),
V(ExitNodes, ROUTERSET, NULL),
V(ExitPolicy, LINELIST, NULL),
V(ExitPolicyRejectPrivate, BOOL, "1"),
@@ -330,7 +347,7 @@ static config_var_t option_vars_[] = {
OBSOLETE("FallbackNetworkstatusFile"),
V(FascistFirewall, BOOL, "0"),
V(FirewallPorts, CSV, ""),
- V(FastFirstHopPK, AUTOBOOL, "auto"),
+ OBSOLETE("FastFirstHopPK"),
V(FetchDirInfoEarly, BOOL, "0"),
V(FetchDirInfoExtraEarly, BOOL, "0"),
V(FetchServerDescriptors, BOOL, "1"),
@@ -367,8 +384,8 @@ static config_var_t option_vars_[] = {
VAR("HiddenServiceNumIntroductionPoints", LINELIST_S, RendConfigLines, NULL),
VAR("HiddenServiceStatistics", BOOL, HiddenServiceStatistics_option, "1"),
V(HidServAuth, LINELIST, NULL),
- V(CloseHSClientCircuitsImmediatelyOnTimeout, BOOL, "0"),
- V(CloseHSServiceRendCircuitsImmediatelyOnTimeout, BOOL, "0"),
+ OBSOLETE("CloseHSClientCircuitsImmediatelyOnTimeout"),
+ OBSOLETE("CloseHSServiceRendCircuitsImmediatelyOnTimeout"),
V(HiddenServiceSingleHopMode, BOOL, "0"),
V(HiddenServiceNonAnonymousMode,BOOL, "0"),
V(HTTPProxy, STRING, NULL),
@@ -397,25 +414,26 @@ static config_var_t option_vars_[] = {
V(MaxAdvertisedBandwidth, MEMUNIT, "1 GB"),
V(MaxCircuitDirtiness, INTERVAL, "10 minutes"),
V(MaxClientCircuitsPending, UINT, "32"),
+ V(MaxConsensusAgeForDiffs, INTERVAL, "0 seconds"),
VAR("MaxMemInQueues", MEMUNIT, MaxMemInQueues_raw, "0"),
OBSOLETE("MaxOnionsPending"),
V(MaxOnionQueueDelay, MSEC_INTERVAL, "1750 msec"),
V(MaxUnparseableDescSizeToLog, MEMUNIT, "10 MB"),
V(MinMeasuredBWsForAuthToIgnoreAdvertised, INT, "500"),
- V(MyFamily, STRING, NULL),
+ VAR("MyFamily", LINELIST, MyFamily_lines, NULL),
V(NewCircuitPeriod, INTERVAL, "30 seconds"),
OBSOLETE("NamingAuthoritativeDirectory"),
- V(NATDListenAddress, LINELIST, NULL),
+ OBSOLETE("NATDListenAddress"),
VPORT(NATDPort),
V(Nickname, STRING, NULL),
- V(PredictedPortsRelevanceTime, INTERVAL, "1 hour"),
- V(WarnUnsafeSocks, BOOL, "1"),
+ OBSOLETE("PredictedPortsRelevanceTime"),
+ OBSOLETE("WarnUnsafeSocks"),
VAR("NodeFamily", LINELIST, NodeFamilies, NULL),
V(NumCPUs, UINT, "0"),
V(NumDirectoryGuards, UINT, "0"),
V(NumEntryGuards, UINT, "0"),
V(OfflineMasterKey, BOOL, "0"),
- V(ORListenAddress, LINELIST, NULL),
+ OBSOLETE("ORListenAddress"),
VPORT(ORPort),
V(OutboundBindAddress, LINELIST, NULL),
V(OutboundBindAddressOR, LINELIST, NULL),
@@ -465,6 +483,8 @@ static config_var_t option_vars_[] = {
V(RecommendedClientVersions, LINELIST, NULL),
V(RecommendedServerVersions, LINELIST, NULL),
V(RecommendedPackages, LINELIST, NULL),
+ V(ReducedConnectionPadding, BOOL, "0"),
+ V(ConnectionPadding, AUTOBOOL, "auto"),
V(RefuseUnknownExits, AUTOBOOL, "auto"),
V(RejectPlaintextPorts, CSV, ""),
V(RelayBandwidthBurst, MEMUNIT, "0"),
@@ -488,7 +508,7 @@ static config_var_t option_vars_[] = {
V(SchedulerHighWaterMark__, MEMUNIT, "101 MB"),
V(SchedulerMaxFlushCells__, UINT, "1000"),
V(ShutdownWaitLength, INTERVAL, "30 seconds"),
- V(SocksListenAddress, LINELIST, NULL),
+ OBSOLETE("SocksListenAddress"),
V(SocksPolicy, LINELIST, NULL),
VPORT(SocksPort),
V(SocksTimeout, INTERVAL, "2 minutes"),
@@ -501,10 +521,10 @@ static config_var_t option_vars_[] = {
V(TokenBucketRefillInterval, MSEC_INTERVAL, "100 msec"),
V(Tor2webMode, BOOL, "0"),
V(Tor2webRendezvousPoints, ROUTERSET, NULL),
- V(TLSECGroup, STRING, NULL),
+ OBSOLETE("TLSECGroup"),
V(TrackHostExits, CSV, NULL),
V(TrackHostExitsExpire, INTERVAL, "30 minutes"),
- V(TransListenAddress, LINELIST, NULL),
+ OBSOLETE("TransListenAddress"),
VPORT(TransPort),
V(TransProxyType, STRING, "default"),
OBSOLETE("TunnelDirConns"),
@@ -560,11 +580,13 @@ static config_var_t option_vars_[] = {
"10800, 21600, 43200"),
/* With the ClientBootstrapConsensus*Download* below:
* Clients with only authorities will try:
- * - 3 authorities over 10 seconds, then wait 60 minutes.
+ * - at least 3 authorities over 10 seconds, then exponentially backoff,
+ * with the next attempt 3-21 seconds later,
* Clients with authorities and fallbacks will try:
- * - 2 authorities and 4 fallbacks over 21 seconds, then wait 60 minutes.
+ * - at least 2 authorities and 4 fallbacks over 21 seconds, then
+ * exponentially backoff, with the next attempts 4-33 seconds later,
* Clients will also retry when an application request arrives.
- * After a number of failed reqests, clients retry every 3 days + 1 hour.
+ * After a number of failed requests, clients retry every 3 days + 1 hour.
*
* Clients used to try 2 authorities over 10 seconds, then wait for
* 60 minutes or an application request.
@@ -669,35 +691,8 @@ static const config_deprecation_t option_deprecation_notes_[] = {
/* Deprecated since 0.2.9.2-alpha... */
{ "AllowDotExit", "Unrestricted use of the .exit notation can be used for "
"a wide variety of application-level attacks." },
- { "AllowInvalidNodes", "There is no reason to enable this option; at best "
- "it will make you easier to track." },
- { "AllowSingleHopCircuits", "Almost no relays actually allow single-hop "
- "exits, making this option pointless." },
- { "AllowSingleHopExits", "Turning this on will make your relay easier "
- "to abuse." },
{ "ClientDNSRejectInternalAddresses", "Turning this on makes your client "
"easier to fingerprint, and may open you to esoteric attacks." },
- { "ExcludeSingleHopRelays", "Turning it on makes your client easier to "
- "fingerprint." },
- { "FastFirstHopPK", "Changing this option does not make your client more "
- "secure, but does make it easier to fingerprint." },
- { "CloseHSClientCircuitsImmediatelyOnTimeout", "This option makes your "
- "client easier to fingerprint." },
- { "CloseHSServiceRendCircuitsImmediatelyOnTimeout", "This option makes "
- "your hidden services easier to fingerprint." },
- { "WarnUnsafeSocks", "Changing this option makes it easier for you "
- "to accidentally lose your anonymity by leaking DNS information" },
- { "TLSECGroup", "The default is a nice secure choice; the other option "
- "is less secure." },
- { "ControlListenAddress", "Use ControlPort instead." },
- { "DirListenAddress", "Use DirPort instead, possibly with the "
- "NoAdvertise sub-option" },
- { "DNSListenAddress", "Use DNSPort instead." },
- { "SocksListenAddress", "Use SocksPort instead." },
- { "TransListenAddress", "Use TransPort instead." },
- { "NATDListenAddress", "Use NATDPort instead." },
- { "ORListenAddress", "Use ORPort instead, possibly with the "
- "NoAdvertise sub-option" },
/* End of options deprecated since 0.2.9.2-alpha. */
{ NULL, NULL }
@@ -714,7 +709,9 @@ static int options_transition_affects_workers(
const or_options_t *old_options, const or_options_t *new_options);
static int options_transition_affects_descriptor(
const or_options_t *old_options, const or_options_t *new_options);
-static int check_nickname_list(char **lst, const char *name, char **msg);
+static int normalize_nickname_list(config_line_t **normalized_out,
+ const config_line_t *lst, const char *name,
+ char **msg);
static char *get_bindaddr_from_transport_listen_line(const char *line,
const char *transport);
static int parse_ports(or_options_t *options, int validate_only,
@@ -922,6 +919,7 @@ or_options_free(or_options_t *options)
tor_free(options->BridgePassword_AuthDigest_);
tor_free(options->command_arg);
tor_free(options->master_key_fname);
+ config_free_lines(options->MyFamily);
config_free(&options_format, options);
}
@@ -1016,39 +1014,7 @@ escaped_safe_str(const char *address)
/** List of default directory authorities */
static const char *default_authorities[] = {
- "moria1 orport=9101 "
- "v3ident=D586D18309DED4CD6D57C18FDB97EFA96D330566 "
- "128.31.0.39:9131 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31",
- "tor26 orport=443 "
- "v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
- "ipv6=[2001:858:2:2:aabb:0:563b:1526]:443 "
- "86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
- "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",
- "gabelmoo orport=443 "
- "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
- "ipv6=[2001:638:a000:4140::ffff:189]:443 "
- "131.188.40.189:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
- "dannenberg orport=443 "
- "v3ident=0232AF901C31A04EE9848595AF9BB7620D4C5B2E "
- "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
- "maatuska orport=80 "
- "v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
- "ipv6=[2001:67c:289c::9]:80 "
- "171.25.193.9:443 BD6A 8292 55CB 08E6 6FBE 7D37 4836 3586 E46B 3810",
- "Faravahar orport=443 "
- "v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
- "154.35.175.225:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
- "longclaw orport=443 "
- "v3ident=23D15D965BC35114467363C165C4F724B64B4F66 "
- "199.58.81.140:80 74A9 1064 6BCE EFBC D2E8 74FC 1DC9 9743 0F96 8145",
- "bastet orport=443 "
- "v3ident=27102BC123E7AF1D4741AE047E160C91ADC76B21 "
- "ipv6=[2620:13:4000:6000::1000:118]:443 "
- "204.13.164.118:80 24E2 F139 121D 4394 C54B 5BCC 368B 3B41 1857 C413",
+#include "auth_dirs.inc"
NULL
};
@@ -1563,23 +1529,6 @@ get_effective_bwburst(const or_options_t *options)
return (uint32_t)bw;
}
-/** Return True if any changes from <b>old_options</b> to
- * <b>new_options</b> needs us to refresh our TLS context. */
-static int
-options_transition_requires_fresh_tls_context(const or_options_t *old_options,
- const or_options_t *new_options)
-{
- tor_assert(new_options);
-
- if (!old_options)
- return 0;
-
- if (!opt_streq(old_options->TLSECGroup, new_options->TLSECGroup))
- return 1;
-
- return 0;
-}
-
/**
* Return true if changing the configuration from <b>old</b> to <b>new</b>
* affects the guard susbsystem.
@@ -1798,13 +1747,6 @@ options_act(const or_options_t *old_options)
log_warn(LD_BUG,"Error initializing keys; exiting");
return -1;
}
- } else if (old_options &&
- options_transition_requires_fresh_tls_context(old_options,
- options)) {
- if (router_initialize_tls_context() < 0) {
- log_warn(LD_BUG,"Error initializing TLS context.");
- return -1;
- }
}
/* Write our PID to the PID file. If we do not have write permissions we
@@ -1825,6 +1767,15 @@ options_act(const or_options_t *old_options)
return -1;
}
+ if (server_mode(options)) {
+ static int cdm_initialized = 0;
+ if (cdm_initialized == 0) {
+ cdm_initialized = 1;
+ consdiffmgr_configure(NULL);
+ consdiffmgr_validate();
+ }
+ }
+
if (init_control_cookie_authentication(options->CookieAuthentication) < 0) {
log_warn(LD_CONFIG,"Error creating control cookie authentication file.");
return -1;
@@ -1990,9 +1941,16 @@ options_act(const or_options_t *old_options)
if (transition_affects_workers) {
log_info(LD_GENERAL,
"Worker-related options changed. Rotating workers.");
+ const int server_mode_turned_on =
+ server_mode(options) && !server_mode(old_options);
+ const int dir_server_mode_turned_on =
+ dir_server_mode(options) && !dir_server_mode(old_options);
- if (server_mode(options) && !server_mode(old_options)) {
+ if (server_mode_turned_on || dir_server_mode_turned_on) {
cpu_init();
+ }
+
+ if (server_mode_turned_on) {
ip_address_changed(0);
if (have_completed_a_circuit() || !any_predicted_circuits(time(NULL)))
inform_testing_reachability();
@@ -2137,6 +2095,17 @@ options_act(const or_options_t *old_options)
}
}
+ /* DoS mitigation subsystem only applies to public relay. */
+ if (public_server_mode(options)) {
+ /* If we are configured as a relay, initialize the subsystem. Even on HUP,
+ * this is safe to call as it will load data from the current options
+ * or/and the consensus. */
+ dos_init();
+ } else if (old_options && public_server_mode(old_options)) {
+ /* Going from relay to non relay, clean it up. */
+ dos_free_all();
+ }
+
/* Load the webpage we're going to serve every time someone asks for '/' on
our DirPort. */
tor_free(global_dirfrontpagecontents);
@@ -2357,7 +2326,7 @@ print_usage(void)
printf(
"Copyright (c) 2001-2004, Roger Dingledine\n"
"Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson\n"
-"Copyright (c) 2007-2016, The Tor Project, Inc.\n\n"
+"Copyright (c) 2007-2017, The Tor Project, Inc.\n\n"
"tor -f <torrc> [args]\n"
"See man page for options, or https://www.torproject.org/ for "
"documentation.\n");
@@ -2819,13 +2788,13 @@ compute_publishserverdescriptor(or_options_t *options)
#define MIN_REND_POST_PERIOD (10*60)
#define MIN_REND_POST_PERIOD_TESTING (5)
-/** Highest allowable value for PredictedPortsRelevanceTime; if this is
- * too high, our selection of exits will decrease for an extended
- * period of time to an uncomfortable level .*/
-#define MAX_PREDICTED_CIRCS_RELEVANCE (60*60)
+/** Highest allowable value for CircuitsAvailableTimeout.
+ * If this is too large, client connections will stay open for too long,
+ * incurring extra padding overhead. */
+#define MAX_CIRCS_AVAILABLE_TIME (24*60*60)
/** Highest allowable value for RendPostPeriod. */
-#define MAX_DIR_PERIOD (MIN_ONION_KEY_LIFETIME/2)
+#define MAX_DIR_PERIOD ((7*24*60*60)/2)
/** Lowest allowable value for MaxCircuitDirtiness; if this is too low, Tor
* will generate too many circuits and potentially overload the network. */
@@ -3008,6 +2977,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
tor_assert(msg);
*msg = NULL;
+ if (parse_ports(options, 1, msg, &n_ports,
+ &world_writable_control_socket) < 0)
+ return -1;
+
/* Set UseEntryGuards from the configured value, before we check it below.
* We change UseEntryGuards when it's incompatible with other options,
* but leave UseEntryGuards_option with the original value.
@@ -3026,10 +2999,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
"for details.", uname);
}
- if (parse_ports(options, 1, msg, &n_ports,
- &world_writable_control_socket) < 0)
- return -1;
-
if (parse_outbound_addresses(options, 1, msg) < 0)
return -1;
@@ -3122,14 +3091,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
if (strcasecmp(options->TransProxyType, "default") &&
!options->TransPort_set) {
- REJECT("Cannot use TransProxyType without any valid TransPort or "
- "TransListenAddress.");
+ REJECT("Cannot use TransProxyType without any valid TransPort.");
}
}
#else
if (options->TransPort_set)
- REJECT("TransPort and TransListenAddress are disabled "
- "in this build.");
+ REJECT("TransPort is disabled in this build.");
#endif
if (options->TokenBucketRefillInterval <= 0
@@ -3166,15 +3133,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
}
- if (options->TLSECGroup && (strcasecmp(options->TLSECGroup, "P256") &&
- strcasecmp(options->TLSECGroup, "P224"))) {
- COMPLAIN("Unrecognized TLSECGroup: Falling back to the default.");
- tor_free(options->TLSECGroup);
- }
- if (!evaluate_ecgroup_for_tls(options->TLSECGroup)) {
- REJECT("Unsupported TLSECGroup.");
- }
-
if (options->ExcludeNodes && options->StrictNodes) {
COMPLAIN("You have asked to exclude certain relays from all positions "
"in your circuits. Expect hidden services and other Tor "
@@ -3382,28 +3340,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
server_mode(options));
options->MaxMemInQueues_low_threshold = (options->MaxMemInQueues / 4) * 3;
- options->AllowInvalid_ = 0;
-
- if (options->AllowInvalidNodes) {
- SMARTLIST_FOREACH_BEGIN(options->AllowInvalidNodes, const char *, cp) {
- if (!strcasecmp(cp, "entry"))
- options->AllowInvalid_ |= ALLOW_INVALID_ENTRY;
- else if (!strcasecmp(cp, "exit"))
- options->AllowInvalid_ |= ALLOW_INVALID_EXIT;
- else if (!strcasecmp(cp, "middle"))
- options->AllowInvalid_ |= ALLOW_INVALID_MIDDLE;
- else if (!strcasecmp(cp, "introduction"))
- options->AllowInvalid_ |= ALLOW_INVALID_INTRODUCTION;
- else if (!strcasecmp(cp, "rendezvous"))
- options->AllowInvalid_ |= ALLOW_INVALID_RENDEZVOUS;
- else {
- tor_asprintf(msg,
- "Unrecognized value '%s' in AllowInvalidNodes", cp);
- return -1;
- }
- } SMARTLIST_FOREACH_END(cp);
- }
-
if (!options->SafeLogging ||
!strcasecmp(options->SafeLogging, "0")) {
options->SafeLogging_ = SAFELOG_SCRUB_NONE;
@@ -3439,6 +3375,14 @@ options_validate(or_options_t *old_options, or_options_t *options,
options->DirPort_set = 0;
}
+ if (server_mode(options) && options->ConnectionPadding != -1) {
+ REJECT("Relays must use 'auto' for the ConnectionPadding setting.");
+ }
+
+ if (server_mode(options) && options->ReducedConnectionPadding != 0) {
+ REJECT("Relays cannot set ReducedConnectionPadding. ");
+ }
+
if (options->MinUptimeHidServDirectoryV2 < 0) {
log_warn(LD_CONFIG, "MinUptimeHidServDirectoryV2 option must be at "
"least 0 seconds. Changing to 0.");
@@ -3460,17 +3404,17 @@ options_validate(or_options_t *old_options, or_options_t *options,
options->RendPostPeriod = MAX_DIR_PERIOD;
}
- if (options->PredictedPortsRelevanceTime >
- MAX_PREDICTED_CIRCS_RELEVANCE) {
- log_warn(LD_CONFIG, "PredictedPortsRelevanceTime is too large; "
- "clipping to %ds.", MAX_PREDICTED_CIRCS_RELEVANCE);
- options->PredictedPortsRelevanceTime = MAX_PREDICTED_CIRCS_RELEVANCE;
- }
-
/* Check the Single Onion Service options */
if (options_validate_single_onion(options, msg) < 0)
return -1;
+ if (options->CircuitsAvailableTimeout > MAX_CIRCS_AVAILABLE_TIME) {
+ // options_t is immutable for new code (the above code is older),
+ // so just make the user fix the value themselves rather than
+ // silently keep a shadow value lower than what they asked for.
+ REJECT("CircuitsAvailableTimeout is too large. Max is 24 hours.");
+ }
+
#ifdef ENABLE_TOR2WEB_MODE
if (options->Tor2webMode && options->UseEntryGuards) {
/* tor2web mode clients do not (and should not) use entry guards
@@ -3520,6 +3464,20 @@ options_validate(or_options_t *old_options, or_options_t *options,
return -1;
}
+ /* Inform the hidden service operator that pinning EntryNodes can possibly
+ * be harmful for the service anonymity. */
+ if (options->EntryNodes &&
+ routerset_is_list(options->EntryNodes) &&
+ (options->RendConfigLines != NULL)) {
+ log_warn(LD_CONFIG,
+ "EntryNodes is set with multiple entries and at least one "
+ "hidden service is configured. Pinning entry nodes can possibly "
+ "be harmful to the service anonymity. Because of this, we "
+ "recommend you either don't do that or make sure you know what "
+ "you are doing. For more details, please look at "
+ "https://trac.torproject.org/projects/tor/ticket/21155.");
+ }
+
/* Single Onion Services: non-anonymous hidden services */
if (rend_service_non_anonymous_mode_enabled(options)) {
log_warn(LD_CONFIG,
@@ -3875,13 +3833,14 @@ options_validate(or_options_t *old_options, or_options_t *options,
"have it group-readable.");
}
- if (options->MyFamily && options->BridgeRelay) {
+ if (options->MyFamily_lines && options->BridgeRelay) {
log_warn(LD_CONFIG, "Listing a family for a bridge relay is not "
"supported: it can reveal bridge fingerprints to censors. "
"You should also make sure you aren't listing this bridge's "
"fingerprint in any other MyFamily.");
}
- if (check_nickname_list(&options->MyFamily, "MyFamily", msg))
+ if (normalize_nickname_list(&options->MyFamily,
+ options->MyFamily_lines, "MyFamily", msg))
return -1;
for (cl = options->NodeFamilies; cl; cl = cl->next) {
routerset_t *rs = routerset_new();
@@ -4078,13 +4037,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
"AlternateDirAuthority and AlternateBridgeAuthority configured.");
}
- if (options->AllowSingleHopExits && !options->DirAuthorities) {
- COMPLAIN("You have set AllowSingleHopExits; now your relay will allow "
- "others to make one-hop exits. However, since by default most "
- "clients avoid relays that set this option, most clients will "
- "ignore you.");
- }
-
#define CHECK_DEFAULT(arg) \
STMT_BEGIN \
if (!options->TestingTorNetwork && \
@@ -4549,6 +4501,7 @@ options_transition_affects_workers(const or_options_t *old_options,
old_options->SafeLogging_ != new_options->SafeLogging_ ||
old_options->ClientOnly != new_options->ClientOnly ||
server_mode(old_options) != server_mode(new_options) ||
+ dir_server_mode(old_options) != dir_server_mode(new_options) ||
public_server_mode(old_options) != public_server_mode(new_options) ||
!config_lines_eq(old_options->Logs, new_options->Logs) ||
old_options->LogMessageDomains != new_options->LogMessageDomains)
@@ -4590,7 +4543,7 @@ options_transition_affects_descriptor(const or_options_t *old_options,
get_effective_bwburst(old_options) !=
get_effective_bwburst(new_options) ||
!opt_streq(old_options->ContactInfo, new_options->ContactInfo) ||
- !opt_streq(old_options->MyFamily, new_options->MyFamily) ||
+ !config_lines_eq(old_options->MyFamily, new_options->MyFamily) ||
!opt_streq(old_options->AccountingStart, new_options->AccountingStart) ||
old_options->AccountingMax != new_options->AccountingMax ||
old_options->AccountingRule != new_options->AccountingRule ||
@@ -4686,27 +4639,36 @@ get_default_conf_file(int defaults_file)
#endif
}
-/** Verify whether lst is a string containing valid-looking comma-separated
- * nicknames, or NULL. Will normalise <b>lst</b> to prefix '$' to any nickname
- * or fingerprint that needs it. Return 0 on success.
+/** Verify whether lst is a list of strings containing valid-looking
+ * comma-separated nicknames, or NULL. Will normalise <b>lst</b> to prefix '$'
+ * to any nickname or fingerprint that needs it. Also splits comma-separated
+ * list elements into multiple elements. Return 0 on success.
* Warn and return -1 on failure.
*/
static int
-check_nickname_list(char **lst, const char *name, char **msg)
+normalize_nickname_list(config_line_t **normalized_out,
+ const config_line_t *lst, const char *name,
+ char **msg)
{
- int r = 0;
- smartlist_t *sl;
- int changes = 0;
-
- if (!*lst)
+ if (!lst)
return 0;
- sl = smartlist_new();
- smartlist_split_string(sl, *lst, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK|SPLIT_STRIP_SPACE, 0);
+ config_line_t *new_nicknames = NULL;
+ config_line_t **new_nicknames_next = &new_nicknames;
+
+ const config_line_t *cl;
+ for (cl = lst; cl; cl = cl->next) {
+ const char *line = cl->value;
+ if (!line)
+ continue;
- SMARTLIST_FOREACH_BEGIN(sl, char *, s)
+ int valid_line = 1;
+ smartlist_t *sl = smartlist_new();
+ smartlist_split_string(sl, line, ",",
+ SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK|SPLIT_STRIP_SPACE, 0);
+ SMARTLIST_FOREACH_BEGIN(sl, char *, s)
{
+ char *normalized = NULL;
if (!is_legal_nickname_or_hexdigest(s)) {
// check if first char is dollar
if (s[0] != '$') {
@@ -4715,36 +4677,45 @@ check_nickname_list(char **lst, const char *name, char **msg)
tor_asprintf(&prepended, "$%s", s);
if (is_legal_nickname_or_hexdigest(prepended)) {
- // The nickname is valid when it's prepended, swap the current
- // version with a prepended one
- tor_free(s);
- SMARTLIST_REPLACE_CURRENT(sl, s, prepended);
- changes = 1;
- continue;
+ // The nickname is valid when it's prepended, set it as the
+ // normalized version
+ normalized = prepended;
+ } else {
+ // Still not valid, free and fallback to error message
+ tor_free(prepended);
}
-
- // Still not valid, free and fallback to error message
- tor_free(prepended);
}
- tor_asprintf(msg, "Invalid nickname '%s' in %s line", s, name);
- r = -1;
- break;
+ if (!normalized) {
+ tor_asprintf(msg, "Invalid nickname '%s' in %s line", s, name);
+ valid_line = 0;
+ break;
+ }
+ } else {
+ normalized = tor_strdup(s);
}
- }
- SMARTLIST_FOREACH_END(s);
- // Replace the caller's nickname list with a fixed one
- if (changes && r == 0) {
- char *newNicknames = smartlist_join_strings(sl, ", ", 0, NULL);
- tor_free(*lst);
- *lst = newNicknames;
+ config_line_t *next = tor_malloc_zero(sizeof(*next));
+ next->key = tor_strdup(cl->key);
+ next->value = normalized;
+ next->next = NULL;
+
+ *new_nicknames_next = next;
+ new_nicknames_next = &next->next;
+ } SMARTLIST_FOREACH_END(s);
+
+ SMARTLIST_FOREACH(sl, char *, s, tor_free(s));
+ smartlist_free(sl);
+
+ if (!valid_line) {
+ config_free_lines(new_nicknames);
+ return -1;
+ }
}
- SMARTLIST_FOREACH(sl, char *, s, tor_free(s));
- smartlist_free(sl);
+ *normalized_out = new_nicknames;
- return r;
+ return 0;
}
/** Learn config file name from command line arguments, or use the default.
@@ -4946,9 +4917,21 @@ options_init_from_torrc(int argc, char **argv)
printf("OpenSSL \t\t%-15s\t\t%s\n",
crypto_openssl_get_header_version_str(),
crypto_openssl_get_version_str());
- printf("Zlib \t\t%-15s\t\t%s\n",
- tor_zlib_get_header_version_str(),
- tor_zlib_get_version_str());
+ if (tor_compress_supports_method(ZLIB_METHOD)) {
+ printf("Zlib \t\t%-15s\t\t%s\n",
+ tor_compress_version_str(ZLIB_METHOD),
+ tor_compress_header_version_str(ZLIB_METHOD));
+ }
+ if (tor_compress_supports_method(LZMA_METHOD)) {
+ printf("Liblzma \t\t%-15s\t\t%s\n",
+ tor_compress_version_str(LZMA_METHOD),
+ tor_compress_header_version_str(LZMA_METHOD));
+ }
+ if (tor_compress_supports_method(ZSTD_METHOD)) {
+ printf("Libzstd \t\t%-15s\t\t%s\n",
+ tor_compress_version_str(ZSTD_METHOD),
+ tor_compress_header_version_str(ZSTD_METHOD));
+ }
//TODO: Hex versions?
exit(0);
}
@@ -5088,6 +5071,7 @@ options_init_from_string(const char *cf_defaults, const char *cf,
config_line_t *cl;
int retval;
setopt_err_t err = SETOPT_ERR_MISC;
+ int cf_has_include = 0;
tor_assert(msg);
oldoptions = global_options; /* get_options unfortunately asserts if
@@ -5104,7 +5088,8 @@ options_init_from_string(const char *cf_defaults, const char *cf,
if (!body)
continue;
/* get config lines, assign them */
- retval = config_get_lines(body, &cl, 1);
+ retval = config_get_lines_include(body, &cl, 1,
+ body == cf ? &cf_has_include : NULL);
if (retval < 0) {
err = SETOPT_ERR_PARSE;
goto err;
@@ -5132,6 +5117,8 @@ options_init_from_string(const char *cf_defaults, const char *cf,
goto err;
}
+ newoptions->IncludeUsed = cf_has_include;
+
/* If this is a testing network configuration, change defaults
* for a list of dependent config options, re-initialize newoptions
* with the new defaults, and assign all options to it second time. */
@@ -5175,7 +5162,8 @@ options_init_from_string(const char *cf_defaults, const char *cf,
if (!body)
continue;
/* get config lines, assign them */
- retval = config_get_lines(body, &cl, 1);
+ retval = config_get_lines_include(body, &cl, 1,
+ body == cf ? &cf_has_include : NULL);
if (retval < 0) {
err = SETOPT_ERR_PARSE;
goto err;
@@ -5198,6 +5186,8 @@ options_init_from_string(const char *cf_defaults, const char *cf,
}
}
+ newoptions->IncludeUsed = cf_has_include;
+
/* Validate newoptions */
if (options_validate(oldoptions, newoptions, newdefaultoptions,
0, msg) < 0) {
@@ -6434,14 +6424,9 @@ warn_client_dns_cache(const char *option, int disabling)
/**
* Parse port configuration for a single port type.
*
- * Read entries of the "FooPort" type from the list <b>ports</b>, and
- * entries of the "FooListenAddress" type from the list
- * <b>listenaddrs</b>. Two syntaxes are supported: a legacy syntax
- * where FooPort is at most a single entry containing a port number and
- * where FooListenAddress has any number of address:port combinations;
- * and a new syntax where there are no FooListenAddress entries and
- * where FooPort can have any number of entries of the format
- * "[Address:][Port] IsolationOptions".
+ * Read entries of the "FooPort" type from the list <b>ports</b>. Syntax is
+ * that FooPort can have any number of entries of the format
+ * "[Address:][Port] IsolationOptions".
*
* In log messages, describe the port type as <b>portname</b>.
*
@@ -6455,9 +6440,6 @@ warn_client_dns_cache(const char *option, int disabling)
* ports are not on a local address. If CL_PORT_FORBID_NONLOCAL is set,
* this is a control port with no password set: don't even allow it.
*
- * Unless CL_PORT_ALLOW_EXTRA_LISTENADDR is set in <b>flags</b>, warn
- * if FooListenAddress is set but FooPort is 0.
- *
* If CL_PORT_SERVER_OPTIONS is set in <b>flags</b>, do not allow stream
* isolation options in the FooPort entries; instead allow the
* server-port option set.
@@ -6472,7 +6454,6 @@ warn_client_dns_cache(const char *option, int disabling)
STATIC int
parse_port_config(smartlist_t *out,
const config_line_t *ports,
- const config_line_t *listenaddrs,
const char *portname,
int listener_type,
const char *defaultaddr,
@@ -6489,90 +6470,12 @@ parse_port_config(smartlist_t *out,
const unsigned forbid_nonlocal = flags & CL_PORT_FORBID_NONLOCAL;
const unsigned default_to_group_writable =
flags & CL_PORT_DFLT_GROUP_WRITABLE;
- const unsigned allow_spurious_listenaddr =
- flags & CL_PORT_ALLOW_EXTRA_LISTENADDR;
const unsigned takes_hostnames = flags & CL_PORT_TAKES_HOSTNAMES;
const unsigned is_unix_socket = flags & CL_PORT_IS_UNIXSOCKET;
int got_zero_port=0, got_nonzero_port=0;
char *unix_socket_path = NULL;
- /* FooListenAddress is deprecated; let's make it work like it used to work,
- * though. */
- if (listenaddrs) {
- int mainport = defaultport;
-
- if (ports && ports->next) {
- log_warn(LD_CONFIG, "%sListenAddress can't be used when there are "
- "multiple %sPort lines", portname, portname);
- return -1;
- } else if (ports) {
- if (!strcmp(ports->value, "auto")) {
- mainport = CFG_AUTO_PORT;
- } else {
- int ok;
- mainport = (int)tor_parse_long(ports->value, 10, 0, 65535, &ok, NULL);
- if (!ok) {
- log_warn(LD_CONFIG, "%sListenAddress can only be used with a single "
- "%sPort with value \"auto\" or 1-65535 and no options set.",
- portname, portname);
- return -1;
- }
- }
- }
-
- if (mainport == 0) {
- if (allow_spurious_listenaddr)
- return 1; /*DOCDOC*/
- log_warn(LD_CONFIG, "%sPort must be defined if %sListenAddress is used",
- portname, portname);
- return -1;
- }
-
- if (use_server_options && out) {
- /* Add a no_listen port. */
- port_cfg_t *cfg = port_cfg_new(0);
- cfg->type = listener_type;
- cfg->port = mainport;
- tor_addr_make_unspec(&cfg->addr); /* Server ports default to 0.0.0.0 */
- cfg->server_cfg.no_listen = 1;
- cfg->server_cfg.bind_ipv4_only = 1;
- /* cfg->entry_cfg defaults are already set by port_cfg_new */
- smartlist_add(out, cfg);
- }
-
- for (; listenaddrs; listenaddrs = listenaddrs->next) {
- tor_addr_t addr;
- uint16_t port = 0;
- if (tor_addr_port_lookup(listenaddrs->value, &addr, &port) < 0) {
- log_warn(LD_CONFIG, "Unable to parse %sListenAddress '%s'",
- portname, listenaddrs->value);
- return -1;
- }
- if (out) {
- port_cfg_t *cfg = port_cfg_new(0);
- cfg->type = listener_type;
- cfg->port = port ? port : mainport;
- tor_addr_copy(&cfg->addr, &addr);
- cfg->entry_cfg.session_group = SESSION_GROUP_UNSET;
- cfg->entry_cfg.isolation_flags = ISO_DEFAULT;
- cfg->server_cfg.no_advertise = 1;
- smartlist_add(out, cfg);
- }
- }
-
- if (warn_nonlocal && out) {
- if (is_control)
- warn_nonlocal_controller_ports(out, forbid_nonlocal);
- else if (is_ext_orport)
- warn_nonlocal_ext_orports(out, portname);
- else
- warn_nonlocal_client_ports(out, portname, listener_type);
- }
- return 0;
- } /* end if (listenaddrs) */
-
- /* No ListenAddress lines. If there's no FooPort, then maybe make a default
- * one. */
+ /* If there's no FooPort, then maybe make a default one. */
if (! ports) {
if (defaultport && defaultaddr && out) {
port_cfg_t *cfg = port_cfg_new(is_unix_socket ? strlen(defaultaddr) : 0);
@@ -6973,6 +6876,7 @@ parse_port_config(smartlist_t *out,
SMARTLIST_FOREACH(elts, char *, cp, tor_free(cp));
smartlist_clear(elts);
tor_free(addrport);
+ tor_free(unix_socket_path);
}
if (warn_nonlocal && out) {
@@ -7043,36 +6947,35 @@ parse_ports(or_options_t *options, int validate_only,
const unsigned gw_flag = options->SocksSocketsGroupWritable ?
CL_PORT_DFLT_GROUP_WRITABLE : 0;
if (parse_port_config(ports,
- options->SocksPort_lines, options->SocksListenAddress,
+ options->SocksPort_lines,
"Socks", CONN_TYPE_AP_LISTENER,
"127.0.0.1", 9050,
- CL_PORT_WARN_NONLOCAL|CL_PORT_ALLOW_EXTRA_LISTENADDR|
- CL_PORT_TAKES_HOSTNAMES|gw_flag) < 0) {
- *msg = tor_strdup("Invalid SocksPort/SocksListenAddress configuration");
+ CL_PORT_WARN_NONLOCAL|CL_PORT_TAKES_HOSTNAMES|gw_flag) < 0) {
+ *msg = tor_strdup("Invalid SocksPort configuration");
goto err;
}
if (parse_port_config(ports,
- options->DNSPort_lines, options->DNSListenAddress,
+ options->DNSPort_lines,
"DNS", CONN_TYPE_AP_DNS_LISTENER,
"127.0.0.1", 0,
CL_PORT_WARN_NONLOCAL|CL_PORT_TAKES_HOSTNAMES) < 0) {
- *msg = tor_strdup("Invalid DNSPort/DNSListenAddress configuration");
+ *msg = tor_strdup("Invalid DNSPort configuration");
goto err;
}
if (parse_port_config(ports,
- options->TransPort_lines, options->TransListenAddress,
+ options->TransPort_lines,
"Trans", CONN_TYPE_AP_TRANS_LISTENER,
"127.0.0.1", 0,
CL_PORT_WARN_NONLOCAL) < 0) {
- *msg = tor_strdup("Invalid TransPort/TransListenAddress configuration");
+ *msg = tor_strdup("Invalid TransPort configuration");
goto err;
}
if (parse_port_config(ports,
- options->NATDPort_lines, options->NATDListenAddress,
+ options->NATDPort_lines,
"NATD", CONN_TYPE_AP_NATD_LISTENER,
"127.0.0.1", 0,
CL_PORT_WARN_NONLOCAL) < 0) {
- *msg = tor_strdup("Invalid NatdPort/NatdListenAddress configuration");
+ *msg = tor_strdup("Invalid NatdPort configuration");
goto err;
}
{
@@ -7088,16 +6991,14 @@ parse_ports(or_options_t *options, int validate_only,
if (parse_port_config(ports,
options->ControlPort_lines,
- options->ControlListenAddress,
"Control", CONN_TYPE_CONTROL_LISTENER,
"127.0.0.1", 0,
control_port_flags) < 0) {
- *msg = tor_strdup("Invalid ControlPort/ControlListenAddress "
- "configuration");
+ *msg = tor_strdup("Invalid ControlPort configuration");
goto err;
}
- if (parse_port_config(ports, options->ControlSocket, NULL,
+ if (parse_port_config(ports, options->ControlSocket,
"ControlSocket",
CONN_TYPE_CONTROL_LISTENER, NULL, 0,
control_port_flags | CL_PORT_IS_UNIXSOCKET) < 0) {
@@ -7107,15 +7008,15 @@ parse_ports(or_options_t *options, int validate_only,
}
if (! options->ClientOnly) {
if (parse_port_config(ports,
- options->ORPort_lines, options->ORListenAddress,
+ options->ORPort_lines,
"OR", CONN_TYPE_OR_LISTENER,
"0.0.0.0", 0,
CL_PORT_SERVER_OPTIONS) < 0) {
- *msg = tor_strdup("Invalid ORPort/ORListenAddress configuration");
+ *msg = tor_strdup("Invalid ORPort configuration");
goto err;
}
if (parse_port_config(ports,
- options->ExtORPort_lines, NULL,
+ options->ExtORPort_lines,
"ExtOR", CONN_TYPE_EXT_OR_LISTENER,
"127.0.0.1", 0,
CL_PORT_SERVER_OPTIONS|CL_PORT_WARN_NONLOCAL) < 0) {
@@ -7123,11 +7024,11 @@ parse_ports(or_options_t *options, int validate_only,
goto err;
}
if (parse_port_config(ports,
- options->DirPort_lines, options->DirListenAddress,
+ options->DirPort_lines,
"Dir", CONN_TYPE_DIR_LISTENER,
"0.0.0.0", 0,
CL_PORT_SERVER_OPTIONS) < 0) {
- *msg = tor_strdup("Invalid DirPort/DirListenAddress configuration");
+ *msg = tor_strdup("Invalid DirPort configuration");
goto err;
}
}
diff --git a/src/or/config.h b/src/or/config.h
index 6645532514..27aec7fe3d 100644
--- a/src/or/config.h
+++ b/src/or/config.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -157,7 +157,7 @@ smartlist_t *get_options_for_server_transport(const char *transport);
#define CL_PORT_NO_STREAM_OPTIONS (1u<<0)
#define CL_PORT_WARN_NONLOCAL (1u<<1)
-#define CL_PORT_ALLOW_EXTRA_LISTENADDR (1u<<2)
+/* Was CL_PORT_ALLOW_EXTRA_LISTENADDR (1u<<2) */
#define CL_PORT_SERVER_OPTIONS (1u<<3)
#define CL_PORT_FORBID_NONLOCAL (1u<<4)
#define CL_PORT_TAKES_HOSTNAMES (1u<<5)
@@ -193,7 +193,6 @@ STATIC int have_enough_mem_for_dircache(const or_options_t *options,
size_t total_mem, char **msg);
STATIC int parse_port_config(smartlist_t *out,
const config_line_t *ports,
- const config_line_t *listenaddrs,
const char *portname,
int listener_type,
const char *defaultaddr,
diff --git a/src/or/confparse.c b/src/or/confparse.c
index 9b13a91856..abae7e33dc 100644
--- a/src/or/confparse.c
+++ b/src/or/confparse.c
@@ -2,7 +2,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -31,8 +31,6 @@ static int config_parse_msec_interval(const char *s, int *ok);
static int config_parse_interval(const char *s, int *ok);
static void config_reset(const config_format_t *fmt, void *options,
const config_var_t *var, int use_defaults);
-static config_line_t *config_lines_dup_and_filter(const config_line_t *inp,
- const char *key);
/** Allocate an empty configuration object of a given format type. */
void *
@@ -80,120 +78,6 @@ config_expand_abbrev(const config_format_t *fmt, const char *option,
return option;
}
-/** Helper: allocate a new configuration option mapping 'key' to 'val',
- * append it to *<b>lst</b>. */
-void
-config_line_append(config_line_t **lst,
- const char *key,
- const char *val)
-{
- config_line_t *newline;
-
- newline = tor_malloc_zero(sizeof(config_line_t));
- newline->key = tor_strdup(key);
- newline->value = tor_strdup(val);
- newline->next = NULL;
- while (*lst)
- lst = &((*lst)->next);
-
- (*lst) = newline;
-}
-
-/** Return the line in <b>lines</b> whose key is exactly <b>key</b>, or NULL
- * if no such key exists. For handling commandline-only options only; other
- * options should be looked up in the appropriate data structure. */
-const config_line_t *
-config_line_find(const config_line_t *lines,
- const char *key)
-{
- const config_line_t *cl;
- for (cl = lines; cl; cl = cl->next) {
- if (!strcmp(cl->key, key))
- return cl;
- }
- return NULL;
-}
-
-/** Helper: parse the config string and strdup into key/value
- * strings. Set *result to the list, or NULL if parsing the string
- * failed. Return 0 on success, -1 on failure. Warn and ignore any
- * misformatted lines.
- *
- * If <b>extended</b> is set, then treat keys beginning with / and with + as
- * indicating "clear" and "append" respectively. */
-int
-config_get_lines(const char *string, config_line_t **result, int extended)
-{
- config_line_t *list = NULL, **next;
- char *k, *v;
- const char *parse_err;
-
- next = &list;
- do {
- k = v = NULL;
- string = parse_config_line_from_str_verbose(string, &k, &v, &parse_err);
- if (!string) {
- log_warn(LD_CONFIG, "Error while parsing configuration: %s",
- parse_err?parse_err:"<unknown>");
- config_free_lines(list);
- tor_free(k);
- tor_free(v);
- return -1;
- }
- if (k && v) {
- unsigned command = CONFIG_LINE_NORMAL;
- if (extended) {
- if (k[0] == '+') {
- char *k_new = tor_strdup(k+1);
- tor_free(k);
- k = k_new;
- command = CONFIG_LINE_APPEND;
- } else if (k[0] == '/') {
- char *k_new = tor_strdup(k+1);
- tor_free(k);
- k = k_new;
- tor_free(v);
- v = tor_strdup("");
- command = CONFIG_LINE_CLEAR;
- }
- }
- /* This list can get long, so we keep a pointer to the end of it
- * rather than using config_line_append over and over and getting
- * n^2 performance. */
- *next = tor_malloc_zero(sizeof(config_line_t));
- (*next)->key = k;
- (*next)->value = v;
- (*next)->next = NULL;
- (*next)->command = command;
- next = &((*next)->next);
- } else {
- tor_free(k);
- tor_free(v);
- }
- } while (*string);
-
- *result = list;
- return 0;
-}
-
-/**
- * Free all the configuration lines on the linked list <b>front</b>.
- */
-void
-config_free_lines(config_line_t *front)
-{
- config_line_t *tmp;
-
- while (front) {
- tmp = front;
- front = tmp->next;
-
- tor_free(tmp->key);
- tor_free(tmp->value);
- tor_free(tmp);
- }
-}
-
/** If <b>key</b> is a deprecated configuration option, return the message
* explaining why it is deprecated (which may be an empty string). Return NULL
* if it is not deprecated. The <b>key</b> field must be fully expanded. */
@@ -633,36 +517,6 @@ config_value_needs_escape(const char *value)
return 0;
}
-/** Return a newly allocated deep copy of the lines in <b>inp</b>. */
-config_line_t *
-config_lines_dup(const config_line_t *inp)
-{
- return config_lines_dup_and_filter(inp, NULL);
-}
-
-/** Return a newly allocated deep copy of the lines in <b>inp</b>,
- * but only the ones that match <b>key</b>. */
-static config_line_t *
-config_lines_dup_and_filter(const config_line_t *inp,
- const char *key)
-{
- config_line_t *result = NULL;
- config_line_t **next_out = &result;
- while (inp) {
- if (key && strcasecmpstart(inp->key, key)) {
- inp = inp->next;
- continue;
- }
- *next_out = tor_malloc_zero(sizeof(config_line_t));
- (*next_out)->key = tor_strdup(inp->key);
- (*next_out)->value = tor_strdup(inp->value);
- inp = inp->next;
- next_out = &((*next_out)->next);
- }
- (*next_out) = NULL;
- return result;
-}
-
/** Return newly allocated line or lines corresponding to <b>key</b> in the
* configuration <b>options</b>. If <b>escape_val</b> is true and a
* value needs to be quoted before it's put in a config file, quote and
@@ -1028,36 +882,6 @@ config_free(const config_format_t *fmt, void *options)
tor_free(options);
}
-/** Return true iff a and b contain identical keys and values in identical
- * order. */
-int
-config_lines_eq(config_line_t *a, config_line_t *b)
-{
- while (a && b) {
- if (strcasecmp(a->key, b->key) || strcmp(a->value, b->value))
- return 0;
- a = a->next;
- b = b->next;
- }
- if (a || b)
- return 0;
- return 1;
-}
-
-/** Return the number of lines in <b>a</b> whose key is <b>key</b>. */
-int
-config_count_key(const config_line_t *a, const char *key)
-{
- int n = 0;
- while (a) {
- if (!strcasecmp(a->key, key)) {
- ++n;
- }
- a = a->next;
- }
- return n;
-}
-
/** Return true iff the option <b>name</b> has the same value in <b>o1</b>
* and <b>o2</b>. Must not be called for LINELIST_S or OBSOLETE options.
*/
@@ -1366,8 +1190,6 @@ config_parse_msec_interval(const char *s, int *ok)
{
uint64_t r;
r = config_parse_units(s, time_msec_units, ok);
- if (!ok)
- return -1;
if (r > INT_MAX) {
log_warn(LD_CONFIG, "Msec interval '%s' is too long", s);
*ok = 0;
@@ -1385,8 +1207,6 @@ config_parse_interval(const char *s, int *ok)
{
uint64_t r;
r = config_parse_units(s, time_units, ok);
- if (!ok)
- return -1;
if (r > INT_MAX) {
log_warn(LD_CONFIG, "Interval '%s' is too long", s);
*ok = 0;
diff --git a/src/or/confparse.h b/src/or/confparse.h
index 8d915d266b..9c4205d07c 100644
--- a/src/or/confparse.h
+++ b/src/or/confparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONFPARSE_H
@@ -103,14 +103,7 @@ typedef struct config_format_t {
#define CAL_WARN_DEPRECATIONS (1u<<2)
void *config_new(const config_format_t *fmt);
-void config_line_append(config_line_t **lst,
- const char *key, const char *val);
-config_line_t *config_lines_dup(const config_line_t *inp);
-const config_line_t *config_line_find(const config_line_t *lines,
- const char *key);
void config_free(const config_format_t *fmt, void *options);
-int config_lines_eq(config_line_t *a, config_line_t *b);
-int config_count_key(const config_line_t *a, const char *key);
config_line_t *config_get_assigned_option(const config_format_t *fmt,
const void *options, const char *key,
int escape_val);
@@ -131,9 +124,6 @@ const char *config_find_deprecation(const config_format_t *fmt,
const char *key);
const config_var_t *config_find_option(const config_format_t *fmt,
const char *key);
-
-int config_get_lines(const char *string, config_line_t **result, int extended);
-void config_free_lines(config_line_t *front);
const char *config_expand_abbrev(const config_format_t *fmt,
const char *option,
int command_line, int warn_obsolete);
diff --git a/src/or/connection.c b/src/or/connection.c
index 5628c6a3f9..fc0646b885 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -79,6 +79,7 @@
#include "dirserv.h"
#include "dns.h"
#include "dnsserv.h"
+#include "dos.h"
#include "entrynodes.h"
#include "ext_orport.h"
#include "geoip.h"
@@ -628,13 +629,13 @@ connection_free_(connection_t *conn)
dir_connection_t *dir_conn = TO_DIR_CONN(conn);
tor_free(dir_conn->requested_resource);
- tor_zlib_free(dir_conn->zlib_state);
- if (dir_conn->fingerprint_stack) {
- SMARTLIST_FOREACH(dir_conn->fingerprint_stack, char *, cp, tor_free(cp));
- smartlist_free(dir_conn->fingerprint_stack);
+ tor_compress_free(dir_conn->compress_state);
+ if (dir_conn->spool) {
+ SMARTLIST_FOREACH(dir_conn->spool, spooled_resource_t *, spooled,
+ spooled_resource_free(spooled));
+ smartlist_free(dir_conn->spool);
}
- cached_dir_decref(dir_conn->cached_dir);
rend_data_free(dir_conn->rend_data);
if (dir_conn->guard_state) {
/* Cancel before freeing, if it's still there. */
@@ -696,6 +697,13 @@ connection_free,(connection_t *conn))
"connection_free");
}
#endif
+
+ /* Notify the circuit creation DoS mitigation subsystem that an OR client
+ * connection has been closed. And only do that if we track it. */
+ if (conn->type == CONN_TYPE_OR) {
+ dos_close_client_conn(TO_OR_CONN(conn));
+ }
+
connection_unregister_events(conn);
connection_free_(conn);
}
@@ -1601,6 +1609,14 @@ connection_handle_listener_read(connection_t *conn, int new_type)
return 0;
}
}
+ if (new_type == CONN_TYPE_OR) {
+ /* Assess with the connection DoS mitigation subsystem if this address
+ * can open a new connection. */
+ if (dos_conn_addr_get_defense_type(&addr) == DOS_CONN_DEFENSE_CLOSE) {
+ tor_close_socket(news);
+ return 0;
+ }
+ }
newconn = connection_new(new_type, conn->socket_family);
newconn->s = news;
@@ -4042,10 +4058,6 @@ connection_flush(connection_t *conn)
* its contents compressed or decompressed as they're written. If zlib is
* negative, this is the last data to be compressed, and the connection's zlib
* state should be flushed.
- *
- * If it's a local control connection and a 64k chunk is ready, try to flush
- * it all, so we don't end up with many megabytes of controller info queued at
- * once.
*/
MOCK_IMPL(void,
connection_write_to_buf_impl_,(const char *string, size_t len,
@@ -4064,9 +4076,9 @@ connection_write_to_buf_impl_,(const char *string, size_t len,
if (zlib) {
dir_connection_t *dir_conn = TO_DIR_CONN(conn);
int done = zlib < 0;
- CONN_LOG_PROTECT(conn, r = write_to_buf_zlib(conn->outbuf,
- dir_conn->zlib_state,
- string, len, done));
+ CONN_LOG_PROTECT(conn, r = write_to_buf_compress(conn->outbuf,
+ dir_conn->compress_state,
+ string, len, done));
} else {
CONN_LOG_PROTECT(conn, r = write_to_buf(string, len, conn->outbuf));
}
diff --git a/src/or/connection.h b/src/or/connection.h
index d25e002fa4..36e45aef38 100644
--- a/src/or/connection.h
+++ b/src/or/connection.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -141,17 +141,17 @@ MOCK_DECL(void, connection_write_to_buf_impl_,
/* DOCDOC connection_write_to_buf */
static void connection_write_to_buf(const char *string, size_t len,
connection_t *conn);
-/* DOCDOC connection_write_to_buf_zlib */
-static void connection_write_to_buf_zlib(const char *string, size_t len,
- dir_connection_t *conn, int done);
+/* DOCDOC connection_write_to_buf_compress */
+static void connection_write_to_buf_compress(const char *string, size_t len,
+ dir_connection_t *conn, int done);
static inline void
connection_write_to_buf(const char *string, size_t len, connection_t *conn)
{
connection_write_to_buf_impl_(string, len, conn, 0);
}
static inline void
-connection_write_to_buf_zlib(const char *string, size_t len,
- dir_connection_t *conn, int done)
+connection_write_to_buf_compress(const char *string, size_t len,
+ dir_connection_t *conn, int done)
{
connection_write_to_buf_impl_(string, len, TO_CONN(conn), done ? -1 : 1);
}
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index c8e32cfacb..8480a35458 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -29,7 +29,7 @@
* <li>DNS lookup streams, created on the exit side in response to
* a RELAY_RESOLVE cell from a client.
* <li>Tunneled directory streams, created on the directory cache side
- * in response to a RELAY_BEGINDIR cell. These streams attach directly
+ * in response to a RELAY_BEGIN_DIR cell. These streams attach directly
* to a dir_connection_t object without ever using TCP.
* </ul>
*
@@ -1763,7 +1763,7 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
conn->entry_cfg.ipv6_traffic = 0;
/* Still handling CONNECT. Now, check for exit enclaves. (Which we
- * don't do on BEGINDIR, or when there is a chosen exit.)
+ * don't do on BEGIN_DIR, or when there is a chosen exit.)
*
* TODO: Should we remove this? Exit enclaves are nutty and don't
* work very well
@@ -2528,7 +2528,7 @@ connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
/* Sensitive directory connections must have an anonymous path length.
* Otherwise, directory connections are typically one-hop.
* This matches the earlier check for directory connection path anonymity
- * in directory_initiate_command_rend(). */
+ * in directory_initiate_request(). */
if (purpose_needs_anonymity(linked_dir_conn_base->purpose,
TO_DIR_CONN(linked_dir_conn_base)->router_purpose,
TO_DIR_CONN(linked_dir_conn_base)->requested_resource)) {
@@ -3002,7 +3002,7 @@ connection_ap_handshake_socks_reply(entry_connection_t *conn, char *reply,
return;
}
-/** Read a RELAY_BEGIN or RELAY_BEGINDIR cell from <b>cell</b>, decode it, and
+/** Read a RELAY_BEGIN or RELAY_BEGIN_DIR cell from <b>cell</b>, decode it, and
* place the result in <b>bcell</b>. On success return 0; on failure return
* <0 and set *<b>end_reason_out</b> to the end reason we should send back to
* the client.
@@ -3141,15 +3141,13 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
port = bcell.port;
if (or_circ && or_circ->p_chan) {
- if (!options->AllowSingleHopExits &&
- (or_circ->is_first_hop ||
- (!connection_or_digest_is_known_relay(
+ if ((or_circ->is_first_hop ||
+ (!connection_or_digest_is_known_relay(
or_circ->p_chan->identity_digest) &&
should_refuse_unknown_exits(options)))) {
- /* Don't let clients use us as a single-hop proxy, unless the user
- * has explicitly allowed that in the config. It attracts attackers
- * and users who'd be better off with, well, single-hop proxies.
- */
+ /* Don't let clients use us as a single-hop proxy. It attracts
+ * attackers and users who'd be better off with, well, single-hop
+ * proxies. */
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Attempt by %s to open a stream %s. Closing.",
safe_str(channel_get_canonical_remote_descr(or_circ->p_chan)),
diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h
index 61b5752aed..e4780b3c7d 100644
--- a/src/or/connection_edge.h
+++ b/src/or/connection_edge.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index e7a55a80a6..fcd281da26 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -55,6 +55,7 @@
#include "ext_orport.h"
#include "scheduler.h"
#include "torcert.h"
+#include "channelpadding.h"
static int connection_tls_finish_handshake(or_connection_t *conn);
static int connection_or_launch_v3_or_handshake(or_connection_t *conn);
@@ -816,24 +817,6 @@ connection_or_update_token_buckets(smartlist_t *conns,
});
}
-/** How long do we wait before killing non-canonical OR connections with no
- * circuits? In Tor versions up to 0.2.1.25 and 0.2.2.12-alpha, we waited 15
- * minutes before cancelling these connections, which caused fast relays to
- * accrue many many idle connections. Hopefully 3-4.5 minutes is low enough
- * that it kills most idle connections, without being so low that we cause
- * clients to bounce on and off.
- *
- * For canonical connections, the limit is higher, at 15-22.5 minutes.
- *
- * For each OR connection, we randomly add up to 50% extra to its idle_timeout
- * field, to avoid exposing when exactly the last circuit closed. Since we're
- * storing idle_timeout in a uint16_t, don't let these values get higher than
- * 12 hours or so without revising connection_or_set_canonical and/or expanding
- * idle_timeout.
- */
-#define IDLE_OR_CONN_TIMEOUT_NONCANONICAL 180
-#define IDLE_OR_CONN_TIMEOUT_CANONICAL 900
-
/* Mark <b>or_conn</b> as canonical if <b>is_canonical</b> is set, and
* non-canonical otherwise. Adjust idle_timeout accordingly.
*/
@@ -841,9 +824,6 @@ void
connection_or_set_canonical(or_connection_t *or_conn,
int is_canonical)
{
- const unsigned int timeout_base = is_canonical ?
- IDLE_OR_CONN_TIMEOUT_CANONICAL : IDLE_OR_CONN_TIMEOUT_NONCANONICAL;
-
if (bool_eq(is_canonical, or_conn->is_canonical) &&
or_conn->idle_timeout != 0) {
/* Don't recalculate an existing idle_timeout unless the canonical
@@ -852,7 +832,14 @@ connection_or_set_canonical(or_connection_t *or_conn,
}
or_conn->is_canonical = !! is_canonical; /* force to a 1-bit boolean */
- or_conn->idle_timeout = timeout_base + crypto_rand_int(timeout_base / 2);
+ or_conn->idle_timeout = channelpadding_get_channel_idle_timeout(
+ TLS_CHAN_TO_BASE(or_conn->chan), is_canonical);
+
+ log_info(LD_CIRC,
+ "Channel " U64_FORMAT " chose an idle timeout of %d.",
+ or_conn->chan ?
+ U64_PRINTF_ARG(TLS_CHAN_TO_BASE(or_conn->chan)->global_identifier):0,
+ or_conn->idle_timeout);
}
/** If we don't necessarily know the router we're connecting to, but we
@@ -1055,10 +1042,8 @@ connection_or_group_set_badness_(smartlist_t *group, int force)
}
if (!best ||
- channel_is_better(now,
- TLS_CHAN_TO_BASE(or_conn->chan),
- TLS_CHAN_TO_BASE(best->chan),
- 0)) {
+ channel_is_better(TLS_CHAN_TO_BASE(or_conn->chan),
+ TLS_CHAN_TO_BASE(best->chan))) {
best = or_conn;
}
} SMARTLIST_FOREACH_END(or_conn);
@@ -1086,11 +1071,9 @@ connection_or_group_set_badness_(smartlist_t *group, int force)
or_conn->base_.state != OR_CONN_STATE_OPEN)
continue;
if (or_conn != best &&
- channel_is_better(now,
- TLS_CHAN_TO_BASE(best->chan),
- TLS_CHAN_TO_BASE(or_conn->chan), 1)) {
- /* This isn't the best conn, _and_ the best conn is better than it,
- even when we're being forgiving. */
+ channel_is_better(TLS_CHAN_TO_BASE(best->chan),
+ TLS_CHAN_TO_BASE(or_conn->chan))) {
+ /* This isn't the best conn, _and_ the best conn is better than it */
if (best->is_canonical) {
log_info(LD_OR,
"Marking OR conn to %s:%d as unsuitable for new circuits: "
@@ -1566,7 +1549,9 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
}
if (identity_rcvd) {
- crypto_pk_get_digest(identity_rcvd, digest_rcvd_out);
+ if (crypto_pk_get_digest(identity_rcvd, digest_rcvd_out) < 0) {
+ return -1;
+ }
} else {
memset(digest_rcvd_out, 0, DIGEST_LEN);
}
@@ -1967,6 +1952,12 @@ connection_or_set_state_open(or_connection_t *conn)
connection_or_change_state(conn, OR_CONN_STATE_OPEN);
control_event_or_conn_status(conn, OR_CONN_EVENT_CONNECTED, 0);
+ /* Link protocol 3 appeared in Tor 0.2.3.6-alpha, so any connection
+ * that uses an earlier link protocol should not be treated as a relay. */
+ if (conn->link_proto < 3) {
+ channel_mark_client(TLS_CHAN_TO_BASE(conn->chan));
+ }
+
or_handshake_state_free(conn->handshake_state);
conn->handshake_state = NULL;
connection_start_reading(TO_CONN(conn));
@@ -1989,12 +1980,23 @@ connection_or_write_cell_to_buf(const cell_t *cell, or_connection_t *conn)
cell_pack(&networkcell, cell, conn->wide_circ_ids);
+ rep_hist_padding_count_write(PADDING_TYPE_TOTAL);
+ if (cell->command == CELL_PADDING)
+ rep_hist_padding_count_write(PADDING_TYPE_CELL);
+
connection_write_to_buf(networkcell.body, cell_network_size, TO_CONN(conn));
/* Touch the channel's active timestamp if there is one */
- if (conn->chan)
+ if (conn->chan) {
channel_timestamp_active(TLS_CHAN_TO_BASE(conn->chan));
+ if (TLS_CHAN_TO_BASE(conn->chan)->currently_padding) {
+ rep_hist_padding_count_write(PADDING_TYPE_ENABLED_TOTAL);
+ if (cell->command == CELL_PADDING)
+ rep_hist_padding_count_write(PADDING_TYPE_ENABLED_CELL);
+ }
+ }
+
if (conn->base_.state == OR_CONN_STATE_OR_HANDSHAKING_V3)
or_handshake_state_record_cell(conn, conn->handshake_state, cell, 0);
}
@@ -2100,7 +2102,7 @@ connection_or_process_cells_from_inbuf(or_connection_t *conn)
}
/** Array of recognized link protocol versions. */
-static const uint16_t or_protocol_versions[] = { 1, 2, 3, 4 };
+static const uint16_t or_protocol_versions[] = { 1, 2, 3, 4, 5 };
/** Number of versions in <b>or_protocol_versions</b>. */
static const int n_or_protocol_versions =
(int)( sizeof(or_protocol_versions)/sizeof(uint16_t) );
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index 514a0fd008..fe85a3f5fd 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -109,6 +109,8 @@ void var_cell_free(var_cell_t *cell);
/* DOCDOC */
#define MIN_LINK_PROTO_FOR_WIDE_CIRC_IDS 4
+#define MIN_LINK_PROTO_FOR_CHANNEL_PADDING 5
+#define MAX_LINK_PROTO MIN_LINK_PROTO_FOR_CHANNEL_PADDING
void connection_or_group_set_badness_(smartlist_t *group, int force);
diff --git a/src/or/conscache.c b/src/or/conscache.c
new file mode 100644
index 0000000000..33a5495974
--- /dev/null
+++ b/src/or/conscache.c
@@ -0,0 +1,626 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+
+#include "config.h"
+#include "conscache.h"
+#include "storagedir.h"
+
+#define CCE_MAGIC 0x17162253
+
+#ifdef _WIN32
+/* On Windows, unlink won't work on a file if the file is actively mmap()ed.
+ * That forces us to be less aggressive about unlinking files, and causes other
+ * changes throughout our logic.
+ */
+#define MUST_UNMAP_TO_UNLINK
+#endif
+
+/**
+ * A consensus_cache_entry_t is a reference-counted handle to an
+ * item in a consensus_cache_t. It can be mmapped into RAM, or not,
+ * depending whether it's currently in use.
+ */
+struct consensus_cache_entry_t {
+ uint32_t magic; /**< Must be set to CCE_MAGIC */
+ HANDLE_ENTRY(consensus_cache_entry, consensus_cache_entry_t);
+ int32_t refcnt; /**< Reference count. */
+ unsigned can_remove : 1; /**< If true, we want to delete this file. */
+ /** If true, we intend to unmap this file as soon as we're done with it. */
+ unsigned release_aggressively : 1;
+
+ /** Filename for this object within the storage_dir_t */
+ char *fname;
+ /** Labels associated with this object. Immutable once the object
+ * is created. */
+ config_line_t *labels;
+ /** Pointer to the cache that includes this entry (if any). */
+ consensus_cache_t *in_cache;
+
+ /** Since what time has this object been mapped into RAM, but with the cache
+ * being the only having a reference to it? */
+ time_t unused_since;
+ /** mmaped contents of the underlying file. May be NULL */
+ tor_mmap_t *map;
+ /** Length of the body within <b>map</b>. */
+ size_t bodylen;
+ /** Pointer to the body within <b>map</b>. */
+ const uint8_t *body;
+};
+
+/**
+ * A consensus_cache_t holds a directory full of labeled items.
+ */
+struct consensus_cache_t {
+ /** Underling storage_dir_t to handle persistence */
+ storage_dir_t *dir;
+ /** List of all the entries in the directory. */
+ smartlist_t *entries;
+
+ /** The maximum number of entries that we'd like to allow in this cache.
+ * This is the same as the storagedir limit when MUST_UNMAP_TO_UNLINK is
+ * not defined. */
+ unsigned max_entries;
+};
+
+static void consensus_cache_clear(consensus_cache_t *cache);
+static void consensus_cache_rescan(consensus_cache_t *);
+static void consensus_cache_entry_map(consensus_cache_t *,
+ consensus_cache_entry_t *);
+static void consensus_cache_entry_unmap(consensus_cache_entry_t *ent);
+
+/**
+ * Helper: Open a consensus cache in subdirectory <b>subdir</b> of the
+ * data directory, to hold up to <b>max_entries</b> of data.
+ */
+consensus_cache_t *
+consensus_cache_open(const char *subdir, int max_entries)
+{
+ int storagedir_max_entries;
+ consensus_cache_t *cache = tor_malloc_zero(sizeof(consensus_cache_t));
+ char *directory = get_datadir_fname(subdir);
+ cache->max_entries = max_entries;
+
+#ifdef MUST_UNMAP_TO_UNLINK
+ /* If we can't unlink the files that we're still using, then we need to
+ * tell the storagedir backend to allow far more files than this consensus
+ * cache actually wants, so that it can hold files which, from this cache's
+ * perspective, have become useless.
+ */
+#define VERY_LARGE_STORAGEDIR_LIMIT (1000*1000)
+ storagedir_max_entries = VERY_LARGE_STORAGEDIR_LIMIT;
+#else
+ /* Otherwise, we can just tell the storagedir to use the same limits
+ * as this cache. */
+ storagedir_max_entries = max_entries;
+#endif
+
+ cache->dir = storage_dir_new(directory, storagedir_max_entries);
+ tor_free(directory);
+ if (!cache->dir) {
+ tor_free(cache);
+ return NULL;
+ }
+
+ consensus_cache_rescan(cache);
+ return cache;
+}
+
+/** Return true if it's okay to put more entries in this cache than
+ * its official file limit.
+ *
+ * (We need this method on Windows, where we can't unlink files that are still
+ * in use, and therefore might need to temporarily exceed the file limit until
+ * the no-longer-wanted files are deletable.)
+ */
+int
+consensus_cache_may_overallocate(consensus_cache_t *cache)
+{
+ (void) cache;
+#ifdef MUST_UNMAP_TO_UNLINK
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+/**
+ * Tell the sandbox (if any) configured by <b>cfg</b> to allow the
+ * operations that <b>cache</b> will need.
+ */
+int
+consensus_cache_register_with_sandbox(consensus_cache_t *cache,
+ struct sandbox_cfg_elem **cfg)
+{
+#ifdef MUST_UNMAP_TO_UNLINK
+ /* Our Linux sandbox doesn't support huge file lists like the one that would
+ * be generated by using VERY_LARGE_STORAGEDIR_LIMIT above in
+ * consensus_cache_open(). Since the Linux sandbox is the only one we have
+ * right now, we just assert that we never reach this point when we've had
+ * to use VERY_LARGE_STORAGEDIR_LIMIT.
+ *
+ * If at some point in the future we have a different sandbox mechanism that
+ * can handle huge file lists, we can remove this assertion or make it
+ * conditional.
+ */
+ tor_assert_nonfatal_unreached();
+#endif
+ return storage_dir_register_with_sandbox(cache->dir, cfg);
+}
+
+/**
+ * Helper: clear all entries from <b>cache</b> (but do not delete
+ * any that aren't marked for removal
+ */
+static void
+consensus_cache_clear(consensus_cache_t *cache)
+{
+ consensus_cache_delete_pending(cache, 0);
+
+ SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) {
+ ent->in_cache = NULL;
+ consensus_cache_entry_decref(ent);
+ } SMARTLIST_FOREACH_END(ent);
+ smartlist_free(cache->entries);
+ cache->entries = NULL;
+}
+
+/**
+ * Drop all storage held by <b>cache</b>.
+ */
+void
+consensus_cache_free(consensus_cache_t *cache)
+{
+ if (! cache)
+ return;
+
+ if (cache->entries) {
+ consensus_cache_clear(cache);
+ }
+ storage_dir_free(cache->dir);
+ tor_free(cache);
+}
+
+/**
+ * Write <b>datalen</b> bytes of data at <b>data</b> into the <b>cache</b>,
+ * labeling that data with <b>labels</b>. On failure, return NULL. On
+ * success, return a newly created consensus_cache_entry_t.
+ *
+ * The returned value will be owned by the cache, and you will have a
+ * reference to it. Call consensus_cache_entry_decref() when you are
+ * done with it.
+ *
+ * The provided <b>labels</b> MUST have distinct keys: if they don't,
+ * this API does not specify which values (if any) for the duplicate keys
+ * will be considered.
+ */
+consensus_cache_entry_t *
+consensus_cache_add(consensus_cache_t *cache,
+ const config_line_t *labels,
+ const uint8_t *data,
+ size_t datalen)
+{
+ char *fname = NULL;
+ int r = storage_dir_save_labeled_to_file(cache->dir,
+ labels, data, datalen, &fname);
+ if (r < 0 || fname == NULL) {
+ return NULL;
+ }
+ consensus_cache_entry_t *ent =
+ tor_malloc_zero(sizeof(consensus_cache_entry_t));
+ ent->magic = CCE_MAGIC;
+ ent->fname = fname;
+ ent->labels = config_lines_dup(labels);
+ ent->in_cache = cache;
+ ent->unused_since = TIME_MAX;
+ smartlist_add(cache->entries, ent);
+ /* Start the reference count at 2: the caller owns one copy, and the
+ * cache owns another.
+ */
+ ent->refcnt = 2;
+
+ return ent;
+}
+
+/**
+ * Given a <b>cache</b>, return some entry for which <b>key</b>=<b>value</b>.
+ * Return NULL if no such entry exists.
+ *
+ * Does not adjust reference counts.
+ */
+consensus_cache_entry_t *
+consensus_cache_find_first(consensus_cache_t *cache,
+ const char *key,
+ const char *value)
+{
+ smartlist_t *tmp = smartlist_new();
+ consensus_cache_find_all(tmp, cache, key, value);
+ consensus_cache_entry_t *ent = NULL;
+ if (smartlist_len(tmp))
+ ent = smartlist_get(tmp, 0);
+ smartlist_free(tmp);
+ return ent;
+}
+
+/**
+ * Given a <b>cache</b>, add every entry to <b>out<b> for which
+ * <b>key</b>=<b>value</b>. If <b>key</b> is NULL, add every entry.
+ *
+ * Do not add any entry that has been marked for removal.
+ *
+ * Does not adjust reference counts.
+ */
+void
+consensus_cache_find_all(smartlist_t *out,
+ consensus_cache_t *cache,
+ const char *key,
+ const char *value)
+{
+ SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) {
+ if (ent->can_remove == 1) {
+ /* We want to delete this; pretend it isn't there. */
+ continue;
+ }
+ if (! key) {
+ smartlist_add(out, ent);
+ continue;
+ }
+ const char *found_val = consensus_cache_entry_get_value(ent, key);
+ if (found_val && !strcmp(value, found_val)) {
+ smartlist_add(out, ent);
+ }
+ } SMARTLIST_FOREACH_END(ent);
+}
+
+/**
+ * Given a list of consensus_cache_entry_t, remove all those entries
+ * that do not have <b>key</b>=<b>value</b> in their labels.
+ *
+ * Does not adjust reference counts.
+ */
+void
+consensus_cache_filter_list(smartlist_t *lst,
+ const char *key,
+ const char *value)
+{
+ if (BUG(lst == NULL))
+ return; // LCOV_EXCL_LINE
+ if (key == NULL)
+ return;
+ SMARTLIST_FOREACH_BEGIN(lst, consensus_cache_entry_t *, ent) {
+ const char *found_val = consensus_cache_entry_get_value(ent, key);
+ if (! found_val || strcmp(value, found_val)) {
+ SMARTLIST_DEL_CURRENT(lst, ent);
+ }
+ } SMARTLIST_FOREACH_END(ent);
+}
+
+/**
+ * If <b>ent</b> has a label with the given <b>key</b>, return its
+ * value. Otherwise return NULL.
+ *
+ * The return value is only guaranteed to be valid for as long as you
+ * hold a reference to <b>ent</b>.
+ */
+const char *
+consensus_cache_entry_get_value(const consensus_cache_entry_t *ent,
+ const char *key)
+{
+ const config_line_t *match = config_line_find(ent->labels, key);
+ if (match)
+ return match->value;
+ else
+ return NULL;
+}
+
+/**
+ * Return a pointer to the labels in <b>ent</b>.
+ *
+ * This pointer is only guaranteed to be valid for as long as you
+ * hold a reference to <b>ent</b>.
+ */
+const config_line_t *
+consensus_cache_entry_get_labels(const consensus_cache_entry_t *ent)
+{
+ return ent->labels;
+}
+
+/**
+ * Increase the reference count of <b>ent</b>.
+ */
+void
+consensus_cache_entry_incref(consensus_cache_entry_t *ent)
+{
+ if (BUG(ent->magic != CCE_MAGIC))
+ return; // LCOV_EXCL_LINE
+ ++ent->refcnt;
+ ent->unused_since = TIME_MAX;
+}
+
+/**
+ * Release a reference held to <b>ent</b>.
+ *
+ * If it was the last reference, ent will be freed. Therefore, you must not
+ * use <b>ent</b> after calling this function.
+ */
+void
+consensus_cache_entry_decref(consensus_cache_entry_t *ent)
+{
+ if (! ent)
+ return;
+ if (BUG(ent->refcnt <= 0))
+ return; // LCOV_EXCL_LINE
+ if (BUG(ent->magic != CCE_MAGIC))
+ return; // LCOV_EXCL_LINE
+
+ --ent->refcnt;
+
+ if (ent->refcnt == 1 && ent->in_cache) {
+ /* Only the cache has a reference: we don't need to keep the file
+ * mapped */
+ if (ent->map) {
+ if (ent->release_aggressively) {
+ consensus_cache_entry_unmap(ent);
+ } else {
+ ent->unused_since = approx_time();
+ }
+ }
+ return;
+ }
+
+ if (ent->refcnt > 0)
+ return;
+
+ /* Refcount is zero; we can free it. */
+ if (ent->map) {
+ consensus_cache_entry_unmap(ent);
+ }
+ tor_free(ent->fname);
+ config_free_lines(ent->labels);
+ consensus_cache_entry_handles_clear(ent);
+ memwipe(ent, 0, sizeof(consensus_cache_entry_t));
+ tor_free(ent);
+}
+
+/**
+ * Mark <b>ent</b> for deletion from the cache. Deletion will not occur
+ * until the cache is the only place that holds a reference to <b>ent</b>.
+ */
+void
+consensus_cache_entry_mark_for_removal(consensus_cache_entry_t *ent)
+{
+ ent->can_remove = 1;
+}
+
+/**
+ * Mark <b>ent</b> as the kind of entry that we don't need to keep mmap'd for
+ * any longer than we're actually using it.
+ */
+void
+consensus_cache_entry_mark_for_aggressive_release(consensus_cache_entry_t *ent)
+{
+ ent->release_aggressively = 1;
+}
+
+/**
+ * Try to read the body of <b>ent</b> into memory if it isn't already
+ * loaded. On success, set *<b>body_out</b> to the body, *<b>sz_out</b>
+ * to its size, and return 0. On failure return -1.
+ *
+ * The resulting body pointer will only be valid for as long as you
+ * hold a reference to <b>ent</b>.
+ */
+int
+consensus_cache_entry_get_body(const consensus_cache_entry_t *ent,
+ const uint8_t **body_out,
+ size_t *sz_out)
+{
+ if (BUG(ent->magic != CCE_MAGIC))
+ return -1; // LCOV_EXCL_LINE
+
+ if (! ent->map) {
+ if (! ent->in_cache)
+ return -1;
+
+ consensus_cache_entry_map((consensus_cache_t *)ent->in_cache,
+ (consensus_cache_entry_t *)ent);
+ if (! ent->map) {
+ return -1;
+ }
+ }
+
+ *body_out = ent->body;
+ *sz_out = ent->bodylen;
+ return 0;
+}
+
+/**
+ * Unmap every mmap'd element of <b>cache</b> that has been unused
+ * since <b>cutoff</b>.
+ */
+void
+consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff)
+{
+ SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) {
+ tor_assert_nonfatal(ent->in_cache == cache);
+ if (ent->refcnt > 1 || BUG(ent->in_cache == NULL)) {
+ /* Somebody is using this entry right now */
+ continue;
+ }
+ if (ent->unused_since > cutoff) {
+ /* Has been unused only for a little while */
+ continue;
+ }
+ if (ent->map == NULL) {
+ /* Not actually mapped. */
+ continue;
+ }
+ consensus_cache_entry_unmap(ent);
+ } SMARTLIST_FOREACH_END(ent);
+}
+
+/**
+ * Return the number of currently unused filenames available in this cache.
+ */
+int
+consensus_cache_get_n_filenames_available(consensus_cache_t *cache)
+{
+ tor_assert(cache);
+ int max = cache->max_entries;
+ int used = smartlist_len(storage_dir_list(cache->dir));
+#ifdef MUST_UNMAP_TO_UNLINK
+ if (used > max)
+ return 0;
+#else
+ tor_assert_nonfatal(max >= used);
+#endif
+ return max - used;
+}
+
+/**
+ * Delete every element of <b>cache</b> has been marked with
+ * consensus_cache_entry_mark_for_removal. If <b>force</b> is false,
+ * retain those entries which are in use by something other than the cache.
+ */
+void
+consensus_cache_delete_pending(consensus_cache_t *cache, int force)
+{
+ SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) {
+ tor_assert_nonfatal(ent->in_cache == cache);
+ int force_ent = force;
+#ifdef MUST_UNMAP_TO_UNLINK
+ /* We cannot delete anything with an active mmap on win32, so no
+ * force-deletion. */
+ if (ent->map) {
+ force_ent = 0;
+ }
+#endif
+ if (! force_ent) {
+ if (ent->refcnt > 1 || BUG(ent->in_cache == NULL)) {
+ /* Somebody is using this entry right now */
+ continue;
+ }
+ }
+ if (ent->can_remove == 0) {
+ /* Don't want to delete this. */
+ continue;
+ }
+ if (BUG(ent->refcnt <= 0)) {
+ continue; // LCOV_EXCL_LINE
+ }
+
+ SMARTLIST_DEL_CURRENT(cache->entries, ent);
+ ent->in_cache = NULL;
+ char *fname = tor_strdup(ent->fname); /* save a copy */
+ consensus_cache_entry_decref(ent);
+ storage_dir_remove_file(cache->dir, fname);
+ tor_free(fname);
+ } SMARTLIST_FOREACH_END(ent);
+}
+
+/**
+ * Internal helper: rescan <b>cache</b> and rebuild its list of entries.
+ */
+static void
+consensus_cache_rescan(consensus_cache_t *cache)
+{
+ if (cache->entries) {
+ consensus_cache_clear(cache);
+ }
+
+ cache->entries = smartlist_new();
+ const smartlist_t *fnames = storage_dir_list(cache->dir);
+ SMARTLIST_FOREACH_BEGIN(fnames, const char *, fname) {
+ tor_mmap_t *map = NULL;
+ config_line_t *labels = NULL;
+ const uint8_t *body;
+ size_t bodylen;
+ map = storage_dir_map_labeled(cache->dir, fname,
+ &labels, &body, &bodylen);
+ if (! map) {
+ /* The ERANGE error might come from tor_mmap_file() -- it means the file
+ * was empty. EINVAL might come from ..map_labeled() -- it means the
+ * file was misformatted. In both cases, we should just delete it.
+ */
+ if (errno == ERANGE || errno == EINVAL) {
+ log_warn(LD_FS, "Found %s file %s in consensus cache; removing it.",
+ errno == ERANGE ? "empty" : "misformatted",
+ escaped(fname));
+ storage_dir_remove_file(cache->dir, fname);
+ } else {
+ /* Can't load this; continue */
+ log_warn(LD_FS, "Unable to map file %s from consensus cache: %s",
+ escaped(fname), strerror(errno));
+ }
+ continue;
+ }
+ consensus_cache_entry_t *ent =
+ tor_malloc_zero(sizeof(consensus_cache_entry_t));
+ ent->magic = CCE_MAGIC;
+ ent->fname = tor_strdup(fname);
+ ent->labels = labels;
+ ent->refcnt = 1;
+ ent->in_cache = cache;
+ ent->unused_since = TIME_MAX;
+ smartlist_add(cache->entries, ent);
+ tor_munmap_file(map); /* don't actually need to keep this around */
+ } SMARTLIST_FOREACH_END(fname);
+}
+
+/**
+ * Make sure that <b>ent</b> is mapped into RAM.
+ */
+static void
+consensus_cache_entry_map(consensus_cache_t *cache,
+ consensus_cache_entry_t *ent)
+{
+ if (ent->map)
+ return;
+
+ ent->map = storage_dir_map_labeled(cache->dir, ent->fname,
+ NULL, &ent->body, &ent->bodylen);
+ ent->unused_since = TIME_MAX;
+}
+
+/**
+ * Unmap <b>ent</b> from RAM.
+ *
+ * Do not call this if something other than the cache is holding a reference
+ * to <b>ent</b>
+ */
+static void
+consensus_cache_entry_unmap(consensus_cache_entry_t *ent)
+{
+ ent->unused_since = TIME_MAX;
+ if (!ent->map)
+ return;
+
+ tor_munmap_file(ent->map);
+ ent->map = NULL;
+ ent->body = NULL;
+ ent->bodylen = 0;
+ ent->unused_since = TIME_MAX;
+}
+
+HANDLE_IMPL(consensus_cache_entry, consensus_cache_entry_t, )
+
+#ifdef TOR_UNIT_TESTS
+/**
+ * Testing only: Return true iff <b>ent</b> is mapped into memory.
+ *
+ * (In normal operation, this information is not exposed.)
+ */
+int
+consensus_cache_entry_is_mapped(consensus_cache_entry_t *ent)
+{
+ if (ent->map) {
+ tor_assert(ent->body);
+ return 1;
+ } else {
+ tor_assert(!ent->body);
+ return 0;
+ }
+}
+#endif
+
diff --git a/src/or/conscache.h b/src/or/conscache.h
new file mode 100644
index 0000000000..a0d74c4e08
--- /dev/null
+++ b/src/or/conscache.h
@@ -0,0 +1,62 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_CONSCACHE_H
+#define TOR_CONSCACHE_H
+
+#include "handles.h"
+
+typedef struct consensus_cache_entry_t consensus_cache_entry_t;
+typedef struct consensus_cache_t consensus_cache_t;
+
+HANDLE_DECL(consensus_cache_entry, consensus_cache_entry_t, )
+
+consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries);
+void consensus_cache_free(consensus_cache_t *cache);
+struct sandbox_cfg_elem;
+int consensus_cache_may_overallocate(consensus_cache_t *cache);
+int consensus_cache_register_with_sandbox(consensus_cache_t *cache,
+ struct sandbox_cfg_elem **cfg);
+void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff);
+void consensus_cache_delete_pending(consensus_cache_t *cache,
+ int force);
+int consensus_cache_get_n_filenames_available(consensus_cache_t *cache);
+consensus_cache_entry_t *consensus_cache_add(consensus_cache_t *cache,
+ const config_line_t *labels,
+ const uint8_t *data,
+ size_t datalen);
+
+consensus_cache_entry_t *consensus_cache_find_first(
+ consensus_cache_t *cache,
+ const char *key,
+ const char *value);
+
+void consensus_cache_find_all(smartlist_t *out,
+ consensus_cache_t *cache,
+ const char *key,
+ const char *value);
+void consensus_cache_filter_list(smartlist_t *lst,
+ const char *key,
+ const char *value);
+
+const char *consensus_cache_entry_get_value(const consensus_cache_entry_t *ent,
+ const char *key);
+const config_line_t *consensus_cache_entry_get_labels(
+ const consensus_cache_entry_t *ent);
+
+void consensus_cache_entry_incref(consensus_cache_entry_t *ent);
+void consensus_cache_entry_decref(consensus_cache_entry_t *ent);
+
+void consensus_cache_entry_mark_for_removal(consensus_cache_entry_t *ent);
+void consensus_cache_entry_mark_for_aggressive_release(
+ consensus_cache_entry_t *ent);
+int consensus_cache_entry_get_body(const consensus_cache_entry_t *ent,
+ const uint8_t **body_out,
+ size_t *sz_out);
+
+#ifdef TOR_UNIT_TESTS
+int consensus_cache_entry_is_mapped(consensus_cache_entry_t *ent);
+#endif
+
+#endif
+
diff --git a/src/or/consdiff.c b/src/or/consdiff.c
new file mode 100644
index 0000000000..deaf465fe7
--- /dev/null
+++ b/src/or/consdiff.c
@@ -0,0 +1,1415 @@
+/* Copyright (c) 2014, Daniel Martí
+ * Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file consdiff.c
+ * \brief Consensus diff implementation, including both the generation and the
+ * application of diffs in a minimal ed format.
+ *
+ * The consensus diff application is done in consdiff_apply_diff, which relies
+ * on apply_ed_diff for the main ed diff part and on some digest helper
+ * functions to check the digest hashes found in the consensus diff header.
+ *
+ * The consensus diff generation is more complex. consdiff_gen_diff generates
+ * it, relying on gen_ed_diff to generate the ed diff and some digest helper
+ * functions to generate the digest hashes.
+ *
+ * gen_ed_diff is the tricky bit. In it simplest form, it will take quadratic
+ * time and linear space to generate an ed diff given two smartlists. As shown
+ * in its comment section, calling calc_changes on the entire two consensuses
+ * will calculate what is to be added and what is to be deleted in the diff.
+ * Its comment section briefly explains how it works.
+ *
+ * In our case specific to consensuses, we take advantage of the fact that
+ * consensuses list routers sorted by their identities. We use that
+ * information to avoid running calc_changes on the whole smartlists.
+ * gen_ed_diff will navigate through the two consensuses identity by identity
+ * and will send small couples of slices to calc_changes, keeping the running
+ * time near-linear. This is explained in more detail in the gen_ed_diff
+ * comments.
+ *
+ * The allocation strategy tries to save time and memory by avoiding needless
+ * copies. Instead of actually splitting the inputs into separate strings, we
+ * allocate cdline_t objects, each of which represents a line in the original
+ * object or in the output. We use memarea_t allocators to manage the
+ * temporary memory we use when generating or applying diffs.
+ **/
+
+#define CONSDIFF_PRIVATE
+
+#include "or.h"
+#include "consdiff.h"
+#include "memarea.h"
+#include "routerparse.h"
+
+static const char* ns_diff_version = "network-status-diff-version 1";
+static const char* hash_token = "hash";
+
+static char *consensus_join_lines(const smartlist_t *inp);
+
+/** Return true iff a and b have the same contents. */
+STATIC int
+lines_eq(const cdline_t *a, const cdline_t *b)
+{
+ return a->len == b->len && fast_memeq(a->s, b->s, a->len);
+}
+
+/** Return true iff a has the same contents as the nul-terminated string b. */
+STATIC int
+line_str_eq(const cdline_t *a, const char *b)
+{
+ const size_t len = strlen(b);
+ tor_assert(len <= UINT32_MAX);
+ cdline_t bline = { b, (uint32_t)len };
+ return lines_eq(a, &bline);
+}
+
+/** Return true iff a begins with the same contents as the nul-terminated
+ * string b. */
+static int
+line_starts_with_str(const cdline_t *a, const char *b)
+{
+ const size_t len = strlen(b);
+ tor_assert(len <= UINT32_MAX);
+ return a->len >= len && fast_memeq(a->s, b, len);
+}
+
+/** Return a new cdline_t holding as its contents the nul-terminated
+ * string s. Use the provided memory area for storage. */
+static cdline_t *
+cdline_linecpy(memarea_t *area, const char *s)
+{
+ size_t len = strlen(s);
+ const char *ss = memarea_memdup(area, s, len);
+ cdline_t *line = memarea_alloc(area, sizeof(cdline_t));
+ line->s = ss;
+ line->len = (uint32_t)len;
+ return line;
+}
+
+/** Add a cdline_t to <b>lst</b> holding as its contents the nul-terminated
+ * string s. Use the provided memory area for storage. */
+STATIC void
+smartlist_add_linecpy(smartlist_t *lst, memarea_t *area, const char *s)
+{
+ smartlist_add(lst, cdline_linecpy(area, s));
+}
+
+/** Compute the digest of <b>cons</b>, and store the result in
+ * <b>digest_out</b>. Return 0 on success, -1 on failure. */
+/* This is a separate, mockable function so that we can override it when
+ * fuzzing. */
+MOCK_IMPL(STATIC int,
+consensus_compute_digest,(const char *cons,
+ consensus_digest_t *digest_out))
+{
+ int r = crypto_digest256((char*)digest_out->sha3_256,
+ cons, strlen(cons), DIGEST_SHA3_256);
+ return r;
+}
+
+/** Compute the digest-as-signed of <b>cons</b>, and store the result in
+ * <b>digest_out</b>. Return 0 on success, -1 on failure. */
+/* This is a separate, mockable function so that we can override it when
+ * fuzzing. */
+MOCK_IMPL(STATIC int,
+consensus_compute_digest_as_signed,(const char *cons,
+ consensus_digest_t *digest_out))
+{
+ return router_get_networkstatus_v3_sha3_as_signed(digest_out->sha3_256,
+ cons);
+}
+
+/** Return true iff <b>d1</b> and <b>d2</b> contain the same digest */
+/* This is a separate, mockable function so that we can override it when
+ * fuzzing. */
+MOCK_IMPL(STATIC int,
+consensus_digest_eq,(const uint8_t *d1,
+ const uint8_t *d2))
+{
+ return fast_memeq(d1, d2, DIGEST256_LEN);
+}
+
+/** Create (allocate) a new slice from a smartlist. Assumes that the start
+ * and the end indexes are within the bounds of the initial smartlist. The end
+ * element is not part of the resulting slice. If end is -1, the slice is to
+ * reach the end of the smartlist.
+ */
+STATIC smartlist_slice_t *
+smartlist_slice(const smartlist_t *list, int start, int end)
+{
+ int list_len = smartlist_len(list);
+ tor_assert(start >= 0);
+ tor_assert(start <= list_len);
+ if (end == -1) {
+ end = list_len;
+ }
+ tor_assert(start <= end);
+
+ smartlist_slice_t *slice = tor_malloc(sizeof(smartlist_slice_t));
+ slice->list = list;
+ slice->offset = start;
+ slice->len = end - start;
+ return slice;
+}
+
+/** Helper: Compute the longest common subsequence lengths for the two slices.
+ * Used as part of the diff generation to find the column at which to split
+ * slice2 while still having the optimal solution.
+ * If direction is -1, the navigation is reversed. Otherwise it must be 1.
+ * The length of the resulting integer array is that of the second slice plus
+ * one.
+ */
+STATIC int *
+lcs_lengths(const smartlist_slice_t *slice1, const smartlist_slice_t *slice2,
+ int direction)
+{
+ size_t a_size = sizeof(int) * (slice2->len+1);
+
+ /* Resulting lcs lengths. */
+ int *result = tor_malloc_zero(a_size);
+ /* Copy of the lcs lengths from the last iteration. */
+ int *prev = tor_malloc(a_size);
+
+ tor_assert(direction == 1 || direction == -1);
+
+ int si = slice1->offset;
+ if (direction == -1) {
+ si += (slice1->len-1);
+ }
+
+ for (int i = 0; i < slice1->len; ++i, si+=direction) {
+
+ const cdline_t *line1 = smartlist_get(slice1->list, si);
+ /* Store the last results. */
+ memcpy(prev, result, a_size);
+
+ int sj = slice2->offset;
+ if (direction == -1) {
+ sj += (slice2->len-1);
+ }
+
+ for (int j = 0; j < slice2->len; ++j, sj+=direction) {
+
+ const cdline_t *line2 = smartlist_get(slice2->list, sj);
+ if (lines_eq(line1, line2)) {
+ /* If the lines are equal, the lcs is one line longer. */
+ result[j + 1] = prev[j] + 1;
+ } else {
+ /* If not, see what lcs parent path is longer. */
+ result[j + 1] = MAX(result[j], prev[j + 1]);
+ }
+ }
+ }
+ tor_free(prev);
+ return result;
+}
+
+/** Helper: Trim any number of lines that are equally at the start or the end
+ * of both slices.
+ */
+STATIC void
+trim_slices(smartlist_slice_t *slice1, smartlist_slice_t *slice2)
+{
+ while (slice1->len>0 && slice2->len>0) {
+ const cdline_t *line1 = smartlist_get(slice1->list, slice1->offset);
+ const cdline_t *line2 = smartlist_get(slice2->list, slice2->offset);
+ if (!lines_eq(line1, line2)) {
+ break;
+ }
+ slice1->offset++; slice1->len--;
+ slice2->offset++; slice2->len--;
+ }
+
+ int i1 = (slice1->offset+slice1->len)-1;
+ int i2 = (slice2->offset+slice2->len)-1;
+
+ while (slice1->len>0 && slice2->len>0) {
+ const cdline_t *line1 = smartlist_get(slice1->list, i1);
+ const cdline_t *line2 = smartlist_get(slice2->list, i2);
+ if (!lines_eq(line1, line2)) {
+ break;
+ }
+ i1--;
+ slice1->len--;
+ i2--;
+ slice2->len--;
+ }
+}
+
+/** Like smartlist_string_pos, but uses a cdline_t, and is restricted to the
+ * bounds of the slice.
+ */
+STATIC int
+smartlist_slice_string_pos(const smartlist_slice_t *slice,
+ const cdline_t *string)
+{
+ int end = slice->offset + slice->len;
+ for (int i = slice->offset; i < end; ++i) {
+ const cdline_t *el = smartlist_get(slice->list, i);
+ if (lines_eq(el, string)) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+/** Helper: Set all the appropriate changed booleans to true. The first slice
+ * must be of length 0 or 1. All the lines of slice1 and slice2 which are not
+ * present in the other slice will be set to changed in their bool array.
+ * The two changed bool arrays are passed in the same order as the slices.
+ */
+STATIC void
+set_changed(bitarray_t *changed1, bitarray_t *changed2,
+ const smartlist_slice_t *slice1, const smartlist_slice_t *slice2)
+{
+ int toskip = -1;
+ tor_assert(slice1->len == 0 || slice1->len == 1);
+
+ if (slice1->len == 1) {
+ const cdline_t *line_common = smartlist_get(slice1->list, slice1->offset);
+ toskip = smartlist_slice_string_pos(slice2, line_common);
+ if (toskip == -1) {
+ bitarray_set(changed1, slice1->offset);
+ }
+ }
+ int end = slice2->offset + slice2->len;
+ for (int i = slice2->offset; i < end; ++i) {
+ if (i != toskip) {
+ bitarray_set(changed2, i);
+ }
+ }
+}
+
+/*
+ * Helper: Given that slice1 has been split by half into top and bot, we want
+ * to fetch the column at which to split slice2 so that we are still on track
+ * to the optimal diff solution, i.e. the shortest one. We use lcs_lengths
+ * since the shortest diff is just another way to say the longest common
+ * subsequence.
+ */
+static int
+optimal_column_to_split(const smartlist_slice_t *top,
+ const smartlist_slice_t *bot,
+ const smartlist_slice_t *slice2)
+{
+ int *lens_top = lcs_lengths(top, slice2, 1);
+ int *lens_bot = lcs_lengths(bot, slice2, -1);
+ int column=0, max_sum=-1;
+
+ for (int i = 0; i < slice2->len+1; ++i) {
+ int sum = lens_top[i] + lens_bot[slice2->len-i];
+ if (sum > max_sum) {
+ column = i;
+ max_sum = sum;
+ }
+ }
+ tor_free(lens_top);
+ tor_free(lens_bot);
+
+ return column;
+}
+
+/**
+ * Helper: Figure out what elements are new or gone on the second smartlist
+ * relative to the first smartlist, and store the booleans in the bitarrays.
+ * True on the first bitarray means the element is gone, true on the second
+ * bitarray means it's new.
+ *
+ * In its base case, either of the smartlists is of length <= 1 and we can
+ * quickly see what elements are new or are gone. In the other case, we will
+ * split one smartlist by half and we'll use optimal_column_to_split to find
+ * the optimal column at which to split the second smartlist so that we are
+ * finding the smallest diff possible.
+ */
+STATIC void
+calc_changes(smartlist_slice_t *slice1,
+ smartlist_slice_t *slice2,
+ bitarray_t *changed1, bitarray_t *changed2)
+{
+ trim_slices(slice1, slice2);
+
+ if (slice1->len <= 1) {
+ set_changed(changed1, changed2, slice1, slice2);
+
+ } else if (slice2->len <= 1) {
+ set_changed(changed2, changed1, slice2, slice1);
+
+ /* Keep on splitting the slices in two. */
+ } else {
+ smartlist_slice_t *top, *bot, *left, *right;
+
+ /* Split the first slice in half. */
+ int mid = slice1->len/2;
+ top = smartlist_slice(slice1->list, slice1->offset, slice1->offset+mid);
+ bot = smartlist_slice(slice1->list, slice1->offset+mid,
+ slice1->offset+slice1->len);
+
+ /* Split the second slice by the optimal column. */
+ int mid2 = optimal_column_to_split(top, bot, slice2);
+ left = smartlist_slice(slice2->list, slice2->offset, slice2->offset+mid2);
+ right = smartlist_slice(slice2->list, slice2->offset+mid2,
+ slice2->offset+slice2->len);
+
+ calc_changes(top, left, changed1, changed2);
+ calc_changes(bot, right, changed1, changed2);
+ tor_free(top);
+ tor_free(bot);
+ tor_free(left);
+ tor_free(right);
+ }
+}
+
+/* This table is from crypto.c. The SP and PAD defines are different. */
+#define NOT_VALID_BASE64 255
+#define X NOT_VALID_BASE64
+#define SP NOT_VALID_BASE64
+#define PAD NOT_VALID_BASE64
+static const uint8_t base64_compare_table[256] = {
+ X, X, X, X, X, X, X, X, X, SP, SP, SP, X, SP, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ SP, X, X, X, X, X, X, X, X, X, X, 62, X, X, X, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, X, X, X, PAD, X, X,
+ X, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, X, X, X, X, X,
+ X, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
+};
+
+/** Helper: Get the identity hash from a router line, assuming that the line
+ * at least appears to be a router line and thus starts with "r ".
+ *
+ * If an identity hash is found, store it (without decoding it) in
+ * <b>hash_out</b>, and return 0. On failure, return -1.
+ */
+STATIC int
+get_id_hash(const cdline_t *line, cdline_t *hash_out)
+{
+ if (line->len < 2)
+ return -1;
+
+ /* Skip the router name. */
+ const char *hash = memchr(line->s + 2, ' ', line->len - 2);
+ if (!hash) {
+ return -1;
+ }
+
+ hash++;
+ const char *hash_end = hash;
+ /* Stop when the first non-base64 character is found. Use unsigned chars to
+ * avoid negative indexes causing crashes.
+ */
+ while (base64_compare_table[*((unsigned char*)hash_end)]
+ != NOT_VALID_BASE64 &&
+ hash_end < line->s + line->len) {
+ hash_end++;
+ }
+
+ /* Empty hash. */
+ if (hash_end == hash) {
+ return -1;
+ }
+
+ hash_out->s = hash;
+ /* Always true because lines are limited to this length */
+ tor_assert(hash_end >= hash);
+ tor_assert((size_t)(hash_end - hash) <= UINT32_MAX);
+ hash_out->len = (uint32_t)(hash_end - hash);
+
+ return 0;
+}
+
+/** Helper: Check that a line is a valid router entry. We must at least be
+ * able to fetch a proper identity hash from it for it to be valid.
+ */
+STATIC int
+is_valid_router_entry(const cdline_t *line)
+{
+ if (line->len < 2 || fast_memneq(line->s, "r ", 2))
+ return 0;
+ cdline_t tmp;
+ return (get_id_hash(line, &tmp) == 0);
+}
+
+/** Helper: Find the next router line starting at the current position.
+ * Assumes that cur is lower than the length of the smartlist, i.e. it is a
+ * line within the bounds of the consensus. The only exception is when we
+ * don't want to skip the first line, in which case cur will be -1.
+ */
+STATIC int
+next_router(const smartlist_t *cons, int cur)
+{
+ int len = smartlist_len(cons);
+ tor_assert(cur >= -1 && cur < len);
+
+ if (++cur >= len) {
+ return len;
+ }
+
+ const cdline_t *line = smartlist_get(cons, cur);
+ while (!is_valid_router_entry(line)) {
+ if (++cur >= len) {
+ return len;
+ }
+ line = smartlist_get(cons, cur);
+ }
+ return cur;
+}
+
+/** Helper: compare two base64-encoded identity hashes, which may be of
+ * different lengths. Comparison ends when the first non-base64 char is found.
+ */
+STATIC int
+base64cmp(const cdline_t *hash1, const cdline_t *hash2)
+{
+ /* NULL is always lower, useful for last_hash which starts at NULL. */
+ if (!hash1->s && !hash2->s) {
+ return 0;
+ }
+ if (!hash1->s) {
+ return -1;
+ }
+ if (!hash2->s) {
+ return 1;
+ }
+
+ /* Don't index with a char; char may be signed. */
+ const unsigned char *a = (unsigned char*)hash1->s;
+ const unsigned char *b = (unsigned char*)hash2->s;
+ const unsigned char *a_end = a + hash1->len;
+ const unsigned char *b_end = b + hash2->len;
+ while (1) {
+ uint8_t av = base64_compare_table[*a];
+ uint8_t bv = base64_compare_table[*b];
+ if (av == NOT_VALID_BASE64) {
+ if (bv == NOT_VALID_BASE64) {
+ /* Both ended with exactly the same characters. */
+ return 0;
+ } else {
+ /* hash2 goes on longer than hash1 and thus hash1 is lower. */
+ return -1;
+ }
+ } else if (bv == NOT_VALID_BASE64) {
+ /* hash1 goes on longer than hash2 and thus hash1 is greater. */
+ return 1;
+ } else if (av < bv) {
+ /* The first difference shows that hash1 is lower. */
+ return -1;
+ } else if (av > bv) {
+ /* The first difference shows that hash1 is greater. */
+ return 1;
+ } else {
+ a++;
+ b++;
+ if (a == a_end) {
+ if (b == b_end) {
+ return 0;
+ } else {
+ return -1;
+ }
+ } else if (b == b_end) {
+ return 1;
+ }
+ }
+ }
+}
+
+/** Structure used to remember the previous and current identity hash of
+ * the "r " lines in a consensus, to enforce well-ordering. */
+typedef struct router_id_iterator_t {
+ cdline_t last_hash;
+ cdline_t hash;
+} router_id_iterator_t;
+
+/**
+ * Initializer for a router_id_iterator_t.
+ */
+#define ROUTER_ID_ITERATOR_INIT { { NULL, 0 }, { NULL, 0 } }
+
+/** Given an index *<b>idxp</b> into the consensus at <b>cons</b>, advance
+ * the index to the next router line ("r ...") in the consensus, or to
+ * an index one after the end of the list if there is no such line.
+ *
+ * Use <b>iter</b> to record the hash of the found router line, if any,
+ * and to enforce ordering on the hashes. If the hashes are mis-ordered,
+ * return -1. Else, return 0.
+ **/
+static int
+find_next_router_line(const smartlist_t *cons,
+ const char *consname,
+ int *idxp,
+ router_id_iterator_t *iter)
+{
+ *idxp = next_router(cons, *idxp);
+ if (*idxp < smartlist_len(cons)) {
+ memcpy(&iter->last_hash, &iter->hash, sizeof(cdline_t));
+ if (get_id_hash(smartlist_get(cons, *idxp), &iter->hash) < 0 ||
+ base64cmp(&iter->hash, &iter->last_hash) <= 0) {
+ log_warn(LD_CONSDIFF, "Refusing to generate consensus diff because "
+ "the %s consensus doesn't have its router entries sorted "
+ "properly.", consname);
+ return -1;
+ }
+ }
+ return 0;
+}
+
+/** Line-prefix indicating the beginning of the signatures section that we
+ * intend to delete. */
+#define START_OF_SIGNATURES_SECTION "directory-signature "
+
+/** Pre-process a consensus in <b>cons</b> (represented as a list of cdline_t)
+ * to remove the signatures from it. If the footer is removed, return a
+ * cdline_t containing a delete command to delete the footer, allocated in
+ * <b>area</>. If no footer is removed, return NULL.
+ *
+ * We remove the signatures here because they are not themselves signed, and
+ * as such there might be different encodings for them.
+ */
+static cdline_t *
+preprocess_consensus(memarea_t *area,
+ smartlist_t *cons)
+{
+ int idx;
+ int dirsig_idx = -1;
+ for (idx = 0; idx < smartlist_len(cons); ++idx) {
+ cdline_t *line = smartlist_get(cons, idx);
+ if (line_starts_with_str(line, START_OF_SIGNATURES_SECTION)) {
+ dirsig_idx = idx;
+ break;
+ }
+ }
+ if (dirsig_idx >= 0) {
+ char buf[64];
+ while (smartlist_len(cons) > dirsig_idx)
+ smartlist_del(cons, dirsig_idx);
+ tor_snprintf(buf, sizeof(buf), "%d,$d", dirsig_idx+1);
+ return cdline_linecpy(area, buf);
+ } else {
+ return NULL;
+ }
+}
+
+/** Generate an ed diff as a smartlist from two consensuses, also given as
+ * smartlists. Will return NULL if the diff could not be generated, which can
+ * happen if any lines the script had to add matched "." or if the routers
+ * were not properly ordered.
+ *
+ * All cdline_t objects in the resulting object are either references to lines
+ * in one of the inputs, or are newly allocated lines in the provided memarea.
+ *
+ * This implementation is consensus-specific. To generate an ed diff for any
+ * given input in quadratic time, you can replace all the code until the
+ * navigation in reverse order with the following:
+ *
+ * int len1 = smartlist_len(cons1);
+ * int len2 = smartlist_len(cons2);
+ * bitarray_t *changed1 = bitarray_init_zero(len1);
+ * bitarray_t *changed2 = bitarray_init_zero(len2);
+ * cons1_sl = smartlist_slice(cons1, 0, -1);
+ * cons2_sl = smartlist_slice(cons2, 0, -1);
+ * calc_changes(cons1_sl, cons2_sl, changed1, changed2);
+ */
+STATIC smartlist_t *
+gen_ed_diff(const smartlist_t *cons1_orig, const smartlist_t *cons2,
+ memarea_t *area)
+{
+ smartlist_t *cons1 = smartlist_new();
+ smartlist_add_all(cons1, cons1_orig);
+ cdline_t *remove_trailer = preprocess_consensus(area, cons1);
+
+ int len1 = smartlist_len(cons1);
+ int len2 = smartlist_len(cons2);
+ smartlist_t *result = smartlist_new();
+
+ if (remove_trailer) {
+ /* There's a delete-the-trailer line at the end, so add it here. */
+ smartlist_add(result, remove_trailer);
+ }
+
+ /* Initialize the changed bitarrays to zero, so that calc_changes only needs
+ * to set the ones that matter and leave the rest untouched.
+ */
+ bitarray_t *changed1 = bitarray_init_zero(len1);
+ bitarray_t *changed2 = bitarray_init_zero(len2);
+ int i1=-1, i2=-1;
+ int start1=0, start2=0;
+
+ /* To check that hashes are ordered properly */
+ router_id_iterator_t iter1 = ROUTER_ID_ITERATOR_INIT;
+ router_id_iterator_t iter2 = ROUTER_ID_ITERATOR_INIT;
+
+ /* i1 and i2 are initialized at the first line of each consensus. They never
+ * reach past len1 and len2 respectively, since next_router doesn't let that
+ * happen. i1 and i2 are advanced by at least one line at each iteration as
+ * long as they have not yet reached len1 and len2, so the loop is
+ * guaranteed to end, and each pair of (i1,i2) will be inspected at most
+ * once.
+ */
+ while (i1 < len1 || i2 < len2) {
+
+ /* Advance each of the two navigation positions by one router entry if not
+ * yet at the end.
+ */
+ if (i1 < len1) {
+ if (find_next_router_line(cons1, "base", &i1, &iter1) < 0) {
+ goto error_cleanup;
+ }
+ }
+
+ if (i2 < len2) {
+ if (find_next_router_line(cons2, "target", &i2, &iter2) < 0) {
+ goto error_cleanup;
+ }
+ }
+
+ /* If we have reached the end of both consensuses, there is no need to
+ * compare hashes anymore, since this is the last iteration.
+ */
+ if (i1 < len1 || i2 < len2) {
+
+ /* Keep on advancing the lower (by identity hash sorting) position until
+ * we have two matching positions. The only other possible outcome is
+ * that a lower position reaches the end of the consensus before it can
+ * reach a hash that is no longer the lower one. Since there will always
+ * be a lower hash for as long as the loop runs, one of the two indexes
+ * will always be incremented, thus assuring that the loop must end
+ * after a finite number of iterations. If that cannot be because said
+ * consensus has already reached the end, both are extended to their
+ * respecting ends since we are done.
+ */
+ int cmp = base64cmp(&iter1.hash, &iter2.hash);
+ while (cmp != 0) {
+ if (i1 < len1 && cmp < 0) {
+ if (find_next_router_line(cons1, "base", &i1, &iter1) < 0) {
+ goto error_cleanup;
+ }
+ if (i1 == len1) {
+ /* We finished the first consensus, so grab all the remaining
+ * lines of the second consensus and finish up.
+ */
+ i2 = len2;
+ break;
+ }
+ } else if (i2 < len2 && cmp > 0) {
+ if (find_next_router_line(cons2, "target", &i2, &iter2) < 0) {
+ goto error_cleanup;
+ }
+ if (i2 == len2) {
+ /* We finished the second consensus, so grab all the remaining
+ * lines of the first consensus and finish up.
+ */
+ i1 = len1;
+ break;
+ }
+ } else {
+ i1 = len1;
+ i2 = len2;
+ break;
+ }
+ cmp = base64cmp(&iter1.hash, &iter2.hash);
+ }
+ }
+
+ /* Make slices out of these chunks (up to the common router entry) and
+ * calculate the changes for them.
+ * Error if any of the two slices are longer than 10K lines. That should
+ * never happen with any pair of real consensuses. Feeding more than 10K
+ * lines to calc_changes would be very slow anyway.
+ */
+#define MAX_LINE_COUNT (10000)
+ if (i1-start1 > MAX_LINE_COUNT || i2-start2 > MAX_LINE_COUNT) {
+ log_warn(LD_CONSDIFF, "Refusing to generate consensus diff because "
+ "we found too few common router ids.");
+ goto error_cleanup;
+ }
+
+ smartlist_slice_t *cons1_sl = smartlist_slice(cons1, start1, i1);
+ smartlist_slice_t *cons2_sl = smartlist_slice(cons2, start2, i2);
+ calc_changes(cons1_sl, cons2_sl, changed1, changed2);
+ tor_free(cons1_sl);
+ tor_free(cons2_sl);
+ start1 = i1, start2 = i2;
+ }
+
+ /* Navigate the changes in reverse order and generate one ed command for
+ * each chunk of changes.
+ */
+ i1=len1-1, i2=len2-1;
+ char buf[128];
+ while (i1 >= 0 || i2 >= 0) {
+
+ int start1x, start2x, end1, end2, added, deleted;
+
+ /* We are at a point were no changed bools are true, so just keep going. */
+ if (!(i1 >= 0 && bitarray_is_set(changed1, i1)) &&
+ !(i2 >= 0 && bitarray_is_set(changed2, i2))) {
+ if (i1 >= 0) {
+ i1--;
+ }
+ if (i2 >= 0) {
+ i2--;
+ }
+ continue;
+ }
+
+ end1 = i1, end2 = i2;
+
+ /* Grab all contiguous changed lines */
+ while (i1 >= 0 && bitarray_is_set(changed1, i1)) {
+ i1--;
+ }
+ while (i2 >= 0 && bitarray_is_set(changed2, i2)) {
+ i2--;
+ }
+
+ start1x = i1+1, start2x = i2+1;
+ added = end2-i2, deleted = end1-i1;
+
+ if (added == 0) {
+ if (deleted == 1) {
+ tor_snprintf(buf, sizeof(buf), "%id", start1x+1);
+ smartlist_add_linecpy(result, area, buf);
+ } else {
+ tor_snprintf(buf, sizeof(buf), "%i,%id", start1x+1, start1x+deleted);
+ smartlist_add_linecpy(result, area, buf);
+ }
+ } else {
+ int i;
+ if (deleted == 0) {
+ tor_snprintf(buf, sizeof(buf), "%ia", start1x);
+ smartlist_add_linecpy(result, area, buf);
+ } else if (deleted == 1) {
+ tor_snprintf(buf, sizeof(buf), "%ic", start1x+1);
+ smartlist_add_linecpy(result, area, buf);
+ } else {
+ tor_snprintf(buf, sizeof(buf), "%i,%ic", start1x+1, start1x+deleted);
+ smartlist_add_linecpy(result, area, buf);
+ }
+
+ for (i = start2x; i <= end2; ++i) {
+ cdline_t *line = smartlist_get(cons2, i);
+ if (line_str_eq(line, ".")) {
+ log_warn(LD_CONSDIFF, "Cannot generate consensus diff because "
+ "one of the lines to be added is \".\".");
+ goto error_cleanup;
+ }
+ smartlist_add(result, line);
+ }
+ smartlist_add_linecpy(result, area, ".");
+ }
+ }
+
+ smartlist_free(cons1);
+ bitarray_free(changed1);
+ bitarray_free(changed2);
+
+ return result;
+
+ error_cleanup:
+
+ smartlist_free(cons1);
+ bitarray_free(changed1);
+ bitarray_free(changed2);
+
+ smartlist_free(result);
+
+ return NULL;
+}
+
+/* Helper: Read a base-10 number between 0 and INT32_MAX from <b>s</b> and
+ * store it in <b>num_out</b>. Advance <b>s</b> to the characer immediately
+ * after the number. Return 0 on success, -1 on failure. */
+static int
+get_linenum(const char **s, int *num_out)
+{
+ int ok;
+ char *next;
+ if (!TOR_ISDIGIT(**s)) {
+ return -1;
+ }
+ *num_out = (int) tor_parse_long(*s, 10, 0, INT32_MAX, &ok, &next);
+ if (ok && next) {
+ *s = next;
+ return 0;
+ } else {
+ return -1;
+ }
+}
+
+/** Apply the ed diff, starting at <b>diff_starting_line</b>, to the consensus
+ * and return a new consensus, also as a line-based smartlist. Will return
+ * NULL if the ed diff is not properly formatted.
+ *
+ * All cdline_t objects in the resulting object are references to lines
+ * in one of the inputs; nothing is copied.
+ */
+STATIC smartlist_t *
+apply_ed_diff(const smartlist_t *cons1, const smartlist_t *diff,
+ int diff_starting_line)
+{
+ int diff_len = smartlist_len(diff);
+ int j = smartlist_len(cons1);
+ smartlist_t *cons2 = smartlist_new();
+
+ for (int i=diff_starting_line; i<diff_len; ++i) {
+ const cdline_t *diff_cdline = smartlist_get(diff, i);
+ char diff_line[128];
+
+ if (diff_cdline->len > sizeof(diff_line) - 1) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an ed command was far too long");
+ goto error_cleanup;
+ }
+ /* Copy the line to make it nul-terminated. */
+ memcpy(diff_line, diff_cdline->s, diff_cdline->len);
+ diff_line[diff_cdline->len] = 0;
+ const char *ptr = diff_line;
+ int start = 0, end = 0;
+ int had_range = 0;
+ int end_was_eof = 0;
+ if (get_linenum(&ptr, &start) < 0) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an ed command was missing a line number.");
+ goto error_cleanup;
+ }
+ if (*ptr == ',') {
+ /* Two-item range */
+ had_range = 1;
+ ++ptr;
+ if (*ptr == '$') {
+ end_was_eof = 1;
+ end = smartlist_len(cons1);
+ ++ptr;
+ } else if (get_linenum(&ptr, &end) < 0) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an ed command was missing a range end line number.");
+ goto error_cleanup;
+ }
+ /* Incoherent range. */
+ if (end <= start) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an invalid range was found in an ed command.");
+ goto error_cleanup;
+ }
+ } else {
+ /* We'll take <n1> as <n1>,<n1> for simplicity. */
+ end = start;
+ }
+
+ if (end > j) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "its commands are not properly sorted in reverse order.");
+ goto error_cleanup;
+ }
+
+ if (*ptr == '\0') {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "a line with no ed command was found");
+ goto error_cleanup;
+ }
+
+ if (*(ptr+1) != '\0') {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an ed command longer than one char was found.");
+ goto error_cleanup;
+ }
+
+ char action = *ptr;
+
+ switch (action) {
+ case 'a':
+ case 'c':
+ case 'd':
+ break;
+ default:
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "an unrecognised ed command was found.");
+ goto error_cleanup;
+ }
+
+ /** $ is not allowed with non-d actions. */
+ if (end_was_eof && action != 'd') {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "it wanted to use $ with a command other than delete");
+ goto error_cleanup;
+ }
+
+ /* 'a' commands are not allowed to have ranges. */
+ if (had_range && action == 'a') {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "it wanted to add lines after a range.");
+ goto error_cleanup;
+ }
+
+ /* Add unchanged lines. */
+ for (; j && j > end; --j) {
+ cdline_t *cons_line = smartlist_get(cons1, j-1);
+ smartlist_add(cons2, cons_line);
+ }
+
+ /* Ignore removed lines. */
+ if (action == 'c' || action == 'd') {
+ while (--j >= start) {
+ /* Skip line */
+ }
+ }
+
+ /* Add new lines in reverse order, since it will all be reversed at the
+ * end.
+ */
+ if (action == 'a' || action == 'c') {
+ int added_end = i;
+
+ i++; /* Skip the line with the range and command. */
+ while (i < diff_len) {
+ if (line_str_eq(smartlist_get(diff, i), ".")) {
+ break;
+ }
+ if (++i == diff_len) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "it has lines to be inserted that don't end with a \".\".");
+ goto error_cleanup;
+ }
+ }
+
+ int added_i = i-1;
+
+ /* It would make no sense to add zero new lines. */
+ if (added_i == added_end) {
+ log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+ "it has an ed command that tries to insert zero lines.");
+ goto error_cleanup;
+ }
+
+ while (added_i > added_end) {
+ cdline_t *added_line = smartlist_get(diff, added_i--);
+ smartlist_add(cons2, added_line);
+ }
+ }
+ }
+
+ /* Add remaining unchanged lines. */
+ for (; j > 0; --j) {
+ cdline_t *cons_line = smartlist_get(cons1, j-1);
+ smartlist_add(cons2, cons_line);
+ }
+
+ /* Reverse the whole thing since we did it from the end. */
+ smartlist_reverse(cons2);
+ return cons2;
+
+ error_cleanup:
+
+ smartlist_free(cons2);
+
+ return NULL;
+}
+
+/** Generate a consensus diff as a smartlist from two given consensuses, also
+ * as smartlists. Will return NULL if the consensus diff could not be
+ * generated. Neither of the two consensuses are modified in any way, so it's
+ * up to the caller to free their resources.
+ */
+smartlist_t *
+consdiff_gen_diff(const smartlist_t *cons1,
+ const smartlist_t *cons2,
+ const consensus_digest_t *digests1,
+ const consensus_digest_t *digests2,
+ memarea_t *area)
+{
+ smartlist_t *ed_diff = gen_ed_diff(cons1, cons2, area);
+ /* ed diff could not be generated - reason already logged by gen_ed_diff. */
+ if (!ed_diff) {
+ goto error_cleanup;
+ }
+
+ /* See that the script actually produces what we want. */
+ smartlist_t *ed_cons2 = apply_ed_diff(cons1, ed_diff, 0);
+ if (!ed_cons2) {
+ /* LCOV_EXCL_START -- impossible if diff generation is correct */
+ log_warn(LD_BUG|LD_CONSDIFF, "Refusing to generate consensus diff because "
+ "the generated ed diff could not be tested to successfully generate "
+ "the target consensus.");
+ goto error_cleanup;
+ /* LCOV_EXCL_STOP */
+ }
+
+ int cons2_eq = 1;
+ if (smartlist_len(cons2) == smartlist_len(ed_cons2)) {
+ SMARTLIST_FOREACH_BEGIN(cons2, const cdline_t *, line1) {
+ const cdline_t *line2 = smartlist_get(ed_cons2, line1_sl_idx);
+ if (! lines_eq(line1, line2) ) {
+ cons2_eq = 0;
+ break;
+ }
+ } SMARTLIST_FOREACH_END(line1);
+ } else {
+ cons2_eq = 0;
+ }
+ smartlist_free(ed_cons2);
+ if (!cons2_eq) {
+ /* LCOV_EXCL_START -- impossible if diff generation is correct. */
+ log_warn(LD_BUG|LD_CONSDIFF, "Refusing to generate consensus diff because "
+ "the generated ed diff did not generate the target consensus "
+ "successfully when tested.");
+ goto error_cleanup;
+ /* LCOV_EXCL_STOP */
+ }
+
+ char cons1_hash_hex[HEX_DIGEST256_LEN+1];
+ char cons2_hash_hex[HEX_DIGEST256_LEN+1];
+ base16_encode(cons1_hash_hex, HEX_DIGEST256_LEN+1,
+ (const char*)digests1->sha3_256, DIGEST256_LEN);
+ base16_encode(cons2_hash_hex, HEX_DIGEST256_LEN+1,
+ (const char*)digests2->sha3_256, DIGEST256_LEN);
+
+ /* Create the resulting consensus diff. */
+ char buf[160];
+ smartlist_t *result = smartlist_new();
+ tor_snprintf(buf, sizeof(buf), "%s", ns_diff_version);
+ smartlist_add_linecpy(result, area, buf);
+ tor_snprintf(buf, sizeof(buf), "%s %s %s", hash_token,
+ cons1_hash_hex, cons2_hash_hex);
+ smartlist_add_linecpy(result, area, buf);
+ smartlist_add_all(result, ed_diff);
+ smartlist_free(ed_diff);
+ return result;
+
+ error_cleanup:
+
+ if (ed_diff) {
+ /* LCOV_EXCL_START -- ed_diff is NULL except in unreachable cases above */
+ smartlist_free(ed_diff);
+ /* LCOV_EXCL_STOP */
+ }
+
+ return NULL;
+}
+
+/** Fetch the digest of the base consensus in the consensus diff, encoded in
+ * base16 as found in the diff itself. digest1_out and digest2_out must be of
+ * length DIGEST256_LEN or larger if not NULL.
+ */
+int
+consdiff_get_digests(const smartlist_t *diff,
+ char *digest1_out,
+ char *digest2_out)
+{
+ smartlist_t *hash_words = NULL;
+ const cdline_t *format;
+ char cons1_hash[DIGEST256_LEN], cons2_hash[DIGEST256_LEN];
+ char *cons1_hash_hex, *cons2_hash_hex;
+ if (smartlist_len(diff) < 2) {
+ log_info(LD_CONSDIFF, "The provided consensus diff is too short.");
+ goto error_cleanup;
+ }
+
+ /* Check that it's the format and version we know. */
+ format = smartlist_get(diff, 0);
+ if (!line_str_eq(format, ns_diff_version)) {
+ log_warn(LD_CONSDIFF, "The provided consensus diff format is not known.");
+ goto error_cleanup;
+ }
+
+ /* Grab the base16 digests. */
+ hash_words = smartlist_new();
+ {
+ const cdline_t *line2 = smartlist_get(diff, 1);
+ char *h = tor_memdup_nulterm(line2->s, line2->len);
+ smartlist_split_string(hash_words, h, " ", 0, 0);
+ tor_free(h);
+ }
+
+ /* There have to be three words, the first of which must be hash_token. */
+ if (smartlist_len(hash_words) != 3 ||
+ strcmp(smartlist_get(hash_words, 0), hash_token)) {
+ log_info(LD_CONSDIFF, "The provided consensus diff does not include "
+ "the necessary digests.");
+ goto error_cleanup;
+ }
+
+ /* Expected hashes as found in the consensus diff header. They must be of
+ * length HEX_DIGEST256_LEN, normally 64 hexadecimal characters.
+ * If any of the decodings fail, error to make sure that the hashes are
+ * proper base16-encoded digests.
+ */
+ cons1_hash_hex = smartlist_get(hash_words, 1);
+ cons2_hash_hex = smartlist_get(hash_words, 2);
+ if (strlen(cons1_hash_hex) != HEX_DIGEST256_LEN ||
+ strlen(cons2_hash_hex) != HEX_DIGEST256_LEN) {
+ log_info(LD_CONSDIFF, "The provided consensus diff includes "
+ "base16-encoded digests of incorrect size.");
+ goto error_cleanup;
+ }
+
+ if (base16_decode(cons1_hash, DIGEST256_LEN,
+ cons1_hash_hex, HEX_DIGEST256_LEN) != DIGEST256_LEN ||
+ base16_decode(cons2_hash, DIGEST256_LEN,
+ cons2_hash_hex, HEX_DIGEST256_LEN) != DIGEST256_LEN) {
+ log_info(LD_CONSDIFF, "The provided consensus diff includes "
+ "malformed digests.");
+ goto error_cleanup;
+ }
+
+ if (digest1_out) {
+ memcpy(digest1_out, cons1_hash, DIGEST256_LEN);
+ }
+ if (digest2_out) {
+ memcpy(digest2_out, cons2_hash, DIGEST256_LEN);
+ }
+
+ SMARTLIST_FOREACH(hash_words, char *, cp, tor_free(cp));
+ smartlist_free(hash_words);
+ return 0;
+
+ error_cleanup:
+
+ if (hash_words) {
+ SMARTLIST_FOREACH(hash_words, char *, cp, tor_free(cp));
+ smartlist_free(hash_words);
+ }
+ return 1;
+}
+
+/** Apply the consensus diff to the given consensus and return a new
+ * consensus, also as a line-based smartlist. Will return NULL if the diff
+ * could not be applied. Neither the consensus nor the diff are modified in
+ * any way, so it's up to the caller to free their resources.
+ */
+char *
+consdiff_apply_diff(const smartlist_t *cons1,
+ const smartlist_t *diff,
+ const consensus_digest_t *digests1)
+{
+ smartlist_t *cons2 = NULL;
+ char *cons2_str = NULL;
+ char e_cons1_hash[DIGEST256_LEN];
+ char e_cons2_hash[DIGEST256_LEN];
+
+ if (consdiff_get_digests(diff, e_cons1_hash, e_cons2_hash) != 0) {
+ goto error_cleanup;
+ }
+
+ /* See that the consensus that was given to us matches its hash. */
+ if (!consensus_digest_eq(digests1->sha3_256,
+ (const uint8_t*)e_cons1_hash)) {
+ char hex_digest1[HEX_DIGEST256_LEN+1];
+ char e_hex_digest1[HEX_DIGEST256_LEN+1];
+ log_warn(LD_CONSDIFF, "Refusing to apply consensus diff because "
+ "the base consensus doesn't match the digest as found in "
+ "the consensus diff header.");
+ base16_encode(hex_digest1, HEX_DIGEST256_LEN+1,
+ (const char *)digests1->sha3_256, DIGEST256_LEN);
+ base16_encode(e_hex_digest1, HEX_DIGEST256_LEN+1,
+ e_cons1_hash, DIGEST256_LEN);
+ log_warn(LD_CONSDIFF, "Expected: %s; found: %s",
+ hex_digest1, e_hex_digest1);
+ goto error_cleanup;
+ }
+
+ /* Grab the ed diff and calculate the resulting consensus. */
+ /* Skip the first two lines. */
+ cons2 = apply_ed_diff(cons1, diff, 2);
+
+ /* ed diff could not be applied - reason already logged by apply_ed_diff. */
+ if (!cons2) {
+ goto error_cleanup;
+ }
+
+ cons2_str = consensus_join_lines(cons2);
+
+ consensus_digest_t cons2_digests;
+ if (consensus_compute_digest(cons2_str, &cons2_digests) < 0) {
+ /* LCOV_EXCL_START -- digest can't fail */
+ log_warn(LD_CONSDIFF, "Could not compute digests of the consensus "
+ "resulting from applying a consensus diff.");
+ goto error_cleanup;
+ /* LCOV_EXCL_STOP */
+ }
+
+ /* See that the resulting consensus matches its hash. */
+ if (!consensus_digest_eq(cons2_digests.sha3_256,
+ (const uint8_t*)e_cons2_hash)) {
+ log_warn(LD_CONSDIFF, "Refusing to apply consensus diff because "
+ "the resulting consensus doesn't match the digest as found in "
+ "the consensus diff header.");
+ char hex_digest2[HEX_DIGEST256_LEN+1];
+ char e_hex_digest2[HEX_DIGEST256_LEN+1];
+ base16_encode(hex_digest2, HEX_DIGEST256_LEN+1,
+ (const char *)cons2_digests.sha3_256, DIGEST256_LEN);
+ base16_encode(e_hex_digest2, HEX_DIGEST256_LEN+1,
+ e_cons2_hash, DIGEST256_LEN);
+ log_warn(LD_CONSDIFF, "Expected: %s; found: %s",
+ hex_digest2, e_hex_digest2);
+ goto error_cleanup;
+ }
+
+ goto done;
+
+ error_cleanup:
+ tor_free(cons2_str); /* Sets it to NULL */
+
+ done:
+ if (cons2) {
+ smartlist_free(cons2);
+ }
+
+ return cons2_str;
+}
+
+/** Any consensus line longer than this means that the input is invalid. */
+#define CONSENSUS_LINE_MAX_LEN (1<<20)
+
+/**
+ * Helper: For every NL-terminated line in <b>s</b>, add a cdline referring to
+ * that line (without trailing newline) to <b>out</b>. Return -1 if there are
+ * any non-NL terminated lines; 0 otherwise.
+ *
+ * Unlike tor_split_lines, this function avoids ambiguity on its
+ * handling of a final line that isn't NL-terminated.
+ *
+ * All cdline_t objects are allocated in the provided memarea. Strings
+ * are not copied: if <b>s</b> changes or becomes invalid, then all
+ * generated cdlines will become invalid.
+ */
+STATIC int
+consensus_split_lines(smartlist_t *out, const char *s, memarea_t *area)
+{
+ const char *end_of_str = s + strlen(s);
+ tor_assert(*end_of_str == '\0');
+
+ while (*s) {
+ const char *eol = memchr(s, '\n', end_of_str - s);
+ if (!eol) {
+ /* File doesn't end with newline. */
+ return -1;
+ }
+ if (eol - s > CONSENSUS_LINE_MAX_LEN) {
+ /* Line is far too long. */
+ return -1;
+ }
+ cdline_t *line = memarea_alloc(area, sizeof(cdline_t));
+ line->s = s;
+ line->len = (uint32_t)(eol - s);
+ smartlist_add(out, line);
+ s = eol+1;
+ }
+ return 0;
+}
+
+/** Given a list of cdline_t, return a newly allocated string containing
+ * all of the lines, terminated with NL, concatenated.
+ *
+ * Unlike smartlist_join_strings(), avoids lossy operations on empty
+ * lists. */
+static char *
+consensus_join_lines(const smartlist_t *inp)
+{
+ size_t n = 0;
+ SMARTLIST_FOREACH(inp, const cdline_t *, cdline, n += cdline->len + 1);
+ n += 1;
+ char *result = tor_malloc(n);
+ char *out = result;
+ SMARTLIST_FOREACH_BEGIN(inp, const cdline_t *, cdline) {
+ memcpy(out, cdline->s, cdline->len);
+ out += cdline->len;
+ *out++ = '\n';
+ } SMARTLIST_FOREACH_END(cdline);
+ *out++ = '\0';
+ tor_assert(out == result+n);
+ return result;
+}
+
+/** Given two consensus documents, try to compute a diff between them. On
+ * success, retun a newly allocated string containing that diff. On failure,
+ * return NULL. */
+char *
+consensus_diff_generate(const char *cons1,
+ const char *cons2)
+{
+ consensus_digest_t d1, d2;
+ smartlist_t *lines1 = NULL, *lines2 = NULL, *result_lines = NULL;
+ int r1, r2;
+ char *result = NULL;
+
+ r1 = consensus_compute_digest_as_signed(cons1, &d1);
+ r2 = consensus_compute_digest(cons2, &d2);
+ if (BUG(r1 < 0 || r2 < 0))
+ return NULL; // LCOV_EXCL_LINE
+
+ memarea_t *area = memarea_new();
+ lines1 = smartlist_new();
+ lines2 = smartlist_new();
+ if (consensus_split_lines(lines1, cons1, area) < 0)
+ goto done;
+ if (consensus_split_lines(lines2, cons2, area) < 0)
+ goto done;
+
+ result_lines = consdiff_gen_diff(lines1, lines2, &d1, &d2, area);
+
+ done:
+ if (result_lines) {
+ result = consensus_join_lines(result_lines);
+ smartlist_free(result_lines);
+ }
+
+ memarea_drop_all(area);
+ smartlist_free(lines1);
+ smartlist_free(lines2);
+
+ return result;
+}
+
+/** Given a consensus document and a diff, try to apply the diff to the
+ * consensus. On success return a newly allocated string containing the new
+ * consensus. On failure, return NULL. */
+char *
+consensus_diff_apply(const char *consensus,
+ const char *diff)
+{
+ consensus_digest_t d1;
+ smartlist_t *lines1 = NULL, *lines2 = NULL;
+ int r1;
+ char *result = NULL;
+ memarea_t *area = memarea_new();
+
+ r1 = consensus_compute_digest_as_signed(consensus, &d1);
+ if (BUG(r1 < 0))
+ return NULL; // LCOV_EXCL_LINE
+
+ lines1 = smartlist_new();
+ lines2 = smartlist_new();
+ if (consensus_split_lines(lines1, consensus, area) < 0)
+ goto done;
+ if (consensus_split_lines(lines2, diff, area) < 0)
+ goto done;
+
+ result = consdiff_apply_diff(lines1, lines2, &d1);
+
+ done:
+ smartlist_free(lines1);
+ smartlist_free(lines2);
+ memarea_drop_all(area);
+
+ return result;
+}
+
+/** Return true iff, based on its header, <b>document</b> is likely
+ * to be a consensus diff. */
+int
+looks_like_a_consensus_diff(const char *document, size_t len)
+{
+ return (len >= strlen(ns_diff_version) &&
+ fast_memeq(document, ns_diff_version, strlen(ns_diff_version)));
+}
+
diff --git a/src/or/consdiff.h b/src/or/consdiff.h
new file mode 100644
index 0000000000..d05df74b75
--- /dev/null
+++ b/src/or/consdiff.h
@@ -0,0 +1,98 @@
+/* Copyright (c) 2014, Daniel Martí
+ * Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_CONSDIFF_H
+#define TOR_CONSDIFF_H
+
+#include "or.h"
+
+char *consensus_diff_generate(const char *cons1,
+ const char *cons2);
+char *consensus_diff_apply(const char *consensus,
+ const char *diff);
+
+int looks_like_a_consensus_diff(const char *document, size_t len);
+
+#ifdef CONSDIFF_PRIVATE
+struct memarea_t;
+
+/** Line type used for constructing consensus diffs. Each of these lines
+ * refers to a chunk of memory allocated elsewhere, and is not necessarily
+ * NUL-terminated: this helps us avoid copies and save memory. */
+typedef struct cdline_t {
+ const char *s;
+ uint32_t len;
+} cdline_t;
+
+typedef struct consensus_digest_t {
+ uint8_t sha3_256[DIGEST256_LEN];
+} consensus_digest_t;
+
+STATIC smartlist_t *consdiff_gen_diff(const smartlist_t *cons1,
+ const smartlist_t *cons2,
+ const consensus_digest_t *digests1,
+ const consensus_digest_t *digests2,
+ struct memarea_t *area);
+STATIC char *consdiff_apply_diff(const smartlist_t *cons1,
+ const smartlist_t *diff,
+ const consensus_digest_t *digests1);
+STATIC int consdiff_get_digests(const smartlist_t *diff,
+ char *digest1_out,
+ char *digest2_out);
+
+/** Data structure to define a slice of a smarltist. */
+typedef struct smartlist_slice_t {
+ /**
+ * Smartlist that this slice is made from.
+ * References the whole original smartlist that the slice was made out of.
+ * */
+ const smartlist_t *list;
+ /** Starting position of the slice in the smartlist. */
+ int offset;
+ /** Length of the slice, i.e. the number of elements it holds. */
+ int len;
+} smartlist_slice_t;
+STATIC smartlist_t *gen_ed_diff(const smartlist_t *cons1,
+ const smartlist_t *cons2,
+ struct memarea_t *area);
+STATIC smartlist_t *apply_ed_diff(const smartlist_t *cons1,
+ const smartlist_t *diff,
+ int start_line);
+STATIC void calc_changes(smartlist_slice_t *slice1, smartlist_slice_t *slice2,
+ bitarray_t *changed1, bitarray_t *changed2);
+STATIC smartlist_slice_t *smartlist_slice(const smartlist_t *list,
+ int start, int end);
+STATIC int next_router(const smartlist_t *cons, int cur);
+STATIC int *lcs_lengths(const smartlist_slice_t *slice1,
+ const smartlist_slice_t *slice2,
+ int direction);
+STATIC void trim_slices(smartlist_slice_t *slice1, smartlist_slice_t *slice2);
+STATIC int base64cmp(const cdline_t *hash1, const cdline_t *hash2);
+STATIC int get_id_hash(const cdline_t *line, cdline_t *hash_out);
+STATIC int is_valid_router_entry(const cdline_t *line);
+STATIC int smartlist_slice_string_pos(const smartlist_slice_t *slice,
+ const cdline_t *string);
+STATIC void set_changed(bitarray_t *changed1, bitarray_t *changed2,
+ const smartlist_slice_t *slice1,
+ const smartlist_slice_t *slice2);
+STATIC int consensus_split_lines(smartlist_t *out, const char *s,
+ struct memarea_t *area);
+STATIC void smartlist_add_linecpy(smartlist_t *lst, struct memarea_t *area,
+ const char *s);
+STATIC int lines_eq(const cdline_t *a, const cdline_t *b);
+STATIC int line_str_eq(const cdline_t *a, const char *b);
+
+MOCK_DECL(STATIC int,
+ consensus_compute_digest,(const char *cons,
+ consensus_digest_t *digest_out));
+MOCK_DECL(STATIC int,
+ consensus_compute_digest_as_signed,(const char *cons,
+ consensus_digest_t *digest_out));
+MOCK_DECL(STATIC int,
+ consensus_digest_eq,(const uint8_t *d1,
+ const uint8_t *d2));
+#endif
+
+#endif
+
diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c
new file mode 100644
index 0000000000..a4ff9f2dad
--- /dev/null
+++ b/src/or/consdiffmgr.c
@@ -0,0 +1,1900 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file consdiffmsr.c
+ *
+ * \brief consensus diff manager functions
+ *
+ * This module is run by directory authorities and caches in order
+ * to remember a number of past consensus documents, and to generate
+ * and serve the diffs from those documents to the latest consensus.
+ */
+
+#define CONSDIFFMGR_PRIVATE
+
+#include "or.h"
+#include "config.h"
+#include "conscache.h"
+#include "consdiff.h"
+#include "consdiffmgr.h"
+#include "cpuworker.h"
+#include "networkstatus.h"
+#include "routerparse.h"
+#include "workqueue.h"
+
+/**
+ * Labels to apply to items in the conscache object.
+ *
+ * @{
+ */
+/* One of DOCTYPE_CONSENSUS or DOCTYPE_CONSENSUS_DIFF */
+#define LABEL_DOCTYPE "document-type"
+/* The valid-after time for a consensus (or for the target consensus of a
+ * diff), encoded as ISO UTC. */
+#define LABEL_VALID_AFTER "consensus-valid-after"
+/* The fresh-until time for a consensus (or for the target consensus of a
+ * diff), encoded as ISO UTC. */
+#define LABEL_FRESH_UNTIL "consensus-fresh-until"
+/* The valid-until time for a consensus (or for the target consensus of a
+ * diff), encoded as ISO UTC. */
+#define LABEL_VALID_UNTIL "consensus-valid-until"
+/* Comma-separated list of hex-encoded identity digests for the voting
+ * authorities. */
+#define LABEL_SIGNATORIES "consensus-signatories"
+/* A hex encoded SHA3 digest of the object, as compressed (if any) */
+#define LABEL_SHA3_DIGEST "sha3-digest"
+/* A hex encoded SHA3 digest of the object before compression. */
+#define LABEL_SHA3_DIGEST_UNCOMPRESSED "sha3-digest-uncompressed"
+/* A hex encoded SHA3 digest-as-signed of a consensus */
+#define LABEL_SHA3_DIGEST_AS_SIGNED "sha3-digest-as-signed"
+/* The flavor of the consensus or consensuses diff */
+#define LABEL_FLAVOR "consensus-flavor"
+/* Diff only: the SHA3 digest-as-signed of the source consensus. */
+#define LABEL_FROM_SHA3_DIGEST "from-sha3-digest"
+/* Diff only: the SHA3 digest-in-full of the target consensus. */
+#define LABEL_TARGET_SHA3_DIGEST "target-sha3-digest"
+/* Diff only: the valid-after date of the source consensus. */
+#define LABEL_FROM_VALID_AFTER "from-valid-after"
+/* What kind of compression was used? */
+#define LABEL_COMPRESSION_TYPE "compression"
+/** @} */
+
+#define DOCTYPE_CONSENSUS "consensus"
+#define DOCTYPE_CONSENSUS_DIFF "consensus-diff"
+
+/**
+ * Underlying directory that stores consensuses and consensus diffs. Don't
+ * use this directly: use cdm_cache_get() instead.
+ */
+static consensus_cache_t *cons_diff_cache = NULL;
+/**
+ * If true, we have learned at least one new consensus since the
+ * consensus cache was last up-to-date.
+ */
+static int cdm_cache_dirty = 0;
+/**
+ * If true, we have scanned the cache to update our hashtable of diffs.
+ */
+static int cdm_cache_loaded = 0;
+
+/**
+ * Possible status values for cdm_diff_t.cdm_diff_status
+ **/
+typedef enum cdm_diff_status_t {
+ CDM_DIFF_PRESENT=1,
+ CDM_DIFF_IN_PROGRESS=2,
+ CDM_DIFF_ERROR=3,
+} cdm_diff_status_t;
+
+/** Which methods do we use for precompressing diffs? */
+static const compress_method_t compress_diffs_with[] = {
+ NO_METHOD,
+ GZIP_METHOD,
+#ifdef HAVE_LZMA
+ LZMA_METHOD,
+#endif
+#ifdef HAVE_ZSTD
+ ZSTD_METHOD,
+#endif
+};
+
+/** How many different methods will we try to use for diff compression? */
+STATIC unsigned
+n_diff_compression_methods(void)
+{
+ return ARRAY_LENGTH(compress_diffs_with);
+}
+
+/** Which methods do we use for precompressing consensuses? */
+static const compress_method_t compress_consensus_with[] = {
+ ZLIB_METHOD,
+#ifdef HAVE_LZMA
+ LZMA_METHOD,
+#endif
+#ifdef HAVE_ZSTD
+ ZSTD_METHOD,
+#endif
+};
+
+/** How many different methods will we try to use for diff compression? */
+STATIC unsigned
+n_consensus_compression_methods(void)
+{
+ return ARRAY_LENGTH(compress_consensus_with);
+}
+
+/** For which compression method do we retain old consensuses? There's no
+ * need to keep all of them, since we won't be serving them. We'll
+ * go with ZLIB_METHOD because it's pretty fast and everyone has it.
+ */
+#define RETAIN_CONSENSUS_COMPRESSED_WITH_METHOD ZLIB_METHOD
+
+/** Handles pointing to the latest consensus entries as compressed and
+ * stored. */
+static consensus_cache_entry_handle_t *
+ latest_consensus[N_CONSENSUS_FLAVORS]
+ [ARRAY_LENGTH(compress_consensus_with)];
+
+/** Hashtable node used to remember the current status of the diff
+ * from a given sha3 digest to the current consensus. */
+typedef struct cdm_diff_t {
+ HT_ENTRY(cdm_diff_t) node;
+
+ /** Consensus flavor for this diff (part of ht key) */
+ consensus_flavor_t flavor;
+ /** SHA3-256 digest of the consensus that this diff is _from_. (part of the
+ * ht key) */
+ uint8_t from_sha3[DIGEST256_LEN];
+ /** Method by which the diff is compressed. (part of the ht key */
+ compress_method_t compress_method;
+
+ /** One of the CDM_DIFF_* values, depending on whether this diff
+ * is available, in progress, or impossible to compute. */
+ cdm_diff_status_t cdm_diff_status;
+ /** SHA3-256 digest of the consensus that this diff is _to. */
+ uint8_t target_sha3[DIGEST256_LEN];
+
+ /** Handle to the cache entry for this diff, if any. We use a handle here
+ * to avoid thinking too hard about cache entry lifetime issues. */
+ consensus_cache_entry_handle_t *entry;
+} cdm_diff_t;
+
+/** Hashtable mapping flavor and source consensus digest to status. */
+static HT_HEAD(cdm_diff_ht, cdm_diff_t) cdm_diff_ht = HT_INITIALIZER();
+
+/**
+ * Configuration for this module
+ */
+static consdiff_cfg_t consdiff_cfg = {
+ // XXXX I'd like to make this number bigger, but it interferes with the
+ // XXXX seccomp2 syscall filter, which tops out at BPF_MAXINS (4096)
+ // XXXX rules.
+ /* .cache_max_num = */ 128
+};
+
+static int consdiffmgr_ensure_space_for_files(int n);
+static int consensus_queue_compression_work(const char *consensus,
+ const networkstatus_t *as_parsed);
+static int consensus_diff_queue_diff_work(consensus_cache_entry_t *diff_from,
+ consensus_cache_entry_t *diff_to);
+static void consdiffmgr_set_cache_flags(void);
+
+/* =====
+ * Hashtable setup
+ * ===== */
+
+/** Helper: hash the key of a cdm_diff_t. */
+static unsigned
+cdm_diff_hash(const cdm_diff_t *diff)
+{
+ uint8_t tmp[DIGEST256_LEN + 2];
+ memcpy(tmp, diff->from_sha3, DIGEST256_LEN);
+ tmp[DIGEST256_LEN] = (uint8_t) diff->flavor;
+ tmp[DIGEST256_LEN+1] = (uint8_t) diff->compress_method;
+ return (unsigned) siphash24g(tmp, sizeof(tmp));
+}
+/** Helper: compare two cdm_diff_t objects for key equality */
+static int
+cdm_diff_eq(const cdm_diff_t *diff1, const cdm_diff_t *diff2)
+{
+ return fast_memeq(diff1->from_sha3, diff2->from_sha3, DIGEST256_LEN) &&
+ diff1->flavor == diff2->flavor &&
+ diff1->compress_method == diff2->compress_method;
+}
+
+HT_PROTOTYPE(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq)
+HT_GENERATE2(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq,
+ 0.6, tor_reallocarray, tor_free_)
+
+/** Release all storage held in <b>diff</b>. */
+static void
+cdm_diff_free(cdm_diff_t *diff)
+{
+ if (!diff)
+ return;
+ consensus_cache_entry_handle_free(diff->entry);
+ tor_free(diff);
+}
+
+/** Create and return a new cdm_diff_t with the given values. Does not
+ * add it to the hashtable. */
+static cdm_diff_t *
+cdm_diff_new(consensus_flavor_t flav,
+ const uint8_t *from_sha3,
+ const uint8_t *target_sha3,
+ compress_method_t method)
+{
+ cdm_diff_t *ent;
+ ent = tor_malloc_zero(sizeof(cdm_diff_t));
+ ent->flavor = flav;
+ memcpy(ent->from_sha3, from_sha3, DIGEST256_LEN);
+ memcpy(ent->target_sha3, target_sha3, DIGEST256_LEN);
+ ent->compress_method = method;
+ return ent;
+}
+
+/**
+ * Examine the diff hashtable to see whether we know anything about computing
+ * a diff of type <b>flav</b> between consensuses with the two provided
+ * SHA3-256 digests. If a computation is in progress, or if the computation
+ * has already been tried and failed, return 1. Otherwise, note the
+ * computation as "in progress" so that we don't reattempt it later, and
+ * return 0.
+ */
+static int
+cdm_diff_ht_check_and_note_pending(consensus_flavor_t flav,
+ const uint8_t *from_sha3,
+ const uint8_t *target_sha3)
+{
+ struct cdm_diff_t search, *ent;
+ unsigned u;
+ int result = 0;
+ for (u = 0; u < n_diff_compression_methods(); ++u) {
+ compress_method_t method = compress_diffs_with[u];
+ memset(&search, 0, sizeof(cdm_diff_t));
+ search.flavor = flav;
+ search.compress_method = method;
+ memcpy(search.from_sha3, from_sha3, DIGEST256_LEN);
+ ent = HT_FIND(cdm_diff_ht, &cdm_diff_ht, &search);
+ if (ent) {
+ tor_assert_nonfatal(ent->cdm_diff_status != CDM_DIFF_PRESENT);
+ result = 1;
+ continue;
+ }
+ ent = cdm_diff_new(flav, from_sha3, target_sha3, method);
+ ent->cdm_diff_status = CDM_DIFF_IN_PROGRESS;
+ HT_INSERT(cdm_diff_ht, &cdm_diff_ht, ent);
+ }
+ return result;
+}
+
+/**
+ * Update the status of the diff of type <b>flav</b> between consensuses with
+ * the two provided SHA3-256 digests, so that its status becomes
+ * <b>status</b>, and its value becomes the <b>handle</b>. If <b>handle</b>
+ * is NULL, then the old handle (if any) is freed, and replaced with NULL.
+ */
+static void
+cdm_diff_ht_set_status(consensus_flavor_t flav,
+ const uint8_t *from_sha3,
+ const uint8_t *to_sha3,
+ compress_method_t method,
+ int status,
+ consensus_cache_entry_handle_t *handle)
+{
+ if (handle == NULL) {
+ tor_assert_nonfatal(status != CDM_DIFF_PRESENT);
+ }
+
+ struct cdm_diff_t search, *ent;
+ memset(&search, 0, sizeof(cdm_diff_t));
+ search.flavor = flav;
+ search.compress_method = method,
+ memcpy(search.from_sha3, from_sha3, DIGEST256_LEN);
+ ent = HT_FIND(cdm_diff_ht, &cdm_diff_ht, &search);
+ if (!ent) {
+ ent = cdm_diff_new(flav, from_sha3, to_sha3, method);
+ ent->cdm_diff_status = CDM_DIFF_IN_PROGRESS;
+ HT_INSERT(cdm_diff_ht, &cdm_diff_ht, ent);
+ } else if (fast_memneq(ent->target_sha3, to_sha3, DIGEST256_LEN)) {
+ // This can happen under certain really pathological conditions
+ // if we decide we don't care about a diff before it is actually
+ // done computing.
+ return;
+ }
+
+ tor_assert_nonfatal(ent->cdm_diff_status == CDM_DIFF_IN_PROGRESS);
+
+ ent->cdm_diff_status = status;
+ consensus_cache_entry_handle_free(ent->entry);
+ ent->entry = handle;
+}
+
+/**
+ * Helper: Remove from the hash table every present (actually computed) diff
+ * of type <b>flav</b> whose target digest does not match
+ * <b>unless_target_sha3_matches</b>.
+ *
+ * This function is used for the hash table to throw away references to diffs
+ * that do not lead to the most given consensus of a given flavor.
+ */
+static void
+cdm_diff_ht_purge(consensus_flavor_t flav,
+ const uint8_t *unless_target_sha3_matches)
+{
+ cdm_diff_t **diff, **next;
+ for (diff = HT_START(cdm_diff_ht, &cdm_diff_ht); diff; diff = next) {
+ cdm_diff_t *this = *diff;
+
+ if ((*diff)->cdm_diff_status == CDM_DIFF_PRESENT &&
+ flav == (*diff)->flavor) {
+
+ if (BUG((*diff)->entry == NULL) ||
+ consensus_cache_entry_handle_get((*diff)->entry) == NULL) {
+ /* the underlying entry has gone away; drop this. */
+ next = HT_NEXT_RMV(cdm_diff_ht, &cdm_diff_ht, diff);
+ cdm_diff_free(this);
+ continue;
+ }
+
+ if (unless_target_sha3_matches &&
+ fast_memneq(unless_target_sha3_matches, (*diff)->target_sha3,
+ DIGEST256_LEN)) {
+ /* target hash doesn't match; drop this. */
+ next = HT_NEXT_RMV(cdm_diff_ht, &cdm_diff_ht, diff);
+ cdm_diff_free(this);
+ continue;
+ }
+ }
+ next = HT_NEXT(cdm_diff_ht, &cdm_diff_ht, diff);
+ }
+}
+
+/**
+ * Helper: initialize <b>cons_diff_cache</b>.
+ */
+static void
+cdm_cache_init(void)
+{
+ unsigned n_entries = consdiff_cfg.cache_max_num * 2;
+
+ tor_assert(cons_diff_cache == NULL);
+ cons_diff_cache = consensus_cache_open("diff-cache", n_entries);
+ if (cons_diff_cache == NULL) {
+ // LCOV_EXCL_START
+ log_err(LD_FS, "Error: Couldn't open storage for consensus diffs.");
+ tor_assert_unreached();
+ // LCOV_EXCL_STOP
+ } else {
+ consdiffmgr_set_cache_flags();
+ }
+ cdm_cache_dirty = 1;
+ cdm_cache_loaded = 0;
+}
+
+/**
+ * Helper: return the consensus_cache_t * that backs this manager,
+ * initializing it if needed.
+ */
+STATIC consensus_cache_t *
+cdm_cache_get(void)
+{
+ if (PREDICT_UNLIKELY(cons_diff_cache == NULL)) {
+ cdm_cache_init();
+ }
+ return cons_diff_cache;
+}
+
+/**
+ * Helper: given a list of labels, prepend the hex-encoded SHA3 digest
+ * of the <b>bodylen</b>-byte object at <b>body</b> to those labels,
+ * with <b>label</b> as its label.
+ */
+static void
+cdm_labels_prepend_sha3(config_line_t **labels,
+ const char *label,
+ const uint8_t *body,
+ size_t bodylen)
+{
+ uint8_t sha3_digest[DIGEST256_LEN];
+ char hexdigest[HEX_DIGEST256_LEN+1];
+ crypto_digest256((char *)sha3_digest,
+ (const char *)body, bodylen, DIGEST_SHA3_256);
+ base16_encode(hexdigest, sizeof(hexdigest),
+ (const char *)sha3_digest, sizeof(sha3_digest));
+
+ config_line_prepend(labels, label, hexdigest);
+}
+
+/** Helper: if there is a sha3-256 hex-encoded digest in <b>ent</b> with the
+ * given label, set <b>digest_out</b> to that value (decoded), and return 0.
+ *
+ * Return -1 if there is no such label, and -2 if it is badly formatted. */
+STATIC int
+cdm_entry_get_sha3_value(uint8_t *digest_out,
+ consensus_cache_entry_t *ent,
+ const char *label)
+{
+ if (ent == NULL)
+ return -1;
+
+ const char *hex = consensus_cache_entry_get_value(ent, label);
+ if (hex == NULL)
+ return -1;
+
+ int n = base16_decode((char*)digest_out, DIGEST256_LEN, hex, strlen(hex));
+ if (n != DIGEST256_LEN)
+ return -2;
+ else
+ return 0;
+}
+
+/**
+ * Helper: look for a consensus with the given <b>flavor</b> and
+ * <b>valid_after</b> time in the cache. Return that consensus if it's
+ * present, or NULL if it's missing.
+ */
+STATIC consensus_cache_entry_t *
+cdm_cache_lookup_consensus(consensus_flavor_t flavor, time_t valid_after)
+{
+ char formatted_time[ISO_TIME_LEN+1];
+ format_iso_time_nospace(formatted_time, valid_after);
+ const char *flavname = networkstatus_get_flavor_name(flavor);
+
+ /* We'll filter by valid-after time first, since that should
+ * match the fewest documents. */
+ /* We could add an extra hashtable here, but since we only do this scan
+ * when adding a new consensus, it probably doesn't matter much. */
+ smartlist_t *matches = smartlist_new();
+ consensus_cache_find_all(matches, cdm_cache_get(),
+ LABEL_VALID_AFTER, formatted_time);
+ consensus_cache_filter_list(matches, LABEL_FLAVOR, flavname);
+ consensus_cache_filter_list(matches, LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+
+ consensus_cache_entry_t *result = NULL;
+ if (smartlist_len(matches)) {
+ result = smartlist_get(matches, 0);
+ }
+ smartlist_free(matches);
+
+ return result;
+}
+
+/** Return the maximum age (in seconds) of consensuses that we should consider
+ * storing. The available space in the directory may impose additional limits
+ * on how much we store. */
+static int32_t
+get_max_age_to_cache(void)
+{
+ const int32_t DEFAULT_MAX_AGE_TO_CACHE = 8192;
+ const int32_t MIN_MAX_AGE_TO_CACHE = 0;
+ const int32_t MAX_MAX_AGE_TO_CACHE = 8192;
+ const char MAX_AGE_TO_CACHE_NAME[] = "max-consensus-age-to-cache-for-diff";
+
+ const or_options_t *options = get_options();
+
+ if (options->MaxConsensusAgeForDiffs) {
+ const int v = options->MaxConsensusAgeForDiffs;
+ if (v >= MAX_MAX_AGE_TO_CACHE * 3600)
+ return MAX_MAX_AGE_TO_CACHE;
+ else
+ return v;
+ }
+
+ /* The parameter is in hours, so we multiply */
+ return 3600 * networkstatus_get_param(NULL,
+ MAX_AGE_TO_CACHE_NAME,
+ DEFAULT_MAX_AGE_TO_CACHE,
+ MIN_MAX_AGE_TO_CACHE,
+ MAX_MAX_AGE_TO_CACHE);
+}
+
+/**
+ * Given a string containing a networkstatus consensus, and the results of
+ * having parsed that consensus, add that consensus to the cache if it is not
+ * already present and not too old. Create new consensus diffs from or to
+ * that consensus as appropriate.
+ *
+ * Return 0 on success and -1 on failure.
+ */
+int
+consdiffmgr_add_consensus(const char *consensus,
+ const networkstatus_t *as_parsed)
+{
+ if (BUG(consensus == NULL) || BUG(as_parsed == NULL))
+ return -1; // LCOV_EXCL_LINE
+ if (BUG(as_parsed->type != NS_TYPE_CONSENSUS))
+ return -1; // LCOV_EXCL_LINE
+
+ const consensus_flavor_t flavor = as_parsed->flavor;
+ const time_t valid_after = as_parsed->valid_after;
+
+ if (valid_after < approx_time() - get_max_age_to_cache()) {
+ log_info(LD_DIRSERV, "We don't care about this consensus document; it's "
+ "too old.");
+ return -1;
+ }
+
+ /* Do we already have this one? */
+ consensus_cache_entry_t *entry =
+ cdm_cache_lookup_consensus(flavor, valid_after);
+ if (entry) {
+ log_info(LD_DIRSERV, "We already have a copy of that consensus");
+ return -1;
+ }
+
+ /* We don't have it. Add it to the cache. */
+ return consensus_queue_compression_work(consensus, as_parsed);
+}
+
+/**
+ * Helper: used to sort two smartlists of consensus_cache_entry_t by their
+ * LABEL_VALID_AFTER labels.
+ */
+static int
+compare_by_valid_after_(const void **a, const void **b)
+{
+ const consensus_cache_entry_t *e1 = *a;
+ const consensus_cache_entry_t *e2 = *b;
+ /* We're in luck here: sorting UTC iso-encoded values lexically will work
+ * fine (until 9999). */
+ return strcmp_opt(consensus_cache_entry_get_value(e1, LABEL_VALID_AFTER),
+ consensus_cache_entry_get_value(e2, LABEL_VALID_AFTER));
+}
+
+/**
+ * Helper: Sort <b>lst</b> by LABEL_VALID_AFTER and return the most recent
+ * entry.
+ */
+static consensus_cache_entry_t *
+sort_and_find_most_recent(smartlist_t *lst)
+{
+ smartlist_sort(lst, compare_by_valid_after_);
+ if (smartlist_len(lst)) {
+ return smartlist_get(lst, smartlist_len(lst) - 1);
+ } else {
+ return NULL;
+ }
+}
+
+/** Return i such that compress_consensus_with[i] == method. Return
+ * -1 if no such i exists. */
+static int
+consensus_compression_method_pos(compress_method_t method)
+{
+ unsigned i;
+ for (i = 0; i < n_consensus_compression_methods(); ++i) {
+ if (compress_consensus_with[i] == method) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+/**
+ * If we know a consensus with the flavor <b>flavor</b> compressed with
+ * <b>method</b>, set *<b>entry_out</b> to that value. Return values are as
+ * for consdiffmgr_find_diff_from().
+ */
+consdiff_status_t
+consdiffmgr_find_consensus(struct consensus_cache_entry_t **entry_out,
+ consensus_flavor_t flavor,
+ compress_method_t method)
+{
+ tor_assert(entry_out);
+ tor_assert((int)flavor < N_CONSENSUS_FLAVORS);
+
+ int pos = consensus_compression_method_pos(method);
+ if (pos < 0) {
+ // We don't compress consensuses with this method.
+ return CONSDIFF_NOT_FOUND;
+ }
+ consensus_cache_entry_handle_t *handle = latest_consensus[flavor][pos];
+ if (!handle)
+ return CONSDIFF_NOT_FOUND;
+ *entry_out = consensus_cache_entry_handle_get(handle);
+ if (*entry_out)
+ return CONSDIFF_AVAILABLE;
+ else
+ return CONSDIFF_NOT_FOUND;
+}
+
+/**
+ * Look up consensus_cache_entry_t for the consensus of type <b>flavor</b>,
+ * from the source consensus with the specified digest (which must be SHA3).
+ *
+ * If the diff is present, store it into *<b>entry_out</b> and return
+ * CONSDIFF_AVAILABLE. Otherwise return CONSDIFF_NOT_FOUND or
+ * CONSDIFF_IN_PROGRESS.
+ */
+consdiff_status_t
+consdiffmgr_find_diff_from(consensus_cache_entry_t **entry_out,
+ consensus_flavor_t flavor,
+ int digest_type,
+ const uint8_t *digest,
+ size_t digestlen,
+ compress_method_t method)
+{
+ if (BUG(digest_type != DIGEST_SHA3_256) ||
+ BUG(digestlen != DIGEST256_LEN)) {
+ return CONSDIFF_NOT_FOUND; // LCOV_EXCL_LINE
+ }
+
+ // Try to look up the entry in the hashtable.
+ cdm_diff_t search, *ent;
+ memset(&search, 0, sizeof(search));
+ search.flavor = flavor;
+ search.compress_method = method;
+ memcpy(search.from_sha3, digest, DIGEST256_LEN);
+ ent = HT_FIND(cdm_diff_ht, &cdm_diff_ht, &search);
+
+ if (ent == NULL ||
+ ent->cdm_diff_status == CDM_DIFF_ERROR) {
+ return CONSDIFF_NOT_FOUND;
+ } else if (ent->cdm_diff_status == CDM_DIFF_IN_PROGRESS) {
+ return CONSDIFF_IN_PROGRESS;
+ } else if (BUG(ent->cdm_diff_status != CDM_DIFF_PRESENT)) {
+ return CONSDIFF_IN_PROGRESS;
+ }
+
+ if (BUG(ent->entry == NULL)) {
+ return CONSDIFF_NOT_FOUND;
+ }
+ *entry_out = consensus_cache_entry_handle_get(ent->entry);
+ return (*entry_out) ? CONSDIFF_AVAILABLE : CONSDIFF_NOT_FOUND;
+
+#if 0
+ // XXXX Remove this. I'm keeping it around for now in case we need to
+ // XXXX debug issues in the hashtable.
+ char hex[HEX_DIGEST256_LEN+1];
+ base16_encode(hex, sizeof(hex), (const char *)digest, digestlen);
+ const char *flavname = networkstatus_get_flavor_name(flavor);
+
+ smartlist_t *matches = smartlist_new();
+ consensus_cache_find_all(matches, cdm_cache_get(),
+ LABEL_FROM_SHA3_DIGEST, hex);
+ consensus_cache_filter_list(matches, LABEL_FLAVOR, flavname);
+ consensus_cache_filter_list(matches, LABEL_DOCTYPE, DOCTYPE_CONSENSUS_DIFF);
+
+ *entry_out = sort_and_find_most_recent(matches);
+ consdiff_status_t result =
+ (*entry_out) ? CONSDIFF_AVAILABLE : CONSDIFF_NOT_FOUND;
+ smartlist_free(matches);
+
+ return result;
+#endif
+}
+
+/**
+ * Perform periodic cleanup tasks on the consensus diff cache. Return
+ * the number of objects marked for deletion.
+ */
+int
+consdiffmgr_cleanup(void)
+{
+ smartlist_t *objects = smartlist_new();
+ smartlist_t *consensuses = smartlist_new();
+ smartlist_t *diffs = smartlist_new();
+ int n_to_delete = 0;
+
+ log_debug(LD_DIRSERV, "Looking for consdiffmgr entries to remove");
+
+ // 1. Delete any consensus or diff or anything whose valid_after is too old.
+ const time_t valid_after_cutoff = approx_time() - get_max_age_to_cache();
+
+ consensus_cache_find_all(objects, cdm_cache_get(),
+ NULL, NULL);
+ SMARTLIST_FOREACH_BEGIN(objects, consensus_cache_entry_t *, ent) {
+ const char *lv_valid_after =
+ consensus_cache_entry_get_value(ent, LABEL_VALID_AFTER);
+ if (! lv_valid_after) {
+ log_debug(LD_DIRSERV, "Ignoring entry because it had no %s label",
+ LABEL_VALID_AFTER);
+ continue;
+ }
+ time_t valid_after = 0;
+ if (parse_iso_time_nospace(lv_valid_after, &valid_after) < 0) {
+ log_debug(LD_DIRSERV, "Ignoring entry because its %s value (%s) was "
+ "unparseable", LABEL_VALID_AFTER, escaped(lv_valid_after));
+ continue;
+ }
+ if (valid_after < valid_after_cutoff) {
+ log_debug(LD_DIRSERV, "Deleting entry because its %s value (%s) was "
+ "too old", LABEL_VALID_AFTER, lv_valid_after);
+ consensus_cache_entry_mark_for_removal(ent);
+ ++n_to_delete;
+ }
+ } SMARTLIST_FOREACH_END(ent);
+
+ // 2. Delete all diffs that lead to a consensus whose valid-after is not the
+ // latest.
+ for (int flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
+ const char *flavname = networkstatus_get_flavor_name(flav);
+ /* Determine the most recent consensus of this flavor */
+ consensus_cache_find_all(consensuses, cdm_cache_get(),
+ LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+ consensus_cache_filter_list(consensuses, LABEL_FLAVOR, flavname);
+ consensus_cache_entry_t *most_recent =
+ sort_and_find_most_recent(consensuses);
+ if (most_recent == NULL)
+ continue;
+ const char *most_recent_sha3 =
+ consensus_cache_entry_get_value(most_recent,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED);
+ if (BUG(most_recent_sha3 == NULL))
+ continue; // LCOV_EXCL_LINE
+
+ /* consider all such-flavored diffs, and look to see if they match. */
+ consensus_cache_find_all(diffs, cdm_cache_get(),
+ LABEL_DOCTYPE, DOCTYPE_CONSENSUS_DIFF);
+ consensus_cache_filter_list(diffs, LABEL_FLAVOR, flavname);
+ SMARTLIST_FOREACH_BEGIN(diffs, consensus_cache_entry_t *, diff) {
+ const char *this_diff_target_sha3 =
+ consensus_cache_entry_get_value(diff, LABEL_TARGET_SHA3_DIGEST);
+ if (!this_diff_target_sha3)
+ continue;
+ if (strcmp(this_diff_target_sha3, most_recent_sha3)) {
+ consensus_cache_entry_mark_for_removal(diff);
+ ++n_to_delete;
+ }
+ } SMARTLIST_FOREACH_END(diff);
+ smartlist_clear(consensuses);
+ smartlist_clear(diffs);
+ }
+
+ // 3. Delete all consensuses except the most recent that are compressed with
+ // an un-preferred method.
+ for (int flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
+ const char *flavname = networkstatus_get_flavor_name(flav);
+ /* Determine the most recent consensus of this flavor */
+ consensus_cache_find_all(consensuses, cdm_cache_get(),
+ LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+ consensus_cache_filter_list(consensuses, LABEL_FLAVOR, flavname);
+ consensus_cache_entry_t *most_recent =
+ sort_and_find_most_recent(consensuses);
+ if (most_recent == NULL)
+ continue;
+ const char *most_recent_sha3_uncompressed =
+ consensus_cache_entry_get_value(most_recent,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED);
+ const char *retain_methodname = compression_method_get_name(
+ RETAIN_CONSENSUS_COMPRESSED_WITH_METHOD);
+
+ if (BUG(most_recent_sha3_uncompressed == NULL))
+ continue;
+ SMARTLIST_FOREACH_BEGIN(consensuses, consensus_cache_entry_t *, ent) {
+ const char *lv_sha3_uncompressed =
+ consensus_cache_entry_get_value(ent, LABEL_SHA3_DIGEST_UNCOMPRESSED);
+ if (BUG(! lv_sha3_uncompressed))
+ continue;
+ if (!strcmp(lv_sha3_uncompressed, most_recent_sha3_uncompressed))
+ continue; // This _is_ the most recent.
+ const char *lv_methodname =
+ consensus_cache_entry_get_value(ent, LABEL_COMPRESSION_TYPE);
+ if (! lv_methodname || strcmp(lv_methodname, retain_methodname)) {
+ consensus_cache_entry_mark_for_removal(ent);
+ ++n_to_delete;
+ }
+ } SMARTLIST_FOREACH_END(ent);
+ }
+
+ smartlist_free(objects);
+ smartlist_free(consensuses);
+ smartlist_free(diffs);
+
+ // Actually remove files, if they're not used.
+ consensus_cache_delete_pending(cdm_cache_get(), 0);
+ return n_to_delete;
+}
+
+/**
+ * Initialize the consensus diff manager and its cache, and configure
+ * its parameters based on the latest torrc and networkstatus parameters.
+ */
+void
+consdiffmgr_configure(const consdiff_cfg_t *cfg)
+{
+ if (cfg)
+ memcpy(&consdiff_cfg, cfg, sizeof(consdiff_cfg));
+
+ (void) cdm_cache_get();
+}
+
+/**
+ * Tell the sandbox (if any) configured by <b>cfg</b> to allow the
+ * operations that the consensus diff manager will need.
+ */
+int
+consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg)
+{
+ return consensus_cache_register_with_sandbox(cdm_cache_get(), cfg);
+}
+
+/**
+ * Scan the consensus diff manager's cache for any grossly malformed entries,
+ * and mark them as deletable. Return 0 if no problems were found; 1
+ * if problems were found and fixed.
+ */
+int
+consdiffmgr_validate(void)
+{
+ /* Right now, we only check for entries that have bad sha3 values */
+ int problems = 0;
+
+ smartlist_t *objects = smartlist_new();
+ consensus_cache_find_all(objects, cdm_cache_get(),
+ NULL, NULL);
+ SMARTLIST_FOREACH_BEGIN(objects, consensus_cache_entry_t *, obj) {
+ uint8_t sha3_expected[DIGEST256_LEN];
+ uint8_t sha3_received[DIGEST256_LEN];
+ int r = cdm_entry_get_sha3_value(sha3_expected, obj, LABEL_SHA3_DIGEST);
+ if (r == -1) {
+ /* digest isn't there; that's allowed */
+ continue;
+ } else if (r == -2) {
+ /* digest is malformed; that's not allowed */
+ problems = 1;
+ consensus_cache_entry_mark_for_removal(obj);
+ continue;
+ }
+ const uint8_t *body;
+ size_t bodylen;
+ consensus_cache_entry_incref(obj);
+ r = consensus_cache_entry_get_body(obj, &body, &bodylen);
+ if (r == 0) {
+ crypto_digest256((char *)sha3_received, (const char *)body, bodylen,
+ DIGEST_SHA3_256);
+ }
+ consensus_cache_entry_decref(obj);
+ if (r < 0)
+ continue;
+
+ // Deconfuse coverity about the possibility of sha3_received being
+ // uninitialized
+ tor_assert(r <= 0);
+
+ if (fast_memneq(sha3_received, sha3_expected, DIGEST256_LEN)) {
+ problems = 1;
+ consensus_cache_entry_mark_for_removal(obj);
+ continue;
+ }
+
+ } SMARTLIST_FOREACH_END(obj);
+ smartlist_free(objects);
+ return problems;
+}
+
+/**
+ * Helper: build new diffs of <b>flavor</b> as needed
+ */
+static void
+consdiffmgr_rescan_flavor_(consensus_flavor_t flavor)
+{
+ smartlist_t *matches = NULL;
+ smartlist_t *diffs = NULL;
+ smartlist_t *compute_diffs_from = NULL;
+ strmap_t *have_diff_from = NULL;
+
+ // look for the most recent consensus, and for all previous in-range
+ // consensuses. Do they all have diffs to it?
+ const char *flavname = networkstatus_get_flavor_name(flavor);
+
+ // 1. find the most recent consensus, and the ones that we might want
+ // to diff to it.
+ const char *methodname = compression_method_get_name(
+ RETAIN_CONSENSUS_COMPRESSED_WITH_METHOD);
+
+ matches = smartlist_new();
+ consensus_cache_find_all(matches, cdm_cache_get(),
+ LABEL_FLAVOR, flavname);
+ consensus_cache_filter_list(matches, LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+ consensus_cache_filter_list(matches, LABEL_COMPRESSION_TYPE, methodname);
+ consensus_cache_entry_t *most_recent = sort_and_find_most_recent(matches);
+ if (!most_recent) {
+ log_info(LD_DIRSERV, "No 'most recent' %s consensus found; "
+ "not making diffs", flavname);
+ goto done;
+ }
+ tor_assert(smartlist_len(matches));
+ smartlist_del(matches, smartlist_len(matches) - 1);
+
+ const char *most_recent_valid_after =
+ consensus_cache_entry_get_value(most_recent, LABEL_VALID_AFTER);
+ if (BUG(most_recent_valid_after == NULL))
+ goto done; //LCOV_EXCL_LINE
+ uint8_t most_recent_sha3[DIGEST256_LEN];
+ if (BUG(cdm_entry_get_sha3_value(most_recent_sha3, most_recent,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED) < 0))
+ goto done; //LCOV_EXCL_LINE
+
+ // 2. Find all the relevant diffs _to_ this consensus. These are ones
+ // that we don't need to compute.
+ diffs = smartlist_new();
+ consensus_cache_find_all(diffs, cdm_cache_get(),
+ LABEL_VALID_AFTER, most_recent_valid_after);
+ consensus_cache_filter_list(diffs, LABEL_DOCTYPE, DOCTYPE_CONSENSUS_DIFF);
+ consensus_cache_filter_list(diffs, LABEL_FLAVOR, flavname);
+ have_diff_from = strmap_new();
+ SMARTLIST_FOREACH_BEGIN(diffs, consensus_cache_entry_t *, diff) {
+ const char *va = consensus_cache_entry_get_value(diff,
+ LABEL_FROM_VALID_AFTER);
+ if (BUG(va == NULL))
+ continue; // LCOV_EXCL_LINE
+ strmap_set(have_diff_from, va, diff);
+ } SMARTLIST_FOREACH_END(diff);
+
+ // 3. See which consensuses in 'matches' don't have diffs yet.
+ smartlist_reverse(matches); // from newest to oldest.
+ compute_diffs_from = smartlist_new();
+ SMARTLIST_FOREACH_BEGIN(matches, consensus_cache_entry_t *, ent) {
+ const char *va = consensus_cache_entry_get_value(ent, LABEL_VALID_AFTER);
+ if (BUG(va == NULL))
+ continue; // LCOV_EXCL_LINE
+ if (strmap_get(have_diff_from, va) != NULL)
+ continue; /* we already have this one. */
+ smartlist_add(compute_diffs_from, ent);
+ /* Since we are not going to serve this as the most recent consensus
+ * any more, we should stop keeping it mmap'd when it's not in use.
+ */
+ consensus_cache_entry_mark_for_aggressive_release(ent);
+ } SMARTLIST_FOREACH_END(ent);
+
+ log_info(LD_DIRSERV,
+ "The most recent %s consensus is valid-after %s. We have diffs to "
+ "this consensus for %d/%d older %s consensuses. Generating diffs "
+ "for the other %d.",
+ flavname,
+ most_recent_valid_after,
+ smartlist_len(matches) - smartlist_len(compute_diffs_from),
+ smartlist_len(matches),
+ flavname,
+ smartlist_len(compute_diffs_from));
+
+ // 4. Update the hashtable; remove entries in this flavor to other
+ // target consensuses.
+ cdm_diff_ht_purge(flavor, most_recent_sha3);
+
+ // 5. Actually launch the requests.
+ SMARTLIST_FOREACH_BEGIN(compute_diffs_from, consensus_cache_entry_t *, c) {
+ if (BUG(c == most_recent))
+ continue; // LCOV_EXCL_LINE
+
+ uint8_t this_sha3[DIGEST256_LEN];
+ if (cdm_entry_get_sha3_value(this_sha3, c,
+ LABEL_SHA3_DIGEST_AS_SIGNED)<0) {
+ // Not actually a bug, since we might be running with a directory
+ // with stale files from before the #22143 fixes.
+ continue;
+ }
+ if (cdm_diff_ht_check_and_note_pending(flavor,
+ this_sha3, most_recent_sha3)) {
+ // This is already pending, or we encountered an error.
+ continue;
+ }
+ consensus_diff_queue_diff_work(c, most_recent);
+ } SMARTLIST_FOREACH_END(c);
+
+ done:
+ smartlist_free(matches);
+ smartlist_free(diffs);
+ smartlist_free(compute_diffs_from);
+ strmap_free(have_diff_from, NULL);
+}
+
+/**
+ * Scan the cache for the latest consensuses and add their handles to
+ * latest_consensus
+ */
+static void
+consdiffmgr_consensus_load(void)
+{
+ smartlist_t *matches = smartlist_new();
+ for (int flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
+ const char *flavname = networkstatus_get_flavor_name(flav);
+ smartlist_clear(matches);
+ consensus_cache_find_all(matches, cdm_cache_get(),
+ LABEL_FLAVOR, flavname);
+ consensus_cache_filter_list(matches, LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+ consensus_cache_entry_t *most_recent = sort_and_find_most_recent(matches);
+ if (! most_recent)
+ continue; // no consensuses.
+ const char *most_recent_sha3 =
+ consensus_cache_entry_get_value(most_recent,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED);
+ if (BUG(most_recent_sha3 == NULL))
+ continue; // LCOV_EXCL_LINE
+ consensus_cache_filter_list(matches, LABEL_SHA3_DIGEST_UNCOMPRESSED,
+ most_recent_sha3);
+
+ // Everything that remains matches the most recent consensus of this
+ // flavor.
+ SMARTLIST_FOREACH_BEGIN(matches, consensus_cache_entry_t *, ent) {
+ const char *lv_compression =
+ consensus_cache_entry_get_value(ent, LABEL_COMPRESSION_TYPE);
+ compress_method_t method =
+ compression_method_get_by_name(lv_compression);
+ int pos = consensus_compression_method_pos(method);
+ if (pos < 0)
+ continue;
+ consensus_cache_entry_handle_free(latest_consensus[flav][pos]);
+ latest_consensus[flav][pos] = consensus_cache_entry_handle_new(ent);
+ } SMARTLIST_FOREACH_END(ent);
+ }
+ smartlist_free(matches);
+}
+
+/**
+ * Scan the cache for diffs, and add them to the hashtable.
+ */
+static void
+consdiffmgr_diffs_load(void)
+{
+ smartlist_t *diffs = smartlist_new();
+ consensus_cache_find_all(diffs, cdm_cache_get(),
+ LABEL_DOCTYPE, DOCTYPE_CONSENSUS_DIFF);
+ SMARTLIST_FOREACH_BEGIN(diffs, consensus_cache_entry_t *, diff) {
+ const char *lv_flavor =
+ consensus_cache_entry_get_value(diff, LABEL_FLAVOR);
+ if (!lv_flavor)
+ continue;
+ int flavor = networkstatus_parse_flavor_name(lv_flavor);
+ if (flavor < 0)
+ continue;
+ const char *lv_compression =
+ consensus_cache_entry_get_value(diff, LABEL_COMPRESSION_TYPE);
+ compress_method_t method = NO_METHOD;
+ if (lv_compression) {
+ method = compression_method_get_by_name(lv_compression);
+ if (method == UNKNOWN_METHOD) {
+ continue;
+ }
+ }
+
+ uint8_t from_sha3[DIGEST256_LEN];
+ uint8_t to_sha3[DIGEST256_LEN];
+ if (cdm_entry_get_sha3_value(from_sha3, diff, LABEL_FROM_SHA3_DIGEST)<0)
+ continue;
+ if (cdm_entry_get_sha3_value(to_sha3, diff, LABEL_TARGET_SHA3_DIGEST)<0)
+ continue;
+
+ cdm_diff_ht_set_status(flavor, from_sha3, to_sha3,
+ method,
+ CDM_DIFF_PRESENT,
+ consensus_cache_entry_handle_new(diff));
+ } SMARTLIST_FOREACH_END(diff);
+ smartlist_free(diffs);
+}
+
+/**
+ * Build new diffs as needed.
+ */
+void
+consdiffmgr_rescan(void)
+{
+ if (cdm_cache_dirty == 0)
+ return;
+
+ // Clean up here to make room for new diffs, and to ensure that older
+ // consensuses do not have any entries.
+ consdiffmgr_cleanup();
+
+ if (cdm_cache_loaded == 0) {
+ consdiffmgr_diffs_load();
+ consdiffmgr_consensus_load();
+ cdm_cache_loaded = 1;
+ }
+
+ for (int flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
+ consdiffmgr_rescan_flavor_((consensus_flavor_t) flav);
+ }
+
+ cdm_cache_dirty = 0;
+}
+
+/**
+ * Helper: compare two files by their from-valid-after and valid-after labels,
+ * trying to sort in ascending order by from-valid-after (when present) and
+ * valid-after (when not). Place everything that has neither label first in
+ * the list.
+ */
+static int
+compare_by_staleness_(const void **a, const void **b)
+{
+ const consensus_cache_entry_t *e1 = *a;
+ const consensus_cache_entry_t *e2 = *b;
+ const char *va1, *fva1, *va2, *fva2;
+ va1 = consensus_cache_entry_get_value(e1, LABEL_VALID_AFTER);
+ va2 = consensus_cache_entry_get_value(e2, LABEL_VALID_AFTER);
+ fva1 = consensus_cache_entry_get_value(e1, LABEL_FROM_VALID_AFTER);
+ fva2 = consensus_cache_entry_get_value(e2, LABEL_FROM_VALID_AFTER);
+
+ if (fva1)
+ va1 = fva1;
+ if (fva2)
+ va2 = fva2;
+
+ /* See note about iso-encoded values in compare_by_valid_after_. Also note
+ * that missing dates will get placed first. */
+ return strcmp_opt(va1, va2);
+}
+
+/** If there are not enough unused filenames to store <b>n</b> files, then
+ * delete old consensuses until there are. (We have to keep track of the
+ * number of filenames because of the way that the seccomp2 cache works.)
+ *
+ * Return 0 on success, -1 on failure.
+ **/
+static int
+consdiffmgr_ensure_space_for_files(int n)
+{
+ consensus_cache_t *cache = cdm_cache_get();
+ if (consensus_cache_get_n_filenames_available(cache) >= n) {
+ // there are already enough unused filenames.
+ return 0;
+ }
+ // Try a cheap deletion of stuff that's waiting to get deleted.
+ consensus_cache_delete_pending(cache, 0);
+ if (consensus_cache_get_n_filenames_available(cache) >= n) {
+ // okay, _that_ made enough filenames available.
+ return 0;
+ }
+ // Let's get more assertive: clean out unused stuff, and force-remove
+ // the files that we can.
+ consdiffmgr_cleanup();
+ consensus_cache_delete_pending(cache, 1);
+ const int n_to_remove = n - consensus_cache_get_n_filenames_available(cache);
+ if (n_to_remove <= 0) {
+ // okay, finally!
+ return 0;
+ }
+
+ // At this point, we're going to have to throw out objects that will be
+ // missed. Too bad!
+ smartlist_t *objects = smartlist_new();
+ consensus_cache_find_all(objects, cache, NULL, NULL);
+ smartlist_sort(objects, compare_by_staleness_);
+ int n_marked = 0;
+ SMARTLIST_FOREACH_BEGIN(objects, consensus_cache_entry_t *, ent) {
+ consensus_cache_entry_mark_for_removal(ent);
+ if (++n_marked >= n_to_remove)
+ break;
+ } SMARTLIST_FOREACH_END(ent);
+ smartlist_free(objects);
+
+ consensus_cache_delete_pending(cache, 1);
+
+ if (consensus_cache_may_overallocate(cache)) {
+ /* If we're allowed to throw extra files into the cache, let's do so
+ * rather getting upset.
+ */
+ return 0;
+ }
+
+ if (BUG(n_marked < n_to_remove))
+ return -1;
+ else
+ return 0;
+}
+
+/**
+ * Set consensus cache flags on the objects in this consdiffmgr.
+ */
+static void
+consdiffmgr_set_cache_flags(void)
+{
+ /* Right now, we just mark the consensus objects for aggressive release,
+ * so that they get mmapped for as little time as possible. */
+ smartlist_t *objects = smartlist_new();
+ consensus_cache_find_all(objects, cdm_cache_get(), LABEL_DOCTYPE,
+ DOCTYPE_CONSENSUS);
+ SMARTLIST_FOREACH_BEGIN(objects, consensus_cache_entry_t *, ent) {
+ consensus_cache_entry_mark_for_aggressive_release(ent);
+ } SMARTLIST_FOREACH_END(ent);
+ smartlist_free(objects);
+}
+
+/**
+ * Called before shutdown: drop all storage held by the consdiffmgr.c module.
+ */
+void
+consdiffmgr_free_all(void)
+{
+ cdm_diff_t **diff, **next;
+ for (diff = HT_START(cdm_diff_ht, &cdm_diff_ht); diff; diff = next) {
+ cdm_diff_t *this = *diff;
+ next = HT_NEXT_RMV(cdm_diff_ht, &cdm_diff_ht, diff);
+ cdm_diff_free(this);
+ }
+ int i;
+ unsigned j;
+ for (i = 0; i < N_CONSENSUS_FLAVORS; ++i) {
+ for (j = 0; j < n_consensus_compression_methods(); ++j) {
+ consensus_cache_entry_handle_free(latest_consensus[i][j]);
+ }
+ }
+ memset(latest_consensus, 0, sizeof(latest_consensus));
+ consensus_cache_free(cons_diff_cache);
+ cons_diff_cache = NULL;
+}
+
+/* =====
+ Thread workers
+ =====*/
+
+typedef struct compressed_result_t {
+ config_line_t *labels;
+ /**
+ * Output: Body of the diff, as compressed.
+ */
+ uint8_t *body;
+ /**
+ * Output: length of body_out
+ */
+ size_t bodylen;
+} compressed_result_t;
+
+/**
+ * Compress the bytestring <b>input</b> of length <b>len</b> using the
+ * <n>n_methods</b> compression methods listed in the array <b>methods</b>.
+ *
+ * For each successful compression, set the fields in the <b>results_out</b>
+ * array in the position corresponding to the compression method. Use
+ * <b>labels_in</b> as a basis for the labels of the result.
+ *
+ * Return 0 if all compression succeeded; -1 if any failed.
+ */
+static int
+compress_multiple(compressed_result_t *results_out, int n_methods,
+ const compress_method_t *methods,
+ const uint8_t *input, size_t len,
+ const config_line_t *labels_in)
+{
+ int rv = 0;
+ int i;
+ for (i = 0; i < n_methods; ++i) {
+ compress_method_t method = methods[i];
+ const char *methodname = compression_method_get_name(method);
+ char *result;
+ size_t sz;
+ if (0 == tor_compress(&result, &sz, (const char*)input, len, method)) {
+ results_out[i].body = (uint8_t*)result;
+ results_out[i].bodylen = sz;
+ results_out[i].labels = config_lines_dup(labels_in);
+ cdm_labels_prepend_sha3(&results_out[i].labels, LABEL_SHA3_DIGEST,
+ results_out[i].body,
+ results_out[i].bodylen);
+ config_line_prepend(&results_out[i].labels,
+ LABEL_COMPRESSION_TYPE,
+ methodname);
+ } else {
+ rv = -1;
+ }
+ }
+ return rv;
+}
+
+/**
+ * Given an array of <b>n</b> compressed_result_t in <b>results</b>,
+ * as produced by compress_multiple, store them all into the
+ * consdiffmgr, and store handles to them in the <b>handles_out</b>
+ * array.
+ *
+ * Return CDM_DIFF_PRESENT if any was stored, and CDM_DIFF_ERROR if none
+ * was stored.
+ */
+static cdm_diff_status_t
+store_multiple(consensus_cache_entry_handle_t **handles_out,
+ int n,
+ const compress_method_t *methods,
+ const compressed_result_t *results,
+ const char *description)
+{
+ cdm_diff_status_t status = CDM_DIFF_ERROR;
+ consdiffmgr_ensure_space_for_files(n);
+
+ int i;
+ for (i = 0; i < n; ++i) {
+ compress_method_t method = methods[i];
+ uint8_t *body_out = results[i].body;
+ size_t bodylen_out = results[i].bodylen;
+ config_line_t *labels = results[i].labels;
+ const char *methodname = compression_method_get_name(method);
+ if (body_out && bodylen_out && labels) {
+ /* Success! Store the results */
+ log_info(LD_DIRSERV, "Adding %s, compressed with %s",
+ description, methodname);
+
+ consensus_cache_entry_t *ent =
+ consensus_cache_add(cdm_cache_get(),
+ labels,
+ body_out,
+ bodylen_out);
+ if (ent == NULL) {
+ static ratelim_t cant_store_ratelim = RATELIM_INIT(5*60);
+ log_fn_ratelim(&cant_store_ratelim, LOG_WARN, LD_FS,
+ "Unable to store object %s compressed with %s.",
+ description, methodname);
+ continue;
+ }
+
+ status = CDM_DIFF_PRESENT;
+ handles_out[i] = consensus_cache_entry_handle_new(ent);
+ consensus_cache_entry_decref(ent);
+ }
+ }
+ return status;
+}
+
+/**
+ * An object passed to a worker thread that will try to produce a consensus
+ * diff.
+ */
+typedef struct consensus_diff_worker_job_t {
+ /**
+ * Input: The consensus to compute the diff from. Holds a reference to the
+ * cache entry, which must not be released until the job is passed back to
+ * the main thread. The body must be mapped into memory in the main thread.
+ */
+ consensus_cache_entry_t *diff_from;
+ /**
+ * Input: The consensus to compute the diff to. Holds a reference to the
+ * cache entry, which must not be released until the job is passed back to
+ * the main thread. The body must be mapped into memory in the main thread.
+ */
+ consensus_cache_entry_t *diff_to;
+
+ /** Output: labels and bodies */
+ compressed_result_t out[ARRAY_LENGTH(compress_diffs_with)];
+} consensus_diff_worker_job_t;
+
+/** Given a consensus_cache_entry_t, check whether it has a label claiming
+ * that it was compressed. If so, uncompress its contents into <b>out</b> and
+ * set <b>outlen</b> to hold their size. If not, just copy the body into
+ * <b>out</b> and set <b>outlen</b> to its length. Return 0 on success,
+ * -1 on failure.
+ *
+ * In all cases, the output is nul-terminated. */
+STATIC int
+uncompress_or_copy(char **out, size_t *outlen,
+ consensus_cache_entry_t *ent)
+{
+ const uint8_t *body;
+ size_t bodylen;
+
+ if (consensus_cache_entry_get_body(ent, &body, &bodylen) < 0)
+ return -1;
+
+ const char *lv_compression =
+ consensus_cache_entry_get_value(ent, LABEL_COMPRESSION_TYPE);
+ compress_method_t method = NO_METHOD;
+
+ if (lv_compression)
+ method = compression_method_get_by_name(lv_compression);
+
+ return tor_uncompress(out, outlen, (const char *)body, bodylen,
+ method, 1, LOG_WARN);
+}
+
+/**
+ * Worker function. This function runs inside a worker thread and receives
+ * a consensus_diff_worker_job_t as its input.
+ */
+static workqueue_reply_t
+consensus_diff_worker_threadfn(void *state_, void *work_)
+{
+ (void)state_;
+ consensus_diff_worker_job_t *job = work_;
+ const uint8_t *diff_from, *diff_to;
+ size_t len_from, len_to;
+ int r;
+ /* We need to have the body already mapped into RAM here.
+ */
+ r = consensus_cache_entry_get_body(job->diff_from, &diff_from, &len_from);
+ if (BUG(r < 0))
+ return WQ_RPL_REPLY; // LCOV_EXCL_LINE
+ r = consensus_cache_entry_get_body(job->diff_to, &diff_to, &len_to);
+ if (BUG(r < 0))
+ return WQ_RPL_REPLY; // LCOV_EXCL_LINE
+
+ const char *lv_to_valid_after =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_VALID_AFTER);
+ const char *lv_to_fresh_until =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_FRESH_UNTIL);
+ const char *lv_to_valid_until =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_VALID_UNTIL);
+ const char *lv_to_signatories =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_SIGNATORIES);
+ const char *lv_from_valid_after =
+ consensus_cache_entry_get_value(job->diff_from, LABEL_VALID_AFTER);
+ const char *lv_from_digest =
+ consensus_cache_entry_get_value(job->diff_from,
+ LABEL_SHA3_DIGEST_AS_SIGNED);
+ const char *lv_from_flavor =
+ consensus_cache_entry_get_value(job->diff_from, LABEL_FLAVOR);
+ const char *lv_to_flavor =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_FLAVOR);
+ const char *lv_to_digest =
+ consensus_cache_entry_get_value(job->diff_to,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED);
+
+ if (! lv_from_digest) {
+ /* This isn't a bug right now, since it can happen if you're migrating
+ * from an older version of master to a newer one. The older ones didn't
+ * annotate their stored consensus objects with sha3-digest-as-signed.
+ */
+ return WQ_RPL_REPLY; // LCOV_EXCL_LINE
+ }
+
+ /* All these values are mandatory on the input */
+ if (BUG(!lv_to_valid_after) ||
+ BUG(!lv_from_valid_after) ||
+ BUG(!lv_from_flavor) ||
+ BUG(!lv_to_flavor)) {
+ return WQ_RPL_REPLY; // LCOV_EXCL_LINE
+ }
+ /* The flavors need to match */
+ if (BUG(strcmp(lv_from_flavor, lv_to_flavor))) {
+ return WQ_RPL_REPLY; // LCOV_EXCL_LINE
+ }
+
+ char *consensus_diff;
+ {
+ char *diff_from_nt = NULL, *diff_to_nt = NULL;
+ size_t diff_from_nt_len, diff_to_nt_len;
+
+ if (uncompress_or_copy(&diff_from_nt, &diff_from_nt_len,
+ job->diff_from) < 0) {
+ return WQ_RPL_REPLY;
+ }
+ if (uncompress_or_copy(&diff_to_nt, &diff_to_nt_len,
+ job->diff_to) < 0) {
+ tor_free(diff_from_nt);
+ return WQ_RPL_REPLY;
+ }
+ tor_assert(diff_from_nt);
+ tor_assert(diff_to_nt);
+
+ // XXXX ugh; this is going to calculate the SHA3 of both its
+ // XXXX inputs again, even though we already have that. Maybe it's time
+ // XXXX to change the API here?
+ consensus_diff = consensus_diff_generate(diff_from_nt, diff_to_nt);
+ tor_free(diff_from_nt);
+ tor_free(diff_to_nt);
+ }
+ if (!consensus_diff) {
+ /* Couldn't generate consensus; we'll leave the reply blank. */
+ return WQ_RPL_REPLY;
+ }
+
+ /* Compress the results and send the reply */
+ tor_assert(compress_diffs_with[0] == NO_METHOD);
+ size_t difflen = strlen(consensus_diff);
+ job->out[0].body = (uint8_t *) consensus_diff;
+ job->out[0].bodylen = difflen;
+
+ config_line_t *common_labels = NULL;
+ if (lv_to_valid_until)
+ config_line_prepend(&common_labels, LABEL_VALID_UNTIL, lv_to_valid_until);
+ if (lv_to_fresh_until)
+ config_line_prepend(&common_labels, LABEL_FRESH_UNTIL, lv_to_fresh_until);
+ if (lv_to_signatories)
+ config_line_prepend(&common_labels, LABEL_SIGNATORIES, lv_to_signatories);
+ cdm_labels_prepend_sha3(&common_labels,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED,
+ job->out[0].body,
+ job->out[0].bodylen);
+ config_line_prepend(&common_labels, LABEL_FROM_VALID_AFTER,
+ lv_from_valid_after);
+ config_line_prepend(&common_labels, LABEL_VALID_AFTER,
+ lv_to_valid_after);
+ config_line_prepend(&common_labels, LABEL_FLAVOR, lv_from_flavor);
+ config_line_prepend(&common_labels, LABEL_FROM_SHA3_DIGEST,
+ lv_from_digest);
+ config_line_prepend(&common_labels, LABEL_TARGET_SHA3_DIGEST,
+ lv_to_digest);
+ config_line_prepend(&common_labels, LABEL_DOCTYPE,
+ DOCTYPE_CONSENSUS_DIFF);
+
+ job->out[0].labels = config_lines_dup(common_labels);
+ cdm_labels_prepend_sha3(&job->out[0].labels,
+ LABEL_SHA3_DIGEST,
+ job->out[0].body,
+ job->out[0].bodylen);
+
+ compress_multiple(job->out+1,
+ n_diff_compression_methods()-1,
+ compress_diffs_with+1,
+ (const uint8_t*)consensus_diff, difflen, common_labels);
+
+ config_free_lines(common_labels);
+ return WQ_RPL_REPLY;
+}
+
+/**
+ * Helper: release all storage held in <b>job</b>.
+ */
+static void
+consensus_diff_worker_job_free(consensus_diff_worker_job_t *job)
+{
+ if (!job)
+ return;
+ unsigned u;
+ for (u = 0; u < n_diff_compression_methods(); ++u) {
+ config_free_lines(job->out[u].labels);
+ tor_free(job->out[u].body);
+ }
+ consensus_cache_entry_decref(job->diff_from);
+ consensus_cache_entry_decref(job->diff_to);
+ tor_free(job);
+}
+
+/**
+ * Worker function: This function runs in the main thread, and receives
+ * a consensus_diff_worker_job_t that the worker thread has already
+ * processed.
+ */
+static void
+consensus_diff_worker_replyfn(void *work_)
+{
+ tor_assert(in_main_thread());
+ tor_assert(work_);
+
+ consensus_diff_worker_job_t *job = work_;
+
+ const char *lv_from_digest =
+ consensus_cache_entry_get_value(job->diff_from,
+ LABEL_SHA3_DIGEST_AS_SIGNED);
+ const char *lv_to_digest =
+ consensus_cache_entry_get_value(job->diff_to,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED);
+ const char *lv_flavor =
+ consensus_cache_entry_get_value(job->diff_to, LABEL_FLAVOR);
+ if (BUG(lv_from_digest == NULL))
+ lv_from_digest = "???"; // LCOV_EXCL_LINE
+ if (BUG(lv_to_digest == NULL))
+ lv_to_digest = "???"; // LCOV_EXCL_LINE
+
+ uint8_t from_sha3[DIGEST256_LEN];
+ uint8_t to_sha3[DIGEST256_LEN];
+ int flav = -1;
+ int cache = 1;
+ if (BUG(cdm_entry_get_sha3_value(from_sha3, job->diff_from,
+ LABEL_SHA3_DIGEST_AS_SIGNED) < 0))
+ cache = 0;
+ if (BUG(cdm_entry_get_sha3_value(to_sha3, job->diff_to,
+ LABEL_SHA3_DIGEST_UNCOMPRESSED) < 0))
+ cache = 0;
+ if (BUG(lv_flavor == NULL)) {
+ cache = 0;
+ } else if ((flav = networkstatus_parse_flavor_name(lv_flavor)) < 0) {
+ cache = 0;
+ }
+
+ consensus_cache_entry_handle_t *handles[ARRAY_LENGTH(compress_diffs_with)];
+ memset(handles, 0, sizeof(handles));
+
+ char description[128];
+ tor_snprintf(description, sizeof(description),
+ "consensus diff from %s to %s",
+ lv_from_digest, lv_to_digest);
+
+ int status = store_multiple(handles,
+ n_diff_compression_methods(),
+ compress_diffs_with,
+ job->out,
+ description);
+
+ if (status != CDM_DIFF_PRESENT) {
+ /* Failure! Nothing to do but complain */
+ log_warn(LD_DIRSERV,
+ "Worker was unable to compute consensus diff "
+ "from %s to %s", lv_from_digest, lv_to_digest);
+ /* Cache this error so we don't try to compute this one again. */
+ status = CDM_DIFF_ERROR;
+ }
+
+ unsigned u;
+ for (u = 0; u < ARRAY_LENGTH(handles); ++u) {
+ compress_method_t method = compress_diffs_with[u];
+ if (cache) {
+ consensus_cache_entry_handle_t *h = handles[u];
+ int this_status = status;
+ if (h == NULL) {
+ this_status = CDM_DIFF_ERROR;
+ }
+ tor_assert_nonfatal(h != NULL || this_status == CDM_DIFF_ERROR);
+ cdm_diff_ht_set_status(flav, from_sha3, to_sha3, method, this_status, h);
+ } else {
+ consensus_cache_entry_handle_free(handles[u]);
+ }
+ }
+
+ consensus_diff_worker_job_free(job);
+}
+
+/**
+ * Queue the job of computing the diff from <b>diff_from</b> to <b>diff_to</b>
+ * in a worker thread.
+ */
+static int
+consensus_diff_queue_diff_work(consensus_cache_entry_t *diff_from,
+ consensus_cache_entry_t *diff_to)
+{
+ tor_assert(in_main_thread());
+
+ consensus_cache_entry_incref(diff_from);
+ consensus_cache_entry_incref(diff_to);
+
+ consensus_diff_worker_job_t *job = tor_malloc_zero(sizeof(*job));
+ job->diff_from = diff_from;
+ job->diff_to = diff_to;
+
+ /* Make sure body is mapped. */
+ const uint8_t *body;
+ size_t bodylen;
+ int r1 = consensus_cache_entry_get_body(diff_from, &body, &bodylen);
+ int r2 = consensus_cache_entry_get_body(diff_to, &body, &bodylen);
+ if (r1 < 0 || r2 < 0)
+ goto err;
+
+ workqueue_entry_t *work;
+ work = cpuworker_queue_work(WQ_PRI_LOW,
+ consensus_diff_worker_threadfn,
+ consensus_diff_worker_replyfn,
+ job);
+ if (!work)
+ goto err;
+
+ return 0;
+ err:
+ consensus_diff_worker_job_free(job); // includes decrefs.
+ return -1;
+}
+
+/**
+ * Holds requests and replies for consensus_compress_workers.
+ */
+typedef struct consensus_compress_worker_job_t {
+ char *consensus;
+ size_t consensus_len;
+ consensus_flavor_t flavor;
+ config_line_t *labels_in;
+ compressed_result_t out[ARRAY_LENGTH(compress_consensus_with)];
+} consensus_compress_worker_job_t;
+
+/**
+ * Free all resources held in <b>job</b>
+ */
+static void
+consensus_compress_worker_job_free(consensus_compress_worker_job_t *job)
+{
+ if (!job)
+ return;
+ tor_free(job->consensus);
+ config_free_lines(job->labels_in);
+ unsigned u;
+ for (u = 0; u < n_consensus_compression_methods(); ++u) {
+ config_free_lines(job->out[u].labels);
+ tor_free(job->out[u].body);
+ }
+ tor_free(job);
+}
+/**
+ * Worker function. This function runs inside a worker thread and receives
+ * a consensus_compress_worker_job_t as its input.
+ */
+static workqueue_reply_t
+consensus_compress_worker_threadfn(void *state_, void *work_)
+{
+ (void)state_;
+ consensus_compress_worker_job_t *job = work_;
+ consensus_flavor_t flavor = job->flavor;
+ const char *consensus = job->consensus;
+ size_t bodylen = job->consensus_len;
+
+ config_line_t *labels = config_lines_dup(job->labels_in);
+ const char *flavname = networkstatus_get_flavor_name(flavor);
+
+ cdm_labels_prepend_sha3(&labels, LABEL_SHA3_DIGEST_UNCOMPRESSED,
+ (const uint8_t *)consensus, bodylen);
+ {
+ const char *start, *end;
+ if (router_get_networkstatus_v3_signed_boundaries(consensus,
+ &start, &end) < 0) {
+ start = consensus;
+ end = consensus+bodylen;
+ }
+ cdm_labels_prepend_sha3(&labels, LABEL_SHA3_DIGEST_AS_SIGNED,
+ (const uint8_t *)start,
+ end - start);
+ }
+ config_line_prepend(&labels, LABEL_FLAVOR, flavname);
+ config_line_prepend(&labels, LABEL_DOCTYPE, DOCTYPE_CONSENSUS);
+
+ compress_multiple(job->out,
+ n_consensus_compression_methods(),
+ compress_consensus_with,
+ (const uint8_t*)consensus, bodylen, labels);
+ config_free_lines(labels);
+ return WQ_RPL_REPLY;
+}
+
+/**
+ * Worker function: This function runs in the main thread, and receives
+ * a consensus_diff_compress_job_t that the worker thread has already
+ * processed.
+ */
+static void
+consensus_compress_worker_replyfn(void *work_)
+{
+ consensus_compress_worker_job_t *job = work_;
+
+ consensus_cache_entry_handle_t *handles[
+ ARRAY_LENGTH(compress_consensus_with)];
+ memset(handles, 0, sizeof(handles));
+
+ store_multiple(handles,
+ n_consensus_compression_methods(),
+ compress_consensus_with,
+ job->out,
+ "consensus");
+ cdm_cache_dirty = 1;
+
+ unsigned u;
+ consensus_flavor_t f = job->flavor;
+ tor_assert((int)f < N_CONSENSUS_FLAVORS);
+ for (u = 0; u < ARRAY_LENGTH(handles); ++u) {
+ if (handles[u] == NULL)
+ continue;
+ consensus_cache_entry_handle_free(latest_consensus[f][u]);
+ latest_consensus[f][u] = handles[u];
+ }
+
+ consensus_compress_worker_job_free(job);
+}
+
+/**
+ * If true, we compress in worker threads.
+ */
+static int background_compression = 0;
+
+/**
+ * Queue a job to compress <b>consensus</b> and store its compressed
+ * text in the cache.
+ */
+static int
+consensus_queue_compression_work(const char *consensus,
+ const networkstatus_t *as_parsed)
+{
+ tor_assert(consensus);
+ tor_assert(as_parsed);
+
+ consensus_compress_worker_job_t *job = tor_malloc_zero(sizeof(*job));
+ job->consensus = tor_strdup(consensus);
+ job->consensus_len = strlen(consensus);
+ job->flavor = as_parsed->flavor;
+
+ char va_str[ISO_TIME_LEN+1];
+ char vu_str[ISO_TIME_LEN+1];
+ char fu_str[ISO_TIME_LEN+1];
+ format_iso_time_nospace(va_str, as_parsed->valid_after);
+ format_iso_time_nospace(fu_str, as_parsed->fresh_until);
+ format_iso_time_nospace(vu_str, as_parsed->valid_until);
+ config_line_append(&job->labels_in, LABEL_VALID_AFTER, va_str);
+ config_line_append(&job->labels_in, LABEL_FRESH_UNTIL, fu_str);
+ config_line_append(&job->labels_in, LABEL_VALID_UNTIL, vu_str);
+ if (as_parsed->voters) {
+ smartlist_t *hexvoters = smartlist_new();
+ SMARTLIST_FOREACH_BEGIN(as_parsed->voters,
+ networkstatus_voter_info_t *, vi) {
+ if (smartlist_len(vi->sigs) == 0)
+ continue; // didn't sign.
+ char d[HEX_DIGEST_LEN+1];
+ base16_encode(d, sizeof(d), vi->identity_digest, DIGEST_LEN);
+ smartlist_add_strdup(hexvoters, d);
+ } SMARTLIST_FOREACH_END(vi);
+ char *signers = smartlist_join_strings(hexvoters, ",", 0, NULL);
+ config_line_prepend(&job->labels_in, LABEL_SIGNATORIES, signers);
+ tor_free(signers);
+ SMARTLIST_FOREACH(hexvoters, char *, cp, tor_free(cp));
+ smartlist_free(hexvoters);
+ }
+
+ if (background_compression) {
+ workqueue_entry_t *work;
+ work = cpuworker_queue_work(WQ_PRI_LOW,
+ consensus_compress_worker_threadfn,
+ consensus_compress_worker_replyfn,
+ job);
+ if (!work) {
+ consensus_compress_worker_job_free(job);
+ return -1;
+ }
+
+ return 0;
+ } else {
+ consensus_compress_worker_threadfn(NULL, job);
+ consensus_compress_worker_replyfn(job);
+ return 0;
+ }
+}
+
+/**
+ * Tell the consdiffmgr backend to compress consensuses in worker threads.
+ */
+void
+consdiffmgr_enable_background_compression(void)
+{
+ // This isn't the default behavior because it would break unit tests.
+ background_compression = 1;
+}
+
+/** Read the set of voters from the cached object <b>ent</b> into
+ * <b>out</b>, as a list of hex-encoded digests. Return 0 on success,
+ * -1 if no signatories were recorded. */
+int
+consensus_cache_entry_get_voter_id_digests(const consensus_cache_entry_t *ent,
+ smartlist_t *out)
+{
+ tor_assert(ent);
+ tor_assert(out);
+ const char *s;
+ s = consensus_cache_entry_get_value(ent, LABEL_SIGNATORIES);
+ if (s == NULL)
+ return -1;
+ smartlist_split_string(out, s, ",", SPLIT_SKIP_SPACE|SPLIT_STRIP_SPACE, 0);
+ return 0;
+}
+
+/** Read the fresh-until time of cached object <b>ent</b> into *<b>out</b>
+ * and return 0, or return -1 if no such time was recorded. */
+int
+consensus_cache_entry_get_fresh_until(const consensus_cache_entry_t *ent,
+ time_t *out)
+{
+ tor_assert(ent);
+ tor_assert(out);
+ const char *s;
+ s = consensus_cache_entry_get_value(ent, LABEL_FRESH_UNTIL);
+ if (s == NULL || parse_iso_time_nospace(s, out) < 0)
+ return -1;
+ else
+ return 0;
+}
+
+/** Read the valid until timestamp from the cached object <b>ent</b> into
+ * *<b>out</b> and return 0, or return -1 if no such time was recorded. */
+int
+consensus_cache_entry_get_valid_until(const consensus_cache_entry_t *ent,
+ time_t *out)
+{
+ tor_assert(ent);
+ tor_assert(out);
+
+ const char *s;
+ s = consensus_cache_entry_get_value(ent, LABEL_VALID_UNTIL);
+ if (s == NULL || parse_iso_time_nospace(s, out) < 0)
+ return -1;
+ else
+ return 0;
+}
+
+/** Read the valid after timestamp from the cached object <b>ent</b> into
+ * *<b>out</b> and return 0, or return -1 if no such time was recorded. */
+int
+consensus_cache_entry_get_valid_after(const consensus_cache_entry_t *ent,
+ time_t *out)
+{
+ tor_assert(ent);
+ tor_assert(out);
+
+ const char *s;
+ s = consensus_cache_entry_get_value(ent, LABEL_VALID_AFTER);
+
+ if (s == NULL || parse_iso_time_nospace(s, out) < 0)
+ return -1;
+ else
+ return 0;
+}
+
diff --git a/src/or/consdiffmgr.h b/src/or/consdiffmgr.h
new file mode 100644
index 0000000000..079f9fe2d2
--- /dev/null
+++ b/src/or/consdiffmgr.h
@@ -0,0 +1,74 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_CONSDIFFMGR_H
+#define TOR_CONSDIFFMGR_H
+
+/**
+ * Possible outcomes from trying to look up a given consensus diff.
+ */
+typedef enum consdiff_status_t {
+ CONSDIFF_AVAILABLE,
+ CONSDIFF_NOT_FOUND,
+ CONSDIFF_IN_PROGRESS,
+} consdiff_status_t;
+
+typedef struct consdiff_cfg_t {
+ int32_t cache_max_num;
+} consdiff_cfg_t;
+
+struct consensus_cache_entry_t; // from conscache.h
+
+int consdiffmgr_add_consensus(const char *consensus,
+ const networkstatus_t *as_parsed);
+
+consdiff_status_t consdiffmgr_find_consensus(
+ struct consensus_cache_entry_t **entry_out,
+ consensus_flavor_t flavor,
+ compress_method_t method);
+
+consdiff_status_t consdiffmgr_find_diff_from(
+ struct consensus_cache_entry_t **entry_out,
+ consensus_flavor_t flavor,
+ int digest_type,
+ const uint8_t *digest,
+ size_t digestlen,
+ compress_method_t method);
+
+int consensus_cache_entry_get_voter_id_digests(
+ const struct consensus_cache_entry_t *ent,
+ smartlist_t *out);
+int consensus_cache_entry_get_fresh_until(
+ const struct consensus_cache_entry_t *ent,
+ time_t *out);
+int consensus_cache_entry_get_valid_until(
+ const struct consensus_cache_entry_t *ent,
+ time_t *out);
+int consensus_cache_entry_get_valid_after(
+ const struct consensus_cache_entry_t *ent,
+ time_t *out);
+
+void consdiffmgr_rescan(void);
+int consdiffmgr_cleanup(void);
+void consdiffmgr_enable_background_compression(void);
+void consdiffmgr_configure(const consdiff_cfg_t *cfg);
+struct sandbox_cfg_elem;
+int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg);
+void consdiffmgr_free_all(void);
+int consdiffmgr_validate(void);
+
+#ifdef CONSDIFFMGR_PRIVATE
+STATIC unsigned n_diff_compression_methods(void);
+STATIC unsigned n_consensus_compression_methods(void);
+STATIC consensus_cache_t *cdm_cache_get(void);
+STATIC consensus_cache_entry_t *cdm_cache_lookup_consensus(
+ consensus_flavor_t flavor, time_t valid_after);
+STATIC int cdm_entry_get_sha3_value(uint8_t *digest_out,
+ consensus_cache_entry_t *ent,
+ const char *label);
+STATIC int uncompress_or_copy(char **out, size_t *outlen,
+ consensus_cache_entry_t *ent);
+#endif
+
+#endif
+
diff --git a/src/or/control.c b/src/or/control.c
index 879d9bbed9..1837d49025 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1462,8 +1462,10 @@ handle_control_saveconf(control_connection_t *conn, uint32_t len,
const char *body)
{
(void) len;
- (void) body;
- if (options_save_current()<0) {
+
+ int force = !strcmpstart(body, "FORCE");
+ const or_options_t *options = get_options();
+ if ((!force && options->IncludeUsed) || options_save_current() < 0) {
connection_write_str_to_buf(
"551 Unable to write configuration to disk.\r\n", conn);
} else {
@@ -1677,6 +1679,8 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
*answer = tor_strdup(a);
} else if (!strcmp(question, "config-text")) {
*answer = options_dump(get_options(), OPTIONS_DUMP_MINIMAL);
+ } else if (!strcmp(question, "config-can-saveconf")) {
+ *answer = tor_strdup(get_options()->IncludeUsed ? "0" : "1");
} else if (!strcmp(question, "info/names")) {
*answer = list_getinfo_options();
} else if (!strcmp(question, "dormant")) {
@@ -1873,7 +1877,7 @@ getinfo_helper_listeners(control_connection_t *control_conn,
/** Implementation helper for GETINFO: knows the answers for questions about
* directory information. */
-static int
+STATIC int
getinfo_helper_dir(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg)
@@ -2047,6 +2051,12 @@ getinfo_helper_dir(control_connection_t *control_conn,
}
}
} else if (!strcmp(question, "network-status")) { /* v1 */
+ static int network_status_warned = 0;
+ if (!network_status_warned) {
+ log_warn(LD_CONTROL, "GETINFO network-status is deprecated; it will "
+ "go away in a future version of Tor.");
+ network_status_warned = 1;
+ }
routerlist_t *routerlist = router_get_routerlist();
if (!routerlist || !routerlist->routers ||
list_server_status_v1(routerlist->routers, answer, 1) < 0) {
@@ -2824,12 +2834,13 @@ getinfo_helper_events(control_connection_t *control_conn,
/** Implementation helper for GETINFO: knows how to enumerate hidden services
* created via the control port. */
-static int
+STATIC int
getinfo_helper_onions(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg)
{
smartlist_t *onion_list = NULL;
+ (void) errmsg; /* no errors from this method */
if (control_conn && !strcmp(question, "onions/current")) {
onion_list = control_conn->ephemeral_onion_services;
@@ -2839,13 +2850,13 @@ getinfo_helper_onions(control_connection_t *control_conn,
return 0;
}
if (!onion_list || smartlist_len(onion_list) == 0) {
- if (errmsg) {
- *errmsg = "No onion services of the specified type.";
+ if (answer) {
+ *answer = tor_strdup("");
}
- return -1;
- }
- if (answer) {
+ } else {
+ if (answer) {
*answer = smartlist_join_strings(onion_list, "\r\n", 0, NULL);
+ }
}
return 0;
@@ -2924,6 +2935,8 @@ static const getinfo_item_t getinfo_items[] = {
ITEM("config-defaults-file", misc, "Current location of the defaults file."),
ITEM("config-text", misc,
"Return the string that would be written by a saveconf command."),
+ ITEM("config-can-saveconf", misc,
+ "Is it possible to save the configuration to the \"torrc\" file?"),
ITEM("accounting/bytes", accounting,
"Number of bytes read/written so far in the accounting interval."),
ITEM("accounting/bytes-left", accounting,
@@ -3544,24 +3557,9 @@ handle_control_attachstream(control_connection_t *conn, uint32_t len,
}
/* Is this a single hop circuit? */
if (circ && (circuit_get_cpath_len(circ)<2 || hop==1)) {
- const node_t *node = NULL;
- char *exit_digest = NULL;
- if (circ->build_state &&
- circ->build_state->chosen_exit &&
- !tor_digest_is_zero(circ->build_state->chosen_exit->identity_digest)) {
- exit_digest = circ->build_state->chosen_exit->identity_digest;
- node = node_get_by_id(exit_digest);
- }
- /* Do both the client and relay allow one-hop exit circuits? */
- if (!node ||
- !node_allows_single_hop_exits(node) ||
- !get_options()->AllowSingleHopCircuits) {
- connection_write_str_to_buf(
- "551 Can't attach stream to this one-hop circuit.\r\n", conn);
- return 0;
- }
- tor_assert(exit_digest);
- ap_conn->chosen_exit_name = tor_strdup(hex_str(exit_digest, DIGEST_LEN));
+ connection_write_str_to_buf(
+ "551 Can't attach stream to this one-hop circuit.\r\n", conn);
+ return 0;
}
if (circ && hop>0) {
@@ -6516,7 +6514,7 @@ monitor_owning_controller_process(const char *process_spec)
msg);
owning_controller_process_spec = NULL;
tor_cleanup();
- exit(0);
+ exit(1);
}
}
@@ -6719,8 +6717,8 @@ control_event_bootstrap(bootstrap_status_t status, int progress)
* is the connection that caused this problem.
*/
MOCK_IMPL(void,
- control_event_bootstrap_problem, (const char *warn, int reason,
- or_connection_t *or_conn))
+control_event_bootstrap_problem, (const char *warn, int reason,
+ or_connection_t *or_conn))
{
int status = bootstrap_percent;
const char *tag = "", *summary = "";
@@ -6925,6 +6923,11 @@ get_desc_id_from_query(const rend_data_t *rend_data, const char *hsdir_fp)
goto end;
}
+ /* Without a directory fingerprint at this stage, we can't do much. */
+ if (hsdir_fp == NULL) {
+ goto end;
+ }
+
/* OK, we have an onion address so now let's find which descriptor ID
* is the one associated with the HSDir fingerprint. */
for (replica = 0; replica < REND_NUMBER_OF_NON_CONSECUTIVE_REPLICAS;
@@ -7014,10 +7017,9 @@ control_event_hs_descriptor_receive_end(const char *action,
char desc_id_base32[REND_DESC_ID_V2_LEN_BASE32 + 1];
const char *desc_id = NULL;
- if (!action || !id_digest || !rend_data || !onion_address) {
- log_warn(LD_BUG, "Called with action==%p, id_digest==%p, "
- "rend_data==%p, onion_address==%p", action, id_digest,
- rend_data, onion_address);
+ if (!action || !rend_data || !onion_address) {
+ log_warn(LD_BUG, "Called with action==%p, rend_data==%p, "
+ "onion_address==%p", action, rend_data, onion_address);
return;
}
@@ -7040,7 +7042,8 @@ control_event_hs_descriptor_receive_end(const char *action,
rend_hsaddress_str_or_unknown(onion_address),
rend_auth_type_to_string(
TO_REND_DATA_V2(rend_data)->auth_type),
- node_describe_longname_by_id(id_digest),
+ id_digest ?
+ node_describe_longname_by_id(id_digest) : "UNKNOWN",
desc_id_field ? desc_id_field : "",
reason_field ? reason_field : "");
@@ -7120,19 +7123,18 @@ control_event_hs_descriptor_uploaded(const char *id_digest,
id_digest, NULL);
}
-/** Send HS_DESC event to inform controller that query <b>rend_query</b>
- * failed to retrieve hidden service descriptor identified by
- * <b>id_digest</b>. If <b>reason</b> is not NULL, add it to REASON=
- * field.
+/** Send HS_DESC event to inform controller that query <b>rend_data</b>
+ * failed to retrieve hidden service descriptor from directory identified by
+ * <b>id_digest</b>. If NULL, "UNKNOWN" is used. If <b>reason</b> is not NULL,
+ * add it to REASON= field.
*/
void
control_event_hs_descriptor_failed(const rend_data_t *rend_data,
const char *id_digest,
const char *reason)
{
- if (!rend_data || !id_digest) {
- log_warn(LD_BUG, "Called with rend_data==%p, id_digest==%p",
- rend_data, id_digest);
+ if (!rend_data) {
+ log_warn(LD_BUG, "Called with rend_data==%p", rend_data);
return;
}
control_event_hs_descriptor_receive_end("FAILED",
@@ -7140,8 +7142,11 @@ control_event_hs_descriptor_failed(const rend_data_t *rend_data,
rend_data, id_digest, reason);
}
-/** send HS_DESC_CONTENT event after completion of a successful fetch from
- * hs directory. */
+/** 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. */
void
control_event_hs_descriptor_content(const char *onion_address,
const char *desc_id,
@@ -7151,9 +7156,9 @@ control_event_hs_descriptor_content(const char *onion_address,
static const char *event_name = "HS_DESC_CONTENT";
char *esc_content = NULL;
- if (!onion_address || !desc_id || !hsdir_id_digest) {
- log_warn(LD_BUG, "Called with onion_address==%p, desc_id==%p, "
- "hsdir_id_digest==%p", onion_address, desc_id, hsdir_id_digest);
+ if (!onion_address || !desc_id) {
+ log_warn(LD_BUG, "Called with onion_address==%p, desc_id==%p, ",
+ onion_address, desc_id);
return;
}
@@ -7168,7 +7173,9 @@ control_event_hs_descriptor_content(const char *onion_address,
event_name,
rend_hsaddress_str_or_unknown(onion_address),
desc_id,
- node_describe_longname_by_id(hsdir_id_digest),
+ hsdir_id_digest ?
+ node_describe_longname_by_id(hsdir_id_digest) :
+ "UNKNOWN",
esc_content);
tor_free(esc_content);
}
diff --git a/src/or/control.h b/src/or/control.h
index 6330c85571..41a194bfcb 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -262,6 +262,11 @@ STATIC crypto_pk_t *add_onion_helper_keyarg(const char *arg, int discard_pk,
STATIC rend_authorized_client_t *
add_onion_helper_clientauth(const char *arg, int *created, char **err_msg_out);
+STATIC int getinfo_helper_onions(
+ control_connection_t *control_conn,
+ const char *question,
+ char **answer,
+ const char **errmsg);
STATIC void getinfo_helper_downloads_networkstatus(
const char *flavor,
download_status_t **dl_to_emit,
@@ -285,6 +290,10 @@ STATIC int getinfo_helper_downloads(
control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg);
+STATIC int getinfo_helper_dir(
+ control_connection_t *control_conn,
+ const char *question, char **answer,
+ const char **errmsg);
#endif
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index fd6de6ea7c..f5fff2b331 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,8 +11,11 @@
* The multithreading backend for this module is in workqueue.c; this module
* specializes workqueue.c.
*
- * Right now, we only use this for processing onionskins, and invoke it mostly
- * from onion.c.
+ * Right now, we use this infrastructure
+ * <ul><li>for processing onionskins in onion.c
+ * <li>for compressing consensuses in consdiffmgr.c,
+ * <li>and for calculating diffs and compressing them in consdiffmgr.c.
+ * </ul>
**/
#include "or.h"
#include "channel.h"
@@ -89,7 +92,14 @@ cpu_init(void)
event_add(reply_event, NULL);
}
if (!threadpool) {
- threadpool = threadpool_new(get_num_cpus(get_options()),
+ /*
+ In our threadpool implementation, half the threads are permissive and
+ half are strict (when it comes to running lower-priority tasks). So we
+ always make sure we have at least two threads, so that there will be at
+ least one thread of each kind.
+ */
+ const int n_threads = get_num_cpus(get_options()) + 1;
+ threadpool = threadpool_new(n_threads,
replyqueue,
worker_state_new,
worker_state_free,
@@ -475,10 +485,26 @@ queue_pending_tasks(void)
return;
if (assign_onionskin_to_cpuworker(circ, onionskin))
- log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring.");
+ log_info(LD_OR,"assign_to_cpuworker failed. Ignoring.");
}
}
+/** DOCDOC */
+MOCK_IMPL(workqueue_entry_t *,
+cpuworker_queue_work,(workqueue_priority_t priority,
+ workqueue_reply_t (*fn)(void *, void *),
+ void (*reply_fn)(void *),
+ void *arg))
+{
+ tor_assert(threadpool);
+
+ return threadpool_queue_work_priority(threadpool,
+ priority,
+ fn,
+ reply_fn,
+ arg);
+}
+
/** Try to tell a cpuworker to perform the public key operations necessary to
* respond to <b>onionskin</b> for the circuit <b>circ</b>.
*
@@ -531,7 +557,8 @@ assign_onionskin_to_cpuworker(or_circuit_t *circ,
memwipe(&req, 0, sizeof(req));
++total_pending_tasks;
- queue_entry = threadpool_queue_work(threadpool,
+ queue_entry = threadpool_queue_work_priority(threadpool,
+ WQ_PRI_HIGH,
cpuworker_onion_handshake_threadfn,
cpuworker_onion_handshake_replyfn,
job);
diff --git a/src/or/cpuworker.h b/src/or/cpuworker.h
index 62cf0eb164..320de9532f 100644
--- a/src/or/cpuworker.h
+++ b/src/or/cpuworker.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -14,6 +14,14 @@
void cpu_init(void);
void cpuworkers_rotate_keyinfo(void);
+struct workqueue_entry_s;
+enum workqueue_reply_t;
+enum workqueue_priority_t;
+MOCK_DECL(struct workqueue_entry_s *, cpuworker_queue_work, (
+ enum workqueue_priority_t priority,
+ enum workqueue_reply_t (*fn)(void *, void *),
+ void (*reply_fn)(void *),
+ void *arg));
struct create_cell_t;
int assign_onionskin_to_cpuworker(or_circuit_t *circ,
diff --git a/src/or/dircollate.c b/src/or/dircollate.c
index 033a7afe0f..172364c5f5 100644
--- a/src/or/dircollate.c
+++ b/src/or/dircollate.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dircollate.h b/src/or/dircollate.h
index 358c730cbb..52214282b9 100644
--- a/src/or/dircollate.h
+++ b/src/or/dircollate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/directory.c b/src/or/directory.c
index 48d912bd28..f52354356d 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRECTORY_PRIVATE
@@ -13,7 +13,11 @@
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
+#include "conscache.h"
+#include "consdiff.h"
+#include "consdiffmgr.h"
#include "control.h"
+#include "compat.h"
#define DIRECTORY_PRIVATE
#include "directory.h"
#include "dirserv.h"
@@ -62,7 +66,7 @@
* multi-hop circuits for anonymity.
*
* Directory requests are launched by calling
- * directory_initiate_command_rend() or one of its numerous variants. This
+ * directory_initiate_request(). This
* launch the connection, will construct an HTTP request with
* directory_send_command(), send the and wait for a response. The client
* later handles the response with connection_dir_client_reached_eof(),
@@ -97,9 +101,8 @@
* connection_finished_connecting() in connection.c
*/
static void directory_send_command(dir_connection_t *conn,
- int purpose, int direct, const char *resource,
- const char *payload, size_t payload_len,
- time_t if_modified_since);
+ int direct,
+ const directory_request_t *request);
static int body_is_plausible(const char *body, size_t body_len, int purpose);
static char *http_get_header(const char *headers, const char *which);
static void http_set_address_origin(const char *headers, connection_t *conn);
@@ -114,22 +117,10 @@ static void dir_routerdesc_download_failed(smartlist_t *failed,
int was_extrainfo,
int was_descriptor_digests);
static void dir_microdesc_download_failed(smartlist_t *failed,
- int status_code);
-static int client_likes_consensus(networkstatus_t *v, const char *want_url);
-
-static void directory_initiate_command_rend(
- const tor_addr_port_t *or_addr_port,
- const tor_addr_port_t *dir_addr_port,
- const char *digest,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- const rend_data_t *rend_query,
- circuit_guard_state_t *guard_state);
+ int status_code,
+ const char *dir_id);
+static int client_likes_consensus(const struct consensus_cache_entry_t *ent,
+ const char *want_url);
static void connection_dir_close_consensus_fetches(
dir_connection_t *except_this_one, const char *resource);
@@ -141,6 +132,7 @@ static void connection_dir_close_consensus_fetches(
#define ALLOW_DIRECTORY_TIME_SKEW (30*60)
#define X_ADDRESS_HEADER "X-Your-Address-Is: "
+#define X_OR_DIFF_FROM_CONSENSUS_HEADER "X-Or-Diff-From-Consensus: "
/** HTTP cache control: how long do we tell proxies they can cache each
* kind of document we serve? */
@@ -420,11 +412,14 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
} else {
indirection = DIRIND_DIRECT_CONN;
}
- directory_initiate_command_routerstatus(rs, dir_purpose,
- router_purpose,
- indirection,
- NULL, payload, upload_len, 0,
- NULL);
+
+ directory_request_t *req = directory_request_new(dir_purpose);
+ directory_request_set_routerstatus(req, rs);
+ directory_request_set_router_purpose(req, router_purpose);
+ directory_request_set_indirection(req, indirection);
+ directory_request_set_payload(req, payload, upload_len);
+ directory_initiate_request(req);
+ directory_request_free(req);
} SMARTLIST_FOREACH_END(ds);
if (!found) {
char *s = authdir_type_to_string(type);
@@ -469,7 +464,7 @@ directory_pick_generic_dirserver(dirinfo_type_t type, int pds_flags,
log_warn(LD_BUG, "Called when we have UseBridges set.");
if (should_use_directory_guards(options)) {
- const node_t *node = guards_choose_dirguard(guard_state_out);
+ const node_t *node = guards_choose_dirguard(dir_purpose, guard_state_out);
if (node)
rs = node->rs;
} else {
@@ -485,13 +480,94 @@ directory_pick_generic_dirserver(dirinfo_type_t type, int pds_flags,
return rs;
}
+/**
+ * Set the extra fields in <b>req</b> that are used when requesting a
+ * consensus of type <b>resource</b>.
+ *
+ * Right now, these fields are if-modified-since and x-or-diff-from-consensus.
+ */
+static void
+dir_consensus_request_set_additional_headers(directory_request_t *req,
+ const char *resource)
+{
+ time_t if_modified_since = 0;
+ uint8_t or_diff_from[DIGEST256_LEN];
+ int or_diff_from_is_set = 0;
+
+ /* DEFAULT_IF_MODIFIED_SINCE_DELAY is 1/20 of the default consensus
+ * period of 1 hour.
+ */
+ const int DEFAULT_IF_MODIFIED_SINCE_DELAY = 180;
+ const int32_t DEFAULT_TRY_DIFF_FOR_CONSENSUS_NEWER = 72;
+ const int32_t MIN_TRY_DIFF_FOR_CONSENSUS_NEWER = 0;
+ const int32_t MAX_TRY_DIFF_FOR_CONSENSUS_NEWER = 8192;
+ const char TRY_DIFF_FOR_CONSENSUS_NEWER_NAME[] =
+ "try-diff-for-consensus-newer-than";
+
+ int flav = FLAV_NS;
+ if (resource)
+ flav = networkstatus_parse_flavor_name(resource);
+
+ int32_t max_age_for_diff = 3600 *
+ networkstatus_get_param(NULL,
+ TRY_DIFF_FOR_CONSENSUS_NEWER_NAME,
+ DEFAULT_TRY_DIFF_FOR_CONSENSUS_NEWER,
+ MIN_TRY_DIFF_FOR_CONSENSUS_NEWER,
+ MAX_TRY_DIFF_FOR_CONSENSUS_NEWER);
+
+ if (flav != -1) {
+ /* IF we have a parsed consensus of this type, we can do an
+ * if-modified-time based on it. */
+ networkstatus_t *v;
+ v = networkstatus_get_latest_consensus_by_flavor(flav);
+ if (v) {
+ /* In networks with particularly short V3AuthVotingIntervals,
+ * ask for the consensus if it's been modified since half the
+ * V3AuthVotingInterval of the most recent consensus. */
+ time_t ims_delay = DEFAULT_IF_MODIFIED_SINCE_DELAY;
+ if (v->fresh_until > v->valid_after
+ && ims_delay > (v->fresh_until - v->valid_after)/2) {
+ ims_delay = (v->fresh_until - v->valid_after)/2;
+ }
+ if_modified_since = v->valid_after + ims_delay;
+ if (v->valid_after >= approx_time() - max_age_for_diff) {
+ memcpy(or_diff_from, v->digest_sha3_as_signed, DIGEST256_LEN);
+ or_diff_from_is_set = 1;
+ }
+ }
+ } else {
+ /* Otherwise it might be a consensus we don't parse, but which we
+ * do cache. Look at the cached copy, perhaps. */
+ cached_dir_t *cd = dirserv_get_consensus(resource);
+ /* We have no method of determining the voting interval from an
+ * unparsed consensus, so we use the default. */
+ if (cd) {
+ if_modified_since = cd->published + DEFAULT_IF_MODIFIED_SINCE_DELAY;
+ if (cd->published >= approx_time() - max_age_for_diff) {
+ memcpy(or_diff_from, cd->digest_sha3_as_signed, DIGEST256_LEN);
+ or_diff_from_is_set = 1;
+ }
+ }
+ }
+
+ if (if_modified_since > 0)
+ directory_request_set_if_modified_since(req, if_modified_since);
+ if (or_diff_from_is_set) {
+ char hex[HEX_DIGEST256_LEN + 1];
+ base16_encode(hex, sizeof(hex),
+ (const char*)or_diff_from, sizeof(or_diff_from));
+ directory_request_add_header(req, X_OR_DIFF_FROM_CONSENSUS_HEADER, hex);
+ }
+}
+
/** Start a connection to a random running directory server, using
* connection purpose <b>dir_purpose</b>, intending to fetch descriptors
* of purpose <b>router_purpose</b>, and requesting <b>resource</b>.
* Use <b>pds_flags</b> as arguments to router_pick_directory_server()
* or router_pick_trusteddirserver().
*/
-MOCK_IMPL(void, directory_get_from_dirserver, (
+MOCK_IMPL(void,
+directory_get_from_dirserver,(
uint8_t dir_purpose,
uint8_t router_purpose,
const char *resource,
@@ -506,47 +582,10 @@ MOCK_IMPL(void, directory_get_from_dirserver, (
int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose,
resource);
dirinfo_type_t type = dir_fetch_type(dir_purpose, router_purpose, resource);
- time_t if_modified_since = 0;
if (type == NO_DIRINFO)
return;
- if (dir_purpose == DIR_PURPOSE_FETCH_CONSENSUS) {
- int flav = FLAV_NS;
- networkstatus_t *v;
- if (resource)
- flav = networkstatus_parse_flavor_name(resource);
-
- /* DEFAULT_IF_MODIFIED_SINCE_DELAY is 1/20 of the default consensus
- * period of 1 hour.
- */
-#define DEFAULT_IF_MODIFIED_SINCE_DELAY (180)
- if (flav != -1) {
- /* IF we have a parsed consensus of this type, we can do an
- * if-modified-time based on it. */
- v = networkstatus_get_latest_consensus_by_flavor(flav);
- if (v) {
- /* In networks with particularly short V3AuthVotingIntervals,
- * ask for the consensus if it's been modified since half the
- * V3AuthVotingInterval of the most recent consensus. */
- time_t ims_delay = DEFAULT_IF_MODIFIED_SINCE_DELAY;
- if (v->fresh_until > v->valid_after
- && ims_delay > (v->fresh_until - v->valid_after)/2) {
- ims_delay = (v->fresh_until - v->valid_after)/2;
- }
- if_modified_since = v->valid_after + ims_delay;
- }
- } else {
- /* Otherwise it might be a consensus we don't parse, but which we
- * do cache. Look at the cached copy, perhaps. */
- cached_dir_t *cd = dirserv_get_consensus(resource);
- /* We have no method of determining the voting interval from an
- * unparsed consensus, so we use the default. */
- if (cd)
- if_modified_since = cd->published + DEFAULT_IF_MODIFIED_SINCE_DELAY;
- }
- }
-
if (!options->FetchServerDescriptors)
return;
@@ -559,26 +598,26 @@ MOCK_IMPL(void, directory_get_from_dirserver, (
* sort of dir fetch we'll be doing, so it won't return a bridge
* that can't answer our question.
*/
- const node_t *node = guards_choose_dirguard(&guard_state);
+ const node_t *node = guards_choose_dirguard(dir_purpose, &guard_state);
if (node && node->ri) {
/* every bridge has a routerinfo. */
routerinfo_t *ri = node->ri;
/* clients always make OR connections to bridges */
tor_addr_port_t or_ap;
- tor_addr_port_t nil_dir_ap;
+ directory_request_t *req = directory_request_new(dir_purpose);
/* we are willing to use a non-preferred address if we need to */
fascist_firewall_choose_address_node(node, FIREWALL_OR_CONNECTION, 0,
&or_ap);
- tor_addr_make_null(&nil_dir_ap.addr, AF_INET);
- nil_dir_ap.port = 0;
- directory_initiate_command_rend(&or_ap,
- &nil_dir_ap,
- ri->cache_info.identity_digest,
- dir_purpose,
- router_purpose,
- DIRIND_ONEHOP,
- resource, NULL, 0, if_modified_since,
- NULL, guard_state);
+ directory_request_set_or_addr_port(req, &or_ap);
+ directory_request_set_directory_id_digest(req,
+ ri->cache_info.identity_digest);
+ directory_request_set_router_purpose(req, router_purpose);
+ directory_request_set_resource(req, resource);
+ if (dir_purpose == DIR_PURPOSE_FETCH_CONSENSUS)
+ dir_consensus_request_set_additional_headers(req, resource);
+ directory_request_set_guard_state(req, guard_state);
+ directory_initiate_request(req);
+ directory_request_free(req);
} else {
if (guard_state) {
entry_guard_cancel(&guard_state);
@@ -638,12 +677,17 @@ MOCK_IMPL(void, directory_get_from_dirserver, (
if (rs) {
const dir_indirection_t indirection =
get_via_tor ? DIRIND_ANONYMOUS : DIRIND_ONEHOP;
- directory_initiate_command_routerstatus(rs, dir_purpose,
- router_purpose,
- indirection,
- resource, NULL, 0,
- if_modified_since,
- guard_state);
+ directory_request_t *req = directory_request_new(dir_purpose);
+ directory_request_set_routerstatus(req, rs);
+ directory_request_set_router_purpose(req, router_purpose);
+ directory_request_set_indirection(req, indirection);
+ directory_request_set_resource(req, resource);
+ if (dir_purpose == DIR_PURPOSE_FETCH_CONSENSUS)
+ dir_consensus_request_set_additional_headers(req, resource);
+ if (guard_state)
+ directory_request_set_guard_state(req, guard_state);
+ directory_initiate_request(req);
+ directory_request_free(req);
} else {
log_notice(LD_DIR,
"While fetching directory info, "
@@ -669,15 +713,17 @@ directory_get_from_all_authorities(uint8_t dir_purpose,
SMARTLIST_FOREACH_BEGIN(router_get_trusted_dir_servers(),
dir_server_t *, ds) {
- routerstatus_t *rs;
if (router_digest_is_me(ds->digest))
continue;
if (!(ds->type & V3_DIRINFO))
continue;
- rs = &ds->fake_status;
- directory_initiate_command_routerstatus(rs, dir_purpose, router_purpose,
- DIRIND_ONEHOP, resource, NULL,
- 0, 0, NULL);
+ const routerstatus_t *rs = &ds->fake_status;
+ directory_request_t *req = directory_request_new(dir_purpose);
+ directory_request_set_routerstatus(req, rs);
+ directory_request_set_router_purpose(req, router_purpose);
+ directory_request_set_resource(req, resource);
+ directory_initiate_request(req);
+ directory_request_free(req);
} SMARTLIST_FOREACH_END(ds);
}
@@ -777,110 +823,6 @@ directory_choose_address_routerstatus(const routerstatus_t *status,
return 0;
}
-/** Same as directory_initiate_command_routerstatus(), but accepts
- * rendezvous data to fetch a hidden service descriptor. */
-void
-directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- const rend_data_t *rend_query,
- circuit_guard_state_t *guard_state)
-{
- const or_options_t *options = get_options();
- const node_t *node;
- tor_addr_port_t use_or_ap, use_dir_ap;
- const int anonymized_connection = dirind_is_anon(indirection);
-
- tor_assert(status != NULL);
-
- node = node_get_by_id(status->identity_digest);
-
- /* XXX The below check is wrong: !node means it's not in the consensus,
- * but we haven't checked if we have a descriptor for it -- and also,
- * we only care about the descriptor if it's a begindir-style anonymized
- * connection. */
- if (!node && anonymized_connection) {
- log_info(LD_DIR, "Not sending anonymized request to directory '%s'; we "
- "don't have its router descriptor.",
- routerstatus_describe(status));
- return;
- }
-
- if (options->ExcludeNodes && options->StrictNodes &&
- routerset_contains_routerstatus(options->ExcludeNodes, status, -1)) {
- log_warn(LD_DIR, "Wanted to contact directory mirror %s for %s, but "
- "it's in our ExcludedNodes list and StrictNodes is set. "
- "Skipping. This choice might make your Tor not work.",
- routerstatus_describe(status),
- dir_conn_purpose_to_string(dir_purpose));
- return;
- }
-
- /* At this point, if we are a client making a direct connection to a
- * directory server, we have selected a server that has at least one address
- * allowed by ClientUseIPv4/6 and Reachable{"",OR,Dir}Addresses. This
- * selection uses the preference in ClientPreferIPv6{OR,Dir}Port, if
- * possible. (If UseBridges is set, clients always use IPv6, and prefer it
- * by default.)
- *
- * Now choose an address that we can use to connect to the directory server.
- */
- if (directory_choose_address_routerstatus(status, indirection, &use_or_ap,
- &use_dir_ap) < 0) {
- return;
- }
-
- /* We don't retry the alternate OR/Dir address for the same directory if
- * the address we choose fails (#6772).
- * Instead, we'll retry another directory on failure. */
-
- directory_initiate_command_rend(&use_or_ap, &use_dir_ap,
- status->identity_digest,
- dir_purpose, router_purpose,
- indirection, resource,
- payload, payload_len, if_modified_since,
- rend_query,
- guard_state);
-}
-
-/** Launch a new connection to the directory server <b>status</b> to
- * upload or download a server or rendezvous
- * descriptor. <b>dir_purpose</b> determines what
- * kind of directory connection we're launching, and must be one of
- * DIR_PURPOSE_{FETCH|UPLOAD}_{DIR|RENDDESC_V2}. <b>router_purpose</b>
- * specifies the descriptor purposes we have in mind (currently only
- * used for FETCH_DIR).
- *
- * When uploading, <b>payload</b> and <b>payload_len</b> determine the content
- * of the HTTP post. Otherwise, <b>payload</b> should be NULL.
- *
- * When fetching a rendezvous descriptor, <b>resource</b> is the service ID we
- * want to fetch.
- */
-MOCK_IMPL(void, directory_initiate_command_routerstatus,
- (const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- circuit_guard_state_t *guard_state))
-{
- directory_initiate_command_routerstatus_rend(status, dir_purpose,
- router_purpose,
- indirection, resource,
- payload, payload_len,
- if_modified_since, NULL,
- guard_state);
-}
-
/** Return true iff <b>conn</b> is the client side of a directory connection
* we launched to ourself in order to determine the reachability of our
* dir_port. */
@@ -1064,6 +1006,47 @@ directory_must_use_begindir(const or_options_t *options)
return !public_server_mode(options);
}
+struct directory_request_t {
+ /**
+ * These fields specify which directory we're contacting. Routerstatus,
+ * if present, overrides the other fields.
+ *
+ * @{ */
+ tor_addr_port_t or_addr_port;
+ tor_addr_port_t dir_addr_port;
+ char digest[DIGEST_LEN];
+
+ const routerstatus_t *routerstatus;
+ /** @} */
+ /** One of DIR_PURPOSE_* other than DIR_PURPOSE_SERVER. Describes what
+ * kind of operation we'll be doing (upload/download), and of what kind
+ * of document. */
+ uint8_t dir_purpose;
+ /** One of ROUTER_PURPOSE_*; used for uploads and downloads of routerinfo
+ * and extrainfo docs. */
+ uint8_t router_purpose;
+ /** Enum: determines whether to anonymize, and whether to use dirport or
+ * orport. */
+ dir_indirection_t indirection;
+ /** Alias to the variable part of the URL for this request */
+ const char *resource;
+ /** Alias to the payload to upload (if any) */
+ const char *payload;
+ /** Number of bytes to upload from payload</b> */
+ size_t payload_len;
+ /** Value to send in an if-modified-since header, or 0 for none. */
+ time_t if_modified_since;
+ /** Hidden-service-specific information */
+ const rend_data_t *rend_query;
+ /** Extra headers to append to the request */
+ config_line_t *additional_headers;
+ /** */
+ /** Used internally to directory.c: gets informed when the attempt to
+ * connect to the directory succeeds or fails, if that attempt bears on the
+ * directory's usability as a directory guard. */
+ circuit_guard_state_t *guard_state;
+};
+
/** Evaluate the situation and decide if we should use an encrypted
* "begindir-style" connection for this directory request.
* 0) If there is no DirPort, yes.
@@ -1077,14 +1060,16 @@ directory_must_use_begindir(const or_options_t *options)
*/
static int
directory_command_should_use_begindir(const or_options_t *options,
- const tor_addr_t *or_addr, int or_port,
- const tor_addr_t *dir_addr, int dir_port,
- uint8_t router_purpose,
- dir_indirection_t indirection,
+ const directory_request_t *req,
const char **reason)
{
- (void) router_purpose;
- (void) dir_addr;
+ const tor_addr_t *or_addr = &req->or_addr_port.addr;
+ //const tor_addr_t *dir_addr = &req->dir_addr_port.addr;
+ const int or_port = req->or_addr_port.port;
+ const int dir_port = req->dir_addr_port.port;
+
+ const dir_indirection_t indirection = req->indirection;
+
tor_assert(reason);
*reason = NULL;
@@ -1124,70 +1109,290 @@ directory_command_should_use_begindir(const or_options_t *options,
return 1;
}
-/** Helper for directory_initiate_command_rend: send the
- * command to a server whose OR address/port is <b>or_addr</b>/<b>or_port</b>,
- * whose directory address/port is <b>dir_addr</b>/<b>dir_port</b>, whose
- * identity key digest is <b>digest</b>, with purposes <b>dir_purpose</b> and
- * <b>router_purpose</b>, making an (in)direct connection as specified in
- * <b>indirection</b>, with command <b>resource</b>, <b>payload</b> of
- * <b>payload_len</b>, and asking for a result only <b>if_modified_since</b>.
- * If <b>guard_state</b> is set, assign it to the directory circuit.
+/**
+ * Create and return a new directory_request_t with purpose
+ * <b>dir_purpose</b>.
+ */
+directory_request_t *
+directory_request_new(uint8_t dir_purpose)
+{
+ tor_assert(dir_purpose >= DIR_PURPOSE_MIN_);
+ tor_assert(dir_purpose <= DIR_PURPOSE_MAX_);
+ tor_assert(dir_purpose != DIR_PURPOSE_SERVER);
+ tor_assert(dir_purpose != DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2);
+
+ directory_request_t *result = tor_malloc_zero(sizeof(*result));
+ tor_addr_make_null(&result->or_addr_port.addr, AF_INET);
+ result->or_addr_port.port = 0;
+ tor_addr_make_null(&result->dir_addr_port.addr, AF_INET);
+ result->dir_addr_port.port = 0;
+ result->dir_purpose = dir_purpose;
+ result->router_purpose = ROUTER_PURPOSE_GENERAL;
+ result->indirection = DIRIND_ONEHOP;
+ return result;
+}
+/**
+ * Release all resources held by <b>req</b>.
+ */
+void
+directory_request_free(directory_request_t *req)
+{
+ if (req == NULL)
+ return;
+ config_free_lines(req->additional_headers);
+ tor_free(req);
+}
+/**
+ * Set the address and OR port to use for this directory request. If there is
+ * no OR port, we'll have to connect over the dirport. (If there are both,
+ * the indirection setting determins which to use.)
+ */
+void
+directory_request_set_or_addr_port(directory_request_t *req,
+ const tor_addr_port_t *p)
+{
+ memcpy(&req->or_addr_port, p, sizeof(*p));
+}
+/**
+ * Set the address and dirport to use for this directory request. If there
+ * is no dirport, we'll have to connect over the OR port. (If there are both,
+ * the indirection setting determins which to use.)
+ */
+void
+directory_request_set_dir_addr_port(directory_request_t *req,
+ const tor_addr_port_t *p)
+{
+ memcpy(&req->dir_addr_port, p, sizeof(*p));
+}
+/**
+ * Set the RSA identity digest of the directory to use for this directory
+ * request.
+ */
+void
+directory_request_set_directory_id_digest(directory_request_t *req,
+ const char *digest)
+{
+ memcpy(req->digest, digest, DIGEST_LEN);
+}
+/**
+ * Set the router purpose associated with uploaded and downloaded router
+ * descriptors and extrainfo documents in this directory request. The purpose
+ * must be one of ROUTER_PURPOSE_GENERAL (the default) or
+ * ROUTER_PURPOSE_BRIDGE.
+ */
+void
+directory_request_set_router_purpose(directory_request_t *req,
+ uint8_t router_purpose)
+{
+ tor_assert(router_purpose == ROUTER_PURPOSE_GENERAL ||
+ router_purpose == ROUTER_PURPOSE_BRIDGE);
+ // assert that it actually makes sense to set this purpose, given
+ // the dir_purpose.
+ req->router_purpose = router_purpose;
+}
+/**
+ * Set the indirection to be used for the directory request. The indirection
+ * parameter configures whether to connect to a DirPort or ORPort, and whether
+ * to anonymize the connection. DIRIND_ONEHOP (use ORPort, don't anonymize)
+ * is the default. See dir_indirection_t for more information.
+ */
+void
+directory_request_set_indirection(directory_request_t *req,
+ dir_indirection_t indirection)
+{
+ req->indirection = indirection;
+}
+
+/**
+ * Set a pointer to the resource to request from a directory. Different
+ * request types use resources to indicate different components of their URL.
+ * Note that only an alias to <b>resource</b> is stored, so the
+ * <b>resource</b> must outlive the request.
*/
void
-directory_initiate_command(const tor_addr_t *or_addr, uint16_t or_port,
- const tor_addr_t *dir_addr, uint16_t dir_port,
- const char *digest,
- uint8_t dir_purpose, uint8_t router_purpose,
- dir_indirection_t indirection, const char *resource,
- const char *payload, size_t payload_len,
- time_t if_modified_since,
- circuit_guard_state_t *guard_state)
+directory_request_set_resource(directory_request_t *req,
+ const char *resource)
{
- tor_addr_port_t or_ap, dir_ap;
+ req->resource = resource;
+}
+/**
+ * Set a pointer to the payload to include with this directory request, along
+ * with its length. Note that only an alias to <b>payload</b> is stored, so
+ * the <b>payload</b> must outlive the request.
+ */
+void
+directory_request_set_payload(directory_request_t *req,
+ const char *payload,
+ size_t payload_len)
+{
+ tor_assert(DIR_PURPOSE_IS_UPLOAD(req->dir_purpose));
- /* Use the null tor_addr and 0 port if the address or port isn't valid. */
- if (tor_addr_port_is_valid(or_addr, or_port, 0)) {
- tor_addr_copy(&or_ap.addr, or_addr);
- or_ap.port = or_port;
- } else {
- /* the family doesn't matter here, so make it IPv4 */
- tor_addr_make_null(&or_ap.addr, AF_INET);
- or_ap.port = or_port = 0;
+ req->payload = payload;
+ req->payload_len = payload_len;
+}
+/**
+ * Set an if-modified-since date to send along with the request. The
+ * default is 0 (meaning, send no if-modified-since header).
+ */
+void
+directory_request_set_if_modified_since(directory_request_t *req,
+ time_t if_modified_since)
+{
+ req->if_modified_since = if_modified_since;
+}
+
+/** Include a header of name <b>key</b> with content <b>val</b> in the
+ * request. Neither may include newlines or other odd characters. Their
+ * ordering is not currently guaranteed.
+ *
+ * Note that, as elsewhere in this module, header keys include a trailing
+ * colon and space.
+ */
+void
+directory_request_add_header(directory_request_t *req,
+ const char *key,
+ const char *val)
+{
+ config_line_prepend(&req->additional_headers, key, val);
+}
+/**
+ * Set an object containing HS data to be associated with this request. Note
+ * that only an alias to <b>query</b> is stored, so the <b>query</b> object
+ * must outlive the request.
+ */
+void
+directory_request_set_rend_query(directory_request_t *req,
+ const rend_data_t *query)
+{
+ if (query) {
+ tor_assert(req->dir_purpose == DIR_PURPOSE_FETCH_RENDDESC_V2 ||
+ req->dir_purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2);
}
+ req->rend_query = query;
+}
+/** Set a static circuit_guard_state_t object to affliate with the request in
+ * <b>req</b>. This object will receive notification when the attempt to
+ * connect to the guard either succeeds or fails. */
+void
+directory_request_set_guard_state(directory_request_t *req,
+ circuit_guard_state_t *state)
+{
+ req->guard_state = state;
+}
- if (tor_addr_port_is_valid(dir_addr, dir_port, 0)) {
- tor_addr_copy(&dir_ap.addr, dir_addr);
- dir_ap.port = dir_port;
- } else {
- /* the family doesn't matter here, so make it IPv4 */
- tor_addr_make_null(&dir_ap.addr, AF_INET);
- dir_ap.port = dir_port = 0;
+/**
+ * Internal: Return true if any information for contacting the directory in
+ * <b>req</b> has been set, other than by the routerstatus. */
+static int
+directory_request_dir_contact_info_specified(const directory_request_t *req)
+{
+ /* We only check for ports here, since we don't use an addr unless the port
+ * is set */
+ return (req->or_addr_port.port ||
+ req->dir_addr_port.port ||
+ ! tor_digest_is_zero(req->digest));
+}
+
+/**
+ * Set the routerstatus to use for the directory associated with this
+ * request. If this option is set, then no other function to set the
+ * directory's address or identity should be called.
+ */
+void
+directory_request_set_routerstatus(directory_request_t *req,
+ const routerstatus_t *status)
+{
+ req->routerstatus = status;
+}
+/**
+ * Helper: update the addresses, ports, and identities in <b>req</b>
+ * from the routerstatus object in <b>req</b>. Return 0 on success.
+ * On failure, warn and return -1.
+ */
+static int
+directory_request_set_dir_from_routerstatus(directory_request_t *req)
+
+{
+ const routerstatus_t *status = req->routerstatus;
+ if (BUG(status == NULL))
+ return -1;
+ const or_options_t *options = get_options();
+ const node_t *node;
+ tor_addr_port_t use_or_ap, use_dir_ap;
+ const int anonymized_connection = dirind_is_anon(req->indirection);
+
+ tor_assert(status != NULL);
+
+ node = node_get_by_id(status->identity_digest);
+
+ /* XXX The below check is wrong: !node means it's not in the consensus,
+ * but we haven't checked if we have a descriptor for it -- and also,
+ * we only care about the descriptor if it's a begindir-style anonymized
+ * connection. */
+ if (!node && anonymized_connection) {
+ log_info(LD_DIR, "Not sending anonymized request to directory '%s'; we "
+ "don't have its router descriptor.",
+ routerstatus_describe(status));
+ return -1;
+ }
+
+ if (options->ExcludeNodes && options->StrictNodes &&
+ routerset_contains_routerstatus(options->ExcludeNodes, status, -1)) {
+ log_warn(LD_DIR, "Wanted to contact directory mirror %s for %s, but "
+ "it's in our ExcludedNodes list and StrictNodes is set. "
+ "Skipping. This choice might make your Tor not work.",
+ routerstatus_describe(status),
+ dir_conn_purpose_to_string(req->dir_purpose));
+ return -1;
}
- directory_initiate_command_rend(&or_ap, &dir_ap,
- digest, dir_purpose,
- router_purpose, indirection,
- resource, payload, payload_len,
- if_modified_since, NULL, guard_state);
+ /* At this point, if we are a client making a direct connection to a
+ * directory server, we have selected a server that has at least one address
+ * allowed by ClientUseIPv4/6 and Reachable{"",OR,Dir}Addresses. This
+ * selection uses the preference in ClientPreferIPv6{OR,Dir}Port, if
+ * possible. (If UseBridges is set, clients always use IPv6, and prefer it
+ * by default.)
+ *
+ * Now choose an address that we can use to connect to the directory server.
+ */
+ if (directory_choose_address_routerstatus(status,
+ req->indirection, &use_or_ap,
+ &use_dir_ap) < 0) {
+ return -1;
+ }
+
+ directory_request_set_or_addr_port(req, &use_or_ap);
+ directory_request_set_dir_addr_port(req, &use_dir_ap);
+ directory_request_set_directory_id_digest(req, status->identity_digest);
+ return 0;
}
-/** Same as directory_initiate_command(), but accepts rendezvous data to
- * fetch a hidden service descriptor, and takes its address & port arguments
- * as tor_addr_port_t. */
-static void
-directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
- const tor_addr_port_t *dir_addr_port,
- const char *digest,
- uint8_t dir_purpose, uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload, size_t payload_len,
- time_t if_modified_since,
- const rend_data_t *rend_query,
- circuit_guard_state_t *guard_state)
+/**
+ * Launch the provided directory request, configured in <b>request</b>.
+ * After this function is called, you can free <b>request</b>.
+ */
+MOCK_IMPL(void,
+directory_initiate_request,(directory_request_t *request))
{
- tor_assert(or_addr_port);
- tor_assert(dir_addr_port);
+ tor_assert(request);
+ if (request->routerstatus) {
+ tor_assert_nonfatal(
+ ! directory_request_dir_contact_info_specified(request));
+ if (directory_request_set_dir_from_routerstatus(request) < 0) {
+ return;
+ }
+ }
+
+ const tor_addr_port_t *or_addr_port = &request->or_addr_port;
+ const tor_addr_port_t *dir_addr_port = &request->dir_addr_port;
+ const char *digest = request->digest;
+ const uint8_t dir_purpose = request->dir_purpose;
+ const uint8_t router_purpose = request->router_purpose;
+ const dir_indirection_t indirection = request->indirection;
+ const char *resource = request->resource;
+ const rend_data_t *rend_query = request->rend_query;
+ circuit_guard_state_t *guard_state = request->guard_state;
+
tor_assert(or_addr_port->port || dir_addr_port->port);
tor_assert(digest);
@@ -1197,11 +1402,9 @@ directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
const char *begindir_reason = NULL;
/* Should the connection be to a relay's OR port (and inside that we will
* send our directory request)? */
- const int use_begindir = directory_command_should_use_begindir(options,
- &or_addr_port->addr, or_addr_port->port,
- &dir_addr_port->addr, dir_addr_port->port,
- router_purpose, indirection,
- &begindir_reason);
+ const int use_begindir =
+ directory_command_should_use_begindir(options, request, &begindir_reason);
+
/* Will the connection go via a three-hop Tor circuit? Note that this
* is separate from whether it will use_begindir. */
const int anonymized_connection = dirind_is_anon(indirection);
@@ -1302,9 +1505,7 @@ directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
/* fall through */
case 0:
/* queue the command on the outbuf */
- directory_send_command(conn, dir_purpose, 1, resource,
- payload, payload_len,
- if_modified_since);
+ directory_send_command(conn, 1, request);
connection_watch_events(TO_CONN(conn), READ_EVENT | WRITE_EVENT);
/* writable indicates finish, readable indicates broken link,
error indicates broken link in windowsland. */
@@ -1358,9 +1559,7 @@ directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
}
conn->base_.state = DIR_CONN_STATE_CLIENT_SENDING;
/* queue the command on the outbuf */
- directory_send_command(conn, dir_purpose, 0, resource,
- payload, payload_len,
- if_modified_since);
+ directory_send_command(conn, 0, request);
connection_watch_events(TO_CONN(conn), READ_EVENT|WRITE_EVENT);
connection_start_reading(ENTRY_TO_CONN(linked_conn));
@@ -1370,7 +1569,7 @@ directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
/** Return true iff anything we say on <b>conn</b> is being encrypted before
* we send it to the client/server. */
int
-connection_dir_is_encrypted(dir_connection_t *conn)
+connection_dir_is_encrypted(const dir_connection_t *conn)
{
/* Right now it's sufficient to see if conn is or has been linked, since
* the only thing it could be linked to is an edge connection on a
@@ -1463,15 +1662,23 @@ copy_ipv6_address(char* destination, const char* source, size_t len,
}
}
-/** Queue an appropriate HTTP command on conn-\>outbuf. The other args
- * are as in directory_initiate_command().
+/** Queue an appropriate HTTP command for <b>request</b> on
+ * <b>conn</b>-\>outbuf. If <b>direct</b> is true, we're making a
+ * non-anonymized connection to the dirport.
*/
static void
directory_send_command(dir_connection_t *conn,
- int purpose, int direct, const char *resource,
- const char *payload, size_t payload_len,
- time_t if_modified_since)
+ const int direct,
+ const directory_request_t *req)
{
+ tor_assert(req);
+ const int purpose = req->dir_purpose;
+ const char *resource = req->resource;
+ const char *payload = req->payload;
+ const size_t payload_len = req->payload_len;
+ const time_t if_modified_since = req->if_modified_since;
+ const int anonymized_connection = dirind_is_anon(req->indirection);
+
char proxystring[256];
char hoststring[128];
/* NEEDS to be the same size hoststring.
@@ -1479,7 +1686,10 @@ directory_send_command(dir_connection_t *conn,
char decorated_address[128];
smartlist_t *headers = smartlist_new();
char *url;
+ char *accept_encoding;
+ size_t url_len;
char request[8192];
+ size_t request_len, total_request_len = 0;
const char *httpcommand = NULL;
tor_assert(conn);
@@ -1533,6 +1743,22 @@ directory_send_command(dir_connection_t *conn,
proxystring[0] = 0;
}
+ if (! anonymized_connection) {
+ /* Add Accept-Encoding. */
+ accept_encoding = accept_encoding_header();
+ smartlist_add_asprintf(headers, "Accept-Encoding: %s\r\n",
+ accept_encoding);
+ tor_free(accept_encoding);
+ }
+
+ /* Add additional headers, if any */
+ {
+ config_line_t *h;
+ for (h = req->additional_headers; h; h = h->next) {
+ smartlist_add_asprintf(headers, "%s%s\r\n", h->key, h->value);
+ }
+ }
+
switch (purpose) {
case DIR_PURPOSE_FETCH_CONSENSUS:
/* resource is optional. If present, it's a flavor name */
@@ -1625,8 +1851,14 @@ directory_send_command(dir_connection_t *conn,
}
tor_snprintf(request, sizeof(request), "%s %s", httpcommand, proxystring);
- connection_write_to_buf(request, strlen(request), TO_CONN(conn));
- connection_write_to_buf(url, strlen(url), TO_CONN(conn));
+
+ request_len = strlen(request);
+ total_request_len += request_len;
+ connection_write_to_buf(request, request_len, TO_CONN(conn));
+
+ url_len = strlen(url);
+ total_request_len += url_len;
+ connection_write_to_buf(url, url_len, TO_CONN(conn));
tor_free(url);
if (!strcmp(httpcommand, "POST") || payload) {
@@ -1641,15 +1873,27 @@ directory_send_command(dir_connection_t *conn,
tor_free(header);
}
- connection_write_to_buf(request, strlen(request), TO_CONN(conn));
+ request_len = strlen(request);
+ total_request_len += request_len;
+ connection_write_to_buf(request, request_len, TO_CONN(conn));
if (payload) {
/* then send the payload afterwards too */
connection_write_to_buf(payload, payload_len, TO_CONN(conn));
+ total_request_len += payload_len;
}
SMARTLIST_FOREACH(headers, char *, h, tor_free(h));
smartlist_free(headers);
+
+ log_debug(LD_DIR,
+ "Sent request to directory server '%s:%d': "
+ "(purpose: %d, request size: " U64_FORMAT ", "
+ "payload size: " U64_FORMAT ")",
+ conn->base_.address, conn->base_.port,
+ conn->base_.purpose,
+ U64_PRINTF_ARG(total_request_len),
+ U64_PRINTF_ARG(payload ? payload_len : 0));
}
/** Parse an HTTP request string <b>headers</b> of the form
@@ -1834,16 +2078,15 @@ parse_http_response(const char *headers, int *code, time_t *date,
if (!strcmpstart(s, "Content-Encoding: ")) {
enc = s+18; break;
});
- if (!enc || !strcmp(enc, "identity")) {
+
+ if (enc == NULL)
*compression = NO_METHOD;
- } else if (!strcmp(enc, "deflate") || !strcmp(enc, "x-deflate")) {
- *compression = ZLIB_METHOD;
- } else if (!strcmp(enc, "gzip") || !strcmp(enc, "x-gzip")) {
- *compression = GZIP_METHOD;
- } else {
- log_info(LD_HTTP, "Unrecognized content encoding: %s. Trying to deal.",
- escaped(enc));
- *compression = UNKNOWN_METHOD;
+ else {
+ *compression = compression_method_get_by_name(enc);
+
+ if (*compression == UNKNOWN_METHOD)
+ log_info(LD_HTTP, "Unrecognized content encoding: %s. Trying to deal.",
+ escaped(enc));
}
}
SMARTLIST_FOREACH(parsed_headers, char *, s, tor_free(s));
@@ -1916,6 +2159,154 @@ load_downloaded_routers(const char *body, smartlist_t *which,
return added;
}
+/** A structure to hold arguments passed into each directory response
+ * handler */
+typedef struct response_handler_args_t {
+ int status_code;
+ const char *reason;
+ const char *body;
+ size_t body_len;
+ const char *headers;
+} response_handler_args_t;
+
+static int handle_response_fetch_consensus(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_fetch_certificate(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_fetch_status_vote(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_fetch_detached_signatures(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_fetch_desc(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_upload_dir(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_upload_vote(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_upload_signatures(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_fetch_renddesc_v2(dir_connection_t *,
+ const response_handler_args_t *);
+static int handle_response_upload_renddesc_v2(dir_connection_t *,
+ const response_handler_args_t *);
+
+static int
+dir_client_decompress_response_body(char **bodyp, size_t *bodylenp,
+ dir_connection_t *conn,
+ compress_method_t compression,
+ int anonymized_connection)
+{
+ int rv = 0;
+ const char *body = *bodyp;
+ size_t body_len = *bodylenp;
+ int allow_partial = (conn->base_.purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
+ conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO ||
+ conn->base_.purpose == DIR_PURPOSE_FETCH_MICRODESC);
+
+ int plausible = body_is_plausible(body, body_len, conn->base_.purpose);
+
+ if (plausible && compression == NO_METHOD) {
+ return 0;
+ }
+
+ int severity = LOG_DEBUG;
+ char *new_body = NULL;
+ size_t new_len = 0;
+ const char *description1, *description2;
+ int want_to_try_both = 0;
+ int tried_both = 0;
+ compress_method_t guessed = detect_compression_method(body, body_len);
+
+ description1 = compression_method_get_human_name(compression);
+
+ if (BUG(description1 == NULL))
+ description1 = compression_method_get_human_name(UNKNOWN_METHOD);
+
+ if (guessed == UNKNOWN_METHOD && !plausible)
+ description2 = "confusing binary junk";
+ else
+ description2 = compression_method_get_human_name(guessed);
+
+ /* Tell the user if we don't believe what we're told about compression.*/
+ want_to_try_both = (compression == UNKNOWN_METHOD ||
+ guessed != compression);
+ if (want_to_try_both) {
+ severity = LOG_PROTOCOL_WARN;
+ }
+
+ tor_log(severity, LD_HTTP,
+ "HTTP body from server '%s:%d' was labeled as %s, "
+ "%s it seems to be %s.%s",
+ conn->base_.address, conn->base_.port, description1,
+ guessed != compression?"but":"and",
+ description2,
+ (compression>0 && guessed>0 && want_to_try_both)?
+ " Trying both.":"");
+
+ /* Try declared compression first if we can.
+ * tor_compress_supports_method() also returns true for NO_METHOD.
+ * Ensure that the server is not sending us data compressed using a
+ * compression method that is not allowed for anonymous connections. */
+ if (anonymized_connection &&
+ ! allowed_anonymous_connection_compression_method(compression)) {
+ warn_disallowed_anonymous_compression_method(compression);
+ rv = -1;
+ goto done;
+ }
+
+ if (tor_compress_supports_method(compression)) {
+ tor_uncompress(&new_body, &new_len, body, body_len, compression,
+ !allow_partial, LOG_PROTOCOL_WARN);
+ if (new_body) {
+ /* We succeeded with the declared compression method. Great! */
+ rv = 0;
+ goto done;
+ }
+ }
+
+ /* Okay, if that didn't work, and we think that it was compressed
+ * differently, try that. */
+ if (anonymized_connection &&
+ ! allowed_anonymous_connection_compression_method(guessed)) {
+ warn_disallowed_anonymous_compression_method(guessed);
+ rv = -1;
+ goto done;
+ }
+
+ if (tor_compress_supports_method(guessed) &&
+ compression != guessed) {
+ tor_uncompress(&new_body, &new_len, body, body_len, guessed,
+ !allow_partial, LOG_INFO);
+ tried_both = 1;
+ }
+ /* If we're pretty sure that we have a compressed directory, and
+ * we didn't manage to uncompress it, then warn and bail. */
+ if (!plausible && !new_body) {
+ log_fn(LOG_PROTOCOL_WARN, LD_HTTP,
+ "Unable to decompress HTTP body (tried %s%s%s, server '%s:%d').",
+ description1,
+ tried_both?" and ":"",
+ tried_both?description2:"",
+ conn->base_.address, conn->base_.port);
+ rv = -1;
+ goto done;
+ }
+
+ done:
+ if (new_body) {
+ if (rv == 0) {
+ /* success! */
+ tor_free(*bodyp);
+ *bodyp = new_body;
+ *bodylenp = new_len;
+ } else {
+ tor_free(new_body);
+ }
+ }
+
+ return rv;
+}
+
/** We are a client, and we've finished reading the server's
* response. Parse it and act appropriately.
*
@@ -1928,21 +2319,26 @@ load_downloaded_routers(const char *body, smartlist_t *which,
static int
connection_dir_client_reached_eof(dir_connection_t *conn)
{
- char *body;
- char *headers;
+ char *body = NULL;
+ char *headers = NULL;
char *reason = NULL;
size_t body_len = 0;
int status_code;
time_t date_header = 0;
long apparent_skew;
compress_method_t compression;
- int plausible;
int skewed = 0;
+ int rv;
int allow_partial = (conn->base_.purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO ||
conn->base_.purpose == DIR_PURPOSE_FETCH_MICRODESC);
- time_t now = time(NULL);
- int src_code;
+ size_t received_bytes;
+ const int anonymized_connection =
+ purpose_needs_anonymity(conn->base_.purpose,
+ conn->router_purpose,
+ conn->requested_resource);
+
+ received_bytes = connection_get_inbuf_len(TO_CONN(conn));
switch (connection_fetch_from_buf_http(TO_CONN(conn),
&headers, MAX_HEADERS_SIZE,
@@ -1964,17 +2360,26 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
&compression, &reason) < 0) {
log_warn(LD_HTTP,"Unparseable headers (server '%s:%d'). Closing.",
conn->base_.address, conn->base_.port);
- tor_free(body); tor_free(headers);
- return -1;
+
+ rv = -1;
+ goto done;
}
if (!reason) reason = tor_strdup("[no reason given]");
- log_debug(LD_DIR,
+ tor_log(LOG_DEBUG, LD_DIR,
"Received response from directory server '%s:%d': %d %s "
- "(purpose: %d)",
+ "(purpose: %d, response size: " U64_FORMAT
+#ifdef MEASUREMENTS_21206
+ ", data cells received: %d, data cells sent: %d"
+#endif
+ ", compression: %d)",
conn->base_.address, conn->base_.port, status_code,
- escaped(reason),
- conn->base_.purpose);
+ escaped(reason), conn->base_.purpose,
+ U64_PRINTF_ARG(received_bytes),
+#ifdef MEASUREMENTS_21206
+ conn->data_cells_received, conn->data_cells_sent,
+#endif
+ compression);
if (conn->guard_state) {
/* we count the connection as successful once we can read from it. We do
@@ -2025,539 +2430,754 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
"'%s:%d'. I'll try again soon.",
status_code, escaped(reason), conn->base_.address,
conn->base_.port);
+ time_t now = approx_time();
if ((rs = router_get_mutable_consensus_status_by_id(id_digest)))
rs->last_dir_503_at = now;
if ((ds = router_get_fallback_dirserver_by_digest(id_digest)))
ds->fake_status.last_dir_503_at = now;
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
+ rv = -1;
+ goto done;
}
- plausible = body_is_plausible(body, body_len, conn->base_.purpose);
- if (compression != NO_METHOD || !plausible) {
- char *new_body = NULL;
- size_t new_len = 0;
- compress_method_t guessed = detect_compression_method(body, body_len);
- if (compression == UNKNOWN_METHOD || guessed != compression) {
- /* Tell the user if we don't believe what we're told about compression.*/
- const char *description1, *description2;
- if (compression == ZLIB_METHOD)
- description1 = "as deflated";
- else if (compression == GZIP_METHOD)
- description1 = "as gzipped";
- else if (compression == NO_METHOD)
- description1 = "as uncompressed";
- else
- description1 = "with an unknown Content-Encoding";
- if (guessed == ZLIB_METHOD)
- description2 = "deflated";
- else if (guessed == GZIP_METHOD)
- description2 = "gzipped";
- else if (!plausible)
- description2 = "confusing binary junk";
- else
- description2 = "uncompressed";
+ if (dir_client_decompress_response_body(&body, &body_len,
+ conn, compression, anonymized_connection) < 0) {
+ rv = -1;
+ goto done;
+ }
- log_info(LD_HTTP, "HTTP body from server '%s:%d' was labeled %s, "
- "but it seems to be %s.%s",
- conn->base_.address, conn->base_.port, description1,
- description2,
- (compression>0 && guessed>0)?" Trying both.":"");
- }
- /* Try declared compression first if we can. */
- if (compression == GZIP_METHOD || compression == ZLIB_METHOD)
- tor_gzip_uncompress(&new_body, &new_len, body, body_len, compression,
- !allow_partial, LOG_PROTOCOL_WARN);
- /* Okay, if that didn't work, and we think that it was compressed
- * differently, try that. */
- if (!new_body &&
- (guessed == GZIP_METHOD || guessed == ZLIB_METHOD) &&
- compression != guessed)
- tor_gzip_uncompress(&new_body, &new_len, body, body_len, guessed,
- !allow_partial, LOG_PROTOCOL_WARN);
- /* If we're pretty sure that we have a compressed directory, and
- * we didn't manage to uncompress it, then warn and bail. */
- if (!plausible && !new_body) {
- log_fn(LOG_PROTOCOL_WARN, LD_HTTP,
- "Unable to decompress HTTP body (server '%s:%d').",
- conn->base_.address, conn->base_.port);
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
- }
- if (new_body) {
- tor_free(body);
- body = new_body;
- body_len = new_len;
- }
+ response_handler_args_t args;
+ memset(&args, 0, sizeof(args));
+ args.status_code = status_code;
+ args.reason = reason;
+ args.body = body;
+ args.body_len = body_len;
+ args.headers = headers;
+
+ switch (conn->base_.purpose) {
+ case DIR_PURPOSE_FETCH_CONSENSUS:
+ rv = handle_response_fetch_consensus(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_CERTIFICATE:
+ rv = handle_response_fetch_certificate(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_STATUS_VOTE:
+ rv = handle_response_fetch_status_vote(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES:
+ rv = handle_response_fetch_detached_signatures(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_SERVERDESC:
+ case DIR_PURPOSE_FETCH_EXTRAINFO:
+ rv = handle_response_fetch_desc(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_MICRODESC:
+ rv = handle_response_fetch_microdesc(conn, &args);
+ break;
+ case DIR_PURPOSE_FETCH_RENDDESC_V2:
+ rv = handle_response_fetch_renddesc_v2(conn, &args);
+ break;
+ case DIR_PURPOSE_UPLOAD_DIR:
+ rv = handle_response_upload_dir(conn, &args);
+ break;
+ case DIR_PURPOSE_UPLOAD_SIGNATURES:
+ rv = handle_response_upload_signatures(conn, &args);
+ break;
+ case DIR_PURPOSE_UPLOAD_VOTE:
+ rv = handle_response_upload_vote(conn, &args);
+ break;
+ case DIR_PURPOSE_UPLOAD_RENDDESC_V2:
+ rv = handle_response_upload_renddesc_v2(conn, &args);
+ break;
+ default:
+ tor_assert_nonfatal_unreached();
+ rv = -1;
+ break;
}
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_CONSENSUS) {
- int r;
- const char *flavname = conn->requested_resource;
- if (status_code != 200) {
- int severity = (status_code == 304) ? LOG_INFO : LOG_WARN;
- tor_log(severity, LD_DIR,
- "Received http status code %d (%s) from server "
- "'%s:%d' while fetching consensus directory.",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port);
- tor_free(body); tor_free(headers); tor_free(reason);
- networkstatus_consensus_download_failed(status_code, flavname);
+ done:
+ tor_free(body);
+ tor_free(headers);
+ tor_free(reason);
+ return rv;
+}
+
+/**
+ * Handler function: processes a response to a request for a networkstatus
+ * consensus document by checking the consensus, storing it, and marking
+ * router requests as reachable.
+ **/
+static int
+handle_response_fetch_consensus(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_CONSENSUS);
+ const int status_code = args->status_code;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+ const char *reason = args->reason;
+ const time_t now = approx_time();
+
+ const char *consensus;
+ char *new_consensus = NULL;
+ const char *sourcename;
+
+ int r;
+ const char *flavname = conn->requested_resource;
+ if (status_code != 200) {
+ int severity = (status_code == 304) ? LOG_INFO : LOG_WARN;
+ tor_log(severity, LD_DIR,
+ "Received http status code %d (%s) from server "
+ "'%s:%d' while fetching consensus directory.",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port);
+ networkstatus_consensus_download_failed(status_code, flavname);
+ return -1;
+ }
+
+ if (looks_like_a_consensus_diff(body, body_len)) {
+ /* First find our previous consensus. Maybe it's in ram, maybe not. */
+ cached_dir_t *cd = dirserv_get_consensus(flavname);
+ const char *consensus_body;
+ char *owned_consensus = NULL;
+ if (cd) {
+ consensus_body = cd->dir;
+ } else {
+ owned_consensus = networkstatus_read_cached_consensus(flavname);
+ consensus_body = owned_consensus;
+ }
+ if (!consensus_body) {
+ log_warn(LD_DIR, "Received a consensus diff, but we can't find "
+ "any %s-flavored consensus in our current cache.",flavname);
+ networkstatus_consensus_download_failed(0, flavname);
+ // XXXX if this happens too much, see below
return -1;
}
- log_info(LD_DIR,"Received consensus directory (size %d) from server "
- "'%s:%d'", (int)body_len, conn->base_.address, conn->base_.port);
- if ((r=networkstatus_set_current_consensus(body, flavname, 0,
- conn->identity_digest))<0) {
- log_fn(r<-1?LOG_WARN:LOG_INFO, LD_DIR,
- "Unable to load %s consensus directory downloaded from "
- "server '%s:%d'. I'll try again soon.",
- flavname, conn->base_.address, conn->base_.port);
- tor_free(body); tor_free(headers); tor_free(reason);
+
+ new_consensus = consensus_diff_apply(consensus_body, body);
+ tor_free(owned_consensus);
+ if (new_consensus == NULL) {
+ log_warn(LD_DIR, "Could not apply consensus diff received from server "
+ "'%s:%d'", conn->base_.address, conn->base_.port);
+ // XXXX If this happens too many times, we should maybe not use
+ // XXXX this directory for diffs any more?
networkstatus_consensus_download_failed(0, flavname);
return -1;
}
+ log_info(LD_DIR, "Applied consensus diff (size %d) from server "
+ "'%s:%d', resulting in a new consensus document (size %d).",
+ (int)body_len, conn->base_.address, conn->base_.port,
+ (int)strlen(new_consensus));
+ consensus = new_consensus;
+ sourcename = "generated based on a diff";
+ } else {
+ log_info(LD_DIR,"Received consensus directory (body size %d) from server "
+ "'%s:%d'", (int)body_len, conn->base_.address, conn->base_.port);
+ consensus = body;
+ sourcename = "downloaded";
+ }
+
+ if ((r=networkstatus_set_current_consensus(consensus, flavname, 0,
+ conn->identity_digest))<0) {
+ log_fn(r<-1?LOG_WARN:LOG_INFO, LD_DIR,
+ "Unable to load %s consensus directory %s from "
+ "server '%s:%d'. I'll try again soon.",
+ flavname, sourcename, conn->base_.address, conn->base_.port);
+ networkstatus_consensus_download_failed(0, flavname);
+ tor_free(new_consensus);
+ return -1;
+ }
- /* If we launched other fetches for this consensus, cancel them. */
- connection_dir_close_consensus_fetches(conn, flavname);
+ /* If we launched other fetches for this consensus, cancel them. */
+ connection_dir_close_consensus_fetches(conn, flavname);
- /* update the list of routers and directory guards */
- routers_update_all_from_networkstatus(now, 3);
- update_microdescs_from_networkstatus(now);
- directory_info_has_arrived(now, 0, 0);
- if (authdir_mode_v3(get_options())) {
- sr_act_post_consensus(
- networkstatus_get_latest_consensus_by_flavor(FLAV_NS));
- }
- log_info(LD_DIR, "Successfully loaded consensus.");
+ /* update the list of routers and directory guards */
+ routers_update_all_from_networkstatus(now, 3);
+ update_microdescs_from_networkstatus(now);
+ directory_info_has_arrived(now, 0, 0);
+
+ if (authdir_mode_v3(get_options())) {
+ sr_act_post_consensus(
+ networkstatus_get_latest_consensus_by_flavor(FLAV_NS));
}
+ log_info(LD_DIR, "Successfully loaded consensus.");
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_CERTIFICATE) {
- if (status_code != 200) {
- log_warn(LD_DIR,
- "Received http status code %d (%s) from server "
- "'%s:%d' while fetching \"/tor/keys/%s\".",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port, conn->requested_resource);
- connection_dir_download_cert_failed(conn, status_code);
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
- }
- log_info(LD_DIR,"Received authority certificates (size %d) from server "
- "'%s:%d'", (int)body_len, conn->base_.address, conn->base_.port);
+ tor_free(new_consensus);
+ return 0;
+}
- /*
- * Tell trusted_dirs_load_certs_from_string() whether it was by fp
- * or fp-sk pair.
- */
- src_code = -1;
- if (!strcmpstart(conn->requested_resource, "fp/")) {
- src_code = TRUSTED_DIRS_CERTS_SRC_DL_BY_ID_DIGEST;
- } else if (!strcmpstart(conn->requested_resource, "fp-sk/")) {
- src_code = TRUSTED_DIRS_CERTS_SRC_DL_BY_ID_SK_DIGEST;
- }
+/**
+ * Handler function: processes a response to a request for one or more
+ * authority certificates
+ **/
+static int
+handle_response_fetch_certificate(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_CERTIFICATE);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
- if (src_code != -1) {
- if (trusted_dirs_load_certs_from_string(body, src_code, 1,
- conn->identity_digest)<0) {
- log_warn(LD_DIR, "Unable to parse fetched certificates");
- /* if we fetched more than one and only some failed, the successful
- * ones got flushed to disk so it's safe to call this on them */
- connection_dir_download_cert_failed(conn, status_code);
- } else {
- directory_info_has_arrived(now, 0, 0);
- log_info(LD_DIR, "Successfully loaded certificates from fetch.");
- }
- } else {
- log_warn(LD_DIR,
- "Couldn't figure out what to do with fetched certificates for "
- "unknown resource %s",
- conn->requested_resource);
+ if (status_code != 200) {
+ log_warn(LD_DIR,
+ "Received http status code %d (%s) from server "
+ "'%s:%d' while fetching \"/tor/keys/%s\".",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port, conn->requested_resource);
+ connection_dir_download_cert_failed(conn, status_code);
+ return -1;
+ }
+ log_info(LD_DIR,"Received authority certificates (body size %d) from "
+ "server '%s:%d'",
+ (int)body_len, conn->base_.address, conn->base_.port);
+
+ /*
+ * Tell trusted_dirs_load_certs_from_string() whether it was by fp
+ * or fp-sk pair.
+ */
+ int src_code = -1;
+ if (!strcmpstart(conn->requested_resource, "fp/")) {
+ src_code = TRUSTED_DIRS_CERTS_SRC_DL_BY_ID_DIGEST;
+ } else if (!strcmpstart(conn->requested_resource, "fp-sk/")) {
+ src_code = TRUSTED_DIRS_CERTS_SRC_DL_BY_ID_SK_DIGEST;
+ }
+
+ if (src_code != -1) {
+ if (trusted_dirs_load_certs_from_string(body, src_code, 1,
+ conn->identity_digest)<0) {
+ log_warn(LD_DIR, "Unable to parse fetched certificates");
+ /* if we fetched more than one and only some failed, the successful
+ * ones got flushed to disk so it's safe to call this on them */
connection_dir_download_cert_failed(conn, status_code);
+ } else {
+ time_t now = approx_time();
+ directory_info_has_arrived(now, 0, 0);
+ log_info(LD_DIR, "Successfully loaded certificates from fetch.");
}
+ } else {
+ log_warn(LD_DIR,
+ "Couldn't figure out what to do with fetched certificates for "
+ "unknown resource %s",
+ conn->requested_resource);
+ connection_dir_download_cert_failed(conn, status_code);
}
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_STATUS_VOTE) {
- const char *msg;
- int st;
- log_info(LD_DIR,"Got votes (size %d) from server %s:%d",
- (int)body_len, conn->base_.address, conn->base_.port);
- if (status_code != 200) {
- log_warn(LD_DIR,
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a request for an authority's
+ * current networkstatus vote.
+ **/
+static int
+handle_response_fetch_status_vote(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_STATUS_VOTE);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+
+ const char *msg;
+ int st;
+ log_info(LD_DIR,"Got votes (body size %d) from server %s:%d",
+ (int)body_len, conn->base_.address, conn->base_.port);
+ if (status_code != 200) {
+ log_warn(LD_DIR,
"Received http status code %d (%s) from server "
"'%s:%d' while fetching \"/tor/status-vote/next/%s.z\".",
status_code, escaped(reason), conn->base_.address,
conn->base_.port, conn->requested_resource);
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
- }
- dirvote_add_vote(body, &msg, &st);
- if (st > 299) {
- log_warn(LD_DIR, "Error adding retrieved vote: %s", msg);
- } else {
- log_info(LD_DIR, "Added vote(s) successfully [msg: %s]", msg);
- }
+ return -1;
}
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_DETACHED_SIGNATURES) {
- const char *msg = NULL;
- log_info(LD_DIR,"Got detached signatures (size %d) from server %s:%d",
- (int)body_len, conn->base_.address, conn->base_.port);
- if (status_code != 200) {
- log_warn(LD_DIR,
+ dirvote_add_vote(body, &msg, &st);
+ if (st > 299) {
+ log_warn(LD_DIR, "Error adding retrieved vote: %s", msg);
+ } else {
+ log_info(LD_DIR, "Added vote(s) successfully [msg: %s]", msg);
+ }
+
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a request for the signatures
+ * that an authority knows about on a given consensus.
+ **/
+static int
+handle_response_fetch_detached_signatures(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_DETACHED_SIGNATURES);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+
+ const char *msg = NULL;
+ log_info(LD_DIR,"Got detached signatures (body size %d) from server %s:%d",
+ (int)body_len, conn->base_.address, conn->base_.port);
+ if (status_code != 200) {
+ log_warn(LD_DIR,
"Received http status code %d (%s) from server '%s:%d' while fetching "
"\"/tor/status-vote/next/consensus-signatures.z\".",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port);
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
- }
- if (dirvote_add_signatures(body, conn->base_.address, &msg)<0) {
- log_warn(LD_DIR, "Problem adding detached signatures from %s:%d: %s",
- conn->base_.address, conn->base_.port, msg?msg:"???");
- }
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port);
+ return -1;
+ }
+ if (dirvote_add_signatures(body, conn->base_.address, &msg)<0) {
+ log_warn(LD_DIR, "Problem adding detached signatures from %s:%d: %s",
+ conn->base_.address, conn->base_.port, msg?msg:"???");
}
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
- conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO) {
- int was_ei = conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO;
- smartlist_t *which = NULL;
- int n_asked_for = 0;
- int descriptor_digests = conn->requested_resource &&
- !strcmpstart(conn->requested_resource,"d/");
- log_info(LD_DIR,"Received %s (size %d) from server '%s:%d'",
- was_ei ? "extra server info" : "server info",
- (int)body_len, conn->base_.address, conn->base_.port);
- if (conn->requested_resource &&
- (!strcmpstart(conn->requested_resource,"d/") ||
- !strcmpstart(conn->requested_resource,"fp/"))) {
- which = smartlist_new();
- dir_split_resource_into_fingerprints(conn->requested_resource +
- (descriptor_digests ? 2 : 3),
- which, NULL, 0);
- n_asked_for = smartlist_len(which);
- }
- if (status_code != 200) {
- int dir_okay = status_code == 404 ||
- (status_code == 400 && !strcmp(reason, "Servers unavailable."));
- /* 404 means that it didn't have them; no big deal.
- * Older (pre-0.1.1.8) servers said 400 Servers unavailable instead. */
- log_fn(dir_okay ? LOG_INFO : LOG_WARN, LD_DIR,
- "Received http status code %d (%s) from server '%s:%d' "
- "while fetching \"/tor/server/%s\". I'll try again soon.",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port, conn->requested_resource);
- if (!which) {
- connection_dir_download_routerdesc_failed(conn);
- } else {
- dir_routerdesc_download_failed(which, status_code,
- conn->router_purpose,
- was_ei, descriptor_digests);
- SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
- smartlist_free(which);
- }
- tor_free(body); tor_free(headers); tor_free(reason);
- return dir_okay ? 0 : -1;
- }
- /* Learn the routers, assuming we requested by fingerprint or "all"
- * or "authority".
- *
- * We use "authority" to fetch our own descriptor for
- * testing, and to fetch bridge descriptors for bootstrapping. Ignore
- * the output of "authority" requests unless we are using bridges,
- * since otherwise they'll be the response from reachability tests,
- * and we don't really want to add that to our routerlist. */
- if (which || (conn->requested_resource &&
- (!strcmpstart(conn->requested_resource, "all") ||
- (!strcmpstart(conn->requested_resource, "authority") &&
- get_options()->UseBridges)))) {
- /* as we learn from them, we remove them from 'which' */
- if (was_ei) {
- router_load_extrainfo_from_string(body, NULL, SAVED_NOWHERE, which,
- descriptor_digests);
- } else {
- //router_load_routers_from_string(body, NULL, SAVED_NOWHERE, which,
- // descriptor_digests, conn->router_purpose);
- if (load_downloaded_routers(body, which, descriptor_digests,
- conn->router_purpose,
- conn->base_.address))
- directory_info_has_arrived(now, 0, 0);
- }
- }
- if (which) { /* mark remaining ones as failed */
- log_info(LD_DIR, "Received %d/%d %s requested from %s:%d",
- n_asked_for-smartlist_len(which), n_asked_for,
- was_ei ? "extra-info documents" : "router descriptors",
- conn->base_.address, (int)conn->base_.port);
- if (smartlist_len(which)) {
- dir_routerdesc_download_failed(which, status_code,
- conn->router_purpose,
- was_ei, descriptor_digests);
- }
- SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
- smartlist_free(which);
- }
- if (directory_conn_is_self_reachability_test(conn))
- router_dirport_found_reachable();
- }
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_MICRODESC) {
- smartlist_t *which = NULL;
- log_info(LD_DIR,"Received answer to microdescriptor request (status %d, "
- "size %d) from server '%s:%d'",
- status_code, (int)body_len, conn->base_.address,
- conn->base_.port);
- tor_assert(conn->requested_resource &&
- !strcmpstart(conn->requested_resource, "d/"));
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a request for a group of server
+ * descriptors or an extrainfo documents.
+ **/
+static int
+handle_response_fetch_desc(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
+ conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+
+ int was_ei = conn->base_.purpose == DIR_PURPOSE_FETCH_EXTRAINFO;
+ smartlist_t *which = NULL;
+ int n_asked_for = 0;
+ int descriptor_digests = conn->requested_resource &&
+ !strcmpstart(conn->requested_resource,"d/");
+ log_info(LD_DIR,"Received %s (body size %d) from server '%s:%d'",
+ was_ei ? "extra server info" : "server info",
+ (int)body_len, conn->base_.address, conn->base_.port);
+ if (conn->requested_resource &&
+ (!strcmpstart(conn->requested_resource,"d/") ||
+ !strcmpstart(conn->requested_resource,"fp/"))) {
which = smartlist_new();
- dir_split_resource_into_fingerprints(conn->requested_resource+2,
- which, NULL,
- DSR_DIGEST256|DSR_BASE64);
- if (status_code != 200) {
- log_info(LD_DIR, "Received status code %d (%s) from server "
- "'%s:%d' while fetching \"/tor/micro/%s\". I'll try again "
- "soon.",
- status_code, escaped(reason), conn->base_.address,
- (int)conn->base_.port, conn->requested_resource);
- dir_microdesc_download_failed(which, status_code);
+ dir_split_resource_into_fingerprints(conn->requested_resource +
+ (descriptor_digests ? 2 : 3),
+ which, NULL, 0);
+ n_asked_for = smartlist_len(which);
+ }
+ if (status_code != 200) {
+ int dir_okay = status_code == 404 ||
+ (status_code == 400 && !strcmp(reason, "Servers unavailable."));
+ /* 404 means that it didn't have them; no big deal.
+ * Older (pre-0.1.1.8) servers said 400 Servers unavailable instead. */
+ log_fn(dir_okay ? LOG_INFO : LOG_WARN, LD_DIR,
+ "Received http status code %d (%s) from server '%s:%d' "
+ "while fetching \"/tor/server/%s\". I'll try again soon.",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port, conn->requested_resource);
+ if (!which) {
+ connection_dir_download_routerdesc_failed(conn);
+ } else {
+ dir_routerdesc_download_failed(which, status_code,
+ conn->router_purpose,
+ was_ei, descriptor_digests);
SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
smartlist_free(which);
- tor_free(body); tor_free(headers); tor_free(reason);
- return 0;
+ }
+ return dir_okay ? 0 : -1;
+ }
+ /* Learn the routers, assuming we requested by fingerprint or "all"
+ * or "authority".
+ *
+ * We use "authority" to fetch our own descriptor for
+ * testing, and to fetch bridge descriptors for bootstrapping. Ignore
+ * the output of "authority" requests unless we are using bridges,
+ * since otherwise they'll be the response from reachability tests,
+ * and we don't really want to add that to our routerlist. */
+ if (which || (conn->requested_resource &&
+ (!strcmpstart(conn->requested_resource, "all") ||
+ (!strcmpstart(conn->requested_resource, "authority") &&
+ get_options()->UseBridges)))) {
+ /* as we learn from them, we remove them from 'which' */
+ if (was_ei) {
+ router_load_extrainfo_from_string(body, NULL, SAVED_NOWHERE, which,
+ descriptor_digests);
} else {
- smartlist_t *mds;
- mds = microdescs_add_to_cache(get_microdesc_cache(),
- body, body+body_len, SAVED_NOWHERE, 0,
- now, which);
- if (smartlist_len(which)) {
- /* Mark remaining ones as failed. */
- dir_microdesc_download_failed(which, status_code);
- }
- if (mds && smartlist_len(mds)) {
- control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS,
- count_loading_descriptors_progress());
- directory_info_has_arrived(now, 0, 1);
+ //router_load_routers_from_string(body, NULL, SAVED_NOWHERE, which,
+ // descriptor_digests, conn->router_purpose);
+ if (load_downloaded_routers(body, which, descriptor_digests,
+ conn->router_purpose,
+ conn->base_.address)) {
+ time_t now = approx_time();
+ directory_info_has_arrived(now, 0, 0);
}
- SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
- smartlist_free(which);
- smartlist_free(mds);
}
}
+ if (which) { /* mark remaining ones as failed */
+ log_info(LD_DIR, "Received %d/%d %s requested from %s:%d",
+ n_asked_for-smartlist_len(which), n_asked_for,
+ was_ei ? "extra-info documents" : "router descriptors",
+ conn->base_.address, (int)conn->base_.port);
+ if (smartlist_len(which)) {
+ dir_routerdesc_download_failed(which, status_code,
+ conn->router_purpose,
+ was_ei, descriptor_digests);
+ }
+ SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
+ smartlist_free(which);
+ }
+ if (directory_conn_is_self_reachability_test(conn))
+ router_dirport_found_reachable();
- if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_DIR) {
- switch (status_code) {
- case 200: {
- dir_server_t *ds =
- router_get_trusteddirserver_by_digest(conn->identity_digest);
- char *rejected_hdr = http_get_header(headers,
- "X-Descriptor-Not-New: ");
- if (rejected_hdr) {
- if (!strcmp(rejected_hdr, "Yes")) {
- log_info(LD_GENERAL,
- "Authority '%s' declined our descriptor (not new)",
- ds->nickname);
- /* XXXX use this information; be sure to upload next one
- * sooner. -NM */
- /* XXXX++ On further thought, the task above implies that we're
- * basing our regenerate-descriptor time on when we uploaded the
- * last descriptor, not on the published time of the last
- * descriptor. If those are different, that's a bad thing to
- * do. -NM */
- }
- tor_free(rejected_hdr);
- }
- log_info(LD_GENERAL,"eof (status 200) after uploading server "
- "descriptor: finished.");
- control_event_server_status(
- LOG_NOTICE, "ACCEPTED_SERVER_DESCRIPTOR DIRAUTH=%s:%d",
- conn->base_.address, conn->base_.port);
-
- ds->has_accepted_serverdesc = 1;
- if (directories_have_accepted_server_descriptor())
- control_event_server_status(LOG_NOTICE, "GOOD_SERVER_DESCRIPTOR");
- }
- break;
- case 400:
- log_warn(LD_GENERAL,"http status 400 (%s) response from "
- "dirserver '%s:%d'. Please correct.",
- escaped(reason), conn->base_.address, conn->base_.port);
- control_event_server_status(LOG_WARN,
- "BAD_SERVER_DESCRIPTOR DIRAUTH=%s:%d REASON=\"%s\"",
- conn->base_.address, conn->base_.port, escaped(reason));
- break;
- default:
- log_warn(LD_GENERAL,
- "http status %d (%s) reason unexpected while uploading "
- "descriptor to server '%s:%d').",
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a request for a group of
+ * microdescriptors
+ **/
+STATIC int
+handle_response_fetch_microdesc(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_MICRODESC);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+
+ smartlist_t *which = NULL;
+ log_info(LD_DIR,"Received answer to microdescriptor request (status %d, "
+ "body size %d) from server '%s:%d'",
+ status_code, (int)body_len, conn->base_.address,
+ conn->base_.port);
+ tor_assert(conn->requested_resource &&
+ !strcmpstart(conn->requested_resource, "d/"));
+ tor_assert_nonfatal(!tor_mem_is_zero(conn->identity_digest, DIGEST_LEN));
+ which = smartlist_new();
+ dir_split_resource_into_fingerprints(conn->requested_resource+2,
+ which, NULL,
+ DSR_DIGEST256|DSR_BASE64);
+ if (status_code != 200) {
+ log_info(LD_DIR, "Received status code %d (%s) from server "
+ "'%s:%d' while fetching \"/tor/micro/%s\". I'll try again "
+ "soon.",
status_code, escaped(reason), conn->base_.address,
- conn->base_.port);
- break;
+ (int)conn->base_.port, conn->requested_resource);
+ dir_microdesc_download_failed(which, status_code, conn->identity_digest);
+ SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
+ smartlist_free(which);
+ return 0;
+ } else {
+ smartlist_t *mds;
+ time_t now = approx_time();
+ mds = microdescs_add_to_cache(get_microdesc_cache(),
+ body, body+body_len, SAVED_NOWHERE, 0,
+ now, which);
+ if (smartlist_len(which)) {
+ /* Mark remaining ones as failed. */
+ dir_microdesc_download_failed(which, status_code, conn->identity_digest);
+ }
+ if (mds && smartlist_len(mds)) {
+ control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS,
+ count_loading_descriptors_progress());
+ directory_info_has_arrived(now, 0, 1);
}
- /* return 0 in all cases, since we don't want to mark any
- * dirservers down just because they don't like us. */
+ SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
+ smartlist_free(which);
+ smartlist_free(mds);
}
- if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_VOTE) {
- switch (status_code) {
- case 200: {
- log_notice(LD_DIR,"Uploaded a vote to dirserver %s:%d",
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a POST request to upload our
+ * router descriptor.
+ **/
+static int
+handle_response_upload_dir(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_UPLOAD_DIR);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *headers = args->headers;
+
+ switch (status_code) {
+ case 200: {
+ dir_server_t *ds =
+ router_get_trusteddirserver_by_digest(conn->identity_digest);
+ char *rejected_hdr = http_get_header(headers,
+ "X-Descriptor-Not-New: ");
+ if (rejected_hdr) {
+ if (!strcmp(rejected_hdr, "Yes")) {
+ log_info(LD_GENERAL,
+ "Authority '%s' declined our descriptor (not new)",
+ ds->nickname);
+ /* XXXX use this information; be sure to upload next one
+ * sooner. -NM */
+ /* XXXX++ On further thought, the task above implies that we're
+ * basing our regenerate-descriptor time on when we uploaded the
+ * last descriptor, not on the published time of the last
+ * descriptor. If those are different, that's a bad thing to
+ * do. -NM */
+ }
+ tor_free(rejected_hdr);
+ }
+ log_info(LD_GENERAL,"eof (status 200) after uploading server "
+ "descriptor: finished.");
+ control_event_server_status(
+ LOG_NOTICE, "ACCEPTED_SERVER_DESCRIPTOR DIRAUTH=%s:%d",
conn->base_.address, conn->base_.port);
- }
- break;
- case 400:
- log_warn(LD_DIR,"http status 400 (%s) response after uploading "
- "vote to dirserver '%s:%d'. Please correct.",
- escaped(reason), conn->base_.address, conn->base_.port);
- break;
- default:
- log_warn(LD_GENERAL,
- "http status %d (%s) reason unexpected while uploading "
- "vote to server '%s:%d').",
+
+ ds->has_accepted_serverdesc = 1;
+ if (directories_have_accepted_server_descriptor())
+ control_event_server_status(LOG_NOTICE, "GOOD_SERVER_DESCRIPTOR");
+ }
+ break;
+ case 400:
+ log_warn(LD_GENERAL,"http status 400 (%s) response from "
+ "dirserver '%s:%d'. Please correct.",
+ escaped(reason), conn->base_.address, conn->base_.port);
+ control_event_server_status(LOG_WARN,
+ "BAD_SERVER_DESCRIPTOR DIRAUTH=%s:%d REASON=\"%s\"",
+ conn->base_.address, conn->base_.port, escaped(reason));
+ break;
+ default:
+ log_warn(LD_GENERAL,
+ "HTTP status %d (%s) was unexpected while uploading "
+ "descriptor to server '%s:%d'. Possibly the server is "
+ "misconfigured?",
status_code, escaped(reason), conn->base_.address,
conn->base_.port);
- break;
- }
- /* return 0 in all cases, since we don't want to mark any
- * dirservers down just because they don't like us. */
+ break;
}
+ /* return 0 in all cases, since we don't want to mark any
+ * dirservers down just because they don't like us. */
- if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_SIGNATURES) {
- switch (status_code) {
- case 200: {
- log_notice(LD_DIR,"Uploaded signature(s) to dirserver %s:%d",
- conn->base_.address, conn->base_.port);
- }
- break;
- case 400:
- log_warn(LD_DIR,"http status 400 (%s) response after uploading "
- "signatures to dirserver '%s:%d'. Please correct.",
- escaped(reason), conn->base_.address, conn->base_.port);
- break;
- default:
- log_warn(LD_GENERAL,
- "http status %d (%s) reason unexpected while uploading "
- "signatures to server '%s:%d').",
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to POST request to upload our
+ * own networkstatus vote.
+ **/
+static int
+handle_response_upload_vote(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_UPLOAD_VOTE);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+
+ switch (status_code) {
+ case 200: {
+ log_notice(LD_DIR,"Uploaded a vote to dirserver %s:%d",
+ conn->base_.address, conn->base_.port);
+ }
+ break;
+ case 400:
+ log_warn(LD_DIR,"http status 400 (%s) response after uploading "
+ "vote to dirserver '%s:%d'. Please correct.",
+ escaped(reason), conn->base_.address, conn->base_.port);
+ break;
+ default:
+ log_warn(LD_GENERAL,
+ "HTTP status %d (%s) was unexpected while uploading "
+ "vote to server '%s:%d'.",
status_code, escaped(reason), conn->base_.address,
conn->base_.port);
- break;
- }
- /* return 0 in all cases, since we don't want to mark any
- * dirservers down just because they don't like us. */
- }
-
- if (conn->base_.purpose == DIR_PURPOSE_FETCH_RENDDESC_V2) {
- #define SEND_HS_DESC_FAILED_EVENT(reason) ( \
- control_event_hs_descriptor_failed(conn->rend_data, \
- conn->identity_digest, \
- reason) )
- #define SEND_HS_DESC_FAILED_CONTENT() ( \
- control_event_hs_descriptor_content(rend_data_get_address(conn->rend_data), \
- conn->requested_resource, \
+ break;
+ }
+ /* return 0 in all cases, since we don't want to mark any
+ * dirservers down just because they don't like us. */
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to POST request to upload our
+ * view of the signatures on the current consensus.
+ **/
+static int
+handle_response_upload_signatures(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_UPLOAD_SIGNATURES);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+
+ switch (status_code) {
+ case 200: {
+ log_notice(LD_DIR,"Uploaded signature(s) to dirserver %s:%d",
+ conn->base_.address, conn->base_.port);
+ }
+ break;
+ case 400:
+ log_warn(LD_DIR,"http status 400 (%s) response after uploading "
+ "signatures to dirserver '%s:%d'. Please correct.",
+ escaped(reason), conn->base_.address, conn->base_.port);
+ break;
+ default:
+ log_warn(LD_GENERAL,
+ "HTTP status %d (%s) was unexpected while uploading "
+ "signatures to server '%s:%d'.",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port);
+ break;
+ }
+ /* return 0 in all cases, since we don't want to mark any
+ * dirservers down just because they don't like us. */
+
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a request for a v2 hidden service
+ * descriptor.
+ **/
+static int
+handle_response_fetch_renddesc_v2(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_FETCH_RENDDESC_V2);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+ const char *body = args->body;
+ const size_t body_len = args->body_len;
+
+#define SEND_HS_DESC_FAILED_EVENT(reason) \
+ (control_event_hs_descriptor_failed(conn->rend_data, \
conn->identity_digest, \
- NULL) )
- tor_assert(conn->rend_data);
- log_info(LD_REND,"Received rendezvous descriptor (size %d, status %d "
- "(%s))",
- (int)body_len, status_code, escaped(reason));
- switch (status_code) {
- case 200:
- {
- rend_cache_entry_t *entry = NULL;
-
- if (rend_cache_store_v2_desc_as_client(body,
- conn->requested_resource, conn->rend_data, &entry) < 0) {
- log_warn(LD_REND,"Fetching v2 rendezvous descriptor failed. "
- "Retrying at another directory.");
- /* We'll retry when connection_about_to_close_connection()
- * cleans this dir conn up. */
- SEND_HS_DESC_FAILED_EVENT("BAD_DESC");
- SEND_HS_DESC_FAILED_CONTENT();
- } else {
- char service_id[REND_SERVICE_ID_LEN_BASE32 + 1];
- /* Should never be NULL here if we found the descriptor. */
- tor_assert(entry);
- rend_get_service_id(entry->parsed->pk, service_id);
-
- /* success. notify pending connections about this. */
- log_info(LD_REND, "Successfully fetched v2 rendezvous "
- "descriptor.");
- control_event_hs_descriptor_received(service_id,
- conn->rend_data,
- conn->identity_digest);
- control_event_hs_descriptor_content(service_id,
- conn->requested_resource,
- conn->identity_digest,
- body);
- conn->base_.purpose = DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2;
- rend_client_desc_trynow(service_id);
- memwipe(service_id, 0, sizeof(service_id));
- }
- break;
- }
- case 404:
- /* Not there. We'll retry when
- * connection_about_to_close_connection() cleans this conn up. */
- log_info(LD_REND,"Fetching v2 rendezvous descriptor failed: "
- "Retrying at another directory.");
- SEND_HS_DESC_FAILED_EVENT("NOT_FOUND");
- SEND_HS_DESC_FAILED_CONTENT();
- break;
- case 400:
- log_warn(LD_REND, "Fetching v2 rendezvous descriptor failed: "
- "http status 400 (%s). Dirserver didn't like our "
- "v2 rendezvous query? Retrying at another directory.",
- escaped(reason));
- SEND_HS_DESC_FAILED_EVENT("QUERY_REJECTED");
- SEND_HS_DESC_FAILED_CONTENT();
- break;
- default:
- log_warn(LD_REND, "Fetching v2 rendezvous descriptor failed: "
- "http status %d (%s) response unexpected while "
- "fetching v2 hidden service descriptor (server '%s:%d'). "
- "Retrying at another directory.",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port);
- SEND_HS_DESC_FAILED_EVENT("UNEXPECTED");
+ reason))
+#define SEND_HS_DESC_FAILED_CONTENT() \
+ (control_event_hs_descriptor_content( \
+ rend_data_get_address(conn->rend_data), \
+ conn->requested_resource, \
+ conn->identity_digest, \
+ NULL))
+
+ tor_assert(conn->rend_data);
+ log_info(LD_REND,"Received rendezvous descriptor (body size %d, status %d "
+ "(%s))",
+ (int)body_len, status_code, escaped(reason));
+ switch (status_code) {
+ case 200:
+ {
+ rend_cache_entry_t *entry = NULL;
+
+ if (rend_cache_store_v2_desc_as_client(body,
+ conn->requested_resource,
+ conn->rend_data, &entry) < 0) {
+ log_warn(LD_REND,"Fetching v2 rendezvous descriptor failed. "
+ "Retrying at another directory.");
+ /* We'll retry when connection_about_to_close_connection()
+ * cleans this dir conn up. */
+ SEND_HS_DESC_FAILED_EVENT("BAD_DESC");
SEND_HS_DESC_FAILED_CONTENT();
- break;
+ } else {
+ char service_id[REND_SERVICE_ID_LEN_BASE32 + 1];
+ /* Should never be NULL here if we found the descriptor. */
+ tor_assert(entry);
+ rend_get_service_id(entry->parsed->pk, service_id);
+
+ /* success. notify pending connections about this. */
+ log_info(LD_REND, "Successfully fetched v2 rendezvous "
+ "descriptor.");
+ control_event_hs_descriptor_received(service_id,
+ conn->rend_data,
+ conn->identity_digest);
+ control_event_hs_descriptor_content(service_id,
+ conn->requested_resource,
+ conn->identity_digest,
+ body);
+ conn->base_.purpose = DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2;
+ rend_client_desc_trynow(service_id);
+ memwipe(service_id, 0, sizeof(service_id));
+ }
+ break;
}
+ case 404:
+ /* Not there. We'll retry when
+ * connection_about_to_close_connection() cleans this conn up. */
+ log_info(LD_REND,"Fetching v2 rendezvous descriptor failed: "
+ "Retrying at another directory.");
+ SEND_HS_DESC_FAILED_EVENT("NOT_FOUND");
+ SEND_HS_DESC_FAILED_CONTENT();
+ break;
+ case 400:
+ log_warn(LD_REND, "Fetching v2 rendezvous descriptor failed: "
+ "http status 400 (%s). Dirserver didn't like our "
+ "v2 rendezvous query? Retrying at another directory.",
+ escaped(reason));
+ SEND_HS_DESC_FAILED_EVENT("QUERY_REJECTED");
+ SEND_HS_DESC_FAILED_CONTENT();
+ break;
+ default:
+ log_warn(LD_REND, "Fetching v2 rendezvous descriptor failed: "
+ "http status %d (%s) response unexpected while "
+ "fetching v2 hidden service descriptor (server '%s:%d'). "
+ "Retrying at another directory.",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port);
+ SEND_HS_DESC_FAILED_EVENT("UNEXPECTED");
+ SEND_HS_DESC_FAILED_CONTENT();
+ break;
}
- if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2) {
- #define SEND_HS_DESC_UPLOAD_FAILED_EVENT(reason) ( \
- control_event_hs_descriptor_upload_failed( \
- conn->identity_digest, \
- rend_data_get_address(conn->rend_data), \
- reason) )
- log_info(LD_REND,"Uploaded rendezvous descriptor (status %d "
- "(%s))",
- status_code, escaped(reason));
- /* Without the rend data, we'll have a problem identifying what has been
- * uploaded for which service. */
- tor_assert(conn->rend_data);
- switch (status_code) {
- case 200:
- log_info(LD_REND,
- "Uploading rendezvous descriptor: finished with status "
- "200 (%s)", escaped(reason));
- control_event_hs_descriptor_uploaded(conn->identity_digest,
- rend_data_get_address(conn->rend_data));
- rend_service_desc_has_uploaded(conn->rend_data);
- break;
- case 400:
- log_warn(LD_REND,"http status 400 (%s) response from dirserver "
- "'%s:%d'. Malformed rendezvous descriptor?",
- escaped(reason), conn->base_.address, conn->base_.port);
- SEND_HS_DESC_UPLOAD_FAILED_EVENT("UPLOAD_REJECTED");
- break;
- default:
- log_warn(LD_REND,"http status %d (%s) response unexpected (server "
- "'%s:%d').",
- status_code, escaped(reason), conn->base_.address,
- conn->base_.port);
- SEND_HS_DESC_UPLOAD_FAILED_EVENT("UNEXPECTED");
- break;
- }
+ return 0;
+}
+
+/**
+ * Handler function: processes a response to a POST request to upload a v2
+ * hidden service descriptor.
+ **/
+static int
+handle_response_upload_renddesc_v2(dir_connection_t *conn,
+ const response_handler_args_t *args)
+{
+ tor_assert(conn->base_.purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2);
+ const int status_code = args->status_code;
+ const char *reason = args->reason;
+
+#define SEND_HS_DESC_UPLOAD_FAILED_EVENT(reason) \
+ (control_event_hs_descriptor_upload_failed( \
+ conn->identity_digest, \
+ rend_data_get_address(conn->rend_data), \
+ reason))
+
+ log_info(LD_REND,"Uploaded rendezvous descriptor (status %d "
+ "(%s))",
+ status_code, escaped(reason));
+ /* Without the rend data, we'll have a problem identifying what has been
+ * uploaded for which service. */
+ tor_assert(conn->rend_data);
+ switch (status_code) {
+ case 200:
+ log_info(LD_REND,
+ "Uploading rendezvous descriptor: finished with status "
+ "200 (%s)", escaped(reason));
+ control_event_hs_descriptor_uploaded(conn->identity_digest,
+ rend_data_get_address(conn->rend_data));
+ rend_service_desc_has_uploaded(conn->rend_data);
+ break;
+ case 400:
+ log_warn(LD_REND,"http status 400 (%s) response from dirserver "
+ "'%s:%d'. Malformed rendezvous descriptor?",
+ escaped(reason), conn->base_.address, conn->base_.port);
+ SEND_HS_DESC_UPLOAD_FAILED_EVENT("UPLOAD_REJECTED");
+ break;
+ default:
+ log_warn(LD_REND,"http status %d (%s) response unexpected (server "
+ "'%s:%d').",
+ status_code, escaped(reason), conn->base_.address,
+ conn->base_.port);
+ SEND_HS_DESC_UPLOAD_FAILED_EVENT("UNEXPECTED");
+ break;
}
- tor_free(body); tor_free(headers); tor_free(reason);
+
return 0;
}
@@ -2662,14 +3282,12 @@ static void
write_http_status_line(dir_connection_t *conn, int status,
const char *reason_phrase)
{
- char buf[256];
- if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n\r\n",
- status, reason_phrase ? reason_phrase : "OK") < 0) {
- log_warn(LD_BUG,"status line too long.");
- return;
- }
+ char *buf = NULL;
+ tor_asprintf(&buf, "HTTP/1.0 %d %s\r\n\r\n",
+ status, reason_phrase ? reason_phrase : "OK");
log_debug(LD_DIRSERV,"Wrote status 'HTTP/1.0 %d %s'", status, reason_phrase);
connection_write_to_buf(buf, strlen(buf), TO_CONN(conn));
+ tor_free(buf);
}
/** Write the header for an HTTP/1.0 response onto <b>conn</b>-\>outbuf,
@@ -2748,14 +3366,114 @@ write_http_response_header_impl(dir_connection_t *conn, ssize_t length,
/** As write_http_response_header_impl, but sets encoding and content-typed
* based on whether the response will be <b>compressed</b> or not. */
static void
-write_http_response_header(dir_connection_t *conn, ssize_t length,
- int compressed, long cache_lifetime)
+write_http_response_headers(dir_connection_t *conn, ssize_t length,
+ compress_method_t method,
+ const char *extra_headers, long cache_lifetime)
{
+ const char *methodname = compression_method_get_name(method);
+ const char *doctype;
+ if (method == NO_METHOD)
+ doctype = "text/plain";
+ else
+ doctype = "application/octet-stream";
write_http_response_header_impl(conn, length,
- compressed?"application/octet-stream":"text/plain",
- compressed?"deflate":"identity",
- NULL,
- cache_lifetime);
+ doctype,
+ methodname,
+ extra_headers,
+ cache_lifetime);
+}
+
+/** As write_http_response_headers, but assumes extra_headers is NULL */
+static void
+write_http_response_header(dir_connection_t *conn, ssize_t length,
+ compress_method_t method,
+ long cache_lifetime)
+{
+ write_http_response_headers(conn, length, method, NULL, cache_lifetime);
+}
+
+/** Array of compression methods to use (if supported) for serving
+ * precompressed data, ordered from best to worst. */
+static compress_method_t srv_meth_pref_precompressed[] = {
+ LZMA_METHOD,
+ ZSTD_METHOD,
+ ZLIB_METHOD,
+ GZIP_METHOD,
+ NO_METHOD
+};
+
+/** Array of compression methods to use (if supported) for serving
+ * streamed data, ordered from best to worst. */
+static compress_method_t srv_meth_pref_streaming_compression[] = {
+ ZSTD_METHOD,
+ ZLIB_METHOD,
+ GZIP_METHOD,
+ NO_METHOD
+};
+
+/** Array of allowed compression methods to use (if supported) when receiving a
+ * response from a request that was required to be anonymous. */
+static compress_method_t client_meth_allowed_anonymous_compression[] = {
+ ZLIB_METHOD,
+ GZIP_METHOD,
+ NO_METHOD
+};
+
+/** Parse the compression methods listed in an Accept-Encoding header <b>h</b>,
+ * and convert them to a bitfield where compression method x is supported if
+ * and only if 1 &lt;&lt; x is set in the bitfield. */
+STATIC unsigned
+parse_accept_encoding_header(const char *h)
+{
+ unsigned result = (1u << NO_METHOD);
+ smartlist_t *methods = smartlist_new();
+ smartlist_split_string(methods, h, ",",
+ SPLIT_SKIP_SPACE|SPLIT_STRIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+
+ SMARTLIST_FOREACH_BEGIN(methods, const char *, m) {
+ compress_method_t method = compression_method_get_by_name(m);
+ if (method != UNKNOWN_METHOD) {
+ tor_assert(((unsigned)method) < 8*sizeof(unsigned));
+ result |= (1u << method);
+ }
+ } SMARTLIST_FOREACH_END(m);
+ SMARTLIST_FOREACH_BEGIN(methods, char *, m) {
+ tor_free(m);
+ } SMARTLIST_FOREACH_END(m);
+ smartlist_free(methods);
+ return result;
+}
+
+/** Array of compression methods to use (if supported) for requesting
+ * compressed data, ordered from best to worst. */
+static compress_method_t client_meth_pref[] = {
+ LZMA_METHOD,
+ ZSTD_METHOD,
+ ZLIB_METHOD,
+ GZIP_METHOD,
+ NO_METHOD
+};
+
+/** Return a newly allocated string containing a comma separated list of
+ * supported encodings. */
+STATIC char *
+accept_encoding_header(void)
+{
+ smartlist_t *methods = smartlist_new();
+ char *header = NULL;
+ compress_method_t method;
+ unsigned i;
+
+ for (i = 0; i < ARRAY_LENGTH(client_meth_pref); ++i) {
+ method = client_meth_pref[i];
+ if (tor_compress_supports_method(method))
+ smartlist_add(methods, (char *)compression_method_get_name(method));
+ }
+
+ header = smartlist_join_strings(methods, ", ", 0, NULL);
+ smartlist_free(methods);
+
+ return header;
}
/** Decide whether a client would accept the consensus we have.
@@ -2773,48 +3491,46 @@ write_http_response_header(dir_connection_t *conn, ssize_t length,
* consensus, 0 otherwise.
*/
int
-client_likes_consensus(networkstatus_t *v, const char *want_url)
+client_likes_consensus(const struct consensus_cache_entry_t *ent,
+ const char *want_url)
{
- smartlist_t *want_authorities = smartlist_new();
+ smartlist_t *voters = smartlist_new();
int need_at_least;
int have = 0;
+ if (consensus_cache_entry_get_voter_id_digests(ent, voters) != 0) {
+ smartlist_free(voters);
+ return 1; // We don't know the voters; assume the client won't mind. */
+ }
+
+ smartlist_t *want_authorities = smartlist_new();
dir_split_resource_into_fingerprints(want_url, want_authorities, NULL, 0);
need_at_least = smartlist_len(want_authorities)/2+1;
- SMARTLIST_FOREACH_BEGIN(want_authorities, const char *, d) {
- char want_digest[DIGEST_LEN];
- size_t want_len = strlen(d)/2;
- if (want_len > DIGEST_LEN)
- want_len = DIGEST_LEN;
-
- if (base16_decode(want_digest, DIGEST_LEN, d, want_len*2)
- != (int) want_len) {
- log_fn(LOG_PROTOCOL_WARN, LD_DIR,
- "Failed to decode requested authority digest %s.", escaped(d));
- continue;
- };
- SMARTLIST_FOREACH_BEGIN(v->voters, networkstatus_voter_info_t *, vi) {
- if (smartlist_len(vi->sigs) &&
- tor_memeq(vi->identity_digest, want_digest, want_len)) {
+ SMARTLIST_FOREACH_BEGIN(want_authorities, const char *, want_digest) {
+
+ SMARTLIST_FOREACH_BEGIN(voters, const char *, digest) {
+ if (!strcasecmpstart(digest, want_digest)) {
have++;
break;
};
- } SMARTLIST_FOREACH_END(vi);
+ } SMARTLIST_FOREACH_END(digest);
/* early exit, if we already have enough */
if (have >= need_at_least)
break;
- } SMARTLIST_FOREACH_END(d);
+ } SMARTLIST_FOREACH_END(want_digest);
SMARTLIST_FOREACH(want_authorities, char *, d, tor_free(d));
smartlist_free(want_authorities);
+ SMARTLIST_FOREACH(voters, char *, cp, tor_free(cp));
+ smartlist_free(voters);
return (have >= need_at_least);
}
/** Return the compression level we should use for sending a compressed
* response of size <b>n_bytes</b>. */
-STATIC zlib_compression_level_t
+STATIC compression_level_t
choose_compression_level(ssize_t n_bytes)
{
if (! have_been_under_memory_pressure()) {
@@ -2832,8 +3548,9 @@ choose_compression_level(ssize_t n_bytes)
/** Information passed to handle a GET request. */
typedef struct get_handler_args_t {
- /** True if the client asked for compressed data. */
- int compressed;
+ /** Bitmask of compression methods that the client said (or implied) it
+ * supported. */
+ unsigned compression_supported;
/** If nonzero, the time included an if-modified-since header with this
* value. */
time_t if_modified_since;
@@ -2907,8 +3624,9 @@ directory_handle_command_get,(dir_connection_t *conn, const char *headers,
{
char *url, *url_mem, *header;
time_t if_modified_since = 0;
- int compressed;
+ int zlib_compressed_in_url;
size_t url_len;
+ unsigned compression_methods_supported;
/* We ignore the body of a GET request. */
(void)req_body;
@@ -2939,17 +3657,31 @@ directory_handle_command_get,(dir_connection_t *conn, const char *headers,
url_mem = url;
url_len = strlen(url);
- compressed = url_len > 2 && !strcmp(url+url_len-2, ".z");
- if (compressed) {
+
+ zlib_compressed_in_url = url_len > 2 && !strcmp(url+url_len-2, ".z");
+ if (zlib_compressed_in_url) {
url[url_len-2] = '\0';
url_len -= 2;
}
+ if ((header = http_get_header(headers, "Accept-Encoding: "))) {
+ compression_methods_supported = parse_accept_encoding_header(header);
+ tor_free(header);
+ } else {
+ compression_methods_supported = (1u << NO_METHOD);
+ }
+ if (zlib_compressed_in_url) {
+ compression_methods_supported |= (1u << ZLIB_METHOD);
+ }
+
+ /* Remove all methods that we don't both support. */
+ compression_methods_supported &= tor_compress_get_supported_method_bitmask();
+
get_handler_args_t args;
args.url = url;
args.headers = headers;
args.if_modified_since = if_modified_since;
- args.compressed = compressed;
+ args.compression_supported = compression_methods_supported;
int i, result = -1;
for (i = 0; url_table[i].string; ++i) {
@@ -2999,20 +3731,25 @@ handle_get_frontpage(dir_connection_t *conn, const get_handler_args_t *args)
return 0;
}
-/** Warn that the consensus <b>v</b> of type <b>flavor</b> is too old and will
- * not be served to clients. Rate-limit the warning to avoid logging an entry
- * on every request.
+/** Warn that the cached consensus <b>consensus</b> of type
+ * <b>flavor</b> is too old and will not be served to clients. Rate-limit the
+ * warning to avoid logging an entry on every request.
*/
static void
-warn_consensus_is_too_old(networkstatus_t *v, const char *flavor, time_t now)
+warn_consensus_is_too_old(const struct consensus_cache_entry_t *consensus,
+ const char *flavor, time_t now)
{
#define TOO_OLD_WARNING_INTERVAL (60*60)
static ratelim_t warned = RATELIM_INIT(TOO_OLD_WARNING_INTERVAL);
char timestamp[ISO_TIME_LEN+1];
+ time_t valid_until;
char *dupes;
+ if (consensus_cache_entry_get_valid_until(consensus, &valid_until))
+ return;
+
if ((dupes = rate_limit_log(&warned, now))) {
- format_local_iso_time(timestamp, v->valid_until);
+ format_local_iso_time(timestamp, valid_until);
log_warn(LD_DIRSERV, "Our %s%sconsensus is too old, so we will not "
"serve it to clients. It was valid until %s local time and we "
"continued to serve it for up to 24 hours after it expired.%s",
@@ -3021,139 +3758,496 @@ warn_consensus_is_too_old(networkstatus_t *v, const char *flavor, time_t now)
}
}
-/** Helper function for GET /tor/status-vote/current/consensus
+/**
+ * Parse a single hex-encoded sha3-256 digest from <b>hex</b> into
+ * <b>digest</b>. Return 0 on success. On failure, report that the hash came
+ * from <b>location</b>, report that we are taking <b>action</b> with it, and
+ * return -1.
*/
static int
-handle_get_current_consensus(dir_connection_t *conn,
- const get_handler_args_t *args)
+parse_one_diff_hash(uint8_t *digest, const char *hex, const char *location,
+ const char *action)
{
- const char *url = args->url;
- const int compressed = args->compressed;
- const time_t if_modified_since = args->if_modified_since;
+ if (base16_decode((char*)digest, DIGEST256_LEN, hex, strlen(hex)) ==
+ DIGEST256_LEN) {
+ return 0;
+ } else {
+ log_fn(LOG_PROTOCOL_WARN, LD_DIR,
+ "%s contained bogus digest %s; %s.",
+ location, escaped(hex), action);
+ return -1;
+ }
+}
- {
- /* v3 network status fetch. */
- smartlist_t *dir_fps = smartlist_new();
- long lifetime = NETWORKSTATUS_CACHE_LIFETIME;
+/** If there is an X-Or-Diff-From-Consensus header included in <b>headers</b>,
+ * set <b>digest_out<b> to a new smartlist containing every 256-bit
+ * hex-encoded digest listed in that header and return 0. Otherwise return
+ * -1. */
+static int
+parse_or_diff_from_header(smartlist_t **digests_out, const char *headers)
+{
+ char *hdr = http_get_header(headers, X_OR_DIFF_FROM_CONSENSUS_HEADER);
+ if (hdr == NULL) {
+ return -1;
+ }
+ smartlist_t *hex_digests = smartlist_new();
+ *digests_out = smartlist_new();
+ smartlist_split_string(hex_digests, hdr, " ",
+ SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1);
+ SMARTLIST_FOREACH_BEGIN(hex_digests, const char *, hex) {
+ uint8_t digest[DIGEST256_LEN];
+ if (!parse_one_diff_hash(digest, hex, "X-Or-Diff-From-Consensus header",
+ "ignoring")) {
+ smartlist_add(*digests_out, tor_memdup(digest, sizeof(digest)));
+ }
+ } SMARTLIST_FOREACH_END(hex);
+ SMARTLIST_FOREACH(hex_digests, char *, cp, tor_free(cp));
+ smartlist_free(hex_digests);
+ tor_free(hdr);
+ return 0;
+}
- networkstatus_t *v;
- time_t now = time(NULL);
- const char *want_fps = NULL;
- char *flavor = NULL;
- int flav = FLAV_NS;
-#define CONSENSUS_URL_PREFIX "/tor/status-vote/current/consensus/"
-#define CONSENSUS_FLAVORED_PREFIX "/tor/status-vote/current/consensus-"
- /* figure out the flavor if any, and who we wanted to sign the thing */
- if (!strcmpstart(url, CONSENSUS_FLAVORED_PREFIX)) {
- const char *f, *cp;
- f = url + strlen(CONSENSUS_FLAVORED_PREFIX);
- cp = strchr(f, '/');
- if (cp) {
- want_fps = cp+1;
- flavor = tor_strndup(f, cp-f);
- } else {
- flavor = tor_strdup(f);
+/** Fallback compression method. The fallback compression method is used in
+ * case a client requests a non-compressed document. We only store compressed
+ * documents, so we use this compression method to fetch the document and let
+ * the spooling system do the streaming decompression.
+ */
+#define FALLBACK_COMPRESS_METHOD ZLIB_METHOD
+
+/**
+ * Try to find the best consensus diff possible in order to serve a client
+ * request for a diff from one of the consensuses in <b>digests</b> to the
+ * current consensus of flavor <b>flav</b>. The client supports the
+ * compression methods listed in the <b>compression_methods</b> bitfield:
+ * place the method chosen (if any) into <b>compression_used_out</b>.
+ */
+static struct consensus_cache_entry_t *
+find_best_diff(const smartlist_t *digests, int flav,
+ unsigned compression_methods,
+ compress_method_t *compression_used_out)
+{
+ struct consensus_cache_entry_t *result = NULL;
+
+ SMARTLIST_FOREACH_BEGIN(digests, const uint8_t *, diff_from) {
+ unsigned u;
+ for (u = 0; u < ARRAY_LENGTH(srv_meth_pref_precompressed); ++u) {
+ compress_method_t method = srv_meth_pref_precompressed[u];
+ if (0 == (compression_methods & (1u<<method)))
+ continue; // client doesn't like this one, or we don't have it.
+ if (consdiffmgr_find_diff_from(&result, flav, DIGEST_SHA3_256,
+ diff_from, DIGEST256_LEN,
+ method) == CONSDIFF_AVAILABLE) {
+ tor_assert_nonfatal(result);
+ *compression_used_out = method;
+ return result;
}
- flav = networkstatus_parse_flavor_name(flavor);
- if (flav < 0)
- flav = FLAV_NS;
- } else {
- if (!strcmpstart(url, CONSENSUS_URL_PREFIX))
- want_fps = url+strlen(CONSENSUS_URL_PREFIX);
}
+ } SMARTLIST_FOREACH_END(diff_from);
+
+ SMARTLIST_FOREACH_BEGIN(digests, const uint8_t *, diff_from) {
+ if (consdiffmgr_find_diff_from(&result, flav, DIGEST_SHA3_256, diff_from,
+ DIGEST256_LEN, FALLBACK_COMPRESS_METHOD) == CONSDIFF_AVAILABLE) {
+ tor_assert_nonfatal(result);
+ *compression_used_out = FALLBACK_COMPRESS_METHOD;
+ return result;
+ }
+ } SMARTLIST_FOREACH_END(diff_from);
- v = networkstatus_get_latest_consensus_by_flavor(flav);
+ return NULL;
+}
- if (v && !networkstatus_consensus_reasonably_live(v, now)) {
- write_http_status_line(conn, 404, "Consensus is too old");
- warn_consensus_is_too_old(v, flavor, now);
- smartlist_free(dir_fps);
- geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
- tor_free(flavor);
- goto done;
- }
+/** Lookup the cached consensus document by the flavor found in <b>flav</b>.
+ * The prefered set of compression methods should be listed in the
+ * <b>compression_methods</b> bitfield. The compression method chosen (if any)
+ * is stored in <b>compression_used_out</b>. */
+static struct consensus_cache_entry_t *
+find_best_consensus(int flav,
+ unsigned compression_methods,
+ compress_method_t *compression_used_out)
+{
+ struct consensus_cache_entry_t *result = NULL;
+ unsigned u;
- if (v && want_fps &&
- !client_likes_consensus(v, want_fps)) {
- write_http_status_line(conn, 404, "Consensus not signed by sufficient "
- "number of requested authorities");
- smartlist_free(dir_fps);
- geoip_note_ns_response(GEOIP_REJECT_NOT_ENOUGH_SIGS);
- tor_free(flavor);
- goto done;
- }
+ for (u = 0; u < ARRAY_LENGTH(srv_meth_pref_precompressed); ++u) {
+ compress_method_t method = srv_meth_pref_precompressed[u];
- {
- char *fp = tor_malloc_zero(DIGEST_LEN);
- if (flavor)
- strlcpy(fp, flavor, DIGEST_LEN);
- tor_free(flavor);
- smartlist_add(dir_fps, fp);
- }
- lifetime = (v && v->fresh_until > now) ? v->fresh_until - now : 0;
+ if (0 == (compression_methods & (1u<<method)))
+ continue;
- if (!smartlist_len(dir_fps)) { /* we failed to create/cache cp */
- write_http_status_line(conn, 503, "Network status object unavailable");
- smartlist_free(dir_fps);
- geoip_note_ns_response(GEOIP_REJECT_UNAVAILABLE);
- goto done;
+ if (consdiffmgr_find_consensus(&result, flav,
+ method) == CONSDIFF_AVAILABLE) {
+ tor_assert_nonfatal(result);
+ *compression_used_out = method;
+ return result;
}
+ }
- if (!dirserv_remove_old_statuses(dir_fps, if_modified_since)) {
- write_http_status_line(conn, 404, "Not found");
- SMARTLIST_FOREACH(dir_fps, char *, cp, tor_free(cp));
- smartlist_free(dir_fps);
- geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
- goto done;
- } else if (!smartlist_len(dir_fps)) {
- write_http_status_line(conn, 304, "Not modified");
- SMARTLIST_FOREACH(dir_fps, char *, cp, tor_free(cp));
- smartlist_free(dir_fps);
- geoip_note_ns_response(GEOIP_REJECT_NOT_MODIFIED);
- goto done;
- }
+ if (consdiffmgr_find_consensus(&result, flav,
+ FALLBACK_COMPRESS_METHOD) == CONSDIFF_AVAILABLE) {
+ tor_assert_nonfatal(result);
+ *compression_used_out = FALLBACK_COMPRESS_METHOD;
+ return result;
+ }
- size_t dlen = dirserv_estimate_data_size(dir_fps, 0, compressed);
- if (global_write_bucket_low(TO_CONN(conn), dlen, 2)) {
- log_debug(LD_DIRSERV,
- "Client asked for network status lists, but we've been "
- "writing too many bytes lately. Sending 503 Dir busy.");
- write_http_status_line(conn, 503, "Directory busy, try again later");
- SMARTLIST_FOREACH(dir_fps, char *, fp, tor_free(fp));
- smartlist_free(dir_fps);
+ return NULL;
+}
- geoip_note_ns_response(GEOIP_REJECT_BUSY);
- goto done;
+/** Try to find the best supported compression method possible from a given
+ * <b>compression_methods</b>. Return NO_METHOD if no mutually supported
+ * compression method could be found. */
+static compress_method_t
+find_best_compression_method(unsigned compression_methods, int stream)
+{
+ unsigned u;
+ compress_method_t *methods;
+ size_t length;
+
+ if (stream) {
+ methods = srv_meth_pref_streaming_compression;
+ length = ARRAY_LENGTH(srv_meth_pref_streaming_compression);
+ } else {
+ methods = srv_meth_pref_precompressed;
+ length = ARRAY_LENGTH(srv_meth_pref_precompressed);
+ }
+
+ for (u = 0; u < length; ++u) {
+ compress_method_t method = methods[u];
+ if (compression_methods & (1u<<method))
+ return method;
+ }
+
+ return NO_METHOD;
+}
+
+/** Check if any of the digests in <b>digests</b> matches the latest consensus
+ * flavor (given in <b>flavor</b>) that we have available. */
+static int
+digest_list_contains_best_consensus(consensus_flavor_t flavor,
+ const smartlist_t *digests)
+{
+ const networkstatus_t *ns = NULL;
+
+ if (digests == NULL)
+ return 0;
+
+ ns = networkstatus_get_latest_consensus_by_flavor(flavor);
+
+ if (ns == NULL)
+ return 0;
+
+ SMARTLIST_FOREACH_BEGIN(digests, const uint8_t *, digest) {
+ if (tor_memeq(ns->digest_sha3_as_signed, digest, DIGEST256_LEN))
+ return 1;
+ } SMARTLIST_FOREACH_END(digest);
+
+ return 0;
+}
+
+/** Check if the given compression method is allowed for a connection that is
+ * supposed to be anonymous. Returns 1 if the compression method is allowed,
+ * otherwise 0. */
+STATIC int
+allowed_anonymous_connection_compression_method(compress_method_t method)
+{
+ unsigned u;
+
+ for (u = 0; u < ARRAY_LENGTH(client_meth_allowed_anonymous_compression);
+ ++u) {
+ compress_method_t allowed_method =
+ client_meth_allowed_anonymous_compression[u];
+
+ if (! tor_compress_supports_method(allowed_method))
+ continue;
+
+ if (method == allowed_method)
+ return 1;
+ }
+
+ return 0;
+}
+
+/** Log a warning when a remote server has sent us a document using a
+ * compression method that is not allowed for anonymous directory requests. */
+STATIC void
+warn_disallowed_anonymous_compression_method(compress_method_t method)
+{
+ log_fn(LOG_PROTOCOL_WARN, LD_HTTP,
+ "Received a %s HTTP response, which is not "
+ "allowed for anonymous directory requests.",
+ compression_method_get_human_name(method));
+}
+
+/** Encodes the results of parsing a consensus request to figure out what
+ * consensus, and possibly what diffs, the user asked for. */
+typedef struct {
+ /** name of the flavor to retrieve. */
+ char *flavor;
+ /** flavor to retrive, as enum. */
+ consensus_flavor_t flav;
+ /** plus-separated list of authority fingerprints; see
+ * client_likes_consensus(). Aliases the URL in the request passed to
+ * parse_consensus_request(). */
+ const char *want_fps;
+ /** Optionally, a smartlist of sha3 digests-as-signed of the consensuses
+ * to return a diff from. */
+ smartlist_t *diff_from_digests;
+ /** If true, never send a full consensus. If there is no diff, send
+ * a 404 instead. */
+ int diff_only;
+} parsed_consensus_request_t;
+
+/** Remove all data held in <b>req</b>. Do not free <b>req</b> itself, since
+ * it is stack-allocated. */
+static void
+parsed_consensus_request_clear(parsed_consensus_request_t *req)
+{
+ if (!req)
+ return;
+ tor_free(req->flavor);
+ if (req->diff_from_digests) {
+ SMARTLIST_FOREACH(req->diff_from_digests, uint8_t *, d, tor_free(d));
+ smartlist_free(req->diff_from_digests);
+ }
+ memset(req, 0, sizeof(parsed_consensus_request_t));
+}
+
+/**
+ * Parse the URL and relevant headers of <b>args</b> for a current-consensus
+ * request to learn what flavor of consensus we want, what keys it must be
+ * signed with, and what diffs we would accept (or demand) instead. Return 0
+ * on success and -1 on failure.
+ */
+static int
+parse_consensus_request(parsed_consensus_request_t *out,
+ const get_handler_args_t *args)
+{
+ const char *url = args->url;
+ memset(out, 0, sizeof(parsed_consensus_request_t));
+ out->flav = FLAV_NS;
+
+ const char CONSENSUS_URL_PREFIX[] = "/tor/status-vote/current/consensus/";
+ const char CONSENSUS_FLAVORED_PREFIX[] =
+ "/tor/status-vote/current/consensus-";
+
+ /* figure out the flavor if any, and who we wanted to sign the thing */
+ const char *after_flavor = NULL;
+
+ if (!strcmpstart(url, CONSENSUS_FLAVORED_PREFIX)) {
+ const char *f, *cp;
+ f = url + strlen(CONSENSUS_FLAVORED_PREFIX);
+ cp = strchr(f, '/');
+ if (cp) {
+ after_flavor = cp+1;
+ out->flavor = tor_strndup(f, cp-f);
+ } else {
+ out->flavor = tor_strdup(f);
}
+ int flav = networkstatus_parse_flavor_name(out->flavor);
+ if (flav < 0)
+ flav = FLAV_NS;
+ out->flav = flav;
+ } else {
+ if (!strcmpstart(url, CONSENSUS_URL_PREFIX))
+ after_flavor = url+strlen(CONSENSUS_URL_PREFIX);
+ }
+
+ /* see whether we've been asked explicitly for a diff from an older
+ * consensus. (The user might also have said that a diff would be okay,
+ * via X-Or-Diff-From-Consensus */
+ const char DIFF_COMPONENT[] = "diff/";
+ char *diff_hash_in_url = NULL;
+ if (after_flavor && !strcmpstart(after_flavor, DIFF_COMPONENT)) {
+ after_flavor += strlen(DIFF_COMPONENT);
+ const char *cp = strchr(after_flavor, '/');
+ if (cp) {
+ diff_hash_in_url = tor_strndup(after_flavor, cp-after_flavor);
+ out->want_fps = cp+1;
+ } else {
+ diff_hash_in_url = tor_strdup(after_flavor);
+ out->want_fps = NULL;
+ }
+ } else {
+ out->want_fps = after_flavor;
+ }
+
+ if (diff_hash_in_url) {
+ uint8_t diff_from[DIGEST256_LEN];
+ out->diff_from_digests = smartlist_new();
+ out->diff_only = 1;
+ int ok = !parse_one_diff_hash(diff_from, diff_hash_in_url, "URL",
+ "rejecting");
+ tor_free(diff_hash_in_url);
+ if (ok) {
+ smartlist_add(out->diff_from_digests,
+ tor_memdup(diff_from, DIGEST256_LEN));
+ } else {
+ return -1;
+ }
+ } else {
+ parse_or_diff_from_header(&out->diff_from_digests, args->headers);
+ }
- tor_addr_t addr;
- if (tor_addr_parse(&addr, (TO_CONN(conn))->address) >= 0) {
- geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS,
- &addr, NULL,
- time(NULL));
- geoip_note_ns_response(GEOIP_SUCCESS);
- /* Note that a request for a network status has started, so that we
- * can measure the download time later on. */
- if (conn->dirreq_id)
- geoip_start_dirreq(conn->dirreq_id, dlen, DIRREQ_TUNNELED);
- else
- geoip_start_dirreq(TO_CONN(conn)->global_identifier, dlen,
- DIRREQ_DIRECT);
+ return 0;
+}
+
+/** Helper function for GET /tor/status-vote/current/consensus
+ */
+static int
+handle_get_current_consensus(dir_connection_t *conn,
+ const get_handler_args_t *args)
+{
+ const compress_method_t compress_method =
+ find_best_compression_method(args->compression_supported, 0);
+ const time_t if_modified_since = args->if_modified_since;
+ int clear_spool = 0;
+
+ /* v3 network status fetch. */
+ long lifetime = NETWORKSTATUS_CACHE_LIFETIME;
+
+ time_t now = time(NULL);
+ parsed_consensus_request_t req;
+
+ if (parse_consensus_request(&req, args) < 0) {
+ write_http_status_line(conn, 404, "Couldn't parse request");
+ goto done;
+ }
+
+ if (digest_list_contains_best_consensus(req.flav,
+ req.diff_from_digests)) {
+ write_http_status_line(conn, 304, "Not modified");
+ geoip_note_ns_response(GEOIP_REJECT_NOT_MODIFIED);
+ goto done;
+ }
+
+ struct consensus_cache_entry_t *cached_consensus = NULL;
+
+ compress_method_t compression_used = NO_METHOD;
+ if (req.diff_from_digests) {
+ cached_consensus = find_best_diff(req.diff_from_digests, req.flav,
+ args->compression_supported,
+ &compression_used);
+ }
+
+ if (req.diff_only && !cached_consensus) {
+ write_http_status_line(conn, 404, "No such diff available");
+ // XXXX warn_consensus_is_too_old(v, req.flavor, now);
+ geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
+ goto done;
+ }
+
+ if (! cached_consensus) {
+ cached_consensus = find_best_consensus(req.flav,
+ args->compression_supported,
+ &compression_used);
+ }
+
+ time_t fresh_until, valid_until;
+ int have_fresh_until = 0, have_valid_until = 0;
+ if (cached_consensus) {
+ have_fresh_until =
+ !consensus_cache_entry_get_fresh_until(cached_consensus, &fresh_until);
+ have_valid_until =
+ !consensus_cache_entry_get_valid_until(cached_consensus, &valid_until);
+ }
+
+ if (cached_consensus && have_valid_until &&
+ !networkstatus_valid_until_is_reasonably_live(valid_until, now)) {
+ write_http_status_line(conn, 404, "Consensus is too old");
+ warn_consensus_is_too_old(cached_consensus, req.flavor, now);
+ geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
+ goto done;
+ }
+
+ if (cached_consensus && req.want_fps &&
+ !client_likes_consensus(cached_consensus, req.want_fps)) {
+ write_http_status_line(conn, 404, "Consensus not signed by sufficient "
+ "number of requested authorities");
+ geoip_note_ns_response(GEOIP_REJECT_NOT_ENOUGH_SIGS);
+ goto done;
+ }
+
+ conn->spool = smartlist_new();
+ clear_spool = 1;
+ {
+ spooled_resource_t *spooled;
+ if (cached_consensus) {
+ spooled = spooled_resource_new_from_cache_entry(cached_consensus);
+ smartlist_add(conn->spool, spooled);
}
+ }
+
+ lifetime = (have_fresh_until && fresh_until > now) ? fresh_until - now : 0;
- write_http_response_header(conn, -1, compressed,
- smartlist_len(dir_fps) == 1 ? lifetime : 0);
- conn->fingerprint_stack = dir_fps;
- if (! compressed)
- conn->zlib_state = tor_zlib_new(0, ZLIB_METHOD, HIGH_COMPRESSION);
+ size_t size_guess = 0;
+ int n_expired = 0;
+ dirserv_spool_remove_missing_and_guess_size(conn, if_modified_since,
+ compress_method != NO_METHOD,
+ &size_guess,
+ &n_expired);
- /* Prime the connection with some data. */
- conn->dir_spool_src = DIR_SPOOL_NETWORKSTATUS;
- connection_dirserv_flushed_some(conn);
+ if (!smartlist_len(conn->spool) && !n_expired) {
+ write_http_status_line(conn, 404, "Not found");
+ geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
+ goto done;
+ } else if (!smartlist_len(conn->spool)) {
+ write_http_status_line(conn, 304, "Not modified");
+ geoip_note_ns_response(GEOIP_REJECT_NOT_MODIFIED);
goto done;
}
+ if (global_write_bucket_low(TO_CONN(conn), size_guess, 2)) {
+ log_debug(LD_DIRSERV,
+ "Client asked for network status lists, but we've been "
+ "writing too many bytes lately. Sending 503 Dir busy.");
+ write_http_status_line(conn, 503, "Directory busy, try again later");
+ geoip_note_ns_response(GEOIP_REJECT_BUSY);
+ goto done;
+ }
+
+ tor_addr_t addr;
+ if (tor_addr_parse(&addr, (TO_CONN(conn))->address) >= 0) {
+ geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS,
+ &addr, NULL,
+ time(NULL));
+ geoip_note_ns_response(GEOIP_SUCCESS);
+ /* Note that a request for a network status has started, so that we
+ * can measure the download time later on. */
+ if (conn->dirreq_id)
+ geoip_start_dirreq(conn->dirreq_id, size_guess, DIRREQ_TUNNELED);
+ else
+ geoip_start_dirreq(TO_CONN(conn)->global_identifier, size_guess,
+ DIRREQ_DIRECT);
+ }
+
+ /* Use this header to tell caches that the response depends on the
+ * X-Or-Diff-From-Consensus header (or lack thereof). */
+ const char vary_header[] = "Vary: X-Or-Diff-From-Consensus\r\n";
+
+ clear_spool = 0;
+
+ // The compress_method might have been NO_METHOD, but we store the data
+ // compressed. Decompress them using `compression_used`. See fallback code in
+ // find_best_consensus() and find_best_diff().
+ write_http_response_headers(conn, -1,
+ compress_method == NO_METHOD ?
+ NO_METHOD : compression_used,
+ vary_header,
+ smartlist_len(conn->spool) == 1 ? lifetime : 0);
+
+ if (compress_method == NO_METHOD && smartlist_len(conn->spool))
+ conn->compress_state = tor_compress_new(0, compression_used,
+ HIGH_COMPRESSION);
+
+ /* Prime the connection with some data. */
+ const int initial_flush_result = connection_dirserv_flushed_some(conn);
+ tor_assert_nonfatal(initial_flush_result == 0);
+ goto done;
+
done:
+ parsed_consensus_request_clear(&req);
+ if (clear_spool) {
+ dir_conn_clear_spool(conn);
+ }
return 0;
}
@@ -3163,12 +4257,14 @@ static int
handle_get_status_vote(dir_connection_t *conn, const get_handler_args_t *args)
{
const char *url = args->url;
- const int compressed = args->compressed;
{
int current;
ssize_t body_len = 0;
ssize_t estimated_len = 0;
+ /* This smartlist holds strings that we can compress on the fly. */
smartlist_t *items = smartlist_new();
+ /* This smartlist holds cached_dir_t objects that have a precompressed
+ * deflated version. */
smartlist_t *dir_items = smartlist_new();
int lifetime = 60; /* XXXX?? should actually use vote intervals. */
url += strlen("/tor/status-vote/");
@@ -3219,12 +4315,33 @@ handle_get_status_vote(dir_connection_t *conn, const get_handler_args_t *args)
write_http_status_line(conn, 404, "Not found");
goto vote_done;
}
+
+ /* We're sending items from at most one kind of source */
+ tor_assert_nonfatal(smartlist_len(items) == 0 ||
+ smartlist_len(dir_items) == 0);
+
+ int streaming;
+ unsigned mask;
+ if (smartlist_len(items)) {
+ /* We're taking strings and compressing them on the fly. */
+ streaming = 1;
+ mask = ~0u;
+ } else {
+ /* We're taking cached_dir_t objects. We only have them uncompressed
+ * or deflated. */
+ streaming = 0;
+ mask = (1u<<NO_METHOD) | (1u<<ZLIB_METHOD);
+ }
+ const compress_method_t compress_method = find_best_compression_method(
+ args->compression_supported&mask, streaming);
+
SMARTLIST_FOREACH(dir_items, cached_dir_t *, d,
- body_len += compressed ? d->dir_z_len : d->dir_len);
+ body_len += compress_method != NO_METHOD ?
+ d->dir_compressed_len : d->dir_len);
estimated_len += body_len;
SMARTLIST_FOREACH(items, const char *, item, {
size_t ln = strlen(item);
- if (compressed) {
+ if (compress_method != NO_METHOD) {
estimated_len += ln/2;
} else {
body_len += ln; estimated_len += ln;
@@ -3235,24 +4352,27 @@ handle_get_status_vote(dir_connection_t *conn, const get_handler_args_t *args)
write_http_status_line(conn, 503, "Directory busy, try again later");
goto vote_done;
}
- write_http_response_header(conn, body_len ? body_len : -1, compressed,
+ write_http_response_header(conn, body_len ? body_len : -1,
+ compress_method,
lifetime);
if (smartlist_len(items)) {
- if (compressed) {
- conn->zlib_state = tor_zlib_new(1, ZLIB_METHOD,
- choose_compression_level(estimated_len));
+ if (compress_method != NO_METHOD) {
+ conn->compress_state = tor_compress_new(1, compress_method,
+ choose_compression_level(estimated_len));
SMARTLIST_FOREACH(items, const char *, c,
- connection_write_to_buf_zlib(c, strlen(c), conn, 0));
- connection_write_to_buf_zlib("", 0, conn, 1);
+ connection_write_to_buf_compress(c, strlen(c), conn, 0));
+ connection_write_to_buf_compress("", 0, conn, 1);
} else {
SMARTLIST_FOREACH(items, const char *, c,
connection_write_to_buf(c, strlen(c), TO_CONN(conn)));
}
} else {
SMARTLIST_FOREACH(dir_items, cached_dir_t *, d,
- connection_write_to_buf(compressed ? d->dir_z : d->dir,
- compressed ? d->dir_z_len : d->dir_len,
+ connection_write_to_buf(compress_method != NO_METHOD ?
+ d->dir_compressed : d->dir,
+ compress_method != NO_METHOD ?
+ d->dir_compressed_len : d->dir_len,
TO_CONN(conn)));
}
vote_done:
@@ -3270,44 +4390,51 @@ static int
handle_get_microdesc(dir_connection_t *conn, const get_handler_args_t *args)
{
const char *url = args->url;
- const int compressed = args->compressed;
+ const compress_method_t compress_method =
+ find_best_compression_method(args->compression_supported, 1);
+ int clear_spool = 1;
{
- smartlist_t *fps = smartlist_new();
+ conn->spool = smartlist_new();
- dir_split_resource_into_fingerprints(url+strlen("/tor/micro/d/"),
- fps, NULL,
+ dir_split_resource_into_spoolable(url+strlen("/tor/micro/d/"),
+ DIR_SPOOL_MICRODESC,
+ conn->spool, NULL,
DSR_DIGEST256|DSR_BASE64|DSR_SORT_UNIQ);
- if (!dirserv_have_any_microdesc(fps)) {
+ size_t size_guess = 0;
+ dirserv_spool_remove_missing_and_guess_size(conn, 0,
+ compress_method != NO_METHOD,
+ &size_guess, NULL);
+ if (smartlist_len(conn->spool) == 0) {
write_http_status_line(conn, 404, "Not found");
- SMARTLIST_FOREACH(fps, char *, fp, tor_free(fp));
- smartlist_free(fps);
goto done;
}
- size_t dlen = dirserv_estimate_microdesc_size(fps, compressed);
- if (global_write_bucket_low(TO_CONN(conn), dlen, 2)) {
+ if (global_write_bucket_low(TO_CONN(conn), size_guess, 2)) {
log_info(LD_DIRSERV,
"Client asked for server descriptors, but we've been "
"writing too many bytes lately. Sending 503 Dir busy.");
write_http_status_line(conn, 503, "Directory busy, try again later");
- SMARTLIST_FOREACH(fps, char *, fp, tor_free(fp));
- smartlist_free(fps);
goto done;
}
- write_http_response_header(conn, -1, compressed, MICRODESC_CACHE_LIFETIME);
- conn->dir_spool_src = DIR_SPOOL_MICRODESC;
- conn->fingerprint_stack = fps;
+ clear_spool = 0;
+ write_http_response_header(conn, -1,
+ compress_method,
+ MICRODESC_CACHE_LIFETIME);
- if (compressed)
- conn->zlib_state = tor_zlib_new(1, ZLIB_METHOD,
- choose_compression_level(dlen));
+ if (compress_method != NO_METHOD)
+ conn->compress_state = tor_compress_new(1, compress_method,
+ choose_compression_level(size_guess));
- connection_dirserv_flushed_some(conn);
+ const int initial_flush_result = connection_dirserv_flushed_some(conn);
+ tor_assert_nonfatal(initial_flush_result == 0);
goto done;
}
done:
+ if (clear_spool) {
+ dir_conn_clear_spool(conn);
+ }
return 0;
}
@@ -3317,71 +4444,92 @@ static int
handle_get_descriptor(dir_connection_t *conn, const get_handler_args_t *args)
{
const char *url = args->url;
- const int compressed = args->compressed;
+ const compress_method_t compress_method =
+ find_best_compression_method(args->compression_supported, 1);
const or_options_t *options = get_options();
+ int clear_spool = 1;
if (!strcmpstart(url,"/tor/server/") ||
(!options->BridgeAuthoritativeDir &&
!options->BridgeRelay && !strcmpstart(url,"/tor/extra/"))) {
- size_t dlen;
int res;
- const char *msg;
+ const char *msg = NULL;
int cache_lifetime = 0;
int is_extra = !strcmpstart(url,"/tor/extra/");
url += is_extra ? strlen("/tor/extra/") : strlen("/tor/server/");
- conn->fingerprint_stack = smartlist_new();
- res = dirserv_get_routerdesc_fingerprints(conn->fingerprint_stack, url,
- &msg,
- !connection_dir_is_encrypted(conn),
- is_extra);
-
- if (!strcmpstart(url, "fp/")) {
- if (smartlist_len(conn->fingerprint_stack) == 1)
- cache_lifetime = ROUTERDESC_CACHE_LIFETIME;
- } else if (!strcmpstart(url, "authority")) {
- cache_lifetime = ROUTERDESC_CACHE_LIFETIME;
- } else if (!strcmpstart(url, "all")) {
- cache_lifetime = FULL_DIR_CACHE_LIFETIME;
- } else if (!strcmpstart(url, "d/")) {
- if (smartlist_len(conn->fingerprint_stack) == 1)
- cache_lifetime = ROUTERDESC_BY_DIGEST_CACHE_LIFETIME;
- }
- if (!strcmpstart(url, "d/"))
- conn->dir_spool_src =
+ dir_spool_source_t source;
+ time_t publish_cutoff = 0;
+ if (!strcmpstart(url, "d/")) {
+ source =
is_extra ? DIR_SPOOL_EXTRA_BY_DIGEST : DIR_SPOOL_SERVER_BY_DIGEST;
- else
- conn->dir_spool_src =
+ } else {
+ source =
is_extra ? DIR_SPOOL_EXTRA_BY_FP : DIR_SPOOL_SERVER_BY_FP;
+ /* We only want to apply a publish cutoff when we're requesting
+ * resources by fingerprint. */
+ publish_cutoff = time(NULL) - ROUTER_MAX_AGE_TO_PUBLISH;
+ }
+
+ conn->spool = smartlist_new();
+ res = dirserv_get_routerdesc_spool(conn->spool, url,
+ source,
+ connection_dir_is_encrypted(conn),
+ &msg);
- if (!dirserv_have_any_serverdesc(conn->fingerprint_stack,
- conn->dir_spool_src)) {
- res = -1;
- msg = "Not found";
+ if (!strcmpstart(url, "all")) {
+ cache_lifetime = FULL_DIR_CACHE_LIFETIME;
+ } else if (smartlist_len(conn->spool) == 1) {
+ cache_lifetime = ROUTERDESC_BY_DIGEST_CACHE_LIFETIME;
}
- if (res < 0)
+ size_t size_guess = 0;
+ int n_expired = 0;
+ dirserv_spool_remove_missing_and_guess_size(conn, publish_cutoff,
+ compress_method != NO_METHOD,
+ &size_guess, &n_expired);
+
+ /* If we are the bridge authority and the descriptor is a bridge
+ * descriptor, remember that we served this descriptor for desc stats. */
+ /* XXXX it's a bit of a kludge to have this here. */
+ if (get_options()->BridgeAuthoritativeDir &&
+ source == DIR_SPOOL_SERVER_BY_FP) {
+ SMARTLIST_FOREACH_BEGIN(conn->spool, spooled_resource_t *, spooled) {
+ const routerinfo_t *router =
+ router_get_by_id_digest((const char *)spooled->digest);
+ /* router can be NULL here when the bridge auth is asked for its own
+ * descriptor. */
+ if (router && router->purpose == ROUTER_PURPOSE_BRIDGE)
+ rep_hist_note_desc_served(router->cache_info.identity_digest);
+ } SMARTLIST_FOREACH_END(spooled);
+ }
+
+ if (res < 0 || size_guess == 0 || smartlist_len(conn->spool) == 0) {
+ if (msg == NULL)
+ msg = "Not found";
write_http_status_line(conn, 404, msg);
- else {
- dlen = dirserv_estimate_data_size(conn->fingerprint_stack,
- 1, compressed);
- if (global_write_bucket_low(TO_CONN(conn), dlen, 2)) {
+ } else {
+ if (global_write_bucket_low(TO_CONN(conn), size_guess, 2)) {
log_info(LD_DIRSERV,
"Client asked for server descriptors, but we've been "
"writing too many bytes lately. Sending 503 Dir busy.");
write_http_status_line(conn, 503, "Directory busy, try again later");
- conn->dir_spool_src = DIR_SPOOL_NONE;
+ dir_conn_clear_spool(conn);
goto done;
}
- write_http_response_header(conn, -1, compressed, cache_lifetime);
- if (compressed)
- conn->zlib_state = tor_zlib_new(1, ZLIB_METHOD,
- choose_compression_level(dlen));
+ write_http_response_header(conn, -1, compress_method, cache_lifetime);
+ if (compress_method != NO_METHOD)
+ conn->compress_state = tor_compress_new(1, compress_method,
+ choose_compression_level(size_guess));
+ clear_spool = 0;
/* Prime the connection with some data. */
- connection_dirserv_flushed_some(conn);
+ int initial_flush_result = connection_dirserv_flushed_some(conn);
+ tor_assert_nonfatal(initial_flush_result == 0);
}
goto done;
}
done:
- return 0;
+ if (clear_spool)
+ dir_conn_clear_spool(conn);
+ return 0;
}
/** Helper function for GET /tor/keys/...
@@ -3390,7 +4538,8 @@ static int
handle_get_keys(dir_connection_t *conn, const get_handler_args_t *args)
{
const char *url = args->url;
- const int compressed = args->compressed;
+ const compress_method_t compress_method =
+ find_best_compression_method(args->compression_supported, 1);
const time_t if_modified_since = args->if_modified_since;
{
smartlist_t *certs = smartlist_new();
@@ -3453,20 +4602,26 @@ handle_get_keys(dir_connection_t *conn, const get_handler_args_t *args)
SMARTLIST_FOREACH(certs, authority_cert_t *, c,
len += c->cache_info.signed_descriptor_len);
- if (global_write_bucket_low(TO_CONN(conn), compressed?len/2:len, 2)) {
+ if (global_write_bucket_low(TO_CONN(conn),
+ compress_method != NO_METHOD ? len/2 : len,
+ 2)) {
write_http_status_line(conn, 503, "Directory busy, try again later");
goto keys_done;
}
- write_http_response_header(conn, compressed?-1:len, compressed, 60*60);
- if (compressed) {
- conn->zlib_state = tor_zlib_new(1, ZLIB_METHOD,
- choose_compression_level(len));
+ write_http_response_header(conn,
+ compress_method != NO_METHOD ? -1 : len,
+ compress_method,
+ 60*60);
+ if (compress_method != NO_METHOD) {
+ conn->compress_state = tor_compress_new(1, compress_method,
+ choose_compression_level(len));
SMARTLIST_FOREACH(certs, authority_cert_t *, c,
- connection_write_to_buf_zlib(c->cache_info.signed_descriptor_body,
- c->cache_info.signed_descriptor_len,
- conn, 0));
- connection_write_to_buf_zlib("", 0, conn, 1);
+ connection_write_to_buf_compress(
+ c->cache_info.signed_descriptor_body,
+ c->cache_info.signed_descriptor_len,
+ conn, 0));
+ connection_write_to_buf_compress("", 0, conn, 1);
} else {
SMARTLIST_FOREACH(certs, authority_cert_t *, c,
connection_write_to_buf(c->cache_info.signed_descriptor_body,
@@ -3497,7 +4652,7 @@ handle_get_hs_descriptor_v2(dir_connection_t *conn,
safe_str(escaped(query)));
switch (rend_cache_lookup_v2_desc_as_dir(query, &descp)) {
case 1: /* valid */
- write_http_response_header(conn, strlen(descp), 0, 0);
+ write_http_response_header(conn, strlen(descp), NO_METHOD, 0);
connection_write_to_buf(descp, strlen(descp), TO_CONN(conn));
break;
case 0: /* well-formed but not present */
@@ -3549,7 +4704,7 @@ handle_get_hs_descriptor_v3(dir_connection_t *conn,
}
/* Found requested descriptor! Pass it to this nice client. */
- write_http_response_header(conn, strlen(desc_str), 0, 0);
+ write_http_response_header(conn, strlen(desc_str), NO_METHOD, 0);
connection_write_to_buf(desc_str, strlen(desc_str), TO_CONN(conn));
done:
@@ -3588,7 +4743,7 @@ handle_get_networkstatus_bridges(dir_connection_t *conn,
/* all happy now. send an answer. */
status = networkstatus_getinfo_by_purpose("bridge", time(NULL));
size_t dlen = strlen(status);
- write_http_response_header(conn, dlen, 0, 0);
+ write_http_response_header(conn, dlen, NO_METHOD, 0);
connection_write_to_buf(status, dlen, TO_CONN(conn));
tor_free(status);
goto done;
@@ -3605,7 +4760,7 @@ handle_get_robots(dir_connection_t *conn, const get_handler_args_t *args)
{
const char robots[] = "User-agent: *\r\nDisallow: /\r\n";
size_t len = strlen(robots);
- write_http_response_header(conn, len, 0, ROBOTS_CACHE_LIFETIME);
+ write_http_response_header(conn, len, NO_METHOD, ROBOTS_CACHE_LIFETIME);
connection_write_to_buf(robots, len, TO_CONN(conn));
}
return 0;
@@ -3728,7 +4883,7 @@ directory_handle_command_post,(dir_connection_t *conn, const char *headers,
if (connection_dir_is_encrypted(conn) &&
!strcmpstart(url,"/tor/rendezvous2/publish")) {
if (rend_cache_store_v2_desc_as_dir(body) < 0) {
- log_warn(LD_REND, "Rejected v2 rend descriptor (length %d) from %s.",
+ log_warn(LD_REND, "Rejected v2 rend descriptor (body size %d) from %s.",
(int)body_len, conn->base_.address);
write_http_status_line(conn, 400,
"Invalid v2 service descriptor rejected");
@@ -3771,14 +4926,7 @@ directory_handle_command_post,(dir_connection_t *conn, const char *headers,
conn->base_.address, &msg);
tor_assert(msg);
- if (r == ROUTER_ADDED_NOTIFY_GENERATOR) {
- /* Accepted with a message. */
- log_info(LD_DIRSERV,
- "Problematic router descriptor or extra-info from %s "
- "(\"%s\").",
- conn->base_.address, msg);
- write_http_status_line(conn, 400, msg);
- } else if (r == ROUTER_ADDED_SUCCESSFULLY) {
+ if (r == ROUTER_ADDED_SUCCESSFULLY) {
write_http_status_line(conn, 200, msg);
} else if (WRA_WAS_OUTDATED(r)) {
write_http_response_header_impl(conn, -1, NULL, NULL,
@@ -3905,7 +5053,7 @@ connection_dir_finished_flushing(dir_connection_t *conn)
conn->base_.state = DIR_CONN_STATE_CLIENT_READING;
return 0;
case DIR_CONN_STATE_SERVER_WRITING:
- if (conn->dir_spool_src != DIR_SPOOL_NONE) {
+ if (conn->spool) {
log_warn(LD_BUG, "Emptied a dirserv buffer, but it's still spooling!");
connection_mark_for_close(TO_CONN(conn));
} else {
@@ -4399,13 +5547,14 @@ dir_routerdesc_download_failed(smartlist_t *failed, int status_code,
* every 10 or 60 seconds (FOO_DESCRIPTOR_RETRY_INTERVAL) in main.c. */
}
-/** Called when a connection to download microdescriptors has failed in whole
- * or in part. <b>failed</b> is a list of every microdesc digest we didn't
- * get. <b>status_code</b> is the http status code we received. Reschedule the
- * microdesc downloads as appropriate. */
+/** Called when a connection to download microdescriptors from relay with
+ * <b>dir_id</b> has failed in whole or in part. <b>failed</b> is a list
+ * of every microdesc digest we didn't get. <b>status_code</b> is the http
+ * status code we received. Reschedule the microdesc downloads as
+ * appropriate. */
static void
dir_microdesc_download_failed(smartlist_t *failed,
- int status_code)
+ int status_code, const char *dir_id)
{
networkstatus_t *consensus
= networkstatus_get_latest_consensus_by_flavor(FLAV_MICRODESC);
@@ -4416,17 +5565,26 @@ dir_microdesc_download_failed(smartlist_t *failed,
if (! consensus)
return;
+
+ /* We failed to fetch a microdescriptor from 'dir_id', note it down
+ * so that we don't try the same relay next time... */
+ microdesc_note_outdated_dirserver(dir_id);
+
SMARTLIST_FOREACH_BEGIN(failed, const char *, d) {
rs = router_get_mutable_consensus_status_by_descriptor_digest(consensus,d);
if (!rs)
continue;
dls = &rs->dl_status;
if (dls->n_download_failures >=
- get_options()->TestingMicrodescMaxDownloadTries)
+ get_options()->TestingMicrodescMaxDownloadTries) {
continue;
- {
+ }
+
+ { /* Increment the failure count for this md fetch */
char buf[BASE64_DIGEST256_LEN+1];
digest256_to_base64(buf, d);
+ log_info(LD_DIR, "Failed to download md %s from %s",
+ buf, hex_str(dir_id, DIGEST_LEN));
download_status_increment_failure(dls, status_code, buf,
server, now);
}
@@ -4588,3 +5746,34 @@ dir_split_resource_into_fingerprints(const char *resource,
return 0;
}
+/** As dir_split_resource_into_fingerprints, but instead fills
+ * <b>spool_out</b> with a list of spoolable_resource_t for the resource
+ * identified through <b>source</b>. */
+int
+dir_split_resource_into_spoolable(const char *resource,
+ dir_spool_source_t source,
+ smartlist_t *spool_out,
+ int *compressed_out,
+ int flags)
+{
+ smartlist_t *fingerprints = smartlist_new();
+
+ tor_assert(flags & (DSR_HEX|DSR_BASE64));
+ const size_t digest_len =
+ (flags & DSR_DIGEST256) ? DIGEST256_LEN : DIGEST_LEN;
+
+ int r = dir_split_resource_into_fingerprints(resource, fingerprints,
+ compressed_out, flags);
+ /* This is not a very efficient implementation XXXX */
+ SMARTLIST_FOREACH_BEGIN(fingerprints, uint8_t *, digest) {
+ spooled_resource_t *spooled =
+ spooled_resource_new(source, digest, digest_len);
+ if (spooled)
+ smartlist_add(spool_out, spooled);
+ tor_free(digest);
+ } SMARTLIST_FOREACH_END(digest);
+
+ smartlist_free(fingerprints);
+ return r;
+}
+
diff --git a/src/or/directory.h b/src/or/directory.h
index 1459c3bbdb..571c30a0fc 100644
--- a/src/or/directory.h
+++ b/src/or/directory.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -41,46 +41,53 @@ typedef enum {
int directory_must_use_begindir(const or_options_t *options);
-MOCK_DECL(void, directory_initiate_command_routerstatus,
- (const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- struct circuit_guard_state_t *guard_state));
-
-void directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- const rend_data_t *rend_query,
- struct circuit_guard_state_t *guard_state);
+/**
+ * A directory_request_t describes the information about a directory request
+ * at the client side. It describes what we're going to ask for, which
+ * directory we're going to ask for it, how we're going to contact that
+ * directory, and (in some cases) what to do with it when we're done.
+ */
+typedef struct directory_request_t directory_request_t;
+directory_request_t *directory_request_new(uint8_t dir_purpose);
+void directory_request_free(directory_request_t *req);
+void directory_request_set_or_addr_port(directory_request_t *req,
+ const tor_addr_port_t *p);
+void directory_request_set_dir_addr_port(directory_request_t *req,
+ const tor_addr_port_t *p);
+void directory_request_set_directory_id_digest(directory_request_t *req,
+ const char *digest);
+void directory_request_set_guard_state(directory_request_t *req,
+ struct circuit_guard_state_t *state);
+void directory_request_set_router_purpose(directory_request_t *req,
+ uint8_t router_purpose);
+void directory_request_set_indirection(directory_request_t *req,
+ dir_indirection_t indirection);
+void directory_request_set_resource(directory_request_t *req,
+ const char *resource);
+void directory_request_set_payload(directory_request_t *req,
+ const char *payload,
+ size_t payload_len);
+void directory_request_set_if_modified_since(directory_request_t *req,
+ time_t if_modified_since);
+void directory_request_set_rend_query(directory_request_t *req,
+ const rend_data_t *query);
+
+void directory_request_set_routerstatus(directory_request_t *req,
+ const routerstatus_t *rs);
+void directory_request_add_header(directory_request_t *req,
+ const char *key,
+ const char *val);
+MOCK_DECL(void, directory_initiate_request, (directory_request_t *request));
int parse_http_response(const char *headers, int *code, time_t *date,
compress_method_t *compression, char **response);
-int connection_dir_is_encrypted(dir_connection_t *conn);
+int connection_dir_is_encrypted(const dir_connection_t *conn);
int connection_dir_reached_eof(dir_connection_t *conn);
int connection_dir_process_inbuf(dir_connection_t *conn);
int connection_dir_finished_flushing(dir_connection_t *conn);
int connection_dir_finished_connecting(dir_connection_t *conn);
void connection_dir_about_to_close(dir_connection_t *dir_conn);
-void directory_initiate_command(const tor_addr_t *or_addr, uint16_t or_port,
- const tor_addr_t *dir_addr, uint16_t dir_port,
- const char *digest,
- uint8_t dir_purpose, uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload, size_t payload_len,
- time_t if_modified_since,
- struct circuit_guard_state_t *guard_state);
#define DSR_HEX (1<<0)
#define DSR_BASE64 (1<<1)
@@ -89,7 +96,12 @@ void directory_initiate_command(const tor_addr_t *or_addr, uint16_t or_port,
int dir_split_resource_into_fingerprints(const char *resource,
smartlist_t *fp_out, int *compressed_out,
int flags);
-
+enum dir_spool_source_t;
+int dir_split_resource_into_spoolable(const char *resource,
+ enum dir_spool_source_t source,
+ smartlist_t *spool_out,
+ int *compressed_out,
+ int flags);
int dir_split_resource_into_fingerprint_pairs(const char *res,
smartlist_t *pairs_out);
char *directory_dump_request_log(void);
@@ -150,8 +162,16 @@ struct get_handler_args_t;
STATIC int handle_get_hs_descriptor_v3(dir_connection_t *conn,
const struct get_handler_args_t *args);
STATIC int directory_handle_command(dir_connection_t *conn);
+STATIC char *accept_encoding_header(void);
+STATIC int allowed_anonymous_connection_compression_method(compress_method_t);
+STATIC void warn_disallowed_anonymous_compression_method(compress_method_t);
-#endif
+struct response_handler_args_t;
+
+STATIC int handle_response_fetch_microdesc(dir_connection_t *conn,
+ const struct response_handler_args_t *args);
+
+#endif /* defined(DIRECTORY_PRIVATE) */
#ifdef TOR_UNIT_TESTS
/* Used only by test_dir.c */
@@ -177,7 +197,7 @@ STATIC int handle_post_hs_descriptor(const char *url, const char *body);
STATIC char* authdir_type_to_string(dirinfo_type_t auth);
STATIC const char * dir_conn_purpose_to_string(int purpose);
STATIC int should_use_directory_guards(const or_options_t *options);
-STATIC zlib_compression_level_t choose_compression_level(ssize_t n_bytes);
+STATIC compression_level_t choose_compression_level(ssize_t n_bytes);
STATIC const smartlist_t *find_dl_schedule(download_status_t *dls,
const or_options_t *options);
STATIC void find_dl_min_and_max_delay(download_status_t *dls,
@@ -188,6 +208,7 @@ STATIC int next_random_exponential_delay(int delay, int max_delay);
STATIC int parse_hs_version_from_post(const char *url, const char *prefix,
const char **end_pos);
+STATIC unsigned parse_accept_encoding_header(const char *h);
#endif
#endif
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 0e8a534eaf..8cbf7d7bc8 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRSERV_PRIVATE
@@ -13,6 +13,8 @@
#include "command.h"
#include "connection.h"
#include "connection_or.h"
+#include "conscache.h"
+#include "consdiffmgr.h"
#include "control.h"
#include "directory.h"
#include "dirserv.h"
@@ -81,14 +83,23 @@ dirserv_get_status_impl(const char *fp, const char *nickname,
int severity);
static void clear_cached_dir(cached_dir_t *d);
static const signed_descriptor_t *get_signed_descriptor_by_fp(
- const char *fp,
- int extrainfo,
- time_t publish_cutoff);
+ const uint8_t *fp,
+ int extrainfo);
static was_router_added_t dirserv_add_extrainfo(extrainfo_t *ei,
const char **msg);
static uint32_t dirserv_get_bandwidth_for_router_kb(const routerinfo_t *ri);
static uint32_t dirserv_get_credible_bandwidth_kb(const routerinfo_t *ri);
+static int spooled_resource_lookup_body(const spooled_resource_t *spooled,
+ int conn_is_encrypted,
+ const uint8_t **body_out,
+ size_t *size_out,
+ time_t *published_out);
+static cached_dir_t *spooled_resource_lookup_cached_dir(
+ const spooled_resource_t *spooled,
+ time_t *published_out);
+static cached_dir_t *lookup_cached_dir_by_fp(const uint8_t *fp);
+
/************** Fingerprint handling code ************/
/* 1 Historically used to indicate Named */
@@ -406,7 +417,10 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
if (result & FP_REJECT) {
if (msg)
- *msg = "Fingerprint is marked rejected -- please contact us?";
+ *msg = "Fingerprint is marked rejected -- if you think this is a "
+ "mistake please set a valid email address in ContactInfo and "
+ "send an email to bad-relays@lists.torproject.org mentioning "
+ "your fingerprint(s)?";
return FP_REJECT;
} else if (result & FP_INVALID) {
if (msg)
@@ -424,7 +438,10 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
log_fn(severity, LD_DIRSERV, "Rejecting '%s' because of address '%s'",
nickname, fmt_addr32(addr));
if (msg)
- *msg = "Suspicious relay address range -- please contact us?";
+ *msg = "Suspicious relay address range -- if you think this is a "
+ "mistake please set a valid email address in ContactInfo and "
+ "send an email to bad-relays@lists.torproject.org mentioning "
+ "your address(es) and fingerprint(s)?";
return FP_REJECT;
}
if (!authdir_policy_valid_address(addr, or_port)) {
@@ -577,6 +594,8 @@ dirserv_add_multiple_descriptors(const char *desc, uint8_t purpose,
!general ? router_purpose_to_string(purpose) : "",
!general ? "\n" : "")<0) {
*msg = "Couldn't format annotations";
+ /* XXX Not cool: we return -1 below, but (was_router_added_t)-1 is
+ * ROUTER_BAD_EI, which isn't what's gone wrong here. :( */
return -1;
}
@@ -707,7 +726,12 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
log_info(LD_DIRSERV, "Dropping descriptor from %s (source: %s) because "
"its key did not match an older RSA/Ed25519 keypair",
router_describe(ri), source);
- *msg = "Looks like your keypair does not match its older value.";
+ *msg = "Looks like your keypair has changed? This authority previously "
+ "recorded a different RSA identity for this Ed25519 identity (or vice "
+ "versa.) Did you replace or copy some of your key files, but not "
+ "the others? You should either restore the expected keypair, or "
+ "delete your keys and restart Tor to start your relay with a new "
+ "identity.";
r = ROUTER_AUTHDIR_REJECTS;
goto fail;
}
@@ -867,6 +891,9 @@ directory_remove_invalid(void)
* Allocate and return a description of the status of the server <b>desc</b>,
* for use in a v1-style router-status line. The server is listed
* as running iff <b>is_live</b> is true.
+ *
+ * This is deprecated: it's only used for controllers that want outputs in
+ * the old format.
*/
static char *
list_single_server_status(const routerinfo_t *desc, int is_live)
@@ -979,6 +1006,9 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now)
* *<b>router_status_out</b>. Return 0 on success, -1 on failure.
*
* If for_controller is true, include the routers with very old descriptors.
+ *
+ * This is deprecated: it's only used for controllers that want outputs in
+ * the old format.
*/
int
list_server_status_v1(smartlist_t *routers, char **router_status_out,
@@ -1214,8 +1244,8 @@ new_cached_dir(char *s, time_t published)
d->dir = s;
d->dir_len = strlen(s);
d->published = published;
- if (tor_gzip_compress(&(d->dir_z), &(d->dir_z_len), d->dir, d->dir_len,
- ZLIB_METHOD)) {
+ if (tor_compress(&(d->dir_compressed), &(d->dir_compressed_len),
+ d->dir, d->dir_len, ZLIB_METHOD)) {
log_warn(LD_BUG, "Error compressing directory");
}
return d;
@@ -1226,7 +1256,7 @@ static void
clear_cached_dir(cached_dir_t *d)
{
tor_free(d->dir);
- tor_free(d->dir_z);
+ tor_free(d->dir_compressed);
memset(d, 0, sizeof(cached_dir_t));
}
@@ -1249,6 +1279,7 @@ void
dirserv_set_cached_consensus_networkstatus(const char *networkstatus,
const char *flavor_name,
const common_digests_t *digests,
+ const uint8_t *sha3_as_signed,
time_t published)
{
cached_dir_t *new_networkstatus;
@@ -1258,6 +1289,8 @@ dirserv_set_cached_consensus_networkstatus(const char *networkstatus,
new_networkstatus = new_cached_dir(tor_strdup(networkstatus), published);
memcpy(&new_networkstatus->digests, digests, sizeof(common_digests_t));
+ memcpy(&new_networkstatus->digest_sha3_as_signed, sha3_as_signed,
+ DIGEST256_LEN);
old_networkstatus = strmap_set(cached_consensuses, flavor_name,
new_networkstatus);
if (old_networkstatus)
@@ -2748,14 +2781,23 @@ dirserv_read_measured_bandwidths(const char *from_file,
time_t file_time, now;
int ok;
+ /* 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;
}
- if (!fgets(line, sizeof(line), fp)
- || !strlen(line) || line[strlen(line)-1] != '\n') {
+ /* If fgets fails, line is either unmodified, or indeterminate. */
+ if (!fgets(line, sizeof(line), fp)) {
+ log_warn(LD_DIRSERV, "Empty bandwidth file");
+ fclose(fp);
+ return -1;
+ }
+
+ if (!strlen(line) || line[strlen(line)-1] != '\n') {
log_warn(LD_DIRSERV, "Long or truncated time in bandwidth file: %s",
escaped(line));
fclose(fp);
@@ -3090,58 +3132,61 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
* requests, adds identity digests.
*/
int
-dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
- const char **msg, int for_unencrypted_conn,
- int is_extrainfo)
+dirserv_get_routerdesc_spool(smartlist_t *spool_out,
+ const char *key,
+ dir_spool_source_t source,
+ int conn_is_encrypted,
+ const char **msg_out)
{
- int by_id = 1;
- *msg = NULL;
+ *msg_out = NULL;
if (!strcmp(key, "all")) {
- routerlist_t *rl = router_get_routerlist();
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
- smartlist_add(fps_out,
- tor_memdup(r->cache_info.identity_digest, DIGEST_LEN)));
- /* Treat "all" requests as if they were unencrypted */
- for_unencrypted_conn = 1;
+ const routerlist_t *rl = router_get_routerlist();
+ SMARTLIST_FOREACH_BEGIN(rl->routers, const routerinfo_t *, r) {
+ spooled_resource_t *spooled;
+ spooled = spooled_resource_new(source,
+ (const uint8_t *)r->cache_info.identity_digest,
+ DIGEST_LEN);
+ /* Treat "all" requests as if they were unencrypted */
+ conn_is_encrypted = 0;
+ smartlist_add(spool_out, spooled);
+ } SMARTLIST_FOREACH_END(r);
} else if (!strcmp(key, "authority")) {
const routerinfo_t *ri = router_get_my_routerinfo();
if (ri)
- smartlist_add(fps_out,
- tor_memdup(ri->cache_info.identity_digest, DIGEST_LEN));
+ smartlist_add(spool_out,
+ spooled_resource_new(source,
+ (const uint8_t *)ri->cache_info.identity_digest,
+ DIGEST_LEN));
} else if (!strcmpstart(key, "d/")) {
- by_id = 0;
key += strlen("d/");
- dir_split_resource_into_fingerprints(key, fps_out, NULL,
- DSR_HEX|DSR_SORT_UNIQ);
+ dir_split_resource_into_spoolable(key, source, spool_out, NULL,
+ DSR_HEX|DSR_SORT_UNIQ);
} else if (!strcmpstart(key, "fp/")) {
key += strlen("fp/");
- dir_split_resource_into_fingerprints(key, fps_out, NULL,
- DSR_HEX|DSR_SORT_UNIQ);
+ dir_split_resource_into_spoolable(key, source, spool_out, NULL,
+ DSR_HEX|DSR_SORT_UNIQ);
} else {
- *msg = "Key not recognized";
+ *msg_out = "Not found";
return -1;
}
- if (for_unencrypted_conn) {
+ if (! conn_is_encrypted) {
/* Remove anything that insists it not be sent unencrypted. */
- SMARTLIST_FOREACH_BEGIN(fps_out, char *, cp) {
- const signed_descriptor_t *sd;
- if (by_id)
- sd = get_signed_descriptor_by_fp(cp,is_extrainfo,0);
- else if (is_extrainfo)
- sd = extrainfo_get_by_descriptor_digest(cp);
- else
- sd = router_get_by_descriptor_digest(cp);
- if (sd && !sd->send_unencrypted) {
- tor_free(cp);
- SMARTLIST_DEL_CURRENT(fps_out, cp);
- }
- } SMARTLIST_FOREACH_END(cp);
+ SMARTLIST_FOREACH_BEGIN(spool_out, spooled_resource_t *, spooled) {
+ const uint8_t *body = NULL;
+ size_t bodylen = 0;
+ int r = spooled_resource_lookup_body(spooled, conn_is_encrypted,
+ &body, &bodylen, NULL);
+ if (r < 0 || body == NULL || bodylen == 0) {
+ SMARTLIST_DEL_CURRENT(spool_out, spooled);
+ spooled_resource_free(spooled);
+ }
+ } SMARTLIST_FOREACH_END(spooled);
}
- if (!smartlist_len(fps_out)) {
- *msg = "Servers unavailable";
+ if (!smartlist_len(spool_out)) {
+ *msg_out = "Servers unavailable";
return -1;
}
return 0;
@@ -3405,416 +3450,502 @@ dirserv_test_reachability(time_t now)
ctr = (ctr + 1) % REACHABILITY_MODULO_PER_TEST; /* increment ctr */
}
-/** Given a fingerprint <b>fp</b> which is either set if we're looking for a
- * v2 status, or zeroes if we're looking for a v3 status, or a NUL-padded
- * flavor name if we want a flavored v3 status, return a pointer to the
- * appropriate cached dir object, or NULL if there isn't one available. */
-static cached_dir_t *
-lookup_cached_dir_by_fp(const char *fp)
+/* ==========
+ * Spooling code.
+ * ========== */
+
+spooled_resource_t *
+spooled_resource_new(dir_spool_source_t source,
+ const uint8_t *digest, size_t digestlen)
{
- cached_dir_t *d = NULL;
- if (tor_digest_is_zero(fp) && cached_consensuses) {
- d = strmap_get(cached_consensuses, "ns");
- } else if (memchr(fp, '\0', DIGEST_LEN) && cached_consensuses &&
- (d = strmap_get(cached_consensuses, fp))) {
- /* this here interface is a nasty hack XXXX */;
+ spooled_resource_t *spooled = tor_malloc_zero(sizeof(spooled_resource_t));
+ spooled->spool_source = source;
+ switch (source) {
+ case DIR_SPOOL_NETWORKSTATUS:
+ spooled->spool_eagerly = 0;
+ break;
+ case DIR_SPOOL_SERVER_BY_DIGEST:
+ case DIR_SPOOL_SERVER_BY_FP:
+ case DIR_SPOOL_EXTRA_BY_DIGEST:
+ case DIR_SPOOL_EXTRA_BY_FP:
+ case DIR_SPOOL_MICRODESC:
+ default:
+ spooled->spool_eagerly = 1;
+ break;
+ case DIR_SPOOL_CONSENSUS_CACHE_ENTRY:
+ tor_assert_unreached();
+ break;
}
- return d;
+ tor_assert(digestlen <= sizeof(spooled->digest));
+ if (digest)
+ memcpy(spooled->digest, digest, digestlen);
+ return spooled;
}
-/** Remove from <b>fps</b> every networkstatus key where both
- * a) we have a networkstatus document and
- * b) it is not newer than <b>cutoff</b>.
+/**
+ * Create a new spooled_resource_t to spool the contents of <b>entry</b> to
+ * the user. Return the spooled object on success, or NULL on failure (which
+ * is probably caused by a failure to map the body of the item from disk).
*
- * Return 1 if any items were present at all; else return 0.
+ * Adds a reference to entry's reference counter.
*/
-int
-dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff)
-{
- int found_any = 0;
- SMARTLIST_FOREACH_BEGIN(fps, char *, digest) {
- cached_dir_t *d = lookup_cached_dir_by_fp(digest);
- if (!d)
- continue;
- found_any = 1;
- if (d->published <= cutoff) {
- tor_free(digest);
- SMARTLIST_DEL_CURRENT(fps, digest);
- }
- } SMARTLIST_FOREACH_END(digest);
-
- return found_any;
-}
-
-/** Return the cache-info for identity fingerprint <b>fp</b>, or
- * its extra-info document if <b>extrainfo</b> is true. Return
- * NULL if not found or if the descriptor is older than
- * <b>publish_cutoff</b>. */
-static const signed_descriptor_t *
-get_signed_descriptor_by_fp(const char *fp, int extrainfo,
- time_t publish_cutoff)
-{
- if (router_digest_is_me(fp)) {
- if (extrainfo)
- return &(router_get_my_extrainfo()->cache_info);
- else
- return &(router_get_my_routerinfo()->cache_info);
+spooled_resource_t *
+spooled_resource_new_from_cache_entry(consensus_cache_entry_t *entry)
+{
+ spooled_resource_t *spooled = tor_malloc_zero(sizeof(spooled_resource_t));
+ spooled->spool_source = DIR_SPOOL_CONSENSUS_CACHE_ENTRY;
+ spooled->spool_eagerly = 0;
+ consensus_cache_entry_incref(entry);
+ spooled->consensus_cache_entry = entry;
+
+ int r = consensus_cache_entry_get_body(entry,
+ &spooled->cce_body,
+ &spooled->cce_len);
+ if (r == 0) {
+ return spooled;
} else {
- const routerinfo_t *ri = router_get_by_id_digest(fp);
- if (ri &&
- ri->cache_info.published_on > publish_cutoff) {
- if (extrainfo)
- return extrainfo_get_by_descriptor_digest(
- ri->cache_info.extra_info_digest);
- else
- return &ri->cache_info;
- }
+ spooled_resource_free(spooled);
+ return NULL;
}
- return NULL;
}
-/** Return true iff we have any of the documents (extrainfo or routerdesc)
- * specified by the fingerprints in <b>fps</b> and <b>spool_src</b>. Used to
- * decide whether to send a 404. */
-int
-dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src)
-{
- time_t publish_cutoff = time(NULL)-ROUTER_MAX_AGE_TO_PUBLISH;
- SMARTLIST_FOREACH_BEGIN(fps, const char *, fp) {
- switch (spool_src)
- {
- case DIR_SPOOL_EXTRA_BY_DIGEST:
- if (extrainfo_get_by_descriptor_digest(fp)) return 1;
- break;
- case DIR_SPOOL_SERVER_BY_DIGEST:
- if (router_get_by_descriptor_digest(fp)) return 1;
- break;
- case DIR_SPOOL_EXTRA_BY_FP:
- case DIR_SPOOL_SERVER_BY_FP:
- if (get_signed_descriptor_by_fp(fp,
- spool_src == DIR_SPOOL_EXTRA_BY_FP, publish_cutoff))
- return 1;
- break;
- }
- } SMARTLIST_FOREACH_END(fp);
- return 0;
-}
-
-/** Return true iff any of the 256-bit elements in <b>fps</b> is the digest of
- * a microdescriptor we have. */
-int
-dirserv_have_any_microdesc(const smartlist_t *fps)
+/** Release all storage held by <b>spooled</b>. */
+void
+spooled_resource_free(spooled_resource_t *spooled)
{
- microdesc_cache_t *cache = get_microdesc_cache();
- SMARTLIST_FOREACH(fps, const char *, fp,
- if (microdesc_cache_lookup_by_digest256(cache, fp))
- return 1);
- return 0;
-}
+ if (spooled == NULL)
+ return;
-/** Return an approximate estimate of the number of bytes that will
- * be needed to transmit the server descriptors (if is_serverdescs --
- * they can be either d/ or fp/ queries) or networkstatus objects (if
- * !is_serverdescs) listed in <b>fps</b>. If <b>compressed</b> is set,
- * we guess how large the data will be after compression.
- *
- * The return value is an estimate; it might be larger or smaller.
- **/
-size_t
-dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs,
- int compressed)
-{
- size_t result;
- tor_assert(fps);
- if (is_serverdescs) {
- int n = smartlist_len(fps);
- const routerinfo_t *me = router_get_my_routerinfo();
- result = (me?me->cache_info.signed_descriptor_len:2048) * n;
- if (compressed)
- result /= 2; /* observed compressibility is between 35 and 55%. */
- } else {
- result = 0;
- SMARTLIST_FOREACH(fps, const char *, digest, {
- cached_dir_t *dir = lookup_cached_dir_by_fp(digest);
- if (dir)
- result += compressed ? dir->dir_z_len : dir->dir_len;
- });
+ if (spooled->cached_dir_ref) {
+ cached_dir_decref(spooled->cached_dir_ref);
}
- return result;
+
+ if (spooled->consensus_cache_entry) {
+ consensus_cache_entry_decref(spooled->consensus_cache_entry);
+ }
+
+ tor_free(spooled);
}
-/** Given a list of microdescriptor hashes, guess how many bytes will be
- * needed to transmit them, and return the guess. */
-size_t
-dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed)
+/** When spooling data from a cached_dir_t object, we always add
+ * at least this much. */
+#define DIRSERV_CACHED_DIR_CHUNK_SIZE 8192
+
+/** Return an compression ratio for compressing objects from <b>source</b>.
+ */
+static double
+estimate_compression_ratio(dir_spool_source_t source)
{
- size_t result = smartlist_len(fps) * microdesc_average_size(NULL);
- if (compressed)
- result /= 2;
- return result;
+ /* We should put in better estimates here, depending on the number of
+ objects and their type */
+ (void) source;
+ return 0.5;
}
-/** When we're spooling data onto our outbuf, add more whenever we dip
- * below this threshold. */
-#define DIRSERV_BUFFER_MIN 16384
+/** Return an estimated number of bytes needed for transmitting the
+ * resource in <b>spooled</b> on <b>conn</b>
+ *
+ * As a convenient side-effect, set *<b>published_out</b> to the resource's
+ * publication time.
+ */
+static size_t
+spooled_resource_estimate_size(const spooled_resource_t *spooled,
+ dir_connection_t *conn,
+ int compressed,
+ time_t *published_out)
+{
+ if (spooled->spool_eagerly) {
+ const uint8_t *body = NULL;
+ size_t bodylen = 0;
+ int r = spooled_resource_lookup_body(spooled,
+ connection_dir_is_encrypted(conn),
+ &body, &bodylen,
+ published_out);
+ if (r == -1 || body == NULL || bodylen == 0)
+ return 0;
+ if (compressed) {
+ double ratio = estimate_compression_ratio(spooled->spool_source);
+ bodylen = (size_t)(bodylen * ratio);
+ }
+ return bodylen;
+ } else {
+ cached_dir_t *cached;
+ if (spooled->consensus_cache_entry) {
+ if (published_out) {
+ consensus_cache_entry_get_valid_after(
+ spooled->consensus_cache_entry, published_out);
+ }
-/** Spooling helper: called when we have no more data to spool to <b>conn</b>.
- * Flushes any remaining data to be (un)compressed, and changes the spool
- * source to NONE. Returns 0 on success, negative on failure. */
-static int
-connection_dirserv_finish_spooling(dir_connection_t *conn)
-{
- if (conn->zlib_state) {
- connection_write_to_buf_zlib("", 0, conn, 1);
- tor_zlib_free(conn->zlib_state);
- conn->zlib_state = NULL;
+ return spooled->cce_len;
+ }
+ if (spooled->cached_dir_ref) {
+ cached = spooled->cached_dir_ref;
+ } else {
+ cached = spooled_resource_lookup_cached_dir(spooled,
+ published_out);
+ }
+ if (cached == NULL) {
+ return 0;
+ }
+ size_t result = compressed ? cached->dir_compressed_len : cached->dir_len;
+ return result;
}
- conn->dir_spool_src = DIR_SPOOL_NONE;
- return 0;
}
-/** Spooling helper: called when we're sending a bunch of server descriptors,
- * and the outbuf has become too empty. Pulls some entries from
- * fingerprint_stack, and writes the corresponding servers onto outbuf. If we
- * run out of entries, flushes the zlib state and sets the spool source to
- * NONE. Returns 0 on success, negative on failure.
+/** Return code for spooled_resource_flush_some */
+typedef enum {
+ SRFS_ERR = -1,
+ SRFS_MORE = 0,
+ SRFS_DONE
+} spooled_resource_flush_status_t;
+
+/** Flush some or all of the bytes from <b>spooled</b> onto <b>conn</b>.
+ * Return SRFS_ERR on error, SRFS_MORE if there are more bytes to flush from
+ * this spooled resource, or SRFS_DONE if we are done flushing this spooled
+ * resource.
*/
-static int
-connection_dirserv_add_servers_to_outbuf(dir_connection_t *conn)
-{
- int by_fp = (conn->dir_spool_src == DIR_SPOOL_SERVER_BY_FP ||
- conn->dir_spool_src == DIR_SPOOL_EXTRA_BY_FP);
- int extra = (conn->dir_spool_src == DIR_SPOOL_EXTRA_BY_FP ||
- conn->dir_spool_src == DIR_SPOOL_EXTRA_BY_DIGEST);
- time_t publish_cutoff = time(NULL)-ROUTER_MAX_AGE_TO_PUBLISH;
+static spooled_resource_flush_status_t
+spooled_resource_flush_some(spooled_resource_t *spooled,
+ dir_connection_t *conn)
+{
+ if (spooled->spool_eagerly) {
+ /* Spool_eagerly resources are sent all-at-once. */
+ const uint8_t *body = NULL;
+ size_t bodylen = 0;
+ int r = spooled_resource_lookup_body(spooled,
+ connection_dir_is_encrypted(conn),
+ &body, &bodylen, NULL);
+ if (r == -1 || body == NULL || bodylen == 0) {
+ /* Absent objects count as "done". */
+ return SRFS_DONE;
+ }
+ if (conn->compress_state) {
+ connection_write_to_buf_compress((const char*)body, bodylen, conn, 0);
+ } else {
+ connection_write_to_buf((const char*)body, bodylen, TO_CONN(conn));
+ }
+ return SRFS_DONE;
+ } else {
+ cached_dir_t *cached = spooled->cached_dir_ref;
+ consensus_cache_entry_t *cce = spooled->consensus_cache_entry;
+ if (cached == NULL && cce == NULL) {
+ /* The cached_dir_t hasn't been materialized yet. So let's look it up. */
+ cached = spooled->cached_dir_ref =
+ spooled_resource_lookup_cached_dir(spooled, NULL);
+ if (!cached) {
+ /* Absent objects count as done. */
+ return SRFS_DONE;
+ }
+ ++cached->refcnt;
+ tor_assert_nonfatal(spooled->cached_dir_offset == 0);
+ }
- const or_options_t *options = get_options();
+ if (BUG(!cached && !cce))
+ return SRFS_DONE;
- while (smartlist_len(conn->fingerprint_stack) &&
- connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) {
- const char *body;
- char *fp = smartlist_pop_last(conn->fingerprint_stack);
- const signed_descriptor_t *sd = NULL;
- if (by_fp) {
- sd = get_signed_descriptor_by_fp(fp, extra, publish_cutoff);
+ int64_t total_len;
+ const char *ptr;
+ if (cached) {
+ total_len = cached->dir_compressed_len;
+ ptr = cached->dir_compressed;
} else {
- sd = extra ? extrainfo_get_by_descriptor_digest(fp)
- : router_get_by_descriptor_digest(fp);
+ total_len = spooled->cce_len;
+ ptr = (const char *)spooled->cce_body;
}
- tor_free(fp);
- if (!sd)
- continue;
- if (!connection_dir_is_encrypted(conn) && !sd->send_unencrypted) {
- /* we did this check once before (so we could have an accurate size
- * estimate and maybe send a 404 if somebody asked for only bridges on a
- * connection), but we need to do it again in case a previously
- * unknown bridge descriptor has shown up between then and now. */
- continue;
+ /* How many bytes left to flush? */
+ int64_t remaining;
+ remaining = total_len - spooled->cached_dir_offset;
+ if (BUG(remaining < 0))
+ return SRFS_ERR;
+ ssize_t bytes = (ssize_t) MIN(DIRSERV_CACHED_DIR_CHUNK_SIZE, remaining);
+ if (conn->compress_state) {
+ connection_write_to_buf_compress(
+ ptr + spooled->cached_dir_offset,
+ bytes, conn, 0);
+ } else {
+ connection_write_to_buf(ptr + spooled->cached_dir_offset,
+ bytes, TO_CONN(conn));
}
-
- /** If we are the bridge authority and the descriptor is a bridge
- * descriptor, remember that we served this descriptor for desc stats. */
- if (options->BridgeAuthoritativeDir && by_fp) {
- const routerinfo_t *router =
- router_get_by_id_digest(sd->identity_digest);
- /* router can be NULL here when the bridge auth is asked for its own
- * descriptor. */
- if (router && router->purpose == ROUTER_PURPOSE_BRIDGE)
- rep_hist_note_desc_served(sd->identity_digest);
- }
- body = signed_descriptor_get_body(sd);
- if (conn->zlib_state) {
- int last = ! smartlist_len(conn->fingerprint_stack);
- connection_write_to_buf_zlib(body, sd->signed_descriptor_len, conn,
- last);
- if (last) {
- tor_zlib_free(conn->zlib_state);
- conn->zlib_state = NULL;
- }
+ spooled->cached_dir_offset += bytes;
+ if (spooled->cached_dir_offset >= (off_t)total_len) {
+ return SRFS_DONE;
} else {
- connection_write_to_buf(body,
- sd->signed_descriptor_len,
- TO_CONN(conn));
+ return SRFS_MORE;
}
}
+}
- if (!smartlist_len(conn->fingerprint_stack)) {
- /* We just wrote the last one; finish up. */
- if (conn->zlib_state) {
- connection_write_to_buf_zlib("", 0, conn, 1);
- tor_zlib_free(conn->zlib_state);
- conn->zlib_state = NULL;
- }
- conn->dir_spool_src = DIR_SPOOL_NONE;
- smartlist_free(conn->fingerprint_stack);
- conn->fingerprint_stack = NULL;
+/** Helper: find the cached_dir_t for a spooled_resource_t, for
+ * sending it to <b>conn</b>. Set *<b>published_out</b>, if provided,
+ * to the published time of the cached_dir_t.
+ *
+ * DOES NOT increase the reference count on the result. Callers must do that
+ * themselves if they mean to hang on to it.
+ */
+static cached_dir_t *
+spooled_resource_lookup_cached_dir(const spooled_resource_t *spooled,
+ time_t *published_out)
+{
+ tor_assert(spooled->spool_eagerly == 0);
+ cached_dir_t *d = lookup_cached_dir_by_fp(spooled->digest);
+ if (d != NULL) {
+ if (published_out)
+ *published_out = d->published;
}
- return 0;
+ return d;
}
-/** Spooling helper: called when we're sending a bunch of microdescriptors,
- * and the outbuf has become too empty. Pulls some entries from
- * fingerprint_stack, and writes the corresponding microdescs onto outbuf. If
- * we run out of entries, flushes the zlib state and sets the spool source to
- * NONE. Returns 0 on success, negative on failure.
- */
+/** Helper: Look up the body for an eagerly-served spooled_resource. If
+ * <b>conn_is_encrypted</b> is false, don't look up any resource that
+ * shouldn't be sent over an unencrypted connection. On success, set
+ * <b>body_out</b>, <b>size_out</b>, and <b>published_out</b> to refer
+ * to the resource's body, size, and publication date, and return 0.
+ * On failure return -1. */
static int
-connection_dirserv_add_microdescs_to_outbuf(dir_connection_t *conn)
-{
- microdesc_cache_t *cache = get_microdesc_cache();
- while (smartlist_len(conn->fingerprint_stack) &&
- connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) {
- char *fp256 = smartlist_pop_last(conn->fingerprint_stack);
- microdesc_t *md = microdesc_cache_lookup_by_digest256(cache, fp256);
- tor_free(fp256);
- if (!md || !md->body)
- continue;
- if (conn->zlib_state) {
- int last = !smartlist_len(conn->fingerprint_stack);
- connection_write_to_buf_zlib(md->body, md->bodylen, conn, last);
- if (last) {
- tor_zlib_free(conn->zlib_state);
- conn->zlib_state = NULL;
+spooled_resource_lookup_body(const spooled_resource_t *spooled,
+ int conn_is_encrypted,
+ const uint8_t **body_out,
+ size_t *size_out,
+ time_t *published_out)
+{
+ tor_assert(spooled->spool_eagerly == 1);
+
+ const signed_descriptor_t *sd = NULL;
+
+ switch (spooled->spool_source) {
+ case DIR_SPOOL_EXTRA_BY_FP: {
+ sd = get_signed_descriptor_by_fp(spooled->digest, 1);
+ break;
+ }
+ case DIR_SPOOL_SERVER_BY_FP: {
+ sd = get_signed_descriptor_by_fp(spooled->digest, 0);
+ break;
+ }
+ case DIR_SPOOL_SERVER_BY_DIGEST: {
+ sd = router_get_by_descriptor_digest((const char *)spooled->digest);
+ break;
+ }
+ case DIR_SPOOL_EXTRA_BY_DIGEST: {
+ sd = extrainfo_get_by_descriptor_digest((const char *)spooled->digest);
+ break;
+ }
+ case DIR_SPOOL_MICRODESC: {
+ microdesc_t *md = microdesc_cache_lookup_by_digest256(
+ get_microdesc_cache(),
+ (const char *)spooled->digest);
+ if (! md || ! md->body) {
+ return -1;
}
- } else {
- connection_write_to_buf(md->body, md->bodylen, TO_CONN(conn));
+ *body_out = (const uint8_t *)md->body;
+ *size_out = md->bodylen;
+ if (published_out)
+ *published_out = TIME_MAX;
+ return 0;
}
+ case DIR_SPOOL_NETWORKSTATUS:
+ case DIR_SPOOL_CONSENSUS_CACHE_ENTRY:
+ default:
+ /* LCOV_EXCL_START */
+ tor_assert_nonfatal_unreached();
+ return -1;
+ /* LCOV_EXCL_STOP */
}
- if (!smartlist_len(conn->fingerprint_stack)) {
- if (conn->zlib_state) {
- connection_write_to_buf_zlib("", 0, conn, 1);
- tor_zlib_free(conn->zlib_state);
- conn->zlib_state = NULL;
- }
- conn->dir_spool_src = DIR_SPOOL_NONE;
- smartlist_free(conn->fingerprint_stack);
- conn->fingerprint_stack = NULL;
+
+ /* If we get here, then we tried to set "sd" to a signed_descriptor_t. */
+
+ if (sd == NULL) {
+ return -1;
+ }
+ if (sd->send_unencrypted == 0 && ! conn_is_encrypted) {
+ /* we did this check once before (so we could have an accurate size
+ * estimate and maybe send a 404 if somebody asked for only bridges on
+ * a connection), but we need to do it again in case a previously
+ * unknown bridge descriptor has shown up between then and now. */
+ return -1;
}
+ *body_out = (const uint8_t *) signed_descriptor_get_body(sd);
+ *size_out = sd->signed_descriptor_len;
+ if (published_out)
+ *published_out = sd->published_on;
return 0;
}
-/** Spooling helper: Called when we're sending a directory or networkstatus,
- * and the outbuf has become too empty. Pulls some bytes from
- * <b>conn</b>-\>cached_dir-\>dir_z, uncompresses them if appropriate, and
- * puts them on the outbuf. If we run out of entries, flushes the zlib state
- * and sets the spool source to NONE. Returns 0 on success, negative on
- * failure. */
-static int
-connection_dirserv_add_dir_bytes_to_outbuf(dir_connection_t *conn)
-{
- ssize_t bytes;
- int64_t remaining;
-
- bytes = DIRSERV_BUFFER_MIN - connection_get_outbuf_len(TO_CONN(conn));
- tor_assert(bytes > 0);
- tor_assert(conn->cached_dir);
- if (bytes < 8192)
- bytes = 8192;
- remaining = conn->cached_dir->dir_z_len - conn->cached_dir_offset;
- if (BUG(remaining < 0)) {
- remaining = 0;
- }
- if (bytes > remaining) {
- bytes = (ssize_t) remaining;
- if (BUG(bytes < 0))
- return -1;
+/** Given a fingerprint <b>fp</b> which is either set if we're looking for a
+ * v2 status, or zeroes if we're looking for a v3 status, or a NUL-padded
+ * flavor name if we want a flavored v3 status, return a pointer to the
+ * appropriate cached dir object, or NULL if there isn't one available. */
+static cached_dir_t *
+lookup_cached_dir_by_fp(const uint8_t *fp)
+{
+ cached_dir_t *d = NULL;
+ if (tor_digest_is_zero((const char *)fp) && cached_consensuses) {
+ d = strmap_get(cached_consensuses, "ns");
+ } else if (memchr(fp, '\0', DIGEST_LEN) && cached_consensuses) {
+ /* this here interface is a nasty hack: we're shoving a flavor into
+ * a digest field. */
+ d = strmap_get(cached_consensuses, (const char *)fp);
}
+ return d;
+}
- if (conn->zlib_state) {
- connection_write_to_buf_zlib(
- conn->cached_dir->dir_z + conn->cached_dir_offset,
- bytes, conn, bytes == remaining);
- } else {
- connection_write_to_buf(conn->cached_dir->dir_z + conn->cached_dir_offset,
- bytes, TO_CONN(conn));
+/** Try to guess the number of bytes that will be needed to send the
+ * spooled objects for <b>conn</b>'s outgoing spool. In the process,
+ * remove every element of the spool that refers to an absent object, or
+ * which was published earlier than <b>cutoff</b>. Set *<b>size_out</b>
+ * to the number of bytes, and *<b>n_expired_out</b> to the number of
+ * objects removed for being too old. */
+void
+dirserv_spool_remove_missing_and_guess_size(dir_connection_t *conn,
+ time_t cutoff,
+ int compression,
+ size_t *size_out,
+ int *n_expired_out)
+{
+ if (BUG(!conn))
+ return;
+
+ smartlist_t *spool = conn->spool;
+ if (!spool) {
+ if (size_out)
+ *size_out = 0;
+ if (n_expired_out)
+ *n_expired_out = 0;
+ return;
}
- conn->cached_dir_offset += bytes;
- if (conn->cached_dir_offset >= (off_t)conn->cached_dir->dir_z_len) {
- /* We just wrote the last one; finish up. */
- connection_dirserv_finish_spooling(conn);
- cached_dir_decref(conn->cached_dir);
- conn->cached_dir = NULL;
+ int n_expired = 0;
+ uint64_t total = 0;
+ SMARTLIST_FOREACH_BEGIN(spool, spooled_resource_t *, spooled) {
+ time_t published = TIME_MAX;
+ size_t sz = spooled_resource_estimate_size(spooled, conn,
+ compression, &published);
+ if (published < cutoff) {
+ ++n_expired;
+ SMARTLIST_DEL_CURRENT(spool, spooled);
+ spooled_resource_free(spooled);
+ } else if (sz == 0) {
+ SMARTLIST_DEL_CURRENT(spool, spooled);
+ spooled_resource_free(spooled);
+ } else {
+ total += sz;
+ }
+ } SMARTLIST_FOREACH_END(spooled);
+
+ if (size_out) {
+ *size_out = (total > SIZE_MAX) ? SIZE_MAX : (size_t)total;
}
- return 0;
+ if (n_expired_out)
+ *n_expired_out = n_expired;
}
-/** Spooling helper: Called when we're spooling networkstatus objects on
- * <b>conn</b>, and the outbuf has become too empty. If the current
- * networkstatus object (in <b>conn</b>-\>cached_dir) has more data, pull data
- * from there. Otherwise, pop the next fingerprint from fingerprint_stack,
- * and start spooling the next networkstatus. (A digest of all 0 bytes is
- * treated as a request for the current consensus.) If we run out of entries,
- * flushes the zlib state and sets the spool source to NONE. Returns 0 on
- * success, negative on failure. */
+/** Helper: used to sort a connection's spool. */
static int
-connection_dirserv_add_networkstatus_bytes_to_outbuf(dir_connection_t *conn)
-{
-
- while (connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) {
- if (conn->cached_dir) {
- int uncompressing = (conn->zlib_state != NULL);
- int r = connection_dirserv_add_dir_bytes_to_outbuf(conn);
- if (conn->dir_spool_src == DIR_SPOOL_NONE) {
- /* add_dir_bytes thinks we're done with the cached_dir. But we
- * may have more cached_dirs! */
- conn->dir_spool_src = DIR_SPOOL_NETWORKSTATUS;
- /* This bit is tricky. If we were uncompressing the last
- * networkstatus, we may need to make a new zlib object to
- * uncompress the next one. */
- if (uncompressing && ! conn->zlib_state &&
- conn->fingerprint_stack &&
- smartlist_len(conn->fingerprint_stack)) {
- conn->zlib_state = tor_zlib_new(0, ZLIB_METHOD, HIGH_COMPRESSION);
- }
- }
- if (r) return r;
- } else if (conn->fingerprint_stack &&
- smartlist_len(conn->fingerprint_stack)) {
- /* Add another networkstatus; start serving it. */
- char *fp = smartlist_pop_last(conn->fingerprint_stack);
- cached_dir_t *d = lookup_cached_dir_by_fp(fp);
- tor_free(fp);
- if (d) {
- ++d->refcnt;
- conn->cached_dir = d;
- conn->cached_dir_offset = 0;
- }
- } else {
- connection_dirserv_finish_spooling(conn);
- smartlist_free(conn->fingerprint_stack);
- conn->fingerprint_stack = NULL;
- return 0;
+dirserv_spool_sort_comparison_(const void **a_, const void **b_)
+{
+ const spooled_resource_t *a = *a_;
+ const spooled_resource_t *b = *b_;
+ return fast_memcmp(a->digest, b->digest, sizeof(a->digest));
+}
+
+/** Sort all the entries in <b>conn</b> by digest. */
+void
+dirserv_spool_sort(dir_connection_t *conn)
+{
+ if (conn->spool == NULL)
+ return;
+ smartlist_sort(conn->spool, dirserv_spool_sort_comparison_);
+}
+
+/** Return the cache-info for identity fingerprint <b>fp</b>, or
+ * its extra-info document if <b>extrainfo</b> is true. Return
+ * NULL if not found or if the descriptor is older than
+ * <b>publish_cutoff</b>. */
+static const signed_descriptor_t *
+get_signed_descriptor_by_fp(const uint8_t *fp, int extrainfo)
+{
+ if (router_digest_is_me((const char *)fp)) {
+ if (extrainfo)
+ return &(router_get_my_extrainfo()->cache_info);
+ else
+ return &(router_get_my_routerinfo()->cache_info);
+ } else {
+ const routerinfo_t *ri = router_get_by_id_digest((const char *)fp);
+ if (ri) {
+ if (extrainfo)
+ return extrainfo_get_by_descriptor_digest(
+ ri->cache_info.extra_info_digest);
+ else
+ return &ri->cache_info;
}
}
- return 0;
+ return NULL;
}
-/** Called whenever we have flushed some directory data in state
- * SERVER_WRITING. */
+/** When we're spooling data onto our outbuf, add more whenever we dip
+ * below this threshold. */
+#define DIRSERV_BUFFER_MIN 16384
+
+/**
+ * Called whenever we have flushed some directory data in state
+ * SERVER_WRITING, or whenever we want to fill the buffer with initial
+ * directory data (so that subsequent writes will occur, and trigger this
+ * function again.)
+ *
+ * Return 0 on success, and -1 on failure.
+ */
int
connection_dirserv_flushed_some(dir_connection_t *conn)
{
tor_assert(conn->base_.state == DIR_CONN_STATE_SERVER_WRITING);
-
- if (connection_get_outbuf_len(TO_CONN(conn)) >= DIRSERV_BUFFER_MIN)
+ if (conn->spool == NULL)
return 0;
- switch (conn->dir_spool_src) {
- case DIR_SPOOL_EXTRA_BY_DIGEST:
- case DIR_SPOOL_EXTRA_BY_FP:
- case DIR_SPOOL_SERVER_BY_DIGEST:
- case DIR_SPOOL_SERVER_BY_FP:
- return connection_dirserv_add_servers_to_outbuf(conn);
- case DIR_SPOOL_MICRODESC:
- return connection_dirserv_add_microdescs_to_outbuf(conn);
- case DIR_SPOOL_CACHED_DIR:
- return connection_dirserv_add_dir_bytes_to_outbuf(conn);
- case DIR_SPOOL_NETWORKSTATUS:
- return connection_dirserv_add_networkstatus_bytes_to_outbuf(conn);
- case DIR_SPOOL_NONE:
- default:
+ while (connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN &&
+ smartlist_len(conn->spool)) {
+ spooled_resource_t *spooled =
+ smartlist_get(conn->spool, smartlist_len(conn->spool)-1);
+ spooled_resource_flush_status_t status;
+ status = spooled_resource_flush_some(spooled, conn);
+ if (status == SRFS_ERR) {
+ return -1;
+ } else if (status == SRFS_MORE) {
return 0;
+ }
+ tor_assert(status == SRFS_DONE);
+
+ /* If we're here, we're done flushing this resource. */
+ tor_assert(smartlist_pop_last(conn->spool) == spooled);
+ spooled_resource_free(spooled);
+ }
+
+ if (smartlist_len(conn->spool) > 0) {
+ /* We're still spooling something. */
+ return 0;
+ }
+
+ /* If we get here, we're done. */
+ smartlist_free(conn->spool);
+ conn->spool = NULL;
+ if (conn->compress_state) {
+ /* Flush the compression state: there could be more bytes pending in there,
+ * and we don't want to omit bytes. */
+ connection_write_to_buf_compress("", 0, conn, 1);
+ tor_compress_free(conn->compress_state);
+ conn->compress_state = NULL;
}
+ return 0;
+}
+
+/** Remove every element from <b>conn</b>'s outgoing spool, and delete
+ * the spool. */
+void
+dir_conn_clear_spool(dir_connection_t *conn)
+{
+ if (!conn || ! conn->spool)
+ return;
+ SMARTLIST_FOREACH(conn->spool, spooled_resource_t *, s,
+ spooled_resource_free(s));
+ smartlist_free(conn->spool);
+ conn->spool = NULL;
}
/** Return true iff <b>line</b> is a valid RecommendedPackages line.
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index e83da5e5ac..480174d5bb 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,6 +32,61 @@
/** Maximum allowable length of a version line in a networkstatus. */
#define MAX_V_LINE_LEN 128
+/** 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,
+ DIR_SPOOL_EXTRA_BY_DIGEST, DIR_SPOOL_EXTRA_BY_FP,
+ DIR_SPOOL_MICRODESC,
+ DIR_SPOOL_NETWORKSTATUS,
+ DIR_SPOOL_CONSENSUS_CACHE_ENTRY,
+} dir_spool_source_t;
+#define dir_spool_source_bitfield_t ENUM_BF(dir_spool_source_t)
+
+/** Object to remember the identity of an object that we are spooling,
+ * or about to spool, in response to a directory request.
+ *
+ * (Why do we spool? Because some directory responses are very large,
+ * and we don't want to just shove the complete answer into the output
+ * buffer: that would take a ridiculous amount of RAM.)
+ *
+ * If the spooled resource is relatively small (like microdescriptors,
+ * descriptors, etc), we look them up by ID as needed, and add the whole
+ * thing onto the output buffer at once. If the spooled reseource is
+ * big (like networkstatus documents), we reference-count it, and add it
+ * a few K at a time.
+ */
+typedef struct spooled_resource_t {
+ /**
+ * If true, we add the entire object to the outbuf. If false,
+ * we spool the object a few K at a time.
+ */
+ unsigned spool_eagerly : 1;
+ /**
+ * Tells us what kind of object to get, and how to look it up.
+ */
+ dir_spool_source_bitfield_t spool_source : 7;
+ /**
+ * Tells us the specific object to spool.
+ */
+ uint8_t digest[DIGEST256_LEN];
+ /**
+ * A large object that we're spooling. Holds a reference count. Only
+ * used when spool_eagerly is false.
+ */
+ struct cached_dir_t *cached_dir_ref;
+ /**
+ * A different kind of large object that we might be spooling. Also
+ * reference-counted. Also only used when spool_eagerly is false.
+ */
+ struct consensus_cache_entry_t *consensus_cache_entry;
+ const uint8_t *cce_body;
+ size_t cce_len;
+ /**
+ * The current offset into cached_dir or cce_body. Only used when
+ * spool_eagerly is false */
+ off_t cached_dir_offset;
+} spooled_resource_t;
+
int connection_dirserv_flushed_some(dir_connection_t *conn);
int dirserv_add_own_fingerprint(crypto_pk_t *pk);
@@ -63,12 +118,13 @@ cached_dir_t *dirserv_get_consensus(const char *flavor_name);
void dirserv_set_cached_consensus_networkstatus(const char *consensus,
const char *flavor_name,
const common_digests_t *digests,
+ const uint8_t *sha3_as_signed,
time_t published);
void dirserv_clear_old_networkstatuses(time_t cutoff);
-int dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
- const char **msg,
- int for_unencrypted_conn,
- int is_extrainfo);
+int dirserv_get_routerdesc_spool(smartlist_t *spools_out, const char *key,
+ dir_spool_source_t source,
+ int conn_is_encrytped,
+ const char **msg_out);
int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
const char **msg);
void dirserv_orconn_tls_done(const tor_addr_t *addr,
@@ -89,13 +145,6 @@ void dirserv_set_node_flags_from_authoritative_status(node_t *node,
uint32_t authstatus);
int dirserv_would_reject_router(const routerstatus_t *rs);
-int dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff);
-int dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src);
-int dirserv_have_any_microdesc(const smartlist_t *fps);
-size_t dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs,
- int compressed);
-size_t dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed);
-
char *routerstatus_format_entry(
const routerstatus_t *rs,
const char *version,
@@ -141,5 +190,19 @@ int dirserv_read_measured_bandwidths(const char *from_file,
int dirserv_read_guardfraction_file(const char *fname,
smartlist_t *vote_routerstatuses);
+spooled_resource_t *spooled_resource_new(dir_spool_source_t source,
+ const uint8_t *digest,
+ size_t digestlen);
+spooled_resource_t *spooled_resource_new_from_cache_entry(
+ struct consensus_cache_entry_t *entry);
+void spooled_resource_free(spooled_resource_t *spooled);
+void dirserv_spool_remove_missing_and_guess_size(dir_connection_t *conn,
+ time_t cutoff,
+ int compression,
+ size_t *size_out,
+ int *n_expired_out);
+void dirserv_spool_sort(dir_connection_t *conn);
+void dir_conn_clear_spool(dir_connection_t *conn);
+
#endif
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index e92d3b49dc..f5e29eb786 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRVOTE_PRIVATE
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index ac7db69db2..e342dc78ea 100644
--- a/src/or/dirvote.h
+++ b/src/or/dirvote.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dns.c b/src/or/dns.c
index ed20836aed..b5344469b5 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -160,8 +160,9 @@ evdns_log_cb(int warn, const char *msg)
}
if (!strcmpstart(msg, "Nameserver ") && (cp=strstr(msg, " has failed: "))) {
char *ns = tor_strndup(msg+11, cp-(msg+11));
- const char *err = strchr(cp, ':')+2;
- tor_assert(err);
+ const char *colon = strchr(cp, ':');
+ tor_assert(colon);
+ const char *err = colon+2;
/* Don't warn about a single failed nameserver; we'll warn with 'all
* nameservers have failed' if we're completely out of nameservers;
* otherwise, the situation is tolerable. */
@@ -2103,8 +2104,8 @@ assert_cache_ok_(void)
#endif
-cached_resolve_t
-*dns_get_cache_entry(cached_resolve_t *query)
+cached_resolve_t *
+dns_get_cache_entry(cached_resolve_t *query)
{
return HT_FIND(cache_map, &cache_root, query);
}
diff --git a/src/or/dns.h b/src/or/dns.h
index 951a2a3467..a81cbd20da 100644
--- a/src/or/dns.h
+++ b/src/or/dns.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dns_structs.h b/src/or/dns_structs.h
index bc6067213d..dc00e9f7b9 100644
--- a/src/or/dns_structs.h
+++ b/src/or/dns_structs.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index 8768b2a1d1..54a22a5150 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dnsserv.h b/src/or/dnsserv.h
index ad0e248c83..6c0643b8dc 100644
--- a/src/or/dnsserv.h
+++ b/src/or/dnsserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dos.c b/src/or/dos.c
new file mode 100644
index 0000000000..4d1797eece
--- /dev/null
+++ b/src/or/dos.c
@@ -0,0 +1,794 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/*
+ * \file dos.c
+ * \brief Implement Denial of Service mitigation subsystem.
+ */
+
+#define DOS_PRIVATE
+
+#include "or.h"
+#include "channel.h"
+#include "config.h"
+#include "geoip.h"
+#include "main.h"
+#include "networkstatus.h"
+#include "nodelist.h"
+#include "router.h"
+
+#include "dos.h"
+
+/*
+ * Circuit creation denial of service mitigation.
+ *
+ * Namespace used for this mitigation framework is "dos_cc_" where "cc" is for
+ * Circuit Creation.
+ */
+
+/* Is the circuit creation DoS mitigation enabled? */
+static unsigned int dos_cc_enabled = 0;
+
+/* Consensus parameters. They can be changed when a new consensus arrives.
+ * They are initialized with the hardcoded default values. */
+static uint32_t dos_cc_min_concurrent_conn;
+static uint32_t dos_cc_circuit_rate;
+static uint32_t dos_cc_circuit_burst;
+static dos_cc_defense_type_t dos_cc_defense_type;
+static int32_t dos_cc_defense_time_period;
+
+/* Keep some stats for the heartbeat so we can report out. */
+static uint64_t cc_num_rejected_cells;
+static uint32_t cc_num_marked_addrs;
+
+/*
+ * Concurrent connection denial of service mitigation.
+ *
+ * Namespace used for this mitigation framework is "dos_conn_".
+ */
+
+/* Is the connection DoS mitigation enabled? */
+static unsigned int dos_conn_enabled = 0;
+
+/* Consensus parameters. They can be changed when a new consensus arrives.
+ * They are initialized with the hardcoded default values. */
+static uint32_t dos_conn_max_concurrent_count;
+static dos_conn_defense_type_t dos_conn_defense_type;
+
+/* Keep some stats for the heartbeat so we can report out. */
+static uint64_t conn_num_addr_rejected;
+
+/*
+ * General interface of the denial of service mitigation subsystem.
+ */
+
+/* Keep stats for the heartbeat. */
+static uint64_t num_single_hop_client_refused;
+
+/* Return true iff the circuit creation mitigation is enabled. We look at the
+ * consensus for this else a default value is returned. */
+MOCK_IMPL(STATIC unsigned int,
+get_param_cc_enabled, (const networkstatus_t *ns))
+{
+ if (get_options()->DoSCircuitCreationEnabled != -1) {
+ return get_options()->DoSCircuitCreationEnabled;
+ }
+
+ return !!networkstatus_get_param(ns, "DoSCircuitCreationEnabled",
+ DOS_CC_ENABLED_DEFAULT, 0, 1);
+}
+
+/* Return the parameter for the minimum concurrent connection at which we'll
+ * start counting circuit for a specific client address. */
+STATIC uint32_t
+get_param_cc_min_concurrent_connection(const networkstatus_t *ns)
+{
+ if (get_options()->DoSCircuitCreationMinConnections) {
+ return get_options()->DoSCircuitCreationMinConnections;
+ }
+ return networkstatus_get_param(ns, "DoSCircuitCreationMinConnections",
+ DOS_CC_MIN_CONCURRENT_CONN_DEFAULT,
+ 1, INT32_MAX);
+}
+
+/* Return the parameter for the time rate that is how many circuits over this
+ * time span. */
+static uint32_t
+get_param_cc_circuit_rate(const networkstatus_t *ns)
+{
+ /* This is in seconds. */
+ if (get_options()->DoSCircuitCreationRate) {
+ return get_options()->DoSCircuitCreationRate;
+ }
+ return networkstatus_get_param(ns, "DoSCircuitCreationRate",
+ DOS_CC_CIRCUIT_RATE_DEFAULT,
+ 1, INT32_MAX);
+}
+
+/* Return the parameter for the maximum circuit count for the circuit time
+ * rate. */
+STATIC uint32_t
+get_param_cc_circuit_burst(const networkstatus_t *ns)
+{
+ if (get_options()->DoSCircuitCreationBurst) {
+ return get_options()->DoSCircuitCreationBurst;
+ }
+ return networkstatus_get_param(ns, "DoSCircuitCreationBurst",
+ DOS_CC_CIRCUIT_BURST_DEFAULT,
+ 1, INT32_MAX);
+}
+
+/* Return the consensus parameter of the circuit creation defense type. */
+static uint32_t
+get_param_cc_defense_type(const networkstatus_t *ns)
+{
+ if (get_options()->DoSCircuitCreationDefenseType) {
+ return get_options()->DoSCircuitCreationDefenseType;
+ }
+ return networkstatus_get_param(ns, "DoSCircuitCreationDefenseType",
+ DOS_CC_DEFENSE_TYPE_DEFAULT,
+ DOS_CC_DEFENSE_NONE, DOS_CC_DEFENSE_MAX);
+}
+
+/* Return the consensus parameter of the defense time period which is how much
+ * time should we defend against a malicious client address. */
+static int32_t
+get_param_cc_defense_time_period(const networkstatus_t *ns)
+{
+ /* Time in seconds. */
+ if (get_options()->DoSCircuitCreationDefenseTimePeriod) {
+ return get_options()->DoSCircuitCreationDefenseTimePeriod;
+ }
+ return networkstatus_get_param(ns, "DoSCircuitCreationDefenseTimePeriod",
+ DOS_CC_DEFENSE_TIME_PERIOD_DEFAULT,
+ 0, INT32_MAX);
+}
+
+/* Return true iff connection mitigation is enabled. We look at the consensus
+ * for this else a default value is returned. */
+MOCK_IMPL(STATIC unsigned int,
+get_param_conn_enabled, (const networkstatus_t *ns))
+{
+ if (get_options()->DoSConnectionEnabled != -1) {
+ return get_options()->DoSConnectionEnabled;
+ }
+ return !!networkstatus_get_param(ns, "DoSConnectionEnabled",
+ DOS_CONN_ENABLED_DEFAULT, 0, 1);
+}
+
+/* Return the consensus parameter for the maximum concurrent connection
+ * allowed. */
+STATIC uint32_t
+get_param_conn_max_concurrent_count(const networkstatus_t *ns)
+{
+ if (get_options()->DoSConnectionMaxConcurrentCount) {
+ return get_options()->DoSConnectionMaxConcurrentCount;
+ }
+ return networkstatus_get_param(ns, "DoSConnectionMaxConcurrentCount",
+ DOS_CONN_MAX_CONCURRENT_COUNT_DEFAULT,
+ 1, INT32_MAX);
+}
+
+/* Return the consensus parameter of the connection defense type. */
+static uint32_t
+get_param_conn_defense_type(const networkstatus_t *ns)
+{
+ if (get_options()->DoSConnectionDefenseType) {
+ return get_options()->DoSConnectionDefenseType;
+ }
+ return networkstatus_get_param(ns, "DoSConnectionDefenseType",
+ DOS_CONN_DEFENSE_TYPE_DEFAULT,
+ DOS_CONN_DEFENSE_NONE, DOS_CONN_DEFENSE_MAX);
+}
+
+/* Set circuit creation parameters located in the consensus or their default
+ * if none are present. Called at initialization or when the consensus
+ * changes. */
+static void
+set_dos_parameters(const networkstatus_t *ns)
+{
+ /* Get the default consensus param values. */
+ dos_cc_enabled = get_param_cc_enabled(ns);
+ dos_cc_min_concurrent_conn = get_param_cc_min_concurrent_connection(ns);
+ dos_cc_circuit_rate = get_param_cc_circuit_rate(ns);
+ dos_cc_circuit_burst = get_param_cc_circuit_burst(ns);
+ dos_cc_defense_time_period = get_param_cc_defense_time_period(ns);
+ dos_cc_defense_type = get_param_cc_defense_type(ns);
+
+ /* Connection detection. */
+ dos_conn_enabled = get_param_conn_enabled(ns);
+ dos_conn_max_concurrent_count = get_param_conn_max_concurrent_count(ns);
+ dos_conn_defense_type = get_param_conn_defense_type(ns);
+}
+
+/* Free everything for the circuit creation DoS mitigation subsystem. */
+static void
+cc_free_all(void)
+{
+ /* If everything is freed, the circuit creation subsystem is not enabled. */
+ dos_cc_enabled = 0;
+}
+
+/* Called when the consensus has changed. Do appropriate actions for the
+ * circuit creation subsystem. */
+static void
+cc_consensus_has_changed(const networkstatus_t *ns)
+{
+ /* Looking at the consensus, is the circuit creation subsystem enabled? If
+ * not and it was enabled before, clean it up. */
+ if (dos_cc_enabled && !get_param_cc_enabled(ns)) {
+ cc_free_all();
+ }
+}
+
+/** Return the number of circuits we allow per second under the current
+ * configuration. */
+STATIC uint64_t
+get_circuit_rate_per_second(void)
+{
+ return dos_cc_circuit_rate;
+}
+
+/* Given the circuit creation client statistics object, refill the circuit
+ * bucket if needed. This also works if the bucket was never filled in the
+ * first place. The addr is only used for logging purposes. */
+STATIC void
+cc_stats_refill_bucket(cc_client_stats_t *stats, const tor_addr_t *addr)
+{
+ uint32_t new_circuit_bucket_count;
+ uint64_t num_token, elapsed_time_last_refill = 0, circuit_rate = 0;
+ time_t now;
+ int64_t last_refill_ts;
+
+ tor_assert(stats);
+ tor_assert(addr);
+
+ now = approx_time();
+ last_refill_ts = (int64_t)stats->last_circ_bucket_refill_ts;
+
+ /* If less than a second has elapsed, don't add any tokens.
+ * Note: If a relay's clock is ever 0, any new clients won't get a refill
+ * until the next second. But a relay that thinks it is 1970 will never
+ * validate the public consensus. */
+ if ((int64_t)now == last_refill_ts) {
+ goto done;
+ }
+
+ /* At this point, we know we might need to add token to the bucket. We'll
+ * first get the circuit rate that is how many circuit are we allowed to do
+ * per second. */
+ circuit_rate = get_circuit_rate_per_second();
+
+ /* We've never filled the bucket so fill it with the maximum being the burst
+ * and we are done.
+ * Note: If a relay's clock is ever 0, all clients that were last refilled
+ * in that zero second will get a full refill here. */
+ if (last_refill_ts == 0) {
+ num_token = dos_cc_circuit_burst;
+ goto end;
+ }
+
+ /* Our clock jumped backward so fill it up to the maximum. Not filling it
+ * could trigger a detection for a valid client. Also, if the clock jumped
+ * negative but we didn't notice until the elapsed time became positive
+ * again, then we potentially spent many seconds not refilling the bucket
+ * when we should have been refilling it. But the fact that we didn't notice
+ * until now means that no circuit creation requests came in during that
+ * time, so the client doesn't end up punished that much from this hopefully
+ * rare situation.*/
+ if ((int64_t)now < last_refill_ts) {
+ /* Use the maximum allowed value of token. */
+ num_token = dos_cc_circuit_burst;
+ goto end;
+ }
+
+ /* How many seconds have elapsed between now and the last refill?
+ * This subtraction can't underflow, because now >= last_refill_ts.
+ * And it can't overflow, because INT64_MAX - (-INT64_MIN) == UINT64_MAX. */
+ elapsed_time_last_refill = (uint64_t)now - last_refill_ts;
+
+ /* If the elapsed time is very large, it means our clock jumped forward.
+ * If the multiplication would overflow, use the maximum allowed value. */
+ if (elapsed_time_last_refill > UINT32_MAX) {
+ num_token = dos_cc_circuit_burst;
+ goto end;
+ }
+
+ /* Compute how many circuits we are allowed in that time frame which we'll
+ * add to the bucket. This can't overflow, because both multiplicands
+ * are less than or equal to UINT32_MAX, and num_token is uint64_t. */
+ num_token = elapsed_time_last_refill * circuit_rate;
+
+ end:
+ /* If the sum would overflow, use the maximum allowed value. */
+ if (num_token > UINT32_MAX - stats->circuit_bucket) {
+ new_circuit_bucket_count = dos_cc_circuit_burst;
+ } else {
+ /* We cap the bucket to the burst value else this could overflow uint32_t
+ * over time. */
+ new_circuit_bucket_count = MIN(stats->circuit_bucket + (uint32_t)num_token,
+ dos_cc_circuit_burst);
+ }
+
+ /* This function is not allowed to make the bucket count larger than the
+ * burst value */
+ tor_assert_nonfatal(new_circuit_bucket_count <= dos_cc_circuit_burst);
+ /* This function is not allowed to make the bucket count smaller, unless it
+ * is decreasing it to a newly configured, lower burst value. We allow the
+ * bucket to stay the same size, in case the circuit rate is zero. */
+ tor_assert_nonfatal(new_circuit_bucket_count >= stats->circuit_bucket ||
+ new_circuit_bucket_count == dos_cc_circuit_burst);
+
+ log_debug(LD_DOS, "DoS address %s has its circuit bucket value: %" PRIu32
+ ". Filling it to %" PRIu32 ". Circuit rate is %" PRIu64
+ ". Elapsed time is %" PRIi64,
+ fmt_addr(addr), stats->circuit_bucket, new_circuit_bucket_count,
+ circuit_rate, (int64_t)elapsed_time_last_refill);
+
+ stats->circuit_bucket = new_circuit_bucket_count;
+ stats->last_circ_bucket_refill_ts = now;
+
+ done:
+ return;
+}
+
+/* Return true iff the circuit bucket is down to 0 and the number of
+ * concurrent connections is greater or equal the minimum threshold set the
+ * consensus parameter. */
+static int
+cc_has_exhausted_circuits(const dos_client_stats_t *stats)
+{
+ tor_assert(stats);
+ return stats->cc_stats.circuit_bucket == 0 &&
+ stats->concurrent_count >= dos_cc_min_concurrent_conn;
+}
+
+/* Mark client address by setting a timestamp in the stats object which tells
+ * us until when it is marked as positively detected. */
+static void
+cc_mark_client(cc_client_stats_t *stats)
+{
+ tor_assert(stats);
+ /* We add a random offset of a maximum of half the defense time so it is
+ * less predictable. */
+ stats->marked_until_ts =
+ approx_time() + dos_cc_defense_time_period +
+ crypto_rand_int_range(1, dos_cc_defense_time_period / 2);
+}
+
+/* Return true iff the given channel address is marked as malicious. This is
+ * called a lot and part of the fast path of handling cells. It has to remain
+ * as fast as we can. */
+static int
+cc_channel_addr_is_marked(channel_t *chan)
+{
+ time_t now;
+ tor_addr_t addr;
+ clientmap_entry_t *entry;
+ cc_client_stats_t *stats = NULL;
+
+ if (chan == NULL) {
+ goto end;
+ }
+ /* Must be a client connection else we ignore. */
+ if (!channel_is_client(chan)) {
+ goto end;
+ }
+ /* Without an IP address, nothing can work. */
+ if (!channel_get_addr_if_possible(chan, &addr)) {
+ goto end;
+ }
+
+ /* We are only interested in client connection from the geoip cache. */
+ entry = geoip_lookup_client(&addr, NULL, GEOIP_CLIENT_CONNECT);
+ if (entry == NULL) {
+ /* We can have a connection creating circuits but not tracked by the geoip
+ * cache. Once this DoS subsystem is enabled, we can end up here with no
+ * entry for the channel. */
+ goto end;
+ }
+ now = approx_time();
+ stats = &entry->dos_stats.cc_stats;
+
+ end:
+ return stats && stats->marked_until_ts >= now;
+}
+
+/* Concurrent connection private API. */
+
+/* Free everything for the connection DoS mitigation subsystem. */
+static void
+conn_free_all(void)
+{
+ dos_conn_enabled = 0;
+}
+
+/* Called when the consensus has changed. Do appropriate actions for the
+ * connection mitigation subsystem. */
+static void
+conn_consensus_has_changed(const networkstatus_t *ns)
+{
+ /* Looking at the consensus, is the connection mitigation subsystem enabled?
+ * If not and it was enabled before, clean it up. */
+ if (dos_conn_enabled && !get_param_conn_enabled(ns)) {
+ conn_free_all();
+ }
+}
+
+/* General private API */
+
+/* Return true iff we have at least one DoS detection enabled. This is used to
+ * decide if we need to allocate any kind of high level DoS object. */
+static inline int
+dos_is_enabled(void)
+{
+ return (dos_cc_enabled || dos_conn_enabled);
+}
+
+/* Circuit creation public API. */
+
+/* Called when a CREATE cell is received from the given channel. */
+void
+dos_cc_new_create_cell(channel_t *chan)
+{
+ tor_addr_t addr;
+ clientmap_entry_t *entry;
+
+ tor_assert(chan);
+
+ /* Skip everything if not enabled. */
+ if (!dos_cc_enabled) {
+ goto end;
+ }
+
+ /* Must be a client connection else we ignore. */
+ if (!channel_is_client(chan)) {
+ goto end;
+ }
+ /* Without an IP address, nothing can work. */
+ if (!channel_get_addr_if_possible(chan, &addr)) {
+ goto end;
+ }
+
+ /* We are only interested in client connection from the geoip cache. */
+ entry = geoip_lookup_client(&addr, NULL, GEOIP_CLIENT_CONNECT);
+ if (entry == NULL) {
+ /* We can have a connection creating circuits but not tracked by the geoip
+ * cache. Once this DoS subsystem is enabled, we can end up here with no
+ * entry for the channel. */
+ goto end;
+ }
+
+ /* General comment. Even though the client can already be marked as
+ * malicious, we continue to track statistics. If it keeps going above
+ * threshold while marked, the defense period time will grow longer. There
+ * is really no point at unmarking a client that keeps DoSing us. */
+
+ /* First of all, we'll try to refill the circuit bucket opportunistically
+ * before we assess. */
+ cc_stats_refill_bucket(&entry->dos_stats.cc_stats, &addr);
+
+ /* Take a token out of the circuit bucket if we are above 0 so we don't
+ * underflow the bucket. */
+ if (entry->dos_stats.cc_stats.circuit_bucket > 0) {
+ entry->dos_stats.cc_stats.circuit_bucket--;
+ }
+
+ /* This is the detection. Assess at every CREATE cell if the client should
+ * get marked as malicious. This should be kept as fast as possible. */
+ if (cc_has_exhausted_circuits(&entry->dos_stats)) {
+ /* If this is the first time we mark this entry, log it a info level.
+ * Under heavy DDoS, logging each time we mark would results in lots and
+ * lots of logs. */
+ if (entry->dos_stats.cc_stats.marked_until_ts == 0) {
+ log_debug(LD_DOS, "Detected circuit creation DoS by address: %s",
+ fmt_addr(&addr));
+ cc_num_marked_addrs++;
+ }
+ cc_mark_client(&entry->dos_stats.cc_stats);
+ }
+
+ end:
+ return;
+}
+
+/* Return the defense type that should be used for this circuit.
+ *
+ * This is part of the fast path and called a lot. */
+dos_cc_defense_type_t
+dos_cc_get_defense_type(channel_t *chan)
+{
+ tor_assert(chan);
+
+ /* Skip everything if not enabled. */
+ if (!dos_cc_enabled) {
+ goto end;
+ }
+
+ /* On an OR circuit, we'll check if the previous channel is a marked client
+ * connection detected by our DoS circuit creation mitigation subsystem. */
+ if (cc_channel_addr_is_marked(chan)) {
+ /* We've just assess that this circuit should trigger a defense for the
+ * cell it just seen. Note it down. */
+ cc_num_rejected_cells++;
+ return dos_cc_defense_type;
+ }
+
+ end:
+ return DOS_CC_DEFENSE_NONE;
+}
+
+/* Concurrent connection detection public API. */
+
+/* Return true iff the given address is permitted to open another connection.
+ * A defense value is returned for the caller to take appropriate actions. */
+dos_conn_defense_type_t
+dos_conn_addr_get_defense_type(const tor_addr_t *addr)
+{
+ clientmap_entry_t *entry;
+
+ tor_assert(addr);
+
+ /* Skip everything if not enabled. */
+ if (!dos_conn_enabled) {
+ goto end;
+ }
+
+ /* We are only interested in client connection from the geoip cache. */
+ entry = geoip_lookup_client(addr, NULL, GEOIP_CLIENT_CONNECT);
+ if (entry == NULL) {
+ goto end;
+ }
+
+ /* Need to be above the maximum concurrent connection count to trigger a
+ * defense. */
+ if (entry->dos_stats.concurrent_count > dos_conn_max_concurrent_count) {
+ conn_num_addr_rejected++;
+ return dos_conn_defense_type;
+ }
+
+ end:
+ return DOS_CONN_DEFENSE_NONE;
+}
+
+/* General API */
+
+/* Take any appropriate actions for the given geoip entry that is about to get
+ * freed. This is called for every entry that is being freed.
+ *
+ * This function will clear out the connection tracked flag if the concurrent
+ * count of the entry is above 0 so if those connections end up being seen by
+ * this subsystem, we won't try to decrement the counter for a new geoip entry
+ * that might have been added after this call for the same address. */
+void
+dos_geoip_entry_about_to_free(const clientmap_entry_t *geoip_ent)
+{
+ tor_assert(geoip_ent);
+
+ /* The count is down to 0 meaning no connections right now, we can safely
+ * clear the geoip entry from the cache. */
+ if (geoip_ent->dos_stats.concurrent_count == 0) {
+ goto end;
+ }
+
+ /* For each connection matching the geoip entry address, we'll clear the
+ * tracked flag because the entry is about to get removed from the geoip
+ * cache. We do not try to decrement if the flag is not set. */
+ SMARTLIST_FOREACH_BEGIN(get_connection_array(), connection_t *, conn) {
+ if (conn->type == CONN_TYPE_OR) {
+ or_connection_t *or_conn = TO_OR_CONN(conn);
+ if (!tor_addr_compare(&geoip_ent->addr, &or_conn->real_addr,
+ CMP_EXACT)) {
+ or_conn->tracked_for_dos_mitigation = 0;
+ }
+ }
+ } SMARTLIST_FOREACH_END(conn);
+
+ end:
+ return;
+}
+
+/* Note down that we've just refused a single hop client. This increments a
+ * counter later used for the heartbeat. */
+void
+dos_note_refuse_single_hop_client(void)
+{
+ num_single_hop_client_refused++;
+}
+
+/* Return true iff single hop client connection (ESTABLISH_RENDEZVOUS) should
+ * be refused. */
+int
+dos_should_refuse_single_hop_client(void)
+{
+ /* If we aren't a public relay, this shouldn't apply to anything. */
+ if (!public_server_mode(get_options())) {
+ return 0;
+ }
+
+ if (get_options()->DoSRefuseSingleHopClientRendezvous != -1) {
+ return get_options()->DoSRefuseSingleHopClientRendezvous;
+ }
+
+ return (int) networkstatus_get_param(NULL,
+ "DoSRefuseSingleHopClientRendezvous",
+ 0 /* default */, 0, 1);
+}
+
+/* Log a heartbeat message with some statistics. */
+void
+dos_log_heartbeat(void)
+{
+ char *conn_msg = NULL;
+ char *cc_msg = NULL;
+ char *single_hop_client_msg = NULL;
+
+ if (!dos_is_enabled()) {
+ goto end;
+ }
+
+ if (dos_cc_enabled) {
+ tor_asprintf(&cc_msg,
+ " %" PRIu64 " circuits rejected,"
+ " %" PRIu32 " marked addresses.",
+ cc_num_rejected_cells, cc_num_marked_addrs);
+ }
+
+ if (dos_conn_enabled) {
+ tor_asprintf(&conn_msg,
+ " %" PRIu64 " connections closed.",
+ conn_num_addr_rejected);
+ }
+
+ if (dos_should_refuse_single_hop_client()) {
+ tor_asprintf(&single_hop_client_msg,
+ " %" PRIu64 " single hop clients refused.",
+ num_single_hop_client_refused);
+ }
+
+ log_notice(LD_HEARTBEAT,
+ "DoS mitigation since startup:%s%s%s",
+ (cc_msg != NULL) ? cc_msg : " [cc not enabled]",
+ (conn_msg != NULL) ? conn_msg : " [conn not enabled]",
+ (single_hop_client_msg != NULL) ? single_hop_client_msg : "");
+
+ tor_free(conn_msg);
+ tor_free(cc_msg);
+ tor_free(single_hop_client_msg);
+
+ end:
+ return;
+}
+
+/* Called when a new client connection has been established on the given
+ * address. */
+void
+dos_new_client_conn(or_connection_t *or_conn)
+{
+ clientmap_entry_t *entry;
+
+ tor_assert(or_conn);
+
+ /* Past that point, we know we have at least one DoS detection subsystem
+ * enabled so we'll start allocating stuff. */
+ if (!dos_is_enabled()) {
+ goto end;
+ }
+
+ /* We ignore any known address meaning an address of a known relay. The
+ * reason to do so is because network reentry is possible where a client
+ * connection comes from an Exit node. Even when we'll fix reentry, this is
+ * a robust defense to keep in place. */
+ if (nodelist_probably_contains_address(&or_conn->real_addr)) {
+ goto end;
+ }
+
+ /* We are only interested in client connection from the geoip cache. */
+ entry = geoip_lookup_client(&or_conn->real_addr, NULL,
+ GEOIP_CLIENT_CONNECT);
+ if (BUG(entry == NULL)) {
+ /* Should never happen because we note down the address in the geoip
+ * cache before this is called. */
+ goto end;
+ }
+
+ entry->dos_stats.concurrent_count++;
+ or_conn->tracked_for_dos_mitigation = 1;
+ log_debug(LD_DOS, "Client address %s has now %u concurrent connections.",
+ fmt_addr(&or_conn->real_addr),
+ entry->dos_stats.concurrent_count);
+
+ end:
+ return;
+}
+
+/* Called when a client connection for the given IP address has been closed. */
+void
+dos_close_client_conn(const or_connection_t *or_conn)
+{
+ clientmap_entry_t *entry;
+
+ tor_assert(or_conn);
+
+ /* We have to decrement the count on tracked connection only even if the
+ * subsystem has been disabled at runtime because it might be re-enabled
+ * after and we need to keep a synchronized counter at all time. */
+ if (!or_conn->tracked_for_dos_mitigation) {
+ goto end;
+ }
+
+ /* We are only interested in client connection from the geoip cache. */
+ entry = geoip_lookup_client(&or_conn->real_addr, NULL,
+ GEOIP_CLIENT_CONNECT);
+ if (entry == NULL) {
+ /* This can happen because we can close a connection before the channel
+ * got to be noted down in the geoip cache. */
+ goto end;
+ }
+
+ /* Extra super duper safety. Going below 0 means an underflow which could
+ * lead to most likely a false positive. In theory, this should never happen
+ * but lets be extra safe. */
+ if (BUG(entry->dos_stats.concurrent_count == 0)) {
+ goto end;
+ }
+
+ entry->dos_stats.concurrent_count--;
+ log_debug(LD_DOS, "Client address %s has lost a connection. Concurrent "
+ "connections are now at %u",
+ fmt_addr(&or_conn->real_addr),
+ entry->dos_stats.concurrent_count);
+
+ end:
+ return;
+}
+
+/* Called when the consensus has changed. We might have new consensus
+ * parameters to look at. */
+void
+dos_consensus_has_changed(const networkstatus_t *ns)
+{
+ /* There are two ways to configure this subsystem, one at startup through
+ * dos_init() which is called when the options are parsed. And this one
+ * through the consensus. We don't want to enable any DoS mitigation if we
+ * aren't a public relay. */
+ if (!public_server_mode(get_options())) {
+ return;
+ }
+
+ cc_consensus_has_changed(ns);
+ conn_consensus_has_changed(ns);
+
+ /* We were already enabled or we just became enabled but either way, set the
+ * consensus parameters for all subsystems. */
+ set_dos_parameters(ns);
+}
+
+/* Return true iff the DoS mitigation subsystem is enabled. */
+int
+dos_enabled(void)
+{
+ return dos_is_enabled();
+}
+
+/* Free everything from the Denial of Service subsystem. */
+void
+dos_free_all(void)
+{
+ /* Free the circuit creation mitigation subsystem. It is safe to do this
+ * even if it wasn't initialized. */
+ cc_free_all();
+
+ /* Free the connection mitigation subsystem. It is safe to do this even if
+ * it wasn't initialized. */
+ conn_free_all();
+}
+
+/* Initialize the Denial of Service subsystem. */
+void
+dos_init(void)
+{
+ /* To initialize, we only need to get the parameters. */
+ set_dos_parameters(NULL);
+}
+
diff --git a/src/or/dos.h b/src/or/dos.h
new file mode 100644
index 0000000000..5d35a2b12e
--- /dev/null
+++ b/src/or/dos.h
@@ -0,0 +1,140 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/*
+ * \file dos.h
+ * \brief Header file for dos.c
+ */
+
+#ifndef TOR_DOS_H
+#define TOR_DOS_H
+
+/* Structure that keeps stats of client connection per-IP. */
+typedef struct cc_client_stats_t {
+ /* Number of allocated circuits remaining for this address. It is
+ * decremented every time a new circuit is seen for this client address and
+ * if the count goes to 0, we have a positive detection. */
+ uint32_t circuit_bucket;
+
+ /* When was the last time we've refilled the circuit bucket? This is used to
+ * know if we need to refill the bucket when a new circuit is seen. It is
+ * synchronized using approx_time(). */
+ time_t last_circ_bucket_refill_ts;
+
+ /* This client address was detected to be above the circuit creation rate
+ * and this timestamp indicates until when it should remain marked as
+ * detected so we can apply a defense for the address. It is synchronized
+ * using the approx_time(). */
+ time_t marked_until_ts;
+} cc_client_stats_t;
+
+/* This object is a top level object that contains everything related to the
+ * per-IP client DoS mitigation. Because it is per-IP, it is used in the geoip
+ * clientmap_entry_t object. */
+typedef struct dos_client_stats_t {
+ /* Concurrent connection count from the specific address. 2^32 is most
+ * likely way too big for the amount of allowed file descriptors. */
+ uint32_t concurrent_count;
+
+ /* Circuit creation statistics. This is only used if the circuit creation
+ * subsystem has been enabled (dos_cc_enabled). */
+ cc_client_stats_t cc_stats;
+} dos_client_stats_t;
+
+/* General API. */
+
+/* Stub. */
+struct clientmap_entry_t;
+
+void dos_init(void);
+void dos_free_all(void);
+void dos_consensus_has_changed(const networkstatus_t *ns);
+int dos_enabled(void);
+void dos_log_heartbeat(void);
+void dos_geoip_entry_about_to_free(const struct clientmap_entry_t *geoip_ent);
+
+void dos_new_client_conn(or_connection_t *or_conn);
+void dos_close_client_conn(const or_connection_t *or_conn);
+
+int dos_should_refuse_single_hop_client(void);
+void dos_note_refuse_single_hop_client(void);
+
+/*
+ * Circuit creation DoS mitigation subsystemn interface.
+ */
+
+/* DoSCircuitCreationEnabled default. Disabled by default. */
+#define DOS_CC_ENABLED_DEFAULT 0
+/* DoSCircuitCreationDefenseType maps to the dos_cc_defense_type_t enum. */
+#define DOS_CC_DEFENSE_TYPE_DEFAULT DOS_CC_DEFENSE_REFUSE_CELL
+/* DoSCircuitCreationMinConnections default */
+#define DOS_CC_MIN_CONCURRENT_CONN_DEFAULT 3
+/* DoSCircuitCreationRateTenths is 3 per seconds. */
+#define DOS_CC_CIRCUIT_RATE_DEFAULT 3
+/* DoSCircuitCreationBurst default. */
+#define DOS_CC_CIRCUIT_BURST_DEFAULT 90
+/* DoSCircuitCreationDefenseTimePeriod in seconds. */
+#define DOS_CC_DEFENSE_TIME_PERIOD_DEFAULT (60 * 60)
+
+/* Type of defense that we can use for the circuit creation DoS mitigation. */
+typedef enum dos_cc_defense_type_t {
+ /* No defense used. */
+ DOS_CC_DEFENSE_NONE = 1,
+ /* Refuse any cells which means a DESTROY cell will be sent back. */
+ DOS_CC_DEFENSE_REFUSE_CELL = 2,
+
+ /* Maximum value that can be used. Useful for the boundaries of the
+ * consensus parameter. */
+ DOS_CC_DEFENSE_MAX = 2,
+} dos_cc_defense_type_t;
+
+void dos_cc_new_create_cell(channel_t *channel);
+dos_cc_defense_type_t dos_cc_get_defense_type(channel_t *chan);
+
+/*
+ * Concurrent connection DoS mitigation interface.
+ */
+
+/* DoSConnectionEnabled default. Disabled by default. */
+#define DOS_CONN_ENABLED_DEFAULT 0
+/* DoSConnectionMaxConcurrentCount default. */
+#define DOS_CONN_MAX_CONCURRENT_COUNT_DEFAULT 100
+/* DoSConnectionDefenseType maps to the dos_conn_defense_type_t enum. */
+#define DOS_CONN_DEFENSE_TYPE_DEFAULT DOS_CONN_DEFENSE_CLOSE
+
+/* Type of defense that we can use for the concurrent connection DoS
+ * mitigation. */
+typedef enum dos_conn_defense_type_t {
+ /* No defense used. */
+ DOS_CONN_DEFENSE_NONE = 1,
+ /* Close immediately the connection meaning refuse it. */
+ DOS_CONN_DEFENSE_CLOSE = 2,
+
+ /* Maximum value that can be used. Useful for the boundaries of the
+ * consensus parameter. */
+ DOS_CONN_DEFENSE_MAX = 2,
+} dos_conn_defense_type_t;
+
+dos_conn_defense_type_t dos_conn_addr_get_defense_type(const tor_addr_t *addr);
+
+#ifdef DOS_PRIVATE
+
+STATIC uint32_t get_param_conn_max_concurrent_count(
+ const networkstatus_t *ns);
+STATIC uint32_t get_param_cc_circuit_burst(const networkstatus_t *ns);
+STATIC uint32_t get_param_cc_min_concurrent_connection(
+ const networkstatus_t *ns);
+
+STATIC uint64_t get_circuit_rate_per_second(void);
+STATIC void cc_stats_refill_bucket(cc_client_stats_t *stats,
+ const tor_addr_t *addr);
+
+MOCK_DECL(STATIC unsigned int, get_param_cc_enabled,
+ (const networkstatus_t *ns));
+MOCK_DECL(STATIC unsigned int, get_param_conn_enabled,
+ (const networkstatus_t *ns));
+
+#endif /* TOR_DOS_PRIVATE */
+
+#endif /* TOR_DOS_H */
+
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index 0109da8e01..2cbc8019d4 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -67,7 +67,7 @@
*
* While we're building circuits, we track a little "guard state" for
* each circuit. We use this to keep track of whether the circuit is
- * one that we can use as soon as its done, or whether it's one that
+ * one that we can use as soon as it's done, or whether it's one that
* we should keep around to see if we can do better. In the latter case,
* a periodic call to entry_guards_upgrade_waiting_circuits() will
* eventually upgrade it.
@@ -967,7 +967,7 @@ entry_guard_learned_bridge_identity(const tor_addr_port_t *addrport,
* violate it.
*/
STATIC int
-num_reachable_filtered_guards(guard_selection_t *gs,
+num_reachable_filtered_guards(const guard_selection_t *gs,
const entry_guard_restriction_t *rst)
{
int n_reachable_filtered_guards = 0;
@@ -1461,6 +1461,94 @@ guard_in_node_family(const entry_guard_t *guard, const node_t *node)
}
}
+/* Allocate and return a new exit guard restriction (where <b>exit_id</b> is of
+ * size DIGEST_LEN) */
+STATIC entry_guard_restriction_t *
+guard_create_exit_restriction(const uint8_t *exit_id)
+{
+ entry_guard_restriction_t *rst = NULL;
+ rst = tor_malloc_zero(sizeof(entry_guard_restriction_t));
+ rst->type = RST_EXIT_NODE;
+ memcpy(rst->exclude_id, exit_id, DIGEST_LEN);
+ return rst;
+}
+
+/** If we have fewer than this many possible usable guards, don't set
+ * MD-availability-based restrictions: we might blacklist all of them. */
+#define MIN_GUARDS_FOR_MD_RESTRICTION 10
+
+/** Return true if we should set md dirserver restrictions. We might not want
+ * to set those if our guard options are too restricted, since we don't want
+ * to blacklist all of them. */
+static int
+should_set_md_dirserver_restriction(void)
+{
+ const guard_selection_t *gs = get_guard_selection_info();
+ int num_usable_guards = num_reachable_filtered_guards(gs, NULL);
+
+ /* Don't set restriction if too few reachable filtered guards. */
+ if (num_usable_guards < MIN_GUARDS_FOR_MD_RESTRICTION) {
+ log_info(LD_GUARD, "Not setting md restriction: only %d"
+ " usable guards.", num_usable_guards);
+ return 0;
+ }
+
+ /* We have enough usable guards: set MD restriction */
+ return 1;
+}
+
+/** Allocate and return an outdated md guard restriction. Return NULL if no
+ * such restriction is needed. */
+STATIC entry_guard_restriction_t *
+guard_create_dirserver_md_restriction(void)
+{
+ entry_guard_restriction_t *rst = NULL;
+
+ if (!should_set_md_dirserver_restriction()) {
+ log_debug(LD_GUARD, "Not setting md restriction: too few "
+ "filtered guards.");
+ return NULL;
+ }
+
+ rst = tor_malloc_zero(sizeof(entry_guard_restriction_t));
+ rst->type = RST_OUTDATED_MD_DIRSERVER;
+
+ return rst;
+}
+
+/* Return True if <b>guard</b> obeys the exit restriction <b>rst</b>. */
+static int
+guard_obeys_exit_restriction(const entry_guard_t *guard,
+ const entry_guard_restriction_t *rst)
+{
+ tor_assert(rst->type == RST_EXIT_NODE);
+
+ // Exclude the exit ID and all of its family.
+ const node_t *node = node_get_by_id((const char*)rst->exclude_id);
+ if (node && guard_in_node_family(guard, node))
+ return 0;
+
+ return tor_memneq(guard->identity, rst->exclude_id, DIGEST_LEN);
+}
+
+/** Return True if <b>guard</b> should be used as a dirserver for fetching
+ * microdescriptors. */
+static int
+guard_obeys_md_dirserver_restriction(const entry_guard_t *guard)
+{
+ /* If this guard is an outdated dirserver, don't use it. */
+ if (microdesc_relay_is_outdated_dirserver(guard->identity)) {
+ log_info(LD_GENERAL, "Skipping %s dirserver: outdated",
+ hex_str(guard->identity, DIGEST_LEN));
+ return 0;
+ }
+
+ log_debug(LD_GENERAL, "%s dirserver obeys md restrictions",
+ hex_str(guard->identity, DIGEST_LEN));
+
+ return 1;
+}
+
/**
* Return true iff <b>guard</b> obeys the restrictions defined in <b>rst</b>.
* (If <b>rst</b> is NULL, there are no restrictions.)
@@ -1473,13 +1561,14 @@ entry_guard_obeys_restriction(const entry_guard_t *guard,
if (! rst)
return 1; // No restriction? No problem.
- // Only one kind of restriction exists right now: excluding an exit
- // ID and all of its family.
- const node_t *node = node_get_by_id((const char*)rst->exclude_id);
- if (node && guard_in_node_family(guard, node))
- return 0;
+ if (rst->type == RST_EXIT_NODE) {
+ return guard_obeys_exit_restriction(guard, rst);
+ } else if (rst->type == RST_OUTDATED_MD_DIRSERVER) {
+ return guard_obeys_md_dirserver_restriction(guard);
+ }
- return tor_memneq(guard->identity, rst->exclude_id, DIGEST_LEN);
+ tor_assert_nonfatal_unreached();
+ return 0;
}
/**
@@ -2106,7 +2195,7 @@ entry_guard_has_higher_priority(entry_guard_t *a, entry_guard_t *b)
}
/** Release all storage held in <b>restriction</b> */
-static void
+STATIC void
entry_guard_restriction_free(entry_guard_restriction_t *rst)
{
tor_free(rst);
@@ -2125,6 +2214,23 @@ circuit_guard_state_free(circuit_guard_state_t *state)
tor_free(state);
}
+/** Allocate and return a new circuit_guard_state_t to track the result
+ * of using <b>guard</b> for a given operation. */
+static circuit_guard_state_t *
+circuit_guard_state_new(entry_guard_t *guard, unsigned state,
+ entry_guard_restriction_t *rst)
+{
+ circuit_guard_state_t *result;
+
+ result = tor_malloc_zero(sizeof(circuit_guard_state_t));
+ result->guard = entry_guard_handle_new(guard);
+ result->state = state;
+ result->state_set_at = approx_time();
+ result->restrictions = rst;
+
+ return result;
+}
+
/**
* Pick a suitable entry guard for a circuit in, and place that guard
* in *<b>chosen_node_out</b>. Set *<b>guard_state_out</b> to an opaque
@@ -2163,11 +2269,7 @@ entry_guard_pick_for_circuit(guard_selection_t *gs,
goto fail;
*chosen_node_out = node;
- *guard_state_out = tor_malloc_zero(sizeof(circuit_guard_state_t));
- (*guard_state_out)->guard = entry_guard_handle_new(guard);
- (*guard_state_out)->state = state;
- (*guard_state_out)->state_set_at = approx_time();
- (*guard_state_out)->restrictions = rst;
+ *guard_state_out = circuit_guard_state_new(guard, state, rst);
return 0;
fail:
@@ -2997,11 +3099,9 @@ get_guard_state_for_bridge_desc_fetch(const char *digest)
guard->last_tried_to_connect = approx_time();
/* Create the guard state */
- guard_state = tor_malloc_zero(sizeof(circuit_guard_state_t));
- guard_state->guard = entry_guard_handle_new(guard);
- guard_state->state = GUARD_CIRC_STATE_USABLE_ON_COMPLETION;
- guard_state->state_set_at = approx_time();
- guard_state->restrictions = NULL;
+ guard_state = circuit_guard_state_new(guard,
+ GUARD_CIRC_STATE_USABLE_ON_COMPLETION,
+ NULL);
return guard_state;
}
@@ -3348,8 +3448,8 @@ guards_choose_guard(cpath_build_state_t *state,
/* We're building to a targeted exit node, so that node can't be
* chosen as our guard for this circuit. Remember that fact in a
* restriction. */
- rst = tor_malloc_zero(sizeof(entry_guard_restriction_t));
- memcpy(rst->exclude_id, exit_id, DIGEST_LEN);
+ rst = guard_create_exit_restriction(exit_id);
+ tor_assert(rst);
}
if (entry_guard_pick_for_circuit(get_guard_selection_info(),
GUARD_USAGE_TRAFFIC,
@@ -3401,12 +3501,20 @@ remove_all_entry_guards(void)
/** Helper: pick a directory guard, with whatever algorithm is used. */
const node_t *
-guards_choose_dirguard(circuit_guard_state_t **guard_state_out)
+guards_choose_dirguard(uint8_t dir_purpose,
+ circuit_guard_state_t **guard_state_out)
{
const node_t *r = NULL;
+ entry_guard_restriction_t *rst = NULL;
+
+ /* If we are fetching microdescs, don't query outdated dirservers. */
+ if (dir_purpose == DIR_PURPOSE_FETCH_MICRODESC) {
+ rst = guard_create_dirserver_md_restriction();
+ }
+
if (entry_guard_pick_for_circuit(get_guard_selection_info(),
GUARD_USAGE_DIRGUARD,
- NULL,
+ rst,
&r,
guard_state_out) < 0) {
tor_assert(r == NULL);
diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h
index 32cfff73be..39bff14381 100644
--- a/src/or/entrynodes.h
+++ b/src/or/entrynodes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -272,22 +272,28 @@ struct guard_selection_s {
struct entry_guard_handle_t;
+/** Types of restrictions we impose when picking guard nodes */
+typedef enum guard_restriction_type_t {
+ /* Don't pick the same guard node as our exit node (or its family) */
+ RST_EXIT_NODE = 0,
+ /* Don't pick dirguards that have previously shown to be outdated */
+ RST_OUTDATED_MD_DIRSERVER = 1
+} guard_restriction_type_t;
+
/**
* A restriction to remember which entry guards are off-limits for a given
* circuit.
*
- * Right now, we only use restrictions to block a single guard and its family
- * from being selected; this mechanism is designed to be more extensible in
- * the future, however.
- *
* Note: This mechanism is NOT for recording which guards are never to be
* used: only which guards cannot be used on <em>one particular circuit</em>.
*/
struct entry_guard_restriction_t {
- /**
- * The guard's RSA identity digest must not equal this; and it must not
- * be in the same family as any node with this digest.
- */
+ /* What type of restriction are we imposing? */
+ guard_restriction_type_t type;
+
+ /* In case of restriction type RST_EXIT_NODE, the guard's RSA identity
+ * digest must not equal this; and it must not be in the same family as any
+ * node with this digest. */
uint8_t exclude_id[DIGEST_LEN];
};
@@ -316,7 +322,8 @@ struct circuit_guard_state_t {
int guards_update_all(void);
const node_t *guards_choose_guard(cpath_build_state_t *state,
circuit_guard_state_t **guard_state_out);
-const node_t *guards_choose_dirguard(circuit_guard_state_t **guard_state_out);
+const node_t *guards_choose_dirguard(uint8_t dir_purpose,
+ circuit_guard_state_t **guard_state_out);
#if 1
/* XXXX NM I would prefer that all of this stuff be private to
@@ -514,7 +521,7 @@ STATIC void entry_guard_consider_retry(entry_guard_t *guard);
STATIC void make_guard_confirmed(guard_selection_t *gs, entry_guard_t *guard);
STATIC void entry_guards_update_confirmed(guard_selection_t *gs);
STATIC void entry_guards_update_primary(guard_selection_t *gs);
-STATIC int num_reachable_filtered_guards(guard_selection_t *gs,
+STATIC int num_reachable_filtered_guards(const guard_selection_t *gs,
const entry_guard_restriction_t *rst);
STATIC void sampled_guards_update_from_consensus(guard_selection_t *gs);
/**
@@ -550,7 +557,17 @@ STATIC unsigned entry_guards_note_guard_success(guard_selection_t *gs,
unsigned old_state);
STATIC int entry_guard_has_higher_priority(entry_guard_t *a, entry_guard_t *b);
STATIC char *getinfo_helper_format_single_entry_guard(const entry_guard_t *e);
-#endif
+
+STATIC entry_guard_restriction_t *
+guard_create_exit_restriction(const uint8_t *exit_id);
+
+STATIC entry_guard_restriction_t *
+guard_create_dirserver_md_restriction(void);
+
+STATIC void
+entry_guard_restriction_free(entry_guard_restriction_t *rst);
+
+#endif /* defined(ENTRYNODES_PRIVATE) */
void remove_all_entry_guards_for_guard_selection(guard_selection_t *gs);
void remove_all_entry_guards(void);
diff --git a/src/or/ext_orport.c b/src/or/ext_orport.c
index 676adfd8bf..b60d2e55c8 100644
--- a/src/or/ext_orport.c
+++ b/src/or/ext_orport.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/ext_orport.h b/src/or/ext_orport.h
index 33d954e8d0..b2cd05db8f 100644
--- a/src/or/ext_orport.h
+++ b/src/or/ext_orport.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef EXT_ORPORT_H
diff --git a/src/or/fp_pair.c b/src/or/fp_pair.c
index eeeb0f1de3..f730106d06 100644
--- a/src/or/fp_pair.c
+++ b/src/or/fp_pair.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/fp_pair.h b/src/or/fp_pair.h
index b1466581d2..4cea3eda6d 100644
--- a/src/or/fp_pair.h
+++ b/src/or/fp_pair.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 2f0047fa06..ff46990de6 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -33,6 +33,7 @@
#include "config.h"
#include "control.h"
#include "dnsserv.h"
+#include "dos.h"
#include "geoip.h"
#include "routerlist.h"
@@ -72,6 +73,38 @@ static smartlist_t *geoip_ipv4_entries = NULL, *geoip_ipv6_entries = NULL;
static char geoip_digest[DIGEST_LEN];
static char geoip6_digest[DIGEST_LEN];
+/* Total size in bytes of the geoip client history cache. Used by the OOM
+ * handler. */
+static size_t geoip_client_history_cache_size;
+
+/* Increment the geoip client history cache size counter with the given bytes.
+ * This prevents an overflow and set it to its maximum in that case. */
+static inline void
+geoip_increment_client_history_cache_size(size_t bytes)
+{
+ /* This is shockingly high, lets log it so it can be reported. */
+ IF_BUG_ONCE(geoip_client_history_cache_size > (SIZE_MAX - bytes)) {
+ geoip_client_history_cache_size = SIZE_MAX;
+ return;
+ }
+ geoip_client_history_cache_size += bytes;
+}
+
+/* Decrement the geoip client history cache size counter with the given bytes.
+ * This prevents an underflow and set it to 0 in that case. */
+static inline void
+geoip_decrement_client_history_cache_size(size_t bytes)
+{
+ /* Going below 0 means that we either allocated an entry without
+ * incrementing the counter or we have different sizes when allocating and
+ * freeing. It shouldn't happened so log it. */
+ IF_BUG_ONCE(geoip_client_history_cache_size < bytes) {
+ geoip_client_history_cache_size = 0;
+ return;
+ }
+ geoip_client_history_cache_size -= bytes;
+}
+
/** Return the index of the <b>country</b>'s entry in the GeoIP
* country list if it is a valid 2-letter country code, otherwise
* return -1. */
@@ -472,24 +505,6 @@ geoip_db_digest(sa_family_t family)
return hex_str(geoip6_digest, DIGEST_LEN);
}
-/** Entry in a map from IP address to the last time we've seen an incoming
- * connection from that IP address. Used by bridges only, to track which
- * countries have them blocked. */
-typedef struct clientmap_entry_t {
- HT_ENTRY(clientmap_entry_t) node;
- tor_addr_t addr;
- /* Name of pluggable transport used by this client. NULL if no
- pluggable transport was used. */
- char *transport_name;
-
- /** Time when we last saw this IP address, in MINUTES since the epoch.
- *
- * (This will run out of space around 4011 CE. If Tor is still in use around
- * 4000 CE, please remember to add more bits to last_seen_in_minutes.) */
- unsigned int last_seen_in_minutes:30;
- unsigned int action:2;
-} clientmap_entry_t;
-
/** Largest allowable value for last_seen_in_minutes. (It's a 30-bit field,
* so it can hold up to (1u<<30)-1, or 0x3fffffffu.
*/
@@ -526,6 +541,15 @@ HT_PROTOTYPE(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
HT_GENERATE2(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
clientmap_entries_eq, 0.6, tor_reallocarray_, tor_free_)
+/** Return the size of a client map entry. */
+static inline size_t
+clientmap_entry_size(const clientmap_entry_t *ent)
+{
+ tor_assert(ent);
+ return (sizeof(clientmap_entry_t) +
+ (ent->transport_name ? strlen(ent->transport_name) : 0));
+}
+
/** Free all storage held by <b>ent</b>. */
static void
clientmap_entry_free(clientmap_entry_t *ent)
@@ -533,10 +557,40 @@ clientmap_entry_free(clientmap_entry_t *ent)
if (!ent)
return;
+ /* This entry is about to be freed so pass it to the DoS subsystem to see if
+ * any actions can be taken about it. */
+ dos_geoip_entry_about_to_free(ent);
+ geoip_decrement_client_history_cache_size(clientmap_entry_size(ent));
+
tor_free(ent->transport_name);
tor_free(ent);
}
+/* Return a newly allocated clientmap entry with the given action and address
+ * that are mandatory. The transport_name can be optional. This can't fail. */
+static clientmap_entry_t *
+clientmap_entry_new(geoip_client_action_t action, const tor_addr_t *addr,
+ const char *transport_name)
+{
+ clientmap_entry_t *entry;
+
+ tor_assert(action == GEOIP_CLIENT_CONNECT ||
+ action == GEOIP_CLIENT_NETWORKSTATUS);
+ tor_assert(addr);
+
+ entry = tor_malloc_zero(sizeof(clientmap_entry_t));
+ entry->action = action;
+ tor_addr_copy(&entry->addr, addr);
+ if (transport_name) {
+ entry->transport_name = tor_strdup(transport_name);
+ }
+
+ /* Allocated and initialized, note down its size for the OOM handler. */
+ geoip_increment_client_history_cache_size(clientmap_entry_size(entry));
+
+ return entry;
+}
+
/** Clear history of connecting clients used by entry and bridge stats. */
static void
client_history_clear(void)
@@ -564,14 +618,17 @@ geoip_note_client_seen(geoip_client_action_t action,
time_t now)
{
const or_options_t *options = get_options();
- clientmap_entry_t lookup, *ent;
- memset(&lookup, 0, sizeof(clientmap_entry_t));
+ clientmap_entry_t *ent;
if (action == GEOIP_CLIENT_CONNECT) {
- /* Only remember statistics as entry guard or as bridge. */
- if (!options->EntryStatistics &&
- (!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
- return;
+ /* Only remember statistics if the DoS mitigation subsystem is enabled. If
+ * not, only if as entry guard or as bridge. */
+ if (!dos_enabled()) {
+ if (!options->EntryStatistics &&
+ (!(options->BridgeRelay && options->BridgeRecordUsageByCountry))) {
+ return;
+ }
+ }
} else {
/* Only gather directory-request statistics if configured, and
* forcibly disable them on bridge authorities. */
@@ -583,17 +640,9 @@ geoip_note_client_seen(geoip_client_action_t action,
safe_str_client(fmt_addr((addr))),
transport_name ? transport_name : "<no transport>");
- tor_addr_copy(&lookup.addr, addr);
- lookup.action = (int)action;
- lookup.transport_name = (char*) transport_name;
- ent = HT_FIND(clientmap, &client_history, &lookup);
-
+ ent = geoip_lookup_client(addr, transport_name, action);
if (! ent) {
- ent = tor_malloc_zero(sizeof(clientmap_entry_t));
- tor_addr_copy(&ent->addr, addr);
- if (transport_name)
- ent->transport_name = tor_strdup(transport_name);
- ent->action = (int)action;
+ ent = clientmap_entry_new(action, addr, transport_name);
HT_INSERT(clientmap, &client_history, ent);
}
if (now / 60 <= (int)MAX_LAST_SEEN_IN_MINUTES && now >= 0)
@@ -635,6 +684,94 @@ geoip_remove_old_clients(time_t cutoff)
&cutoff);
}
+/* Return a client entry object matching the given address, transport name and
+ * geoip action from the clientmap. NULL if not found. The transport_name can
+ * be NULL. */
+clientmap_entry_t *
+geoip_lookup_client(const tor_addr_t *addr, const char *transport_name,
+ geoip_client_action_t action)
+{
+ clientmap_entry_t lookup;
+
+ tor_assert(addr);
+
+ /* We always look for a client connection with no transport. */
+ tor_addr_copy(&lookup.addr, addr);
+ lookup.action = action;
+ lookup.transport_name = (char *) transport_name;
+
+ return HT_FIND(clientmap, &client_history, &lookup);
+}
+
+/* Cleanup client entries older than the cutoff. Used for the OOM. Return the
+ * number of bytes freed. If 0 is returned, nothing was freed. */
+static size_t
+oom_clean_client_entries(time_t cutoff)
+{
+ size_t bytes = 0;
+ clientmap_entry_t **ent, **ent_next;
+
+ for (ent = HT_START(clientmap, &client_history); ent; ent = ent_next) {
+ clientmap_entry_t *entry = *ent;
+ if (entry->last_seen_in_minutes < (cutoff / 60)) {
+ ent_next = HT_NEXT_RMV(clientmap, &client_history, ent);
+ bytes += clientmap_entry_size(entry);
+ clientmap_entry_free(entry);
+ } else {
+ ent_next = HT_NEXT(clientmap, &client_history, ent);
+ }
+ }
+ return bytes;
+}
+
+/* Below this minimum lifetime, the OOM won't cleanup any entries. */
+#define GEOIP_CLIENT_CACHE_OOM_MIN_CUTOFF (4 * 60 * 60)
+/* The OOM moves the cutoff by that much every run. */
+#define GEOIP_CLIENT_CACHE_OOM_STEP (15 * 50)
+
+/* Cleanup the geoip client history cache called from the OOM handler. Return
+ * the amount of bytes removed. This can return a value below or above
+ * min_remove_bytes but will stop as oon as the min_remove_bytes has been
+ * reached. */
+size_t
+geoip_client_cache_handle_oom(time_t now, size_t min_remove_bytes)
+{
+ time_t k;
+ size_t bytes_removed = 0;
+
+ /* Our OOM handler called with 0 bytes to remove is a code flow error. */
+ tor_assert(min_remove_bytes != 0);
+
+ /* Set k to the initial cutoff of an entry. We then going to move it by step
+ * to try to remove as much as we can. */
+ k = WRITE_STATS_INTERVAL;
+
+ do {
+ time_t cutoff;
+
+ /* If k has reached the minimum lifetime, we have to stop else we might
+ * remove every single entries which would be pretty bad for the DoS
+ * mitigation subsystem if by just filling the geoip cache, it was enough
+ * to trigger the OOM and clean every single entries. */
+ if (k <= GEOIP_CLIENT_CACHE_OOM_MIN_CUTOFF) {
+ break;
+ }
+
+ cutoff = now - k;
+ bytes_removed += oom_clean_client_entries(cutoff);
+ k -= GEOIP_CLIENT_CACHE_OOM_STEP;
+ } while (bytes_removed < min_remove_bytes);
+
+ return bytes_removed;
+}
+
+/* Return the total size in bytes of the client history cache. */
+size_t
+geoip_client_cache_total_allocation(void)
+{
+ return geoip_client_history_cache_size;
+}
+
/** How many responses are we giving to clients requesting v3 network
* statuses? */
static uint32_t ns_v3_responses[GEOIP_NS_RESPONSE_NUM];
diff --git a/src/or/geoip.h b/src/or/geoip.h
index 070296dd07..773525ccfe 100644
--- a/src/or/geoip.h
+++ b/src/or/geoip.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -13,6 +13,7 @@
#define TOR_GEOIP_H
#include "testsupport.h"
+#include "dos.h"
#ifdef GEOIP_PRIVATE
STATIC int geoip_parse_entry(const char *line, sa_family_t family);
@@ -20,6 +21,29 @@ STATIC int geoip_get_country_by_ipv4(uint32_t ipaddr);
STATIC int geoip_get_country_by_ipv6(const struct in6_addr *addr);
STATIC void clear_geoip_db(void);
#endif
+
+/** Entry in a map from IP address to the last time we've seen an incoming
+ * connection from that IP address. Used by bridges only to track which
+ * countries have them blocked, or the DoS mitigation subsystem if enabled. */
+typedef struct clientmap_entry_t {
+ HT_ENTRY(clientmap_entry_t) node;
+ tor_addr_t addr;
+ /* Name of pluggable transport used by this client. NULL if no
+ pluggable transport was used. */
+ char *transport_name;
+
+ /** Time when we last saw this IP address, in MINUTES since the epoch.
+ *
+ * (This will run out of space around 4011 CE. If Tor is still in use around
+ * 4000 CE, please remember to add more bits to last_seen_in_minutes.) */
+ unsigned int last_seen_in_minutes:30;
+ unsigned int action:2;
+
+ /* This object is used to keep some statistics per client address for the
+ * DoS mitigation subsystem. */
+ dos_client_stats_t dos_stats;
+} clientmap_entry_t;
+
int should_record_bridge_info(const or_options_t *options);
int geoip_load_file(sa_family_t family, const char *filename);
MOCK_DECL(int, geoip_get_country_by_addr, (const tor_addr_t *addr));
@@ -33,6 +57,11 @@ void geoip_note_client_seen(geoip_client_action_t action,
const tor_addr_t *addr, const char *transport_name,
time_t now);
void geoip_remove_old_clients(time_t cutoff);
+clientmap_entry_t *geoip_lookup_client(const tor_addr_t *addr,
+ const char *transport_name,
+ geoip_client_action_t action);
+size_t geoip_client_cache_total_allocation(void);
+size_t geoip_client_cache_handle_oom(time_t now, size_t min_remove_bytes);
void geoip_note_ns_response(geoip_ns_response_t response);
char *geoip_get_transport_history(void);
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 8f28abb980..8c48a6f47d 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -587,7 +587,10 @@ accounting_set_wakeup_time(void)
char buf[ISO_TIME_LEN+1];
format_iso_time(buf, interval_start_time);
- crypto_pk_get_digest(get_server_identity_key(), digest);
+ if (crypto_pk_get_digest(get_server_identity_key(), digest) < 0) {
+ log_err(LD_BUG, "Error getting our key's digest.");
+ tor_assert(0);
+ }
d_env = crypto_digest_new();
crypto_digest_add_bytes(d_env, buf, ISO_TIME_LEN);
diff --git a/src/or/hibernate.h b/src/or/hibernate.h
index fa9da6de39..8bdb65a927 100644
--- a/src/or/hibernate.h
+++ b/src/or/hibernate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/hs_cache.c b/src/or/hs_cache.c
index 43cd8c3258..29681b42b5 100644
--- a/src/or/hs_cache.c
+++ b/src/or/hs_cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/hs_cache.h b/src/or/hs_cache.h
index ba95e73338..ed00424234 100644
--- a/src/or/hs_cache.h
+++ b/src/or/hs_cache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/hs_circuitmap.c b/src/or/hs_circuitmap.c
index 5003b4b593..ea66fb5194 100644
--- a/src/or/hs_circuitmap.c
+++ b/src/or/hs_circuitmap.c
@@ -1,11 +1,12 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file hs_circuitmap.c
*
- * \brief Manage the hidden service circuitmap: A hash table that maps binary
- * tokens to introduction and rendezvous circuits.
+ * \brief Hidden service circuitmap: A hash table that maps binary tokens to
+ * introduction and rendezvous circuits; it's used both by relays acting as
+ * intro points and rendezvous points, and also by hidden services themselves.
**/
#define HS_CIRCUITMAP_PRIVATE
@@ -25,8 +26,8 @@ static struct hs_circuitmap_ht *the_hs_circuitmap = NULL;
/* This is a helper function used by the hash table code (HT_). It returns 1 if
* two circuits have the same HS token. */
static int
-hs_circuits_have_same_token(const or_circuit_t *first_circuit,
- const or_circuit_t *second_circuit)
+hs_circuits_have_same_token(const circuit_t *first_circuit,
+ const circuit_t *second_circuit)
{
const hs_token_t *first_token;
const hs_token_t *second_token;
@@ -57,7 +58,7 @@ hs_circuits_have_same_token(const or_circuit_t *first_circuit,
/* This is a helper function for the hash table code (HT_). It hashes a circuit
* HS token into an unsigned int for use as a key by the hash table routines.*/
static inline unsigned int
-hs_circuit_hash_token(const or_circuit_t *circuit)
+hs_circuit_hash_token(const circuit_t *circuit)
{
tor_assert(circuit->hs_token);
@@ -67,11 +68,11 @@ hs_circuit_hash_token(const or_circuit_t *circuit)
/* Register the circuitmap hash table */
HT_PROTOTYPE(hs_circuitmap_ht, // The name of the hashtable struct
- or_circuit_t, // The name of the element struct,
+ circuit_t, // The name of the element struct,
hs_circuitmap_node, // The name of HT_ENTRY member
hs_circuit_hash_token, hs_circuits_have_same_token)
-HT_GENERATE2(hs_circuitmap_ht, or_circuit_t, hs_circuitmap_node,
+HT_GENERATE2(hs_circuitmap_ht, circuit_t, hs_circuitmap_node,
hs_circuit_hash_token, hs_circuits_have_same_token,
0.6, tor_reallocarray, tor_free_)
@@ -116,13 +117,13 @@ hs_token_free(hs_token_t *hs_token)
}
/** Return the circuit from the circuitmap with token <b>search_token</b>. */
-static or_circuit_t *
+static circuit_t *
get_circuit_with_token(hs_token_t *search_token)
{
tor_assert(the_hs_circuitmap);
/* We use a dummy circuit object for the hash table search routine. */
- or_circuit_t search_circ;
+ circuit_t search_circ;
search_circ.hs_token = search_token;
return HT_FIND(hs_circuitmap_ht, the_hs_circuitmap, &search_circ);
}
@@ -130,7 +131,7 @@ get_circuit_with_token(hs_token_t *search_token)
/* Helper function that registers <b>circ</b> with <b>token</b> on the HS
circuitmap. This function steals reference of <b>token</b>. */
static void
-hs_circuitmap_register_impl(or_circuit_t *circ, hs_token_t *token)
+hs_circuitmap_register_impl(circuit_t *circ, hs_token_t *token)
{
tor_assert(circ);
tor_assert(token);
@@ -145,13 +146,12 @@ hs_circuitmap_register_impl(or_circuit_t *circ, hs_token_t *token)
take precedence over old ones, so that HSes and clients and reestablish
killed circuits without changing the HS token. */
{
- or_circuit_t *found_circ;
+ circuit_t *found_circ;
found_circ = get_circuit_with_token(token);
if (found_circ) {
hs_circuitmap_remove_circuit(found_circ);
- if (!found_circ->base_.marked_for_close) {
- circuit_mark_for_close(TO_CIRCUIT(found_circ),
- END_CIRC_REASON_FINISHED);
+ if (!found_circ->marked_for_close) {
+ circuit_mark_for_close(found_circ, END_CIRC_REASON_FINISHED);
}
}
}
@@ -165,7 +165,7 @@ hs_circuitmap_register_impl(or_circuit_t *circ, hs_token_t *token)
* circuitmap. Use the HS <b>token</b> as the key to the hash table. If
* <b>token</b> is not set, clear the circuit of any HS tokens. */
static void
-hs_circuitmap_register_circuit(or_circuit_t *circ,
+hs_circuitmap_register_circuit(circuit_t *circ,
hs_token_type_t type, size_t token_len,
const uint8_t *token)
{
@@ -178,17 +178,19 @@ hs_circuitmap_register_circuit(or_circuit_t *circ,
hs_circuitmap_register_impl(circ, hs_token);
}
-/* Query circuitmap for circuit with <b>token</b> of size <b>token_len</b>.
- * Only returns a circuit with purpose equal to the <b>wanted_circ_purpose</b>
- * parameter and if it is NOT marked for close. Return NULL if no such circuit
- * is found. */
-static or_circuit_t *
-hs_circuitmap_get_circuit(hs_token_type_t type,
- size_t token_len,
- const uint8_t *token,
- uint8_t wanted_circ_purpose)
+/* Helper function for hs_circuitmap_get_origin_circuit() and
+ * hs_circuitmap_get_or_circuit(). Because only circuit_t are indexed in the
+ * circuitmap, this function returns object type so the specialized functions
+ * using this helper can upcast it to the right type.
+ *
+ * Return NULL if not such circuit is found. */
+static circuit_t *
+hs_circuitmap_get_circuit_impl(hs_token_type_t type,
+ size_t token_len,
+ const uint8_t *token,
+ uint8_t wanted_circ_purpose)
{
- or_circuit_t *found_circ = NULL;
+ circuit_t *found_circ = NULL;
tor_assert(the_hs_circuitmap);
@@ -202,87 +204,247 @@ hs_circuitmap_get_circuit(hs_token_type_t type,
/* Check that the circuit is useful to us */
if (!found_circ ||
- found_circ->base_.purpose != wanted_circ_purpose ||
- found_circ->base_.marked_for_close) {
+ found_circ->purpose != wanted_circ_purpose ||
+ found_circ->marked_for_close) {
return NULL;
}
return found_circ;
}
-/************** Public circuitmap API ****************************************/
+/* Helper function: Query circuitmap for origin circuit with <b>token</b> of
+ * size <b>token_len</b> and <b>type</b>. Only returns a circuit with purpose
+ * equal to the <b>wanted_circ_purpose</b> parameter and if it is NOT marked
+ * for close. Return NULL if no such circuit is found. */
+static origin_circuit_t *
+hs_circuitmap_get_origin_circuit(hs_token_type_t type,
+ size_t token_len,
+ const uint8_t *token,
+ uint8_t wanted_circ_purpose)
+{
+ circuit_t *circ;
+ tor_assert(token);
+ tor_assert(CIRCUIT_PURPOSE_IS_ORIGIN(wanted_circ_purpose));
-/* Public function: Return v3 introduction circuit with <b>auth_key</b>. Return
- * NULL if no such circuit is found in the circuitmap. */
-or_circuit_t *
-hs_circuitmap_get_intro_circ_v3(const ed25519_public_key_t *auth_key)
+ circ = hs_circuitmap_get_circuit_impl(type, token_len, token,
+ wanted_circ_purpose);
+ if (!circ) {
+ return NULL;
+ }
+
+ tor_assert(CIRCUIT_IS_ORIGIN(circ));
+ return TO_ORIGIN_CIRCUIT(circ);
+}
+
+/* Helper function: Query circuitmap for OR circuit with <b>token</b> of size
+ * <b>token_len</b> and <b>type</b>. Only returns a circuit with purpose equal
+ * to the <b>wanted_circ_purpose</b> parameter and if it is NOT marked for
+ * close. Return NULL if no such circuit is found. */
+static or_circuit_t *
+hs_circuitmap_get_or_circuit(hs_token_type_t type,
+ size_t token_len,
+ const uint8_t *token,
+ uint8_t wanted_circ_purpose)
{
- tor_assert(auth_key);
+ circuit_t *circ;
+ tor_assert(token);
+ tor_assert(!CIRCUIT_PURPOSE_IS_ORIGIN(wanted_circ_purpose));
+
+ circ = hs_circuitmap_get_circuit_impl(type, token_len, token,
+ wanted_circ_purpose);
+ if (!circ) {
+ return NULL;
+ }
- return hs_circuitmap_get_circuit(HS_TOKEN_INTRO_V3,
- ED25519_PUBKEY_LEN, auth_key->pubkey,
- CIRCUIT_PURPOSE_INTRO_POINT);
+ tor_assert(CIRCUIT_IS_ORCIRC(circ));
+ return TO_OR_CIRCUIT(circ);
}
-/* Public function: Return v2 introduction circuit with <b>digest</b>. Return
- * NULL if no such circuit is found in the circuitmap. */
+/************** Public circuitmap API ****************************************/
+
+/**** Public relay-side getters: */
+
+/* Public function: Return a v3 introduction circuit to this relay with
+ * <b>auth_key</b>. Return NULL if no such circuit is found in the
+ * circuitmap. */
or_circuit_t *
-hs_circuitmap_get_intro_circ_v2(const uint8_t *digest)
+hs_circuitmap_get_intro_circ_v3_relay_side(
+ const ed25519_public_key_t *auth_key)
{
- tor_assert(digest);
+ return hs_circuitmap_get_or_circuit(HS_TOKEN_INTRO_V3_RELAY_SIDE,
+ ED25519_PUBKEY_LEN, auth_key->pubkey,
+ CIRCUIT_PURPOSE_INTRO_POINT);
+}
- return hs_circuitmap_get_circuit(HS_TOKEN_INTRO_V2,
- REND_TOKEN_LEN, digest,
- CIRCUIT_PURPOSE_INTRO_POINT);
+/* Public function: Return v2 introduction circuit to this relay with
+ * <b>digest</b>. Return NULL if no such circuit is found in the circuitmap. */
+or_circuit_t *
+hs_circuitmap_get_intro_circ_v2_relay_side(const uint8_t *digest)
+{
+ return hs_circuitmap_get_or_circuit(HS_TOKEN_INTRO_V2_RELAY_SIDE,
+ REND_TOKEN_LEN, digest,
+ CIRCUIT_PURPOSE_INTRO_POINT);
}
-/* Public function: Return rendezvous circuit with rendezvous
+/* Public function: Return rendezvous circuit to this relay with rendezvous
* <b>cookie</b>. Return NULL if no such circuit is found in the circuitmap. */
or_circuit_t *
-hs_circuitmap_get_rend_circ(const uint8_t *cookie)
+hs_circuitmap_get_rend_circ_relay_side(const uint8_t *cookie)
{
- tor_assert(cookie);
-
- return hs_circuitmap_get_circuit(HS_TOKEN_REND,
- REND_TOKEN_LEN, cookie,
- CIRCUIT_PURPOSE_REND_POINT_WAITING);
+ return hs_circuitmap_get_or_circuit(HS_TOKEN_REND_RELAY_SIDE,
+ REND_TOKEN_LEN, cookie,
+ CIRCUIT_PURPOSE_REND_POINT_WAITING);
}
+/** Public relay-side setters: */
+
/* Public function: Register rendezvous circuit with key <b>cookie</b> to the
* circuitmap. */
void
-hs_circuitmap_register_rend_circ(or_circuit_t *circ, const uint8_t *cookie)
+hs_circuitmap_register_rend_circ_relay_side(or_circuit_t *circ,
+ const uint8_t *cookie)
{
- hs_circuitmap_register_circuit(circ,
- HS_TOKEN_REND,
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_REND_RELAY_SIDE,
REND_TOKEN_LEN, cookie);
}
+/* Public function: Register v2 intro circuit with key <b>digest</b> to the
+ * circuitmap. */
+void
+hs_circuitmap_register_intro_circ_v2_relay_side(or_circuit_t *circ,
+ const uint8_t *digest)
+{
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_INTRO_V2_RELAY_SIDE,
+ REND_TOKEN_LEN, digest);
+}
+
+/* Public function: Register v3 intro circuit with key <b>auth_key</b> to the
+ * circuitmap. */
+void
+hs_circuitmap_register_intro_circ_v3_relay_side(or_circuit_t *circ,
+ const ed25519_public_key_t *auth_key)
+{
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_INTRO_V3_RELAY_SIDE,
+ ED25519_PUBKEY_LEN, auth_key->pubkey);
+}
+
+/**** Public servide-side getters: */
+
+/* Public function: Return v3 introduction circuit with <b>auth_key</b>
+ * originating from this hidden service. Return NULL if no such circuit is
+ * found in the circuitmap. */
+origin_circuit_t *
+hs_circuitmap_get_intro_circ_v3_service_side(const
+ ed25519_public_key_t *auth_key)
+{
+ origin_circuit_t *circ = NULL;
+
+ /* Check first for established intro circuits */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_INTRO_V3_SERVICE_SIDE,
+ ED25519_PUBKEY_LEN, auth_key->pubkey,
+ CIRCUIT_PURPOSE_S_INTRO);
+ if (circ) {
+ return circ;
+ }
+
+ /* ...if nothing found, check for pending intro circs */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_INTRO_V3_SERVICE_SIDE,
+ ED25519_PUBKEY_LEN, auth_key->pubkey,
+ CIRCUIT_PURPOSE_S_ESTABLISH_INTRO);
+
+ return circ;
+}
+
+/* Public function: Return v2 introduction circuit originating from this hidden
+ * service with <b>digest</b>. Return NULL if no such circuit is found in the
+ * circuitmap. */
+origin_circuit_t *
+hs_circuitmap_get_intro_circ_v2_service_side(const uint8_t *digest)
+{
+ origin_circuit_t *circ = NULL;
+
+ /* Check first for established intro circuits */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_INTRO_V2_SERVICE_SIDE,
+ REND_TOKEN_LEN, digest,
+ CIRCUIT_PURPOSE_S_INTRO);
+ if (circ) {
+ return circ;
+ }
+
+ /* ...if nothing found, check for pending intro circs */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_INTRO_V2_SERVICE_SIDE,
+ REND_TOKEN_LEN, digest,
+ CIRCUIT_PURPOSE_S_ESTABLISH_INTRO);
+
+ return circ;
+}
+
+/* Public function: Return rendezvous circuit originating from this hidden
+ * service with rendezvous <b>cookie</b>. Return NULL if no such circuit is
+ * found in the circuitmap. */
+origin_circuit_t *
+hs_circuitmap_get_rend_circ_service_side(const uint8_t *cookie)
+{
+ origin_circuit_t *circ = NULL;
+
+ /* Try to check if we have a connecting circuit. */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_REND_SERVICE_SIDE,
+ REND_TOKEN_LEN, cookie,
+ CIRCUIT_PURPOSE_S_CONNECT_REND);
+ if (circ) {
+ return circ;
+ }
+
+ /* Then try for connected circuit. */
+ circ = hs_circuitmap_get_origin_circuit(HS_TOKEN_REND_SERVICE_SIDE,
+ REND_TOKEN_LEN, cookie,
+ CIRCUIT_PURPOSE_S_REND_JOINED);
+ return circ;
+}
+
+/**** Public servide-side setters: */
/* Public function: Register v2 intro circuit with key <b>digest</b> to the
* circuitmap. */
void
-hs_circuitmap_register_intro_circ_v2(or_circuit_t *circ, const uint8_t *digest)
+hs_circuitmap_register_intro_circ_v2_service_side(origin_circuit_t *circ,
+ const uint8_t *digest)
{
- hs_circuitmap_register_circuit(circ,
- HS_TOKEN_INTRO_V2,
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_INTRO_V2_SERVICE_SIDE,
REND_TOKEN_LEN, digest);
}
/* Public function: Register v3 intro circuit with key <b>auth_key</b> to the
* circuitmap. */
void
-hs_circuitmap_register_intro_circ_v3(or_circuit_t *circ,
- const ed25519_public_key_t *auth_key)
+hs_circuitmap_register_intro_circ_v3_service_side(origin_circuit_t *circ,
+ const ed25519_public_key_t *auth_key)
{
- hs_circuitmap_register_circuit(circ,
- HS_TOKEN_INTRO_V3,
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_INTRO_V3_SERVICE_SIDE,
ED25519_PUBKEY_LEN, auth_key->pubkey);
}
-/** Remove this circuit from the HS circuitmap. Clear its HS token, and remove
- * it from the hashtable. */
+/* Public function: Register rendezvous circuit with key <b>cookie</b> to the
+ * circuitmap. */
+void
+hs_circuitmap_register_rend_circ_service_side(origin_circuit_t *circ,
+ const uint8_t *cookie)
+{
+ hs_circuitmap_register_circuit(TO_CIRCUIT(circ),
+ HS_TOKEN_REND_SERVICE_SIDE,
+ REND_TOKEN_LEN, cookie);
+}
+
+/**** Misc public functions: */
+
+/** Public function: Remove this circuit from the HS circuitmap. Clear its HS
+ * token, and remove it from the hashtable. */
void
-hs_circuitmap_remove_circuit(or_circuit_t *circ)
+hs_circuitmap_remove_circuit(circuit_t *circ)
{
tor_assert(the_hs_circuitmap);
@@ -291,14 +453,14 @@ hs_circuitmap_remove_circuit(or_circuit_t *circ)
}
/* Remove circ from circuitmap */
- or_circuit_t *tmp;
+ circuit_t *tmp;
tmp = HT_REMOVE(hs_circuitmap_ht, the_hs_circuitmap, circ);
/* ... and ensure the removal was successful. */
if (tmp) {
tor_assert(tmp == circ);
} else {
log_warn(LD_BUG, "Could not find circuit (%u) in circuitmap.",
- circ->p_circ_id);
+ circ->n_circ_id);
}
/* Clear token from circ */
@@ -306,7 +468,7 @@ hs_circuitmap_remove_circuit(or_circuit_t *circ)
circ->hs_token = NULL;
}
-/* Initialize the global HS circuitmap. */
+/* Public function: Initialize the global HS circuitmap. */
void
hs_circuitmap_init(void)
{
@@ -316,7 +478,7 @@ hs_circuitmap_init(void)
HT_INIT(hs_circuitmap_ht, the_hs_circuitmap);
}
-/* Free all memory allocated by the global HS circuitmap. */
+/* Public function: Free all memory allocated by the global HS circuitmap. */
void
hs_circuitmap_free_all(void)
{
diff --git a/src/or/hs_circuitmap.h b/src/or/hs_circuitmap.h
index b587039310..33d5b64117 100644
--- a/src/or/hs_circuitmap.h
+++ b/src/or/hs_circuitmap.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -9,26 +9,52 @@
#ifndef TOR_HS_CIRCUITMAP_H
#define TOR_HS_CIRCUITMAP_H
-typedef HT_HEAD(hs_circuitmap_ht, or_circuit_t) hs_circuitmap_ht;
+typedef HT_HEAD(hs_circuitmap_ht, circuit_t) hs_circuitmap_ht;
typedef struct hs_token_s hs_token_t;
struct or_circuit_t;
+struct origin_circuit_t;
/** Public HS circuitmap API: */
-struct or_circuit_t *hs_circuitmap_get_rend_circ(const uint8_t *cookie);
-struct or_circuit_t *hs_circuitmap_get_intro_circ_v3(
- const ed25519_public_key_t *auth_key);
-struct or_circuit_t *hs_circuitmap_get_intro_circ_v2(const uint8_t *digest);
-
-void hs_circuitmap_register_rend_circ(struct or_circuit_t *circ,
- const uint8_t *cookie);
-void hs_circuitmap_register_intro_circ_v2(struct or_circuit_t *circ,
- const uint8_t *digest);
-void hs_circuitmap_register_intro_circ_v3(struct or_circuit_t *circ,
+/** Public relay-side API: */
+
+struct or_circuit_t *
+hs_circuitmap_get_intro_circ_v3_relay_side(const
+ ed25519_public_key_t *auth_key);
+struct or_circuit_t *
+hs_circuitmap_get_intro_circ_v2_relay_side(const uint8_t *digest);
+struct or_circuit_t *
+hs_circuitmap_get_rend_circ_relay_side(const uint8_t *cookie);
+
+void hs_circuitmap_register_rend_circ_relay_side(struct or_circuit_t *circ,
+ const uint8_t *cookie);
+void hs_circuitmap_register_intro_circ_v2_relay_side(struct or_circuit_t *circ,
+ const uint8_t *digest);
+void hs_circuitmap_register_intro_circ_v3_relay_side(struct or_circuit_t *circ,
const ed25519_public_key_t *auth_key);
-void hs_circuitmap_remove_circuit(struct or_circuit_t *circ);
+/** Public service-side API: */
+
+struct origin_circuit_t *
+hs_circuitmap_get_intro_circ_v3_service_side(const
+ ed25519_public_key_t *auth_key);
+struct origin_circuit_t *
+hs_circuitmap_get_intro_circ_v2_service_side(const uint8_t *digest);
+struct origin_circuit_t *
+hs_circuitmap_get_rend_circ_service_side(const uint8_t *cookie);
+
+void hs_circuitmap_register_intro_circ_v2_service_side(
+ struct origin_circuit_t *circ,
+ const uint8_t *digest);
+void hs_circuitmap_register_intro_circ_v3_service_side(
+ struct origin_circuit_t *circ,
+ const ed25519_public_key_t *auth_key);
+void hs_circuitmap_register_rend_circ_service_side(
+ struct origin_circuit_t *circ,
+ const uint8_t *cookie);
+
+void hs_circuitmap_remove_circuit(struct circuit_t *circ);
void hs_circuitmap_init(void);
void hs_circuitmap_free_all(void);
@@ -37,12 +63,19 @@ void hs_circuitmap_free_all(void);
/** Represents the type of HS token. */
typedef enum {
- /** A rendezvous cookie (128bit)*/
- HS_TOKEN_REND,
- /** A v2 introduction point pubkey (160bit) */
- HS_TOKEN_INTRO_V2,
- /** A v3 introduction point pubkey (256bit) */
- HS_TOKEN_INTRO_V3,
+ /** A rendezvous cookie on a relay (128bit)*/
+ HS_TOKEN_REND_RELAY_SIDE,
+ /** A v2 introduction point pubkey on a relay (160bit) */
+ HS_TOKEN_INTRO_V2_RELAY_SIDE,
+ /** A v3 introduction point pubkey on a relay (256bit) */
+ HS_TOKEN_INTRO_V3_RELAY_SIDE,
+
+ /** A rendezvous cookie on a hidden service (128bit)*/
+ HS_TOKEN_REND_SERVICE_SIDE,
+ /** A v2 introduction point pubkey on a hidden service (160bit) */
+ HS_TOKEN_INTRO_V2_SERVICE_SIDE,
+ /** A v3 introduction point pubkey on a hidden service (256bit) */
+ HS_TOKEN_INTRO_V3_SERVICE_SIDE,
} hs_token_type_t;
/** Represents a token used in the HS protocol. Each such token maps to a
diff --git a/src/or/hs_common.c b/src/or/hs_common.c
index de96946ab5..c9af3f6887 100644
--- a/src/or/hs_common.c
+++ b/src/or/hs_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -9,6 +9,8 @@
* protocol.
**/
+#define HS_COMMON_PRIVATE
+
#include "or.h"
#include "config.h"
@@ -16,6 +18,80 @@
#include "hs_common.h"
#include "rendcommon.h"
+/* Make sure that the directory for <b>service</b> is private, using the config
+ * <b>username</b>.
+ * If <b>create</b> is true:
+ * - if the directory exists, change permissions if needed,
+ * - if the directory does not exist, create it with the correct permissions.
+ * If <b>create</b> is false:
+ * - if the directory exists, check permissions,
+ * - if the directory does not exist, check if we think we can create it.
+ * Return 0 on success, -1 on failure. */
+int
+hs_check_service_private_dir(const char *username, const char *path,
+ unsigned int dir_group_readable,
+ unsigned int create)
+{
+ cpd_check_t check_opts = CPD_NONE;
+
+ tor_assert(path);
+
+ if (create) {
+ check_opts |= CPD_CREATE;
+ } else {
+ check_opts |= CPD_CHECK_MODE_ONLY;
+ check_opts |= CPD_CHECK;
+ }
+ if (dir_group_readable) {
+ check_opts |= CPD_GROUP_READ;
+ }
+ /* Check/create directory */
+ if (check_private_dir(path, check_opts, username) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+/** Get the default HS time period length in minutes from the consensus. */
+STATIC uint64_t
+get_time_period_length(void)
+{
+ int32_t time_period_length = networkstatus_get_param(NULL, "hsdir_interval",
+ HS_TIME_PERIOD_LENGTH_DEFAULT,
+ 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 */
+ return (uint64_t) time_period_length;
+}
+
+/** Get the HS time period number at time <b>now</b> */
+STATIC uint64_t
+get_time_period_num(time_t now)
+{
+ uint64_t time_period_num;
+ uint64_t time_period_length = get_time_period_length();
+ uint64_t minutes_since_epoch = now / 60;
+
+ /* Now subtract half a day to fit the prop224 time period schedule (see
+ * section [TIME-PERIODS]). */
+ tor_assert(minutes_since_epoch > HS_TIME_PERIOD_ROTATION_OFFSET);
+ minutes_since_epoch -= HS_TIME_PERIOD_ROTATION_OFFSET;
+
+ /* Calculate the time period */
+ time_period_num = minutes_since_epoch / time_period_length;
+ return time_period_num;
+}
+
+/** Get the number of the _upcoming_ HS time period, given that the current
+ * time is <b>now</b>. */
+uint64_t
+hs_get_next_time_period_num(time_t now)
+{
+ return get_time_period_num(now) + 1;
+}
+
/* Create a new rend_data_t for a specific given <b>version</b>.
* Return a pointer to the newly allocated data structure. */
static rend_data_t *
@@ -268,3 +344,20 @@ rend_data_get_pk_digest(const rend_data_t *rend_data, size_t *len_out)
}
}
+/* Default, minimum and maximum values for the maximum rendezvous failures
+ * consensus parameter. */
+#define MAX_REND_FAILURES_DEFAULT 2
+#define MAX_REND_FAILURES_MIN 1
+#define MAX_REND_FAILURES_MAX 10
+
+/** How many times will a hidden service operator attempt to connect to
+ * a requested rendezvous point before giving up? */
+int
+hs_get_service_max_rend_failures(void)
+{
+ return networkstatus_get_param(NULL, "hs_service_max_rdv_failures",
+ MAX_REND_FAILURES_DEFAULT,
+ MAX_REND_FAILURES_MIN,
+ MAX_REND_FAILURES_MAX);
+}
+
diff --git a/src/or/hs_common.h b/src/or/hs_common.h
index e0ab510ea4..7eef5fc97e 100644
--- a/src/or/hs_common.h
+++ b/src/or/hs_common.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -17,12 +17,43 @@
/* Version 3 of the protocol (prop224). */
#define HS_VERSION_THREE 3
-/* Denotes ed25519 authentication key on ESTABLISH_INTRO cell. */
-#define AUTH_KEY_ED25519 0x02
+/** Try to maintain this many intro points per service by default. */
+#define NUM_INTRO_POINTS_DEFAULT 3
+/** Maximum number of intro points per service. */
+#define NUM_INTRO_POINTS_MAX 10
+/** Number of extra intro points we launch if our set of intro nodes is empty.
+ * See proposal 155, section 4. */
+#define NUM_INTRO_POINTS_EXTRA 2
+
+/** If we can't build our intro circuits, don't retry for this long. */
+#define INTRO_CIRC_RETRY_PERIOD (60*5)
+/** Don't try to build more than this many circuits before giving up for a
+ * while.*/
+#define MAX_INTRO_CIRCS_PER_PERIOD 10
+/** How many times will a hidden service operator attempt to connect to a
+ * requested rendezvous point before giving up? */
+#define MAX_REND_FAILURES 1
+/** How many seconds should we spend trying to connect to a requested
+ * rendezvous point before giving up? */
+#define MAX_REND_TIMEOUT 30
/* String prefix for the signature of ESTABLISH_INTRO */
#define ESTABLISH_INTRO_SIG_PREFIX "Tor establish-intro cell v1"
+/* The default HS time period length */
+#define HS_TIME_PERIOD_LENGTH_DEFAULT 1440 /* 1440 minutes == one day */
+/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+#define HS_TIME_PERIOD_LENGTH_MIN 30 /* minutes */
+/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+#define HS_TIME_PERIOD_LENGTH_MAX (60 * 24 * 10) /* 10 days or 14400 minutes */
+/* The time period rotation offset as seen in prop224 section [TIME-PERIODS] */
+#define HS_TIME_PERIOD_ROTATION_OFFSET (12 * 60) /* minutes */
+
+int hs_check_service_private_dir(const char *username, const char *path,
+ unsigned int dir_group_readable,
+ unsigned int create);
+int hs_get_service_max_rend_failures(void);
+
void rend_data_free(rend_data_t *data);
rend_data_t *rend_data_dup(const rend_data_t *data);
rend_data_t *rend_data_client_create(const char *onion_address,
@@ -39,5 +70,18 @@ const char *rend_data_get_desc_id(const rend_data_t *rend_data,
const uint8_t *rend_data_get_pk_digest(const rend_data_t *rend_data,
size_t *len_out);
+uint64_t hs_get_next_time_period_num(time_t now);
+
+#ifdef HS_COMMON_PRIVATE
+
+#ifdef TOR_UNIT_TESTS
+
+STATIC uint64_t get_time_period_length(void);
+STATIC uint64_t get_time_period_num(time_t now);
+
+#endif /* TOR_UNIT_TESTS */
+
+#endif /* HS_COMMON_PRIVATE */
+
#endif /* TOR_HS_COMMON_H */
diff --git a/src/or/hs_descriptor.c b/src/or/hs_descriptor.c
index 15bdd14d55..8e10c0fff8 100644
--- a/src/or/hs_descriptor.c
+++ b/src/or/hs_descriptor.c
@@ -1,9 +1,55 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file hs_descriptor.c
* \brief Handle hidden service descriptor encoding/decoding.
+ *
+ * \details
+ * Here is a graphical depiction of an HS descriptor and its layers:
+ *
+ * +------------------------------------------------------+
+ * |DESCRIPTOR HEADER: |
+ * | hs-descriptor 3 |
+ * | descriptor-lifetime 180 |
+ * | ... |
+ * | superencrypted |
+ * |+---------------------------------------------------+ |
+ * ||SUPERENCRYPTED LAYER (aka OUTER ENCRYPTED LAYER): | |
+ * || desc-auth-type x25519 | |
+ * || desc-auth-ephemeral-key | |
+ * || auth-client | |
+ * || auth-client | |
+ * || ... | |
+ * || encrypted | |
+ * ||+-------------------------------------------------+| |
+ * |||ENCRYPTED LAYER (aka INNER ENCRYPTED LAYER): || |
+ * ||| create2-formats || |
+ * ||| intro-auth-required || |
+ * ||| introduction-point || |
+ * ||| introduction-point || |
+ * ||| ... || |
+ * ||+-------------------------------------------------+| |
+ * |+---------------------------------------------------+ |
+ * +------------------------------------------------------+
+ *
+ * The DESCRIPTOR HEADER section is completely unencrypted and contains generic
+ * descriptor metadata.
+ *
+ * The SUPERENCRYPTED LAYER section is the first layer of encryption, and it's
+ * encrypted using the blinded public key of the hidden service to protect
+ * against entities who don't know its onion address. The clients of the hidden
+ * service know its onion address and blinded public key, whereas third-parties
+ * (like HSDirs) don't know it (except if it's a public hidden service).
+ *
+ * The ENCRYPTED LAYER section is the second layer of encryption, and it's
+ * encrypted using the client authorization key material (if those exist). When
+ * client authorization is enabled, this second layer of encryption protects
+ * the descriptor content from unauthorized entities. If client authorization
+ * is disabled, this second layer of encryption does not provide any extra
+ * security but is still present. The plaintext of this layer contains all the
+ * information required to connect to the hidden service like its list of
+ * introduction points.
**/
/* For unit tests.*/
@@ -23,29 +69,36 @@
#define str_desc_cert "descriptor-signing-key-cert"
#define str_rev_counter "revision-counter"
#define str_superencrypted "superencrypted"
+#define str_encrypted "encrypted"
#define str_signature "signature"
#define str_lifetime "descriptor-lifetime"
/* Constant string value for the encrypted part of the descriptor. */
#define str_create2_formats "create2-formats"
-#define str_auth_required "authentication-required"
+#define str_intro_auth_required "intro-auth-required"
#define str_single_onion "single-onion-service"
#define str_intro_point "introduction-point"
#define str_ip_auth_key "auth-key"
#define str_ip_enc_key "enc-key"
-#define str_ip_enc_key_cert "enc-key-certification"
+#define str_ip_enc_key_cert "enc-key-cert"
+#define str_ip_legacy_key "legacy-key"
+#define str_ip_legacy_key_cert "legacy-key-cert"
#define str_intro_point_start "\n" str_intro_point " "
/* Constant string value for the construction to encrypt the encrypted data
* section. */
-#define str_enc_hsdir_data "hsdir-superencrypted-data"
+#define str_enc_const_superencryption "hsdir-superencrypted-data"
+#define str_enc_const_encryption "hsdir-encrypted-data"
/* Prefix required to compute/verify HS desc signatures */
#define str_desc_sig_prefix "Tor onion service descriptor sig v3"
+#define str_desc_auth_type "desc-auth-type"
+#define str_desc_auth_key "desc-auth-ephemeral-key"
+#define str_desc_auth_client "auth-client"
+#define str_encrypted "encrypted"
/* Authentication supported types. */
static const struct {
hs_desc_auth_type_t type;
const char *identifier;
-} auth_types[] = {
- { HS_DESC_AUTH_PASSWORD, "password" },
+} intro_auth_types[] = {
{ HS_DESC_AUTH_ED25519, "ed25519" },
/* Indicate end of array. */
{ 0, NULL }
@@ -62,10 +115,19 @@ static token_rule_t hs_desc_v3_token_table[] = {
END_OF_TABLE
};
+/* Descriptor ruleset for the superencrypted section. */
+static token_rule_t hs_desc_superencrypted_v3_token_table[] = {
+ T1_START(str_desc_auth_type, R3_DESC_AUTH_TYPE, GE(1), NO_OBJ),
+ T1(str_desc_auth_key, R3_DESC_AUTH_KEY, GE(1), NO_OBJ),
+ T1N(str_desc_auth_client, R3_DESC_AUTH_CLIENT, GE(3), NO_OBJ),
+ T1(str_encrypted, R3_ENCRYPTED, NO_ARGS, NEED_OBJ),
+ END_OF_TABLE
+};
+
/* Descriptor ruleset for the encrypted section. */
static token_rule_t hs_desc_encrypted_v3_token_table[] = {
T1_START(str_create2_formats, R3_CREATE2_FORMATS, CONCAT_ARGS, NO_OBJ),
- T01(str_auth_required, R3_AUTHENTICATION_REQUIRED, ARGS, NO_OBJ),
+ T01(str_intro_auth_required, R3_INTRO_AUTH_REQUIRED, ARGS, NO_OBJ),
T01(str_single_onion, R3_SINGLE_ONION_SERVICE, ARGS, NO_OBJ),
END_OF_TABLE
};
@@ -74,9 +136,10 @@ static token_rule_t hs_desc_encrypted_v3_token_table[] = {
static token_rule_t hs_desc_intro_point_v3_token_table[] = {
T1_START(str_intro_point, R3_INTRODUCTION_POINT, EQ(1), NO_OBJ),
T1(str_ip_auth_key, R3_INTRO_AUTH_KEY, NO_ARGS, NEED_OBJ),
- T1(str_ip_enc_key, R3_INTRO_ENC_KEY, ARGS, OBJ_OK),
- T1_END(str_ip_enc_key_cert, R3_INTRO_ENC_KEY_CERTIFICATION,
- NO_ARGS, NEED_OBJ),
+ T1(str_ip_enc_key, R3_INTRO_ENC_KEY, GE(2), OBJ_OK),
+ T1(str_ip_enc_key_cert, R3_INTRO_ENC_KEY_CERT, ARGS, OBJ_OK),
+ T01(str_ip_legacy_key, R3_INTRO_LEGACY_KEY, ARGS, NEED_KEY_1024),
+ T01(str_ip_legacy_key_cert, R3_INTRO_LEGACY_KEY_CERT, ARGS, OBJ_OK),
END_OF_TABLE
};
@@ -93,22 +156,26 @@ desc_intro_point_free(hs_desc_intro_point_t *ip)
smartlist_free(ip->link_specifiers);
}
tor_cert_free(ip->auth_key_cert);
- if (ip->enc_key_type == HS_DESC_KEY_TYPE_LEGACY) {
- crypto_pk_free(ip->enc_key.legacy);
+ tor_cert_free(ip->enc_key_cert);
+ if (ip->legacy.key) {
+ crypto_pk_free(ip->legacy.key);
+ }
+ if (ip->legacy.cert.encoded) {
+ tor_free(ip->legacy.cert.encoded);
}
tor_free(ip);
}
/* Free the content of the plaintext section of a descriptor. */
-static void
+STATIC void
desc_plaintext_data_free_contents(hs_desc_plaintext_data_t *desc)
{
if (!desc) {
return;
}
- if (desc->encrypted_blob) {
- tor_free(desc->encrypted_blob);
+ if (desc->superencrypted_blob) {
+ tor_free(desc->superencrypted_blob);
}
tor_cert_free(desc->signing_key_cert);
@@ -123,9 +190,9 @@ desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
return;
}
- if (desc->auth_types) {
- SMARTLIST_FOREACH(desc->auth_types, char *, a, tor_free(a));
- smartlist_free(desc->auth_types);
+ if (desc->intro_auth_types) {
+ SMARTLIST_FOREACH(desc->intro_auth_types, char *, a, tor_free(a));
+ smartlist_free(desc->intro_auth_types);
}
if (desc->intro_points) {
SMARTLIST_FOREACH(desc->intro_points, hs_desc_intro_point_t *, ip,
@@ -135,6 +202,135 @@ desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
memwipe(desc, 0, sizeof(*desc));
}
+/* Using a key, salt and encrypted payload, build a MAC and put it in mac_out.
+ * We use SHA3-256 for the MAC computation.
+ * This function can't fail. */
+static void
+build_mac(const uint8_t *mac_key, size_t mac_key_len,
+ const uint8_t *salt, size_t salt_len,
+ const uint8_t *encrypted, size_t encrypted_len,
+ uint8_t *mac_out, size_t mac_len)
+{
+ crypto_digest_t *digest;
+
+ const uint64_t mac_len_netorder = tor_htonll(mac_key_len);
+ const uint64_t salt_len_netorder = tor_htonll(salt_len);
+
+ tor_assert(mac_key);
+ tor_assert(salt);
+ tor_assert(encrypted);
+ tor_assert(mac_out);
+
+ digest = crypto_digest256_new(DIGEST_SHA3_256);
+ /* As specified in section 2.5 of proposal 224, first add the mac key
+ * then add the salt first and then the encrypted section. */
+
+ crypto_digest_add_bytes(digest, (const char *) &mac_len_netorder, 8);
+ crypto_digest_add_bytes(digest, (const char *) mac_key, mac_key_len);
+ crypto_digest_add_bytes(digest, (const char *) &salt_len_netorder, 8);
+ crypto_digest_add_bytes(digest, (const char *) salt, salt_len);
+ crypto_digest_add_bytes(digest, (const char *) encrypted, encrypted_len);
+ crypto_digest_get_digest(digest, (char *) mac_out, mac_len);
+ crypto_digest_free(digest);
+}
+
+/* Using a given decriptor object, build the secret input needed for the
+ * KDF and put it in the dst pointer which is an already allocated buffer
+ * of size dstlen. */
+static void
+build_secret_input(const hs_descriptor_t *desc, uint8_t *dst, size_t dstlen)
+{
+ size_t offset = 0;
+
+ tor_assert(desc);
+ tor_assert(dst);
+ tor_assert(HS_DESC_ENCRYPTED_SECRET_INPUT_LEN <= dstlen);
+
+ /* XXX use the destination length as the memcpy length */
+ /* Copy blinded public key. */
+ memcpy(dst, desc->plaintext_data.blinded_pubkey.pubkey,
+ sizeof(desc->plaintext_data.blinded_pubkey.pubkey));
+ offset += sizeof(desc->plaintext_data.blinded_pubkey.pubkey);
+ /* Copy subcredential. */
+ memcpy(dst + offset, desc->subcredential, sizeof(desc->subcredential));
+ offset += sizeof(desc->subcredential);
+ /* Copy revision counter value. */
+ set_uint64(dst + offset, tor_ntohll(desc->plaintext_data.revision_counter));
+ offset += sizeof(uint64_t);
+ tor_assert(HS_DESC_ENCRYPTED_SECRET_INPUT_LEN == offset);
+}
+
+/* Do the KDF construction and put the resulting data in key_out which is of
+ * key_out_len length. It uses SHAKE-256 as specified in the spec. */
+static void
+build_kdf_key(const hs_descriptor_t *desc,
+ const uint8_t *salt, size_t salt_len,
+ uint8_t *key_out, size_t key_out_len,
+ int is_superencrypted_layer)
+{
+ uint8_t secret_input[HS_DESC_ENCRYPTED_SECRET_INPUT_LEN];
+ crypto_xof_t *xof;
+
+ tor_assert(desc);
+ tor_assert(salt);
+ tor_assert(key_out);
+
+ /* Build the secret input for the KDF computation. */
+ build_secret_input(desc, secret_input, sizeof(secret_input));
+
+ xof = crypto_xof_new();
+ /* Feed our KDF. [SHAKE it like a polaroid picture --Yawning]. */
+ crypto_xof_add_bytes(xof, secret_input, sizeof(secret_input));
+ crypto_xof_add_bytes(xof, salt, salt_len);
+
+ /* Feed in the right string constant based on the desc layer */
+ if (is_superencrypted_layer) {
+ crypto_xof_add_bytes(xof, (const uint8_t *) str_enc_const_superencryption,
+ strlen(str_enc_const_superencryption));
+ } else {
+ crypto_xof_add_bytes(xof, (const uint8_t *) str_enc_const_encryption,
+ strlen(str_enc_const_encryption));
+ }
+
+ /* Eat from our KDF. */
+ crypto_xof_squeeze_bytes(xof, key_out, key_out_len);
+ crypto_xof_free(xof);
+ memwipe(secret_input, 0, sizeof(secret_input));
+}
+
+/* Using the given descriptor and salt, run it through our KDF function and
+ * then extract a secret key in key_out, the IV in iv_out and MAC in mac_out.
+ * This function can't fail. */
+static void
+build_secret_key_iv_mac(const hs_descriptor_t *desc,
+ const uint8_t *salt, size_t salt_len,
+ uint8_t *key_out, size_t key_len,
+ uint8_t *iv_out, size_t iv_len,
+ uint8_t *mac_out, size_t mac_len,
+ int is_superencrypted_layer)
+{
+ size_t offset = 0;
+ uint8_t kdf_key[HS_DESC_ENCRYPTED_KDF_OUTPUT_LEN];
+
+ tor_assert(desc);
+ tor_assert(salt);
+ tor_assert(key_out);
+ tor_assert(iv_out);
+ tor_assert(mac_out);
+
+ build_kdf_key(desc, salt, salt_len, kdf_key, sizeof(kdf_key),
+ is_superencrypted_layer);
+ /* Copy the bytes we need for both the secret key and IV. */
+ memcpy(key_out, kdf_key, key_len);
+ offset += key_len;
+ memcpy(iv_out, kdf_key + offset, iv_len);
+ offset += iv_len;
+ memcpy(mac_out, kdf_key + offset, mac_len);
+ /* Extra precaution to make sure we are not out of bound. */
+ tor_assert((offset + mac_len) == sizeof(kdf_key));
+ memwipe(kdf_key, 0, sizeof(kdf_key));
+}
+
/* === ENCODING === */
/* Encode the given link specifier objects into a newly allocated string.
@@ -217,101 +413,68 @@ encode_link_specifiers(const smartlist_t *specs)
return encoded_b64;
}
-/* Encode an introduction point encryption key and return a newly allocated
- * string with it. On failure, return NULL. */
+/* Encode an introduction point legacy key and certificate. Return a newly
+ * allocated string with it. On failure, return NULL. */
static char *
-encode_enc_key(const ed25519_public_key_t *sig_key,
- const hs_desc_intro_point_t *ip)
+encode_legacy_key(const hs_desc_intro_point_t *ip)
{
- char *encoded = NULL;
- time_t now = time(NULL);
+ char *key_str, b64_cert[256], *encoded = NULL;
+ size_t key_str_len;
- tor_assert(sig_key);
tor_assert(ip);
- switch (ip->enc_key_type) {
- case HS_DESC_KEY_TYPE_LEGACY:
- {
- char *key_str, b64_cert[256];
- ssize_t cert_len;
- size_t key_str_len;
- uint8_t *cert_data = NULL;
-
- /* Create cross certification cert. */
- cert_len = tor_make_rsa_ed25519_crosscert(sig_key, ip->enc_key.legacy,
- now + HS_DESC_CERT_LIFETIME,
- &cert_data);
- if (cert_len < 0) {
- log_warn(LD_REND, "Unable to create legacy crosscert.");
- goto err;
- }
- /* Encode cross cert. */
- if (base64_encode(b64_cert, sizeof(b64_cert), (const char *) cert_data,
- cert_len, BASE64_ENCODE_MULTILINE) < 0) {
- tor_free(cert_data);
- log_warn(LD_REND, "Unable to encode legacy crosscert.");
- goto err;
- }
- tor_free(cert_data);
- /* Convert the encryption key to a string. */
- if (crypto_pk_write_public_key_to_string(ip->enc_key.legacy, &key_str,
- &key_str_len) < 0) {
- log_warn(LD_REND, "Unable to encode legacy encryption key.");
- goto err;
- }
- tor_asprintf(&encoded,
- "%s legacy\n%s" /* Newline is added by the call above. */
- "%s\n"
- "-----BEGIN CROSSCERT-----\n"
- "%s"
- "-----END CROSSCERT-----",
- str_ip_enc_key, key_str,
- str_ip_enc_key_cert, b64_cert);
- tor_free(key_str);
- break;
- }
- case HS_DESC_KEY_TYPE_CURVE25519:
- {
- int signbit, ret;
- char *encoded_cert, key_fp_b64[CURVE25519_BASE64_PADDED_LEN + 1];
- ed25519_keypair_t curve_kp;
+ /* Encode cross cert. */
+ if (base64_encode(b64_cert, sizeof(b64_cert),
+ (const char *) ip->legacy.cert.encoded,
+ ip->legacy.cert.len, BASE64_ENCODE_MULTILINE) < 0) {
+ log_warn(LD_REND, "Unable to encode legacy crosscert.");
+ goto done;
+ }
+ /* Convert the encryption key to PEM format NUL terminated. */
+ if (crypto_pk_write_public_key_to_string(ip->legacy.key, &key_str,
+ &key_str_len) < 0) {
+ log_warn(LD_REND, "Unable to encode legacy encryption key.");
+ goto done;
+ }
+ tor_asprintf(&encoded,
+ "%s \n%s" /* Newline is added by the call above. */
+ "%s\n"
+ "-----BEGIN CROSSCERT-----\n"
+ "%s"
+ "-----END CROSSCERT-----",
+ str_ip_legacy_key, key_str,
+ str_ip_legacy_key_cert, b64_cert);
+ tor_free(key_str);
- if (ed25519_keypair_from_curve25519_keypair(&curve_kp, &signbit,
- &ip->enc_key.curve25519)) {
- goto err;
- }
- tor_cert_t *cross_cert = tor_cert_create(&curve_kp,
- CERT_TYPE_CROSS_HS_IP_KEYS,
- sig_key, now,
- HS_DESC_CERT_LIFETIME,
- CERT_FLAG_INCLUDE_SIGNING_KEY);
- memwipe(&curve_kp, 0, sizeof(curve_kp));
- if (!cross_cert) {
- goto err;
- }
- ret = tor_cert_encode_ed22519(cross_cert, &encoded_cert);
- tor_cert_free(cross_cert);
- if (ret) {
- goto err;
- }
- if (curve25519_public_to_base64(key_fp_b64,
- &ip->enc_key.curve25519.pubkey) < 0) {
- tor_free(encoded_cert);
- goto err;
- }
- tor_asprintf(&encoded,
- "%s ntor %s\n"
- "%s\n%s",
- str_ip_enc_key, key_fp_b64,
- str_ip_enc_key_cert, encoded_cert);
- tor_free(encoded_cert);
- break;
+ done:
+ return encoded;
+}
+
+/* Encode an introduction point encryption key and certificate. Return a newly
+ * allocated string with it. On failure, return NULL. */
+static char *
+encode_enc_key(const hs_desc_intro_point_t *ip)
+{
+ char *encoded = NULL, *encoded_cert;
+ char key_b64[CURVE25519_BASE64_PADDED_LEN + 1];
+
+ tor_assert(ip);
+
+ /* Base64 encode the encryption key for the "enc-key" field. */
+ if (curve25519_public_to_base64(key_b64, &ip->enc_key) < 0) {
+ goto done;
}
- default:
- tor_assert(0);
+ if (tor_cert_encode_ed22519(ip->enc_key_cert, &encoded_cert) < 0) {
+ goto done;
}
+ tor_asprintf(&encoded,
+ "%s ntor %s\n"
+ "%s\n%s",
+ str_ip_enc_key, key_b64,
+ str_ip_enc_key_cert, encoded_cert);
+ tor_free(encoded_cert);
- err:
+ done:
return encoded;
}
@@ -346,7 +509,7 @@ encode_intro_point(const ed25519_public_key_t *sig_key,
/* Encryption key encoding. */
{
- char *encoded_enc_key = encode_enc_key(sig_key, ip);
+ char *encoded_enc_key = encode_enc_key(ip);
if (encoded_enc_key == NULL) {
goto err;
}
@@ -354,6 +517,18 @@ encode_intro_point(const ed25519_public_key_t *sig_key,
tor_free(encoded_enc_key);
}
+ /* Legacy key if any. */
+ if (ip->legacy.key != NULL) {
+ /* Strong requirement else the IP creation was badly done. */
+ tor_assert(ip->legacy.cert.encoded);
+ char *encoded_legacy_key = encode_legacy_key(ip);
+ if (encoded_legacy_key == NULL) {
+ goto err;
+ }
+ smartlist_add_asprintf(lines, "%s", encoded_legacy_key);
+ tor_free(encoded_legacy_key);
+ }
+
/* Join them all in one blob of text. */
encoded_ip = smartlist_join_strings(lines, "\n", 1, NULL);
@@ -363,142 +538,23 @@ encode_intro_point(const ed25519_public_key_t *sig_key,
return encoded_ip;
}
-/* Using a given decriptor object, build the secret input needed for the
- * KDF and put it in the dst pointer which is an already allocated buffer
- * of size dstlen. */
-static void
-build_secret_input(const hs_descriptor_t *desc, uint8_t *dst, size_t dstlen)
-{
- size_t offset = 0;
-
- tor_assert(desc);
- tor_assert(dst);
- tor_assert(HS_DESC_ENCRYPTED_SECRET_INPUT_LEN <= dstlen);
-
- /* XXX use the destination length as the memcpy length */
- /* Copy blinded public key. */
- memcpy(dst, desc->plaintext_data.blinded_pubkey.pubkey,
- sizeof(desc->plaintext_data.blinded_pubkey.pubkey));
- offset += sizeof(desc->plaintext_data.blinded_pubkey.pubkey);
- /* Copy subcredential. */
- memcpy(dst + offset, desc->subcredential, sizeof(desc->subcredential));
- offset += sizeof(desc->subcredential);
- /* Copy revision counter value. */
- set_uint64(dst + offset, tor_ntohll(desc->plaintext_data.revision_counter));
- offset += sizeof(uint64_t);
- tor_assert(HS_DESC_ENCRYPTED_SECRET_INPUT_LEN == offset);
-}
-
-/* Do the KDF construction and put the resulting data in key_out which is of
- * key_out_len length. It uses SHAKE-256 as specified in the spec. */
-static void
-build_kdf_key(const hs_descriptor_t *desc,
- const uint8_t *salt, size_t salt_len,
- uint8_t *key_out, size_t key_out_len)
-{
- uint8_t secret_input[HS_DESC_ENCRYPTED_SECRET_INPUT_LEN];
- crypto_xof_t *xof;
-
- tor_assert(desc);
- tor_assert(salt);
- tor_assert(key_out);
-
- /* Build the secret input for the KDF computation. */
- build_secret_input(desc, secret_input, sizeof(secret_input));
-
- xof = crypto_xof_new();
- /* Feed our KDF. [SHAKE it like a polaroid picture --Yawning]. */
- crypto_xof_add_bytes(xof, secret_input, sizeof(secret_input));
- crypto_xof_add_bytes(xof, salt, salt_len);
- crypto_xof_add_bytes(xof, (const uint8_t *) str_enc_hsdir_data,
- strlen(str_enc_hsdir_data));
- /* Eat from our KDF. */
- crypto_xof_squeeze_bytes(xof, key_out, key_out_len);
- crypto_xof_free(xof);
- memwipe(secret_input, 0, sizeof(secret_input));
-}
-
-/* Using the given descriptor and salt, run it through our KDF function and
- * then extract a secret key in key_out, the IV in iv_out and MAC in mac_out.
- * This function can't fail. */
-static void
-build_secret_key_iv_mac(const hs_descriptor_t *desc,
- const uint8_t *salt, size_t salt_len,
- uint8_t *key_out, size_t key_len,
- uint8_t *iv_out, size_t iv_len,
- uint8_t *mac_out, size_t mac_len)
-{
- size_t offset = 0;
- uint8_t kdf_key[HS_DESC_ENCRYPTED_KDF_OUTPUT_LEN];
-
- tor_assert(desc);
- tor_assert(salt);
- tor_assert(key_out);
- tor_assert(iv_out);
- tor_assert(mac_out);
-
- build_kdf_key(desc, salt, salt_len, kdf_key, sizeof(kdf_key));
- /* Copy the bytes we need for both the secret key and IV. */
- memcpy(key_out, kdf_key, key_len);
- offset += key_len;
- memcpy(iv_out, kdf_key + offset, iv_len);
- offset += iv_len;
- memcpy(mac_out, kdf_key + offset, mac_len);
- /* Extra precaution to make sure we are not out of bound. */
- tor_assert((offset + mac_len) == sizeof(kdf_key));
- memwipe(kdf_key, 0, sizeof(kdf_key));
-}
-
-/* Using a key, salt and encrypted payload, build a MAC and put it in mac_out.
- * We use SHA3-256 for the MAC computation.
- * This function can't fail. */
-static void
-build_mac(const uint8_t *mac_key, size_t mac_key_len,
- const uint8_t *salt, size_t salt_len,
- const uint8_t *encrypted, size_t encrypted_len,
- uint8_t *mac_out, size_t mac_len)
-{
- crypto_digest_t *digest;
-
- const uint64_t mac_len_netorder = tor_htonll(mac_key_len);
- const uint64_t salt_len_netorder = tor_htonll(salt_len);
-
- tor_assert(mac_key);
- tor_assert(salt);
- tor_assert(encrypted);
- tor_assert(mac_out);
-
- digest = crypto_digest256_new(DIGEST_SHA3_256);
- /* As specified in section 2.5 of proposal 224, first add the mac key
- * then add the salt first and then the encrypted section. */
-
- crypto_digest_add_bytes(digest, (const char *) &mac_len_netorder, 8);
- crypto_digest_add_bytes(digest, (const char *) mac_key, mac_key_len);
- crypto_digest_add_bytes(digest, (const char *) &salt_len_netorder, 8);
- crypto_digest_add_bytes(digest, (const char *) salt, salt_len);
- crypto_digest_add_bytes(digest, (const char *) encrypted, encrypted_len);
- crypto_digest_get_digest(digest, (char *) mac_out, mac_len);
- crypto_digest_free(digest);
-}
-
/* Given a source length, return the new size including padding for the
* plaintext encryption. */
static size_t
compute_padded_plaintext_length(size_t plaintext_len)
{
size_t plaintext_padded_len;
+ const int padding_block_length = HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE;
/* Make sure we won't overflow. */
- tor_assert(plaintext_len <=
- (SIZE_T_CEILING - HS_DESC_PLAINTEXT_PADDING_MULTIPLE));
-
- /* Get the extra length we need to add. For example, if srclen is 234 bytes,
- * this will expand to (2 * 128) == 256 thus an extra 22 bytes. */
- plaintext_padded_len = CEIL_DIV(plaintext_len,
- HS_DESC_PLAINTEXT_PADDING_MULTIPLE) *
- HS_DESC_PLAINTEXT_PADDING_MULTIPLE;
+ tor_assert(plaintext_len <= (SIZE_T_CEILING - padding_block_length));
+
+ /* Get the extra length we need to add. For example, if srclen is 10200
+ * bytes, this will expand to (2 * 10k) == 20k thus an extra 9800 bytes. */
+ plaintext_padded_len = CEIL_DIV(plaintext_len, padding_block_length) *
+ padding_block_length;
/* Can never be extra careful. Make sure we are _really_ padded. */
- tor_assert(!(plaintext_padded_len % HS_DESC_PLAINTEXT_PADDING_MULTIPLE));
+ tor_assert(!(plaintext_padded_len % padding_block_length));
return plaintext_padded_len;
}
@@ -530,7 +586,8 @@ build_plaintext_padding(const char *plaintext, size_t plaintext_len,
* data. Return size of the encrypted data buffer. */
static size_t
build_encrypted(const uint8_t *key, const uint8_t *iv, const char *plaintext,
- size_t plaintext_len, uint8_t **encrypted_out)
+ size_t plaintext_len, uint8_t **encrypted_out,
+ int is_superencrypted_layer)
{
size_t encrypted_len;
uint8_t *padded_plaintext, *encrypted;
@@ -541,15 +598,21 @@ build_encrypted(const uint8_t *key, const uint8_t *iv, const char *plaintext,
tor_assert(plaintext);
tor_assert(encrypted_out);
+ /* If we are encrypting the middle layer of the descriptor, we need to first
+ pad the plaintext */
+ if (is_superencrypted_layer) {
+ encrypted_len = build_plaintext_padding(plaintext, plaintext_len,
+ &padded_plaintext);
+ /* Extra precautions that we have a valid padding length. */
+ tor_assert(!(encrypted_len % HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE));
+ } else { /* No padding required for inner layers */
+ padded_plaintext = tor_memdup(plaintext, plaintext_len);
+ encrypted_len = plaintext_len;
+ }
+
/* This creates a cipher for AES. It can't fail. */
cipher = crypto_cipher_new_with_iv_and_bits(key, iv,
HS_DESC_ENCRYPTED_BIT_SIZE);
- /* This can't fail. */
- encrypted_len = build_plaintext_padding(plaintext, plaintext_len,
- &padded_plaintext);
- /* Extra precautions that we have a valie padding length. */
- tor_assert(encrypted_len <= HS_DESC_PADDED_PLAINTEXT_MAX_LEN);
- tor_assert(!(encrypted_len % HS_DESC_PLAINTEXT_PADDING_MULTIPLE));
/* We use a stream cipher so the encrypted length will be the same as the
* plaintext padded length. */
encrypted = tor_malloc_zero(encrypted_len);
@@ -563,12 +626,13 @@ build_encrypted(const uint8_t *key, const uint8_t *iv, const char *plaintext,
return encrypted_len;
}
-/* Encrypt the given plaintext buffer and using the descriptor to get the
+/* Encrypt the given <b>plaintext</b> buffer using <b>desc</b> to get the
* keys. Set encrypted_out with the encrypted data and return the length of
- * it. */
+ * it. <b>is_superencrypted_layer</b> is set if this is the outer encrypted
+ * layer of the descriptor. */
static size_t
encrypt_descriptor_data(const hs_descriptor_t *desc, const char *plaintext,
- char **encrypted_out)
+ char **encrypted_out, int is_superencrypted_layer)
{
char *final_blob;
size_t encrypted_len, final_blob_len, offset = 0;
@@ -589,11 +653,13 @@ encrypt_descriptor_data(const hs_descriptor_t *desc, const char *plaintext,
build_secret_key_iv_mac(desc, salt, sizeof(salt),
secret_key, sizeof(secret_key),
secret_iv, sizeof(secret_iv),
- mac_key, sizeof(mac_key));
+ mac_key, sizeof(mac_key),
+ is_superencrypted_layer);
/* Build the encrypted part that is do the actual encryption. */
encrypted_len = build_encrypted(secret_key, secret_iv, plaintext,
- strlen(plaintext), &encrypted);
+ strlen(plaintext), &encrypted,
+ is_superencrypted_layer);
memwipe(secret_key, 0, sizeof(secret_key));
memwipe(secret_iv, 0, sizeof(secret_iv));
/* This construction is specified in section 2.5 of proposal 224. */
@@ -625,20 +691,89 @@ encrypt_descriptor_data(const hs_descriptor_t *desc, const char *plaintext,
return final_blob_len;
}
-/* Take care of encoding the encrypted data section and then encrypting it
- * with the descriptor's key. A newly allocated NUL terminated string pointer
- * containing the encrypted encoded blob is put in encrypted_blob_out. Return
- * 0 on success else a negative value. */
-static int
-encode_encrypted_data(const hs_descriptor_t *desc,
- char **encrypted_blob_out)
+/* Create and return a string containing a fake client-auth entry. It's the
+ * responsibility of the caller to free the returned string. This function will
+ * never fail. */
+static char *
+get_fake_auth_client_str(void)
{
- int ret = -1;
- char *encoded_str, *encrypted_blob;
- smartlist_t *lines = smartlist_new();
+ char *auth_client_str = NULL;
+ /* We are gonna fill these arrays with fake base64 data. They are all double
+ * the size of their binary representation to fit the base64 overhead. */
+ char client_id_b64[8*2];
+ char iv_b64[16*2];
+ char encrypted_cookie_b64[16*2];
+ int retval;
+
+ /* This is a macro to fill a field with random data and then base64 it. */
+#define FILL_WITH_FAKE_DATA_AND_BASE64(field) STMT_BEGIN \
+ crypto_rand((char *)field, sizeof(field)); \
+ retval = base64_encode_nopad(field##_b64, sizeof(field##_b64), \
+ field, sizeof(field)); \
+ tor_assert(retval > 0); \
+ STMT_END
+
+ { /* Get those fakes! */
+ uint8_t client_id[8]; /* fake client-id */
+ uint8_t iv[16]; /* fake IV (initialization vector) */
+ uint8_t encrypted_cookie[16]; /* fake encrypted cookie */
+
+ FILL_WITH_FAKE_DATA_AND_BASE64(client_id);
+ FILL_WITH_FAKE_DATA_AND_BASE64(iv);
+ FILL_WITH_FAKE_DATA_AND_BASE64(encrypted_cookie);
+ }
+
+ /* Build the final string */
+ tor_asprintf(&auth_client_str, "%s %s %s %s", str_desc_auth_client,
+ client_id_b64, iv_b64, encrypted_cookie_b64);
+
+#undef FILL_WITH_FAKE_DATA_AND_BASE64
+
+ return auth_client_str;
+}
- tor_assert(desc);
- tor_assert(encrypted_blob_out);
+/** How many lines of "client-auth" we want in our descriptors; fake or not. */
+#define CLIENT_AUTH_ENTRIES_BLOCK_SIZE 16
+
+/** Create the "client-auth" part of the descriptor and return a
+ * newly-allocated string with it. It's the responsibility of the caller to
+ * free the returned string. */
+static char *
+get_fake_auth_client_lines(void)
+{
+ /* XXX: Client authorization is still not implemented, so all this function
+ does is make fake clients */
+ int i = 0;
+ smartlist_t *auth_client_lines = smartlist_new();
+ char *auth_client_lines_str = NULL;
+
+ /* Make a line for each fake client */
+ const int num_fake_clients = CLIENT_AUTH_ENTRIES_BLOCK_SIZE;
+ for (i = 0; i < num_fake_clients; i++) {
+ char *auth_client_str = get_fake_auth_client_str();
+ tor_assert(auth_client_str);
+ smartlist_add(auth_client_lines, auth_client_str);
+ }
+
+ /* Join all lines together to form final string */
+ auth_client_lines_str = smartlist_join_strings(auth_client_lines,
+ "\n", 1, NULL);
+ /* Cleanup the mess */
+ SMARTLIST_FOREACH(auth_client_lines, char *, a, tor_free(a));
+ smartlist_free(auth_client_lines);
+
+ return auth_client_lines_str;
+}
+
+/* Create the inner layer of the descriptor (which includes the intro points,
+ * etc.). Return a newly-allocated string with the layer plaintext, or NULL if
+ * an error occured. It's the responsibility of the caller to free the returned
+ * string. */
+static char *
+get_inner_encrypted_layer_plaintext(const hs_descriptor_t *desc)
+{
+ char *encoded_str = NULL;
+ smartlist_t *lines = smartlist_new();
/* Build the start of the section prior to the introduction points. */
{
@@ -649,12 +784,12 @@ encode_encrypted_data(const hs_descriptor_t *desc,
smartlist_add_asprintf(lines, "%s %d\n", str_create2_formats,
ONION_HANDSHAKE_TYPE_NTOR);
- if (desc->encrypted_data.auth_types &&
- smartlist_len(desc->encrypted_data.auth_types)) {
+ if (desc->encrypted_data.intro_auth_types &&
+ smartlist_len(desc->encrypted_data.intro_auth_types)) {
/* Put the authentication-required line. */
- char *buf = smartlist_join_strings(desc->encrypted_data.auth_types, " ",
- 0, NULL);
- smartlist_add_asprintf(lines, "%s %s\n", str_auth_required, buf);
+ char *buf = smartlist_join_strings(desc->encrypted_data.intro_auth_types,
+ " ", 0, NULL);
+ smartlist_add_asprintf(lines, "%s %s\n", str_intro_auth_required, buf);
tor_free(buf);
}
@@ -679,31 +814,159 @@ encode_encrypted_data(const hs_descriptor_t *desc,
* then encrypt it. */
encoded_str = smartlist_join_strings(lines, "", 0, NULL);
- /* Encrypt the section into an encrypted blob that we'll base64 encode
- * before returning it. */
+ err:
+ SMARTLIST_FOREACH(lines, char *, l, tor_free(l));
+ smartlist_free(lines);
+
+ return encoded_str;
+}
+
+/* Create the middle layer of the descriptor, which includes the client auth
+ * data and the encrypted inner layer (provided as a base64 string at
+ * <b>layer2_b64_ciphertext</b>). Return a newly-allocated string with the
+ * layer plaintext, or NULL if an error occured. It's the responsibility of the
+ * caller to free the returned string. */
+static char *
+get_outer_encrypted_layer_plaintext(const hs_descriptor_t *desc,
+ const char *layer2_b64_ciphertext)
+{
+ char *layer1_str = NULL;
+ smartlist_t *lines = smartlist_new();
+
+ /* XXX: Disclaimer: This function generates only _fake_ client auth
+ * data. Real client auth is not yet implemented, but client auth data MUST
+ * always be present in descriptors. In the future this function will be
+ * refactored to use real client auth data if they exist (#20700). */
+ (void) *desc;
+
+ /* Specify auth type */
+ smartlist_add_asprintf(lines, "%s %s\n", str_desc_auth_type, "x25519");
+
+ { /* Create fake ephemeral x25519 key */
+ char fake_key_base64[CURVE25519_BASE64_PADDED_LEN + 1];
+ curve25519_keypair_t fake_x25519_keypair;
+ if (curve25519_keypair_generate(&fake_x25519_keypair, 0) < 0) {
+ goto done;
+ }
+ if (curve25519_public_to_base64(fake_key_base64,
+ &fake_x25519_keypair.pubkey) < 0) {
+ goto done;
+ }
+ smartlist_add_asprintf(lines, "%s %s\n",
+ str_desc_auth_key, fake_key_base64);
+ /* No need to memwipe any of these fake keys. They will go unused. */
+ }
+
+ { /* Create fake auth-client lines. */
+ char *auth_client_lines = get_fake_auth_client_lines();
+ tor_assert(auth_client_lines);
+ smartlist_add(lines, auth_client_lines);
+ }
+
+ /* create encrypted section */
{
- char *enc_b64;
- ssize_t enc_b64_len, ret_len, enc_len;
+ smartlist_add_asprintf(lines,
+ "%s\n"
+ "-----BEGIN MESSAGE-----\n"
+ "%s"
+ "-----END MESSAGE-----",
+ str_encrypted, layer2_b64_ciphertext);
+ }
- enc_len = encrypt_descriptor_data(desc, encoded_str, &encrypted_blob);
- tor_free(encoded_str);
- /* Get the encoded size plus a NUL terminating byte. */
- enc_b64_len = base64_encode_size(enc_len, BASE64_ENCODE_MULTILINE) + 1;
- enc_b64 = tor_malloc_zero(enc_b64_len);
- /* Base64 the encrypted blob before returning it. */
- ret_len = base64_encode(enc_b64, enc_b64_len, encrypted_blob, enc_len,
- BASE64_ENCODE_MULTILINE);
- /* Return length doesn't count the NUL byte. */
- tor_assert(ret_len == (enc_b64_len - 1));
- tor_free(encrypted_blob);
- *encrypted_blob_out = enc_b64;
+ layer1_str = smartlist_join_strings(lines, "", 0, NULL);
+
+ done:
+ SMARTLIST_FOREACH(lines, char *, a, tor_free(a));
+ smartlist_free(lines);
+
+ return layer1_str;
+}
+
+/* Encrypt <b>encoded_str</b> into an encrypted blob and then base64 it before
+ * returning it. <b>desc</b> is provided to derive the encryption
+ * keys. <b>is_superencrypted_layer</b> is set if <b>encoded_str</b> is the
+ * middle (superencrypted) layer of the descriptor. It's the responsibility of
+ * the caller to free the returned string. */
+static char *
+encrypt_desc_data_and_base64(const hs_descriptor_t *desc,
+ const char *encoded_str,
+ int is_superencrypted_layer)
+{
+ char *enc_b64;
+ ssize_t enc_b64_len, ret_len, enc_len;
+ char *encrypted_blob = NULL;
+
+ enc_len = encrypt_descriptor_data(desc, encoded_str, &encrypted_blob,
+ is_superencrypted_layer);
+ /* Get the encoded size plus a NUL terminating byte. */
+ enc_b64_len = base64_encode_size(enc_len, BASE64_ENCODE_MULTILINE) + 1;
+ enc_b64 = tor_malloc_zero(enc_b64_len);
+ /* Base64 the encrypted blob before returning it. */
+ ret_len = base64_encode(enc_b64, enc_b64_len, encrypted_blob, enc_len,
+ BASE64_ENCODE_MULTILINE);
+ /* Return length doesn't count the NUL byte. */
+ tor_assert(ret_len == (enc_b64_len - 1));
+ tor_free(encrypted_blob);
+
+ return enc_b64;
+}
+
+/* Generate and encode the superencrypted portion of <b>desc</b>. This also
+ * involves generating the encrypted portion of the descriptor, and performing
+ * the superencryption. A newly allocated NUL-terminated string pointer
+ * containing the encrypted encoded blob is put in encrypted_blob_out. Return 0
+ * on success else a negative value. */
+static int
+encode_superencrypted_data(const hs_descriptor_t *desc,
+ char **encrypted_blob_out)
+{
+ int ret = -1;
+ char *layer2_str = NULL;
+ char *layer2_b64_ciphertext = NULL;
+ char *layer1_str = NULL;
+ char *layer1_b64_ciphertext = NULL;
+
+ tor_assert(desc);
+ tor_assert(encrypted_blob_out);
+
+ /* Func logic: We first create the inner layer of the descriptor (layer2).
+ * We then encrypt it and use it to create the middle layer of the descriptor
+ * (layer1). Finally we superencrypt the middle layer and return it to our
+ * caller. */
+
+ /* Create inner descriptor layer */
+ layer2_str = get_inner_encrypted_layer_plaintext(desc);
+ if (!layer2_str) {
+ goto err;
}
+
+ /* Encrypt and b64 the inner layer */
+ layer2_b64_ciphertext = encrypt_desc_data_and_base64(desc, layer2_str, 0);
+ if (!layer2_b64_ciphertext) {
+ goto err;
+ }
+
+ /* Now create middle descriptor layer given the inner layer */
+ layer1_str = get_outer_encrypted_layer_plaintext(desc,layer2_b64_ciphertext);
+ if (!layer1_str) {
+ goto err;
+ }
+
+ /* Encrypt and base64 the middle layer */
+ layer1_b64_ciphertext = encrypt_desc_data_and_base64(desc, layer1_str, 1);
+ if (!layer1_b64_ciphertext) {
+ goto err;
+ }
+
/* Success! */
ret = 0;
err:
- SMARTLIST_FOREACH(lines, char *, l, tor_free(l));
- smartlist_free(lines);
+ tor_free(layer1_str);
+ tor_free(layer2_str);
+ tor_free(layer2_b64_ciphertext);
+
+ *encrypted_blob_out = layer1_b64_ciphertext;
return ret;
}
@@ -756,7 +1019,7 @@ desc_encode_v3(const hs_descriptor_t *desc,
/* Build the superencrypted data section. */
{
char *enc_b64_blob=NULL;
- if (encode_encrypted_data(desc, &enc_b64_blob) < 0) {
+ if (encode_superencrypted_data(desc, &enc_b64_blob) < 0) {
goto err;
}
smartlist_add_asprintf(lines,
@@ -796,6 +1059,13 @@ desc_encode_v3(const hs_descriptor_t *desc,
encoded_str = smartlist_join_strings(lines, "\n", 1, NULL);
*encoded_out = encoded_str;
+ if (strlen(encoded_str) >= hs_cache_get_max_descriptor_size()) {
+ log_warn(LD_GENERAL, "We just made an HS descriptor that's too big (%d)."
+ "Failing.", (int)strlen(encoded_str));
+ tor_free(encoded_str);
+ goto err;
+ }
+
/* XXX: Trigger a control port event. */
/* Success! */
@@ -895,14 +1165,14 @@ decode_auth_type(hs_desc_encrypted_data_t *desc, const char *list)
tor_assert(desc);
tor_assert(list);
- desc->auth_types = smartlist_new();
- smartlist_split_string(desc->auth_types, list, " ", 0, 0);
+ desc->intro_auth_types = smartlist_new();
+ smartlist_split_string(desc->intro_auth_types, list, " ", 0, 0);
/* Validate the types that we at least know about one. */
- SMARTLIST_FOREACH_BEGIN(desc->auth_types, const char *, auth) {
- for (int idx = 0; auth_types[idx].identifier; idx++) {
- if (!strncmp(auth, auth_types[idx].identifier,
- strlen(auth_types[idx].identifier))) {
+ SMARTLIST_FOREACH_BEGIN(desc->intro_auth_types, const char *, auth) {
+ for (int idx = 0; intro_auth_types[idx].identifier; idx++) {
+ if (!strncmp(auth, intro_auth_types[idx].identifier,
+ strlen(intro_auth_types[idx].identifier))) {
match = 1;
break;
}
@@ -972,7 +1242,7 @@ cert_is_valid(tor_cert_t *cert, uint8_t type, const char *log_obj_type)
}
/* The following will not only check if the signature matches but also the
* expiration date and overall validity. */
- if (tor_cert_checksig(cert, &cert->signing_key, time(NULL)) < 0) {
+ if (tor_cert_checksig(cert, &cert->signing_key, approx_time()) < 0) {
log_warn(LD_REND, "Invalid signature for %s.", log_obj_type);
goto err;
}
@@ -1025,7 +1295,7 @@ STATIC int
encrypted_data_length_is_valid(size_t len)
{
/* Make sure there is enough data for the salt and the mac. The equality is
- * there to ensure that there is at least one byte of encrypted data. */
+ there to ensure that there is at least one byte of encrypted data. */
if (len <= HS_DESC_ENCRYPTED_SALT_LEN + DIGEST256_LEN) {
log_warn(LD_REND, "Length of descriptor's encrypted data is too small. "
"Got %lu but minimum value is %d",
@@ -1038,12 +1308,17 @@ encrypted_data_length_is_valid(size_t len)
return 0;
}
-/* Decrypt the encrypted section of the descriptor using the given descriptor
- * object desc. A newly allocated NUL terminated string is put in
- * decrypted_out. Return the length of decrypted_out on success else 0 is
- * returned and decrypted_out is set to NULL. */
+/** Decrypt an encrypted descriptor layer at <b>encrypted_blob</b> of size
+ * <b>encrypted_blob_size</b>. Use the descriptor object <b>desc</b> to
+ * generate the right decryption keys; set <b>decrypted_out</b> to the
+ * plaintext. If <b>is_superencrypted_layer</b> is set, this is the outter
+ * encrypted layer of the descriptor. */
static size_t
-desc_decrypt_data_v3(const hs_descriptor_t *desc, char **decrypted_out)
+decrypt_desc_layer(const hs_descriptor_t *desc,
+ const uint8_t *encrypted_blob,
+ size_t encrypted_blob_size,
+ int is_superencrypted_layer,
+ char **decrypted_out)
{
uint8_t *decrypted = NULL;
uint8_t secret_key[HS_DESC_ENCRYPTED_KEY_LEN], secret_iv[CIPHER_IV_LEN];
@@ -1053,41 +1328,33 @@ desc_decrypt_data_v3(const hs_descriptor_t *desc, char **decrypted_out)
tor_assert(decrypted_out);
tor_assert(desc);
- tor_assert(desc->plaintext_data.encrypted_blob);
+ tor_assert(encrypted_blob);
- /* Construction is as follow: SALT | ENCRYPTED_DATA | MAC */
- if (!encrypted_data_length_is_valid(
- desc->plaintext_data.encrypted_blob_size)) {
+ /* Construction is as follow: SALT | ENCRYPTED_DATA | MAC .
+ * Make sure we have enough space for all these things. */
+ if (!encrypted_data_length_is_valid(encrypted_blob_size)) {
goto err;
}
/* Start of the blob thus the salt. */
- salt = desc->plaintext_data.encrypted_blob;
+ salt = encrypted_blob;
+
/* Next is the encrypted data. */
- encrypted = desc->plaintext_data.encrypted_blob +
- HS_DESC_ENCRYPTED_SALT_LEN;
- encrypted_len = desc->plaintext_data.encrypted_blob_size -
+ encrypted = encrypted_blob + HS_DESC_ENCRYPTED_SALT_LEN;
+ encrypted_len = encrypted_blob_size -
(HS_DESC_ENCRYPTED_SALT_LEN + DIGEST256_LEN);
+ tor_assert(encrypted_len > 0); /* guaranteed by the check above */
- /* At the very end is the MAC. Make sure it's of the right size. */
- {
- desc_mac = encrypted + encrypted_len;
- size_t desc_mac_size = desc->plaintext_data.encrypted_blob_size -
- (desc_mac - desc->plaintext_data.encrypted_blob);
- if (desc_mac_size != DIGEST256_LEN) {
- log_warn(LD_REND, "Service descriptor MAC length of encrypted data "
- "is invalid (%lu, expected %u)",
- (unsigned long) desc_mac_size, DIGEST256_LEN);
- goto err;
- }
- }
+ /* And last comes the MAC. */
+ desc_mac = encrypted_blob + encrypted_blob_size - DIGEST256_LEN;
/* KDF construction resulting in a key from which the secret key, IV and MAC
* key are extracted which is what we need for the decryption. */
build_secret_key_iv_mac(desc, salt, HS_DESC_ENCRYPTED_SALT_LEN,
secret_key, sizeof(secret_key),
secret_iv, sizeof(secret_iv),
- mac_key, sizeof(mac_key));
+ mac_key, sizeof(mac_key),
+ is_superencrypted_layer);
/* Build MAC. */
build_mac(mac_key, sizeof(mac_key), salt, HS_DESC_ENCRYPTED_SALT_LEN,
@@ -1117,7 +1384,7 @@ desc_decrypt_data_v3(const hs_descriptor_t *desc, char **decrypted_out)
}
{
- /* Adjust length to remove NULL padding bytes */
+ /* Adjust length to remove NUL padding bytes */
uint8_t *end = memchr(decrypted, 0, encrypted_len);
result_len = encrypted_len;
if (end) {
@@ -1143,6 +1410,222 @@ desc_decrypt_data_v3(const hs_descriptor_t *desc, char **decrypted_out)
return result_len;
}
+/* Basic validation that the superencrypted client auth portion of the
+ * descriptor is well-formed and recognized. Return True if so, otherwise
+ * return False. */
+static int
+superencrypted_auth_data_is_valid(smartlist_t *tokens)
+{
+ /* XXX: This is just basic validation for now. When we implement client auth,
+ we can refactor this function so that it actually parses and saves the
+ data. */
+
+ { /* verify desc auth type */
+ const directory_token_t *tok;
+ tok = find_by_keyword(tokens, R3_DESC_AUTH_TYPE);
+ tor_assert(tok->n_args >= 1);
+ if (strcmp(tok->args[0], "x25519")) {
+ log_warn(LD_DIR, "Unrecognized desc auth type");
+ return 0;
+ }
+ }
+
+ { /* verify desc auth key */
+ const directory_token_t *tok;
+ curve25519_public_key_t k;
+ tok = find_by_keyword(tokens, R3_DESC_AUTH_KEY);
+ tor_assert(tok->n_args >= 1);
+ if (curve25519_public_from_base64(&k, tok->args[0]) < 0) {
+ log_warn(LD_DIR, "Bogus desc auth key in HS desc");
+ return 0;
+ }
+ }
+
+ /* verify desc auth client items */
+ SMARTLIST_FOREACH_BEGIN(tokens, const directory_token_t *, tok) {
+ if (tok->tp == R3_DESC_AUTH_CLIENT) {
+ tor_assert(tok->n_args >= 3);
+ }
+ } SMARTLIST_FOREACH_END(tok);
+
+ return 1;
+}
+
+/* Parse <b>message</b>, the plaintext of the superencrypted portion of an HS
+ * descriptor. Set <b>encrypted_out</b> to the encrypted blob, and return its
+ * size */
+STATIC size_t
+decode_superencrypted(const char *message, size_t message_len,
+ uint8_t **encrypted_out)
+{
+ int retval = 0;
+ memarea_t *area = NULL;
+ smartlist_t *tokens = NULL;
+
+ area = memarea_new();
+ tokens = smartlist_new();
+ if (tokenize_string(area, message, message + message_len, tokens,
+ hs_desc_superencrypted_v3_token_table, 0) < 0) {
+ log_warn(LD_REND, "Superencrypted portion is not parseable");
+ goto err;
+ }
+
+ /* Do some rudimentary validation of the authentication data */
+ if (!superencrypted_auth_data_is_valid(tokens)) {
+ log_warn(LD_REND, "Invalid auth data");
+ goto err;
+ }
+
+ /* Extract the encrypted data section. */
+ {
+ const directory_token_t *tok;
+ tok = find_by_keyword(tokens, R3_ENCRYPTED);
+ tor_assert(tok->object_body);
+ if (strcmp(tok->object_type, "MESSAGE") != 0) {
+ log_warn(LD_REND, "Desc superencrypted data section is invalid");
+ goto err;
+ }
+ /* Make sure the length of the encrypted blob is valid. */
+ if (!encrypted_data_length_is_valid(tok->object_size)) {
+ goto err;
+ }
+
+ /* Copy the encrypted blob to the descriptor object so we can handle it
+ * latter if needed. */
+ tor_assert(tok->object_size <= INT_MAX);
+ *encrypted_out = tor_memdup(tok->object_body, tok->object_size);
+ retval = (int) tok->object_size;
+ }
+
+ err:
+ SMARTLIST_FOREACH(tokens, directory_token_t *, t, token_clear(t));
+ smartlist_free(tokens);
+ if (area) {
+ memarea_drop_all(area);
+ }
+
+ return retval;
+}
+
+/* Decrypt both the superencrypted and the encrypted section of the descriptor
+ * using the given descriptor object <b>desc</b>. A newly allocated NUL
+ * terminated string is put in decrypted_out which contains the inner encrypted
+ * layer of the descriptor. Return the length of decrypted_out on success else
+ * 0 is returned and decrypted_out is set to NULL. */
+static size_t
+desc_decrypt_all(const hs_descriptor_t *desc, char **decrypted_out)
+{
+ size_t decrypted_len = 0;
+ size_t encrypted_len = 0;
+ size_t superencrypted_len = 0;
+ char *superencrypted_plaintext = NULL;
+ uint8_t *encrypted_blob = NULL;
+
+ /** Function logic: This function takes us from the descriptor header to the
+ * inner encrypted layer, by decrypting and decoding the middle descriptor
+ * layer. In the end we return the contents of the inner encrypted layer to
+ * our caller. */
+
+ /* 1. Decrypt middle layer of descriptor */
+ superencrypted_len = decrypt_desc_layer(desc,
+ desc->plaintext_data.superencrypted_blob,
+ desc->plaintext_data.superencrypted_blob_size,
+ 1,
+ &superencrypted_plaintext);
+ if (!superencrypted_len) {
+ log_warn(LD_REND, "Decrypting superencrypted desc failed.");
+ goto err;
+ }
+ tor_assert(superencrypted_plaintext);
+
+ /* 2. Parse "superencrypted" */
+ encrypted_len = decode_superencrypted(superencrypted_plaintext,
+ superencrypted_len,
+ &encrypted_blob);
+ if (!encrypted_len) {
+ log_warn(LD_REND, "Decrypting encrypted desc failed.");
+ goto err;
+ }
+ tor_assert(encrypted_blob);
+
+ /* 3. Decrypt "encrypted" and set decrypted_out */
+ char *decrypted_desc;
+ decrypted_len = decrypt_desc_layer(desc,
+ encrypted_blob, encrypted_len,
+ 0, &decrypted_desc);
+ if (!decrypted_len) {
+ log_warn(LD_REND, "Decrypting encrypted desc failed.");
+ goto err;
+ }
+ tor_assert(decrypted_desc);
+
+ *decrypted_out = decrypted_desc;
+
+ err:
+ tor_free(superencrypted_plaintext);
+ tor_free(encrypted_blob);
+
+ return decrypted_len;
+}
+
+/* Given the token tok for an intro point legacy key, the list of tokens, the
+ * introduction point ip being decoded and the descriptor desc from which it
+ * comes from, decode the legacy key and set the intro point object. Return 0
+ * on success else -1 on failure. */
+static int
+decode_intro_legacy_key(const directory_token_t *tok,
+ smartlist_t *tokens,
+ hs_desc_intro_point_t *ip,
+ const hs_descriptor_t *desc)
+{
+ tor_assert(tok);
+ tor_assert(tokens);
+ tor_assert(ip);
+ tor_assert(desc);
+
+ if (!crypto_pk_public_exponent_ok(tok->key)) {
+ log_warn(LD_REND, "Introduction point legacy key is invalid");
+ goto err;
+ }
+ ip->legacy.key = crypto_pk_dup_key(tok->key);
+ /* Extract the legacy cross certification cert which MUST be present if we
+ * have a legacy key. */
+ tok = find_opt_by_keyword(tokens, R3_INTRO_LEGACY_KEY_CERT);
+ if (!tok) {
+ log_warn(LD_REND, "Introduction point legacy key cert is missing");
+ goto err;
+ }
+ tor_assert(tok->object_body);
+ if (strcmp(tok->object_type, "CROSSCERT")) {
+ /* Info level because this might be an unknown field that we should
+ * ignore. */
+ log_info(LD_REND, "Introduction point legacy encryption key "
+ "cross-certification has an unknown format.");
+ goto err;
+ }
+ /* Keep a copy of the certificate. */
+ ip->legacy.cert.encoded = tor_memdup(tok->object_body, tok->object_size);
+ ip->legacy.cert.len = tok->object_size;
+ /* The check on the expiration date is for the entire lifetime of a
+ * certificate which is 24 hours. However, a descriptor has a maximum
+ * lifetime of 12 hours meaning we have a 12h difference between the two
+ * which ultimately accomodate the clock skewed client. */
+ if (rsa_ed25519_crosscert_check(ip->legacy.cert.encoded,
+ ip->legacy.cert.len, ip->legacy.key,
+ &desc->plaintext_data.signing_pubkey,
+ approx_time() - HS_DESC_CERT_LIFETIME)) {
+ log_warn(LD_REND, "Unable to check cross-certification on the "
+ "introduction point legacy encryption key.");
+ ip->cross_certified = 0;
+ goto err;
+ }
+
+ /* Success. */
+ return 0;
+ err:
+ return -1;
+}
+
/* Given the start of a section and the end of it, decode a single
* introduction point from that section. Return a newly allocated introduction
* point object containing the decoded data. Return NULL if the section can't
@@ -1153,7 +1636,6 @@ decode_introduction_point(const hs_descriptor_t *desc, const char *start)
hs_desc_intro_point_t *ip = NULL;
memarea_t *area = NULL;
smartlist_t *tokens = NULL;
- tor_cert_t *cross_cert = NULL;
const directory_token_t *tok;
tor_assert(desc);
@@ -1187,84 +1669,67 @@ decode_introduction_point(const hs_descriptor_t *desc, const char *start)
log_warn(LD_REND, "Unexpected object type for introduction auth key");
goto err;
}
-
/* Parse cert and do some validation. */
if (cert_parse_and_validate(&ip->auth_key_cert, tok->object_body,
tok->object_size, CERT_TYPE_AUTH_HS_IP_KEY,
"introduction point auth-key") < 0) {
goto err;
}
+ /* Validate authentication certificate with descriptor signing key. */
+ if (tor_cert_checksig(ip->auth_key_cert,
+ &desc->plaintext_data.signing_pubkey, 0) < 0) {
+ log_warn(LD_REND, "Invalid authentication key signature");
+ goto err;
+ }
- /* Exactly one "enc-key" ... */
+ /* Exactly one "enc-key" SP "ntor" SP key NL */
tok = find_by_keyword(tokens, R3_INTRO_ENC_KEY);
if (!strcmp(tok->args[0], "ntor")) {
- /* "enc-key" SP "ntor" SP key NL */
- if (tok->n_args != 2 || tok->object_body) {
- log_warn(LD_REND, "Introduction point ntor encryption key is invalid");
- goto err;
- }
+ /* This field is using GE(2) so for possible forward compatibility, we
+ * accept more fields but must be at least 2. */
+ tor_assert(tok->n_args >= 2);
- if (curve25519_public_from_base64(&ip->enc_key.curve25519.pubkey,
- tok->args[1]) < 0) {
- log_warn(LD_REND, "Introduction point ntor encryption key is invalid");
- goto err;
- }
- ip->enc_key_type = HS_DESC_KEY_TYPE_CURVE25519;
- } else if (!strcmp(tok->args[0], "legacy")) {
- /* "enc-key" SP "legacy" NL key NL */
- if (!tok->key) {
- log_warn(LD_REND, "Introduction point legacy encryption key is "
- "invalid");
+ if (curve25519_public_from_base64(&ip->enc_key, tok->args[1]) < 0) {
+ log_warn(LD_REND, "Introduction point ntor enc-key is invalid");
goto err;
}
- ip->enc_key.legacy = crypto_pk_dup_key(tok->key);
- ip->enc_key_type = HS_DESC_KEY_TYPE_LEGACY;
} else {
/* Unknown key type so we can't use that introduction point. */
log_warn(LD_REND, "Introduction point encryption key is unrecognized.");
goto err;
}
- /* "enc-key-certification" NL certificate NL */
- tok = find_by_keyword(tokens, R3_INTRO_ENC_KEY_CERTIFICATION);
+ /* Exactly once "enc-key-cert" NL certificate NL */
+ tok = find_by_keyword(tokens, R3_INTRO_ENC_KEY_CERT);
tor_assert(tok->object_body);
/* Do the cross certification. */
- switch (ip->enc_key_type) {
- case HS_DESC_KEY_TYPE_CURVE25519:
- {
- if (strcmp(tok->object_type, "ED25519 CERT")) {
+ if (strcmp(tok->object_type, "ED25519 CERT")) {
log_warn(LD_REND, "Introduction point ntor encryption key "
"cross-certification has an unknown format.");
goto err;
- }
- if (cert_parse_and_validate(&cross_cert, tok->object_body,
- tok->object_size, CERT_TYPE_CROSS_HS_IP_KEYS,
- "introduction point enc-key-certification") < 0) {
- goto err;
- }
- break;
}
- case HS_DESC_KEY_TYPE_LEGACY:
- if (strcmp(tok->object_type, "CROSSCERT")) {
- log_warn(LD_REND, "Introduction point legacy encryption key "
- "cross-certification has an unknown format.");
- goto err;
- }
- if (rsa_ed25519_crosscert_check((const uint8_t *) tok->object_body,
- tok->object_size, ip->enc_key.legacy,
- &desc->plaintext_data.signing_key_cert->signed_key,
- approx_time()-86400)) {
- log_warn(LD_REND, "Unable to check cross-certification on the "
- "introduction point legacy encryption key.");
- goto err;
- }
- break;
- default:
- tor_assert(0);
- break;
+ if (cert_parse_and_validate(&ip->enc_key_cert, tok->object_body,
+ tok->object_size, CERT_TYPE_CROSS_HS_IP_KEYS,
+ "introduction point enc-key-cert") < 0) {
+ goto err;
+ }
+ if (tor_cert_checksig(ip->enc_key_cert,
+ &desc->plaintext_data.signing_pubkey, 0) < 0) {
+ log_warn(LD_REND, "Invalid encryption key signature");
+ goto err;
}
/* It is successfully cross certified. Flag the object. */
ip->cross_certified = 1;
+
+ /* Do we have a "legacy-key" SP key NL ?*/
+ tok = find_opt_by_keyword(tokens, R3_INTRO_LEGACY_KEY);
+ if (tok) {
+ if (decode_intro_legacy_key(tok, tokens, ip, desc) < 0) {
+ goto err;
+ }
+ }
+
+ /* Introduction point has been parsed successfully. */
goto done;
err:
@@ -1272,10 +1737,11 @@ decode_introduction_point(const hs_descriptor_t *desc, const char *start)
ip = NULL;
done:
- tor_cert_free(cross_cert);
SMARTLIST_FOREACH(tokens, directory_token_t *, t, token_clear(t));
smartlist_free(tokens);
- memarea_drop_all(area);
+ if (area) {
+ memarea_drop_all(area);
+ }
return ip;
}
@@ -1384,10 +1850,11 @@ desc_sig_is_valid(const char *b64_sig,
}
/* Find the start of signature. */
- sig_start = tor_memstr(encoded_desc, encoded_len, "\n" str_signature);
+ sig_start = tor_memstr(encoded_desc, encoded_len, "\n" str_signature " ");
/* Getting here means the token parsing worked for the signature so if we
* can't find the start of the signature, we have a code flow issue. */
- if (BUG(!sig_start)) {
+ if (!sig_start) {
+ log_warn(LD_GENERAL, "Malformed signature line. Rejecting.");
goto err;
}
/* Skip newline, it has to go in the signature check. */
@@ -1494,8 +1961,8 @@ desc_decode_plaintext_v3(smartlist_t *tokens,
/* Copy the encrypted blob to the descriptor object so we can handle it
* latter if needed. */
- desc->encrypted_blob = tor_memdup(tok->object_body, tok->object_size);
- desc->encrypted_blob_size = tok->object_size;
+ desc->superencrypted_blob = tor_memdup(tok->object_body, tok->object_size);
+ desc->superencrypted_blob_size = tok->object_size;
/* Extract signature and verify it. */
tok = find_by_keyword(tokens, R3_SIGNATURE);
@@ -1529,10 +1996,9 @@ desc_decode_encrypted_v3(const hs_descriptor_t *desc,
tor_assert(desc);
tor_assert(desc_encrypted_out);
- /* Decrypt the encrypted data that is located in the plaintext section in
- * the descriptor as a blob of bytes. The following functions will use the
- * keys found in the same section. */
- message_len = desc_decrypt_data_v3(desc, &message);
+ /* Decrypt the superencrypted data that is located in the plaintext section
+ * in the descriptor as a blob of bytes. */
+ message_len = desc_decrypt_all(desc, &message);
if (!message_len) {
log_warn(LD_REND, "Service descriptor decryption failed.");
goto err;
@@ -1558,7 +2024,7 @@ desc_decode_encrypted_v3(const hs_descriptor_t *desc,
}
/* Authentication type. It's optional but only once. */
- tok = find_opt_by_keyword(tokens, R3_AUTHENTICATION_REQUIRED);
+ tok = find_opt_by_keyword(tokens, R3_INTRO_AUTH_REQUIRED);
if (tok) {
if (!decode_auth_type(desc_encrypted_out, tok->args[0])) {
log_warn(LD_REND, "Service descriptor authentication type has "
@@ -1640,7 +2106,7 @@ hs_desc_decode_encrypted(const hs_descriptor_t *desc,
/* Calling this function without an encrypted blob to parse is a code flow
* error. The plaintext parsing should never succeed in the first place
* without an encrypted section. */
- tor_assert(desc->plaintext_data.encrypted_blob);
+ tor_assert(desc->plaintext_data.superencrypted_blob);
/* Let's make sure we have a supported version as well. By correctly parsing
* the plaintext, this should not fail. */
if (BUG(!hs_desc_is_supported_version(version))) {
@@ -1892,6 +2358,6 @@ hs_desc_plaintext_obj_size(const hs_desc_plaintext_data_t *data)
{
tor_assert(data);
return (sizeof(*data) + sizeof(*data->signing_key_cert) +
- data->encrypted_blob_size);
+ data->superencrypted_blob_size);
}
diff --git a/src/or/hs_descriptor.h b/src/or/hs_descriptor.h
index b520d24471..136477ae3a 100644
--- a/src/or/hs_descriptor.h
+++ b/src/or/hs_descriptor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -41,24 +41,11 @@
* the secret IV and MAC key length which is the length of H() output. */
#define HS_DESC_ENCRYPTED_KDF_OUTPUT_LEN \
CIPHER256_KEY_LEN + CIPHER_IV_LEN + DIGEST256_LEN
-/* We need to pad the plaintext version of the encrypted data section before
- * encryption and it has to be a multiple of this value. */
-#define HS_DESC_PLAINTEXT_PADDING_MULTIPLE 128
-/* XXX: Let's make sure this makes sense as an upper limit for the padded
- * plaintext section. Then we should enforce it as now only an assert will be
- * triggered if we are above it. */
-/* Once padded, this is the maximum length in bytes for the plaintext. */
-#define HS_DESC_PADDED_PLAINTEXT_MAX_LEN 8192
-/* Minimum length in bytes of the encrypted portion of the descriptor. */
-#define HS_DESC_ENCRYPTED_MIN_LEN \
- HS_DESC_ENCRYPTED_SALT_LEN + \
- HS_DESC_PLAINTEXT_PADDING_MULTIPLE + DIGEST256_LEN
+/* Pad plaintext of superencrypted data section before encryption so that its
+ * length is a multiple of this value. */
+#define HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE 10000
/* Maximum length in bytes of a full hidden service descriptor. */
#define HS_DESC_MAX_LEN 50000 /* 50kb max size */
-/* The minimum amount of fields a descriptor should contain. The parsing of
- * the fields are version specific so the only required field, as a generic
- * view of a descriptor, is 1 that is the version field. */
-#define HS_DESC_PLAINTEXT_MIN_FIELDS 1
/* Key length for the descriptor symmetric encryption. As specified in the
* protocol, we use AES-256 for the encrypted section of the descriptor. The
@@ -68,16 +55,9 @@
/* Type of authentication in the descriptor. */
typedef enum {
- HS_DESC_AUTH_PASSWORD = 1,
- HS_DESC_AUTH_ED25519 = 2,
+ HS_DESC_AUTH_ED25519 = 1
} hs_desc_auth_type_t;
-/* Type of encryption key in the descriptor. */
-typedef enum {
- HS_DESC_KEY_TYPE_LEGACY = 1,
- HS_DESC_KEY_TYPE_CURVE25519 = 2,
-} hs_desc_key_type_t;
-
/* Link specifier object that contains information on how to extend to the
* relay that is the address, port and handshake type. */
typedef struct hs_desc_link_specifier_t {
@@ -105,18 +85,29 @@ typedef struct hs_desc_intro_point_t {
* the blinded key and in turn signs it. */
tor_cert_t *auth_key_cert;
- /* Encryption key type so we know which one to use in the union below. */
- hs_desc_key_type_t enc_key_type;
-
- /* Keys are mutually exclusive thus the union. */
- union {
- /* Encryption key used to encrypt request to hidden service. */
- curve25519_keypair_t curve25519;
-
- /* Backward compat: RSA 1024 encryption key for legacy purposes.
- * Mutually exclusive with enc_key. */
- crypto_pk_t *legacy;
- } enc_key;
+ /* Encryption key for the "ntor" type. */
+ curve25519_public_key_t enc_key;
+
+ /* Certificate cross certifying the descriptor signing key by the encryption
+ * curve25519 key. This certificate contains the signing key and is of type
+ * CERT_TYPE_CROSS_HS_IP_KEYS [0B]. */
+ tor_cert_t *enc_key_cert;
+
+ /* (Optional): If this introduction point is a legacy one that is version <=
+ * 0.2.9.x (HSIntro=3), we use this extra key for the intro point to be able
+ * to relay the cells to the service correctly. */
+ struct {
+ /* RSA public key. */
+ crypto_pk_t *key;
+
+ /* Cross certified cert with the descriptor signing key (RSA->Ed). Because
+ * of the cross certification API, we need to keep the certificate binary
+ * blob and its length in order to properly encode it after. */
+ struct {
+ uint8_t *encoded;
+ size_t len;
+ } cert;
+ } legacy;
/* True iff the introduction point has passed the cross certification. Upon
* decoding an intro point, this must be true. */
@@ -132,7 +123,7 @@ typedef struct hs_desc_encrypted_data_t {
/* A list of authentication types that a client must at least support one
* in order to contact the service. Contains NULL terminated strings. */
- smartlist_t *auth_types;
+ smartlist_t *intro_auth_types;
/* Is this descriptor a single onion service? */
unsigned int single_onion_service : 1;
@@ -167,11 +158,11 @@ typedef struct hs_desc_plaintext_data_t {
* has changed. Spec specifies this as a 8 bytes positive integer. */
uint64_t revision_counter;
- /* Decoding only: The base64-decoded encrypted blob from the descriptor */
- uint8_t *encrypted_blob;
+ /* Decoding only: The b64-decoded superencrypted blob from the descriptor */
+ uint8_t *superencrypted_blob;
- /* Decoding only: Size of the encrypted_blob */
- size_t encrypted_blob_size;
+ /* Decoding only: Size of the superencrypted_blob */
+ size_t superencrypted_blob_size;
} hs_desc_plaintext_data_t;
/* Service descriptor in its decoded form. */
@@ -242,6 +233,10 @@ STATIC int desc_sig_is_valid(const char *b64_sig,
const ed25519_public_key_t *signing_pubkey,
const char *encoded_desc, size_t encoded_len);
STATIC void desc_intro_point_free(hs_desc_intro_point_t *ip);
+STATIC size_t decode_superencrypted(const char *message, size_t message_len,
+ uint8_t **encrypted_out);
+STATIC void desc_plaintext_data_free_contents(hs_desc_plaintext_data_t *desc);
+
#endif /* HS_DESCRIPTOR_PRIVATE */
#endif /* TOR_HS_DESCRIPTOR_H */
diff --git a/src/or/hs_intropoint.c b/src/or/hs_intropoint.c
index bc493e297e..06f8a2c3ad 100644
--- a/src/or/hs_intropoint.c
+++ b/src/or/hs_intropoint.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,16 +43,16 @@ get_auth_key_from_cell(ed25519_public_key_t *auth_key_out,
switch (cell_type) {
case RELAY_COMMAND_ESTABLISH_INTRO:
{
- const hs_cell_establish_intro_t *c_cell = cell;
- key_array = hs_cell_establish_intro_getconstarray_auth_key(c_cell);
- auth_key_len = hs_cell_establish_intro_getlen_auth_key(c_cell);
+ const trn_cell_establish_intro_t *c_cell = cell;
+ key_array = trn_cell_establish_intro_getconstarray_auth_key(c_cell);
+ auth_key_len = trn_cell_establish_intro_getlen_auth_key(c_cell);
break;
}
case RELAY_COMMAND_INTRODUCE1:
{
- const hs_cell_introduce1_t *c_cell = cell;
- key_array = hs_cell_introduce1_getconstarray_auth_key(cell);
- auth_key_len = hs_cell_introduce1_getlen_auth_key(c_cell);
+ const trn_cell_introduce1_t *c_cell = cell;
+ key_array = trn_cell_introduce1_getconstarray_auth_key(cell);
+ auth_key_len = trn_cell_introduce1_getlen_auth_key(c_cell);
break;
}
default:
@@ -68,22 +68,22 @@ get_auth_key_from_cell(ed25519_public_key_t *auth_key_out,
/** We received an ESTABLISH_INTRO <b>cell</b>. Verify its signature and MAC,
* given <b>circuit_key_material</b>. Return 0 on success else -1 on error. */
STATIC int
-verify_establish_intro_cell(const hs_cell_establish_intro_t *cell,
+verify_establish_intro_cell(const trn_cell_establish_intro_t *cell,
const uint8_t *circuit_key_material,
size_t circuit_key_material_len)
{
/* We only reach this function if the first byte of the cell is 0x02 which
- * means that auth_key_type is AUTH_KEY_ED25519, hence this check should
+ * means that auth_key_type is of ed25519 type, hence this check should
* always pass. See hs_intro_received_establish_intro(). */
- if (BUG(cell->auth_key_type != AUTH_KEY_ED25519)) {
+ if (BUG(cell->auth_key_type != HS_INTRO_AUTH_KEY_TYPE_ED25519)) {
return -1;
}
/* Make sure the auth key length is of the right size for this type. For
* EXTRA safety, we check both the size of the array and the length which
* must be the same. Safety first!*/
- if (hs_cell_establish_intro_getlen_auth_key(cell) != ED25519_PUBKEY_LEN ||
- hs_cell_establish_intro_get_auth_key_len(cell) != ED25519_PUBKEY_LEN) {
+ if (trn_cell_establish_intro_getlen_auth_key(cell) != ED25519_PUBKEY_LEN ||
+ trn_cell_establish_intro_get_auth_key_len(cell) != ED25519_PUBKEY_LEN) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"ESTABLISH_INTRO auth key length is invalid");
return -1;
@@ -94,13 +94,14 @@ verify_establish_intro_cell(const hs_cell_establish_intro_t *cell,
/* Verify the sig */
{
ed25519_signature_t sig_struct;
- const uint8_t *sig_array = hs_cell_establish_intro_getconstarray_sig(cell);
+ const uint8_t *sig_array =
+ trn_cell_establish_intro_getconstarray_sig(cell);
/* Make sure the signature length is of the right size. For EXTRA safety,
* we check both the size of the array and the length which must be the
* same. Safety first!*/
- if (hs_cell_establish_intro_getlen_sig(cell) != sizeof(sig_struct.sig) ||
- hs_cell_establish_intro_get_sig_len(cell) != sizeof(sig_struct.sig)) {
+ if (trn_cell_establish_intro_getlen_sig(cell) != sizeof(sig_struct.sig) ||
+ trn_cell_establish_intro_get_sig_len(cell) != sizeof(sig_struct.sig)) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"ESTABLISH_INTRO sig len is invalid");
return -1;
@@ -147,21 +148,21 @@ hs_intro_send_intro_established_cell,(or_circuit_t *circ))
int ret;
uint8_t *encoded_cell = NULL;
ssize_t encoded_len, result_len;
- hs_cell_intro_established_t *cell;
- cell_extension_t *ext;
+ trn_cell_intro_established_t *cell;
+ trn_cell_extension_t *ext;
tor_assert(circ);
/* Build the cell payload. */
- cell = hs_cell_intro_established_new();
- ext = cell_extension_new();
- cell_extension_set_num(ext, 0);
- hs_cell_intro_established_set_extensions(cell, ext);
+ cell = trn_cell_intro_established_new();
+ ext = trn_cell_extension_new();
+ trn_cell_extension_set_num(ext, 0);
+ trn_cell_intro_established_set_extensions(cell, ext);
/* Encode the cell to binary format. */
- encoded_len = hs_cell_intro_established_encoded_len(cell);
+ encoded_len = trn_cell_intro_established_encoded_len(cell);
tor_assert(encoded_len > 0);
encoded_cell = tor_malloc_zero(encoded_len);
- result_len = hs_cell_intro_established_encode(encoded_cell, encoded_len,
+ result_len = trn_cell_intro_established_encode(encoded_cell, encoded_len,
cell);
tor_assert(encoded_len == result_len);
@@ -170,7 +171,7 @@ hs_intro_send_intro_established_cell,(or_circuit_t *circ))
(char *) encoded_cell, encoded_len,
NULL);
/* On failure, the above function will close the circuit. */
- hs_cell_intro_established_free(cell);
+ trn_cell_intro_established_free(cell);
tor_free(encoded_cell);
return ret;
}
@@ -180,7 +181,7 @@ hs_intro_send_intro_established_cell,(or_circuit_t *circ))
* establish an intro point. */
static int
handle_verified_establish_intro_cell(or_circuit_t *circ,
- const hs_cell_establish_intro_t *parsed_cell)
+ const trn_cell_establish_intro_t *parsed_cell)
{
/* Get the auth key of this intro point */
ed25519_public_key_t auth_key;
@@ -195,7 +196,7 @@ handle_verified_establish_intro_cell(or_circuit_t *circ,
}
/* Associate intro point auth key with this circuit. */
- hs_circuitmap_register_intro_circ_v3(circ, &auth_key);
+ hs_circuitmap_register_intro_circ_v3_relay_side(circ, &auth_key);
/* Repurpose this circuit into an intro circuit. */
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_INTRO_POINT);
@@ -210,7 +211,7 @@ handle_establish_intro(or_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
int cell_ok, retval = -1;
- hs_cell_establish_intro_t *parsed_cell = NULL;
+ trn_cell_establish_intro_t *parsed_cell = NULL;
tor_assert(circ);
tor_assert(request);
@@ -224,7 +225,7 @@ handle_establish_intro(or_circuit_t *circ, const uint8_t *request,
}
/* Parse the cell */
- ssize_t parsing_result = hs_cell_establish_intro_parse(&parsed_cell,
+ ssize_t parsing_result = trn_cell_establish_intro_parse(&parsed_cell,
request, request_len);
if (parsing_result < 0) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
@@ -260,7 +261,7 @@ handle_establish_intro(or_circuit_t *circ, const uint8_t *request,
}
done:
- hs_cell_establish_intro_free(parsed_cell);
+ trn_cell_establish_intro_free(parsed_cell);
return retval;
}
@@ -340,28 +341,28 @@ send_introduce_ack_cell(or_circuit_t *circ, hs_intro_ack_status_t status)
int ret = -1;
uint8_t *encoded_cell = NULL;
ssize_t encoded_len, result_len;
- hs_cell_introduce_ack_t *cell;
- cell_extension_t *ext;
+ trn_cell_introduce_ack_t *cell;
+ trn_cell_extension_t *ext;
tor_assert(circ);
/* Setup the INTRODUCE_ACK cell. We have no extensions so the N_EXTENSIONS
* field is set to 0 by default with a new object. */
- cell = hs_cell_introduce_ack_new();
- ret = hs_cell_introduce_ack_set_status(cell, status);
+ cell = trn_cell_introduce_ack_new();
+ ret = trn_cell_introduce_ack_set_status(cell, status);
/* We have no cell extensions in an INTRODUCE_ACK cell. */
- ext = cell_extension_new();
- cell_extension_set_num(ext, 0);
- hs_cell_introduce_ack_set_extensions(cell, ext);
+ ext = trn_cell_extension_new();
+ trn_cell_extension_set_num(ext, 0);
+ trn_cell_introduce_ack_set_extensions(cell, ext);
/* A wrong status is a very bad code flow error as this value is controlled
* by the code in this file and not an external input. This means we use a
* code that is not known by the trunnel ABI. */
tor_assert(ret == 0);
/* Encode the payload. We should never fail to get the encoded length. */
- encoded_len = hs_cell_introduce_ack_encoded_len(cell);
+ encoded_len = trn_cell_introduce_ack_encoded_len(cell);
tor_assert(encoded_len > 0);
encoded_cell = tor_malloc_zero(encoded_len);
- result_len = hs_cell_introduce_ack_encode(encoded_cell, encoded_len, cell);
+ result_len = trn_cell_introduce_ack_encode(encoded_cell, encoded_len, cell);
tor_assert(encoded_len == result_len);
ret = relay_send_command_from_edge(CONTROL_CELL_ID, TO_CIRCUIT(circ),
@@ -369,7 +370,7 @@ send_introduce_ack_cell(or_circuit_t *circ, hs_intro_ack_status_t status)
(char *) encoded_cell, encoded_len,
NULL);
/* On failure, the above function will close the circuit. */
- hs_cell_introduce_ack_free(cell);
+ trn_cell_introduce_ack_free(cell);
tor_free(encoded_cell);
return ret;
}
@@ -377,7 +378,7 @@ send_introduce_ack_cell(or_circuit_t *circ, hs_intro_ack_status_t status)
/* Validate a parsed INTRODUCE1 <b>cell</b>. Return 0 if valid or else a
* negative value for an invalid cell that should be NACKed. */
STATIC int
-validate_introduce1_parsed_cell(const hs_cell_introduce1_t *cell)
+validate_introduce1_parsed_cell(const trn_cell_introduce1_t *cell)
{
size_t legacy_key_id_len;
const uint8_t *legacy_key_id;
@@ -386,29 +387,29 @@ validate_introduce1_parsed_cell(const hs_cell_introduce1_t *cell)
/* This code path SHOULD NEVER be reached if the cell is a legacy type so
* safety net here. The legacy ID must be zeroes in this case. */
- legacy_key_id_len = hs_cell_introduce1_getlen_legacy_key_id(cell);
- legacy_key_id = hs_cell_introduce1_getconstarray_legacy_key_id(cell);
+ legacy_key_id_len = trn_cell_introduce1_getlen_legacy_key_id(cell);
+ legacy_key_id = trn_cell_introduce1_getconstarray_legacy_key_id(cell);
if (BUG(!tor_mem_is_zero((char *) legacy_key_id, legacy_key_id_len))) {
goto invalid;
}
/* The auth key of an INTRODUCE1 should be of type ed25519 thus leading to a
* known fixed length as well. */
- if (hs_cell_introduce1_get_auth_key_type(cell) !=
+ if (trn_cell_introduce1_get_auth_key_type(cell) !=
HS_INTRO_AUTH_KEY_TYPE_ED25519) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting invalid INTRODUCE1 cell auth key type. "
"Responding with NACK.");
goto invalid;
}
- if (hs_cell_introduce1_get_auth_key_len(cell) != ED25519_PUBKEY_LEN ||
- hs_cell_introduce1_getlen_auth_key(cell) != ED25519_PUBKEY_LEN) {
+ if (trn_cell_introduce1_get_auth_key_len(cell) != ED25519_PUBKEY_LEN ||
+ trn_cell_introduce1_getlen_auth_key(cell) != ED25519_PUBKEY_LEN) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting invalid INTRODUCE1 cell auth key length. "
"Responding with NACK.");
goto invalid;
}
- if (hs_cell_introduce1_getlen_encrypted(cell) == 0) {
+ if (trn_cell_introduce1_getlen_encrypted(cell) == 0) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting invalid INTRODUCE1 cell encrypted length. "
"Responding with NACK.");
@@ -431,7 +432,7 @@ handle_introduce1(or_circuit_t *client_circ, const uint8_t *request,
{
int ret = -1;
or_circuit_t *service_circ;
- hs_cell_introduce1_t *parsed_cell;
+ trn_cell_introduce1_t *parsed_cell;
hs_intro_ack_status_t status = HS_INTRO_ACK_STATUS_SUCCESS;
tor_assert(client_circ);
@@ -440,7 +441,7 @@ handle_introduce1(or_circuit_t *client_circ, const uint8_t *request,
/* Parse cell. Note that we can only parse the non encrypted section for
* which we'll use the authentication key to find the service introduction
* circuit and relay the cell on it. */
- ssize_t cell_size = hs_cell_introduce1_parse(&parsed_cell, request,
+ ssize_t cell_size = trn_cell_introduce1_parse(&parsed_cell, request,
request_len);
if (cell_size < 0) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
@@ -462,7 +463,7 @@ handle_introduce1(or_circuit_t *client_circ, const uint8_t *request,
{
ed25519_public_key_t auth_key;
get_auth_key_from_cell(&auth_key, RELAY_COMMAND_INTRODUCE1, parsed_cell);
- service_circ = hs_circuitmap_get_intro_circ_v3(&auth_key);
+ service_circ = hs_circuitmap_get_intro_circ_v3_relay_side(&auth_key);
if (service_circ == NULL) {
char b64_key[ED25519_BASE64_LEN + 1];
ed25519_public_to_base64(b64_key, &auth_key);
@@ -506,7 +507,7 @@ handle_introduce1(or_circuit_t *client_circ, const uint8_t *request,
circuit_mark_for_close(TO_CIRCUIT(client_circ), END_CIRC_REASON_INTERNAL);
}
done:
- hs_cell_introduce1_free(parsed_cell);
+ trn_cell_introduce1_free(parsed_cell);
return ret;
}
diff --git a/src/or/hs_intropoint.h b/src/or/hs_intropoint.h
index e6024a858f..163ed810e7 100644
--- a/src/or/hs_intropoint.h
+++ b/src/or/hs_intropoint.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -41,7 +41,7 @@ int hs_intro_circuit_is_suitable_for_establish_intro(const or_circuit_t *circ);
#include "hs/cell_introduce1.h"
STATIC int
-verify_establish_intro_cell(const hs_cell_establish_intro_t *out,
+verify_establish_intro_cell(const trn_cell_establish_intro_t *out,
const uint8_t *circuit_key_material,
size_t circuit_key_material_len);
@@ -52,7 +52,7 @@ get_auth_key_from_cell(ed25519_public_key_t *auth_key_out,
STATIC int introduce1_cell_is_legacy(const uint8_t *request);
STATIC int handle_introduce1(or_circuit_t *client_circ,
const uint8_t *request, size_t request_len);
-STATIC int validate_introduce1_parsed_cell(const hs_cell_introduce1_t *cell);
+STATIC int validate_introduce1_parsed_cell(const trn_cell_introduce1_t *cell);
STATIC int circuit_is_suitable_for_introduce1(const or_circuit_t *circ);
#endif /* HS_INTROPOINT_PRIVATE */
diff --git a/src/or/hs_ntor.c b/src/or/hs_ntor.c
new file mode 100644
index 0000000000..119899817e
--- /dev/null
+++ b/src/or/hs_ntor.c
@@ -0,0 +1,626 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/** \file hs_ntor.c
+ * \brief Implements the ntor variant used in Tor hidden services.
+ *
+ * \details
+ * This module handles the variant of the ntor handshake that is documented in
+ * section [NTOR-WITH-EXTRA-DATA] of rend-spec-ng.txt .
+ *
+ * The functions in this file provide an API that should be used when sending
+ * or receiving INTRODUCE1/RENDEZVOUS1 cells to generate the various key
+ * material required to create and handle those cells.
+ *
+ * In the case of INTRODUCE1 it provides encryption and MAC keys to
+ * encode/decode the encrypted blob (see hs_ntor_intro_cell_keys_t). The
+ * relevant pub functions are hs_ntor_{client,service}_get_introduce1_keys().
+ *
+ * In the case of RENDEZVOUS1 it calculates the MAC required to authenticate
+ * the cell, and also provides the key seed that is used to derive the crypto
+ * material for rendezvous encryption (see hs_ntor_rend_cell_keys_t). The
+ * relevant pub functions are hs_ntor_{client,service}_get_rendezvous1_keys().
+ * It also provides a function (hs_ntor_circuit_key_expansion()) that does the
+ * rendezvous key expansion to setup end-to-end rend circuit keys.
+ */
+
+#include "or.h"
+#include "hs_ntor.h"
+
+/* String constants used by the ntor HS protocol */
+#define PROTOID "tor-hs-ntor-curve25519-sha3-256-1"
+#define PROTOID_LEN (sizeof(PROTOID) - 1)
+#define SERVER_STR "Server"
+#define SERVER_STR_LEN (sizeof(SERVER_STR) - 1)
+
+/* Protocol-specific tweaks to our crypto inputs */
+#define T_HSENC PROTOID ":hs_key_extract"
+#define T_HSENC_LEN (sizeof(T_HSENC) - 1)
+#define T_HSVERIFY PROTOID ":hs_verify"
+#define T_HSMAC PROTOID ":hs_mac"
+#define M_HSEXPAND PROTOID ":hs_key_expand"
+#define M_HSEXPAND_LEN (sizeof(M_HSEXPAND) - 1)
+
+/************************* Helper functions: *******************************/
+
+/** Helper macro: copy <b>len</b> bytes from <b>inp</b> to <b>ptr</b> and
+ *advance <b>ptr</b> by the number of bytes copied. Stolen from onion_ntor.c */
+#define APPEND(ptr, inp, len) \
+ STMT_BEGIN { \
+ memcpy(ptr, (inp), (len)); \
+ ptr += len; \
+ } STMT_END
+
+/* Length of EXP(X,y) | EXP(X,b) | AUTH_KEY | B | X | Y | PROTOID */
+#define REND_SECRET_HS_INPUT_LEN (CURVE25519_OUTPUT_LEN * 2 + \
+ ED25519_PUBKEY_LEN + CURVE25519_PUBKEY_LEN * 3 + PROTOID_LEN)
+/* Length of auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server" */
+#define REND_AUTH_INPUT_LEN (DIGEST256_LEN + ED25519_PUBKEY_LEN + \
+ CURVE25519_PUBKEY_LEN * 3 + PROTOID_LEN + SERVER_STR_LEN)
+
+/** Helper function: Compute the last part of the HS ntor handshake which
+ * derives key material necessary to create and handle RENDEZVOUS1
+ * cells. Function used by both client and service. The actual calculations is
+ * as follows:
+ *
+ * NTOR_KEY_SEED = MAC(rend_secret_hs_input, t_hsenc)
+ * verify = MAC(rend_secret_hs_input, t_hsverify)
+ * auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server"
+ * auth_input_mac = MAC(auth_input, t_hsmac)
+ *
+ * where in the above, AUTH_KEY is <b>intro_auth_pubkey</b>, B is
+ * <b>intro_enc_pubkey</b>, Y is <b>service_ephemeral_rend_pubkey</b>, and X
+ * is <b>client_ephemeral_enc_pubkey</b>. The provided
+ * <b>rend_secret_hs_input</b> is of size REND_SECRET_HS_INPUT_LEN.
+ *
+ * The final results of NTOR_KEY_SEED and auth_input_mac are placed in
+ * <b>hs_ntor_rend_cell_keys_out</b>. Return 0 if everything went fine. */
+static int
+get_rendezvous1_key_material(const uint8_t *rend_secret_hs_input,
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_public_key_t *service_ephemeral_rend_pubkey,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys_out)
+{
+ int bad = 0;
+ uint8_t ntor_key_seed[DIGEST256_LEN];
+ uint8_t ntor_verify[DIGEST256_LEN];
+ uint8_t rend_auth_input[REND_AUTH_INPUT_LEN];
+ uint8_t rend_cell_auth[DIGEST256_LEN];
+ uint8_t *ptr;
+
+ /* Let's build NTOR_KEY_SEED */
+ crypto_mac_sha3_256(ntor_key_seed, sizeof(ntor_key_seed),
+ rend_secret_hs_input, REND_SECRET_HS_INPUT_LEN,
+ (const uint8_t *)T_HSENC, strlen(T_HSENC));
+ bad |= safe_mem_is_zero(ntor_key_seed, DIGEST256_LEN);
+
+ /* Let's build ntor_verify */
+ crypto_mac_sha3_256(ntor_verify, sizeof(ntor_verify),
+ rend_secret_hs_input, REND_SECRET_HS_INPUT_LEN,
+ (const uint8_t *)T_HSVERIFY, strlen(T_HSVERIFY));
+ bad |= safe_mem_is_zero(ntor_verify, DIGEST256_LEN);
+
+ /* Let's build auth_input: */
+ ptr = rend_auth_input;
+ /* Append ntor_verify */
+ APPEND(ptr, ntor_verify, sizeof(ntor_verify));
+ /* Append AUTH_KEY */
+ APPEND(ptr, intro_auth_pubkey->pubkey, ED25519_PUBKEY_LEN);
+ /* Append B */
+ APPEND(ptr, intro_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append Y */
+ APPEND(ptr,
+ service_ephemeral_rend_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append X */
+ APPEND(ptr,
+ client_ephemeral_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append PROTOID */
+ APPEND(ptr, PROTOID, strlen(PROTOID));
+ /* Append "Server" */
+ APPEND(ptr, SERVER_STR, strlen(SERVER_STR));
+ tor_assert(ptr == rend_auth_input + sizeof(rend_auth_input));
+
+ /* Let's build auth_input_mac that goes in RENDEZVOUS1 cell */
+ crypto_mac_sha3_256(rend_cell_auth, sizeof(rend_cell_auth),
+ rend_auth_input, sizeof(rend_auth_input),
+ (const uint8_t *)T_HSMAC, strlen(T_HSMAC));
+ bad |= safe_mem_is_zero(ntor_verify, DIGEST256_LEN);
+
+ { /* Get the computed RENDEZVOUS1 material! */
+ memcpy(&hs_ntor_rend_cell_keys_out->rend_cell_auth_mac,
+ rend_cell_auth, DIGEST256_LEN);
+ memcpy(&hs_ntor_rend_cell_keys_out->ntor_key_seed,
+ ntor_key_seed, DIGEST256_LEN);
+ }
+
+ memwipe(rend_cell_auth, 0, sizeof(rend_cell_auth));
+ memwipe(rend_auth_input, 0, sizeof(rend_auth_input));
+ memwipe(ntor_key_seed, 0, sizeof(ntor_key_seed));
+
+ return bad;
+}
+
+/** Length of secret_input = EXP(B,x) | AUTH_KEY | X | B | PROTOID */
+#define INTRO_SECRET_HS_INPUT_LEN (CURVE25519_OUTPUT_LEN +ED25519_PUBKEY_LEN +\
+ CURVE25519_PUBKEY_LEN + CURVE25519_PUBKEY_LEN + PROTOID_LEN)
+/* Length of info = m_hsexpand | subcredential */
+#define INFO_BLOB_LEN (M_HSEXPAND_LEN + DIGEST256_LEN)
+/* Length of KDF input = intro_secret_hs_input | t_hsenc | info */
+#define KDF_INPUT_LEN (INTRO_SECRET_HS_INPUT_LEN + T_HSENC_LEN + INFO_BLOB_LEN)
+
+/** Helper function: Compute the part of the HS ntor handshake that generates
+ * key material for creating and handling INTRODUCE1 cells. Function used
+ * by both client and service. Specifically, calculate the following:
+ *
+ * info = m_hsexpand | subcredential
+ * hs_keys = KDF(intro_secret_hs_input | t_hsenc | info, S_KEY_LEN+MAC_LEN)
+ * ENC_KEY = hs_keys[0:S_KEY_LEN]
+ * MAC_KEY = hs_keys[S_KEY_LEN:S_KEY_LEN+MAC_KEY_LEN]
+ *
+ * where intro_secret_hs_input is <b>secret_input</b> (of size
+ * INTRO_SECRET_HS_INPUT_LEN), and <b>subcredential</b> is of size
+ * DIGEST256_LEN.
+ *
+ * If everything went well, fill <b>hs_ntor_intro_cell_keys_out</b> with the
+ * necessary key material, and return 0. */
+static void
+get_introduce1_key_material(const uint8_t *secret_input,
+ const uint8_t *subcredential,
+ hs_ntor_intro_cell_keys_t *hs_ntor_intro_cell_keys_out)
+{
+ uint8_t keystream[CIPHER256_KEY_LEN + DIGEST256_LEN];
+ uint8_t info_blob[INFO_BLOB_LEN];
+ uint8_t kdf_input[KDF_INPUT_LEN];
+ crypto_xof_t *xof;
+ uint8_t *ptr;
+
+ /* Let's build info */
+ ptr = info_blob;
+ APPEND(ptr, M_HSEXPAND, strlen(M_HSEXPAND));
+ APPEND(ptr, subcredential, DIGEST256_LEN);
+ tor_assert(ptr == info_blob + sizeof(info_blob));
+
+ /* Let's build the input to the KDF */
+ ptr = kdf_input;
+ APPEND(ptr, secret_input, INTRO_SECRET_HS_INPUT_LEN);
+ APPEND(ptr, T_HSENC, strlen(T_HSENC));
+ APPEND(ptr, info_blob, sizeof(info_blob));
+ tor_assert(ptr == kdf_input + sizeof(kdf_input));
+
+ /* Now we need to run kdf_input over SHAKE-256 */
+ xof = crypto_xof_new();
+ crypto_xof_add_bytes(xof, kdf_input, sizeof(kdf_input));
+ crypto_xof_squeeze_bytes(xof, keystream, sizeof(keystream)) ;
+ crypto_xof_free(xof);
+
+ { /* Get the keys */
+ memcpy(&hs_ntor_intro_cell_keys_out->enc_key, keystream,CIPHER256_KEY_LEN);
+ memcpy(&hs_ntor_intro_cell_keys_out->mac_key,
+ keystream+CIPHER256_KEY_LEN, DIGEST256_LEN);
+ }
+
+ memwipe(keystream, 0, sizeof(keystream));
+ memwipe(kdf_input, 0, sizeof(kdf_input));
+}
+
+/** Helper function: Calculate the 'intro_secret_hs_input' element used by the
+ * HS ntor handshake and place it in <b>secret_input_out</b>. This function is
+ * used by both client and service code.
+ *
+ * For the client-side it looks like this:
+ *
+ * intro_secret_hs_input = EXP(B,x) | AUTH_KEY | X | B | PROTOID
+ *
+ * whereas for the service-side it looks like this:
+ *
+ * intro_secret_hs_input = EXP(X,b) | AUTH_KEY | X | B | PROTOID
+ *
+ * In this function, <b>dh_result</b> carries the EXP() result (and has size
+ * CURVE25519_OUTPUT_LEN) <b>intro_auth_pubkey</b> is AUTH_KEY,
+ * <b>client_ephemeral_enc_pubkey</b> is X, and <b>intro_enc_pubkey</b> is B.
+ */
+static void
+get_intro_secret_hs_input(const uint8_t *dh_result,
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ uint8_t *secret_input_out)
+{
+ uint8_t *ptr;
+
+ /* Append EXP() */
+ ptr = secret_input_out;
+ APPEND(ptr, dh_result, CURVE25519_OUTPUT_LEN);
+ /* Append AUTH_KEY */
+ APPEND(ptr, intro_auth_pubkey->pubkey, ED25519_PUBKEY_LEN);
+ /* Append X */
+ APPEND(ptr, client_ephemeral_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append B */
+ APPEND(ptr, intro_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append PROTOID */
+ APPEND(ptr, PROTOID, strlen(PROTOID));
+ tor_assert(ptr == secret_input_out + INTRO_SECRET_HS_INPUT_LEN);
+}
+
+/** Calculate the 'rend_secret_hs_input' element used by the HS ntor handshake
+ * and place it in <b>rend_secret_hs_input_out</b>. This function is used by
+ * both client and service code.
+ *
+ * The computation on the client side is:
+ * rend_secret_hs_input = EXP(X,y) | EXP(X,b) | AUTH_KEY | B | X | Y | PROTOID
+ * whereas on the service side it is:
+ * rend_secret_hs_input = EXP(Y,x) | EXP(B,x) | AUTH_KEY | B | X | Y | PROTOID
+ *
+ * where:
+ * <b>dh_result1</b> and <b>dh_result2</b> carry the two EXP() results (of size
+ * CURVE25519_OUTPUT_LEN)
+ * <b>intro_auth_pubkey</b> is AUTH_KEY,
+ * <b>intro_enc_pubkey</b> is B,
+ * <b>client_ephemeral_enc_pubkey</b> is X, and
+ * <b>service_ephemeral_rend_pubkey</b> is Y.
+ */
+static void
+get_rend_secret_hs_input(const uint8_t *dh_result1, const uint8_t *dh_result2,
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ const curve25519_public_key_t *service_ephemeral_rend_pubkey,
+ uint8_t *rend_secret_hs_input_out)
+{
+ uint8_t *ptr;
+
+ ptr = rend_secret_hs_input_out;
+ /* Append the first EXP() */
+ APPEND(ptr, dh_result1, CURVE25519_OUTPUT_LEN);
+ /* Append the other EXP() */
+ APPEND(ptr, dh_result2, CURVE25519_OUTPUT_LEN);
+ /* Append AUTH_KEY */
+ APPEND(ptr, intro_auth_pubkey->pubkey, ED25519_PUBKEY_LEN);
+ /* Append B */
+ APPEND(ptr, intro_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append X */
+ APPEND(ptr,
+ client_ephemeral_enc_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append Y */
+ APPEND(ptr,
+ service_ephemeral_rend_pubkey->public_key, CURVE25519_PUBKEY_LEN);
+ /* Append PROTOID */
+ APPEND(ptr, PROTOID, strlen(PROTOID));
+ tor_assert(ptr == rend_secret_hs_input_out + REND_SECRET_HS_INPUT_LEN);
+}
+
+/************************* Public functions: *******************************/
+
+/* Public function: Do the appropriate ntor calculations and derive the keys
+ * needed to encrypt and authenticate INTRODUCE1 cells. Return 0 and place the
+ * final key material in <b>hs_ntor_intro_cell_keys_out</b> if everything went
+ * well, otherwise return -1;
+ *
+ * The relevant calculations are as follows:
+ *
+ * intro_secret_hs_input = EXP(B,x) | AUTH_KEY | X | B | PROTOID
+ * info = m_hsexpand | subcredential
+ * hs_keys = KDF(intro_secret_hs_input | t_hsenc | info, S_KEY_LEN+MAC_LEN)
+ * ENC_KEY = hs_keys[0:S_KEY_LEN]
+ * MAC_KEY = hs_keys[S_KEY_LEN:S_KEY_LEN+MAC_KEY_LEN]
+ *
+ * where:
+ * <b>intro_auth_pubkey</b> is AUTH_KEY (found in HS descriptor),
+ * <b>intro_enc_pubkey</b> is B (also found in HS descriptor),
+ * <b>client_ephemeral_enc_keypair</b> is freshly generated keypair (x,X)
+ * <b>subcredential</b> is the hidden service subcredential (of size
+ * DIGEST256_LEN). */
+int
+hs_ntor_client_get_introduce1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_keypair_t *client_ephemeral_enc_keypair,
+ const uint8_t *subcredential,
+ hs_ntor_intro_cell_keys_t *hs_ntor_intro_cell_keys_out)
+{
+ int bad = 0;
+ uint8_t secret_input[INTRO_SECRET_HS_INPUT_LEN];
+ uint8_t dh_result[CURVE25519_OUTPUT_LEN];
+
+ tor_assert(intro_auth_pubkey);
+ tor_assert(intro_enc_pubkey);
+ tor_assert(client_ephemeral_enc_keypair);
+ tor_assert(subcredential);
+ tor_assert(hs_ntor_intro_cell_keys_out);
+
+ /* Calculate EXP(B,x) */
+ curve25519_handshake(dh_result,
+ &client_ephemeral_enc_keypair->seckey,
+ intro_enc_pubkey);
+ bad |= safe_mem_is_zero(dh_result, CURVE25519_OUTPUT_LEN);
+
+ /* Get intro_secret_hs_input */
+ get_intro_secret_hs_input(dh_result, intro_auth_pubkey,
+ &client_ephemeral_enc_keypair->pubkey,
+ intro_enc_pubkey, secret_input);
+ bad |= safe_mem_is_zero(secret_input, CURVE25519_OUTPUT_LEN);
+
+ /* Get ENC_KEY and MAC_KEY! */
+ get_introduce1_key_material(secret_input, subcredential,
+ hs_ntor_intro_cell_keys_out);
+
+ /* Cleanup */
+ memwipe(secret_input, 0, sizeof(secret_input));
+ if (bad) {
+ memwipe(hs_ntor_intro_cell_keys_out, 0, sizeof(hs_ntor_intro_cell_keys_t));
+ }
+
+ return bad ? -1 : 0;
+}
+
+/* Public function: Do the appropriate ntor calculations and derive the keys
+ * needed to verify RENDEZVOUS1 cells and encrypt further rendezvous
+ * traffic. Return 0 and place the final key material in
+ * <b>hs_ntor_rend_cell_keys_out</b> if everything went well, else return -1.
+ *
+ * The relevant calculations are as follows:
+ *
+ * rend_secret_hs_input = EXP(Y,x) | EXP(B,x) | AUTH_KEY | B | X | Y | PROTOID
+ * NTOR_KEY_SEED = MAC(rend_secret_hs_input, t_hsenc)
+ * verify = MAC(rend_secret_hs_input, t_hsverify)
+ * auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server"
+ * auth_input_mac = MAC(auth_input, t_hsmac)
+ *
+ * where:
+ * <b>intro_auth_pubkey</b> is AUTH_KEY (found in HS descriptor),
+ * <b>client_ephemeral_enc_keypair</b> is freshly generated keypair (x,X)
+ * <b>intro_enc_pubkey</b> is B (also found in HS descriptor),
+ * <b>service_ephemeral_rend_pubkey</b> is Y (SERVER_PK in RENDEZVOUS1 cell) */
+int
+hs_ntor_client_get_rendezvous1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *client_ephemeral_enc_keypair,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_public_key_t *service_ephemeral_rend_pubkey,
+ hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys_out)
+{
+ int bad = 0;
+ uint8_t rend_secret_hs_input[REND_SECRET_HS_INPUT_LEN];
+ uint8_t dh_result1[CURVE25519_OUTPUT_LEN];
+ uint8_t dh_result2[CURVE25519_OUTPUT_LEN];
+
+ tor_assert(intro_auth_pubkey);
+ tor_assert(client_ephemeral_enc_keypair);
+ tor_assert(intro_enc_pubkey);
+ tor_assert(service_ephemeral_rend_pubkey);
+ tor_assert(hs_ntor_rend_cell_keys_out);
+
+ /* Compute EXP(Y, x) */
+ curve25519_handshake(dh_result1,
+ &client_ephemeral_enc_keypair->seckey,
+ service_ephemeral_rend_pubkey);
+ bad |= safe_mem_is_zero(dh_result1, CURVE25519_OUTPUT_LEN);
+
+ /* Compute EXP(B, x) */
+ curve25519_handshake(dh_result2,
+ &client_ephemeral_enc_keypair->seckey,
+ intro_enc_pubkey);
+ bad |= safe_mem_is_zero(dh_result2, CURVE25519_OUTPUT_LEN);
+
+ /* Get rend_secret_hs_input */
+ get_rend_secret_hs_input(dh_result1, dh_result2,
+ intro_auth_pubkey, intro_enc_pubkey,
+ &client_ephemeral_enc_keypair->pubkey,
+ service_ephemeral_rend_pubkey,
+ rend_secret_hs_input);
+
+ /* Get NTOR_KEY_SEED and the auth_input MAC */
+ bad |= get_rendezvous1_key_material(rend_secret_hs_input,
+ intro_auth_pubkey,
+ intro_enc_pubkey,
+ service_ephemeral_rend_pubkey,
+ &client_ephemeral_enc_keypair->pubkey,
+ hs_ntor_rend_cell_keys_out);
+
+ memwipe(rend_secret_hs_input, 0, sizeof(rend_secret_hs_input));
+ if (bad) {
+ memwipe(hs_ntor_rend_cell_keys_out, 0, sizeof(hs_ntor_rend_cell_keys_t));
+ }
+
+ return bad ? -1 : 0;
+}
+
+/* Public function: Do the appropriate ntor calculations and derive the keys
+ * needed to decrypt and verify INTRODUCE1 cells. Return 0 and place the final
+ * key material in <b>hs_ntor_intro_cell_keys_out</b> if everything went well,
+ * otherwise return -1;
+ *
+ * The relevant calculations are as follows:
+ *
+ * intro_secret_hs_input = EXP(X,b) | AUTH_KEY | X | B | PROTOID
+ * info = m_hsexpand | subcredential
+ * hs_keys = KDF(intro_secret_hs_input | t_hsenc | info, S_KEY_LEN+MAC_LEN)
+ * HS_DEC_KEY = hs_keys[0:S_KEY_LEN]
+ * HS_MAC_KEY = hs_keys[S_KEY_LEN:S_KEY_LEN+MAC_KEY_LEN]
+ *
+ * where:
+ * <b>intro_auth_pubkey</b> is AUTH_KEY (introduction point auth key),
+ * <b>intro_enc_keypair</b> is (b,B) (introduction point encryption keypair),
+ * <b>client_ephemeral_enc_pubkey</b> is X (CLIENT_PK in INTRODUCE2 cell),
+ * <b>subcredential</b> is the HS subcredential (of size DIGEST256_LEN) */
+int
+hs_ntor_service_get_introduce1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *intro_enc_keypair,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ const uint8_t *subcredential,
+ hs_ntor_intro_cell_keys_t *hs_ntor_intro_cell_keys_out)
+{
+ int bad = 0;
+ uint8_t secret_input[INTRO_SECRET_HS_INPUT_LEN];
+ uint8_t dh_result[CURVE25519_OUTPUT_LEN];
+
+ tor_assert(intro_auth_pubkey);
+ tor_assert(intro_enc_keypair);
+ tor_assert(client_ephemeral_enc_pubkey);
+ tor_assert(subcredential);
+ tor_assert(hs_ntor_intro_cell_keys_out);
+
+ /* Compute EXP(X, b) */
+ curve25519_handshake(dh_result,
+ &intro_enc_keypair->seckey,
+ client_ephemeral_enc_pubkey);
+ bad |= safe_mem_is_zero(dh_result, CURVE25519_OUTPUT_LEN);
+
+ /* Get intro_secret_hs_input */
+ get_intro_secret_hs_input(dh_result, intro_auth_pubkey,
+ client_ephemeral_enc_pubkey,
+ &intro_enc_keypair->pubkey,
+ secret_input);
+ bad |= safe_mem_is_zero(secret_input, CURVE25519_OUTPUT_LEN);
+
+ /* Get ENC_KEY and MAC_KEY! */
+ get_introduce1_key_material(secret_input, subcredential,
+ hs_ntor_intro_cell_keys_out);
+
+ memwipe(secret_input, 0, sizeof(secret_input));
+ if (bad) {
+ memwipe(hs_ntor_intro_cell_keys_out, 0, sizeof(hs_ntor_intro_cell_keys_t));
+ }
+
+ return bad ? -1 : 0;
+}
+
+/* Public function: Do the appropriate ntor calculations and derive the keys
+ * needed to create and authenticate RENDEZVOUS1 cells. Return 0 and place the
+ * final key material in <b>hs_ntor_rend_cell_keys_out</b> if all went fine,
+ * return -1 if error happened.
+ *
+ * The relevant calculations are as follows:
+ *
+ * rend_secret_hs_input = EXP(X,y) | EXP(X,b) | AUTH_KEY | B | X | Y | PROTOID
+ * NTOR_KEY_SEED = MAC(rend_secret_hs_input, t_hsenc)
+ * verify = MAC(rend_secret_hs_input, t_hsverify)
+ * auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server"
+ * auth_input_mac = MAC(auth_input, t_hsmac)
+ *
+ * where:
+ * <b>intro_auth_pubkey</b> is AUTH_KEY (intro point auth key),
+ * <b>intro_enc_keypair</b> is (b,B) (intro point enc keypair)
+ * <b>service_ephemeral_rend_keypair</b> is a fresh (y,Y) keypair
+ * <b>client_ephemeral_enc_pubkey</b> is X (CLIENT_PK in INTRODUCE2 cell) */
+int
+hs_ntor_service_get_rendezvous1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *intro_enc_keypair,
+ const curve25519_keypair_t *service_ephemeral_rend_keypair,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys_out)
+{
+ int bad = 0;
+ uint8_t rend_secret_hs_input[REND_SECRET_HS_INPUT_LEN];
+ uint8_t dh_result1[CURVE25519_OUTPUT_LEN];
+ uint8_t dh_result2[CURVE25519_OUTPUT_LEN];
+
+ tor_assert(intro_auth_pubkey);
+ tor_assert(intro_enc_keypair);
+ tor_assert(service_ephemeral_rend_keypair);
+ tor_assert(client_ephemeral_enc_pubkey);
+ tor_assert(hs_ntor_rend_cell_keys_out);
+
+ /* Compute EXP(X, y) */
+ curve25519_handshake(dh_result1,
+ &service_ephemeral_rend_keypair->seckey,
+ client_ephemeral_enc_pubkey);
+ bad |= safe_mem_is_zero(dh_result1, CURVE25519_OUTPUT_LEN);
+
+ /* Compute EXP(X, b) */
+ curve25519_handshake(dh_result2,
+ &intro_enc_keypair->seckey,
+ client_ephemeral_enc_pubkey);
+ bad |= safe_mem_is_zero(dh_result2, CURVE25519_OUTPUT_LEN);
+
+ /* Get rend_secret_hs_input */
+ get_rend_secret_hs_input(dh_result1, dh_result2,
+ intro_auth_pubkey,
+ &intro_enc_keypair->pubkey,
+ client_ephemeral_enc_pubkey,
+ &service_ephemeral_rend_keypair->pubkey,
+ rend_secret_hs_input);
+
+ /* Get NTOR_KEY_SEED and AUTH_INPUT_MAC! */
+ bad |= get_rendezvous1_key_material(rend_secret_hs_input,
+ intro_auth_pubkey,
+ &intro_enc_keypair->pubkey,
+ &service_ephemeral_rend_keypair->pubkey,
+ client_ephemeral_enc_pubkey,
+ hs_ntor_rend_cell_keys_out);
+
+ memwipe(rend_secret_hs_input, 0, sizeof(rend_secret_hs_input));
+ if (bad) {
+ memwipe(hs_ntor_rend_cell_keys_out, 0, sizeof(hs_ntor_rend_cell_keys_t));
+ }
+
+ return bad ? -1 : 0;
+}
+
+/** Given a received RENDEZVOUS2 MAC in <b>mac</b> (of length DIGEST256_LEN),
+ * and the RENDEZVOUS1 key material in <b>hs_ntor_rend_cell_keys</b>, return 1
+ * if the MAC is good, otherwise return 0. */
+int
+hs_ntor_client_rendezvous2_mac_is_good(
+ const hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys,
+ const uint8_t *rcvd_mac)
+{
+ tor_assert(rcvd_mac);
+ tor_assert(hs_ntor_rend_cell_keys);
+
+ return tor_memeq(hs_ntor_rend_cell_keys->rend_cell_auth_mac,
+ rcvd_mac, DIGEST256_LEN);
+}
+
+/* Input length to KDF for key expansion */
+#define NTOR_KEY_EXPANSION_KDF_INPUT_LEN (DIGEST256_LEN + M_HSEXPAND_LEN)
+/* Output length of KDF for key expansion */
+#define NTOR_KEY_EXPANSION_KDF_OUTPUT_LEN (DIGEST256_LEN*3+CIPHER256_KEY_LEN*2)
+
+/** Given the rendezvous key material in <b>hs_ntor_rend_cell_keys</b>, do the
+ * circuit key expansion as specified by section '4.2.1. Key expansion' and
+ * return a hs_ntor_rend_circuit_keys_t structure with the computed keys. */
+hs_ntor_rend_circuit_keys_t *
+hs_ntor_circuit_key_expansion(
+ const hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys)
+{
+ uint8_t *ptr;
+ uint8_t kdf_input[NTOR_KEY_EXPANSION_KDF_INPUT_LEN];
+ uint8_t keys[NTOR_KEY_EXPANSION_KDF_OUTPUT_LEN];
+ crypto_xof_t *xof;
+ hs_ntor_rend_circuit_keys_t *rend_circuit_keys = NULL;
+
+ /* Let's build the input to the KDF */
+ ptr = kdf_input;
+ APPEND(ptr, hs_ntor_rend_cell_keys->ntor_key_seed, DIGEST256_LEN);
+ APPEND(ptr, M_HSEXPAND, strlen(M_HSEXPAND));
+ tor_assert(ptr == kdf_input + sizeof(kdf_input));
+
+ /* Generate the keys */
+ xof = crypto_xof_new();
+ crypto_xof_add_bytes(xof, kdf_input, sizeof(kdf_input));
+ crypto_xof_squeeze_bytes(xof, keys, sizeof(keys));
+ crypto_xof_free(xof);
+
+ /* Generate keys structure and assign keys to it */
+ rend_circuit_keys = tor_malloc_zero(sizeof(hs_ntor_rend_circuit_keys_t));
+ ptr = keys;
+ memcpy(rend_circuit_keys->KH, ptr, DIGEST256_LEN);
+ ptr += DIGEST256_LEN;;
+ memcpy(rend_circuit_keys->Df, ptr, DIGEST256_LEN);
+ ptr += DIGEST256_LEN;
+ memcpy(rend_circuit_keys->Db, ptr, DIGEST256_LEN);
+ ptr += DIGEST256_LEN;
+ memcpy(rend_circuit_keys->Kf, ptr, CIPHER256_KEY_LEN);
+ ptr += CIPHER256_KEY_LEN;
+ memcpy(rend_circuit_keys->Kb, ptr, CIPHER256_KEY_LEN);
+ ptr += CIPHER256_KEY_LEN;
+ tor_assert(ptr == keys + sizeof(keys));
+
+ return rend_circuit_keys;
+}
+
diff --git a/src/or/hs_ntor.h b/src/or/hs_ntor.h
new file mode 100644
index 0000000000..cd75f46a4c
--- /dev/null
+++ b/src/or/hs_ntor.h
@@ -0,0 +1,77 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_HS_NTOR_H
+#define TOR_HS_NTOR_H
+
+#include "or.h"
+
+/* Key material needed to encode/decode INTRODUCE1 cells */
+typedef struct {
+ /* Key used for encryption of encrypted INTRODUCE1 blob */
+ uint8_t enc_key[CIPHER256_KEY_LEN];
+ /* MAC key used to protect encrypted INTRODUCE1 blob */
+ uint8_t mac_key[DIGEST256_LEN];
+} hs_ntor_intro_cell_keys_t;
+
+/* Key material needed to encode/decode RENDEZVOUS1 cells */
+typedef struct {
+ /* This is the MAC of the HANDSHAKE_INFO field */
+ uint8_t rend_cell_auth_mac[DIGEST256_LEN];
+ /* This is the key seed used to derive further rendezvous crypto keys as
+ * detailed in section 4.2.1 of rend-spec-ng.txt. */
+ uint8_t ntor_key_seed[DIGEST256_LEN];
+} hs_ntor_rend_cell_keys_t;
+
+/* Key material resulting from key expansion as detailed in section "4.2.1. Key
+ * expansion" of rend-spec-ng.txt. */
+typedef struct {
+ /* Per-circuit key material used in ESTABLISH_INTRO cell */
+ uint8_t KH[DIGEST256_LEN];
+ /* Authentication key for outgoing RELAY cells */
+ uint8_t Df[DIGEST256_LEN];
+ /* Authentication key for incoming RELAY cells */
+ uint8_t Db[DIGEST256_LEN];
+ /* Encryption key for outgoing RELAY cells */
+ uint8_t Kf[CIPHER256_KEY_LEN];
+ /* Decryption key for incoming RELAY cells */
+ uint8_t Kb[CIPHER256_KEY_LEN];
+} hs_ntor_rend_circuit_keys_t;
+
+int hs_ntor_client_get_introduce1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_keypair_t *client_ephemeral_enc_keypair,
+ const uint8_t *subcredential,
+ hs_ntor_intro_cell_keys_t *hs_ntor_intro_cell_keys_out);
+
+int hs_ntor_client_get_rendezvous1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *client_ephemeral_enc_keypair,
+ const curve25519_public_key_t *intro_enc_pubkey,
+ const curve25519_public_key_t *service_ephemeral_rend_pubkey,
+ hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys_out);
+
+int hs_ntor_service_get_introduce1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *intro_enc_keypair,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ const uint8_t *subcredential,
+ hs_ntor_intro_cell_keys_t *hs_ntor_intro_cell_keys_out);
+
+int hs_ntor_service_get_rendezvous1_keys(
+ const ed25519_public_key_t *intro_auth_pubkey,
+ const curve25519_keypair_t *intro_enc_keypair,
+ const curve25519_keypair_t *service_ephemeral_rend_keypair,
+ const curve25519_public_key_t *client_ephemeral_enc_pubkey,
+ hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys_out);
+
+hs_ntor_rend_circuit_keys_t *hs_ntor_circuit_key_expansion(
+ const hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys);
+
+int hs_ntor_client_rendezvous2_mac_is_good(
+ const hs_ntor_rend_cell_keys_t *hs_ntor_rend_cell_keys,
+ const uint8_t *rcvd_mac);
+
+#endif
+
diff --git a/src/or/hs_service.c b/src/or/hs_service.c
index 8687403b86..b3eec13046 100644
--- a/src/or/hs_service.c
+++ b/src/or/hs_service.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,7 +11,9 @@
#include "rendservice.h"
#include "circuitlist.h"
#include "circpathbias.h"
+#include "networkstatus.h"
+#include "hs_intropoint.h"
#include "hs_service.h"
#include "hs_common.h"
@@ -27,7 +29,7 @@
* bytes written, or a negative integer if there was an error. */
ssize_t
get_establish_intro_payload(uint8_t *buf_out, size_t buf_out_len,
- const hs_cell_establish_intro_t *cell)
+ const trn_cell_establish_intro_t *cell)
{
ssize_t bytes_used = 0;
@@ -35,31 +37,31 @@ get_establish_intro_payload(uint8_t *buf_out, size_t buf_out_len,
return -1;
}
- bytes_used = hs_cell_establish_intro_encode(buf_out, buf_out_len,
+ bytes_used = trn_cell_establish_intro_encode(buf_out, buf_out_len,
cell);
return bytes_used;
}
/* Set the cell extensions of <b>cell</b>. */
static void
-set_cell_extensions(hs_cell_establish_intro_t *cell)
+set_trn_cell_extensions(trn_cell_establish_intro_t *cell)
{
- cell_extension_t *cell_extensions = cell_extension_new();
+ trn_cell_extension_t *trn_cell_extensions = trn_cell_extension_new();
/* For now, we don't use extensions at all. */
- cell_extensions->num = 0; /* It's already zeroed, but be explicit. */
- hs_cell_establish_intro_set_extensions(cell, cell_extensions);
+ trn_cell_extensions->num = 0; /* It's already zeroed, but be explicit. */
+ trn_cell_establish_intro_set_extensions(cell, trn_cell_extensions);
}
/** Given the circuit handshake info in <b>circuit_key_material</b>, create and
* return an ESTABLISH_INTRO cell. Return NULL if something went wrong. The
* returned cell is allocated on the heap and it's the responsibility of the
* caller to free it. */
-hs_cell_establish_intro_t *
+trn_cell_establish_intro_t *
generate_establish_intro_cell(const uint8_t *circuit_key_material,
size_t circuit_key_material_len)
{
- hs_cell_establish_intro_t *cell = NULL;
+ trn_cell_establish_intro_t *cell = NULL;
ssize_t encoded_len;
log_warn(LD_GENERAL,
@@ -72,31 +74,32 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
goto err;
}
- cell = hs_cell_establish_intro_new();
+ cell = trn_cell_establish_intro_new();
/* Set AUTH_KEY_TYPE: 2 means ed25519 */
- hs_cell_establish_intro_set_auth_key_type(cell, AUTH_KEY_ED25519);
+ trn_cell_establish_intro_set_auth_key_type(cell,
+ HS_INTRO_AUTH_KEY_TYPE_ED25519);
/* Set AUTH_KEY_LEN field */
/* Must also set byte-length of AUTH_KEY to match */
int auth_key_len = ED25519_PUBKEY_LEN;
- hs_cell_establish_intro_set_auth_key_len(cell, auth_key_len);
- hs_cell_establish_intro_setlen_auth_key(cell, auth_key_len);
+ trn_cell_establish_intro_set_auth_key_len(cell, auth_key_len);
+ trn_cell_establish_intro_setlen_auth_key(cell, auth_key_len);
/* Set AUTH_KEY field */
- uint8_t *auth_key_ptr = hs_cell_establish_intro_getarray_auth_key(cell);
+ uint8_t *auth_key_ptr = trn_cell_establish_intro_getarray_auth_key(cell);
memcpy(auth_key_ptr, key_struct.pubkey.pubkey, auth_key_len);
/* No cell extensions needed */
- set_cell_extensions(cell);
+ set_trn_cell_extensions(cell);
/* Set signature size.
We need to do this up here, because _encode() needs it and we need to call
_encode() to calculate the MAC and signature.
*/
int sig_len = ED25519_SIG_LEN;
- hs_cell_establish_intro_set_sig_len(cell, sig_len);
- hs_cell_establish_intro_setlen_sig(cell, sig_len);
+ trn_cell_establish_intro_set_sig_len(cell, sig_len);
+ trn_cell_establish_intro_setlen_sig(cell, sig_len);
/* XXX How to make this process easier and nicer? */
@@ -107,7 +110,7 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
uint8_t cell_bytes_tmp[RELAY_PAYLOAD_SIZE] = {0};
uint8_t mac[TRUNNEL_SHA3_256_LEN];
- encoded_len = hs_cell_establish_intro_encode(cell_bytes_tmp,
+ encoded_len = trn_cell_establish_intro_encode(cell_bytes_tmp,
sizeof(cell_bytes_tmp),
cell);
if (encoded_len < 0) {
@@ -126,7 +129,7 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
(ED25519_SIG_LEN + 2 + TRUNNEL_SHA3_256_LEN));
/* Write the MAC to the cell */
uint8_t *handshake_ptr =
- hs_cell_establish_intro_getarray_handshake_mac(cell);
+ trn_cell_establish_intro_getarray_handshake_mac(cell);
memcpy(handshake_ptr, mac, sizeof(mac));
}
@@ -137,7 +140,7 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
uint8_t cell_bytes_tmp[RELAY_PAYLOAD_SIZE] = {0};
ed25519_signature_t sig;
- encoded_len = hs_cell_establish_intro_encode(cell_bytes_tmp,
+ encoded_len = trn_cell_establish_intro_encode(cell_bytes_tmp,
sizeof(cell_bytes_tmp),
cell);
if (encoded_len < 0) {
@@ -158,7 +161,7 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
}
/* And write the signature to the cell */
- uint8_t *sig_ptr = hs_cell_establish_intro_getarray_sig(cell);
+ uint8_t *sig_ptr = trn_cell_establish_intro_getarray_sig(cell);
memcpy(sig_ptr, sig.sig, sig_len);
}
@@ -166,7 +169,7 @@ generate_establish_intro_cell(const uint8_t *circuit_key_material,
return cell;
err:
- hs_cell_establish_intro_free(cell);
+ trn_cell_establish_intro_free(cell);
return NULL;
}
diff --git a/src/or/hs_service.h b/src/or/hs_service.h
index 5d2d8dc4bb..3302592762 100644
--- a/src/or/hs_service.h
+++ b/src/or/hs_service.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -16,12 +16,12 @@
* hs_service.o ends up with no symbols in libor.a which makes clang throw a
* warning at compile time. See #21825. */
-hs_cell_establish_intro_t *
+trn_cell_establish_intro_t *
generate_establish_intro_cell(const uint8_t *circuit_key_material,
size_t circuit_key_material_len);
ssize_t
get_establish_intro_payload(uint8_t *buf, size_t buf_len,
- const hs_cell_establish_intro_t *cell);
+ const trn_cell_establish_intro_t *cell);
#endif /* TOR_HS_SERVICE_H */
diff --git a/src/or/include.am b/src/or/include.am
index 4e54deca55..7548ed0946 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -22,6 +22,7 @@ LIBTOR_A_SOURCES = \
src/or/bridges.c \
src/or/buffers.c \
src/or/channel.c \
+ src/or/channelpadding.c \
src/or/channeltls.c \
src/or/circpathbias.c \
src/or/circuitbuild.c \
@@ -36,6 +37,9 @@ LIBTOR_A_SOURCES = \
src/or/connection.c \
src/or/connection_edge.c \
src/or/connection_or.c \
+ src/or/conscache.c \
+ src/or/consdiff.c \
+ src/or/consdiffmgr.c \
src/or/control.c \
src/or/cpuworker.c \
src/or/dircollate.c \
@@ -44,10 +48,12 @@ LIBTOR_A_SOURCES = \
src/or/dirvote.c \
src/or/dns.c \
src/or/dnsserv.c \
+ src/or/dos.c \
src/or/fp_pair.c \
src/or/geoip.c \
src/or/hs_intropoint.c \
src/or/hs_circuitmap.c \
+ src/or/hs_ntor.c \
src/or/hs_service.c \
src/or/entrynodes.c \
src/or/ext_orport.c \
@@ -116,8 +122,11 @@ src_or_tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libev
src_or_tor_LDADD = src/or/libtor.a src/common/libor.a src/common/libor-ctime.a \
src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \
src/common/libor-event.a src/trunnel/libor-trunnel.a \
+ src/trace/libor-trace.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
+ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
if COVERAGE_ENABLED
src_or_tor_cov_SOURCES = src/or/tor_main.c
@@ -129,14 +138,17 @@ src_or_tor_cov_LDADD = src/or/libtor-testing.a src/common/libor-testing.a \
src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \
src/common/libor-event-testing.a src/trunnel/libor-trunnel-testing.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
+ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@
endif
ORHEADERS = \
src/or/addressmap.h \
+ src/or/auth_dirs.inc \
src/or/bridges.h \
src/or/buffers.h \
src/or/channel.h \
+ src/or/channelpadding.h \
src/or/channeltls.h \
src/or/circpathbias.h \
src/or/circuitbuild.h \
@@ -151,6 +163,9 @@ ORHEADERS = \
src/or/connection.h \
src/or/connection_edge.h \
src/or/connection_or.h \
+ src/or/conscache.h \
+ src/or/consdiff.h \
+ src/or/consdiffmgr.h \
src/or/control.h \
src/or/cpuworker.h \
src/or/dircollate.h \
@@ -160,6 +175,7 @@ ORHEADERS = \
src/or/dns.h \
src/or/dns_structs.h \
src/or/dnsserv.h \
+ src/or/dos.h \
src/or/ext_orport.h \
src/or/fallback_dirs.inc \
src/or/fp_pair.h \
@@ -171,6 +187,7 @@ ORHEADERS = \
src/or/hs_descriptor.h \
src/or/hs_intropoint.h \
src/or/hs_circuitmap.h \
+ src/or/hs_ntor.h \
src/or/hs_service.h \
src/or/keypin.h \
src/or/main.h \
diff --git a/src/or/keypin.c b/src/or/keypin.c
index 2d4c4e92d2..1698dc184f 100644
--- a/src/or/keypin.c
+++ b/src/or/keypin.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/keypin.h b/src/or/keypin.h
index 673f24d9e3..2564f5befb 100644
--- a/src/or/keypin.h
+++ b/src/or/keypin.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_KEYPIN_H
diff --git a/src/or/main.c b/src/or/main.c
index 1d899349ef..e9723cb0b7 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -54,15 +54,19 @@
#include "buffers.h"
#include "channel.h"
#include "channeltls.h"
+#include "channelpadding.h"
#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuituse.h"
#include "command.h"
+#include "compat_rust.h"
+#include "compress.h"
#include "config.h"
#include "confparse.h"
#include "connection.h"
#include "connection_edge.h"
#include "connection_or.h"
+#include "consdiffmgr.h"
#include "control.h"
#include "cpuworker.h"
#include "crypto_s2k.h"
@@ -71,6 +75,7 @@
#include "dirvote.h"
#include "dns.h"
#include "dnsserv.h"
+#include "dos.h"
#include "entrynodes.h"
#include "geoip.h"
#include "hibernate.h"
@@ -104,7 +109,6 @@
#include "ext_orport.h"
#ifdef USE_DMALLOC
#include <dmalloc.h>
-#include <openssl/crypto.h>
#endif
#include "memarea.h"
#include "sandbox.h"
@@ -176,7 +180,7 @@ static int signewnym_is_pending = 0;
static unsigned newnym_epoch = 0;
/** Smartlist of all open connections. */
-static smartlist_t *connection_array = NULL;
+STATIC smartlist_t *connection_array = NULL;
/** List of connections that have been marked for close and need to be freed
* and removed from connection_array. */
static smartlist_t *closeable_connection_lst = NULL;
@@ -1095,8 +1099,9 @@ run_connection_housekeeping(int i, time_t now)
} else if (!have_any_circuits &&
now - or_conn->idle_timeout >=
chan->timestamp_last_had_circuits) {
- log_info(LD_OR,"Expiring non-used OR connection to fd %d (%s:%d) "
- "[no circuits for %d; timeout %d; %scanonical].",
+ log_info(LD_OR,"Expiring non-used OR connection "U64_FORMAT" to fd %d "
+ "(%s:%d) [no circuits for %d; timeout %d; %scanonical].",
+ U64_PRINTF_ARG(chan->global_identifier),
(int)conn->s, conn->address, conn->port,
(int)(now - chan->timestamp_last_had_circuits),
or_conn->idle_timeout,
@@ -1119,6 +1124,8 @@ run_connection_housekeeping(int i, time_t now)
memset(&cell,0,sizeof(cell_t));
cell.command = CELL_PADDING;
connection_or_write_cell_to_buf(&cell, or_conn);
+ } else {
+ channelpadding_decide_to_pad_channel(chan);
}
}
@@ -1161,6 +1168,7 @@ static int periodic_events_initialized = 0;
#define CALLBACK(name) \
static int name ## _callback(time_t, const or_options_t *)
CALLBACK(rotate_onion_key);
+CALLBACK(check_onion_keys_expiry_time);
CALLBACK(check_ed_keys);
CALLBACK(launch_descriptor_fetches);
CALLBACK(rotate_x509_certificate);
@@ -1184,6 +1192,9 @@ CALLBACK(check_dns_honesty);
CALLBACK(write_bridge_ns);
CALLBACK(check_fw_helper_app);
CALLBACK(heartbeat);
+CALLBACK(clean_consdiffmgr);
+CALLBACK(reset_padding_counts);
+CALLBACK(check_canonical_channels);
#undef CALLBACK
@@ -1192,6 +1203,7 @@ CALLBACK(heartbeat);
static periodic_event_item_t periodic_events[] = {
CALLBACK(rotate_onion_key),
+ CALLBACK(check_onion_keys_expiry_time),
CALLBACK(check_ed_keys),
CALLBACK(launch_descriptor_fetches),
CALLBACK(rotate_x509_certificate),
@@ -1215,6 +1227,9 @@ static periodic_event_item_t periodic_events[] = {
CALLBACK(write_bridge_ns),
CALLBACK(check_fw_helper_app),
CALLBACK(heartbeat),
+ CALLBACK(clean_consdiffmgr),
+ CALLBACK(reset_padding_counts),
+ CALLBACK(check_canonical_channels),
END_OF_PERIODIC_EVENTS
};
#undef CALLBACK
@@ -1470,19 +1485,26 @@ run_scheduled_events(time_t now)
/* 11b. check pending unconfigured managed proxies */
if (!net_is_disabled() && pt_proxies_configuration_pending())
pt_configure_remaining_proxies();
+
+ /* 12. launch diff computations. (This is free if there are none to
+ * launch.) */
+ if (dir_server_mode(options)) {
+ consdiffmgr_rescan();
+ }
}
-/* Periodic callback: Every MIN_ONION_KEY_LIFETIME seconds, rotate the onion
- * keys, shut down and restart all cpuworkers, and update our descriptor if
- * necessary.
+/* Periodic callback: rotate the onion keys after the period defined by the
+ * "onion-key-rotation-days" consensus parameter, shut down and restart all
+ * cpuworkers, and update our descriptor if necessary.
*/
static int
rotate_onion_key_callback(time_t now, const or_options_t *options)
{
if (server_mode(options)) {
- time_t rotation_time = get_onion_key_set_at()+MIN_ONION_KEY_LIFETIME;
+ int onion_key_lifetime = get_onion_key_lifetime();
+ time_t rotation_time = get_onion_key_set_at()+onion_key_lifetime;
if (rotation_time > now) {
- return safe_timer_diff(now, rotation_time);
+ return ONION_KEY_CONSENSUS_CHECK_INTERVAL;
}
log_info(LD_GENERAL,"Rotating onion key.");
@@ -1493,11 +1515,35 @@ rotate_onion_key_callback(time_t now, const or_options_t *options)
}
if (advertised_server_mode() && !options->DisableNetwork)
router_upload_dir_desc_to_dirservers(0);
- return MIN_ONION_KEY_LIFETIME;
+ return ONION_KEY_CONSENSUS_CHECK_INTERVAL;
}
return PERIODIC_EVENT_NO_UPDATE;
}
+/* Period callback: Check if our old onion keys are still valid after the
+ * period of time defined by the consensus parameter
+ * "onion-key-grace-period-days", otherwise expire them by setting them to
+ * NULL.
+ */
+static int
+check_onion_keys_expiry_time_callback(time_t now, const or_options_t *options)
+{
+ if (server_mode(options)) {
+ int onion_key_grace_period = get_onion_key_grace_period();
+ time_t expiry_time = get_onion_key_set_at()+onion_key_grace_period;
+ if (expiry_time > now) {
+ return ONION_KEY_CONSENSUS_CHECK_INTERVAL;
+ }
+
+ log_info(LD_GENERAL, "Expiring old onion keys.");
+ expire_old_onion_keys();
+ cpuworkers_rotate_keyinfo();
+ return ONION_KEY_CONSENSUS_CHECK_INTERVAL;
+ }
+
+ return PERIODIC_EVENT_NO_UPDATE;
+}
+
/* Periodic callback: Every 30 seconds, check whether it's time to make new
* Ed25519 subkeys.
*/
@@ -1511,7 +1557,7 @@ check_ed_keys_callback(time_t now, const or_options_t *options)
generate_ed_link_cert(options, now, new_signing_key > 0)) {
log_err(LD_OR, "Unable to update Ed25519 keys! Exiting.");
tor_cleanup();
- exit(0);
+ exit(1);
}
}
return 30;
@@ -1726,6 +1772,28 @@ write_stats_file_callback(time_t now, const or_options_t *options)
return safe_timer_diff(now, next_time_to_write_stats_files);
}
+#define CHANNEL_CHECK_INTERVAL (60*60)
+static int
+check_canonical_channels_callback(time_t now, const or_options_t *options)
+{
+ (void)now;
+ if (public_server_mode(options))
+ channel_check_for_duplicates();
+
+ return CHANNEL_CHECK_INTERVAL;
+}
+
+static int
+reset_padding_counts_callback(time_t now, const or_options_t *options)
+{
+ if (options->PaddingStatistics) {
+ rep_hist_prep_published_padding_counts(now);
+ }
+
+ rep_hist_reset_padding_counts();
+ return REPHIST_CELL_PADDING_COUNTS_INTERVAL;
+}
+
/**
* Periodic callback: Write bridge statistics to disk if appropriate.
*/
@@ -2014,6 +2082,17 @@ heartbeat_callback(time_t now, const or_options_t *options)
return options->HeartbeatPeriod;
}
+#define CDM_CLEAN_CALLBACK_INTERVAL 600
+static int
+clean_consdiffmgr_callback(time_t now, const or_options_t *options)
+{
+ (void)now;
+ if (server_mode(options)) {
+ consdiffmgr_cleanup();
+ }
+ return CDM_CLEAN_CALLBACK_INTERVAL;
+}
+
/** Timer: used to invoke second_elapsed_callback() once per second. */
static periodic_timer_t *second_timer = NULL;
/** Number of libevent errors in the last second: we die if we get too many. */
@@ -2343,6 +2422,8 @@ do_main_loop(void)
}
handle_signals(1);
+ monotime_init();
+ timers_initialize();
/* load the private keys, if we're supposed to have them, and set up the
* TLS context. */
@@ -2406,13 +2487,14 @@ do_main_loop(void)
now = time(NULL);
directory_info_has_arrived(now, 1, 0);
- if (server_mode(get_options())) {
+ if (server_mode(get_options()) || dir_server_mode(get_options())) {
/* launch cpuworkers. Need to do this *after* we've read the onion key. */
cpu_init();
}
+ consdiffmgr_enable_background_compression();
/* Setup shared random protocol subsystem. */
- if (authdir_mode_publishes_statuses(get_options())) {
+ if (authdir_mode_v3(get_options())) {
if (sr_init(1) < 0) {
return -1;
}
@@ -2980,11 +3062,16 @@ tor_init(int argc, char *argv[])
const char *version = get_version();
log_notice(LD_GENERAL, "Tor %s running on %s with Libevent %s, "
- "OpenSSL %s and Zlib %s.", version,
+ "OpenSSL %s, Zlib %s, Liblzma %s, and Libzstd %s.", version,
get_uname(),
tor_libevent_get_version_str(),
crypto_openssl_get_version_str(),
- tor_zlib_get_version_str());
+ tor_compress_supports_method(ZLIB_METHOD) ?
+ tor_compress_version_str(ZLIB_METHOD) : "N/A",
+ tor_compress_supports_method(LZMA_METHOD) ?
+ tor_compress_version_str(LZMA_METHOD) : "N/A",
+ tor_compress_supports_method(ZSTD_METHOD) ?
+ tor_compress_version_str(ZSTD_METHOD) : "N/A");
log_notice(LD_GENERAL, "Tor can't help you if you use it wrong! "
"Learn how to be safe at "
@@ -2995,6 +3082,15 @@ tor_init(int argc, char *argv[])
"Expect more bugs than usual.");
}
+ {
+ rust_str_t rust_str = rust_welcome_string();
+ const char *s = rust_str_get(rust_str);
+ if (strlen(s) > 0) {
+ log_notice(LD_GENERAL, "%s", s);
+ }
+ rust_str_free(rust_str);
+ }
+
if (network_init()<0) {
log_err(LD_BUG,"Error initializing network; exiting.");
return -1;
@@ -3009,6 +3105,13 @@ tor_init(int argc, char *argv[])
/* The options are now initialised */
const or_options_t *options = get_options();
+ /* Initialize channelpadding parameters to defaults until we get
+ * a consensus */
+ channelpadding_new_consensus_params(NULL);
+
+ /* Initialize predicted ports list after loading options */
+ predicted_ports_init();
+
#ifndef _WIN32
if (geteuid()==0)
log_warn(LD_GENERAL,"You are running Tor as root. You don't need to, "
@@ -3066,7 +3169,7 @@ try_locking(const or_options_t *options, int err_if_locked)
r = try_locking(options, 0);
if (r<0) {
log_err(LD_GENERAL, "No, it's still there. Exiting.");
- exit(0);
+ exit(1);
}
return r;
}
@@ -3138,6 +3241,8 @@ tor_free_all(int postfork)
sandbox_free_getaddrinfo_cache();
protover_free_all();
bridges_free_all();
+ consdiffmgr_free_all();
+ dos_free_all();
if (!postfork) {
config_free_all();
or_state_free_all();
@@ -3167,6 +3272,7 @@ tor_free_all(int postfork)
if (!postfork) {
escaped(NULL);
esc_router_info(NULL);
+ clean_up_backtrace_handler();
logs_free_all(); /* free log strings. do this last so logs keep working. */
}
}
@@ -3204,6 +3310,9 @@ tor_cleanup(void)
rep_hist_record_mtbf_data(now, 0);
keypin_close_journal();
}
+
+ timers_shutdown();
+
#ifdef USE_DMALLOC
dmalloc_log_stats();
#endif
@@ -3559,6 +3668,8 @@ sandbox_init_filter(void)
OPEN_DATADIR("stats");
STAT_DATADIR("stats");
STAT_DATADIR2("stats", "dirreq-stats");
+
+ consdiffmgr_register_with_sandbox(&cfg);
}
init_addrinfo();
@@ -3599,14 +3710,15 @@ tor_main(int argc, char *argv[])
update_approx_time(time(NULL));
tor_threads_init();
+ tor_compress_init();
init_logging(0);
monotime_init();
#ifdef USE_DMALLOC
{
/* Instruct OpenSSL to use our internal wrappers for malloc,
realloc and free. */
- int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
- tor_assert(r);
+ int r = crypto_use_tor_alloc_functions();
+ tor_assert(r == 0);
}
#endif
#ifdef NT_SERVICE
diff --git a/src/or/main.h b/src/or/main.h
index 07b22598b1..57aa372750 100644
--- a/src/or/main.h
+++ b/src/or/main.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -92,6 +92,9 @@ STATIC void init_connection_lists(void);
STATIC void close_closeable_connections(void);
STATIC void initialize_periodic_events(void);
STATIC void teardown_periodic_events(void);
+#ifdef TOR_UNIT_TESTS
+extern smartlist_t *connection_array;
+#endif
#endif
#endif
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index 140117f683..32242d0054 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2016, The Tor Project, Inc. */
+/* Copyright (c) 2009-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -74,6 +74,102 @@ HT_GENERATE2(microdesc_map, microdesc_t, node,
microdesc_hash_, microdesc_eq_, 0.6,
tor_reallocarray_, tor_free_)
+/************************* md fetch fail cache *****************************/
+
+/* If we end up with too many outdated dirservers, something probably went
+ * wrong so clean up the list. */
+#define TOO_MANY_OUTDATED_DIRSERVERS 30
+
+/** List of dirservers with outdated microdesc information. The smartlist is
+ * filled with the hex digests of outdated dirservers. */
+static smartlist_t *outdated_dirserver_list = NULL;
+
+/** Note that we failed to fetch a microdescriptor from the relay with
+ * <b>relay_digest</b> (of size DIGEST_LEN). */
+void
+microdesc_note_outdated_dirserver(const char *relay_digest)
+{
+ char relay_hexdigest[HEX_DIGEST_LEN+1];
+
+ /* Don't register outdated dirservers if we don't have a live consensus,
+ * since we might be trying to fetch microdescriptors that are not even
+ * currently active. */
+ if (!networkstatus_get_live_consensus(approx_time())) {
+ return;
+ }
+
+ if (!outdated_dirserver_list) {
+ outdated_dirserver_list = smartlist_new();
+ }
+
+ tor_assert(outdated_dirserver_list);
+
+ /* If the list grows too big, clean it up */
+ if (BUG(smartlist_len(outdated_dirserver_list) >
+ TOO_MANY_OUTDATED_DIRSERVERS)) {
+ microdesc_reset_outdated_dirservers_list();
+ }
+
+ /* Turn the binary relay digest to a hex since smartlists have better support
+ * for strings than digests. */
+ base16_encode(relay_hexdigest,sizeof(relay_hexdigest),
+ relay_digest, DIGEST_LEN);
+
+ /* Make sure we don't add a dirauth as an outdated dirserver */
+ if (router_get_trusteddirserver_by_digest(relay_digest)) {
+ log_info(LD_GENERAL, "Auth %s gave us outdated dirinfo.", relay_hexdigest);
+ return;
+ }
+
+ /* Don't double-add outdated dirservers */
+ if (smartlist_contains_string(outdated_dirserver_list, relay_hexdigest)) {
+ return;
+ }
+
+ /* Add it to the list of outdated dirservers */
+ smartlist_add_strdup(outdated_dirserver_list, relay_hexdigest);
+
+ log_info(LD_GENERAL, "Noted %s as outdated md dirserver", relay_hexdigest);
+}
+
+/** Return True if the relay with <b>relay_digest</b> (size DIGEST_LEN) is an
+ * outdated dirserver */
+int
+microdesc_relay_is_outdated_dirserver(const char *relay_digest)
+{
+ char relay_hexdigest[HEX_DIGEST_LEN+1];
+
+ if (!outdated_dirserver_list) {
+ return 0;
+ }
+
+ /* Convert identity digest to hex digest */
+ base16_encode(relay_hexdigest, sizeof(relay_hexdigest),
+ relay_digest, DIGEST_LEN);
+
+ /* Last time we tried to fetch microdescs, was this directory mirror missing
+ * any mds we asked for? */
+ if (smartlist_contains_string(outdated_dirserver_list, relay_hexdigest)) {
+ return 1;
+ }
+
+ return 0;
+}
+
+/** Reset the list of outdated dirservers. */
+void
+microdesc_reset_outdated_dirservers_list(void)
+{
+ if (!outdated_dirserver_list) {
+ return;
+ }
+
+ SMARTLIST_FOREACH(outdated_dirserver_list, char *, cp, tor_free(cp));
+ smartlist_clear(outdated_dirserver_list);
+}
+
+/****************************************************************************/
+
/** Write the body of <b>md</b> into <b>f</b>, with appropriate annotations.
* On success, return the total number of bytes written, and set
* *<b>annotation_len_out</b> to the number of bytes written as
@@ -789,6 +885,11 @@ microdesc_free_all(void)
tor_free(the_microdesc_cache->journal_fname);
tor_free(the_microdesc_cache);
}
+
+ if (outdated_dirserver_list) {
+ SMARTLIST_FOREACH(outdated_dirserver_list, char *, cp, tor_free(cp));
+ smartlist_free(outdated_dirserver_list);
+ }
}
/** If there is a microdescriptor in <b>cache</b> whose sha256 digest is
@@ -804,18 +905,6 @@ microdesc_cache_lookup_by_digest256(microdesc_cache_t *cache, const char *d)
return md;
}
-/** Return the mean size of decriptors added to <b>cache</b> since it was last
- * cleared. Used to estimate the size of large downloads. */
-size_t
-microdesc_average_size(microdesc_cache_t *cache)
-{
- if (!cache)
- cache = get_microdesc_cache();
- if (!cache->n_seen)
- return 512;
- return (size_t)(cache->total_len_seen / cache->n_seen);
-}
-
/** Return a smartlist of all the sha256 digest of the microdescriptors that
* are listed in <b>ns</b> but not present in <b>cache</b>. Returns pointers
* to internals of <b>ns</b>; you should not free the members of the resulting
diff --git a/src/or/microdesc.h b/src/or/microdesc.h
index 40c83139e9..1be12156a4 100644
--- a/src/or/microdesc.h
+++ b/src/or/microdesc.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,8 +32,6 @@ void microdesc_cache_clear(microdesc_cache_t *cache);
microdesc_t *microdesc_cache_lookup_by_digest256(microdesc_cache_t *cache,
const char *d);
-size_t microdesc_average_size(microdesc_cache_t *cache);
-
smartlist_t *microdesc_list_missing_digest256(networkstatus_t *ns,
microdesc_cache_t *cache,
int downloadable_only,
@@ -52,5 +50,9 @@ int we_fetch_microdescriptors(const or_options_t *options);
int we_fetch_router_descriptors(const or_options_t *options);
int we_use_microdescriptors_for_circuits(const or_options_t *options);
-#endif
+void microdesc_note_outdated_dirserver(const char *relay_digest);
+int microdesc_relay_is_outdated_dirserver(const char *relay_digest);
+void microdesc_reset_outdated_dirservers_list(void);
+
+#endif /* !defined(TOR_MICRODESC_H) */
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 1fd0772f3e..fdaa469faf 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -46,10 +46,12 @@
#include "config.h"
#include "connection.h"
#include "connection_or.h"
+#include "consdiffmgr.h"
#include "control.h"
#include "directory.h"
#include "dirserv.h"
#include "dirvote.h"
+#include "dos.h"
#include "entrynodes.h"
#include "main.h"
#include "microdesc.h"
@@ -63,6 +65,7 @@
#include "shared_random.h"
#include "transports.h"
#include "torcert.h"
+#include "channelpadding.h"
/** Map from lowercase nickname to identity digest of named server, if any. */
static strmap_t *named_server_map = NULL;
@@ -72,11 +75,11 @@ static strmap_t *unnamed_server_map = NULL;
/** Most recently received and validated v3 "ns"-flavored consensus network
* status. */
-static networkstatus_t *current_ns_consensus = NULL;
+STATIC networkstatus_t *current_ns_consensus = NULL;
/** Most recently received and validated v3 "microdec"-flavored consensus
* network status. */
-static networkstatus_t *current_md_consensus = NULL;
+STATIC networkstatus_t *current_md_consensus = NULL;
/** A v3 consensus networkstatus that we've received, but which we don't
* have enough certificates to be happy about. */
@@ -178,53 +181,74 @@ networkstatus_reset_download_failures(void)
download_status_reset(&consensus_bootstrap_dl_status[i]);
}
+/**
+ * Read and and return the cached consensus of type <b>flavorname</b>. If
+ * <b>unverified</b> is false, get the one we haven't verified. Return NULL if
+ * the file isn't there. */
+static char *
+networkstatus_read_cached_consensus_impl(int flav,
+ const char *flavorname,
+ int unverified_consensus)
+{
+ char buf[128];
+ const char *prefix;
+ if (unverified_consensus) {
+ prefix = "unverified";
+ } else {
+ prefix = "cached";
+ }
+ if (flav == FLAV_NS) {
+ tor_snprintf(buf, sizeof(buf), "%s-consensus", prefix);
+ } else {
+ tor_snprintf(buf, sizeof(buf), "%s-%s-consensus", prefix, flavorname);
+ }
+
+ char *filename = get_datadir_fname(buf);
+ char *result = read_file_to_str(filename, RFTS_IGNORE_MISSING, NULL);
+ tor_free(filename);
+ return result;
+}
+
+/** Return a new string containing the current cached consensus of flavor
+ * <b>flavorname</b>. */
+char *
+networkstatus_read_cached_consensus(const char *flavorname)
+ {
+ int flav = networkstatus_parse_flavor_name(flavorname);
+ if (flav < 0)
+ return NULL;
+ return networkstatus_read_cached_consensus_impl(flav, flavorname, 0);
+}
+
/** Read every cached v3 consensus networkstatus from the disk. */
int
router_reload_consensus_networkstatus(void)
{
- char *filename;
- char *s;
const unsigned int flags = NSSET_FROM_CACHE | NSSET_DONT_DOWNLOAD_CERTS;
int flav;
/* FFFF Suppress warnings if cached consensus is bad? */
for (flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
- char buf[128];
const char *flavor = networkstatus_get_flavor_name(flav);
- if (flav == FLAV_NS) {
- filename = get_datadir_fname("cached-consensus");
- } else {
- tor_snprintf(buf, sizeof(buf), "cached-%s-consensus", flavor);
- filename = get_datadir_fname(buf);
- }
- s = read_file_to_str(filename, RFTS_IGNORE_MISSING, NULL);
+ char *s = networkstatus_read_cached_consensus_impl(flav, flavor, 0);
if (s) {
if (networkstatus_set_current_consensus(s, flavor, flags, NULL) < -1) {
- log_warn(LD_FS, "Couldn't load consensus %s networkstatus from \"%s\"",
- flavor, filename);
+ log_warn(LD_FS, "Couldn't load consensus %s networkstatus from cache",
+ flavor);
}
tor_free(s);
}
- tor_free(filename);
- if (flav == FLAV_NS) {
- filename = get_datadir_fname("unverified-consensus");
- } else {
- tor_snprintf(buf, sizeof(buf), "unverified-%s-consensus", flavor);
- filename = get_datadir_fname(buf);
- }
-
- s = read_file_to_str(filename, RFTS_IGNORE_MISSING, NULL);
+ s = networkstatus_read_cached_consensus_impl(flav, flavor, 1);
if (s) {
if (networkstatus_set_current_consensus(s, flavor,
flags|NSSET_WAS_WAITING_FOR_CERTS,
NULL)) {
- log_info(LD_FS, "Couldn't load consensus %s networkstatus from \"%s\"",
- flavor, filename);
- }
+ log_info(LD_FS, "Couldn't load unverified consensus %s networkstatus "
+ "from cache", flavor);
+ }
tor_free(s);
}
- tor_free(filename);
}
if (!networkstatus_get_latest_consensus()) {
@@ -1384,16 +1408,24 @@ networkstatus_get_live_consensus,(time_t now))
* Return 1 if the consensus is reasonably live, or 0 if it is too old.
*/
int
-networkstatus_consensus_reasonably_live(networkstatus_t *consensus, time_t now)
+networkstatus_consensus_reasonably_live(const networkstatus_t *consensus,
+ time_t now)
{
-#define REASONABLY_LIVE_TIME (24*60*60)
if (BUG(!consensus))
return 0;
- if (now <= consensus->valid_until + REASONABLY_LIVE_TIME)
- return 1;
+ return networkstatus_valid_until_is_reasonably_live(consensus->valid_until,
+ now);
+}
- return 0;
+/** As networkstatus_consensus_reasonably_live, but takes a valid_until
+ * time rather than an entire consensus. */
+int
+networkstatus_valid_until_is_reasonably_live(time_t valid_until,
+ time_t now)
+{
+#define REASONABLY_LIVE_TIME (24*60*60)
+ return (now <= valid_until + REASONABLY_LIVE_TIME);
}
/* XXXX remove this in favor of get_live_consensus. But actually,
@@ -1572,6 +1604,15 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c,
smartlist_free(changed);
}
+/* Called when the consensus has changed from old_c to new_c. */
+static void
+notify_networkstatus_changed(const networkstatus_t *old_c,
+ const networkstatus_t *new_c)
+{
+ notify_control_networkstatus_changed(old_c, new_c);
+ dos_consensus_has_changed(new_c);
+}
+
/** Copy all the ancillary information (like router download status and so on)
* from <b>old_c</b> to <b>new_c</b>. */
static void
@@ -1644,7 +1685,6 @@ any_client_port_set(const or_options_t *options)
return (options->SocksPort_set ||
options->TransPort_set ||
options->NATDPort_set ||
- options->ControlPort_set ||
options->DNSPort_set);
}
@@ -1896,8 +1936,7 @@ networkstatus_set_current_consensus(const char *consensus,
const int is_usable_flavor = flav == usable_consensus_flavor();
if (is_usable_flavor) {
- notify_control_networkstatus_changed(
- networkstatus_get_latest_consensus(), c);
+ notify_networkstatus_changed(networkstatus_get_latest_consensus(), c);
}
if (flav == FLAV_NS) {
if (current_ns_consensus) {
@@ -1966,6 +2005,7 @@ networkstatus_set_current_consensus(const char *consensus,
circuit_build_times_new_consensus_params(
get_circuit_build_times_mutable(), c);
+ channelpadding_new_consensus_params(c);
}
/* Reset the failure count only if this consensus is actually valid. */
@@ -1980,7 +2020,11 @@ networkstatus_set_current_consensus(const char *consensus,
dirserv_set_cached_consensus_networkstatus(consensus,
flavor,
&c->digests,
+ c->digest_sha3_as_signed,
c->valid_after);
+ if (dir_server_mode(get_options())) {
+ consdiffmgr_add_consensus(consensus, c);
+ }
}
if (!from_cache) {
@@ -2005,6 +2049,9 @@ networkstatus_set_current_consensus(const char *consensus,
"CLOCK_SKEW MIN_SKEW=%ld SOURCE=CONSENSUS", delta);
}
+ /* We got a new consesus. Reset our md fetch fail cache */
+ microdesc_reset_outdated_dirservers_list();
+
router_dir_info_changed();
result = 0;
@@ -2272,13 +2319,23 @@ networkstatus_dump_bridge_status_to_file(time_t now)
char *thresholds = NULL;
char *published_thresholds_and_status = NULL;
char published[ISO_TIME_LEN+1];
+ const routerinfo_t *me = router_get_my_routerinfo();
+ char fingerprint[FINGERPRINT_LEN+1];
+ char *fingerprint_line = NULL;
+ if (me && crypto_pk_get_fingerprint(me->identity_pkey,
+ fingerprint, 0) >= 0) {
+ tor_asprintf(&fingerprint_line, "fingerprint %s\n", fingerprint);
+ } else {
+ log_warn(LD_BUG, "Error computing fingerprint for bridge status.");
+ }
format_iso_time(published, now);
dirserv_compute_bridge_flag_thresholds();
thresholds = dirserv_get_flag_thresholds_line();
tor_asprintf(&published_thresholds_and_status,
- "published %s\nflag-thresholds %s\n%s",
- published, thresholds, status);
+ "published %s\nflag-thresholds %s\n%s%s",
+ published, thresholds, fingerprint_line ? fingerprint_line : "",
+ status);
tor_asprintf(&fname, "%s"PATH_SEPARATOR"networkstatus-bridges",
options->DataDirectory);
write_str_to_file(fname,published_thresholds_and_status,0);
@@ -2286,6 +2343,7 @@ networkstatus_dump_bridge_status_to_file(time_t now)
tor_free(published_thresholds_and_status);
tor_free(fname);
tor_free(status);
+ tor_free(fingerprint_line);
}
/* DOCDOC get_net_param_from_list */
@@ -2441,10 +2499,8 @@ networkstatus_parse_flavor_name(const char *flavname)
* running, or otherwise not a descriptor that we would make any
* use of even if we had it. Else return 1. */
int
-client_would_use_router(const routerstatus_t *rs, time_t now,
- const or_options_t *options)
+client_would_use_router(const routerstatus_t *rs, time_t now)
{
- (void) options; /* unused */
if (!rs->is_flagged_running) {
/* If we had this router descriptor, we wouldn't even bother using it.
* (Fetching and storing depends on by we_want_to_fetch_flavor().) */
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
index 66cd84c88e..e774c4d266 100644
--- a/src/or/networkstatus.h
+++ b/src/or/networkstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -16,6 +16,7 @@
void networkstatus_reset_warnings(void);
void networkstatus_reset_download_failures(void);
+char *networkstatus_read_cached_consensus(const char *flavorname);
int router_reload_consensus_networkstatus(void);
void routerstatus_free(routerstatus_t *rs);
void networkstatus_vote_free(networkstatus_t *ns);
@@ -75,14 +76,15 @@ int should_delay_dir_fetches(const or_options_t *options,const char **msg_out);
void update_networkstatus_downloads(time_t now);
void update_certificate_downloads(time_t now);
int consensus_is_waiting_for_certs(void);
-int client_would_use_router(const routerstatus_t *rs, time_t now,
- const or_options_t *options);
+int client_would_use_router(const routerstatus_t *rs, time_t now);
MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus,(void));
MOCK_DECL(networkstatus_t *,networkstatus_get_latest_consensus_by_flavor,
(consensus_flavor_t f));
MOCK_DECL(networkstatus_t *, networkstatus_get_live_consensus,(time_t now));
-int networkstatus_consensus_reasonably_live(networkstatus_t *consensus,
+int networkstatus_consensus_reasonably_live(const networkstatus_t *consensus,
time_t now);
+int networkstatus_valid_until_is_reasonably_live(time_t valid_until,
+ time_t now);
networkstatus_t *networkstatus_get_reasonably_live_consensus(time_t now,
int flavor);
MOCK_DECL(int, networkstatus_consensus_is_bootstrapping,(time_t now));
@@ -138,7 +140,9 @@ void vote_routerstatus_free(vote_routerstatus_t *rs);
#ifdef TOR_UNIT_TESTS
STATIC int networkstatus_set_current_consensus_from_ns(networkstatus_t *c,
const char *flavor);
-#endif // TOR_UNIT_TESTS
+extern networkstatus_t *current_ns_consensus;
+extern networkstatus_t *current_md_consensus;
+#endif
#endif
#endif
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 938b791102..aaec39f7b8 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -40,6 +40,7 @@
#include "or.h"
#include "address.h"
+#include "address_set.h"
#include "config.h"
#include "control.h"
#include "dirserv.h"
@@ -74,13 +75,13 @@ static void count_usable_descriptors(int *num_present,
int *num_usable,
smartlist_t *descs_out,
const networkstatus_t *consensus,
- const or_options_t *options,
time_t now,
routerset_t *in_set,
usable_descriptor_t exit_only);
static void update_router_have_minimum_dir_info(void);
static double get_frac_paths_needed_for_circs(const or_options_t *options,
const networkstatus_t *ns);
+static void node_add_to_address_set(const node_t *node);
/** A nodelist_t holds a node_t object for every router we're "willing to use
* for something". Specifically, it should hold a node_t for every node that
@@ -92,6 +93,8 @@ typedef struct nodelist_t {
/* Hash table to map from node ID digest to node. */
HT_HEAD(nodelist_map, node_t) nodes_by_id;
+ /* Set of addresses that belong to nodes we believe in. */
+ address_set_t *node_addrs;
} nodelist_t;
static inline unsigned int
@@ -179,6 +182,50 @@ node_addrs_changed(node_t *node)
node->country = -1;
}
+/** Add all address information about <b>node</b> to the current address
+ * set (if there is one).
+ */
+static void
+node_add_to_address_set(const node_t *node)
+{
+ if (!the_nodelist || !the_nodelist->node_addrs)
+ return;
+
+ /* These various address sources can be redundant, but it's likely faster
+ * to add them all than to compare them all for equality. */
+
+ if (node->rs) {
+ if (node->rs->addr)
+ address_set_add_ipv4h(the_nodelist->node_addrs, node->rs->addr);
+ if (!tor_addr_is_null(&node->rs->ipv6_addr))
+ address_set_add(the_nodelist->node_addrs, &node->rs->ipv6_addr);
+ }
+ if (node->ri) {
+ if (node->ri->addr)
+ address_set_add_ipv4h(the_nodelist->node_addrs, node->ri->addr);
+ if (!tor_addr_is_null(&node->ri->ipv6_addr))
+ address_set_add(the_nodelist->node_addrs, &node->ri->ipv6_addr);
+ }
+ if (node->md) {
+ if (!tor_addr_is_null(&node->md->ipv6_addr))
+ address_set_add(the_nodelist->node_addrs, &node->md->ipv6_addr);
+ }
+}
+
+/** Return true if <b>addr</b> is the address of some node in the nodelist.
+ * If not, probably return false. */
+int
+nodelist_probably_contains_address(const tor_addr_t *addr)
+{
+ if (BUG(!addr))
+ return 0;
+
+ if (!the_nodelist || !the_nodelist->node_addrs)
+ return 0;
+
+ return address_set_probably_contains(the_nodelist->node_addrs, addr);
+}
+
/** Add <b>ri</b> to an appropriate node in the nodelist. If we replace an
* old routerinfo, and <b>ri_old_out</b> is not NULL, set *<b>ri_old_out</b>
* to the previous routerinfo.
@@ -217,6 +264,8 @@ nodelist_set_routerinfo(routerinfo_t *ri, routerinfo_t **ri_old_out)
dirserv_set_node_flags_from_authoritative_status(node, status);
}
+ node_add_to_address_set(node);
+
return node;
}
@@ -242,15 +291,28 @@ nodelist_add_microdesc(microdesc_t *md)
if (rs == NULL)
return NULL;
node = node_get_mutable_by_id(rs->identity_digest);
- if (node) {
- if (node->md)
- node->md->held_by_nodes--;
- node->md = md;
- md->held_by_nodes++;
- }
+ if (node == NULL)
+ return NULL;
+ if (node->md)
+ node->md->held_by_nodes--;
+ node->md = md;
+ md->held_by_nodes++;
+ node_add_to_address_set(node);
+
return node;
}
+/* Default value. */
+#define ESTIMATED_ADDRESS_PER_NODE 2
+
+/* Return the estimated number of address per node_t. This is used for the
+ * size of the bloom filter in the nodelist (node_addrs). */
+MOCK_IMPL(int,
+get_estimated_address_per_node, (void))
+{
+ return ESTIMATED_ADDRESS_PER_NODE;
+}
+
/** Tell the nodelist that the current usable consensus is <b>ns</b>.
* This makes the nodelist change all of the routerstatus entries for
* the nodes, drop nodes that no longer have enough info to get used,
@@ -269,6 +331,12 @@ nodelist_set_consensus(networkstatus_t *ns)
SMARTLIST_FOREACH(the_nodelist->nodes, node_t *, node,
node->rs = NULL);
+ /* Conservatively estimate that every node will have 2 addresses. */
+ const int estimated_addresses = smartlist_len(ns->routerstatus_list) *
+ get_estimated_address_per_node();
+ address_set_free(the_nodelist->node_addrs);
+ the_nodelist->node_addrs = address_set_new(estimated_addresses);
+
SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) {
node_t *node = node_get_or_create(rs->identity_digest);
node->rs = rs;
@@ -307,6 +375,11 @@ nodelist_set_consensus(networkstatus_t *ns)
nodelist_purge();
+ /* Now add all the nodes we have to the address set. */
+ SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
+ node_add_to_address_set(node);
+ } SMARTLIST_FOREACH_END(node);
+
if (! authdir) {
SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) {
/* We have no routerstatus for this router. Clear flags so we can skip
@@ -459,6 +532,9 @@ nodelist_free_all(void)
smartlist_free(the_nodelist->nodes);
+ address_set_free(the_nodelist->node_addrs);
+ the_nodelist->node_addrs = NULL;
+
tor_free(the_nodelist);
}
@@ -1011,16 +1087,6 @@ node_get_platform(const node_t *node)
return NULL;
}
-/** Return <b>node</b>'s time of publication, or 0 if we don't have one. */
-time_t
-node_get_published_on(const node_t *node)
-{
- if (node->ri)
- return node->ri->cache_info.published_on;
- else
- return 0;
-}
-
/** Return true iff <b>node</b> is one representing this router. */
int
node_is_me(const node_t *node)
@@ -1695,7 +1761,7 @@ static void
count_usable_descriptors(int *num_present, int *num_usable,
smartlist_t *descs_out,
const networkstatus_t *consensus,
- const or_options_t *options, time_t now,
+ time_t now,
routerset_t *in_set,
usable_descriptor_t exit_only)
{
@@ -1712,7 +1778,7 @@ count_usable_descriptors(int *num_present, int *num_usable,
continue;
if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1))
continue;
- if (client_would_use_router(rs, now, options)) {
+ if (client_would_use_router(rs, now)) {
const char * const digest = rs->descriptor_digest;
int present;
++*num_usable; /* the consensus says we want it. */
@@ -1766,10 +1832,10 @@ compute_frac_paths_available(const networkstatus_t *consensus,
const int authdir = authdir_mode_v3(options);
count_usable_descriptors(num_present_out, num_usable_out,
- mid, consensus, options, now, NULL,
+ mid, consensus, now, NULL,
USABLE_DESCRIPTOR_ALL);
if (options->EntryNodes) {
- count_usable_descriptors(&np, &nu, guards, consensus, options, now,
+ count_usable_descriptors(&np, &nu, guards, consensus, now,
options->EntryNodes, USABLE_DESCRIPTOR_ALL);
} else {
SMARTLIST_FOREACH(mid, const node_t *, node, {
@@ -1790,7 +1856,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
* an unavoidable feature of forcing authorities to declare
* certain nodes as exits.
*/
- count_usable_descriptors(&np, &nu, exits, consensus, options, now,
+ count_usable_descriptors(&np, &nu, exits, consensus, now,
NULL, USABLE_DESCRIPTOR_EXIT_ONLY);
log_debug(LD_NET,
"%s: %d present, %d usable",
@@ -1839,7 +1905,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
smartlist_t *myexits_unflagged = smartlist_new();
/* All nodes with exit flag in ExitNodes option */
- count_usable_descriptors(&np, &nu, myexits, consensus, options, now,
+ count_usable_descriptors(&np, &nu, myexits, consensus, now,
options->ExitNodes, USABLE_DESCRIPTOR_EXIT_ONLY);
log_debug(LD_NET,
"%s: %d present, %d usable",
@@ -1850,7 +1916,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
/* 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. */
count_usable_descriptors(&np, &nu, myexits_unflagged,
- consensus, options, now,
+ consensus, now,
options->ExitNodes, USABLE_DESCRIPTOR_ALL);
log_debug(LD_NET,
"%s: %d present, %d usable",
diff --git a/src/or/nodelist.h b/src/or/nodelist.h
index 4e5301df6b..9cd66f60a2 100644
--- a/src/or/nodelist.h
+++ b/src/or/nodelist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -22,6 +22,7 @@ const node_t *node_get_by_hex_id(const char *identity_digest);
node_t *nodelist_set_routerinfo(routerinfo_t *ri, routerinfo_t **ri_old_out);
node_t *nodelist_add_microdesc(microdesc_t *md);
void nodelist_set_consensus(networkstatus_t *ns);
+int nodelist_probably_contains_address(const tor_addr_t *addr);
void nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md);
void nodelist_remove_routerinfo(routerinfo_t *ri);
@@ -53,7 +54,6 @@ const char *node_get_platform(const node_t *node);
uint32_t node_get_prim_addr_ipv4h(const node_t *node);
void node_get_address_string(const node_t *node, char *cp, size_t len);
long node_get_declared_uptime(const node_t *node);
-time_t node_get_published_on(const node_t *node);
const smartlist_t *node_get_declared_family(const node_t *node);
const ed25519_public_key_t *node_get_ed25519_id(const node_t *node);
int node_ed25519_id_matches(const node_t *node,
@@ -132,5 +132,7 @@ void router_dir_info_changed(void);
const char *get_dir_info_status_string(void);
int count_loading_descriptors_progress(void);
+MOCK_DECL(int, get_estimated_address_per_node, (void));
+
#endif
diff --git a/src/or/ntmain.c b/src/or/ntmain.c
index 0e6f296d24..d0d5276c48 100644
--- a/src/or/ntmain.c
+++ b/src/or/ntmain.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/ntmain.h b/src/or/ntmain.h
index 31bf38c62c..4b771b1828 100644
--- a/src/or/ntmain.h
+++ b/src/or/ntmain.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion.c b/src/or/onion.c
index b3898d4085..a98b97cb1d 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion.h b/src/or/onion.h
index 19e4a7c381..37a7b08cb6 100644
--- a/src/or/onion.h
+++ b/src/or/onion.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion_fast.c b/src/or/onion_fast.c
index 8dcbfe22d8..146943a273 100644
--- a/src/or/onion_fast.c
+++ b/src/or/onion_fast.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion_fast.h b/src/or/onion_fast.h
index b9626002c3..b31f8e9492 100644
--- a/src/or/onion_fast.h
+++ b/src/or/onion_fast.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion_ntor.c b/src/or/onion_ntor.c
index ded97ee73d..902260b54b 100644
--- a/src/or/onion_ntor.c
+++ b/src/or/onion_ntor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion_ntor.h b/src/or/onion_ntor.h
index f637b437fd..158c499de4 100644
--- a/src/or/onion_ntor.h
+++ b/src/or/onion_ntor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ONION_NTOR_H
diff --git a/src/or/onion_tap.c b/src/or/onion_tap.c
index 2769300945..294fc0df6d 100644
--- a/src/or/onion_tap.c
+++ b/src/or/onion_tap.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -159,7 +159,7 @@ onion_skin_TAP_server_handshake(
* big. That should be impossible. */
log_info(LD_GENERAL, "crypto_dh_get_public failed.");
goto err;
- /* LCOV_EXCP_STOP */
+ /* LCOV_EXCL_STOP */
}
key_material_len = DIGEST_LEN+key_out_len;
diff --git a/src/or/onion_tap.h b/src/or/onion_tap.h
index a2880f6e98..bd625231f4 100644
--- a/src/or/onion_tap.h
+++ b/src/or/onion_tap.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/or.h b/src/or/or.h
index 2b56a486d8..9e7833386c 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -71,10 +71,11 @@
#include "tortls.h"
#include "torlog.h"
#include "container.h"
-#include "torgzip.h"
+#include "compress.h"
#include "address.h"
#include "compat_libevent.h"
#include "ht.h"
+#include "confline.h"
#include "replaycache.h"
#include "crypto_curve25519.h"
#include "crypto_ed25519.h"
@@ -147,8 +148,27 @@
/** Maximum size of a single extrainfo document, as above. */
#define MAX_EXTRAINFO_UPLOAD_SIZE 50000
-/** How often do we rotate onion keys? */
-#define MIN_ONION_KEY_LIFETIME (7*24*60*60)
+/** Minimum lifetime for an onion key in days. */
+#define MIN_ONION_KEY_LIFETIME_DAYS (1)
+
+/** Maximum lifetime for an onion key in days. */
+#define MAX_ONION_KEY_LIFETIME_DAYS (90)
+
+/** Default lifetime for an onion key in days. */
+#define DEFAULT_ONION_KEY_LIFETIME_DAYS (28)
+
+/** Minimum grace period for acceptance of an onion key in days.
+ * The maximum value is defined in proposal #274 as being the current network
+ * consensus parameter for "onion-key-rotation-days". */
+#define MIN_ONION_KEY_GRACE_PERIOD_DAYS (1)
+
+/** Default grace period for acceptance of an onion key in days. */
+#define DEFAULT_ONION_KEY_GRACE_PERIOD_DAYS (7)
+
+/** How often we should check the network consensus if it is time to rotate or
+ * expire onion keys. */
+#define ONION_KEY_CONSENSUS_CHECK_INTERVAL (60*60)
+
/** How often do we rotate TLS contexts? */
#define MAX_SSL_KEY_LIFETIME_INTERNAL (2*60*60)
@@ -403,12 +423,13 @@ typedef enum {
#define DIR_PURPOSE_FETCH_MICRODESC 19
#define DIR_PURPOSE_MAX_ 19
-/** True iff <b>p</b> is a purpose corresponding to uploading data to a
- * directory server. */
+/** True iff <b>p</b> is a purpose corresponding to uploading
+ * data to a directory server. */
#define DIR_PURPOSE_IS_UPLOAD(p) \
((p)==DIR_PURPOSE_UPLOAD_DIR || \
(p)==DIR_PURPOSE_UPLOAD_VOTE || \
- (p)==DIR_PURPOSE_UPLOAD_SIGNATURES)
+ (p)==DIR_PURPOSE_UPLOAD_SIGNATURES || \
+ (p)==DIR_PURPOSE_UPLOAD_RENDDESC_V2)
#define EXIT_PURPOSE_MIN_ 1
/** This exit stream wants to do an ordinary connect. */
@@ -875,6 +896,7 @@ typedef enum {
#define CELL_RELAY_EARLY 9
#define CELL_CREATE2 10
#define CELL_CREATED2 11
+#define CELL_PADDING_NEGOTIATE 12
#define CELL_VPADDING 128
#define CELL_CERTS 129
@@ -1564,10 +1586,6 @@ typedef struct or_connection_t {
* NETINFO cell listed the address we're connected to as recognized. */
unsigned int is_canonical:1;
- /** True iff we have decided that the other end of this connection
- * is a client. Connections with this flag set should never be used
- * to satisfy an EXTEND request. */
- unsigned int is_connection_with_client:1;
/** True iff this is an outgoing connection. */
unsigned int is_outgoing:1;
unsigned int proxy_type:2; /**< One of PROXY_NONE...PROXY_SOCKS5 */
@@ -1575,6 +1593,10 @@ typedef struct or_connection_t {
/** True iff this connection has had its bootstrap failure logged with
* control_event_bootstrap_problem. */
unsigned int have_noted_bootstrap_problem:1;
+ /** True iff this is a client connection and its address has been put in the
+ * geoip cache and handled by the DoS mitigation subsystem. We use this to
+ * insure we have a coherent count of concurrent connection. */
+ unsigned int tracked_for_dos_mitigation : 1;
uint16_t link_proto; /**< What protocol version are we using? 0 for
* "none negotiated yet." */
@@ -1753,14 +1775,6 @@ typedef struct entry_connection_t {
unsigned int is_socks_socket:1;
} entry_connection_t;
-typedef enum {
- DIR_SPOOL_NONE=0, DIR_SPOOL_SERVER_BY_DIGEST, DIR_SPOOL_SERVER_BY_FP,
- DIR_SPOOL_EXTRA_BY_DIGEST, DIR_SPOOL_EXTRA_BY_FP,
- DIR_SPOOL_CACHED_DIR, DIR_SPOOL_NETWORKSTATUS,
- DIR_SPOOL_MICRODESC, /* NOTE: if we add another entry, add another bit. */
-} dir_spool_source_t;
-#define dir_spool_source_bitfield_t ENUM_BF(dir_spool_source_t)
-
/** Subtype of connection_t for an "directory connection" -- that is, an HTTP
* connection to retrieve or serve directory material. */
typedef struct dir_connection_t {
@@ -1775,23 +1789,15 @@ typedef struct dir_connection_t {
char *requested_resource;
unsigned int dirconn_direct:1; /**< Is this dirconn direct, or via Tor? */
- /* Used only for server sides of some dir connections, to implement
- * "spooling" of directory material to the outbuf. Otherwise, we'd have
- * to append everything to the outbuf in one enormous chunk. */
- /** What exactly are we spooling right now? */
- dir_spool_source_bitfield_t dir_spool_src : 3;
-
/** If we're fetching descriptors, what router purpose shall we assign
* to them? */
uint8_t router_purpose;
- /** List of fingerprints for networkstatuses or descriptors to be spooled. */
- smartlist_t *fingerprint_stack;
- /** A cached_dir_t object that we're currently spooling out */
- struct cached_dir_t *cached_dir;
- /** The current offset into cached_dir. */
- off_t cached_dir_offset;
- /** The zlib object doing on-the-fly compression for spooled data. */
- tor_zlib_state_t *zlib_state;
+
+ /** List of spooled_resource_t for objects that we're spooling. We use
+ * it from back to front. */
+ smartlist_t *spool;
+ /** The compression object doing on-the-fly compression for spooled data. */
+ tor_compress_state_t *compress_state;
/** What rendezvous service are we querying for? */
rend_data_t *rend_data;
@@ -1807,6 +1813,14 @@ typedef struct dir_connection_t {
* that's going away and being used on channels instead. The dirserver still
* needs this for the incoming side, so it's moved here. */
uint64_t dirreq_id;
+
+#ifdef MEASUREMENTS_21206
+ /** Number of RELAY_DATA cells received. */
+ uint32_t data_cells_received;
+
+ /** Number of RELAY_DATA cells sent. */
+ uint32_t data_cells_sent;
+#endif
} dir_connection_t;
/** Subtype of connection_t for an connection to a controller. */
@@ -1945,11 +1959,13 @@ typedef struct addr_policy_t {
* compressed form. */
typedef struct cached_dir_t {
char *dir; /**< Contents of this object, NUL-terminated. */
- char *dir_z; /**< Compressed contents of this object. */
+ char *dir_compressed; /**< Compressed contents of this object. */
size_t dir_len; /**< Length of <b>dir</b> (not counting its NUL). */
- size_t dir_z_len; /**< Length of <b>dir_z</b>. */
+ size_t dir_compressed_len; /**< Length of <b>dir_compressed</b>. */
time_t published; /**< When was this object published. */
common_digests_t digests; /**< Digests of this object (networkstatus only) */
+ /** Sha3 digest (also ns only) */
+ uint8_t digest_sha3_as_signed[DIGEST256_LEN];
int refcnt; /**< Reference count for this cached_dir_t. */
} cached_dir_t;
@@ -2287,6 +2303,16 @@ typedef struct routerstatus_t {
* ed25519 identity keys on a link handshake. */
unsigned int supports_ed25519_link_handshake:1;
+ /** True iff this router has a protocol list that allows it to be an
+ * introduction point supporting ed25519 authentication key which is part of
+ * the v3 protocol detailed in proposal 224. This requires HSIntro=4. */
+ unsigned int supports_ed25519_hs_intro : 1;
+
+ /** True iff this router has a protocol list that allows it to be an hidden
+ * service directory supporting version 3 as seen in proposal 224. This
+ * requires HSDir=2. */
+ unsigned int supports_v3_hsdir : 1;
+
unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */
unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */
unsigned int bw_is_unmeasured:1; /**< This is a consensus entry, with
@@ -2640,6 +2666,9 @@ typedef struct networkstatus_t {
/** Digests of this document, as signed. */
common_digests_t digests;
+ /** A SHA3-256 digest of the document, not including signatures: used for
+ * consensus diffs */
+ uint8_t digest_sha3_as_signed[DIGEST256_LEN];
/** List of router statuses, sorted by identity digest. For a vote,
* the elements are vote_routerstatus_t; for a consensus, the elements
@@ -3073,6 +3102,13 @@ typedef struct circuit_t {
* circuit's queues; used only if CELL_STATS events are enabled and
* cleared after being sent to control port. */
smartlist_t *testing_cell_stats;
+
+ /** If set, points to an HS token that this circuit might be carrying.
+ * Used by the HS circuitmap. */
+ hs_token_t *hs_token;
+ /** Hashtable node: used to look up the circuit by its HS token using the HS
+ circuitmap. */
+ HT_ENTRY(circuit_t) hs_circuitmap_node;
} circuit_t;
/** Largest number of relay_early cells that we can send on a given
@@ -3321,6 +3357,13 @@ typedef struct origin_circuit_t {
* adjust_exit_policy_from_exitpolicy_failure.
*/
smartlist_t *prepend_policy;
+
+ /** How long do we wait before closing this circuit if it remains
+ * completely idle after it was built, in seconds? This value
+ * is randomized on a per-circuit basis from CircuitsAvailableTimoeut
+ * to 2*CircuitsAvailableTimoeut. */
+ int circuit_idle_timeout;
+
} origin_circuit_t;
struct onion_queue_t;
@@ -3382,13 +3425,6 @@ typedef struct or_circuit_t {
* is not marked for close. */
struct or_circuit_t *rend_splice;
- /** If set, points to an HS token that this circuit might be carrying.
- * Used by the HS circuitmap. */
- hs_token_t *hs_token;
- /** Hashtable node: used to look up the circuit by its HS token using the HS
- circuitmap. */
- HT_ENTRY(or_circuit_t) hs_circuitmap_node;
-
/** Stores KH for the handshake. */
char rend_circ_nonce[DIGEST_LEN];/* KH in tor-spec.txt */
@@ -3469,15 +3505,6 @@ static inline const origin_circuit_t *CONST_TO_ORIGIN_CIRCUIT(
return DOWNCAST(origin_circuit_t, x);
}
-/** Bitfield type: things that we're willing to use invalid routers for. */
-typedef enum invalid_router_usage_t {
- ALLOW_INVALID_ENTRY =1,
- ALLOW_INVALID_EXIT =2,
- ALLOW_INVALID_MIDDLE =4,
- ALLOW_INVALID_RENDEZVOUS =8,
- ALLOW_INVALID_INTRODUCTION=16,
-} invalid_router_usage_t;
-
/* limits for TCP send and recv buffer size used for constrained sockets */
#define MIN_CONSTRAINED_TCP_BUFFER 2048
#define MAX_CONSTRAINED_TCP_BUFFER 262144 /* 256k */
@@ -3539,27 +3566,6 @@ typedef struct port_cfg_t {
char unix_addr[FLEXIBLE_ARRAY_MEMBER];
} port_cfg_t;
-/** Ordinary configuration line. */
-#define CONFIG_LINE_NORMAL 0
-/** Appends to previous configuration for the same option, even if we
- * would ordinary replace it. */
-#define CONFIG_LINE_APPEND 1
-/* Removes all previous configuration for an option. */
-#define CONFIG_LINE_CLEAR 2
-
-/** A linked list of lines in a config file. */
-typedef struct config_line_t {
- char *key;
- char *value;
- struct config_line_t *next;
- /** What special treatment (if any) does this line require? */
- unsigned int command:2;
- /** If true, subsequent assignments to this linelist should replace
- * it, not extend it. Set only on the first item in a linelist in an
- * or_options_t. */
- unsigned int fragile:1;
-} config_line_t;
-
typedef struct routerset_t routerset_t;
/** A magic value for the (Socks|OR|...)Port options below, telling Tor
@@ -3624,10 +3630,6 @@ typedef struct {
int DisableAllSwap; /**< Boolean: Attempt to call mlockall() on our
* process for all current and future memory. */
- /** List of "entry", "middle", "exit", "introduction", "rendezvous". */
- smartlist_t *AllowInvalidNodes;
- /** Bitmask; derived from AllowInvalidNodes. */
- invalid_router_usage_t AllowInvalid_;
config_line_t *ExitPolicy; /**< Lists of exit policy components. */
int ExitPolicyRejectPrivate; /**< Should we not exit to reserved private
* addresses, and our own published addresses?
@@ -3638,21 +3640,6 @@ typedef struct {
* configured ports. */
config_line_t *SocksPolicy; /**< Lists of socks policy components */
config_line_t *DirPolicy; /**< Lists of dir policy components */
- /** Addresses to bind for listening for SOCKS connections. */
- config_line_t *SocksListenAddress;
- /** Addresses to bind for listening for transparent pf/netfilter
- * connections. */
- config_line_t *TransListenAddress;
- /** Addresses to bind for listening for transparent natd connections */
- config_line_t *NATDListenAddress;
- /** Addresses to bind for listening for SOCKS connections. */
- config_line_t *DNSListenAddress;
- /** Addresses to bind for listening for OR connections. */
- config_line_t *ORListenAddress;
- /** Addresses to bind for listening for directory connections. */
- config_line_t *DirListenAddress;
- /** Addresses to bind for listening for control connections. */
- config_line_t *ControlListenAddress;
/** Local address to bind outbound sockets */
config_line_t *OutboundBindAddress;
/** Local address to bind outbound relay sockets */
@@ -3674,7 +3661,6 @@ typedef struct {
/** Whether routers accept EXTEND cells to routers with private IPs. */
int ExtendAllowPrivateAddresses;
char *User; /**< Name of user to run Tor as. */
- char *Group; /**< Name of group to run Tor as. */
config_line_t *ORPort_lines; /**< Ports to listen on for OR connections. */
/** Ports to listen on for extended OR connections. */
config_line_t *ExtORPort_lines;
@@ -3777,6 +3763,15 @@ typedef struct {
int AvoidDiskWrites; /**< Boolean: should we never cache things to disk?
* Not used yet. */
int ClientOnly; /**< Boolean: should we never evolve into a server role? */
+
+ int ReducedConnectionPadding; /**< Boolean: Should we try to keep connections
+ open shorter and pad them less against
+ connection-level traffic analysis? */
+ /** Autobool: if auto, then connection padding will be negotiated by client
+ * and server. If 0, it will be fully disabled. If 1, the client will still
+ * pad to the server regardless of server support. */
+ int ConnectionPadding;
+
/** To what authority types do we publish our descriptor? Choices are
* "v1", "v2", "v3", "bridge", or "". */
smartlist_t *PublishServerDescriptor;
@@ -3802,15 +3797,6 @@ typedef struct {
/** A routerset that should be used when picking RPs for HS circuits. */
routerset_t *Tor2webRendezvousPoints;
- /** Close hidden service client circuits immediately when they reach
- * the normal circuit-build timeout, even if they have already sent
- * an INTRODUCE1 cell on its way to the service. */
- int CloseHSClientCircuitsImmediatelyOnTimeout;
-
- /** Close hidden-service-side rendezvous circuits immediately when
- * they reach the normal circuit-build timeout. */
- int CloseHSServiceRendCircuitsImmediatelyOnTimeout;
-
/** Onion Services in HiddenServiceSingleHopMode make one-hop (direct)
* circuits between the onion service server, and the introduction and
* rendezvous points. (Onion service descriptors are still posted using
@@ -3891,8 +3877,8 @@ typedef struct {
int CircuitBuildTimeout; /**< Cull non-open circuits that were born at
* least this many seconds ago. Used until
* adaptive algorithm learns a new value. */
- int CircuitIdleTimeout; /**< Cull open clean circuits that were born
- * at least this many seconds ago. */
+ int CircuitsAvailableTimeout; /**< Try to have an open circuit for at
+ least this long after last activity */
int CircuitStreamTimeout; /**< If non-zero, detach streams from circuits
* and try a new circuit if the stream has been
* waiting for this many seconds. If zero, use
@@ -3902,10 +3888,6 @@ typedef struct {
* a new one? */
int MaxCircuitDirtiness; /**< Never use circs that were first used more than
this interval ago. */
- int PredictedPortsRelevanceTime; /** How long after we've requested a
- * connection for a given port, do we want
- * to continue to pick exits that support
- * that port? */
uint64_t BandwidthRate; /**< How much bandwidth, on average, are we willing
* to use in a second? */
uint64_t BandwidthBurst; /**< How much bandwidth, at maximum, are we willing
@@ -3919,8 +3901,6 @@ typedef struct {
uint64_t PerConnBWRate; /**< Long-term bw on a single TLS conn, if set. */
uint64_t PerConnBWBurst; /**< Allowed burst on a single TLS conn, if set. */
int NumCPUs; /**< How many CPUs should we try to use? */
-//int RunTesting; /**< If true, create testing circuits to measure how well the
-// * other ORs are running. */
config_line_t *RendConfigLines; /**< List of configuration lines
* for rendezvous services. */
config_line_t *HidServAuth; /**< List of configuration lines for client-side
@@ -3971,7 +3951,8 @@ typedef struct {
/** If set, use these bridge authorities and not the default one. */
config_line_t *AlternateBridgeAuthority;
- char *MyFamily; /**< Declared family for this OR. */
+ config_line_t *MyFamily_lines; /**< Declared family for this OR. */
+ config_line_t *MyFamily; /**< Declared family for this OR, normalized */
config_line_t *NodeFamilies; /**< List of config lines for
* node families */
smartlist_t *NodeFamilySets; /**< List of parsed NodeFamilies values. */
@@ -4090,8 +4071,6 @@ typedef struct {
int NumDirectoryGuards; /**< How many dir guards do we try to establish?
* If 0, use value from NumEntryGuards. */
int RephistTrackTime; /**< How many seconds do we keep rephist info? */
- int FastFirstHopPK; /**< If Tor believes it is safe, should we save a third
- * of our PK time by sending CREATE_FAST cells? */
/** Should we always fetch our dir info on the mirror schedule (which
* means directly from the authorities) no matter our other config? */
int FetchDirInfoEarly;
@@ -4147,16 +4126,6 @@ typedef struct {
* if we are a cache). For authorities, this is always true. */
int DownloadExtraInfo;
- /** If true, and we are acting as a relay, allow exit circuits even when
- * we are the first hop of a circuit. */
- int AllowSingleHopExits;
- /** If true, don't allow relays with AllowSingleHopExits=1 to be used in
- * circuits that we build. */
- int ExcludeSingleHopRelays;
- /** If true, and the controller tells us to use a one-hop circuit, and the
- * exit allows it, we use it. */
- int AllowSingleHopCircuits;
-
/** If true, we convert "www.google.com.foo.exit" addresses on the
* socks/trans/natd ports into "www.google.com" addresses that
* exit from the node "foo". Disabled by default since attacking
@@ -4164,10 +4133,6 @@ typedef struct {
* selection. */
int AllowDotExit;
- /** If true, we will warn if a user gives us only an IP address
- * instead of a hostname. */
- int WarnUnsafeSocks;
-
/** If true, we're configured to collect statistics on clients
* requesting network statuses from us as directory. */
int DirReqStatistics_option;
@@ -4184,6 +4149,9 @@ typedef struct {
/** If true, the user wants us to collect cell statistics. */
int CellStatistics;
+ /** If true, the user wants us to collect padding statistics. */
+ int PaddingStatistics;
+
/** If true, the user wants us to collect statistics as entry node. */
int EntryStatistics;
@@ -4391,8 +4359,7 @@ typedef struct {
int TestingDirAuthVoteGuardIsStrict;
/** Relays in a testing network which should be voted HSDir
- * regardless of uptime and DirPort.
- * Respects VoteOnHidServDirectoriesV2. */
+ * regardless of uptime and DirPort. */
routerset_t *TestingDirAuthVoteHSDir;
int TestingDirAuthVoteHSDirIsStrict;
@@ -4524,8 +4491,6 @@ typedef struct {
int IPv6Exit; /**< Do we support exiting to IPv6 addresses? */
- char *TLSECGroup; /**< One of "P256", "P224", or nil for auto */
-
/** Fraction: */
double PathsNeededToBuildCircuits;
@@ -4609,6 +4574,43 @@ typedef struct {
* do we enforce Ed25519 identity match? */
/* NOTE: remove this option someday. */
int AuthDirTestEd25519LinkKeys;
+
+ /** Bool (default: 0): Tells if a %include was used on torrc */
+ int IncludeUsed;
+
+ /** The seconds after expiration which we as a relay should keep old
+ * consensuses around so that we can generate diffs from them. If 0,
+ * use the default. */
+ int MaxConsensusAgeForDiffs;
+
+ /** Autobool: Is the circuit creation DoS mitigation subsystem enabled? */
+ int DoSCircuitCreationEnabled;
+ /** Minimum concurrent connection needed from one single address before any
+ * defense is used. */
+ int DoSCircuitCreationMinConnections;
+ /** Circuit rate used to refill the token bucket. */
+ int DoSCircuitCreationRate;
+ /** Maximum allowed burst of circuits. Reaching that value, the address is
+ * detected as malicious and a defense might be used. */
+ int DoSCircuitCreationBurst;
+ /** When an address is marked as malicous, what defense should be used
+ * against it. See the dos_cc_defense_type_t enum. */
+ int DoSCircuitCreationDefenseType;
+ /** For how much time (in seconds) the defense is applicable for a malicious
+ * address. A random time delta is added to the defense time of an address
+ * which will be between 1 second and half of this value. */
+ int DoSCircuitCreationDefenseTimePeriod;
+
+ /** Autobool: Is the DoS connection mitigation subsystem enabled? */
+ int DoSConnectionEnabled;
+ /** Maximum concurrent connection allowed per address. */
+ int DoSConnectionMaxConcurrentCount;
+ /** When an address is reaches the maximum count, what defense should be
+ * used against it. See the dos_conn_defense_type_t enum. */
+ int DoSConnectionDefenseType;
+
+ /** Autobool: Do we refuse single hop client rendezvous? */
+ int DoSRefuseSingleHopClientRendezvous;
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
@@ -4834,7 +4836,7 @@ typedef uint32_t build_time_t;
double circuit_build_times_quantile_cutoff(void);
/** How often in seconds should we build a test circuit */
-#define CBT_DEFAULT_TEST_FREQUENCY 60
+#define CBT_DEFAULT_TEST_FREQUENCY 10
#define CBT_MIN_TEST_FREQUENCY 1
#define CBT_MAX_TEST_FREQUENCY INT32_MAX
@@ -5323,7 +5325,8 @@ typedef struct dir_server_t {
* address information from published? */
routerstatus_t fake_status; /**< Used when we need to pass this trusted
- * dir_server_t to directory_initiate_command_*
+ * dir_server_t to
+ * directory_request_set_routerstatus.
* as a routerstatus_t. Not updated by the
* router-status management code!
**/
@@ -5376,7 +5379,6 @@ typedef enum {
CRN_NEED_UPTIME = 1<<0,
CRN_NEED_CAPACITY = 1<<1,
CRN_NEED_GUARD = 1<<2,
- CRN_ALLOW_INVALID = 1<<3,
/* XXXX not used, apparently. */
CRN_WEIGHT_AS_EXIT = 1<<5,
CRN_NEED_DESC = 1<<6,
@@ -5391,8 +5393,6 @@ typedef enum {
typedef enum was_router_added_t {
/* Router was added successfully. */
ROUTER_ADDED_SUCCESSFULLY = 1,
- /* Router descriptor was added with warnings to submitter. */
- ROUTER_ADDED_NOTIFY_GENERATOR = 0,
/* Extrainfo document was rejected because no corresponding router
* descriptor was found OR router descriptor was rejected because
* it was incompatible with its extrainfo document. */
diff --git a/src/or/parsecommon.c b/src/or/parsecommon.c
index ec2cec69f7..7959867875 100644
--- a/src/or/parsecommon.c
+++ b/src/or/parsecommon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/parsecommon.h b/src/or/parsecommon.h
index 15e9f7ae85..b9f1613457 100644
--- a/src/or/parsecommon.h
+++ b/src/or/parsecommon.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -157,12 +157,18 @@ typedef enum {
R3_SUPERENCRYPTED,
R3_SIGNATURE,
R3_CREATE2_FORMATS,
- R3_AUTHENTICATION_REQUIRED,
+ R3_INTRO_AUTH_REQUIRED,
R3_SINGLE_ONION_SERVICE,
R3_INTRODUCTION_POINT,
R3_INTRO_AUTH_KEY,
R3_INTRO_ENC_KEY,
- R3_INTRO_ENC_KEY_CERTIFICATION,
+ R3_INTRO_ENC_KEY_CERT,
+ R3_INTRO_LEGACY_KEY,
+ R3_INTRO_LEGACY_KEY_CERT,
+ R3_DESC_AUTH_TYPE,
+ R3_DESC_AUTH_KEY,
+ R3_DESC_AUTH_CLIENT,
+ R3_ENCRYPTED,
R_IPO_IDENTIFIER,
R_IPO_IP_ADDRESS,
diff --git a/src/or/periodic.c b/src/or/periodic.c
index d02d4a7bbb..6896b41c86 100644
--- a/src/or/periodic.c
+++ b/src/or/periodic.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/periodic.h b/src/or/periodic.h
index 021bb4ef5c..88d00cc7e9 100644
--- a/src/or/periodic.h
+++ b/src/or/periodic.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PERIODIC_H
diff --git a/src/or/policies.c b/src/or/policies.c
index da5c4af6dc..9e43fd78bb 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/policies.h b/src/or/policies.h
index f73f850c21..ce08d497e9 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/protover.c b/src/or/protover.c
index c76f028699..e8524a25b5 100644
--- a/src/or/protover.c
+++ b/src/or/protover.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -103,6 +103,9 @@ proto_entry_free(proto_entry_t *entry)
tor_free(entry);
}
+/** The largest possible protocol version. */
+#define MAX_PROTOCOL_VERSION (UINT32_MAX-1)
+
/**
* Given a string <b>s</b> and optional end-of-string pointer
* <b>end_of_range</b>, parse the protocol range and store it in
@@ -123,9 +126,14 @@ parse_version_range(const char *s, const char *end_of_range,
if (BUG(!end_of_range))
end_of_range = s + strlen(s); // LCOV_EXCL_LINE
+ /* A range must start with a digit. */
+ if (!TOR_ISDIGIT(*s)) {
+ goto error;
+ }
+
/* Note that this wouldn't be safe if we didn't know that eventually,
* we'd hit a NUL */
- low = (uint32_t) tor_parse_ulong(s, 10, 0, UINT32_MAX, &ok, &next);
+ low = (uint32_t) tor_parse_ulong(s, 10, 0, MAX_PROTOCOL_VERSION, &ok, &next);
if (!ok)
goto error;
if (next > end_of_range)
@@ -138,13 +146,21 @@ parse_version_range(const char *s, const char *end_of_range,
if (*next != '-')
goto error;
s = next+1;
+
/* ibid */
- high = (uint32_t) tor_parse_ulong(s, 10, 0, UINT32_MAX, &ok, &next);
+ if (!TOR_ISDIGIT(*s)) {
+ goto error;
+ }
+ high = (uint32_t) tor_parse_ulong(s, 10, 0,
+ MAX_PROTOCOL_VERSION, &ok, &next);
if (!ok)
goto error;
if (next != end_of_range)
goto error;
+ if (low > high)
+ goto error;
+
done:
*high_out = high;
*low_out = low;
@@ -195,10 +211,6 @@ parse_single_entry(const char *s, const char *end_of_entry)
goto error;
}
- if (range->low > range->high) {
- goto error;
- }
-
s = comma;
while (*s == ',' && s < end_of_entry)
++s;
@@ -288,11 +300,11 @@ protover_get_supported_protocols(void)
return
"Cons=1-2 "
"Desc=1-2 "
- "DirCache=1 "
+ "DirCache=1-2 "
"HSDir=1-2 "
"HSIntro=3-4 "
"HSRend=1-2 "
- "Link=1-4 "
+ "Link=1-5 "
"LinkAuth=1,3 "
"Microdesc=1-2 "
"Relay=1-2";
@@ -441,6 +453,10 @@ cmp_single_ent_by_version(const void **a_, const void **b_)
static char *
contract_protocol_list(const smartlist_t *proto_strings)
{
+ if (smartlist_len(proto_strings) == 0) {
+ return tor_strdup("");
+ }
+
// map from name to list of single-version entries
strmap_t *entry_lists_by_name = strmap_new();
// list of protocol names
@@ -549,11 +565,21 @@ char *
protover_compute_vote(const smartlist_t *list_of_proto_strings,
int threshold)
{
+ if (smartlist_len(list_of_proto_strings) == 0) {
+ return tor_strdup("");
+ }
+
smartlist_t *all_entries = smartlist_new();
// First, parse the inputs and break them into singleton entries.
SMARTLIST_FOREACH_BEGIN(list_of_proto_strings, const char *, vote) {
smartlist_t *unexpanded = parse_protocol_list(vote);
+ if (! unexpanded) {
+ log_warn(LD_NET, "I failed with parsing a protocol list from "
+ "an authority. The offending string was: %s",
+ escaped(vote));
+ continue;
+ }
smartlist_t *this_vote = expand_protocol_list(unexpanded);
if (this_vote == NULL) {
log_warn(LD_NET, "When expanding a protocol list from an authority, I "
@@ -569,6 +595,11 @@ protover_compute_vote(const smartlist_t *list_of_proto_strings,
smartlist_free(unexpanded);
} SMARTLIST_FOREACH_END(vote);
+ if (smartlist_len(all_entries) == 0) {
+ smartlist_free(all_entries);
+ return tor_strdup("");
+ }
+
// Now sort the singleton entries
smartlist_sort_strings(all_entries);
@@ -618,6 +649,11 @@ protover_all_supported(const char *s, char **missing_out)
}
smartlist_t *entries = parse_protocol_list(s);
+ if (BUG(entries == NULL)) {
+ log_warn(LD_NET, "Received an unparseable protocol list %s"
+ " from the consensus", escaped(s));
+ return 1;
+ }
missing = smartlist_new();
diff --git a/src/or/protover.h b/src/or/protover.h
index 5c658931ea..22667bed79 100644
--- a/src/or/protover.h
+++ b/src/or/protover.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/reasons.c b/src/or/reasons.c
index a1566e2299..e6c325f1b3 100644
--- a/src/or/reasons.c
+++ b/src/or/reasons.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/reasons.h b/src/or/reasons.h
index 2e12c93728..1cadf4e89e 100644
--- a/src/or/reasons.h
+++ b/src/or/reasons.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/relay.c b/src/or/relay.c
index e504643f35..2451f45c79 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -48,12 +48,14 @@
#define RELAY_PRIVATE
#include "or.h"
#include "addressmap.h"
+#include "backtrace.h"
#include "buffers.h"
#include "channel.h"
#include "circpathbias.h"
#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuituse.h"
+#include "compress.h"
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
@@ -74,6 +76,7 @@
#include "routerlist.h"
#include "routerparse.h"
#include "scheduler.h"
+#include "rephist.h"
static edge_connection_t *relay_lookup_conn(circuit_t *circ, cell_t *cell,
cell_direction_t cell_direction,
@@ -196,6 +199,82 @@ relay_crypt_one_payload(crypto_cipher_t *cipher, uint8_t *in,
return 0;
}
+/**
+ * Update channel usage state based on the type of relay cell and
+ * circuit properties.
+ *
+ * This is needed to determine if a client channel is being
+ * used for application traffic, and if a relay channel is being
+ * used for multihop circuits and application traffic. The decision
+ * to pad in channelpadding.c depends upon this info (as well as
+ * consensus parameters) to decide what channels to pad.
+ */
+static void
+circuit_update_channel_usage(circuit_t *circ, cell_t *cell)
+{
+ if (CIRCUIT_IS_ORIGIN(circ)) {
+ /*
+ * The client state was first set much earlier in
+ * circuit_send_next_onion_skin(), so we can start padding as early as
+ * possible.
+ *
+ * However, if padding turns out to be expensive, we may want to not do
+ * it until actual application traffic starts flowing (which is controlled
+ * via consensus param nf_pad_before_usage).
+ *
+ * So: If we're an origin circuit and we've created a full length circuit,
+ * then any CELL_RELAY cell means application data. Increase the usage
+ * state of the channel to indicate this.
+ *
+ * We want to wait for CELL_RELAY specifically here, so we know that
+ * the channel was definitely being used for data and not for extends.
+ * By default, we pad as soon as a channel has been used for *any*
+ * circuits, so this state is irrelevant to the padding decision in
+ * the default case. However, if padding turns out to be expensive,
+ * we would like the ability to avoid padding until we're absolutely
+ * sure that a channel is used for enough application data to be worth
+ * padding.
+ *
+ * (So it does not matter that CELL_RELAY_EARLY can actually contain
+ * application data. This is only a load reducing option and that edge
+ * case does not matter if we're desperately trying to reduce overhead
+ * anyway. See also consensus parameter nf_pad_before_usage).
+ */
+ if (BUG(!circ->n_chan))
+ return;
+
+ if (circ->n_chan->channel_usage == CHANNEL_USED_FOR_FULL_CIRCS &&
+ cell->command == CELL_RELAY) {
+ circ->n_chan->channel_usage = CHANNEL_USED_FOR_USER_TRAFFIC;
+ }
+ } else {
+ /* If we're a relay circuit, the question is more complicated. Basically:
+ * we only want to pad connections that carry multihop (anonymous)
+ * circuits.
+ *
+ * We assume we're more than one hop if either the previous hop
+ * is not a client, or if the previous hop is a client and there's
+ * a next hop. Then, circuit traffic starts at RELAY_EARLY, and
+ * user application traffic starts when we see RELAY cells.
+ */
+ or_circuit_t *or_circ = TO_OR_CIRCUIT(circ);
+
+ if (BUG(!or_circ->p_chan))
+ return;
+
+ if (!channel_is_client(or_circ->p_chan) ||
+ (channel_is_client(or_circ->p_chan) && circ->n_chan)) {
+ if (cell->command == CELL_RELAY_EARLY) {
+ if (or_circ->p_chan->channel_usage < CHANNEL_USED_FOR_FULL_CIRCS) {
+ or_circ->p_chan->channel_usage = CHANNEL_USED_FOR_FULL_CIRCS;
+ }
+ } else if (cell->command == CELL_RELAY) {
+ or_circ->p_chan->channel_usage = CHANNEL_USED_FOR_USER_TRAFFIC;
+ }
+ }
+ }
+}
+
/** Receive a relay cell:
* - Crypt it (encrypt if headed toward the origin or if we <b>are</b> the
* origin; decrypt if we're headed toward the exit).
@@ -225,10 +304,13 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
return 0;
if (relay_crypt(circ, cell, cell_direction, &layer_hint, &recognized) < 0) {
- log_warn(LD_BUG,"relay crypt failed. Dropping connection.");
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "relay crypt failed. Dropping connection.");
return -END_CIRC_REASON_INTERNAL;
}
+ circuit_update_channel_usage(circ, cell);
+
if (recognized) {
edge_connection_t *conn = NULL;
@@ -257,8 +339,13 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
log_debug(LD_OR,"Sending to origin.");
if ((reason = connection_edge_process_relay_cell(cell, circ, conn,
layer_hint)) < 0) {
- log_warn(LD_OR,
- "connection_edge_process_relay_cell (at origin) failed.");
+ /* If a client is trying to connect to unknown hidden service port,
+ * END_CIRC_AT_ORIGIN is sent back so we can then close the circuit.
+ * Do not log warn as this is an expected behavior for a service. */
+ if (reason != END_CIRC_AT_ORIGIN) {
+ log_warn(LD_OR,
+ "connection_edge_process_relay_cell (at origin) failed.");
+ }
return reason;
}
}
@@ -430,11 +517,13 @@ circuit_package_relay_cell(cell_t *cell, circuit_t *circ,
if (!chan) {
log_warn(LD_BUG,"outgoing relay cell sent from %s:%d has n_chan==NULL."
" Dropping.", filename, lineno);
+ log_backtrace(LOG_WARN,LD_BUG,"");
return 0; /* just drop it */
}
if (!CIRCUIT_IS_ORIGIN(circ)) {
log_warn(LD_BUG,"outgoing relay cell sent from %s:%d on non-origin "
"circ. Dropping.", filename, lineno);
+ log_backtrace(LOG_WARN,LD_BUG,"");
return 0; /* just drop it */
}
@@ -637,6 +726,9 @@ relay_send_command_from_edge_,(streamid_t stream_id, circuit_t *circ,
log_debug(LD_OR,"delivering %d cell %s.", relay_command,
cell_direction == CELL_DIRECTION_OUT ? "forward" : "backward");
+ if (relay_command == RELAY_COMMAND_DROP)
+ rep_hist_padding_count_write(PADDING_TYPE_DROP);
+
/* If we are sending an END cell and this circuit is used for a tunneled
* directory request, advance its state. */
if (relay_command == RELAY_COMMAND_END && circ->dirreq_id)
@@ -743,6 +835,16 @@ connection_edge_send_command(edge_connection_t *fromconn,
return -1;
}
+#ifdef MEASUREMENTS_21206
+ /* Keep track of the number of RELAY_DATA cells sent for directory
+ * connections. */
+ connection_t *linked_conn = TO_CONN(fromconn)->linked_conn;
+
+ if (linked_conn && linked_conn->type == CONN_TYPE_DIR) {
+ ++(TO_DIR_CONN(linked_conn)->data_cells_sent);
+ }
+#endif
+
return relay_send_command_from_edge(fromconn->stream_id, circ,
relay_command, payload,
payload_len, cpath_layer);
@@ -1359,6 +1461,7 @@ connection_edge_process_relay_cell_not_open(
"Got a badly formatted connected cell. Closing.");
connection_edge_end(conn, END_STREAM_REASON_TORPROTOCOL);
connection_mark_unattached_ap(entry_conn, END_STREAM_REASON_TORPROTOCOL);
+ return 0;
}
if (tor_addr_family(&addr) != AF_UNSPEC) {
const sa_family_t family = tor_addr_family(&addr);
@@ -1525,6 +1628,7 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
switch (rh.command) {
case RELAY_COMMAND_DROP:
+ rep_hist_padding_count_read(PADDING_TYPE_DROP);
// log_info(domain,"Got a relay-level padding cell. Dropping.");
return 0;
case RELAY_COMMAND_BEGIN:
@@ -1598,6 +1702,16 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
connection_write_to_buf((char*)(cell->payload + RELAY_HEADER_SIZE),
rh.length, TO_CONN(conn));
+#ifdef MEASUREMENTS_21206
+ /* Count number of RELAY_DATA cells received on a linked directory
+ * connection. */
+ connection_t *linked_conn = TO_CONN(conn)->linked_conn;
+
+ if (linked_conn && linked_conn->type == CONN_TYPE_DIR) {
+ ++(TO_DIR_CONN(linked_conn)->data_cells_received);
+ }
+#endif
+
if (!optimistic_data) {
/* Only send a SENDME if we're not getting optimistic data; otherwise
* a SENDME could arrive before the CONNECTED.
@@ -2505,22 +2619,32 @@ static time_t last_time_under_memory_pressure = 0;
STATIC int
cell_queues_check_size(void)
{
+ time_t now = time(NULL);
size_t alloc = cell_queues_get_total_allocation();
alloc += buf_get_total_allocation();
- alloc += tor_zlib_get_total_allocation();
+ alloc += tor_compress_get_total_allocation();
const size_t rend_cache_total = rend_cache_get_total_allocation();
alloc += rend_cache_total;
+ const size_t geoip_client_cache_total =
+ geoip_client_cache_total_allocation();
+ alloc += geoip_client_cache_total;
if (alloc >= get_options()->MaxMemInQueues_low_threshold) {
last_time_under_memory_pressure = approx_time();
if (alloc >= get_options()->MaxMemInQueues) {
/* If we're spending over 20% of the memory limit on hidden service
- * descriptors, free them until we're down to 10%.
- */
+ * descriptors, free them until we're down to 10%. Do the same for geoip
+ * client cache. */
if (rend_cache_total > get_options()->MaxMemInQueues / 5) {
const size_t bytes_to_remove =
rend_cache_total - (size_t)(get_options()->MaxMemInQueues / 10);
alloc -= hs_cache_handle_oom(time(NULL), bytes_to_remove);
}
+ if (geoip_client_cache_total > get_options()->MaxMemInQueues / 5) {
+ const size_t bytes_to_remove =
+ geoip_client_cache_total -
+ (size_t)(get_options()->MaxMemInQueues / 10);
+ alloc -= geoip_client_cache_handle_oom(now, bytes_to_remove);
+ }
circuits_handle_oom(alloc);
return 1;
}
diff --git a/src/or/relay.h b/src/or/relay.h
index f01cbf1298..9dc0b5d3a2 100644
--- a/src/or/relay.h
+++ b/src/or/relay.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendcache.c b/src/or/rendcache.c
index 12c23ea87c..11b60b36a1 100644
--- a/src/or/rendcache.c
+++ b/src/or/rendcache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendcache.h b/src/or/rendcache.h
index 746f142fcc..1bd3be2243 100644
--- a/src/or/rendcache.h
+++ b/src/or/rendcache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 06744ad795..9e2daf0380 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -265,6 +265,11 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
klen = crypto_pk_asn1_encode(extend_info->onion_key,
tmp+v3_shift+7+DIGEST_LEN+2,
sizeof(tmp)-(v3_shift+7+DIGEST_LEN+2));
+ if (klen < 0) {
+ log_warn(LD_BUG,"Internal error: can't encode public key.");
+ status = -2;
+ goto perm_err;
+ }
set_uint16(tmp+v3_shift+7+DIGEST_LEN, htons(klen));
memcpy(tmp+v3_shift+7+DIGEST_LEN+2+klen, rendcirc->rend_data->rend_cookie,
REND_COOKIE_LEN);
@@ -724,6 +729,9 @@ directory_get_from_hs_dir(const char *desc_id,
hs_dir = pick_hsdir(desc_id, desc_id_base32);
if (!hs_dir) {
/* No suitable hs dir can be found, stop right now. */
+ control_event_hs_descriptor_failed(rend_query, NULL, "QUERY_NO_HSDIR");
+ control_event_hs_descriptor_content(rend_data_get_address(rend_query),
+ desc_id_base32, NULL, NULL);
return 0;
}
}
@@ -744,6 +752,9 @@ directory_get_from_hs_dir(const char *desc_id,
REND_DESC_COOKIE_LEN,
0)<0) {
log_warn(LD_BUG, "Could not base64-encode descriptor cookie.");
+ control_event_hs_descriptor_failed(rend_query, hsdir_fp, "BAD_DESC");
+ control_event_hs_descriptor_content(rend_data_get_address(rend_query),
+ desc_id_base32, hsdir_fp, NULL);
return 0;
}
/* Remove == signs. */
@@ -756,13 +767,15 @@ directory_get_from_hs_dir(const char *desc_id,
/* Send fetch request. (Pass query and possibly descriptor cookie so that
* they can be written to the directory connection and be referred to when
* the response arrives. */
- directory_initiate_command_routerstatus_rend(hs_dir,
- DIR_PURPOSE_FETCH_RENDDESC_V2,
- ROUTER_PURPOSE_GENERAL,
- how_to_fetch,
- desc_id_base32,
- NULL, 0, 0,
- rend_query, NULL);
+ directory_request_t *req =
+ directory_request_new(DIR_PURPOSE_FETCH_RENDDESC_V2);
+ directory_request_set_routerstatus(req, hs_dir);
+ directory_request_set_indirection(req, how_to_fetch);
+ directory_request_set_resource(req, desc_id_base32);
+ directory_request_set_rend_query(req, rend_query);
+ directory_initiate_request(req);
+ directory_request_free(req);
+
log_info(LD_REND, "Sending fetch request for v2 descriptor for "
"service '%s' with descriptor ID '%s', auth type %d, "
"and descriptor cookie '%s' to hidden service "
diff --git a/src/or/rendclient.h b/src/or/rendclient.h
index 164305a773..ff0f4084fd 100644
--- a/src/or/rendclient.h
+++ b/src/or/rendclient.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index bc53762fb6..d18356e67a 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -477,7 +477,10 @@ rend_encode_v2_descriptors(smartlist_t *descs_out,
tor_assert(descriptor_cookie);
}
/* Obtain service_id from public key. */
- crypto_pk_get_digest(service_key, service_id);
+ if (crypto_pk_get_digest(service_key, service_id) < 0) {
+ log_warn(LD_BUG, "Couldn't compute service key digest.");
+ return -1;
+ }
/* Calculate current time-period. */
time_period = get_time_period(now, period, service_id);
/* Determine how many seconds the descriptor will be valid. */
diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h
index 942ace5761..94c2480d86 100644
--- a/src/or/rendcommon.h
+++ b/src/or/rendcommon.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index 57c8cfac92..89739e1291 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -8,10 +8,12 @@
**/
#include "or.h"
+#include "channel.h"
#include "circuitlist.h"
#include "circuituse.h"
#include "config.h"
#include "crypto.h"
+#include "dos.h"
#include "relay.h"
#include "rendmid.h"
#include "rephist.h"
@@ -96,7 +98,8 @@ rend_mid_establish_intro_legacy(or_circuit_t *circ, const uint8_t *request,
/* Close any other intro circuits with the same pk. */
c = NULL;
- while ((c = hs_circuitmap_get_intro_circ_v2((const uint8_t *)pk_digest))) {
+ while ((c = hs_circuitmap_get_intro_circ_v2_relay_side(
+ (const uint8_t *)pk_digest))) {
log_info(LD_REND, "Replacing old circuit for service %s",
safe_str(serviceid));
circuit_mark_for_close(TO_CIRCUIT(c), END_CIRC_REASON_FINISHED);
@@ -111,7 +114,7 @@ rend_mid_establish_intro_legacy(or_circuit_t *circ, const uint8_t *request,
/* Now, set up this circuit. */
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_INTRO_POINT);
- hs_circuitmap_register_intro_circ_v2(circ, (uint8_t *)pk_digest);
+ hs_circuitmap_register_intro_circ_v2_relay_side(circ, (uint8_t *)pk_digest);
log_info(LD_REND,
"Established introduction point on circuit %u for service %s",
@@ -165,7 +168,8 @@ rend_mid_introduce_legacy(or_circuit_t *circ, const uint8_t *request,
/* The first 20 bytes are all we look at: they have a hash of the service's
* PK. */
- intro_circ = hs_circuitmap_get_intro_circ_v2((const uint8_t*)request);
+ intro_circ = hs_circuitmap_get_intro_circ_v2_relay_side(
+ (const uint8_t*)request);
if (!intro_circ) {
log_info(LD_REND,
"No intro circ found for INTRODUCE1 cell (%s) from circuit %u; "
@@ -230,6 +234,16 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
goto err;
}
+ /* Check if we are configured to accept established rendezvous cells from
+ * client or in other words tor2web clients. */
+ if (channel_is_client(circ->p_chan) &&
+ dos_should_refuse_single_hop_client()) {
+ /* Note it down for the heartbeat log purposes. */
+ dos_note_refuse_single_hop_client();
+ /* Silent drop so the client has to time out before moving on. */
+ return 0;
+ }
+
if (circ->base_.n_chan) {
log_warn(LD_PROTOCOL,
"Tried to establish rendezvous on non-edge circuit");
@@ -242,7 +256,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
goto err;
}
- if (hs_circuitmap_get_rend_circ(request)) {
+ if (hs_circuitmap_get_rend_circ_relay_side(request)) {
log_warn(LD_PROTOCOL,
"Duplicate rendezvous cookie in ESTABLISH_RENDEZVOUS.");
goto err;
@@ -258,7 +272,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
}
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_REND_POINT_WAITING);
- hs_circuitmap_register_rend_circ(circ, request);
+ hs_circuitmap_register_rend_circ_relay_side(circ, request);
base16_encode(hexid,9,(char*)request,4);
@@ -307,7 +321,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
"Got request for rendezvous from circuit %u to cookie %s.",
(unsigned)circ->p_circ_id, hexid);
- rend_circ = hs_circuitmap_get_rend_circ(request);
+ rend_circ = hs_circuitmap_get_rend_circ_relay_side(request);
if (!rend_circ) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting RENDEZVOUS1 cell with unrecognized rendezvous cookie %s.",
@@ -342,7 +356,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
circuit_change_purpose(TO_CIRCUIT(circ), CIRCUIT_PURPOSE_REND_ESTABLISHED);
circuit_change_purpose(TO_CIRCUIT(rend_circ),
CIRCUIT_PURPOSE_REND_ESTABLISHED);
- hs_circuitmap_remove_circuit(circ);
+ hs_circuitmap_remove_circuit(TO_CIRCUIT(circ));
rend_circ->rend_splice = circ;
circ->rend_splice = rend_circ;
diff --git a/src/or/rendmid.h b/src/or/rendmid.h
index 347d745853..daf9e2885e 100644
--- a/src/or/rendmid.h
+++ b/src/or/rendmid.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 09abc205dc..2a3594918e 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -76,13 +76,11 @@ static ssize_t rend_service_parse_intro_for_v3(
static int rend_service_check_private_dir(const or_options_t *options,
const rend_service_t *s,
int create);
-static int rend_service_check_private_dir_impl(const or_options_t *options,
- const rend_service_t *s,
- int create);
static const smartlist_t* rend_get_service_list(
const smartlist_t* substitute_service_list);
static smartlist_t* rend_get_service_list_mutable(
smartlist_t* substitute_service_list);
+static int rend_max_intro_circs_per_period(unsigned int n_intro_points_wanted);
/** Represents the mapping from a virtual port of a rendezvous service to
* a real port on some IP.
@@ -100,39 +98,6 @@ struct rend_service_port_config_s {
char unix_addr[FLEXIBLE_ARRAY_MEMBER];
};
-/** Try to maintain this many intro points per service by default. */
-#define NUM_INTRO_POINTS_DEFAULT 3
-/** Maximum number of intro points per service. */
-#define NUM_INTRO_POINTS_MAX 10
-/** Number of extra intro points we launch if our set of intro nodes is
- * empty. See proposal 155, section 4. */
-#define NUM_INTRO_POINTS_EXTRA 2
-
-/** If we can't build our intro circuits, don't retry for this long. */
-#define INTRO_CIRC_RETRY_PERIOD (60*5)
-/** How many times will a hidden service operator attempt to connect to
- * a requested rendezvous point before giving up? */
-#define MAX_REND_FAILURES 1
-/** How many seconds should we spend trying to connect to a requested
- * rendezvous point before giving up? */
-#define MAX_REND_TIMEOUT 30
-/* Default, minimum and maximum values for the maximum rendezvous failures
- * consensus parameter. */
-#define MAX_REND_FAILURES_DEFAULT 2
-#define MAX_REND_FAILURES_MIN 1
-#define MAX_REND_FAILURES_MAX 10
-
-/** How many times will a hidden service operator attempt to connect to
- * a requested rendezvous point before giving up? */
-static int
-get_max_rend_failures(void)
-{
- return networkstatus_get_param(NULL, "hs_service_max_rdv_failures",
- MAX_REND_FAILURES_DEFAULT,
- MAX_REND_FAILURES_MIN,
- MAX_REND_FAILURES_MAX);
-}
-
/* Hidden service directory file names:
* new file names should be added to rend_service_add_filenames_to_list()
* for sandboxing purposes. */
@@ -141,9 +106,12 @@ static const char *hostname_fname = "hostname";
static const char *client_keys_fname = "client_keys";
static const char *sos_poison_fname = "onion_service_non_anonymous";
-/** A list of rend_service_t's for services run on this OP.
- */
+/** A list of rend_service_t's for services run on this OP. */
static smartlist_t *rend_service_list = NULL;
+/** A list of rend_service_t's for services run on this OP which is used as a
+ * staging area before they are put in the main list in order to prune dying
+ * service on config reload. */
+static smartlist_t *rend_service_staging_list = NULL;
/* Like rend_get_service_list_mutable, but returns a read-only list. */
static const smartlist_t*
@@ -277,35 +245,23 @@ rend_service_free_all(void)
rend_service_list = NULL;
}
-/** Validate <b>service</b> and add it to <b>service_list</b>, or to
- * the global rend_service_list if <b>service_list</b> is NULL.
- * Return 0 on success. On failure, free <b>service</b> and return -1.
- * Takes ownership of <b>service</b>.
- */
+/* Validate a <b>service</b>. Use the <b>service_list</b> to make sure there
+ * is no duplicate entry for the given service object. Return 0 if valid else
+ * -1 if not.*/
static int
-rend_add_service(smartlist_t *service_list, rend_service_t *service)
+rend_validate_service(const smartlist_t *service_list,
+ const rend_service_t *service)
{
- int i;
- rend_service_port_config_t *p;
+ int dupe = 0;
+ tor_assert(service_list);
tor_assert(service);
- smartlist_t *s_list = rend_get_service_list_mutable(service_list);
- /* We must have a service list, even if it's a temporary one, so we can
- * check for duplicate services */
- if (BUG(!s_list)) {
- return -1;
- }
-
- service->intro_nodes = smartlist_new();
- service->expiring_nodes = smartlist_new();
-
if (service->max_streams_per_circuit < 0) {
log_warn(LD_CONFIG, "Hidden service (%s) configured with negative max "
"streams per circuit.",
rend_service_escaped_dir(service));
- rend_service_free(service);
- return -1;
+ goto invalid;
}
if (service->max_streams_close_circuit < 0 ||
@@ -313,87 +269,107 @@ rend_add_service(smartlist_t *service_list, rend_service_t *service)
log_warn(LD_CONFIG, "Hidden service (%s) configured with invalid "
"max streams handling.",
rend_service_escaped_dir(service));
- rend_service_free(service);
- return -1;
+ goto invalid;
}
if (service->auth_type != REND_NO_AUTH &&
- (!service->clients ||
- smartlist_len(service->clients) == 0)) {
- log_warn(LD_CONFIG, "Hidden service (%s) with client authorization but no "
- "clients.",
+ (!service->clients || smartlist_len(service->clients) == 0)) {
+ log_warn(LD_CONFIG, "Hidden service (%s) with client authorization but "
+ "no clients.",
rend_service_escaped_dir(service));
- rend_service_free(service);
- return -1;
+ goto invalid;
}
if (!service->ports || !smartlist_len(service->ports)) {
log_warn(LD_CONFIG, "Hidden service (%s) with no ports configured.",
rend_service_escaped_dir(service));
- rend_service_free(service);
- return -1;
- } else {
- int dupe = 0;
- /* XXX This duplicate check has two problems:
- *
- * a) It's O(n^2), but the same comment from the bottom of
- * rend_config_services() should apply.
- *
- * b) We only compare directory paths as strings, so we can't
- * detect two distinct paths that specify the same directory
- * (which can arise from symlinks, case-insensitivity, bind
- * mounts, etc.).
- *
- * It also can't detect that two separate Tor instances are trying
- * to use the same HiddenServiceDir; for that, we would need a
- * lock file. But this is enough to detect a simple mistake that
- * at least one person has actually made.
- */
- tor_assert(s_list);
- if (!rend_service_is_ephemeral(service)) {
- /* Skip dupe for ephemeral services. */
- SMARTLIST_FOREACH(s_list, rend_service_t*, ptr,
- dupe = dupe ||
- !strcmp(ptr->directory, service->directory));
- if (dupe) {
- log_warn(LD_REND, "Another hidden service is already configured for "
- "directory %s.",
- rend_service_escaped_dir(service));
- rend_service_free(service);
- return -1;
- }
+ goto invalid;
+ }
+
+ /* XXX This duplicate check has two problems:
+ *
+ * a) It's O(n^2), but the same comment from the bottom of
+ * rend_config_services() should apply.
+ *
+ * b) We only compare directory paths as strings, so we can't
+ * detect two distinct paths that specify the same directory
+ * (which can arise from symlinks, case-insensitivity, bind
+ * mounts, etc.).
+ *
+ * It also can't detect that two separate Tor instances are trying
+ * to use the same HiddenServiceDir; for that, we would need a
+ * lock file. But this is enough to detect a simple mistake that
+ * at least one person has actually made.
+ */
+ if (!rend_service_is_ephemeral(service)) {
+ /* Skip dupe for ephemeral services. */
+ SMARTLIST_FOREACH(service_list, rend_service_t *, ptr,
+ dupe = dupe ||
+ !strcmp(ptr->directory, service->directory));
+ if (dupe) {
+ log_warn(LD_REND, "Another hidden service is already configured for "
+ "directory %s.",
+ rend_service_escaped_dir(service));
+ goto invalid;
}
- log_debug(LD_REND,"Configuring service with directory %s",
- rend_service_escaped_dir(service));
- for (i = 0; i < smartlist_len(service->ports); ++i) {
- p = smartlist_get(service->ports, i);
- if (!(p->is_unix_addr)) {
- log_debug(LD_REND,
- "Service maps port %d to %s",
- p->virtual_port,
- fmt_addrport(&p->real_addr, p->real_port));
- } else {
+ }
+
+ /* Valid. */
+ return 0;
+ invalid:
+ return -1;
+}
+
+/** Add it to <b>service_list</b>, or to the global rend_service_list if
+ * <b>service_list</b> is NULL. Return 0 on success. On failure, free
+ * <b>service</b> and return -1. Takes ownership of <b>service</b>. */
+static int
+rend_add_service(smartlist_t *service_list, rend_service_t *service)
+{
+ int i;
+ rend_service_port_config_t *p;
+
+ tor_assert(service);
+
+ smartlist_t *s_list = rend_get_service_list_mutable(service_list);
+ /* We must have a service list, even if it's a temporary one, so we can
+ * check for duplicate services */
+ if (BUG(!s_list)) {
+ return -1;
+ }
+
+ service->intro_nodes = smartlist_new();
+ service->expiring_nodes = smartlist_new();
+
+ log_debug(LD_REND,"Configuring service with directory %s",
+ rend_service_escaped_dir(service));
+ for (i = 0; i < smartlist_len(service->ports); ++i) {
+ p = smartlist_get(service->ports, i);
+ if (!(p->is_unix_addr)) {
+ log_debug(LD_REND,
+ "Service maps port %d to %s",
+ p->virtual_port,
+ fmt_addrport(&p->real_addr, p->real_port));
+ } else {
#ifdef HAVE_SYS_UN_H
- log_debug(LD_REND,
- "Service maps port %d to socket at \"%s\"",
- p->virtual_port, p->unix_addr);
+ log_debug(LD_REND,
+ "Service maps port %d to socket at \"%s\"",
+ p->virtual_port, p->unix_addr);
#else
- log_warn(LD_BUG,
- "Service maps port %d to an AF_UNIX socket, but we "
- "have no AF_UNIX support on this platform. This is "
- "probably a bug.",
- p->virtual_port);
- rend_service_free(service);
- return -1;
+ log_warn(LD_BUG,
+ "Service maps port %d to an AF_UNIX socket, but we "
+ "have no AF_UNIX support on this platform. This is "
+ "probably a bug.",
+ p->virtual_port);
+ rend_service_free(service);
+ return -1;
#endif /* defined(HAVE_SYS_UN_H) */
- }
}
- /* The service passed all the checks */
- tor_assert(s_list);
- smartlist_add(s_list, service);
- return 0;
}
- /* NOTREACHED */
+ /* The service passed all the checks */
+ tor_assert(s_list);
+ smartlist_add(s_list, service);
+ return 0;
}
/** Return a new rend_service_port_config_t with its path set to
@@ -555,18 +531,34 @@ rend_service_check_dir_and_add(smartlist_t *service_list,
return rend_add_service(s_list, service);
}
-/* If this is a reload and there were hidden services configured before,
- * keep the introduction points that are still needed and close the
- * other ones. */
+/* Helper: Actual implementation of the pruning on reload which we've
+ * decoupled in order to make the unit test workeable without ugly hacks.
+ * Furthermore, this function does NOT free any memory but will nullify the
+ * temporary list pointer whatever happens. */
STATIC void
-prune_services_on_reload(smartlist_t *old_service_list,
- smartlist_t *new_service_list)
+rend_service_prune_list_impl_(void)
{
origin_circuit_t *ocirc = NULL;
- smartlist_t *surviving_services = NULL;
+ smartlist_t *surviving_services, *old_service_list, *new_service_list;
- tor_assert(old_service_list);
- tor_assert(new_service_list);
+ /* When pruning our current service list, we must have a staging list that
+ * contains what we want to check else it's a code flow error. */
+ tor_assert(rend_service_staging_list);
+
+ /* We are about to prune the current list of its dead service so set the
+ * semantic for that list to be the "old" one. */
+ old_service_list = rend_service_list;
+ /* The staging list is now the "new" list so set this semantic. */
+ new_service_list = rend_service_staging_list;
+ /* After this, whatever happens, we'll use our new list. */
+ rend_service_list = new_service_list;
+ /* Finally, nullify the staging list pointer as we don't need it anymore
+ * and it needs to be NULL before the next reload. */
+ rend_service_staging_list = NULL;
+ /* Nothing to prune if we have no service list so stop right away. */
+ if (!old_service_list) {
+ return;
+ }
/* This contains all _existing_ services that survives the relaod that is
* that haven't been removed from the configuration. The difference between
@@ -644,6 +636,27 @@ prune_services_on_reload(smartlist_t *old_service_list,
smartlist_free(surviving_services);
}
+/* Try to prune our main service list using the temporary one that we just
+ * loaded and parsed successfully. The pruning process decides which onion
+ * services to keep and which to discard after a reload. */
+void
+rend_service_prune_list(void)
+{
+ smartlist_t *old_service_list = rend_service_list;
+ /* Don't try to prune anything if we have no staging list. */
+ if (!rend_service_staging_list) {
+ return;
+ }
+ rend_service_prune_list_impl_();
+ if (old_service_list) {
+ /* Every remaining service in the old list have been removed from the
+ * configuration so clean them up safely. */
+ SMARTLIST_FOREACH(old_service_list, rend_service_t *, s,
+ rend_service_free(s));
+ smartlist_free(old_service_list);
+ }
+}
+
/** Set up rend_service_list, based on the values of HiddenServiceDir and
* HiddenServicePort in <b>options</b>. Return 0 on success and -1 on
* failure. (If <b>validate_only</b> is set, parse, warn and return as
@@ -655,24 +668,30 @@ rend_config_services(const or_options_t *options, int validate_only)
config_line_t *line;
rend_service_t *service = NULL;
rend_service_port_config_t *portcfg;
- smartlist_t *old_service_list = NULL;
- smartlist_t *temp_service_list = NULL;
int ok = 0;
int rv = -1;
- /* Use a temporary service list, so that we can check the new services'
- * consistency with each other */
- temp_service_list = smartlist_new();
+ /* Use the staging service list so that we can check then do the pruning
+ * process using the main list at the end. */
+ if (rend_service_staging_list == NULL) {
+ rend_service_staging_list = smartlist_new();
+ }
for (line = options->RendConfigLines; line; line = line->next) {
if (!strcasecmp(line->key, "HiddenServiceDir")) {
- /* register the service we just finished parsing
- * this code registers every service except the last one parsed,
- * which is registered below the loop */
- if (rend_service_check_dir_and_add(temp_service_list, options, service,
- validate_only) < 0) {
- service = NULL;
- goto free_and_return;
+ if (service) {
+ /* Validate and register the service we just finished parsing this
+ * code registers every service except the last one parsed, which is
+ * validated and registered below the loop. */
+ if (rend_validate_service(rend_service_staging_list, service) < 0) {
+ goto free_and_return;
+ }
+ if (rend_service_check_dir_and_add(rend_service_staging_list, options,
+ service, validate_only) < 0) {
+ /* The above frees the service on error so nullify the pointer. */
+ service = NULL;
+ goto free_and_return;
+ }
}
service = tor_malloc_zero(sizeof(rend_service_t));
service->directory = tor_strdup(line->value);
@@ -867,14 +886,23 @@ rend_config_services(const or_options_t *options, int validate_only)
}
}
}
+ /* Validate the last service that we just parsed. */
+ if (service &&
+ rend_validate_service(rend_service_staging_list, service) < 0) {
+ goto free_and_return;
+ }
/* register the final service after we have finished parsing all services
* this code only registers the last service, other services are registered
* within the loop. It is ok for this service to be NULL, it is ignored. */
- if (rend_service_check_dir_and_add(temp_service_list, options, service,
- validate_only) < 0) {
+ if (rend_service_check_dir_and_add(rend_service_staging_list, options,
+ service, validate_only) < 0) {
+ /* Service object is freed on error so nullify pointer. */
service = NULL;
goto free_and_return;
}
+ /* The service is in the staging list so nullify pointer to avoid double
+ * free of this object in case of error because we lost ownership of it at
+ * this point. */
service = NULL;
/* Free the newly added services if validating */
@@ -883,31 +911,19 @@ rend_config_services(const or_options_t *options, int validate_only)
goto free_and_return;
}
- /* Otherwise, use the newly added services as the new service list
- * Since we have now replaced the global service list, from this point on we
- * must succeed, or die trying. */
- old_service_list = rend_service_list;
- rend_service_list = temp_service_list;
- temp_service_list = NULL;
-
- /* If this is a reload and there were hidden services configured before,
- * keep the introduction points that are still needed and close the
- * other ones. */
- if (old_service_list && !validate_only) {
- prune_services_on_reload(old_service_list, rend_service_list);
- /* Every remaining service in the old list have been removed from the
- * configuration so clean them up safely. */
- SMARTLIST_FOREACH(old_service_list, rend_service_t *, s,
- rend_service_free(s));
- smartlist_free(old_service_list);
- }
+ /* This could be a reload of configuration so try to prune the main list
+ * using the staging one. And we know we are not in validate mode here.
+ * After this, the main and staging list will point to the right place and
+ * be in a quiescent usable state. */
+ rend_service_prune_list();
return 0;
free_and_return:
rend_service_free(service);
- SMARTLIST_FOREACH(temp_service_list, rend_service_t *, ptr,
+ SMARTLIST_FOREACH(rend_service_staging_list, rend_service_t *, ptr,
rend_service_free(ptr));
- smartlist_free(temp_service_list);
+ smartlist_free(rend_service_staging_list);
+ rend_service_staging_list = NULL;
return rv;
}
@@ -1041,6 +1057,45 @@ rend_service_del_ephemeral(const char *service_id)
return 0;
}
+/* There can be 1 second's delay due to second_elapsed_callback, and perhaps
+ * another few seconds due to blocking calls. */
+#define INTRO_CIRC_RETRY_PERIOD_SLOP 10
+
+/** Log information about the intro point creation rate and current intro
+ * points for service, upgrading the log level from min_severity to warn if
+ * we have stopped launching new intro point circuits. */
+static void
+rend_log_intro_limit(const rend_service_t *service, int min_severity)
+{
+ int exceeded_limit = (service->n_intro_circuits_launched >=
+ rend_max_intro_circs_per_period(
+ service->n_intro_points_wanted));
+ int severity = min_severity;
+ /* We stopped creating circuits */
+ if (exceeded_limit) {
+ severity = LOG_WARN;
+ }
+ time_t intro_period_elapsed = time(NULL) - service->intro_period_started;
+ tor_assert_nonfatal(intro_period_elapsed >= 0);
+ {
+ char *msg;
+ static ratelim_t rlimit = RATELIM_INIT(INTRO_CIRC_RETRY_PERIOD);
+ if ((msg = rate_limit_log(&rlimit, approx_time()))) {
+ log_fn(severity, LD_REND,
+ "Hidden service %s %s %d intro points in the last %d seconds. "
+ "Intro circuit launches are limited to %d per %d seconds.%s",
+ service->service_id,
+ exceeded_limit ? "exceeded launch limit with" : "launched",
+ service->n_intro_circuits_launched,
+ (int)intro_period_elapsed,
+ rend_max_intro_circs_per_period(service->n_intro_points_wanted),
+ INTRO_CIRC_RETRY_PERIOD, msg);
+ rend_service_dump_stats(severity);
+ tor_free(msg);
+ }
+ }
+}
+
/** Replace the old value of <b>service</b>-\>desc with one that reflects
* the other fields in service.
*/
@@ -1048,7 +1103,6 @@ static void
rend_service_update_descriptor(rend_service_t *service)
{
rend_service_descriptor_t *d;
- origin_circuit_t *circ;
int i;
rend_service_descriptor_free(service->desc);
@@ -1069,9 +1123,10 @@ rend_service_update_descriptor(rend_service_t *service)
/* This intro point won't be listed in the descriptor... */
intro_svc->listed_in_last_desc = 0;
- circ = find_intro_circuit(intro_svc, service->pk_digest);
- if (!circ || circ->base_.purpose != CIRCUIT_PURPOSE_S_INTRO) {
- /* This intro point's circuit isn't finished yet. Don't list it. */
+ /* circuit_established is set in rend_service_intro_established(), and
+ * checked every second in rend_consider_services_intro_points(), so it's
+ * safe to use it here */
+ if (!intro_svc->circuit_established) {
continue;
}
@@ -1093,6 +1148,26 @@ rend_service_update_descriptor(rend_service_t *service)
intro_svc->time_published = time(NULL);
}
}
+
+ /* Check that we have the right number of intro points */
+ unsigned int have_intro = (unsigned int)smartlist_len(d->intro_nodes);
+ if (have_intro != service->n_intro_points_wanted) {
+ int severity;
+ /* Getting less than we wanted or more than we're allowed is serious */
+ if (have_intro < service->n_intro_points_wanted ||
+ have_intro > NUM_INTRO_POINTS_MAX) {
+ severity = LOG_WARN;
+ } else {
+ /* Getting more than we wanted is weird, but less of a problem */
+ severity = LOG_NOTICE;
+ }
+ log_fn(severity, LD_REND, "Hidden service %s wanted %d intro points, but "
+ "descriptor was updated with %d instead.",
+ service->service_id,
+ service->n_intro_points_wanted, have_intro);
+ /* Now log an informative message about how we might have got here. */
+ rend_log_intro_limit(service, severity);
+ }
}
/* Allocate and return a string containing the path to file_name in
@@ -1250,7 +1325,8 @@ poison_new_single_onion_hidden_service_dir_impl(const rend_service_t *service,
}
/* Make sure the directory was created before calling this function. */
- if (BUG(rend_service_check_private_dir_impl(options, service, 0) < 0))
+ if (BUG(hs_check_service_private_dir(options->User, service->directory,
+ service->dir_group_readable, 0) < 0))
return -1;
poison_fname = rend_service_sos_poison_path(service);
@@ -1400,32 +1476,6 @@ rend_service_derive_key_digests(struct rend_service_t *s)
return 0;
}
-/* Implements the directory check from rend_service_check_private_dir,
- * without doing the single onion poison checks. */
-static int
-rend_service_check_private_dir_impl(const or_options_t *options,
- const rend_service_t *s,
- int create)
-{
- cpd_check_t check_opts = CPD_NONE;
- if (create) {
- check_opts |= CPD_CREATE;
- } else {
- check_opts |= CPD_CHECK_MODE_ONLY;
- check_opts |= CPD_CHECK;
- }
- if (s->dir_group_readable) {
- check_opts |= CPD_GROUP_READ;
- }
- /* Check/create directory */
- if (check_private_dir(s->directory, check_opts, options->User) < 0) {
- log_warn(LD_REND, "Checking service directory %s failed.", s->directory);
- return -1;
- }
-
- return 0;
-}
-
/** Make sure that the directory for <b>s</b> is private, using the config in
* <b>options</b>.
* If <b>create</b> is true:
@@ -1446,7 +1496,8 @@ rend_service_check_private_dir(const or_options_t *options,
}
/* Check/create directory */
- if (rend_service_check_private_dir_impl(options, s, create) < 0) {
+ if (hs_check_service_private_dir(options->User, s->directory,
+ s->dir_group_readable, create) < 0) {
return -1;
}
@@ -2108,7 +2159,7 @@ rend_service_receive_introduction(origin_circuit_t *circuit,
/* Launch a circuit to the client's chosen rendezvous point.
*/
- int max_rend_failures=get_max_rend_failures();
+ int max_rend_failures=hs_get_service_max_rend_failures();
for (i=0;i<max_rend_failures;i++) {
int flags = CIRCLAUNCH_NEED_CAPACITY | CIRCLAUNCH_IS_INTERNAL;
if (circ_needs_uptime) flags |= CIRCLAUNCH_NEED_UPTIME;
@@ -2771,7 +2822,14 @@ rend_service_decrypt_intro(
/* Check that this cell actually matches this service key */
/* first DIGEST_LEN bytes of request is intro or service pk digest */
- crypto_pk_get_digest(key, (char *)key_digest);
+ if (crypto_pk_get_digest(key, (char *)key_digest) < 0) {
+ if (err_msg_out)
+ *err_msg_out = tor_strdup("Couldn't compute RSA digest.");
+ log_warn(LD_BUG, "Couldn't compute key digest.");
+ status = -7;
+ goto err;
+ }
+
if (tor_memneq(key_digest, intro->pk, DIGEST_LEN)) {
if (err_msg_out) {
base32_encode(service_id, REND_SERVICE_ID_LEN_BASE32 + 1,
@@ -3010,10 +3068,10 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc)
}
oldcirc->hs_service_side_rend_circ_has_been_relaunched = 1;
- /* We check failure_count >= get_max_rend_failures()-1 below, and the -1
- * is because we increment the failure count for our current failure
+ /* We check failure_count >= hs_get_service_max_rend_failures()-1 below, and
+ * the -1 is because we increment the failure count for our current failure
* *after* this clause. */
- int max_rend_failures = get_max_rend_failures() - 1;
+ int max_rend_failures = hs_get_service_max_rend_failures() - 1;
if (!oldcirc->build_state ||
oldcirc->build_state->failure_count >= max_rend_failures ||
@@ -3692,13 +3750,16 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
* request. Lookup is made in rend_service_desc_has_uploaded(). */
rend_data = rend_data_client_create(service_id, desc->desc_id, NULL,
REND_NO_AUTH);
- directory_initiate_command_routerstatus_rend(hs_dir,
- DIR_PURPOSE_UPLOAD_RENDDESC_V2,
- ROUTER_PURPOSE_GENERAL,
- DIRIND_ANONYMOUS, NULL,
- desc->desc_str,
- strlen(desc->desc_str),
- 0, rend_data, NULL);
+ directory_request_t *req =
+ directory_request_new(DIR_PURPOSE_UPLOAD_RENDDESC_V2);
+ directory_request_set_routerstatus(req, hs_dir);
+ directory_request_set_indirection(req, DIRIND_ANONYMOUS);
+ directory_request_set_payload(req,
+ desc->desc_str, strlen(desc->desc_str));
+ directory_request_set_rend_query(req, rend_data);
+ directory_initiate_request(req);
+ directory_request_free(req);
+
rend_data_free(rend_data);
base32_encode(desc_id_base32, sizeof(desc_id_base32),
desc->desc_id, DIGEST_LEN);
@@ -4051,7 +4112,12 @@ rend_max_intro_circs_per_period(unsigned int n_intro_points_wanted)
/* Allow all but one of the initial connections to fail and be
* retried. (If all fail, we *want* to wait, because something is broken.) */
tor_assert(n_intro_points_wanted <= NUM_INTRO_POINTS_MAX);
- return (int)(2*n_intro_points_wanted + NUM_INTRO_POINTS_EXTRA);
+
+ /* For the normal use case, 3 intro points plus 2 extra for performance and
+ * allow that twice because once every 24h or so, we can do it twice for two
+ * descriptors that is the current one and the next one. So (3 + 2) * 2 ==
+ * 12 allowed attempts for one period. */
+ return ((n_intro_points_wanted + NUM_INTRO_POINTS_EXTRA) * 2);
}
/** For every service, check how many intro points it currently has, and:
@@ -4104,8 +4170,12 @@ rend_consider_services_intro_points(void)
/* This retry period is important here so we don't stress circuit
* creation. */
+
if (now > service->intro_period_started + INTRO_CIRC_RETRY_PERIOD) {
- /* One period has elapsed; we can try building circuits again. */
+ /* One period has elapsed:
+ * - if we stopped, we can try building circuits again,
+ * - if we haven't, we reset the circuit creation counts. */
+ rend_log_intro_limit(service, LOG_INFO);
service->intro_period_started = now;
service->n_intro_circuits_launched = 0;
} else if (service->n_intro_circuits_launched >=
@@ -4113,6 +4183,7 @@ rend_consider_services_intro_points(void)
service->n_intro_points_wanted)) {
/* We have failed too many times in this period; wait for the next
* one before we try to initiate any more connections. */
+ rend_log_intro_limit(service, LOG_WARN);
continue;
}
@@ -4165,8 +4236,6 @@ rend_consider_services_intro_points(void)
const node_t *node;
rend_intro_point_t *intro;
router_crn_flags_t flags = CRN_NEED_UPTIME|CRN_NEED_DESC;
- if (get_options()->AllowInvalid_ & ALLOW_INVALID_INTRODUCTION)
- flags |= CRN_ALLOW_INVALID;
router_crn_flags_t direct_flags = flags;
direct_flags |= CRN_PREF_ADDR;
direct_flags |= CRN_DIRECT_CONN;
@@ -4558,3 +4627,19 @@ rend_service_non_anonymous_mode_enabled(const or_options_t *options)
return options->HiddenServiceNonAnonymousMode ? 1 : 0;
}
+#ifdef TOR_UNIT_TESTS
+
+STATIC void
+set_rend_service_list(smartlist_t *new_list)
+{
+ rend_service_list = new_list;
+}
+
+STATIC void
+set_rend_rend_service_staging_list(smartlist_t *new_list)
+{
+ rend_service_staging_list = new_list;
+}
+
+#endif /* TOR_UNIT_TESTS */
+
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index 85daaae4e2..1583a6010b 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -133,13 +133,19 @@ STATIC ssize_t encode_establish_intro_cell_legacy(char *cell_body_out,
size_t cell_body_out_len,
crypto_pk_t *intro_key,
char *rend_circ_nonce);
-STATIC void prune_services_on_reload(smartlist_t *old_service_list,
- smartlist_t *new_service_list);
+#ifdef TOR_UNIT_TESTS
-#endif
+STATIC void set_rend_service_list(smartlist_t *new_list);
+STATIC void set_rend_rend_service_staging_list(smartlist_t *new_list);
+STATIC void rend_service_prune_list_impl_(void);
+
+#endif /* TOR_UNIT_TESTS */
+
+#endif /* RENDSERVICE_PRIVATE */
int num_rend_services(void);
int rend_config_services(const or_options_t *options, int validate_only);
+void rend_service_prune_list(void);
int rend_service_load_all_keys(const smartlist_t *service_list);
void rend_services_add_filenames_to_lists(smartlist_t *open_lst,
smartlist_t *stat_lst);
diff --git a/src/or/rephist.c b/src/or/rephist.c
index f0bac57898..ffc1867955 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -84,9 +84,13 @@
#include "router.h"
#include "routerlist.h"
#include "ht.h"
+#include "channelpadding.h"
+
+#include "channelpadding.h"
+#include "connection_or.h"
static void bw_arrays_init(void);
-static void predicted_ports_init(void);
+static void predicted_ports_alloc(void);
/** Total number of bytes currently allocated in fields used by rephist.c. */
uint64_t rephist_total_alloc=0;
@@ -165,6 +169,44 @@ typedef struct or_history_t {
digestmap_t *link_history_map;
} or_history_t;
+/**
+ * This structure holds accounting needed to calculate the padding overhead.
+ */
+typedef struct padding_counts_t {
+ /** Total number of cells we have received, including padding */
+ uint64_t read_cell_count;
+ /** Total number of cells we have sent, including padding */
+ uint64_t write_cell_count;
+ /** Total number of CELL_PADDING cells we have received */
+ uint64_t read_pad_cell_count;
+ /** Total number of CELL_PADDING cells we have sent */
+ uint64_t write_pad_cell_count;
+ /** Total number of read cells on padding-enabled conns */
+ uint64_t enabled_read_cell_count;
+ /** Total number of sent cells on padding-enabled conns */
+ uint64_t enabled_write_cell_count;
+ /** Total number of read CELL_PADDING cells on padding-enabled cons */
+ uint64_t enabled_read_pad_cell_count;
+ /** Total number of sent CELL_PADDING cells on padding-enabled cons */
+ uint64_t enabled_write_pad_cell_count;
+ /** Total number of RELAY_DROP cells we have received */
+ uint64_t read_drop_cell_count;
+ /** Total number of RELAY_DROP cells we have sent */
+ uint64_t write_drop_cell_count;
+ /** The maximum number of padding timers we've seen in 24 hours */
+ uint64_t maximum_chanpad_timers;
+ /** When did we first copy padding_current into padding_published? */
+ char first_published_at[ISO_TIME_LEN+1];
+} padding_counts_t;
+
+/** Holds the current values of our padding statistics.
+ * It is not published until it is transferred to padding_published. */
+static padding_counts_t padding_current;
+
+/** Remains fixed for a 24 hour period, and then is replaced
+ * by a redacted copy of padding_current */
+static padding_counts_t padding_published;
+
/** When did we last multiply all routers' weighted_run_length and
* total_run_weights by STABILITY_ALPHA? */
static time_t stability_last_downrated = 0;
@@ -264,7 +306,7 @@ rep_hist_init(void)
{
history_map = digestmap_new();
bw_arrays_init();
- predicted_ports_init();
+ predicted_ports_alloc();
}
/** Helper: note that we are no longer connected to the router with history
@@ -905,9 +947,9 @@ rep_hist_record_mtbf_data(time_t now, int missing_means_down)
base16_encode(dbuf, sizeof(dbuf), digest, DIGEST_LEN);
if (missing_means_down && hist->start_of_run &&
- !router_get_by_id_digest(digest)) {
+ !connection_or_digest_is_known_relay(digest)) {
/* We think this relay is running, but it's not listed in our
- * routerlist. Somehow it fell out without telling us it went
+ * consensus. Somehow it fell out without telling us it went
* down. Complain and also correct it. */
log_info(LD_HIST,
"Relay '%s' is listed as up in rephist, but it's not in "
@@ -1758,6 +1800,40 @@ typedef struct predicted_port_t {
/** A list of port numbers that have been used recently. */
static smartlist_t *predicted_ports_list=NULL;
+/** How long do we keep predicting circuits? */
+static int prediction_timeout=0;
+/** When was the last time we added a prediction entry (HS or port) */
+static time_t last_prediction_add_time=0;
+
+/**
+ * How much time left until we stop predicting circuits?
+ */
+int
+predicted_ports_prediction_time_remaining(time_t now)
+{
+ time_t idle_delta = now - last_prediction_add_time;
+
+ /* Protect against overflow of return value. This can happen if the clock
+ * jumps backwards in time. Update the last prediction time (aka last
+ * active time) to prevent it. This update is preferable to using monotonic
+ * time because it prevents clock jumps into the past from simply causing
+ * very long idle timeouts while the monotonic time stands still. */
+ if (last_prediction_add_time > now) {
+ last_prediction_add_time = now;
+ idle_delta = 0;
+ }
+
+ /* Protect against underflow of the return value. This can happen for very
+ * large periods of inactivity/system sleep. */
+ if (idle_delta > prediction_timeout)
+ return 0;
+
+ if (BUG((prediction_timeout - idle_delta) > INT_MAX)) {
+ return INT_MAX;
+ }
+
+ return (int)(prediction_timeout - idle_delta);
+}
/** We just got an application request for a connection with
* port <b>port</b>. Remember it for the future, so we can keep
@@ -1767,21 +1843,40 @@ static void
add_predicted_port(time_t now, uint16_t port)
{
predicted_port_t *pp = tor_malloc(sizeof(predicted_port_t));
+
+ // If the list is empty, re-randomize predicted ports lifetime
+ if (!any_predicted_circuits(now)) {
+ prediction_timeout = channelpadding_get_circuits_available_timeout();
+ }
+
+ last_prediction_add_time = now;
+
+ log_info(LD_CIRC,
+ "New port prediction added. Will continue predictive circ building "
+ "for %d more seconds.",
+ predicted_ports_prediction_time_remaining(now));
+
pp->port = port;
pp->time = now;
rephist_total_alloc += sizeof(*pp);
smartlist_add(predicted_ports_list, pp);
}
-/** Initialize whatever memory and structs are needed for predicting
+/**
+ * Allocate whatever memory and structs are needed for predicting
* which ports will be used. Also seed it with port 80, so we'll build
* circuits on start-up.
*/
static void
-predicted_ports_init(void)
+predicted_ports_alloc(void)
{
predicted_ports_list = smartlist_new();
- add_predicted_port(time(NULL), 80); /* add one to kickstart us */
+}
+
+void
+predicted_ports_init(void)
+{
+ add_predicted_port(time(NULL), 443); // Add a port to get us started
}
/** Free whatever memory is needed for predicting which ports will
@@ -1812,6 +1907,12 @@ rep_hist_note_used_port(time_t now, uint16_t port)
SMARTLIST_FOREACH_BEGIN(predicted_ports_list, predicted_port_t *, pp) {
if (pp->port == port) {
pp->time = now;
+
+ last_prediction_add_time = now;
+ log_info(LD_CIRC,
+ "New port prediction added. Will continue predictive circ "
+ "building for %d more seconds.",
+ predicted_ports_prediction_time_remaining(now));
return;
}
} SMARTLIST_FOREACH_END(pp);
@@ -1828,7 +1929,8 @@ rep_hist_get_predicted_ports(time_t now)
int predicted_circs_relevance_time;
smartlist_t *out = smartlist_new();
tor_assert(predicted_ports_list);
- predicted_circs_relevance_time = get_options()->PredictedPortsRelevanceTime;
+
+ predicted_circs_relevance_time = prediction_timeout;
/* clean out obsolete entries */
SMARTLIST_FOREACH_BEGIN(predicted_ports_list, predicted_port_t *, pp) {
@@ -1888,6 +1990,18 @@ static time_t predicted_internal_capacity_time = 0;
void
rep_hist_note_used_internal(time_t now, int need_uptime, int need_capacity)
{
+ // If the list is empty, re-randomize predicted ports lifetime
+ if (!any_predicted_circuits(now)) {
+ prediction_timeout = channelpadding_get_circuits_available_timeout();
+ }
+
+ last_prediction_add_time = now;
+
+ log_info(LD_CIRC,
+ "New port prediction added. Will continue predictive circ building "
+ "for %d more seconds.",
+ predicted_ports_prediction_time_remaining(now));
+
predicted_internal_time = now;
if (need_uptime)
predicted_internal_uptime_time = now;
@@ -1901,7 +2015,8 @@ rep_hist_get_predicted_internal(time_t now, int *need_uptime,
int *need_capacity)
{
int predicted_circs_relevance_time;
- predicted_circs_relevance_time = get_options()->PredictedPortsRelevanceTime;
+
+ predicted_circs_relevance_time = prediction_timeout;
if (!predicted_internal_time) { /* initialize it */
predicted_internal_time = now;
@@ -1923,7 +2038,7 @@ int
any_predicted_circuits(time_t now)
{
int predicted_circs_relevance_time;
- predicted_circs_relevance_time = get_options()->PredictedPortsRelevanceTime;
+ predicted_circs_relevance_time = prediction_timeout;
return smartlist_len(predicted_ports_list) ||
predicted_internal_time + predicted_circs_relevance_time >= now;
@@ -3210,8 +3325,7 @@ rep_hist_hs_stats_write(time_t now)
return start_of_hs_stats_interval + WRITE_STATS_INTERVAL;
}
-#define MAX_LINK_PROTO_TO_LOG 4
-static uint64_t link_proto_count[MAX_LINK_PROTO_TO_LOG+1][2];
+static uint64_t link_proto_count[MAX_LINK_PROTO+1][2];
/** Note that we negotiated link protocol version <b>link_proto</b>, on
* a connection that started here iff <b>started_here</b> is true.
@@ -3220,7 +3334,7 @@ void
rep_hist_note_negotiated_link_proto(unsigned link_proto, int started_here)
{
started_here = !!started_here; /* force to 0 or 1 */
- if (link_proto > MAX_LINK_PROTO_TO_LOG) {
+ if (link_proto > MAX_LINK_PROTO) {
log_warn(LD_BUG, "Can't log link protocol %u", link_proto);
return;
}
@@ -3228,6 +3342,165 @@ rep_hist_note_negotiated_link_proto(unsigned link_proto, int started_here)
link_proto_count[link_proto][started_here]++;
}
+/**
+ * Update the maximum count of total pending channel padding timers
+ * in this period.
+ */
+void
+rep_hist_padding_count_timers(uint64_t num_timers)
+{
+ if (num_timers > padding_current.maximum_chanpad_timers) {
+ padding_current.maximum_chanpad_timers = num_timers;
+ }
+}
+
+/**
+ * Count a cell that we sent for padding overhead statistics.
+ *
+ * RELAY_COMMAND_DROP and CELL_PADDING are accounted separately. Both should be
+ * counted for PADDING_TYPE_TOTAL.
+ */
+void
+rep_hist_padding_count_write(padding_type_t type)
+{
+ switch (type) {
+ case PADDING_TYPE_DROP:
+ padding_current.write_drop_cell_count++;
+ break;
+ case PADDING_TYPE_CELL:
+ padding_current.write_pad_cell_count++;
+ break;
+ case PADDING_TYPE_TOTAL:
+ padding_current.write_cell_count++;
+ break;
+ case PADDING_TYPE_ENABLED_TOTAL:
+ padding_current.enabled_write_cell_count++;
+ break;
+ case PADDING_TYPE_ENABLED_CELL:
+ padding_current.enabled_write_pad_cell_count++;
+ break;
+ }
+}
+
+/**
+ * Count a cell that we've received for padding overhead statistics.
+ *
+ * RELAY_COMMAND_DROP and CELL_PADDING are accounted separately. Both should be
+ * counted for PADDING_TYPE_TOTAL.
+ */
+void
+rep_hist_padding_count_read(padding_type_t type)
+{
+ switch (type) {
+ case PADDING_TYPE_DROP:
+ padding_current.read_drop_cell_count++;
+ break;
+ case PADDING_TYPE_CELL:
+ padding_current.read_pad_cell_count++;
+ break;
+ case PADDING_TYPE_TOTAL:
+ padding_current.read_cell_count++;
+ break;
+ case PADDING_TYPE_ENABLED_TOTAL:
+ padding_current.enabled_read_cell_count++;
+ break;
+ case PADDING_TYPE_ENABLED_CELL:
+ padding_current.enabled_read_pad_cell_count++;
+ break;
+ }
+}
+
+/**
+ * Reset our current padding statistics. Called once every 24 hours.
+ */
+void
+rep_hist_reset_padding_counts(void)
+{
+ memset(&padding_current, 0, sizeof(padding_current));
+}
+
+/**
+ * Copy our current cell counts into a structure for listing in our
+ * extra-info descriptor. Also perform appropriate rounding and redaction.
+ *
+ * This function is called once every 24 hours.
+ */
+#define MIN_CELL_COUNTS_TO_PUBLISH 1
+#define ROUND_CELL_COUNTS_TO 10000
+void
+rep_hist_prep_published_padding_counts(time_t now)
+{
+ memcpy(&padding_published, &padding_current, sizeof(padding_published));
+
+ if (padding_published.read_cell_count < MIN_CELL_COUNTS_TO_PUBLISH ||
+ padding_published.write_cell_count < MIN_CELL_COUNTS_TO_PUBLISH) {
+ memset(&padding_published, 0, sizeof(padding_published));
+ return;
+ }
+
+ format_iso_time(padding_published.first_published_at, now);
+#define ROUND_AND_SET_COUNT(x) (x) = round_uint64_to_next_multiple_of((x), \
+ ROUND_CELL_COUNTS_TO)
+ ROUND_AND_SET_COUNT(padding_published.read_pad_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.write_pad_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.read_drop_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.write_drop_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.write_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.read_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.enabled_read_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.enabled_read_pad_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.enabled_write_cell_count);
+ ROUND_AND_SET_COUNT(padding_published.enabled_write_pad_cell_count);
+#undef ROUND_AND_SET_COUNT
+}
+
+/**
+ * Returns an allocated string for extra-info documents for publishing
+ * padding statistics from the last 24 hour interval.
+ */
+char *
+rep_hist_get_padding_count_lines(void)
+{
+ char *result = NULL;
+
+ if (!padding_published.read_cell_count ||
+ !padding_published.write_cell_count) {
+ return NULL;
+ }
+
+ tor_asprintf(&result, "padding-counts %s (%d s)"
+ " bin-size="U64_FORMAT
+ " write-drop="U64_FORMAT
+ " write-pad="U64_FORMAT
+ " write-total="U64_FORMAT
+ " read-drop="U64_FORMAT
+ " read-pad="U64_FORMAT
+ " read-total="U64_FORMAT
+ " enabled-read-pad="U64_FORMAT
+ " enabled-read-total="U64_FORMAT
+ " enabled-write-pad="U64_FORMAT
+ " enabled-write-total="U64_FORMAT
+ " max-chanpad-timers="U64_FORMAT
+ "\n",
+ padding_published.first_published_at,
+ REPHIST_CELL_PADDING_COUNTS_INTERVAL,
+ U64_PRINTF_ARG(ROUND_CELL_COUNTS_TO),
+ U64_PRINTF_ARG(padding_published.write_drop_cell_count),
+ U64_PRINTF_ARG(padding_published.write_pad_cell_count),
+ U64_PRINTF_ARG(padding_published.write_cell_count),
+ U64_PRINTF_ARG(padding_published.read_drop_cell_count),
+ U64_PRINTF_ARG(padding_published.read_pad_cell_count),
+ U64_PRINTF_ARG(padding_published.read_cell_count),
+ U64_PRINTF_ARG(padding_published.enabled_read_pad_cell_count),
+ U64_PRINTF_ARG(padding_published.enabled_read_cell_count),
+ U64_PRINTF_ARG(padding_published.enabled_write_pad_cell_count),
+ U64_PRINTF_ARG(padding_published.enabled_write_cell_count),
+ U64_PRINTF_ARG(padding_published.maximum_chanpad_timers)
+ );
+
+ return result;
+}
+
/** Log a heartbeat message explaining how many connections of each link
* protocol version we have used.
*/
diff --git a/src/or/rephist.h b/src/or/rephist.h
index ff4810a56d..2b1c2e7ec7 100644
--- a/src/or/rephist.h
+++ b/src/or/rephist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -48,6 +48,7 @@ double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when);
long rep_hist_get_weighted_time_known(const char *id, time_t when);
int rep_hist_have_measured_enough_stability(void);
+void predicted_ports_init(void);
void rep_hist_note_used_port(time_t now, uint16_t port);
smartlist_t *rep_hist_get_predicted_ports(time_t now);
void rep_hist_remove_predicted_ports(const smartlist_t *rmv_ports);
@@ -59,6 +60,7 @@ int rep_hist_get_predicted_internal(time_t now, int *need_uptime,
int any_predicted_circuits(time_t now);
int rep_hist_circbuilding_dormant(time_t now);
+int predicted_ports_prediction_time_remaining(time_t now);
void note_crypto_pk_op(pk_op_t operation);
void dump_pk_ops(int severity);
@@ -119,5 +121,30 @@ extern int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
#endif
+/**
+ * Represents the type of a cell for padding accounting
+ */
+typedef enum padding_type_t {
+ /** A RELAY_DROP cell */
+ PADDING_TYPE_DROP,
+ /** A CELL_PADDING cell */
+ PADDING_TYPE_CELL,
+ /** Total counts of padding and non-padding together */
+ PADDING_TYPE_TOTAL,
+ /** Total cell counts for all padding-enabled channels */
+ PADDING_TYPE_ENABLED_TOTAL,
+ /** CELL_PADDING counts for all padding-enabled channels */
+ PADDING_TYPE_ENABLED_CELL
+} padding_type_t;
+
+/** The amount of time over which the padding cell counts were counted */
+#define REPHIST_CELL_PADDING_COUNTS_INTERVAL (24*60*60)
+void rep_hist_padding_count_read(padding_type_t type);
+void rep_hist_padding_count_write(padding_type_t type);
+char *rep_hist_get_padding_count_lines(void);
+void rep_hist_reset_padding_counts(void);
+void rep_hist_prep_published_padding_counts(time_t now);
+void rep_hist_padding_count_timers(uint64_t num_timers);
+
#endif
diff --git a/src/or/replaycache.c b/src/or/replaycache.c
index 8290fa6964..3d42deb90a 100644
--- a/src/or/replaycache.c
+++ b/src/or/replaycache.c
@@ -1,4 +1,4 @@
- /* Copyright (c) 2012-2016, The Tor Project, Inc. */
+ /* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/replaycache.h b/src/or/replaycache.h
index 64a6caf5f5..0d637939a4 100644
--- a/src/or/replaycache.h
+++ b/src/or/replaycache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/router.c b/src/or/router.c
index 53f213210e..5405d31260 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTER_PRIVATE
@@ -131,7 +131,8 @@ get_onion_key(void)
}
/** Store a full copy of the current onion key into *<b>key</b>, and a full
- * copy of the most recent onion key into *<b>last</b>.
+ * copy of the most recent onion key into *<b>last</b>. Store NULL into
+ * a pointer if the corresponding key does not exist.
*/
void
dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
@@ -139,8 +140,10 @@ dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
tor_assert(key);
tor_assert(last);
tor_mutex_acquire(key_lock);
- tor_assert(onionkey);
- *key = crypto_pk_copy_full(onionkey);
+ if (onionkey)
+ *key = crypto_pk_copy_full(onionkey);
+ else
+ *key = NULL;
if (lastonionkey)
*last = crypto_pk_copy_full(lastonionkey);
else
@@ -148,6 +151,51 @@ dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
tor_mutex_release(key_lock);
}
+/** Expire our old set of onion keys. This is done by setting
+ * last_curve25519_onion_key and lastonionkey to all zero's and NULL
+ * respectively.
+ *
+ * This function does not perform any grace period checks for the old onion
+ * keys.
+ */
+void
+expire_old_onion_keys(void)
+{
+ char *fname = NULL;
+
+ tor_mutex_acquire(key_lock);
+
+ /* Free lastonionkey and set it to NULL. */
+ if (lastonionkey) {
+ crypto_pk_free(lastonionkey);
+ lastonionkey = NULL;
+ }
+
+ /* We zero out the keypair. See the tor_mem_is_zero() check made in
+ * construct_ntor_key_map() below. */
+ memset(&last_curve25519_onion_key, 0, sizeof(last_curve25519_onion_key));
+
+ tor_mutex_release(key_lock);
+
+ fname = get_datadir_fname2("keys", "secret_onion_key.old");
+ if (file_status(fname) == FN_FILE) {
+ if (tor_unlink(fname) != 0) {
+ log_warn(LD_FS, "Couldn't unlink old onion key file %s: %s",
+ fname, strerror(errno));
+ }
+ }
+ tor_free(fname);
+
+ fname = get_datadir_fname2("keys", "secret_onion_key_ntor.old");
+ if (file_status(fname) == FN_FILE) {
+ if (tor_unlink(fname) != 0) {
+ log_warn(LD_FS, "Couldn't unlink old ntor onion key file %s: %s",
+ fname, strerror(errno));
+ }
+ }
+ tor_free(fname);
+}
+
/** Return the current secret onion key for the ntor handshake. Must only
* be called from the main thread. */
static const curve25519_keypair_t *
@@ -162,10 +210,14 @@ construct_ntor_key_map(void)
{
di_digest256_map_t *m = NULL;
- dimap_add_entry(&m,
- curve25519_onion_key.pubkey.public_key,
- tor_memdup(&curve25519_onion_key,
- sizeof(curve25519_keypair_t)));
+ if (!tor_mem_is_zero((const char*)
+ curve25519_onion_key.pubkey.public_key,
+ CURVE25519_PUBKEY_LEN)) {
+ dimap_add_entry(&m,
+ curve25519_onion_key.pubkey.public_key,
+ tor_memdup(&curve25519_onion_key,
+ sizeof(curve25519_keypair_t)));
+ }
if (!tor_mem_is_zero((const char*)
last_curve25519_onion_key.pubkey.public_key,
CURVE25519_PUBKEY_LEN)) {
@@ -212,7 +264,11 @@ set_server_identity_key(crypto_pk_t *k)
{
crypto_pk_free(server_identitykey);
server_identitykey = k;
- crypto_pk_get_digest(server_identitykey, server_identitykey_digest);
+ if (crypto_pk_get_digest(server_identitykey,
+ server_identitykey_digest) < 0) {
+ log_err(LD_BUG, "Couldn't compute our own identity key digest.");
+ tor_assert(0);
+ }
}
/** Make sure that we have set up our identity keys to match or not match as
@@ -683,6 +739,47 @@ v3_authority_check_key_expiry(void)
last_warned = now;
}
+/** Get the lifetime of an onion key in days. This value is defined by the
+ * network consesus parameter "onion-key-rotation-days". Always returns a value
+ * between <b>MIN_ONION_KEY_LIFETIME_DAYS</b> and
+ * <b>MAX_ONION_KEY_LIFETIME_DAYS</b>.
+ */
+static int
+get_onion_key_rotation_days_(void)
+{
+ return networkstatus_get_param(NULL,
+ "onion-key-rotation-days",
+ DEFAULT_ONION_KEY_LIFETIME_DAYS,
+ MIN_ONION_KEY_LIFETIME_DAYS,
+ MAX_ONION_KEY_LIFETIME_DAYS);
+}
+
+/** Get the current lifetime of an onion key in seconds. This value is defined
+ * by the network consesus parameter "onion-key-rotation-days", but the value
+ * is converted to seconds.
+ */
+int
+get_onion_key_lifetime(void)
+{
+ return get_onion_key_rotation_days_()*24*60*60;
+}
+
+/** Get the grace period of an onion key in seconds. This value is defined by
+ * the network consesus parameter "onion-key-grace-period-days", but the value
+ * is converted to seconds.
+ */
+int
+get_onion_key_grace_period(void)
+{
+ int grace_period;
+ grace_period = networkstatus_get_param(NULL,
+ "onion-key-grace-period-days",
+ DEFAULT_ONION_KEY_GRACE_PERIOD_DAYS,
+ MIN_ONION_KEY_GRACE_PERIOD_DAYS,
+ get_onion_key_rotation_days_());
+ return grace_period*24*60*60;
+}
+
/** Set up Tor's TLS contexts, based on our configuration and keys. Return 0
* on success, and -1 on failure. */
int
@@ -693,12 +790,6 @@ router_initialize_tls_context(void)
int lifetime = options->SSLKeyLifetime;
if (public_server_mode(options))
flags |= TOR_TLS_CTX_IS_PUBLIC_SERVER;
- if (options->TLSECGroup) {
- if (!strcasecmp(options->TLSECGroup, "P256"))
- flags |= TOR_TLS_CTX_USE_ECDHE_P256;
- else if (!strcasecmp(options->TLSECGroup, "P224"))
- flags |= TOR_TLS_CTX_USE_ECDHE_P224;
- }
if (!lifetime) { /* we should guess a good ssl cert lifetime */
/* choose between 5 and 365 days, and round to the day */
@@ -876,8 +967,12 @@ init_keys(void)
}
cert = get_my_v3_authority_cert();
if (cert) {
- crypto_pk_get_digest(get_my_v3_authority_cert()->identity_key,
- v3_digest);
+ if (crypto_pk_get_digest(get_my_v3_authority_cert()->identity_key,
+ v3_digest) < 0) {
+ log_err(LD_BUG, "Couldn't compute my v3 authority identity key "
+ "digest.");
+ return -1;
+ }
v3_digest_set = 1;
}
}
@@ -929,7 +1024,7 @@ init_keys(void)
/* We have no LastRotatedOnionKey set; either we just created the key
* or it's a holdover from 0.1.2.4-alpha-dev or earlier. In either case,
* start the clock ticking now so that we will eventually rotate it even
- * if we don't stay up for a full MIN_ONION_KEY_LIFETIME. */
+ * if we don't stay up for the full lifetime of an onion key. */
state->LastRotatedOnionKey = onionkey_set_at = now;
or_state_mark_dirty(state, options->AvoidDiskWrites ?
time(NULL)+3600 : 0);
@@ -1385,14 +1480,23 @@ consider_testing_reachability(int test_or, int test_dir)
!connection_get_by_type_addr_port_purpose(
CONN_TYPE_DIR, &addr, me->dir_port,
DIR_PURPOSE_FETCH_SERVERDESC)) {
+ tor_addr_port_t my_orport, my_dirport;
+ memcpy(&my_orport.addr, &addr, sizeof(addr));
+ memcpy(&my_dirport.addr, &addr, sizeof(addr));
+ my_orport.port = me->or_port;
+ my_dirport.port = me->dir_port;
/* ask myself, via tor, for my server descriptor. */
- directory_initiate_command(&addr, me->or_port,
- &addr, me->dir_port,
- me->cache_info.identity_digest,
- DIR_PURPOSE_FETCH_SERVERDESC,
- ROUTER_PURPOSE_GENERAL,
- DIRIND_ANON_DIRPORT, "authority.z",
- NULL, 0, 0, NULL);
+ directory_request_t *req =
+ directory_request_new(DIR_PURPOSE_FETCH_SERVERDESC);
+ directory_request_set_or_addr_port(req, &my_orport);
+ directory_request_set_dir_addr_port(req, &my_dirport);
+ directory_request_set_directory_id_digest(req,
+ me->cache_info.identity_digest);
+ // ask via an anon circuit, connecting to our dirport.
+ directory_request_set_indirection(req, DIRIND_ANON_DIRPORT);
+ directory_request_set_resource(req, "authority.z");
+ directory_initiate_request(req);
+ directory_request_free(req);
}
}
@@ -1569,8 +1673,7 @@ MOCK_IMPL(int,
server_mode,(const or_options_t *options))
{
if (options->ClientOnly) return 0;
- /* XXXX I believe we can kill off ORListenAddress here.*/
- return (options->ORPort_set || options->ORListenAddress);
+ return (options->ORPort_set);
}
/** Return true iff we are trying to be a non-bridge server.
@@ -2194,17 +2297,15 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
}
if (options->MyFamily && ! options->BridgeRelay) {
- smartlist_t *family;
if (!warned_nonexistent_family)
warned_nonexistent_family = smartlist_new();
- family = smartlist_new();
ri->declared_family = smartlist_new();
- smartlist_split_string(family, options->MyFamily, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK|SPLIT_STRIP_SPACE, 0);
- SMARTLIST_FOREACH_BEGIN(family, char *, name) {
+ config_line_t *family;
+ for (family = options->MyFamily; family; family = family->next) {
+ char *name = family->value;
const node_t *member;
if (!strcasecmp(name, options->Nickname))
- goto skip; /* Don't list ourself, that's redundant */
+ continue; /* Don't list ourself, that's redundant */
else
member = node_get_by_nickname(name, 1);
if (!member) {
@@ -2223,8 +2324,7 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
smartlist_add_strdup(warned_nonexistent_family, name);
}
if (is_legal) {
- smartlist_add(ri->declared_family, name);
- name = NULL;
+ smartlist_add_strdup(ri->declared_family, name);
}
} else if (router_digest_is_me(member->identity)) {
/* Don't list ourself in our own family; that's redundant */
@@ -2238,15 +2338,11 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
if (smartlist_contains_string(warned_nonexistent_family, name))
smartlist_string_remove(warned_nonexistent_family, name);
}
- skip:
- tor_free(name);
- } SMARTLIST_FOREACH_END(name);
+ }
/* remove duplicates from the list */
smartlist_sort_strings(ri->declared_family);
smartlist_uniq_strings(ri->declared_family);
-
- smartlist_free(family);
}
/* Now generate the extrainfo. */
@@ -2762,7 +2858,7 @@ router_dump_router_to_string(routerinfo_t *router,
make_ntor_onion_key_crosscert(ntor_keypair,
&router->cache_info.signing_key_cert->signing_key,
router->cache_info.published_on,
- MIN_ONION_KEY_LIFETIME, &sign);
+ get_onion_key_lifetime(), &sign);
if (!cert) {
log_warn(LD_BUG,"make_ntor_onion_key_crosscert failed!");
goto err;
@@ -2848,7 +2944,7 @@ router_dump_router_to_string(routerinfo_t *router,
"onion-key\n%s"
"signing-key\n%s"
"%s%s"
- "%s%s%s%s",
+ "%s%s%s",
router->nickname,
address,
router->or_port,
@@ -2871,8 +2967,7 @@ router_dump_router_to_string(routerinfo_t *router,
ntor_cc_line ? ntor_cc_line : "",
family_line,
we_are_hibernating() ? "hibernating 1\n" : "",
- "hidden-service-dir\n",
- options->AllowSingleHopExits ? "allow-single-hop-exits\n" : "");
+ "hidden-service-dir\n");
if (options->ContactInfo && strlen(options->ContactInfo)) {
const char *ci = options->ContactInfo;
@@ -3210,6 +3305,12 @@ extrainfo_dump_to_string(char **s_out, extrainfo_t *extrainfo,
}
}
+ if (options->PaddingStatistics) {
+ contents = rep_hist_get_padding_count_lines();
+ if (contents)
+ smartlist_add(chunks, contents);
+ }
+
/* Add information about the pluggable transports we support. */
if (options->ServerTransportPlugin) {
char *pluggable_transports = pt_get_extra_info_descriptor_string();
diff --git a/src/or/router.h b/src/or/router.h
index c30a0301b7..9c5def5218 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -27,10 +27,13 @@ crypto_pk_t *get_my_v3_authority_signing_key(void);
authority_cert_t *get_my_v3_legacy_cert(void);
crypto_pk_t *get_my_v3_legacy_signing_key(void);
void dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last);
+void expire_old_onion_keys(void);
void rotate_onion_key(void);
crypto_pk_t *init_key_from_file(const char *fname, int generate,
int severity, int log_greeting);
void v3_authority_check_key_expiry(void);
+int get_onion_key_lifetime(void);
+int get_onion_key_grace_period(void);
di_digest256_map_t *construct_ntor_key_map(void);
void ntor_key_map_free(di_digest256_map_t *map);
diff --git a/src/or/routerkeys.c b/src/or/routerkeys.c
index aa7aee4b02..fd4c6ce0dd 100644
--- a/src/or/routerkeys.c
+++ b/src/or/routerkeys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -690,6 +690,10 @@ load_ed_keys(const or_options_t *options, time_t now)
tor_cert_t *auth_cert = NULL;
int signing_key_changed = 0;
+ // It is later than 1972, since otherwise there would be no C compilers.
+ // (Try to diagnose #22466.)
+ tor_assert_nonfatal(now >= 2 * 365 * 86400);
+
#define FAIL(msg) do { \
log_warn(LD_OR, (msg)); \
goto err; \
@@ -1232,7 +1236,9 @@ make_tap_onion_key_crosscert(const crypto_pk_t *onion_key,
uint8_t signed_data[DIGEST_LEN + ED25519_PUBKEY_LEN];
*len_out = 0;
- crypto_pk_get_digest(rsa_id_key, (char*)signed_data);
+ if (crypto_pk_get_digest(rsa_id_key, (char*)signed_data) < 0) {
+ return NULL;
+ }
memcpy(signed_data + DIGEST_LEN, master_id_key->pubkey, ED25519_PUBKEY_LEN);
int r = crypto_pk_private_sign(onion_key,
diff --git a/src/or/routerkeys.h b/src/or/routerkeys.h
index 845abb4c70..c10cf32a71 100644
--- a/src/or/routerkeys.h
+++ b/src/or/routerkeys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ROUTERKEYS_H
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index f2ab6051c7..2ca5199f3c 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -150,7 +150,8 @@ typedef struct cert_list_t cert_list_t;
/* static function prototypes */
static int compute_weighted_bandwidths(const smartlist_t *sl,
bandwidth_weight_rule_t rule,
- double **bandwidths_out);
+ double **bandwidths_out,
+ double *total_bandwidth_out);
static const routerstatus_t *router_pick_trusteddirserver_impl(
const smartlist_t *sourcelist, dirinfo_type_t auth,
int flags, int *n_busy_out);
@@ -426,8 +427,8 @@ list_sk_digests_for_authority_id, (const char *digest))
* download_status_t or NULL if none exists. */
MOCK_IMPL(download_status_t *,
- download_status_for_authority_id_and_sk,
- (const char *id_digest, const char *sk_digest))
+download_status_for_authority_id_and_sk,(const char *id_digest,
+ const char *sk_digest))
{
download_status_t *dl = NULL;
cert_list_t *cl = NULL;
@@ -947,6 +948,7 @@ authority_certs_fetch_resource_impl(const char *resource,
const dir_indirection_t indirection = get_via_tor ? DIRIND_ANONYMOUS
: DIRIND_ONEHOP;
+ directory_request_t *req = NULL;
/* If we've just downloaded a consensus from a bridge, re-use that
* bridge */
if (options->UseBridges && node && node->ri && !get_via_tor) {
@@ -955,23 +957,25 @@ authority_certs_fetch_resource_impl(const char *resource,
/* we are willing to use a non-preferred address if we need to */
fascist_firewall_choose_address_node(node, FIREWALL_OR_CONNECTION, 0,
&or_ap);
- directory_initiate_command(&or_ap.addr, or_ap.port,
- NULL, 0, /*no dirport*/
- dir_hint,
- DIR_PURPOSE_FETCH_CERTIFICATE,
- 0,
- indirection,
- resource, NULL, 0, 0, NULL);
- return;
- }
- if (rs) {
- /* If we've just downloaded a consensus from a directory, re-use that
+ req = directory_request_new(DIR_PURPOSE_FETCH_CERTIFICATE);
+ directory_request_set_or_addr_port(req, &or_ap);
+ if (dir_hint)
+ directory_request_set_directory_id_digest(req, dir_hint);
+ } else if (rs) {
+ /* And if we've just downloaded a consensus from a directory, re-use that
* directory */
- directory_initiate_command_routerstatus(rs,
- DIR_PURPOSE_FETCH_CERTIFICATE,
- 0, indirection, resource, NULL,
- 0, 0, NULL);
+ req = directory_request_new(DIR_PURPOSE_FETCH_CERTIFICATE);
+ directory_request_set_routerstatus(req, rs);
+ }
+
+ if (req) {
+ /* We've set up a request object -- fill in the other request fields, and
+ * send the request. */
+ directory_request_set_indirection(req, indirection);
+ directory_request_set_resource(req, resource);
+ directory_initiate_request(req);
+ directory_request_free(req);
return;
}
@@ -2317,17 +2321,16 @@ routerlist_add_node_and_family(smartlist_t *sl, const routerinfo_t *router)
* we can pick a node for a circuit.
*/
void
-router_add_running_nodes_to_smartlist(smartlist_t *sl, int allow_invalid,
- int need_uptime, int need_capacity,
- int need_guard, int need_desc,
- int pref_addr, int direct_conn)
+router_add_running_nodes_to_smartlist(smartlist_t *sl, int need_uptime,
+ int need_capacity, int need_guard,
+ int need_desc, int pref_addr,
+ int direct_conn)
{
const int check_reach = !router_skip_or_reachability(get_options(),
pref_addr);
/* XXXX MOVE */
SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
- if (!node->is_running ||
- (!node->is_valid && !allow_invalid))
+ if (!node->is_running || !node->is_valid)
continue;
if (need_desc && !(node->ri || (node->rs && node->md)))
continue;
@@ -2504,7 +2507,7 @@ smartlist_choose_node_by_bandwidth_weights(const smartlist_t *sl,
double *bandwidths_dbl=NULL;
uint64_t *bandwidths_u64=NULL;
- if (compute_weighted_bandwidths(sl, rule, &bandwidths_dbl) < 0)
+ if (compute_weighted_bandwidths(sl, rule, &bandwidths_dbl, NULL) < 0)
return NULL;
bandwidths_u64 = tor_calloc(smartlist_len(sl), sizeof(uint64_t));
@@ -2524,18 +2527,24 @@ smartlist_choose_node_by_bandwidth_weights(const smartlist_t *sl,
* smartlist_choose_node_by_bandwidth_weights, compute weighted bandwidth
* values for each node and store them in a freshly allocated
* *<b>bandwidths_out</b> of the same length as <b>sl</b>, and holding results
- * as doubles. Return 0 on success, -1 on failure. */
+ * as doubles. If <b>total_bandwidth_out</b> is non-NULL, set it to the total
+ * of all the bandwidths.
+ * Return 0 on success, -1 on failure. */
static int
compute_weighted_bandwidths(const smartlist_t *sl,
bandwidth_weight_rule_t rule,
- double **bandwidths_out)
+ double **bandwidths_out,
+ double *total_bandwidth_out)
{
int64_t weight_scale;
double Wg = -1, Wm = -1, We = -1, Wd = -1;
double Wgb = -1, Wmb = -1, Web = -1, Wdb = -1;
- uint64_t weighted_bw = 0;
guardfraction_bandwidth_t guardfraction_bw;
- double *bandwidths;
+ double *bandwidths = NULL;
+ double total_bandwidth = 0.0;
+
+ tor_assert(sl);
+ tor_assert(bandwidths_out);
/* Can't choose exit and guard at same time */
tor_assert(rule == NO_WEIGHTING ||
@@ -2544,6 +2553,12 @@ compute_weighted_bandwidths(const smartlist_t *sl,
rule == WEIGHT_FOR_MID ||
rule == WEIGHT_FOR_DIR);
+ *bandwidths_out = NULL;
+
+ if (total_bandwidth_out) {
+ *total_bandwidth_out = 0.0;
+ }
+
if (smartlist_len(sl) == 0) {
log_info(LD_CIRC,
"Empty routerlist passed in to consensus weight node "
@@ -2704,17 +2719,22 @@ compute_weighted_bandwidths(const smartlist_t *sl,
final_weight = weight*this_bw;
}
- bandwidths[node_sl_idx] = final_weight + 0.5;
+ bandwidths[node_sl_idx] = final_weight;
+ total_bandwidth += final_weight;
} SMARTLIST_FOREACH_END(node);
log_debug(LD_CIRC, "Generated weighted bandwidths for rule %s based "
"on weights "
- "Wg=%f Wm=%f We=%f Wd=%f with total bw "U64_FORMAT,
+ "Wg=%f Wm=%f We=%f Wd=%f with total bw %f",
bandwidth_weight_rule_to_string(rule),
- Wg, Wm, We, Wd, U64_PRINTF_ARG(weighted_bw));
+ Wg, Wm, We, Wd, total_bandwidth);
*bandwidths_out = bandwidths;
+ if (total_bandwidth_out) {
+ *total_bandwidth_out = total_bandwidth;
+ }
+
return 0;
}
@@ -2731,28 +2751,26 @@ frac_nodes_with_descriptors(const smartlist_t *sl,
if (smartlist_len(sl) == 0)
return 0.0;
- if (compute_weighted_bandwidths(sl, rule, &bandwidths) < 0) {
+ if (compute_weighted_bandwidths(sl, rule, &bandwidths, &total) < 0 ||
+ total <= 0.0) {
int n_with_descs = 0;
SMARTLIST_FOREACH(sl, const node_t *, node, {
if (node_has_descriptor(node))
n_with_descs++;
});
+
+ tor_free(bandwidths);
return ((double)n_with_descs) / (double)smartlist_len(sl);
}
- total = present = 0.0;
+ present = 0.0;
SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
- const double bw = bandwidths[node_sl_idx];
- total += bw;
if (node_has_descriptor(node))
- present += bw;
+ present += bandwidths[node_sl_idx];
} SMARTLIST_FOREACH_END(node);
tor_free(bandwidths);
- if (total < 1.0)
- return 0;
-
return present / total;
}
@@ -2773,8 +2791,6 @@ node_sl_choose_by_bandwidth(const smartlist_t *sl,
* a minimum uptime, return one of those.
* If <b>CRN_NEED_CAPACITY</b> is set in flags, weight your choice by the
* advertised capacity of each router.
- * If <b>CRN_ALLOW_INVALID</b> is not set in flags, consider only Valid
- * routers.
* If <b>CRN_NEED_GUARD</b> is set in flags, consider only Guard routers.
* If <b>CRN_WEIGHT_AS_EXIT</b> is set in flags, we weight bandwidths as if
* picking an exit node, otherwise we weight bandwidths for picking a relay
@@ -2795,7 +2811,6 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
const int need_uptime = (flags & CRN_NEED_UPTIME) != 0;
const int need_capacity = (flags & CRN_NEED_CAPACITY) != 0;
const int need_guard = (flags & CRN_NEED_GUARD) != 0;
- const int allow_invalid = (flags & CRN_ALLOW_INVALID) != 0;
const int weight_for_exit = (flags & CRN_WEIGHT_AS_EXIT) != 0;
const int need_desc = (flags & CRN_NEED_DESC) != 0;
const int pref_addr = (flags & CRN_PREF_ADDR) != 0;
@@ -2811,14 +2826,12 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
rule = weight_for_exit ? WEIGHT_FOR_EXIT :
(need_guard ? WEIGHT_FOR_GUARD : WEIGHT_FOR_MID);
- /* Exclude relays that allow single hop exit circuits, if the user
- * wants to (such relays might be risky) */
- if (get_options()->ExcludeSingleHopRelays) {
- SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node,
- if (node_allows_single_hop_exits(node)) {
- smartlist_add(excludednodes, node);
- });
- }
+ /* Exclude relays that allow single hop exit circuits. This is an obsolete
+ * option since 0.2.9.2-alpha and done by default in 0.3.1.0-alpha. */
+ SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node,
+ if (node_allows_single_hop_exits(node)) {
+ smartlist_add(excludednodes, node);
+ });
/* If the node_t is not found we won't be to exclude ourself but we
* won't be able to pick ourself in router_choose_random_node() so
@@ -2826,8 +2839,7 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
if ((r = router_get_my_routerinfo()))
routerlist_add_node_and_family(excludednodes, r);
- router_add_running_nodes_to_smartlist(sl, allow_invalid,
- need_uptime, need_capacity,
+ router_add_running_nodes_to_smartlist(sl, need_uptime, need_capacity,
need_guard, need_desc, pref_addr,
direct_conn);
log_debug(LD_CIRC,
@@ -3048,8 +3060,8 @@ router_get_by_extrainfo_digest,(const char *digest))
/** Return the signed descriptor for the extrainfo_t in our routerlist whose
* extra-info-digest is <b>digest</b>. Return NULL if no such extra-info
* document is known. */
-signed_descriptor_t *
-extrainfo_get_by_descriptor_digest(const char *digest)
+MOCK_IMPL(signed_descriptor_t *,
+extrainfo_get_by_descriptor_digest,(const char *digest))
{
extrainfo_t *ei;
tor_assert(digest);
@@ -4881,9 +4893,10 @@ list_pending_fpsk_downloads(fp_pair_map_t *result)
* range.) If <b>source</b> is given, download from <b>source</b>;
* otherwise, download from an appropriate random directory server.
*/
-MOCK_IMPL(STATIC void, initiate_descriptor_downloads,
- (const routerstatus_t *source, int purpose, smartlist_t *digests,
- int lo, int hi, int pds_flags))
+MOCK_IMPL(STATIC void,
+initiate_descriptor_downloads,(const routerstatus_t *source,
+ int purpose, smartlist_t *digests,
+ int lo, int hi, int pds_flags))
{
char *resource, *cp;
int digest_len, enc_digest_len;
@@ -4935,10 +4948,11 @@ MOCK_IMPL(STATIC void, initiate_descriptor_downloads,
if (source) {
/* We know which authority or directory mirror we want. */
- directory_initiate_command_routerstatus(source, purpose,
- ROUTER_PURPOSE_GENERAL,
- DIRIND_ONEHOP,
- resource, NULL, 0, 0, NULL);
+ directory_request_t *req = directory_request_new(purpose);
+ directory_request_set_routerstatus(req, source);
+ directory_request_set_resource(req, resource);
+ directory_initiate_request(req);
+ directory_request_free(req);
} else {
directory_get_from_dirserver(purpose, ROUTER_PURPOSE_GENERAL, resource,
pds_flags, DL_WANT_ANY_DIRSERVER);
@@ -5153,7 +5167,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
continue; /* We would throw it out immediately. */
}
if (!we_want_to_fetch_flavor(options, consensus->flavor) &&
- !client_would_use_router(rs, now, options)) {
+ !client_would_use_router(rs, now)) {
++n_wouldnt_use;
continue; /* We would never use it ourself. */
}
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index 8b68d69f28..e0ed4e623a 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -62,10 +62,10 @@ int router_skip_or_reachability(const or_options_t *options, int try_ip_pref);
int router_get_my_share_of_directory_requests(double *v3_share_out);
void router_reset_status_download_failures(void);
int routers_have_same_or_addrs(const routerinfo_t *r1, const routerinfo_t *r2);
-void router_add_running_nodes_to_smartlist(smartlist_t *sl, int allow_invalid,
- int need_uptime, int need_capacity,
- int need_guard, int need_desc,
- int pref_addr, int direct_conn);
+void router_add_running_nodes_to_smartlist(smartlist_t *sl, int need_uptime,
+ int need_capacity, int need_guard,
+ int need_desc, int pref_addr,
+ int direct_conn);
const routerinfo_t *routerlist_find_my_routerinfo(void);
uint32_t router_get_advertised_bandwidth(const routerinfo_t *router);
@@ -92,7 +92,8 @@ routerinfo_t *router_get_mutable_by_digest(const char *digest);
signed_descriptor_t *router_get_by_descriptor_digest(const char *digest);
MOCK_DECL(signed_descriptor_t *,router_get_by_extrainfo_digest,
(const char *digest));
-signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest);
+MOCK_DECL(signed_descriptor_t *,extrainfo_get_by_descriptor_digest,
+ (const char *digest));
const char *signed_descriptor_get_body(const signed_descriptor_t *desc);
const char *signed_descriptor_get_annotations(const signed_descriptor_t *desc);
routerlist_t *router_get_routerlist(void);
@@ -123,7 +124,7 @@ static int WRA_NEVER_DOWNLOADABLE(was_router_added_t s);
*/
static inline int
WRA_WAS_ADDED(was_router_added_t s) {
- return s == ROUTER_ADDED_SUCCESSFULLY || s == ROUTER_ADDED_NOTIFY_GENERATOR;
+ return s == ROUTER_ADDED_SUCCESSFULLY;
}
/** Return true iff the outcome code in <b>s</b> indicates that the descriptor
* was not added because it was either:
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 0336c035b4..22521a3069 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -359,6 +359,7 @@ static addr_policy_t *router_parse_addr_policy_private(directory_token_t *tok);
static int router_get_hash_impl_helper(const char *s, size_t s_len,
const char *start_str,
const char *end_str, char end_c,
+ int log_severity,
const char **start_out, const char **end_out);
static int router_get_hash_impl(const char *s, size_t s_len, char *digest,
const char *start_str, const char *end_str,
@@ -988,6 +989,41 @@ router_get_router_hash(const char *s, size_t s_len, char *digest)
DIGEST_SHA1);
}
+/** Try to find the start and end of the signed portion of a networkstatus
+ * document in <b>s</b>. On success, set <b>start_out</b> to the first
+ * character of the document, and <b>end_out</b> to a position one after the
+ * final character of the signed document, and return 0. On failure, return
+ * -1. */
+int
+router_get_networkstatus_v3_signed_boundaries(const char *s,
+ const char **start_out,
+ const char **end_out)
+{
+ return router_get_hash_impl_helper(s, strlen(s),
+ "network-status-version",
+ "\ndirectory-signature",
+ ' ', LOG_INFO,
+ start_out, end_out);
+}
+
+/** Set <b>digest_out</b> to the SHA3-256 digest of the signed portion of the
+ * networkstatus vote in <b>s</b> -- or of the entirety of <b>s</b> if no
+ * signed portion can be identified. Return 0 on success, -1 on failure. */
+int
+router_get_networkstatus_v3_sha3_as_signed(uint8_t *digest_out,
+ const char *s)
+{
+ const char *start, *end;
+ if (router_get_networkstatus_v3_signed_boundaries(s, &start, &end) < 0) {
+ start = s;
+ end = s + strlen(s);
+ }
+ tor_assert(start);
+ tor_assert(end);
+ return crypto_digest256((char*)digest_out, start, end-start,
+ DIGEST_SHA3_256);
+}
+
/** Set <b>digests</b> to all the digests of the consensus document in
* <b>s</b> */
int
@@ -1787,7 +1823,8 @@ router_parse_entry_from_string(const char *s, const char *end,
if (router_get_hash_impl_helper(s, end-s, "router ",
"\nrouter-sig-ed25519",
- ' ', &signed_start, &signed_end) < 0) {
+ ' ', LOG_WARN,
+ &signed_start, &signed_end) < 0) {
log_warn(LD_DIR, "Can't find ed25519-signed portion of descriptor");
goto err;
}
@@ -2030,6 +2067,9 @@ extrainfo_parse_entry_from_string(const char *s, const char *end,
* parse that's covered by the hash. */
int can_dl_again = 0;
+ if (BUG(s == NULL))
+ return NULL;
+
if (!end) {
end = s + strlen(s);
}
@@ -2137,7 +2177,8 @@ extrainfo_parse_entry_from_string(const char *s, const char *end,
if (router_get_hash_impl_helper(s, end-s, "extra-info ",
"\nrouter-sig-ed25519",
- ' ', &signed_start, &signed_end) < 0) {
+ ' ', LOG_WARN,
+ &signed_start, &signed_end) < 0) {
log_warn(LD_DIR, "Can't find ed25519-signed portion of extrainfo");
goto err;
}
@@ -2544,7 +2585,7 @@ routerstatus_parse_entry_from_string(memarea_t *area,
goto err;
}
} else if (flav == FLAV_MICRODESC) {
- offset = -1; /* There is no identity digest */
+ offset = -1; /* There is no descriptor digest in an md consensus r line */
}
if (vote_rs) {
@@ -2664,6 +2705,10 @@ routerstatus_parse_entry_from_string(memarea_t *area,
protocol_list_supports_protocol(tok->args[0], PRT_RELAY, 2);
rs->supports_ed25519_link_handshake =
protocol_list_supports_protocol(tok->args[0], PRT_LINKAUTH, 3);
+ rs->supports_ed25519_hs_intro =
+ protocol_list_supports_protocol(tok->args[0], PRT_HSINTRO, 4);
+ rs->supports_v3_hsdir =
+ protocol_list_supports_protocol(tok->args[0], PRT_HSDIR, 2);
}
if ((tok = find_opt_by_keyword(tokens, K_V))) {
tor_assert(tok->n_args == 1);
@@ -3339,6 +3384,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
networkstatus_voter_info_t *voter = NULL;
networkstatus_t *ns = NULL;
common_digests_t ns_digests;
+ uint8_t sha3_as_signed[DIGEST256_LEN];
const char *cert, *end_of_header, *end_of_footer, *s_dup = s;
directory_token_t *tok;
struct in_addr in;
@@ -3352,7 +3398,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
if (eos_out)
*eos_out = NULL;
- if (router_get_networkstatus_v3_hashes(s, &ns_digests)) {
+ if (router_get_networkstatus_v3_hashes(s, &ns_digests) ||
+ router_get_networkstatus_v3_sha3_as_signed(sha3_as_signed, s)<0) {
log_warn(LD_DIR, "Unable to compute digest of network-status");
goto err;
}
@@ -3369,6 +3416,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
ns = tor_malloc_zero(sizeof(networkstatus_t));
memcpy(&ns->digests, &ns_digests, sizeof(ns_digests));
+ memcpy(&ns->digest_sha3_as_signed, sha3_as_signed, sizeof(sha3_as_signed));
tok = find_by_keyword(tokens, K_NETWORK_STATUS_VERSION);
tor_assert(tok);
@@ -4464,16 +4512,18 @@ static int
router_get_hash_impl_helper(const char *s, size_t s_len,
const char *start_str,
const char *end_str, char end_c,
+ int log_severity,
const char **start_out, const char **end_out)
{
const char *start, *end;
start = tor_memstr(s, s_len, start_str);
if (!start) {
- log_warn(LD_DIR,"couldn't find start of hashed material \"%s\"",start_str);
+ log_fn(log_severity,LD_DIR,
+ "couldn't find start of hashed material \"%s\"",start_str);
return -1;
}
if (start != s && *(start-1) != '\n') {
- log_warn(LD_DIR,
+ log_fn(log_severity,LD_DIR,
"first occurrence of \"%s\" is not at the start of a line",
start_str);
return -1;
@@ -4481,12 +4531,14 @@ router_get_hash_impl_helper(const char *s, size_t s_len,
end = tor_memstr(start+strlen(start_str),
s_len - (start-s) - strlen(start_str), end_str);
if (!end) {
- log_warn(LD_DIR,"couldn't find end of hashed material \"%s\"",end_str);
+ log_fn(log_severity,LD_DIR,
+ "couldn't find end of hashed material \"%s\"",end_str);
return -1;
}
end = memchr(end+strlen(end_str), end_c, s_len - (end-s) - strlen(end_str));
if (!end) {
- log_warn(LD_DIR,"couldn't find EOL");
+ log_fn(log_severity,LD_DIR,
+ "couldn't find EOL");
return -1;
}
++end;
@@ -4510,7 +4562,7 @@ router_get_hash_impl(const char *s, size_t s_len, char *digest,
digest_algorithm_t alg)
{
const char *start=NULL, *end=NULL;
- if (router_get_hash_impl_helper(s,s_len,start_str,end_str,end_c,
+ if (router_get_hash_impl_helper(s,s_len,start_str,end_str,end_c,LOG_WARN,
&start,&end)<0)
return -1;
@@ -4547,7 +4599,7 @@ router_get_hashes_impl(const char *s, size_t s_len, common_digests_t *digests,
const char *end_str, char end_c)
{
const char *start=NULL, *end=NULL;
- if (router_get_hash_impl_helper(s,s_len,start_str,end_str,end_c,
+ if (router_get_hash_impl_helper(s,s_len,start_str,end_str,end_c,LOG_WARN,
&start,&end)<0)
return -1;
@@ -5241,7 +5293,10 @@ rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out,
"v2 rendezvous service descriptor") < 0)
goto err;
/* Verify that descriptor ID belongs to public key and secret ID part. */
- crypto_pk_get_digest(result->pk, public_key_hash);
+ if (crypto_pk_get_digest(result->pk, public_key_hash) < 0) {
+ log_warn(LD_REND, "Unable to compute rend descriptor public key digest");
+ goto err;
+ }
rend_get_descriptor_id_bytes(test_desc_id, public_key_hash,
secret_id_part);
if (tor_memneq(desc_id_out, test_desc_id, DIGEST_LEN)) {
diff --git a/src/or/routerparse.h b/src/or/routerparse.h
index 648f29b0d3..088f773c5e 100644
--- a/src/or/routerparse.h
+++ b/src/or/routerparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -16,6 +16,11 @@ int router_get_router_hash(const char *s, size_t s_len, char *digest);
int router_get_dir_hash(const char *s, char *digest);
int router_get_networkstatus_v3_hashes(const char *s,
common_digests_t *digests);
+int router_get_networkstatus_v3_signed_boundaries(const char *s,
+ const char **start_out,
+ const char **end_out);
+int router_get_networkstatus_v3_sha3_as_signed(uint8_t *digest_out,
+ const char *s);
int router_get_extrainfo_hash(const char *s, size_t s_len, char *digest);
#define DIROBJ_MAX_SIG_LEN 256
char *router_get_dirobj_signature(const char *digest,
diff --git a/src/or/routerset.c b/src/or/routerset.c
index d0df0a74e6..4906c6a51d 100644
--- a/src/or/routerset.c
+++ b/src/or/routerset.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/routerset.h b/src/or/routerset.h
index 2e3b4b0fe0..a63677b471 100644
--- a/src/or/routerset.h
+++ b/src/or/routerset.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/scheduler.c b/src/or/scheduler.c
index 033e6d119c..fac545fba7 100644
--- a/src/or/scheduler.c
+++ b/src/or/scheduler.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/or/scheduler.h b/src/or/scheduler.h
index 3dcfd2faca..e29c13de7e 100644
--- a/src/or/scheduler.h
+++ b/src/or/scheduler.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* * Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/shared_random.c b/src/or/shared_random.c
index f798a51a9f..25ca0611cd 100644
--- a/src/or/shared_random.c
+++ b/src/or/shared_random.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -230,9 +230,7 @@ commit_decode(const char *encoded, sr_commit_t *commit)
{
int decoded_len = 0;
size_t offset = 0;
- /* XXX: Needs two extra bytes for the base64 decode calculation matches
- * the binary length once decoded. #17868. */
- char b64_decoded[SR_COMMIT_LEN + 2];
+ char b64_decoded[SR_COMMIT_LEN];
tor_assert(encoded);
tor_assert(commit);
@@ -284,9 +282,7 @@ STATIC int
reveal_decode(const char *encoded, sr_commit_t *commit)
{
int decoded_len = 0;
- /* XXX: Needs two extra bytes for the base64 decode calculation matches
- * the binary length once decoded. #17868. */
- char b64_decoded[SR_REVEAL_LEN + 2];
+ char b64_decoded[SR_REVEAL_LEN];
tor_assert(encoded);
tor_assert(commit);
diff --git a/src/or/shared_random.h b/src/or/shared_random.h
index dbb8effeaa..1f027c70e0 100644
--- a/src/or/shared_random.h
+++ b/src/or/shared_random.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SHARED_RANDOM_H
@@ -36,17 +36,14 @@
/* Length of base64 encoded commit NOT including the NUL terminated byte.
* Formula is taken from base64_encode_size. This adds up to 56 bytes. */
-#define SR_COMMIT_BASE64_LEN \
- (((SR_COMMIT_LEN - 1) / 3) * 4 + 4)
+#define SR_COMMIT_BASE64_LEN (BASE64_LEN(SR_COMMIT_LEN))
/* Length of base64 encoded reveal NOT including the NUL terminated byte.
* Formula is taken from base64_encode_size. This adds up to 56 bytes. */
-#define SR_REVEAL_BASE64_LEN \
- (((SR_REVEAL_LEN - 1) / 3) * 4 + 4)
+#define SR_REVEAL_BASE64_LEN (BASE64_LEN(SR_REVEAL_LEN))
/* Length of base64 encoded shared random value. It's 32 bytes long so 44
* bytes from the base64_encode_size formula. That includes the '='
* character at the end. */
-#define SR_SRV_VALUE_BASE64_LEN \
- (((DIGEST256_LEN - 1) / 3) * 4 + 4)
+#define SR_SRV_VALUE_BASE64_LEN (BASE64_LEN(DIGEST256_LEN))
/* Assert if commit valid flag is not set. */
#define ASSERT_COMMIT_VALID(c) tor_assert((c)->valid)
diff --git a/src/or/shared_random_state.c b/src/or/shared_random_state.c
index 87db9031ee..a147f5a347 100644
--- a/src/or/shared_random_state.c
+++ b/src/or/shared_random_state.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -409,6 +409,7 @@ disk_state_parse_commits(sr_state_t *state,
if (commit == NULL) {
/* Ignore badly formed commit. It could also be a authority
* fingerprint that we don't know about so it shouldn't be used. */
+ smartlist_free(args);
continue;
}
/* We consider parseable commit from our disk state to be valid because
diff --git a/src/or/shared_random_state.h b/src/or/shared_random_state.h
index 43a7f1d284..3526ad47d3 100644
--- a/src/or/shared_random_state.h
+++ b/src/or/shared_random_state.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SHARED_RANDOM_STATE_H
diff --git a/src/or/statefile.c b/src/or/statefile.c
index a95ba8533c..d0606b3012 100644
--- a/src/or/statefile.c
+++ b/src/or/statefile.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/statefile.h b/src/or/statefile.h
index b13743481d..10c09324bc 100644
--- a/src/or/statefile.h
+++ b/src/or/statefile.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_STATEFILE_H
diff --git a/src/or/status.c b/src/or/status.c
index fce6a10157..52763a7042 100644
--- a/src/or/status.c
+++ b/src/or/status.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -27,6 +27,7 @@
#include "hibernate.h"
#include "rephist.h"
#include "statefile.h"
+#include "dos.h"
static void log_accounting(const time_t now, const or_options_t *options);
#include "geoip.h"
@@ -145,6 +146,7 @@ log_heartbeat(time_t now)
if (public_server_mode(options)) {
rep_hist_log_circuit_handshake_stats(now);
rep_hist_log_link_protocol_counts();
+ dos_log_heartbeat();
}
circuit_log_ancient_one_hop_circuits(1800);
diff --git a/src/or/status.h b/src/or/status.h
index b97e835037..c1a0033ce0 100644
--- a/src/or/status.h
+++ b/src/or/status.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_STATUS_H
diff --git a/src/or/tor_main.c b/src/or/tor_main.c
index d67eda2ac9..a3a8838602 100644
--- a/src/or/tor_main.c
+++ b/src/or/tor_main.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
extern const char tor_git_revision[];
diff --git a/src/or/torcert.c b/src/or/torcert.c
index c58f3da2d3..658e620ca5 100644
--- a/src/or/torcert.c
+++ b/src/or/torcert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -302,6 +302,10 @@ tor_make_rsa_ed25519_crosscert(const ed25519_public_key_t *ed_key,
time_t expires,
uint8_t **cert)
{
+ // It is later than 1985, since otherwise there would be no C89
+ // compilers. (Try to diagnose #22466.)
+ tor_assert_nonfatal(expires >= 15 * 365 * 86400);
+
uint8_t *res;
rsa_ed_crosscert_t *cc = rsa_ed_crosscert_new();
diff --git a/src/or/torcert.h b/src/or/torcert.h
index 090f6b5811..51f7665f1e 100644
--- a/src/or/torcert.h
+++ b/src/or/torcert.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TORCERT_H_INCLUDED
diff --git a/src/or/transports.c b/src/or/transports.c
index 535393b1a1..31849a8d15 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/transports.h b/src/or/transports.h
index 7de90dcbec..44a9626e50 100644
--- a/src/or/transports.h
+++ b/src/or/transports.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/rust/.cargo/config.in b/src/rust/.cargo/config.in
new file mode 100644
index 0000000000..414b253a57
--- /dev/null
+++ b/src/rust/.cargo/config.in
@@ -0,0 +1,8 @@
+[source]
+
+@RUST_DL@ [source.crates-io]
+@RUST_DL@ registry = 'https://github.com/rust-lang/crates.io-index'
+@RUST_DL@ replace-with = 'vendored-sources'
+
+@RUST_DL@ [source.vendored-sources]
+@RUST_DL@ directory = '@RUST_DEPENDENCIES@'
diff --git a/src/rust/.rustfmt.toml b/src/rust/.rustfmt.toml
new file mode 100644
index 0000000000..f25bd51883
--- /dev/null
+++ b/src/rust/.rustfmt.toml
@@ -0,0 +1,2 @@
+max_width = 80
+comment_width = 80
diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock
new file mode 100644
index 0000000000..4ac9606ce8
--- /dev/null
+++ b/src/rust/Cargo.lock
@@ -0,0 +1,14 @@
+[root]
+name = "tor_util"
+version = "0.0.1"
+dependencies = [
+ "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)" = "babb8281da88cba992fa1f4ddec7d63ed96280a1a53ec9b919fd37b53d71e502"
diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
new file mode 100644
index 0000000000..fc4377e8b4
--- /dev/null
+++ b/src/rust/Cargo.toml
@@ -0,0 +1,7 @@
+[workspace]
+members = ["tor_util"]
+
+[profile.release]
+debug = true
+panic = "abort"
+
diff --git a/src/rust/include.am b/src/rust/include.am
new file mode 100644
index 0000000000..20afc6c4db
--- /dev/null
+++ b/src/rust/include.am
@@ -0,0 +1,6 @@
+include src/rust/tor_util/include.am
+
+EXTRA_DIST +=\
+ src/rust/Cargo.toml \
+ src/rust/Cargo.lock \
+ src/rust/.cargo/config.in
diff --git a/src/rust/tor_util/Cargo.toml b/src/rust/tor_util/Cargo.toml
new file mode 100644
index 0000000000..f175fbdfb0
--- /dev/null
+++ b/src/rust/tor_util/Cargo.toml
@@ -0,0 +1,13 @@
+[package]
+authors = ["The Tor Project"]
+name = "tor_util"
+version = "0.0.1"
+
+[lib]
+name = "tor_util"
+path = "lib.rs"
+crate_type = ["rlib", "staticlib"]
+
+[dependencies]
+libc = "*"
+
diff --git a/src/rust/tor_util/ffi.rs b/src/rust/tor_util/ffi.rs
new file mode 100644
index 0000000000..af4bfc41af
--- /dev/null
+++ b/src/rust/tor_util/ffi.rs
@@ -0,0 +1,56 @@
+//! FFI functions, only to be called from C.
+//!
+//! Equivalent C versions of these live in `src/common/compat_rust.c`
+
+use std::mem::forget;
+use std::ffi::CString;
+
+use libc;
+use rust_string::RustString;
+
+/// Free the passed `RustString` (`rust_str_t` in C), to be used in place of
+/// `tor_free`().
+///
+/// # Examples
+/// ```c
+/// rust_str_t r_s = rust_welcome_string();
+/// rust_str_free(r_s);
+/// ```
+#[no_mangle]
+#[cfg_attr(feature = "cargo-clippy", allow(needless_pass_by_value))]
+pub unsafe extern "C" fn rust_str_free(_str: RustString) {
+ // Empty body: Just drop _str and we're done (Drop takes care of it).
+}
+
+/// Lends an immutable, NUL-terminated C String.
+///
+/// # Examples
+/// ```c
+/// rust_str_t r_s = rust_welcome_string();
+/// const char *s = rust_str_get(r_s);
+/// printf("%s", s);
+/// rust_str_free(r_s);
+/// ```
+#[no_mangle]
+pub unsafe extern "C" fn rust_str_get(str: RustString) -> *const libc::c_char {
+ let res = str.as_ptr();
+ forget(str);
+ res
+}
+
+/// Returns a short string to announce Rust support during startup.
+///
+/// # Examples
+/// ```c
+/// rust_str_t r_s = rust_welcome_string();
+/// const char *s = rust_str_get(r_s);
+/// printf("%s", s);
+/// rust_str_free(r_s);
+/// ```
+#[no_mangle]
+pub extern "C" fn rust_welcome_string() -> RustString {
+ let s = CString::new("Tor is running with Rust integration. Please report \
+ any bugs you encouter.")
+ .unwrap();
+ RustString::from(s)
+}
diff --git a/src/rust/tor_util/include.am b/src/rust/tor_util/include.am
new file mode 100644
index 0000000000..f0cd63920c
--- /dev/null
+++ b/src/rust/tor_util/include.am
@@ -0,0 +1,13 @@
+EXTRA_DIST +=\
+ src/rust/tor_util/Cargo.toml \
+ src/rust/tor_util/lib.rs \
+ src/rust/tor_util/ffi.rs \
+ src/rust/tor_util/rust_string.rs
+
+src/rust/target/release/libtor_util.a: FORCE
+ ( cd "$(abs_top_srcdir)/src/rust/tor_util" ; \
+ CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
+ CARGO_HOME="$(abs_top_builddir)/src/rust" \
+ $(CARGO) build --release --quiet $(CARGO_ONLINE) )
+
+FORCE:
diff --git a/src/rust/tor_util/lib.rs b/src/rust/tor_util/lib.rs
new file mode 100644
index 0000000000..79d583d1ae
--- /dev/null
+++ b/src/rust/tor_util/lib.rs
@@ -0,0 +1,13 @@
+//! C <-> Rust compatibility helpers and types.
+//!
+//! Generically useful, small scale helpers should go here. This goes for both
+//! the C side (in the form of the ffi module) as well as the Rust side
+//! (individual modules per functionality). The corresponding C stuff lives in
+//! `src/common/compat_rust.{c,h}`.
+
+extern crate libc;
+
+mod rust_string;
+pub mod ffi;
+
+pub use rust_string::*;
diff --git a/src/rust/tor_util/rust_string.rs b/src/rust/tor_util/rust_string.rs
new file mode 100644
index 0000000000..46ec3fd7a8
--- /dev/null
+++ b/src/rust/tor_util/rust_string.rs
@@ -0,0 +1,101 @@
+use std::ffi::CString;
+use std::mem::forget;
+use libc;
+
+/// Compatibility wrapper for strings allocated in Rust and passed to C.
+///
+/// Rust doesn't ensure the safety of freeing memory across an FFI boundary, so
+/// we need to take special care to ensure we're not accidentally calling
+/// `tor_free`() on any string allocated in Rust. To more easily differentiate
+/// between strings that possibly (if Rust support is enabled) were allocated
+/// in Rust, C has the `rust_str_t` helper type. The equivalent on the Rust
+/// side is `RustString`.
+///
+/// Note: This type must not be used for strings allocated in C.
+#[repr(C)]
+#[derive(Debug)]
+pub struct RustString(*mut libc::c_char);
+
+impl RustString {
+ /// Returns a pointer to the underlying NUL-terminated byte array.
+ ///
+ /// Note that this function is not typically useful for Rust callers,
+ /// except in a direct FFI context.
+ ///
+ /// # Examples
+ /// ```
+ /// # use tor_util::RustString;
+ /// use std::ffi::CString;
+ ///
+ /// let r = RustString::from(CString::new("asdf").unwrap());
+ /// let c_str = r.as_ptr();
+ /// assert_eq!(b'a', unsafe { *c_str as u8});
+ /// ```
+ pub fn as_ptr(&self) -> *const libc::c_char {
+ self.0 as *const libc::c_char
+ }
+}
+
+impl From<CString> for RustString {
+ /// Constructs a new `RustString`
+ ///
+ /// # Examples
+ /// ```
+ /// # use tor_util::RustString;
+ /// use std::ffi::CString;
+ ///
+ /// let r = RustString::from(CString::new("asdf").unwrap());
+ /// ```
+ fn from(str: CString) -> RustString {
+ RustString(str.into_raw())
+ }
+}
+
+impl Into<CString> for RustString {
+ /// Reconstructs a `CString` from this `RustString`.
+ ///
+ /// Useful to take ownership back from a `RustString` that was given to C
+ /// code.
+ ///
+ /// # Examples
+ /// ```
+ /// # use tor_util::RustString;
+ /// use std::ffi::CString;
+ ///
+ /// let cs = CString::new("asdf").unwrap();
+ /// let r = RustString::from(cs.clone());
+ /// let cs2 = r.into();
+ /// assert_eq!(cs, cs2);
+ /// ```
+ fn into(self) -> CString {
+ // Calling from_raw is always OK here: We only construct self using
+ // valid CStrings and don't expose anything that could mutate it
+ let ret = unsafe { CString::from_raw(self.0) };
+ forget(self);
+ ret
+ }
+}
+
+impl Drop for RustString {
+ fn drop(&mut self) {
+ // Don't use into() here, because we would need to move out of
+ // self. Same safety consideration. Immediately drop the created
+ // CString, which takes care of freeing the wrapped string.
+ unsafe { CString::from_raw(self.0) };
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use std::mem;
+ use super::*;
+
+ use libc;
+
+ /// Ensures we're not adding overhead by using RustString.
+ #[test]
+ fn size_of() {
+ assert_eq!(mem::size_of::<*mut libc::c_char>(),
+ mem::size_of::<RustString>())
+ }
+}
diff --git a/src/rust/tor_util/tests/rust_string.rs b/src/rust/tor_util/tests/rust_string.rs
new file mode 100644
index 0000000000..1ff605a43c
--- /dev/null
+++ b/src/rust/tor_util/tests/rust_string.rs
@@ -0,0 +1,37 @@
+extern crate tor_util;
+extern crate libc;
+
+use std::ffi::CString;
+use tor_util::RustString;
+
+#[test]
+fn rust_string_conversions_preserve_c_string() {
+ let s = CString::new("asdf foo").unwrap();
+ let r = RustString::from(s.clone());
+ let r2 = RustString::from(s.clone());
+ let c = r2.as_ptr();
+ assert_eq!(unsafe { libc::strlen(c) }, 8);
+ let c_str = r.into();
+ assert_eq!(s, c_str);
+}
+
+#[test]
+fn empty_string() {
+ let s = CString::new("").unwrap();
+ let r = RustString::from(s.clone());
+ let c = r.as_ptr();
+ assert_eq!(unsafe { libc::strlen(c) }, 0);
+ let c_str = r.into();
+ assert_eq!(s, c_str);
+}
+
+#[test]
+fn c_string_with_unicode() {
+ // The euro sign is three bytes
+ let s = CString::new("asd€asd").unwrap();
+ let r = RustString::from(s.clone());
+ let c = r.as_ptr();
+ assert_eq!(unsafe { libc::strlen(c) }, 9);
+ let c_str = r.into();
+ assert_eq!(s, c_str);
+}
diff --git a/src/test/Makefile.nmake b/src/test/Makefile.nmake
index 0ba56d7036..605f1a92c3 100644
--- a/src/test/Makefile.nmake
+++ b/src/test/Makefile.nmake
@@ -12,11 +12,12 @@ LIBS = ..\..\..\build-alpha\lib\libevent.lib \
crypt32.lib gdi32.lib user32.lib
TEST_OBJECTS = test.obj test_addr.obj test_channel.obj test_channeltls.obj \
- test_containers.obj \
+ test_consdiff.obj test_containers.obj \
test_controller_events.obj test_crypto.obj test_data.obj test_dir.obj \
test_checkdir.obj test_microdesc.obj test_pt.obj test_util.obj \
test_config.obj test_connection.obj \
test_cell_formats.obj test_relay.obj test_replay.obj \
+ test_channelpadding.obj \
test_scheduler.obj test_introduce.obj test_hs.obj tinytest.obj
tinytest.obj: ..\ext\tinytest.c
diff --git a/src/test/bench.c b/src/test/bench.c
index 99bc686f30..a44dc94a61 100644
--- a/src/test/bench.c
+++ b/src/test/bench.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
extern const char tor_git_revision[];
@@ -28,6 +28,7 @@ const char tor_git_revision[] = "";
#include "crypto_curve25519.h"
#include "onion_ntor.h"
#include "crypto_ed25519.h"
+#include "consdiff.h"
#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID)
static uint64_t nanostart;
@@ -673,6 +674,28 @@ main(int argc, const char **argv)
or_options_t *options;
tor_threads_init();
+ tor_compress_init();
+
+ if (argc == 4 && !strcmp(argv[1], "diff")) {
+ init_logging(1);
+ const int N = 200;
+ char *f1 = read_file_to_str(argv[2], RFTS_BIN, NULL);
+ char *f2 = read_file_to_str(argv[3], RFTS_BIN, NULL);
+ if (! f1 || ! f2) {
+ perror("X");
+ return 1;
+ }
+ for (i = 0; i < N; ++i) {
+ char *diff = consensus_diff_generate(f1, f2);
+ tor_free(diff);
+ }
+ char *diff = consensus_diff_generate(f1, f2);
+ printf("%s", diff);
+ tor_free(f1);
+ tor_free(f2);
+ tor_free(diff);
+ return 0;
+ }
for (i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--list")) {
diff --git a/src/test/bt_test.py b/src/test/bt_test.py
index 30591453b9..4cb3326042 100755
--- a/src/test/bt_test.py
+++ b/src/test/bt_test.py
@@ -1,4 +1,4 @@
-# Copyright 2013-2015, The Tor Project, Inc
+# Copyright 2013-2017, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/ed25519_exts_ref.py b/src/test/ed25519_exts_ref.py
index d5a3a79910..af5010415e 100644
--- a/src/test/ed25519_exts_ref.py
+++ b/src/test/ed25519_exts_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2015, The Tor Project, Inc
+# Copyright 2014-2017, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/fakechans.h b/src/test/fakechans.h
index fa0e37dbe6..c0de430e3d 100644
--- a/src/test/fakechans.h
+++ b/src/test/fakechans.h
@@ -1,4 +1,4 @@
- /* Copyright (c) 2014-2016, The Tor Project, Inc. */
+ /* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_FAKECHANS_H
diff --git a/src/test/fuzz/dict/http b/src/test/fuzz/dict/http
index 1a7b61e8d4..3b0531579d 100644
--- a/src/test/fuzz/dict/http
+++ b/src/test/fuzz/dict/http
@@ -4,7 +4,7 @@
#
# Extracted from directory_handle_command() in the tor source code
#
-# Copyright (c) 2016, The Tor Project, Inc.
+# Copyright (c) 2016-2017, The Tor Project, Inc.
# See LICENSE for licensing information
#
# Usage:
diff --git a/src/test/fuzz/fuzz_consensus.c b/src/test/fuzz/fuzz_consensus.c
index f5d22f69ae..6610ade7ad 100644
--- a/src/test/fuzz/fuzz_consensus.c
+++ b/src/test/fuzz/fuzz_consensus.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_descriptor.c b/src/test/fuzz/fuzz_descriptor.c
index d19386d77f..1a50beae17 100644
--- a/src/test/fuzz/fuzz_descriptor.c
+++ b/src/test/fuzz/fuzz_descriptor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_diff.c b/src/test/fuzz/fuzz_diff.c
new file mode 100644
index 0000000000..642380b512
--- /dev/null
+++ b/src/test/fuzz/fuzz_diff.c
@@ -0,0 +1,69 @@
+/* Copyright (c) 2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CONSDIFF_PRIVATE
+
+#include "orconfig.h"
+#include "or.h"
+#include "consdiff.h"
+
+#include "fuzzing.h"
+
+static int
+mock_consensus_compute_digest_(const char *c, consensus_digest_t *d)
+{
+ (void)c;
+ memset(d->sha3_256, 3, sizeof(d->sha3_256));
+ return 0;
+}
+
+int
+fuzz_init(void)
+{
+ MOCK(consensus_compute_digest, mock_consensus_compute_digest_);
+ MOCK(consensus_compute_digest_as_signed, mock_consensus_compute_digest_);
+ return 0;
+}
+
+int
+fuzz_cleanup(void)
+{
+ UNMOCK(consensus_compute_digest);
+ UNMOCK(consensus_compute_digest_as_signed);
+ return 0;
+}
+
+int
+fuzz_main(const uint8_t *stdin_buf, size_t data_size)
+{
+#define SEP "=====\n"
+#define SEPLEN strlen(SEP)
+ const uint8_t *separator = tor_memmem(stdin_buf, data_size, SEP, SEPLEN);
+ if (! separator)
+ return 0;
+ size_t c1_len = separator - stdin_buf;
+ char *c1 = tor_memdup_nulterm(stdin_buf, c1_len);
+ size_t c2_len = data_size - c1_len - SEPLEN;
+ char *c2 = tor_memdup_nulterm(separator + SEPLEN, c2_len);
+
+ char *c3 = consensus_diff_generate(c1, c2);
+
+ if (c3) {
+ char *c4 = consensus_diff_apply(c1, c3);
+ tor_assert(c4);
+ if (strcmp(c2, c4)) {
+ printf("%s\n", escaped(c1));
+ printf("%s\n", escaped(c2));
+ printf("%s\n", escaped(c3));
+ printf("%s\n", escaped(c4));
+ }
+ tor_assert(! strcmp(c2, c4));
+ tor_free(c3);
+ tor_free(c4);
+ }
+ tor_free(c1);
+ tor_free(c2);
+
+ return 0;
+}
+
diff --git a/src/test/fuzz/fuzz_diff_apply.c b/src/test/fuzz/fuzz_diff_apply.c
new file mode 100644
index 0000000000..8d7bf751bf
--- /dev/null
+++ b/src/test/fuzz/fuzz_diff_apply.c
@@ -0,0 +1,65 @@
+/* Copyright (c) 2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CONSDIFF_PRIVATE
+
+#include "orconfig.h"
+#include "or.h"
+#include "consdiff.h"
+
+#include "fuzzing.h"
+
+static int
+mock_consensus_compute_digest_(const char *c, consensus_digest_t *d)
+{
+ (void)c;
+ memset(d->sha3_256, 3, sizeof(d->sha3_256));
+ return 0;
+}
+
+static int
+mock_consensus_digest_eq_(const uint8_t *a, const uint8_t *b)
+{
+ (void)a;
+ (void)b;
+ return 1;
+}
+
+int
+fuzz_init(void)
+{
+ MOCK(consensus_compute_digest, mock_consensus_compute_digest_);
+ MOCK(consensus_digest_eq, mock_consensus_digest_eq_);
+ return 0;
+}
+
+int
+fuzz_cleanup(void)
+{
+ UNMOCK(consensus_compute_digest);
+ UNMOCK(consensus_digest_eq);
+ return 0;
+}
+
+int
+fuzz_main(const uint8_t *stdin_buf, size_t data_size)
+{
+#define SEP "=====\n"
+#define SEPLEN strlen(SEP)
+ const uint8_t *separator = tor_memmem(stdin_buf, data_size, SEP, SEPLEN);
+ if (! separator)
+ return 0;
+ size_t c1_len = separator - stdin_buf;
+ char *c1 = tor_memdup_nulterm(stdin_buf, c1_len);
+ size_t c2_len = data_size - c1_len - SEPLEN;
+ char *c2 = tor_memdup_nulterm(separator + SEPLEN, c2_len);
+
+ char *c3 = consensus_diff_apply(c1, c2);
+
+ tor_free(c1);
+ tor_free(c2);
+ tor_free(c3);
+
+ return 0;
+}
+
diff --git a/src/test/fuzz/fuzz_extrainfo.c b/src/test/fuzz/fuzz_extrainfo.c
index 6251e606d0..2a3de7ecf7 100644
--- a/src/test/fuzz/fuzz_extrainfo.c
+++ b/src/test/fuzz/fuzz_extrainfo.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_hsdescv2.c b/src/test/fuzz/fuzz_hsdescv2.c
index 53b7cbe2f7..19db265716 100644
--- a/src/test/fuzz/fuzz_hsdescv2.c
+++ b/src/test/fuzz/fuzz_hsdescv2.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_http.c b/src/test/fuzz/fuzz_http.c
index 01c3815f18..2ffeb60244 100644
--- a/src/test/fuzz/fuzz_http.c
+++ b/src/test/fuzz/fuzz_http.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -18,10 +18,10 @@
static void
mock_connection_write_to_buf_impl_(const char *string, size_t len,
- connection_t *conn, int zlib)
+ connection_t *conn, int compressed)
{
log_debug(LD_GENERAL, "%sResponse:\n%u\nConnection: %p\n%s\n",
- zlib ? "Compressed " : "", (unsigned)len, conn, string);
+ compressed ? "Compressed " : "", (unsigned)len, conn, string);
}
static int
diff --git a/src/test/fuzz/fuzz_iptsv2.c b/src/test/fuzz/fuzz_iptsv2.c
index 341d4880bd..4abde0c16d 100644
--- a/src/test/fuzz/fuzz_iptsv2.c
+++ b/src/test/fuzz/fuzz_iptsv2.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_microdesc.c b/src/test/fuzz/fuzz_microdesc.c
index bb89546191..396115026e 100644
--- a/src/test/fuzz/fuzz_microdesc.c
+++ b/src/test/fuzz/fuzz_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#include "or.h"
diff --git a/src/test/fuzz/fuzz_vrs.c b/src/test/fuzz/fuzz_vrs.c
index 9301a9bcc8..baf0610a0b 100644
--- a/src/test/fuzz/fuzz_vrs.c
+++ b/src/test/fuzz/fuzz_vrs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERPARSE_PRIVATE
#define NETWORKSTATUS_PRIVATE
diff --git a/src/test/fuzz/fuzzing.h b/src/test/fuzz/fuzzing.h
index 4295743458..aecdbb4e52 100644
--- a/src/test/fuzz/fuzzing.h
+++ b/src/test/fuzz/fuzzing.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef FUZZING_H
#define FUZZING_H
diff --git a/src/test/fuzz/fuzzing_common.c b/src/test/fuzz/fuzzing_common.c
index e4920d3ee7..7aee92df63 100644
--- a/src/test/fuzz/fuzzing_common.c
+++ b/src/test/fuzz/fuzzing_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CRYPTO_ED25519_PRIVATE
#include "orconfig.h"
@@ -96,6 +96,7 @@ static void
global_init(void)
{
tor_threads_init();
+ tor_compress_init();
{
struct sipkey sipkey = { 1337, 7331 };
siphash_set_global_key(&sipkey);
diff --git a/src/test/fuzz/include.am b/src/test/fuzz/include.am
index 806710879b..2961dab56f 100644
--- a/src/test/fuzz/include.am
+++ b/src/test/fuzz/include.am
@@ -1,4 +1,5 @@
-
+# This file was generated by fuzzing_include_am.py; do not hand-edit unless
+# you enjoy having your changes erased.
FUZZING_CPPFLAGS = \
$(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
FUZZING_CFLAGS = \
@@ -17,7 +18,10 @@ FUZZING_LIBS = \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
@TOR_LIBEVENT_LIBS@ \
@TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
- @TOR_SYSTEMD_LIBS@
+ @TOR_SYSTEMD_LIBS@ \
+ @TOR_LZMA_LIBS@ \
+ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
oss-fuzz-prereqs: \
src/or/libtor-testing.a \
@@ -32,6 +36,16 @@ oss-fuzz-prereqs: \
noinst_HEADERS += \
src/test/fuzz/fuzzing.h
+LIBFUZZER = -lFuzzer
+LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
+LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
+LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
+LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
+
+LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
+LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
+
+# ===== AFL fuzzers
src_test_fuzz_fuzz_consensus_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_consensus.c
@@ -48,13 +62,29 @@ src_test_fuzz_fuzz_descriptor_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_descriptor_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_descriptor_LDADD = $(FUZZING_LIBS)
-src_test_fuzz_fuzz_http_SOURCES = \
+src_test_fuzz_fuzz_diff_SOURCES = \
src/test/fuzz/fuzzing_common.c \
- src/test/fuzz/fuzz_http.c
-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)
+ src/test/fuzz/fuzz_diff.c
+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)
+
+src_test_fuzz_fuzz_diff_apply_SOURCES = \
+ src/test/fuzz/fuzzing_common.c \
+ src/test/fuzz/fuzz_diff_apply.c
+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)
+
+src_test_fuzz_fuzz_extrainfo_SOURCES = \
+ src/test/fuzz/fuzzing_common.c \
+ src/test/fuzz/fuzz_extrainfo.c
+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)
src_test_fuzz_fuzz_hsdescv2_SOURCES = \
src/test/fuzz/fuzzing_common.c \
@@ -64,6 +94,14 @@ src_test_fuzz_fuzz_hsdescv2_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_hsdescv2_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_hsdescv2_LDADD = $(FUZZING_LIBS)
+src_test_fuzz_fuzz_http_SOURCES = \
+ src/test/fuzz/fuzzing_common.c \
+ src/test/fuzz/fuzz_http.c
+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)
+
src_test_fuzz_fuzz_iptsv2_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_iptsv2.c
@@ -72,14 +110,6 @@ src_test_fuzz_fuzz_iptsv2_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_iptsv2_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_iptsv2_LDADD = $(FUZZING_LIBS)
-src_test_fuzz_fuzz_extrainfo_SOURCES = \
- src/test/fuzz/fuzzing_common.c \
- src/test/fuzz/fuzz_extrainfo.c
-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)
-
src_test_fuzz_fuzz_microdesc_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_microdesc.c
@@ -99,19 +129,16 @@ src_test_fuzz_fuzz_vrs_LDADD = $(FUZZING_LIBS)
FUZZERS = \
src/test/fuzz/fuzz-consensus \
src/test/fuzz/fuzz-descriptor \
+ src/test/fuzz/fuzz-diff \
+ src/test/fuzz/fuzz-diff-apply \
src/test/fuzz/fuzz-extrainfo \
- src/test/fuzz/fuzz-http \
src/test/fuzz/fuzz-hsdescv2 \
+ src/test/fuzz/fuzz-http \
src/test/fuzz/fuzz-iptsv2 \
src/test/fuzz/fuzz-microdesc \
src/test/fuzz/fuzz-vrs
-
-LIBFUZZER = /home/nickm/build/libfuzz/libFuzzer.a
-LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
-LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
-LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
-LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
+# ===== libfuzzer
if LIBFUZZER_ENABLED
src_test_fuzz_lf_fuzz_consensus_SOURCES = \
@@ -128,6 +155,20 @@ 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)
+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)
+
+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)
+
src_test_fuzz_lf_fuzz_extrainfo_SOURCES = \
$(src_test_fuzz_fuzz_extrainfo_SOURCES)
src_test_fuzz_lf_fuzz_extrainfo_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
@@ -135,13 +176,6 @@ 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)
-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)
-
src_test_fuzz_lf_fuzz_hsdescv2_SOURCES = \
$(src_test_fuzz_fuzz_hsdescv2_SOURCES)
src_test_fuzz_lf_fuzz_hsdescv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
@@ -149,6 +183,13 @@ 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)
+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)
+
src_test_fuzz_lf_fuzz_iptsv2_SOURCES = \
$(src_test_fuzz_fuzz_iptsv2_SOURCES)
src_test_fuzz_lf_fuzz_iptsv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
@@ -173,9 +214,11 @@ src_test_fuzz_lf_fuzz_vrs_LDADD = $(LIBFUZZER_LIBS)
LIBFUZZER_FUZZERS = \
src/test/fuzz/lf-fuzz-consensus \
src/test/fuzz/lf-fuzz-descriptor \
+ src/test/fuzz/lf-fuzz-diff \
+ src/test/fuzz/lf-fuzz-diff-apply \
src/test/fuzz/lf-fuzz-extrainfo \
- src/test/fuzz/lf-fuzz-http \
src/test/fuzz/lf-fuzz-hsdescv2 \
+ src/test/fuzz/lf-fuzz-http \
src/test/fuzz/lf-fuzz-iptsv2 \
src/test/fuzz/lf-fuzz-microdesc \
src/test/fuzz/lf-fuzz-vrs
@@ -184,10 +227,9 @@ else
LIBFUZZER_FUZZERS =
endif
-if OSS_FUZZ_ENABLED
-LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
-LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
+# ===== oss-fuzz
+if OSS_FUZZ_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)
@@ -198,21 +240,31 @@ src_test_fuzz_liboss_fuzz_descriptor_a_SOURCES = \
src_test_fuzz_liboss_fuzz_descriptor_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_descriptor_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+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)
+
+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)
+
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)
-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)
-
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)
+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)
+
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)
@@ -231,12 +283,15 @@ src_test_fuzz_liboss_fuzz_vrs_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
OSS_FUZZ_FUZZERS = \
src/test/fuzz/liboss-fuzz-consensus.a \
src/test/fuzz/liboss-fuzz-descriptor.a \
+ src/test/fuzz/liboss-fuzz-diff.a \
+ src/test/fuzz/liboss-fuzz-diff-apply.a \
src/test/fuzz/liboss-fuzz-extrainfo.a \
- src/test/fuzz/liboss-fuzz-http.a \
src/test/fuzz/liboss-fuzz-hsdescv2.a \
+ src/test/fuzz/liboss-fuzz-http.a \
src/test/fuzz/liboss-fuzz-iptsv2.a \
src/test/fuzz/liboss-fuzz-microdesc.a \
src/test/fuzz/liboss-fuzz-vrs.a
+
else
OSS_FUZZ_FUZZERS =
endif
diff --git a/src/test/fuzz_static_testcases.sh b/src/test/fuzz_static_testcases.sh
index bfe1677573..3cb45ad5e6 100755
--- a/src/test/fuzz_static_testcases.sh
+++ b/src/test/fuzz_static_testcases.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (c) 2016, The Tor Project, Inc.
+# Copyright (c) 2016-2017, The Tor Project, Inc.
# See LICENSE for licensing information
set -e
diff --git a/src/test/hs_ntor_ref.py b/src/test/hs_ntor_ref.py
new file mode 100644
index 0000000000..2ed9324e1f
--- /dev/null
+++ b/src/test/hs_ntor_ref.py
@@ -0,0 +1,425 @@
+#!/usr/bin/python
+# Copyright 2017, The Tor Project, Inc
+# See LICENSE for licensing information
+
+"""
+hs_ntor_ref.py
+
+This module is a reference implementation of the modified ntor protocol
+proposed for Tor hidden services in proposal 224 (Next Generation Hidden
+Services) in section [NTOR-WITH-EXTRA-DATA].
+
+The modified ntor protocol is a single-round protocol, with three steps in total:
+
+ 1: Client generates keys and sends them to service via INTRODUCE cell
+
+ 2: Service computes key material based on client's keys, and sends its own
+ keys to client via RENDEZVOUS cell
+
+ 3: Client computes key material as well.
+
+It's meant to be used to validate Tor's HS ntor implementation by conducting
+various integration tests. Specifically it conducts the following three tests:
+
+- Tests our Python implementation by running the whole protocol in Python and
+ making sure that results are consistent.
+
+- Tests little-t-tor ntor implementation. We use this Python code to instrument
+ little-t-tor and carry out the handshake by using little-t-tor code. The
+ small C wrapper at src/test/test-hs-ntor-cl is used for this Python module to
+ interface with little-t-tor.
+
+- Cross-tests Python and little-t-tor implementation by running half of the
+ protocol in Python code and the other in little-t-tor. This is actually two
+ tests so that all parts of the protocol are run both by little-t-tor and
+ Python.
+
+It requires the curve25519 python module from the curve25519-donna package.
+
+The whole logic and concept for this test suite was taken from ntor_ref.py.
+
+ *** DO NOT USE THIS IN PRODUCTION. ***
+"""
+
+import struct
+import os, sys
+import binascii
+import subprocess
+
+try:
+ import curve25519
+ curve25519mod = curve25519.keys
+except ImportError:
+ curve25519 = None
+ import slownacl_curve25519
+ curve25519mod = slownacl_curve25519
+
+import hashlib
+try:
+ import sha3
+except ImportError:
+ # In python 3.6, the sha3 functions are in hashlib whether we
+ # import sha3 or not.
+ sha3 = None
+
+try:
+ # Pull the sha3 functions in.
+ from hashlib import sha3_256, shake_256
+ shake_squeeze = shake_256.digest
+except ImportError:
+ if hasattr(sha3, "SHA3256"):
+ # If this happens, then we have the old "sha3" module which
+ # hashlib and pysha3 superseded.
+ sha3_256 = sha3.SHA3256
+ shake_256 = sha3.SHAKE256
+ shake_squeeze = shake_256.squeeze
+ else:
+ # error code 77 tells automake to skip this test
+ sys.exit(77)
+
+# Import Nick's ntor reference implementation in Python
+# We are gonna use a few of its utilities.
+from ntor_ref import hash_nil
+from ntor_ref import PrivateKey
+
+# String constants used in this protocol
+PROTOID = b"tor-hs-ntor-curve25519-sha3-256-1"
+T_HSENC = PROTOID + b":hs_key_extract"
+T_HSVERIFY = PROTOID + b":hs_verify"
+T_HSMAC = PROTOID + b":hs_mac"
+M_HSEXPAND = PROTOID + b":hs_key_expand"
+
+INTRO_SECRET_LEN = 161
+REND_SECRET_LEN = 225
+AUTH_INPUT_LEN = 199
+
+# Implements MAC(k,m) = H(htonll(len(k)) | k | m)
+def mac(k,m):
+ def htonll(num):
+ return struct.pack('!q', num)
+
+ s = sha3_256()
+ s.update(htonll(len(k)))
+ s.update(k)
+ s.update(m)
+ return s.digest()
+
+######################################################################
+
+# Functions that implement the modified HS ntor protocol
+
+"""As client compute key material for INTRODUCE cell as follows:
+
+ intro_secret_hs_input = EXP(B,x) | AUTH_KEY | X | B | PROTOID
+ info = m_hsexpand | subcredential
+ hs_keys = KDF(intro_secret_hs_input | t_hsenc | info, S_KEY_LEN+MAC_LEN)
+ ENC_KEY = hs_keys[0:S_KEY_LEN]
+ MAC_KEY = hs_keys[S_KEY_LEN:S_KEY_LEN+MAC_KEY_LEN]
+"""
+def intro2_ntor_client(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey, subcredential):
+
+ dh_result = client_ephemeral_enc_privkey.get_shared_key(intro_enc_pubkey, hash_nil)
+ secret = dh_result + intro_auth_pubkey_str + client_ephemeral_enc_pubkey.serialize() + intro_enc_pubkey.serialize() + PROTOID
+ assert(len(secret) == INTRO_SECRET_LEN)
+ info = M_HSEXPAND + subcredential
+
+ kdf = shake_256()
+ kdf.update(secret + T_HSENC + info)
+ key_material = shake_squeeze(kdf, 64*8)
+
+ enc_key = key_material[0:32]
+ mac_key = key_material[32:64]
+
+ return enc_key, mac_key
+
+"""Wrapper over intro2_ntor_client()"""
+def client_part1(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey, subcredential):
+ enc_key, mac_key = intro2_ntor_client(intro_auth_pubkey_str, intro_enc_pubkey, client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey, subcredential)
+ assert(enc_key)
+ assert(mac_key)
+
+ return enc_key, mac_key
+
+"""As service compute key material for INTRODUCE cell as follows:
+
+ intro_secret_hs_input = EXP(X,b) | AUTH_KEY | X | B | PROTOID
+ info = m_hsexpand | subcredential
+ hs_keys = KDF(intro_secret_hs_input | t_hsenc | info, S_KEY_LEN+MAC_LEN)
+ HS_DEC_KEY = hs_keys[0:S_KEY_LEN]
+ HS_MAC_KEY = hs_keys[S_KEY_LEN:S_KEY_LEN+MAC_KEY_LEN]
+"""
+def intro2_ntor_service(intro_auth_pubkey_str, client_enc_pubkey, service_enc_privkey, service_enc_pubkey, subcredential):
+ dh_result = service_enc_privkey.get_shared_key(client_enc_pubkey, hash_nil)
+ secret = dh_result + intro_auth_pubkey_str + client_enc_pubkey.serialize() + service_enc_pubkey.serialize() + PROTOID
+ assert(len(secret) == INTRO_SECRET_LEN)
+ info = M_HSEXPAND + subcredential
+
+ kdf = shake_256()
+ kdf.update(secret + T_HSENC + info)
+ key_material = shake_squeeze(kdf, 64*8)
+
+ enc_key = key_material[0:32]
+ mac_key = key_material[32:64]
+
+ return enc_key, mac_key
+
+"""As service compute key material for INTRODUCE and REDNEZVOUS cells.
+
+ Use intro2_ntor_service() to calculate the INTRODUCE key material, and use
+ the following computations to do the RENDEZVOUS ones:
+
+ rend_secret_hs_input = EXP(X,y) | EXP(X,b) | AUTH_KEY | B | X | Y | PROTOID
+ NTOR_KEY_SEED = MAC(rend_secret_hs_input, t_hsenc)
+ verify = MAC(rend_secret_hs_input, t_hsverify)
+ auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server"
+ AUTH_INPUT_MAC = MAC(auth_input, t_hsmac)
+"""
+def service_part1(intro_auth_pubkey_str, client_enc_pubkey, intro_enc_privkey, intro_enc_pubkey, subcredential):
+ intro_enc_key, intro_mac_key = intro2_ntor_service(intro_auth_pubkey_str, client_enc_pubkey, intro_enc_privkey, intro_enc_pubkey, subcredential)
+ assert(intro_enc_key)
+ assert(intro_mac_key)
+
+ service_ephemeral_privkey = PrivateKey()
+ service_ephemeral_pubkey = service_ephemeral_privkey.get_public()
+
+ dh_result1 = service_ephemeral_privkey.get_shared_key(client_enc_pubkey, hash_nil)
+ dh_result2 = intro_enc_privkey.get_shared_key(client_enc_pubkey, hash_nil)
+ rend_secret_hs_input = dh_result1 + dh_result2 + intro_auth_pubkey_str + intro_enc_pubkey.serialize() + client_enc_pubkey.serialize() + service_ephemeral_pubkey.serialize() + PROTOID
+ assert(len(rend_secret_hs_input) == REND_SECRET_LEN)
+
+ ntor_key_seed = mac(rend_secret_hs_input, T_HSENC)
+ verify = mac(rend_secret_hs_input, T_HSVERIFY)
+ auth_input = verify + intro_auth_pubkey_str + intro_enc_pubkey.serialize() + service_ephemeral_pubkey.serialize() + client_enc_pubkey.serialize() + PROTOID + b"Server"
+ assert(len(auth_input) == AUTH_INPUT_LEN)
+ auth_input_mac = mac(auth_input, T_HSMAC)
+
+ assert(ntor_key_seed)
+ assert(auth_input_mac)
+ assert(service_ephemeral_pubkey)
+
+ return intro_enc_key, intro_mac_key, ntor_key_seed, auth_input_mac, service_ephemeral_pubkey
+
+"""As client compute key material for rendezvous cells as follows:
+
+ rend_secret_hs_input = EXP(Y,x) | EXP(B,x) | AUTH_KEY | B | X | Y | PROTOID
+ NTOR_KEY_SEED = MAC(ntor_secret_input, t_hsenc)
+ verify = MAC(ntor_secret_input, t_hsverify)
+ auth_input = verify | AUTH_KEY | B | Y | X | PROTOID | "Server"
+ AUTH_INPUT_MAC = MAC(auth_input, t_hsmac)
+"""
+def client_part2(intro_auth_pubkey_str, client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_ephemeral_rend_pubkey):
+ dh_result1 = client_ephemeral_enc_privkey.get_shared_key(service_ephemeral_rend_pubkey, hash_nil)
+ dh_result2 = client_ephemeral_enc_privkey.get_shared_key(intro_enc_pubkey, hash_nil)
+ rend_secret_hs_input = dh_result1 + dh_result2 + intro_auth_pubkey_str + intro_enc_pubkey.serialize() + client_ephemeral_enc_pubkey.serialize() + service_ephemeral_rend_pubkey.serialize() + PROTOID
+ assert(len(rend_secret_hs_input) == REND_SECRET_LEN)
+
+ ntor_key_seed = mac(rend_secret_hs_input, T_HSENC)
+ verify = mac(rend_secret_hs_input, T_HSVERIFY)
+ auth_input = verify + intro_auth_pubkey_str + intro_enc_pubkey.serialize() + service_ephemeral_rend_pubkey.serialize() + client_ephemeral_enc_pubkey.serialize() + PROTOID + b"Server"
+ assert(len(auth_input) == AUTH_INPUT_LEN)
+ auth_input_mac = mac(auth_input, T_HSMAC)
+
+ assert(ntor_key_seed)
+ assert(auth_input_mac)
+
+ return ntor_key_seed, auth_input_mac
+
+#################################################################################
+
+"""
+Utilities for communicating with the little-t-tor ntor wrapper to conduct the
+integration tests
+"""
+
+PROG = b"./src/test/test-hs-ntor-cl"
+enhex=lambda s: binascii.b2a_hex(s)
+dehex=lambda s: binascii.a2b_hex(s.strip())
+
+def tor_client1(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_privkey, subcredential):
+ p = subprocess.Popen([PROG, "client1",
+ enhex(intro_auth_pubkey_str),
+ enhex(intro_enc_pubkey.serialize()),
+ enhex(client_ephemeral_enc_privkey.serialize()),
+ enhex(subcredential)],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+
+def tor_server1(intro_auth_pubkey_str, intro_enc_privkey,
+ client_ephemeral_enc_pubkey, subcredential):
+ p = subprocess.Popen([PROG, "server1",
+ enhex(intro_auth_pubkey_str),
+ enhex(intro_enc_privkey.serialize()),
+ enhex(client_ephemeral_enc_pubkey.serialize()),
+ enhex(subcredential)],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+
+def tor_client2(intro_auth_pubkey_str, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_ephemeral_rend_pubkey, subcredential):
+ p = subprocess.Popen([PROG, "client2",
+ enhex(intro_auth_pubkey_str),
+ enhex(client_ephemeral_enc_privkey.serialize()),
+ enhex(intro_enc_pubkey.serialize()),
+ enhex(service_ephemeral_rend_pubkey.serialize()),
+ enhex(subcredential)],
+ stdout=subprocess.PIPE)
+ return map(dehex, p.stdout.readlines())
+
+##################################################################################
+
+# Perform a pure python ntor test
+def do_pure_python_ntor_test():
+ # Initialize all needed key material
+ client_ephemeral_enc_privkey = PrivateKey()
+ client_ephemeral_enc_pubkey = client_ephemeral_enc_privkey.get_public()
+ intro_enc_privkey = PrivateKey()
+ intro_enc_pubkey = intro_enc_privkey.get_public()
+ intro_auth_pubkey_str = os.urandom(32)
+ subcredential = os.urandom(32)
+
+ client_enc_key, client_mac_key = client_part1(intro_auth_pubkey_str, intro_enc_pubkey, client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey, subcredential)
+
+ service_enc_key, service_mac_key, service_ntor_key_seed, service_auth_input_mac, service_ephemeral_pubkey = service_part1(intro_auth_pubkey_str, client_ephemeral_enc_pubkey, intro_enc_privkey, intro_enc_pubkey, subcredential)
+
+ assert(client_enc_key == service_enc_key)
+ assert(client_mac_key == service_mac_key)
+
+ client_ntor_key_seed, client_auth_input_mac = client_part2(intro_auth_pubkey_str, client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_ephemeral_pubkey)
+
+ assert(client_ntor_key_seed == service_ntor_key_seed)
+ assert(client_auth_input_mac == service_auth_input_mac)
+
+ print("DONE: python dance [%s]" % repr(client_auth_input_mac))
+
+# Perform a pure little-t-tor integration test.
+def do_little_t_tor_ntor_test():
+ # Initialize all needed key material
+ subcredential = os.urandom(32)
+ client_ephemeral_enc_privkey = PrivateKey()
+ client_ephemeral_enc_pubkey = client_ephemeral_enc_privkey.get_public()
+ intro_enc_privkey = PrivateKey()
+ intro_enc_pubkey = intro_enc_privkey.get_public() # service-side enc key
+ intro_auth_pubkey_str = os.urandom(32)
+
+ client_enc_key, client_mac_key = tor_client1(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_privkey, subcredential)
+ assert(client_enc_key)
+ assert(client_mac_key)
+
+ service_enc_key, service_mac_key, service_ntor_auth_mac, service_ntor_key_seed, service_eph_pubkey = tor_server1(intro_auth_pubkey_str,
+ intro_enc_privkey,
+ client_ephemeral_enc_pubkey,
+ subcredential)
+ assert(service_enc_key)
+ assert(service_mac_key)
+ assert(service_ntor_auth_mac)
+ assert(service_ntor_key_seed)
+
+ assert(client_enc_key == service_enc_key)
+ assert(client_mac_key == service_mac_key)
+
+ # Turn from bytes to key
+ service_eph_pubkey = curve25519mod.Public(service_eph_pubkey)
+
+ client_ntor_auth_mac, client_ntor_key_seed = tor_client2(intro_auth_pubkey_str, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_eph_pubkey, subcredential)
+ assert(client_ntor_auth_mac)
+ assert(client_ntor_key_seed)
+
+ assert(client_ntor_key_seed == service_ntor_key_seed)
+ assert(client_ntor_auth_mac == service_ntor_auth_mac)
+
+ print("DONE: tor dance [%s]" % repr(client_ntor_auth_mac))
+
+"""
+Do mixed test as follows:
+ 1. C -> S (python mode)
+ 2. C <- S (tor mode)
+ 3. Client computes keys (python mode)
+"""
+def do_first_mixed_test():
+ subcredential = os.urandom(32)
+
+ client_ephemeral_enc_privkey = PrivateKey()
+ client_ephemeral_enc_pubkey = client_ephemeral_enc_privkey.get_public()
+ intro_enc_privkey = PrivateKey()
+ intro_enc_pubkey = intro_enc_privkey.get_public() # service-side enc key
+
+ intro_auth_pubkey_str = os.urandom(32)
+
+ # Let's do mixed
+ client_enc_key, client_mac_key = client_part1(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey,
+ subcredential)
+
+ service_enc_key, service_mac_key, service_ntor_auth_mac, service_ntor_key_seed, service_eph_pubkey = tor_server1(intro_auth_pubkey_str,
+ intro_enc_privkey,
+ client_ephemeral_enc_pubkey,
+ subcredential)
+ assert(service_enc_key)
+ assert(service_mac_key)
+ assert(service_ntor_auth_mac)
+ assert(service_ntor_key_seed)
+ assert(service_eph_pubkey)
+
+ assert(client_enc_key == service_enc_key)
+ assert(client_mac_key == service_mac_key)
+
+ # Turn from bytes to key
+ service_eph_pubkey = curve25519mod.Public(service_eph_pubkey)
+
+ client_ntor_key_seed, client_auth_input_mac = client_part2(intro_auth_pubkey_str, client_ephemeral_enc_pubkey, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_eph_pubkey)
+
+ assert(client_auth_input_mac == service_ntor_auth_mac)
+ assert(client_ntor_key_seed == service_ntor_key_seed)
+
+ print("DONE: 1st mixed dance [%s]" % repr(client_auth_input_mac))
+
+"""
+Do mixed test as follows:
+ 1. C -> S (tor mode)
+ 2. C <- S (python mode)
+ 3. Client computes keys (tor mode)
+"""
+def do_second_mixed_test():
+ subcredential = os.urandom(32)
+
+ client_ephemeral_enc_privkey = PrivateKey()
+ client_ephemeral_enc_pubkey = client_ephemeral_enc_privkey.get_public()
+ intro_enc_privkey = PrivateKey()
+ intro_enc_pubkey = intro_enc_privkey.get_public() # service-side enc key
+
+ intro_auth_pubkey_str = os.urandom(32)
+
+ # Let's do mixed
+ client_enc_key, client_mac_key = tor_client1(intro_auth_pubkey_str, intro_enc_pubkey,
+ client_ephemeral_enc_privkey, subcredential)
+ assert(client_enc_key)
+ assert(client_mac_key)
+
+ service_enc_key, service_mac_key, service_ntor_key_seed, service_ntor_auth_mac, service_ephemeral_pubkey = service_part1(intro_auth_pubkey_str, client_ephemeral_enc_pubkey, intro_enc_privkey, intro_enc_pubkey, subcredential)
+
+ client_ntor_auth_mac, client_ntor_key_seed = tor_client2(intro_auth_pubkey_str, client_ephemeral_enc_privkey,
+ intro_enc_pubkey, service_ephemeral_pubkey, subcredential)
+ assert(client_ntor_auth_mac)
+ assert(client_ntor_key_seed)
+
+ assert(client_ntor_key_seed == service_ntor_key_seed)
+ assert(client_ntor_auth_mac == service_ntor_auth_mac)
+
+ print("DONE: 2nd mixed dance [%s]" % repr(client_ntor_auth_mac))
+
+def do_mixed_tests():
+ do_first_mixed_test()
+ do_second_mixed_test()
+
+if __name__ == '__main__':
+ do_pure_python_ntor_test()
+ do_little_t_tor_ntor_test()
+ do_mixed_tests()
diff --git a/src/test/hs_test_helpers.c b/src/test/hs_test_helpers.c
new file mode 100644
index 0000000000..dcd58bc5fd
--- /dev/null
+++ b/src/test/hs_test_helpers.c
@@ -0,0 +1,263 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#include "crypto_ed25519.h"
+#include "test.h"
+#include "torcert.h"
+
+#include "hs_test_helpers.h"
+
+hs_desc_intro_point_t *
+hs_helper_build_intro_point(const ed25519_keypair_t *signing_kp, time_t now,
+ const char *addr, int legacy)
+{
+ int ret;
+ ed25519_keypair_t auth_kp;
+ hs_desc_intro_point_t *intro_point = NULL;
+ hs_desc_intro_point_t *ip = tor_malloc_zero(sizeof(*ip));
+ ip->link_specifiers = smartlist_new();
+
+ {
+ hs_desc_link_specifier_t *ls = tor_malloc_zero(sizeof(*ls));
+ if (legacy) {
+ ls->type = LS_LEGACY_ID;
+ memcpy(ls->u.legacy_id, "0299F268FCA9D55CD157976D39AE92B4B455B3A8",
+ DIGEST_LEN);
+ } else {
+ ls->u.ap.port = 9001;
+ int family = tor_addr_parse(&ls->u.ap.addr, addr);
+ switch (family) {
+ case AF_INET:
+ ls->type = LS_IPV4;
+ break;
+ case AF_INET6:
+ ls->type = LS_IPV6;
+ break;
+ default:
+ /* Stop the test, not suppose to have an error. */
+ tt_int_op(family, OP_EQ, AF_INET);
+ }
+ }
+ smartlist_add(ip->link_specifiers, ls);
+ }
+
+ ret = ed25519_keypair_generate(&auth_kp, 0);
+ tt_int_op(ret, ==, 0);
+ ip->auth_key_cert = tor_cert_create(signing_kp, CERT_TYPE_AUTH_HS_IP_KEY,
+ &auth_kp.pubkey, now,
+ HS_DESC_CERT_LIFETIME,
+ CERT_FLAG_INCLUDE_SIGNING_KEY);
+ tt_assert(ip->auth_key_cert);
+
+ if (legacy) {
+ ip->legacy.key = crypto_pk_new();
+ tt_assert(ip->legacy.key);
+ ret = crypto_pk_generate_key(ip->legacy.key);
+ tt_int_op(ret, ==, 0);
+ ssize_t cert_len = tor_make_rsa_ed25519_crosscert(
+ &signing_kp->pubkey, ip->legacy.key,
+ now + HS_DESC_CERT_LIFETIME,
+ &ip->legacy.cert.encoded);
+ tt_assert(ip->legacy.cert.encoded);
+ tt_u64_op(cert_len, OP_GT, 0);
+ ip->legacy.cert.len = cert_len;
+ }
+
+ /* Encryption key. */
+ {
+ int signbit;
+ curve25519_keypair_t curve25519_kp;
+ ed25519_keypair_t ed25519_kp;
+ tor_cert_t *cross_cert;
+
+ ret = curve25519_keypair_generate(&curve25519_kp, 0);
+ tt_int_op(ret, ==, 0);
+ ed25519_keypair_from_curve25519_keypair(&ed25519_kp, &signbit,
+ &curve25519_kp);
+ cross_cert = tor_cert_create(signing_kp, CERT_TYPE_CROSS_HS_IP_KEYS,
+ &ed25519_kp.pubkey, time(NULL),
+ HS_DESC_CERT_LIFETIME,
+ CERT_FLAG_INCLUDE_SIGNING_KEY);
+ tt_assert(cross_cert);
+ ip->enc_key_cert = cross_cert;
+ }
+
+ intro_point = ip;
+ done:
+ if (intro_point == NULL)
+ tor_free(ip);
+
+ return intro_point;
+}
+
+/* Return a valid hs_descriptor_t object. If no_ip is set, no introduction
+ * points are added. */
+static hs_descriptor_t *
+hs_helper_build_hs_desc_impl(unsigned int no_ip,
+ const ed25519_keypair_t *signing_kp)
+{
+ int ret;
+ time_t now = time(NULL);
+ ed25519_keypair_t blinded_kp;
+ hs_descriptor_t *descp = NULL, *desc = tor_malloc_zero(sizeof(*desc));
+
+ desc->plaintext_data.version = HS_DESC_SUPPORTED_FORMAT_VERSION_MAX;
+
+ /* Copy only the public key into the descriptor. */
+ memcpy(&desc->plaintext_data.signing_pubkey, &signing_kp->pubkey,
+ sizeof(ed25519_public_key_t));
+
+ ret = ed25519_keypair_generate(&blinded_kp, 0);
+ tt_int_op(ret, ==, 0);
+ /* Copy only the public key into the descriptor. */
+ memcpy(&desc->plaintext_data.blinded_pubkey, &blinded_kp.pubkey,
+ sizeof(ed25519_public_key_t));
+
+ desc->plaintext_data.signing_key_cert =
+ tor_cert_create(&blinded_kp, CERT_TYPE_SIGNING_HS_DESC,
+ &signing_kp->pubkey, now, 3600,
+ CERT_FLAG_INCLUDE_SIGNING_KEY);
+ tt_assert(desc->plaintext_data.signing_key_cert);
+ desc->plaintext_data.revision_counter = 42;
+ desc->plaintext_data.lifetime_sec = 3 * 60 * 60;
+
+ /* Setup encrypted data section. */
+ desc->encrypted_data.create2_ntor = 1;
+ desc->encrypted_data.intro_auth_types = smartlist_new();
+ desc->encrypted_data.single_onion_service = 1;
+ smartlist_add(desc->encrypted_data.intro_auth_types, tor_strdup("ed25519"));
+ desc->encrypted_data.intro_points = smartlist_new();
+ if (!no_ip) {
+ /* Add four intro points. */
+ smartlist_add(desc->encrypted_data.intro_points,
+ hs_helper_build_intro_point(signing_kp, now, "1.2.3.4", 0));
+ smartlist_add(desc->encrypted_data.intro_points,
+ hs_helper_build_intro_point(signing_kp, now, "[2600::1]", 0));
+ smartlist_add(desc->encrypted_data.intro_points,
+ hs_helper_build_intro_point(signing_kp, now, "3.2.1.4", 1));
+ smartlist_add(desc->encrypted_data.intro_points,
+ hs_helper_build_intro_point(signing_kp, now, "", 1));
+ }
+
+ descp = desc;
+ done:
+ if (descp == NULL)
+ tor_free(desc);
+
+ return descp;
+}
+
+/* Build a descriptor with introduction points. */
+hs_descriptor_t *
+hs_helper_build_hs_desc_with_ip(const ed25519_keypair_t *signing_kp)
+{
+ return hs_helper_build_hs_desc_impl(0, signing_kp);
+}
+
+/* Build a descriptor without any introduction points. */
+hs_descriptor_t *
+hs_helper_build_hs_desc_no_ip(const ed25519_keypair_t *signing_kp)
+{
+ return hs_helper_build_hs_desc_impl(1, signing_kp);
+}
+
+void
+hs_helper_desc_equal(const hs_descriptor_t *desc1,
+ const hs_descriptor_t *desc2)
+{
+ char *addr1 = NULL, *addr2 = NULL;
+ /* Plaintext data section. */
+ tt_int_op(desc1->plaintext_data.version, OP_EQ,
+ desc2->plaintext_data.version);
+ tt_uint_op(desc1->plaintext_data.lifetime_sec, OP_EQ,
+ desc2->plaintext_data.lifetime_sec);
+ tt_assert(tor_cert_eq(desc1->plaintext_data.signing_key_cert,
+ desc2->plaintext_data.signing_key_cert));
+ tt_mem_op(desc1->plaintext_data.signing_pubkey.pubkey, OP_EQ,
+ desc2->plaintext_data.signing_pubkey.pubkey,
+ ED25519_PUBKEY_LEN);
+ tt_mem_op(desc1->plaintext_data.blinded_pubkey.pubkey, OP_EQ,
+ desc2->plaintext_data.blinded_pubkey.pubkey,
+ ED25519_PUBKEY_LEN);
+ tt_u64_op(desc1->plaintext_data.revision_counter, ==,
+ desc2->plaintext_data.revision_counter);
+
+ /* NOTE: We can't compare the encrypted blob because when encoding the
+ * descriptor, the object is immutable thus we don't update it with the
+ * encrypted blob. As contrast to the decoding process where we populate a
+ * descriptor object. */
+
+ /* Encrypted data section. */
+ tt_uint_op(desc1->encrypted_data.create2_ntor, ==,
+ desc2->encrypted_data.create2_ntor);
+
+ /* Authentication type. */
+ tt_int_op(!!desc1->encrypted_data.intro_auth_types, ==,
+ !!desc2->encrypted_data.intro_auth_types);
+ if (desc1->encrypted_data.intro_auth_types &&
+ desc2->encrypted_data.intro_auth_types) {
+ tt_int_op(smartlist_len(desc1->encrypted_data.intro_auth_types), ==,
+ smartlist_len(desc2->encrypted_data.intro_auth_types));
+ for (int i = 0;
+ i < smartlist_len(desc1->encrypted_data.intro_auth_types);
+ i++) {
+ tt_str_op(smartlist_get(desc1->encrypted_data.intro_auth_types, i),OP_EQ,
+ smartlist_get(desc2->encrypted_data.intro_auth_types, i));
+ }
+ }
+
+ /* Introduction points. */
+ {
+ tt_assert(desc1->encrypted_data.intro_points);
+ tt_assert(desc2->encrypted_data.intro_points);
+ tt_int_op(smartlist_len(desc1->encrypted_data.intro_points), ==,
+ smartlist_len(desc2->encrypted_data.intro_points));
+ for (int i=0; i < smartlist_len(desc1->encrypted_data.intro_points); i++) {
+ hs_desc_intro_point_t *ip1 = smartlist_get(desc1->encrypted_data
+ .intro_points, i),
+ *ip2 = smartlist_get(desc2->encrypted_data
+ .intro_points, i);
+ tt_assert(tor_cert_eq(ip1->auth_key_cert, ip2->auth_key_cert));
+ if (ip1->legacy.key) {
+ tt_int_op(crypto_pk_cmp_keys(ip1->legacy.key, ip2->legacy.key),
+ OP_EQ, 0);
+ } else {
+ tt_mem_op(&ip1->enc_key, OP_EQ, &ip2->enc_key, CURVE25519_PUBKEY_LEN);
+ }
+
+ tt_int_op(smartlist_len(ip1->link_specifiers), ==,
+ smartlist_len(ip2->link_specifiers));
+ for (int j = 0; j < smartlist_len(ip1->link_specifiers); j++) {
+ hs_desc_link_specifier_t *ls1 = smartlist_get(ip1->link_specifiers, j),
+ *ls2 = smartlist_get(ip2->link_specifiers, j);
+ tt_int_op(ls1->type, ==, ls2->type);
+ switch (ls1->type) {
+ case LS_IPV4:
+ case LS_IPV6:
+ {
+ addr1 = tor_addr_to_str_dup(&ls1->u.ap.addr);
+ addr2 = tor_addr_to_str_dup(&ls2->u.ap.addr);
+ tt_str_op(addr1, OP_EQ, addr2);
+ tor_free(addr1);
+ tor_free(addr2);
+ tt_int_op(ls1->u.ap.port, ==, ls2->u.ap.port);
+ }
+ break;
+ case LS_LEGACY_ID:
+ tt_mem_op(ls1->u.legacy_id, OP_EQ, ls2->u.legacy_id,
+ sizeof(ls1->u.legacy_id));
+ break;
+ default:
+ /* Unknown type, caught it and print its value. */
+ tt_int_op(ls1->type, OP_EQ, -1);
+ }
+ }
+ }
+ }
+
+ done:
+ tor_free(addr1);
+ tor_free(addr2);
+}
+
diff --git a/src/test/hs_test_helpers.h b/src/test/hs_test_helpers.h
new file mode 100644
index 0000000000..a7fedab136
--- /dev/null
+++ b/src/test/hs_test_helpers.h
@@ -0,0 +1,22 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_HS_TEST_HELPERS_H
+#define TOR_HS_TEST_HELPERS_H
+
+#include "ed25519_cert.h"
+#include "hs_descriptor.h"
+
+/* Set of functions to help build and test descriptors. */
+hs_desc_intro_point_t *hs_helper_build_intro_point(
+ const ed25519_keypair_t *signing_kp, time_t now,
+ const char *addr, int legacy);
+hs_descriptor_t *hs_helper_build_hs_desc_no_ip(
+ const ed25519_keypair_t *signing_kp);
+hs_descriptor_t *hs_helper_build_hs_desc_with_ip(
+ const ed25519_keypair_t *signing_kp);
+void hs_helper_desc_equal(const hs_descriptor_t *desc1,
+ const hs_descriptor_t *desc2);
+
+#endif /* TOR_HS_TEST_HELPERS_H */
+
diff --git a/src/test/include.am b/src/test/include.am
index 1c0726fd3a..723b4964e1 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -5,8 +5,11 @@ TESTS_ENVIRONMENT = \
export PYTHON="$(PYTHON)"; \
export SHELL="$(SHELL)"; \
export abs_top_srcdir="$(abs_top_srcdir)"; \
+ export abs_top_builddir="$(abs_top_builddir)"; \
export builddir="$(builddir)"; \
- export TESTING_TOR_BINARY="$(TESTING_TOR_BINARY)";
+ export TESTING_TOR_BINARY="$(TESTING_TOR_BINARY)"; \
+ export CARGO="$(CARGO)"; \
+ export CARGO_ONLINE="$(CARGO_ONLINE)";
TESTSCRIPTS = \
src/test/fuzz_static_testcases.sh \
@@ -19,8 +22,13 @@ TESTSCRIPTS = \
src/test/test_workqueue_socketpair.sh \
src/test/test_switch_id.sh
+if USE_RUST
+TESTSCRIPTS += \
+ src/test/test_rust.sh
+endif
+
if USEPYTHON
-TESTSCRIPTS += src/test/test_ntor.sh src/test/test_bt.sh
+TESTSCRIPTS += src/test/test_ntor.sh src/test/test_hs_ntor.sh src/test/test_bt.sh
endif
TESTS += src/test/test src/test/test-slow src/test/test-memwipe \
@@ -69,27 +77,36 @@ src_test_AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \
src_test_test_SOURCES = \
src/test/log_test_helpers.c \
+ src/test/hs_test_helpers.c \
src/test/rend_test_helpers.c \
src/test/test.c \
src/test/test_accounting.c \
src/test/test_addr.c \
src/test/test_address.c \
+ src/test/test_address_set.c \
src/test/test_buffers.c \
src/test/test_cell_formats.c \
src/test/test_cell_queue.c \
src/test/test_channel.c \
+ src/test/test_channelpadding.c \
src/test/test_channeltls.c \
src/test/test_checkdir.c \
src/test/test_circuitlist.c \
src/test/test_circuitmux.c \
+ src/test/test_circuitbuild.c \
src/test/test_circuituse.c \
src/test/test_compat_libevent.c \
src/test/test_config.c \
src/test/test_connection.c \
+ src/test/test_conscache.c \
+ src/test/test_consdiff.c \
+ src/test/test_consdiffmgr.c \
src/test/test_containers.c \
src/test/test_controller.c \
src/test/test_controller_events.c \
src/test/test_crypto.c \
+ src/test/test_crypto_openssl.c \
+ src/test/test_dos.c \
src/test/test_data.c \
src/test/test_dir.c \
src/test/test_dir_common.c \
@@ -125,10 +142,12 @@ src_test_test_SOURCES = \
src/test/test_routerkeys.c \
src/test/test_routerlist.c \
src/test/test_routerset.c \
+ src/test/test_rust.c \
src/test/test_scheduler.c \
src/test/test_shared_random.c \
src/test/test_socks.c \
src/test/test_status.c \
+ src/test/test_storagedir.c \
src/test/test_threads.c \
src/test/test_tortls.c \
src/test/test_util.c \
@@ -174,7 +193,9 @@ src_test_test_switch_id_LDFLAGS = @TOR_LDFLAGS_zlib@
src_test_test_switch_id_LDADD = \
src/common/libor-testing.a \
src/common/libor-ctime-testing.a \
- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@
+ @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
+ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
src_test_test_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
@TOR_LDFLAGS_libevent@
@@ -186,9 +207,11 @@ src_test_test_LDADD = src/or/libtor-testing.a \
src/common/libor-ctime-testing.a \
src/common/libor-event-testing.a \
src/trunnel/libor-trunnel-testing.a \
+ src/trace/libor-trace.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
@TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
- @TOR_SYSTEMD_LIBS@
+ @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
src_test_test_slow_CPPFLAGS = $(src_test_test_CPPFLAGS)
src_test_test_slow_CFLAGS = $(src_test_test_CFLAGS)
@@ -209,9 +232,11 @@ src_test_bench_LDADD = src/or/libtor.a src/common/libor.a \
src/common/libor-ctime.a \
src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \
src/common/libor-event.a src/trunnel/libor-trunnel.a \
+ src/trace/libor-trace.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
@TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
- @TOR_SYSTEMD_LIBS@
+ @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
src_test_test_workqueue_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
@TOR_LDFLAGS_libevent@
@@ -220,8 +245,11 @@ src_test_test_workqueue_LDADD = src/or/libtor-testing.a \
src/common/libor-ctime-testing.a \
src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \
src/common/libor-event-testing.a \
+ src/trace/libor-trace.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
+ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \
+ $(rust_ldadd)
src_test_test_timers_CPPFLAGS = $(src_test_test_CPPFLAGS)
src_test_test_timers_CFLAGS = $(src_test_test_CFLAGS)
@@ -231,11 +259,14 @@ src_test_test_timers_LDADD = \
src/common/libor-event-testing.a \
src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \
- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
+ @TOR_LZMA_LIBS@ \
+ $(rust_ldadd)
src_test_test_timers_LDFLAGS = $(src_test_test_LDFLAGS)
noinst_HEADERS+= \
src/test/fakechans.h \
+ src/test/hs_test_helpers.h \
src/test/log_test_helpers.h \
src/test/rend_test_helpers.h \
src/test/test.h \
@@ -246,38 +277,58 @@ noinst_HEADERS+= \
src/test/failing_routerdescs.inc \
src/test/ed25519_vectors.inc \
src/test/test_descriptors.inc \
+ src/test/test_hs_descriptor.inc \
src/test/vote_descriptors.inc
noinst_PROGRAMS+= src/test/test-ntor-cl
+noinst_PROGRAMS+= src/test/test-hs-ntor-cl
src_test_test_ntor_cl_SOURCES = src/test/test_ntor_cl.c
src_test_test_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
src_test_test_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \
src/common/libor-ctime.a \
src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \
+ src/trace/libor-trace.a \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
+ @TOR_LZMA_LIBS@ \
+ $(rust_ldadd)
src_test_test_ntor_cl_AM_CPPFLAGS = \
-I"$(top_srcdir)/src/or"
+src_test_test_hs_ntor_cl_SOURCES = src/test/test_hs_ntor_cl.c
+src_test_test_hs_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+src_test_test_hs_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \
+ src/common/libor-ctime.a \
+ src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \
+ @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
+ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+src_test_test_hs_ntor_cl_AM_CPPFLAGS = \
+ -I"$(top_srcdir)/src/or"
+
+
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 = src/common/libor-testing.a \
src/common/libor-ctime-testing.a \
+ src/trace/libor-trace.a \
@TOR_LIB_MATH@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ \
+ $(rust_ldadd)
src_test_test_bt_cl_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
src_test_test_bt_cl_CPPFLAGS= $(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
EXTRA_DIST += \
src/test/bt_test.py \
src/test/ntor_ref.py \
+ src/test/hs_ntor_ref.py \
src/test/fuzz_static_testcases.sh \
src/test/slownacl_curve25519.py \
src/test/zero_length_keys.sh \
src/test/test_keygen.sh \
src/test/test_zero_length_keys.sh \
- src/test/test_ntor.sh src/test/test_bt.sh \
+ src/test/test_ntor.sh src/test/test_hs_ntor.sh src/test/test_bt.sh \
src/test/test-network.sh \
+ src/test/test_rust.sh \
src/test/test_switch_id.sh \
src/test/test_workqueue_cancel.sh \
src/test/test_workqueue_efd.sh \
diff --git a/src/test/log_test_helpers.c b/src/test/log_test_helpers.c
index c788a33c17..d5a39cfeee 100644
--- a/src/test/log_test_helpers.c
+++ b/src/test/log_test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define LOG_PRIVATE
#include "torlog.h"
diff --git a/src/test/log_test_helpers.h b/src/test/log_test_helpers.h
index 922c68b42f..f7798c0249 100644
--- a/src/test/log_test_helpers.h
+++ b/src/test/log_test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -71,14 +71,14 @@ void mock_dump_saved_logs(void);
\
assert_log_predicate(mock_saved_log_has_message_containing(str) && \
mock_saved_log_n_entries() == 1, \
- "expected log to contain exactly 1 message: " # str); \
+ "expected log to contain exactly 1 message " # str); \
} while (0);
#define expect_single_log_msg_containing(str) \
do { \
assert_log_predicate(mock_saved_log_has_message_containing(str)&& \
mock_saved_log_n_entries() == 1 , \
- "expected log to contain 1 message, containing" # str); \
+ "expected log to contain 1 message, containing " # str); \
} while (0);
#define expect_no_log_msg(str) \
diff --git a/src/test/ntor_ref.py b/src/test/ntor_ref.py
index df065853f3..c753588f97 100755
--- a/src/test/ntor_ref.py
+++ b/src/test/ntor_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2012-2015, The Tor Project, Inc
+# Copyright 2012-2017, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/rend_test_helpers.c b/src/test/rend_test_helpers.c
index 377337bcb9..f7880046fb 100644
--- a/src/test/rend_test_helpers.c
+++ b/src/test/rend_test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/rend_test_helpers.h b/src/test/rend_test_helpers.h
index 180a4e8fde..486adba436 100644
--- a/src/test/rend_test_helpers.h
+++ b/src/test/rend_test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test-child.c b/src/test/test-child.c
index fdf3ccec0a..f0bdb3ea26 100644
--- a/src/test/test-child.c
+++ b/src/test/test-child.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2016, The Tor Project, Inc. */
+/* Copyright (c) 2011-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test-network.sh b/src/test/test-network.sh
index 10bd370ff3..6e0f286573 100755
--- a/src/test/test-network.sh
+++ b/src/test/test-network.sh
@@ -1,119 +1,45 @@
#!/bin/sh
-# use bash if it is available, as this script doesn't work well in non-bash sh
-# this will be fixed in #19699
-# there is no simple, portable way of checking the name of the shell, so we
-# exec bash even when sh is bash
-if [ -x /bin/bash -a "$USING_BASH" != true ]; then
- # only do this once
- export USING_BASH=true
- exec /bin/bash "$0" "$@"
+# This script calls the equivalent script in chutney/tools
+
+# If we already know CHUTNEY_PATH, don't bother with argument parsing
+TEST_NETWORK="$CHUTNEY_PATH/tools/test-network.sh"
+# Call the chutney version of this script, if it exists, and we can find it
+if [ -d "$CHUTNEY_PATH" -a -x "$TEST_NETWORK" ]; then
+ # we can't produce any output, because we might be --quiet
+ # this preserves arguments with spaces correctly
+ exec "$TEST_NETWORK" "$@"
fi
-# Please do not modify this script, it has been moved to chutney/tools
-
-export ECHO="${ECHO:-echo}"
-export ECHO_N="${ECHO_N:-/bin/echo -n}"
+# We need to go looking for CHUTNEY_PATH
+# Do we output anything at all?
+ECHO="${ECHO:-echo}"
# Output is prefixed with the name of the script
myname=$(basename $0)
-# We need to find CHUTNEY_PATH, so that we can call the version of this script
-# in chutney/tools. And we want to pass any arguments to that script as well.
-# So we source this script, which processes its arguments to find CHUTNEY_PATH.
-
-# Avoid recursively sourcing this script, and don't call the chutney version
-# while recursing, either
-if [ "$TEST_NETWORK_RECURSING" != true ]; then
- # Process the arguments into environmental variables with this script
- # to make sure $CHUTNEY_PATH is set
- # When we switch to using test-network.sh in chutney/tools, --dry-run
- # can be removed, because this script will find chutney, then pass all
- # arguments to chutney's test-network.sh
- export TEST_NETWORK_RECURSING=true
- # passing arguments to a sourced script only works in bash
- # this will be fixed in #19699
- . "$0" --dry-run "$@"
-
- # Call the chutney version of this script, if it exists, and we can find it
- if [ -d "$CHUTNEY_PATH" -a -x "$CHUTNEY_PATH/tools/test-network.sh" ]; then
- unset NETWORK_DRY_RUN
- $ECHO "$myname: Calling newer chutney script \
-$CHUTNEY_PATH/tools/test-network.sh"
- "$CHUTNEY_PATH/tools/test-network.sh" "$@"
- exit $?
- else
- $ECHO "$myname: This script has moved to chutney/tools."
- $ECHO "$myname: Please update your chutney using 'git pull'."
- # When we switch to using test-network.sh in chutney/tools, we should
- # exit with a very loud failure here
- $ECHO "$myname: Falling back to the old tor version of the script."
- fi
-fi
+# Save the arguments before we destroy them
+# This might not preserve arguments with spaces in them
+ORIGINAL_ARGS="$@"
+# We need to find CHUTNEY_PATH, so that we can call the version of this script
+# in chutney/tools with the same arguments. We also need to respect --quiet.
until [ -z "$1" ]
do
case "$1" in
--chutney-path)
- export CHUTNEY_PATH="$2"
+ CHUTNEY_PATH="$2"
shift
;;
--tor-path)
- export TOR_DIR="$2"
- shift
- ;;
- # When we switch to using test-network.sh in chutney/tools, only the
- # --chutney-path and --tor-path arguments need to be processed by this
- # script, everything else can be handled by chutney's test-network.sh
- --flavor|--flavour|--network-flavor|--network-flavour)
- export NETWORK_FLAVOUR="$2"
+ TOR_DIR="$2"
shift
;;
- --delay|--sleep|--bootstrap-time|--time)
- export BOOTSTRAP_TIME="$2"
- shift
- ;;
- # Environmental variables used by chutney verify performance tests
- # Send this many bytes per client connection (10 KBytes)
- --data|--data-bytes|--data-byte|--bytes|--byte)
- export CHUTNEY_DATA_BYTES="$2"
- shift
- ;;
- # Make this many connections per client (1)
- # Note: If you create 7 or more connections to a hidden service from
- # a single Tor 0.2.7 client, you'll likely get a verification failure due
- # to #15937. This is fixed in 0.2.8.
- --connections|--connection|--connection-count|--count)
- export CHUTNEY_CONNECTIONS="$2"
- shift
- ;;
- # Make each client connect to each HS (0)
- # 0 means a single client connects to each HS
- # 1 means every client connects to every HS
- --hs-multi-client|--hs-multi-clients|--hs-client|--hs-clients)
- export CHUTNEY_HS_MULTI_CLIENT="$2"
- shift
- ;;
- --coverage)
- export USE_COVERAGE_BINARY=true
- ;;
- --dry-run)
- # process arguments, but don't call any other scripts
- export NETWORK_DRY_RUN=true
- ;;
--quiet)
- export ECHO=true
- export ECHO_N=true
- ;;
+ ECHO=true
+ ;;
*)
- $ECHO "$myname: Sorry, I don't know what to do with '$1'."
- $ECHO "$myname: Maybe chutney's test-network.sh understands '$1'."
- $ECHO "$myname: Please update your chutney using 'git pull', and set \
-\$CHUTNEY_PATH"
- # continue processing arguments during a dry run
- if [ "$NETWORK_DRY_RUN" != true ]; then
- exit 2
- fi
+ # maybe chutney's test-network.sh can handle it
;;
esac
shift
@@ -122,7 +48,7 @@ done
# optional: $TOR_DIR is the tor build directory
# it's used to find the location of tor binaries
# if it's not set:
-# - set it ro $BUILDDIR, or
+# - set it to $BUILDDIR, or
# - if $PWD looks like a tor build directory, set it to $PWD, or
# - unset $TOR_DIR, and let chutney fall back to finding tor binaries in $PATH
if [ ! -d "$TOR_DIR" ]; then
@@ -130,12 +56,12 @@ if [ ! -d "$TOR_DIR" ]; then
# Choose the build directory
# But only if it looks like one
$ECHO "$myname: \$TOR_DIR not set, trying \$BUILDDIR"
- export TOR_DIR="$BUILDDIR"
+ TOR_DIR="$BUILDDIR"
elif [ -d "$PWD/src/or" -a -d "$PWD/src/tools" ]; then
# Guess the tor directory is the current directory
# But only if it looks like one
$ECHO "$myname: \$TOR_DIR not set, trying \$PWD"
- export TOR_DIR="$PWD"
+ TOR_DIR="$PWD"
else
$ECHO "$myname: no \$TOR_DIR, chutney will use \$PATH for tor binaries"
unset TOR_DIR
@@ -150,14 +76,12 @@ fi
if [ ! -d "$CHUTNEY_PATH" -o ! -x "$CHUTNEY_PATH/chutney" ]; then
if [ -x "$PWD/chutney" ]; then
$ECHO "$myname: \$CHUTNEY_PATH not valid, trying \$PWD"
- export CHUTNEY_PATH="$PWD"
+ CHUTNEY_PATH="$PWD"
elif [ -d "$TOR_DIR" -a -d "$TOR_DIR/../chutney" -a \
-x "$TOR_DIR/../chutney/chutney" ]; then
$ECHO "$myname: \$CHUTNEY_PATH not valid, trying \$TOR_DIR/../chutney"
- export CHUTNEY_PATH="$TOR_DIR/../chutney"
+ CHUTNEY_PATH="$TOR_DIR/../chutney"
else
- # TODO: work out how to package and install chutney,
- # so users can find it in $PATH
$ECHO "$myname: missing 'chutney' in \$CHUTNEY_PATH ($CHUTNEY_PATH)"
$ECHO "$myname: Get chutney: git clone https://git.torproject.org/\
chutney.git"
@@ -168,46 +92,17 @@ CHUTNEY_PATH=\`pwd\`/chutney"
fi
fi
-# When we switch to using test-network.sh in chutney/tools, this comment and
-# everything below it can be removed
-
-# For picking up the right tor binaries.
-# If these varibles aren't set, chutney looks for tor binaries in $PATH
-if [ -d "$TOR_DIR" ]; then
- tor_name=tor
- tor_gencert_name=tor-gencert
- if [ "$USE_COVERAGE_BINARY" = true ]; then
- tor_name=tor-cov
- fi
- export CHUTNEY_TOR="${TOR_DIR}/src/or/${tor_name}"
- export CHUTNEY_TOR_GENCERT="${TOR_DIR}/src/tools/${tor_gencert_name}"
-fi
-
-# Set the variables for the chutney network flavour
-export NETWORK_FLAVOUR=${NETWORK_FLAVOUR:-"bridges+hs"}
-export CHUTNEY_NETWORK=networks/$NETWORK_FLAVOUR
-
-# And finish up if we're doing a dry run
-if [ "$NETWORK_DRY_RUN" = true ]; then
- # we can't exit here, it breaks argument processing
- # this only works in bash: return semantics are shell-specific
- # this will be fixed in #19699
- return 2>/dev/null || exit
+TEST_NETWORK="$CHUTNEY_PATH/tools/test-network.sh"
+# Call the chutney version of this script, if it exists, and we can find it
+if [ -d "$CHUTNEY_PATH" -a -x "$TEST_NETWORK" ]; then
+ $ECHO "$myname: Calling newer chutney script $TEST_NETWORK"
+ # this may fail if some arguments have spaces in them
+ # if so, set CHUTNEY_PATH before calling test-network.sh, and spaces
+ # will be handled correctly
+ exec "$TEST_NETWORK" $ORIGINAL_ARGS
+else
+ $ECHO "$myname: Could not find tools/test-network.sh in CHUTNEY_PATH."
+ $ECHO "$myname: Please update your chutney using 'git pull'."
+ # We have failed to do what the user asked
+ exit 1
fi
-
-cd "$CHUTNEY_PATH"
-./tools/bootstrap-network.sh $NETWORK_FLAVOUR || exit 3
-
-# Sleep some, waiting for the network to bootstrap.
-# TODO: Add chutney command 'bootstrap-status' and use that instead.
-BOOTSTRAP_TIME=${BOOTSTRAP_TIME:-35}
-$ECHO_N "$myname: sleeping for $BOOTSTRAP_TIME seconds"
-n=$BOOTSTRAP_TIME; while [ $n -gt 0 ]; do
- sleep 1; n=$(expr $n - 1); $ECHO_N .
-done; $ECHO ""
-./chutney verify $CHUTNEY_NETWORK
-VERIFY_EXIT_STATUS=$?
-# work around a bug/feature in make -j2 (or more)
-# where make hangs if any child processes are still alive
-./chutney stop $CHUTNEY_NETWORK
-exit $VERIFY_EXIT_STATUS
diff --git a/src/test/test-timers.c b/src/test/test-timers.c
index b5fcade7f8..99715f4333 100644
--- a/src/test/test-timers.c
+++ b/src/test/test-timers.c
@@ -1,4 +1,4 @@
-/* Copyright 2016, The Tor Project, Inc. */
+/* Copyright 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test.c b/src/test/test.c
index 866408e856..911ef0c24e 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -44,13 +44,13 @@ double fabs(double x);
#include "buffers.h"
#include "circuitlist.h"
#include "circuitstats.h"
+#include "compress.h"
#include "config.h"
#include "connection_edge.h"
#include "geoip.h"
#include "rendcommon.h"
#include "rendcache.h"
#include "test.h"
-#include "torgzip.h"
#include "main.h"
#include "memarea.h"
#include "onion.h"
@@ -912,6 +912,24 @@ test_geoip(void *arg)
tt_str_op(entry_stats_2,OP_EQ, s);
tor_free(s);
+ /* Test the OOM handler. Add a client, run the OOM. */
+ geoip_entry_stats_init(now);
+ SET_TEST_ADDRESS(100);
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL,
+ now - (12 * 60 * 60));
+ /* We've seen this 12 hours ago. Run the OOM, it should clean the entry
+ * because it is above the minimum cutoff of 4 hours. */
+ size_t bytes_removed = geoip_client_cache_handle_oom(now, 1000);
+ tt_size_op(bytes_removed, OP_GT, 0);
+
+ /* Do it again but this time with an entry with a lower cutoff. */
+ geoip_entry_stats_init(now);
+ SET_TEST_ADDRESS(100);
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL,
+ now - (3 * 60 * 60));
+ bytes_removed = geoip_client_cache_handle_oom(now, 1000);
+ tt_size_op(bytes_removed, OP_EQ, 0);
+
/* Stop collecting entry statistics. */
geoip_entry_stats_term();
get_options_mutable()->EntryStatistics = 0;
@@ -1182,22 +1200,30 @@ struct testgroup_t testgroups[] = {
{ "accounting/", accounting_tests },
{ "addr/", addr_tests },
{ "address/", address_tests },
+ { "address_set/", address_set_tests },
{ "buffer/", buffer_tests },
{ "cellfmt/", cell_format_tests },
{ "cellqueue/", cell_queue_tests },
{ "channel/", channel_tests },
+ { "channelpadding/", channelpadding_tests },
{ "channeltls/", channeltls_tests },
{ "checkdir/", checkdir_tests },
+ { "circuitbuild/", circuitbuild_tests },
{ "circuitlist/", circuitlist_tests },
{ "circuitmux/", circuitmux_tests },
{ "circuituse/", circuituse_tests },
{ "compat/libevent/", compat_libevent_tests },
{ "config/", config_tests },
{ "connection/", connection_tests },
+ { "conscache/", conscache_tests },
+ { "consdiff/", consdiff_tests },
+ { "consdiffmgr/", consdiffmgr_tests },
{ "container/", container_tests },
{ "control/", controller_tests },
{ "control/event/", controller_event_tests },
{ "crypto/", crypto_tests },
+ { "crypto/openssl/", crypto_openssl_tests },
+ { "dos/", dos_tests },
{ "dir/", dir_tests },
{ "dir_handle_get/", dir_handle_get_tests },
{ "dir/md/", microdesc_tests },
@@ -1228,10 +1254,12 @@ struct testgroup_t testgroups[] = {
{ "routerkeys/", routerkeys_tests },
{ "routerlist/", routerlist_tests },
{ "routerset/" , routerset_tests },
+ { "rust/", rust_tests },
{ "scheduler/", scheduler_tests },
{ "socks/", socks_tests },
{ "shared-random/", sr_tests },
{ "status/" , status_tests },
+ { "storagedir/", storagedir_tests },
{ "tortls/", tortls_tests },
{ "util/", util_tests },
{ "util/format/", util_format_tests },
diff --git a/src/test/test.h b/src/test/test.h
index 2bd58f51c8..ea1b16adee 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TEST_H
@@ -177,22 +177,30 @@ extern const struct testcase_setup_t ed25519_test_setup;
extern struct testcase_t accounting_tests[];
extern struct testcase_t addr_tests[];
extern struct testcase_t address_tests[];
+extern struct testcase_t address_set_tests[];
extern struct testcase_t buffer_tests[];
extern struct testcase_t cell_format_tests[];
extern struct testcase_t cell_queue_tests[];
extern struct testcase_t channel_tests[];
+extern struct testcase_t channelpadding_tests[];
extern struct testcase_t channeltls_tests[];
extern struct testcase_t checkdir_tests[];
+extern struct testcase_t circuitbuild_tests[];
extern struct testcase_t circuitlist_tests[];
extern struct testcase_t circuitmux_tests[];
extern struct testcase_t circuituse_tests[];
extern struct testcase_t compat_libevent_tests[];
extern struct testcase_t config_tests[];
extern struct testcase_t connection_tests[];
+extern struct testcase_t conscache_tests[];
+extern struct testcase_t consdiff_tests[];
+extern struct testcase_t consdiffmgr_tests[];
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_openssl_tests[];
+extern struct testcase_t dos_tests[];
extern struct testcase_t dir_tests[];
extern struct testcase_t dir_handle_get_tests[];
extern struct testcase_t entryconn_tests[];
@@ -226,7 +234,9 @@ extern struct testcase_t router_tests[];
extern struct testcase_t routerkeys_tests[];
extern struct testcase_t routerlist_tests[];
extern struct testcase_t routerset_tests[];
+extern struct testcase_t rust_tests[];
extern struct testcase_t scheduler_tests[];
+extern struct testcase_t storagedir_tests[];
extern struct testcase_t socks_tests[];
extern struct testcase_t status_tests[];
extern struct testcase_t thread_tests[];
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index be440a0925..2f591bdfe7 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESSMAP_PRIVATE
@@ -9,6 +9,24 @@
#include "test.h"
#include "addressmap.h"
+/** 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)
{
@@ -29,6 +47,9 @@ test_addr_basic(void *arg)
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");
@@ -36,8 +57,8 @@ test_addr_basic(void *arg)
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(u32,OP_EQ, 0x7f000001u);
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));
@@ -75,6 +96,7 @@ test_addr_basic(void *arg)
}
done:
+ UNMOCK(tor_addr_lookup);
tor_free(cp);
}
diff --git a/src/test/test_address.c b/src/test/test_address.c
index 0d142ad483..50a0574522 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESS_PRIVATE
diff --git a/src/test/test_address_set.c b/src/test/test_address_set.c
new file mode 100644
index 0000000000..df022f539a
--- /dev/null
+++ b/src/test/test_address_set.c
@@ -0,0 +1,174 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#include "address_set.h"
+#include "microdesc.h"
+#include "networkstatus.h"
+#include "nodelist.h"
+#include "routerlist.h"
+#include "torcert.h"
+
+#include "test.h"
+
+static networkstatus_t *dummy_ns = NULL;
+static networkstatus_t *
+mock_networkstatus_get_latest_consensus(void)
+{
+ return dummy_ns;
+}
+
+static networkstatus_t *
+mock_networkstatus_get_latest_consensus_by_flavor(consensus_flavor_t f)
+{
+ tor_assert(f == FLAV_MICRODESC);
+ return dummy_ns;
+}
+
+/* Number of address a single node_t can have. Default to the production
+ * value. This is to control the size of the bloom filter. */
+static int addr_per_node = 2;
+static int
+mock_get_estimated_address_per_node(void)
+{
+ return addr_per_node;
+}
+
+static void
+test_contains(void *arg)
+{
+ int ret;
+ address_set_t *set = NULL;
+
+ (void) arg;
+
+ /* Setup an IPv4 and IPv6 addresses. */
+ tor_addr_t addr_v6;
+ tor_addr_parse(&addr_v6, "1:2:3:4::");
+ tor_addr_t addr_v4;
+ tor_addr_parse(&addr_v4, "42.42.42.42");
+ uint32_t ipv4h = tor_addr_to_ipv4h(&addr_v4);
+
+ /* Make it very big so the chance of failing the contain test will be
+ * extremely rare. */
+ set = address_set_new(1024);
+ tt_assert(set);
+
+ /* Add and lookup IPv6. */
+ address_set_add(set, &addr_v6);
+ ret = address_set_probably_contains(set, &addr_v6);
+ tt_int_op(ret, OP_EQ, 1);
+
+ /* Add and lookup IPv4. */
+ address_set_add_ipv4h(set, ipv4h);
+ ret = address_set_probably_contains(set, &addr_v4);
+ tt_int_op(ret, OP_EQ, 1);
+
+ /* Try a lookup of rubbish. */
+ tor_addr_t dummy_addr;
+ memset(&dummy_addr, 'A', sizeof(dummy_addr));
+ dummy_addr.family = AF_INET;
+ ret = address_set_probably_contains(set, &dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+ dummy_addr.family = AF_INET6;
+ ret = address_set_probably_contains(set, &dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+
+ done:
+ address_set_free(set);
+}
+
+static void
+test_nodelist(void *arg)
+{
+ int ret;
+ routerstatus_t *rs = NULL; microdesc_t *md = NULL; routerinfo_t *ri = NULL;
+
+ (void) arg;
+
+ MOCK(networkstatus_get_latest_consensus,
+ mock_networkstatus_get_latest_consensus);
+ MOCK(networkstatus_get_latest_consensus_by_flavor,
+ mock_networkstatus_get_latest_consensus_by_flavor);
+ MOCK(get_estimated_address_per_node,
+ mock_get_estimated_address_per_node);
+
+ dummy_ns = tor_malloc_zero(sizeof(*dummy_ns));
+ dummy_ns->flavor = FLAV_MICRODESC;
+ dummy_ns->routerstatus_list = smartlist_new();
+
+ tor_addr_t addr_v4, addr_v6, dummy_addr;
+ tor_addr_parse(&addr_v4, "42.42.42.42");
+ uint32_t ipv4h = tor_addr_to_ipv4h(&addr_v4);
+ tor_addr_parse(&addr_v6, "1:2:3:4::");
+ memset(&dummy_addr, 'A', sizeof(dummy_addr));
+
+ /* This will make the nodelist bloom filter very large
+ * (the_nodelist->node_addrs) so we will fail the contain test rarely. */
+ addr_per_node = 1024;
+
+ /* No node no nothing. The lookups should be empty. */
+ nodelist_set_consensus(dummy_ns);
+
+ /* The address set should be empty. */
+ ret = nodelist_probably_contains_address(&addr_v4);
+ tt_int_op(ret, OP_EQ, 0);
+ ret = nodelist_probably_contains_address(&addr_v6);
+ tt_int_op(ret, OP_EQ, 0);
+ dummy_addr.family = AF_INET;
+ ret = nodelist_probably_contains_address(&dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+ dummy_addr.family = AF_INET6;
+ ret = nodelist_probably_contains_address(&dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+
+ md = tor_malloc_zero(sizeof(*md));
+ ri = tor_malloc_zero(sizeof(*ri));
+ rs = tor_malloc_zero(sizeof(*rs));
+ crypto_rand(rs->identity_digest, sizeof(rs->identity_digest));
+ crypto_rand(md->digest, sizeof(md->digest));
+ memcpy(rs->descriptor_digest, md->digest, DIGEST256_LEN);
+
+ /* Setup the rs, ri and md addresses. */
+ rs->addr = ipv4h;
+ tor_addr_parse(&rs->ipv6_addr, "1:2:3:4::");
+ ri->addr = ipv4h;
+ tor_addr_parse(&ri->ipv6_addr, "1:2:3:4::");
+ tor_addr_parse(&md->ipv6_addr, "1:2:3:4::");
+
+ /* Add the rs to the consensus becoming a node_t. */
+ smartlist_add(dummy_ns->routerstatus_list, rs);
+ nodelist_set_consensus(dummy_ns);
+
+ /* At this point, the address set should be initialized in the nodelist and
+ * we should be able to lookup. */
+ ret = nodelist_probably_contains_address(&addr_v4);
+ tt_int_op(ret, OP_EQ, 1);
+ ret = nodelist_probably_contains_address(&addr_v6);
+ tt_int_op(ret, OP_EQ, 1);
+ /* Lookup unknown address. */
+ dummy_addr.family = AF_INET;
+ ret = nodelist_probably_contains_address(&dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+ dummy_addr.family = AF_INET6;
+ ret = nodelist_probably_contains_address(&dummy_addr);
+ tt_int_op(ret, OP_EQ, 0);
+
+ done:
+ routerstatus_free(rs); routerinfo_free(ri); microdesc_free(md);
+ smartlist_clear(dummy_ns->routerstatus_list);
+ networkstatus_vote_free(dummy_ns);
+ UNMOCK(networkstatus_get_latest_consensus);
+ UNMOCK(networkstatus_get_latest_consensus_by_flavor);
+ UNMOCK(get_estimated_address_per_node);
+}
+
+struct testcase_t address_set_tests[] = {
+ { "contains", test_contains, TT_FORK,
+ NULL, NULL },
+ { "nodelist", test_nodelist, TT_FORK,
+ NULL, NULL },
+
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_bt_cl.c b/src/test/test_bt_cl.c
index 709d599f52..ed588ecc5b 100644
--- a/src/test/test_bt_cl.c
+++ b/src/test/test_bt_cl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c
index 9e7bdb8911..07114a8571 100644
--- a/src/test/test_buffers.c
+++ b/src/test/test_buffers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define BUFFERS_PRIVATE
@@ -578,120 +578,150 @@ test_buffer_time_tracking(void *arg)
}
static void
-test_buffers_zlib_impl(int finalize_with_nil)
+test_buffers_compress_fin_at_chunk_end_impl(compress_method_t method,
+ compression_level_t level)
{
char *msg = NULL;
char *contents = NULL;
char *expanded = NULL;
buf_t *buf = NULL;
- tor_zlib_state_t *zlib_state = NULL;
+ tor_compress_state_t *compress_state = NULL;
size_t out_len, in_len;
- int done;
+ size_t sz, headerjunk;
buf = buf_new_with_capacity(128); /* will round up */
- zlib_state = tor_zlib_new(1, ZLIB_METHOD, HIGH_COMPRESSION);
+ sz = buf_get_default_chunk_size(buf);
+ msg = tor_malloc_zero(sz);
- msg = tor_malloc(512);
- crypto_rand(msg, 512);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg, 128, 0), OP_EQ, 0);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg+128, 128, 0), OP_EQ, 0);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg+256, 256, 0), OP_EQ, 0);
- done = !finalize_with_nil;
- tt_int_op(write_to_buf_zlib(buf, zlib_state, "all done", 9, done), OP_EQ, 0);
- if (finalize_with_nil) {
- tt_int_op(write_to_buf_zlib(buf, zlib_state, "", 0, 1), OP_EQ, 0);
- }
+ write_to_buf(msg, 1, buf);
+ tt_assert(buf->head);
+
+ /* Fill up the chunk so the compression stuff won't fit in one chunk. */
+ tt_uint_op(buf->head->memlen, OP_LT, sz);
+ headerjunk = buf->head->memlen - 7;
+ write_to_buf(msg, headerjunk-1, buf);
+ tt_uint_op(buf->head->datalen, OP_EQ, headerjunk);
+ tt_uint_op(buf_datalen(buf), OP_EQ, headerjunk);
+ /* Write an empty string, with finalization on. */
+ compress_state = tor_compress_new(1, method, level);
+ tt_int_op(write_to_buf_compress(buf, compress_state, "", 0, 1), OP_EQ, 0);
in_len = buf_datalen(buf);
contents = tor_malloc(in_len);
tt_int_op(fetch_from_buf(contents, in_len, buf), OP_EQ, 0);
- tt_int_op(0, OP_EQ, tor_gzip_uncompress(&expanded, &out_len,
- contents, in_len,
- ZLIB_METHOD, 1,
- LOG_WARN));
+ if (method == NO_METHOD) {
+ tt_uint_op(in_len, OP_EQ, headerjunk);
+ } else {
+ tt_uint_op(in_len, OP_GT, headerjunk);
+ }
- tt_int_op(out_len, OP_GE, 128);
- tt_mem_op(msg, OP_EQ, expanded, 128);
- tt_int_op(out_len, OP_GE, 512);
- tt_mem_op(msg, OP_EQ, expanded, 512);
- tt_int_op(out_len, OP_EQ, 512+9);
- tt_mem_op("all done", OP_EQ, expanded+512, 9);
+ tt_int_op(0, OP_EQ, tor_uncompress(&expanded, &out_len,
+ contents + headerjunk,
+ in_len - headerjunk,
+ method, 1,
+ LOG_WARN));
+
+ tt_int_op(out_len, OP_EQ, 0);
+ tt_assert(expanded);
done:
buf_free(buf);
- tor_zlib_free(zlib_state);
+ tor_compress_free(compress_state);
tor_free(contents);
tor_free(expanded);
tor_free(msg);
}
static void
-test_buffers_zlib(void *arg)
-{
- (void) arg;
- test_buffers_zlib_impl(0);
-}
-static void
-test_buffers_zlib_fin_with_nil(void *arg)
-{
- (void) arg;
- test_buffers_zlib_impl(1);
-}
-
-static void
-test_buffers_zlib_fin_at_chunk_end(void *arg)
+test_buffers_compress_impl(compress_method_t method,
+ compression_level_t level,
+ int finalize_with_nil)
{
char *msg = NULL;
char *contents = NULL;
char *expanded = NULL;
buf_t *buf = NULL;
- tor_zlib_state_t *zlib_state = NULL;
+ tor_compress_state_t *compress_state = NULL;
size_t out_len, in_len;
- size_t sz, headerjunk;
- (void) arg;
+ int done;
buf = buf_new_with_capacity(128); /* will round up */
- sz = buf_get_default_chunk_size(buf);
- msg = tor_malloc_zero(sz);
-
- write_to_buf(msg, 1, buf);
- tt_assert(buf->head);
+ compress_state = tor_compress_new(1, method, level);
- /* Fill up the chunk so the zlib stuff won't fit in one chunk. */
- tt_uint_op(buf->head->memlen, OP_LT, sz);
- headerjunk = buf->head->memlen - 7;
- write_to_buf(msg, headerjunk-1, buf);
- tt_uint_op(buf->head->datalen, OP_EQ, headerjunk);
- tt_uint_op(buf_datalen(buf), OP_EQ, headerjunk);
- /* Write an empty string, with finalization on. */
- zlib_state = tor_zlib_new(1, ZLIB_METHOD, HIGH_COMPRESSION);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, "", 0, 1), OP_EQ, 0);
+ msg = tor_malloc(512);
+ crypto_rand(msg, 512);
+ tt_int_op(write_to_buf_compress(buf, compress_state,
+ msg, 128, 0), OP_EQ, 0);
+ tt_int_op(write_to_buf_compress(buf, compress_state,
+ msg+128, 128, 0), OP_EQ, 0);
+ tt_int_op(write_to_buf_compress(buf, compress_state,
+ msg+256, 256, 0), OP_EQ, 0);
+ done = !finalize_with_nil;
+ tt_int_op(write_to_buf_compress(buf, compress_state,
+ "all done", 9, done), OP_EQ, 0);
+ if (finalize_with_nil) {
+ tt_int_op(write_to_buf_compress(buf, compress_state, "", 0, 1), OP_EQ, 0);
+ }
in_len = buf_datalen(buf);
contents = tor_malloc(in_len);
tt_int_op(fetch_from_buf(contents, in_len, buf), OP_EQ, 0);
- tt_uint_op(in_len, OP_GT, headerjunk);
-
- tt_int_op(0, OP_EQ, tor_gzip_uncompress(&expanded, &out_len,
- contents + headerjunk, in_len - headerjunk,
- ZLIB_METHOD, 1,
- LOG_WARN));
+ tt_int_op(0, OP_EQ, tor_uncompress(&expanded, &out_len,
+ contents, in_len,
+ method, 1,
+ LOG_WARN));
- tt_int_op(out_len, OP_EQ, 0);
- tt_assert(expanded);
+ tt_int_op(out_len, OP_GE, 128);
+ tt_mem_op(msg, OP_EQ, expanded, 128);
+ tt_int_op(out_len, OP_GE, 512);
+ tt_mem_op(msg, OP_EQ, expanded, 512);
+ tt_int_op(out_len, OP_EQ, 512+9);
+ tt_mem_op("all done", OP_EQ, expanded+512, 9);
done:
buf_free(buf);
- tor_zlib_free(zlib_state);
+ tor_compress_free(compress_state);
tor_free(contents);
tor_free(expanded);
tor_free(msg);
}
+static void
+test_buffers_compress(void *arg)
+{
+ const char *methodname = arg;
+ tt_assert(methodname);
+
+ compress_method_t method = compression_method_get_by_name(methodname);
+ tt_int_op(method, OP_NE, UNKNOWN_METHOD);
+
+ if (! tor_compress_supports_method(method)) {
+ tt_skip();
+ }
+
+ compression_level_t levels[] = {
+ BEST_COMPRESSION,
+ HIGH_COMPRESSION,
+ MEDIUM_COMPRESSION,
+ LOW_COMPRESSION
+ };
+
+ for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) {
+ compression_level_t level = levels[l];
+
+ test_buffers_compress_impl(method, level, 0);
+ test_buffers_compress_impl(method, level, 1);
+ test_buffers_compress_fin_at_chunk_end_impl(method, level);
+ }
+
+ done:
+ ;
+}
+
static const uint8_t *tls_read_ptr;
static int n_remaining;
static int next_reply_val[16];
@@ -816,14 +846,22 @@ struct testcase_t buffer_tests[] = {
{ "allocation_tracking", test_buffer_allocation_tracking, TT_FORK,
NULL, NULL },
{ "time_tracking", test_buffer_time_tracking, TT_FORK, NULL, NULL },
- { "zlib", test_buffers_zlib, TT_FORK, NULL, NULL },
- { "zlib_fin_with_nil", test_buffers_zlib_fin_with_nil, TT_FORK, NULL, NULL },
- { "zlib_fin_at_chunk_end", test_buffers_zlib_fin_at_chunk_end, TT_FORK,
- NULL, NULL},
{ "tls_read_mocked", test_buffers_tls_read_mocked, 0,
NULL, NULL },
{ "chunk_size", test_buffers_chunk_size, 0, NULL, NULL },
{ "find_contentlen", test_buffers_find_contentlen, 0, NULL, NULL },
+
+ { "compress/zlib", test_buffers_compress, TT_FORK,
+ &passthrough_setup, (char*)"deflate" },
+ { "compress/gzip", test_buffers_compress, TT_FORK,
+ &passthrough_setup, (char*)"gzip" },
+ { "compress/zstd", test_buffers_compress, TT_FORK,
+ &passthrough_setup, (char*)"x-zstd" },
+ { "compress/lzma", test_buffers_compress, TT_FORK,
+ &passthrough_setup, (char*)"x-tor-lzma" },
+ { "compress/none", test_buffers_compress, TT_FORK,
+ &passthrough_setup, (char*)"identity" },
+
END_OF_TESTCASES
};
diff --git a/src/test/test_cell_formats.c b/src/test/test_cell_formats.c
index 22c34b6d6c..007f7e3d3e 100644
--- a/src/test/test_cell_formats.c
+++ b/src/test/test_cell_formats.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_cell_queue.c b/src/test/test_cell_queue.c
index 93ac9854d8..69e89b69b0 100644
--- a/src/test/test_cell_queue.c
+++ b/src/test/test_cell_queue.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITLIST_PRIVATE
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
index 862bd6dfa6..f5999b8e67 100644
--- a/src/test/test_channel.c
+++ b/src/test/test_channel.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_channelpadding.c b/src/test/test_channelpadding.c
new file mode 100644
index 0000000000..0bc9699feb
--- /dev/null
+++ b/src/test/test_channelpadding.c
@@ -0,0 +1,1128 @@
+#define TOR_CHANNEL_INTERNAL_
+#define MAIN_PRIVATE
+#define NETWORKSTATUS_PRIVATE
+#define TOR_TIMERS_PRIVATE
+#include "or.h"
+#include "test.h"
+#include "testsupport.h"
+#include "connection.h"
+#include "connection_or.h"
+#include "channel.h"
+#include "channeltls.h"
+#include "channelpadding.h"
+#include "compat_libevent.h"
+#include "config.h"
+#include <event2/event.h>
+#include "compat_time.h"
+#include "main.h"
+#include "networkstatus.h"
+#include "log_test_helpers.h"
+
+int channelpadding_get_netflow_inactive_timeout_ms(channel_t *chan);
+int64_t channelpadding_compute_time_until_pad_for_netflow(channel_t *chan);
+int channelpadding_send_disable_command(channel_t*);
+int channelpadding_find_timerslot(channel_t *chan);
+
+void test_channelpadding_timers(void *arg);
+void test_channelpadding_consensus(void *arg);
+void test_channelpadding_negotiation(void *arg);
+void test_channelpadding_decide_to_pad_channel(void *arg);
+void test_channelpadding_killonehop(void *arg);
+
+void dummy_nop_timer(void);
+
+#define NSEC_PER_MSEC (1000*1000)
+
+/* Thing to cast to fake tor_tls_t * to appease assert_connection_ok() */
+static int fake_tortls = 0; /* Bleh... */
+
+static int dont_stop_libevent = 0;
+
+// From test_channel.c
+channel_t * new_fake_channel(void);
+void free_fake_channel(channel_t*);
+
+static int
+mock_channel_has_queued_writes(channel_t *chan)
+{
+ (void)chan;
+ return 0;
+}
+
+static int tried_to_write_cell = 0;
+
+static channel_t *relay1_relay2;
+static channel_t *relay2_relay1;
+static channel_t *relay3_client;
+static channel_t *client_relay3;
+
+static int
+mock_channel_write_cell_relay2(channel_t *chan, cell_t *cell)
+{
+ (void)chan;
+ tried_to_write_cell++;
+ channel_tls_handle_cell(cell, ((channel_tls_t*)relay1_relay2)->conn);
+ event_base_loopbreak(tor_libevent_get_base());
+ return 0;
+}
+
+static int
+mock_channel_write_cell_relay1(channel_t *chan, cell_t *cell)
+{
+ (void)chan;
+ tried_to_write_cell++;
+ channel_tls_handle_cell(cell, ((channel_tls_t*)relay2_relay1)->conn);
+ event_base_loopbreak(tor_libevent_get_base());
+ return 0;
+}
+
+static int
+mock_channel_write_cell_relay3(channel_t *chan, cell_t *cell)
+{
+ (void)chan;
+ tried_to_write_cell++;
+ channel_tls_handle_cell(cell, ((channel_tls_t*)client_relay3)->conn);
+ event_base_loopbreak(tor_libevent_get_base());
+ return 0;
+}
+
+static int
+mock_channel_write_cell_client(channel_t *chan, cell_t *cell)
+{
+ (void)chan;
+ tried_to_write_cell++;
+ channel_tls_handle_cell(cell, ((channel_tls_t*)relay3_client)->conn);
+ event_base_loopbreak(tor_libevent_get_base());
+ return 0;
+}
+
+static int
+mock_channel_write_cell(channel_t *chan, cell_t *cell)
+{
+ tried_to_write_cell++;
+ channel_tls_handle_cell(cell, ((channel_tls_t*)chan)->conn);
+ if (!dont_stop_libevent)
+ event_base_loopbreak(tor_libevent_get_base());
+ return 0;
+}
+
+static void
+setup_fake_connection_for_channel(channel_tls_t *chan)
+{
+ or_connection_t *conn = (or_connection_t*)connection_new(CONN_TYPE_OR,
+ AF_INET);
+
+ conn->base_.conn_array_index = smartlist_len(connection_array);
+ smartlist_add(connection_array, conn);
+
+ conn->chan = chan;
+ chan->conn = conn;
+
+ conn->base_.magic = OR_CONNECTION_MAGIC;
+ conn->base_.state = OR_CONN_STATE_OPEN;
+ conn->base_.type = CONN_TYPE_OR;
+ conn->base_.socket_family = AF_INET;
+ conn->base_.address = tor_strdup("<fake>");
+
+ conn->base_.port = 4242;
+
+ conn->tls = (tor_tls_t *)((void *)(&fake_tortls));
+
+ conn->link_proto = MIN_LINK_PROTO_FOR_CHANNEL_PADDING;
+
+ connection_or_set_canonical(conn, 1);
+}
+
+static channel_tls_t *
+new_fake_channeltls(uint8_t id)
+{
+ channel_tls_t *chan = tor_realloc(new_fake_channel(), sizeof(channel_tls_t));
+ chan->base_.magic = TLS_CHAN_MAGIC;
+ setup_fake_connection_for_channel(chan);
+ chan->base_.channel_usage = CHANNEL_USED_FOR_FULL_CIRCS;
+ chan->base_.has_queued_writes = mock_channel_has_queued_writes;
+ chan->base_.write_cell = mock_channel_write_cell;
+ chan->base_.padding_enabled = 1;
+
+ chan->base_.identity_digest[0] = id;
+ channel_register(&chan->base_);
+
+ return chan;
+}
+
+static void
+free_fake_channeltls(channel_tls_t *chan)
+{
+ channel_unregister(&chan->base_);
+
+ tor_free(((channel_tls_t*)chan)->conn->base_.address);
+ buf_free(((channel_tls_t*)chan)->conn->base_.inbuf);
+ buf_free(((channel_tls_t*)chan)->conn->base_.outbuf);
+ tor_free(((channel_tls_t*)chan)->conn);
+
+ timer_free(chan->base_.padding_timer);
+ channel_handle_free(chan->base_.timer_handle);
+ channel_handles_clear(&chan->base_);
+
+ free_fake_channel(&chan->base_);
+
+ return;
+}
+
+static void
+setup_mock_consensus(void)
+{
+ current_md_consensus = current_ns_consensus
+ = tor_malloc_zero(sizeof(networkstatus_t));
+ current_md_consensus->net_params = smartlist_new();
+ current_md_consensus->routerstatus_list = smartlist_new();
+ channelpadding_new_consensus_params(current_md_consensus);
+}
+
+static void
+free_mock_consensus(void)
+{
+ SMARTLIST_FOREACH(current_md_consensus->routerstatus_list, void *, r,
+ tor_free(r));
+ smartlist_free(current_md_consensus->routerstatus_list);
+ smartlist_free(current_ns_consensus->net_params);
+ tor_free(current_ns_consensus);
+}
+
+static void
+setup_mock_network(void)
+{
+ routerstatus_t *relay;
+ connection_array = smartlist_new();
+
+ relay1_relay2 = (channel_t*)new_fake_channeltls(2);
+ relay1_relay2->write_cell = mock_channel_write_cell_relay1;
+ channel_timestamp_active(relay1_relay2);
+ relay = tor_malloc_zero(sizeof(routerstatus_t));
+ relay->identity_digest[0] = 1;
+ smartlist_add(current_md_consensus->routerstatus_list, relay);
+
+ relay2_relay1 = (channel_t*)new_fake_channeltls(1);
+ relay2_relay1->write_cell = mock_channel_write_cell_relay2;
+ channel_timestamp_active(relay2_relay1);
+ relay = tor_malloc_zero(sizeof(routerstatus_t));
+ relay->identity_digest[0] = 2;
+ smartlist_add(current_md_consensus->routerstatus_list, relay);
+
+ relay3_client = (channel_t*)new_fake_channeltls(0);
+ relay3_client->write_cell = mock_channel_write_cell_relay3;
+ relay3_client->is_client = 1;
+ channel_timestamp_active(relay3_client);
+ relay = tor_malloc_zero(sizeof(routerstatus_t));
+ relay->identity_digest[0] = 3;
+ smartlist_add(current_md_consensus->routerstatus_list, relay);
+
+ client_relay3 = (channel_t*)new_fake_channeltls(3);
+ client_relay3->write_cell = mock_channel_write_cell_client;
+ channel_timestamp_active(client_relay3);
+
+ channel_do_open_actions(relay1_relay2);
+ channel_do_open_actions(relay2_relay1);
+ channel_do_open_actions(relay3_client);
+ channel_do_open_actions(client_relay3);
+}
+
+static void
+free_mock_network(void)
+{
+ free_fake_channeltls((channel_tls_t*)relay1_relay2);
+ free_fake_channeltls((channel_tls_t*)relay2_relay1);
+ free_fake_channeltls((channel_tls_t*)relay3_client);
+ free_fake_channeltls((channel_tls_t*)client_relay3);
+
+ smartlist_free(connection_array);
+}
+
+static void
+dummy_timer_cb(tor_timer_t *t, void *arg, const monotime_t *now_mono)
+{
+ (void)t; (void)arg; (void)now_mono;
+ event_base_loopbreak(tor_libevent_get_base());
+ return;
+}
+
+// This hack adds a dummy timer so that the libevent base loop
+// actually returns when we don't expect any timers to fire. Otherwise,
+// the global_timer_event gets scheduled an hour from now, and the
+// base loop never returns.
+void
+dummy_nop_timer(void)
+{
+ tor_timer_t *dummy_timer = timer_new(dummy_timer_cb, NULL);
+ struct timeval timeout;
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ timer_schedule(dummy_timer, &timeout);
+
+ event_base_loop(tor_libevent_get_base(), 0);
+ timer_free(dummy_timer);
+}
+
+#define CHANNELPADDING_MAX_TIMERS 25
+#define CHANNELS_TO_TEST (CHANNELPADDING_MAX_TIMERS*4)
+/**
+ * Tests to ensure that we handle more than the max number of pending
+ * timers properly.
+ */
+void
+test_channelpadding_timers(void *arg)
+{
+ channelpadding_decision_t decision;
+ channel_t *chans[CHANNELS_TO_TEST];
+ int64_t new_time;
+ (void)arg;
+
+ tor_libevent_postfork();
+
+ connection_array = smartlist_new();
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1);
+ monotime_coarse_set_mock_time_nsec(1);
+
+ timers_initialize();
+ channelpadding_new_consensus_params(NULL);
+
+ for (int i = 0; i < CHANNELS_TO_TEST; i++) {
+ chans[i] = (channel_t*)new_fake_channeltls(0);
+ channel_timestamp_active(chans[i]);
+ }
+
+ for (int j = 0; j < 2; j++) {
+ tried_to_write_cell = 0;
+ int i = 0;
+
+ /* This loop fills our timerslot array with timers of increasing time
+ * until they fire */
+ for (; i < CHANNELPADDING_MAX_TIMERS; i++) {
+ chans[i]->next_padding_time_ms = monotime_coarse_absolute_msec()
+ + 10 + i*4;
+ decision = channelpadding_decide_to_pad_channel(chans[i]);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chans[i]->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ }
+
+ /* This loop should add timers to the first position in the timerslot
+ * array, since its timeout is before all other timers. */
+ for (; i < CHANNELS_TO_TEST/3; i++) {
+ chans[i]->next_padding_time_ms = monotime_coarse_absolute_msec() + 1;
+ decision = channelpadding_decide_to_pad_channel(chans[i]);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chans[i]->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ }
+
+ /* This loop should add timers to our existing lists in a weak
+ * pseudorandom pattern. It ensures that the lists can grow with multiple
+ * timers in them. */
+ for (; i < CHANNELS_TO_TEST/2; i++) {
+ chans[i]->next_padding_time_ms = monotime_coarse_absolute_msec() + 10 +
+ i*3 % CHANNELPADDING_MAX_TIMERS;
+ decision = channelpadding_decide_to_pad_channel(chans[i]);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chans[i]->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ }
+
+ /* This loop should add timers to the last position in the timerslot
+ * array, since its timeout is after all other timers. */
+ for (; i < CHANNELS_TO_TEST; i++) {
+ chans[i]->next_padding_time_ms = monotime_coarse_absolute_msec() + 500 +
+ i % CHANNELPADDING_MAX_TIMERS;
+ decision = channelpadding_decide_to_pad_channel(chans[i]);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chans[i]->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ }
+
+ // Wait for the timers and then kill the event loop.
+ new_time = (monotime_coarse_absolute_msec()+1001)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+
+ tt_int_op(tried_to_write_cell, OP_EQ, CHANNELS_TO_TEST);
+
+ // Test that we have no pending callbacks and all empty slots now
+ for (i = 0; i < CHANNELS_TO_TEST; i++) {
+ tt_assert(!chans[i]->pending_padding_callback);
+ }
+ }
+
+ done:
+ for (int i = 0; i < CHANNELS_TO_TEST; i++) {
+ free_fake_channeltls((channel_tls_t*)chans[i]);
+ }
+ smartlist_free(connection_array);
+
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ channel_free_all();
+
+ return;
+}
+
+void
+test_channelpadding_killonehop(void *arg)
+{
+ channelpadding_decision_t decision;
+ int64_t new_time;
+ (void)arg;
+ tor_libevent_postfork();
+
+ routerstatus_t *relay = tor_malloc_zero(sizeof(routerstatus_t));
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1);
+ monotime_coarse_set_mock_time_nsec(1);
+
+ timers_initialize();
+ setup_mock_consensus();
+ setup_mock_network();
+
+ /* Do we disable padding if tor2webmode or rsos are enabled, and
+ * the consensus says don't pad? */
+
+ /* Ensure we can kill tor2web and rsos padding if we want. */
+ // First, test that padding works if either is enabled
+ smartlist_clear(current_md_consensus->net_params);
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ tried_to_write_cell = 0;
+ get_options_mutable()->Tor2webMode = 1;
+ client_relay3->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(client_relay3->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_ALREADY_SCHEDULED);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!client_relay3->pending_padding_callback);
+
+ // Then test disabling each via consensus param
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_pad_tor2web=0");
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ // Before the client tries to pad, the relay will still pad:
+ tried_to_write_cell = 0;
+ relay3_client->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ get_options_mutable()->ORPort_set = 1;
+ get_options_mutable()->Tor2webMode = 0;
+ decision = channelpadding_decide_to_pad_channel(relay3_client);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(relay3_client->pending_padding_callback);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!client_relay3->pending_padding_callback);
+
+ // Test client side (it should stop immediately, but send a negotiate)
+ tried_to_write_cell = 0;
+ tt_assert(relay3_client->padding_enabled);
+ tt_assert(client_relay3->padding_enabled);
+ get_options_mutable()->Tor2webMode = 1;
+ /* For the relay to recieve the negotiate: */
+ get_options_mutable()->ORPort_set = 1;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!client_relay3->pending_padding_callback);
+ tt_assert(!relay3_client->padding_enabled);
+
+ // Test relay side (it should have gotten the negotiation to disable)
+ get_options_mutable()->ORPort_set = 1;
+ get_options_mutable()->Tor2webMode = 0;
+ tt_int_op(channelpadding_decide_to_pad_channel(relay3_client), OP_EQ,
+ CHANNELPADDING_WONTPAD);
+ tt_assert(!relay3_client->padding_enabled);
+
+ /* Repeat for SOS */
+ // First, test that padding works if either is enabled
+ smartlist_clear(current_md_consensus->net_params);
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ relay3_client->padding_enabled = 1;
+ client_relay3->padding_enabled = 1;
+
+ tried_to_write_cell = 0;
+ get_options_mutable()->ORPort_set = 0;
+ get_options_mutable()->HiddenServiceSingleHopMode = 1;
+ get_options_mutable()->HiddenServiceNonAnonymousMode = 1;
+ client_relay3->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(client_relay3->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_ALREADY_SCHEDULED);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!client_relay3->pending_padding_callback);
+
+ // Then test disabling each via consensus param
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_pad_single_onion=0");
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ // Before the client tries to pad, the relay will still pad:
+ tried_to_write_cell = 0;
+ relay3_client->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ get_options_mutable()->ORPort_set = 1;
+ get_options_mutable()->HiddenServiceSingleHopMode = 0;
+ get_options_mutable()->HiddenServiceNonAnonymousMode = 0;
+ decision = channelpadding_decide_to_pad_channel(relay3_client);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(relay3_client->pending_padding_callback);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!client_relay3->pending_padding_callback);
+
+ // Test client side (it should stop immediately)
+ get_options_mutable()->HiddenServiceSingleHopMode = 1;
+ get_options_mutable()->HiddenServiceNonAnonymousMode = 1;
+ /* For the relay to recieve the negotiate: */
+ get_options_mutable()->ORPort_set = 1;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!client_relay3->pending_padding_callback);
+
+ // Test relay side (it should have gotten the negotiation to disable)
+ get_options_mutable()->ORPort_set = 1;
+ get_options_mutable()->HiddenServiceSingleHopMode = 0;
+ get_options_mutable()->HiddenServiceNonAnonymousMode = 0;
+ tt_int_op(channelpadding_decide_to_pad_channel(relay3_client), OP_EQ,
+ CHANNELPADDING_WONTPAD);
+ tt_assert(!relay3_client->padding_enabled);
+
+ done:
+ free_mock_consensus();
+ free_mock_network();
+ tor_free(relay);
+
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ channel_free_all();
+}
+
+void
+test_channelpadding_consensus(void *arg)
+{
+ channelpadding_decision_t decision;
+ or_options_t *options = get_options_mutable();
+ int64_t val;
+ int64_t new_time;
+ (void)arg;
+
+ tor_libevent_postfork();
+
+ /*
+ * Params tested:
+ * nf_pad_before_usage
+ * nf_pad_relays
+ * nf_ito_low
+ * nf_ito_high
+ *
+ * Plan:
+ * 1. Padding can be completely disabled via consensus
+ * 2. Negotiation can't re-enable consensus-disabled padding
+ * 3. Negotiation can't increase padding from relays beyond
+ * consensus defaults
+ * 4. Relay-to-relay padding can be enabled/disabled in consensus
+ * 5. Can enable/disable padding before actually using a connection
+ * 6. Can we control circ and TLS conn lifetime from the consensus?
+ */
+ channel_t *chan;
+ routerstatus_t *relay = tor_malloc_zero(sizeof(routerstatus_t));
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1);
+ monotime_coarse_set_mock_time_nsec(1);
+ timers_initialize();
+
+ connection_array = smartlist_new();
+ chan = (channel_t*)new_fake_channeltls(0);
+ channel_timestamp_active(chan);
+
+ setup_mock_consensus();
+
+ get_options_mutable()->ORPort_set = 1;
+
+ /* Test 1: Padding can be completely disabled via consensus */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_ALREADY_SCHEDULED);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_low=0");
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_high=0");
+ get_options_mutable()->ConnectionPadding = 1;
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!chan->pending_padding_callback);
+ val = channelpadding_get_netflow_inactive_timeout_ms(chan);
+ tt_i64_op(val, OP_EQ, 0);
+ val = channelpadding_compute_time_until_pad_for_netflow(chan);
+ tt_i64_op(val, OP_EQ, -2);
+
+ /* Test 2: Negotiation can't re-enable consensus-disabled padding */
+ channelpadding_send_enable_command(chan, 100, 200);
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!chan->pending_padding_callback);
+ val = channelpadding_get_netflow_inactive_timeout_ms(chan);
+ tt_i64_op(val, OP_EQ, 0);
+ val = channelpadding_compute_time_until_pad_for_netflow(chan);
+ tt_i64_op(val, OP_EQ, -2);
+ tt_assert(!chan->next_padding_time_ms);
+
+ smartlist_clear(current_md_consensus->net_params);
+
+ /* Test 3: Negotiation can't increase padding from relays beyond consensus
+ * values */
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_low=100");
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_high=200");
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ val = channelpadding_get_netflow_inactive_timeout_ms(chan);
+ tt_i64_op(val, OP_GE, 100);
+ tt_i64_op(val, OP_LE, 200);
+ val = channelpadding_compute_time_until_pad_for_netflow(chan);
+ tt_i64_op(val, OP_LE, 200);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+201)*NSEC_PER_MSEC;
+ monotime_set_mock_time_nsec(new_time);
+ monotime_coarse_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ smartlist_clear(current_md_consensus->net_params);
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_low=1500");
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_ito_high=4500");
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ channelpadding_send_enable_command(chan, 100, 200);
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+ tt_assert(!chan->pending_padding_callback);
+ val = channelpadding_get_netflow_inactive_timeout_ms(chan);
+ tt_i64_op(val, OP_GE, 1500);
+ tt_i64_op(val, OP_LE, 4500);
+ val = channelpadding_compute_time_until_pad_for_netflow(chan);
+ tt_i64_op(val, OP_LE, 4500);
+
+ /* Test 4: Relay-to-relay padding can be enabled/disabled in consensus */
+ /* Make this channel a relay's channel */
+ memcpy(relay->identity_digest,
+ ((channel_tls_t *)chan)->conn->identity_digest, DIGEST_LEN);
+ smartlist_add(current_md_consensus->routerstatus_list, relay);
+
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!chan->pending_padding_callback);
+
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_pad_relays=1");
+ channelpadding_new_consensus_params(current_md_consensus);
+
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+ tt_assert(!chan->pending_padding_callback);
+ val = channelpadding_get_netflow_inactive_timeout_ms(chan);
+ tt_i64_op(val, OP_GE, 1500);
+ tt_i64_op(val, OP_LE, 4500);
+ val = channelpadding_compute_time_until_pad_for_netflow(chan);
+ tt_i64_op(val, OP_LE, 4500);
+
+ /* Test 5: If we disable padding before channel usage, does that work? */
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_pad_before_usage=0");
+ channelpadding_new_consensus_params(current_md_consensus);
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test 6: Can we control circ and TLS conn lifetime from the consensus? */
+ val = channelpadding_get_channel_idle_timeout(NULL, 0);
+ tt_i64_op(val, OP_GE, 180);
+ tt_i64_op(val, OP_LE, 180+90);
+ val = channelpadding_get_channel_idle_timeout(chan, 0);
+ tt_i64_op(val, OP_GE, 180);
+ tt_i64_op(val, OP_LE, 180+90);
+ options->ReducedConnectionPadding = 1;
+ val = channelpadding_get_channel_idle_timeout(chan, 0);
+ tt_i64_op(val, OP_GE, 180/2);
+ tt_i64_op(val, OP_LE, (180+90)/2);
+
+ options->ReducedConnectionPadding = 0;
+ options->ORPort_set = 1;
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_conntimeout_relays=600");
+ channelpadding_new_consensus_params(current_md_consensus);
+ val = channelpadding_get_channel_idle_timeout(chan, 1);
+ tt_i64_op(val, OP_GE, 450);
+ tt_i64_op(val, OP_LE, 750);
+
+ val = channelpadding_get_circuits_available_timeout();
+ tt_i64_op(val, OP_GE, 30*60);
+ tt_i64_op(val, OP_LE, 30*60*2);
+
+ options->ReducedConnectionPadding = 1;
+ smartlist_add(current_md_consensus->net_params,
+ (void*)"nf_conntimeout_clients=600");
+ channelpadding_new_consensus_params(current_md_consensus);
+ val = channelpadding_get_circuits_available_timeout();
+ tt_i64_op(val, OP_GE, 600/2);
+ tt_i64_op(val, OP_LE, 600*2/2);
+
+ options->ReducedConnectionPadding = 0;
+ options->CircuitsAvailableTimeout = 24*60*60;
+ val = channelpadding_get_circuits_available_timeout();
+ tt_i64_op(val, OP_GE, 24*60*60);
+ tt_i64_op(val, OP_LE, 24*60*60*2);
+
+ done:
+ tor_free(relay);
+
+ free_mock_consensus();
+ free_fake_channeltls((channel_tls_t*)chan);
+ smartlist_free(connection_array);
+
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ channel_free_all();
+
+ return;
+}
+
+void
+test_channelpadding_negotiation(void *arg)
+{
+ channelpadding_negotiate_t disable;
+ cell_t cell;
+ channelpadding_decision_t decision;
+ int val;
+ (void)arg;
+
+ /* Plan:
+ * 1. Clients reject negotiation, relays accept it.
+ * * Bridges accept negotiation from their clients,
+ * but not from relays.
+ * 2. Torrc options can override client-side negotiation
+ * 3. Test a version issue in channelpadidng cell
+ * 4. Test channelpadding_reduced_padding
+ */
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1);
+ monotime_coarse_set_mock_time_nsec(1);
+ timers_initialize();
+ setup_mock_consensus();
+ setup_mock_network();
+
+ /* Test case #1: Do the right things ignore negotiation? */
+ /* relay-to-client case: */
+ channelpadding_send_disable_command(relay3_client);
+ tt_assert(client_relay3->padding_enabled);
+
+ /* client-to-relay case: */
+ get_options_mutable()->ORPort_set = 1;
+ channelpadding_disable_padding_on_channel(client_relay3);
+ tt_int_op(channelpadding_decide_to_pad_channel(relay3_client), OP_EQ,
+ CHANNELPADDING_WONTPAD);
+ tt_assert(!relay3_client->padding_enabled);
+ relay3_client->padding_enabled = 1;
+ client_relay3->padding_enabled = 1;
+
+ /* Bridge case from relay */
+ get_options_mutable()->BridgeRelay = 1;
+ channelpadding_disable_padding_on_channel(relay2_relay1);
+ tt_assert(relay1_relay2->padding_enabled);
+
+ /* Bridge case from client */
+ channelpadding_disable_padding_on_channel(client_relay3);
+ tt_assert(!relay3_client->padding_enabled);
+ tt_int_op(channelpadding_decide_to_pad_channel(relay3_client), OP_EQ,
+ CHANNELPADDING_WONTPAD);
+ relay3_client->padding_enabled = 1;
+ client_relay3->padding_enabled = 1;
+ get_options_mutable()->BridgeRelay = 0;
+ get_options_mutable()->ORPort_set = 0;
+
+ /* Test case #2: Torrc options */
+ /* ConnectionPadding auto; Relay doesn't suport us */
+ ((channel_tls_t*)relay3_client)->conn->link_proto = 4;
+ relay3_client->padding_enabled = 0;
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(relay3_client);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!relay3_client->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ ((channel_tls_t*)relay3_client)->conn->link_proto = 5;
+ relay3_client->padding_enabled = 1;
+
+ /* ConnectionPadding 1; Relay doesn't suport us */
+ get_options_mutable()->ConnectionPadding = 1;
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+ tt_assert(!client_relay3->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ get_options_mutable()->ConnectionPadding = 0;
+
+ /* Test case #3: Test a version issue in channelpadding cell */
+ get_options_mutable()->ORPort_set = 1;
+ client_relay3->padding_enabled = 1;
+ relay3_client->padding_enabled = 1;
+ memset(&cell, 0, sizeof(cell_t));
+ memset(&disable, 0, sizeof(channelpadding_negotiate_t));
+ cell.command = CELL_PADDING_NEGOTIATE;
+
+ channelpadding_negotiate_set_command(&disable, CHANNELPADDING_COMMAND_STOP);
+ disable.version = 1;
+ channelpadding_negotiate_encode(cell.payload, CELL_PAYLOAD_SIZE, &disable);
+ client_relay3->write_cell(client_relay3, &cell);
+ tt_assert(relay3_client->padding_enabled);
+ tt_int_op(channelpadding_update_padding_for_channel(client_relay3, &disable),
+ OP_EQ, -1);
+ tt_assert(client_relay3->padding_enabled);
+
+ disable.version = 0;
+ channelpadding_negotiate_encode(cell.payload, CELL_PAYLOAD_SIZE, &disable);
+ client_relay3->write_cell(client_relay3, &cell);
+ tt_assert(!relay3_client->padding_enabled);
+
+ /* Test case 4: Reducing padding actually reduces it */
+ relay3_client->padding_enabled = 1;
+ client_relay3->padding_enabled = 1;
+
+ decision = channelpadding_decide_to_pad_channel(relay3_client);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+
+ channelpadding_reduce_padding_on_channel(client_relay3);
+
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(relay3_client);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+
+ get_options_mutable()->ORPort_set = 0;
+ decision = channelpadding_decide_to_pad_channel(client_relay3);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+
+ tt_assert(!client_relay3->pending_padding_callback);
+ val = channelpadding_get_netflow_inactive_timeout_ms(client_relay3);
+ tt_int_op(val, OP_GE, 9000);
+ tt_int_op(val, OP_LE, 14000);
+ int64_t val64 =
+ channelpadding_compute_time_until_pad_for_netflow(client_relay3);
+ tt_i64_op(val64, OP_LE, 14000);
+
+ done:
+ free_mock_network();
+ free_mock_consensus();
+
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ channel_free_all();
+
+ return;
+}
+
+void
+test_channelpadding_decide_to_pad_channel(void *arg)
+{
+ channelpadding_decision_t decision;
+ /**
+ * Test case plan:
+ *
+ * 1. Channel that has "sent a packet" before the timeout.
+ * + We should decide to pad later
+ * 2. Channel that has not "sent a packet" before the timeout:
+ * 2a. Not within 1.1s of the timeout.
+ * + We should decide to pad later
+ * 2b. Within 1.1s of the timemout.
+ * + We should schedule padding
+ * + We should get feedback that we wrote a cell
+ * 2c. Within 0.1s of the timeout.
+ * + We should schedule padding
+ * + We should get feedback that we wrote a cell
+ * 2d. Channel that asks to pad while timeout is scheduled
+ * + We should schedule padding
+ * + We should get feedback that we wrote a cell
+ * 2e. 0s of the timeout
+ * + We should send padding immediately
+ * + We should get feedback that we wrote a cell
+ * 2f. <0s of the timeout
+ * + We should send padding immediately
+ * + We should get feedback that we wrote a cell
+ * 3. Channel that sends a packet while timeout is scheduled
+ * + We should not get feedback that we wrote a cell
+ * 4. Channel that closes while timeout is scheduled
+ * + We should not get feedback that we wrote a cell
+ * 5. Make sure the channel still would work if repaired
+ * + We should be able to schedule padding and resend
+ * 6. Channel is not used for full circuits
+ * 7. Channel that disappears while timeout is scheduled
+ * + We should not send padding
+ */
+ channel_t *chan;
+ int64_t new_time;
+ connection_array = smartlist_new();
+ (void)arg;
+
+ tor_libevent_postfork();
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1);
+ monotime_coarse_set_mock_time_nsec(1);
+ timers_initialize();
+ setup_full_capture_of_logs(LOG_WARN);
+ channelpadding_new_consensus_params(NULL);
+
+ chan = (channel_t*)new_fake_channeltls(0);
+ channel_timestamp_active(chan);
+
+ /* Test case #1: Channel that has "sent a packet" before the timeout. */
+ tried_to_write_cell = 0;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+ tt_assert(!chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ /* Test case #2a: > 1.1s until timeout */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 1200;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADLATER);
+ tt_assert(!chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ /* Test case #2b: >= 1.0s until timeout */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 1000;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ // Wait for the timer from case #2b
+ new_time = (monotime_coarse_absolute_msec() + 1000)*NSEC_PER_MSEC;
+ monotime_set_mock_time_nsec(new_time);
+ monotime_coarse_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #2c: > 0.1s until timeout */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ /* Test case #2d: Channel that asks to pad while timeout is scheduled */
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_ALREADY_SCHEDULED);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #2e: 0s until timeout */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec();
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SENT);
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #2f: <0s until timeout */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() - 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SENT);
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #3: Channel that sends a packet while timeout is scheduled */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ tt_assert(chan->pending_padding_callback);
+
+ // Pretend the channel sent a packet
+ channel_timestamp_active(chan);
+
+ // We don't expect any timer callbacks here. Make a dummy one to be sure.
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #4: Channel that closes while a timeout is scheduled */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ tt_assert(chan->pending_padding_callback);
+
+ // Pretend the channel is temporarily down
+ chan->state = CHANNEL_STATE_MAINT;
+
+ // We don't expect any timer callbacks here. Make a dummy one to be sure.
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ tt_assert(!chan->pending_padding_callback);
+ chan->state = CHANNEL_STATE_OPEN;
+
+ /* Test case #5: Make sure previous test case didn't break everything */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_assert(chan->pending_padding_callback);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ // Wait for the timer
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+
+ tt_int_op(tried_to_write_cell, OP_EQ, 1);
+ tt_assert(!chan->pending_padding_callback);
+
+ /* Test case #6. Channel is not used for full circuits */
+ chan->channel_usage = CHANNEL_USED_NOT_USED_FOR_FULL_CIRCS;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_WONTPAD);
+ tt_assert(!chan->pending_padding_callback);
+ chan->channel_usage = CHANNEL_USED_FOR_FULL_CIRCS;
+
+ /* Test case #7. Channel is closed while timeout is scheduled.
+ *
+ * NOTE: This test deliberately breaks the channel callback mechanism.
+ * It must be last.
+ */
+ tried_to_write_cell = 0;
+ chan->next_padding_time_ms = monotime_coarse_absolute_msec() + 100;
+ decision = channelpadding_decide_to_pad_channel(chan);
+ tt_int_op(decision, OP_EQ, CHANNELPADDING_PADDING_SCHEDULED);
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+ tt_assert(chan->pending_padding_callback);
+
+ // Close the connection while the timer is scheduled
+ free_fake_channeltls((channel_tls_t*)chan);
+
+ // We don't expect any timer callbacks here. Make a dummy one to be sure.
+ new_time = (monotime_coarse_absolute_msec()+101)*NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(new_time);
+ monotime_set_mock_time_nsec(new_time);
+ timers_run_pending();
+
+ tt_int_op(tried_to_write_cell, OP_EQ, 0);
+
+ done:
+ smartlist_free(connection_array);
+
+ teardown_capture_of_logs();
+ monotime_disable_test_mocking();
+ timers_shutdown();
+ channel_free_all();
+
+ return;
+}
+
+#define TEST_CHANNELPADDING(name, flags) \
+ { #name, test_##name, (flags), NULL, NULL }
+
+struct testcase_t channelpadding_tests[] = {
+ //TEST_CHANNELPADDING(channelpadding_decide_to_pad_channel, 0),
+ TEST_CHANNELPADDING(channelpadding_decide_to_pad_channel, TT_FORK),
+ TEST_CHANNELPADDING(channelpadding_negotiation, TT_FORK),
+ TEST_CHANNELPADDING(channelpadding_consensus, TT_FORK),
+ TEST_CHANNELPADDING(channelpadding_killonehop, TT_FORK),
+ TEST_CHANNELPADDING(channelpadding_timers, TT_FORK),
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_channeltls.c b/src/test/test_channeltls.c
index fd98ee40fb..96c5eba9a5 100644
--- a/src/test/test_channeltls.c
+++ b/src/test/test_channeltls.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_checkdir.c b/src/test/test_checkdir.c
index fbb33f87f6..38f3360b61 100644
--- a/src/test/test_checkdir.c
+++ b/src/test/test_checkdir.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_circuitbuild.c b/src/test/test_circuitbuild.c
new file mode 100644
index 0000000000..a5282df69d
--- /dev/null
+++ b/src/test/test_circuitbuild.c
@@ -0,0 +1,133 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CIRCUITBUILD_PRIVATE
+
+#include "or.h"
+#include "test.h"
+#include "test_helpers.h"
+#include "log_test_helpers.h"
+#include "config.h"
+#include "circuitbuild.h"
+
+/* Dummy nodes smartlist for testing */
+static smartlist_t dummy_nodes;
+/* Dummy exit extend_info for testing */
+static extend_info_t dummy_ei;
+
+static int
+mock_count_acceptable_nodes(smartlist_t *nodes)
+{
+ (void)nodes;
+
+ return DEFAULT_ROUTE_LEN + 1;
+}
+
+/* Test route lengths when the caller of new_route_len() doesn't
+ * specify exit_ei. */
+static void
+test_new_route_len_noexit(void *arg)
+{
+ int r;
+
+ (void)arg;
+ MOCK(count_acceptable_nodes, mock_count_acceptable_nodes);
+
+ r = new_route_len(CIRCUIT_PURPOSE_C_GENERAL, NULL, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN, OP_EQ, r);
+
+ r = new_route_len(CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT, NULL, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN, OP_EQ, r);
+
+ r = new_route_len(CIRCUIT_PURPOSE_S_CONNECT_REND, NULL, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN, OP_EQ, r);
+
+ done:
+ UNMOCK(count_acceptable_nodes);
+}
+
+/* Test route lengths where someone else chose the "exit" node, which
+ * require an extra hop for safety. */
+static void
+test_new_route_len_unsafe_exit(void *arg)
+{
+ int r;
+
+ (void)arg;
+ MOCK(count_acceptable_nodes, mock_count_acceptable_nodes);
+
+ /* connecting to hidden service directory */
+ r = new_route_len(CIRCUIT_PURPOSE_C_GENERAL, &dummy_ei, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN + 1, OP_EQ, r);
+
+ /* client connecting to introduction point */
+ r = new_route_len(CIRCUIT_PURPOSE_C_INTRODUCING, &dummy_ei, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN + 1, OP_EQ, r);
+
+ /* hidden service connecting to rendezvous point */
+ r = new_route_len(CIRCUIT_PURPOSE_S_CONNECT_REND, &dummy_ei, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN + 1, OP_EQ, r);
+
+ done:
+ UNMOCK(count_acceptable_nodes);
+}
+
+/* Test route lengths where we chose the "exit" node, which don't
+ * require an extra hop for safety. */
+static void
+test_new_route_len_safe_exit(void *arg)
+{
+ int r;
+
+ (void)arg;
+ MOCK(count_acceptable_nodes, mock_count_acceptable_nodes);
+
+ /* hidden service connecting to introduction point */
+ r = new_route_len(CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, &dummy_ei,
+ &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN, OP_EQ, r);
+
+ /* router testing its own reachability */
+ r = new_route_len(CIRCUIT_PURPOSE_TESTING, &dummy_ei, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN, OP_EQ, r);
+
+ done:
+ UNMOCK(count_acceptable_nodes);
+}
+
+/* Make sure a non-fatal assertion fails when new_route_len() gets an
+ * unexpected circuit purpose. */
+static void
+test_new_route_len_unhandled_exit(void *arg)
+{
+ int r;
+
+ (void)arg;
+ MOCK(count_acceptable_nodes, mock_count_acceptable_nodes);
+
+ tor_capture_bugs_(1);
+ setup_full_capture_of_logs(LOG_WARN);
+ r = new_route_len(CIRCUIT_PURPOSE_CONTROLLER, &dummy_ei, &dummy_nodes);
+ tt_int_op(DEFAULT_ROUTE_LEN + 1, OP_EQ, r);
+ tt_int_op(smartlist_len(tor_get_captured_bug_log_()), OP_EQ, 1);
+ tt_str_op(smartlist_get(tor_get_captured_bug_log_(), 0), OP_EQ,
+ "!(exit_ei && !known_purpose)");
+ expect_single_log_msg_containing("Unhandled purpose");
+ expect_single_log_msg_containing("with a chosen exit; assuming routelen");
+ teardown_capture_of_logs();
+ tor_end_capture_bugs_();
+
+ done:
+ UNMOCK(count_acceptable_nodes);
+}
+
+struct testcase_t circuitbuild_tests[] = {
+ { "noexit", test_new_route_len_noexit, 0, NULL, NULL },
+ { "safe_exit", test_new_route_len_safe_exit, 0, NULL, NULL },
+ { "unsafe_exit", test_new_route_len_unsafe_exit, 0, NULL, NULL },
+ { "unhandled_exit", test_new_route_len_unhandled_exit, 0, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_circuitlist.c b/src/test/test_circuitlist.c
index 7eed5fe225..344ab27921 100644
--- a/src/test/test_circuitlist.c
+++ b/src/test/test_circuitlist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
@@ -201,68 +201,68 @@ test_rend_token_maps(void *arg)
tt_int_op(tok3[REND_TOKEN_LEN-1], OP_EQ, '.');
/* No maps; nothing there. */
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok1));
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok1));
- hs_circuitmap_register_rend_circ(c1, tok1);
- hs_circuitmap_register_intro_circ_v2(c2, tok2);
+ hs_circuitmap_register_rend_circ_relay_side(c1, tok1);
+ hs_circuitmap_register_intro_circ_v2_relay_side(c2, tok2);
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok3));
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok3));
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok2));
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok3));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok3));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok2));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok1));
/* Without purpose set, we don't get the circuits */
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok1));
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok2));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok2));
c1->base_.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
c2->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
/* Okay, make sure they show up now. */
- tt_ptr_op(c1, OP_EQ, hs_circuitmap_get_rend_circ(tok1));
- tt_ptr_op(c2, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok2));
+ tt_ptr_op(c1, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
+ tt_ptr_op(c2, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok2));
/* Two items at the same place with the same token. */
c3->base_.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
- hs_circuitmap_register_rend_circ(c3, tok2);
- tt_ptr_op(c2, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok2));
- tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_rend_circ(tok2));
+ hs_circuitmap_register_rend_circ_relay_side(c3, tok2);
+ tt_ptr_op(c2, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok2));
+ tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok2));
/* Marking a circuit makes it not get returned any more */
circuit_mark_for_close(TO_CIRCUIT(c1), END_CIRC_REASON_FINISHED);
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
circuit_free(TO_CIRCUIT(c1));
c1 = NULL;
/* Freeing a circuit makes it not get returned any more. */
circuit_free(TO_CIRCUIT(c2));
c2 = NULL;
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok2));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok2));
/* c3 -- are you still there? */
- tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_rend_circ(tok2));
+ tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok2));
/* Change its cookie. This never happens in Tor per se, but hey. */
c3->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
- hs_circuitmap_register_intro_circ_v2(c3, tok3);
+ hs_circuitmap_register_intro_circ_v2_relay_side(c3, tok3);
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ(tok2));
- tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok3));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok2));
+ tt_ptr_op(c3, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok3));
/* Now replace c3 with c4. */
c4->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
- hs_circuitmap_register_intro_circ_v2(c4, tok3);
+ hs_circuitmap_register_intro_circ_v2_relay_side(c4, tok3);
- tt_ptr_op(c4, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok3));
+ tt_ptr_op(c4, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok3));
- tt_ptr_op(c3->hs_token, OP_EQ, NULL);
- tt_ptr_op(c4->hs_token, OP_NE, NULL);
- tt_mem_op(c4->hs_token->token, OP_EQ, tok3, REND_TOKEN_LEN);
+ tt_ptr_op(TO_CIRCUIT(c3)->hs_token, OP_EQ, NULL);
+ tt_ptr_op(TO_CIRCUIT(c4)->hs_token, OP_NE, NULL);
+ tt_mem_op(TO_CIRCUIT(c4)->hs_token->token, OP_EQ, tok3, REND_TOKEN_LEN);
/* Now clear c4's cookie. */
- hs_circuitmap_remove_circuit(c4);
- tt_ptr_op(c4->hs_token, OP_EQ, NULL);
- tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2(tok3));
+ hs_circuitmap_remove_circuit(TO_CIRCUIT(c4));
+ tt_ptr_op(TO_CIRCUIT(c4)->hs_token, OP_EQ, NULL);
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok3));
done:
if (c1)
@@ -370,10 +370,89 @@ test_pick_circid(void *arg)
UNMOCK(channel_dump_statistics);
}
+/** Test that the circuit pools of our HS circuitmap are isolated based on
+ * their token type. */
+static void
+test_hs_circuitmap_isolation(void *arg)
+{
+ or_circuit_t *circ1 = NULL;
+ origin_circuit_t *circ2 = NULL;
+ or_circuit_t *circ3 = NULL;
+ origin_circuit_t *circ4 = NULL;
+
+ (void)arg;
+
+ hs_circuitmap_init();
+
+ {
+ const uint8_t tok1[REND_TOKEN_LEN] = "bet i got some of th";
+
+ circ1 = or_circuit_new(0, NULL);
+ tt_assert(circ1);
+ circ1->base_.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
+
+ /* check that circuitmap is empty right? */
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
+
+ /* Register circ1 with tok1 as relay-side rend circ */
+ hs_circuitmap_register_rend_circ_relay_side(circ1, tok1);
+
+ /* check that service-side getters don't work */
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_service_side(tok1));
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_intro_circ_v2_service_side(tok1));
+
+ /* Check that the right getter works. */
+ tt_ptr_op(circ1, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok1));
+ }
+
+ {
+ const uint8_t tok2[REND_TOKEN_LEN] = "you dont know anythi";
+
+ circ2 = origin_circuit_new();
+ tt_assert(circ2);
+ circ2->base_.purpose = CIRCUIT_PURPOSE_S_ESTABLISH_INTRO;
+ circ3 = or_circuit_new(0, NULL);
+ tt_assert(circ3);
+ circ3->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
+ circ4 = origin_circuit_new();
+ tt_assert(circ4);
+ circ4->base_.purpose = CIRCUIT_PURPOSE_S_ESTABLISH_INTRO;
+
+ /* Register circ2 with tok2 as service-side intro v2 circ */
+ hs_circuitmap_register_intro_circ_v2_service_side(circ2, tok2);
+ /* Register circ3 with tok2 again but for different purpose */
+ hs_circuitmap_register_intro_circ_v2_relay_side(circ3, tok2);
+
+ /* Check that the getters work */
+ tt_ptr_op(circ2, OP_EQ,
+ hs_circuitmap_get_intro_circ_v2_service_side(tok2));
+ tt_ptr_op(circ3, OP_EQ, hs_circuitmap_get_intro_circ_v2_relay_side(tok2));
+
+ /* Register circ4 with tok2: it should override circ2 */
+ hs_circuitmap_register_intro_circ_v2_service_side(circ4, tok2);
+
+ /* check that relay-side getters don't work */
+ tt_ptr_op(NULL, OP_EQ, hs_circuitmap_get_rend_circ_relay_side(tok2));
+
+ /* Check that the getter returns circ4; the last circuit registered with
+ * that token. */
+ tt_ptr_op(circ4, OP_EQ,
+ hs_circuitmap_get_intro_circ_v2_service_side(tok2));
+ }
+
+ done:
+ circuit_free(TO_CIRCUIT(circ1));
+ circuit_free(TO_CIRCUIT(circ2));
+ circuit_free(TO_CIRCUIT(circ3));
+ circuit_free(TO_CIRCUIT(circ4));
+}
+
struct testcase_t circuitlist_tests[] = {
{ "maps", test_clist_maps, TT_FORK, NULL, NULL },
{ "rend_token_maps", test_rend_token_maps, TT_FORK, NULL, NULL },
{ "pick_circid", test_pick_circid, TT_FORK, NULL, NULL },
+ { "hs_circuitmap_isolation", test_hs_circuitmap_isolation,
+ TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_circuitmux.c b/src/test/test_circuitmux.c
index 1ffa17247d..99abdbc685 100644
--- a/src/test/test_circuitmux.c
+++ b/src/test/test_circuitmux.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_circuituse.c b/src/test/test_circuituse.c
index 27a87660ff..5cc9fe571e 100644
--- a/src/test/test_circuituse.c
+++ b/src/test/test_circuituse.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITLIST_PRIVATE
diff --git a/src/test/test_compat_libevent.c b/src/test/test_compat_libevent.c
index 0443cc0b1c..7dd8e65194 100644
--- a/src/test/test_compat_libevent.c
+++ b/src/test/test_compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define COMPAT_LIBEVENT_PRIVATE
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 3c2b52ca00..beaab00f73 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -854,9 +854,23 @@ static void
test_config_fix_my_family(void *arg)
{
char *err = NULL;
- const char *family = "$1111111111111111111111111111111111111111, "
- "1111111111111111111111111111111111111112, "
- "$1111111111111111111111111111111111111113";
+ config_line_t *family = tor_malloc_zero(sizeof(config_line_t));
+ family->key = tor_strdup("MyFamily");
+ family->value = tor_strdup("$1111111111111111111111111111111111111111, "
+ "1111111111111111111111111111111111111112, "
+ "$1111111111111111111111111111111111111113");
+
+ config_line_t *family2 = tor_malloc_zero(sizeof(config_line_t));
+ family2->key = tor_strdup("MyFamily");
+ family2->value = tor_strdup("1111111111111111111111111111111111111114");
+
+ config_line_t *family3 = tor_malloc_zero(sizeof(config_line_t));
+ family3->key = tor_strdup("MyFamily");
+ family3->value = tor_strdup("$1111111111111111111111111111111111111115");
+
+ family->next = family2;
+ family2->next = family3;
+ family3->next = NULL;
or_options_t* options = options_new();
or_options_t* defaults = options_new();
@@ -864,7 +878,7 @@ test_config_fix_my_family(void *arg)
options_init(options);
options_init(defaults);
- options->MyFamily = tor_strdup(family);
+ options->MyFamily_lines = family;
options_validate(NULL, options, defaults, 0, &err) ;
@@ -872,18 +886,23 @@ test_config_fix_my_family(void *arg)
TT_FAIL(("options_validate failed: %s", err));
}
- tt_str_op(options->MyFamily,OP_EQ,
- "$1111111111111111111111111111111111111111, "
- "$1111111111111111111111111111111111111112, "
- "$1111111111111111111111111111111111111113");
-
- done:
- if (err != NULL) {
- tor_free(err);
- }
+ const char *valid[] = { "$1111111111111111111111111111111111111111",
+ "$1111111111111111111111111111111111111112",
+ "$1111111111111111111111111111111111111113",
+ "$1111111111111111111111111111111111111114",
+ "$1111111111111111111111111111111111111115" };
+ int ret_size = 0;
+ config_line_t *ret;
+ for (ret = options->MyFamily; ret && ret_size < 5; ret = ret->next) {
+ tt_str_op(ret->value, OP_EQ, valid[ret_size]);
+ ret_size++;
+ }
+ tt_int_op(ret_size, OP_EQ, 5);
- or_options_free(options);
- or_options_free(defaults);
+ done:
+ tor_free(err);
+ or_options_free(options);
+ or_options_free(defaults);
}
static int n_hostname_01010101 = 0;
@@ -3864,144 +3883,6 @@ mock_config_line(const char *key, const char *val)
}
static void
-test_config_parse_port_config__listenaddress(void *data)
-{
- (void)data;
- int ret;
- config_line_t *config_listen_address = NULL, *config_listen_address2 = NULL,
- *config_listen_address3 = NULL;
- config_line_t *config_port1 = NULL, *config_port2 = NULL,
- *config_port3 = NULL, *config_port4 = NULL, *config_port5 = NULL;
- smartlist_t *slout = NULL;
- port_cfg_t *port_cfg = NULL;
-
- // Test basic invocation with no arguments
- ret = parse_port_config(NULL, NULL, NULL, NULL, 0, NULL, 0, 0);
- tt_int_op(ret, OP_EQ, 0);
-
- // Setup some test data
- config_listen_address = mock_config_line("DNSListenAddress", "127.0.0.1");
- config_listen_address2 = mock_config_line("DNSListenAddress", "x$$$:::345");
- config_listen_address3 = mock_config_line("DNSListenAddress",
- "127.0.0.1:1442");
- config_port1 = mock_config_line("DNSPort", "42");
- config_port2 = mock_config_line("DNSPort", "43");
- config_port1->next = config_port2;
- config_port3 = mock_config_line("DNSPort", "auto");
- config_port4 = mock_config_line("DNSPort", "55542");
- config_port5 = mock_config_line("DNSPort", "666777");
-
- // Test failure when we have a ListenAddress line and several
- // Port lines for the same portname
- ret = parse_port_config(NULL, config_port1, config_listen_address, "DNS", 0,
- NULL, 0, 0);
-
- tt_int_op(ret, OP_EQ, -1);
-
- // Test case when we have a listen address, no default port and allow
- // spurious listen address lines
- ret = parse_port_config(NULL, NULL, config_listen_address, "DNS", 0, NULL,
- 0, CL_PORT_ALLOW_EXTRA_LISTENADDR);
- tt_int_op(ret, OP_EQ, 1);
-
- // Test case when we have a listen address, no default port but doesn't
- // allow spurious listen address lines
- ret = parse_port_config(NULL, NULL, config_listen_address, "DNS", 0, NULL,
- 0, 0);
- tt_int_op(ret, OP_EQ, -1);
-
- // Test case when we have a listen address, and a port that points to auto,
- // should use the AUTO port
- slout = smartlist_new();
- ret = parse_port_config(slout, config_port3, config_listen_address, "DNS",
- 0, NULL, 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);
-
- // Test when we have a listen address and a custom port
- ret = parse_port_config(slout, config_port4, config_listen_address, "DNS",
- 0, NULL, 0, 0);
- tt_int_op(ret, OP_EQ, 0);
- tt_int_op(smartlist_len(slout), OP_EQ, 2);
- port_cfg = (port_cfg_t *)smartlist_get(slout, 1);
- tt_int_op(port_cfg->port, OP_EQ, 55542);
-
- // Test when we have a listen address and an invalid custom port
- ret = parse_port_config(slout, config_port5, config_listen_address, "DNS",
- 0, NULL, 0, 0);
- tt_int_op(ret, OP_EQ, -1);
-
- // Test we get a server port configuration when asked for it
- ret = parse_port_config(slout, NULL, config_listen_address, "DNS", 0, NULL,
- 123, CL_PORT_SERVER_OPTIONS);
- tt_int_op(ret, OP_EQ, 0);
- tt_int_op(smartlist_len(slout), OP_EQ, 4);
- port_cfg = (port_cfg_t *)smartlist_get(slout, 2);
- tt_int_op(port_cfg->port, OP_EQ, 123);
- tt_int_op(port_cfg->server_cfg.no_listen, OP_EQ, 1);
- tt_int_op(port_cfg->server_cfg.bind_ipv4_only, OP_EQ, 1);
-
- // Test an invalid ListenAddress configuration
- ret = parse_port_config(NULL, NULL, config_listen_address2, "DNS", 0, NULL,
- 222, 0);
- tt_int_op(ret, OP_EQ, -1);
-
- // Test default to the port in the listen address if available
- ret = parse_port_config(slout, config_port2, config_listen_address3, "DNS",
- 0, NULL, 0, 0);
- tt_int_op(ret, OP_EQ, 0);
- tt_int_op(smartlist_len(slout), OP_EQ, 5);
- port_cfg = (port_cfg_t *)smartlist_get(slout, 4);
- tt_int_op(port_cfg->port, OP_EQ, 1442);
-
- // Test we work correctly without an out, but with a listen address
- // and a port
- ret = parse_port_config(NULL, config_port2, config_listen_address, "DNS",
- 0, NULL, 0, 0);
- tt_int_op(ret, OP_EQ, 0);
-
- // Test warning nonlocal control
- ret = parse_port_config(slout, config_port2, config_listen_address, "DNS",
- CONN_TYPE_CONTROL_LISTENER, NULL, 0,
- CL_PORT_WARN_NONLOCAL);
- tt_int_op(ret, OP_EQ, 0);
-
- // Test warning nonlocal ext or listener
- ret = parse_port_config(slout, config_port2, config_listen_address, "DNS",
- CONN_TYPE_EXT_OR_LISTENER, NULL, 0,
- CL_PORT_WARN_NONLOCAL);
- tt_int_op(ret, OP_EQ, 0);
-
- // Test warning nonlocal other
- SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
- smartlist_clear(slout);
- ret = parse_port_config(slout, config_port2, config_listen_address, "DNS",
- 0, NULL, 0, CL_PORT_WARN_NONLOCAL);
- tt_int_op(ret, OP_EQ, 0);
-
- // Test warning nonlocal control without an out
- ret = parse_port_config(NULL, config_port2, config_listen_address, "DNS",
- CONN_TYPE_CONTROL_LISTENER, NULL, 0,
- CL_PORT_WARN_NONLOCAL);
- tt_int_op(ret, OP_EQ, 0);
-
- done:
- config_free_lines(config_listen_address);
- config_free_lines(config_listen_address2);
- config_free_lines(config_listen_address3);
- config_free_lines(config_port1);
- /* 2 was linked from 1. */
- config_free_lines(config_port3);
- config_free_lines(config_port4);
- config_free_lines(config_port5);
- if (slout)
- SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
- smartlist_free(slout);
-}
-
-static void
test_config_parse_port_config__ports__no_ports_given(void *data)
{
(void)data;
@@ -4012,40 +3893,40 @@ test_config_parse_port_config__ports__no_ports_given(void *data)
slout = smartlist_new();
// Test no defaultport, no defaultaddress and no out
- ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, NULL, 0, 0);
+ ret = parse_port_config(NULL, NULL, "DNS", 0, NULL, 0, 0);
tt_int_op(ret, OP_EQ, 0);
// Test with defaultport, no defaultaddress and no out
- ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, NULL, 42, 0);
+ ret = parse_port_config(NULL, NULL, "DNS", 0, NULL, 42, 0);
tt_int_op(ret, OP_EQ, 0);
// Test no defaultport, with defaultaddress and no out
- ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0);
+ ret = parse_port_config(NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0);
tt_int_op(ret, OP_EQ, 0);
// Test with defaultport, with defaultaddress and no out
- ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0);
+ ret = parse_port_config(NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0);
tt_int_op(ret, OP_EQ, 0);
// Test no defaultport, no defaultaddress and with out
- ret = parse_port_config(slout, NULL, NULL, "DNS", 0, NULL, 0, 0);
+ ret = parse_port_config(slout, NULL, "DNS", 0, NULL, 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 0);
// Test with defaultport, no defaultaddress and with out
- ret = parse_port_config(slout, NULL, NULL, "DNS", 0, NULL, 42, 0);
+ ret = parse_port_config(slout, NULL, "DNS", 0, NULL, 42, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 0);
// Test no defaultport, with defaultaddress and with out
- ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0);
+ ret = parse_port_config(slout, NULL, "DNS", 0, "127.0.0.2", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 0);
// Test with defaultport, with defaultaddress and out, adds a new port cfg
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0);
+ ret = parse_port_config(slout, NULL, "DNS", 0, "127.0.0.2", 42, 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);
@@ -4056,7 +3937,7 @@ test_config_parse_port_config__ports__no_ports_given(void *data)
// for a unix address
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "/foo/bar/unixdomain",
+ ret = parse_port_config(slout, NULL, "DNS", 0, "/foo/bar/unixdomain",
42, CL_PORT_IS_UNIXSOCKET);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4085,28 +3966,28 @@ test_config_parse_port_config__ports__ports_given(void *data)
// Test error when encounters an invalid Port specification
config_port_invalid = mock_config_line("DNSPort", "");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, NULL,
0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test error when encounters an empty unix domain specification
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "unix:");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, NULL,
0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test error when encounters a unix domain specification but the listener
// doesn't support domain sockets
config_port_valid = mock_config_line("DNSPort", "unix:/tmp/foo/bar");
- ret = parse_port_config(NULL, config_port_valid, NULL, "DNS",
+ ret = parse_port_config(NULL, config_port_valid, "DNS",
CONN_TYPE_AP_DNS_LISTENER, NULL, 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test valid unix domain
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0, 0);
#ifdef _WIN32
tt_int_op(ret, OP_EQ, -1);
@@ -4131,7 +4012,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
"unix:/tmp/foo/bar NoIPv4Traffic "
"NoIPv6Traffic "
"NoOnionTraffic");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "SOCKS",
+ ret = parse_port_config(NULL, config_port_invalid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, -1);
@@ -4140,7 +4021,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort",
"127.0.0.1:80 NoDNSRequest");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS",
+ ret = parse_port_config(NULL, config_port_invalid, "DNS",
CONN_TYPE_AP_DNS_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, -1);
@@ -4153,7 +4034,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_valid = mock_config_line("DNSPort", "127.0.0.1:80 "
"NoIPv6Traffic "
"NoIPv4Traffic NoOnionTraffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS",
+ ret = parse_port_config(slout, config_port_valid, "DNS",
CONN_TYPE_AP_DNS_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, 0);
@@ -4169,7 +4050,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_invalid = mock_config_line("SOCKSPort",
"NoIPv6Traffic "
"unix:/tmp/foo/bar NoIPv4Traffic");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "SOCKS",
+ ret = parse_port_config(NULL, config_port_invalid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, -1);
@@ -4182,7 +4063,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar "
"NoIPv6Traffic "
"NoDNSRequest NoIPv4Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
#ifdef _WIN32
@@ -4204,7 +4085,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_valid = mock_config_line("SOCKSPort", "unix:\"/tmp/foo/ bar\" "
"NoIPv6Traffic "
"NoDNSRequest NoIPv4Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
#ifdef _WIN32
@@ -4226,7 +4107,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_valid = mock_config_line("SOCKSPort", "unix:\"/tmp/foo/ bar "
"NoIPv6Traffic "
"NoDNSRequest NoIPv4Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, -1);
@@ -4238,7 +4119,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_valid = mock_config_line("SOCKSPort", "unix:\"\" "
"NoIPv6Traffic "
"NoDNSRequest NoIPv4Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, -1);
@@ -4249,7 +4130,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar "
"OnionTrafficOnly");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
#ifdef _WIN32
@@ -4270,7 +4151,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar "
"NoIPv4Traffic IPv6Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
#ifdef _WIN32
@@ -4289,7 +4170,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar "
"IPv4Traffic IPv6Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, NULL, 0,
CL_PORT_TAKES_HOSTNAMES);
#ifdef _WIN32
@@ -4305,28 +4186,28 @@ test_config_parse_port_config__ports__ports_given(void *data)
// Test failure if we specify world writable for an IP Port
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "42 WorldWritable");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test failure if we specify group writable for an IP Port
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "42 GroupWritable");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test failure if we specify group writable for an IP Port
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "42 RelaxDirModeCheck");
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test success with only a port (this will fail without a default address)
config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort", "42");
- ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
@@ -4335,7 +4216,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateDestPort");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4348,7 +4229,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoIsolateDestPorts");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4361,7 +4242,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateDestAddr");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4374,7 +4255,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateSOCKSAuth");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4387,7 +4268,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateClientProtocol");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4400,7 +4281,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateClientAddr");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4411,7 +4292,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
// Test success with ignored unknown options
config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort", "42 ThisOptionDoesntExist");
- ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
@@ -4420,7 +4301,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoIsolateSOCKSAuth");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4433,7 +4314,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_valid = mock_config_line("SOCKSPort",
"42 IPv6Traffic PreferIPv6");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, "127.0.0.42", 0,
CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, 0);
@@ -4446,7 +4327,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheIPv4DNS");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4459,7 +4340,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheIPv6DNS");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4472,7 +4353,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoCacheIPv4DNS");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4485,7 +4366,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheDNS");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, CL_PORT_TAKES_HOSTNAMES);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4498,7 +4379,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseIPv4Cache");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4511,7 +4392,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseIPv6Cache");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4524,7 +4405,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseDNSCache");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4537,7 +4418,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoPreferIPv6Automap");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4549,7 +4430,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 PreferSOCKSNoAuth");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4564,14 +4445,14 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_port_invalid = mock_config_line("DNSPort", "0");
config_port_valid = mock_config_line("DNSPort", "42");
config_port_invalid->next = config_port_valid;
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.42", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test success with warn non-local control
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, config_port_valid, NULL, "Control",
+ ret = parse_port_config(slout, config_port_valid, "Control",
CONN_TYPE_CONTROL_LISTENER, "127.0.0.42", 0,
CL_PORT_WARN_NONLOCAL);
tt_int_op(ret, OP_EQ, 0);
@@ -4579,7 +4460,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
// Test success with warn non-local listener
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, config_port_valid, NULL, "ExtOR",
+ ret = parse_port_config(slout, config_port_valid, "ExtOR",
CONN_TYPE_EXT_OR_LISTENER, "127.0.0.42", 0,
CL_PORT_WARN_NONLOCAL);
tt_int_op(ret, OP_EQ, 0);
@@ -4587,12 +4468,12 @@ test_config_parse_port_config__ports__ports_given(void *data)
// Test success with warn non-local other
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.42", 0, CL_PORT_WARN_NONLOCAL);
tt_int_op(ret, OP_EQ, 0);
// Test success with warn non-local other without out
- ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_valid, "DNS", 0,
"127.0.0.42", 0, CL_PORT_WARN_NONLOCAL);
tt_int_op(ret, OP_EQ, 0);
@@ -4603,7 +4484,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IPv4Traffic "
"IPv6Traffic");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.44", 0,
CL_PORT_TAKES_HOSTNAMES |
CL_PORT_NO_STREAM_OPTIONS);
@@ -4618,7 +4499,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=invalid");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4630,7 +4511,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.44", 0, 0);
tt_int_op(ret, OP_EQ, -1);
@@ -4640,7 +4521,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123 "
"SessionGroup=321");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4649,7 +4530,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 SessionGroup=1111122");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4661,7 +4542,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "0");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.45", 0, CL_PORT_IS_UNIXSOCKET);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 0);
@@ -4671,7 +4552,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "something");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
"127.0.0.45", 0, CL_PORT_IS_UNIXSOCKET);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4684,7 +4565,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
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, NULL, "DNS", 0,
+ 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);
@@ -4698,7 +4579,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.122:auto");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ 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);
@@ -4711,7 +4592,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "invalidstuff!!:auto");
MOCK(tor_addr_lookup, mock_tor_addr_lookup__fail_on_bad_addrs);
- ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(NULL, config_port_invalid, "DNS", 0,
"127.0.0.46", 0, 0);
UNMOCK(tor_addr_lookup);
tt_int_op(ret, OP_EQ, -1);
@@ -4721,7 +4602,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.123:656");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
+ 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);
@@ -4735,7 +4616,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "something wrong");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.46", 0, 0);
tt_int_op(ret, OP_EQ, -1);
@@ -4744,7 +4625,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.1.0:123:auto");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0,
"127.0.0.46", 0, 0);
tt_int_op(ret, OP_EQ, -1);
@@ -4754,7 +4635,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/somewhere");
- ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS",
+ ret = parse_port_config(slout, config_port_valid, "SOCKS",
CONN_TYPE_AP_LISTENER, "127.0.0.46", 0,
CL_PORT_DFLT_GROUP_WRITABLE);
#ifdef _WIN32
@@ -4789,7 +4670,7 @@ test_config_parse_port_config__ports__server_options(void *data)
config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort",
"127.0.0.124:656 NoAdvertise");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0,
CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4802,7 +4683,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0,
CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4816,7 +4697,7 @@ test_config_parse_port_config__ports__server_options(void *data)
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen "
"NoAdvertise");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL,
0, CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4825,7 +4706,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 IPv4Only");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0,
CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4838,7 +4719,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "[::1]:656 IPv6Only");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0,
CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4852,7 +4733,7 @@ test_config_parse_port_config__ports__server_options(void *data)
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 IPv6Only "
"IPv4Only");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL,
0, CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4861,7 +4742,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 unknown");
- ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0,
CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(slout), OP_EQ, 1);
@@ -4872,7 +4753,7 @@ test_config_parse_port_config__ports__server_options(void *data)
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort",
"127.0.0.124:656 IPv6Only");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL,
0, CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4881,7 +4762,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "[::1]:656 IPv4Only");
- ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL,
+ ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL,
0, CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4890,7 +4771,7 @@ test_config_parse_port_config__ports__server_options(void *data)
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
smartlist_clear(slout);
config_port_invalid = mock_config_line("ORPort", "unix:\"\"");
- ret = parse_port_config(slout, config_port_invalid, NULL, "ORPort", 0, NULL,
+ ret = parse_port_config(slout, config_port_invalid, "ORPort", 0, NULL,
0, CL_PORT_SERVER_OPTIONS);
tt_int_op(ret, OP_EQ, -1);
@@ -4929,6 +4810,553 @@ test_config_parse_log_severity(void *data)
tor_free(severity);
}
+static void
+test_config_include_limit(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_limit"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char torrc_path[PATH_MAX+1];
+ tor_snprintf(torrc_path, sizeof(torrc_path), "%s"PATH_SEPARATOR"torrc", dir);
+ char torrc_contents[1000];
+ tor_snprintf(torrc_contents, sizeof(torrc_contents), "%%include %s",
+ torrc_path);
+ tt_int_op(write_str_to_file(torrc_path, torrc_contents, 0), OP_EQ, 0);
+
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0, NULL),
+ OP_EQ, -1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_does_not_exist(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_does_not_exist"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char missing_path[PATH_MAX+1];
+ tor_snprintf(missing_path, sizeof(missing_path), "%s"PATH_SEPARATOR"missing",
+ dir);
+ char torrc_contents[1000];
+ tor_snprintf(torrc_contents, sizeof(torrc_contents), "%%include %s",
+ missing_path);
+
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0, NULL),
+ OP_EQ, -1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_error_in_included_file(void *data)
+{
+ (void)data;
+ config_line_t *result = NULL;
+
+ char *dir = tor_strdup(get_fname("test_error_in_included_file"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char invalid_path[PATH_MAX+1];
+ tor_snprintf(invalid_path, sizeof(invalid_path), "%s"PATH_SEPARATOR"invalid",
+ dir);
+ tt_int_op(write_str_to_file(invalid_path, "unclosed \"", 0), OP_EQ, 0);
+
+ char torrc_contents[1000];
+ tor_snprintf(torrc_contents, sizeof(torrc_contents), "%%include %s",
+ invalid_path);
+
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0, NULL),
+ OP_EQ, -1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_empty_file_folder(void *data)
+{
+ (void)data;
+ config_line_t *result = NULL;
+
+ char *dir = tor_strdup(get_fname("test_include_empty_file_folder"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char folder_path[PATH_MAX+1];
+ tor_snprintf(folder_path, sizeof(folder_path), "%s"PATH_SEPARATOR"empty_dir",
+ dir);
+#ifdef _WIN32
+ tt_int_op(mkdir(folder_path), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(folder_path, 0700), OP_EQ, 0);
+#endif
+ char file_path[PATH_MAX+1];
+ tor_snprintf(file_path, sizeof(file_path), "%s"PATH_SEPARATOR"empty_file",
+ dir);
+ tt_int_op(write_str_to_file(file_path, "", 0), OP_EQ, 0);
+
+ char torrc_contents[1000];
+ tor_snprintf(torrc_contents, sizeof(torrc_contents),
+ "%%include %s\n"
+ "%%include %s\n",
+ folder_path, file_path);
+
+ int include_used;
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
+ OP_EQ, 0);
+ tt_ptr_op(result, OP_EQ, NULL);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_recursion_before_after(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_recursion_before_after"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char torrc_path[PATH_MAX+1];
+ tor_snprintf(torrc_path, sizeof(torrc_path), "%s"PATH_SEPARATOR"torrc", dir);
+
+ char file_contents[1000];
+ const int limit = MAX_INCLUDE_RECURSION_LEVEL;
+ int i;
+ // Loop backwards so file_contents has the contents of the first file by the
+ // end of the loop
+ for (i = limit; i > 0; i--) {
+ if (i < limit) {
+ tor_snprintf(file_contents, sizeof(file_contents),
+ "Test %d\n"
+ "%%include %s%d\n"
+ "Test %d\n",
+ i, torrc_path, i + 1, 2 * limit - i);
+ } else {
+ tor_snprintf(file_contents, sizeof(file_contents), "Test %d\n", i);
+ }
+
+ if (i > 1) {
+ char file_path[PATH_MAX+1];
+ tor_snprintf(file_path, sizeof(file_path), "%s%d", torrc_path, i);
+ tt_int_op(write_str_to_file(file_path, file_contents, 0), OP_EQ, 0);
+ }
+ }
+
+ int include_used;
+ tt_int_op(config_get_lines_include(file_contents, &result, 0, &include_used),
+ OP_EQ, 0);
+ tt_ptr_op(result, OP_NE, NULL);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ int len = 0;
+ config_line_t *next;
+ for (next = result; next != NULL; next = next->next) {
+ char expected[10];
+ tor_snprintf(expected, sizeof(expected), "%d", len + 1);
+ tt_str_op(next->key, OP_EQ, "Test");
+ tt_str_op(next->value, OP_EQ, expected);
+ len++;
+ }
+ tt_int_op(len, OP_EQ, 2 * limit - 1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_recursion_after_only(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_recursion_after_only"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char torrc_path[PATH_MAX+1];
+ tor_snprintf(torrc_path, sizeof(torrc_path), "%s"PATH_SEPARATOR"torrc", dir);
+
+ char file_contents[1000];
+ const int limit = MAX_INCLUDE_RECURSION_LEVEL;
+ int i;
+ // Loop backwards so file_contents has the contents of the first file by the
+ // end of the loop
+ for (i = limit; i > 0; i--) {
+ int n = (i - limit - 1) * -1;
+ if (i < limit) {
+ tor_snprintf(file_contents, sizeof(file_contents),
+ "%%include %s%d\n"
+ "Test %d\n",
+ torrc_path, i + 1, n);
+ } else {
+ tor_snprintf(file_contents, sizeof(file_contents), "Test %d\n", n);
+ }
+
+ if (i > 1) {
+ char file_path[PATH_MAX+1];
+ tor_snprintf(file_path, sizeof(file_path), "%s%d", torrc_path, i);
+ tt_int_op(write_str_to_file(file_path, file_contents, 0), OP_EQ, 0);
+ }
+ }
+
+ int include_used;
+ tt_int_op(config_get_lines_include(file_contents, &result, 0, &include_used),
+ OP_EQ, 0);
+ tt_ptr_op(result, OP_NE, NULL);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ int len = 0;
+ config_line_t *next;
+ for (next = result; next != NULL; next = next->next) {
+ char expected[10];
+ tor_snprintf(expected, sizeof(expected), "%d", len + 1);
+ tt_str_op(next->key, OP_EQ, "Test");
+ tt_str_op(next->value, OP_EQ, expected);
+ len++;
+ }
+ tt_int_op(len, OP_EQ, limit);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_folder_order(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_folder_order"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ 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");
+
+#ifdef _WIN32
+ tt_int_op(mkdir(torrcd), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(torrcd, 0700), OP_EQ, 0);
+#endif
+
+ // test that files in subfolders are ignored
+ char path[PATH_MAX+1];
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd,
+ "subfolder");
+
+#ifdef _WIN32
+ tt_int_op(mkdir(path), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(path, 0700), OP_EQ, 0);
+#endif
+
+ char path2[PATH_MAX+1];
+ tor_snprintf(path2, sizeof(path2), "%s"PATH_SEPARATOR"%s", path,
+ "01_ignore");
+ tt_int_op(write_str_to_file(path2, "ShouldNotSee 1\n", 0), OP_EQ, 0);
+
+ // test that files starting with . are ignored
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd, ".dot");
+ tt_int_op(write_str_to_file(path, "ShouldNotSee 2\n", 0), OP_EQ, 0);
+
+ // test file order
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd, "01_1st");
+ tt_int_op(write_str_to_file(path, "Test 1\n", 0), OP_EQ, 0);
+
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd, "02_2nd");
+ tt_int_op(write_str_to_file(path, "Test 2\n", 0), OP_EQ, 0);
+
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd, "aa_3rd");
+ tt_int_op(write_str_to_file(path, "Test 3\n", 0), OP_EQ, 0);
+
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", torrcd, "ab_4th");
+ tt_int_op(write_str_to_file(path, "Test 4\n", 0), OP_EQ, 0);
+
+ char torrc_contents[1000];
+ tor_snprintf(torrc_contents, sizeof(torrc_contents),
+ "%%include %s\n",
+ torrcd);
+
+ int include_used;
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
+ OP_EQ, 0);
+ tt_ptr_op(result, OP_NE, NULL);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ int len = 0;
+ config_line_t *next;
+ for (next = result; next != NULL; next = next->next) {
+ char expected[10];
+ tor_snprintf(expected, sizeof(expected), "%d", len + 1);
+ tt_str_op(next->key, OP_EQ, "Test");
+ tt_str_op(next->value, OP_EQ, expected);
+ len++;
+ }
+ tt_int_op(len, OP_EQ, 4);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_path_syntax(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_path_syntax"));
+ char *esc_dir = NULL, *dir_with_pathsep = NULL,
+ *esc_dir_with_pathsep = NULL, *torrc_contents = NULL;
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ esc_dir = esc_for_log(dir);
+ tor_asprintf(&dir_with_pathsep, "%s%s", dir, PATH_SEPARATOR);
+ esc_dir_with_pathsep = esc_for_log(dir_with_pathsep);
+
+ tor_asprintf(&torrc_contents,
+ "%%include %s\n"
+ "%%include %s%s \n" // space to avoid suppressing newline
+ "%%include %s\n",
+ esc_dir,
+ dir, PATH_SEPARATOR,
+ esc_dir_with_pathsep);
+
+ int include_used;
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
+ OP_EQ, 0);
+ tt_ptr_op(result, OP_EQ, NULL);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+ tor_free(torrc_contents);
+ tor_free(esc_dir);
+ tor_free(dir_with_pathsep);
+ tor_free(esc_dir_with_pathsep);
+}
+
+static void
+test_config_include_not_processed(void *data)
+{
+ (void)data;
+
+ char torrc_contents[1000] = "%include does_not_exist\n";
+ config_line_t *result = NULL;
+ tt_int_op(config_get_lines(torrc_contents, &result, 0),OP_EQ, 0);
+ tt_ptr_op(result, OP_NE, NULL);
+
+ int len = 0;
+ config_line_t *next;
+ for (next = result; next != NULL; next = next->next) {
+ tt_str_op(next->key, OP_EQ, "%include");
+ tt_str_op(next->value, OP_EQ, "does_not_exist");
+ len++;
+ }
+ tt_int_op(len, OP_EQ, 1);
+
+ done:
+ config_free_lines(result);
+}
+
+static void
+test_config_include_has_include(void *data)
+{
+ (void)data;
+
+ config_line_t *result = NULL;
+ char *dir = tor_strdup(get_fname("test_include_has_include"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char torrc_contents[1000] = "Test 1\n";
+ int include_used;
+
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
+ OP_EQ, 0);
+ tt_int_op(include_used, OP_EQ, 0);
+ config_free_lines(result);
+
+ tor_snprintf(torrc_contents, sizeof(torrc_contents), "%%include %s\n", dir);
+ tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
+ OP_EQ, 0);
+ tt_int_op(include_used, OP_EQ, 1);
+
+ done:
+ config_free_lines(result);
+ tor_free(dir);
+}
+
+static void
+test_config_include_flag_both_without(void *data)
+{
+ (void)data;
+
+ char *errmsg = NULL;
+ char conf_empty[1000];
+ tor_snprintf(conf_empty, sizeof(conf_empty),
+ "DataDirectory %s\n",
+ get_fname(NULL));
+ // test with defaults-torrc and torrc without include
+ int ret = options_init_from_string(conf_empty, conf_empty, CMD_RUN_UNITTESTS,
+ NULL, &errmsg);
+ tt_int_op(ret, OP_EQ, 0);
+
+ const or_options_t *options = get_options();
+ tt_int_op(options->IncludeUsed, OP_EQ, 0);
+
+ done:
+ tor_free(errmsg);
+}
+
+static void
+test_config_include_flag_torrc_only(void *data)
+{
+ (void)data;
+
+ char *errmsg = NULL;
+ char *dir = tor_strdup(get_fname("test_include_flag_torrc_only"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char path[PATH_MAX+1];
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", dir, "dummy");
+ tt_int_op(write_str_to_file(path, "\n", 0), OP_EQ, 0);
+
+ char conf_empty[1000];
+ tor_snprintf(conf_empty, sizeof(conf_empty),
+ "DataDirectory %s\n",
+ get_fname(NULL));
+ char conf_include[1000];
+ tor_snprintf(conf_include, sizeof(conf_include), "%%include %s", path);
+
+ // test with defaults-torrc without include and torrc with include
+ int ret = options_init_from_string(conf_empty, conf_include,
+ CMD_RUN_UNITTESTS, NULL, &errmsg);
+ tt_int_op(ret, OP_EQ, 0);
+
+ const or_options_t *options = get_options();
+ tt_int_op(options->IncludeUsed, OP_EQ, 1);
+
+ done:
+ tor_free(errmsg);
+ tor_free(dir);
+}
+
+static void
+test_config_include_flag_defaults_only(void *data)
+{
+ (void)data;
+
+ char *errmsg = NULL;
+ char *dir = tor_strdup(get_fname("test_include_flag_defaults_only"));
+ tt_ptr_op(dir, OP_NE, NULL);
+
+#ifdef _WIN32
+ tt_int_op(mkdir(dir), OP_EQ, 0);
+#else
+ tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
+#endif
+
+ char path[PATH_MAX+1];
+ tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", dir, "dummy");
+ tt_int_op(write_str_to_file(path, "\n", 0), OP_EQ, 0);
+
+ char conf_empty[1000];
+ tor_snprintf(conf_empty, sizeof(conf_empty),
+ "DataDirectory %s\n",
+ get_fname(NULL));
+ char conf_include[1000];
+ tor_snprintf(conf_include, sizeof(conf_include), "%%include %s", path);
+
+ // test with defaults-torrc with include and torrc without include
+ int ret = options_init_from_string(conf_include, conf_empty,
+ CMD_RUN_UNITTESTS, NULL, &errmsg);
+ tt_int_op(ret, OP_EQ, 0);
+
+ const or_options_t *options = get_options();
+ tt_int_op(options->IncludeUsed, OP_EQ, 0);
+
+ done:
+ tor_free(errmsg);
+ tor_free(dir);
+}
+
#define CONFIG_TEST(name, flags) \
{ #name, test_config_ ## name, flags, NULL, NULL }
@@ -4951,11 +5379,23 @@ struct testcase_t config_tests[] = {
CONFIG_TEST(fix_my_family, 0),
CONFIG_TEST(directory_fetch, 0),
CONFIG_TEST(port_cfg_line_extract_addrport, 0),
- CONFIG_TEST(parse_port_config__listenaddress, 0),
CONFIG_TEST(parse_port_config__ports__no_ports_given, 0),
CONFIG_TEST(parse_port_config__ports__server_options, 0),
CONFIG_TEST(parse_port_config__ports__ports_given, 0),
CONFIG_TEST(parse_log_severity, 0),
+ CONFIG_TEST(include_limit, 0),
+ CONFIG_TEST(include_does_not_exist, 0),
+ CONFIG_TEST(include_error_in_included_file, 0),
+ CONFIG_TEST(include_empty_file_folder, 0),
+ CONFIG_TEST(include_recursion_before_after, 0),
+ CONFIG_TEST(include_recursion_after_only, 0),
+ CONFIG_TEST(include_folder_order, 0),
+ CONFIG_TEST(include_path_syntax, 0),
+ CONFIG_TEST(include_not_processed, 0),
+ CONFIG_TEST(include_has_include, 0),
+ CONFIG_TEST(include_flag_both_without, TT_FORK),
+ CONFIG_TEST(include_flag_torrc_only, TT_FORK),
+ CONFIG_TEST(include_flag_defaults_only, TT_FORK),
END_OF_TESTCASES
};
diff --git a/src/test/test_connection.c b/src/test/test_connection.c
index 5cda4f3175..7e5193b203 100644
--- a/src/test/test_connection.c
+++ b/src/test/test_connection.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -265,7 +265,7 @@ test_conn_get_rend_setup(const struct testcase_t *tc)
rend_cache_init();
- /* TODO: use directory_initiate_command_rend() to do this - maybe? */
+ /* TODO: use directory_initiate_request() to do this - maybe? */
tor_assert(strlen(TEST_CONN_REND_ADDR) == REND_SERVICE_ID_LEN_BASE32);
conn->rend_data = rend_data_client_create(TEST_CONN_REND_ADDR, NULL, NULL,
REND_NO_AUTH);
diff --git a/src/test/test_conscache.c b/src/test/test_conscache.c
new file mode 100644
index 0000000000..aee1ba8a06
--- /dev/null
+++ b/src/test/test_conscache.c
@@ -0,0 +1,340 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#include "config.h"
+#include "conscache.h"
+#include "test.h"
+
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+
+static void
+test_conscache_open_failure(void *arg)
+{
+ (void) arg;
+ /* Try opening a directory that doesn't exist and which we shouldn't be
+ * able to create. */
+ consensus_cache_t *cache = consensus_cache_open("a/b/c/d/e/f/g", 128);
+ tt_ptr_op(cache, OP_EQ, NULL);
+
+ done:
+ ;
+}
+
+static void
+test_conscache_simple_usage(void *arg)
+{
+ (void)arg;
+ consensus_cache_entry_t *ent = NULL, *ent2 = NULL;
+
+ /* Make a temporary datadir for these tests */
+ char *ddir_fname = tor_strdup(get_fname_rnd("datadir_cache"));
+ tor_free(get_options_mutable()->DataDirectory);
+ get_options_mutable()->DataDirectory = tor_strdup(ddir_fname);
+ check_private_dir(ddir_fname, CPD_CREATE, NULL);
+ consensus_cache_t *cache = consensus_cache_open("cons", 128);
+
+ tt_assert(cache);
+
+ /* Create object; make sure it exists. */
+ config_line_t *labels = NULL;
+ config_line_append(&labels, "Hello", "world");
+ config_line_append(&labels, "Adios", "planetas");
+ ent = consensus_cache_add(cache,
+ labels, (const uint8_t *)"A\0B\0C", 5);
+ config_free_lines(labels);
+ labels = NULL;
+ tt_assert(ent);
+
+ /* Make a second object */
+ config_line_append(&labels, "Hello", "mundo");
+ config_line_append(&labels, "Adios", "planets");
+ ent2 = consensus_cache_add(cache,
+ labels, (const uint8_t *)"xyzzy", 5);
+ config_free_lines(labels);
+ labels = NULL;
+ tt_assert(ent2);
+ tt_assert(! consensus_cache_entry_is_mapped(ent2));
+ consensus_cache_entry_decref(ent2);
+ ent2 = NULL;
+
+ /* Check get_value */
+ tt_ptr_op(NULL, OP_EQ, consensus_cache_entry_get_value(ent, "hebbo"));
+ tt_str_op("world", OP_EQ, consensus_cache_entry_get_value(ent, "Hello"));
+
+ /* Check find_first */
+ ent2 = consensus_cache_find_first(cache, "Hello", "world!");
+ tt_ptr_op(ent2, OP_EQ, NULL);
+ ent2 = consensus_cache_find_first(cache, "Hello", "world");
+ tt_ptr_op(ent2, OP_EQ, ent);
+ ent2 = consensus_cache_find_first(cache, "Hello", "mundo");
+ tt_ptr_op(ent2, OP_NE, ent);
+
+ tt_assert(! consensus_cache_entry_is_mapped(ent));
+
+ /* Check get_body */
+ const uint8_t *bp = NULL;
+ size_t sz = 0;
+ int r = consensus_cache_entry_get_body(ent, &bp, &sz);
+ tt_int_op(r, OP_EQ, 0);
+ tt_u64_op(sz, OP_EQ, 5);
+ tt_mem_op(bp, OP_EQ, "A\0B\0C", 5);
+ tt_assert(consensus_cache_entry_is_mapped(ent));
+
+ /* Free and re-create the cache, to rescan the directory. */
+ consensus_cache_free(cache);
+ consensus_cache_entry_decref(ent);
+ cache = consensus_cache_open("cons", 128);
+
+ /* Make sure the entry is still there */
+ ent = consensus_cache_find_first(cache, "Hello", "mundo");
+ tt_assert(ent);
+ ent2 = consensus_cache_find_first(cache, "Adios", "planets");
+ tt_ptr_op(ent, OP_EQ, ent2);
+ consensus_cache_entry_incref(ent);
+ tt_assert(! consensus_cache_entry_is_mapped(ent));
+ r = consensus_cache_entry_get_body(ent, &bp, &sz);
+ tt_int_op(r, OP_EQ, 0);
+ tt_u64_op(sz, OP_EQ, 5);
+ tt_mem_op(bp, OP_EQ, "xyzzy", 5);
+ tt_assert(consensus_cache_entry_is_mapped(ent));
+
+ /* There should be two entries total. */
+ smartlist_t *entries = smartlist_new();
+ consensus_cache_find_all(entries, cache, NULL, NULL);
+ int n = smartlist_len(entries);
+ smartlist_free(entries);
+ tt_int_op(n, OP_EQ, 2);
+
+ done:
+ consensus_cache_entry_decref(ent);
+ tor_free(ddir_fname);
+ consensus_cache_free(cache);
+}
+
+static void
+test_conscache_cleanup(void *arg)
+{
+ (void)arg;
+ const int N = 20;
+ consensus_cache_entry_t **ents =
+ tor_calloc(N, sizeof(consensus_cache_entry_t*));
+
+ /* Make a temporary datadir for these tests */
+ char *ddir_fname = tor_strdup(get_fname_rnd("datadir_cache"));
+ tor_free(get_options_mutable()->DataDirectory);
+ get_options_mutable()->DataDirectory = tor_strdup(ddir_fname);
+ check_private_dir(ddir_fname, CPD_CREATE, NULL);
+ consensus_cache_t *cache = consensus_cache_open("cons", 128);
+
+ tt_assert(cache);
+
+ /* Create a bunch of entries. */
+ int i;
+ for (i = 0; i < N; ++i) {
+ config_line_t *labels = NULL;
+ char num[8];
+ tor_snprintf(num, sizeof(num), "%d", i);
+ config_line_append(&labels, "test-id", "cleanup");
+ config_line_append(&labels, "index", num);
+ size_t bodylen = i * 3;
+ uint8_t *body = tor_malloc(bodylen);
+ memset(body, i, bodylen);
+ ents[i] = consensus_cache_add(cache, labels, body, bodylen);
+ tor_free(body);
+ config_free_lines(labels);
+ tt_assert(ents[i]);
+ /* We're still holding a reference to each entry at this point. */
+ }
+
+ /* Page all of the entries into RAM */
+ for (i = 0; i < N; ++i) {
+ const uint8_t *bp;
+ size_t sz;
+ tt_assert(! consensus_cache_entry_is_mapped(ents[i]));
+ consensus_cache_entry_get_body(ents[i], &bp, &sz);
+ tt_assert(consensus_cache_entry_is_mapped(ents[i]));
+ }
+
+ /* Mark some of the entries as deletable. */
+ for (i = 7; i < N; i += 7) {
+ consensus_cache_entry_mark_for_removal(ents[i]);
+ tt_assert(consensus_cache_entry_is_mapped(ents[i]));
+ }
+
+ /* Mark some of the entries as aggressively unpaged. */
+ for (i = 3; i < N; i += 3) {
+ consensus_cache_entry_mark_for_aggressive_release(ents[i]);
+ tt_assert(consensus_cache_entry_is_mapped(ents[i]));
+ }
+
+ /* Incref some of the entries again */
+ for (i = 0; i < N; i += 2) {
+ consensus_cache_entry_incref(ents[i]);
+ }
+
+ /* Now we're going to decref everything. We do so at a specific time. I'm
+ * picking the moment when I was writing this test, at 2017-04-05 12:16:48
+ * UTC. */
+ const time_t example_time = 1491394608;
+ update_approx_time(example_time);
+ for (i = 0; i < N; ++i) {
+ consensus_cache_entry_decref(ents[i]);
+ if (i % 2) {
+ ents[i] = NULL; /* We're no longer holding any reference here. */
+ }
+ }
+
+ /* At this point, the aggressively-released items with refcount 1 should
+ * be unmapped. Nothing should be deleted. */
+ consensus_cache_entry_t *e_tmp;
+ e_tmp = consensus_cache_find_first(cache, "index", "3");
+ tt_assert(e_tmp);
+ tt_assert(! consensus_cache_entry_is_mapped(e_tmp));
+ e_tmp = consensus_cache_find_first(cache, "index", "5");
+ tt_assert(e_tmp);
+ tt_assert(consensus_cache_entry_is_mapped(e_tmp));
+ e_tmp = consensus_cache_find_first(cache, "index", "6");
+ tt_assert(e_tmp);
+ tt_assert(consensus_cache_entry_is_mapped(e_tmp));
+ e_tmp = consensus_cache_find_first(cache, "index", "7");
+ tt_assert(e_tmp == NULL); // not found because pending deletion.
+
+ /* Delete the pending-deletion items. */
+ consensus_cache_delete_pending(cache, 0);
+ {
+ smartlist_t *entries = smartlist_new();
+ consensus_cache_find_all(entries, cache, NULL, NULL);
+ int n = smartlist_len(entries);
+ smartlist_free(entries);
+ tt_int_op(n, OP_EQ, 20 - 2); /* 1 entry was deleted; 1 is not-found. */
+ }
+ e_tmp = consensus_cache_find_first(cache, "index", "7"); // refcnt == 1...
+ tt_assert(e_tmp == NULL); // so deleted.
+ e_tmp = consensus_cache_find_first(cache, "index", "14"); // refcnt == 2
+ tt_assert(e_tmp == NULL); // not deleted; but not found.
+
+ /* Now do lazy unmapping. */
+ // should do nothing.
+ consensus_cache_unmap_lazy(cache, example_time - 10);
+ e_tmp = consensus_cache_find_first(cache, "index", "11");
+ tt_assert(e_tmp);
+ tt_assert(consensus_cache_entry_is_mapped(e_tmp));
+ // should actually unmap
+ consensus_cache_unmap_lazy(cache, example_time + 10);
+ e_tmp = consensus_cache_find_first(cache, "index", "11");
+ tt_assert(e_tmp);
+ tt_assert(! consensus_cache_entry_is_mapped(e_tmp));
+ // This one will still be mapped, since it has a reference.
+ e_tmp = consensus_cache_find_first(cache, "index", "16");
+ tt_assert(e_tmp);
+ tt_assert(consensus_cache_entry_is_mapped(e_tmp));
+
+ for (i = 0; i < N; ++i) {
+ consensus_cache_entry_decref(ents[i]);
+ ents[i] = NULL;
+ }
+
+ /* Free and re-create the cache, to rescan the directory. Make sure the
+ * deleted thing is still deleted, along with the other deleted thing. */
+ consensus_cache_free(cache);
+ cache = consensus_cache_open("cons", 128);
+ {
+ smartlist_t *entries = smartlist_new();
+ consensus_cache_find_all(entries, cache, NULL, NULL);
+ int n = smartlist_len(entries);
+ smartlist_free(entries);
+ tt_int_op(n, OP_EQ, 18);
+ }
+
+ done:
+ for (i = 0; i < N; ++i) {
+ consensus_cache_entry_decref(ents[i]);
+ }
+ tor_free(ents);
+ tor_free(ddir_fname);
+ consensus_cache_free(cache);
+}
+
+static void
+test_conscache_filter(void *arg)
+{
+ (void)arg;
+ const int N = 30;
+ smartlist_t *lst = NULL;
+
+ /* Make a temporary datadir for these tests */
+ char *ddir_fname = tor_strdup(get_fname_rnd("datadir_cache"));
+ tor_free(get_options_mutable()->DataDirectory);
+ get_options_mutable()->DataDirectory = tor_strdup(ddir_fname);
+ check_private_dir(ddir_fname, CPD_CREATE, NULL);
+ consensus_cache_t *cache = consensus_cache_open("cons", 128);
+
+ tt_assert(cache);
+
+ /* Create a bunch of entries with different labels */
+ int i;
+ for (i = 0; i < N; ++i) {
+ config_line_t *labels = NULL;
+ char num[8];
+ tor_snprintf(num, sizeof(num), "%d", i);
+ config_line_append(&labels, "test-id", "filter");
+ config_line_append(&labels, "index", num);
+ tor_snprintf(num, sizeof(num), "%d", i % 3);
+ config_line_append(&labels, "mod3", num);
+ tor_snprintf(num, sizeof(num), "%d", i % 5);
+ config_line_append(&labels, "mod5", num);
+
+ size_t bodylen = i * 3;
+ uint8_t *body = tor_malloc(bodylen);
+ memset(body, i, bodylen);
+ consensus_cache_entry_t *ent =
+ consensus_cache_add(cache, labels, body, bodylen);
+ tor_free(body);
+ config_free_lines(labels);
+ tt_assert(ent);
+ consensus_cache_entry_decref(ent);
+ }
+
+ lst = smartlist_new();
+ /* Find nothing. */
+ consensus_cache_find_all(lst, cache, "mod5", "5");
+ tt_int_op(smartlist_len(lst), OP_EQ, 0);
+ /* Find everything. */
+ consensus_cache_find_all(lst, cache, "test-id", "filter");
+ tt_int_op(smartlist_len(lst), OP_EQ, N);
+
+ /* Now filter to find the entries that have i%3 == 1 */
+ consensus_cache_filter_list(lst, "mod3", "1");
+ tt_int_op(smartlist_len(lst), OP_EQ, 10);
+ /* Now filter to find the entries that also have i%5 == 3 */
+ consensus_cache_filter_list(lst, "mod5", "3");
+ tt_int_op(smartlist_len(lst), OP_EQ, 2);
+ /* So now we have those entries for which i%15 == 13. */
+
+ consensus_cache_entry_t *ent1 = smartlist_get(lst, 0);
+ consensus_cache_entry_t *ent2 = smartlist_get(lst, 1);
+ const char *idx1 = consensus_cache_entry_get_value(ent1, "index");
+ const char *idx2 = consensus_cache_entry_get_value(ent2, "index");
+ tt_assert( (!strcmp(idx1, "28") && !strcmp(idx2, "13")) ||
+ (!strcmp(idx1, "13") && !strcmp(idx2, "28")) );
+
+ done:
+ tor_free(ddir_fname);
+ consensus_cache_free(cache);
+ smartlist_free(lst);
+}
+
+#define ENT(name) \
+ { #name, test_conscache_ ## name, TT_FORK, NULL, NULL }
+
+struct testcase_t conscache_tests[] = {
+ ENT(open_failure),
+ ENT(simple_usage),
+ ENT(cleanup),
+ ENT(filter),
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_consdiff.c b/src/test/test_consdiff.c
new file mode 100644
index 0000000000..7cf8d6ba2b
--- /dev/null
+++ b/src/test/test_consdiff.c
@@ -0,0 +1,1184 @@
+/* Copyright (c) 2014, Daniel Martí
+ * Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CONSDIFF_PRIVATE
+
+#include "or.h"
+#include "test.h"
+
+#include "consdiff.h"
+#include "memarea.h"
+#include "log_test_helpers.h"
+
+#define tt_str_eq_line(a,b) \
+ tt_assert(line_str_eq((b),(a)))
+
+static void
+test_consdiff_smartlist_slice(void *arg)
+{
+ smartlist_t *sl = smartlist_new();
+ smartlist_slice_t *sls;
+
+ /* Create a regular smartlist. */
+ (void)arg;
+ smartlist_add(sl, (void*)1);
+ smartlist_add(sl, (void*)2);
+ smartlist_add(sl, (void*)3);
+ smartlist_add(sl, (void*)4);
+ smartlist_add(sl, (void*)5);
+
+ /* See if the slice was done correctly. */
+ sls = smartlist_slice(sl, 2, 5);
+ tt_ptr_op(sl, OP_EQ, sls->list);
+ tt_ptr_op((void*)3, OP_EQ, smartlist_get(sls->list, sls->offset));
+ tt_ptr_op((void*)5, OP_EQ,
+ smartlist_get(sls->list, sls->offset + (sls->len-1)));
+ tor_free(sls);
+
+ /* See that using -1 as the end does get to the last element. */
+ sls = smartlist_slice(sl, 2, -1);
+ tt_ptr_op(sl, OP_EQ, sls->list);
+ tt_ptr_op((void*)3, OP_EQ, smartlist_get(sls->list, sls->offset));
+ tt_ptr_op((void*)5, OP_EQ,
+ smartlist_get(sls->list, sls->offset + (sls->len-1)));
+
+ done:
+ tor_free(sls);
+ smartlist_free(sl);
+}
+
+static void
+test_consdiff_smartlist_slice_string_pos(void *arg)
+{
+ smartlist_t *sl = smartlist_new();
+ smartlist_slice_t *sls;
+ memarea_t *area = memarea_new();
+
+ /* Create a regular smartlist. */
+ (void)arg;
+ consensus_split_lines(sl, "a\nd\nc\na\nb\n", area);
+
+ /* See that smartlist_slice_string_pos respects the bounds of the slice. */
+ sls = smartlist_slice(sl, 2, 5);
+ cdline_t a_line = { "a", 1 };
+ tt_int_op(3, OP_EQ, smartlist_slice_string_pos(sls, &a_line));
+ cdline_t d_line = { "d", 1 };
+ tt_int_op(-1, OP_EQ, smartlist_slice_string_pos(sls, &d_line));
+
+ done:
+ tor_free(sls);
+ smartlist_free(sl);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_lcs_lengths(void *arg)
+{
+ smartlist_t *sl1 = smartlist_new();
+ smartlist_t *sl2 = smartlist_new();
+ smartlist_slice_t *sls1, *sls2;
+ int *lengths1, *lengths2;
+ memarea_t *area = memarea_new();
+
+ /* Expected lcs lengths in regular and reverse order. */
+ int e_lengths1[] = { 0, 1, 2, 3, 3, 4 };
+ int e_lengths2[] = { 0, 1, 1, 2, 3, 4 };
+
+ (void)arg;
+ consensus_split_lines(sl1, "a\nb\nc\nd\ne\n", area);
+ consensus_split_lines(sl2, "a\nc\nd\ni\ne\n", area);
+
+ sls1 = smartlist_slice(sl1, 0, -1);
+ sls2 = smartlist_slice(sl2, 0, -1);
+
+ lengths1 = lcs_lengths(sls1, sls2, 1);
+ lengths2 = lcs_lengths(sls1, sls2, -1);
+ tt_mem_op(e_lengths1, OP_EQ, lengths1, sizeof(int) * 6);
+ tt_mem_op(e_lengths2, OP_EQ, lengths2, sizeof(int) * 6);
+
+ done:
+ tor_free(lengths1);
+ tor_free(lengths2);
+ tor_free(sls1);
+ tor_free(sls2);
+ smartlist_free(sl1);
+ smartlist_free(sl2);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_trim_slices(void *arg)
+{
+ smartlist_t *sl1 = smartlist_new();
+ smartlist_t *sl2 = smartlist_new();
+ smartlist_t *sl3 = smartlist_new();
+ smartlist_t *sl4 = smartlist_new();
+ smartlist_slice_t *sls1, *sls2, *sls3, *sls4;
+ memarea_t *area = memarea_new();
+
+ (void)arg;
+ consensus_split_lines(sl1, "a\nb\nb\nb\nd\n", area);
+ consensus_split_lines(sl2, "a\nc\nc\nc\nd\n", area);
+ consensus_split_lines(sl3, "a\nb\nb\nb\na\n", area);
+ consensus_split_lines(sl4, "c\nb\nb\nb\nc\n", area);
+ sls1 = smartlist_slice(sl1, 0, -1);
+ sls2 = smartlist_slice(sl2, 0, -1);
+ sls3 = smartlist_slice(sl3, 0, -1);
+ sls4 = smartlist_slice(sl4, 0, -1);
+
+ /* They should be trimmed by one line at each end. */
+ tt_int_op(5, OP_EQ, sls1->len);
+ tt_int_op(5, OP_EQ, sls2->len);
+ trim_slices(sls1, sls2);
+ tt_int_op(3, OP_EQ, sls1->len);
+ tt_int_op(3, OP_EQ, sls2->len);
+
+ /* They should not be trimmed at all. */
+ tt_int_op(5, OP_EQ, sls3->len);
+ tt_int_op(5, OP_EQ, sls4->len);
+ trim_slices(sls3, sls4);
+ tt_int_op(5, OP_EQ, sls3->len);
+ tt_int_op(5, OP_EQ, sls4->len);
+
+ done:
+ tor_free(sls1);
+ tor_free(sls2);
+ tor_free(sls3);
+ tor_free(sls4);
+ smartlist_free(sl1);
+ smartlist_free(sl2);
+ smartlist_free(sl3);
+ smartlist_free(sl4);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_set_changed(void *arg)
+{
+ smartlist_t *sl1 = smartlist_new();
+ smartlist_t *sl2 = smartlist_new();
+ bitarray_t *changed1 = bitarray_init_zero(4);
+ bitarray_t *changed2 = bitarray_init_zero(4);
+ smartlist_slice_t *sls1, *sls2;
+ memarea_t *area = memarea_new();
+
+ (void)arg;
+ consensus_split_lines(sl1, "a\nb\na\na\n", area);
+ consensus_split_lines(sl2, "a\na\na\na\n", area);
+
+ /* Length of sls1 is 0. */
+ sls1 = smartlist_slice(sl1, 0, 0);
+ sls2 = smartlist_slice(sl2, 1, 3);
+ set_changed(changed1, changed2, sls1, sls2);
+
+ /* The former is not changed, the latter changes all of its elements. */
+ tt_assert(!bitarray_is_set(changed1, 0));
+ tt_assert(!bitarray_is_set(changed1, 1));
+ tt_assert(!bitarray_is_set(changed1, 2));
+ tt_assert(!bitarray_is_set(changed1, 3));
+
+ tt_assert(!bitarray_is_set(changed2, 0));
+ tt_assert(bitarray_is_set(changed2, 1));
+ tt_assert(bitarray_is_set(changed2, 2));
+ tt_assert(!bitarray_is_set(changed2, 3));
+ bitarray_clear(changed2, 1);
+ bitarray_clear(changed2, 2);
+
+ /* Length of sls1 is 1 and its element is in sls2. */
+ tor_free(sls1);
+ sls1 = smartlist_slice(sl1, 0, 1);
+ set_changed(changed1, changed2, sls1, sls2);
+
+ /* The latter changes all elements but the (first) common one. */
+ tt_assert(!bitarray_is_set(changed1, 0));
+ tt_assert(!bitarray_is_set(changed1, 1));
+ tt_assert(!bitarray_is_set(changed1, 2));
+ tt_assert(!bitarray_is_set(changed1, 3));
+
+ tt_assert(!bitarray_is_set(changed2, 0));
+ tt_assert(!bitarray_is_set(changed2, 1));
+ tt_assert(bitarray_is_set(changed2, 2));
+ tt_assert(!bitarray_is_set(changed2, 3));
+ bitarray_clear(changed2, 2);
+
+ /* Length of sls1 is 1 and its element is not in sls2. */
+ tor_free(sls1);
+ sls1 = smartlist_slice(sl1, 1, 2);
+ set_changed(changed1, changed2, sls1, sls2);
+
+ /* The former changes its element, the latter changes all elements. */
+ tt_assert(!bitarray_is_set(changed1, 0));
+ tt_assert(bitarray_is_set(changed1, 1));
+ tt_assert(!bitarray_is_set(changed1, 2));
+ tt_assert(!bitarray_is_set(changed1, 3));
+
+ tt_assert(!bitarray_is_set(changed2, 0));
+ tt_assert(bitarray_is_set(changed2, 1));
+ tt_assert(bitarray_is_set(changed2, 2));
+ tt_assert(!bitarray_is_set(changed2, 3));
+
+ done:
+ bitarray_free(changed1);
+ bitarray_free(changed2);
+ smartlist_free(sl1);
+ smartlist_free(sl2);
+ tor_free(sls1);
+ tor_free(sls2);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_calc_changes(void *arg)
+{
+ smartlist_t *sl1 = smartlist_new();
+ smartlist_t *sl2 = smartlist_new();
+ smartlist_slice_t *sls1, *sls2;
+ bitarray_t *changed1 = bitarray_init_zero(4);
+ bitarray_t *changed2 = bitarray_init_zero(4);
+ memarea_t *area = memarea_new();
+
+ (void)arg;
+ consensus_split_lines(sl1, "a\na\na\na\n", area);
+ consensus_split_lines(sl2, "a\na\na\na\n", area);
+
+ sls1 = smartlist_slice(sl1, 0, -1);
+ sls2 = smartlist_slice(sl2, 0, -1);
+ calc_changes(sls1, sls2, changed1, changed2);
+
+ /* Nothing should be set to changed. */
+ tt_assert(!bitarray_is_set(changed1, 0));
+ tt_assert(!bitarray_is_set(changed1, 1));
+ tt_assert(!bitarray_is_set(changed1, 2));
+ tt_assert(!bitarray_is_set(changed1, 3));
+
+ tt_assert(!bitarray_is_set(changed2, 0));
+ tt_assert(!bitarray_is_set(changed2, 1));
+ tt_assert(!bitarray_is_set(changed2, 2));
+ tt_assert(!bitarray_is_set(changed2, 3));
+
+ smartlist_clear(sl2);
+ consensus_split_lines(sl2, "a\nb\na\nb\n", area);
+ tor_free(sls1);
+ tor_free(sls2);
+ sls1 = smartlist_slice(sl1, 0, -1);
+ sls2 = smartlist_slice(sl2, 0, -1);
+ calc_changes(sls1, sls2, changed1, changed2);
+
+ /* Two elements are changed. */
+ tt_assert(!bitarray_is_set(changed1, 0));
+ tt_assert(bitarray_is_set(changed1, 1));
+ tt_assert(bitarray_is_set(changed1, 2));
+ tt_assert(!bitarray_is_set(changed1, 3));
+ bitarray_clear(changed1, 1);
+ bitarray_clear(changed1, 2);
+
+ tt_assert(!bitarray_is_set(changed2, 0));
+ tt_assert(bitarray_is_set(changed2, 1));
+ tt_assert(!bitarray_is_set(changed2, 2));
+ tt_assert(bitarray_is_set(changed2, 3));
+ bitarray_clear(changed1, 1);
+ bitarray_clear(changed1, 3);
+
+ smartlist_clear(sl2);
+ consensus_split_lines(sl2, "b\nb\nb\nb\n", area);
+ tor_free(sls1);
+ tor_free(sls2);
+ sls1 = smartlist_slice(sl1, 0, -1);
+ sls2 = smartlist_slice(sl2, 0, -1);
+ calc_changes(sls1, sls2, changed1, changed2);
+
+ /* All elements are changed. */
+ tt_assert(bitarray_is_set(changed1, 0));
+ tt_assert(bitarray_is_set(changed1, 1));
+ tt_assert(bitarray_is_set(changed1, 2));
+ tt_assert(bitarray_is_set(changed1, 3));
+
+ tt_assert(bitarray_is_set(changed2, 0));
+ tt_assert(bitarray_is_set(changed2, 1));
+ tt_assert(bitarray_is_set(changed2, 2));
+ tt_assert(bitarray_is_set(changed2, 3));
+
+ done:
+ bitarray_free(changed1);
+ bitarray_free(changed2);
+ smartlist_free(sl1);
+ smartlist_free(sl2);
+ tor_free(sls1);
+ tor_free(sls2);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_get_id_hash(void *arg)
+{
+ (void)arg;
+
+ cdline_t line1 = { "r name", 6 };
+ cdline_t line2 = { "r name _hash_isnt_base64 etc", 28 };
+ cdline_t line3 = { "r name hash+valid+base64 etc", 28 };
+ cdline_t tmp;
+
+ /* No hash. */
+ tt_int_op(-1, OP_EQ, get_id_hash(&line1, &tmp));
+ /* The hash contains characters that are not base64. */
+ tt_int_op(-1, OP_EQ, get_id_hash(&line2, &tmp));
+
+ /* valid hash. */
+ tt_int_op(0, OP_EQ, get_id_hash(&line3, &tmp));
+ tt_ptr_op(tmp.s, OP_EQ, line3.s + 7);
+ tt_uint_op(tmp.len, OP_EQ, line3.len - 11);
+
+ done:
+ ;
+}
+
+static void
+test_consdiff_is_valid_router_entry(void *arg)
+{
+ /* Doesn't start with "r ". */
+ (void)arg;
+ cdline_t line0 = { "foo", 3 };
+ tt_int_op(0, OP_EQ, is_valid_router_entry(&line0));
+
+ /* These are already tested with get_id_hash, but make sure it's run
+ * properly. */
+
+ cdline_t line1 = { "r name", 6 };
+ cdline_t line2 = { "r name _hash_isnt_base64 etc", 28 };
+ cdline_t line3 = { "r name hash+valid+base64 etc", 28 };
+ tt_int_op(0, OP_EQ, is_valid_router_entry(&line1));
+ tt_int_op(0, OP_EQ, is_valid_router_entry(&line2));
+ tt_int_op(1, OP_EQ, is_valid_router_entry(&line3));
+
+ done:
+ ;
+}
+
+static void
+test_consdiff_next_router(void *arg)
+{
+ smartlist_t *sl = smartlist_new();
+ memarea_t *area = memarea_new();
+ (void)arg;
+ smartlist_add_linecpy(sl, area, "foo");
+ smartlist_add_linecpy(sl, area,
+ "r name hash+longer+than+27+chars+and+valid+base64 etc");
+ smartlist_add_linecpy(sl, area, "foo");
+ smartlist_add_linecpy(sl, area, "foo");
+ smartlist_add_linecpy(sl, area,
+ "r name hash+longer+than+27+chars+and+valid+base64 etc");
+ smartlist_add_linecpy(sl, area, "foo");
+
+ /* Not currently on a router entry line, finding the next one. */
+ tt_int_op(1, OP_EQ, next_router(sl, 0));
+ tt_int_op(4, OP_EQ, next_router(sl, 2));
+
+ /* Already at the beginning of a router entry line, ignore it. */
+ tt_int_op(4, OP_EQ, next_router(sl, 1));
+
+ /* There are no more router entries, so return the line after the last. */
+ tt_int_op(6, OP_EQ, next_router(sl, 4));
+ tt_int_op(6, OP_EQ, next_router(sl, 5));
+
+ done:
+ smartlist_free(sl);
+ memarea_drop_all(area);
+}
+
+static int
+base64cmp_wrapper(const char *a, const char *b)
+{
+ cdline_t aa = { a, a ? (uint32_t) strlen(a) : 0 };
+ cdline_t bb = { b, b ? (uint32_t) strlen(b) : 0 };
+ return base64cmp(&aa, &bb);
+}
+
+static void
+test_consdiff_base64cmp(void *arg)
+{
+ /* NULL arguments. */
+ (void)arg;
+ tt_int_op(0, OP_EQ, base64cmp_wrapper(NULL, NULL));
+ tt_int_op(-1, OP_EQ, base64cmp_wrapper(NULL, "foo"));
+ tt_int_op(1, OP_EQ, base64cmp_wrapper("bar", NULL));
+
+ /* Nil base64 values. */
+ tt_int_op(0, OP_EQ, base64cmp_wrapper("", ""));
+ tt_int_op(0, OP_EQ, base64cmp_wrapper("_", "&"));
+
+ /* Exact same valid strings. */
+ tt_int_op(0, OP_EQ, base64cmp_wrapper("abcABC/+", "abcABC/+"));
+ /* Both end with an invalid base64 char other than '\0'. */
+ tt_int_op(0, OP_EQ, base64cmp_wrapper("abcABC/+ ", "abcABC/+ "));
+ /* Only one ends with an invalid base64 char other than '\0'. */
+ tt_int_op(-1, OP_EQ, base64cmp_wrapper("abcABC/+ ", "abcABC/+a"));
+
+ /* Comparisons that would return differently with strcmp(). */
+ tt_int_op(strcmp("/foo", "Afoo"), OP_LT, 0);
+ tt_int_op(base64cmp_wrapper("/foo", "Afoo"), OP_GT, 0);
+ tt_int_op(strcmp("Afoo", "0foo"), OP_GT, 0);
+ tt_int_op(base64cmp_wrapper("Afoo", "0foo"), OP_LT, 0);
+
+ /* Comparisons that would return the same as with strcmp(). */
+ tt_int_op(strcmp("afoo", "Afoo"), OP_GT, 0);
+ tt_int_op(base64cmp_wrapper("afoo", "Afoo"), OP_GT, 0);
+
+ /* Different lengths */
+ tt_int_op(base64cmp_wrapper("afoo", "afooo"), OP_LT, 0);
+ tt_int_op(base64cmp_wrapper("afooo", "afoo"), OP_GT, 0);
+
+ done:
+ ;
+}
+
+static void
+test_consdiff_gen_ed_diff(void *arg)
+{
+ smartlist_t *cons1=NULL, *cons2=NULL, *diff=NULL;
+ int i;
+ memarea_t *area = memarea_new();
+ setup_capture_of_logs(LOG_WARN);
+
+ (void)arg;
+ cons1 = smartlist_new();
+ cons2 = smartlist_new();
+
+ /* Identity hashes are not sorted properly, return NULL. */
+ smartlist_add_linecpy(cons1, area, "r name bbbbbbbbbbbbbbbbbbbbbbbbbbb etc");
+ smartlist_add_linecpy(cons1, area, "foo");
+ smartlist_add_linecpy(cons1, area, "r name aaaaaaaaaaaaaaaaaaaaaaaaaaa etc");
+ smartlist_add_linecpy(cons1, area, "bar");
+
+ smartlist_add_linecpy(cons2, area, "r name aaaaaaaaaaaaaaaaaaaaaaaaaaa etc");
+ smartlist_add_linecpy(cons2, area, "foo");
+ smartlist_add_linecpy(cons2, area, "r name ccccccccccccccccccccccccccc etc");
+ smartlist_add_linecpy(cons2, area, "bar");
+
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because the base consensus doesn't have its router entries sorted "
+ "properly.");
+
+ /* Same, but now with the second consensus. */
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons2, cons1, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because the target consensus doesn't have its router entries sorted "
+ "properly.");
+
+ /* Same as the two above, but with the reversed thing immediately after a
+ match. (The code handles this differently) */
+ smartlist_del(cons1, 0);
+ smartlist_add_linecpy(cons1, area, "r name aaaaaaaaaaaaaaaaaaaaaaaaaaa etc");
+
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because the base consensus doesn't have its router entries sorted "
+ "properly.");
+
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons2, cons1, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because the target consensus doesn't have its router entries sorted "
+ "properly.");
+
+ /* Identity hashes are repeated, return NULL. */
+ smartlist_clear(cons1);
+
+ smartlist_add_linecpy(cons1, area, "r name bbbbbbbbbbbbbbbbbbbbbbbbbbb etc");
+ smartlist_add_linecpy(cons1, area, "foo");
+ smartlist_add_linecpy(cons1, area, "r name bbbbbbbbbbbbbbbbbbbbbbbbbbb etc");
+ smartlist_add_linecpy(cons1, area, "bar");
+
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because the base consensus doesn't have its router entries sorted "
+ "properly.");
+
+ /* We have to add a line that is just a dot, return NULL. */
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+
+ smartlist_add_linecpy(cons1, area, "foo1");
+ smartlist_add_linecpy(cons1, area, "foo2");
+
+ smartlist_add_linecpy(cons2, area, "foo1");
+ smartlist_add_linecpy(cons2, area, ".");
+ smartlist_add_linecpy(cons2, area, "foo2");
+
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Cannot generate consensus diff "
+ "because one of the lines to be added is \".\".");
+
+#define MAX_LINE_COUNT (10000)
+ /* Too many lines to be fed to the quadratic-time function. */
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+
+ for (i=0; i < MAX_LINE_COUNT; ++i) smartlist_add_linecpy(cons1, area, "a");
+ for (i=0; i < MAX_LINE_COUNT; ++i) smartlist_add_linecpy(cons1, area, "b");
+
+ mock_clean_saved_logs();
+ diff = gen_ed_diff(cons1, cons2, area);
+
+ tt_ptr_op(NULL, OP_EQ, diff);
+ expect_single_log_msg_containing("Refusing to generate consensus diff "
+ "because we found too few common router ids.");
+
+ /* We have dot lines, but they don't interfere with the script format. */
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+
+ smartlist_add_linecpy(cons1, area, "foo1");
+ smartlist_add_linecpy(cons1, area, ".");
+ smartlist_add_linecpy(cons1, area, ".");
+ smartlist_add_linecpy(cons1, area, "foo2");
+
+ smartlist_add_linecpy(cons2, area, "foo1");
+ smartlist_add_linecpy(cons2, area, ".");
+ smartlist_add_linecpy(cons2, area, "foo2");
+
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ smartlist_free(diff);
+
+ /* Empty diff tests. */
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(0, OP_EQ, smartlist_len(diff));
+ smartlist_free(diff);
+
+ smartlist_add_linecpy(cons1, area, "foo");
+ smartlist_add_linecpy(cons1, area, "bar");
+
+ smartlist_add_linecpy(cons2, area, "foo");
+ smartlist_add_linecpy(cons2, area, "bar");
+
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(0, OP_EQ, smartlist_len(diff));
+ smartlist_free(diff);
+
+ /* Everything is deleted. */
+ smartlist_clear(cons2);
+
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(1, OP_EQ, smartlist_len(diff));
+ tt_str_eq_line("1,2d", smartlist_get(diff, 0));
+
+ smartlist_free(diff);
+
+ /* Everything is added. */
+ diff = gen_ed_diff(cons2, cons1, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(4, OP_EQ, smartlist_len(diff));
+ tt_str_eq_line("0a", smartlist_get(diff, 0));
+ tt_str_eq_line("foo", smartlist_get(diff, 1));
+ tt_str_eq_line("bar", smartlist_get(diff, 2));
+ tt_str_eq_line(".", smartlist_get(diff, 3));
+
+ smartlist_free(diff);
+
+ /* Everything is changed. */
+ smartlist_add_linecpy(cons2, area, "foo2");
+ smartlist_add_linecpy(cons2, area, "bar2");
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(4, OP_EQ, smartlist_len(diff));
+ tt_str_eq_line("1,2c", smartlist_get(diff, 0));
+ tt_str_eq_line("foo2", smartlist_get(diff, 1));
+ tt_str_eq_line("bar2", smartlist_get(diff, 2));
+ tt_str_eq_line(".", smartlist_get(diff, 3));
+
+ smartlist_free(diff);
+
+ /* Test 'a', 'c' and 'd' together. See that it is done in reverse order. */
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+ consensus_split_lines(cons1, "A\nB\nC\nD\nE\n", area);
+ consensus_split_lines(cons2, "A\nC\nO\nE\nU\n", area);
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(7, OP_EQ, smartlist_len(diff));
+ tt_str_eq_line("5a", smartlist_get(diff, 0));
+ tt_str_eq_line("U", smartlist_get(diff, 1));
+ tt_str_eq_line(".", smartlist_get(diff, 2));
+ tt_str_eq_line("4c", smartlist_get(diff, 3));
+ tt_str_eq_line("O", smartlist_get(diff, 4));
+ tt_str_eq_line(".", smartlist_get(diff, 5));
+ tt_str_eq_line("2d", smartlist_get(diff, 6));
+
+ smartlist_free(diff);
+
+ smartlist_clear(cons1);
+ smartlist_clear(cons2);
+ consensus_split_lines(cons1, "B\n", area);
+ consensus_split_lines(cons2, "A\nB\n", area);
+ diff = gen_ed_diff(cons1, cons2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(3, OP_EQ, smartlist_len(diff));
+ tt_str_eq_line("0a", smartlist_get(diff, 0));
+ tt_str_eq_line("A", smartlist_get(diff, 1));
+ tt_str_eq_line(".", smartlist_get(diff, 2));
+
+ /* TODO: small real use-cases, i.e. consensuses. */
+
+ done:
+ teardown_capture_of_logs();
+ smartlist_free(cons1);
+ smartlist_free(cons2);
+ smartlist_free(diff);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_apply_ed_diff(void *arg)
+{
+ smartlist_t *cons1=NULL, *cons2=NULL, *diff=NULL;
+ memarea_t *area = memarea_new();
+ (void)arg;
+ cons1 = smartlist_new();
+ diff = smartlist_new();
+ setup_capture_of_logs(LOG_WARN);
+
+ consensus_split_lines(cons1, "A\nB\nC\nD\nE\n", area);
+
+ /* Command without range. */
+ smartlist_add_linecpy(diff, area, "a");
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ smartlist_clear(diff);
+ expect_single_log_msg_containing("an ed command was missing a line number");
+
+ /* Range without command. */
+ smartlist_add_linecpy(diff, area, "1");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("a line with no ed command was found");
+
+ smartlist_clear(diff);
+
+ /* Range without end. */
+ smartlist_add_linecpy(diff, area, "1,");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command was missing a range "
+ "end line number.");
+
+ smartlist_clear(diff);
+
+ /* Incoherent ranges. */
+ smartlist_add_linecpy(diff, area, "1,1");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an invalid range was found");
+
+ smartlist_clear(diff);
+
+ smartlist_add_linecpy(diff, area, "3,2");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an invalid range was found");
+
+ smartlist_clear(diff);
+
+ /* Unexpected range for add command. */
+ smartlist_add_linecpy(diff, area, "1,2a");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("add lines after a range");
+
+ smartlist_clear(diff);
+
+ /* $ for a non-delete command. */
+ smartlist_add_linecpy(diff, area, "1,$c");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("it wanted to use $ with a command "
+ "other than delete");
+
+ smartlist_clear(diff);
+
+ /* Script is not in reverse order. */
+ smartlist_add_linecpy(diff, area, "1d");
+ smartlist_add_linecpy(diff, area, "3d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("its commands are not properly sorted");
+
+ smartlist_clear(diff);
+
+ /* Script contains unrecognised commands longer than one char. */
+ smartlist_add_linecpy(diff, area, "1foo");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command longer than one char was "
+ "found");
+
+ smartlist_clear(diff);
+
+ /* Script contains unrecognised commands. */
+ smartlist_add_linecpy(diff, area, "1e");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an unrecognised ed command was found");
+
+ smartlist_clear(diff);
+
+ /* Command that should be followed by at least one line and a ".", but
+ * isn't. */
+ smartlist_add_linecpy(diff, area, "0a");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("it has an ed command that tries to "
+ "insert zero lines.");
+
+ /* Now it is followed by a ".", but it inserts zero lines. */
+ smartlist_add_linecpy(diff, area, ".");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("it has an ed command that tries to "
+ "insert zero lines.");
+
+ smartlist_clear(diff);
+
+ /* Now it it inserts something, but has no terminator. */
+ smartlist_add_linecpy(diff, area, "0a");
+ smartlist_add_linecpy(diff, area, "hello");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("lines to be inserted that don't end with "
+ "a \".\".");
+
+ smartlist_clear(diff);
+
+ /* Ranges must be numeric only and cannot contain spaces. */
+ smartlist_add_linecpy(diff, area, "0, 4d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command was missing a range "
+ "end line number.");
+
+ smartlist_clear(diff);
+
+ /* '+' is not a number. */
+ smartlist_add_linecpy(diff, area, "+0,4d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command was missing a line number");
+
+ smartlist_clear(diff);
+
+ /* range duplication */
+ smartlist_add_linecpy(diff, area, "0,4d,5d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command longer than one char was "
+ "found");
+
+ smartlist_clear(diff);
+
+ /* space before command */
+ smartlist_add_linecpy(diff, area, "0,4 d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command longer than one char was "
+ "found");
+
+ smartlist_clear(diff);
+
+ /* space inside number */
+ smartlist_add_linecpy(diff, area, "0,4 5d");
+ mock_clean_saved_logs();
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("an ed command longer than one char was "
+ "found");
+
+ smartlist_clear(diff);
+
+ /* Test appending text, 'a'. */
+ consensus_split_lines(diff, "3a\nU\nO\n.\n0a\nV\n.\n", area);
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_int_op(8, OP_EQ, smartlist_len(cons2));
+ tt_str_eq_line("V", smartlist_get(cons2, 0));
+ tt_str_eq_line("A", smartlist_get(cons2, 1));
+ tt_str_eq_line("B", smartlist_get(cons2, 2));
+ tt_str_eq_line("C", smartlist_get(cons2, 3));
+ tt_str_eq_line("U", smartlist_get(cons2, 4));
+ tt_str_eq_line("O", smartlist_get(cons2, 5));
+ tt_str_eq_line("D", smartlist_get(cons2, 6));
+ tt_str_eq_line("E", smartlist_get(cons2, 7));
+
+ smartlist_clear(diff);
+ smartlist_free(cons2);
+
+ /* Test deleting text, 'd'. */
+ consensus_split_lines(diff, "4d\n1,2d\n", area);
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_int_op(2, OP_EQ, smartlist_len(cons2));
+ tt_str_eq_line("C", smartlist_get(cons2, 0));
+ tt_str_eq_line("E", smartlist_get(cons2, 1));
+
+ smartlist_clear(diff);
+ smartlist_free(cons2);
+
+ /* Test changing text, 'c'. */
+ consensus_split_lines(diff, "4c\nT\nX\n.\n1,2c\nM\n.\n", area);
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_int_op(5, OP_EQ, smartlist_len(cons2));
+ tt_str_eq_line("M", smartlist_get(cons2, 0));
+ tt_str_eq_line("C", smartlist_get(cons2, 1));
+ tt_str_eq_line("T", smartlist_get(cons2, 2));
+ tt_str_eq_line("X", smartlist_get(cons2, 3));
+ tt_str_eq_line("E", smartlist_get(cons2, 4));
+
+ smartlist_clear(diff);
+ smartlist_free(cons2);
+
+ /* Test 'a', 'd' and 'c' together. */
+ consensus_split_lines(diff, "4c\nT\nX\n.\n2d\n0a\nM\n.\n", area);
+ cons2 = apply_ed_diff(cons1, diff, 0);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_int_op(6, OP_EQ, smartlist_len(cons2));
+ tt_str_eq_line("M", smartlist_get(cons2, 0));
+ tt_str_eq_line("A", smartlist_get(cons2, 1));
+ tt_str_eq_line("C", smartlist_get(cons2, 2));
+ tt_str_eq_line("T", smartlist_get(cons2, 3));
+ tt_str_eq_line("X", smartlist_get(cons2, 4));
+ tt_str_eq_line("E", smartlist_get(cons2, 5));
+
+ done:
+ teardown_capture_of_logs();
+ smartlist_free(cons1);
+ smartlist_free(cons2);
+ smartlist_free(diff);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_gen_diff(void *arg)
+{
+ char *cons1_str=NULL, *cons2_str=NULL;
+ smartlist_t *cons1=NULL, *cons2=NULL, *diff=NULL;
+ consensus_digest_t digests1, digests2;
+ memarea_t *area = memarea_new();
+ (void)arg;
+ cons1 = smartlist_new();
+ cons2 = smartlist_new();
+
+ /* Identity hashes are not sorted properly, return NULL.
+ * Already tested in gen_ed_diff, but see that a NULL ed diff also makes
+ * gen_diff return NULL. */
+ cons1_str = tor_strdup(
+ "network-status-version foo\n"
+ "r name bbbbbbbbbbbbbbbbb etc\nfoo\n"
+ "r name aaaaaaaaaaaaaaaaa etc\nbar\n"
+ "directory-signature foo bar\nbar\n"
+ );
+ cons2_str = tor_strdup(
+ "network-status-version foo\n"
+ "r name aaaaaaaaaaaaaaaaa etc\nfoo\n"
+ "r name ccccccccccccccccc etc\nbar\n"
+ "directory-signature foo bar\nbar\n"
+ );
+
+ tt_int_op(0, OP_EQ,
+ consensus_compute_digest_as_signed(cons1_str, &digests1));
+ tt_int_op(0, OP_EQ,
+ consensus_compute_digest(cons2_str, &digests2));
+
+ consensus_split_lines(cons1, cons1_str, area);
+ consensus_split_lines(cons2, cons2_str, area);
+
+ diff = consdiff_gen_diff(cons1, cons2, &digests1, &digests2, area);
+ tt_ptr_op(NULL, OP_EQ, diff);
+
+ /* Check that the headers are done properly. */
+ tor_free(cons1_str);
+ cons1_str = tor_strdup(
+ "network-status-version foo\n"
+ "r name ccccccccccccccccc etc\nfoo\n"
+ "r name eeeeeeeeeeeeeeeee etc\nbar\n"
+ "directory-signature foo bar\nbar\n"
+ );
+ tt_int_op(0, OP_EQ,
+ consensus_compute_digest_as_signed(cons1_str, &digests1));
+ smartlist_clear(cons1);
+ consensus_split_lines(cons1, cons1_str, area);
+ diff = consdiff_gen_diff(cons1, cons2, &digests1, &digests2, area);
+ tt_ptr_op(NULL, OP_NE, diff);
+ tt_int_op(11, OP_EQ, smartlist_len(diff));
+ tt_assert(line_str_eq(smartlist_get(diff, 0),
+ "network-status-diff-version 1"));
+ tt_assert(line_str_eq(smartlist_get(diff, 1), "hash "
+ "95D70F5A3CC65F920AA8B44C4563D7781A082674329661884E19E94B79D539C2 "
+ "7AFECEFA4599BA33D603653E3D2368F648DF4AC4723929B0F7CF39281596B0C1"));
+ tt_assert(line_str_eq(smartlist_get(diff, 2), "6,$d"));
+ tt_assert(line_str_eq(smartlist_get(diff, 3), "3,4c"));
+ tt_assert(line_str_eq(smartlist_get(diff, 4), "bar"));
+ tt_assert(line_str_eq(smartlist_get(diff, 5),
+ "directory-signature foo bar"));
+ tt_assert(line_str_eq(smartlist_get(diff, 6),
+ "."));
+ tt_assert(line_str_eq(smartlist_get(diff, 7), "1a"));
+ tt_assert(line_str_eq(smartlist_get(diff, 8),
+ "r name aaaaaaaaaaaaaaaaa etc"));
+ tt_assert(line_str_eq(smartlist_get(diff, 9), "foo"));
+ tt_assert(line_str_eq(smartlist_get(diff, 10), "."));
+
+ /* TODO: small real use-cases, i.e. consensuses. */
+
+ done:
+ tor_free(cons1_str);
+ tor_free(cons2_str);
+ smartlist_free(cons1);
+ smartlist_free(cons2);
+ smartlist_free(diff);
+ memarea_drop_all(area);
+}
+
+static void
+test_consdiff_apply_diff(void *arg)
+{
+ smartlist_t *cons1=NULL, *diff=NULL;
+ char *cons1_str=NULL, *cons2 = NULL;
+ consensus_digest_t digests1;
+ (void)arg;
+ memarea_t *area = memarea_new();
+ cons1 = smartlist_new();
+ diff = smartlist_new();
+ setup_capture_of_logs(LOG_INFO);
+
+ cons1_str = tor_strdup(
+ "network-status-version foo\n"
+ "r name ccccccccccccccccc etc\nfoo\n"
+ "r name eeeeeeeeeeeeeeeee etc\nbar\n"
+ "directory-signature foo bar\nbar\n"
+ );
+ tt_int_op(0, OP_EQ,
+ consensus_compute_digest(cons1_str, &digests1));
+ consensus_split_lines(cons1, cons1_str, area);
+
+ /* diff doesn't have enough lines. */
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("too short")
+
+ /* first line doesn't match format-version string. */
+ smartlist_add_linecpy(diff, area, "foo-bar");
+ smartlist_add_linecpy(diff, area, "header-line");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("format is not known")
+
+ /* The first word of the second header line is not "hash". */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "word a b");
+ smartlist_add_linecpy(diff, area, "x");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("does not include the necessary digests")
+
+ /* Wrong number of words after "hash". */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash a b c");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("does not include the necessary digests")
+
+ /* base16 digests do not have the expected length. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash aaa bbb");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("includes base16-encoded digests of "
+ "incorrect size")
+
+ /* base16 digests contain non-base16 characters. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ " ????????????????????????????????????????????????????????????????"
+ " ----------------------------------------------------------------");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("includes malformed digests")
+
+ /* Invalid ed diff.
+ * As tested in apply_ed_diff, but check that apply_diff does return NULL if
+ * the ed diff can't be applied. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* sha3 of cons1. */
+ " 06646D6CF563A41869D3B02E73254372AE3140046C5E7D83C9F71E54976AF9B4"
+ /* sha256 of cons2. */
+ " 635D34593020C08E5ECD865F9986E29D50028EFA62843766A8197AD228A7F6AA");
+ smartlist_add_linecpy(diff, area, "foobar");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_single_log_msg_containing("because an ed command was missing a line "
+ "number")
+
+ /* Base consensus doesn't match its digest as found in the diff. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* bogus sha256. */
+ " 3333333333333333333333333333333333333333333333333333333333333333"
+ /* sha256 of cons2. */
+ " 635D34593020C08E5ECD865F9986E29D50028EFA62843766A8197AD228A7F6AA");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_log_msg_containing("base consensus doesn't match the digest "
+ "as found");
+
+ /* Resulting consensus doesn't match its digest as found in the diff. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* sha3 of cons1. */
+ " 06646D6CF563A41869D3B02E73254372AE3140046C5E7D83C9F71E54976AF9B4"
+ /* bogus sha3. */
+ " 3333333333333333333333333333333333333333333333333333333333333333");
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_log_msg_containing("resulting consensus doesn't match the "
+ "digest as found");
+
+#if 0
+ /* XXXX No longer possible, since we aren't using the other algorithm. */
+ /* Resulting consensus digest cannot be computed */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* sha3 of cons1. */
+ " 06646D6CF563A41869D3B02E73254372AE3140046C5E7D83C9F71E54976AF9B4"
+ /* bogus sha3. */
+ " 3333333333333333333333333333333333333333333333333333333333333333");
+ smartlist_add_linecpy(diff, area, "1,2d"); // remove starting line
+ mock_clean_saved_logs();
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_EQ, cons2);
+ expect_log_msg_containing("Could not compute digests of the consensus "
+ "resulting from applying a consensus diff.");
+#endif
+
+ /* Very simple test, only to see that nothing errors. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* sha3 of cons1. */
+ " 06646D6CF563A41869D3B02E73254372AE3140046C5E7D83C9F71E54976AF9B4"
+ /* sha3 of cons2. */
+ " 90A418881B2FCAB3D9E60EE02E4D666D56CFA38F8A3B7AA3E0ADBA530DDA9353");
+ smartlist_add_linecpy(diff, area, "3c");
+ smartlist_add_linecpy(diff, area, "sample");
+ smartlist_add_linecpy(diff, area, ".");
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_str_op(
+ "network-status-version foo\n"
+ "r name ccccccccccccccccc etc\nsample\n"
+ "r name eeeeeeeeeeeeeeeee etc\nbar\n"
+ "directory-signature foo bar\nbar\n", OP_EQ,
+ cons2);
+ tor_free(cons2);
+
+ /* Check that lowercase letters in base16-encoded digests work too. */
+ smartlist_clear(diff);
+ smartlist_add_linecpy(diff, area, "network-status-diff-version 1");
+ smartlist_add_linecpy(diff, area, "hash"
+ /* sha3 of cons1. */
+ " 06646d6cf563a41869d3b02e73254372ae3140046c5e7d83c9f71e54976af9b4"
+ /* sha3 of cons2. */
+ " 90a418881b2fcab3d9e60ee02e4d666d56cfa38f8a3b7aa3e0adba530dda9353");
+ smartlist_add_linecpy(diff, area, "3c");
+ smartlist_add_linecpy(diff, area, "sample");
+ smartlist_add_linecpy(diff, area, ".");
+ cons2 = consdiff_apply_diff(cons1, diff, &digests1);
+ tt_ptr_op(NULL, OP_NE, cons2);
+ tt_str_op(
+ "network-status-version foo\n"
+ "r name ccccccccccccccccc etc\nsample\n"
+ "r name eeeeeeeeeeeeeeeee etc\nbar\n"
+ "directory-signature foo bar\nbar\n", OP_EQ,
+ cons2);
+ tor_free(cons2);
+
+ smartlist_clear(diff);
+
+ done:
+ teardown_capture_of_logs();
+ tor_free(cons1_str);
+ smartlist_free(cons1);
+ smartlist_free(diff);
+ memarea_drop_all(area);
+}
+
+#define CONSDIFF_LEGACY(name) \
+ { #name, test_consdiff_ ## name , 0, NULL, NULL }
+
+struct testcase_t consdiff_tests[] = {
+ CONSDIFF_LEGACY(smartlist_slice),
+ CONSDIFF_LEGACY(smartlist_slice_string_pos),
+ CONSDIFF_LEGACY(lcs_lengths),
+ CONSDIFF_LEGACY(trim_slices),
+ CONSDIFF_LEGACY(set_changed),
+ CONSDIFF_LEGACY(calc_changes),
+ CONSDIFF_LEGACY(get_id_hash),
+ CONSDIFF_LEGACY(is_valid_router_entry),
+ CONSDIFF_LEGACY(next_router),
+ CONSDIFF_LEGACY(base64cmp),
+ CONSDIFF_LEGACY(gen_ed_diff),
+ CONSDIFF_LEGACY(apply_ed_diff),
+ CONSDIFF_LEGACY(gen_diff),
+ CONSDIFF_LEGACY(apply_diff),
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_consdiffmgr.c b/src/test/test_consdiffmgr.c
new file mode 100644
index 0000000000..963a6e427a
--- /dev/null
+++ b/src/test/test_consdiffmgr.c
@@ -0,0 +1,896 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define CONSDIFFMGR_PRIVATE
+
+#include "or.h"
+#include "config.h"
+#include "conscache.h"
+#include "consdiff.h"
+#include "consdiffmgr.h"
+#include "cpuworker.h"
+#include "networkstatus.h"
+#include "routerparse.h"
+#include "workqueue.h"
+
+#include "test.h"
+#include "log_test_helpers.h"
+
+// ============================== Setup/teardown the consdiffmgr
+// These functions get run before/after each test in this module
+
+static void *
+consdiffmgr_test_setup(const struct testcase_t *arg)
+{
+ (void)arg;
+ char *ddir_fname = tor_strdup(get_fname_rnd("datadir_cdm"));
+ tor_free(get_options_mutable()->DataDirectory);
+ get_options_mutable()->DataDirectory = ddir_fname; // now owns the pointer.
+ check_private_dir(ddir_fname, CPD_CREATE, NULL);
+
+ consdiff_cfg_t consdiff_cfg = { 300 };
+ consdiffmgr_configure(&consdiff_cfg);
+ return (void *)1; // must return something non-null.
+}
+static int
+consdiffmgr_test_teardown(const struct testcase_t *arg, void *ignore)
+{
+ (void)arg;
+ (void)ignore;
+ consdiffmgr_free_all();
+ return 1;
+}
+static struct testcase_setup_t setup_diffmgr = {
+ consdiffmgr_test_setup,
+ consdiffmgr_test_teardown
+};
+
+// ============================== NS faking functions
+// These functions are for making quick fake consensus objects and
+// strings that are just good enough for consdiff and consdiffmgr.
+
+static networkstatus_t *
+fake_ns_new(consensus_flavor_t flav, time_t valid_after)
+{
+ networkstatus_t *ns = tor_malloc_zero(sizeof(networkstatus_t));
+ ns->type = NS_TYPE_CONSENSUS;
+ ns->flavor = flav;
+ ns->valid_after = valid_after;
+ return ns;
+}
+
+static char *
+fake_ns_body_new(consensus_flavor_t flav, time_t valid_after)
+{
+ const char *flavor_string = flav == FLAV_NS ? "" : " microdesc";
+ char valid_after_string[ISO_TIME_LEN+1];
+
+ format_iso_time(valid_after_string, valid_after);
+ char *random_stuff = crypto_random_hostname(3, 25, "junk ", "");
+ char *random_stuff2 = crypto_random_hostname(3, 10, "", "");
+
+ char *consensus;
+ tor_asprintf(&consensus,
+ "network-status-version 3%s\n"
+ "vote-status consensus\n"
+ "valid-after %s\n"
+ "r name ccccccccccccccccc etc\nsample\n"
+ "r name eeeeeeeeeeeeeeeee etc\nbar\n"
+ "%s\n"
+ "directory-signature hello-there\n"
+ "directory-signature %s\n",
+ flavor_string,
+ valid_after_string,
+ random_stuff,
+ random_stuff2);
+ tor_free(random_stuff);
+ tor_free(random_stuff2);
+ return consensus;
+}
+
+// ============================== Cpuworker mocking code
+// These mocking functions and types capture the cpuworker calls
+// so we can inspect them and run them in the main thread.
+static smartlist_t *fake_cpuworker_queue = NULL;
+typedef struct fake_work_queue_ent_t {
+ enum workqueue_reply_t (*fn)(void *, void *);
+ void (*reply_fn)(void *);
+ void *arg;
+} fake_work_queue_ent_t;
+static struct workqueue_entry_s *
+mock_cpuworker_queue_work(workqueue_priority_t prio,
+ enum workqueue_reply_t (*fn)(void *, void *),
+ void (*reply_fn)(void *),
+ void *arg)
+{
+ (void) prio;
+
+ if (! fake_cpuworker_queue)
+ fake_cpuworker_queue = smartlist_new();
+
+ fake_work_queue_ent_t *ent = tor_malloc_zero(sizeof(*ent));
+ ent->fn = fn;
+ ent->reply_fn = reply_fn;
+ ent->arg = arg;
+ smartlist_add(fake_cpuworker_queue, ent);
+ return (struct workqueue_entry_s *)ent;
+}
+static int
+mock_cpuworker_run_work(void)
+{
+ if (! fake_cpuworker_queue)
+ return 0;
+ SMARTLIST_FOREACH(fake_cpuworker_queue, fake_work_queue_ent_t *, ent, {
+ enum workqueue_reply_t r = ent->fn(NULL, ent->arg);
+ if (r != WQ_RPL_REPLY)
+ return -1;
+ });
+ return 0;
+}
+static void
+mock_cpuworker_handle_replies(void)
+{
+ if (! fake_cpuworker_queue)
+ return;
+ SMARTLIST_FOREACH(fake_cpuworker_queue, fake_work_queue_ent_t *, ent, {
+ ent->reply_fn(ent->arg);
+ tor_free(ent);
+ });
+ smartlist_free(fake_cpuworker_queue);
+ fake_cpuworker_queue = NULL;
+}
+
+// ============================== Other helpers
+
+static consdiff_status_t
+lookup_diff_from(consensus_cache_entry_t **out,
+ consensus_flavor_t flav,
+ const char *str1)
+{
+ uint8_t digest[DIGEST256_LEN];
+ if (router_get_networkstatus_v3_sha3_as_signed(digest, str1)<0) {
+ TT_FAIL(("Unable to compute sha3-as-signed"));
+ return CONSDIFF_NOT_FOUND;
+ }
+ return consdiffmgr_find_diff_from(out, flav,
+ DIGEST_SHA3_256, digest, sizeof(digest),
+ NO_METHOD);
+}
+
+static int
+lookup_apply_and_verify_diff(consensus_flavor_t flav,
+ const char *str1,
+ const char *str2)
+{
+ consensus_cache_entry_t *ent = NULL;
+ consdiff_status_t status = lookup_diff_from(&ent, flav, str1);
+ if (ent == NULL || status != CONSDIFF_AVAILABLE) {
+ return -1;
+ }
+
+ consensus_cache_entry_incref(ent);
+ size_t size;
+ char *diff_string = NULL;
+ int r = uncompress_or_copy(&diff_string, &size, ent);
+ consensus_cache_entry_decref(ent);
+ if (diff_string == NULL || r < 0)
+ return -1;
+
+ char *applied = consensus_diff_apply(str1, diff_string);
+ tor_free(diff_string);
+ if (applied == NULL)
+ return -1;
+
+ int match = !strcmp(applied, str2);
+ tor_free(applied);
+ return match ? 0 : -1;
+}
+
+static void
+cdm_reload(void)
+{
+ consdiffmgr_free_all();
+ cdm_cache_get();
+ consdiffmgr_rescan();
+}
+
+// ============================== Beginning of tests
+
+#if 0
+static int got_failure = 0;
+static void
+got_assertion_failure(void)
+{
+ ++got_failure;
+}
+
+/* XXXX This test won't work, because there is currently no way to actually
+ * XXXX capture a real assertion failure. */
+static void
+test_consdiffmgr_init_failure(void *arg)
+{
+ (void)arg;
+ // Capture assertions and bugs.
+
+ /* As in ...test_setup, but do not create the datadir. The missing directory
+ * will cause a failure. */
+ char *ddir_fname = tor_strdup(get_fname_rnd("datadir_cdm"));
+ tor_free(get_options_mutable()->DataDirectory);
+ get_options_mutable()->DataDirectory = ddir_fname; // now owns the pointer.
+
+ consdiff_cfg_t consdiff_cfg = { 7200, 300 };
+
+ tor_set_failed_assertion_callback(got_assertion_failure);
+ tor_capture_bugs_(1);
+ consdiffmgr_configure(&consdiff_cfg); // This should fail.
+ tt_int_op(got_failure, OP_EQ, 1);
+ const smartlist_t *bugs = tor_get_captured_bug_log_();
+ tt_int_op(smartlist_len(bugs), OP_EQ, 1);
+
+ done:
+ tor_end_capture_bugs_();
+}
+#endif
+
+static void
+test_consdiffmgr_sha3_helper(void *arg)
+{
+ (void) arg;
+ consensus_cache_t *cache = cdm_cache_get(); // violate abstraction barrier
+ config_line_t *lines = NULL;
+ char *mem_op_hex_tmp = NULL;
+ config_line_prepend(&lines, "good-sha",
+ "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DF00D");
+ config_line_prepend(&lines, "short-sha",
+ "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DF0");
+ config_line_prepend(&lines, "long-sha",
+ "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DF00DF00D");
+ config_line_prepend(&lines, "not-sha",
+ "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DXXXX");
+ consensus_cache_entry_t *ent =
+ consensus_cache_add(cache, lines, (const uint8_t *)"Hi there", 8);
+
+ uint8_t buf[DIGEST256_LEN];
+ tt_int_op(-1, OP_EQ, cdm_entry_get_sha3_value(buf, NULL, "good-sha"));
+ tt_int_op(0, OP_EQ, cdm_entry_get_sha3_value(buf, ent, "good-sha"));
+ test_memeq_hex(buf, "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DF00D");
+
+ tt_int_op(-1, OP_EQ, cdm_entry_get_sha3_value(buf, ent, "missing-sha"));
+ tt_int_op(-2, OP_EQ, cdm_entry_get_sha3_value(buf, ent, "short-sha"));
+ tt_int_op(-2, OP_EQ, cdm_entry_get_sha3_value(buf, ent, "long-sha"));
+ tt_int_op(-2, OP_EQ, cdm_entry_get_sha3_value(buf, ent, "not-sha"));
+
+ done:
+ consensus_cache_entry_decref(ent);
+ config_free_lines(lines);
+ tor_free(mem_op_hex_tmp);
+}
+
+static void
+test_consdiffmgr_add(void *arg)
+{
+ (void) arg;
+ time_t now = approx_time();
+
+ char *body = NULL;
+
+ consensus_cache_entry_t *ent = NULL;
+ networkstatus_t *ns_tmp = fake_ns_new(FLAV_NS, now);
+ const char *dummy = "foo";
+ int r = consdiffmgr_add_consensus(dummy, ns_tmp);
+ tt_int_op(r, OP_EQ, 0);
+
+ /* If we add it again, it won't work */
+ setup_capture_of_logs(LOG_INFO);
+ dummy = "bar";
+ r = consdiffmgr_add_consensus(dummy, ns_tmp);
+ tt_int_op(r, OP_EQ, -1);
+ expect_single_log_msg_containing("We already have a copy of that "
+ "consensus");
+ mock_clean_saved_logs();
+
+ /* But it will work fine if the flavor is different */
+ dummy = "baz";
+ ns_tmp->flavor = FLAV_MICRODESC;
+ r = consdiffmgr_add_consensus(dummy, ns_tmp);
+ tt_int_op(r, OP_EQ, 0);
+
+ /* And it will work fine if the time is different */
+ dummy = "quux";
+ ns_tmp->flavor = FLAV_NS;
+ ns_tmp->valid_after = now - 60;
+ r = consdiffmgr_add_consensus(dummy, ns_tmp);
+ tt_int_op(r, OP_EQ, 0);
+
+ /* If we add one a long long time ago, it will fail. */
+ dummy = "xyzzy";
+ ns_tmp->valid_after = 86400 * 100; /* A few months into 1970 */
+ r = consdiffmgr_add_consensus(dummy, ns_tmp);
+ tt_int_op(r, OP_EQ, -1);
+ expect_log_msg_containing("it's too old.");
+
+ /* Try looking up a consensuses. */
+ ent = cdm_cache_lookup_consensus(FLAV_NS, now-60);
+ tt_assert(ent);
+ consensus_cache_entry_incref(ent);
+ size_t s;
+ r = uncompress_or_copy(&body, &s, ent);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(s, OP_EQ, 4);
+ tt_mem_op(body, OP_EQ, "quux", 4);
+
+ /* Try looking up another entry, but fail */
+ tt_assert(NULL == cdm_cache_lookup_consensus(FLAV_MICRODESC, now-60));
+ tt_assert(NULL == cdm_cache_lookup_consensus(FLAV_NS, now-61));
+
+ done:
+ networkstatus_vote_free(ns_tmp);
+ teardown_capture_of_logs();
+ consensus_cache_entry_decref(ent);
+ tor_free(body);
+}
+
+static void
+test_consdiffmgr_make_diffs(void *arg)
+{
+ (void)arg;
+ networkstatus_t *ns = NULL;
+ char *ns_body = NULL, *md_ns_body = NULL, *md_ns_body_2 = NULL;
+ char *applied = NULL, *diff_text = NULL;
+ time_t now = approx_time();
+ int r;
+ consensus_cache_entry_t *diff = NULL;
+ uint8_t md_ns_sha3[DIGEST256_LEN];
+ consdiff_status_t diff_status;
+
+ MOCK(cpuworker_queue_work, mock_cpuworker_queue_work);
+
+ // Try rescan with no consensuses: shouldn't crash or queue work.
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_EQ, fake_cpuworker_queue);
+
+ // Make two consensuses, 1 hour sec ago.
+ ns = fake_ns_new(FLAV_NS, now-3600);
+ ns_body = fake_ns_body_new(FLAV_NS, now-3600);
+ r = consdiffmgr_add_consensus(ns_body, ns);
+ networkstatus_vote_free(ns);
+ tor_free(ns_body);
+ tt_int_op(r, OP_EQ, 0);
+
+ ns = fake_ns_new(FLAV_MICRODESC, now-3600);
+ md_ns_body = fake_ns_body_new(FLAV_MICRODESC, now-3600);
+ r = consdiffmgr_add_consensus(md_ns_body, ns);
+ router_get_networkstatus_v3_sha3_as_signed(md_ns_sha3, md_ns_body);
+ networkstatus_vote_free(ns);
+ tt_int_op(r, OP_EQ, 0);
+
+ // No diffs will be generated.
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_EQ, fake_cpuworker_queue);
+
+ // Add a MD consensus from 45 minutes ago. This should cause one diff
+ // worth of work to get queued.
+ ns = fake_ns_new(FLAV_MICRODESC, now-45*60);
+ md_ns_body_2 = fake_ns_body_new(FLAV_MICRODESC, now-45*60);
+ r = consdiffmgr_add_consensus(md_ns_body_2, ns);
+ networkstatus_vote_free(ns);
+ tt_int_op(r, OP_EQ, 0);
+
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ tt_int_op(1, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ diff_status = consdiffmgr_find_diff_from(&diff, FLAV_MICRODESC,
+ DIGEST_SHA3_256,
+ md_ns_sha3, DIGEST256_LEN,
+ NO_METHOD);
+ tt_int_op(CONSDIFF_IN_PROGRESS, OP_EQ, diff_status);
+
+ // Now run that process and get the diff.
+ r = mock_cpuworker_run_work();
+ tt_int_op(r, OP_EQ, 0);
+ mock_cpuworker_handle_replies();
+
+ // At this point we should be able to get that diff.
+ diff_status = consdiffmgr_find_diff_from(&diff, FLAV_MICRODESC,
+ DIGEST_SHA3_256,
+ md_ns_sha3, DIGEST256_LEN,
+ NO_METHOD);
+ tt_int_op(CONSDIFF_AVAILABLE, OP_EQ, diff_status);
+ tt_assert(diff);
+
+ /* Make sure applying the diff actually works */
+ const uint8_t *diff_body;
+ size_t diff_size;
+ r = consensus_cache_entry_get_body(diff, &diff_body, &diff_size);
+ tt_int_op(r, OP_EQ, 0);
+ diff_text = tor_memdup_nulterm(diff_body, diff_size);
+ applied = consensus_diff_apply(md_ns_body, diff_text);
+ tt_assert(applied);
+ tt_str_op(applied, OP_EQ, md_ns_body_2);
+
+ /* Rescan again: no more work to do. */
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_EQ, fake_cpuworker_queue);
+
+ done:
+ tor_free(md_ns_body);
+ tor_free(md_ns_body_2);
+ tor_free(diff_text);
+ tor_free(applied);
+}
+
+static void
+test_consdiffmgr_diff_rules(void *arg)
+{
+ (void)arg;
+#define N 6
+ char *md_body[N], *ns_body[N];
+ networkstatus_t *md_ns[N], *ns_ns[N];
+ int i;
+
+ MOCK(cpuworker_queue_work, mock_cpuworker_queue_work);
+
+ /* Create a bunch of consensus things at 15-second intervals. */
+ time_t start = approx_time() - 120;
+ for (i = 0; i < N; ++i) {
+ time_t when = start + i * 15;
+ md_body[i] = fake_ns_body_new(FLAV_MICRODESC, when);
+ ns_body[i] = fake_ns_body_new(FLAV_NS, when);
+ md_ns[i] = fake_ns_new(FLAV_MICRODESC, when);
+ ns_ns[i] = fake_ns_new(FLAV_NS, when);
+ }
+
+ /* For the MD consensuses: add 4 of them, and make sure that
+ * diffs are created to one consensus (the most recent) only. */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[1], md_ns[1]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[2], md_ns[2]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[3], md_ns[3]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[4], md_ns[4]));
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ tt_int_op(3, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ mock_cpuworker_handle_replies();
+ tt_ptr_op(NULL, OP_EQ, fake_cpuworker_queue);
+
+ /* For the NS consensuses: add 3, generate, and add one older one and
+ * make sure that older one is the only one whose diff is generated */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(ns_body[0], ns_ns[0]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(ns_body[1], ns_ns[1]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(ns_body[5], ns_ns[5]));
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ tt_int_op(2, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ mock_cpuworker_handle_replies();
+
+ /* At this point, we should actually have working diffs! */
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[0], ns_body[5]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[1], ns_body[5]));
+
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[1], md_body[4]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[2], md_body[4]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[3], md_body[4]));
+
+ /* Self-to-self diff won't be present */
+ consensus_cache_entry_t *ent;
+ tt_int_op(CONSDIFF_NOT_FOUND, OP_EQ,
+ lookup_diff_from(&ent, FLAV_NS, ns_body[5]));
+ /* No diff from 2 has been added yet */
+ tt_int_op(CONSDIFF_NOT_FOUND, OP_EQ,
+ lookup_diff_from(&ent, FLAV_NS, ns_body[2]));
+ /* No diff arriving at old things. */
+ tt_int_op(-1, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[1], md_body[2]));
+ /* No backwards diff */
+ tt_int_op(-1, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[4], md_body[3]));
+
+ /* Now, an update: add number 2 and make sure it's the only one whose diff
+ * is regenerated. */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(ns_body[2], ns_ns[2]));
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ tt_int_op(1, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ mock_cpuworker_handle_replies();
+
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[2], ns_body[5]));
+
+ /* Finally: reload, and make sure that the information is still indexed */
+ cdm_reload();
+
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[0], ns_body[5]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[2], ns_body[5]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_NS, ns_body[1], ns_body[5]));
+
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[1], md_body[4]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[2], md_body[4]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[3], md_body[4]));
+
+ done:
+ for (i = 0; i < N; ++i) {
+ tor_free(md_body[i]);
+ tor_free(ns_body[i]);
+ networkstatus_vote_free(md_ns[i]);
+ networkstatus_vote_free(ns_ns[i]);
+ }
+ UNMOCK(cpuworker_queue_work);
+#undef N
+}
+
+static void
+test_consdiffmgr_diff_failure(void *arg)
+{
+ (void)arg;
+ MOCK(cpuworker_queue_work, mock_cpuworker_queue_work);
+
+ /* We're going to make sure that if we have a bogus request where
+ * we can't actually compute a diff, the world must not end. */
+ networkstatus_t *ns1 = NULL;
+ networkstatus_t *ns2 = NULL;
+ int r;
+
+ ns1 = fake_ns_new(FLAV_NS, approx_time()-100);
+ ns2 = fake_ns_new(FLAV_NS, approx_time()-50);
+ r = consdiffmgr_add_consensus("foo bar baz\n", ns1);
+ tt_int_op(r, OP_EQ, 0);
+ // We refuse to compute a diff to or from a line holding only a single dot.
+ // We can add it here, though.
+ r = consdiffmgr_add_consensus("foo bar baz\n.\n.\n", ns2);
+ tt_int_op(r, OP_EQ, 0);
+
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ setup_capture_of_logs(LOG_WARN);
+ tt_int_op(1, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ expect_single_log_msg_containing("one of the lines to be added is \".\".");
+ mock_clean_saved_logs();
+ mock_cpuworker_handle_replies();
+ expect_single_log_msg_containing("Worker was unable to compute consensus "
+ "diff from ");
+
+ /* Make sure the diff is not present */
+ consensus_cache_entry_t *ent;
+ tt_int_op(CONSDIFF_NOT_FOUND, OP_EQ,
+ lookup_diff_from(&ent, FLAV_NS, "foo bar baz\n"));
+
+ done:
+ teardown_capture_of_logs();
+ UNMOCK(cpuworker_queue_work);
+ networkstatus_vote_free(ns1);
+ networkstatus_vote_free(ns2);
+}
+
+static void
+test_consdiffmgr_diff_pending(void *arg)
+{
+#define N 3
+ (void)arg;
+ char *md_body[N];
+ networkstatus_t *md_ns[N];
+ time_t start = approx_time() - 120;
+ int i;
+ for (i = 0; i < N; ++i) {
+ time_t when = start + i * 30;
+ md_body[i] = fake_ns_body_new(FLAV_MICRODESC, when);
+ md_ns[i] = fake_ns_new(FLAV_MICRODESC, when);
+ }
+
+ MOCK(cpuworker_queue_work, mock_cpuworker_queue_work);
+
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[1], md_ns[1]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[2], md_ns[2]));
+ /* Make a diff */
+ consdiffmgr_rescan();
+ tt_int_op(1, OP_EQ, smartlist_len(fake_cpuworker_queue));
+
+ /* Look it up. Is it pending? */
+ consensus_cache_entry_t *ent = NULL;
+ consdiff_status_t diff_status;
+ diff_status = lookup_diff_from(&ent, FLAV_MICRODESC, md_body[1]);
+ tt_int_op(CONSDIFF_IN_PROGRESS, OP_EQ, diff_status);
+ tt_ptr_op(ent, OP_EQ, NULL);
+
+ /* Add another old consensus. only one new diff should launch! */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[0], md_ns[0]));
+ consdiffmgr_rescan();
+ tt_int_op(2, OP_EQ, smartlist_len(fake_cpuworker_queue));
+
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ mock_cpuworker_handle_replies();
+
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[0], md_body[2]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[1], md_body[2]));
+
+ done:
+ UNMOCK(cpuworker_queue_work);
+ for (i = 0; i < N; ++i) {
+ tor_free(md_body[i]);
+ networkstatus_vote_free(md_ns[i]);
+ }
+#undef N
+}
+
+static void
+test_consdiffmgr_cleanup_old(void *arg)
+{
+ (void)arg;
+ config_line_t *labels = NULL;
+ consensus_cache_entry_t *ent = NULL;
+ consensus_cache_t *cache = cdm_cache_get(); // violate abstraction barrier
+
+ /* This item will be will be cleanable because it has a valid-after
+ * time far in the past. */
+ config_line_prepend(&labels, "document-type", "confribble-blarg");
+ config_line_prepend(&labels, "consensus-valid-after",
+ "1980-10-10T10:10:10");
+ ent = consensus_cache_add(cache, labels, (const uint8_t*)"Foo", 3);
+ tt_assert(ent);
+ consensus_cache_entry_decref(ent);
+
+ setup_capture_of_logs(LOG_DEBUG);
+ tt_int_op(1, OP_EQ, consdiffmgr_cleanup());
+ expect_log_msg_containing("Deleting entry because its consensus-valid-"
+ "after value (1980-10-10T10:10:10) was too old");
+
+ done:
+ teardown_capture_of_logs();
+ config_free_lines(labels);
+}
+
+static void
+test_consdiffmgr_cleanup_bad_valid_after(void *arg)
+{
+ /* This will seem cleanable, but isn't, because its valid-after time is
+ * misformed. */
+
+ (void)arg;
+ config_line_t *labels = NULL;
+ consensus_cache_entry_t *ent = NULL;
+ consensus_cache_t *cache = cdm_cache_get(); // violate abstraction barrier
+
+ config_line_prepend(&labels, "document-type", "consensus");
+ config_line_prepend(&labels, "consensus-valid-after",
+ "whan that aprille with his shoures soote"); // (~1385?)
+ ent = consensus_cache_add(cache, labels, (const uint8_t*)"Foo", 3);
+ tt_assert(ent);
+ consensus_cache_entry_decref(ent);
+
+ setup_capture_of_logs(LOG_DEBUG);
+ tt_int_op(0, OP_EQ, consdiffmgr_cleanup());
+ expect_log_msg_containing("Ignoring entry because its consensus-valid-"
+ "after value (\"whan that aprille with his "
+ "shoures soote\") was unparseable");
+
+ done:
+ teardown_capture_of_logs();
+ config_free_lines(labels);
+}
+
+static void
+test_consdiffmgr_cleanup_no_valid_after(void *arg)
+{
+ (void)arg;
+ config_line_t *labels = NULL;
+ consensus_cache_entry_t *ent = NULL;
+ consensus_cache_t *cache = cdm_cache_get(); // violate abstraction barrier
+
+ /* This item will be will be uncleanable because it has no recognized
+ * valid-after. */
+ config_line_prepend(&labels, "document-type", "consensus");
+ config_line_prepend(&labels, "confrooble-voolid-oofter",
+ "2010-10-10T09:08:07");
+ ent = consensus_cache_add(cache, labels, (const uint8_t*)"Foo", 3);
+ tt_assert(ent);
+ consensus_cache_entry_decref(ent);
+
+ setup_capture_of_logs(LOG_DEBUG);
+ tt_int_op(0, OP_EQ, consdiffmgr_cleanup());
+ expect_log_msg_containing("Ignoring entry because it had no consensus-"
+ "valid-after label");
+
+ done:
+ teardown_capture_of_logs();
+ config_free_lines(labels);
+}
+
+static void
+test_consdiffmgr_cleanup_old_diffs(void *arg)
+{
+ (void)arg;
+#define N 4
+ char *md_body[N];
+ networkstatus_t *md_ns[N];
+ int i;
+ consensus_cache_entry_t *hold_ent = NULL, *ent;
+
+ /* Make sure that the cleanup function removes diffs to the not-most-recent
+ * consensus. */
+
+ MOCK(cpuworker_queue_work, mock_cpuworker_queue_work);
+
+ /* Create a bunch of consensus things at 15-second intervals. */
+ time_t start = approx_time() - 120;
+ for (i = 0; i < N; ++i) {
+ time_t when = start + i * 15;
+ md_body[i] = fake_ns_body_new(FLAV_MICRODESC, when);
+ md_ns[i] = fake_ns_new(FLAV_MICRODESC, when);
+ }
+
+ /* add the first 3. */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[0], md_ns[0]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[1], md_ns[1]));
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[2], md_ns[2]));
+ /* Make diffs. */
+ consdiffmgr_rescan();
+ tt_ptr_op(NULL, OP_NE, fake_cpuworker_queue);
+ tt_int_op(2, OP_EQ, smartlist_len(fake_cpuworker_queue));
+ tt_int_op(0, OP_EQ, mock_cpuworker_run_work());
+ mock_cpuworker_handle_replies();
+ tt_ptr_op(NULL, OP_EQ, fake_cpuworker_queue);
+
+ /* Nothing is deletable now */
+ tt_int_op(0, OP_EQ, consdiffmgr_cleanup());
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[0], md_body[2]));
+ tt_int_op(0, OP_EQ,
+ lookup_apply_and_verify_diff(FLAV_MICRODESC, md_body[1], md_body[2]));
+
+ tt_int_op(CONSDIFF_AVAILABLE, OP_EQ,
+ lookup_diff_from(&hold_ent, FLAV_MICRODESC, md_body[1]));
+ consensus_cache_entry_incref(hold_ent); // incref, so it is preserved.
+
+ /* Now add an even-more-recent consensus; this should make all previous
+ * diffs deletable, and make delete */
+ tt_int_op(0, OP_EQ, consdiffmgr_add_consensus(md_body[3], md_ns[3]));
+ tt_int_op(2 * n_diff_compression_methods() +
+ (n_consensus_compression_methods() - 1) , OP_EQ,
+ consdiffmgr_cleanup());
+
+ tt_int_op(CONSDIFF_NOT_FOUND, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[0]));
+ /* This one is marked deletable but still in the hashtable */
+ tt_int_op(CONSDIFF_AVAILABLE, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[1]));
+ tt_int_op(CONSDIFF_NOT_FOUND, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[2]));
+
+ /* Everything should be valid at this point */
+ tt_int_op(0, OP_EQ, consdiffmgr_validate());
+
+ /* And if we recan NOW, we'll purge the hashtable of the entries,
+ * and launch attempts to generate new ones */
+ consdiffmgr_rescan();
+ tt_int_op(CONSDIFF_IN_PROGRESS, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[0]));
+ tt_int_op(CONSDIFF_IN_PROGRESS, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[1]));
+ tt_int_op(CONSDIFF_IN_PROGRESS, OP_EQ,
+ lookup_diff_from(&ent, FLAV_MICRODESC, md_body[2]));
+
+ /* We're still holding on to this, though, so we can still map it! */
+ const uint8_t *t1 = NULL;
+ size_t s;
+ int r = consensus_cache_entry_get_body(hold_ent, &t1, &s);
+ tt_int_op(r, OP_EQ, 0);
+ tt_assert(t1);
+
+ done:
+ for (i = 0; i < N; ++i) {
+ tor_free(md_body[i]);
+ networkstatus_vote_free(md_ns[i]);
+ }
+ consensus_cache_entry_decref(hold_ent);
+ UNMOCK(cpuworker_queue_work);
+#undef N
+}
+
+static void
+test_consdiffmgr_validate(void *arg)
+{
+ (void)arg;
+ config_line_t *lines = NULL;
+ consensus_cache_entry_t *ent = NULL;
+ consensus_cache_t *cache = cdm_cache_get(); // violate abstraction barrier
+ smartlist_t *vals = smartlist_new();
+
+ /* Put these: objects in the cache: one with a good sha3, one with bad sha3,
+ * one with a wrong sha3, and one with no sha3. */
+ config_line_prepend(&lines, "id", "wrong sha3");
+ config_line_prepend(&lines, "sha3-digest",
+ "F00DF00DF00DF00DF00DF00DF00DF00D"
+ "F00DF00DF00DF00DF00DF00DF00DF00D");
+ ent = consensus_cache_add(cache, lines, (const uint8_t *)"Hi there", 8);
+ consensus_cache_entry_decref(ent);
+ config_free_lines(lines);
+ lines = NULL;
+
+ config_line_prepend(&lines, "id", "bad sha3");
+ config_line_prepend(&lines, "sha3-digest",
+ "now is the winter of our dicotheque");
+ ent = consensus_cache_add(cache, lines, (const uint8_t *)"Hi there", 8);
+ consensus_cache_entry_decref(ent);
+ config_free_lines(lines);
+ lines = NULL;
+
+ config_line_prepend(&lines, "id", "no sha3");
+ ent = consensus_cache_add(cache, lines, (const uint8_t *)"Hi there", 8);
+ consensus_cache_entry_decref(ent);
+ config_free_lines(lines);
+ lines = NULL;
+
+ config_line_prepend(&lines, "id", "good sha3");
+ config_line_prepend(&lines, "sha3-digest",
+ "8d8b1998616cd6b4c4055da8d38728dc"
+ "93c758d4131a53c7d81aa6337dee1c05");
+ ent = consensus_cache_add(cache, lines, (const uint8_t *)"Hi there", 8);
+ consensus_cache_entry_decref(ent);
+ config_free_lines(lines);
+ lines = NULL;
+
+ cdm_reload();
+ cache = cdm_cache_get();
+ tt_int_op(1, OP_EQ, consdiffmgr_validate());
+
+ consensus_cache_find_all(vals, cache, "id", "good sha3");
+ tt_int_op(smartlist_len(vals), OP_EQ, 1);
+ smartlist_clear(vals);
+
+ consensus_cache_find_all(vals, cache, "id", "no sha3");
+ tt_int_op(smartlist_len(vals), OP_EQ, 1);
+ smartlist_clear(vals);
+
+ consensus_cache_find_all(vals, cache, "id", "wrong sha3");
+ tt_int_op(smartlist_len(vals), OP_EQ, 0);
+ consensus_cache_find_all(vals, cache, "id", "bad sha3");
+ tt_int_op(smartlist_len(vals), OP_EQ, 0);
+
+ done:
+ smartlist_free(vals);
+}
+
+#define TEST(name) \
+ { #name, test_consdiffmgr_ ## name , TT_FORK, &setup_diffmgr, NULL }
+
+struct testcase_t consdiffmgr_tests[] = {
+#if 0
+ { "init_failure", test_consdiffmgr_init_failure, TT_FORK, NULL, NULL },
+#endif
+ TEST(sha3_helper),
+ TEST(add),
+ TEST(make_diffs),
+ TEST(diff_rules),
+ TEST(diff_failure),
+ TEST(diff_pending),
+ TEST(cleanup_old),
+ TEST(cleanup_bad_valid_after),
+ TEST(cleanup_no_valid_after),
+ TEST(cleanup_old_diffs),
+ TEST(validate),
+
+ // XXXX Test: non-cacheing cases of replyfn().
+
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index 41f3f873de..54484a2a91 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_controller.c b/src/test/test_controller.c
index d9c0a1eaac..592f91a988 100644
--- a/src/test/test_controller.c
+++ b/src/test/test_controller.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONTROL_PRIVATE
@@ -109,6 +109,45 @@ test_add_onion_helper_keyarg(void *arg)
}
static void
+test_getinfo_helper_onion(void *arg)
+{
+ (void)arg;
+ control_connection_t dummy;
+ /* Get results out */
+ char *answer = NULL;
+ const char *errmsg = NULL;
+ char *service_id = NULL;
+ int rt = 0;
+
+ dummy.ephemeral_onion_services = NULL;
+
+ /* successfully get an empty answer */
+ rt = getinfo_helper_onions(&dummy, "onions/current", &answer, &errmsg);
+ tt_assert(rt == 0);
+ tt_str_op(answer, OP_EQ, "");
+ tor_free(answer);
+
+ /* successfully get an empty answer */
+ rt = getinfo_helper_onions(&dummy, "onions/detached", &answer, &errmsg);
+ tt_assert(rt == 0);
+ tt_str_op(answer, OP_EQ, "");
+ tor_free(answer);
+
+ /* get an answer for one onion service */
+ service_id = tor_strdup("dummy_onion_id");
+ dummy.ephemeral_onion_services = smartlist_new();
+ smartlist_add(dummy.ephemeral_onion_services, service_id);
+ rt = getinfo_helper_onions(&dummy, "onions/current", &answer, &errmsg);
+ tt_assert(rt == 0);
+ tt_str_op(answer, OP_EQ, "dummy_onion_id");
+
+ done:
+ tor_free(answer);
+ tor_free(service_id);
+ smartlist_free(dummy.ephemeral_onion_services);
+}
+
+static void
test_rend_service_parse_port_config(void *arg)
{
const char *sep = ",";
@@ -1332,6 +1371,7 @@ test_download_status_bridge(void *arg)
struct testcase_t controller_tests[] = {
{ "add_onion_helper_keyarg", test_add_onion_helper_keyarg, 0, NULL, NULL },
+ { "getinfo_helper_onion", test_getinfo_helper_onion, 0, NULL, NULL },
{ "rend_service_parse_port_config", test_rend_service_parse_port_config, 0,
NULL, NULL },
{ "add_onion_helper_clientauth", test_add_onion_helper_clientauth, 0, NULL,
diff --git a/src/test/test_controller_events.c b/src/test/test_controller_events.c
index 11e1e3dc8f..901ad7ab3d 100644
--- a/src/test/test_controller_events.c
+++ b/src/test/test_controller_events.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONNECTION_PRIVATE
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index d66ddccd4f..75cd30ebb5 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -15,9 +15,6 @@
#include "crypto_ed25519.h"
#include "ed25519_vectors.inc"
-#include <openssl/evp.h>
-#include <openssl/rand.h>
-
/** Run unit tests for Diffie-Hellman functionality. */
static void
test_crypto_dh(void *arg)
@@ -331,38 +328,6 @@ test_crypto_rng_strongest(void *arg)
#undef N
}
-/* Test for rectifying openssl RAND engine. */
-static void
-test_crypto_rng_engine(void *arg)
-{
- (void)arg;
- RAND_METHOD dummy_method;
- memset(&dummy_method, 0, sizeof(dummy_method));
-
- /* We should be a no-op if we're already on RAND_OpenSSL */
- tt_int_op(0, ==, crypto_force_rand_ssleay());
- tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
-
- /* We should correct the method if it's a dummy. */
- RAND_set_rand_method(&dummy_method);
-#ifdef LIBRESSL_VERSION_NUMBER
- /* On libressl, you can't override the RNG. */
- tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
- tt_int_op(0, ==, crypto_force_rand_ssleay());
-#else
- tt_assert(RAND_get_rand_method() == &dummy_method);
- tt_int_op(1, ==, crypto_force_rand_ssleay());
-#endif
- tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
-
- /* Make sure we aren't calling dummy_method */
- crypto_rand((void *) &dummy_method, sizeof(dummy_method));
- crypto_rand((void *) &dummy_method, sizeof(dummy_method));
-
- done:
- ;
-}
-
/** Run unit tests for our AES128 functionality */
static void
test_crypto_aes128(void *arg)
@@ -1397,6 +1362,46 @@ test_crypto_pk_base64(void *arg)
tor_free(encoded);
}
+static void
+test_crypto_pk_pem_encrypted(void *arg)
+{
+ crypto_pk_t *pk = NULL;
+ (void)arg;
+
+ pk = crypto_pk_new();
+ /* we need to make sure that we won't stall if somebody gives us a key
+ that's encrypted with a password. */
+ {
+ const char *s =
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "Proc-Type: 4,ENCRYPTED\n"
+ "DEK-Info: AES-128-CBC,EFA86BB9D2AB11E80B4E3DCD97782B16\n"
+ "\n"
+ "Z2Je4m0cFepc6coQkVbGcvNCHxTf941N2XYEVE6kn0CqWqoUH4tlwV6for5D91np\n"
+ "5NiEFTkWj31EhrvrYcuiJtQ/iEbABxZULFWFeJ058rb+1izBz5rScqnEacIS/3Go\n"
+ "YntnROBDwiKmUnue6PJVYg==\n"
+ "-----END RSA PRIVATE KEY-----\n";
+ tt_int_op(-1, OP_EQ,
+ crypto_pk_read_private_key_from_string(pk, s, strlen(s)));
+ }
+ /* For fun, make sure we aren't hit by OpenSSL issue
+ https://github.com/openssl/openssl/issues/6347 , where we get in trouble
+ if a cipher doesn't use an IV.
+ */
+ {
+ const char *s =
+ "-----BEGIN RSA PUBLIC KEY-----\n"
+ "Proc-Type:4,ENCRYPTED\n"
+ "DEK-Info:des-ede -\n"
+ "\n"
+ "iRqK\n"
+ "-----END RSA PUBLIC KEY-----\n";
+ tt_int_op(-1, OP_EQ,
+ crypto_pk_read_public_key_from_string(pk, s, strlen(s)));
+ }
+ done:
+ crypto_pk_free(pk);
+}
#ifdef HAVE_TRUNCATE
#define do_truncate truncate
#else
@@ -1477,28 +1482,6 @@ test_crypto_digest_names(void *arg)
;
}
-#ifndef OPENSSL_1_1_API
-#define EVP_ENCODE_CTX_new() tor_malloc_zero(sizeof(EVP_ENCODE_CTX))
-#define EVP_ENCODE_CTX_free(ctx) tor_free(ctx)
-#endif
-
-/** Encode src into dest with OpenSSL's EVP Encode interface, returning the
- * length of the encoded data in bytes.
- */
-static int
-base64_encode_evp(char *dest, char *src, size_t srclen)
-{
- const unsigned char *s = (unsigned char*)src;
- EVP_ENCODE_CTX *ctx = EVP_ENCODE_CTX_new();
- int len, ret;
-
- EVP_EncodeInit(ctx);
- EVP_EncodeUpdate(ctx, (unsigned char *)dest, &len, s, (int)srclen);
- EVP_EncodeFinal(ctx, (unsigned char *)(dest + len), &ret);
- EVP_ENCODE_CTX_free(ctx);
- return ret+ len;
-}
-
/** Run unit tests for misc crypto formatting functionality (base64, base32,
* fingerprints, etc) */
static void
@@ -1527,7 +1510,7 @@ test_crypto_formats(void *arg)
tt_int_op(i, OP_GE, 0);
tt_int_op(i, OP_EQ, strlen(data2));
tt_assert(! strchr(data2, '='));
- j = base64_decode_nopad((uint8_t*)data3, 1024, data2, i);
+ j = base64_decode(data3, 1024, data2, i);
tt_int_op(j, OP_EQ, idx);
tt_mem_op(data3,OP_EQ, data1, idx);
}
@@ -1554,20 +1537,6 @@ test_crypto_formats(void *arg)
tt_assert(digest_from_base64(data3, "###") < 0);
- for (i = 0; i < 256; i++) {
- /* Test the multiline format Base64 encoder with 0 .. 256 bytes of
- * output against OpenSSL.
- */
- const size_t enclen = base64_encode_size(i, BASE64_ENCODE_MULTILINE);
- data1[i] = i;
- j = base64_encode(data2, 1024, data1, i, BASE64_ENCODE_MULTILINE);
- tt_int_op(j, OP_EQ, enclen);
- j = base64_encode_evp(data3, data1, i);
- tt_int_op(j, OP_EQ, enclen);
- tt_mem_op(data2, OP_EQ, data3, enclen);
- tt_int_op(j, OP_EQ, strlen(data2));
- }
-
/* Encoding SHA256 */
crypto_rand(data2, DIGEST256_LEN);
memset(data2, 100, 1024);
@@ -2941,7 +2910,6 @@ struct testcase_t crypto_tests[] = {
CRYPTO_LEGACY(formats),
CRYPTO_LEGACY(rng),
{ "rng_range", test_crypto_rng_range, 0, NULL, NULL },
- { "rng_engine", test_crypto_rng_engine, TT_FORK, NULL, NULL },
{ "rng_strongest", test_crypto_rng_strongest, TT_FORK, NULL, NULL },
{ "rng_strongest_nosyscall", test_crypto_rng_strongest, TT_FORK,
&passthrough_setup, (void*)"nosyscall" },
@@ -2962,6 +2930,7 @@ struct testcase_t crypto_tests[] = {
CRYPTO_LEGACY(pk),
{ "pk_fingerprints", test_crypto_pk_fingerprints, TT_FORK, NULL, NULL },
{ "pk_base64", test_crypto_pk_base64, TT_FORK, NULL, NULL },
+ { "pk_pem_encrypted", test_crypto_pk_pem_encrypted, TT_FORK, NULL, NULL },
CRYPTO_LEGACY(digests),
{ "digest_names", test_crypto_digest_names, 0, NULL, NULL },
{ "sha3", test_crypto_sha3, TT_FORK, NULL, NULL},
diff --git a/src/test/test_crypto_openssl.c b/src/test/test_crypto_openssl.c
new file mode 100644
index 0000000000..3d7d2b4639
--- /dev/null
+++ b/src/test/test_crypto_openssl.c
@@ -0,0 +1,107 @@
+/* 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_PRIVATE
+
+#include "crypto.h"
+#include "util.h"
+#include "util_format.h"
+#include "compat.h"
+#include "test.h"
+
+#include <openssl/evp.h>
+#include <openssl/rand.h>
+#include "compat_openssl.h"
+
+/* Test for rectifying openssl RAND engine. */
+static void
+test_crypto_rng_engine(void *arg)
+{
+ (void)arg;
+ RAND_METHOD dummy_method;
+ memset(&dummy_method, 0, sizeof(dummy_method));
+
+ /* We should be a no-op if we're already on RAND_OpenSSL */
+ tt_int_op(0, ==, crypto_force_rand_ssleay());
+ tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
+
+ /* We should correct the method if it's a dummy. */
+ RAND_set_rand_method(&dummy_method);
+#ifdef LIBRESSL_VERSION_NUMBER
+ /* On libressl, you can't override the RNG. */
+ tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
+ tt_int_op(0, ==, crypto_force_rand_ssleay());
+#else
+ tt_assert(RAND_get_rand_method() == &dummy_method);
+ tt_int_op(1, ==, crypto_force_rand_ssleay());
+#endif
+ tt_assert(RAND_get_rand_method() == RAND_OpenSSL());
+
+ /* Make sure we aren't calling dummy_method */
+ crypto_rand((void *) &dummy_method, sizeof(dummy_method));
+ crypto_rand((void *) &dummy_method, sizeof(dummy_method));
+
+ done:
+ ;
+}
+
+#ifndef OPENSSL_1_1_API
+#define EVP_ENCODE_CTX_new() tor_malloc_zero(sizeof(EVP_ENCODE_CTX))
+#define EVP_ENCODE_CTX_free(ctx) tor_free(ctx)
+#endif
+
+/** Encode src into dest with OpenSSL's EVP Encode interface, returning the
+ * length of the encoded data in bytes.
+ */
+static int
+base64_encode_evp(char *dest, char *src, size_t srclen)
+{
+ const unsigned char *s = (unsigned char*)src;
+ EVP_ENCODE_CTX *ctx = EVP_ENCODE_CTX_new();
+ int len, ret;
+
+ EVP_EncodeInit(ctx);
+ EVP_EncodeUpdate(ctx, (unsigned char *)dest, &len, s, (int)srclen);
+ EVP_EncodeFinal(ctx, (unsigned char *)(dest + len), &ret);
+ EVP_ENCODE_CTX_free(ctx);
+ return ret+ len;
+}
+
+static void
+test_crypto_base64_encode_matches(void *arg)
+{
+ (void)arg;
+ int i, j;
+ char data1[1024];
+ char data2[1024];
+ char data3[1024];
+
+ for (i = 0; i < 256; i++) {
+ /* Test the multiline format Base64 encoder with 0 .. 256 bytes of
+ * output against OpenSSL.
+ */
+ const size_t enclen = base64_encode_size(i, BASE64_ENCODE_MULTILINE);
+ data1[i] = i;
+ j = base64_encode(data2, 1024, data1, i, BASE64_ENCODE_MULTILINE);
+ tt_int_op(j, OP_EQ, enclen);
+ j = base64_encode_evp(data3, data1, i);
+ tt_int_op(j, OP_EQ, enclen);
+ tt_mem_op(data2, OP_EQ, data3, enclen);
+ tt_int_op(j, OP_EQ, strlen(data2));
+ }
+
+ done:
+ ;
+}
+
+struct testcase_t crypto_openssl_tests[] = {
+ { "rng_engine", test_crypto_rng_engine, TT_FORK, NULL, NULL },
+ { "base64_encode_match", test_crypto_base64_encode_matches,
+ TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_crypto_slow.c b/src/test/test_crypto_slow.c
index 0be58c9389..75c6ba9aaa 100644
--- a/src/test/test_crypto_slow.c
+++ b/src/test/test_crypto_slow.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_data.c b/src/test/test_data.c
index 788489a097..ce6c3394f6 100644
--- a/src/test/test_data.c
+++ b/src/test/test_data.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "test.h"
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 4e5876fa3c..1ead6d78c2 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -1,12 +1,13 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
#include <math.h>
#define CONFIG_PRIVATE
+#define CONTROL_PRIVATE
#define DIRSERV_PRIVATE
#define DIRVOTE_PRIVATE
#define ROUTER_PRIVATE
@@ -19,6 +20,7 @@
#include "or.h"
#include "confparse.h"
#include "config.h"
+#include "control.h"
#include "crypto_ed25519.h"
#include "directory.h"
#include "dirserv.h"
@@ -329,7 +331,7 @@ test_dir_formats(void *arg)
ntor_cc = make_ntor_onion_key_crosscert(&r2_onion_keypair,
&kp1.pubkey,
r2->cache_info.published_on,
- MIN_ONION_KEY_LIFETIME,
+ get_onion_key_lifetime(),
&ntor_cc_sign);
tt_assert(ntor_cc);
base64_encode(cert_buf, sizeof(cert_buf),
@@ -910,6 +912,23 @@ mock_get_by_ei_desc_digest(const char *d)
}
}
+static signed_descriptor_t *
+mock_ei_get_by_ei_digest(const char *d)
+{
+ char hex[HEX_DIGEST_LEN+1];
+ base16_encode(hex, sizeof(hex), d, DIGEST_LEN);
+ signed_descriptor_t *sd = &sd_ei_minimal;
+
+ if (!strcmp(hex, "11E0EDF526950739F7769810FCACAB8C882FAEEE")) {
+ sd->signed_descriptor_body = (char *)EX_EI_MINIMAL;
+ sd->signed_descriptor_len = sizeof(EX_EI_MINIMAL);
+ sd->annotations_len = 0;
+ sd->saved_location = SAVED_NOWHERE;
+ return sd;
+ }
+ return NULL;
+}
+
static smartlist_t *mock_ei_insert_list = NULL;
static was_router_added_t
mock_ei_insert(routerlist_t *rl, extrainfo_t *ei, int warn_if_incompatible)
@@ -999,6 +1018,37 @@ test_dir_load_extrainfo(void *arg)
}
static void
+test_dir_getinfo_extra(void *arg)
+{
+ int r;
+ char *answer = NULL;
+ const char *errmsg = NULL;
+
+ (void)arg;
+ MOCK(extrainfo_get_by_descriptor_digest, mock_ei_get_by_ei_digest);
+ r = getinfo_helper_dir(NULL, "extra-info/digest/"
+ "11E0EDF526950739F7769810FCACAB8C882FAEEE", &answer,
+ &errmsg);
+ tt_int_op(0, OP_EQ, r);
+ tt_ptr_op(NULL, OP_EQ, errmsg);
+ tt_str_op(answer, OP_EQ, EX_EI_MINIMAL);
+ tor_free(answer);
+
+ answer = NULL;
+ r = getinfo_helper_dir(NULL, "extra-info/digest/"
+ "NOTAVALIDHEXSTRINGNOTAVALIDHEXSTRINGNOTA", &answer,
+ &errmsg);
+ tt_int_op(0, OP_EQ, r);
+ /* getinfo_helper_dir() should maybe return an error here but doesn't */
+ tt_ptr_op(NULL, OP_EQ, errmsg);
+ /* In any case, there should be no answer for an invalid hex string. */
+ tt_ptr_op(NULL, OP_EQ, answer);
+
+ done:
+ UNMOCK(extrainfo_get_by_descriptor_digest);
+}
+
+static void
test_dir_versions(void *arg)
{
tor_version_t ver1;
@@ -1065,6 +1115,7 @@ test_dir_versions(void *arg)
tt_int_op(0, OP_EQ, ver1.patchlevel);
tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
tt_str_op("alpha", OP_EQ, ver1.status_tag);
+ /* Go through the full set of status tags */
tt_int_op(0, OP_EQ, tor_version_parse("2.1.700-alpha", &ver1));
tt_int_op(2, OP_EQ, ver1.major);
tt_int_op(1, OP_EQ, ver1.minor);
@@ -1079,6 +1130,60 @@ test_dir_versions(void *arg)
tt_int_op(0, OP_EQ, ver1.patchlevel);
tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
tt_str_op("alpha-dev", OP_EQ, ver1.status_tag);
+ tt_int_op(0, OP_EQ, tor_version_parse("0.2.9.5-rc", &ver1));
+ tt_int_op(0, OP_EQ, ver1.major);
+ tt_int_op(2, OP_EQ, ver1.minor);
+ tt_int_op(9, OP_EQ, ver1.micro);
+ tt_int_op(5, OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
+ tt_str_op("rc", OP_EQ, ver1.status_tag);
+ tt_int_op(0, OP_EQ, tor_version_parse("0.2.9.6-rc-dev", &ver1));
+ tt_int_op(0, OP_EQ, ver1.major);
+ tt_int_op(2, OP_EQ, ver1.minor);
+ tt_int_op(9, OP_EQ, ver1.micro);
+ tt_int_op(6, OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
+ tt_str_op("rc-dev", OP_EQ, ver1.status_tag);
+ tt_int_op(0, OP_EQ, tor_version_parse("0.2.9.8", &ver1));
+ tt_int_op(0, OP_EQ, ver1.major);
+ tt_int_op(2, OP_EQ, ver1.minor);
+ tt_int_op(9, OP_EQ, ver1.micro);
+ tt_int_op(8, OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
+ tt_str_op("", OP_EQ, ver1.status_tag);
+ tt_int_op(0, OP_EQ, tor_version_parse("0.2.9.9-dev", &ver1));
+ tt_int_op(0, OP_EQ, ver1.major);
+ tt_int_op(2, OP_EQ, ver1.minor);
+ tt_int_op(9, OP_EQ, ver1.micro);
+ tt_int_op(9, OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
+ tt_str_op("dev", OP_EQ, ver1.status_tag);
+ /* In #21450, we fixed an inconsistency in parsing versions > INT32_MAX
+ * between i386 and x86_64, as we used tor_parse_long, and then cast to int
+ */
+ tt_int_op(0, OP_EQ, tor_version_parse("0.2147483647.0", &ver1));
+ tt_int_op(0, OP_EQ, ver1.major);
+ tt_int_op(2147483647, OP_EQ, ver1.minor);
+ tt_int_op(0, OP_EQ, ver1.micro);
+ tt_int_op(0, OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE, OP_EQ, ver1.status);
+ tt_str_op("", OP_EQ, ver1.status_tag);
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.2147483648.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.4294967295.0", &ver1));
+ /* In #21278, we reject negative version components */
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.-1.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.-2147483648.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.-4294967295.0", &ver1));
+ /* In #21507, we reject version components with non-numeric prefixes */
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.-0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("+1.0.0", &ver1));
+ /* use the list in isspace() */
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.\t0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.\n0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.\v0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.\f0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0.\r0.0", &ver1));
+ tt_int_op(-1, OP_EQ, tor_version_parse("0. 0.0", &ver1));
#define tt_versionstatus_op(vs1, op, vs2) \
tt_assert_test_type(vs1,vs2,#vs1" "#op" "#vs2,version_status_t, \
@@ -1098,6 +1203,7 @@ test_dir_versions(void *arg)
test_v_i_o(VS_RECOMMENDED, "0.0.7rc2", "0.0.7,Tor 0.0.7rc2,Tor 0.0.8");
test_v_i_o(VS_OLD, "0.0.5.0", "0.0.5.1-cvs");
test_v_i_o(VS_NEW_IN_SERIES, "0.0.5.1-cvs", "0.0.5, 0.0.6");
+ test_v_i_o(VS_NEW, "0.2.9.9-dev", "0.2.9.9");
/* Not on list, but newer than any in same series. */
test_v_i_o(VS_NEW_IN_SERIES, "0.1.0.3",
"Tor 0.1.0.2,Tor 0.0.9.5,Tor 0.1.1.0");
@@ -1136,6 +1242,70 @@ test_dir_versions(void *arg)
"Tor 0.2.1.0-dev (r99)"));
tt_int_op(1,OP_EQ, tor_version_as_new_as("Tor 0.2.1.1",
"Tor 0.2.1.0-dev (r99)"));
+ /* And git revisions */
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-56788a2489127072)",
+ "Tor 0.2.9.9 (git-56788a2489127072)"));
+ /* a git revision is newer than no git revision */
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-56788a2489127072)",
+ "Tor 0.2.9.9"));
+ /* a longer git revision is newer than a shorter git revision
+ * this should be true if they prefix-match, but if they don't, they are
+ * incomparable, because hashes aren't ordered (but we compare their bytes
+ * anyway) */
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-56788a2489127072d513cf4baf35a8ff475f3c7b)",
+ "Tor 0.2.9.9 (git-56788a2489127072)"));
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-0102)",
+ "Tor 0.2.9.9 (git-03)"));
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-0102)",
+ "Tor 0.2.9.9 (git-00)"));
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-01)",
+ "Tor 0.2.9.9 (git-00)"));
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.9.9 (git-00)",
+ "Tor 0.2.9.9 (git-01)"));
+ /* In #21278, we comapre without integer overflows.
+ * But since #21450 limits version components to [0, INT32_MAX], it is no
+ * longer possible to cause an integer overflow in tor_version_compare() */
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.0.0.0",
+ "Tor 2147483647.0.0.0"));
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 2147483647.0.0.0",
+ "Tor 0.0.0.0"));
+ /* These versions used to cause an overflow, now they don't parse
+ * (and authorities reject their descriptors), and log a BUG message */
+ setup_full_capture_of_logs(LOG_WARN);
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.0.0.0",
+ "Tor 0.-2147483648.0.0"));
+ expect_single_log_msg_containing("unparseable");
+ mock_clean_saved_logs();
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2147483647.0.0",
+ "Tor 0.-1.0.0"));
+ expect_single_log_msg_containing("unparseable");
+ mock_clean_saved_logs();
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2147483647.0.0",
+ "Tor 0.-2147483648.0.0"));
+ expect_single_log_msg_containing("unparseable");
+ mock_clean_saved_logs();
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 4294967295.0.0.0",
+ "Tor 0.0.0.0"));
+ expect_no_log_entry();
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
+ "Tor 0.4294967295.0.0",
+ "Tor 0.-4294967295.0.0"));
+ expect_single_log_msg_containing("unparseable");
+ mock_clean_saved_logs();
+ teardown_capture_of_logs();
/* Now try git revisions */
tt_int_op(0,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00ff)", &ver1));
@@ -1145,11 +1315,24 @@ test_dir_versions(void *arg)
tt_int_op(7,OP_EQ, ver1.patchlevel);
tt_int_op(3,OP_EQ, ver1.git_tag_len);
tt_mem_op(ver1.git_tag,OP_EQ, "\xff\x00\xff", 3);
+ /* reject bad hex digits */
tt_int_op(-1,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00xx)", &ver1));
+ /* reject odd hex digit count */
tt_int_op(-1,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00fff)", &ver1));
+ /* ignore "git " */
tt_int_op(0,OP_EQ, tor_version_parse("0.5.6.7 (git ff00fff)", &ver1));
+ /* standard length is 16 hex digits */
+ tt_int_op(0,OP_EQ, tor_version_parse("0.5.6.7 (git-0010203040506070)",
+ &ver1));
+ /* length limit is 40 hex digits */
+ tt_int_op(0,OP_EQ, tor_version_parse(
+ "0.5.6.7 (git-000102030405060708090a0b0c0d0e0f10111213)",
+ &ver1));
+ tt_int_op(-1,OP_EQ, tor_version_parse(
+ "0.5.6.7 (git-000102030405060708090a0b0c0d0e0f1011121314)",
+ &ver1));
done:
- ;
+ teardown_capture_of_logs();
}
/** Run unit tests for directory fp_pair functions. */
@@ -1369,6 +1552,25 @@ test_dir_measured_bw_kb(void *arg)
return;
}
+/* Test dirserv_read_measured_bandwidths */
+static void
+test_dir_dirserv_read_measured_bandwidths(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();
+}
+
#define MBWC_INIT_TIME 1000
/** Do the measured bandwidth cache unit test */
@@ -4399,15 +4601,7 @@ test_dir_should_use_directory_guards(void *data)
}
NS_DECL(void,
-directory_initiate_command_routerstatus, (const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- circuit_guard_state_t *guardstate));
+directory_initiate_request, (directory_request_t *req));
static void
test_dir_should_not_init_request_to_ourselves(void *data)
@@ -4417,7 +4611,7 @@ test_dir_should_not_init_request_to_ourselves(void *data)
crypto_pk_t *key = pk_generate(2);
(void) data;
- NS_MOCK(directory_initiate_command_routerstatus);
+ NS_MOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
@@ -4432,15 +4626,15 @@ test_dir_should_not_init_request_to_ourselves(void *data)
dir_server_add(ourself);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_STATUS_VOTE, 0, NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 0);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 0);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_DETACHED_SIGNATURES, 0,
NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 0);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 0);
done:
- NS_UNMOCK(directory_initiate_command_routerstatus);
+ NS_UNMOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
crypto_pk_free(key);
@@ -4454,7 +4648,7 @@ test_dir_should_not_init_request_to_dir_auths_without_v3_info(void *data)
| MICRODESC_DIRINFO;
(void) data;
- NS_MOCK(directory_initiate_command_routerstatus);
+ NS_MOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
@@ -4465,14 +4659,14 @@ test_dir_should_not_init_request_to_dir_auths_without_v3_info(void *data)
dir_server_add(ds);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_STATUS_VOTE, 0, NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 0);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 0);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_DETACHED_SIGNATURES, 0,
NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 0);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 0);
done:
- NS_UNMOCK(directory_initiate_command_routerstatus);
+ NS_UNMOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
}
@@ -4483,7 +4677,7 @@ test_dir_should_init_request_to_dir_auths(void *data)
dir_server_t *ds = NULL;
(void) data;
- NS_MOCK(directory_initiate_command_routerstatus);
+ NS_MOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
@@ -4494,39 +4688,23 @@ test_dir_should_init_request_to_dir_auths(void *data)
dir_server_add(ds);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_STATUS_VOTE, 0, NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 1);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 1);
directory_get_from_all_authorities(DIR_PURPOSE_FETCH_DETACHED_SIGNATURES, 0,
NULL);
- tt_int_op(CALLED(directory_initiate_command_routerstatus), OP_EQ, 2);
+ tt_int_op(CALLED(directory_initiate_request), OP_EQ, 2);
done:
- NS_UNMOCK(directory_initiate_command_routerstatus);
+ NS_UNMOCK(directory_initiate_request);
clear_dir_servers();
routerlist_free_all();
}
void
-NS(directory_initiate_command_routerstatus)(const routerstatus_t *status,
- uint8_t dir_purpose,
- uint8_t router_purpose,
- dir_indirection_t indirection,
- const char *resource,
- const char *payload,
- size_t payload_len,
- time_t if_modified_since,
- circuit_guard_state_t *guardstate)
+NS(directory_initiate_request)(directory_request_t *req)
{
- (void)status;
- (void)dir_purpose;
- (void)router_purpose;
- (void)indirection;
- (void)resource;
- (void)payload;
- (void)payload_len;
- (void)if_modified_since;
- (void)guardstate;
- CALLED(directory_initiate_command_routerstatus)++;
+ (void)req;
+ CALLED(directory_initiate_request)++;
}
static void
@@ -5837,9 +6015,11 @@ struct testcase_t dir_tests[] = {
DIR(parse_router_list, TT_FORK),
DIR(load_routers, TT_FORK),
DIR(load_extrainfo, TT_FORK),
+ DIR(getinfo_extra, 0),
DIR_LEGACY(versions),
DIR_LEGACY(fp_pairs),
DIR(split_fps, 0),
+ DIR_LEGACY(dirserv_read_measured_bandwidths),
DIR_LEGACY(measured_bw_kb),
DIR_LEGACY(measured_bw_kb_cache),
DIR_LEGACY(param_voting),
diff --git a/src/test/test_dir_common.c b/src/test/test_dir_common.c
index ca43dd4c04..fca70249bd 100644
--- a/src/test/test_dir_common.c
+++ b/src/test/test_dir_common.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_dir_common.h b/src/test/test_dir_common.h
index 9682b0db49..65b9cf6436 100644
--- a/src/test/test_dir_common.h
+++ b/src/test/test_dir_common.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test_dir_handle_get.c b/src/test/test_dir_handle_get.c
index a0868f9253..75fe6249ad 100644
--- a/src/test/test_dir_handle_get.c
+++ b/src/test/test_dir_handle_get.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define RENDCOMMON_PRIVATE
@@ -12,8 +12,10 @@
#include "or.h"
#include "config.h"
#include "connection.h"
+#include "consdiffmgr.h"
#include "directory.h"
#include "test.h"
+#include "compress.h"
#include "connection.h"
#include "rendcommon.h"
#include "rendcache.h"
@@ -28,7 +30,6 @@
#include "networkstatus.h"
#include "geoip.h"
#include "dirserv.h"
-#include "torgzip.h"
#include "dirvote.h"
#include "log_test_helpers.h"
@@ -63,6 +64,7 @@ new_dir_conn(void)
{
dir_connection_t *conn = dir_connection_new(AF_INET);
tor_addr_from_ipv4h(&conn->base_.addr, 0x7f000001);
+ TO_CONN(conn)->address = tor_strdup("127.0.0.1");
return conn;
}
@@ -465,6 +467,8 @@ init_mock_options(void)
mock_options = tor_malloc(sizeof(or_options_t));
memset(mock_options, 0, sizeof(or_options_t));
mock_options->TestingTorNetwork = 1;
+ mock_options->DataDirectory = tor_strdup(get_fname_rnd("datadir_tmp"));
+ check_private_dir(mock_options->DataDirectory, CPD_CREATE, NULL);
}
static const or_options_t *
@@ -501,14 +505,6 @@ test_dir_handle_get_micro_d(void *data)
/* SETUP */
init_mock_options();
- const char *fn = get_fname("dir_handle_datadir_test1");
- mock_options->DataDirectory = tor_strdup(fn);
-
-#ifdef _WIN32
- tt_int_op(0, OP_EQ, mkdir(mock_options->DataDirectory));
-#else
- tt_int_op(0, OP_EQ, mkdir(mock_options->DataDirectory, 0700));
-#endif
/* Add microdesc to cache */
crypto_digest256(digest, microdesc, strlen(microdesc), DIGEST_SHA256);
@@ -568,14 +564,6 @@ test_dir_handle_get_micro_d_server_busy(void *data)
/* SETUP */
init_mock_options();
- const char *fn = get_fname("dir_handle_datadir_test2");
- mock_options->DataDirectory = tor_strdup(fn);
-
-#ifdef _WIN32
- tt_int_op(0, OP_EQ, mkdir(mock_options->DataDirectory));
-#else
- tt_int_op(0, OP_EQ, mkdir(mock_options->DataDirectory, 0700));
-#endif
/* Add microdesc to cache */
crypto_digest256(digest, microdesc, strlen(microdesc), DIGEST_SHA256);
@@ -743,7 +731,7 @@ test_dir_handle_get_server_descriptors_not_found(void* data)
NULL, NULL, 1, 0);
tt_str_op(NOT_FOUND, OP_EQ, header);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_SERVER_BY_FP);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
UNMOCK(connection_write_to_buf_impl_);
@@ -773,6 +761,7 @@ test_dir_handle_get_server_descriptors_all(void* data)
tt_int_op(smartlist_len(our_routerlist->routers), OP_GE, 1);
mock_routerinfo = smartlist_get(our_routerlist->routers, 0);
set_server_identity_key(mock_routerinfo->identity_pkey);
+ mock_routerinfo->cache_info.published_on = time(NULL);
/* Treat "all" requests as if they were unencrypted */
mock_routerinfo->cache_info.send_unencrypted = 1;
@@ -787,7 +776,7 @@ test_dir_handle_get_server_descriptors_all(void* data)
//which is smaller than that by annotation_len bytes
fetch_from_buf_http(TO_CONN(conn)->outbuf, &header, MAX_HEADERS_SIZE,
&body, &body_used,
- mock_routerinfo->cache_info.signed_descriptor_len+1, 0);
+ 1024*1024, 0);
tt_assert(header);
tt_assert(body);
@@ -803,7 +792,7 @@ test_dir_handle_get_server_descriptors_all(void* data)
tt_str_op(body, OP_EQ, mock_routerinfo->cache_info.signed_descriptor_body +
mock_routerinfo->cache_info.annotations_len);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_NONE);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
NS_UNMOCK(router_get_my_routerinfo);
@@ -882,6 +871,7 @@ test_dir_handle_get_server_descriptors_authority(void* data)
mock_routerinfo->cache_info.signed_descriptor_len =
strlen(TEST_DESCRIPTOR) - annotation_len;;
mock_routerinfo->cache_info.annotations_len = annotation_len;
+ mock_routerinfo->cache_info.published_on = time(NULL);
conn = new_dir_conn();
@@ -904,7 +894,7 @@ test_dir_handle_get_server_descriptors_authority(void* data)
tt_int_op(body_used, OP_EQ, strlen(body));
tt_str_op(body, OP_EQ, TEST_DESCRIPTOR + annotation_len);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_NONE);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
NS_UNMOCK(router_get_my_routerinfo);
@@ -946,6 +936,7 @@ test_dir_handle_get_server_descriptors_fp(void* data)
mock_routerinfo->cache_info.signed_descriptor_len =
strlen(TEST_DESCRIPTOR) - annotation_len;
mock_routerinfo->cache_info.annotations_len = annotation_len;
+ mock_routerinfo->cache_info.published_on = time(NULL);
conn = new_dir_conn();
@@ -975,7 +966,7 @@ test_dir_handle_get_server_descriptors_fp(void* data)
tt_int_op(body_used, OP_EQ, strlen(body));
tt_str_op(body, OP_EQ, TEST_DESCRIPTOR + annotation_len);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_NONE);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
NS_UNMOCK(router_get_my_routerinfo);
@@ -1041,7 +1032,7 @@ test_dir_handle_get_server_descriptors_d(void* data)
tt_str_op(body, OP_EQ, router->cache_info.signed_descriptor_body +
router->cache_info.annotations_len);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_NONE);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
UNMOCK(connection_write_to_buf_impl_);
@@ -1096,7 +1087,7 @@ test_dir_handle_get_server_descriptors_busy(void* data)
tt_assert(header);
tt_str_op(SERVER_BUSY, OP_EQ, header);
- tt_int_op(conn->dir_spool_src, OP_EQ, DIR_SPOOL_NONE);
+ tt_ptr_op(conn->spool, OP_EQ, NULL);
done:
UNMOCK(get_options);
@@ -1618,8 +1609,13 @@ test_dir_handle_get_status_vote_current_consensus_ns_not_enough_sigs(void* d)
/* init mock */
mock_ns_val = tor_malloc_zero(sizeof(networkstatus_t));
mock_ns_val->flavor = FLAV_NS;
+ mock_ns_val->type = NS_TYPE_CONSENSUS;
mock_ns_val->voters = smartlist_new();
- mock_ns_val->valid_until = time(NULL);
+ mock_ns_val->valid_after = time(NULL) - 1800;
+ mock_ns_val->valid_until = time(NULL) - 60;
+
+ #define NETWORK_STATUS "some network status string"
+ consdiffmgr_add_consensus(NETWORK_STATUS, mock_ns_val);
/* init mock */
init_mock_options();
@@ -1707,10 +1703,17 @@ test_dir_handle_get_status_vote_current_consensus_too_old(void *data)
(void)data;
mock_ns_val = tor_malloc_zero(sizeof(networkstatus_t));
+ mock_ns_val->type = NS_TYPE_CONSENSUS;
mock_ns_val->flavor = FLAV_MICRODESC;
- mock_ns_val->valid_until = time(NULL) - (60 * 60 * 24) - 1;
+ mock_ns_val->valid_after = time(NULL) - (24 * 60 * 60 + 1800);
+ mock_ns_val->fresh_until = time(NULL) - (24 * 60 * 60 + 900);
+ mock_ns_val->valid_until = time(NULL) - (24 * 60 * 60 + 20);
+
+ #define NETWORK_STATUS "some network status string"
+ consdiffmgr_add_consensus(NETWORK_STATUS, mock_ns_val);
init_mock_options();
+
MOCK(get_options, mock_get_options);
MOCK(connection_write_to_buf_impl_, connection_write_to_buf_mock);
MOCK(networkstatus_get_latest_consensus_by_flavor, mock_ns_get_by_flavor);
@@ -1731,6 +1734,17 @@ test_dir_handle_get_status_vote_current_consensus_too_old(void *data)
tor_free(header);
teardown_capture_of_logs();
+ tor_free(mock_ns_val);
+
+ mock_ns_val = tor_malloc_zero(sizeof(networkstatus_t));
+ mock_ns_val->type = NS_TYPE_CONSENSUS;
+ mock_ns_val->flavor = FLAV_NS;
+ mock_ns_val->valid_after = time(NULL) - (24 * 60 * 60 + 1800);
+ mock_ns_val->fresh_until = time(NULL) - (24 * 60 * 60 + 900);
+ mock_ns_val->valid_until = time(NULL) - (24 * 60 * 60 + 20);
+
+ #define NETWORK_STATUS "some network status string"
+ consdiffmgr_add_consensus(NETWORK_STATUS, mock_ns_val);
setup_capture_of_logs(LOG_WARN);
@@ -1769,12 +1783,26 @@ static void
status_vote_current_consensus_ns_test(char **header, char **body,
size_t *body_len)
{
- common_digests_t digests;
dir_connection_t *conn = NULL;
#define NETWORK_STATUS "some network status string"
+#if 0
+ common_digests_t digests;
+ uint8_t sha3[DIGEST256_LEN];
+ memset(&digests, 0x60, sizeof(digests));
+ memset(sha3, 0x06, sizeof(sha3));
dirserv_set_cached_consensus_networkstatus(NETWORK_STATUS, "ns", &digests,
+ sha3,
time(NULL));
+#endif
+ networkstatus_t *ns = tor_malloc_zero(sizeof(networkstatus_t));
+ ns->type = NS_TYPE_CONSENSUS;
+ ns->flavor = FLAV_NS;
+ ns->valid_after = time(NULL) - 1800;
+ ns->fresh_until = time(NULL) - 900;
+ ns->valid_until = time(NULL) - 60;
+ consdiffmgr_add_consensus(NETWORK_STATUS, ns);
+ networkstatus_vote_free(ns);
MOCK(connection_write_to_buf_impl_, connection_write_to_buf_mock);
@@ -1787,7 +1815,6 @@ status_vote_current_consensus_ns_test(char **header, char **body,
tt_str_op("ab", OP_EQ, geoip_get_country_name(1));
conn = new_dir_conn();
- TO_CONN(conn)->address = tor_strdup("127.0.0.1");
tt_int_op(0, OP_EQ, directory_handle_command_get(conn,
GET("/tor/status-vote/current/consensus-ns"), NULL, 0));
@@ -1829,8 +1856,8 @@ test_dir_handle_get_status_vote_current_consensus_ns(void* data)
comp_body_used);
tt_int_op(ZLIB_METHOD, OP_EQ, compression);
- tor_gzip_uncompress(&body, &body_used, comp_body, comp_body_used,
- compression, 0, LOG_PROTOCOL_WARN);
+ tor_uncompress(&body, &body_used, comp_body, comp_body_used,
+ compression, 0, LOG_PROTOCOL_WARN);
tt_str_op(NETWORK_STATUS, OP_EQ, body);
tt_int_op(strlen(NETWORK_STATUS), OP_EQ, body_used);
@@ -2494,6 +2521,53 @@ test_dir_handle_get_status_vote_current_authority(void* data)
dirvote_free_all();
}
+static void
+test_dir_handle_get_parse_accept_encoding(void *arg)
+{
+ (void)arg;
+ const unsigned B_NONE = 1u << NO_METHOD;
+ const unsigned B_ZLIB = 1u << ZLIB_METHOD;
+ const unsigned B_GZIP = 1u << GZIP_METHOD;
+ const unsigned B_LZMA = 1u << LZMA_METHOD;
+ const unsigned B_ZSTD = 1u << ZSTD_METHOD;
+
+ unsigned encodings;
+
+ encodings = parse_accept_encoding_header("");
+ tt_uint_op(B_NONE, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header(" ");
+ tt_uint_op(B_NONE, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("dewey, cheatham, and howe ");
+ tt_uint_op(B_NONE, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("dewey, cheatham, and gzip");
+ tt_uint_op(B_NONE, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("dewey, cheatham, and, gzip");
+ tt_uint_op(B_NONE|B_GZIP, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header(" gzip");
+ tt_uint_op(B_NONE|B_GZIP, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("gzip");
+ tt_uint_op(B_NONE|B_GZIP, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("x-zstd, deflate, x-tor-lzma");
+ tt_uint_op(B_NONE|B_ZLIB|B_ZSTD|B_LZMA, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header(
+ "x-zstd, deflate, x-tor-lzma, gzip");
+ tt_uint_op(B_NONE|B_ZLIB|B_ZSTD|B_LZMA|B_GZIP, OP_EQ, encodings);
+
+ encodings = parse_accept_encoding_header("x-zstd,deflate,x-tor-lzma,gzip");
+ tt_uint_op(B_NONE|B_ZLIB|B_ZSTD|B_LZMA|B_GZIP, OP_EQ, encodings);
+
+ done:
+ ;
+}
+
#define DIR_HANDLE_CMD(name,flags) \
{ #name, test_dir_handle_get_##name, (flags), NULL, NULL }
@@ -2538,11 +2612,11 @@ struct testcase_t dir_handle_get_tests[] = {
DIR_HANDLE_CMD(status_vote_current_authority, 0),
DIR_HANDLE_CMD(status_vote_next_authority_not_found, 0),
DIR_HANDLE_CMD(status_vote_next_authority, 0),
- DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_enough_sigs, 0),
- DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_found, 0),
- DIR_HANDLE_CMD(status_vote_current_consensus_too_old, 0),
- DIR_HANDLE_CMD(status_vote_current_consensus_ns_busy, 0),
- DIR_HANDLE_CMD(status_vote_current_consensus_ns, 0),
+ DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_enough_sigs, TT_FORK),
+ DIR_HANDLE_CMD(status_vote_current_consensus_ns_not_found, TT_FORK),
+ DIR_HANDLE_CMD(status_vote_current_consensus_too_old, TT_FORK),
+ DIR_HANDLE_CMD(status_vote_current_consensus_ns_busy, TT_FORK),
+ DIR_HANDLE_CMD(status_vote_current_consensus_ns, TT_FORK),
DIR_HANDLE_CMD(status_vote_current_d_not_found, 0),
DIR_HANDLE_CMD(status_vote_next_d_not_found, 0),
DIR_HANDLE_CMD(status_vote_d, 0),
@@ -2552,6 +2626,7 @@ struct testcase_t dir_handle_get_tests[] = {
DIR_HANDLE_CMD(status_vote_next_consensus_signatures_not_found, 0),
DIR_HANDLE_CMD(status_vote_next_consensus_signatures_busy, 0),
DIR_HANDLE_CMD(status_vote_next_consensus_signatures, 0),
+ DIR_HANDLE_CMD(parse_accept_encoding, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_dos.c b/src/test/test_dos.c
new file mode 100644
index 0000000000..cb9d9e559c
--- /dev/null
+++ b/src/test/test_dos.c
@@ -0,0 +1,497 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define DOS_PRIVATE
+#define TOR_CHANNEL_INTERNAL_
+#define CIRCUITLIST_PRIVATE
+
+#include "or.h"
+#include "dos.h"
+#include "circuitlist.h"
+#include "geoip.h"
+#include "channel.h"
+#include "microdesc.h"
+#include "networkstatus.h"
+#include "nodelist.h"
+#include "routerlist.h"
+#include "test.h"
+#include "log_test_helpers.h"
+
+static networkstatus_t *dummy_ns = NULL;
+static networkstatus_t *
+mock_networkstatus_get_latest_consensus(void)
+{
+ return dummy_ns;
+}
+
+static networkstatus_t *
+mock_networkstatus_get_latest_consensus_by_flavor(consensus_flavor_t f)
+{
+ tor_assert(f == FLAV_MICRODESC);
+ return dummy_ns;
+}
+
+/* Number of address a single node_t can have. Default to the production
+ * value. This is to control the size of the bloom filter. */
+static int addr_per_node = 2;
+static int
+mock_get_estimated_address_per_node(void)
+{
+ return addr_per_node;
+}
+
+static unsigned int
+mock_enable_dos_protection(const networkstatus_t *ns)
+{
+ (void) ns;
+ return 1;
+}
+
+/** Test that the connection tracker of the DoS subsystem will block clients
+ * who try to establish too many connections */
+static void
+test_dos_conn_creation(void *arg)
+{
+ (void) arg;
+
+ MOCK(get_param_cc_enabled, mock_enable_dos_protection);
+ MOCK(get_param_conn_enabled, mock_enable_dos_protection);
+
+ /* Initialize test data */
+ or_connection_t or_conn;
+ time_t now = 1281533250; /* 2010-08-11 13:27:30 UTC */
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&or_conn.real_addr,
+ "18.0.0.1"));
+ tor_addr_t *addr = &or_conn.real_addr;
+
+ /* Get DoS subsystem limits */
+ dos_init();
+ uint32_t max_concurrent_conns = get_param_conn_max_concurrent_count(NULL);
+
+ /* Introduce new client */
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, addr, NULL, now);
+ { /* Register many conns from this client but not enough to get it blocked */
+ unsigned int i;
+ for (i = 0; i < max_concurrent_conns; i++) {
+ dos_new_client_conn(&or_conn);
+ }
+ }
+
+ /* Check that new conns are still permitted */
+ tt_int_op(DOS_CONN_DEFENSE_NONE, OP_EQ,
+ dos_conn_addr_get_defense_type(addr));
+
+ /* Register another conn and check that new conns are not allowed anymore */
+ dos_new_client_conn(&or_conn);
+ tt_int_op(DOS_CONN_DEFENSE_CLOSE, OP_EQ,
+ dos_conn_addr_get_defense_type(addr));
+
+ /* Close a client conn and see that a new conn will be permitted again */
+ dos_close_client_conn(&or_conn);
+ tt_int_op(DOS_CONN_DEFENSE_NONE, OP_EQ,
+ dos_conn_addr_get_defense_type(addr));
+
+ /* Register another conn and see that defense measures get reactivated */
+ dos_new_client_conn(&or_conn);
+ tt_int_op(DOS_CONN_DEFENSE_CLOSE, OP_EQ,
+ dos_conn_addr_get_defense_type(addr));
+
+ done:
+ dos_free_all();
+}
+
+/** Helper mock: Place a fake IP addr for this channel in <b>addr_out</b> */
+static int
+mock_channel_get_addr_if_possible(channel_t *chan, tor_addr_t *addr_out)
+{
+ (void)chan;
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(addr_out, "18.0.0.1"));
+ return 1;
+
+ done:
+ return 0;
+}
+
+/** Test that the circuit tracker of the DoS subsystem will block clients who
+ * try to establish too many circuits. */
+static void
+test_dos_circuit_creation(void *arg)
+{
+ (void) arg;
+ unsigned int i;
+
+ MOCK(get_param_cc_enabled, mock_enable_dos_protection);
+ MOCK(get_param_conn_enabled, mock_enable_dos_protection);
+ MOCK(channel_get_addr_if_possible,
+ mock_channel_get_addr_if_possible);
+
+ /* Initialize channels/conns/circs that will be used */
+ channel_t *chan = tor_malloc_zero(sizeof(channel_t));
+ channel_init(chan);
+ chan->is_client = 1;
+
+ /* Initialize test data */
+ or_connection_t or_conn;
+ time_t now = 1281533250; /* 2010-08-11 13:27:30 UTC */
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&or_conn.real_addr,
+ "18.0.0.1"));
+ tor_addr_t *addr = &or_conn.real_addr;
+
+ /* Get DoS subsystem limits */
+ dos_init();
+ uint32_t max_circuit_count = get_param_cc_circuit_burst(NULL);
+ uint32_t min_conc_conns_for_cc =
+ get_param_cc_min_concurrent_connection(NULL);
+
+ /* Introduce new client and establish enough connections to activate the
+ * circuit counting subsystem */
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, addr, NULL, now);
+ for (i = 0; i < min_conc_conns_for_cc ; i++) {
+ dos_new_client_conn(&or_conn);
+ }
+
+ /* Register new circuits for this client and conn, but not enough to get
+ * detected as dos */
+ for (i=0; i < max_circuit_count-1; i++) {
+ dos_cc_new_create_cell(chan);
+ }
+ /* see that we didn't get detected for dosing */
+ tt_int_op(DOS_CC_DEFENSE_NONE, OP_EQ, dos_cc_get_defense_type(chan));
+
+ /* Register another CREATE cell that will push us over the limit. Check that
+ * the cell gets refused. */
+ dos_cc_new_create_cell(chan);
+ tt_int_op(DOS_CC_DEFENSE_REFUSE_CELL, OP_EQ, dos_cc_get_defense_type(chan));
+
+ /* TODO: Wait a few seconds before sending the cell, and check that the
+ buckets got refilled properly. */
+ /* TODO: Actually send a Tor cell (instead of calling the DoS function) and
+ * check that it will get refused */
+
+ done:
+ tor_free(chan);
+ dos_free_all();
+}
+
+/** Test that the DoS subsystem properly refills the circuit token buckets. */
+static void
+test_dos_bucket_refill(void *arg)
+{
+ (void) arg;
+ int i;
+ /* For this test, this variable is set to the current circ count of the token
+ * bucket. */
+ uint32_t current_circ_count;
+
+ MOCK(get_param_cc_enabled, mock_enable_dos_protection);
+ MOCK(get_param_conn_enabled, mock_enable_dos_protection);
+ MOCK(channel_get_addr_if_possible,
+ mock_channel_get_addr_if_possible);
+
+ time_t now = 1281533250; /* 2010-08-11 13:27:30 UTC */
+ update_approx_time(now);
+
+ /* Initialize channels/conns/circs that will be used */
+ channel_t *chan = tor_malloc_zero(sizeof(channel_t));
+ channel_init(chan);
+ chan->is_client = 1;
+ or_connection_t or_conn;
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&or_conn.real_addr,
+ "18.0.0.1"));
+ tor_addr_t *addr = &or_conn.real_addr;
+
+ /* Initialize DoS subsystem and get relevant limits */
+ dos_init();
+ uint32_t max_circuit_count = get_param_cc_circuit_burst(NULL);
+ uint64_t circ_rate = get_circuit_rate_per_second();
+ /* Check that the circuit rate is a positive number and smaller than the max
+ * circuit count */
+ tt_u64_op(circ_rate, OP_GT, 1);
+ tt_u64_op(circ_rate, OP_LT, max_circuit_count);
+
+ /* Register this client */
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, addr, NULL, now);
+ dos_new_client_conn(&or_conn);
+
+ /* Fetch this client from the geoip cache and get its DoS structs */
+ clientmap_entry_t *entry = geoip_lookup_client(addr, NULL,
+ GEOIP_CLIENT_CONNECT);
+ tt_assert(entry);
+ dos_client_stats_t* dos_stats = &entry->dos_stats;
+ /* Check that the circuit bucket is still uninitialized */
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, 0);
+
+ /* Send a create cell: then check that the circ token bucket got initialized
+ * and one circ was subtracted. */
+ dos_cc_new_create_cell(chan);
+ current_circ_count = max_circuit_count - 1;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send 29 more CREATEs and ensure that the bucket is missing 30
+ * tokens */
+ for (i=0; i < 29; i++) {
+ dos_cc_new_create_cell(chan);
+ current_circ_count--;
+ }
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* OK! Progress time forward one sec, refill the bucket and check that the
+ * refill happened correctly. */
+ now += 1;
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ /* check refill */
+ current_circ_count += circ_rate;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now progress time a week forward, and check that the token bucket does not
+ * have more than max_circs allowance, even tho we let it simmer for so
+ * long. */
+ now += 604800; /* a week */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now use a very large time, and check that the token bucket does not have
+ * more than max_circs allowance, even tho we let it simmer for so long. */
+ now = INT32_MAX; /* 2038? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now use a very small time, and check that the token bucket has exactly
+ * the max_circs allowance, because backward clock jumps are rare. */
+ now = INT32_MIN; /* 19?? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Progress time forward one sec again, refill the bucket and check that the
+ * refill happened correctly. */
+ now += 1;
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ /* check refill */
+ current_circ_count += circ_rate;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now use a very large time (again), and check that the token bucket does
+ * not have more than max_circs allowance, even tho we let it simmer for so
+ * long. */
+ now = INT32_MAX; /* 2038? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* This code resets the time to zero with 32-bit time_t, which triggers the
+ * code that initialises the bucket. */
+#if SIZEOF_TIME_T == 8
+ /* Now use a very very small time, and check that the token bucket has
+ * exactly the max_circs allowance, because backward clock jumps are rare.
+ */
+ now = (time_t)INT64_MIN; /* ???? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Progress time forward one sec again, refill the bucket and check that the
+ * refill happened correctly. */
+ now += 1;
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ /* check refill */
+ current_circ_count += circ_rate;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now use a very very small time, and check that the token bucket has
+ * exactly the max_circs allowance, because backward clock jumps are rare.
+ */
+ now = (time_t)INT64_MIN; /* ???? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now use a very very large time, and check that the token bucket does not
+ * have more than max_circs allowance, even tho we let it simmer for so
+ * long. */
+ now = (time_t)INT64_MAX; /* ???? */
+ update_approx_time(now);
+ cc_stats_refill_bucket(&dos_stats->cc_stats, addr);
+ current_circ_count += max_circuit_count;
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+
+ /* Now send as many CREATE cells as needed to deplete our token bucket
+ * completely */
+ for (; current_circ_count != 0; current_circ_count--) {
+ dos_cc_new_create_cell(chan);
+ }
+ tt_uint_op(current_circ_count, OP_EQ, 0);
+ tt_uint_op(dos_stats->cc_stats.circuit_bucket, OP_EQ, current_circ_count);
+#endif
+
+ done:
+ tor_free(chan);
+ dos_free_all();
+}
+
+/* Test if we avoid counting a known relay. */
+static void
+test_known_relay(void *arg)
+{
+ clientmap_entry_t *entry = NULL;
+ routerstatus_t *rs = NULL; microdesc_t *md = NULL; routerinfo_t *ri = NULL;
+
+ (void) arg;
+
+ MOCK(networkstatus_get_latest_consensus,
+ mock_networkstatus_get_latest_consensus);
+ MOCK(networkstatus_get_latest_consensus_by_flavor,
+ mock_networkstatus_get_latest_consensus_by_flavor);
+ MOCK(get_estimated_address_per_node,
+ mock_get_estimated_address_per_node);
+ MOCK(get_param_cc_enabled, mock_enable_dos_protection);
+
+ dos_init();
+
+ dummy_ns = tor_malloc_zero(sizeof(*dummy_ns));
+ dummy_ns->flavor = FLAV_MICRODESC;
+ dummy_ns->routerstatus_list = smartlist_new();
+
+ /* Setup an OR conn so we can pass it to the DoS subsystem. */
+ or_connection_t or_conn;
+ tor_addr_parse(&or_conn.real_addr, "42.42.42.42");
+
+ rs = tor_malloc_zero(sizeof(*rs));
+ rs->addr = tor_addr_to_ipv4h(&or_conn.real_addr);
+ crypto_rand(rs->identity_digest, sizeof(rs->identity_digest));
+ smartlist_add(dummy_ns->routerstatus_list, rs);
+
+ /* This will make the nodelist bloom filter very large
+ * (the_nodelist->node_addrs) so we will fail the contain test rarely. */
+ addr_per_node = 1024;
+ nodelist_set_consensus(dummy_ns);
+
+ /* We have now a node in our list so we'll make sure we don't count it as a
+ * client connection. */
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &or_conn.real_addr, NULL, 0);
+ /* Suppose we have 5 connections in rapid succession, the counter should
+ * always be 0 because we should ignore this. */
+ dos_new_client_conn(&or_conn);
+ dos_new_client_conn(&or_conn);
+ dos_new_client_conn(&or_conn);
+ dos_new_client_conn(&or_conn);
+ dos_new_client_conn(&or_conn);
+ entry = geoip_lookup_client(&or_conn.real_addr, NULL, GEOIP_CLIENT_CONNECT);
+ tt_assert(entry);
+ /* We should have a count of 0. */
+ tt_uint_op(entry->dos_stats.concurrent_count, OP_EQ, 0);
+
+ /* To make sure that his is working properly, make a unknown client
+ * connection and see if we do get it. */
+ tor_addr_parse(&or_conn.real_addr, "42.42.42.43");
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &or_conn.real_addr, NULL, 0);
+ dos_new_client_conn(&or_conn);
+ dos_new_client_conn(&or_conn);
+ entry = geoip_lookup_client(&or_conn.real_addr, NULL, GEOIP_CLIENT_CONNECT);
+ tt_assert(entry);
+ /* We should have a count of 2. */
+ tt_uint_op(entry->dos_stats.concurrent_count, OP_EQ, 2);
+
+ done:
+ routerstatus_free(rs); routerinfo_free(ri); microdesc_free(md);
+ smartlist_clear(dummy_ns->routerstatus_list);
+ networkstatus_vote_free(dummy_ns);
+ dos_free_all();
+ UNMOCK(networkstatus_get_latest_consensus);
+ UNMOCK(networkstatus_get_latest_consensus_by_flavor);
+ UNMOCK(get_estimated_address_per_node);
+ UNMOCK(get_param_cc_enabled);
+}
+
+struct testcase_t dos_tests[] = {
+ { "conn_creation", test_dos_conn_creation, TT_FORK, NULL, NULL },
+ { "circuit_creation", test_dos_circuit_creation, TT_FORK, NULL, NULL },
+ { "bucket_refill", test_dos_bucket_refill, TT_FORK, NULL, NULL },
+ { "known_relay" , test_known_relay, TT_FORK,
+ NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_entryconn.c b/src/test/test_entryconn.c
index 50848cfec2..12a631630b 100644
--- a/src/test/test_entryconn.c
+++ b/src/test/test_entryconn.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_entrynodes.c b/src/test/test_entrynodes.c
index e215c60e23..1f008d93b3 100644
--- a/src/test/test_entrynodes.c
+++ b/src/test/test_entrynodes.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_extorport.c b/src/test/test_extorport.c
index 1f92780177..fc9f27a5ac 100644
--- a/src/test/test_extorport.c
+++ b/src/test/test_extorport.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONNECTION_PRIVATE
@@ -72,9 +72,9 @@ test_ext_or_id_map(void *arg)
* writes to outbuf. */
static void
connection_write_to_buf_impl_replacement(const char *string, size_t len,
- connection_t *conn, int zlib)
+ connection_t *conn, int compressed)
{
- (void) zlib;
+ (void) compressed;
tor_assert(string);
tor_assert(conn);
diff --git a/src/test/test_guardfraction.c b/src/test/test_guardfraction.c
index 8173e44d47..56006f3cc3 100644
--- a/src/test/test_guardfraction.c
+++ b/src/test/test_guardfraction.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRSERV_PRIVATE
diff --git a/src/test/test_handles.c b/src/test/test_handles.c
index 536a478689..7ddee6e376 100644
--- a/src/test/test_handles.c
+++ b/src/test/test_handles.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_helpers.c b/src/test/test_helpers.c
index 5b84366e6d..9fada5a675 100644
--- a/src/test/test_helpers.c
+++ b/src/test/test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -98,9 +98,9 @@ helper_setup_fake_routerlist(void)
void
connection_write_to_buf_mock(const char *string, size_t len,
- connection_t *conn, int zlib)
+ connection_t *conn, int compressed)
{
- (void) zlib;
+ (void) compressed;
tor_assert(string);
tor_assert(conn);
diff --git a/src/test/test_helpers.h b/src/test/test_helpers.h
index c6d4d9c41f..4621631cc1 100644
--- a/src/test/test_helpers.h
+++ b/src/test/test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TEST_HELPERS_H
@@ -15,7 +15,7 @@ void helper_setup_fake_routerlist(void);
#define GET(path) "GET " path " HTTP/1.0\r\n\r\n"
void connection_write_to_buf_mock(const char *string, size_t len,
- connection_t *conn, int zlib);
+ connection_t *conn, int compressed);
int mock_tor_addr_lookup__fail_on_bad_addrs(const char *name,
uint16_t family, tor_addr_t *out);
diff --git a/src/test/test_hs.c b/src/test/test_hs.c
index fbaabe91d8..cd71f025a3 100644
--- a/src/test/test_hs.c
+++ b/src/test/test_hs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -210,9 +210,30 @@ test_hs_desc_event(void *arg)
tt_str_op(received_msg,OP_EQ, expected_msg);
tor_free(received_msg);
- /* test valid content. */
+ /* test no HSDir fingerprint type */
+ rend_query.auth_type = REND_NO_AUTH;
+ control_event_hs_descriptor_failed(&rend_query.base_, NULL,
+ "QUERY_NO_HSDIR");
+ expected_msg = "650 HS_DESC FAILED "STR_HS_ADDR" NO_AUTH " \
+ "UNKNOWN REASON=QUERY_NO_HSDIR\r\n";
+ tt_assert(received_msg);
+ tt_str_op(received_msg,OP_EQ, expected_msg);
+ tor_free(received_msg);
+
+ /* Test invalid content with no HSDir fingerprint. */
char *exp_msg;
control_event_hs_descriptor_content(rend_query.onion_address,
+ STR_HS_CONTENT_DESC_ID, NULL, NULL);
+ tor_asprintf(&exp_msg, "650+HS_DESC_CONTENT " STR_HS_ADDR " "\
+ STR_HS_CONTENT_DESC_ID " UNKNOWN" \
+ "\r\n\r\n.\r\n650 OK\r\n");
+ tt_assert(received_msg);
+ tt_str_op(received_msg, OP_EQ, exp_msg);
+ tor_free(received_msg);
+ tor_free(exp_msg);
+
+ /* test valid content. */
+ control_event_hs_descriptor_content(rend_query.onion_address,
STR_HS_CONTENT_DESC_ID, HSDIR_EXIST_ID,
hs_desc_content);
tor_asprintf(&exp_msg, "650+HS_DESC_CONTENT " STR_HS_ADDR " "\
@@ -455,10 +476,10 @@ test_hs_auth_cookies(void *arg)
#define TEST_COOKIE_ENCODED_STEALTH "YWJjZGVmZ2hpamtsbW5vcB"
#define TEST_COOKIE_ENCODED_INVALID "YWJjZGVmZ2hpamtsbW5vcD"
- char *encoded_cookie;
+ char *encoded_cookie = NULL;
uint8_t raw_cookie[REND_DESC_COOKIE_LEN];
rend_auth_type_t auth_type;
- char *err_msg;
+ char *err_msg = NULL;
int re;
(void)arg;
@@ -504,6 +525,9 @@ test_hs_auth_cookies(void *arg)
tor_free(err_msg);
done:
+ tor_free(encoded_cookie);
+ tor_free(err_msg);
+
return;
}
@@ -551,6 +575,7 @@ test_single_onion_poisoning(void *arg)
char *dir2 = tor_strdup(get_fname_rnd("test_hs_dir2"));
smartlist_t *services = smartlist_new();
char *poison_path = NULL;
+ char *err_msg = NULL;
/* No services, no service to verify, no problem! */
mock_options->HiddenServiceSingleHopMode = 0;
@@ -586,7 +611,6 @@ test_single_onion_poisoning(void *arg)
/* Add port to service 1 */
service_1->ports = smartlist_new();
service_2->ports = smartlist_new();
- char *err_msg = NULL;
rend_service_port_config_t *port1 = rend_service_parse_port_config("80", " ",
&err_msg);
tt_assert(port1);
@@ -785,6 +809,7 @@ test_single_onion_poisoning(void *arg)
rend_service_free(service_2);
UNMOCK(get_options);
tor_free(mock_options->DataDirectory);
+ tor_free(err_msg);
}
static rend_service_t *
@@ -821,7 +846,9 @@ test_prune_services_on_reload(void *arg)
smartlist_add(old, e1);
/* Only put the non ephemeral in the new list. */
smartlist_add(new, s1);
- prune_services_on_reload(old, new);
+ set_rend_service_list(old);
+ set_rend_rend_service_staging_list(new);
+ rend_service_prune_list_impl_();
/* We expect that the ephemeral one is in the new list but removed from
* the old one. */
tt_int_op(smartlist_len(old), OP_EQ, 1);
@@ -840,7 +867,9 @@ test_prune_services_on_reload(void *arg)
* one. */
smartlist_add(old, s1);
smartlist_add(old, e1);
- prune_services_on_reload(old, new);
+ set_rend_service_list(old);
+ set_rend_rend_service_staging_list(new);
+ rend_service_prune_list_impl_();
tt_int_op(smartlist_len(old), OP_EQ, 1);
tt_assert(smartlist_get(old, 0) == s1);
tt_int_op(smartlist_len(new), OP_EQ, 1);
@@ -855,7 +884,9 @@ test_prune_services_on_reload(void *arg)
* list being completely different. */
smartlist_add(new, s1);
smartlist_add(new, e1);
- prune_services_on_reload(old, new);
+ set_rend_service_list(old);
+ set_rend_rend_service_staging_list(new);
+ rend_service_prune_list_impl_();
tt_int_op(smartlist_len(old), OP_EQ, 0);
tt_int_op(smartlist_len(new), OP_EQ, 2);
tt_assert(smartlist_get(new, 0) == s1);
@@ -871,7 +902,9 @@ test_prune_services_on_reload(void *arg)
/* Setup our list. */
smartlist_add(old, s1);
smartlist_add(new, s2);
- prune_services_on_reload(old, new);
+ set_rend_service_list(old);
+ set_rend_rend_service_staging_list(new);
+ rend_service_prune_list_impl_();
tt_int_op(smartlist_len(old), OP_EQ, 1);
/* Intro nodes have been moved to the s2 in theory so it must be empty. */
tt_int_op(smartlist_len(s1->intro_nodes), OP_EQ, 0);
@@ -892,7 +925,9 @@ test_prune_services_on_reload(void *arg)
/* Test two ephemeral services. */
smartlist_add(old, e1);
smartlist_add(old, e2);
- prune_services_on_reload(old, new);
+ set_rend_service_list(old);
+ set_rend_rend_service_staging_list(new);
+ rend_service_prune_list_impl_();
/* Check if they've all been transfered. */
tt_int_op(smartlist_len(old), OP_EQ, 0);
tt_int_op(smartlist_len(new), OP_EQ, 2);
diff --git a/src/test/test_hs_cache.c b/src/test/test_hs_cache.c
index 1943d0ffac..40f50b322a 100644
--- a/src/test/test_hs_cache.c
+++ b/src/test/test_hs_cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,96 +15,10 @@
#include "directory.h"
#include "connection.h"
+#include "hs_test_helpers.h"
#include "test_helpers.h"
#include "test.h"
-/* Build an intro point using a blinded key and an address. */
-static hs_desc_intro_point_t *
-helper_build_intro_point(const ed25519_keypair_t *blinded_kp,
- const char *addr)
-{
- int ret;
- ed25519_keypair_t auth_kp;
- hs_desc_intro_point_t *intro_point = NULL;
- hs_desc_intro_point_t *ip = tor_malloc_zero(sizeof(*ip));
- ip->link_specifiers = smartlist_new();
-
- {
- hs_desc_link_specifier_t *ls = tor_malloc_zero(sizeof(*ls));
- ls->u.ap.port = 9001;
- int family = tor_addr_parse(&ls->u.ap.addr, addr);
- switch (family) {
- case AF_INET:
- ls->type = LS_IPV4;
- break;
- case AF_INET6:
- ls->type = LS_IPV6;
- break;
- default:
- /* Stop the test, not suppose to have an error. */
- tt_int_op(family, OP_EQ, AF_INET);
- }
- smartlist_add(ip->link_specifiers, ls);
- }
-
- ret = ed25519_keypair_generate(&auth_kp, 0);
- tt_int_op(ret, ==, 0);
- ip->auth_key_cert = tor_cert_create(blinded_kp, CERT_TYPE_AUTH_HS_IP_KEY,
- &auth_kp.pubkey, time(NULL),
- HS_DESC_CERT_LIFETIME,
- CERT_FLAG_INCLUDE_SIGNING_KEY);
- tt_assert(ip->auth_key_cert);
-
- ret = curve25519_keypair_generate(&ip->enc_key.curve25519, 0);
- tt_int_op(ret, ==, 0);
- ip->enc_key_type = HS_DESC_KEY_TYPE_CURVE25519;
- intro_point = ip;
- done:
- return intro_point;
-}
-
-/* Return a valid hs_descriptor_t object. */
-static hs_descriptor_t *
-helper_build_hs_desc(uint64_t revision_counter, uint32_t lifetime,
- ed25519_public_key_t *signing_pubkey)
-{
- int ret;
- ed25519_keypair_t blinded_kp;
- hs_descriptor_t *descp = NULL, *desc = tor_malloc_zero(sizeof(*desc));
-
- desc->plaintext_data.version = HS_DESC_SUPPORTED_FORMAT_VERSION_MAX;
-
- /* Copy only the public key into the descriptor. */
- memcpy(&desc->plaintext_data.signing_pubkey, signing_pubkey,
- sizeof(ed25519_public_key_t));
-
- ret = ed25519_keypair_generate(&blinded_kp, 0);
- tt_int_op(ret, ==, 0);
- /* Copy only the public key into the descriptor. */
- memcpy(&desc->plaintext_data.blinded_pubkey, &blinded_kp.pubkey,
- sizeof(ed25519_public_key_t));
-
- desc->plaintext_data.signing_key_cert =
- tor_cert_create(&blinded_kp, CERT_TYPE_SIGNING_HS_DESC, signing_pubkey,
- time(NULL), 3600, CERT_FLAG_INCLUDE_SIGNING_KEY);
- tt_assert(desc->plaintext_data.signing_key_cert);
- desc->plaintext_data.revision_counter = revision_counter;
- desc->plaintext_data.lifetime_sec = lifetime;
-
- /* Setup encrypted data section. */
- desc->encrypted_data.create2_ntor = 1;
- desc->encrypted_data.auth_types = smartlist_new();
- smartlist_add(desc->encrypted_data.auth_types, tor_strdup("ed25519"));
- desc->encrypted_data.intro_points = smartlist_new();
- /* Add an intro point. */
- smartlist_add(desc->encrypted_data.intro_points,
- helper_build_intro_point(&blinded_kp, "1.2.3.4"));
-
- descp = desc;
- done:
- return descp;
-}
-
/* Static variable used to encoded the HSDir query. */
static char query_b64[256];
@@ -141,7 +55,7 @@ test_directory(void *arg)
/* Generate a valid descriptor with normal values. */
ret = ed25519_keypair_generate(&signing_kp1, 0);
tt_int_op(ret, ==, 0);
- desc1 = helper_build_hs_desc(42, 3 * 60 * 60, &signing_kp1.pubkey);
+ desc1 = hs_helper_build_hs_desc_with_ip(&signing_kp1);
tt_assert(desc1);
ret = hs_desc_encode_descriptor(desc1, &signing_kp1, &desc1_str);
tt_int_op(ret, OP_EQ, 0);
@@ -175,8 +89,10 @@ test_directory(void *arg)
ret = ed25519_keypair_generate(&signing_kp_zero, 0);
tt_int_op(ret, ==, 0);
hs_descriptor_t *desc_zero_lifetime;
- desc_zero_lifetime = helper_build_hs_desc(1, 0, &signing_kp_zero.pubkey);
+ desc_zero_lifetime = hs_helper_build_hs_desc_with_ip(&signing_kp_zero);
tt_assert(desc_zero_lifetime);
+ desc_zero_lifetime->plaintext_data.revision_counter = 1;
+ desc_zero_lifetime->plaintext_data.lifetime_sec = 0;
char *desc_zero_lifetime_str;
ret = hs_desc_encode_descriptor(desc_zero_lifetime, &signing_kp_zero,
&desc_zero_lifetime_str);
@@ -262,7 +178,7 @@ test_clean_as_dir(void *arg)
/* Generate a valid descriptor with values. */
ret = ed25519_keypair_generate(&signing_kp1, 0);
tt_int_op(ret, ==, 0);
- desc1 = helper_build_hs_desc(42, 3 * 60 * 60, &signing_kp1.pubkey);
+ desc1 = hs_helper_build_hs_desc_with_ip(&signing_kp1);
tt_assert(desc1);
ret = hs_desc_encode_descriptor(desc1, &signing_kp1, &desc1_str);
tt_int_op(ret, OP_EQ, 0);
@@ -333,7 +249,7 @@ helper_fetch_desc_from_hsdir(const ed25519_public_key_t *blinded_key)
size_t body_used = 0;
fetch_from_buf_http(TO_CONN(conn)->outbuf, &headers, MAX_HEADERS_SIZE,
- &received_desc, &body_used, 10000, 0);
+ &received_desc, &body_used, HS_DESC_MAX_LEN, 0);
tor_free(headers);
}
@@ -375,7 +291,7 @@ test_upload_and_download_hs_desc(void *arg)
ed25519_keypair_t signing_kp;
retval = ed25519_keypair_generate(&signing_kp, 0);
tt_int_op(retval, ==, 0);
- published_desc = helper_build_hs_desc(42, 3 * 60 * 60, &signing_kp.pubkey);
+ published_desc = hs_helper_build_hs_desc_with_ip(&signing_kp);
tt_assert(published_desc);
retval = hs_desc_encode_descriptor(published_desc, &signing_kp,
&published_desc_str);
@@ -438,8 +354,7 @@ test_hsdir_revision_counter_check(void *arg)
{
retval = ed25519_keypair_generate(&signing_kp, 0);
tt_int_op(retval, ==, 0);
- published_desc = helper_build_hs_desc(1312, 3 * 60 * 60,
- &signing_kp.pubkey);
+ published_desc = hs_helper_build_hs_desc_with_ip(&signing_kp);
tt_assert(published_desc);
retval = hs_desc_encode_descriptor(published_desc, &signing_kp,
&published_desc_str);
@@ -470,7 +385,7 @@ test_hsdir_revision_counter_check(void *arg)
tt_assert(received_desc);
/* Check that the revision counter is correct */
- tt_u64_op(received_desc->plaintext_data.revision_counter, ==, 1312);
+ tt_u64_op(received_desc->plaintext_data.revision_counter, ==, 42);
hs_descriptor_free(received_desc);
received_desc = NULL;
diff --git a/src/test/test_hs_descriptor.c b/src/test/test_hs_descriptor.c
index 365683e75c..45850ada4e 100644
--- a/src/test/test_hs_descriptor.c
+++ b/src/test/test_hs_descriptor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,220 +15,17 @@
#include "test.h"
#include "torcert.h"
-static hs_desc_intro_point_t *
-helper_build_intro_point(const ed25519_keypair_t *blinded_kp, time_t now,
- const char *addr, int legacy)
-{
- int ret;
- ed25519_keypair_t auth_kp;
- hs_desc_intro_point_t *intro_point = NULL;
- hs_desc_intro_point_t *ip = tor_malloc_zero(sizeof(*ip));
- ip->link_specifiers = smartlist_new();
-
- {
- hs_desc_link_specifier_t *ls = tor_malloc_zero(sizeof(*ls));
- if (legacy) {
- ls->type = LS_LEGACY_ID;
- memcpy(ls->u.legacy_id, "0299F268FCA9D55CD157976D39AE92B4B455B3A8",
- DIGEST_LEN);
- } else {
- ls->u.ap.port = 9001;
- int family = tor_addr_parse(&ls->u.ap.addr, addr);
- switch (family) {
- case AF_INET:
- ls->type = LS_IPV4;
- break;
- case AF_INET6:
- ls->type = LS_IPV6;
- break;
- default:
- /* Stop the test, not suppose to have an error. */
- tt_int_op(family, OP_EQ, AF_INET);
- }
- }
- smartlist_add(ip->link_specifiers, ls);
- }
-
- ret = ed25519_keypair_generate(&auth_kp, 0);
- tt_int_op(ret, ==, 0);
- ip->auth_key_cert = tor_cert_create(blinded_kp, CERT_TYPE_AUTH_HS_IP_KEY,
- &auth_kp.pubkey, now,
- HS_DESC_CERT_LIFETIME,
- CERT_FLAG_INCLUDE_SIGNING_KEY);
- tt_assert(ip->auth_key_cert);
-
- if (legacy) {
- ip->enc_key.legacy = crypto_pk_new();
- ip->enc_key_type = HS_DESC_KEY_TYPE_LEGACY;
- tt_assert(ip->enc_key.legacy);
- ret = crypto_pk_generate_key(ip->enc_key.legacy);
- tt_int_op(ret, ==, 0);
- } else {
- ret = curve25519_keypair_generate(&ip->enc_key.curve25519, 0);
- tt_int_op(ret, ==, 0);
- ip->enc_key_type = HS_DESC_KEY_TYPE_CURVE25519;
- }
-
- intro_point = ip;
- done:
- return intro_point;
-}
-
-/* Return a valid hs_descriptor_t object. If no_ip is set, no introduction
- * points are added. */
-static hs_descriptor_t *
-helper_build_hs_desc(unsigned int no_ip, ed25519_public_key_t *signing_pubkey)
-{
- int ret;
- time_t now = time(NULL);
- ed25519_keypair_t blinded_kp;
- hs_descriptor_t *descp = NULL, *desc = tor_malloc_zero(sizeof(*desc));
-
- desc->plaintext_data.version = HS_DESC_SUPPORTED_FORMAT_VERSION_MAX;
-
- /* Copy only the public key into the descriptor. */
- memcpy(&desc->plaintext_data.signing_pubkey, signing_pubkey,
- sizeof(ed25519_public_key_t));
-
- ret = ed25519_keypair_generate(&blinded_kp, 0);
- tt_int_op(ret, ==, 0);
- /* Copy only the public key into the descriptor. */
- memcpy(&desc->plaintext_data.blinded_pubkey, &blinded_kp.pubkey,
- sizeof(ed25519_public_key_t));
-
- desc->plaintext_data.signing_key_cert =
- tor_cert_create(&blinded_kp, CERT_TYPE_SIGNING_HS_DESC, signing_pubkey,
- now, 3600, CERT_FLAG_INCLUDE_SIGNING_KEY);
- tt_assert(desc->plaintext_data.signing_key_cert);
- desc->plaintext_data.revision_counter = 42;
- desc->plaintext_data.lifetime_sec = 3 * 60 * 60;
-
- /* Setup encrypted data section. */
- desc->encrypted_data.create2_ntor = 1;
- desc->encrypted_data.auth_types = smartlist_new();
- desc->encrypted_data.single_onion_service = 1;
- smartlist_add(desc->encrypted_data.auth_types, tor_strdup("ed25519"));
- desc->encrypted_data.intro_points = smartlist_new();
- if (!no_ip) {
- /* Add four intro points. */
- smartlist_add(desc->encrypted_data.intro_points,
- helper_build_intro_point(&blinded_kp, now, "1.2.3.4", 0));
- smartlist_add(desc->encrypted_data.intro_points,
- helper_build_intro_point(&blinded_kp, now, "[2600::1]", 0));
- smartlist_add(desc->encrypted_data.intro_points,
- helper_build_intro_point(&blinded_kp, now, "3.2.1.4", 1));
- smartlist_add(desc->encrypted_data.intro_points,
- helper_build_intro_point(&blinded_kp, now, "", 1));
- }
-
- descp = desc;
- done:
- return descp;
-}
+#include "hs_test_helpers.h"
+#include "test_helpers.h"
+#include "log_test_helpers.h"
-static void
-helper_compare_hs_desc(const hs_descriptor_t *desc1,
- const hs_descriptor_t *desc2)
-{
- char *addr1 = NULL, *addr2 = NULL;
- /* Plaintext data section. */
- tt_int_op(desc1->plaintext_data.version, OP_EQ,
- desc2->plaintext_data.version);
- tt_uint_op(desc1->plaintext_data.lifetime_sec, OP_EQ,
- desc2->plaintext_data.lifetime_sec);
- tt_assert(tor_cert_eq(desc1->plaintext_data.signing_key_cert,
- desc2->plaintext_data.signing_key_cert));
- tt_mem_op(desc1->plaintext_data.signing_pubkey.pubkey, OP_EQ,
- desc2->plaintext_data.signing_pubkey.pubkey,
- ED25519_PUBKEY_LEN);
- tt_mem_op(desc1->plaintext_data.blinded_pubkey.pubkey, OP_EQ,
- desc2->plaintext_data.blinded_pubkey.pubkey,
- ED25519_PUBKEY_LEN);
- tt_u64_op(desc1->plaintext_data.revision_counter, ==,
- desc2->plaintext_data.revision_counter);
-
- /* NOTE: We can't compare the encrypted blob because when encoding the
- * descriptor, the object is immutable thus we don't update it with the
- * encrypted blob. As contrast to the decoding process where we populate a
- * descriptor object. */
-
- /* Encrypted data section. */
- tt_uint_op(desc1->encrypted_data.create2_ntor, ==,
- desc2->encrypted_data.create2_ntor);
-
- /* Authentication type. */
- tt_int_op(!!desc1->encrypted_data.auth_types, ==,
- !!desc2->encrypted_data.auth_types);
- if (desc1->encrypted_data.auth_types && desc2->encrypted_data.auth_types) {
- tt_int_op(smartlist_len(desc1->encrypted_data.auth_types), ==,
- smartlist_len(desc2->encrypted_data.auth_types));
- for (int i = 0; i < smartlist_len(desc1->encrypted_data.auth_types); i++) {
- tt_str_op(smartlist_get(desc1->encrypted_data.auth_types, i), OP_EQ,
- smartlist_get(desc2->encrypted_data.auth_types, i));
- }
- }
-
- /* Introduction points. */
- {
- tt_assert(desc1->encrypted_data.intro_points);
- tt_assert(desc2->encrypted_data.intro_points);
- tt_int_op(smartlist_len(desc1->encrypted_data.intro_points), ==,
- smartlist_len(desc2->encrypted_data.intro_points));
- for (int i=0; i < smartlist_len(desc1->encrypted_data.intro_points); i++) {
- hs_desc_intro_point_t *ip1 = smartlist_get(desc1->encrypted_data
- .intro_points, i),
- *ip2 = smartlist_get(desc2->encrypted_data
- .intro_points, i);
- tt_assert(tor_cert_eq(ip1->auth_key_cert, ip2->auth_key_cert));
- tt_int_op(ip1->enc_key_type, OP_EQ, ip2->enc_key_type);
- tt_assert(ip1->enc_key_type == HS_DESC_KEY_TYPE_LEGACY ||
- ip1->enc_key_type == HS_DESC_KEY_TYPE_CURVE25519);
- switch (ip1->enc_key_type) {
- case HS_DESC_KEY_TYPE_LEGACY:
- tt_int_op(crypto_pk_cmp_keys(ip1->enc_key.legacy, ip2->enc_key.legacy),
- OP_EQ, 0);
- break;
- case HS_DESC_KEY_TYPE_CURVE25519:
- tt_mem_op(ip1->enc_key.curve25519.pubkey.public_key, OP_EQ,
- ip2->enc_key.curve25519.pubkey.public_key,
- CURVE25519_PUBKEY_LEN);
- break;
- }
-
- tt_int_op(smartlist_len(ip1->link_specifiers), ==,
- smartlist_len(ip2->link_specifiers));
- for (int j = 0; j < smartlist_len(ip1->link_specifiers); j++) {
- hs_desc_link_specifier_t *ls1 = smartlist_get(ip1->link_specifiers, j),
- *ls2 = smartlist_get(ip2->link_specifiers, j);
- tt_int_op(ls1->type, ==, ls2->type);
- switch (ls1->type) {
- case LS_IPV4:
- case LS_IPV6:
- {
- addr1 = tor_addr_to_str_dup(&ls1->u.ap.addr);
- addr2 = tor_addr_to_str_dup(&ls2->u.ap.addr);
- tt_str_op(addr1, OP_EQ, addr2);
- tor_free(addr1);
- tor_free(addr2);
- tt_int_op(ls1->u.ap.port, ==, ls2->u.ap.port);
- }
- break;
- case LS_LEGACY_ID:
- tt_mem_op(ls1->u.legacy_id, OP_EQ, ls2->u.legacy_id,
- sizeof(ls1->u.legacy_id));
- break;
- default:
- /* Unknown type, caught it and print its value. */
- tt_int_op(ls1->type, OP_EQ, -1);
- }
- }
- }
- }
-
- done:
- tor_free(addr1);
- tor_free(addr2);
-}
+#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
+DISABLE_GCC_WARNING(overlength-strings)
+/* We allow huge string constants in the unit tests, but not in the code
+ * at large. */
+#endif
+#include "test_hs_descriptor.inc"
+ENABLE_GCC_WARNING(overlength-strings)
/* Test certificate encoding put in a descriptor. */
static void
@@ -311,13 +108,13 @@ test_descriptor_padding(void *arg)
/* Example: if l = 129, the ceiled division gives 2 and then multiplied by 128
* to give 256. With l = 127, ceiled division gives 1 then times 128. */
#define PADDING_EXPECTED_LEN(l) \
- CEIL_DIV(l, HS_DESC_PLAINTEXT_PADDING_MULTIPLE) * \
- HS_DESC_PLAINTEXT_PADDING_MULTIPLE
+ CEIL_DIV(l, HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE) * \
+ HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE
(void) arg;
{ /* test #1: no padding */
- plaintext_len = HS_DESC_PLAINTEXT_PADDING_MULTIPLE;
+ plaintext_len = HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE;
plaintext = tor_malloc(plaintext_len);
padded_len = build_plaintext_padding(plaintext, plaintext_len,
&padded_plaintext);
@@ -333,7 +130,7 @@ test_descriptor_padding(void *arg)
}
{ /* test #2: one byte padding? */
- plaintext_len = HS_DESC_PLAINTEXT_PADDING_MULTIPLE - 1;
+ plaintext_len = HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE - 1;
plaintext = tor_malloc(plaintext_len);
padded_plaintext = NULL;
padded_len = build_plaintext_padding(plaintext, plaintext_len,
@@ -350,7 +147,7 @@ test_descriptor_padding(void *arg)
}
{ /* test #3: Lots more bytes of padding? */
- plaintext_len = HS_DESC_PLAINTEXT_PADDING_MULTIPLE + 1;
+ plaintext_len = HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE + 1;
plaintext = tor_malloc(plaintext_len);
padded_plaintext = NULL;
padded_len = build_plaintext_padding(plaintext, plaintext_len,
@@ -487,7 +284,7 @@ test_encode_descriptor(void *arg)
ret = ed25519_keypair_generate(&signing_kp, 0);
tt_int_op(ret, ==, 0);
- desc = helper_build_hs_desc(0, &signing_kp.pubkey);
+ desc = hs_helper_build_hs_desc_with_ip(&signing_kp);
ret = hs_desc_encode_descriptor(desc, &signing_kp, &encoded);
tt_int_op(ret, ==, 0);
tt_assert(encoded);
@@ -511,7 +308,7 @@ test_decode_descriptor(void *arg)
ret = ed25519_keypair_generate(&signing_kp, 0);
tt_int_op(ret, ==, 0);
- desc = helper_build_hs_desc(0, &signing_kp.pubkey);
+ desc = hs_helper_build_hs_desc_with_ip(&signing_kp);
/* Give some bad stuff to the decoding function. */
ret = hs_desc_decode_descriptor("hladfjlkjadf", NULL, &decoded);
@@ -525,14 +322,14 @@ test_decode_descriptor(void *arg)
tt_int_op(ret, ==, 0);
tt_assert(decoded);
- helper_compare_hs_desc(desc, decoded);
+ hs_helper_desc_equal(desc, decoded);
/* Decode a descriptor with _no_ introduction points. */
{
ed25519_keypair_t signing_kp_no_ip;
ret = ed25519_keypair_generate(&signing_kp_no_ip, 0);
tt_int_op(ret, ==, 0);
- desc_no_ip = helper_build_hs_desc(1, &signing_kp_no_ip.pubkey);
+ desc_no_ip = hs_helper_build_hs_desc_no_ip(&signing_kp_no_ip);
tt_assert(desc_no_ip);
tor_free(encoded);
ret = hs_desc_encode_descriptor(desc_no_ip, &signing_kp_no_ip, &encoded);
@@ -586,24 +383,17 @@ test_encrypted_data_len(void *arg)
/* No length, error. */
ret = encrypted_data_length_is_valid(0);
tt_int_op(ret, OP_EQ, 0);
- /* This value is missing data. */
- value = HS_DESC_ENCRYPTED_SALT_LEN + DIGEST256_LEN;
- ret = encrypted_data_length_is_valid(value);
- tt_int_op(ret, OP_EQ, 0);
/* Valid value. */
- value = HS_DESC_PADDED_PLAINTEXT_MAX_LEN + HS_DESC_ENCRYPTED_SALT_LEN +
- DIGEST256_LEN;
+ value = HS_DESC_ENCRYPTED_SALT_LEN + DIGEST256_LEN + 1;
ret = encrypted_data_length_is_valid(value);
tt_int_op(ret, OP_EQ, 1);
- /* XXX: Test maximum possible size. */
-
done:
;
}
static void
-test_decode_intro_point(void *arg)
+test_decode_invalid_intro_point(void *arg)
{
int ret;
char *encoded_ip = NULL;
@@ -614,9 +404,6 @@ test_decode_intro_point(void *arg)
(void) arg;
- /* The following certificate expires in 2036. After that, one of the test
- * will fail because of the expiry time. */
-
/* Seperate pieces of a valid encoded introduction point. */
const char *intro_point =
"introduction-point AQIUMDI5OUYyNjhGQ0E5RDU1Q0QxNTc=";
@@ -629,60 +416,13 @@ test_decode_intro_point(void *arg)
"-----END ED25519 CERT-----";
const char *enc_key =
"enc-key ntor bpZKLsuhxP6woDQ3yVyjm5gUKSk7RjfAijT2qrzbQk0=";
- const char *enc_key_legacy =
- "enc-key legacy\n"
- "-----BEGIN RSA PUBLIC KEY-----\n"
- "MIGJAoGBAO4bATcW8kW4h6RQQAKEgg+aXCpF4JwbcO6vGZtzXTDB+HdPVQzwqkbh\n"
- "XzFM6VGArhYw4m31wcP1Z7IwULir7UMnAFd7Zi62aYfU6l+Y1yAoZ1wzu1XBaAMK\n"
- "ejpwQinW9nzJn7c2f69fVke3pkhxpNdUZ+vplSA/l9iY+y+v+415AgMBAAE=\n"
- "-----END RSA PUBLIC KEY-----";
const char *enc_key_cert =
- "enc-key-certification\n"
+ "enc-key-cert\n"
"-----BEGIN ED25519 CERT-----\n"
"AQsACOhZAUpNvCZ1aJaaR49lS6MCdsVkhVGVrRqoj0Y2T4SzroAtAQAgBABFOcGg\n"
"lbTt1DF5nKTE/gU3Fr8ZtlCIOhu1A+F5LM7fqCUupfesg0KTHwyIZOYQbJuM5/he\n"
"/jDNyLy9woPJdjkxywaY2RPUxGjLYtMQV0E8PUxWyICV+7y52fTCYaKpYQw=\n"
"-----END ED25519 CERT-----";
- const char *enc_key_cert_legacy =
- "enc-key-certification\n"
- "-----BEGIN CROSSCERT-----\n"
- "Sk28JnVolppHj2VLowJ2xWSFUZWtGqiPRjZPhLOugC0ACOhZgFPA5egeRDUXMM1U\n"
- "Fn3c7Je0gJS6mVma5FzwlgwggeriF13UZcaT71vEAN/ZJXbxOfQVGMZ0rXuFpjUq\n"
- "C8CvqmZIwEUaPE1nDFtmnTcucvNS1YQl9nsjH3ejbxc+4yqps/cXh46FmXsm5yz7\n"
- "NZjBM9U1fbJhlNtOvrkf70K8bLk6\n"
- "-----END CROSSCERT-----";
-
- (void) enc_key_legacy;
- (void) enc_key_cert_legacy;
-
- /* Start by testing the "decode all intro points" function. */
- {
- char *line;
- ret = ed25519_keypair_generate(&signing_kp, 0);
- tt_int_op(ret, ==, 0);
- desc = helper_build_hs_desc(0, &signing_kp.pubkey);
- tt_assert(desc);
- /* Only try to decode an incomplete introduction point section. */
- tor_asprintf(&line, "\n%s", intro_point);
- ret = decode_intro_points(desc, &desc->encrypted_data, line);
- tor_free(line);
- tt_int_op(ret, ==, -1);
-
- /* Decode one complete intro point. */
- smartlist_t *lines = smartlist_new();
- smartlist_add(lines, (char *) intro_point);
- smartlist_add(lines, (char *) auth_key);
- smartlist_add(lines, (char *) enc_key);
- smartlist_add(lines, (char *) enc_key_cert);
- encoded_ip = smartlist_join_strings(lines, "\n", 0, &len_out);
- tt_assert(encoded_ip);
- tor_asprintf(&line, "\n%s", encoded_ip);
- tor_free(encoded_ip);
- ret = decode_intro_points(desc, &desc->encrypted_data, line);
- tor_free(line);
- smartlist_free(lines);
- tt_int_op(ret, ==, 0);
- }
/* Try to decode a junk string. */
{
@@ -690,7 +430,7 @@ test_decode_intro_point(void *arg)
desc = NULL;
ret = ed25519_keypair_generate(&signing_kp, 0);
tt_int_op(ret, ==, 0);
- desc = helper_build_hs_desc(0, &signing_kp.pubkey);
+ desc = hs_helper_build_hs_desc_with_ip(&signing_kp);
const char *junk = "this is not a descriptor";
ip = decode_introduction_point(desc, junk);
tt_assert(!ip);
@@ -796,7 +536,7 @@ test_decode_intro_point(void *arg)
/* Invalid enc-key invalid legacy. */
{
smartlist_t *lines = smartlist_new();
- const char *bad_line = "enc-key legacy blah===";
+ const char *bad_line = "legacy-key blah===";
/* Build intro point text. */
smartlist_add(lines, (char *) intro_point);
smartlist_add(lines, (char *) auth_key);
@@ -810,27 +550,33 @@ test_decode_intro_point(void *arg)
smartlist_free(lines);
}
- /* Valid object. */
- {
- smartlist_t *lines = smartlist_new();
- /* Build intro point text. */
- smartlist_add(lines, (char *) intro_point);
- smartlist_add(lines, (char *) auth_key);
- smartlist_add(lines, (char *) enc_key);
- smartlist_add(lines, (char *) enc_key_cert);
- encoded_ip = smartlist_join_strings(lines, "\n", 0, &len_out);
- tt_assert(encoded_ip);
- ip = decode_introduction_point(desc, encoded_ip);
- tt_assert(ip);
- tor_free(encoded_ip);
- smartlist_free(lines);
- }
-
done:
hs_descriptor_free(desc);
desc_intro_point_free(ip);
}
+/** Make sure we fail gracefully when decoding the bad desc from #23233. */
+static void
+test_decode_bad_signature(void *arg)
+{
+ hs_desc_plaintext_data_t desc_plaintext;
+ int ret;
+
+ (void) arg;
+
+ /* Update approx time to dodge cert expiration */
+ update_approx_time(1502661599);
+
+ setup_full_capture_of_logs(LOG_WARN);
+ ret = hs_desc_decode_plaintext(HS_DESC_BAD_SIG, &desc_plaintext);
+ tt_int_op(ret, OP_EQ, -1);
+ expect_log_msg_containing("Malformed signature line. Rejecting.");
+ teardown_capture_of_logs();
+
+ done:
+ desc_plaintext_data_free_contents(&desc_plaintext);
+}
+
static void
test_decode_plaintext(void *arg)
{
@@ -1004,6 +750,103 @@ test_desc_signature(void *arg)
tor_free(data);
}
+/* bad desc auth type */
+static const char bad_superencrypted_text1[] = "desc-auth-type scoobysnack\n"
+ "desc-auth-ephemeral-key A/O8DVtnUheb3r1JqoB8uJB7wxXL1XJX3eny4yB+eFA=\n"
+ "auth-client oiNrQB8WwKo S5D02W7vKgiWIMygrBl8RQ FB//SfOBmLEx1kViEWWL1g\n"
+ "encrypted\n"
+ "-----BEGIN MESSAGE-----\n"
+ "YmVpbmcgb24gbW91bnRhaW5zLCB0aGlua2luZyBhYm91dCBjb21wdXRlcnMsIGlzIG5vdC"
+ "BiYWQgYXQgYWxs\n"
+ "-----END MESSAGE-----\n";
+
+/* bad ephemeral key */
+static const char bad_superencrypted_text2[] = "desc-auth-type x25519\n"
+ "desc-auth-ephemeral-key differentalphabet\n"
+ "auth-client oiNrQB8WwKo S5D02W7vKgiWIMygrBl8RQ FB//SfOBmLEx1kViEWWL1g\n"
+ "encrypted\n"
+ "-----BEGIN MESSAGE-----\n"
+ "YmVpbmcgb24gbW91bnRhaW5zLCB0aGlua2luZyBhYm91dCBjb21wdXRlcnMsIGlzIG5vdC"
+ "BiYWQgYXQgYWxs\n"
+ "-----END MESSAGE-----\n";
+
+/* bad encrypted msg */
+static const char bad_superencrypted_text3[] = "desc-auth-type x25519\n"
+ "desc-auth-ephemeral-key A/O8DVtnUheb3r1JqoB8uJB7wxXL1XJX3eny4yB+eFA=\n"
+ "auth-client oiNrQB8WwKo S5D02W7vKgiWIMygrBl8RQ FB//SfOBmLEx1kViEWWL1g\n"
+ "encrypted\n"
+ "-----BEGIN MESSAGE-----\n"
+ "SO SMALL NOT GOOD\n"
+ "-----END MESSAGE-----\n";
+
+static const char correct_superencrypted_text[] = "desc-auth-type x25519\n"
+ "desc-auth-ephemeral-key A/O8DVtnUheb3r1JqoB8uJB7wxXL1XJX3eny4yB+eFA=\n"
+ "auth-client oiNrQB8WwKo S5D02W7vKgiWIMygrBl8RQ FB//SfOBmLEx1kViEWWL1g\n"
+ "auth-client Od09Qu636Qo /PKLzqewAdS/+0+vZC+MvQ dpw4NFo13zDnuPz45rxrOg\n"
+ "auth-client JRr840iGYN0 8s8cxYqF7Lx23+NducC4Qg zAafl4wPLURkuEjJreZq1g\n"
+ "encrypted\n"
+ "-----BEGIN MESSAGE-----\n"
+ "YmVpbmcgb24gbW91bnRhaW5zLCB0aGlua2luZyBhYm91dCBjb21wdXRlcnMsIGlzIG5vdC"
+ "BiYWQgYXQgYWxs\n"
+ "-----END MESSAGE-----\n";
+
+static const char correct_encrypted_plaintext[] = "being on mountains, "
+ "thinking about computers, is not bad at all";
+
+static void
+test_parse_hs_desc_superencrypted(void *arg)
+{
+ (void) arg;
+ size_t retval;
+ uint8_t *encrypted_out = NULL;
+
+ {
+ setup_full_capture_of_logs(LOG_WARN);
+ retval = decode_superencrypted(bad_superencrypted_text1,
+ strlen(bad_superencrypted_text1),
+ &encrypted_out);
+ tt_u64_op(retval, ==, 0);
+ tt_assert(!encrypted_out);
+ expect_log_msg_containing("Unrecognized desc auth type");
+ teardown_capture_of_logs();
+ }
+
+ {
+ setup_full_capture_of_logs(LOG_WARN);
+ retval = decode_superencrypted(bad_superencrypted_text2,
+ strlen(bad_superencrypted_text2),
+ &encrypted_out);
+ tt_u64_op(retval, ==, 0);
+ tt_assert(!encrypted_out);
+ expect_log_msg_containing("Bogus desc auth key in HS desc");
+ teardown_capture_of_logs();
+ }
+
+ {
+ setup_full_capture_of_logs(LOG_WARN);
+ retval = decode_superencrypted(bad_superencrypted_text3,
+ strlen(bad_superencrypted_text3),
+ &encrypted_out);
+ tt_u64_op(retval, ==, 0);
+ tt_assert(!encrypted_out);
+ expect_log_msg_containing("Length of descriptor\'s encrypted data "
+ "is too small.");
+ teardown_capture_of_logs();
+ }
+
+ /* Now finally the good one */
+ retval = decode_superencrypted(correct_superencrypted_text,
+ strlen(correct_superencrypted_text),
+ &encrypted_out);
+
+ tt_u64_op(retval, ==, strlen(correct_encrypted_plaintext));
+ tt_mem_op(encrypted_out, OP_EQ, correct_encrypted_plaintext,
+ strlen(correct_encrypted_plaintext));
+
+ done:
+ tor_free(encrypted_out);
+}
+
struct testcase_t hs_descriptor[] = {
/* Encoding tests. */
{ "cert_encoding", test_cert_encoding, TT_FORK,
@@ -1020,10 +863,12 @@ struct testcase_t hs_descriptor[] = {
NULL, NULL },
{ "encrypted_data_len", test_encrypted_data_len, TT_FORK,
NULL, NULL },
- { "decode_intro_point", test_decode_intro_point, TT_FORK,
+ { "decode_invalid_intro_point", test_decode_invalid_intro_point, TT_FORK,
NULL, NULL },
{ "decode_plaintext", test_decode_plaintext, TT_FORK,
NULL, NULL },
+ { "decode_bad_signature", test_decode_bad_signature, TT_FORK,
+ NULL, NULL },
/* Misc. */
{ "version", test_supported_version, TT_FORK,
@@ -1033,6 +878,9 @@ struct testcase_t hs_descriptor[] = {
{ "desc_signature", test_desc_signature, TT_FORK,
NULL, NULL },
+ { "parse_hs_desc_superencrypted", test_parse_hs_desc_superencrypted,
+ TT_FORK, NULL, NULL },
+
END_OF_TESTCASES
};
diff --git a/src/test/test_hs_descriptor.inc b/src/test/test_hs_descriptor.inc
new file mode 100644
index 0000000000..70a2c7c2f7
--- /dev/null
+++ b/src/test/test_hs_descriptor.inc
@@ -0,0 +1,224 @@
+static const char* HS_DESC_BAD_SIG =
+"hs-descriptor 3\n"
+"descriptor-lifetime 180\n"
+"descriptor-signing-key-cert\n"
+"-----BEGIN ED25519 CERT-----\n"
+"AQgABl5+AQoPXRnCGEOxIup3AcjQXb8npNiUFm2Qv7A6JKk/K+EuAQAgBAD18iUD\n"
+"nbkUblnUvTHzipq4bcr6aPyFVB42Ptobg4xr8s3VjHiJtjs9MDEdr6nXS7UlyhEl\n"
+"78vsuFEvLp7cvAgGxYY1xGXdn5RdHMCdi8W9yZLKMQX9OuJckmp1C6q+cA4=\n"
+"-----END ED25519 CERT-----\n"
+"revision-counter 42\n"
+"superencrypted\n"
+"-----BEGIN MESSAGE-----\n"
+"BxzghAOjM4De6Z6eGTvBrTP2SJDdQOYV/u9qtvlFsa2FRQWk20Adv3zJ/AI10CQO\n"
+"mUP4DNXM8FWQYGTvmD7wGz2/cXGjKwBXg1qO7zF5eP/D/My1sXsIfCcb41mkheNt\n"
+"xn1I5eKXcnghtd4lw7OkPVjSb/Z+VARUMmf+0qSNgmHLgEVnAoGJsn8W8B4qtIay\n"
+"4h4PuV0jPPlqJx6jMFOOEW72uqnfmqeNvClENXXW60xhnaxsf0up62fuW8ktu6Wf\n"
+"lnX/lvTstBFZZQ8/XI1+G+BPf8TZf7mxu0WYVg1s/KWYasYMSw46as59nkqdq2Ii\n"
+"qJnqHX/R20mWBhgpLse6wO0aNpky/rozEnikaPqyO1DShf6a6jXY8ADBg7spnK2/\n"
+"h7sf1+F1xfi2dy2WGxc1EUMP1kTVUmbft7kOo2nA7+3YZwQuSJHaN/66HrzU2x5z\n"
+"ayRUJ8+qDtfpEf17xthc/Uh253blFK96IoJJiqBfI6xt3IqOdHJq0OOC9zBbF6Rj\n"
+"vKMsaxmc/nc6uOB2WePYSgkZ0qs/dRKBJs6+Ahn1KdGkadyd8mDKL86Oe8lncHdB\n"
+"m/6sQjhKqFgngkCDOIlEJyWizqfN84AGqD5Zyxq0rbsN+9KLsHFfEbCRjgqjO5nS\n"
+"FYSFtuKgCZl2gaYEslL1pIEYE6BD2Whjn/HWTRyWiULJr6SuavgcbxeNEQDuVCC+\n"
+"fm0X7Z+qERaMAMR0vTMJK/NzT4GifrDpgmgbxc+34CtNBF5TriM8aXTNZZlsW00k\n"
+"d0XRxFbbbtiT5VOaEHbny7R3MdTVutEc9E/BhLBvjSSrGX7vrryh6Oj++nthIIzm\n"
+"F4M7I11S0TyA+UE06qF1C8rKmhcqU9MWy1SiccJ9KOWhJ5xwlsXBIID7wVygUhVl\n"
+"ovzfKkDDPfRoBch6NdVkxNJx3gb63CUmC2TzfwOMh973nntMVzqqw9A7jYkro9ln\n"
+"217kHUwMk3e83UgFL4nn7NCf3Kj0zhJ4jSfAsuQpV6e7dhzrlNya0lqrUsY2zFXP\n"
+"xv8wUtg6Vo1KewgVQas4oElkgFjDN8RJ7uBAwfuE/b9NnYJoQd76G8DHei/1PHbu\n"
+"tbtwN9I5RHaTvEOfetsJFnIAkCG6O4CQpzwHu1DdvEP4s6/el10b/4awBJ4VwOVZ\n"
+"YHSe4X0DStTV4Cu6aLh5OvrOmGbieRj6HdGQ6syYCaEBTuxbBUUpjIAfVlReAIph\n"
+"6aOrY6HNcCmeVmL5qm4dKr2XXOREsnUFuMqmfQuQd9pN3zlmS+RqCgSJuFrguFpd\n"
+"mjo6UxZvbjE7yJjtCih38HRe5BaigP5RDRkXmiXjqJ4koLJpyjQh19k3BYGcdxUC\n"
+"RCcYXydbGF7qHlnoaX9HnX7y6ZRsyKQpt91PMTGOUsB4fS8NhsqPpl2gdp4poLNs\n"
+"+hqjWZJ3uuLotXBcgM39Dtq9tqqu9vM12T80UAfWnVEHrBphmukh49EhEr2sx/la\n"
+"kAzRoTbLyTdlGVei8hI7/RtZIaIcOkzlhcFI5zmBlydyrv6/79vzt6WI/w9GVGpM\n"
+"OuSM0NS2CDJ7Iw412nz3CV1pEXB551ZBmbme6NHUe4EtEsDbgkP1Z201H4j51yVz\n"
+"wNoIksE5Bh5XRKuu4We5f9KZb+AEG9kxKJ5DbJk2YGJEQFTyfv0H68pl9urstPXD\n"
+"aMQF806COe2uhGm5gV/skvPVTeEvStE3K8DxZgcWNcTMVk8ZjrUHNfguVVToP8hT\n"
+"Fl4Iqo3r+JZEAGXnAbTpxUVC2Xxspf3jsT5xhUfB/NOexZxrXWnQZ+pscsbow0ba\n"
+"GATtakD3TF2WBqq5WscmOex+lrJcBCWVIzVWdwi5ngAtm1S7efkJlFUvmi4OuYnN\n"
+"RyZfxVIpoer8f2/xPXvxkOWFminDy5sFEvlh2/pnymfKOUV+CKih9ZApt+izlRJn\n"
+"+sMIOW6Jhf/WYyjeN6KQpwi6CDpclQJXA1SVoOVVL5A3lotLjs0x7ThIcBoxCZBq\n"
+"rFBhBu1gJgJ8guMySAHssIvhHHwXJsYEwzWCVAg/zIUXy4PLwIkgHApl+vGcldGv\n"
+"Br5HNCuqQ2pD9z2RvzNneB/LrYB214i+BP2piO5HbmeJBhby93blGXVfQewQT6aF\n"
+"dBlK8/jQM0rvb+LkmvQm2ypOttRpX2kyQXooJHYTTusaUr4jVmgngCvGtgqAQVqD\n"
+"HULXfHWvugZbAh6dXF7gKnnsyDOWwAgy4OJRi8i0jCaZ8aWSFRUjeGKT26dg/ayB\n"
+"U4QfMb8vL8tMdXVBfQLGcBgvrzQYrY69//pV6bX3SbLfUfWXV9eqUVWVPqVyPEwa\n"
+"Tz/aGVnGv/dY8h2cVnrgSXJGlOO+mCwSl+k9nk7VcEaKYuNlaOP3ZlKJvVj1LefM\n"
+"FODh4qTDBo5NkyfKu5fcZcOqDMBeGWXZzltE7CmvY7fOpDNMsuAoXYWI7q9gK82F\n"
+"w+nS0tVFCIWYa9DgGMv9GKTOk4Ia9elkbWypdRE/4oz4QxmHsArEsK4gDI+wmcp7\n"
+"/NsAZeuy96r2YDIUam4uASKOiAqrEfCv6B6cYctdYwZbAEXdo4fkGrCIjNRZmZGv\n"
+"kcZzHzIymnAmKRTkPt/LQ7Rx27Qd/Vt++B3zt2ORFuopqowOP0ocGZtkm0daK3Fc\n"
+"YDXMwIpf6Z8PwvvsG1bQHcSR+cUZi7vK7+hj/LGhMPafHM7HmFUbAxpJYr5CvR6y\n"
+"V1pZQYltT8xWayCeMHlLAAg10RgDkqCnY4dHnrY4GdwI2O7Wpxomni7qVHMjn+cN\n"
+"UTrd7EeVw+dxAIYosuqG7ua7ee3VGoOs+XMLrscAqHahfGbyYC+j+6Tow4qwWBdU\n"
+"/W3NJXnRWaHTXFHllpClnxggPRQx4yPtgTOmBBVl/O0T6i4Bv0ygsJeZAqC3VmAJ\n"
+"QodQTzGf2jwqsZf4uHKQa0EKGQvTGjFVgAFNpHmAuzyqh0b1pq5JeXiFERGsKC3j\n"
+"xcJilq1XeIx4SL38YNuCxi4pnyJyLnGGHpNjdjeFO5lvgCaKPegsPo4hpNpTvBJ1\n"
+"D7+o3E5CqxzjRt9kQmtwBbuH/SQX2T0x8aQ6vhwjj8ftDfw+FbjpMR9zfU0Lf8V7\n"
+"UjVGIl2yiVBGScBZu1nSD83PxjFy3XdFtBYoU5OrlXwBEYQs91jwK7UCiGtjI2Ao\n"
+"ZGkJaBd4AqP6voyJiGnC3LWFcmeMyzfExgiclQwfhFqqf762TX5JwG6xGqtdcNKS\n"
+"k54LlcI/RfvJw3ncSs9YsodZr6Jz5irpRTHX5WwCrX9mLukP96SXo29bIXEZAqEr\n"
+"ZxEcF0zlYE+km5bRfRCRcVVrScugCshSNLOdQp6fOAtHCl7rdQ/8Rz7oHuqieLVi\n"
+"UldRsAmpk9fIfRLphXj4j24jRP0VtL/LoJwakWTa0xO8K7eBAMVITI+HgFfN4wSO\n"
+"Yh1B+bGD5WKxFsWSgBMmW+YLF5ZtxVmmbg7wK2dIpJs4pjg2YO/MTO7SifJ9kjcb\n"
+"bCc74Tjs5mLLGGjGCIoXfda6WXbt2it40XhFk2zUAcPPsgjbctftkaWph7JSZpmZ\n"
+"fVcPqKdhmA1U0LA2XEOMTxGyCAeseH6pJXZm9LdBozc1CwyWP8XEDHHJf35vfPKY\n"
+"JDe2PanFepIOHaoRTgE7ZkGWKzOIKlS0Ucr1ezVfcxiFgQUNM+MYXXbUz51BVVq1\n"
+"Dulg4VvX104nt/ULijcfa/TsE+uklEnkyk1mhavH337NQg38XF4cAngNlUF4nSW/\n"
+"j0jizbAtaSx1f7q6xqPm3zPRlHrGQizHXLyl+SLzDUVPOXbPwcoeev97YeeyB6h5\n"
+"NBbIK9hmekNDmYIwI0bmlrg6IXhC5pyvRe8sQlV+9wBY2liF0M1mq5onW3a55afp\n"
+"+ynxXfQucb1HxZLXvRIGMBgWSQ7HfIPASqSE90Vu6qQCfkOW5PDqONr4BM65V4+g\n"
+"AYsVEgaosgHw9CF7yKgkvmZpToOtGpCHVcdUeeY2/rrQnAQeSy19gj/baJ+OKl6Q\n"
+"i1EGU8Yqo2r0d4XDFp/eKgC4sv57qp1PwkYQ/HKqoelJ09IAZL2sQWc05BGwt1A0\n"
+"11qDIEdkZBjzK3qUnY3QlOuoZtALZrnPg56SlF1RGDOPqbcF+3opqsvzBoiikh4V\n"
+"WV5OUYjRDMUDLQqf/OkuktdYf5N3RcbYP0XsAvY0ZWG3Gp068b3p8peCpkDzrF9p\n"
+"bQ2ZvS304tN7+p0hif3+JyZy5/sxl17RxTeg5I3mo2+J0ptQDYwF/WadONO8r7uU\n"
+"YlRltFtQfyMzyVzHON4NHGjZh7dDGtWp0MGeHRBHQsC8bEChhvWme19VXhgZoWpl\n"
+"dUIZkSuvRwiURXjhKbZrEdJbVmr9FX6zoyOahv3VnmcEARoR+umxzvo3hGQPbHyH\n"
+"jTsQtSBjs75/9fCxcYmBWkh3JHVDVsCbV+z+5KZpk3m50J4Y1hC8hvepC9CaBqOM\n"
+"DjfyXh58x1yKiueEbcjSWsRuF7CjcrYnFUBHOs9U1j9WytCI3fhOWPMgR4UZpGuU\n"
+"WlcR1BXg1wYxX273xOS/jYn9MLAVlbRpPTUMIH9VRP+sc8+XaxKpJSCl4C+vcwNY\n"
+"1YdKD2QiuoBJ3fXGtqMVRtn9eZvatSJuY9CnRKRbf0hWmFD4D5RkiwE0WkdtwoHR\n"
+"uEXJ47RlF0/JDU1fY1mXBkq3usvB4Absy78qL06vh45xkk9bHbdf+7Ao1RQKmqiB\n"
+"NL5XnjBu+YX535WG7t7Su3mTCJXYHvn72ATxry8yhSLgWqt81STkRwc14HmrOGG8\n"
+"Gw7bz7y5vikj/rnPyr7ry+QRgNNDDayAqenAu2vEAzWir0RQC/iZ9rc/r7YQWGgL\n"
+"Xrd4TQ6rTZePARhwB3VomnLDDvLvi2oq/jPzLKSYM2a7qj/vBSbJ/NnNaDW5Ccew\n"
+"RjMI1lIHeedqYTVAW/CKoSEPcFSAzi/Ija0gcWLgX5xsFDGIYBepAX0KS9426kMu\n"
+"0r/V66zmPMusMilqRTx7KW+jZMVxXVc2zClcdmohMmtjsbqLkczprfSbdGswMv9Q\n"
+"I1ktHJHIRD0vPeZXnvKZsRKZw3sKb0ltZi33ZxCJFQPeGGtM5aAFthj6awcXy6Tt\n"
+"DPUQdCU/vh1zmGRAX17/Xb0irfvN+GhQLEl42pzhigJXc/rCG3a4Na8wT+xAIZVf\n"
+"WUI7hMslx5wA+iB4lrAjCq0YIrjINI/lHYpotXUZGmz5wz0jOciTmXMSx9du4cpk\n"
+"fIQJfR+fr5tG3fjHMgSP+p+RewHkd/7RUAmHC2k3cuk5pCJvUVJrhUIqsi1fa0LG\n"
+"GA0UU6Nr9tpYdNr1WkbKQjxTg0D//AXe61jmUS5XUU4AQf6zQVfN0TMtmuYeacbK\n"
+"4r6Z1CSIRbsgcnL1BN8GSd4KddkCqSk941aJUCoX+77ou4t0btVSB9FnLKipigtE\n"
+"E/Rpmv+81lA4fLiIag62/pcJ3uppsZ9aaHdR10SMmuCjAVLYHqhJfrHHn32dyqLK\n"
+"UI8kEZJ6GQzHLUXcGbbdnk1Qm6JwO8TeF/oQvh9y9py+oAyFy0qzP2UeUMUI2yRQ\n"
+"mlWSy+wX1DbVDQ3UHwJjWp65CgyYXuW8eCB0AbyF0kF4KGf7/7Ae7tEGbmYSm5MA\n"
+"71z+Azxtv5gRyRb787V2dyo0wcmbRlL7iUBVXNM/czQo31tAZIwLc+lKNp0SPH6g\n"
+"gJ2yX/GeDSFNAeEVUZ/f4KZIa7QQsnGWrUr+agSnQFkySmIjWYjwC/abJwah0v0d\n"
+"ulwr3tECaaXtoWVdYXa3utEclBz9umBwMJ9MQCm4Kx7dTYUWFT3bMM/ESTkGPcfm\n"
+"m+C4FsqFBs80WY0ududu50vTDSdJt1RqZ7Sg6DNH6acBvWyXOpT5mPJKUjnSFwyG\n"
+"oVLgv0aDDx7lLZdCkhyz/Ff5LNmBgQsjGllPszJ2gTZxZ5LD68S4kUirQG/qtzlS\n"
+"PGfDOC79SMZGgsoAnr4wV3RUTxsTVFlxVHsBMB+EXOFHAr3wHTVxUGBbGzxBlQ9w\n"
+"I/jlu8LIIexXAU75HS5KCGGfg0Z7BLqEzqpMKqcBQC7BD7GnCXrDSQ2DCXnl7bLN\n"
+"lIrQ/z2Y8AgSdED46R40MqyyN6CPPNiOCjONHZ30fLEXuEgCp4R/+x0WWsWpjGk2\n"
+"Ydkc03cx/X6moUYxB5HTqTodBmAQuWMX0rxFDrnR0SWghWjdWth9gjd+dvZ82tt1\n"
+"UMUywDPhcYchtUi2lnqnYJm5p00GN9Mk14MC5ZC5qP57IJVqxu0ktOMpks+CLPnz\n"
+"qp9OBpI4sIzd0y0aUJC2Gd+E9aAhlREIiicyBDmxLdk1i37QeeCralI3eubLNmE+\n"
+"CjDjD8t8FUGPpKglSD3lfLTqbp2TUvyWfvJC6ulFPNsAbeLHTnPnpyPQmWxhMNGt\n"
+"h67B9tbYww2TvNwqIgmB4+YIR4/pSs15TpAqvuUvjpmRwGklqgiSmrQrlIxCxux/\n"
+"mfsaL3KE97wm8BsaMpMkjUL7ByTIFhFZ/gHPTxaFpbqTZ4G+lABLgp3bIsB9Dl/P\n"
+"ovoqX+qL2Mq9T0GrVJGfRBuA5hISw63hx5zdsj2Cj3A3khHPqR+GRN/rVYUuOpLm\n"
+"z3v5pU/74vZRmNMAIhyhmweSEPNtyVkgSdgbFErqvhxN0om2Cd/7cWh2g5BXHyUL\n"
+"PBr7ZkgfsE9TnuDH7Z0JoBqXJki+MO6nqz73oH2Mm86yxcXp6O/ieKTollrUJ3yQ\n"
+"P6hLcEbYPzUV99del7Va5Wi0nn0wbRXCGVQdwY+iWc7pT+VVlncyg0TvLXi0OtOt\n"
+"O8xbT2DAzVXxMwOsKV9ZgS/0dtwzwICpnTzBI/47V8GYhHbOUNTBPZ52GaXMeWlX\n"
+"cuRGb0+7OkKWuriyOQ5z5xaASCVfqgnOwSZYiAk0gcDoK+JHdr64/sMoJhH87R4i\n"
+"2TO90whkScgiGR7A06Ba42bT1nJtI6pxvzdB2b4BDAs2Lr2OdcB3BY1dtzKjFkw/\n"
+"qfIw3F55UQwcs84ZEFQDAB/tmfNHajblDFpXR4N5QvU/PdWVWJUub7oNyhIX6ruu\n"
+"ln4H7lpTUHJZ7jkr1qpnvkztZtHGlpJ0QdUHgyMYER1xU58Hg77yzIW3EdAa2PyK\n"
+"1t4udKbQKChShlShIMzwzj57ss/69QobrpYAHYi6IRMaMUGBfipGBACK3yeXsXz0\n"
+"c3Q2J5vI6QbxNsiJ5t7Ry1IqotbJcU7HND/yVUAUbEg5CpEDOSeSOW/ulyLuFxEV\n"
+"lRTwIO/68BoIoR7umlP23/1N5OYzaBHhH2nThILBovHeJRXnGXSgeFfwSj7LIYEV\n"
+"c1MdDSg/HzoADPXyEPLzqFzHRHeNiqEolmOPnFh0hRzbMZ0W5TQPDGWJdF21g816\n"
+"vA0WW4UQjLM+vnX9kKKLA1ut+9JWk1dGKsmWtdWUDfJjUP/L6dS4OYEl6O6+SjM9\n"
+"GcyGvHTiC5OpJllYpvELP/NjtTf9or8Bmruuga/axeOuS5ocYLK/sGRlmO6Z96da\n"
+"QSlyGWEQAnM2D1cDmdd4CetPslOVIcQ41+coWCi2xg3UjO/bFK1CA4R1rb4ekXfs\n"
+"s5U2XChyHhUPgl57y1r0ILXRXWJTJ0/F9hhu4aYQVFeIV/IuzJbmTKKkAcCOH6ys\n"
+"qnu2BXz8Pm2tU10JFfRcuZ8rHuUyUErA40ESsLijON98GMwL4Rat9ZSCNS5hlK7y\n"
+"yRJdr0ITp8oTbduAoulgWOvtcw1L87QBVojWz3cbhXra+WITirYuGNbzfmZn1WQM\n"
+"kukEZUEHSypGOrHr1XiuY4Rw/DBaJSLyZ+VybEOfXqXkDBh5s1ayypBvzrzFZCIn\n"
+"PJxIVsvrkhrpEbTJ9d7zLWjhOa9ZWw8lAubllbGm+7qCfdHmGsfBtvJdzx6zhB1Y\n"
+"otL/PCis2XVTBEDJeB8pGqKFOZjNz8PC5qP+ymtAfy2ktl/u4HsFlxV7CsEKGYPm\n"
+"p3LqnhPUy5M5gin4E4uPPyzzD2kcM3way49FKWUKlblQU0SyWtHRmMB3vcVmyT85\n"
+"BRULXF7jgog7XR/EMltwQyJI6GcUCrnWZu+G0BEwXG+CsgCzE7assDavc1NSGLZM\n"
+"rmzXiFFyfk7CE6lW2Lm+oWaFwKdvpmNZJFGGX8ZHRE9ZvkFMnfw9MYf2W7xa0jf7\n"
+"k3c6X5wMuk9mznVtq5itNFVXh1mT1ujeWOiiqyH5UhQQjj6O+ZXt4gqt/jT6dd1i\n"
+"jRuhhxaUGOlhpVBW/ySXhZ+HgOy9aCJ/bgjRGaqGixogk4f4rcgigHruwTpOQuDn\n"
+"xDZ3Xns70S40WtHSYN+Gbl9nIh4yl78aNnA4FVtTAuLlVKEKlMJi9OBFuP5TEczG\n"
+"+0HTwL/VPSCI+8FUZBhlz3YwecYq6dY5mS46+luPW+5Wl+5jtzb8V9oxVnRx2hQq\n"
+"B5HJsM5FOOhHDHMXoCsevj7N/ufK7cU7Wbr0DkgYRwvb0ZJB5WYgcaQ0W7aduhGb\n"
+"MQsandhP8Ajb2cmLobi3mHHPbcEkvjT8JP9Sim5xtfF+oCMMB5ByA5bI2aIFybZm\n"
+"jX9e/V8wNgtpDKDVKPjB3+9dj5gU1N5JsrjQwQDB0kVRMWdpJCtD4hZ2+T/QE3SI\n"
+"f8Rdk8pj8qBzRPbnhW6qsoWZdjMRC8qixZqHw4jol09UF7Ab9hjEF5ZDTfNGXwy8\n"
+"/hz8su+mr8hhrlCrOF2vBYUayAA96zhbDWfg3Pdxo9bTn3/DmyAngL4J5Gu679xK\n"
+"rWN4j7uQG4bzTa8WJb09/lW49UzWvmrz0c6/yexk3T//xDD067FafdnP5pYs4Cvp\n"
+"rCoHpXbKjxx99DJmb5iXW0JRLSpFSCbf1HPHbmzST3minSXap5FCWDJcSgExKIJp\n"
+"DXZ9rk0LMnQA74MWC5gjjM+5t0AHKuNRhJbQSwYWTKqeApXho53T/COlfDlSs2tb\n"
+"Vz1Ia5z7IOfu1QheE93huNAHT3Ob+mSmUq782SqFPr6uwud/l5uP3HpcuwugdlFm\n"
+"Jw8uBBOQ53W4lLbYfQYTVgieClVhmYMu7Ye0xYZ5B2jf714sjZRMa0LCbsyj58xH\n"
+"uzs8ddNN1fLMzb0JRBE8JWj5PbxhA/sTwMkD7SnEMBUTtP0obmuQ982aTfyvQCH/\n"
+"ve8OUPtYf5XWNv18mpR+h+riMt1Y8Eb6BJzTMFNWagMJAe3JV6A6upHroNFo2FxY\n"
+"1XPRM1Rt0zKo7GD+oXnixfpl1aG8yqZhYo1ZC9buaHwH6zvM+xoiGD0iujeDtpVy\n"
+"Vp6cAqqaGmrNwcPVBLc7hNKrJnbFKyhjL5/xp9j6jQov1aWQ8HsaNvh0p2ljmlwb\n"
+"daTYZcwLgSgPna7HhiqnOSAmXZ7St/qe/b9TqBtIVzwzmtevgMyG98QV0syFP5X6\n"
+"2Jc1g9733sTZp7njq4Cu07JhpICpinhLWR3nkODJbjk/mpLcQZgtV6W749AUo8oT\n"
+"jRVEJ8MpCo1h0bVDxsRnA3DrMneD88L8/b10aHs+bPm1HKbCmT+kJAFaUQNa8JvJ\n"
+"pReN37qTWvZCte7vaPAIP5cboATMu/J4t3izpm+YJoJlWcIegGx3kQ+17P4MbgDl\n"
+"S93U4sOLvTk9+MoyPo9yGWU/zHgzcQ6wCFdzWMDRswuh+/4TJ2+yg6maq3iBtj39\n"
+"gNLMR+sRgGGvYisqE9bfvNQy5IWrABBKcSBTXeTM1DmW6jv3TI8DoCzCbpjqcIwT\n"
+"u2J+7k8wJEHPcAwnBjlyWphVvwNwM0cXqOnlJZ/4z7OGgjiNEem7TMuvxk+YkiXK\n"
+"OzftdTjeIpzBwsGRP8/teMBpjS95M7GloKtxO+muBVxXbmsq8GBRC9vtNJ2Ma/xP\n"
+"bXvd+7caytD3ob6ZfOzCpi4ZS8uByEfIMxlgZ5Sn3jhgEkcIU+YW9b3teMZOuWdA\n"
+"QpDCoMpXaHVyRqwVV59JjmftiBnNBEo1/QzRj2UxRi7fHMfmNxL5LRM4CHSLUSCq\n"
+"Y3A3pkxvBHUzemhynSFvtCPa8GHiUpe9so0V/2hlgaENAVELPjMlWytaYufRllgy\n"
+"tUnCd32C5PrrmYzMKnxKRPXLcxLgziruJGSks9vIspoPk0pWgkZm+M9fRpJKlWHF\n"
+"yT9OOGBW2yynw/yvXssxJmdUDxVcWL4uS2bZc4s0Zc6RSL9uQPjZVX0JLj+cXfx4\n"
+"93Gn5bDhMgm+CGM6j3RiAAD7tT5V0sytNFjXd1A4U1u8yj3wzhKqOtZpDmuGUlMn\n"
+"EODu7I5KtWxOTPThy7TecI5r+F/6KL+2MOtRhj2PmlT/Xed6PaAmDkQeiXGps08x\n"
+"u0JIpuB61axvT4PAsKZNUd4ExbzNxRDAARUMgY8krpmyKZyHVFIQ19uHM2lGl9/i\n"
+"h3PKlLHYI8RsHutHElzq+F5tWd5AA99LVRZX4axAVIQNiqRg8IMSoCwUaCCbjUMz\n"
+"sJCo2t36GYk5S2BRnfrCqYoZRHw+ENYN0tDEMhXq1OqjvNHW3TzL3DsUhM6EZU5n\n"
+"cRR4ynUvPqqWFphLefRW10vCtaW9roJQZyFYf9kd8xgW/BhcDNbTTaQ1U6xCHgX+\n"
+"78DKee/NvY1WIEBR8X0iVk5XlSJb14eRtxNawXFyebVdmC/DiMNgnTBncMbePnZi\n"
+"KCl1r5xqo7tSIoJ6Z0l6qINd89T9fcg9mujTVwsfQ+5/kdEy0Iw7CQcTOGvMaoPX\n"
+"IAJlWSVeZ8eu8kmsD1Z8ewoPufMKiY4cPRAK5bCDgsrK6bAExOlCwPnNNM8Ym1Hz\n"
+"aYFeGs5sW468Qww+Nbl5xcNFKtwUKZ6EebRHjwttiyTgCdAhv9wL1u2WFydWWgkG\n"
+"rwUbNpSLKls+pijCeJAscvxzbZz96iOaYrY8IyzGBFwfgFAESfnzBc8SQjZzMzoO\n"
+"vmYIRon2m/5w5AZA2IjQ4VxXJDK6XExD/ZLsxNXzMnROD++hE+s8DvPlRPmN4egF\n"
+"gAzJs/9t7IyE/dDf7gSSBqzEBbwduD8ozzYHwELUc4ERdRzjEdBM0azT61g7Yilr\n"
+"iT5Hy+2iw/pNwiqVOYiAbj2lwcoMlFZmdxviD4IMXdsNVWsCAVJL0PqIh1UDDb3z\n"
+"Urv3idBJeSBuuFr6AFS6kAgvrwV/pEGoBoHuyii/rZxVugGKeuMynKEvSHuFNuQU\n"
+"qIHcNgqQR34v2Ut5pQ1R8s7K3Rae/AhE5GncJa6FJmB9TF8MYMu9PlSZV/eGv8UL\n"
+"IDWQ7sY3NdhZini//xtwPqIw29yOeZ0X6Aqsek9tfh21UwKSpHb7T+PwXYmoB+23\n"
+"p3FXkP/rv4AGRq1xJqFYzKJvwsXqTFuNFWP74yhTg6rC90w2p5TeH1rJMAnv4u0L\n"
+"hGtG/NL+D1Tzdf00TYAjno5Ia5dQJDd/eO+Ygqnhl6hAqGtS6r9JhIEXw1nQD7SC\n"
+"lj96ZuKdUWO8rpIiAtvHAsn++xvMVPm/S1SwA8oE049iVwS8/eNNiMKoSlTlYc7o\n"
+"pusBZQrVF4We4HHYFjysBbcXlvoXDd8LkZ8Nh63VQPnoIGNKH2U6aXCnQcJ8dZqO\n"
+"DNxL4uyM4A578FUUR6vxqt2asnLHQ0Z7pPE4uqtz/WgbiHI/i2oHS8oe1clsifCw\n"
+"3ZY33kflqLftkTNka1oiftDb0OqFLjkS7/AUorqHazw53gM3gqJY5EXA3Px9+nhu\n"
+"NzxSK/t41JoCfgQJHMkIWb3yUcO4OFZeGCeAxIJY95hv/brt6/WNielXjNaohYvc\n"
+"lsSUHEJRHwVxQmWK0LS+g13HAgOI7cNt3MA8sSkzTneHGFgEvmrSyb0wCEmushC9\n"
+"mjQThvaxfQk9douA/cR2bHr7axXqv9vjztmxUr0a30a7lvLMBQbJmFtJJylW+tJe\n"
+"v/vKNOB+9mK793cttr2JFnMhwUKFKWiFDQJtxw/eLQWY4BJ19Rs2x4BJgmV+u1jB\n"
+"zR8uvxuArG/cqVEJsoC6uuSzhAWSwdvumijO6yuyWF6nHY6aAcy8dyFQlDFHAd+/\n"
+"J05Lrbzj4N9lcI7hPalh0uMdERGvtUdT8QRm5ebP1zogYEkZk/1GOU29dMawkAt/\n"
+"SWhp2yWdjLt8f5HQKu72vUF/yyTfzfdqQqJwfthP7+vp+sHDO85AMF45uU9g3pxW\n"
+"IbXSbZ4fFGC1/41db/2GOHFgaheMXj0SIWHqQE1jtihr3BBBO4b3Ccz5QCnrn48J\n"
+"8L+QRdh4a/cAx4ty/oHEiXwpSBBSFRl5+y2NijC8GITA5dRjCRWP+Y0zuTrJ7j1a\n"
+"h+3kGs1kxqskhaEuhXnXyknGLjXrU+ewRGhHzP23o5betVhX+c1XjVqmJNZ5OPn/\n"
+"wrqx/XwoIl/3F5lMmGDG9mPtyg0E227nKl9Sy0Vbwx2tu1unjOlzSCa7lpoD4TIX\n"
+"PBJ5+Zb0CE6HEt3V0ec1m4uUe/xObAnzyr4UbzdqLaMy8vTcF/qsncXyPBjwqdjR\n"
+"ReDAtt99bAPY4roPKGt8dgKUPE0t/XoY+SlmUp75TkZDXrOIJXpEW0GpLPf53T+W\n"
+"Ex3KtfLAnZzrw8+dIageY7IgoQ85h3sYE7uEI8QlcO/o4udqUzTp4Sn4sWvdTLrx\n"
+"W7ImvK2rsU5ubVdsEaFKM7+7nxGn2JyMpIWFz0SbP34CkXHhrXxyRD+GhMIDHFxV\n"
+"uBnZnjJsw+ooIm1rL4I7/VMWEwmVegreT6w9Gsmb5igw+zu9v2YBgTOhysA9XZd4\n"
+"7O3VjqKkhTXcBqdpRWuz8gPQ+4rfwij28Gg2alG04Eh3G3868NOCFJhhaHVmwYR2\n"
+"ygRm6N9eDW1bHhYSN75HSEb6aIebk+1AT4S1QtJaPSH0EduIXO++JYAs+jIFKy2c\n"
+"jCVFlO/LbXl7iCdXurJHpSbMNmZFNUri6zEolENODLwke836jBOKiVrWzLnEMxHI\n"
+"WDDTpLTYhR3C7sEprpEQm9SX2Eik3WxVb4ZTb7SZFU1y1d4tWnjGu3U1D+vO9wVq\n"
+"Sss9lDipbkhQ9k4j1/Pqozaxvi8lYLbh3WEjK3Iwpr66Bk6Ai2oRg4b+7vzV4o+6\n"
+"L47JPJhajdHac0CIlmupyA4eejECS6OpoLDf5Wr/616k3dxM//3kAWGUnXVw9GSo\n"
+"UF5W8AaKlaGZ6EZk09NyGSFRjEs18z+g5ckviGF0EhZI7ZPWQQmlqWUsL9O0S4GO\n"
+"ZZ9f0UhNmHEspcugbs7e1yfjwGVyxIBkrmxpkmfHE4Gb47UGlJevg2OvZOPT3wMH\n"
+"vOds2BtqdT3tuss9k+7hsISGse7isEOb7TN5MHb6yyzqnCUZhp5m3Iag7TUkiyfU\n"
+"jKH5R13tHqKUoJ2rofWoLO2H5xSfp/lqF9sLd4rJ+Pbjhiuvfwz5copYsuTNL4kB\n"
+"SPUikHlTxSOgTBYNV77qxpsqOI3+iziCrSqHsxNdlaA1T3fiq6SeZBNdD822AYm9\n"
+"L5hbcgpDPEEwT/n5kWNbRNueerJkJwboaOnT1ZX1601Pwj5QDi+YM1NYy5PsdWxb\n"
+"bPGpQyZ+uf917q9gV7Ykr5cic10YD11khAghr0n6fYfb8Ijc22uP6m47KItDqQc1\n"
+"eFym149F56B0yg5FR85Arg==\n"
+"-----END MESSAGE-----\n"
+" signature Of+jvQKzH9ot2NV5twlDO2CFbzLSB4absWTwG58TCHb+TWgQi3z6SZIoTnGGY/uicJgEkCN++bZZR49GiyHyCQ\n";
diff --git a/src/test/test_hs_intropoint.c b/src/test/test_hs_intropoint.c
index b207cd4ce3..c6197875b5 100644
--- a/src/test/test_hs_intropoint.c
+++ b/src/test/test_hs_intropoint.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -69,10 +69,10 @@ helper_create_intro_circuit(void)
return circ;
}
-static hs_cell_introduce1_t *
+static trn_cell_introduce1_t *
helper_create_introduce1_cell(void)
{
- hs_cell_introduce1_t *cell = NULL;
+ trn_cell_introduce1_t *cell = NULL;
ed25519_keypair_t auth_key_kp;
/* Generate the auth_key of the cell. */
@@ -80,39 +80,39 @@ helper_create_introduce1_cell(void)
goto err;
}
- cell = hs_cell_introduce1_new();
+ cell = trn_cell_introduce1_new();
tt_assert(cell);
/* Set the auth key. */
{
size_t auth_key_len = sizeof(auth_key_kp.pubkey);
- hs_cell_introduce1_set_auth_key_type(cell,
+ trn_cell_introduce1_set_auth_key_type(cell,
HS_INTRO_AUTH_KEY_TYPE_ED25519);
- hs_cell_introduce1_set_auth_key_len(cell, auth_key_len);
- hs_cell_introduce1_setlen_auth_key(cell, auth_key_len);
- uint8_t *auth_key_ptr = hs_cell_introduce1_getarray_auth_key(cell);
+ trn_cell_introduce1_set_auth_key_len(cell, auth_key_len);
+ trn_cell_introduce1_setlen_auth_key(cell, auth_key_len);
+ uint8_t *auth_key_ptr = trn_cell_introduce1_getarray_auth_key(cell);
memcpy(auth_key_ptr, auth_key_kp.pubkey.pubkey, auth_key_len);
}
/* Set the cell extentions to none. */
{
- cell_extension_t *ext = cell_extension_new();
- cell_extension_set_num(ext, 0);
- hs_cell_introduce1_set_extensions(cell, ext);
+ trn_cell_extension_t *ext = trn_cell_extension_new();
+ trn_cell_extension_set_num(ext, 0);
+ trn_cell_introduce1_set_extensions(cell, ext);
}
/* Set the encrypted section to some data. */
{
size_t enc_len = 128;
- hs_cell_introduce1_setlen_encrypted(cell, enc_len);
- uint8_t *enc_ptr = hs_cell_introduce1_getarray_encrypted(cell);
+ trn_cell_introduce1_setlen_encrypted(cell, enc_len);
+ uint8_t *enc_ptr = trn_cell_introduce1_getarray_encrypted(cell);
memset(enc_ptr, 'a', enc_len);
}
return cell;
err:
done:
- hs_cell_introduce1_free(cell);
+ trn_cell_introduce1_free(cell);
return NULL;
}
@@ -122,7 +122,7 @@ static void
test_establish_intro_wrong_purpose(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -154,7 +154,7 @@ test_establish_intro_wrong_purpose(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
@@ -198,7 +198,7 @@ static void
test_establish_intro_wrong_keytype2(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -230,7 +230,7 @@ test_establish_intro_wrong_keytype2(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
@@ -239,7 +239,7 @@ static void
test_establish_intro_wrong_mac(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -258,7 +258,7 @@ test_establish_intro_wrong_mac(void *arg)
tt_assert(establish_intro_cell);
/* Mangle one byte of the MAC. */
uint8_t *handshake_ptr =
- hs_cell_establish_intro_getarray_handshake_mac(establish_intro_cell);
+ trn_cell_establish_intro_getarray_handshake_mac(establish_intro_cell);
handshake_ptr[TRUNNEL_SHA3_256_LEN - 1]++;
/* We need to resign the payload with that change. */
{
@@ -269,7 +269,7 @@ test_establish_intro_wrong_mac(void *arg)
retval = ed25519_keypair_generate(&key_struct, 0);
tt_int_op(retval, OP_EQ, 0);
uint8_t *auth_key_ptr =
- hs_cell_establish_intro_getarray_auth_key(establish_intro_cell);
+ trn_cell_establish_intro_getarray_auth_key(establish_intro_cell);
memcpy(auth_key_ptr, key_struct.pubkey.pubkey, ED25519_PUBKEY_LEN);
/* Encode payload so we can sign it. */
cell_len = get_establish_intro_payload(cell_body, sizeof(cell_body),
@@ -284,7 +284,7 @@ test_establish_intro_wrong_mac(void *arg)
tt_int_op(retval, OP_EQ, 0);
/* And write the signature to the cell */
uint8_t *sig_ptr =
- hs_cell_establish_intro_getarray_sig(establish_intro_cell);
+ trn_cell_establish_intro_getarray_sig(establish_intro_cell);
memcpy(sig_ptr, sig.sig, establish_intro_cell->sig_len);
/* Re-encode with the new signature. */
cell_len = get_establish_intro_payload(cell_body, sizeof(cell_body),
@@ -299,7 +299,7 @@ test_establish_intro_wrong_mac(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
@@ -309,7 +309,7 @@ static void
test_establish_intro_wrong_auth_key_len(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -328,9 +328,9 @@ test_establish_intro_wrong_auth_key_len(void *arg)
sizeof(circuit_key_material));
tt_assert(establish_intro_cell);
/* Mangle the auth key length. */
- hs_cell_establish_intro_set_auth_key_len(establish_intro_cell,
+ trn_cell_establish_intro_set_auth_key_len(establish_intro_cell,
bad_auth_key_len);
- hs_cell_establish_intro_setlen_auth_key(establish_intro_cell,
+ trn_cell_establish_intro_setlen_auth_key(establish_intro_cell,
bad_auth_key_len);
cell_len = get_establish_intro_payload(cell_body, sizeof(cell_body),
establish_intro_cell);
@@ -344,7 +344,7 @@ test_establish_intro_wrong_auth_key_len(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
@@ -354,7 +354,7 @@ static void
test_establish_intro_wrong_sig_len(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -373,8 +373,8 @@ test_establish_intro_wrong_sig_len(void *arg)
sizeof(circuit_key_material));
tt_assert(establish_intro_cell);
/* Mangle the signature length. */
- hs_cell_establish_intro_set_sig_len(establish_intro_cell, bad_sig_len);
- hs_cell_establish_intro_setlen_sig(establish_intro_cell, bad_sig_len);
+ trn_cell_establish_intro_set_sig_len(establish_intro_cell, bad_sig_len);
+ trn_cell_establish_intro_setlen_sig(establish_intro_cell, bad_sig_len);
cell_len = get_establish_intro_payload(cell_body, sizeof(cell_body),
establish_intro_cell);
tt_int_op(cell_len, >, 0);
@@ -387,7 +387,7 @@ test_establish_intro_wrong_sig_len(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
@@ -397,7 +397,7 @@ static void
test_establish_intro_wrong_sig(void *arg)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
or_circuit_t *intro_circ = or_circuit_new(0,NULL);;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
@@ -429,17 +429,17 @@ test_establish_intro_wrong_sig(void *arg)
tt_int_op(retval, ==, -1);
done:
- hs_cell_establish_intro_free(establish_intro_cell);
+ trn_cell_establish_intro_free(establish_intro_cell);
circuit_free(TO_CIRCUIT(intro_circ));
}
/* Helper function: Send a well-formed v3 ESTABLISH_INTRO cell to
* <b>intro_circ</b>. Return the cell. */
-static hs_cell_establish_intro_t *
+static trn_cell_establish_intro_t *
helper_establish_intro_v3(or_circuit_t *intro_circ)
{
int retval;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
uint8_t cell_body[RELAY_PAYLOAD_SIZE];
ssize_t cell_len = 0;
uint8_t circuit_key_material[DIGEST_LEN] = {0};
@@ -503,6 +503,24 @@ helper_establish_intro_v2(or_circuit_t *intro_circ)
return key1;
}
+/* Helper function: test circuitmap free_all function outside of
+ * test_intro_point_registration to prevent Coverity from seeing a
+ * double free if the assertion hypothetically fails.
+ */
+static void
+test_circuitmap_free_all(void)
+{
+ hs_circuitmap_ht *the_hs_circuitmap = NULL;
+
+ the_hs_circuitmap = get_hs_circuitmap();
+ tt_assert(the_hs_circuitmap);
+ hs_circuitmap_free_all();
+ the_hs_circuitmap = get_hs_circuitmap();
+ tt_assert(!the_hs_circuitmap);
+ done:
+ ;
+}
+
/** Successfuly register a v2 intro point and a v3 intro point. Ensure that HS
* circuitmap is maintained properly. */
static void
@@ -512,7 +530,7 @@ test_intro_point_registration(void *arg)
hs_circuitmap_ht *the_hs_circuitmap = NULL;
or_circuit_t *intro_circ = NULL;
- hs_cell_establish_intro_t *establish_intro_cell = NULL;
+ trn_cell_establish_intro_t *establish_intro_cell = NULL;
ed25519_public_key_t auth_key;
crypto_pk_t *legacy_auth_key = NULL;
@@ -532,7 +550,7 @@ test_intro_point_registration(void *arg)
tt_assert(the_hs_circuitmap);
tt_int_op(0, ==, HT_SIZE(the_hs_circuitmap));
/* Do a circuitmap query in any case */
- returned_intro_circ = hs_circuitmap_get_intro_circ_v3(&auth_key);
+ returned_intro_circ =hs_circuitmap_get_intro_circ_v3_relay_side(&auth_key);
tt_ptr_op(returned_intro_circ, ==, NULL);
}
@@ -548,7 +566,8 @@ test_intro_point_registration(void *arg)
tt_int_op(1, ==, HT_SIZE(the_hs_circuitmap));
get_auth_key_from_cell(&auth_key, RELAY_COMMAND_ESTABLISH_INTRO,
establish_intro_cell);
- returned_intro_circ = hs_circuitmap_get_intro_circ_v3(&auth_key);
+ returned_intro_circ =
+ hs_circuitmap_get_intro_circ_v3_relay_side(&auth_key);
tt_ptr_op(intro_circ, ==, returned_intro_circ);
}
@@ -569,7 +588,8 @@ test_intro_point_registration(void *arg)
/* Check that the new element is our legacy intro circuit. */
retval = crypto_pk_get_digest(legacy_auth_key, key_digest);
tt_int_op(retval, ==, 0);
- returned_intro_circ= hs_circuitmap_get_intro_circ_v2((uint8_t*)key_digest);
+ returned_intro_circ =
+ hs_circuitmap_get_intro_circ_v2_relay_side((uint8_t*)key_digest);
tt_ptr_op(legacy_intro_circ, ==, returned_intro_circ);
}
@@ -580,15 +600,8 @@ test_intro_point_registration(void *arg)
crypto_pk_free(legacy_auth_key);
circuit_free(TO_CIRCUIT(intro_circ));
circuit_free(TO_CIRCUIT(legacy_intro_circ));
- hs_cell_establish_intro_free(establish_intro_cell);
-
- { /* Test circuitmap free_all function. */
- the_hs_circuitmap = get_hs_circuitmap();
- tt_assert(the_hs_circuitmap);
- hs_circuitmap_free_all();
- the_hs_circuitmap = get_hs_circuitmap();
- tt_assert(!the_hs_circuitmap);
- }
+ trn_cell_establish_intro_free(establish_intro_cell);
+ test_circuitmap_free_all();
UNMOCK(hs_intro_send_intro_established_cell);
}
@@ -674,7 +687,7 @@ static void
test_introduce1_validation(void *arg)
{
int ret;
- hs_cell_introduce1_t *cell = NULL;
+ trn_cell_introduce1_t *cell = NULL;
(void) arg;
@@ -714,25 +727,25 @@ test_introduce1_validation(void *arg)
ret = validate_introduce1_parsed_cell(cell);
tt_int_op(ret, OP_EQ, 0);
/* Set an invalid size of the auth key buffer. */
- hs_cell_introduce1_setlen_auth_key(cell, 3);
+ trn_cell_introduce1_setlen_auth_key(cell, 3);
ret = validate_introduce1_parsed_cell(cell);
tt_int_op(ret, OP_EQ, -1);
/* Reset auth key buffer and make sure it works. */
- hs_cell_introduce1_setlen_auth_key(cell, sizeof(ed25519_public_key_t));
+ trn_cell_introduce1_setlen_auth_key(cell, sizeof(ed25519_public_key_t));
ret = validate_introduce1_parsed_cell(cell);
tt_int_op(ret, OP_EQ, 0);
/* Empty encrypted section. */
- hs_cell_introduce1_setlen_encrypted(cell, 0);
+ trn_cell_introduce1_setlen_encrypted(cell, 0);
ret = validate_introduce1_parsed_cell(cell);
tt_int_op(ret, OP_EQ, -1);
/* Reset it to some non zero bytes and validate. */
- hs_cell_introduce1_setlen_encrypted(cell, 1);
+ trn_cell_introduce1_setlen_encrypted(cell, 1);
ret = validate_introduce1_parsed_cell(cell);
tt_int_op(ret, OP_EQ, 0);
done:
- hs_cell_introduce1_free(cell);
+ trn_cell_introduce1_free(cell);
}
static void
@@ -740,7 +753,7 @@ test_received_introduce1_handling(void *arg)
{
int ret;
uint8_t *request = NULL, buf[128];
- hs_cell_introduce1_t *cell = NULL;
+ trn_cell_introduce1_t *cell = NULL;
or_circuit_t *circ = NULL;
(void) arg;
@@ -774,12 +787,12 @@ test_received_introduce1_handling(void *arg)
/* Valid case. */
{
cell = helper_create_introduce1_cell();
- ssize_t request_len = hs_cell_introduce1_encoded_len(cell);
- tt_size_op(request_len, OP_GT, 0);
+ ssize_t request_len = trn_cell_introduce1_encoded_len(cell);
+ tt_int_op((int)request_len, OP_GT, 0);
request = tor_malloc_zero(request_len);
ssize_t encoded_len =
- hs_cell_introduce1_encode(request, request_len, cell);
- tt_size_op(encoded_len, OP_GT, 0);
+ trn_cell_introduce1_encode(request, request_len, cell);
+ tt_int_op((int)encoded_len, OP_GT, 0);
circ = helper_create_intro_circuit();
or_circuit_t *service_circ = helper_create_intro_circuit();
@@ -788,9 +801,9 @@ test_received_introduce1_handling(void *arg)
/* Register the circuit in the map for the auth key of the cell. */
ed25519_public_key_t auth_key;
const uint8_t *cell_auth_key =
- hs_cell_introduce1_getconstarray_auth_key(cell);
+ trn_cell_introduce1_getconstarray_auth_key(cell);
memcpy(auth_key.pubkey, cell_auth_key, ED25519_PUBKEY_LEN);
- hs_circuitmap_register_intro_circ_v3(service_circ, &auth_key);
+ hs_circuitmap_register_intro_circ_v3_relay_side(service_circ, &auth_key);
ret = hs_intro_received_introduce1(circ, request, request_len);
circuit_free(TO_CIRCUIT(circ));
circuit_free(TO_CIRCUIT(service_circ));
@@ -800,17 +813,17 @@ test_received_introduce1_handling(void *arg)
/* Valid legacy cell. */
{
tor_free(request);
- hs_cell_introduce1_free(cell);
+ trn_cell_introduce1_free(cell);
cell = helper_create_introduce1_cell();
- uint8_t *legacy_key_id = hs_cell_introduce1_getarray_legacy_key_id(cell);
+ uint8_t *legacy_key_id = trn_cell_introduce1_getarray_legacy_key_id(cell);
memset(legacy_key_id, 'a', DIGEST_LEN);
/* Add an arbitrary amount of data for the payload of a v2 cell. */
- size_t request_len = hs_cell_introduce1_encoded_len(cell) + 256;
+ size_t request_len = trn_cell_introduce1_encoded_len(cell) + 256;
tt_size_op(request_len, OP_GT, 0);
request = tor_malloc_zero(request_len + 256);
ssize_t encoded_len =
- hs_cell_introduce1_encode(request, request_len, cell);
- tt_size_op(encoded_len, OP_GT, 0);
+ trn_cell_introduce1_encode(request, request_len, cell);
+ tt_int_op((int)encoded_len, OP_GT, 0);
circ = helper_create_intro_circuit();
or_circuit_t *service_circ = helper_create_intro_circuit();
@@ -819,7 +832,7 @@ test_received_introduce1_handling(void *arg)
/* Register the circuit in the map for the auth key of the cell. */
uint8_t token[REND_TOKEN_LEN];
memcpy(token, legacy_key_id, sizeof(token));
- hs_circuitmap_register_intro_circ_v2(service_circ, token);
+ hs_circuitmap_register_intro_circ_v2_relay_side(service_circ, token);
ret = hs_intro_received_introduce1(circ, request, request_len);
circuit_free(TO_CIRCUIT(circ));
circuit_free(TO_CIRCUIT(service_circ));
@@ -827,7 +840,7 @@ test_received_introduce1_handling(void *arg)
}
done:
- hs_cell_introduce1_free(cell);
+ trn_cell_introduce1_free(cell);
tor_free(request);
hs_circuitmap_free_all();
UNMOCK(relay_send_command_from_edge_);
diff --git a/src/test/test_hs_ntor.sh b/src/test/test_hs_ntor.sh
new file mode 100755
index 0000000000..8a0003d44a
--- /dev/null
+++ b/src/test/test_hs_ntor.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Validate Tor's ntor implementation.
+
+exitcode=0
+
+# Run the python integration test sand return the exitcode of the python
+# script. The python script might ask the testsuite to skip it if not all
+# python dependencies are covered.
+"${PYTHON:-python}" "${abs_top_srcdir:-.}/src/test/hs_ntor_ref.py" || exitcode=$?
+
+exit ${exitcode}
diff --git a/src/test/test_hs_ntor_cl.c b/src/test/test_hs_ntor_cl.c
new file mode 100644
index 0000000000..ed1eda58ea
--- /dev/null
+++ b/src/test/test_hs_ntor_cl.c
@@ -0,0 +1,255 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/** This is a wrapper over the little-t-tor HS ntor functions. The wrapper is
+ * used by src/test/hs_ntor_ref.py to conduct the HS ntor integration
+ * tests.
+ *
+ * The logic of this wrapper is basically copied from src/test/test_ntor_cl.c
+ */
+
+#include "orconfig.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ONION_NTOR_PRIVATE
+#include "or.h"
+#include "util.h"
+#include "compat.h"
+#include "crypto.h"
+#include "crypto_curve25519.h"
+#include "hs_ntor.h"
+#include "onion_ntor.h"
+
+#define N_ARGS(n) STMT_BEGIN { \
+ if (argc < (n)) { \
+ fprintf(stderr, "%s needs %d arguments.\n",argv[1],n); \
+ return 1; \
+ } \
+ } STMT_END
+#define BASE16(idx, var, n) STMT_BEGIN { \
+ const char *s = argv[(idx)]; \
+ if (base16_decode((char*)var, n, s, strlen(s)) < (int)n ) { \
+ fprintf(stderr, "couldn't decode argument %d (%s)\n",idx,s); \
+ return 1; \
+ } \
+ } STMT_END
+#define INT(idx, var) STMT_BEGIN { \
+ var = atoi(argv[(idx)]); \
+ if (var <= 0) { \
+ fprintf(stderr, "bad integer argument %d (%s)\n",idx,argv[(idx)]); \
+ } \
+ } STMT_END
+
+/** The first part of the HS ntor protocol. The client-side computes all
+ necessary key material and sends the appropriate message to the service. */
+static int
+client1(int argc, char **argv)
+{
+ int retval;
+
+ /* Inputs */
+ curve25519_public_key_t intro_enc_pubkey;
+ ed25519_public_key_t intro_auth_pubkey;
+ curve25519_keypair_t client_ephemeral_enc_keypair;
+ uint8_t subcredential[DIGEST256_LEN];
+
+ /* Output */
+ hs_ntor_intro_cell_keys_t hs_ntor_intro_cell_keys;
+
+ char buf[256];
+
+ N_ARGS(6);
+ BASE16(2, intro_auth_pubkey.pubkey, ED25519_PUBKEY_LEN);
+ BASE16(3, intro_enc_pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ BASE16(4, client_ephemeral_enc_keypair.seckey.secret_key,
+ CURVE25519_SECKEY_LEN);
+ BASE16(5, subcredential, DIGEST256_LEN);
+
+ /* Generate keypair */
+ curve25519_public_key_generate(&client_ephemeral_enc_keypair.pubkey,
+ &client_ephemeral_enc_keypair.seckey);
+
+ retval = hs_ntor_client_get_introduce1_keys(&intro_auth_pubkey,
+ &intro_enc_pubkey,
+ &client_ephemeral_enc_keypair,
+ subcredential,
+ &hs_ntor_intro_cell_keys);
+ if (retval < 0) {
+ goto done;
+ }
+
+ /* Send ENC_KEY */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_intro_cell_keys.enc_key,
+ sizeof(hs_ntor_intro_cell_keys.enc_key));
+ printf("%s\n", buf);
+ /* Send MAC_KEY */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_intro_cell_keys.mac_key,
+ sizeof(hs_ntor_intro_cell_keys.mac_key));
+ printf("%s\n", buf);
+
+ done:
+ return retval;
+}
+
+/** The second part of the HS ntor protocol. The service-side computes all
+ necessary key material and sends the appropriate message to the client */
+static int
+server1(int argc, char **argv)
+{
+ int retval;
+
+ /* Inputs */
+ curve25519_keypair_t intro_enc_keypair;
+ ed25519_public_key_t intro_auth_pubkey;
+ curve25519_public_key_t client_ephemeral_enc_pubkey;
+ uint8_t subcredential[DIGEST256_LEN];
+
+ /* Output */
+ hs_ntor_intro_cell_keys_t hs_ntor_intro_cell_keys;
+ hs_ntor_rend_cell_keys_t hs_ntor_rend_cell_keys;
+ curve25519_keypair_t service_ephemeral_rend_keypair;
+
+ char buf[256];
+
+ N_ARGS(6);
+ BASE16(2, intro_auth_pubkey.pubkey, ED25519_PUBKEY_LEN);
+ BASE16(3, intro_enc_keypair.seckey.secret_key, CURVE25519_SECKEY_LEN);
+ BASE16(4, client_ephemeral_enc_pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ BASE16(5, subcredential, DIGEST256_LEN);
+
+ /* Generate keypair */
+ curve25519_public_key_generate(&intro_enc_keypair.pubkey,
+ &intro_enc_keypair.seckey);
+ curve25519_keypair_generate(&service_ephemeral_rend_keypair, 0);
+
+ /* Get INTRODUCE1 keys */
+ retval = hs_ntor_service_get_introduce1_keys(&intro_auth_pubkey,
+ &intro_enc_keypair,
+ &client_ephemeral_enc_pubkey,
+ subcredential,
+ &hs_ntor_intro_cell_keys);
+ if (retval < 0) {
+ goto done;
+ }
+
+ /* Get RENDEZVOUS1 keys */
+ retval = hs_ntor_service_get_rendezvous1_keys(&intro_auth_pubkey,
+ &intro_enc_keypair,
+ &service_ephemeral_rend_keypair,
+ &client_ephemeral_enc_pubkey,
+ &hs_ntor_rend_cell_keys);
+ if (retval < 0) {
+ goto done;
+ }
+
+ /* Send ENC_KEY */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_intro_cell_keys.enc_key,
+ sizeof(hs_ntor_intro_cell_keys.enc_key));
+ printf("%s\n", buf);
+ /* Send MAC_KEY */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_intro_cell_keys.mac_key,
+ sizeof(hs_ntor_intro_cell_keys.mac_key));
+ printf("%s\n", buf);
+ /* Send AUTH_MAC */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_rend_cell_keys.rend_cell_auth_mac,
+ sizeof(hs_ntor_rend_cell_keys.rend_cell_auth_mac));
+ printf("%s\n", buf);
+ /* Send NTOR_KEY_SEED */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_rend_cell_keys.ntor_key_seed,
+ sizeof(hs_ntor_rend_cell_keys.ntor_key_seed));
+ printf("%s\n", buf);
+ /* Send service ephemeral pubkey (Y) */
+ base16_encode(buf, sizeof(buf),
+ (const char*)service_ephemeral_rend_keypair.pubkey.public_key,
+ sizeof(service_ephemeral_rend_keypair.pubkey.public_key));
+ printf("%s\n", buf);
+
+ done:
+ return retval;
+}
+
+/** The final step of the ntor protocol, the client computes and returns the
+ * rendezvous key material. */
+static int
+client2(int argc, char **argv)
+{
+ int retval;
+
+ /* Inputs */
+ curve25519_public_key_t intro_enc_pubkey;
+ ed25519_public_key_t intro_auth_pubkey;
+ curve25519_keypair_t client_ephemeral_enc_keypair;
+ curve25519_public_key_t service_ephemeral_rend_pubkey;
+ uint8_t subcredential[DIGEST256_LEN];
+
+ /* Output */
+ hs_ntor_rend_cell_keys_t hs_ntor_rend_cell_keys;
+
+ char buf[256];
+
+ N_ARGS(7);
+ BASE16(2, intro_auth_pubkey.pubkey, ED25519_PUBKEY_LEN);
+ BASE16(3, client_ephemeral_enc_keypair.seckey.secret_key,
+ CURVE25519_SECKEY_LEN);
+ BASE16(4, intro_enc_pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ BASE16(5, service_ephemeral_rend_pubkey.public_key, CURVE25519_PUBKEY_LEN);
+ BASE16(6, subcredential, DIGEST256_LEN);
+
+ /* Generate keypair */
+ curve25519_public_key_generate(&client_ephemeral_enc_keypair.pubkey,
+ &client_ephemeral_enc_keypair.seckey);
+
+ /* Get RENDEZVOUS1 keys */
+ retval = hs_ntor_client_get_rendezvous1_keys(&intro_auth_pubkey,
+ &client_ephemeral_enc_keypair,
+ &intro_enc_pubkey,
+ &service_ephemeral_rend_pubkey,
+ &hs_ntor_rend_cell_keys);
+ if (retval < 0) {
+ goto done;
+ }
+
+ /* Send AUTH_MAC */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_rend_cell_keys.rend_cell_auth_mac,
+ sizeof(hs_ntor_rend_cell_keys.rend_cell_auth_mac));
+ printf("%s\n", buf);
+ /* Send NTOR_KEY_SEED */
+ base16_encode(buf, sizeof(buf),
+ (const char*)hs_ntor_rend_cell_keys.ntor_key_seed,
+ sizeof(hs_ntor_rend_cell_keys.ntor_key_seed));
+ printf("%s\n", buf);
+
+ done:
+ return 1;
+}
+
+/** Perform a different part of the protocol depdning on the argv used. */
+int
+main(int argc, char **argv)
+{
+ if (argc < 2) {
+ fprintf(stderr, "I need arguments. Read source for more info.\n");
+ return 1;
+ }
+
+ curve25519_init();
+ if (!strcmp(argv[1], "client1")) {
+ return client1(argc, argv);
+ } else if (!strcmp(argv[1], "server1")) {
+ return server1(argc, argv);
+ } else if (!strcmp(argv[1], "client2")) {
+ return client2(argc, argv);
+ } else {
+ fprintf(stderr, "What's a %s?\n", argv[1]);
+ return 1;
+ }
+}
+
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index 039d727cea..fcfb3b992d 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -6,6 +6,7 @@
* \brief Test hidden service functionality.
*/
+#define HS_COMMON_PRIVATE
#define HS_SERVICE_PRIVATE
#define HS_INTROPOINT_PRIVATE
@@ -14,9 +15,12 @@
#include "crypto.h"
#include "hs/cell_establish_intro.h"
+#include "hs_common.h"
#include "hs_service.h"
#include "hs_intropoint.h"
+#include "hs_ntor.h"
+
/** We simulate the creation of an outgoing ESTABLISH_INTRO cell, and then we
* parse it from the receiver side. */
static void
@@ -26,8 +30,8 @@ test_gen_establish_intro_cell(void *arg)
ssize_t retval;
uint8_t circuit_key_material[DIGEST_LEN] = {0};
uint8_t buf[RELAY_PAYLOAD_SIZE];
- hs_cell_establish_intro_t *cell_out = NULL;
- hs_cell_establish_intro_t *cell_in = NULL;
+ trn_cell_establish_intro_t *cell_out = NULL;
+ trn_cell_establish_intro_t *cell_in = NULL;
crypto_rand((char *) circuit_key_material, sizeof(circuit_key_material));
@@ -44,7 +48,7 @@ test_gen_establish_intro_cell(void *arg)
/* Parse it as the receiver */
{
- ssize_t parse_result = hs_cell_establish_intro_parse(&cell_in,
+ ssize_t parse_result = trn_cell_establish_intro_parse(&cell_in,
buf, sizeof(buf));
tt_int_op(parse_result, >=, 0);
@@ -55,8 +59,8 @@ test_gen_establish_intro_cell(void *arg)
}
done:
- hs_cell_establish_intro_free(cell_out);
- hs_cell_establish_intro_free(cell_in);
+ trn_cell_establish_intro_free(cell_out);
+ trn_cell_establish_intro_free(cell_in);
}
/* Mocked ed25519_sign_prefixed() function that always fails :) */
@@ -78,7 +82,7 @@ static void
test_gen_establish_intro_cell_bad(void *arg)
{
(void) arg;
- hs_cell_establish_intro_t *cell = NULL;
+ trn_cell_establish_intro_t *cell = NULL;
uint8_t circuit_key_material[DIGEST_LEN] = {0};
MOCK(ed25519_sign_prefixed, mock_ed25519_sign_prefixed);
@@ -96,15 +100,150 @@ test_gen_establish_intro_cell_bad(void *arg)
tt_assert(!cell);
done:
- hs_cell_establish_intro_free(cell);
+ trn_cell_establish_intro_free(cell);
UNMOCK(ed25519_sign_prefixed);
}
+/** Test the HS ntor handshake. Simulate the sending of an encrypted INTRODUCE1
+ * cell, and verify the proper derivation of decryption keys on the other end.
+ * Then simulate the sending of an authenticated RENDEZVOUS1 cell and verify
+ * the proper verification on the other end. */
+static void
+test_hs_ntor(void *arg)
+{
+ int retval;
+
+ uint8_t subcredential[DIGEST256_LEN];
+
+ ed25519_keypair_t service_intro_auth_keypair;
+ curve25519_keypair_t service_intro_enc_keypair;
+ curve25519_keypair_t service_ephemeral_rend_keypair;
+
+ curve25519_keypair_t client_ephemeral_enc_keypair;
+
+ hs_ntor_intro_cell_keys_t client_hs_ntor_intro_cell_keys;
+ hs_ntor_intro_cell_keys_t service_hs_ntor_intro_cell_keys;
+
+ hs_ntor_rend_cell_keys_t service_hs_ntor_rend_cell_keys;
+ hs_ntor_rend_cell_keys_t client_hs_ntor_rend_cell_keys;
+
+ (void) arg;
+
+ /* Generate fake data for this unittest */
+ {
+ /* Generate fake subcredential */
+ memset(subcredential, 'Z', DIGEST256_LEN);
+
+ /* service */
+ curve25519_keypair_generate(&service_intro_enc_keypair, 0);
+ ed25519_keypair_generate(&service_intro_auth_keypair, 0);
+ curve25519_keypair_generate(&service_ephemeral_rend_keypair, 0);
+ /* client */
+ curve25519_keypair_generate(&client_ephemeral_enc_keypair, 0);
+ }
+
+ /* Client: Simulate the sending of an encrypted INTRODUCE1 cell */
+ retval =
+ hs_ntor_client_get_introduce1_keys(&service_intro_auth_keypair.pubkey,
+ &service_intro_enc_keypair.pubkey,
+ &client_ephemeral_enc_keypair,
+ subcredential,
+ &client_hs_ntor_intro_cell_keys);
+ tt_int_op(retval, ==, 0);
+
+ /* Service: Simulate the decryption of the received INTRODUCE1 */
+ retval =
+ hs_ntor_service_get_introduce1_keys(&service_intro_auth_keypair.pubkey,
+ &service_intro_enc_keypair,
+ &client_ephemeral_enc_keypair.pubkey,
+ subcredential,
+ &service_hs_ntor_intro_cell_keys);
+ tt_int_op(retval, ==, 0);
+
+ /* Test that the INTRODUCE1 encryption/mac keys match! */
+ tt_mem_op(client_hs_ntor_intro_cell_keys.enc_key, OP_EQ,
+ service_hs_ntor_intro_cell_keys.enc_key,
+ CIPHER256_KEY_LEN);
+ tt_mem_op(client_hs_ntor_intro_cell_keys.mac_key, OP_EQ,
+ service_hs_ntor_intro_cell_keys.mac_key,
+ DIGEST256_LEN);
+
+ /* Service: Simulate creation of RENDEZVOUS1 key material. */
+ retval =
+ hs_ntor_service_get_rendezvous1_keys(&service_intro_auth_keypair.pubkey,
+ &service_intro_enc_keypair,
+ &service_ephemeral_rend_keypair,
+ &client_ephemeral_enc_keypair.pubkey,
+ &service_hs_ntor_rend_cell_keys);
+ tt_int_op(retval, ==, 0);
+
+ /* Client: Simulate the verification of a received RENDEZVOUS1 cell */
+ retval =
+ hs_ntor_client_get_rendezvous1_keys(&service_intro_auth_keypair.pubkey,
+ &client_ephemeral_enc_keypair,
+ &service_intro_enc_keypair.pubkey,
+ &service_ephemeral_rend_keypair.pubkey,
+ &client_hs_ntor_rend_cell_keys);
+ tt_int_op(retval, ==, 0);
+
+ /* Test that the RENDEZVOUS1 key material match! */
+ tt_mem_op(client_hs_ntor_rend_cell_keys.rend_cell_auth_mac, OP_EQ,
+ service_hs_ntor_rend_cell_keys.rend_cell_auth_mac,
+ DIGEST256_LEN);
+ tt_mem_op(client_hs_ntor_rend_cell_keys.ntor_key_seed, OP_EQ,
+ service_hs_ntor_rend_cell_keys.ntor_key_seed,
+ DIGEST256_LEN);
+
+ done:
+ ;
+}
+
+/** Test that our HS time period calculation functions work properly */
+static void
+test_time_period(void *arg)
+{
+ (void) arg;
+ uint64_t tn;
+ int retval;
+ time_t fake_time;
+
+ /* Let's do the example in prop224 section [TIME-PERIODS] */
+ retval = parse_rfc1123_time("Wed, 13 Apr 2016 11:00:00 UTC",
+ &fake_time);
+ tt_int_op(retval, ==, 0);
+
+ /* Check that the time period number is right */
+ tn = get_time_period_num(fake_time);
+ tt_u64_op(tn, ==, 16903);
+
+ /* Increase current time to 11:59:59 UTC and check that the time period
+ number is still the same */
+ fake_time += 3599;
+ tn = get_time_period_num(fake_time);
+ tt_u64_op(tn, ==, 16903);
+
+ /* Now take time to 12:00:00 UTC and check that the time period rotated */
+ fake_time += 1;
+ tn = get_time_period_num(fake_time);
+ tt_u64_op(tn, ==, 16904);
+
+ /* Now also check our hs_get_next_time_period_num() function */
+ tn = hs_get_next_time_period_num(fake_time);
+ tt_u64_op(tn, ==, 16905);
+
+ done:
+ ;
+}
+
struct testcase_t hs_service_tests[] = {
{ "gen_establish_intro_cell", test_gen_establish_intro_cell, TT_FORK,
NULL, NULL },
{ "gen_establish_intro_cell_bad", test_gen_establish_intro_cell_bad, TT_FORK,
NULL, NULL },
+ { "hs_ntor", test_hs_ntor, TT_FORK,
+ NULL, NULL },
+ { "time_period", test_time_period, TT_FORK,
+ NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_introduce.c b/src/test/test_introduce.c
index 810b03c93d..cfb8d83b1d 100644
--- a/src/test/test_introduce.c
+++ b/src/test/test_introduce.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_keypin.c b/src/test/test_keypin.c
index 95657349c6..d2ec8e9ca7 100644
--- a/src/test/test_keypin.c
+++ b/src/test/test_keypin.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c
index 467bba3a64..c5508b0f04 100644
--- a/src/test/test_link_handshake.c
+++ b/src/test/test_link_handshake.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -10,13 +10,6 @@
#include "compat.h"
-/* Some versions of OpenSSL declare SSL_get_selected_srtp_profile twice in
- * srtp.h. Suppress the GCC warning so we can build with -Wredundant-decl. */
-DISABLE_GCC_WARNING(redundant-decls)
-#include <openssl/x509.h>
-#include <openssl/ssl.h>
-ENABLE_GCC_WARNING(redundant-decls)
-
#include "or.h"
#include "config.h"
#include "connection.h"
@@ -808,19 +801,14 @@ CERTS_FAIL(expired_rsa_id, /* both */
certs_cell_cert_t *cert = certs_cell_get_certs(d->ccell, 1);
const tor_x509_cert_t *idc;
tor_tls_get_my_certs(1, NULL, &idc);
- X509 *newc = X509_dup(idc->cert);
+ tor_x509_cert_t *newc;
time_t new_end = time(NULL) - 86400 * 10;
- X509_time_adj(X509_get_notAfter(newc), 0, &new_end);
- EVP_PKEY *pk = crypto_pk_get_evp_pkey_(d->key2, 1);
- tt_assert(X509_sign(newc, pk, EVP_sha1()));
- int len = i2d_X509(newc, NULL);
- certs_cell_cert_setlen_body(cert, len);
- uint8_t *body = certs_cell_cert_getarray_body(cert);
- int len2 = i2d_X509(newc, &body);
- tt_int_op(len, ==, len2);
+ newc = tor_x509_cert_replace_expiration(idc, new_end, d->key2);
+ certs_cell_cert_setlen_body(cert, newc->encoded_len);
+ memcpy(certs_cell_cert_getarray_body(cert),
+ newc->encoded, newc->encoded_len);
REENCODE();
- X509_free(newc);
- EVP_PKEY_free(pk);
+ tor_x509_cert_free(newc);
})
CERTS_FAIL(expired_ed_id, /* ed25519 */
{
diff --git a/src/test/test_logging.c b/src/test/test_logging.c
index 15471e46d0..94b3e4ea68 100644
--- a/src/test/test_logging.c
+++ b/src/test/test_logging.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
index 2ae605b8db..c78fda3b69 100644
--- a/src/test/test_microdesc.c
+++ b/src/test/test_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -14,12 +14,6 @@
#include "test.h"
-DISABLE_GCC_WARNING(redundant-decls)
-#include <openssl/rsa.h>
-#include <openssl/bn.h>
-#include <openssl/pem.h>
-ENABLE_GCC_WARNING(redundant-decls)
-
#ifdef _WIN32
/* For mkdir() */
#include <direct.h>
diff --git a/src/test/test_nodelist.c b/src/test/test_nodelist.c
index d58f8a7fca..256354415c 100644
--- a/src/test/test_nodelist.c
+++ b/src/test/test_nodelist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_ntor_cl.c b/src/test/test_ntor_cl.c
index a560e5fc5e..d0eea85d6f 100644
--- a/src/test/test_ntor_cl.c
+++ b/src/test/test_ntor_cl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index 0f97972032..f03a504d1d 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for OOM handling logic */
diff --git a/src/test/test_oos.c b/src/test/test_oos.c
index db06625116..9fd6bce5ae 100644
--- a/src/test/test_oos.c
+++ b/src/test/test_oos.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for OOS handler */
diff --git a/src/test/test_options.c b/src/test/test_options.c
index d5782e9ec0..ad735b72a6 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONFIG_PRIVATE
@@ -105,11 +105,71 @@ clear_log_messages(void)
"EDE6D711294FADF8E7951F4DE6CA56B58 194.109.206.212:80 7EA6 EAD6 FD83" \
" 083C 538F 4403 8BBF A077 587D D755\n"
+static int
+test_options_checklog(const char *configuration, int expect_log_severity,
+ const char *expect_log)
+{
+ int found = 0, ret = -1;
+ char *actual_log = NULL;
+
+ if (messages) {
+ SMARTLIST_FOREACH_BEGIN(messages, logmsg_t *, m) {
+ if (m->severity == expect_log_severity &&
+ strstr(m->msg, expect_log)) {
+ found = 1;
+ break;
+ }
+ } SMARTLIST_FOREACH_END(m);
+ }
+ if (!found) {
+ actual_log = dump_logs();
+ TT_DIE(("Expected log message [%s] %s from <%s>, but got <%s>.",
+ log_level_to_string(expect_log_severity), expect_log,
+ configuration, actual_log));
+ }
+ ret = 0;
+
+ done:
+ tor_free(actual_log);
+ return ret;
+}
+
+static int
+test_options_checkmsgs(const char *configuration,
+ const char *expect_errmsg,
+ int expect_log_severity,
+ const char *expect_log,
+ char *msg)
+{
+ if (expect_errmsg && !msg) {
+ TT_DIE(("Expected error message <%s> from <%s>, but got none.",
+ expect_errmsg, configuration));
+ } else if (expect_errmsg && !strstr(msg, expect_errmsg)) {
+ TT_DIE(("Expected error message <%s> from <%s>, but got <%s>.",
+ expect_errmsg, configuration, msg));
+ } else if (!expect_errmsg && msg) {
+ TT_DIE(("Expected no error message from <%s> but got <%s>.",
+ configuration, msg));
+ }
+ if (expect_log) {
+ return test_options_checklog(configuration, expect_log_severity,
+ expect_log);
+ }
+ return 0;
+
+ done:
+ return -1;
+}
+
+/* Which phases of config parsing/validation to check for messages/logs */
+enum { PH_GETLINES, PH_ASSIGN, PH_VALIDATE };
+
static void
test_options_validate_impl(const char *configuration,
const char *expect_errmsg,
int expect_log_severity,
- const char *expect_log)
+ const char *expect_log,
+ int phase)
{
or_options_t *opt=NULL;
or_options_t *dflt;
@@ -120,43 +180,34 @@ test_options_validate_impl(const char *configuration,
setup_options(opt, dflt);
r = config_get_lines(configuration, &cl, 1);
- tt_int_op(r, OP_EQ, 0);
+ if (phase == PH_GETLINES) {
+ if (test_options_checkmsgs(configuration, expect_errmsg,
+ expect_log_severity,
+ expect_log, msg))
+ goto done;
+ }
+ if (r)
+ goto done;
r = config_assign(&options_format, opt, cl, 0, &msg);
- tt_int_op(r, OP_EQ, 0);
-
- r = options_validate(NULL, opt, dflt, 0, &msg);
- if (expect_errmsg && !msg) {
- TT_DIE(("Expected error message <%s> from <%s>, but got none.",
- expect_errmsg, configuration));
- } else if (expect_errmsg && !strstr(msg, expect_errmsg)) {
- TT_DIE(("Expected error message <%s> from <%s>, but got <%s>.",
- expect_errmsg, configuration, msg));
- } else if (!expect_errmsg && msg) {
- TT_DIE(("Expected no error message from <%s> but got <%s>.",
- configuration, msg));
+ if (phase == PH_ASSIGN) {
+ if (test_options_checkmsgs(configuration, expect_errmsg,
+ expect_log_severity,
+ expect_log, msg))
+ goto done;
}
tt_int_op((r == 0), OP_EQ, (msg == NULL));
+ if (r)
+ goto done;
- if (expect_log) {
- int found = 0;
- if (messages) {
- SMARTLIST_FOREACH_BEGIN(messages, logmsg_t *, m) {
- if (m->severity == expect_log_severity &&
- strstr(m->msg, expect_log)) {
- found = 1;
- break;
- }
- } SMARTLIST_FOREACH_END(m);
- }
- if (!found) {
- tor_free(msg);
- msg = dump_logs();
- TT_DIE(("Expected log message [%s] %s from <%s>, but got <%s>.",
- log_level_to_string(expect_log_severity), expect_log,
- configuration, msg));
- }
+ r = options_validate(NULL, opt, dflt, 0, &msg);
+ if (phase == PH_VALIDATE) {
+ if (test_options_checkmsgs(configuration, expect_errmsg,
+ expect_log_severity,
+ expect_log, msg))
+ goto done;
}
+ tt_int_op((r == 0), OP_EQ, (msg == NULL));
done:
escaped(NULL);
@@ -168,14 +219,14 @@ test_options_validate_impl(const char *configuration,
clear_log_messages();
}
-#define WANT_ERR(config, msg) \
- test_options_validate_impl((config), (msg), 0, NULL)
-#define WANT_LOG(config, severity, msg) \
- test_options_validate_impl((config), NULL, (severity), (msg))
-#define WANT_ERR_LOG(config, msg, severity, logmsg) \
- test_options_validate_impl((config), (msg), (severity), (logmsg))
-#define OK(config) \
- test_options_validate_impl((config), NULL, 0, NULL)
+#define WANT_ERR(config, msg, ph) \
+ test_options_validate_impl((config), (msg), 0, NULL, (ph))
+#define WANT_LOG(config, severity, msg, ph) \
+ test_options_validate_impl((config), NULL, (severity), (msg), (ph))
+#define WANT_ERR_LOG(config, msg, severity, logmsg, ph) \
+ test_options_validate_impl((config), (msg), (severity), (logmsg), (ph))
+#define OK(config, ph) \
+ test_options_validate_impl((config), NULL, 0, NULL, (ph))
static void
test_options_validate(void *arg)
@@ -184,21 +235,39 @@ test_options_validate(void *arg)
setup_log_callback();
sandbox_disable_getaddrinfo_cache();
- WANT_ERR("ExtORPort 500000", "Invalid ExtORPort");
+ WANT_ERR("ExtORPort 500000", "Invalid ExtORPort", PH_VALIDATE);
WANT_ERR_LOG("ServerTransportOptions trebuchet",
"ServerTransportOptions did not parse",
- LOG_WARN, "Too few arguments");
- OK("ServerTransportOptions trebuchet sling=snappy");
- OK("ServerTransportOptions trebuchet sling=");
+ LOG_WARN, "Too few arguments", PH_VALIDATE);
+ OK("ServerTransportOptions trebuchet sling=snappy", PH_VALIDATE);
+ OK("ServerTransportOptions trebuchet sling=", PH_VALIDATE);
WANT_ERR_LOG("ServerTransportOptions trebuchet slingsnappy",
"ServerTransportOptions did not parse",
- LOG_WARN, "\"slingsnappy\" is not a k=v");
+ LOG_WARN, "\"slingsnappy\" is not a k=v", PH_VALIDATE);
WANT_ERR("DirPort 8080\nDirCache 0",
- "DirPort configured but DirCache disabled.");
+ "DirPort configured but DirCache disabled.", PH_VALIDATE);
WANT_ERR("BridgeRelay 1\nDirCache 0",
- "We're a bridge but DirCache is disabled.");
+ "We're a bridge but DirCache is disabled.", PH_VALIDATE);
+
+ WANT_ERR_LOG("HeartbeatPeriod 21 snarks",
+ "Interval 'HeartbeatPeriod 21 snarks' is malformed or"
+ " out of bounds.", LOG_WARN, "Unknown unit 'snarks'.",
+ PH_ASSIGN);
+ WANT_ERR_LOG("LogTimeGranularity 21 snarks",
+ "Msec interval 'LogTimeGranularity 21 snarks' is malformed or"
+ " out of bounds.", LOG_WARN, "Unknown unit 'snarks'.",
+ PH_ASSIGN);
+ OK("HeartbeatPeriod 1 hour", PH_VALIDATE);
+ OK("LogTimeGranularity 100 milliseconds", PH_VALIDATE);
+
+ WANT_LOG("ControlSocket \"string with trailing garbage\" bogus", LOG_WARN,
+ "Error while parsing configuration: "
+ "Excess data after quoted string", PH_GETLINES);
+ WANT_LOG("ControlSocket \"bogus escape \\@\"", LOG_WARN,
+ "Error while parsing configuration: "
+ "Invalid escape sequence in quoted string", PH_GETLINES);
close_temp_logs();
clear_log_messages();
@@ -354,6 +423,12 @@ get_options_test_data(const char *conf)
result->opt = options_new();
result->old_opt = options_new();
result->def_opt = options_new();
+
+ // XXX: Really, all of these options should be set to defaults
+ // with options_init(), but about a dozen tests break when I do that.
+ // Being kinda lame and just fixing the immedate breakage for now..
+ result->opt->ConnectionPadding = -1; // default must be "auto"
+
rv = config_get_lines(conf, &cl, 1);
tt_assert(rv == 0);
rv = config_assign(&options_format, result->opt, cl, 0, &msg);
@@ -402,7 +477,7 @@ test_options_validate__uname_for_server(void *ignored)
(void)ignored;
char *msg;
options_test_data_t *tdata = get_options_test_data(
- "ORListenAddress 127.0.0.1:5555");
+ "ORPort 127.0.0.1:5555");
setup_capture_of_logs(LOG_WARN);
MOCK(get_uname, fixed_get_uname);
@@ -536,7 +611,7 @@ test_options_validate__contactinfo(void *ignored)
int ret;
char *msg;
options_test_data_t *tdata = get_options_test_data(
- "ORListenAddress 127.0.0.1:5555\nORPort 955");
+ "ORPort 127.0.0.1:5555");
setup_capture_of_logs(LOG_DEBUG);
tdata->opt->ContactInfo = NULL;
@@ -549,7 +624,7 @@ test_options_validate__contactinfo(void *ignored)
tor_free(msg);
free_options_test_data(tdata);
- tdata = get_options_test_data("ORListenAddress 127.0.0.1:5555\nORPort 955\n"
+ tdata = get_options_test_data("ORPort 127.0.0.1:5555\n"
"ContactInfo hella@example.org");
mock_clean_saved_logs();
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
@@ -957,8 +1032,7 @@ test_options_validate__relay_with_hidden_services(void *ignored)
char *msg;
setup_capture_of_logs(LOG_DEBUG);
options_test_data_t *tdata = get_options_test_data(
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"HiddenServiceDir "
"/Library/Tor/var/lib/tor/hidden_service/\n"
"HiddenServicePort 80 127.0.0.1:8080\n"
@@ -1028,7 +1102,7 @@ test_options_validate__transproxy(void *ignored)
#else
tt_int_op(tdata->opt->TransProxyType_parsed, OP_EQ, TPT_PF_DIVERT);
tt_str_op(msg, OP_EQ, "Cannot use TransProxyType without "
- "any valid TransPort or TransListenAddress.");
+ "any valid TransPort.");
#endif
tor_free(msg);
@@ -1043,7 +1117,7 @@ test_options_validate__transproxy(void *ignored)
#else
tt_int_op(tdata->opt->TransProxyType_parsed, OP_EQ, TPT_TPROXY);
tt_str_op(msg, OP_EQ, "Cannot use TransProxyType without any valid "
- "TransPort or TransListenAddress.");
+ "TransPort.");
#endif
tor_free(msg);
@@ -1059,7 +1133,7 @@ test_options_validate__transproxy(void *ignored)
#else
tt_int_op(tdata->opt->TransProxyType_parsed, OP_EQ, TPT_IPFW);
tt_str_op(msg, OP_EQ, "Cannot use TransProxyType without any valid "
- "TransPort or TransListenAddress.");
+ "TransPort.");
#endif
tor_free(msg);
@@ -1117,8 +1191,7 @@ test_options_validate__transproxy(void *ignored)
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_str_op(msg, OP_EQ, "TransPort and TransListenAddress are disabled in "
- "this build.");
+ tt_str_op(msg, OP_EQ, "TransPort is disabled in this build.");
tor_free(msg);
#endif
@@ -1313,54 +1386,6 @@ test_options_validate__node_families(void *ignored)
}
static void
-test_options_validate__tlsec(void *ignored)
-{
- (void)ignored;
- int ret;
- char *msg;
- setup_capture_of_logs(LOG_DEBUG);
- options_test_data_t *tdata = get_options_test_data(
- "TLSECGroup ed25519\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
-
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- expect_log_msg("Unrecognized TLSECGroup: Falling back to the default.\n");
- tt_assert(!tdata->opt->TLSECGroup);
- tor_free(msg);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data("TLSECGroup P224\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
- mock_clean_saved_logs();
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- expect_no_log_msg(
- "Unrecognized TLSECGroup: Falling back to the default.\n");
- tt_assert(tdata->opt->TLSECGroup);
- tor_free(msg);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data("TLSECGroup P256\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
- mock_clean_saved_logs();
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- expect_no_log_msg(
- "Unrecognized TLSECGroup: Falling back to the default.\n");
- tt_assert(tdata->opt->TLSECGroup);
- tor_free(msg);
-
- done:
- teardown_capture_of_logs();
- free_options_test_data(tdata);
- tor_free(msg);
-}
-
-static void
test_options_validate__token_bucket(void *ignored)
{
(void)ignored;
@@ -1742,8 +1767,7 @@ test_options_validate__reachable_addresses(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data("ReachableAddresses *:82\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"MaxClientCircuitsPending 1\n"
"ConnLimit 1\n"
"SchedulerHighWaterMark__ 42\n"
@@ -1756,8 +1780,7 @@ test_options_validate__reachable_addresses(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data("ReachableORAddresses *:82\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"MaxClientCircuitsPending 1\n"
"ConnLimit 1\n"
"SchedulerHighWaterMark__ 42\n"
@@ -1770,8 +1793,7 @@ test_options_validate__reachable_addresses(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data("ReachableDirAddresses *:82\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"MaxClientCircuitsPending 1\n"
"ConnLimit 1\n"
"SchedulerHighWaterMark__ 42\n"
@@ -1784,8 +1806,7 @@ test_options_validate__reachable_addresses(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data("ClientUseIPv4 0\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"MaxClientCircuitsPending 1\n"
"ConnLimit 1\n"
"SchedulerHighWaterMark__ 42\n"
@@ -1885,8 +1906,7 @@ test_options_validate__use_bridges(void *ignored)
options_test_data_t *tdata = get_options_test_data(
"UseBridges 1\n"
"ClientUseIPv4 1\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"MaxClientCircuitsPending 1\n"
"ConnLimit 1\n"
"SchedulerHighWaterMark__ 42\n"
@@ -2008,56 +2028,6 @@ test_options_validate__entry_nodes(void *ignored)
}
static void
-test_options_validate__invalid_nodes(void *ignored)
-{
- (void)ignored;
- int ret;
- char *msg;
- options_test_data_t *tdata = get_options_test_data(
- "AllowInvalidNodes something_stupid\n"
- "MaxClientCircuitsPending 1\n"
- "ConnLimit 1\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
-
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- tt_str_op(msg, OP_EQ,
- "Unrecognized value 'something_stupid' in AllowInvalidNodes");
- tor_free(msg);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data("AllowInvalidNodes entry, middle, exit\n"
- "MaxClientCircuitsPending 1\n"
- "ConnLimit 1\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
-
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- tt_int_op(tdata->opt->AllowInvalid_, OP_EQ, ALLOW_INVALID_ENTRY |
- ALLOW_INVALID_EXIT | ALLOW_INVALID_MIDDLE);
- tor_free(msg);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data("AllowInvalidNodes introduction, rendezvous\n"
- "MaxClientCircuitsPending 1\n"
- "ConnLimit 1\n"
- "SchedulerHighWaterMark__ 42\n"
- "SchedulerLowWaterMark__ 10\n");
-
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, -1);
- tt_int_op(tdata->opt->AllowInvalid_, OP_EQ, ALLOW_INVALID_INTRODUCTION |
- ALLOW_INVALID_RENDEZVOUS);
- tor_free(msg);
-
- done:
- free_options_test_data(tdata);
- tor_free(msg);
-}
-
-static void
test_options_validate__safe_logging(void *ignored)
{
(void)ignored;
@@ -2327,30 +2297,6 @@ test_options_validate__hidserv(void *ignored)
}
static void
-test_options_validate__predicted_ports(void *ignored)
-{
- (void)ignored;
- int ret;
- char *msg;
- setup_capture_of_logs(LOG_WARN);
-
- options_test_data_t *tdata = get_options_test_data(
- "PredictedPortsRelevanceTime 100000000\n"
- TEST_OPTIONS_DEFAULT_VALUES);
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, 0);
- expect_log_msg("PredictedPortsRelevanceTime is too "
- "large; clipping to 3600s.\n");
- tt_int_op(tdata->opt->PredictedPortsRelevanceTime, OP_EQ, 3600);
-
- done:
- teardown_capture_of_logs();
- policies_free_all();
- free_options_test_data(tdata);
- tor_free(msg);
-}
-
-static void
test_options_validate__path_bias(void *ignored)
{
(void)ignored;
@@ -2496,8 +2442,7 @@ test_options_validate__bandwidth(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 1\n"
);
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
@@ -2508,8 +2453,7 @@ test_options_validate__bandwidth(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76800\n"
"MaxAdvertisedBandwidth 30000\n"
);
@@ -2521,8 +2465,7 @@ test_options_validate__bandwidth(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76800\n"
"RelayBandwidthRate 1\n"
"MaxAdvertisedBandwidth 38400\n"
@@ -2535,8 +2478,7 @@ test_options_validate__bandwidth(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76800\n"
"BandwidthBurst 76800\n"
"RelayBandwidthRate 76800\n"
@@ -2974,8 +2916,7 @@ test_options_validate__accounting(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(
TEST_OPTIONS_DEFAULT_VALUES
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76800\n"
"BandwidthBurst 76800\n"
"MaxAdvertisedBandwidth 38400\n"
@@ -3609,8 +3550,7 @@ test_options_validate__families(void *ignored)
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
"MyFamily home\n"
"BridgeRelay 1\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 51300\n"
"BandwidthBurst 51300\n"
"MaxAdvertisedBandwidth 25700\n"
@@ -3839,8 +3779,7 @@ test_options_validate__transport(void *ignored)
free_options_test_data(tdata);
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
"ServerTransportPlugin foo exec bar\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76900\n"
"BandwidthBurst 76900\n"
"MaxAdvertisedBandwidth 38500\n"
@@ -3882,8 +3821,7 @@ test_options_validate__transport(void *ignored)
tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
"ServerTransportListenAddr foo 127.0.0.42:55\n"
"ServerTransportPlugin foo exec bar\n"
- "ORListenAddress 127.0.0.1:5555\n"
- "ORPort 955\n"
+ "ORPort 127.0.0.1:5555\n"
"BandwidthRate 76900\n"
"BandwidthBurst 76900\n"
"MaxAdvertisedBandwidth 38500\n"
@@ -4240,48 +4178,6 @@ test_options_validate__virtual_addr(void *ignored)
}
static void
-test_options_validate__exits(void *ignored)
-{
- (void)ignored;
- int ret;
- char *msg;
- options_test_data_t *tdata = NULL;
- setup_capture_of_logs(LOG_WARN);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "AllowSingleHopExits 1"
- );
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, 0);
- expect_log_msg("You have set AllowSingleHopExits; "
- "now your relay will allow others to make one-hop exits. However,"
- " since by default most clients avoid relays that set this option,"
- " most clients will ignore you.\n");
- tor_free(msg);
-
- free_options_test_data(tdata);
- tdata = get_options_test_data(TEST_OPTIONS_DEFAULT_VALUES
- "AllowSingleHopExits 1\n"
- VALID_DIR_AUTH
- );
- mock_clean_saved_logs();
- ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(ret, OP_EQ, 0);
- expect_no_log_msg("You have set AllowSingleHopExits; "
- "now your relay will allow others to make one-hop exits. However,"
- " since by default most clients avoid relays that set this option,"
- " most clients will ignore you.\n");
- tor_free(msg);
-
- done:
- policies_free_all();
- teardown_capture_of_logs();
- free_options_test_data(tdata);
- tor_free(msg);
-}
-
-static void
test_options_validate__testing_options(void *ignored)
{
(void)ignored;
@@ -4519,7 +4415,6 @@ struct testcase_t options_tests[] = {
LOCAL_VALIDATE_TEST(exclude_nodes),
LOCAL_VALIDATE_TEST(scheduler),
LOCAL_VALIDATE_TEST(node_families),
- LOCAL_VALIDATE_TEST(tlsec),
LOCAL_VALIDATE_TEST(token_bucket),
LOCAL_VALIDATE_TEST(recommended_packages),
LOCAL_VALIDATE_TEST(fetch_dir),
@@ -4530,12 +4425,10 @@ struct testcase_t options_tests[] = {
LOCAL_VALIDATE_TEST(reachable_addresses),
LOCAL_VALIDATE_TEST(use_bridges),
LOCAL_VALIDATE_TEST(entry_nodes),
- LOCAL_VALIDATE_TEST(invalid_nodes),
LOCAL_VALIDATE_TEST(safe_logging),
LOCAL_VALIDATE_TEST(publish_server_descriptor),
LOCAL_VALIDATE_TEST(testing),
LOCAL_VALIDATE_TEST(hidserv),
- LOCAL_VALIDATE_TEST(predicted_ports),
LOCAL_VALIDATE_TEST(path_bias),
LOCAL_VALIDATE_TEST(bandwidth),
LOCAL_VALIDATE_TEST(circuits),
@@ -4553,7 +4446,6 @@ struct testcase_t options_tests[] = {
LOCAL_VALIDATE_TEST(constrained_sockets),
LOCAL_VALIDATE_TEST(v3_auth),
LOCAL_VALIDATE_TEST(virtual_addr),
- LOCAL_VALIDATE_TEST(exits),
LOCAL_VALIDATE_TEST(testing_options),
LOCAL_VALIDATE_TEST(accel),
END_OF_TESTCASES /* */
diff --git a/src/test/test_policy.c b/src/test/test_policy.c
index e86d0f0274..1b2fac4325 100644
--- a/src/test/test_policy.c
+++ b/src/test/test_policy.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Tor Project, Inc. */
+/* Copyright (c) 2013-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test_procmon.c b/src/test/test_procmon.c
index 9e63fc006d..5c52af8693 100644
--- a/src/test/test_procmon.c
+++ b/src/test/test_procmon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define PROCMON_PRIVATE
diff --git a/src/test/test_protover.c b/src/test/test_protover.c
index f00955d1b4..c093e69968 100644
--- a/src/test/test_protover.c
+++ b/src/test/test_protover.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define PROTOVER_PRIVATE
@@ -139,6 +139,70 @@ test_protover_vote(void *arg)
tt_str_op(result, OP_EQ, "Bar=3-6,8 Foo=9");
tor_free(result);
+ /* High threshold */
+ result = protover_compute_vote(lst, 3);
+ tt_str_op(result, OP_EQ, "");
+ tor_free(result);
+
+ /* Bad votes: the result must be empty */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Faux=10-5");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "");
+ tor_free(result);
+
+ /* This fails, since "-0" is not valid. */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Faux=-0");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "");
+ tor_free(result);
+
+ /* Vote large protover lists that are just below the threshold */
+
+ /* Just below the threshold: Rust */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Sleen=1-500");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "Sleen=1-500");
+ tor_free(result);
+
+ /* Just below the threshold: C */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Sleen=1-65536");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "Sleen=1-65536");
+ tor_free(result);
+
+ /* Large protover lists that exceed the threshold */
+
+ /* By adding two votes, C allows us to exceed the limit */
+ smartlist_add(lst, (void*) "Sleen=1-65536");
+ smartlist_add(lst, (void*) "Sleen=100000");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "Sleen=1-65536,100000");
+ tor_free(result);
+
+ /* Large integers */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Sleen=4294967294");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "Sleen=4294967294");
+ tor_free(result);
+
+ /* This parses, but fails at the vote stage */
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Sleen=4294967295");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "");
+ tor_free(result);
+
+ smartlist_clear(lst);
+ smartlist_add(lst, (void*) "Sleen=4294967296");
+ result = protover_compute_vote(lst, 1);
+ tt_str_op(result, OP_EQ, "");
+ tor_free(result);
+
done:
tor_free(result);
smartlist_free(lst);
@@ -178,10 +242,116 @@ test_protover_all_supported(void *arg)
tt_str_op(msg, OP_EQ, "Link=3-999");
tor_free(msg);
+ /* CPU/RAM DoS loop: Rust only */
+ tt_assert(! protover_all_supported("Sleen=0-2147483648", &msg));
+ tt_str_op(msg, OP_EQ, "Sleen=0-2147483648");
+ tor_free(msg);
+
+ /* This case is allowed. */
+ tt_assert(! protover_all_supported("Sleen=0-4294967294", &msg));
+ tt_str_op(msg, OP_EQ, "Sleen=0-4294967294");
+ tor_free(msg);
+
+ /* If we get an unparseable list, we say "yes, that's supported." */
+#ifndef HAVE_RUST
+ // XXXX let's make this section unconditional: rust should behave the
+ // XXXX same as C here!
+ tor_capture_bugs_(1);
+ tt_assert(protover_all_supported("Fribble", &msg));
+ tt_ptr_op(msg, OP_EQ, NULL);
+ tor_end_capture_bugs_();
+
+ /* This case is forbidden. Since it came from a protover_all_supported,
+ * it can trigger a bug message. */
+ tor_capture_bugs_(1);
+ tt_assert(protover_all_supported("Sleen=0-4294967295", &msg));
+ tt_ptr_op(msg, OP_EQ, NULL);
+ tor_free(msg);
+ tor_end_capture_bugs_();
+#endif
+
done:
+ tor_end_capture_bugs_();
tor_free(msg);
}
+static void
+test_protover_vote_roundtrip(void *args)
+{
+ (void) args;
+ static const struct {
+ const char *input;
+ const char *expected_output;
+ } examples[] = {
+ { "Fkrkljdsf", NULL },
+ { "Zn=4294967295", NULL },
+ { "Zn=4294967295-1", NULL },
+ { "Zn=4294967293-4294967295", NULL },
+ /* Will fail because of 4294967295. */
+ { "Foo=1,3 Bar=3 Baz= Quux=9-12,14,15-16,900 Zn=0,4294967295",
+ NULL },
+ { "Foo=1,3 Bar=3 Baz= Quux=9-12,14,15-16,900 Zn=0,4294967294",
+ "Bar=3 Foo=1,3 Quux=9-12,14-16,900 Zn=0,4294967294" },
+ { "Zu16=0,65536", "Zu16=0,65536" },
+ { "N-1=1,2", "N-1=1-2" },
+ { "-1=4294967295", NULL },
+ { "-1=3", "-1=3" },
+ /* junk. */
+ { "!!3@*", NULL },
+ /* Missing equals sign */
+ { "Link=4 Haprauxymatyve Desc=9", NULL },
+ { "Link=4 Haprauxymatyve=7 Desc=9",
+ "Desc=9 Haprauxymatyve=7 Link=4" },
+ { "=10-11", NULL },
+ { "X=10-11", "X=10-11" },
+ { "Link=4 =3 Desc=9", NULL },
+ { "Link=4 Z=3 Desc=9", "Desc=9 Link=4 Z=3" },
+ { "Link=fred", NULL },
+ { "Link=1,fred", NULL },
+ { "Link=1,fred,3", NULL },
+ { "Link=1,9-8,3", NULL },
+ { "Faux=-0", NULL },
+ { "Faux=0--0", NULL },
+ // "These fail at the splitting stage in Rust, but the number parsing
+ // stage in C."
+ { "Faux=-1", NULL },
+ { "Faux=-1-3", NULL },
+ { "Faux=1--1", NULL },
+ /* Large integers */
+ { "Link=4294967296", NULL },
+ /* Large range */
+ { "Sleen=1-501", "Sleen=1-501" },
+ { "Sleen=1-65537", NULL },
+ /* CPU/RAM DoS Loop: Rust only. */
+ { "Sleen=0-2147483648", NULL },
+ /* Rust seems to experience an internal error here. */
+ { "Sleen=0-4294967295", NULL },
+ };
+ unsigned u;
+ smartlist_t *votes = smartlist_new();
+ char *result = NULL;
+
+ for (u = 0; u < ARRAY_LENGTH(examples); ++u) {
+ const char *input = examples[u].input;
+ const char *expected_output = examples[u].expected_output;
+
+ smartlist_add(votes, (void*)input);
+ result = protover_compute_vote(votes, 1);
+ if (expected_output != NULL) {
+ tt_str_op(result, OP_EQ, expected_output);
+ } else {
+ tt_str_op(result, OP_EQ, "");
+ }
+
+ smartlist_clear(votes);
+ tor_free(result);
+ }
+
+ done:
+ smartlist_free(votes);
+ tor_free(result);
+}
+
#define PV_TEST(name, flags) \
{ #name, test_protover_ ##name, (flags), NULL, NULL }
@@ -190,6 +360,7 @@ struct testcase_t protover_tests[] = {
PV_TEST(parse_fail, 0),
PV_TEST(vote, 0),
PV_TEST(all_supported, 0),
+ PV_TEST(vote_roundtrip, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index f93019f1c4..79b03171bc 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -284,13 +284,13 @@ test_pt_get_extrainfo_string(void *arg)
}
#ifdef _WIN32
-#define STDIN_HANDLE HANDLE
+#define STDIN_HANDLE HANDLE*
#else
-#define STDIN_HANDLE FILE
+#define STDIN_HANDLE int
#endif
static smartlist_t *
-tor_get_lines_from_handle_replacement(STDIN_HANDLE *handle,
+tor_get_lines_from_handle_replacement(STDIN_HANDLE handle,
enum stream_status *stream_status_out)
{
static int times_called = 0;
diff --git a/src/test/test_pubsub.c b/src/test/test_pubsub.c
index 547d6c6b32..2f047d9f2c 100644
--- a/src/test/test_pubsub.c
+++ b/src/test/test_pubsub.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016, The Tor Project, Inc. */
+/* Copyright (c) 2016-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_relay.c b/src/test/test_relay.c
index 4713c79ea5..238d4c5baf 100644
--- a/src/test/test_relay.c
+++ b/src/test/test_relay.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test_relaycell.c b/src/test/test_relaycell.c
index fb6748965a..eea1f5dc80 100644
--- a/src/test/test_relaycell.c
+++ b/src/test/test_relaycell.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for handling different kinds of relay cell */
diff --git a/src/test/test_rendcache.c b/src/test/test_rendcache.c
index 0d53c78817..feba8f664e 100644
--- a/src/test/test_rendcache.c
+++ b/src/test/test_rendcache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -11,7 +11,6 @@
#include "routerlist.h"
#include "config.h"
#include "hs_common.h"
-#include <openssl/rsa.h>
#include "rend_test_helpers.h"
#include "log_test_helpers.h"
diff --git a/src/test/test_replay.c b/src/test/test_replay.c
index e882bc6164..80e7203716 100644
--- a/src/test/test_replay.c
+++ b/src/test/test_replay.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Tor Project, Inc. */
+/* Copyright (c) 2012-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define REPLAYCACHE_PRIVATE
diff --git a/src/test/test_routerkeys.c b/src/test/test_routerkeys.c
index 13059267ac..db6b9b3872 100644
--- a/src/test/test_routerkeys.c
+++ b/src/test/test_routerkeys.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_routerlist.c b/src/test/test_routerlist.c
index 78f1cf16b7..0b4b6c5c44 100644
--- a/src/test/test_routerlist.c
+++ b/src/test/test_routerlist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_rust.c b/src/test/test_rust.c
new file mode 100644
index 0000000000..6ad57d6fcb
--- /dev/null
+++ b/src/test/test_rust.c
@@ -0,0 +1,31 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#include "compat_rust.h"
+#include "test.h"
+#include "util.h"
+
+static void
+test_welcome_string(void *arg)
+{
+ (void)arg;
+ rust_str_t s = rust_welcome_string();
+ const char *c_str = rust_str_get(s);
+ tt_assert(c_str);
+ size_t len = strlen(c_str);
+#ifdef HAVE_RUST
+ tt_assert(len > 0);
+#else
+ tt_assert(len == 0);
+#endif
+
+ done:
+ rust_str_free(s);
+}
+
+struct testcase_t rust_tests[] = {
+ { "welcome_string", test_welcome_string, 0, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_rust.sh b/src/test/test_rust.sh
new file mode 100755
index 0000000000..d559f94ce0
--- /dev/null
+++ b/src/test/test_rust.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Test all the Rust crates we're using
+
+crates=tor_util
+
+exitcode=0
+
+for crate in $crates; do
+ cd "${abs_top_srcdir:-.}/src/rust/${crate}"
+ CARGO_TARGET_DIR="${abs_top_builddir}/src/rust/target" CARGO_HOME="${abs_top_builddir}/src/rust" "${CARGO:-cargo}" test ${CARGO_ONLINE-"--frozen"} || exitcode=1
+done
+
+exit $exitcode
diff --git a/src/test/test_scheduler.c b/src/test/test_scheduler.c
index 05ea8e86e8..4c536b0905 100644
--- a/src/test/test_scheduler.c
+++ b/src/test/test_scheduler.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2016, The Tor Project, Inc. */
+/* Copyright (c) 2014-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_shared_random.c b/src/test/test_shared_random.c
index 026a0f3825..c8b0383582 100644
--- a/src/test/test_shared_random.c
+++ b/src/test/test_shared_random.c
@@ -788,6 +788,7 @@ test_sr_setup_commits(void)
tt_assert(!commit_has_reveal_value(commit_d));
done:
+ tor_free(place_holder);
authority_cert_free(auth_cert);
}
diff --git a/src/test/test_slow.c b/src/test/test_slow.c
index 7c9f0b1cc2..e640702499 100644
--- a/src/test/test_slow.c
+++ b/src/test/test_slow.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_socks.c b/src/test/test_socks.c
index 62ff12fe15..bb1be11f2b 100644
--- a/src/test/test_socks.c
+++ b/src/test/test_socks.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test_storagedir.c b/src/test/test_storagedir.c
new file mode 100644
index 0000000000..19e5de4ea3
--- /dev/null
+++ b/src/test/test_storagedir.c
@@ -0,0 +1,375 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#include "storagedir.h"
+#include "test.h"
+
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+
+static void
+test_storagedir_empty(void *arg)
+{
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ (void)arg;
+
+ tt_int_op(FN_NOENT, OP_EQ, file_status(dirname));
+
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+
+ tt_int_op(FN_DIR, OP_EQ, file_status(dirname));
+
+ tt_int_op(0, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(0, OP_EQ, storage_dir_get_usage(d));
+
+ storage_dir_free(d);
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+
+ tt_int_op(FN_DIR, OP_EQ, file_status(dirname));
+
+ tt_int_op(0, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(0, OP_EQ, storage_dir_get_usage(d));
+
+ done:
+ storage_dir_free(d);
+ tor_free(dirname);
+}
+
+static void
+test_storagedir_basic(void *arg)
+{
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ uint8_t *junk = NULL, *bytes = NULL;
+ const size_t junklen = 1024;
+ char *fname1 = NULL, *fname2 = NULL;
+ const char hello_str[] = "then what are we but cold, alone ... ?";
+ tor_mmap_t *mapping = NULL;
+ (void)arg;
+
+ junk = tor_malloc(junklen);
+ crypto_rand((void*)junk, junklen);
+
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+ tt_u64_op(0, OP_EQ, storage_dir_get_usage(d));
+
+ int r;
+ r = storage_dir_save_string_to_file(d, hello_str, 1, &fname1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_ptr_op(fname1, OP_NE, NULL);
+ tt_u64_op(strlen(hello_str), OP_EQ, storage_dir_get_usage(d));
+
+ r = storage_dir_save_bytes_to_file(d, junk, junklen, 1, &fname2);
+ tt_int_op(r, OP_EQ, 0);
+ tt_ptr_op(fname2, OP_NE, NULL);
+
+ tt_str_op(fname1, OP_NE, fname2);
+
+ tt_int_op(2, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(junklen + strlen(hello_str), OP_EQ, storage_dir_get_usage(d));
+ tt_assert(smartlist_contains_string(storage_dir_list(d), fname1));
+ tt_assert(smartlist_contains_string(storage_dir_list(d), fname2));
+
+ storage_dir_free(d);
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+ tt_int_op(2, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(junklen + strlen(hello_str), OP_EQ, storage_dir_get_usage(d));
+ tt_assert(smartlist_contains_string(storage_dir_list(d), fname1));
+ tt_assert(smartlist_contains_string(storage_dir_list(d), fname2));
+
+ size_t n;
+ bytes = storage_dir_read(d, fname2, 1, &n);
+ tt_assert(bytes);
+ tt_u64_op(n, OP_EQ, junklen);
+ tt_mem_op(bytes, OP_EQ, junk, junklen);
+
+ mapping = storage_dir_map(d, fname1);
+ tt_assert(mapping);
+ tt_u64_op(mapping->size, OP_EQ, strlen(hello_str));
+ tt_mem_op(mapping->data, OP_EQ, hello_str, strlen(hello_str));
+
+ done:
+ tor_free(dirname);
+ tor_free(junk);
+ tor_free(bytes);
+ tor_munmap_file(mapping);
+ storage_dir_free(d);
+ tor_free(fname1);
+ tor_free(fname2);
+}
+
+static void
+test_storagedir_deletion(void *arg)
+{
+ (void)arg;
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ char *fn1 = NULL, *fn2 = NULL;
+ char *bytes = NULL;
+ int r;
+ const char str1[] = "There are nine and sixty ways to disguise communiques";
+ const char str2[] = "And rather more than one of them is right";
+
+ // Make sure the directory is there. */
+ d = storage_dir_new(dirname, 10);
+ storage_dir_free(d);
+ d = NULL;
+
+ tor_asprintf(&fn1, "%s/1007", dirname);
+ r = write_str_to_file(fn1, str1, 0);
+ tt_int_op(r, OP_EQ, 0);
+
+ tor_asprintf(&fn2, "%s/1003.tmp", dirname);
+ r = write_str_to_file(fn2, str2, 0);
+ tt_int_op(r, OP_EQ, 0);
+
+ // The tempfile should be deleted the next time we list the directory.
+ d = storage_dir_new(dirname, 10);
+ tt_int_op(1, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(strlen(str1), OP_EQ, storage_dir_get_usage(d));
+ tt_int_op(FN_FILE, OP_EQ, file_status(fn1));
+ tt_int_op(FN_NOENT, OP_EQ, file_status(fn2));
+
+ bytes = (char*) storage_dir_read(d, "1007", 1, NULL);
+ tt_str_op(bytes, OP_EQ, str1);
+
+ // Should have no effect; file already gone.
+ storage_dir_remove_file(d, "1003.tmp");
+ tt_int_op(1, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(strlen(str1), OP_EQ, storage_dir_get_usage(d));
+
+ // Actually remove a file.
+ storage_dir_remove_file(d, "1007");
+ tt_int_op(FN_NOENT, OP_EQ, file_status(fn1));
+ tt_int_op(0, OP_EQ, smartlist_len(storage_dir_list(d)));
+ tt_u64_op(0, OP_EQ, storage_dir_get_usage(d));
+
+ done:
+ tor_free(dirname);
+ tor_free(fn1);
+ tor_free(fn2);
+ storage_dir_free(d);
+ tor_free(bytes);
+}
+
+static void
+test_storagedir_full(void *arg)
+{
+ (void)arg;
+
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ const char str[] = "enemies of the peephole";
+ int r;
+
+ d = storage_dir_new(dirname, 3);
+ tt_assert(d);
+
+ r = storage_dir_save_string_to_file(d, str, 1, NULL);
+ tt_int_op(r, OP_EQ, 0);
+ r = storage_dir_save_string_to_file(d, str, 1, NULL);
+ tt_int_op(r, OP_EQ, 0);
+ r = storage_dir_save_string_to_file(d, str, 1, NULL);
+ tt_int_op(r, OP_EQ, 0);
+
+ // These should fail!
+ r = storage_dir_save_string_to_file(d, str, 1, NULL);
+ tt_int_op(r, OP_EQ, -1);
+ r = storage_dir_save_string_to_file(d, str, 1, NULL);
+ tt_int_op(r, OP_EQ, -1);
+
+ tt_u64_op(strlen(str) * 3, OP_EQ, storage_dir_get_usage(d));
+
+ done:
+ tor_free(dirname);
+ storage_dir_free(d);
+}
+
+static void
+test_storagedir_cleaning(void *arg)
+{
+ (void)arg;
+
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ const char str[] =
+ "On a mountain halfway between Reno and Rome / "
+ "We have a machine in a plexiglass dome / "
+ "Which listens and looks into everyone's home."
+ " -- Dr. Seuss";
+ char *fns[8];
+ int r, i;
+
+ memset(fns, 0, sizeof(fns));
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+
+ for (i = 0; i < 8; ++i) {
+ r = storage_dir_save_string_to_file(d, str+i*2, 1, &fns[i]);
+ tt_int_op(r, OP_EQ, 0);
+ }
+
+ /* Now we're going to make sure all the files have distinct mtimes. */
+ time_t now = time(NULL);
+ struct utimbuf ub;
+ ub.actime = now;
+ ub.modtime = now - 1000;
+ for (i = 0; i < 8; ++i) {
+ char *f = NULL;
+ tor_asprintf(&f, "%s/%s", dirname, fns[i]);
+ r = utime(f, &ub);
+ tor_free(f);
+ tt_int_op(r, OP_EQ, 0);
+ ub.modtime += 5;
+ }
+
+ const uint64_t usage_orig = storage_dir_get_usage(d);
+ /* No changes needed if we are already under target. */
+ storage_dir_shrink(d, 1024*1024, 0);
+ tt_u64_op(usage_orig, OP_EQ, storage_dir_get_usage(d));
+
+ /* Get rid of at least one byte. This will delete fns[0]. */
+ storage_dir_shrink(d, usage_orig - 1, 0);
+ tt_u64_op(usage_orig, OP_GT, storage_dir_get_usage(d));
+ tt_u64_op(usage_orig - strlen(str), OP_EQ, storage_dir_get_usage(d));
+
+ /* Get rid of at least two files. This will delete fns[1] and fns[2]. */
+ storage_dir_shrink(d, 1024*1024, 2);
+ tt_u64_op(usage_orig - strlen(str)*3 + 6, OP_EQ, storage_dir_get_usage(d));
+
+ /* Get rid of everything. */
+ storage_dir_remove_all(d);
+ tt_u64_op(0, OP_EQ, storage_dir_get_usage(d));
+
+ done:
+ tor_free(dirname);
+ storage_dir_free(d);
+ for (i = 0; i < 8; ++i) {
+ tor_free(fns[i]);
+ }
+}
+
+static void
+test_storagedir_save_labeled(void *arg)
+{
+ (void)arg;
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ uint8_t *inp = tor_malloc_zero(8192);
+ config_line_t *labels = NULL;
+ char *fname = NULL;
+ uint8_t *saved = NULL;
+
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+
+ crypto_rand((char *)inp, 8192);
+
+ config_line_append(&labels, "Foo", "bar baz");
+ config_line_append(&labels, "quux", "quuzXxz");
+ const char expected[] =
+ "Foo bar baz\n"
+ "quux quuzXxz\n";
+
+ int r = storage_dir_save_labeled_to_file(d, labels, inp, 8192, &fname);
+ tt_int_op(r, OP_EQ, 0);
+
+ size_t n;
+ saved = storage_dir_read(d, fname, 1, &n);
+ tt_assert(memchr(saved, '\0', n));
+ tt_str_op((char*)saved, OP_EQ, expected); /* NUL guarantees strcmp works */
+ tt_mem_op(saved+strlen(expected)+1, OP_EQ, inp, 8192);
+
+ done:
+ storage_dir_free(d);
+ tor_free(dirname);
+ tor_free(inp);
+ tor_free(fname);
+ config_free_lines(labels);
+ tor_free(saved);
+}
+
+static void
+test_storagedir_read_labeled(void *arg)
+{
+ (void)arg;
+ char *dirname = tor_strdup(get_fname_rnd("store_dir"));
+ storage_dir_t *d = NULL;
+ uint8_t *inp = tor_malloc_zero(8192);
+ config_line_t *labels = NULL, *labels2 = NULL;
+ char *fname = NULL;
+ tor_mmap_t *map = NULL;
+ uint8_t *as_read = NULL;
+
+ d = storage_dir_new(dirname, 10);
+ tt_assert(d);
+
+ tor_snprintf((char*)inp, 8192,
+ "Hello world\n"
+ "This is a test\n"
+ "Yadda yadda.\n");
+ size_t bodylen = 8192 - strlen((char*)inp) - 1;
+ crypto_rand((char *)inp+strlen((char*)inp)+1, bodylen);
+
+ int r = storage_dir_save_bytes_to_file(d, inp, 8192, 1, &fname);
+ tt_int_op(r, OP_EQ, 0);
+
+ /* Try mapping */
+ const uint8_t *datap = NULL;
+ size_t sz = 0;
+ map = storage_dir_map_labeled(d, fname, &labels, &datap, &sz);
+ tt_assert(map);
+ tt_assert(datap);
+ tt_u64_op(sz, OP_EQ, bodylen);
+ tt_mem_op(datap, OP_EQ, inp+strlen((char*)inp)+1, bodylen);
+ tt_assert(labels);
+ tt_str_op(labels->key, OP_EQ, "Hello");
+ tt_str_op(labels->value, OP_EQ, "world");
+ tt_assert(labels->next);
+ tt_str_op(labels->next->key, OP_EQ, "This");
+ tt_str_op(labels->next->value, OP_EQ, "is a test");
+ tt_assert(labels->next->next);
+ tt_str_op(labels->next->next->key, OP_EQ, "Yadda");
+ tt_str_op(labels->next->next->value, OP_EQ, "yadda.");
+ tt_assert(labels->next->next->next == NULL);
+
+ /* Try reading this time. */
+ sz = 0;
+ as_read = storage_dir_read_labeled(d, fname, &labels2, &sz);
+ tt_assert(as_read);
+ tt_u64_op(sz, OP_EQ, bodylen);
+ tt_mem_op(as_read, OP_EQ, inp+strlen((char*)inp)+1, bodylen);
+ tt_assert(config_lines_eq(labels, labels2));
+
+ done:
+ storage_dir_free(d);
+ tor_free(dirname);
+ tor_free(inp);
+ tor_free(fname);
+ config_free_lines(labels);
+ config_free_lines(labels2);
+ tor_munmap_file(map);
+ tor_free(as_read);
+}
+
+#define ENT(name) \
+ { #name, test_storagedir_ ## name, TT_FORK, NULL, NULL }
+
+struct testcase_t storagedir_tests[] = {
+ ENT(empty),
+ ENT(basic),
+ ENT(deletion),
+ ENT(full),
+ ENT(cleaning),
+ ENT(save_labeled),
+ ENT(read_labeled),
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_switch_id.c b/src/test/test_switch_id.c
index e12205bb2e..53de793fe8 100644
--- a/src/test/test_switch_id.c
+++ b/src/test/test_switch_id.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, The Tor Project, Inc. */
+/* Copyright (c) 2015-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
diff --git a/src/test/test_threads.c b/src/test/test_threads.c
index ebbc95c7ca..18a9407ff7 100644
--- a/src/test/test_threads.c
+++ b/src/test/test_threads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_tortls.c b/src/test/test_tortls.c
index 4bfcea211d..7aa3051464 100644
--- a/src/test/test_tortls.c
+++ b/src/test/test_tortls.c
@@ -1,7 +1,8 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TORTLS_PRIVATE
+#define TORTLS_OPENSSL_PRIVATE
#define LOG_PRIVATE
#include "orconfig.h"
diff --git a/src/test/test_util.c b/src/test/test_util.c
index ab6fe8ded9..fa6ce1dc85 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -2242,114 +2242,220 @@ test_util_pow2(void *arg)
;
}
-/** Run unit tests for compression functions */
static void
-test_util_gzip(void *arg)
+test_util_compress_impl(compress_method_t method)
{
- char *buf1=NULL, *buf2=NULL, *buf3=NULL, *cp1, *cp2;
- const char *ccp2;
+ char *buf1=NULL, *buf2=NULL, *buf3=NULL;
size_t len1, len2;
- tor_zlib_state_t *state = NULL;
- (void)arg;
- buf1 = tor_strdup("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ");
- tt_assert(detect_compression_method(buf1, strlen(buf1)) == UNKNOWN_METHOD);
-
- tt_assert(!tor_gzip_compress(&buf2, &len1, buf1, strlen(buf1)+1,
- GZIP_METHOD));
- tt_assert(buf2);
- tt_assert(len1 < strlen(buf1));
- tt_assert(detect_compression_method(buf2, len1) == GZIP_METHOD);
+ tt_assert(tor_compress_supports_method(method));
- tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1,
- GZIP_METHOD, 1, LOG_INFO));
- tt_assert(buf3);
- tt_int_op(strlen(buf1) + 1,OP_EQ, len2);
- tt_str_op(buf1,OP_EQ, buf3);
+ if (method != NO_METHOD) {
+ tt_assert(tor_compress_version_str(method) != NULL);
+ tt_assert(tor_compress_header_version_str(method) != NULL);
+ }
- tor_free(buf2);
- tor_free(buf3);
+ buf1 = tor_strdup("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ");
+ tt_assert(detect_compression_method(buf1, strlen(buf1)) == UNKNOWN_METHOD);
- tt_assert(!tor_gzip_compress(&buf2, &len1, buf1, strlen(buf1)+1,
- ZLIB_METHOD));
- tt_assert(buf2);
- tt_assert(detect_compression_method(buf2, len1) == ZLIB_METHOD);
+ tt_assert(!tor_compress(&buf2, &len1, buf1, strlen(buf1)+1, method));
+ tt_assert(buf2 != NULL);
+ if (method == NO_METHOD) {
+ // The identity transform doesn't actually compress, and it isn't
+ // detectable as "the identity transform."
+ tt_int_op(len1, OP_EQ, strlen(buf1)+1);
+ tt_int_op(detect_compression_method(buf2, len1), OP_EQ, UNKNOWN_METHOD);
+ } else {
+ tt_int_op(len1, OP_LT, strlen(buf1));
+ tt_int_op(detect_compression_method(buf2, len1), OP_EQ, method);
+ }
- tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1,
- ZLIB_METHOD, 1, LOG_INFO));
- tt_assert(buf3);
- tt_int_op(strlen(buf1) + 1,OP_EQ, len2);
- tt_str_op(buf1,OP_EQ, buf3);
+ tt_assert(!tor_uncompress(&buf3, &len2, buf2, len1, method, 1, LOG_INFO));
+ tt_assert(buf3 != NULL);
+ tt_int_op(strlen(buf1) + 1, OP_EQ, len2);
+ tt_str_op(buf1, OP_EQ, buf3);
+ tt_int_op(buf3[len2], OP_EQ, 0);
/* Check whether we can uncompress concatenated, compressed strings. */
tor_free(buf3);
buf2 = tor_reallocarray(buf2, len1, 2);
memcpy(buf2+len1, buf2, len1);
- tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1*2,
- ZLIB_METHOD, 1, LOG_INFO));
- tt_int_op((strlen(buf1)+1)*2,OP_EQ, len2);
- tt_mem_op(buf3,OP_EQ,
+ tt_assert(!tor_uncompress(&buf3, &len2, buf2, len1*2, method, 1, LOG_INFO));
+ tt_int_op((strlen(buf1)+1)*2, OP_EQ, len2);
+ tt_mem_op(buf3, OP_EQ,
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ\0"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ\0",
(strlen(buf1)+1)*2);
+ tt_int_op(buf3[len2], OP_EQ, 0);
+
+ /* Check whether we can uncompress partial strings */
tor_free(buf1);
tor_free(buf2);
tor_free(buf3);
- /* Check whether we can uncompress partial strings. */
- buf1 =
- tor_strdup("String with low redundancy that won't be compressed much.");
- tt_assert(!tor_gzip_compress(&buf2, &len1, buf1, strlen(buf1)+1,
- ZLIB_METHOD));
- tt_assert(len1>16);
- /* when we allow an incomplete string, we should succeed.*/
- tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
- ZLIB_METHOD, 0, LOG_INFO));
- tt_assert(len2 > 5);
- buf3[len2]='\0';
- tt_assert(!strcmpstart(buf1, buf3));
-
- /* when we demand a complete string, this must fail. */
+ size_t b1len = 1<<10;
+ if (method == ZSTD_METHOD) {
+ // zstd needs a big input before it starts generating output that it
+ // can partially decompress.
+ b1len = 1<<18;
+ }
+ buf1 = tor_malloc(b1len);
+ crypto_rand(buf1, b1len);
+ tt_assert(!tor_compress(&buf2, &len1, buf1, b1len, method));
+ tt_int_op(len1, OP_GT, 16);
+ /* when we allow an incomplete output we should succeed.*/
+ tt_assert(!tor_uncompress(&buf3, &len2, buf2, len1-16,
+ method, 0, LOG_INFO));
+ tt_int_op(len2, OP_GT, 5);
+ tt_int_op(len2, OP_LE, len1);
+ tt_assert(fast_memeq(buf1, buf3, len2));
+ tt_int_op(buf3[len2], OP_EQ, 0);
+
+ /* when we demand a complete output from a real compression method, this
+ * must fail. */
tor_free(buf3);
- tt_assert(tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
- ZLIB_METHOD, 1, LOG_INFO));
- tt_assert(!buf3);
+ if (method != NO_METHOD) {
+ tt_assert(tor_uncompress(&buf3, &len2, buf2, len1-16,
+ method, 1, LOG_INFO));
+ tt_assert(buf3 == NULL);
+ }
- /* Now, try streaming compression. */
+ done:
tor_free(buf1);
tor_free(buf2);
tor_free(buf3);
- state = tor_zlib_new(1, ZLIB_METHOD, HIGH_COMPRESSION);
+}
+
+static void
+test_util_compress_stream_impl(compress_method_t method,
+ compression_level_t level)
+{
+ char *buf1=NULL, *buf2=NULL, *buf3=NULL, *cp1, *cp2;
+ const char *ccp2;
+ size_t len1, len2;
+
+ tor_compress_state_t *state = NULL;
+ state = tor_compress_new(1, method, level);
tt_assert(state);
cp1 = buf1 = tor_malloc(1024);
len1 = 1024;
ccp2 = "ABCDEFGHIJABCDEFGHIJ";
len2 = 21;
- tt_assert(tor_zlib_process(state, &cp1, &len1, &ccp2, &len2, 0)
- == TOR_ZLIB_OK);
- tt_int_op(0,OP_EQ, len2); /* Make sure we compressed it all. */
+ tt_int_op(tor_compress_process(state, &cp1, &len1, &ccp2, &len2, 0),
+ OP_EQ, TOR_COMPRESS_OK);
+ tt_int_op(0, OP_EQ, len2); /* Make sure we compressed it all. */
tt_assert(cp1 > buf1);
len2 = 0;
cp2 = cp1;
- tt_assert(tor_zlib_process(state, &cp1, &len1, &ccp2, &len2, 1)
- == TOR_ZLIB_DONE);
- tt_int_op(0,OP_EQ, len2);
- tt_assert(cp1 > cp2); /* Make sure we really added something. */
+ tt_int_op(tor_compress_process(state, &cp1, &len1, &ccp2, &len2, 1),
+ OP_EQ, TOR_COMPRESS_DONE);
+ tt_int_op(0, OP_EQ, len2);
+ if (method == NO_METHOD) {
+ tt_ptr_op(cp1, OP_EQ, cp2);
+ } else {
+ tt_assert(cp1 > cp2); /* Make sure we really added something. */
+ }
+
+ tt_int_op(tor_compress_state_size(state), OP_GT, 0);
- tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1,
- ZLIB_METHOD, 1, LOG_WARN));
+ tt_assert(!tor_uncompress(&buf3, &len2, buf1, 1024-len1,
+ method, 1, LOG_WARN));
/* Make sure it compressed right. */
tt_str_op(buf3, OP_EQ, "ABCDEFGHIJABCDEFGHIJ");
- tt_int_op(21,OP_EQ, len2);
+ tt_int_op(21, OP_EQ, len2);
done:
if (state)
- tor_zlib_free(state);
+ tor_compress_free(state);
+ tor_free(buf1);
tor_free(buf2);
tor_free(buf3);
- tor_free(buf1);
+}
+
+/** Run unit tests for compression functions */
+static void
+test_util_compress(void *arg)
+{
+ const char *methodname = arg;
+ tt_assert(methodname);
+
+ compress_method_t method = compression_method_get_by_name(methodname);
+ tt_int_op(method, OP_NE, UNKNOWN_METHOD);
+
+ if (! tor_compress_supports_method(method)) {
+ tt_skip();
+ }
+
+ compression_level_t levels[] = {
+ BEST_COMPRESSION,
+ HIGH_COMPRESSION,
+ MEDIUM_COMPRESSION,
+ LOW_COMPRESSION
+ };
+
+ test_util_compress_impl(method);
+
+ for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) {
+ compression_level_t level = levels[l];
+ test_util_compress_stream_impl(method, level);
+ }
+ done:
+ ;
+}
+
+static void
+test_util_decompress_concatenated_impl(compress_method_t method)
+{
+ char input[4096];
+ char *c1 = NULL, *c2 = NULL, *c3 = NULL;
+ char *result = NULL;
+ size_t sz1, sz2, sz3, szr;
+ int r;
+
+ crypto_rand(input, sizeof(input));
+
+ /* Compress the input in two chunks. */
+ r = tor_compress(&c1, &sz1, input, 2048, method);
+ tt_int_op(r, OP_EQ, 0);
+ r = tor_compress(&c2, &sz2, input+2048, 2048, method);
+ tt_int_op(r, OP_EQ, 0);
+
+ /* concatenate the chunks. */
+ sz3 = sz1 + sz2;
+ c3 = tor_malloc(sz3);
+ memcpy(c3, c1, sz1);
+ memcpy(c3+sz1, c2, sz2);
+
+ /* decompress the concatenated result */
+ r = tor_uncompress(&result, &szr, c3, sz3, method, 0, LOG_WARN);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(szr, OP_EQ, sizeof(input));
+ tt_mem_op(result, OP_EQ, input, sizeof(input));
+
+ done:
+ tor_free(c1);
+ tor_free(c2);
+ tor_free(c3);
+ tor_free(result);
+}
+
+static void
+test_util_decompress_concatenated(void *arg)
+{
+ const char *methodname = arg;
+ tt_assert(methodname);
+
+ compress_method_t method = compression_method_get_by_name(methodname);
+ tt_int_op(method, OP_NE, UNKNOWN_METHOD);
+ if (! tor_compress_supports_method(method)) {
+ tt_skip();
+ }
+
+ test_util_decompress_concatenated_impl(method);
+ done:
+ ;
}
static void
@@ -2364,44 +2470,44 @@ test_util_gzip_compression_bomb(void *arg)
char *one_mb = tor_malloc_zero(one_million);
char *result = NULL;
size_t result_len = 0;
- tor_zlib_state_t *state = NULL;
+ tor_compress_state_t *state = NULL;
/* Make sure we can't produce a compression bomb */
setup_full_capture_of_logs(LOG_WARN);
- tt_int_op(-1, OP_EQ, tor_gzip_compress(&result, &result_len,
- one_mb, one_million,
- ZLIB_METHOD));
+ tt_int_op(-1, OP_EQ, tor_compress(&result, &result_len,
+ one_mb, one_million,
+ ZLIB_METHOD));
expect_single_log_msg_containing(
"We compressed something and got an insanely high "
"compression factor; other Tors would think this "
- "was a zlib bomb.");
+ "was a compression bomb.");
teardown_capture_of_logs();
/* Here's a compression bomb that we made manually. */
const char compression_bomb[1039] =
{ 0x78, 0xDA, 0xED, 0xC1, 0x31, 0x01, 0x00, 0x00, 0x00, 0xC2,
0xA0, 0xF5, 0x4F, 0x6D, 0x08, 0x5F, 0xA0 /* .... */ };
- tt_int_op(-1, OP_EQ, tor_gzip_uncompress(&result, &result_len,
- compression_bomb, 1039,
- ZLIB_METHOD, 0, LOG_WARN));
+ tt_int_op(-1, OP_EQ, tor_uncompress(&result, &result_len,
+ compression_bomb, 1039,
+ ZLIB_METHOD, 0, LOG_WARN));
/* Now try streaming that. */
- state = tor_zlib_new(0, ZLIB_METHOD, HIGH_COMPRESSION);
- tor_zlib_output_t r;
+ state = tor_compress_new(0, ZLIB_METHOD, HIGH_COMPRESSION);
+ tor_compress_output_t r;
const char *inp = compression_bomb;
size_t inlen = 1039;
do {
char *outp = one_mb;
size_t outleft = 4096; /* small on purpose */
- r = tor_zlib_process(state, &outp, &outleft, &inp, &inlen, 0);
+ r = tor_compress_process(state, &outp, &outleft, &inp, &inlen, 0);
tt_int_op(inlen, OP_NE, 0);
- } while (r == TOR_ZLIB_BUF_FULL);
+ } while (r == TOR_COMPRESS_BUFFER_FULL);
- tt_int_op(r, OP_EQ, TOR_ZLIB_ERR);
+ tt_int_op(r, OP_EQ, TOR_COMPRESS_ERROR);
done:
tor_free(one_mb);
- tor_zlib_free(state);
+ tor_compress_free(state);
}
/** Run unit tests for mmap() wrapper functionality. */
@@ -3351,6 +3457,13 @@ test_util_memarea(void *arg)
void *malloced_ptr = NULL;
int i;
+#ifdef DISABLE_MEMORY_SENTINELS
+ /* If memory sentinels are disabled, this whole module is just an alias for
+ malloc(), which is free to lay out memory most any way it wants. */
+ if (1)
+ tt_skip();
+#endif
+
(void)arg;
tt_assert(area);
@@ -3944,17 +4057,13 @@ test_util_exit_status(void *ptr)
#endif
#ifndef _WIN32
-/* Check that fgets with a non-blocking pipe returns partial lines and sets
- * EAGAIN, returns full lines and sets no error, and returns NULL on EOF and
- * sets no error */
static void
-test_util_fgets_eagain(void *ptr)
+test_util_string_from_pipe(void *ptr)
{
int test_pipe[2] = {-1, -1};
- int retval;
+ int retval = 0;
+ enum stream_status status = IO_STREAM_TERM;
ssize_t retlen;
- char *retptr;
- FILE *test_stream = NULL;
char buf[4] = { 0 };
(void)ptr;
@@ -3965,91 +4074,115 @@ test_util_fgets_eagain(void *ptr)
retval = pipe(test_pipe);
tt_int_op(retval, OP_EQ, 0);
- /* Set up the read-end to be non-blocking */
- retval = fcntl(test_pipe[0], F_SETFL, O_NONBLOCK);
- tt_int_op(retval, OP_EQ, 0);
+ /* Send in a string. */
+ retlen = write(test_pipe[1], "ABC", 3);
+ tt_int_op(retlen, OP_EQ, 3);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "ABC");
+ errno = 0;
- /* Open it as a stdio stream */
- test_stream = fdopen(test_pipe[0], "r");
- tt_ptr_op(test_stream, OP_NE, NULL);
+ /* Send in a string that contains a nul. */
+ retlen = write(test_pipe[1], "AB\0", 3);
+ tt_int_op(retlen, OP_EQ, 3);
- /* Send in a partial line */
- retlen = write(test_pipe[1], "A", 1);
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "AB");
+ errno = 0;
+
+ /* Send in a string that contains a nul only. */
+ retlen = write(test_pipe[1], "\0", 1);
tt_int_op(retlen, OP_EQ, 1);
- retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, OP_EQ, EAGAIN);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "A");
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "");
errno = 0;
- /* Send in the rest */
- retlen = write(test_pipe[1], "B\n", 2);
- tt_int_op(retlen, OP_EQ, 2);
- retptr = fgets(buf, sizeof(buf), test_stream);
+ /* Send in a string that contains a trailing newline. */
+ retlen = write(test_pipe[1], "AB\n", 3);
+ tt_int_op(retlen, OP_EQ, 3);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "AB");
+ errno = 0;
+
+ /* Send in a string that contains a newline only. */
+ retlen = write(test_pipe[1], "\n", 1);
+ tt_int_op(retlen, OP_EQ, 1);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
tt_int_op(errno, OP_EQ, 0);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "B\n");
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "");
errno = 0;
- /* Send in a full line */
- retlen = write(test_pipe[1], "CD\n", 3);
+ /* Send in a string and check that we nul terminate return values. */
+ retlen = write(test_pipe[1], "AAA", 3);
tt_int_op(retlen, OP_EQ, 3);
- retptr = fgets(buf, sizeof(buf), test_stream);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
tt_int_op(errno, OP_EQ, 0);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "CD\n");
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "AAA");
+ tt_mem_op(buf, OP_EQ, "AAA\0", sizeof(buf));
errno = 0;
- /* Send in a partial line */
- retlen = write(test_pipe[1], "E", 1);
+ retlen = write(test_pipe[1], "B", 1);
tt_int_op(retlen, OP_EQ, 1);
- retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, OP_EQ, EAGAIN);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "E");
+
+ memset(buf, '\xff', sizeof(buf));
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "B");
+ tt_mem_op(buf, OP_EQ, "B\0\xff\xff", sizeof(buf));
errno = 0;
- /* Send in the rest */
- retlen = write(test_pipe[1], "F\n", 2);
- tt_int_op(retlen, OP_EQ, 2);
- retptr = fgets(buf, sizeof(buf), test_stream);
+ /* Send in multiple lines. */
+ retlen = write(test_pipe[1], "A\nB", 3);
+ tt_int_op(retlen, OP_EQ, 3);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
tt_int_op(errno, OP_EQ, 0);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "F\n");
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "A\nB");
errno = 0;
- /* Send in a full line and close */
- retlen = write(test_pipe[1], "GH", 2);
+ /* Send in a line and close */
+ retlen = write(test_pipe[1], "AB", 2);
tt_int_op(retlen, OP_EQ, 2);
retval = close(test_pipe[1]);
tt_int_op(retval, OP_EQ, 0);
test_pipe[1] = -1;
- retptr = fgets(buf, sizeof(buf), test_stream);
+
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
tt_int_op(errno, OP_EQ, 0);
- tt_ptr_op(retptr, OP_EQ, buf);
- tt_str_op(buf, OP_EQ, "GH");
+ tt_int_op(status, OP_EQ, IO_STREAM_OKAY);
+ tt_str_op(buf, OP_EQ, "AB");
errno = 0;
/* Check for EOF */
- retptr = fgets(buf, sizeof(buf), test_stream);
+ status = get_string_from_pipe(test_pipe[0], buf, sizeof(buf)-1);
tt_int_op(errno, OP_EQ, 0);
- tt_ptr_op(retptr, OP_EQ, NULL);
- retval = feof(test_stream);
- tt_int_op(retval, OP_NE, 0);
+ tt_int_op(status, OP_EQ, IO_STREAM_CLOSED);
errno = 0;
- /* Check that buf is unchanged according to C99 and C11 */
- tt_str_op(buf, OP_EQ, "GH");
-
done:
- if (test_stream != NULL)
- fclose(test_stream);
if (test_pipe[0] != -1)
close(test_pipe[0]);
if (test_pipe[1] != -1)
close(test_pipe[1]);
}
-#endif
+
+#endif // _WIN32
/**
* Test for format_hex_number_sigsafe()
@@ -5669,12 +5802,99 @@ test_util_htonll(void *arg)
;
}
+static void
+test_util_get_unquoted_path(void *arg)
+{
+ (void)arg;
+
+ char *r = NULL;
+
+ r = get_unquoted_path("\""); // "
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("\"\"\""); // """
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("\\\""); // \"
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("\\\"\\\""); // \"\"
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("A\\B\\C\""); // A\B\C"
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("\"A\\B\\C"); // "A\B\C
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("\"A\\B\"C\""); // "A\B"C"
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("A\\B\"C"); // A\B"C
+ tt_ptr_op(r, OP_EQ, NULL);
+ tor_free(r);
+
+ r = get_unquoted_path("");
+ tt_str_op(r, OP_EQ, "");
+ tor_free(r);
+
+ r = get_unquoted_path("\"\""); // ""
+ tt_str_op(r, OP_EQ, "");
+ tor_free(r);
+
+ r = get_unquoted_path("A\\B\\C"); // A\B\C
+ tt_str_op(r, OP_EQ, "A\\B\\C"); // A\B\C
+ tor_free(r);
+
+ r = get_unquoted_path("\"A\\B\\C\""); // "A\B\C"
+ tt_str_op(r, OP_EQ, "A\\B\\C"); // A\B\C
+ tor_free(r);
+
+ r = get_unquoted_path("\"\\\""); // "\"
+ tt_str_op(r, OP_EQ, "\\"); // \ /* comment to prevent line continuation */
+ tor_free(r);
+
+ r = get_unquoted_path("\"\\\"\""); // "\""
+ tt_str_op(r, OP_EQ, "\""); // "
+ tor_free(r);
+
+ r = get_unquoted_path("\"A\\B\\C\\\"\""); // "A\B\C\""
+ tt_str_op(r, OP_EQ, "A\\B\\C\""); // A\B\C"
+ tor_free(r);
+
+ r = get_unquoted_path("A\\B\\\"C"); // A\B\"C
+ tt_str_op(r, OP_EQ, "A\\B\"C"); // A\B"C
+ tor_free(r);
+
+ r = get_unquoted_path("\"A\\B\\\"C\""); // "A\B\"C"
+ tt_str_op(r, OP_EQ, "A\\B\"C"); // A\B"C
+
+ done:
+ tor_free(r);
+}
+
#define UTIL_LEGACY(name) \
{ #name, test_util_ ## name , 0, NULL, NULL }
#define UTIL_TEST(name, flags) \
{ #name, test_util_ ## name, flags, NULL, NULL }
+#define COMPRESS(name, identifier) \
+ { "compress/" #name, test_util_compress, 0, &passthrough_setup, \
+ (char*)(identifier) }
+
+#define COMPRESS_CONCAT(name, identifier) \
+ { "compress_concat/" #name, test_util_decompress_concatenated, 0, \
+ &passthrough_setup, \
+ (char*)(identifier) }
+
#ifdef _WIN32
#define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL }
#define UTIL_TEST_WIN_ONLY(n, f) UTIL_TEST(n, (f))
@@ -5699,7 +5919,16 @@ struct testcase_t util_tests[] = {
UTIL_LEGACY(strmisc),
UTIL_TEST(parse_integer, 0),
UTIL_LEGACY(pow2),
- UTIL_LEGACY(gzip),
+ COMPRESS(zlib, "deflate"),
+ COMPRESS(gzip, "gzip"),
+ COMPRESS(lzma, "x-tor-lzma"),
+ COMPRESS(zstd, "x-zstd"),
+ COMPRESS(none, "identity"),
+ COMPRESS_CONCAT(zlib, "deflate"),
+ COMPRESS_CONCAT(gzip, "gzip"),
+ COMPRESS_CONCAT(lzma, "x-tor-lzma"),
+ COMPRESS_CONCAT(zstd, "x-zstd"),
+ COMPRESS_CONCAT(none, "identity"),
UTIL_TEST(gzip_compression_bomb, TT_FORK),
UTIL_LEGACY(datadir),
UTIL_LEGACY(memarea),
@@ -5723,7 +5952,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(num_cpus, 0),
UTIL_TEST_WIN_ONLY(load_win_lib, 0),
UTIL_TEST_NO_WIN(exit_status, 0),
- UTIL_TEST_NO_WIN(fgets_eagain, 0),
+ UTIL_TEST_NO_WIN(string_from_pipe, 0),
UTIL_TEST(format_hex_number, 0),
UTIL_TEST(format_dec_number, 0),
UTIL_TEST(join_win_cmdline, 0),
@@ -5763,6 +5992,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(monotonic_time, 0),
UTIL_TEST(monotonic_time_ratchet, TT_FORK),
UTIL_TEST(htonll, 0),
+ UTIL_TEST(get_unquoted_path, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_util_format.c b/src/test/test_util_format.c
index 21a6923c6d..ea0a86499f 100644
--- a/src/test/test_util_format.c
+++ b/src/test/test_util_format.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -133,48 +133,54 @@ test_util_format_base64_encode(void *ignored)
}
static void
-test_util_format_base64_decode_nopad(void *ignored)
+test_util_format_base64_decode_oddsize(void *ignored)
{
(void)ignored;
int res;
int i;
char *src;
- uint8_t *dst, *real_dst;
- uint8_t expected[] = {0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65};
+ char *dst, real_dst[7];
+ char expected[] = {0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65};
char real_src[] = "ZXhhbXBsZQ";
+ char expected40[] = "testing40characteroddsizebase64encoding!";
+ char src40[] = "dGVzdGluZzQwY2hhcmFjdGVyb2Rkc2l6ZWJhc2U2NGVuY29kaW5nIQ";
+ char pad40[] = "dGVzdGluZzQwY2hhcmFjdGVyb2Rkc2l6ZWJhc2U2NGVuY29kaW5nIQ==";
src = tor_malloc_zero(256);
dst = tor_malloc_zero(1000);
- real_dst = tor_malloc_zero(10);
for (i=0;i<256;i++) {
src[i] = (char)i;
}
- res = base64_decode_nopad(dst, 1, src, SIZE_T_CEILING);
- tt_int_op(res, OP_EQ, -1);
-
- res = base64_decode_nopad(dst, 1, src, 5);
+ res = base64_decode(dst, 1, src, 5);
tt_int_op(res, OP_EQ, -1);
const char *s = "SGVsbG8gd29ybGQ";
- res = base64_decode_nopad(dst, 1000, s, strlen(s));
+ res = base64_decode(dst, 1000, s, strlen(s));
tt_int_op(res, OP_EQ, 11);
tt_mem_op(dst, OP_EQ, "Hello world", 11);
s = "T3BhIG11bmRv";
- res = base64_decode_nopad(dst, 9, s, strlen(s));
+ res = base64_decode(dst, 9, s, strlen(s));
tt_int_op(res, OP_EQ, 9);
tt_mem_op(dst, OP_EQ, "Opa mundo", 9);
- res = base64_decode_nopad(real_dst, 10, real_src, 10);
+ res = base64_decode(real_dst, sizeof(real_dst), real_src, 10);
tt_int_op(res, OP_EQ, 7);
tt_mem_op(real_dst, OP_EQ, expected, 7);
+ res = base64_decode(dst, 40, src40, strlen(src40));
+ tt_int_op(res, OP_EQ, 40);
+ tt_mem_op(dst, OP_EQ, expected40, 40);
+
+ res = base64_decode(dst, 40, pad40, strlen(pad40));
+ tt_int_op(res, OP_EQ, 40);
+ tt_mem_op(dst, OP_EQ, expected40, 40);
+
done:
tor_free(src);
tor_free(dst);
- tor_free(real_dst);
}
static void
@@ -196,13 +202,10 @@ test_util_format_base64_decode(void *ignored)
src[i] = (char)i;
}
- res = base64_decode(dst, 1, src, SIZE_T_CEILING);
+ res = base64_decode(dst, 1, src, 100);
tt_int_op(res, OP_EQ, -1);
- res = base64_decode(dst, SIZE_T_CEILING+1, src, 10);
- tt_int_op(res, OP_EQ, -1);
-
- res = base64_decode(dst, 1, real_src, SIZE_MAX/3+1);
+ res = base64_decode(dst, 1, real_src, 10);
tt_int_op(res, OP_EQ, -1);
const char *s = "T3BhIG11bmRv";
@@ -370,11 +373,39 @@ test_util_format_base32_decode(void *arg)
tor_free(dst);
}
+static void
+test_util_format_encoded_size(void *arg)
+{
+ (void)arg;
+ uint8_t inbuf[256];
+ char outbuf[1024];
+ unsigned i;
+
+ crypto_rand((char *)inbuf, sizeof(inbuf));
+ for (i = 0; i <= sizeof(inbuf); ++i) {
+ /* XXXX (Once the return values are consistent, check them too.) */
+
+ base32_encode(outbuf, sizeof(outbuf), (char *)inbuf, i);
+ /* The "+ 1" below is an API inconsistency. */
+ tt_int_op(strlen(outbuf) + 1, OP_EQ, base32_encoded_size(i));
+
+ base64_encode(outbuf, sizeof(outbuf), (char *)inbuf, i, 0);
+ tt_int_op(strlen(outbuf), OP_EQ, base64_encode_size(i, 0));
+ base64_encode(outbuf, sizeof(outbuf), (char *)inbuf, i,
+ BASE64_ENCODE_MULTILINE);
+ tt_int_op(strlen(outbuf), OP_EQ,
+ base64_encode_size(i, BASE64_ENCODE_MULTILINE));
+ }
+
+ done:
+ ;
+}
+
struct testcase_t util_format_tests[] = {
{ "unaligned_accessors", test_util_format_unaligned_accessors, 0,
NULL, NULL },
{ "base64_encode", test_util_format_base64_encode, 0, NULL, NULL },
- { "base64_decode_nopad", test_util_format_base64_decode_nopad, 0,
+ { "base64_decode_oddsize", test_util_format_base64_decode_oddsize, 0,
NULL, NULL },
{ "base64_decode", test_util_format_base64_decode, 0, NULL, NULL },
{ "base16_decode", test_util_format_base16_decode, 0, NULL, NULL },
@@ -382,6 +413,7 @@ struct testcase_t util_format_tests[] = {
NULL, NULL },
{ "base32_decode", test_util_format_base32_decode, 0,
NULL, NULL },
+ { "encoded_size", test_util_format_encoded_size, 0, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_util_process.c b/src/test/test_util_process.c
index 4e75b97f3d..70292f2287 100644
--- a/src/test/test_util_process.c
+++ b/src/test/test_util_process.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2016, The Tor Project, Inc. */
+/* Copyright (c) 2010-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define UTIL_PROCESS_PRIVATE
diff --git a/src/test/test_util_slow.c b/src/test/test_util_slow.c
index 1e7160598c..3e5d78948d 100644
--- a/src/test/test_util_slow.c
+++ b/src/test/test_util_slow.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -242,7 +242,7 @@ test_util_spawn_background_partial_read_impl(int exit_early)
#else
/* Check that we didn't read the end of file last time */
tt_assert(!eof);
- pos = tor_read_all_handle(process_handle->stdout_handle, stdout_buf,
+ pos = tor_read_all_handle(process_handle->stdout_pipe, stdout_buf,
sizeof(stdout_buf) - 1, NULL, &eof);
#endif
log_info(LD_GENERAL, "tor_read_all_handle() returned %d", (int)pos);
@@ -273,7 +273,7 @@ test_util_spawn_background_partial_read_impl(int exit_early)
#else
if (!eof) {
/* We should have got all the data, but maybe not the EOF flag */
- pos = tor_read_all_handle(process_handle->stdout_handle, stdout_buf,
+ pos = tor_read_all_handle(process_handle->stdout_pipe, stdout_buf,
sizeof(stdout_buf) - 1,
process_handle, &eof);
tt_int_op(0,OP_EQ, pos);
diff --git a/src/test/test_workqueue.c b/src/test/test_workqueue.c
index ccb8d0c8ca..6fa46f90d4 100644
--- a/src/test/test_workqueue.c
+++ b/src/test/test_workqueue.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -200,7 +200,9 @@ add_work(threadpool_t *tp)
crypto_rand((char*)w->msg, 20);
w->msglen = 20;
++rsa_sent;
- return threadpool_queue_work(tp, workqueue_do_rsa, handle_reply, w);
+ return threadpool_queue_work_priority(tp,
+ WQ_PRI_MED,
+ workqueue_do_rsa, handle_reply, w);
} else {
ecdh_work_t *w = tor_malloc_zero(sizeof(*w));
w->serial = n_sent++;
diff --git a/src/test/testing_common.c b/src/test/testing_common.c
index caeae13a38..d7e36edbc0 100644
--- a/src/test/testing_common.c
+++ b/src/test/testing_common.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
extern const char tor_git_revision[];
@@ -21,6 +21,7 @@ const char tor_git_revision[] = "";
#include "rephist.h"
#include "backtrace.h"
#include "test.h"
+#include "channelpadding.h"
#include <stdio.h>
#ifdef HAVE_FCNTL_H
@@ -38,7 +39,6 @@ const char tor_git_revision[] = "";
#ifdef USE_DMALLOC
#include <dmalloc.h>
-#include <openssl/crypto.h>
#include "main.h"
#endif
@@ -238,14 +238,15 @@ main(int c, const char **v)
#ifdef USE_DMALLOC
{
- int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
- tor_assert(r);
+ int r = crypto_use_tor_alloc_functions();
+ tor_assert(r == 0);
}
#endif
update_approx_time(time(NULL));
options = options_new();
tor_threads_init();
+ tor_compress_init();
network_init();
@@ -304,10 +305,15 @@ main(int c, const char **v)
tor_free(errmsg);
return 1;
}
+
tor_set_failed_assertion_callback(an_assertion_failed);
init_pregenerated_keys();
+ channelpadding_new_consensus_params(NULL);
+
+ predicted_ports_init();
+
atexit(remove_directory);
int have_failed = (tinytest_main(c, v, testgroups) != 0);
diff --git a/src/test/testing_rsakeys.c b/src/test/testing_rsakeys.c
index 134770bb0d..5dff233a69 100644
--- a/src/test/testing_rsakeys.c
+++ b/src/test/testing_rsakeys.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2016, The Tor Project, Inc. */
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/tools/include.am b/src/tools/include.am
index d0185b5887..717af9e2ae 100644
--- a/src/tools/include.am
+++ b/src/tools/include.am
@@ -1,5 +1,4 @@
bin_PROGRAMS+= src/tools/tor-resolve src/tools/tor-gencert
-noinst_PROGRAMS+= src/tools/tor-checkkey
if COVERAGE_ENABLED
noinst_PROGRAMS+= src/tools/tor-cov-resolve src/tools/tor-cov-gencert
@@ -9,7 +8,8 @@ src_tools_tor_resolve_SOURCES = src/tools/tor-resolve.c
src_tools_tor_resolve_LDFLAGS =
src_tools_tor_resolve_LDADD = src/common/libor.a \
src/common/libor-ctime.a \
- @TOR_LIB_MATH@ @TOR_LIB_WS32@
+ @TOR_LIB_MATH@ @TOR_LIB_WS32@ \
+ $(rust_ldadd)
if COVERAGE_ENABLED
src_tools_tor_cov_resolve_SOURCES = src/tools/tor-resolve.c
@@ -23,11 +23,12 @@ endif
src_tools_tor_gencert_SOURCES = src/tools/tor-gencert.c
src_tools_tor_gencert_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
src_tools_tor_gencert_LDADD = src/common/libor.a src/common/libor-crypto.a \
- src/common/libor-ctime.a \
- $(LIBKECCAK_TINY) \
- $(LIBDONNA) \
- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
+ src/common/libor-ctime.a \
+ $(LIBKECCAK_TINY) \
+ $(LIBDONNA) \
+ @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
+ $(rust_ldadd)
if COVERAGE_ENABLED
src_tools_tor_cov_gencert_SOURCES = src/tools/tor-gencert.c
@@ -43,14 +44,4 @@ src_tools_tor_cov_gencert_LDADD = src/common/libor-testing.a \
@TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
endif
-src_tools_tor_checkkey_SOURCES = src/tools/tor-checkkey.c
-src_tools_tor_checkkey_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
-src_tools_tor_checkkey_LDADD = src/common/libor.a \
- src/common/libor-ctime.a \
- src/common/libor-crypto.a \
- $(LIBKECCAK_TINY) \
- $(LIBDONNA) \
- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
-
EXTRA_DIST += src/tools/tor-fw-helper/README
diff --git a/src/tools/tor-checkkey.c b/src/tools/tor-checkkey.c
deleted file mode 100644
index 3e16fd0336..0000000000
--- a/src/tools/tor-checkkey.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Copyright (c) 2008-2015, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-#include "orconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "crypto.h"
-#include "torlog.h"
-#include "util.h"
-#include "compat.h"
-#include "compat_openssl.h"
-#include <openssl/bn.h>
-#include <openssl/rsa.h>
-
-int
-main(int c, char **v)
-{
- crypto_pk_t *env;
- char *str;
- RSA *rsa;
- int wantdigest=0;
- int fname_idx;
- char *fname=NULL;
- init_logging(1);
-
- if (c < 2) {
- fprintf(stderr, "Hi. I'm tor-checkkey. Tell me a filename that "
- "has a PEM-encoded RSA public key (like in a cert) and I'll "
- "dump the modulus. Use the --digest option too and I'll "
- "dump the digest.\n");
- return 1;
- }
-
- if (crypto_global_init(0, NULL, NULL)) {
- fprintf(stderr, "Couldn't initialize crypto library.\n");
- return 1;
- }
-
- if (!strcmp(v[1], "--digest")) {
- wantdigest = 1;
- fname_idx = 2;
- if (c<3) {
- fprintf(stderr, "too few arguments");
- return 1;
- }
- } else {
- wantdigest = 0;
- fname_idx = 1;
- }
-
- fname = expand_filename(v[fname_idx]);
- str = read_file_to_str(fname, 0, NULL);
- tor_free(fname);
- if (!str) {
- fprintf(stderr, "Couldn't read %s\n", v[fname_idx]);
- return 1;
- }
-
- env = crypto_pk_new();
- if (crypto_pk_read_public_key_from_string(env, str, strlen(str))<0) {
- fprintf(stderr, "Couldn't parse key.\n");
- return 1;
- }
- tor_free(str);
-
- if (wantdigest) {
- char digest[HEX_DIGEST_LEN+1];
- if (crypto_pk_get_fingerprint(env, digest, 0)<0)
- return 1;
- printf("%s\n",digest);
- } else {
- rsa = crypto_pk_get_rsa_(env);
-
- const BIGNUM *rsa_n;
-#ifdef OPENSSL_1_1_API
- const BIGNUM *rsa_e, *rsa_d;
- RSA_get0_key(rsa, &rsa_n, &rsa_e, &rsa_d);
-#else
- rsa_n = rsa->n;
-#endif
- str = BN_bn2hex(rsa_n);
-
- printf("%s\n", str);
- }
-
- return 0;
-}
-
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index db308485e6..395535697f 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2015, The Tor Project, Inc. */
+/* Copyright (c) 2007-2017, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c
index 6ac866d3c0..1e2409a131 100644
--- a/src/tools/tor-resolve.c
+++ b/src/tools/tor-resolve.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
- * Copyright (c) 2007-2015, The Tor Project, Inc.
+ * Copyright (c) 2007-2017, The Tor Project, Inc.
*/
/* See LICENSE for licensing information */
diff --git a/src/trace/debug.h b/src/trace/debug.h
new file mode 100644
index 0000000000..3a1652543a
--- /dev/null
+++ b/src/trace/debug.h
@@ -0,0 +1,25 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_TRACE_LOG_DEBUG_H
+#define TOR_TRACE_LOG_DEBUG_H
+
+#include "torlog.h"
+
+/* Stringify pre-processor trick. */
+#define XSTR(d) STR(d)
+#define STR(s) #s
+
+/* Send every event to a debug log level. This is useful to debug new trace
+ * events without implementing them for a specific event tracing framework.
+ * Note that the arguments are ignored since at this step we do not know the
+ * types and amount there is. */
+
+/* Example on how to map a tracepoint to log_debug(). */
+#undef tor_trace
+#define tor_trace(subsystem, name, args...) \
+ log_debug(LD_GENERAL, "Trace event \"" XSTR(name) "\" from " \
+ "\"" XSTR(subsystem) "\" hit. " \
+ "(line "XSTR(__LINE__) ")")
+
+#endif /* TOR_TRACE_LOG_DEBUG_H */
diff --git a/src/trace/events.h b/src/trace/events.h
new file mode 100644
index 0000000000..1be1fd596e
--- /dev/null
+++ b/src/trace/events.h
@@ -0,0 +1,45 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file events.h
+ * \brief Header file for Tor event tracing.
+ **/
+
+#ifndef TOR_TRACE_EVENTS_H
+#define TOR_TRACE_EVENTS_H
+
+/*
+ * The following defines a generic event tracing function name that has to be
+ * used to trace events in the code base.
+ *
+ * That generic function is then defined by a event tracing framework. For
+ * instance, the "log debug" framework sends all trace events to log_debug()
+ * which is defined in src/trace/debug.h which can only be enabled at compile
+ * time (--enable-event-tracing-debug).
+ *
+ * By default, every trace events in the code base are replaced by a NOP. See
+ * doc/HACKING/Tracing.md for more information on how to use event tracing or
+ * add events.
+ */
+
+#ifdef TOR_EVENT_TRACING_ENABLED
+/* Map every trace event to a per subsystem macro. */
+#define tor_trace(subsystem, name, ...) \
+ tor_trace_##subsystem(name, __VA_ARGS__)
+
+/* Enable event tracing for the debug framework where all trace events are
+ * mapped to a log_debug(). */
+#ifdef USE_EVENT_TRACING_DEBUG
+#include "trace/debug.h"
+#endif
+
+#else /* TOR_EVENT_TRACING_ENABLED */
+
+/* Reaching this point, we NOP every event declaration because event tracing
+ * is not been enabled at compile time. */
+#define tor_trace(subsystem, name, args...)
+
+#endif /* TOR_EVENT_TRACING_ENABLED */
+
+#endif /* TOR_TRACE_EVENTS_H */
diff --git a/src/trace/include.am b/src/trace/include.am
new file mode 100644
index 0000000000..3285b04de6
--- /dev/null
+++ b/src/trace/include.am
@@ -0,0 +1,22 @@
+# Include the src/ so we can use the trace/events.h statement when including
+# any file in that directory.
+AM_CPPFLAGS += -I$(srcdir)/src
+
+noinst_LIBRARIES += \
+ src/trace/libor-trace.a
+LIBOR_TRACE_A_SOURCES = \
+ src/trace/trace.c
+
+TRACEHEADERS = \
+ src/trace/trace.h \
+ src/trace/events.h
+
+if USE_EVENT_TRACING_DEBUG
+TRACEHEADERS += \
+ src/trace/debug.h
+endif
+
+# Library source files.
+src_trace_libor_trace_a_SOURCES = $(LIBOR_TRACE_A_SOURCES)
+
+noinst_HEADERS+= $(TRACEHEADERS)
diff --git a/src/trace/trace.c b/src/trace/trace.c
new file mode 100644
index 0000000000..fcdb80091f
--- /dev/null
+++ b/src/trace/trace.c
@@ -0,0 +1,11 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "trace.h"
+
+/** Initialize the tracing library. */
+void
+tor_trace_init(void)
+{
+}
+
diff --git a/src/trace/trace.h b/src/trace/trace.h
new file mode 100644
index 0000000000..28fcd8eea8
--- /dev/null
+++ b/src/trace/trace.h
@@ -0,0 +1,10 @@
+/* Copyright (c) 2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_TRACE_TRACE_H
+#define TOR_TRACE_TRACE_H
+
+void tor_trace_init(void);
+
+#endif // TOR_TRACE_TRACE_H
+
diff --git a/src/trunnel/channelpadding_negotiation.c b/src/trunnel/channelpadding_negotiation.c
new file mode 100644
index 0000000000..172d6f8a03
--- /dev/null
+++ b/src/trunnel/channelpadding_negotiation.c
@@ -0,0 +1,281 @@
+/* channelpadding_negotiation.c -- generated by Trunnel v1.4.3.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#include <stdlib.h>
+#include "trunnel-impl.h"
+
+#include "channelpadding_negotiation.h"
+
+#define TRUNNEL_SET_ERROR_CODE(obj) \
+ do { \
+ (obj)->trunnel_error_code_ = 1; \
+ } while (0)
+
+#if defined(__COVERITY__) || defined(__clang_analyzer__)
+/* If we're runnning a static analysis tool, we don't want it to complain
+ * that some of our remaining-bytes checks are dead-code. */
+int channelpaddingnegotiation_deadcode_dummy__ = 0;
+#define OR_DEADCODE_DUMMY || channelpaddingnegotiation_deadcode_dummy__
+#else
+#define OR_DEADCODE_DUMMY
+#endif
+
+#define CHECK_REMAINING(nbytes, label) \
+ do { \
+ if (remaining < (nbytes) OR_DEADCODE_DUMMY) { \
+ goto label; \
+ } \
+ } while (0)
+
+channelpadding_negotiate_t *
+channelpadding_negotiate_new(void)
+{
+ channelpadding_negotiate_t *val = trunnel_calloc(1, sizeof(channelpadding_negotiate_t));
+ if (NULL == val)
+ return NULL;
+ val->command = CHANNELPADDING_COMMAND_START;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+channelpadding_negotiate_clear(channelpadding_negotiate_t *obj)
+{
+ (void) obj;
+}
+
+void
+channelpadding_negotiate_free(channelpadding_negotiate_t *obj)
+{
+ if (obj == NULL)
+ return;
+ channelpadding_negotiate_clear(obj);
+ trunnel_memwipe(obj, sizeof(channelpadding_negotiate_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+channelpadding_negotiate_get_version(channelpadding_negotiate_t *inp)
+{
+ return inp->version;
+}
+int
+channelpadding_negotiate_set_version(channelpadding_negotiate_t *inp, uint8_t val)
+{
+ if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+channelpadding_negotiate_get_command(channelpadding_negotiate_t *inp)
+{
+ return inp->command;
+}
+int
+channelpadding_negotiate_set_command(channelpadding_negotiate_t *inp, uint8_t val)
+{
+ if (! ((val == CHANNELPADDING_COMMAND_START || val == CHANNELPADDING_COMMAND_STOP))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->command = val;
+ return 0;
+}
+uint16_t
+channelpadding_negotiate_get_ito_low_ms(channelpadding_negotiate_t *inp)
+{
+ return inp->ito_low_ms;
+}
+int
+channelpadding_negotiate_set_ito_low_ms(channelpadding_negotiate_t *inp, uint16_t val)
+{
+ inp->ito_low_ms = val;
+ return 0;
+}
+uint16_t
+channelpadding_negotiate_get_ito_high_ms(channelpadding_negotiate_t *inp)
+{
+ return inp->ito_high_ms;
+}
+int
+channelpadding_negotiate_set_ito_high_ms(channelpadding_negotiate_t *inp, uint16_t val)
+{
+ inp->ito_high_ms = val;
+ return 0;
+}
+const char *
+channelpadding_negotiate_check(const channelpadding_negotiate_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 == 0))
+ return "Integer out of bounds";
+ if (! (obj->command == CHANNELPADDING_COMMAND_START || obj->command == CHANNELPADDING_COMMAND_STOP))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+channelpadding_negotiate_encoded_len(const channelpadding_negotiate_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != channelpadding_negotiate_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [0] */
+ result += 1;
+
+ /* Length of u8 command IN [CHANNELPADDING_COMMAND_START, CHANNELPADDING_COMMAND_STOP] */
+ result += 1;
+
+ /* Length of u16 ito_low_ms */
+ result += 2;
+
+ /* Length of u16 ito_high_ms */
+ result += 2;
+ return result;
+}
+int
+channelpadding_negotiate_clear_errors(channelpadding_negotiate_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+channelpadding_negotiate_encode(uint8_t *output, const size_t avail, const channelpadding_negotiate_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 = channelpadding_negotiate_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = channelpadding_negotiate_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [0] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 command IN [CHANNELPADDING_COMMAND_START, CHANNELPADDING_COMMAND_STOP] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->command));
+ written += 1; ptr += 1;
+
+ /* Encode u16 ito_low_ms */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->ito_low_ms));
+ written += 2; ptr += 2;
+
+ /* Encode u16 ito_high_ms */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->ito_high_ms));
+ 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 channelpadding_negotiate_parse(), but do not allocate the
+ * output object.
+ */
+static ssize_t
+channelpadding_negotiate_parse_into(channelpadding_negotiate_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 [0] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 0))
+ goto fail;
+
+ /* Parse u8 command IN [CHANNELPADDING_COMMAND_START, CHANNELPADDING_COMMAND_STOP] */
+ CHECK_REMAINING(1, truncated);
+ obj->command = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->command == CHANNELPADDING_COMMAND_START || obj->command == CHANNELPADDING_COMMAND_STOP))
+ goto fail;
+
+ /* Parse u16 ito_low_ms */
+ CHECK_REMAINING(2, truncated);
+ obj->ito_low_ms = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u16 ito_high_ms */
+ CHECK_REMAINING(2, truncated);
+ obj->ito_high_ms = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+channelpadding_negotiate_parse(channelpadding_negotiate_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = channelpadding_negotiate_new();
+ if (NULL == *output)
+ return -1;
+ result = channelpadding_negotiate_parse_into(*output, input, len_in);
+ if (result < 0) {
+ channelpadding_negotiate_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
diff --git a/src/trunnel/channelpadding_negotiation.h b/src/trunnel/channelpadding_negotiation.h
new file mode 100644
index 0000000000..e58bda3be1
--- /dev/null
+++ b/src/trunnel/channelpadding_negotiation.h
@@ -0,0 +1,98 @@
+/* channelpadding_negotiation.h -- generated by by Trunnel v1.4.3.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#ifndef TRUNNEL_CHANNELPADDING_NEGOTIATION_H
+#define TRUNNEL_CHANNELPADDING_NEGOTIATION_H
+
+#include <stdint.h>
+#include "trunnel.h"
+
+#define CHANNELPADDING_COMMAND_STOP 1
+#define CHANNELPADDING_COMMAND_START 2
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CHANNELPADDING_NEGOTIATE)
+struct channelpadding_negotiate_st {
+ uint8_t version;
+ uint8_t command;
+ uint16_t ito_low_ms;
+ uint16_t ito_high_ms;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct channelpadding_negotiate_st channelpadding_negotiate_t;
+/** Return a newly allocated channelpadding_negotiate with all
+ * elements set to zero.
+ */
+channelpadding_negotiate_t *channelpadding_negotiate_new(void);
+/** Release all storage held by the channelpadding_negotiate in
+ * 'victim'. (Do nothing if 'victim' is NULL.)
+ */
+void channelpadding_negotiate_free(channelpadding_negotiate_t *victim);
+/** Try to parse a channelpadding_negotiate 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 channelpadding_negotiate_t. On failure, return -2
+ * if the input appears truncated, and -1 if the input is otherwise
+ * invalid.
+ */
+ssize_t channelpadding_negotiate_parse(channelpadding_negotiate_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * channelpadding_negotiate 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 channelpadding_negotiate_encoded_len(const channelpadding_negotiate_t *obj);
+/** Try to encode the channelpadding_negotiate 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 channelpadding_negotiate_encode(uint8_t *output, size_t avail, const channelpadding_negotiate_t *input);
+/** Check whether the internal state of the channelpadding_negotiate
+ * in 'obj' is consistent. Return NULL if it is, and a short message
+ * if it is not.
+ */
+const char *channelpadding_negotiate_check(const channelpadding_negotiate_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int channelpadding_negotiate_clear_errors(channelpadding_negotiate_t *obj);
+/** Return the value of the version field of the
+ * channelpadding_negotiate_t in 'inp'
+ */
+uint8_t channelpadding_negotiate_get_version(channelpadding_negotiate_t *inp);
+/** Set the value of the version field of the
+ * channelpadding_negotiate_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int channelpadding_negotiate_set_version(channelpadding_negotiate_t *inp, uint8_t val);
+/** Return the value of the command field of the
+ * channelpadding_negotiate_t in 'inp'
+ */
+uint8_t channelpadding_negotiate_get_command(channelpadding_negotiate_t *inp);
+/** Set the value of the command field of the
+ * channelpadding_negotiate_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int channelpadding_negotiate_set_command(channelpadding_negotiate_t *inp, uint8_t val);
+/** Return the value of the ito_low_ms field of the
+ * channelpadding_negotiate_t in 'inp'
+ */
+uint16_t channelpadding_negotiate_get_ito_low_ms(channelpadding_negotiate_t *inp);
+/** Set the value of the ito_low_ms field of the
+ * channelpadding_negotiate_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int channelpadding_negotiate_set_ito_low_ms(channelpadding_negotiate_t *inp, uint16_t val);
+/** Return the value of the ito_high_ms field of the
+ * channelpadding_negotiate_t in 'inp'
+ */
+uint16_t channelpadding_negotiate_get_ito_high_ms(channelpadding_negotiate_t *inp);
+/** Set the value of the ito_high_ms field of the
+ * channelpadding_negotiate_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int channelpadding_negotiate_set_ito_high_ms(channelpadding_negotiate_t *inp, uint16_t val);
+
+
+#endif
diff --git a/src/trunnel/channelpadding_negotiation.trunnel b/src/trunnel/channelpadding_negotiation.trunnel
new file mode 100644
index 0000000000..7f2d4795b0
--- /dev/null
+++ b/src/trunnel/channelpadding_negotiation.trunnel
@@ -0,0 +1,17 @@
+const CHANNELPADDING_COMMAND_STOP = 1;
+const CHANNELPADDING_COMMAND_START = 2;
+
+/* This command tells the relay to alter its min and max netflow
+ timeout range values, and send padding at that rate (resuming
+ if stopped). */
+struct channelpadding_negotiate {
+ u8 version IN [0];
+ u8 command IN [CHANNELPADDING_COMMAND_START, CHANNELPADDING_COMMAND_STOP];
+
+ /* Min must not be lower than the current consensus parameter
+ nf_ito_low. */
+ u16 ito_low_ms;
+
+ /* Max must not be lower than ito_low_ms */
+ u16 ito_high_ms;
+};
diff --git a/src/trunnel/hs/cell_common.c b/src/trunnel/hs/cell_common.c
index 830f2260ee..b7f19ffc60 100644
--- a/src/trunnel/hs/cell_common.c
+++ b/src/trunnel/hs/cell_common.c
@@ -28,10 +28,10 @@ int cellcommon_deadcode_dummy__ = 0;
} \
} while (0)
-cell_extension_fields_t *
-cell_extension_fields_new(void)
+trn_cell_extension_fields_t *
+trn_cell_extension_fields_new(void)
{
- cell_extension_fields_t *val = trunnel_calloc(1, sizeof(cell_extension_fields_t));
+ trn_cell_extension_fields_t *val = trunnel_calloc(1, sizeof(trn_cell_extension_fields_t));
if (NULL == val)
return NULL;
return val;
@@ -40,7 +40,7 @@ cell_extension_fields_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-cell_extension_fields_clear(cell_extension_fields_t *obj)
+trn_cell_extension_fields_clear(trn_cell_extension_fields_t *obj)
{
(void) obj;
TRUNNEL_DYNARRAY_WIPE(&obj->field);
@@ -48,62 +48,62 @@ cell_extension_fields_clear(cell_extension_fields_t *obj)
}
void
-cell_extension_fields_free(cell_extension_fields_t *obj)
+trn_cell_extension_fields_free(trn_cell_extension_fields_t *obj)
{
if (obj == NULL)
return;
- cell_extension_fields_clear(obj);
- trunnel_memwipe(obj, sizeof(cell_extension_fields_t));
+ trn_cell_extension_fields_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_extension_fields_t));
trunnel_free_(obj);
}
uint8_t
-cell_extension_fields_get_field_type(const cell_extension_fields_t *inp)
+trn_cell_extension_fields_get_field_type(const trn_cell_extension_fields_t *inp)
{
return inp->field_type;
}
int
-cell_extension_fields_set_field_type(cell_extension_fields_t *inp, uint8_t val)
+trn_cell_extension_fields_set_field_type(trn_cell_extension_fields_t *inp, uint8_t val)
{
inp->field_type = val;
return 0;
}
uint8_t
-cell_extension_fields_get_field_len(const cell_extension_fields_t *inp)
+trn_cell_extension_fields_get_field_len(const trn_cell_extension_fields_t *inp)
{
return inp->field_len;
}
int
-cell_extension_fields_set_field_len(cell_extension_fields_t *inp, uint8_t val)
+trn_cell_extension_fields_set_field_len(trn_cell_extension_fields_t *inp, uint8_t val)
{
inp->field_len = val;
return 0;
}
size_t
-cell_extension_fields_getlen_field(const cell_extension_fields_t *inp)
+trn_cell_extension_fields_getlen_field(const trn_cell_extension_fields_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->field);
}
uint8_t
-cell_extension_fields_get_field(cell_extension_fields_t *inp, size_t idx)
+trn_cell_extension_fields_get_field(trn_cell_extension_fields_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->field, idx);
}
uint8_t
-cell_extension_fields_getconst_field(const cell_extension_fields_t *inp, size_t idx)
+trn_cell_extension_fields_getconst_field(const trn_cell_extension_fields_t *inp, size_t idx)
{
- return cell_extension_fields_get_field((cell_extension_fields_t*)inp, idx);
+ return trn_cell_extension_fields_get_field((trn_cell_extension_fields_t*)inp, idx);
}
int
-cell_extension_fields_set_field(cell_extension_fields_t *inp, size_t idx, uint8_t elt)
+trn_cell_extension_fields_set_field(trn_cell_extension_fields_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->field, idx, elt);
return 0;
}
int
-cell_extension_fields_add_field(cell_extension_fields_t *inp, uint8_t elt)
+trn_cell_extension_fields_add_field(trn_cell_extension_fields_t *inp, uint8_t elt)
{
#if SIZE_MAX >= UINT8_MAX
if (inp->field.n_ == UINT8_MAX)
@@ -117,17 +117,17 @@ cell_extension_fields_add_field(cell_extension_fields_t *inp, uint8_t elt)
}
uint8_t *
-cell_extension_fields_getarray_field(cell_extension_fields_t *inp)
+trn_cell_extension_fields_getarray_field(trn_cell_extension_fields_t *inp)
{
return inp->field.elts_;
}
const uint8_t *
-cell_extension_fields_getconstarray_field(const cell_extension_fields_t *inp)
+trn_cell_extension_fields_getconstarray_field(const trn_cell_extension_fields_t *inp)
{
- return (const uint8_t *)cell_extension_fields_getarray_field((cell_extension_fields_t*)inp);
+ return (const uint8_t *)trn_cell_extension_fields_getarray_field((trn_cell_extension_fields_t*)inp);
}
int
-cell_extension_fields_setlen_field(cell_extension_fields_t *inp, size_t newlen)
+trn_cell_extension_fields_setlen_field(trn_cell_extension_fields_t *inp, size_t newlen)
{
uint8_t *newptr;
#if UINT8_MAX < SIZE_MAX
@@ -147,7 +147,7 @@ cell_extension_fields_setlen_field(cell_extension_fields_t *inp, size_t newlen)
return -1;
}
const char *
-cell_extension_fields_check(const cell_extension_fields_t *obj)
+trn_cell_extension_fields_check(const trn_cell_extension_fields_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -159,11 +159,11 @@ cell_extension_fields_check(const cell_extension_fields_t *obj)
}
ssize_t
-cell_extension_fields_encoded_len(const cell_extension_fields_t *obj)
+trn_cell_extension_fields_encoded_len(const trn_cell_extension_fields_t *obj)
{
ssize_t result = 0;
- if (NULL != cell_extension_fields_check(obj))
+ if (NULL != trn_cell_extension_fields_check(obj))
return -1;
@@ -178,24 +178,24 @@ cell_extension_fields_encoded_len(const cell_extension_fields_t *obj)
return result;
}
int
-cell_extension_fields_clear_errors(cell_extension_fields_t *obj)
+trn_cell_extension_fields_clear_errors(trn_cell_extension_fields_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-cell_extension_fields_encode(uint8_t *output, const size_t avail, const cell_extension_fields_t *obj)
+trn_cell_extension_fields_encode(uint8_t *output, const size_t avail, const trn_cell_extension_fields_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 = cell_extension_fields_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_extension_fields_encoded_len(obj);
#endif
- if (NULL != (msg = cell_extension_fields_check(obj)))
+ if (NULL != (msg = trn_cell_extension_fields_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -252,11 +252,11 @@ cell_extension_fields_encode(uint8_t *output, const size_t avail, const cell_ext
return result;
}
-/** As cell_extension_fields_parse(), but do not allocate the output
- * object.
+/** As trn_cell_extension_fields_parse(), but do not allocate the
+ * output object.
*/
static ssize_t
-cell_extension_fields_parse_into(cell_extension_fields_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_extension_fields_parse_into(trn_cell_extension_fields_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -290,23 +290,23 @@ cell_extension_fields_parse_into(cell_extension_fields_t *obj, const uint8_t *in
}
ssize_t
-cell_extension_fields_parse(cell_extension_fields_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_extension_fields_parse(trn_cell_extension_fields_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = cell_extension_fields_new();
+ *output = trn_cell_extension_fields_new();
if (NULL == *output)
return -1;
- result = cell_extension_fields_parse_into(*output, input, len_in);
+ result = trn_cell_extension_fields_parse_into(*output, input, len_in);
if (result < 0) {
- cell_extension_fields_free(*output);
+ trn_cell_extension_fields_free(*output);
*output = NULL;
}
return result;
}
-cell_extension_t *
-cell_extension_new(void)
+trn_cell_extension_t *
+trn_cell_extension_new(void)
{
- cell_extension_t *val = trunnel_calloc(1, sizeof(cell_extension_t));
+ trn_cell_extension_t *val = trunnel_calloc(1, sizeof(trn_cell_extension_t));
if (NULL == val)
return NULL;
return val;
@@ -315,14 +315,14 @@ cell_extension_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-cell_extension_clear(cell_extension_t *obj)
+trn_cell_extension_clear(trn_cell_extension_t *obj)
{
(void) obj;
{
unsigned idx;
for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->fields); ++idx) {
- cell_extension_fields_free(TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
+ trn_cell_extension_fields_free(TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
}
}
TRUNNEL_DYNARRAY_WIPE(&obj->fields);
@@ -330,92 +330,92 @@ cell_extension_clear(cell_extension_t *obj)
}
void
-cell_extension_free(cell_extension_t *obj)
+trn_cell_extension_free(trn_cell_extension_t *obj)
{
if (obj == NULL)
return;
- cell_extension_clear(obj);
- trunnel_memwipe(obj, sizeof(cell_extension_t));
+ trn_cell_extension_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_extension_t));
trunnel_free_(obj);
}
uint8_t
-cell_extension_get_num(const cell_extension_t *inp)
+trn_cell_extension_get_num(const trn_cell_extension_t *inp)
{
return inp->num;
}
int
-cell_extension_set_num(cell_extension_t *inp, uint8_t val)
+trn_cell_extension_set_num(trn_cell_extension_t *inp, uint8_t val)
{
inp->num = val;
return 0;
}
size_t
-cell_extension_getlen_fields(const cell_extension_t *inp)
+trn_cell_extension_getlen_fields(const trn_cell_extension_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->fields);
}
-struct cell_extension_fields_st *
-cell_extension_get_fields(cell_extension_t *inp, size_t idx)
+struct trn_cell_extension_fields_st *
+trn_cell_extension_get_fields(trn_cell_extension_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->fields, idx);
}
- const struct cell_extension_fields_st *
-cell_extension_getconst_fields(const cell_extension_t *inp, size_t idx)
+ const struct trn_cell_extension_fields_st *
+trn_cell_extension_getconst_fields(const trn_cell_extension_t *inp, size_t idx)
{
- return cell_extension_get_fields((cell_extension_t*)inp, idx);
+ return trn_cell_extension_get_fields((trn_cell_extension_t*)inp, idx);
}
int
-cell_extension_set_fields(cell_extension_t *inp, size_t idx, struct cell_extension_fields_st * elt)
+trn_cell_extension_set_fields(trn_cell_extension_t *inp, size_t idx, struct trn_cell_extension_fields_st * elt)
{
- cell_extension_fields_t *oldval = TRUNNEL_DYNARRAY_GET(&inp->fields, idx);
+ trn_cell_extension_fields_t *oldval = TRUNNEL_DYNARRAY_GET(&inp->fields, idx);
if (oldval && oldval != elt)
- cell_extension_fields_free(oldval);
- return cell_extension_set0_fields(inp, idx, elt);
+ trn_cell_extension_fields_free(oldval);
+ return trn_cell_extension_set0_fields(inp, idx, elt);
}
int
-cell_extension_set0_fields(cell_extension_t *inp, size_t idx, struct cell_extension_fields_st * elt)
+trn_cell_extension_set0_fields(trn_cell_extension_t *inp, size_t idx, struct trn_cell_extension_fields_st * elt)
{
TRUNNEL_DYNARRAY_SET(&inp->fields, idx, elt);
return 0;
}
int
-cell_extension_add_fields(cell_extension_t *inp, struct cell_extension_fields_st * elt)
+trn_cell_extension_add_fields(trn_cell_extension_t *inp, struct trn_cell_extension_fields_st * elt)
{
#if SIZE_MAX >= UINT8_MAX
if (inp->fields.n_ == UINT8_MAX)
goto trunnel_alloc_failed;
#endif
- TRUNNEL_DYNARRAY_ADD(struct cell_extension_fields_st *, &inp->fields, elt, {});
+ TRUNNEL_DYNARRAY_ADD(struct trn_cell_extension_fields_st *, &inp->fields, elt, {});
return 0;
trunnel_alloc_failed:
TRUNNEL_SET_ERROR_CODE(inp);
return -1;
}
-struct cell_extension_fields_st * *
-cell_extension_getarray_fields(cell_extension_t *inp)
+struct trn_cell_extension_fields_st * *
+trn_cell_extension_getarray_fields(trn_cell_extension_t *inp)
{
return inp->fields.elts_;
}
-const struct cell_extension_fields_st * const *
-cell_extension_getconstarray_fields(const cell_extension_t *inp)
+const struct trn_cell_extension_fields_st * const *
+trn_cell_extension_getconstarray_fields(const trn_cell_extension_t *inp)
{
- return (const struct cell_extension_fields_st * const *)cell_extension_getarray_fields((cell_extension_t*)inp);
+ return (const struct trn_cell_extension_fields_st * const *)trn_cell_extension_getarray_fields((trn_cell_extension_t*)inp);
}
int
-cell_extension_setlen_fields(cell_extension_t *inp, size_t newlen)
+trn_cell_extension_setlen_fields(trn_cell_extension_t *inp, size_t newlen)
{
- struct cell_extension_fields_st * *newptr;
+ struct trn_cell_extension_fields_st * *newptr;
#if UINT8_MAX < SIZE_MAX
if (newlen > UINT8_MAX)
goto trunnel_alloc_failed;
#endif
newptr = trunnel_dynarray_setlen(&inp->fields.allocated_,
&inp->fields.n_, inp->fields.elts_, newlen,
- sizeof(inp->fields.elts_[0]), (trunnel_free_fn_t) cell_extension_fields_free,
+ sizeof(inp->fields.elts_[0]), (trunnel_free_fn_t) trn_cell_extension_fields_free,
&inp->trunnel_error_code_);
if (newlen != 0 && newptr == NULL)
goto trunnel_alloc_failed;
@@ -426,7 +426,7 @@ cell_extension_setlen_fields(cell_extension_t *inp, size_t newlen)
return -1;
}
const char *
-cell_extension_check(const cell_extension_t *obj)
+trn_cell_extension_check(const trn_cell_extension_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -437,7 +437,7 @@ cell_extension_check(const cell_extension_t *obj)
unsigned idx;
for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->fields); ++idx) {
- if (NULL != (msg = cell_extension_fields_check(TRUNNEL_DYNARRAY_GET(&obj->fields, idx))))
+ if (NULL != (msg = trn_cell_extension_fields_check(TRUNNEL_DYNARRAY_GET(&obj->fields, idx))))
return msg;
}
}
@@ -447,46 +447,46 @@ cell_extension_check(const cell_extension_t *obj)
}
ssize_t
-cell_extension_encoded_len(const cell_extension_t *obj)
+trn_cell_extension_encoded_len(const trn_cell_extension_t *obj)
{
ssize_t result = 0;
- if (NULL != cell_extension_check(obj))
+ if (NULL != trn_cell_extension_check(obj))
return -1;
/* Length of u8 num */
result += 1;
- /* Length of struct cell_extension_fields fields[num] */
+ /* Length of struct trn_cell_extension_fields fields[num] */
{
unsigned idx;
for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->fields); ++idx) {
- result += cell_extension_fields_encoded_len(TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
+ result += trn_cell_extension_fields_encoded_len(TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
}
}
return result;
}
int
-cell_extension_clear_errors(cell_extension_t *obj)
+trn_cell_extension_clear_errors(trn_cell_extension_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-cell_extension_encode(uint8_t *output, const size_t avail, const cell_extension_t *obj)
+trn_cell_extension_encode(uint8_t *output, const size_t avail, const trn_cell_extension_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 = cell_extension_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_extension_encoded_len(obj);
#endif
- if (NULL != (msg = cell_extension_check(obj)))
+ if (NULL != (msg = trn_cell_extension_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -500,13 +500,13 @@ cell_extension_encode(uint8_t *output, const size_t avail, const cell_extension_
trunnel_set_uint8(ptr, (obj->num));
written += 1; ptr += 1;
- /* Encode struct cell_extension_fields fields[num] */
+ /* Encode struct trn_cell_extension_fields fields[num] */
{
unsigned idx;
for (idx = 0; idx < TRUNNEL_DYNARRAY_LEN(&obj->fields); ++idx) {
trunnel_assert(written <= avail);
- result = cell_extension_fields_encode(ptr, avail - written, TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
+ result = trn_cell_extension_fields_encode(ptr, avail - written, TRUNNEL_DYNARRAY_GET(&obj->fields, idx));
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -537,10 +537,11 @@ cell_extension_encode(uint8_t *output, const size_t avail, const cell_extension_
return result;
}
-/** As cell_extension_parse(), but do not allocate the output object.
+/** As trn_cell_extension_parse(), but do not allocate the output
+ * object.
*/
static ssize_t
-cell_extension_parse_into(cell_extension_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_extension_parse_into(trn_cell_extension_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -552,18 +553,18 @@ cell_extension_parse_into(cell_extension_t *obj, const uint8_t *input, const siz
obj->num = (trunnel_get_uint8(ptr));
remaining -= 1; ptr += 1;
- /* Parse struct cell_extension_fields fields[num] */
- TRUNNEL_DYNARRAY_EXPAND(cell_extension_fields_t *, &obj->fields, obj->num, {});
+ /* Parse struct trn_cell_extension_fields fields[num] */
+ TRUNNEL_DYNARRAY_EXPAND(trn_cell_extension_fields_t *, &obj->fields, obj->num, {});
{
- cell_extension_fields_t * elt;
+ trn_cell_extension_fields_t * elt;
unsigned idx;
for (idx = 0; idx < obj->num; ++idx) {
- result = cell_extension_fields_parse(&elt, ptr, remaining);
+ result = trn_cell_extension_fields_parse(&elt, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
remaining -= result; ptr += result;
- TRUNNEL_DYNARRAY_ADD(cell_extension_fields_t *, &obj->fields, elt, {cell_extension_fields_free(elt);});
+ TRUNNEL_DYNARRAY_ADD(trn_cell_extension_fields_t *, &obj->fields, elt, {trn_cell_extension_fields_free(elt);});
}
}
trunnel_assert(ptr + remaining == input + len_in);
@@ -579,15 +580,15 @@ cell_extension_parse_into(cell_extension_t *obj, const uint8_t *input, const siz
}
ssize_t
-cell_extension_parse(cell_extension_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_extension_parse(trn_cell_extension_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = cell_extension_new();
+ *output = trn_cell_extension_new();
if (NULL == *output)
return -1;
- result = cell_extension_parse_into(*output, input, len_in);
+ result = trn_cell_extension_parse_into(*output, input, len_in);
if (result < 0) {
- cell_extension_free(*output);
+ trn_cell_extension_free(*output);
*output = NULL;
}
return result;
diff --git a/src/trunnel/hs/cell_common.h b/src/trunnel/hs/cell_common.h
index 8999f7da40..4d98a54cf4 100644
--- a/src/trunnel/hs/cell_common.h
+++ b/src/trunnel/hs/cell_common.h
@@ -8,191 +8,196 @@
#include <stdint.h>
#include "trunnel.h"
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CELL_EXTENSION_FIELDS)
-struct cell_extension_fields_st {
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_EXTENSION_FIELDS)
+struct trn_cell_extension_fields_st {
uint8_t field_type;
uint8_t field_len;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) field;
uint8_t trunnel_error_code_;
};
#endif
-typedef struct cell_extension_fields_st cell_extension_fields_t;
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CELL_EXTENSION)
-struct cell_extension_st {
+typedef struct trn_cell_extension_fields_st trn_cell_extension_fields_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_EXTENSION)
+struct trn_cell_extension_st {
uint8_t num;
- TRUNNEL_DYNARRAY_HEAD(, struct cell_extension_fields_st *) fields;
+ TRUNNEL_DYNARRAY_HEAD(, struct trn_cell_extension_fields_st *) fields;
uint8_t trunnel_error_code_;
};
#endif
-typedef struct cell_extension_st cell_extension_t;
-/** Return a newly allocated cell_extension_fields with all elements
- * set to zero.
- */
-cell_extension_fields_t *cell_extension_fields_new(void);
-/** Release all storage held by the cell_extension_fields in 'victim'.
- * (Do nothing if 'victim' is NULL.)
- */
-void cell_extension_fields_free(cell_extension_fields_t *victim);
-/** Try to parse a cell_extension_fields 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 cell_extension_fields_t. On failure, return -2 if the
- * input appears truncated, and -1 if the input is otherwise invalid.
- */
-ssize_t cell_extension_fields_parse(cell_extension_fields_t **output, const uint8_t *input, const size_t len_in);
+typedef struct trn_cell_extension_st trn_cell_extension_t;
+/** Return a newly allocated trn_cell_extension_fields with all
+ * elements set to zero.
+ */
+trn_cell_extension_fields_t *trn_cell_extension_fields_new(void);
+/** Release all storage held by the trn_cell_extension_fields in
+ * 'victim'. (Do nothing if 'victim' is NULL.)
+ */
+void trn_cell_extension_fields_free(trn_cell_extension_fields_t *victim);
+/** Try to parse a trn_cell_extension_fields 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 trn_cell_extension_fields_t. On failure, return -2
+ * if the input appears truncated, and -1 if the input is otherwise
+ * invalid.
+ */
+ssize_t trn_cell_extension_fields_parse(trn_cell_extension_fields_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * cell_extension_fields in 'obj'. On failure, return a negative
+ * trn_cell_extension_fields 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 cell_extension_fields_encoded_len(const cell_extension_fields_t *obj);
-/** Try to encode the cell_extension_fields from 'input' into the
+ssize_t trn_cell_extension_fields_encoded_len(const trn_cell_extension_fields_t *obj);
+/** Try to encode the trn_cell_extension_fields 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 cell_extension_fields_encode(uint8_t *output, size_t avail, const cell_extension_fields_t *input);
-/** Check whether the internal state of the cell_extension_fields in
- * 'obj' is consistent. Return NULL if it is, and a short message if
- * it is not.
+ssize_t trn_cell_extension_fields_encode(uint8_t *output, size_t avail, const trn_cell_extension_fields_t *input);
+/** Check whether the internal state of the trn_cell_extension_fields
+ * in 'obj' is consistent. Return NULL if it is, and a short message
+ * if it is not.
*/
-const char *cell_extension_fields_check(const cell_extension_fields_t *obj);
+const char *trn_cell_extension_fields_check(const trn_cell_extension_fields_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int cell_extension_fields_clear_errors(cell_extension_fields_t *obj);
+int trn_cell_extension_fields_clear_errors(trn_cell_extension_fields_t *obj);
/** Return the value of the field_type field of the
- * cell_extension_fields_t in 'inp'
+ * trn_cell_extension_fields_t in 'inp'
*/
-uint8_t cell_extension_fields_get_field_type(const cell_extension_fields_t *inp);
+uint8_t trn_cell_extension_fields_get_field_type(const trn_cell_extension_fields_t *inp);
/** Set the value of the field_type field of the
- * cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
+ * trn_cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
*/
-int cell_extension_fields_set_field_type(cell_extension_fields_t *inp, uint8_t val);
+int trn_cell_extension_fields_set_field_type(trn_cell_extension_fields_t *inp, uint8_t val);
/** Return the value of the field_len field of the
- * cell_extension_fields_t in 'inp'
+ * trn_cell_extension_fields_t in 'inp'
*/
-uint8_t cell_extension_fields_get_field_len(const cell_extension_fields_t *inp);
+uint8_t trn_cell_extension_fields_get_field_len(const trn_cell_extension_fields_t *inp);
/** Set the value of the field_len field of the
- * cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
+ * trn_cell_extension_fields_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
*/
-int cell_extension_fields_set_field_len(cell_extension_fields_t *inp, uint8_t val);
+int trn_cell_extension_fields_set_field_len(trn_cell_extension_fields_t *inp, uint8_t val);
/** Return the length of the dynamic array holding the field field of
- * the cell_extension_fields_t in 'inp'.
+ * the trn_cell_extension_fields_t in 'inp'.
*/
-size_t cell_extension_fields_getlen_field(const cell_extension_fields_t *inp);
+size_t trn_cell_extension_fields_getlen_field(const trn_cell_extension_fields_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * field of the cell_extension_fields_t in 'inp'.
+ * field of the trn_cell_extension_fields_t in 'inp'.
*/
-uint8_t cell_extension_fields_get_field(cell_extension_fields_t *inp, size_t idx);
-/** As cell_extension_fields_get_field, but take and return a const
- * pointer
+uint8_t trn_cell_extension_fields_get_field(trn_cell_extension_fields_t *inp, size_t idx);
+/** As trn_cell_extension_fields_get_field, but take and return a
+ * const pointer
*/
-uint8_t cell_extension_fields_getconst_field(const cell_extension_fields_t *inp, size_t idx);
+uint8_t trn_cell_extension_fields_getconst_field(const trn_cell_extension_fields_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * field of the cell_extension_fields_t in 'inp', so that it will hold
- * the value 'elt'.
+ * field of the trn_cell_extension_fields_t in 'inp', so that it will
+ * hold the value 'elt'.
*/
-int cell_extension_fields_set_field(cell_extension_fields_t *inp, size_t idx, uint8_t elt);
+int trn_cell_extension_fields_set_field(trn_cell_extension_fields_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field field of the
- * cell_extension_fields_t in 'inp'.
+ * trn_cell_extension_fields_t in 'inp'.
*/
-int cell_extension_fields_add_field(cell_extension_fields_t *inp, uint8_t elt);
+int trn_cell_extension_fields_add_field(trn_cell_extension_fields_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field field of
* 'inp'.
*/
-uint8_t * cell_extension_fields_getarray_field(cell_extension_fields_t *inp);
-/** As cell_extension_fields_get_field, but take and return a const
- * pointer
+uint8_t * trn_cell_extension_fields_getarray_field(trn_cell_extension_fields_t *inp);
+/** As trn_cell_extension_fields_get_field, but take and return a
+ * const pointer
*/
-const uint8_t * cell_extension_fields_getconstarray_field(const cell_extension_fields_t *inp);
+const uint8_t * trn_cell_extension_fields_getconstarray_field(const trn_cell_extension_fields_t *inp);
/** Change the length of the variable-length array field field 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 cell_extension_fields_setlen_field(cell_extension_fields_t *inp, size_t newlen);
-/** Return a newly allocated cell_extension with all elements set to
- * zero.
+int trn_cell_extension_fields_setlen_field(trn_cell_extension_fields_t *inp, size_t newlen);
+/** Return a newly allocated trn_cell_extension with all elements set
+ * to zero.
*/
-cell_extension_t *cell_extension_new(void);
-/** Release all storage held by the cell_extension in 'victim'. (Do
- * nothing if 'victim' is NULL.)
+trn_cell_extension_t *trn_cell_extension_new(void);
+/** Release all storage held by the trn_cell_extension in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
*/
-void cell_extension_free(cell_extension_t *victim);
-/** Try to parse a cell_extension 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
- * cell_extension_t. On failure, return -2 if the input appears
- * truncated, and -1 if the input is otherwise invalid.
+void trn_cell_extension_free(trn_cell_extension_t *victim);
+/** Try to parse a trn_cell_extension 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 trn_cell_extension_t. On failure, return -2 if the input
+ * appears truncated, and -1 if the input is otherwise invalid.
*/
-ssize_t cell_extension_parse(cell_extension_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_extension_parse(trn_cell_extension_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * cell_extension in 'obj'. On failure, return a negative value. Note
- * that this value may be an overestimate, and can even be an
+ * trn_cell_extension 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 cell_extension_encoded_len(const cell_extension_t *obj);
-/** Try to encode the cell_extension from 'input' into the buffer at
- * 'output', using up to 'avail' bytes of the output buffer. On
+ssize_t trn_cell_extension_encoded_len(const trn_cell_extension_t *obj);
+/** Try to encode the trn_cell_extension 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 cell_extension_encode(uint8_t *output, size_t avail, const cell_extension_t *input);
-/** Check whether the internal state of the cell_extension in 'obj' is
- * consistent. Return NULL if it is, and a short message if it is not.
+ssize_t trn_cell_extension_encode(uint8_t *output, size_t avail, const trn_cell_extension_t *input);
+/** Check whether the internal state of the trn_cell_extension in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
*/
-const char *cell_extension_check(const cell_extension_t *obj);
+const char *trn_cell_extension_check(const trn_cell_extension_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int cell_extension_clear_errors(cell_extension_t *obj);
-/** Return the value of the num field of the cell_extension_t in 'inp'
+int trn_cell_extension_clear_errors(trn_cell_extension_t *obj);
+/** Return the value of the num field of the trn_cell_extension_t in
+ * 'inp'
*/
-uint8_t cell_extension_get_num(const cell_extension_t *inp);
-/** Set the value of the num field of the cell_extension_t in 'inp' to
- * 'val'. Return 0 on success; return -1 and set the error code on
- * 'inp' on failure.
+uint8_t trn_cell_extension_get_num(const trn_cell_extension_t *inp);
+/** Set the value of the num field of the trn_cell_extension_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
*/
-int cell_extension_set_num(cell_extension_t *inp, uint8_t val);
+int trn_cell_extension_set_num(trn_cell_extension_t *inp, uint8_t val);
/** Return the length of the dynamic array holding the fields field of
- * the cell_extension_t in 'inp'.
+ * the trn_cell_extension_t in 'inp'.
*/
-size_t cell_extension_getlen_fields(const cell_extension_t *inp);
+size_t trn_cell_extension_getlen_fields(const trn_cell_extension_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * fields of the cell_extension_t in 'inp'.
+ * fields of the trn_cell_extension_t in 'inp'.
*/
-struct cell_extension_fields_st * cell_extension_get_fields(cell_extension_t *inp, size_t idx);
-/** As cell_extension_get_fields, but take and return a const pointer
+struct trn_cell_extension_fields_st * trn_cell_extension_get_fields(trn_cell_extension_t *inp, size_t idx);
+/** As trn_cell_extension_get_fields, but take and return a const
+ * pointer
*/
- const struct cell_extension_fields_st * cell_extension_getconst_fields(const cell_extension_t *inp, size_t idx);
+ const struct trn_cell_extension_fields_st * trn_cell_extension_getconst_fields(const trn_cell_extension_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * fields of the cell_extension_t in 'inp', so that it will hold the
- * value 'elt'. Free the previous value, if any.
+ * fields of the trn_cell_extension_t in 'inp', so that it will hold
+ * the value 'elt'. Free the previous value, if any.
*/
-int cell_extension_set_fields(cell_extension_t *inp, size_t idx, struct cell_extension_fields_st * elt);
-/** As cell_extension_set_fields, but does not free the previous
+int trn_cell_extension_set_fields(trn_cell_extension_t *inp, size_t idx, struct trn_cell_extension_fields_st * elt);
+/** As trn_cell_extension_set_fields, but does not free the previous
* value.
*/
-int cell_extension_set0_fields(cell_extension_t *inp, size_t idx, struct cell_extension_fields_st * elt);
+int trn_cell_extension_set0_fields(trn_cell_extension_t *inp, size_t idx, struct trn_cell_extension_fields_st * elt);
/** Append a new element 'elt' to the dynamic array field fields of
- * the cell_extension_t in 'inp'.
+ * the trn_cell_extension_t in 'inp'.
*/
-int cell_extension_add_fields(cell_extension_t *inp, struct cell_extension_fields_st * elt);
+int trn_cell_extension_add_fields(trn_cell_extension_t *inp, struct trn_cell_extension_fields_st * elt);
/** Return a pointer to the variable-length array field fields of
* 'inp'.
*/
-struct cell_extension_fields_st * * cell_extension_getarray_fields(cell_extension_t *inp);
-/** As cell_extension_get_fields, but take and return a const pointer
+struct trn_cell_extension_fields_st * * trn_cell_extension_getarray_fields(trn_cell_extension_t *inp);
+/** As trn_cell_extension_get_fields, but take and return a const
+ * pointer
*/
-const struct cell_extension_fields_st * const * cell_extension_getconstarray_fields(const cell_extension_t *inp);
+const struct trn_cell_extension_fields_st * const * trn_cell_extension_getconstarray_fields(const trn_cell_extension_t *inp);
/** Change the length of the variable-length array field fields of
* 'inp' to 'newlen'.Fill extra elements with NULL; free removed
* elements. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
*/
-int cell_extension_setlen_fields(cell_extension_t *inp, size_t newlen);
+int trn_cell_extension_setlen_fields(trn_cell_extension_t *inp, size_t newlen);
#endif
diff --git a/src/trunnel/hs/cell_common.trunnel b/src/trunnel/hs/cell_common.trunnel
index 1bbec5a1fe..1aa6999de7 100644
--- a/src/trunnel/hs/cell_common.trunnel
+++ b/src/trunnel/hs/cell_common.trunnel
@@ -1,12 +1,12 @@
/* This file contains common data structure that cells use. */
-struct cell_extension_fields {
+struct trn_cell_extension_fields {
u8 field_type;
u8 field_len;
u8 field[field_len];
};
-struct cell_extension {
+struct trn_cell_extension {
u8 num;
- struct cell_extension_fields fields[num];
+ struct trn_cell_extension_fields fields[num];
};
diff --git a/src/trunnel/hs/cell_establish_intro.c b/src/trunnel/hs/cell_establish_intro.c
index 633bd7c214..22e198c369 100644
--- a/src/trunnel/hs/cell_establish_intro.c
+++ b/src/trunnel/hs/cell_establish_intro.c
@@ -28,18 +28,18 @@ int cellestablishintro_deadcode_dummy__ = 0;
} \
} while (0)
-typedef struct cell_extension_st cell_extension_t;
-cell_extension_t *cell_extension_new(void);
-void cell_extension_free(cell_extension_t *victim);
-ssize_t cell_extension_parse(cell_extension_t **output, const uint8_t *input, const size_t len_in);
-ssize_t cell_extension_encoded_len(const cell_extension_t *obj);
-ssize_t cell_extension_encode(uint8_t *output, size_t avail, const cell_extension_t *input);
-const char *cell_extension_check(const cell_extension_t *obj);
-int cell_extension_clear_errors(cell_extension_t *obj);
-hs_cell_establish_intro_t *
-hs_cell_establish_intro_new(void)
-{
- hs_cell_establish_intro_t *val = trunnel_calloc(1, sizeof(hs_cell_establish_intro_t));
+typedef struct trn_cell_extension_st trn_cell_extension_t;
+trn_cell_extension_t *trn_cell_extension_new(void);
+void trn_cell_extension_free(trn_cell_extension_t *victim);
+ssize_t trn_cell_extension_parse(trn_cell_extension_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_extension_encoded_len(const trn_cell_extension_t *obj);
+ssize_t trn_cell_extension_encode(uint8_t *output, size_t avail, const trn_cell_extension_t *input);
+const char *trn_cell_extension_check(const trn_cell_extension_t *obj);
+int trn_cell_extension_clear_errors(trn_cell_extension_t *obj);
+trn_cell_establish_intro_t *
+trn_cell_establish_intro_new(void)
+{
+ trn_cell_establish_intro_t *val = trunnel_calloc(1, sizeof(trn_cell_establish_intro_t));
if (NULL == val)
return NULL;
return val;
@@ -48,39 +48,39 @@ hs_cell_establish_intro_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-hs_cell_establish_intro_clear(hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_clear(trn_cell_establish_intro_t *obj)
{
(void) obj;
TRUNNEL_DYNARRAY_WIPE(&obj->auth_key);
TRUNNEL_DYNARRAY_CLEAR(&obj->auth_key);
- cell_extension_free(obj->extensions);
+ trn_cell_extension_free(obj->extensions);
obj->extensions = NULL;
TRUNNEL_DYNARRAY_WIPE(&obj->sig);
TRUNNEL_DYNARRAY_CLEAR(&obj->sig);
}
void
-hs_cell_establish_intro_free(hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_free(trn_cell_establish_intro_t *obj)
{
if (obj == NULL)
return;
- hs_cell_establish_intro_clear(obj);
- trunnel_memwipe(obj, sizeof(hs_cell_establish_intro_t));
+ trn_cell_establish_intro_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_establish_intro_t));
trunnel_free_(obj);
}
const uint8_t *
-hs_cell_establish_intro_get_start_cell(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_start_cell(const trn_cell_establish_intro_t *inp)
{
return inp->start_cell;
}
uint8_t
-hs_cell_establish_intro_get_auth_key_type(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_auth_key_type(const trn_cell_establish_intro_t *inp)
{
return inp->auth_key_type;
}
int
-hs_cell_establish_intro_set_auth_key_type(hs_cell_establish_intro_t *inp, uint8_t val)
+trn_cell_establish_intro_set_auth_key_type(trn_cell_establish_intro_t *inp, uint8_t val)
{
if (! ((val == 0 || val == 1 || val == 2))) {
TRUNNEL_SET_ERROR_CODE(inp);
@@ -90,41 +90,41 @@ hs_cell_establish_intro_set_auth_key_type(hs_cell_establish_intro_t *inp, uint8_
return 0;
}
uint16_t
-hs_cell_establish_intro_get_auth_key_len(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_auth_key_len(const trn_cell_establish_intro_t *inp)
{
return inp->auth_key_len;
}
int
-hs_cell_establish_intro_set_auth_key_len(hs_cell_establish_intro_t *inp, uint16_t val)
+trn_cell_establish_intro_set_auth_key_len(trn_cell_establish_intro_t *inp, uint16_t val)
{
inp->auth_key_len = val;
return 0;
}
size_t
-hs_cell_establish_intro_getlen_auth_key(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getlen_auth_key(const trn_cell_establish_intro_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->auth_key);
}
uint8_t
-hs_cell_establish_intro_get_auth_key(hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_get_auth_key(trn_cell_establish_intro_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->auth_key, idx);
}
uint8_t
-hs_cell_establish_intro_getconst_auth_key(const hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_getconst_auth_key(const trn_cell_establish_intro_t *inp, size_t idx)
{
- return hs_cell_establish_intro_get_auth_key((hs_cell_establish_intro_t*)inp, idx);
+ return trn_cell_establish_intro_get_auth_key((trn_cell_establish_intro_t*)inp, idx);
}
int
-hs_cell_establish_intro_set_auth_key(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
+trn_cell_establish_intro_set_auth_key(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->auth_key, idx, elt);
return 0;
}
int
-hs_cell_establish_intro_add_auth_key(hs_cell_establish_intro_t *inp, uint8_t elt)
+trn_cell_establish_intro_add_auth_key(trn_cell_establish_intro_t *inp, uint8_t elt)
{
#if SIZE_MAX >= UINT16_MAX
if (inp->auth_key.n_ == UINT16_MAX)
@@ -138,17 +138,17 @@ hs_cell_establish_intro_add_auth_key(hs_cell_establish_intro_t *inp, uint8_t elt
}
uint8_t *
-hs_cell_establish_intro_getarray_auth_key(hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getarray_auth_key(trn_cell_establish_intro_t *inp)
{
return inp->auth_key.elts_;
}
const uint8_t *
-hs_cell_establish_intro_getconstarray_auth_key(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getconstarray_auth_key(const trn_cell_establish_intro_t *inp)
{
- return (const uint8_t *)hs_cell_establish_intro_getarray_auth_key((hs_cell_establish_intro_t*)inp);
+ return (const uint8_t *)trn_cell_establish_intro_getarray_auth_key((trn_cell_establish_intro_t*)inp);
}
int
-hs_cell_establish_intro_setlen_auth_key(hs_cell_establish_intro_t *inp, size_t newlen)
+trn_cell_establish_intro_setlen_auth_key(trn_cell_establish_intro_t *inp, size_t newlen)
{
uint8_t *newptr;
#if UINT16_MAX < SIZE_MAX
@@ -167,54 +167,54 @@ hs_cell_establish_intro_setlen_auth_key(hs_cell_establish_intro_t *inp, size_t n
TRUNNEL_SET_ERROR_CODE(inp);
return -1;
}
-struct cell_extension_st *
-hs_cell_establish_intro_get_extensions(hs_cell_establish_intro_t *inp)
+struct trn_cell_extension_st *
+trn_cell_establish_intro_get_extensions(trn_cell_establish_intro_t *inp)
{
return inp->extensions;
}
-const struct cell_extension_st *
-hs_cell_establish_intro_getconst_extensions(const hs_cell_establish_intro_t *inp)
+const struct trn_cell_extension_st *
+trn_cell_establish_intro_getconst_extensions(const trn_cell_establish_intro_t *inp)
{
- return hs_cell_establish_intro_get_extensions((hs_cell_establish_intro_t*) inp);
+ return trn_cell_establish_intro_get_extensions((trn_cell_establish_intro_t*) inp);
}
int
-hs_cell_establish_intro_set_extensions(hs_cell_establish_intro_t *inp, struct cell_extension_st *val)
+trn_cell_establish_intro_set_extensions(trn_cell_establish_intro_t *inp, struct trn_cell_extension_st *val)
{
if (inp->extensions && inp->extensions != val)
- cell_extension_free(inp->extensions);
- return hs_cell_establish_intro_set0_extensions(inp, val);
+ trn_cell_extension_free(inp->extensions);
+ return trn_cell_establish_intro_set0_extensions(inp, val);
}
int
-hs_cell_establish_intro_set0_extensions(hs_cell_establish_intro_t *inp, struct cell_extension_st *val)
+trn_cell_establish_intro_set0_extensions(trn_cell_establish_intro_t *inp, struct trn_cell_extension_st *val)
{
inp->extensions = val;
return 0;
}
const uint8_t *
-hs_cell_establish_intro_get_end_mac_fields(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_end_mac_fields(const trn_cell_establish_intro_t *inp)
{
return inp->end_mac_fields;
}
size_t
-hs_cell_establish_intro_getlen_handshake_mac(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getlen_handshake_mac(const trn_cell_establish_intro_t *inp)
{
(void)inp; return TRUNNEL_SHA3_256_LEN;
}
uint8_t
-hs_cell_establish_intro_get_handshake_mac(hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_get_handshake_mac(trn_cell_establish_intro_t *inp, size_t idx)
{
trunnel_assert(idx < TRUNNEL_SHA3_256_LEN);
return inp->handshake_mac[idx];
}
uint8_t
-hs_cell_establish_intro_getconst_handshake_mac(const hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_getconst_handshake_mac(const trn_cell_establish_intro_t *inp, size_t idx)
{
- return hs_cell_establish_intro_get_handshake_mac((hs_cell_establish_intro_t*)inp, idx);
+ return trn_cell_establish_intro_get_handshake_mac((trn_cell_establish_intro_t*)inp, idx);
}
int
-hs_cell_establish_intro_set_handshake_mac(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
+trn_cell_establish_intro_set_handshake_mac(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
{
trunnel_assert(idx < TRUNNEL_SHA3_256_LEN);
inp->handshake_mac[idx] = elt;
@@ -222,56 +222,56 @@ hs_cell_establish_intro_set_handshake_mac(hs_cell_establish_intro_t *inp, size_t
}
uint8_t *
-hs_cell_establish_intro_getarray_handshake_mac(hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getarray_handshake_mac(trn_cell_establish_intro_t *inp)
{
return inp->handshake_mac;
}
const uint8_t *
-hs_cell_establish_intro_getconstarray_handshake_mac(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getconstarray_handshake_mac(const trn_cell_establish_intro_t *inp)
{
- return (const uint8_t *)hs_cell_establish_intro_getarray_handshake_mac((hs_cell_establish_intro_t*)inp);
+ return (const uint8_t *)trn_cell_establish_intro_getarray_handshake_mac((trn_cell_establish_intro_t*)inp);
}
const uint8_t *
-hs_cell_establish_intro_get_end_sig_fields(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_end_sig_fields(const trn_cell_establish_intro_t *inp)
{
return inp->end_sig_fields;
}
uint16_t
-hs_cell_establish_intro_get_sig_len(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_get_sig_len(const trn_cell_establish_intro_t *inp)
{
return inp->sig_len;
}
int
-hs_cell_establish_intro_set_sig_len(hs_cell_establish_intro_t *inp, uint16_t val)
+trn_cell_establish_intro_set_sig_len(trn_cell_establish_intro_t *inp, uint16_t val)
{
inp->sig_len = val;
return 0;
}
size_t
-hs_cell_establish_intro_getlen_sig(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getlen_sig(const trn_cell_establish_intro_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->sig);
}
uint8_t
-hs_cell_establish_intro_get_sig(hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_get_sig(trn_cell_establish_intro_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->sig, idx);
}
uint8_t
-hs_cell_establish_intro_getconst_sig(const hs_cell_establish_intro_t *inp, size_t idx)
+trn_cell_establish_intro_getconst_sig(const trn_cell_establish_intro_t *inp, size_t idx)
{
- return hs_cell_establish_intro_get_sig((hs_cell_establish_intro_t*)inp, idx);
+ return trn_cell_establish_intro_get_sig((trn_cell_establish_intro_t*)inp, idx);
}
int
-hs_cell_establish_intro_set_sig(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
+trn_cell_establish_intro_set_sig(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->sig, idx, elt);
return 0;
}
int
-hs_cell_establish_intro_add_sig(hs_cell_establish_intro_t *inp, uint8_t elt)
+trn_cell_establish_intro_add_sig(trn_cell_establish_intro_t *inp, uint8_t elt)
{
#if SIZE_MAX >= UINT16_MAX
if (inp->sig.n_ == UINT16_MAX)
@@ -285,17 +285,17 @@ hs_cell_establish_intro_add_sig(hs_cell_establish_intro_t *inp, uint8_t elt)
}
uint8_t *
-hs_cell_establish_intro_getarray_sig(hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getarray_sig(trn_cell_establish_intro_t *inp)
{
return inp->sig.elts_;
}
const uint8_t *
-hs_cell_establish_intro_getconstarray_sig(const hs_cell_establish_intro_t *inp)
+trn_cell_establish_intro_getconstarray_sig(const trn_cell_establish_intro_t *inp)
{
- return (const uint8_t *)hs_cell_establish_intro_getarray_sig((hs_cell_establish_intro_t*)inp);
+ return (const uint8_t *)trn_cell_establish_intro_getarray_sig((trn_cell_establish_intro_t*)inp);
}
int
-hs_cell_establish_intro_setlen_sig(hs_cell_establish_intro_t *inp, size_t newlen)
+trn_cell_establish_intro_setlen_sig(trn_cell_establish_intro_t *inp, size_t newlen)
{
uint8_t *newptr;
#if UINT16_MAX < SIZE_MAX
@@ -315,7 +315,7 @@ hs_cell_establish_intro_setlen_sig(hs_cell_establish_intro_t *inp, size_t newlen
return -1;
}
const char *
-hs_cell_establish_intro_check(const hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_check(const trn_cell_establish_intro_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -327,7 +327,7 @@ hs_cell_establish_intro_check(const hs_cell_establish_intro_t *obj)
return "Length mismatch for auth_key";
{
const char *msg;
- if (NULL != (msg = cell_extension_check(obj->extensions)))
+ if (NULL != (msg = trn_cell_extension_check(obj->extensions)))
return msg;
}
if (TRUNNEL_DYNARRAY_LEN(&obj->sig) != obj->sig_len)
@@ -336,11 +336,11 @@ hs_cell_establish_intro_check(const hs_cell_establish_intro_t *obj)
}
ssize_t
-hs_cell_establish_intro_encoded_len(const hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_encoded_len(const trn_cell_establish_intro_t *obj)
{
ssize_t result = 0;
- if (NULL != hs_cell_establish_intro_check(obj))
+ if (NULL != trn_cell_establish_intro_check(obj))
return -1;
@@ -353,8 +353,8 @@ hs_cell_establish_intro_encoded_len(const hs_cell_establish_intro_t *obj)
/* Length of u8 auth_key[auth_key_len] */
result += TRUNNEL_DYNARRAY_LEN(&obj->auth_key);
- /* Length of struct cell_extension extensions */
- result += cell_extension_encoded_len(obj->extensions);
+ /* Length of struct trn_cell_extension extensions */
+ result += trn_cell_extension_encoded_len(obj->extensions);
/* Length of u8 handshake_mac[TRUNNEL_SHA3_256_LEN] */
result += TRUNNEL_SHA3_256_LEN;
@@ -367,24 +367,24 @@ hs_cell_establish_intro_encoded_len(const hs_cell_establish_intro_t *obj)
return result;
}
int
-hs_cell_establish_intro_clear_errors(hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_clear_errors(trn_cell_establish_intro_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-hs_cell_establish_intro_encode(uint8_t *output, const size_t avail, const hs_cell_establish_intro_t *obj)
+trn_cell_establish_intro_encode(uint8_t *output, const size_t avail, const trn_cell_establish_intro_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 = hs_cell_establish_intro_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_establish_intro_encoded_len(obj);
#endif
- if (NULL != (msg = hs_cell_establish_intro_check(obj)))
+ if (NULL != (msg = trn_cell_establish_intro_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -417,9 +417,9 @@ hs_cell_establish_intro_encode(uint8_t *output, const size_t avail, const hs_cel
written += elt_len; ptr += elt_len;
}
- /* Encode struct cell_extension extensions */
+ /* Encode struct trn_cell_extension extensions */
trunnel_assert(written <= avail);
- result = cell_extension_encode(ptr, avail - written, obj->extensions);
+ result = trn_cell_extension_encode(ptr, avail - written, obj->extensions);
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -474,11 +474,11 @@ hs_cell_establish_intro_encode(uint8_t *output, const size_t avail, const hs_cel
return result;
}
-/** As hs_cell_establish_intro_parse(), but do not allocate the output
- * object.
+/** As trn_cell_establish_intro_parse(), but do not allocate the
+ * output object.
*/
static ssize_t
-hs_cell_establish_intro_parse_into(hs_cell_establish_intro_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_establish_intro_parse_into(trn_cell_establish_intro_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -506,8 +506,8 @@ hs_cell_establish_intro_parse_into(hs_cell_establish_intro_t *obj, const uint8_t
memcpy(obj->auth_key.elts_, ptr, obj->auth_key_len);
ptr += obj->auth_key_len; remaining -= obj->auth_key_len;
- /* Parse struct cell_extension extensions */
- result = cell_extension_parse(&obj->extensions, ptr, remaining);
+ /* Parse struct trn_cell_extension extensions */
+ result = trn_cell_extension_parse(&obj->extensions, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
@@ -548,23 +548,23 @@ hs_cell_establish_intro_parse_into(hs_cell_establish_intro_t *obj, const uint8_t
}
ssize_t
-hs_cell_establish_intro_parse(hs_cell_establish_intro_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_establish_intro_parse(trn_cell_establish_intro_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = hs_cell_establish_intro_new();
+ *output = trn_cell_establish_intro_new();
if (NULL == *output)
return -1;
- result = hs_cell_establish_intro_parse_into(*output, input, len_in);
+ result = trn_cell_establish_intro_parse_into(*output, input, len_in);
if (result < 0) {
- hs_cell_establish_intro_free(*output);
+ trn_cell_establish_intro_free(*output);
*output = NULL;
}
return result;
}
-hs_cell_intro_established_t *
-hs_cell_intro_established_new(void)
+trn_cell_intro_established_t *
+trn_cell_intro_established_new(void)
{
- hs_cell_intro_established_t *val = trunnel_calloc(1, sizeof(hs_cell_intro_established_t));
+ trn_cell_intro_established_t *val = trunnel_calloc(1, sizeof(trn_cell_intro_established_t));
if (NULL == val)
return NULL;
return val;
@@ -573,48 +573,48 @@ hs_cell_intro_established_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-hs_cell_intro_established_clear(hs_cell_intro_established_t *obj)
+trn_cell_intro_established_clear(trn_cell_intro_established_t *obj)
{
(void) obj;
- cell_extension_free(obj->extensions);
+ trn_cell_extension_free(obj->extensions);
obj->extensions = NULL;
}
void
-hs_cell_intro_established_free(hs_cell_intro_established_t *obj)
+trn_cell_intro_established_free(trn_cell_intro_established_t *obj)
{
if (obj == NULL)
return;
- hs_cell_intro_established_clear(obj);
- trunnel_memwipe(obj, sizeof(hs_cell_intro_established_t));
+ trn_cell_intro_established_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_intro_established_t));
trunnel_free_(obj);
}
-struct cell_extension_st *
-hs_cell_intro_established_get_extensions(hs_cell_intro_established_t *inp)
+struct trn_cell_extension_st *
+trn_cell_intro_established_get_extensions(trn_cell_intro_established_t *inp)
{
return inp->extensions;
}
-const struct cell_extension_st *
-hs_cell_intro_established_getconst_extensions(const hs_cell_intro_established_t *inp)
+const struct trn_cell_extension_st *
+trn_cell_intro_established_getconst_extensions(const trn_cell_intro_established_t *inp)
{
- return hs_cell_intro_established_get_extensions((hs_cell_intro_established_t*) inp);
+ return trn_cell_intro_established_get_extensions((trn_cell_intro_established_t*) inp);
}
int
-hs_cell_intro_established_set_extensions(hs_cell_intro_established_t *inp, struct cell_extension_st *val)
+trn_cell_intro_established_set_extensions(trn_cell_intro_established_t *inp, struct trn_cell_extension_st *val)
{
if (inp->extensions && inp->extensions != val)
- cell_extension_free(inp->extensions);
- return hs_cell_intro_established_set0_extensions(inp, val);
+ trn_cell_extension_free(inp->extensions);
+ return trn_cell_intro_established_set0_extensions(inp, val);
}
int
-hs_cell_intro_established_set0_extensions(hs_cell_intro_established_t *inp, struct cell_extension_st *val)
+trn_cell_intro_established_set0_extensions(trn_cell_intro_established_t *inp, struct trn_cell_extension_st *val)
{
inp->extensions = val;
return 0;
}
const char *
-hs_cell_intro_established_check(const hs_cell_intro_established_t *obj)
+trn_cell_intro_established_check(const trn_cell_intro_established_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -622,53 +622,53 @@ hs_cell_intro_established_check(const hs_cell_intro_established_t *obj)
return "A set function failed on this object";
{
const char *msg;
- if (NULL != (msg = cell_extension_check(obj->extensions)))
+ if (NULL != (msg = trn_cell_extension_check(obj->extensions)))
return msg;
}
return NULL;
}
ssize_t
-hs_cell_intro_established_encoded_len(const hs_cell_intro_established_t *obj)
+trn_cell_intro_established_encoded_len(const trn_cell_intro_established_t *obj)
{
ssize_t result = 0;
- if (NULL != hs_cell_intro_established_check(obj))
+ if (NULL != trn_cell_intro_established_check(obj))
return -1;
- /* Length of struct cell_extension extensions */
- result += cell_extension_encoded_len(obj->extensions);
+ /* Length of struct trn_cell_extension extensions */
+ result += trn_cell_extension_encoded_len(obj->extensions);
return result;
}
int
-hs_cell_intro_established_clear_errors(hs_cell_intro_established_t *obj)
+trn_cell_intro_established_clear_errors(trn_cell_intro_established_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-hs_cell_intro_established_encode(uint8_t *output, const size_t avail, const hs_cell_intro_established_t *obj)
+trn_cell_intro_established_encode(uint8_t *output, const size_t avail, const trn_cell_intro_established_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 = hs_cell_intro_established_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_intro_established_encoded_len(obj);
#endif
- if (NULL != (msg = hs_cell_intro_established_check(obj)))
+ if (NULL != (msg = trn_cell_intro_established_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
trunnel_assert(encoded_len >= 0);
#endif
- /* Encode struct cell_extension extensions */
+ /* Encode struct trn_cell_extension extensions */
trunnel_assert(written <= avail);
- result = cell_extension_encode(ptr, avail - written, obj->extensions);
+ result = trn_cell_extension_encode(ptr, avail - written, obj->extensions);
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -694,19 +694,19 @@ hs_cell_intro_established_encode(uint8_t *output, const size_t avail, const hs_c
return result;
}
-/** As hs_cell_intro_established_parse(), but do not allocate the
+/** As trn_cell_intro_established_parse(), but do not allocate the
* output object.
*/
static ssize_t
-hs_cell_intro_established_parse_into(hs_cell_intro_established_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_intro_established_parse_into(trn_cell_intro_established_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 struct cell_extension extensions */
- result = cell_extension_parse(&obj->extensions, ptr, remaining);
+ /* Parse struct trn_cell_extension extensions */
+ result = trn_cell_extension_parse(&obj->extensions, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
@@ -720,15 +720,15 @@ hs_cell_intro_established_parse_into(hs_cell_intro_established_t *obj, const uin
}
ssize_t
-hs_cell_intro_established_parse(hs_cell_intro_established_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_intro_established_parse(trn_cell_intro_established_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = hs_cell_intro_established_new();
+ *output = trn_cell_intro_established_new();
if (NULL == *output)
return -1;
- result = hs_cell_intro_established_parse_into(*output, input, len_in);
+ result = trn_cell_intro_established_parse_into(*output, input, len_in);
if (result < 0) {
- hs_cell_intro_established_free(*output);
+ trn_cell_intro_established_free(*output);
*output = NULL;
}
return result;
diff --git a/src/trunnel/hs/cell_establish_intro.h b/src/trunnel/hs/cell_establish_intro.h
index 725d47cd85..2f0d893659 100644
--- a/src/trunnel/hs/cell_establish_intro.h
+++ b/src/trunnel/hs/cell_establish_intro.h
@@ -8,15 +8,15 @@
#include <stdint.h>
#include "trunnel.h"
-struct cell_extension_st;
+struct trn_cell_extension_st;
#define TRUNNEL_SHA3_256_LEN 32
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HS_CELL_ESTABLISH_INTRO)
-struct hs_cell_establish_intro_st {
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_ESTABLISH_INTRO)
+struct trn_cell_establish_intro_st {
const uint8_t *start_cell;
uint8_t auth_key_type;
uint16_t auth_key_len;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) auth_key;
- struct cell_extension_st *extensions;
+ struct trn_cell_extension_st *extensions;
const uint8_t *end_mac_fields;
uint8_t handshake_mac[TRUNNEL_SHA3_256_LEN];
const uint8_t *end_sig_fields;
@@ -25,251 +25,252 @@ struct hs_cell_establish_intro_st {
uint8_t trunnel_error_code_;
};
#endif
-typedef struct hs_cell_establish_intro_st hs_cell_establish_intro_t;
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HS_CELL_INTRO_ESTABLISHED)
-struct hs_cell_intro_established_st {
- struct cell_extension_st *extensions;
+typedef struct trn_cell_establish_intro_st trn_cell_establish_intro_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_INTRO_ESTABLISHED)
+struct trn_cell_intro_established_st {
+ struct trn_cell_extension_st *extensions;
uint8_t trunnel_error_code_;
};
#endif
-typedef struct hs_cell_intro_established_st hs_cell_intro_established_t;
-/** Return a newly allocated hs_cell_establish_intro with all elements
- * set to zero.
+typedef struct trn_cell_intro_established_st trn_cell_intro_established_t;
+/** Return a newly allocated trn_cell_establish_intro with all
+ * elements set to zero.
*/
-hs_cell_establish_intro_t *hs_cell_establish_intro_new(void);
-/** Release all storage held by the hs_cell_establish_intro in
+trn_cell_establish_intro_t *trn_cell_establish_intro_new(void);
+/** Release all storage held by the trn_cell_establish_intro in
* 'victim'. (Do nothing if 'victim' is NULL.)
*/
-void hs_cell_establish_intro_free(hs_cell_establish_intro_t *victim);
-/** Try to parse a hs_cell_establish_intro 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 hs_cell_establish_intro_t. On failure, return -2 if the
- * input appears truncated, and -1 if the input is otherwise invalid.
+void trn_cell_establish_intro_free(trn_cell_establish_intro_t *victim);
+/** Try to parse a trn_cell_establish_intro 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 trn_cell_establish_intro_t. On failure, return -2
+ * if the input appears truncated, and -1 if the input is otherwise
+ * invalid.
*/
-ssize_t hs_cell_establish_intro_parse(hs_cell_establish_intro_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_establish_intro_parse(trn_cell_establish_intro_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * hs_cell_establish_intro in 'obj'. On failure, return a negative
+ * trn_cell_establish_intro 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 hs_cell_establish_intro_encoded_len(const hs_cell_establish_intro_t *obj);
-/** Try to encode the hs_cell_establish_intro from 'input' into the
+ssize_t trn_cell_establish_intro_encoded_len(const trn_cell_establish_intro_t *obj);
+/** Try to encode the trn_cell_establish_intro 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 hs_cell_establish_intro_encode(uint8_t *output, size_t avail, const hs_cell_establish_intro_t *input);
-/** Check whether the internal state of the hs_cell_establish_intro in
- * 'obj' is consistent. Return NULL if it is, and a short message if
- * it is not.
+ssize_t trn_cell_establish_intro_encode(uint8_t *output, size_t avail, const trn_cell_establish_intro_t *input);
+/** Check whether the internal state of the trn_cell_establish_intro
+ * in 'obj' is consistent. Return NULL if it is, and a short message
+ * if it is not.
*/
-const char *hs_cell_establish_intro_check(const hs_cell_establish_intro_t *obj);
+const char *trn_cell_establish_intro_check(const trn_cell_establish_intro_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int hs_cell_establish_intro_clear_errors(hs_cell_establish_intro_t *obj);
+int trn_cell_establish_intro_clear_errors(trn_cell_establish_intro_t *obj);
/** Return the position for start_cell when we parsed this object
*/
-const uint8_t * hs_cell_establish_intro_get_start_cell(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_get_start_cell(const trn_cell_establish_intro_t *inp);
/** Return the value of the auth_key_type field of the
- * hs_cell_establish_intro_t in 'inp'
+ * trn_cell_establish_intro_t in 'inp'
*/
-uint8_t hs_cell_establish_intro_get_auth_key_type(const hs_cell_establish_intro_t *inp);
+uint8_t trn_cell_establish_intro_get_auth_key_type(const trn_cell_establish_intro_t *inp);
/** Set the value of the auth_key_type field of the
- * hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
+ * trn_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_establish_intro_set_auth_key_type(hs_cell_establish_intro_t *inp, uint8_t val);
+int trn_cell_establish_intro_set_auth_key_type(trn_cell_establish_intro_t *inp, uint8_t val);
/** Return the value of the auth_key_len field of the
- * hs_cell_establish_intro_t in 'inp'
+ * trn_cell_establish_intro_t in 'inp'
*/
-uint16_t hs_cell_establish_intro_get_auth_key_len(const hs_cell_establish_intro_t *inp);
+uint16_t trn_cell_establish_intro_get_auth_key_len(const trn_cell_establish_intro_t *inp);
/** Set the value of the auth_key_len field of the
- * hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
+ * trn_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_establish_intro_set_auth_key_len(hs_cell_establish_intro_t *inp, uint16_t val);
+int trn_cell_establish_intro_set_auth_key_len(trn_cell_establish_intro_t *inp, uint16_t val);
/** Return the length of the dynamic array holding the auth_key field
- * of the hs_cell_establish_intro_t in 'inp'.
+ * of the trn_cell_establish_intro_t in 'inp'.
*/
-size_t hs_cell_establish_intro_getlen_auth_key(const hs_cell_establish_intro_t *inp);
+size_t trn_cell_establish_intro_getlen_auth_key(const trn_cell_establish_intro_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * auth_key of the hs_cell_establish_intro_t in 'inp'.
+ * auth_key of the trn_cell_establish_intro_t in 'inp'.
*/
-uint8_t hs_cell_establish_intro_get_auth_key(hs_cell_establish_intro_t *inp, size_t idx);
-/** As hs_cell_establish_intro_get_auth_key, but take and return a
+uint8_t trn_cell_establish_intro_get_auth_key(trn_cell_establish_intro_t *inp, size_t idx);
+/** As trn_cell_establish_intro_get_auth_key, but take and return a
* const pointer
*/
-uint8_t hs_cell_establish_intro_getconst_auth_key(const hs_cell_establish_intro_t *inp, size_t idx);
+uint8_t trn_cell_establish_intro_getconst_auth_key(const trn_cell_establish_intro_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * auth_key of the hs_cell_establish_intro_t in 'inp', so that it will
- * hold the value 'elt'.
+ * auth_key of the trn_cell_establish_intro_t in 'inp', so that it
+ * will hold the value 'elt'.
*/
-int hs_cell_establish_intro_set_auth_key(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
+int trn_cell_establish_intro_set_auth_key(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field auth_key of
- * the hs_cell_establish_intro_t in 'inp'.
+ * the trn_cell_establish_intro_t in 'inp'.
*/
-int hs_cell_establish_intro_add_auth_key(hs_cell_establish_intro_t *inp, uint8_t elt);
+int trn_cell_establish_intro_add_auth_key(trn_cell_establish_intro_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field auth_key of
* 'inp'.
*/
-uint8_t * hs_cell_establish_intro_getarray_auth_key(hs_cell_establish_intro_t *inp);
-/** As hs_cell_establish_intro_get_auth_key, but take and return a
+uint8_t * trn_cell_establish_intro_getarray_auth_key(trn_cell_establish_intro_t *inp);
+/** As trn_cell_establish_intro_get_auth_key, but take and return a
* const pointer
*/
-const uint8_t * hs_cell_establish_intro_getconstarray_auth_key(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_getconstarray_auth_key(const trn_cell_establish_intro_t *inp);
/** Change the length of the variable-length array field auth_key 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 hs_cell_establish_intro_setlen_auth_key(hs_cell_establish_intro_t *inp, size_t newlen);
+int trn_cell_establish_intro_setlen_auth_key(trn_cell_establish_intro_t *inp, size_t newlen);
/** Return the value of the extensions field of the
- * hs_cell_establish_intro_t in 'inp'
+ * trn_cell_establish_intro_t in 'inp'
*/
-struct cell_extension_st * hs_cell_establish_intro_get_extensions(hs_cell_establish_intro_t *inp);
-/** As hs_cell_establish_intro_get_extensions, but take and return a
+struct trn_cell_extension_st * trn_cell_establish_intro_get_extensions(trn_cell_establish_intro_t *inp);
+/** As trn_cell_establish_intro_get_extensions, but take and return a
* const pointer
*/
-const struct cell_extension_st * hs_cell_establish_intro_getconst_extensions(const hs_cell_establish_intro_t *inp);
+const struct trn_cell_extension_st * trn_cell_establish_intro_getconst_extensions(const trn_cell_establish_intro_t *inp);
/** Set the value of the extensions field of the
- * hs_cell_establish_intro_t in 'inp' to 'val'. Free the old value if
+ * trn_cell_establish_intro_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 hs_cell_establish_intro_set_extensions(hs_cell_establish_intro_t *inp, struct cell_extension_st *val);
-/** As hs_cell_establish_intro_set_extensions, but does not free the
+int trn_cell_establish_intro_set_extensions(trn_cell_establish_intro_t *inp, struct trn_cell_extension_st *val);
+/** As trn_cell_establish_intro_set_extensions, but does not free the
* previous value.
*/
-int hs_cell_establish_intro_set0_extensions(hs_cell_establish_intro_t *inp, struct cell_extension_st *val);
+int trn_cell_establish_intro_set0_extensions(trn_cell_establish_intro_t *inp, struct trn_cell_extension_st *val);
/** Return the position for end_mac_fields when we parsed this object
*/
-const uint8_t * hs_cell_establish_intro_get_end_mac_fields(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_get_end_mac_fields(const trn_cell_establish_intro_t *inp);
/** Return the (constant) length of the array holding the
- * handshake_mac field of the hs_cell_establish_intro_t in 'inp'.
+ * handshake_mac field of the trn_cell_establish_intro_t in 'inp'.
*/
-size_t hs_cell_establish_intro_getlen_handshake_mac(const hs_cell_establish_intro_t *inp);
+size_t trn_cell_establish_intro_getlen_handshake_mac(const trn_cell_establish_intro_t *inp);
/** Return the element at position 'idx' of the fixed array field
- * handshake_mac of the hs_cell_establish_intro_t in 'inp'.
+ * handshake_mac of the trn_cell_establish_intro_t in 'inp'.
*/
-uint8_t hs_cell_establish_intro_get_handshake_mac(hs_cell_establish_intro_t *inp, size_t idx);
-/** As hs_cell_establish_intro_get_handshake_mac, but take and return
+uint8_t trn_cell_establish_intro_get_handshake_mac(trn_cell_establish_intro_t *inp, size_t idx);
+/** As trn_cell_establish_intro_get_handshake_mac, but take and return
* a const pointer
*/
-uint8_t hs_cell_establish_intro_getconst_handshake_mac(const hs_cell_establish_intro_t *inp, size_t idx);
+uint8_t trn_cell_establish_intro_getconst_handshake_mac(const trn_cell_establish_intro_t *inp, size_t idx);
/** Change the element at position 'idx' of the fixed array field
- * handshake_mac of the hs_cell_establish_intro_t in 'inp', so that it
- * will hold the value 'elt'.
+ * handshake_mac of the trn_cell_establish_intro_t in 'inp', so that
+ * it will hold the value 'elt'.
*/
-int hs_cell_establish_intro_set_handshake_mac(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
+int trn_cell_establish_intro_set_handshake_mac(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
/** Return a pointer to the TRUNNEL_SHA3_256_LEN-element array field
* handshake_mac of 'inp'.
*/
-uint8_t * hs_cell_establish_intro_getarray_handshake_mac(hs_cell_establish_intro_t *inp);
-/** As hs_cell_establish_intro_get_handshake_mac, but take and return
+uint8_t * trn_cell_establish_intro_getarray_handshake_mac(trn_cell_establish_intro_t *inp);
+/** As trn_cell_establish_intro_get_handshake_mac, but take and return
* a const pointer
*/
-const uint8_t * hs_cell_establish_intro_getconstarray_handshake_mac(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_getconstarray_handshake_mac(const trn_cell_establish_intro_t *inp);
/** Return the position for end_sig_fields when we parsed this object
*/
-const uint8_t * hs_cell_establish_intro_get_end_sig_fields(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_get_end_sig_fields(const trn_cell_establish_intro_t *inp);
/** Return the value of the sig_len field of the
- * hs_cell_establish_intro_t in 'inp'
+ * trn_cell_establish_intro_t in 'inp'
*/
-uint16_t hs_cell_establish_intro_get_sig_len(const hs_cell_establish_intro_t *inp);
+uint16_t trn_cell_establish_intro_get_sig_len(const trn_cell_establish_intro_t *inp);
/** Set the value of the sig_len field of the
- * hs_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
+ * trn_cell_establish_intro_t in 'inp' to 'val'. Return 0 on success;
* return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_establish_intro_set_sig_len(hs_cell_establish_intro_t *inp, uint16_t val);
+int trn_cell_establish_intro_set_sig_len(trn_cell_establish_intro_t *inp, uint16_t val);
/** Return the length of the dynamic array holding the sig field of
- * the hs_cell_establish_intro_t in 'inp'.
+ * the trn_cell_establish_intro_t in 'inp'.
*/
-size_t hs_cell_establish_intro_getlen_sig(const hs_cell_establish_intro_t *inp);
+size_t trn_cell_establish_intro_getlen_sig(const trn_cell_establish_intro_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * sig of the hs_cell_establish_intro_t in 'inp'.
+ * sig of the trn_cell_establish_intro_t in 'inp'.
*/
-uint8_t hs_cell_establish_intro_get_sig(hs_cell_establish_intro_t *inp, size_t idx);
-/** As hs_cell_establish_intro_get_sig, but take and return a const
+uint8_t trn_cell_establish_intro_get_sig(trn_cell_establish_intro_t *inp, size_t idx);
+/** As trn_cell_establish_intro_get_sig, but take and return a const
* pointer
*/
-uint8_t hs_cell_establish_intro_getconst_sig(const hs_cell_establish_intro_t *inp, size_t idx);
+uint8_t trn_cell_establish_intro_getconst_sig(const trn_cell_establish_intro_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * sig of the hs_cell_establish_intro_t in 'inp', so that it will hold
- * the value 'elt'.
+ * sig of the trn_cell_establish_intro_t in 'inp', so that it will
+ * hold the value 'elt'.
*/
-int hs_cell_establish_intro_set_sig(hs_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
+int trn_cell_establish_intro_set_sig(trn_cell_establish_intro_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field sig of the
- * hs_cell_establish_intro_t in 'inp'.
+ * trn_cell_establish_intro_t in 'inp'.
*/
-int hs_cell_establish_intro_add_sig(hs_cell_establish_intro_t *inp, uint8_t elt);
+int trn_cell_establish_intro_add_sig(trn_cell_establish_intro_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field sig of 'inp'.
*/
-uint8_t * hs_cell_establish_intro_getarray_sig(hs_cell_establish_intro_t *inp);
-/** As hs_cell_establish_intro_get_sig, but take and return a const
+uint8_t * trn_cell_establish_intro_getarray_sig(trn_cell_establish_intro_t *inp);
+/** As trn_cell_establish_intro_get_sig, but take and return a const
* pointer
*/
-const uint8_t * hs_cell_establish_intro_getconstarray_sig(const hs_cell_establish_intro_t *inp);
+const uint8_t * trn_cell_establish_intro_getconstarray_sig(const trn_cell_establish_intro_t *inp);
/** Change the length of the variable-length array field sig 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 hs_cell_establish_intro_setlen_sig(hs_cell_establish_intro_t *inp, size_t newlen);
-/** Return a newly allocated hs_cell_intro_established with all
+int trn_cell_establish_intro_setlen_sig(trn_cell_establish_intro_t *inp, size_t newlen);
+/** Return a newly allocated trn_cell_intro_established with all
* elements set to zero.
*/
-hs_cell_intro_established_t *hs_cell_intro_established_new(void);
-/** Release all storage held by the hs_cell_intro_established in
+trn_cell_intro_established_t *trn_cell_intro_established_new(void);
+/** Release all storage held by the trn_cell_intro_established in
* 'victim'. (Do nothing if 'victim' is NULL.)
*/
-void hs_cell_intro_established_free(hs_cell_intro_established_t *victim);
-/** Try to parse a hs_cell_intro_established from the buffer in
+void trn_cell_intro_established_free(trn_cell_intro_established_t *victim);
+/** Try to parse a trn_cell_intro_established 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 hs_cell_intro_established_t. On failure, return -2
+ * newly allocated trn_cell_intro_established_t. On failure, return -2
* if the input appears truncated, and -1 if the input is otherwise
* invalid.
*/
-ssize_t hs_cell_intro_established_parse(hs_cell_intro_established_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_intro_established_parse(trn_cell_intro_established_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * hs_cell_intro_established in 'obj'. On failure, return a negative
+ * trn_cell_intro_established 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 hs_cell_intro_established_encoded_len(const hs_cell_intro_established_t *obj);
-/** Try to encode the hs_cell_intro_established from 'input' into the
+ssize_t trn_cell_intro_established_encoded_len(const trn_cell_intro_established_t *obj);
+/** Try to encode the trn_cell_intro_established 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 hs_cell_intro_established_encode(uint8_t *output, size_t avail, const hs_cell_intro_established_t *input);
-/** Check whether the internal state of the hs_cell_intro_established
+ssize_t trn_cell_intro_established_encode(uint8_t *output, size_t avail, const trn_cell_intro_established_t *input);
+/** Check whether the internal state of the trn_cell_intro_established
* in 'obj' is consistent. Return NULL if it is, and a short message
* if it is not.
*/
-const char *hs_cell_intro_established_check(const hs_cell_intro_established_t *obj);
+const char *trn_cell_intro_established_check(const trn_cell_intro_established_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int hs_cell_intro_established_clear_errors(hs_cell_intro_established_t *obj);
+int trn_cell_intro_established_clear_errors(trn_cell_intro_established_t *obj);
/** Return the value of the extensions field of the
- * hs_cell_intro_established_t in 'inp'
+ * trn_cell_intro_established_t in 'inp'
*/
-struct cell_extension_st * hs_cell_intro_established_get_extensions(hs_cell_intro_established_t *inp);
-/** As hs_cell_intro_established_get_extensions, but take and return a
- * const pointer
+struct trn_cell_extension_st * trn_cell_intro_established_get_extensions(trn_cell_intro_established_t *inp);
+/** As trn_cell_intro_established_get_extensions, but take and return
+ * a const pointer
*/
-const struct cell_extension_st * hs_cell_intro_established_getconst_extensions(const hs_cell_intro_established_t *inp);
+const struct trn_cell_extension_st * trn_cell_intro_established_getconst_extensions(const trn_cell_intro_established_t *inp);
/** Set the value of the extensions field of the
- * hs_cell_intro_established_t in 'inp' to 'val'. Free the old value
+ * trn_cell_intro_established_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 hs_cell_intro_established_set_extensions(hs_cell_intro_established_t *inp, struct cell_extension_st *val);
-/** As hs_cell_intro_established_set_extensions, but does not free the
- * previous value.
+int trn_cell_intro_established_set_extensions(trn_cell_intro_established_t *inp, struct trn_cell_extension_st *val);
+/** As trn_cell_intro_established_set_extensions, but does not free
+ * the previous value.
*/
-int hs_cell_intro_established_set0_extensions(hs_cell_intro_established_t *inp, struct cell_extension_st *val);
+int trn_cell_intro_established_set0_extensions(trn_cell_intro_established_t *inp, struct trn_cell_extension_st *val);
#endif
diff --git a/src/trunnel/hs/cell_establish_intro.trunnel b/src/trunnel/hs/cell_establish_intro.trunnel
index 33a133bf67..011ee62a15 100644
--- a/src/trunnel/hs/cell_establish_intro.trunnel
+++ b/src/trunnel/hs/cell_establish_intro.trunnel
@@ -4,12 +4,12 @@
* specified in proposal 224 section 3.1.
*/
-extern struct cell_extension;
+extern struct trn_cell_extension;
const TRUNNEL_SHA3_256_LEN = 32;
/* ESTABLISH_INTRO payload. See details in section 3.1.1 */
-struct hs_cell_establish_intro {
+struct trn_cell_establish_intro {
/* Indicate the start of the handshake authentication data. */
@ptr start_cell;
@@ -19,7 +19,7 @@ struct hs_cell_establish_intro {
u8 auth_key[auth_key_len];
/* Extension(s). Reserved fields. */
- struct cell_extension extensions;
+ struct trn_cell_extension extensions;
@ptr end_mac_fields;
/* Handshake MAC. */
@@ -35,7 +35,7 @@ struct hs_cell_establish_intro {
/* INTRO_ESTABLISHED payload which is an acknowledge of the ESTABLISH_INTRO
* cell. For legacy node, this payload is empty so the following only applies
* to version >= 3. */
-struct hs_cell_intro_established {
+struct trn_cell_intro_established {
/* Extension(s). Reserved fields. */
- struct cell_extension extensions;
+ struct trn_cell_extension extensions;
};
diff --git a/src/trunnel/hs/cell_introduce1.c b/src/trunnel/hs/cell_introduce1.c
index 5922a086dc..7501f6f196 100644
--- a/src/trunnel/hs/cell_introduce1.c
+++ b/src/trunnel/hs/cell_introduce1.c
@@ -28,14 +28,14 @@ int cellintroduce_deadcode_dummy__ = 0;
} \
} while (0)
-typedef struct cell_extension_st cell_extension_t;
-cell_extension_t *cell_extension_new(void);
-void cell_extension_free(cell_extension_t *victim);
-ssize_t cell_extension_parse(cell_extension_t **output, const uint8_t *input, const size_t len_in);
-ssize_t cell_extension_encoded_len(const cell_extension_t *obj);
-ssize_t cell_extension_encode(uint8_t *output, size_t avail, const cell_extension_t *input);
-const char *cell_extension_check(const cell_extension_t *obj);
-int cell_extension_clear_errors(cell_extension_t *obj);
+typedef struct trn_cell_extension_st trn_cell_extension_t;
+trn_cell_extension_t *trn_cell_extension_new(void);
+void trn_cell_extension_free(trn_cell_extension_t *victim);
+ssize_t trn_cell_extension_parse(trn_cell_extension_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_extension_encoded_len(const trn_cell_extension_t *obj);
+ssize_t trn_cell_extension_encode(uint8_t *output, size_t avail, const trn_cell_extension_t *input);
+const char *trn_cell_extension_check(const trn_cell_extension_t *obj);
+int trn_cell_extension_clear_errors(trn_cell_extension_t *obj);
typedef struct link_specifier_st link_specifier_t;
link_specifier_t *link_specifier_new(void);
void link_specifier_free(link_specifier_t *victim);
@@ -44,10 +44,10 @@ ssize_t link_specifier_encoded_len(const link_specifier_t *obj);
ssize_t link_specifier_encode(uint8_t *output, size_t avail, const link_specifier_t *input);
const char *link_specifier_check(const link_specifier_t *obj);
int link_specifier_clear_errors(link_specifier_t *obj);
-hs_cell_introduce1_t *
-hs_cell_introduce1_new(void)
+trn_cell_introduce1_t *
+trn_cell_introduce1_new(void)
{
- hs_cell_introduce1_t *val = trunnel_calloc(1, sizeof(hs_cell_introduce1_t));
+ trn_cell_introduce1_t *val = trunnel_calloc(1, sizeof(trn_cell_introduce1_t));
if (NULL == val)
return NULL;
return val;
@@ -56,47 +56,47 @@ hs_cell_introduce1_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-hs_cell_introduce1_clear(hs_cell_introduce1_t *obj)
+trn_cell_introduce1_clear(trn_cell_introduce1_t *obj)
{
(void) obj;
TRUNNEL_DYNARRAY_WIPE(&obj->auth_key);
TRUNNEL_DYNARRAY_CLEAR(&obj->auth_key);
- cell_extension_free(obj->extensions);
+ trn_cell_extension_free(obj->extensions);
obj->extensions = NULL;
TRUNNEL_DYNARRAY_WIPE(&obj->encrypted);
TRUNNEL_DYNARRAY_CLEAR(&obj->encrypted);
}
void
-hs_cell_introduce1_free(hs_cell_introduce1_t *obj)
+trn_cell_introduce1_free(trn_cell_introduce1_t *obj)
{
if (obj == NULL)
return;
- hs_cell_introduce1_clear(obj);
- trunnel_memwipe(obj, sizeof(hs_cell_introduce1_t));
+ trn_cell_introduce1_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_introduce1_t));
trunnel_free_(obj);
}
size_t
-hs_cell_introduce1_getlen_legacy_key_id(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getlen_legacy_key_id(const trn_cell_introduce1_t *inp)
{
(void)inp; return TRUNNEL_SHA1_LEN;
}
uint8_t
-hs_cell_introduce1_get_legacy_key_id(hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_get_legacy_key_id(trn_cell_introduce1_t *inp, size_t idx)
{
trunnel_assert(idx < TRUNNEL_SHA1_LEN);
return inp->legacy_key_id[idx];
}
uint8_t
-hs_cell_introduce1_getconst_legacy_key_id(const hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_getconst_legacy_key_id(const trn_cell_introduce1_t *inp, size_t idx)
{
- return hs_cell_introduce1_get_legacy_key_id((hs_cell_introduce1_t*)inp, idx);
+ return trn_cell_introduce1_get_legacy_key_id((trn_cell_introduce1_t*)inp, idx);
}
int
-hs_cell_introduce1_set_legacy_key_id(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce1_set_legacy_key_id(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt)
{
trunnel_assert(idx < TRUNNEL_SHA1_LEN);
inp->legacy_key_id[idx] = elt;
@@ -104,22 +104,22 @@ hs_cell_introduce1_set_legacy_key_id(hs_cell_introduce1_t *inp, size_t idx, uint
}
uint8_t *
-hs_cell_introduce1_getarray_legacy_key_id(hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getarray_legacy_key_id(trn_cell_introduce1_t *inp)
{
return inp->legacy_key_id;
}
const uint8_t *
-hs_cell_introduce1_getconstarray_legacy_key_id(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getconstarray_legacy_key_id(const trn_cell_introduce1_t *inp)
{
- return (const uint8_t *)hs_cell_introduce1_getarray_legacy_key_id((hs_cell_introduce1_t*)inp);
+ return (const uint8_t *)trn_cell_introduce1_getarray_legacy_key_id((trn_cell_introduce1_t*)inp);
}
uint8_t
-hs_cell_introduce1_get_auth_key_type(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_get_auth_key_type(const trn_cell_introduce1_t *inp)
{
return inp->auth_key_type;
}
int
-hs_cell_introduce1_set_auth_key_type(hs_cell_introduce1_t *inp, uint8_t val)
+trn_cell_introduce1_set_auth_key_type(trn_cell_introduce1_t *inp, uint8_t val)
{
if (! ((val == 0 || val == 1 || val == 2))) {
TRUNNEL_SET_ERROR_CODE(inp);
@@ -129,41 +129,41 @@ hs_cell_introduce1_set_auth_key_type(hs_cell_introduce1_t *inp, uint8_t val)
return 0;
}
uint16_t
-hs_cell_introduce1_get_auth_key_len(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_get_auth_key_len(const trn_cell_introduce1_t *inp)
{
return inp->auth_key_len;
}
int
-hs_cell_introduce1_set_auth_key_len(hs_cell_introduce1_t *inp, uint16_t val)
+trn_cell_introduce1_set_auth_key_len(trn_cell_introduce1_t *inp, uint16_t val)
{
inp->auth_key_len = val;
return 0;
}
size_t
-hs_cell_introduce1_getlen_auth_key(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getlen_auth_key(const trn_cell_introduce1_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->auth_key);
}
uint8_t
-hs_cell_introduce1_get_auth_key(hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_get_auth_key(trn_cell_introduce1_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->auth_key, idx);
}
uint8_t
-hs_cell_introduce1_getconst_auth_key(const hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_getconst_auth_key(const trn_cell_introduce1_t *inp, size_t idx)
{
- return hs_cell_introduce1_get_auth_key((hs_cell_introduce1_t*)inp, idx);
+ return trn_cell_introduce1_get_auth_key((trn_cell_introduce1_t*)inp, idx);
}
int
-hs_cell_introduce1_set_auth_key(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce1_set_auth_key(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->auth_key, idx, elt);
return 0;
}
int
-hs_cell_introduce1_add_auth_key(hs_cell_introduce1_t *inp, uint8_t elt)
+trn_cell_introduce1_add_auth_key(trn_cell_introduce1_t *inp, uint8_t elt)
{
#if SIZE_MAX >= UINT16_MAX
if (inp->auth_key.n_ == UINT16_MAX)
@@ -177,17 +177,17 @@ hs_cell_introduce1_add_auth_key(hs_cell_introduce1_t *inp, uint8_t elt)
}
uint8_t *
-hs_cell_introduce1_getarray_auth_key(hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getarray_auth_key(trn_cell_introduce1_t *inp)
{
return inp->auth_key.elts_;
}
const uint8_t *
-hs_cell_introduce1_getconstarray_auth_key(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getconstarray_auth_key(const trn_cell_introduce1_t *inp)
{
- return (const uint8_t *)hs_cell_introduce1_getarray_auth_key((hs_cell_introduce1_t*)inp);
+ return (const uint8_t *)trn_cell_introduce1_getarray_auth_key((trn_cell_introduce1_t*)inp);
}
int
-hs_cell_introduce1_setlen_auth_key(hs_cell_introduce1_t *inp, size_t newlen)
+trn_cell_introduce1_setlen_auth_key(trn_cell_introduce1_t *inp, size_t newlen)
{
uint8_t *newptr;
#if UINT16_MAX < SIZE_MAX
@@ -206,54 +206,54 @@ hs_cell_introduce1_setlen_auth_key(hs_cell_introduce1_t *inp, size_t newlen)
TRUNNEL_SET_ERROR_CODE(inp);
return -1;
}
-struct cell_extension_st *
-hs_cell_introduce1_get_extensions(hs_cell_introduce1_t *inp)
+struct trn_cell_extension_st *
+trn_cell_introduce1_get_extensions(trn_cell_introduce1_t *inp)
{
return inp->extensions;
}
-const struct cell_extension_st *
-hs_cell_introduce1_getconst_extensions(const hs_cell_introduce1_t *inp)
+const struct trn_cell_extension_st *
+trn_cell_introduce1_getconst_extensions(const trn_cell_introduce1_t *inp)
{
- return hs_cell_introduce1_get_extensions((hs_cell_introduce1_t*) inp);
+ return trn_cell_introduce1_get_extensions((trn_cell_introduce1_t*) inp);
}
int
-hs_cell_introduce1_set_extensions(hs_cell_introduce1_t *inp, struct cell_extension_st *val)
+trn_cell_introduce1_set_extensions(trn_cell_introduce1_t *inp, struct trn_cell_extension_st *val)
{
if (inp->extensions && inp->extensions != val)
- cell_extension_free(inp->extensions);
- return hs_cell_introduce1_set0_extensions(inp, val);
+ trn_cell_extension_free(inp->extensions);
+ return trn_cell_introduce1_set0_extensions(inp, val);
}
int
-hs_cell_introduce1_set0_extensions(hs_cell_introduce1_t *inp, struct cell_extension_st *val)
+trn_cell_introduce1_set0_extensions(trn_cell_introduce1_t *inp, struct trn_cell_extension_st *val)
{
inp->extensions = val;
return 0;
}
size_t
-hs_cell_introduce1_getlen_encrypted(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getlen_encrypted(const trn_cell_introduce1_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->encrypted);
}
uint8_t
-hs_cell_introduce1_get_encrypted(hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_get_encrypted(trn_cell_introduce1_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->encrypted, idx);
}
uint8_t
-hs_cell_introduce1_getconst_encrypted(const hs_cell_introduce1_t *inp, size_t idx)
+trn_cell_introduce1_getconst_encrypted(const trn_cell_introduce1_t *inp, size_t idx)
{
- return hs_cell_introduce1_get_encrypted((hs_cell_introduce1_t*)inp, idx);
+ return trn_cell_introduce1_get_encrypted((trn_cell_introduce1_t*)inp, idx);
}
int
-hs_cell_introduce1_set_encrypted(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce1_set_encrypted(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->encrypted, idx, elt);
return 0;
}
int
-hs_cell_introduce1_add_encrypted(hs_cell_introduce1_t *inp, uint8_t elt)
+trn_cell_introduce1_add_encrypted(trn_cell_introduce1_t *inp, uint8_t elt)
{
TRUNNEL_DYNARRAY_ADD(uint8_t, &inp->encrypted, elt, {});
return 0;
@@ -263,17 +263,17 @@ hs_cell_introduce1_add_encrypted(hs_cell_introduce1_t *inp, uint8_t elt)
}
uint8_t *
-hs_cell_introduce1_getarray_encrypted(hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getarray_encrypted(trn_cell_introduce1_t *inp)
{
return inp->encrypted.elts_;
}
const uint8_t *
-hs_cell_introduce1_getconstarray_encrypted(const hs_cell_introduce1_t *inp)
+trn_cell_introduce1_getconstarray_encrypted(const trn_cell_introduce1_t *inp)
{
- return (const uint8_t *)hs_cell_introduce1_getarray_encrypted((hs_cell_introduce1_t*)inp);
+ return (const uint8_t *)trn_cell_introduce1_getarray_encrypted((trn_cell_introduce1_t*)inp);
}
int
-hs_cell_introduce1_setlen_encrypted(hs_cell_introduce1_t *inp, size_t newlen)
+trn_cell_introduce1_setlen_encrypted(trn_cell_introduce1_t *inp, size_t newlen)
{
uint8_t *newptr;
newptr = trunnel_dynarray_setlen(&inp->encrypted.allocated_,
@@ -289,7 +289,7 @@ hs_cell_introduce1_setlen_encrypted(hs_cell_introduce1_t *inp, size_t newlen)
return -1;
}
const char *
-hs_cell_introduce1_check(const hs_cell_introduce1_t *obj)
+trn_cell_introduce1_check(const trn_cell_introduce1_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -301,18 +301,18 @@ hs_cell_introduce1_check(const hs_cell_introduce1_t *obj)
return "Length mismatch for auth_key";
{
const char *msg;
- if (NULL != (msg = cell_extension_check(obj->extensions)))
+ if (NULL != (msg = trn_cell_extension_check(obj->extensions)))
return msg;
}
return NULL;
}
ssize_t
-hs_cell_introduce1_encoded_len(const hs_cell_introduce1_t *obj)
+trn_cell_introduce1_encoded_len(const trn_cell_introduce1_t *obj)
{
ssize_t result = 0;
- if (NULL != hs_cell_introduce1_check(obj))
+ if (NULL != trn_cell_introduce1_check(obj))
return -1;
@@ -328,32 +328,32 @@ hs_cell_introduce1_encoded_len(const hs_cell_introduce1_t *obj)
/* Length of u8 auth_key[auth_key_len] */
result += TRUNNEL_DYNARRAY_LEN(&obj->auth_key);
- /* Length of struct cell_extension extensions */
- result += cell_extension_encoded_len(obj->extensions);
+ /* Length of struct trn_cell_extension extensions */
+ result += trn_cell_extension_encoded_len(obj->extensions);
/* Length of u8 encrypted[] */
result += TRUNNEL_DYNARRAY_LEN(&obj->encrypted);
return result;
}
int
-hs_cell_introduce1_clear_errors(hs_cell_introduce1_t *obj)
+trn_cell_introduce1_clear_errors(trn_cell_introduce1_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-hs_cell_introduce1_encode(uint8_t *output, const size_t avail, const hs_cell_introduce1_t *obj)
+trn_cell_introduce1_encode(uint8_t *output, const size_t avail, const trn_cell_introduce1_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 = hs_cell_introduce1_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_introduce1_encoded_len(obj);
#endif
- if (NULL != (msg = hs_cell_introduce1_check(obj)))
+ if (NULL != (msg = trn_cell_introduce1_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -393,9 +393,9 @@ hs_cell_introduce1_encode(uint8_t *output, const size_t avail, const hs_cell_int
written += elt_len; ptr += elt_len;
}
- /* Encode struct cell_extension extensions */
+ /* Encode struct trn_cell_extension extensions */
trunnel_assert(written <= avail);
- result = cell_extension_encode(ptr, avail - written, obj->extensions);
+ result = trn_cell_extension_encode(ptr, avail - written, obj->extensions);
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -435,11 +435,11 @@ hs_cell_introduce1_encode(uint8_t *output, const size_t avail, const hs_cell_int
return result;
}
-/** As hs_cell_introduce1_parse(), but do not allocate the output
+/** As trn_cell_introduce1_parse(), but do not allocate the output
* object.
*/
static ssize_t
-hs_cell_introduce1_parse_into(hs_cell_introduce1_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_introduce1_parse_into(trn_cell_introduce1_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -471,8 +471,8 @@ hs_cell_introduce1_parse_into(hs_cell_introduce1_t *obj, const uint8_t *input, c
memcpy(obj->auth_key.elts_, ptr, obj->auth_key_len);
ptr += obj->auth_key_len; remaining -= obj->auth_key_len;
- /* Parse struct cell_extension extensions */
- result = cell_extension_parse(&obj->extensions, ptr, remaining);
+ /* Parse struct trn_cell_extension extensions */
+ result = trn_cell_extension_parse(&obj->extensions, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
@@ -500,23 +500,23 @@ hs_cell_introduce1_parse_into(hs_cell_introduce1_t *obj, const uint8_t *input, c
}
ssize_t
-hs_cell_introduce1_parse(hs_cell_introduce1_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_introduce1_parse(trn_cell_introduce1_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = hs_cell_introduce1_new();
+ *output = trn_cell_introduce1_new();
if (NULL == *output)
return -1;
- result = hs_cell_introduce1_parse_into(*output, input, len_in);
+ result = trn_cell_introduce1_parse_into(*output, input, len_in);
if (result < 0) {
- hs_cell_introduce1_free(*output);
+ trn_cell_introduce1_free(*output);
*output = NULL;
}
return result;
}
-hs_cell_introduce_ack_t *
-hs_cell_introduce_ack_new(void)
+trn_cell_introduce_ack_t *
+trn_cell_introduce_ack_new(void)
{
- hs_cell_introduce_ack_t *val = trunnel_calloc(1, sizeof(hs_cell_introduce_ack_t));
+ trn_cell_introduce_ack_t *val = trunnel_calloc(1, sizeof(trn_cell_introduce_ack_t));
if (NULL == val)
return NULL;
return val;
@@ -525,30 +525,30 @@ hs_cell_introduce_ack_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-hs_cell_introduce_ack_clear(hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_clear(trn_cell_introduce_ack_t *obj)
{
(void) obj;
- cell_extension_free(obj->extensions);
+ trn_cell_extension_free(obj->extensions);
obj->extensions = NULL;
}
void
-hs_cell_introduce_ack_free(hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_free(trn_cell_introduce_ack_t *obj)
{
if (obj == NULL)
return;
- hs_cell_introduce_ack_clear(obj);
- trunnel_memwipe(obj, sizeof(hs_cell_introduce_ack_t));
+ trn_cell_introduce_ack_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_introduce_ack_t));
trunnel_free_(obj);
}
uint16_t
-hs_cell_introduce_ack_get_status(const hs_cell_introduce_ack_t *inp)
+trn_cell_introduce_ack_get_status(const trn_cell_introduce_ack_t *inp)
{
return inp->status;
}
int
-hs_cell_introduce_ack_set_status(hs_cell_introduce_ack_t *inp, uint16_t val)
+trn_cell_introduce_ack_set_status(trn_cell_introduce_ack_t *inp, uint16_t val)
{
if (! ((val == 0 || val == 1 || val == 2))) {
TRUNNEL_SET_ERROR_CODE(inp);
@@ -557,31 +557,31 @@ hs_cell_introduce_ack_set_status(hs_cell_introduce_ack_t *inp, uint16_t val)
inp->status = val;
return 0;
}
-struct cell_extension_st *
-hs_cell_introduce_ack_get_extensions(hs_cell_introduce_ack_t *inp)
+struct trn_cell_extension_st *
+trn_cell_introduce_ack_get_extensions(trn_cell_introduce_ack_t *inp)
{
return inp->extensions;
}
-const struct cell_extension_st *
-hs_cell_introduce_ack_getconst_extensions(const hs_cell_introduce_ack_t *inp)
+const struct trn_cell_extension_st *
+trn_cell_introduce_ack_getconst_extensions(const trn_cell_introduce_ack_t *inp)
{
- return hs_cell_introduce_ack_get_extensions((hs_cell_introduce_ack_t*) inp);
+ return trn_cell_introduce_ack_get_extensions((trn_cell_introduce_ack_t*) inp);
}
int
-hs_cell_introduce_ack_set_extensions(hs_cell_introduce_ack_t *inp, struct cell_extension_st *val)
+trn_cell_introduce_ack_set_extensions(trn_cell_introduce_ack_t *inp, struct trn_cell_extension_st *val)
{
if (inp->extensions && inp->extensions != val)
- cell_extension_free(inp->extensions);
- return hs_cell_introduce_ack_set0_extensions(inp, val);
+ trn_cell_extension_free(inp->extensions);
+ return trn_cell_introduce_ack_set0_extensions(inp, val);
}
int
-hs_cell_introduce_ack_set0_extensions(hs_cell_introduce_ack_t *inp, struct cell_extension_st *val)
+trn_cell_introduce_ack_set0_extensions(trn_cell_introduce_ack_t *inp, struct trn_cell_extension_st *val)
{
inp->extensions = val;
return 0;
}
const char *
-hs_cell_introduce_ack_check(const hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_check(const trn_cell_introduce_ack_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -591,47 +591,47 @@ hs_cell_introduce_ack_check(const hs_cell_introduce_ack_t *obj)
return "Integer out of bounds";
{
const char *msg;
- if (NULL != (msg = cell_extension_check(obj->extensions)))
+ if (NULL != (msg = trn_cell_extension_check(obj->extensions)))
return msg;
}
return NULL;
}
ssize_t
-hs_cell_introduce_ack_encoded_len(const hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_encoded_len(const trn_cell_introduce_ack_t *obj)
{
ssize_t result = 0;
- if (NULL != hs_cell_introduce_ack_check(obj))
+ if (NULL != trn_cell_introduce_ack_check(obj))
return -1;
/* Length of u16 status IN [0, 1, 2] */
result += 2;
- /* Length of struct cell_extension extensions */
- result += cell_extension_encoded_len(obj->extensions);
+ /* Length of struct trn_cell_extension extensions */
+ result += trn_cell_extension_encoded_len(obj->extensions);
return result;
}
int
-hs_cell_introduce_ack_clear_errors(hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_clear_errors(trn_cell_introduce_ack_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-hs_cell_introduce_ack_encode(uint8_t *output, const size_t avail, const hs_cell_introduce_ack_t *obj)
+trn_cell_introduce_ack_encode(uint8_t *output, const size_t avail, const trn_cell_introduce_ack_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 = hs_cell_introduce_ack_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_introduce_ack_encoded_len(obj);
#endif
- if (NULL != (msg = hs_cell_introduce_ack_check(obj)))
+ if (NULL != (msg = trn_cell_introduce_ack_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -645,9 +645,9 @@ hs_cell_introduce_ack_encode(uint8_t *output, const size_t avail, const hs_cell_
trunnel_set_uint16(ptr, trunnel_htons(obj->status));
written += 2; ptr += 2;
- /* Encode struct cell_extension extensions */
+ /* Encode struct trn_cell_extension extensions */
trunnel_assert(written <= avail);
- result = cell_extension_encode(ptr, avail - written, obj->extensions);
+ result = trn_cell_extension_encode(ptr, avail - written, obj->extensions);
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -676,11 +676,11 @@ hs_cell_introduce_ack_encode(uint8_t *output, const size_t avail, const hs_cell_
return result;
}
-/** As hs_cell_introduce_ack_parse(), but do not allocate the output
+/** As trn_cell_introduce_ack_parse(), but do not allocate the output
* object.
*/
static ssize_t
-hs_cell_introduce_ack_parse_into(hs_cell_introduce_ack_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_introduce_ack_parse_into(trn_cell_introduce_ack_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -694,8 +694,8 @@ hs_cell_introduce_ack_parse_into(hs_cell_introduce_ack_t *obj, const uint8_t *in
if (! (obj->status == 0 || obj->status == 1 || obj->status == 2))
goto fail;
- /* Parse struct cell_extension extensions */
- result = cell_extension_parse(&obj->extensions, ptr, remaining);
+ /* Parse struct trn_cell_extension extensions */
+ result = trn_cell_extension_parse(&obj->extensions, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
@@ -714,23 +714,23 @@ hs_cell_introduce_ack_parse_into(hs_cell_introduce_ack_t *obj, const uint8_t *in
}
ssize_t
-hs_cell_introduce_ack_parse(hs_cell_introduce_ack_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_introduce_ack_parse(trn_cell_introduce_ack_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = hs_cell_introduce_ack_new();
+ *output = trn_cell_introduce_ack_new();
if (NULL == *output)
return -1;
- result = hs_cell_introduce_ack_parse_into(*output, input, len_in);
+ result = trn_cell_introduce_ack_parse_into(*output, input, len_in);
if (result < 0) {
- hs_cell_introduce_ack_free(*output);
+ trn_cell_introduce_ack_free(*output);
*output = NULL;
}
return result;
}
-hs_cell_introduce_encrypted_t *
-hs_cell_introduce_encrypted_new(void)
+trn_cell_introduce_encrypted_t *
+trn_cell_introduce_encrypted_new(void)
{
- hs_cell_introduce_encrypted_t *val = trunnel_calloc(1, sizeof(hs_cell_introduce_encrypted_t));
+ trn_cell_introduce_encrypted_t *val = trunnel_calloc(1, sizeof(trn_cell_introduce_encrypted_t));
if (NULL == val)
return NULL;
val->onion_key_type = 1;
@@ -740,10 +740,10 @@ hs_cell_introduce_encrypted_new(void)
/** Release all storage held inside 'obj', but do not free 'obj'.
*/
static void
-hs_cell_introduce_encrypted_clear(hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_clear(trn_cell_introduce_encrypted_t *obj)
{
(void) obj;
- cell_extension_free(obj->extensions);
+ trn_cell_extension_free(obj->extensions);
obj->extensions = NULL;
TRUNNEL_DYNARRAY_WIPE(&obj->onion_key);
TRUNNEL_DYNARRAY_CLEAR(&obj->onion_key);
@@ -761,35 +761,35 @@ hs_cell_introduce_encrypted_clear(hs_cell_introduce_encrypted_t *obj)
}
void
-hs_cell_introduce_encrypted_free(hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_free(trn_cell_introduce_encrypted_t *obj)
{
if (obj == NULL)
return;
- hs_cell_introduce_encrypted_clear(obj);
- trunnel_memwipe(obj, sizeof(hs_cell_introduce_encrypted_t));
+ trn_cell_introduce_encrypted_clear(obj);
+ trunnel_memwipe(obj, sizeof(trn_cell_introduce_encrypted_t));
trunnel_free_(obj);
}
size_t
-hs_cell_introduce_encrypted_getlen_rend_cookie(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getlen_rend_cookie(const trn_cell_introduce_encrypted_t *inp)
{
(void)inp; return TRUNNEL_REND_COOKIE_LEN;
}
uint8_t
-hs_cell_introduce_encrypted_get_rend_cookie(hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_get_rend_cookie(trn_cell_introduce_encrypted_t *inp, size_t idx)
{
trunnel_assert(idx < TRUNNEL_REND_COOKIE_LEN);
return inp->rend_cookie[idx];
}
uint8_t
-hs_cell_introduce_encrypted_getconst_rend_cookie(const hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_getconst_rend_cookie(const trn_cell_introduce_encrypted_t *inp, size_t idx)
{
- return hs_cell_introduce_encrypted_get_rend_cookie((hs_cell_introduce_encrypted_t*)inp, idx);
+ return trn_cell_introduce_encrypted_get_rend_cookie((trn_cell_introduce_encrypted_t*)inp, idx);
}
int
-hs_cell_introduce_encrypted_set_rend_cookie(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce_encrypted_set_rend_cookie(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
{
trunnel_assert(idx < TRUNNEL_REND_COOKIE_LEN);
inp->rend_cookie[idx] = elt;
@@ -797,45 +797,45 @@ hs_cell_introduce_encrypted_set_rend_cookie(hs_cell_introduce_encrypted_t *inp,
}
uint8_t *
-hs_cell_introduce_encrypted_getarray_rend_cookie(hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getarray_rend_cookie(trn_cell_introduce_encrypted_t *inp)
{
return inp->rend_cookie;
}
const uint8_t *
-hs_cell_introduce_encrypted_getconstarray_rend_cookie(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getconstarray_rend_cookie(const trn_cell_introduce_encrypted_t *inp)
{
- return (const uint8_t *)hs_cell_introduce_encrypted_getarray_rend_cookie((hs_cell_introduce_encrypted_t*)inp);
+ return (const uint8_t *)trn_cell_introduce_encrypted_getarray_rend_cookie((trn_cell_introduce_encrypted_t*)inp);
}
-struct cell_extension_st *
-hs_cell_introduce_encrypted_get_extensions(hs_cell_introduce_encrypted_t *inp)
+struct trn_cell_extension_st *
+trn_cell_introduce_encrypted_get_extensions(trn_cell_introduce_encrypted_t *inp)
{
return inp->extensions;
}
-const struct cell_extension_st *
-hs_cell_introduce_encrypted_getconst_extensions(const hs_cell_introduce_encrypted_t *inp)
+const struct trn_cell_extension_st *
+trn_cell_introduce_encrypted_getconst_extensions(const trn_cell_introduce_encrypted_t *inp)
{
- return hs_cell_introduce_encrypted_get_extensions((hs_cell_introduce_encrypted_t*) inp);
+ return trn_cell_introduce_encrypted_get_extensions((trn_cell_introduce_encrypted_t*) inp);
}
int
-hs_cell_introduce_encrypted_set_extensions(hs_cell_introduce_encrypted_t *inp, struct cell_extension_st *val)
+trn_cell_introduce_encrypted_set_extensions(trn_cell_introduce_encrypted_t *inp, struct trn_cell_extension_st *val)
{
if (inp->extensions && inp->extensions != val)
- cell_extension_free(inp->extensions);
- return hs_cell_introduce_encrypted_set0_extensions(inp, val);
+ trn_cell_extension_free(inp->extensions);
+ return trn_cell_introduce_encrypted_set0_extensions(inp, val);
}
int
-hs_cell_introduce_encrypted_set0_extensions(hs_cell_introduce_encrypted_t *inp, struct cell_extension_st *val)
+trn_cell_introduce_encrypted_set0_extensions(trn_cell_introduce_encrypted_t *inp, struct trn_cell_extension_st *val)
{
inp->extensions = val;
return 0;
}
uint8_t
-hs_cell_introduce_encrypted_get_onion_key_type(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_get_onion_key_type(const trn_cell_introduce_encrypted_t *inp)
{
return inp->onion_key_type;
}
int
-hs_cell_introduce_encrypted_set_onion_key_type(hs_cell_introduce_encrypted_t *inp, uint8_t val)
+trn_cell_introduce_encrypted_set_onion_key_type(trn_cell_introduce_encrypted_t *inp, uint8_t val)
{
if (! ((val == 1))) {
TRUNNEL_SET_ERROR_CODE(inp);
@@ -845,41 +845,41 @@ hs_cell_introduce_encrypted_set_onion_key_type(hs_cell_introduce_encrypted_t *in
return 0;
}
uint16_t
-hs_cell_introduce_encrypted_get_onion_key_len(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_get_onion_key_len(const trn_cell_introduce_encrypted_t *inp)
{
return inp->onion_key_len;
}
int
-hs_cell_introduce_encrypted_set_onion_key_len(hs_cell_introduce_encrypted_t *inp, uint16_t val)
+trn_cell_introduce_encrypted_set_onion_key_len(trn_cell_introduce_encrypted_t *inp, uint16_t val)
{
inp->onion_key_len = val;
return 0;
}
size_t
-hs_cell_introduce_encrypted_getlen_onion_key(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getlen_onion_key(const trn_cell_introduce_encrypted_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->onion_key);
}
uint8_t
-hs_cell_introduce_encrypted_get_onion_key(hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_get_onion_key(trn_cell_introduce_encrypted_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->onion_key, idx);
}
uint8_t
-hs_cell_introduce_encrypted_getconst_onion_key(const hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_getconst_onion_key(const trn_cell_introduce_encrypted_t *inp, size_t idx)
{
- return hs_cell_introduce_encrypted_get_onion_key((hs_cell_introduce_encrypted_t*)inp, idx);
+ return trn_cell_introduce_encrypted_get_onion_key((trn_cell_introduce_encrypted_t*)inp, idx);
}
int
-hs_cell_introduce_encrypted_set_onion_key(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce_encrypted_set_onion_key(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->onion_key, idx, elt);
return 0;
}
int
-hs_cell_introduce_encrypted_add_onion_key(hs_cell_introduce_encrypted_t *inp, uint8_t elt)
+trn_cell_introduce_encrypted_add_onion_key(trn_cell_introduce_encrypted_t *inp, uint8_t elt)
{
#if SIZE_MAX >= UINT16_MAX
if (inp->onion_key.n_ == UINT16_MAX)
@@ -893,17 +893,17 @@ hs_cell_introduce_encrypted_add_onion_key(hs_cell_introduce_encrypted_t *inp, ui
}
uint8_t *
-hs_cell_introduce_encrypted_getarray_onion_key(hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getarray_onion_key(trn_cell_introduce_encrypted_t *inp)
{
return inp->onion_key.elts_;
}
const uint8_t *
-hs_cell_introduce_encrypted_getconstarray_onion_key(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getconstarray_onion_key(const trn_cell_introduce_encrypted_t *inp)
{
- return (const uint8_t *)hs_cell_introduce_encrypted_getarray_onion_key((hs_cell_introduce_encrypted_t*)inp);
+ return (const uint8_t *)trn_cell_introduce_encrypted_getarray_onion_key((trn_cell_introduce_encrypted_t*)inp);
}
int
-hs_cell_introduce_encrypted_setlen_onion_key(hs_cell_introduce_encrypted_t *inp, size_t newlen)
+trn_cell_introduce_encrypted_setlen_onion_key(trn_cell_introduce_encrypted_t *inp, size_t newlen)
{
uint8_t *newptr;
#if UINT16_MAX < SIZE_MAX
@@ -923,49 +923,49 @@ hs_cell_introduce_encrypted_setlen_onion_key(hs_cell_introduce_encrypted_t *inp,
return -1;
}
uint8_t
-hs_cell_introduce_encrypted_get_nspec(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_get_nspec(const trn_cell_introduce_encrypted_t *inp)
{
return inp->nspec;
}
int
-hs_cell_introduce_encrypted_set_nspec(hs_cell_introduce_encrypted_t *inp, uint8_t val)
+trn_cell_introduce_encrypted_set_nspec(trn_cell_introduce_encrypted_t *inp, uint8_t val)
{
inp->nspec = val;
return 0;
}
size_t
-hs_cell_introduce_encrypted_getlen_nspecs(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getlen_nspecs(const trn_cell_introduce_encrypted_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->nspecs);
}
struct link_specifier_st *
-hs_cell_introduce_encrypted_get_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_get_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->nspecs, idx);
}
const struct link_specifier_st *
-hs_cell_introduce_encrypted_getconst_nspecs(const hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_getconst_nspecs(const trn_cell_introduce_encrypted_t *inp, size_t idx)
{
- return hs_cell_introduce_encrypted_get_nspecs((hs_cell_introduce_encrypted_t*)inp, idx);
+ return trn_cell_introduce_encrypted_get_nspecs((trn_cell_introduce_encrypted_t*)inp, idx);
}
int
-hs_cell_introduce_encrypted_set_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt)
+trn_cell_introduce_encrypted_set_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt)
{
link_specifier_t *oldval = TRUNNEL_DYNARRAY_GET(&inp->nspecs, idx);
if (oldval && oldval != elt)
link_specifier_free(oldval);
- return hs_cell_introduce_encrypted_set0_nspecs(inp, idx, elt);
+ return trn_cell_introduce_encrypted_set0_nspecs(inp, idx, elt);
}
int
-hs_cell_introduce_encrypted_set0_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt)
+trn_cell_introduce_encrypted_set0_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt)
{
TRUNNEL_DYNARRAY_SET(&inp->nspecs, idx, elt);
return 0;
}
int
-hs_cell_introduce_encrypted_add_nspecs(hs_cell_introduce_encrypted_t *inp, struct link_specifier_st * elt)
+trn_cell_introduce_encrypted_add_nspecs(trn_cell_introduce_encrypted_t *inp, struct link_specifier_st * elt)
{
#if SIZE_MAX >= UINT8_MAX
if (inp->nspecs.n_ == UINT8_MAX)
@@ -979,17 +979,17 @@ hs_cell_introduce_encrypted_add_nspecs(hs_cell_introduce_encrypted_t *inp, struc
}
struct link_specifier_st * *
-hs_cell_introduce_encrypted_getarray_nspecs(hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getarray_nspecs(trn_cell_introduce_encrypted_t *inp)
{
return inp->nspecs.elts_;
}
const struct link_specifier_st * const *
-hs_cell_introduce_encrypted_getconstarray_nspecs(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getconstarray_nspecs(const trn_cell_introduce_encrypted_t *inp)
{
- return (const struct link_specifier_st * const *)hs_cell_introduce_encrypted_getarray_nspecs((hs_cell_introduce_encrypted_t*)inp);
+ return (const struct link_specifier_st * const *)trn_cell_introduce_encrypted_getarray_nspecs((trn_cell_introduce_encrypted_t*)inp);
}
int
-hs_cell_introduce_encrypted_setlen_nspecs(hs_cell_introduce_encrypted_t *inp, size_t newlen)
+trn_cell_introduce_encrypted_setlen_nspecs(trn_cell_introduce_encrypted_t *inp, size_t newlen)
{
struct link_specifier_st * *newptr;
#if UINT8_MAX < SIZE_MAX
@@ -1009,30 +1009,30 @@ hs_cell_introduce_encrypted_setlen_nspecs(hs_cell_introduce_encrypted_t *inp, si
return -1;
}
size_t
-hs_cell_introduce_encrypted_getlen_pad(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getlen_pad(const trn_cell_introduce_encrypted_t *inp)
{
return TRUNNEL_DYNARRAY_LEN(&inp->pad);
}
uint8_t
-hs_cell_introduce_encrypted_get_pad(hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_get_pad(trn_cell_introduce_encrypted_t *inp, size_t idx)
{
return TRUNNEL_DYNARRAY_GET(&inp->pad, idx);
}
uint8_t
-hs_cell_introduce_encrypted_getconst_pad(const hs_cell_introduce_encrypted_t *inp, size_t idx)
+trn_cell_introduce_encrypted_getconst_pad(const trn_cell_introduce_encrypted_t *inp, size_t idx)
{
- return hs_cell_introduce_encrypted_get_pad((hs_cell_introduce_encrypted_t*)inp, idx);
+ return trn_cell_introduce_encrypted_get_pad((trn_cell_introduce_encrypted_t*)inp, idx);
}
int
-hs_cell_introduce_encrypted_set_pad(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
+trn_cell_introduce_encrypted_set_pad(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt)
{
TRUNNEL_DYNARRAY_SET(&inp->pad, idx, elt);
return 0;
}
int
-hs_cell_introduce_encrypted_add_pad(hs_cell_introduce_encrypted_t *inp, uint8_t elt)
+trn_cell_introduce_encrypted_add_pad(trn_cell_introduce_encrypted_t *inp, uint8_t elt)
{
TRUNNEL_DYNARRAY_ADD(uint8_t, &inp->pad, elt, {});
return 0;
@@ -1042,17 +1042,17 @@ hs_cell_introduce_encrypted_add_pad(hs_cell_introduce_encrypted_t *inp, uint8_t
}
uint8_t *
-hs_cell_introduce_encrypted_getarray_pad(hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getarray_pad(trn_cell_introduce_encrypted_t *inp)
{
return inp->pad.elts_;
}
const uint8_t *
-hs_cell_introduce_encrypted_getconstarray_pad(const hs_cell_introduce_encrypted_t *inp)
+trn_cell_introduce_encrypted_getconstarray_pad(const trn_cell_introduce_encrypted_t *inp)
{
- return (const uint8_t *)hs_cell_introduce_encrypted_getarray_pad((hs_cell_introduce_encrypted_t*)inp);
+ return (const uint8_t *)trn_cell_introduce_encrypted_getarray_pad((trn_cell_introduce_encrypted_t*)inp);
}
int
-hs_cell_introduce_encrypted_setlen_pad(hs_cell_introduce_encrypted_t *inp, size_t newlen)
+trn_cell_introduce_encrypted_setlen_pad(trn_cell_introduce_encrypted_t *inp, size_t newlen)
{
uint8_t *newptr;
newptr = trunnel_dynarray_setlen(&inp->pad.allocated_,
@@ -1068,7 +1068,7 @@ hs_cell_introduce_encrypted_setlen_pad(hs_cell_introduce_encrypted_t *inp, size_
return -1;
}
const char *
-hs_cell_introduce_encrypted_check(const hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_check(const trn_cell_introduce_encrypted_t *obj)
{
if (obj == NULL)
return "Object was NULL";
@@ -1076,7 +1076,7 @@ hs_cell_introduce_encrypted_check(const hs_cell_introduce_encrypted_t *obj)
return "A set function failed on this object";
{
const char *msg;
- if (NULL != (msg = cell_extension_check(obj->extensions)))
+ if (NULL != (msg = trn_cell_extension_check(obj->extensions)))
return msg;
}
if (! (obj->onion_key_type == 1))
@@ -1098,19 +1098,19 @@ hs_cell_introduce_encrypted_check(const hs_cell_introduce_encrypted_t *obj)
}
ssize_t
-hs_cell_introduce_encrypted_encoded_len(const hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_encoded_len(const trn_cell_introduce_encrypted_t *obj)
{
ssize_t result = 0;
- if (NULL != hs_cell_introduce_encrypted_check(obj))
+ if (NULL != trn_cell_introduce_encrypted_check(obj))
return -1;
/* Length of u8 rend_cookie[TRUNNEL_REND_COOKIE_LEN] */
result += TRUNNEL_REND_COOKIE_LEN;
- /* Length of struct cell_extension extensions */
- result += cell_extension_encoded_len(obj->extensions);
+ /* Length of struct trn_cell_extension extensions */
+ result += trn_cell_extension_encoded_len(obj->extensions);
/* Length of u8 onion_key_type IN [1] */
result += 1;
@@ -1138,24 +1138,24 @@ hs_cell_introduce_encrypted_encoded_len(const hs_cell_introduce_encrypted_t *obj
return result;
}
int
-hs_cell_introduce_encrypted_clear_errors(hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_clear_errors(trn_cell_introduce_encrypted_t *obj)
{
int r = obj->trunnel_error_code_;
obj->trunnel_error_code_ = 0;
return r;
}
ssize_t
-hs_cell_introduce_encrypted_encode(uint8_t *output, const size_t avail, const hs_cell_introduce_encrypted_t *obj)
+trn_cell_introduce_encrypted_encode(uint8_t *output, const size_t avail, const trn_cell_introduce_encrypted_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 = hs_cell_introduce_encrypted_encoded_len(obj);
+ const ssize_t encoded_len = trn_cell_introduce_encrypted_encoded_len(obj);
#endif
- if (NULL != (msg = hs_cell_introduce_encrypted_check(obj)))
+ if (NULL != (msg = trn_cell_introduce_encrypted_check(obj)))
goto check_failed;
#ifdef TRUNNEL_CHECK_ENCODED_LEN
@@ -1169,9 +1169,9 @@ hs_cell_introduce_encrypted_encode(uint8_t *output, const size_t avail, const hs
memcpy(ptr, obj->rend_cookie, TRUNNEL_REND_COOKIE_LEN);
written += TRUNNEL_REND_COOKIE_LEN; ptr += TRUNNEL_REND_COOKIE_LEN;
- /* Encode struct cell_extension extensions */
+ /* Encode struct trn_cell_extension extensions */
trunnel_assert(written <= avail);
- result = cell_extension_encode(ptr, avail - written, obj->extensions);
+ result = trn_cell_extension_encode(ptr, avail - written, obj->extensions);
if (result < 0)
goto fail; /* XXXXXXX !*/
written += result; ptr += result;
@@ -1257,11 +1257,11 @@ hs_cell_introduce_encrypted_encode(uint8_t *output, const size_t avail, const hs
return result;
}
-/** As hs_cell_introduce_encrypted_parse(), but do not allocate the
+/** As trn_cell_introduce_encrypted_parse(), but do not allocate the
* output object.
*/
static ssize_t
-hs_cell_introduce_encrypted_parse_into(hs_cell_introduce_encrypted_t *obj, const uint8_t *input, const size_t len_in)
+trn_cell_introduce_encrypted_parse_into(trn_cell_introduce_encrypted_t *obj, const uint8_t *input, const size_t len_in)
{
const uint8_t *ptr = input;
size_t remaining = len_in;
@@ -1273,8 +1273,8 @@ hs_cell_introduce_encrypted_parse_into(hs_cell_introduce_encrypted_t *obj, const
memcpy(obj->rend_cookie, ptr, TRUNNEL_REND_COOKIE_LEN);
remaining -= TRUNNEL_REND_COOKIE_LEN; ptr += TRUNNEL_REND_COOKIE_LEN;
- /* Parse struct cell_extension extensions */
- result = cell_extension_parse(&obj->extensions, ptr, remaining);
+ /* Parse struct trn_cell_extension extensions */
+ result = trn_cell_extension_parse(&obj->extensions, ptr, remaining);
if (result < 0)
goto relay_fail;
trunnel_assert((size_t)result <= remaining);
@@ -1342,15 +1342,15 @@ hs_cell_introduce_encrypted_parse_into(hs_cell_introduce_encrypted_t *obj, const
}
ssize_t
-hs_cell_introduce_encrypted_parse(hs_cell_introduce_encrypted_t **output, const uint8_t *input, const size_t len_in)
+trn_cell_introduce_encrypted_parse(trn_cell_introduce_encrypted_t **output, const uint8_t *input, const size_t len_in)
{
ssize_t result;
- *output = hs_cell_introduce_encrypted_new();
+ *output = trn_cell_introduce_encrypted_new();
if (NULL == *output)
return -1;
- result = hs_cell_introduce_encrypted_parse_into(*output, input, len_in);
+ result = trn_cell_introduce_encrypted_parse_into(*output, input, len_in);
if (result < 0) {
- hs_cell_introduce_encrypted_free(*output);
+ trn_cell_introduce_encrypted_free(*output);
*output = NULL;
}
return result;
diff --git a/src/trunnel/hs/cell_introduce1.h b/src/trunnel/hs/cell_introduce1.h
index ccd2cda904..cca825a431 100644
--- a/src/trunnel/hs/cell_introduce1.h
+++ b/src/trunnel/hs/cell_introduce1.h
@@ -8,34 +8,34 @@
#include <stdint.h>
#include "trunnel.h"
-struct cell_extension_st;
+struct trn_cell_extension_st;
struct link_specifier_st;
#define TRUNNEL_SHA1_LEN 20
#define TRUNNEL_REND_COOKIE_LEN 20
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HS_CELL_INTRODUCE1)
-struct hs_cell_introduce1_st {
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_INTRODUCE1)
+struct trn_cell_introduce1_st {
uint8_t legacy_key_id[TRUNNEL_SHA1_LEN];
uint8_t auth_key_type;
uint16_t auth_key_len;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) auth_key;
- struct cell_extension_st *extensions;
+ struct trn_cell_extension_st *extensions;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) encrypted;
uint8_t trunnel_error_code_;
};
#endif
-typedef struct hs_cell_introduce1_st hs_cell_introduce1_t;
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HS_CELL_INTRODUCE_ACK)
-struct hs_cell_introduce_ack_st {
+typedef struct trn_cell_introduce1_st trn_cell_introduce1_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_INTRODUCE_ACK)
+struct trn_cell_introduce_ack_st {
uint16_t status;
- struct cell_extension_st *extensions;
+ struct trn_cell_extension_st *extensions;
uint8_t trunnel_error_code_;
};
#endif
-typedef struct hs_cell_introduce_ack_st hs_cell_introduce_ack_t;
-#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HS_CELL_INTRODUCE_ENCRYPTED)
-struct hs_cell_introduce_encrypted_st {
+typedef struct trn_cell_introduce_ack_st trn_cell_introduce_ack_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_INTRODUCE_ENCRYPTED)
+struct trn_cell_introduce_encrypted_st {
uint8_t rend_cookie[TRUNNEL_REND_COOKIE_LEN];
- struct cell_extension_st *extensions;
+ struct trn_cell_extension_st *extensions;
uint8_t onion_key_type;
uint16_t onion_key_len;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) onion_key;
@@ -45,449 +45,449 @@ struct hs_cell_introduce_encrypted_st {
uint8_t trunnel_error_code_;
};
#endif
-typedef struct hs_cell_introduce_encrypted_st hs_cell_introduce_encrypted_t;
-/** Return a newly allocated hs_cell_introduce1 with all elements set
+typedef struct trn_cell_introduce_encrypted_st trn_cell_introduce_encrypted_t;
+/** Return a newly allocated trn_cell_introduce1 with all elements set
* to zero.
*/
-hs_cell_introduce1_t *hs_cell_introduce1_new(void);
-/** Release all storage held by the hs_cell_introduce1 in 'victim'.
+trn_cell_introduce1_t *trn_cell_introduce1_new(void);
+/** Release all storage held by the trn_cell_introduce1 in 'victim'.
* (Do nothing if 'victim' is NULL.)
*/
-void hs_cell_introduce1_free(hs_cell_introduce1_t *victim);
-/** Try to parse a hs_cell_introduce1 from the buffer in 'input',
+void trn_cell_introduce1_free(trn_cell_introduce1_t *victim);
+/** Try to parse a trn_cell_introduce1 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 hs_cell_introduce1_t. On failure, return -2 if the input
+ * allocated trn_cell_introduce1_t. On failure, return -2 if the input
* appears truncated, and -1 if the input is otherwise invalid.
*/
-ssize_t hs_cell_introduce1_parse(hs_cell_introduce1_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_introduce1_parse(trn_cell_introduce1_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * hs_cell_introduce1 in 'obj'. On failure, return a negative value.
+ * trn_cell_introduce1 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 hs_cell_introduce1_encoded_len(const hs_cell_introduce1_t *obj);
-/** Try to encode the hs_cell_introduce1 from 'input' into the buffer
+ssize_t trn_cell_introduce1_encoded_len(const trn_cell_introduce1_t *obj);
+/** Try to encode the trn_cell_introduce1 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 hs_cell_introduce1_encode(uint8_t *output, size_t avail, const hs_cell_introduce1_t *input);
-/** Check whether the internal state of the hs_cell_introduce1 in
+ssize_t trn_cell_introduce1_encode(uint8_t *output, size_t avail, const trn_cell_introduce1_t *input);
+/** Check whether the internal state of the trn_cell_introduce1 in
* 'obj' is consistent. Return NULL if it is, and a short message if
* it is not.
*/
-const char *hs_cell_introduce1_check(const hs_cell_introduce1_t *obj);
+const char *trn_cell_introduce1_check(const trn_cell_introduce1_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int hs_cell_introduce1_clear_errors(hs_cell_introduce1_t *obj);
+int trn_cell_introduce1_clear_errors(trn_cell_introduce1_t *obj);
/** Return the (constant) length of the array holding the
- * legacy_key_id field of the hs_cell_introduce1_t in 'inp'.
+ * legacy_key_id field of the trn_cell_introduce1_t in 'inp'.
*/
-size_t hs_cell_introduce1_getlen_legacy_key_id(const hs_cell_introduce1_t *inp);
+size_t trn_cell_introduce1_getlen_legacy_key_id(const trn_cell_introduce1_t *inp);
/** Return the element at position 'idx' of the fixed array field
- * legacy_key_id of the hs_cell_introduce1_t in 'inp'.
+ * legacy_key_id of the trn_cell_introduce1_t in 'inp'.
*/
-uint8_t hs_cell_introduce1_get_legacy_key_id(hs_cell_introduce1_t *inp, size_t idx);
-/** As hs_cell_introduce1_get_legacy_key_id, but take and return a
+uint8_t trn_cell_introduce1_get_legacy_key_id(trn_cell_introduce1_t *inp, size_t idx);
+/** As trn_cell_introduce1_get_legacy_key_id, but take and return a
* const pointer
*/
-uint8_t hs_cell_introduce1_getconst_legacy_key_id(const hs_cell_introduce1_t *inp, size_t idx);
+uint8_t trn_cell_introduce1_getconst_legacy_key_id(const trn_cell_introduce1_t *inp, size_t idx);
/** Change the element at position 'idx' of the fixed array field
- * legacy_key_id of the hs_cell_introduce1_t in 'inp', so that it will
- * hold the value 'elt'.
+ * legacy_key_id of the trn_cell_introduce1_t in 'inp', so that it
+ * will hold the value 'elt'.
*/
-int hs_cell_introduce1_set_legacy_key_id(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce1_set_legacy_key_id(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt);
/** Return a pointer to the TRUNNEL_SHA1_LEN-element array field
* legacy_key_id of 'inp'.
*/
-uint8_t * hs_cell_introduce1_getarray_legacy_key_id(hs_cell_introduce1_t *inp);
-/** As hs_cell_introduce1_get_legacy_key_id, but take and return a
+uint8_t * trn_cell_introduce1_getarray_legacy_key_id(trn_cell_introduce1_t *inp);
+/** As trn_cell_introduce1_get_legacy_key_id, but take and return a
* const pointer
*/
-const uint8_t * hs_cell_introduce1_getconstarray_legacy_key_id(const hs_cell_introduce1_t *inp);
+const uint8_t * trn_cell_introduce1_getconstarray_legacy_key_id(const trn_cell_introduce1_t *inp);
/** Return the value of the auth_key_type field of the
- * hs_cell_introduce1_t in 'inp'
+ * trn_cell_introduce1_t in 'inp'
*/
-uint8_t hs_cell_introduce1_get_auth_key_type(const hs_cell_introduce1_t *inp);
+uint8_t trn_cell_introduce1_get_auth_key_type(const trn_cell_introduce1_t *inp);
/** Set the value of the auth_key_type field of the
- * hs_cell_introduce1_t in 'inp' to 'val'. Return 0 on success; return
- * -1 and set the error code on 'inp' on failure.
+ * trn_cell_introduce1_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_introduce1_set_auth_key_type(hs_cell_introduce1_t *inp, uint8_t val);
+int trn_cell_introduce1_set_auth_key_type(trn_cell_introduce1_t *inp, uint8_t val);
/** Return the value of the auth_key_len field of the
- * hs_cell_introduce1_t in 'inp'
+ * trn_cell_introduce1_t in 'inp'
*/
-uint16_t hs_cell_introduce1_get_auth_key_len(const hs_cell_introduce1_t *inp);
+uint16_t trn_cell_introduce1_get_auth_key_len(const trn_cell_introduce1_t *inp);
/** Set the value of the auth_key_len field of the
- * hs_cell_introduce1_t in 'inp' to 'val'. Return 0 on success; return
- * -1 and set the error code on 'inp' on failure.
+ * trn_cell_introduce1_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_introduce1_set_auth_key_len(hs_cell_introduce1_t *inp, uint16_t val);
+int trn_cell_introduce1_set_auth_key_len(trn_cell_introduce1_t *inp, uint16_t val);
/** Return the length of the dynamic array holding the auth_key field
- * of the hs_cell_introduce1_t in 'inp'.
+ * of the trn_cell_introduce1_t in 'inp'.
*/
-size_t hs_cell_introduce1_getlen_auth_key(const hs_cell_introduce1_t *inp);
+size_t trn_cell_introduce1_getlen_auth_key(const trn_cell_introduce1_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * auth_key of the hs_cell_introduce1_t in 'inp'.
+ * auth_key of the trn_cell_introduce1_t in 'inp'.
*/
-uint8_t hs_cell_introduce1_get_auth_key(hs_cell_introduce1_t *inp, size_t idx);
-/** As hs_cell_introduce1_get_auth_key, but take and return a const
+uint8_t trn_cell_introduce1_get_auth_key(trn_cell_introduce1_t *inp, size_t idx);
+/** As trn_cell_introduce1_get_auth_key, but take and return a const
* pointer
*/
-uint8_t hs_cell_introduce1_getconst_auth_key(const hs_cell_introduce1_t *inp, size_t idx);
+uint8_t trn_cell_introduce1_getconst_auth_key(const trn_cell_introduce1_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * auth_key of the hs_cell_introduce1_t in 'inp', so that it will hold
- * the value 'elt'.
+ * auth_key of the trn_cell_introduce1_t in 'inp', so that it will
+ * hold the value 'elt'.
*/
-int hs_cell_introduce1_set_auth_key(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce1_set_auth_key(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field auth_key of
- * the hs_cell_introduce1_t in 'inp'.
+ * the trn_cell_introduce1_t in 'inp'.
*/
-int hs_cell_introduce1_add_auth_key(hs_cell_introduce1_t *inp, uint8_t elt);
+int trn_cell_introduce1_add_auth_key(trn_cell_introduce1_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field auth_key of
* 'inp'.
*/
-uint8_t * hs_cell_introduce1_getarray_auth_key(hs_cell_introduce1_t *inp);
-/** As hs_cell_introduce1_get_auth_key, but take and return a const
+uint8_t * trn_cell_introduce1_getarray_auth_key(trn_cell_introduce1_t *inp);
+/** As trn_cell_introduce1_get_auth_key, but take and return a const
* pointer
*/
-const uint8_t * hs_cell_introduce1_getconstarray_auth_key(const hs_cell_introduce1_t *inp);
+const uint8_t * trn_cell_introduce1_getconstarray_auth_key(const trn_cell_introduce1_t *inp);
/** Change the length of the variable-length array field auth_key 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 hs_cell_introduce1_setlen_auth_key(hs_cell_introduce1_t *inp, size_t newlen);
+int trn_cell_introduce1_setlen_auth_key(trn_cell_introduce1_t *inp, size_t newlen);
/** Return the value of the extensions field of the
- * hs_cell_introduce1_t in 'inp'
+ * trn_cell_introduce1_t in 'inp'
*/
-struct cell_extension_st * hs_cell_introduce1_get_extensions(hs_cell_introduce1_t *inp);
-/** As hs_cell_introduce1_get_extensions, but take and return a const
+struct trn_cell_extension_st * trn_cell_introduce1_get_extensions(trn_cell_introduce1_t *inp);
+/** As trn_cell_introduce1_get_extensions, but take and return a const
* pointer
*/
-const struct cell_extension_st * hs_cell_introduce1_getconst_extensions(const hs_cell_introduce1_t *inp);
-/** Set the value of the extensions field of the hs_cell_introduce1_t
+const struct trn_cell_extension_st * trn_cell_introduce1_getconst_extensions(const trn_cell_introduce1_t *inp);
+/** Set the value of the extensions field of the trn_cell_introduce1_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 hs_cell_introduce1_set_extensions(hs_cell_introduce1_t *inp, struct cell_extension_st *val);
-/** As hs_cell_introduce1_set_extensions, but does not free the
+int trn_cell_introduce1_set_extensions(trn_cell_introduce1_t *inp, struct trn_cell_extension_st *val);
+/** As trn_cell_introduce1_set_extensions, but does not free the
* previous value.
*/
-int hs_cell_introduce1_set0_extensions(hs_cell_introduce1_t *inp, struct cell_extension_st *val);
+int trn_cell_introduce1_set0_extensions(trn_cell_introduce1_t *inp, struct trn_cell_extension_st *val);
/** Return the length of the dynamic array holding the encrypted field
- * of the hs_cell_introduce1_t in 'inp'.
+ * of the trn_cell_introduce1_t in 'inp'.
*/
-size_t hs_cell_introduce1_getlen_encrypted(const hs_cell_introduce1_t *inp);
+size_t trn_cell_introduce1_getlen_encrypted(const trn_cell_introduce1_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * encrypted of the hs_cell_introduce1_t in 'inp'.
+ * encrypted of the trn_cell_introduce1_t in 'inp'.
*/
-uint8_t hs_cell_introduce1_get_encrypted(hs_cell_introduce1_t *inp, size_t idx);
-/** As hs_cell_introduce1_get_encrypted, but take and return a const
+uint8_t trn_cell_introduce1_get_encrypted(trn_cell_introduce1_t *inp, size_t idx);
+/** As trn_cell_introduce1_get_encrypted, but take and return a const
* pointer
*/
-uint8_t hs_cell_introduce1_getconst_encrypted(const hs_cell_introduce1_t *inp, size_t idx);
+uint8_t trn_cell_introduce1_getconst_encrypted(const trn_cell_introduce1_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * encrypted of the hs_cell_introduce1_t in 'inp', so that it will
+ * encrypted of the trn_cell_introduce1_t in 'inp', so that it will
* hold the value 'elt'.
*/
-int hs_cell_introduce1_set_encrypted(hs_cell_introduce1_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce1_set_encrypted(trn_cell_introduce1_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field encrypted of
- * the hs_cell_introduce1_t in 'inp'.
+ * the trn_cell_introduce1_t in 'inp'.
*/
-int hs_cell_introduce1_add_encrypted(hs_cell_introduce1_t *inp, uint8_t elt);
+int trn_cell_introduce1_add_encrypted(trn_cell_introduce1_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field encrypted of
* 'inp'.
*/
-uint8_t * hs_cell_introduce1_getarray_encrypted(hs_cell_introduce1_t *inp);
-/** As hs_cell_introduce1_get_encrypted, but take and return a const
+uint8_t * trn_cell_introduce1_getarray_encrypted(trn_cell_introduce1_t *inp);
+/** As trn_cell_introduce1_get_encrypted, but take and return a const
* pointer
*/
-const uint8_t * hs_cell_introduce1_getconstarray_encrypted(const hs_cell_introduce1_t *inp);
+const uint8_t * trn_cell_introduce1_getconstarray_encrypted(const trn_cell_introduce1_t *inp);
/** Change the length of the variable-length array field encrypted 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 hs_cell_introduce1_setlen_encrypted(hs_cell_introduce1_t *inp, size_t newlen);
-/** Return a newly allocated hs_cell_introduce_ack with all elements
+int trn_cell_introduce1_setlen_encrypted(trn_cell_introduce1_t *inp, size_t newlen);
+/** Return a newly allocated trn_cell_introduce_ack with all elements
* set to zero.
*/
-hs_cell_introduce_ack_t *hs_cell_introduce_ack_new(void);
-/** Release all storage held by the hs_cell_introduce_ack in 'victim'.
- * (Do nothing if 'victim' is NULL.)
+trn_cell_introduce_ack_t *trn_cell_introduce_ack_new(void);
+/** Release all storage held by the trn_cell_introduce_ack in
+ * 'victim'. (Do nothing if 'victim' is NULL.)
*/
-void hs_cell_introduce_ack_free(hs_cell_introduce_ack_t *victim);
-/** Try to parse a hs_cell_introduce_ack from the buffer in 'input',
+void trn_cell_introduce_ack_free(trn_cell_introduce_ack_t *victim);
+/** Try to parse a trn_cell_introduce_ack 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 hs_cell_introduce_ack_t. On failure, return -2 if the
+ * allocated trn_cell_introduce_ack_t. On failure, return -2 if the
* input appears truncated, and -1 if the input is otherwise invalid.
*/
-ssize_t hs_cell_introduce_ack_parse(hs_cell_introduce_ack_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_introduce_ack_parse(trn_cell_introduce_ack_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * hs_cell_introduce_ack in 'obj'. On failure, return a negative
+ * trn_cell_introduce_ack 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 hs_cell_introduce_ack_encoded_len(const hs_cell_introduce_ack_t *obj);
-/** Try to encode the hs_cell_introduce_ack from 'input' into the
+ssize_t trn_cell_introduce_ack_encoded_len(const trn_cell_introduce_ack_t *obj);
+/** Try to encode the trn_cell_introduce_ack 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 hs_cell_introduce_ack_encode(uint8_t *output, size_t avail, const hs_cell_introduce_ack_t *input);
-/** Check whether the internal state of the hs_cell_introduce_ack in
+ssize_t trn_cell_introduce_ack_encode(uint8_t *output, size_t avail, const trn_cell_introduce_ack_t *input);
+/** Check whether the internal state of the trn_cell_introduce_ack in
* 'obj' is consistent. Return NULL if it is, and a short message if
* it is not.
*/
-const char *hs_cell_introduce_ack_check(const hs_cell_introduce_ack_t *obj);
+const char *trn_cell_introduce_ack_check(const trn_cell_introduce_ack_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int hs_cell_introduce_ack_clear_errors(hs_cell_introduce_ack_t *obj);
+int trn_cell_introduce_ack_clear_errors(trn_cell_introduce_ack_t *obj);
/** Return the value of the status field of the
- * hs_cell_introduce_ack_t in 'inp'
+ * trn_cell_introduce_ack_t in 'inp'
*/
-uint16_t hs_cell_introduce_ack_get_status(const hs_cell_introduce_ack_t *inp);
-/** Set the value of the status field of the hs_cell_introduce_ack_t
+uint16_t trn_cell_introduce_ack_get_status(const trn_cell_introduce_ack_t *inp);
+/** Set the value of the status field of the trn_cell_introduce_ack_t
* in 'inp' to 'val'. Return 0 on success; return -1 and set the error
* code on 'inp' on failure.
*/
-int hs_cell_introduce_ack_set_status(hs_cell_introduce_ack_t *inp, uint16_t val);
+int trn_cell_introduce_ack_set_status(trn_cell_introduce_ack_t *inp, uint16_t val);
/** Return the value of the extensions field of the
- * hs_cell_introduce_ack_t in 'inp'
+ * trn_cell_introduce_ack_t in 'inp'
*/
-struct cell_extension_st * hs_cell_introduce_ack_get_extensions(hs_cell_introduce_ack_t *inp);
-/** As hs_cell_introduce_ack_get_extensions, but take and return a
+struct trn_cell_extension_st * trn_cell_introduce_ack_get_extensions(trn_cell_introduce_ack_t *inp);
+/** As trn_cell_introduce_ack_get_extensions, but take and return a
* const pointer
*/
-const struct cell_extension_st * hs_cell_introduce_ack_getconst_extensions(const hs_cell_introduce_ack_t *inp);
+const struct trn_cell_extension_st * trn_cell_introduce_ack_getconst_extensions(const trn_cell_introduce_ack_t *inp);
/** Set the value of the extensions field of the
- * hs_cell_introduce_ack_t in 'inp' to 'val'. Free the old value if
+ * trn_cell_introduce_ack_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 hs_cell_introduce_ack_set_extensions(hs_cell_introduce_ack_t *inp, struct cell_extension_st *val);
-/** As hs_cell_introduce_ack_set_extensions, but does not free the
+int trn_cell_introduce_ack_set_extensions(trn_cell_introduce_ack_t *inp, struct trn_cell_extension_st *val);
+/** As trn_cell_introduce_ack_set_extensions, but does not free the
* previous value.
*/
-int hs_cell_introduce_ack_set0_extensions(hs_cell_introduce_ack_t *inp, struct cell_extension_st *val);
-/** Return a newly allocated hs_cell_introduce_encrypted with all
+int trn_cell_introduce_ack_set0_extensions(trn_cell_introduce_ack_t *inp, struct trn_cell_extension_st *val);
+/** Return a newly allocated trn_cell_introduce_encrypted with all
* elements set to zero.
*/
-hs_cell_introduce_encrypted_t *hs_cell_introduce_encrypted_new(void);
-/** Release all storage held by the hs_cell_introduce_encrypted in
+trn_cell_introduce_encrypted_t *trn_cell_introduce_encrypted_new(void);
+/** Release all storage held by the trn_cell_introduce_encrypted in
* 'victim'. (Do nothing if 'victim' is NULL.)
*/
-void hs_cell_introduce_encrypted_free(hs_cell_introduce_encrypted_t *victim);
-/** Try to parse a hs_cell_introduce_encrypted from the buffer in
+void trn_cell_introduce_encrypted_free(trn_cell_introduce_encrypted_t *victim);
+/** Try to parse a trn_cell_introduce_encrypted 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 hs_cell_introduce_encrypted_t. On failure, return
+ * newly allocated trn_cell_introduce_encrypted_t. On failure, return
* -2 if the input appears truncated, and -1 if the input is otherwise
* invalid.
*/
-ssize_t hs_cell_introduce_encrypted_parse(hs_cell_introduce_encrypted_t **output, const uint8_t *input, const size_t len_in);
+ssize_t trn_cell_introduce_encrypted_parse(trn_cell_introduce_encrypted_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
- * hs_cell_introduce_encrypted 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.
+ * trn_cell_introduce_encrypted 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 hs_cell_introduce_encrypted_encoded_len(const hs_cell_introduce_encrypted_t *obj);
-/** Try to encode the hs_cell_introduce_encrypted from 'input' into
+ssize_t trn_cell_introduce_encrypted_encoded_len(const trn_cell_introduce_encrypted_t *obj);
+/** Try to encode the trn_cell_introduce_encrypted 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 hs_cell_introduce_encrypted_encode(uint8_t *output, size_t avail, const hs_cell_introduce_encrypted_t *input);
+ssize_t trn_cell_introduce_encrypted_encode(uint8_t *output, size_t avail, const trn_cell_introduce_encrypted_t *input);
/** Check whether the internal state of the
- * hs_cell_introduce_encrypted in 'obj' is consistent. Return NULL if
+ * trn_cell_introduce_encrypted in 'obj' is consistent. Return NULL if
* it is, and a short message if it is not.
*/
-const char *hs_cell_introduce_encrypted_check(const hs_cell_introduce_encrypted_t *obj);
+const char *trn_cell_introduce_encrypted_check(const trn_cell_introduce_encrypted_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
* functions. Return true iff errors were cleared.
*/
-int hs_cell_introduce_encrypted_clear_errors(hs_cell_introduce_encrypted_t *obj);
+int trn_cell_introduce_encrypted_clear_errors(trn_cell_introduce_encrypted_t *obj);
/** Return the (constant) length of the array holding the rend_cookie
- * field of the hs_cell_introduce_encrypted_t in 'inp'.
+ * field of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-size_t hs_cell_introduce_encrypted_getlen_rend_cookie(const hs_cell_introduce_encrypted_t *inp);
+size_t trn_cell_introduce_encrypted_getlen_rend_cookie(const trn_cell_introduce_encrypted_t *inp);
/** Return the element at position 'idx' of the fixed array field
- * rend_cookie of the hs_cell_introduce_encrypted_t in 'inp'.
+ * rend_cookie of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-uint8_t hs_cell_introduce_encrypted_get_rend_cookie(hs_cell_introduce_encrypted_t *inp, size_t idx);
-/** As hs_cell_introduce_encrypted_get_rend_cookie, but take and
+uint8_t trn_cell_introduce_encrypted_get_rend_cookie(trn_cell_introduce_encrypted_t *inp, size_t idx);
+/** As trn_cell_introduce_encrypted_get_rend_cookie, but take and
* return a const pointer
*/
-uint8_t hs_cell_introduce_encrypted_getconst_rend_cookie(const hs_cell_introduce_encrypted_t *inp, size_t idx);
+uint8_t trn_cell_introduce_encrypted_getconst_rend_cookie(const trn_cell_introduce_encrypted_t *inp, size_t idx);
/** Change the element at position 'idx' of the fixed array field
- * rend_cookie of the hs_cell_introduce_encrypted_t in 'inp', so that
+ * rend_cookie of the trn_cell_introduce_encrypted_t in 'inp', so that
* it will hold the value 'elt'.
*/
-int hs_cell_introduce_encrypted_set_rend_cookie(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce_encrypted_set_rend_cookie(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
/** Return a pointer to the TRUNNEL_REND_COOKIE_LEN-element array
* field rend_cookie of 'inp'.
*/
-uint8_t * hs_cell_introduce_encrypted_getarray_rend_cookie(hs_cell_introduce_encrypted_t *inp);
-/** As hs_cell_introduce_encrypted_get_rend_cookie, but take and
+uint8_t * trn_cell_introduce_encrypted_getarray_rend_cookie(trn_cell_introduce_encrypted_t *inp);
+/** As trn_cell_introduce_encrypted_get_rend_cookie, but take and
* return a const pointer
*/
-const uint8_t * hs_cell_introduce_encrypted_getconstarray_rend_cookie(const hs_cell_introduce_encrypted_t *inp);
+const uint8_t * trn_cell_introduce_encrypted_getconstarray_rend_cookie(const trn_cell_introduce_encrypted_t *inp);
/** Return the value of the extensions field of the
- * hs_cell_introduce_encrypted_t in 'inp'
+ * trn_cell_introduce_encrypted_t in 'inp'
*/
-struct cell_extension_st * hs_cell_introduce_encrypted_get_extensions(hs_cell_introduce_encrypted_t *inp);
-/** As hs_cell_introduce_encrypted_get_extensions, but take and return
- * a const pointer
+struct trn_cell_extension_st * trn_cell_introduce_encrypted_get_extensions(trn_cell_introduce_encrypted_t *inp);
+/** As trn_cell_introduce_encrypted_get_extensions, but take and
+ * return a const pointer
*/
-const struct cell_extension_st * hs_cell_introduce_encrypted_getconst_extensions(const hs_cell_introduce_encrypted_t *inp);
+const struct trn_cell_extension_st * trn_cell_introduce_encrypted_getconst_extensions(const trn_cell_introduce_encrypted_t *inp);
/** Set the value of the extensions field of the
- * hs_cell_introduce_encrypted_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.
+ * trn_cell_introduce_encrypted_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 hs_cell_introduce_encrypted_set_extensions(hs_cell_introduce_encrypted_t *inp, struct cell_extension_st *val);
-/** As hs_cell_introduce_encrypted_set_extensions, but does not free
+int trn_cell_introduce_encrypted_set_extensions(trn_cell_introduce_encrypted_t *inp, struct trn_cell_extension_st *val);
+/** As trn_cell_introduce_encrypted_set_extensions, but does not free
* the previous value.
*/
-int hs_cell_introduce_encrypted_set0_extensions(hs_cell_introduce_encrypted_t *inp, struct cell_extension_st *val);
+int trn_cell_introduce_encrypted_set0_extensions(trn_cell_introduce_encrypted_t *inp, struct trn_cell_extension_st *val);
/** Return the value of the onion_key_type field of the
- * hs_cell_introduce_encrypted_t in 'inp'
+ * trn_cell_introduce_encrypted_t in 'inp'
*/
-uint8_t hs_cell_introduce_encrypted_get_onion_key_type(const hs_cell_introduce_encrypted_t *inp);
+uint8_t trn_cell_introduce_encrypted_get_onion_key_type(const trn_cell_introduce_encrypted_t *inp);
/** Set the value of the onion_key_type field of the
- * hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
+ * trn_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_introduce_encrypted_set_onion_key_type(hs_cell_introduce_encrypted_t *inp, uint8_t val);
+int trn_cell_introduce_encrypted_set_onion_key_type(trn_cell_introduce_encrypted_t *inp, uint8_t val);
/** Return the value of the onion_key_len field of the
- * hs_cell_introduce_encrypted_t in 'inp'
+ * trn_cell_introduce_encrypted_t in 'inp'
*/
-uint16_t hs_cell_introduce_encrypted_get_onion_key_len(const hs_cell_introduce_encrypted_t *inp);
+uint16_t trn_cell_introduce_encrypted_get_onion_key_len(const trn_cell_introduce_encrypted_t *inp);
/** Set the value of the onion_key_len field of the
- * hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
+ * trn_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_introduce_encrypted_set_onion_key_len(hs_cell_introduce_encrypted_t *inp, uint16_t val);
+int trn_cell_introduce_encrypted_set_onion_key_len(trn_cell_introduce_encrypted_t *inp, uint16_t val);
/** Return the length of the dynamic array holding the onion_key field
- * of the hs_cell_introduce_encrypted_t in 'inp'.
+ * of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-size_t hs_cell_introduce_encrypted_getlen_onion_key(const hs_cell_introduce_encrypted_t *inp);
+size_t trn_cell_introduce_encrypted_getlen_onion_key(const trn_cell_introduce_encrypted_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * onion_key of the hs_cell_introduce_encrypted_t in 'inp'.
+ * onion_key of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-uint8_t hs_cell_introduce_encrypted_get_onion_key(hs_cell_introduce_encrypted_t *inp, size_t idx);
-/** As hs_cell_introduce_encrypted_get_onion_key, but take and return
+uint8_t trn_cell_introduce_encrypted_get_onion_key(trn_cell_introduce_encrypted_t *inp, size_t idx);
+/** As trn_cell_introduce_encrypted_get_onion_key, but take and return
* a const pointer
*/
-uint8_t hs_cell_introduce_encrypted_getconst_onion_key(const hs_cell_introduce_encrypted_t *inp, size_t idx);
+uint8_t trn_cell_introduce_encrypted_getconst_onion_key(const trn_cell_introduce_encrypted_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * onion_key of the hs_cell_introduce_encrypted_t in 'inp', so that it
- * will hold the value 'elt'.
+ * onion_key of the trn_cell_introduce_encrypted_t in 'inp', so that
+ * it will hold the value 'elt'.
*/
-int hs_cell_introduce_encrypted_set_onion_key(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce_encrypted_set_onion_key(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field onion_key of
- * the hs_cell_introduce_encrypted_t in 'inp'.
+ * the trn_cell_introduce_encrypted_t in 'inp'.
*/
-int hs_cell_introduce_encrypted_add_onion_key(hs_cell_introduce_encrypted_t *inp, uint8_t elt);
+int trn_cell_introduce_encrypted_add_onion_key(trn_cell_introduce_encrypted_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field onion_key of
* 'inp'.
*/
-uint8_t * hs_cell_introduce_encrypted_getarray_onion_key(hs_cell_introduce_encrypted_t *inp);
-/** As hs_cell_introduce_encrypted_get_onion_key, but take and return
+uint8_t * trn_cell_introduce_encrypted_getarray_onion_key(trn_cell_introduce_encrypted_t *inp);
+/** As trn_cell_introduce_encrypted_get_onion_key, but take and return
* a const pointer
*/
-const uint8_t * hs_cell_introduce_encrypted_getconstarray_onion_key(const hs_cell_introduce_encrypted_t *inp);
+const uint8_t * trn_cell_introduce_encrypted_getconstarray_onion_key(const trn_cell_introduce_encrypted_t *inp);
/** Change the length of the variable-length array field onion_key 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 hs_cell_introduce_encrypted_setlen_onion_key(hs_cell_introduce_encrypted_t *inp, size_t newlen);
+int trn_cell_introduce_encrypted_setlen_onion_key(trn_cell_introduce_encrypted_t *inp, size_t newlen);
/** Return the value of the nspec field of the
- * hs_cell_introduce_encrypted_t in 'inp'
+ * trn_cell_introduce_encrypted_t in 'inp'
*/
-uint8_t hs_cell_introduce_encrypted_get_nspec(const hs_cell_introduce_encrypted_t *inp);
+uint8_t trn_cell_introduce_encrypted_get_nspec(const trn_cell_introduce_encrypted_t *inp);
/** Set the value of the nspec field of the
- * hs_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
+ * trn_cell_introduce_encrypted_t in 'inp' to 'val'. Return 0 on
* success; return -1 and set the error code on 'inp' on failure.
*/
-int hs_cell_introduce_encrypted_set_nspec(hs_cell_introduce_encrypted_t *inp, uint8_t val);
+int trn_cell_introduce_encrypted_set_nspec(trn_cell_introduce_encrypted_t *inp, uint8_t val);
/** Return the length of the dynamic array holding the nspecs field of
- * the hs_cell_introduce_encrypted_t in 'inp'.
+ * the trn_cell_introduce_encrypted_t in 'inp'.
*/
-size_t hs_cell_introduce_encrypted_getlen_nspecs(const hs_cell_introduce_encrypted_t *inp);
+size_t trn_cell_introduce_encrypted_getlen_nspecs(const trn_cell_introduce_encrypted_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * nspecs of the hs_cell_introduce_encrypted_t in 'inp'.
+ * nspecs of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-struct link_specifier_st * hs_cell_introduce_encrypted_get_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx);
-/** As hs_cell_introduce_encrypted_get_nspecs, but take and return a
+struct link_specifier_st * trn_cell_introduce_encrypted_get_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx);
+/** As trn_cell_introduce_encrypted_get_nspecs, but take and return a
* const pointer
*/
- const struct link_specifier_st * hs_cell_introduce_encrypted_getconst_nspecs(const hs_cell_introduce_encrypted_t *inp, size_t idx);
+ const struct link_specifier_st * trn_cell_introduce_encrypted_getconst_nspecs(const trn_cell_introduce_encrypted_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * nspecs of the hs_cell_introduce_encrypted_t in 'inp', so that it
+ * nspecs of the trn_cell_introduce_encrypted_t in 'inp', so that it
* will hold the value 'elt'. Free the previous value, if any.
*/
-int hs_cell_introduce_encrypted_set_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt);
-/** As hs_cell_introduce_encrypted_set_nspecs, but does not free the
+int trn_cell_introduce_encrypted_set_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt);
+/** As trn_cell_introduce_encrypted_set_nspecs, but does not free the
* previous value.
*/
-int hs_cell_introduce_encrypted_set0_nspecs(hs_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt);
+int trn_cell_introduce_encrypted_set0_nspecs(trn_cell_introduce_encrypted_t *inp, size_t idx, struct link_specifier_st * elt);
/** Append a new element 'elt' to the dynamic array field nspecs of
- * the hs_cell_introduce_encrypted_t in 'inp'.
+ * the trn_cell_introduce_encrypted_t in 'inp'.
*/
-int hs_cell_introduce_encrypted_add_nspecs(hs_cell_introduce_encrypted_t *inp, struct link_specifier_st * elt);
+int trn_cell_introduce_encrypted_add_nspecs(trn_cell_introduce_encrypted_t *inp, struct link_specifier_st * elt);
/** Return a pointer to the variable-length array field nspecs of
* 'inp'.
*/
-struct link_specifier_st * * hs_cell_introduce_encrypted_getarray_nspecs(hs_cell_introduce_encrypted_t *inp);
-/** As hs_cell_introduce_encrypted_get_nspecs, but take and return a
+struct link_specifier_st * * trn_cell_introduce_encrypted_getarray_nspecs(trn_cell_introduce_encrypted_t *inp);
+/** As trn_cell_introduce_encrypted_get_nspecs, but take and return a
* const pointer
*/
-const struct link_specifier_st * const * hs_cell_introduce_encrypted_getconstarray_nspecs(const hs_cell_introduce_encrypted_t *inp);
+const struct link_specifier_st * const * trn_cell_introduce_encrypted_getconstarray_nspecs(const trn_cell_introduce_encrypted_t *inp);
/** Change the length of the variable-length array field nspecs of
* 'inp' to 'newlen'.Fill extra elements with NULL; free removed
* elements. Return 0 on success; return -1 and set the error code on
* 'inp' on failure.
*/
-int hs_cell_introduce_encrypted_setlen_nspecs(hs_cell_introduce_encrypted_t *inp, size_t newlen);
+int trn_cell_introduce_encrypted_setlen_nspecs(trn_cell_introduce_encrypted_t *inp, size_t newlen);
/** Return the length of the dynamic array holding the pad field of
- * the hs_cell_introduce_encrypted_t in 'inp'.
+ * the trn_cell_introduce_encrypted_t in 'inp'.
*/
-size_t hs_cell_introduce_encrypted_getlen_pad(const hs_cell_introduce_encrypted_t *inp);
+size_t trn_cell_introduce_encrypted_getlen_pad(const trn_cell_introduce_encrypted_t *inp);
/** Return the element at position 'idx' of the dynamic array field
- * pad of the hs_cell_introduce_encrypted_t in 'inp'.
+ * pad of the trn_cell_introduce_encrypted_t in 'inp'.
*/
-uint8_t hs_cell_introduce_encrypted_get_pad(hs_cell_introduce_encrypted_t *inp, size_t idx);
-/** As hs_cell_introduce_encrypted_get_pad, but take and return a
+uint8_t trn_cell_introduce_encrypted_get_pad(trn_cell_introduce_encrypted_t *inp, size_t idx);
+/** As trn_cell_introduce_encrypted_get_pad, but take and return a
* const pointer
*/
-uint8_t hs_cell_introduce_encrypted_getconst_pad(const hs_cell_introduce_encrypted_t *inp, size_t idx);
+uint8_t trn_cell_introduce_encrypted_getconst_pad(const trn_cell_introduce_encrypted_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
- * pad of the hs_cell_introduce_encrypted_t in 'inp', so that it will
+ * pad of the trn_cell_introduce_encrypted_t in 'inp', so that it will
* hold the value 'elt'.
*/
-int hs_cell_introduce_encrypted_set_pad(hs_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
+int trn_cell_introduce_encrypted_set_pad(trn_cell_introduce_encrypted_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field pad of the
- * hs_cell_introduce_encrypted_t in 'inp'.
+ * trn_cell_introduce_encrypted_t in 'inp'.
*/
-int hs_cell_introduce_encrypted_add_pad(hs_cell_introduce_encrypted_t *inp, uint8_t elt);
+int trn_cell_introduce_encrypted_add_pad(trn_cell_introduce_encrypted_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field pad of 'inp'.
*/
-uint8_t * hs_cell_introduce_encrypted_getarray_pad(hs_cell_introduce_encrypted_t *inp);
-/** As hs_cell_introduce_encrypted_get_pad, but take and return a
+uint8_t * trn_cell_introduce_encrypted_getarray_pad(trn_cell_introduce_encrypted_t *inp);
+/** As trn_cell_introduce_encrypted_get_pad, but take and return a
* const pointer
*/
-const uint8_t * hs_cell_introduce_encrypted_getconstarray_pad(const hs_cell_introduce_encrypted_t *inp);
+const uint8_t * trn_cell_introduce_encrypted_getconstarray_pad(const trn_cell_introduce_encrypted_t *inp);
/** Change the length of the variable-length array field pad 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 hs_cell_introduce_encrypted_setlen_pad(hs_cell_introduce_encrypted_t *inp, size_t newlen);
+int trn_cell_introduce_encrypted_setlen_pad(trn_cell_introduce_encrypted_t *inp, size_t newlen);
#endif
diff --git a/src/trunnel/hs/cell_introduce1.trunnel b/src/trunnel/hs/cell_introduce1.trunnel
index f7776879cd..7577c1526f 100644
--- a/src/trunnel/hs/cell_introduce1.trunnel
+++ b/src/trunnel/hs/cell_introduce1.trunnel
@@ -5,7 +5,7 @@
*/
/* From cell_common.trunnel. */
-extern struct cell_extension;
+extern struct trn_cell_extension;
/* From ed25519_cert.trunnel. */
extern struct link_specifier;
@@ -13,7 +13,7 @@ const TRUNNEL_SHA1_LEN = 20;
const TRUNNEL_REND_COOKIE_LEN = 20;
/* INTRODUCE1 payload. See details in section 3.2.1. */
-struct hs_cell_introduce1 {
+struct trn_cell_introduce1 {
/* Always zeroed. MUST be checked explicitely by the caller. */
u8 legacy_key_id[TRUNNEL_SHA1_LEN];
@@ -23,28 +23,28 @@ struct hs_cell_introduce1 {
u8 auth_key[auth_key_len];
/* Extension(s). Reserved fields. */
- struct cell_extension extensions;
+ struct trn_cell_extension extensions;
/* Variable length, up to the end of cell. */
u8 encrypted[];
};
/* INTRODUCE_ACK payload. See details in section 3.2.2. */
-struct hs_cell_introduce_ack {
+struct trn_cell_introduce_ack {
/* Status of introduction. */
u16 status IN [0x0000, 0x0001, 0x0002];
/* Extension(s). Reserved fields. */
- struct cell_extension extensions;
+ struct trn_cell_extension extensions;
};
/* Encrypted section of the INTRODUCE1/INTRODUCE2 cell. */
-struct hs_cell_introduce_encrypted {
+struct trn_cell_introduce_encrypted {
/* Rendezvous cookie. */
u8 rend_cookie[TRUNNEL_REND_COOKIE_LEN];
/* Extension(s). Reserved fields. */
- struct cell_extension extensions;
+ struct trn_cell_extension extensions;
/* Onion key material. */
u8 onion_key_type IN [0x01];
diff --git a/src/trunnel/include.am b/src/trunnel/include.am
index 9b26d58615..de6cf4781f 100644
--- a/src/trunnel/include.am
+++ b/src/trunnel/include.am
@@ -11,7 +11,8 @@ AM_CPPFLAGS += -I$(srcdir)/src/ext/trunnel -I$(srcdir)/src/trunnel
TRUNNELINPUTS = \
src/trunnel/ed25519_cert.trunnel \
src/trunnel/link_handshake.trunnel \
- src/trunnel/pwbox.trunnel
+ src/trunnel/pwbox.trunnel \
+ src/trunnel/channelpadding_negotiation.trunnel
TRUNNELSOURCES = \
src/ext/trunnel/trunnel.c \
@@ -20,7 +21,8 @@ TRUNNELSOURCES = \
src/trunnel/pwbox.c \
src/trunnel/hs/cell_common.c \
src/trunnel/hs/cell_establish_intro.c \
- src/trunnel/hs/cell_introduce1.c
+ src/trunnel/hs/cell_introduce1.c \
+ src/trunnel/channelpadding_negotiation.c
TRUNNELHEADERS = \
src/ext/trunnel/trunnel.h \
@@ -31,7 +33,8 @@ TRUNNELHEADERS = \
src/trunnel/pwbox.h \
src/trunnel/hs/cell_common.h \
src/trunnel/hs/cell_establish_intro.h \
- src/trunnel/hs/cell_introduce1.h
+ src/trunnel/hs/cell_introduce1.h \
+ src/trunnel/channelpadding_negotiation.h
src_trunnel_libor_trunnel_a_SOURCES = $(TRUNNELSOURCES)
src_trunnel_libor_trunnel_a_CPPFLAGS = -DTRUNNEL_LOCAL_H $(AM_CPPFLAGS)
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 0b09a5ca50..271b018c68 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -218,7 +218,7 @@
#define USING_TWOS_COMPLEMENT
/* Version number of package */
-#define VERSION "0.3.0.13-dev"
+#define VERSION "0.3.1.10-dev"