aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorteor <teor2345@gmail.com>2015-01-10 16:34:10 +1100
committerteor <teor2345@gmail.com>2015-01-10 16:34:10 +1100
commitc200ab46b85cece87a4bcdbaacd41bc6539d1671 (patch)
treef17e2c59dd076a73cce9787ecad3f8eeec88f705
parentfd7e9e9030cee9d8e863cea3f3f90226ae66fdfe (diff)
parent6a9cae2e1dafb756b30fda541e8b5d68cfd45f89 (diff)
downloadtor-c200ab46b85cece87a4bcdbaacd41bc6539d1671.tar.gz
tor-c200ab46b85cece87a4bcdbaacd41bc6539d1671.zip
Merge branch 'bug14001-clang-warning' into bug13111-empty-key-files-fn-empty
Conflicts: src/or/router.c Choose newer comment. Merge changes to comment and function invocation.
-rw-r--r--README3
-rw-r--r--changes/bug1312610
-rw-r--r--changes/bug132147
-rw-r--r--changes/bug132965
-rw-r--r--changes/bug133155
-rw-r--r--changes/bug1339912
-rw-r--r--changes/bug134475
-rw-r--r--changes/bug136444
-rw-r--r--changes/bug136786
-rw-r--r--changes/bug136986
-rw-r--r--changes/bug137014
-rw-r--r--changes/bug137074
-rw-r--r--changes/bug137133
-rw-r--r--changes/bug138403
-rw-r--r--changes/bug139416
-rw-r--r--changes/bug139425
-rw-r--r--changes/bug14001-clang-warning6
-rw-r--r--changes/bug74844
-rw-r--r--changes/bug78035
-rw-r--r--changes/bug98126
-rw-r--r--changes/doc133815
-rw-r--r--changes/feature132124
-rw-r--r--changes/feature95034
-rw-r--r--changes/geoip-november20143
-rw-r--r--changes/geoip6-november20143
-rw-r--r--changes/global_scheduler12
-rw-r--r--changes/no_global_ccc3
-rw-r--r--changes/ticket-112914
-rw-r--r--changes/ticket131724
-rw-r--r--changes/tickets64566
-rw-r--r--doc/tor.1.txt64
-rw-r--r--scripts/coccinelle/calloc.cocci15
-rwxr-xr-xscripts/maint/checkSpace.pl3
-rw-r--r--src/common/address.c8
-rw-r--r--src/common/compat.c2
-rw-r--r--src/common/compat.h9
-rw-r--r--src/common/compat_libevent.c6
-rw-r--r--src/common/compat_libevent.h2
-rw-r--r--src/common/crypto.c2
-rw-r--r--src/common/log.c2
-rw-r--r--src/common/torlog.h4
-rw-r--r--src/common/util.c150
-rw-r--r--src/common/util.h7
-rw-r--r--src/config/geoip20036
-rw-r--r--src/config/geoip65649
-rw-r--r--src/ext/tinytest_demo.c16
-rw-r--r--src/or/Makefile.nmake1
-rw-r--r--src/or/buffers.c18
-rw-r--r--src/or/buffers.h2
-rw-r--r--src/or/channel.c477
-rw-r--r--src/or/channel.h87
-rw-r--r--src/or/channeltls.c144
-rw-r--r--src/or/channeltls.h2
-rw-r--r--src/or/circuitbuild.c10
-rw-r--r--src/or/circuitlist.c46
-rw-r--r--src/or/circuitlist.h3
-rw-r--r--src/or/circuitmux.c56
-rw-r--r--src/or/circuitmux.h12
-rw-r--r--src/or/circuitmux_ewma.c58
-rw-r--r--src/or/circuitstats.c6
-rw-r--r--src/or/circuituse.c12
-rw-r--r--src/or/config.c348
-rw-r--r--src/or/config.h5
-rw-r--r--src/or/connection.c2
-rw-r--r--src/or/connection_edge.c15
-rw-r--r--src/or/connection_or.c67
-rw-r--r--src/or/connection_or.h8
-rw-r--r--src/or/control.c38
-rw-r--r--src/or/control.h6
-rw-r--r--src/or/cpuworker.c2
-rw-r--r--src/or/directory.c22
-rw-r--r--src/or/dirserv.c18
-rw-r--r--src/or/dirvote.c30
-rw-r--r--src/or/entrynodes.c4
-rw-r--r--src/or/entrynodes.h2
-rw-r--r--src/or/geoip.c4
-rw-r--r--src/or/include.am2
-rw-r--r--src/or/main.c51
-rw-r--r--src/or/main.h4
-rw-r--r--src/or/microdesc.c36
-rw-r--r--src/or/microdesc.h2
-rw-r--r--src/or/networkstatus.c2
-rw-r--r--src/or/nodelist.c2
-rw-r--r--src/or/or.h57
-rw-r--r--src/or/relay.c15
-rw-r--r--src/or/relay.h3
-rw-r--r--src/or/rendclient.c25
-rw-r--r--src/or/rendcommon.c19
-rw-r--r--src/or/rendcommon.h1
-rw-r--r--src/or/rendservice.c244
-rw-r--r--src/or/router.c24
-rw-r--r--src/or/router.h2
-rw-r--r--src/or/routerlist.c288
-rw-r--r--src/or/routerlist.h4
-rw-r--r--src/or/scheduler.c709
-rw-r--r--src/or/scheduler.h50
-rw-r--r--src/or/transports.c12
-rw-r--r--src/or/transports.h10
-rw-r--r--src/test/Makefile.nmake11
-rw-r--r--src/test/fakechans.h25
-rw-r--r--src/test/include.am6
-rw-r--r--src/test/test.c171
-rw-r--r--src/test/test.h2
-rw-r--r--src/test/test_addr.c469
-rw-r--r--src/test/test_buffers.c338
-rw-r--r--src/test/test_cell_formats.c775
-rw-r--r--src/test/test_cell_queue.c58
-rw-r--r--src/test/test_channel.c1669
-rw-r--r--src/test/test_channeltls.c332
-rw-r--r--src/test/test_checkdir.c140
-rw-r--r--src/test/test_circuitlist.c128
-rw-r--r--src/test/test_circuitmux.c15
-rw-r--r--src/test/test_config.c315
-rw-r--r--src/test/test_containers.c391
-rw-r--r--src/test/test_controller_events.c52
-rw-r--r--src/test/test_crypto.c541
-rw-r--r--src/test/test_dir.c710
-rw-r--r--src/test/test_entrynodes.c108
-rw-r--r--src/test/test_extorport.c187
-rw-r--r--src/test/test_hs.c18
-rw-r--r--src/test/test_introduce.c2
-rw-r--r--src/test/test_logging.c30
-rw-r--r--src/test/test_microdesc.c162
-rw-r--r--src/test/test_nodelist.c4
-rw-r--r--src/test/test_oom.c80
-rw-r--r--src/test/test_options.c6
-rw-r--r--src/test/test_policy.c40
-rw-r--r--src/test/test_pt.c72
-rw-r--r--src/test/test_relay.c134
-rw-r--r--src/test/test_relaycell.c54
-rw-r--r--src/test/test_replay.c52
-rw-r--r--src/test/test_routerkeys.c16
-rw-r--r--src/test/test_routerset.c276
-rw-r--r--src/test/test_scheduler.c763
-rw-r--r--src/test/test_socks.c320
-rw-r--r--src/test/test_status.c245
-rw-r--r--src/test/test_util.c2253
137 files changed, 28930 insertions, 11239 deletions
diff --git a/README b/README
index e878476aa6..342376faf4 100644
--- a/README
+++ b/README
@@ -6,6 +6,9 @@ configure it properly.
To build Tor from source:
./configure && make && make install
+To build Tor from a just-cloned git repository:
+ sh autogen.sh && ./configure && make && make install
+
Home page:
https://www.torproject.org/
diff --git a/changes/bug13126 b/changes/bug13126
new file mode 100644
index 0000000000..45d22ee3f3
--- /dev/null
+++ b/changes/bug13126
@@ -0,0 +1,10 @@
+ o Code simplification and refactoring:
+
+ - Remove our old, non-weighted bandwidth-based node selection code.
+ Previously, we used it as a fallback when we couldn't perform
+ weighted bandwidth-based node selection. But that would only
+ happen in the cases where we had no consensus, or when we had a
+ consensus generated by buggy or ancient directory authorities. In
+ either case, it's better to use the more modern, better maintained
+ algorithm, with reasonable defaults for the weights. Closes
+ ticket 13126. \ No newline at end of file
diff --git a/changes/bug13214 b/changes/bug13214
new file mode 100644
index 0000000000..5b9758b388
--- /dev/null
+++ b/changes/bug13214
@@ -0,0 +1,7 @@
+ o Minor bugfixes (hidden services):
+ - When fetching hidden service descriptors, check not only for
+ whether we got the hidden service we had in mind, but also
+ whether we got the particular descriptors we wanted. This
+ prevents a class of inefficient but annoying DoS attacks by
+ hidden service directories. Fixes bug 13214; bugfix on
+ 0.2.1.6-alpha. Reported by "special".
diff --git a/changes/bug13296 b/changes/bug13296
new file mode 100644
index 0000000000..d6fe038c30
--- /dev/null
+++ b/changes/bug13296
@@ -0,0 +1,5 @@
+ o Directory authority changes:
+ - Remove turtles as a directory authority.
+ - Add longclaw as a new (v3) directory authority. This implements
+ ticket 13296. This keeps the directory authority count at 9.
+
diff --git a/changes/bug13315 b/changes/bug13315
new file mode 100644
index 0000000000..c2ae5ff1f8
--- /dev/null
+++ b/changes/bug13315
@@ -0,0 +1,5 @@
+ o Minor features:
+ - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
+ is enabled, reject requests with IP addresses as hostnames. Resolves
+ ticket 13315.
+
diff --git a/changes/bug13399 b/changes/bug13399
new file mode 100644
index 0000000000..fcaf58a53c
--- /dev/null
+++ b/changes/bug13399
@@ -0,0 +1,12 @@
+ o Minor bugfixes:
+ - Use a full 256 bits of the SHA256 digest of a microdescriptor when
+ computing which microdescriptors to download. This keeps us from
+ erroneous download behavior if two microdescriptor digests ever have
+ the same first 160 bits. Fixes part of bug 13399; bugfix on
+ 0.2.3.1-alpha.
+
+ - Reset a router's status if its microdescriptor digest changes,
+ even if the first 160 bits remain the same. Fixes part of bug
+ 13399; bugfix on 0.2.3.1-alpha.
+
+
diff --git a/changes/bug13447 b/changes/bug13447
new file mode 100644
index 0000000000..90027e8f3a
--- /dev/null
+++ b/changes/bug13447
@@ -0,0 +1,5 @@
+ o Minor feature:
+ - When re-enabling the network, don't try to build introduction circuits
+ until we have successfully built a circuit. This makes hidden services
+ come up faster when the network is re-enabled. Patch from
+ "akwizgran". Closes ticket 13447.
diff --git a/changes/bug13644 b/changes/bug13644
new file mode 100644
index 0000000000..959ce65fc9
--- /dev/null
+++ b/changes/bug13644
@@ -0,0 +1,4 @@
+ o Code simplifications and refactoring:
+ - Document all members of was_router_added_t enum and rename
+ ROUTER_WAS_NOT_NEW to ROUTER_IS_ALREADY_KNOWN to make it less
+ confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
diff --git a/changes/bug13678 b/changes/bug13678
new file mode 100644
index 0000000000..d71b88a003
--- /dev/null
+++ b/changes/bug13678
@@ -0,0 +1,6 @@
+
+ o Testing:
+ - In the unit tests, use 'chgrp' to change the group of the unit test
+ temporary directory to the current user, so that the sticky bit doesn't
+ interfere with tests that check directory groups. Closes 13678.
+
diff --git a/changes/bug13698 b/changes/bug13698
new file mode 100644
index 0000000000..9af22345b8
--- /dev/null
+++ b/changes/bug13698
@@ -0,0 +1,6 @@
+ o Major bugfixes:
+ - When closing an introduction circuit that was opened in
+ parallel, don't mark the introduction point as
+ unreachable. Previously, the first successful connection to an
+ introduction point would make the other uintroduction points get
+ marked as having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
diff --git a/changes/bug13701 b/changes/bug13701
new file mode 100644
index 0000000000..23a08afa47
--- /dev/null
+++ b/changes/bug13701
@@ -0,0 +1,4 @@
+ o Minor bugfixes (logging):
+ - Log the circuit identifier correctly in
+ connection_ap_handshake_attach_circuit(). Fixes bug 13701;
+ bugfix on 0.0.6.
diff --git a/changes/bug13707 b/changes/bug13707
new file mode 100644
index 0000000000..349495c9c7
--- /dev/null
+++ b/changes/bug13707
@@ -0,0 +1,4 @@
+ o Documentation:
+ - Fix typo in PredictedPortsRelevanceTime option description in
+ manpage. Resolves issue 13707.
+
diff --git a/changes/bug13713 b/changes/bug13713
new file mode 100644
index 0000000000..412b406c53
--- /dev/null
+++ b/changes/bug13713
@@ -0,0 +1,3 @@
+ o Documentation:
+ - Document the bridge-authority-only 'networkstatus-bridges'
+ file. Closes ticket 13713; patch from "tom".
diff --git a/changes/bug13840 b/changes/bug13840
new file mode 100644
index 0000000000..a7204e4a9c
--- /dev/null
+++ b/changes/bug13840
@@ -0,0 +1,3 @@
+ o Code simplifications and refactoring:
+ - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
+ constant instead of hardcoded value. Fixes issue 13840.
diff --git a/changes/bug13941 b/changes/bug13941
new file mode 100644
index 0000000000..6309378510
--- /dev/null
+++ b/changes/bug13941
@@ -0,0 +1,6 @@
+ o Minor bugfixes (hidden services):
+ - When adding a new hidden-service (for example, via SETCONF) Tor
+ no longer logs a congratulations for running a relay. Fixes bug
+ 13941; bugfix on 0.2.6.1-alpha.
+
+
diff --git a/changes/bug13942 b/changes/bug13942
new file mode 100644
index 0000000000..f9e4504a48
--- /dev/null
+++ b/changes/bug13942
@@ -0,0 +1,5 @@
+ o Minor bugfixes (hidden services):
+ - Pre-check directory permissions for new hidden-services to avoid
+ at least one case of "Bug: Acting on config options left us in a
+ broken state. Dying." Fixes bug 13942.
+
diff --git a/changes/bug14001-clang-warning b/changes/bug14001-clang-warning
new file mode 100644
index 0000000000..b932af6ab7
--- /dev/null
+++ b/changes/bug14001-clang-warning
@@ -0,0 +1,6 @@
+ o Minor bugfixes:
+ - The address of an array in the middle of a structure will
+ always be non-NULL. clang recognises this and complains.
+ Disable the tautologous and redundant check to silence
+ this warning.
+ Fixes bug 14001.
diff --git a/changes/bug7484 b/changes/bug7484
new file mode 100644
index 0000000000..647992af05
--- /dev/null
+++ b/changes/bug7484
@@ -0,0 +1,4 @@
+ o Minor bugfixes:
+ - Stop allowing invalid address patterns containing both a wildcard
+ address and a bit prefix length. This affects all our
+ address-range parsing code. Fixes bug 7484; bugfix on 0.0.2pre14.
diff --git a/changes/bug7803 b/changes/bug7803
new file mode 100644
index 0000000000..7a2bba70db
--- /dev/null
+++ b/changes/bug7803
@@ -0,0 +1,5 @@
+ o Removed features:
+ - Tor clients no longer support connecting to hidden services running on
+ Tor 0.2.2.x and earlier; the Support022HiddenServices option has been
+ removed. (There shouldn't be any hidden services running these
+ versions on the network.)
diff --git a/changes/bug9812 b/changes/bug9812
new file mode 100644
index 0000000000..8791589faf
--- /dev/null
+++ b/changes/bug9812
@@ -0,0 +1,6 @@
+ o Minor bugfixes (logging):
+ - Downgrade warnings about RSA signature failures to info log
+ level. Emit a warning when extra info document is found
+ incompatible with a corresponding router descriptor. Fixes bug
+ 9812; bugfix on 0.0.6rc3.
+
diff --git a/changes/doc13381 b/changes/doc13381
new file mode 100644
index 0000000000..acc4bb8a0f
--- /dev/null
+++ b/changes/doc13381
@@ -0,0 +1,5 @@
+ o Documentation:
+ - Stop suggesting that users specify nodes by nickname: it isn't a
+ good idea. Also, properly cross-reference how to specify nodes
+ in all parts of the manual for options that take a list of
+ nodes. Closes ticket 13381.
diff --git a/changes/feature13212 b/changes/feature13212
new file mode 100644
index 0000000000..6f1bce7d8a
--- /dev/null
+++ b/changes/feature13212
@@ -0,0 +1,4 @@
+ o Minor features (hidden services):
+ - Inform Tor controller about nature of failure to retrieve
+ hidden service descriptor by sending reason string with HS_DESC
+ FAILED controller event. Implements feature 13212.
diff --git a/changes/feature9503 b/changes/feature9503
new file mode 100644
index 0000000000..58ae67f184
--- /dev/null
+++ b/changes/feature9503
@@ -0,0 +1,4 @@
+ o Minor features (controller):
+ - Add a "SIGNAL HEARTBEAT" Tor controller command that provokes
+ writing unscheduled heartbeat message to the log. Implements
+ feature 9503.
diff --git a/changes/geoip-november2014 b/changes/geoip-november2014
new file mode 100644
index 0000000000..52cbeb3e41
--- /dev/null
+++ b/changes/geoip-november2014
@@ -0,0 +1,3 @@
+ o Minor features:
+ - Update geoip to the November 15 2014 Maxmind GeoLite2 Country database.
+
diff --git a/changes/geoip6-november2014 b/changes/geoip6-november2014
new file mode 100644
index 0000000000..e91fcc0d3b
--- /dev/null
+++ b/changes/geoip6-november2014
@@ -0,0 +1,3 @@
+ o Minor features:
+ - Update geoip6 to the November 15 2014 Maxmind GeoLite2 Country database.
+
diff --git a/changes/global_scheduler b/changes/global_scheduler
new file mode 100644
index 0000000000..df3b464f91
--- /dev/null
+++ b/changes/global_scheduler
@@ -0,0 +1,12 @@
+ o Major features (relay, infrastructure):
+ - Implement a new inter-cmux comparison API, a global high/low watermark
+ mechanism and a global scheduler loop for transmission prioritization
+ across all channels as well as among circuits on one channel. This
+ schedule is currently tuned to (tolerantly) avoid making changes
+ in the current network performance, but it should form the basis
+ major circuit performance increases. Code by Andrea; implements
+ ticket 9262.
+
+ o Testing:
+ - New tests for many parts of channel, relay, and circuit mux
+ functionality. Code by Andrea; part of 9262.
diff --git a/changes/no_global_ccc b/changes/no_global_ccc
new file mode 100644
index 0000000000..614055a845
--- /dev/null
+++ b/changes/no_global_ccc
@@ -0,0 +1,3 @@
+ o Code Simplification and Refactoring:
+ - Stop using can_complete_circuits as a global variable; access it with
+ a function instead.
diff --git a/changes/ticket-11291 b/changes/ticket-11291
new file mode 100644
index 0000000000..4c19f3cd0e
--- /dev/null
+++ b/changes/ticket-11291
@@ -0,0 +1,4 @@
+ o Minor features (hidden services):
+ - New HiddenServiceDirGroupReadable option to cause hidden service
+ directories and hostname files to be created group-readable.
+ Patch from "anon", David Stainton, and "meejah".
diff --git a/changes/ticket13172 b/changes/ticket13172
new file mode 100644
index 0000000000..a1d47fd9cf
--- /dev/null
+++ b/changes/ticket13172
@@ -0,0 +1,4 @@
+ o Code simplification and refactoring:
+ - Avoid using operators directly as macro arguments: this lets us
+ apply coccinelle transformations to our codebase more
+ directly. Closes ticket 13172. \ No newline at end of file
diff --git a/changes/tickets6456 b/changes/tickets6456
new file mode 100644
index 0000000000..68ce2c7dd9
--- /dev/null
+++ b/changes/tickets6456
@@ -0,0 +1,6 @@
+ o Code simplification and refactoring:
+ - Combine the functions used to parse ClientTransportPlugin and
+ ServerTransportPlugin into a single function. Closes ticket 6456.
+
+ o Testing:
+ - New tests for parse_transport_line(). Part of ticket 6456.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index f625c45161..e876829cf6 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -550,7 +550,7 @@ GENERAL OPTIONS
\'info'. (Default: 0)
[[PredictedPortsRelevanceTime]] **PredictedPortsRelevanceTime** __NUM__::
- Set how long, after the client has mad an anonymized connection to a
+ 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)
@@ -711,10 +711,11 @@ The following options are useful only for clients (that is, if
unless ORPort, ExtORPort, or DirPort are configured.) (Default: 0)
[[ExcludeNodes]] **ExcludeNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
- patterns of nodes to avoid when building a circuit.
+ A list of identity fingerprints, country codes, and address
+ patterns of nodes to avoid when building a circuit. Country codes must
+ be wrapped in braces; fingerprints may be preceded by a dollar sign.
(Example:
- ExcludeNodes SlowServer, ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, \{cc}, 255.254.0.0/8) +
+ ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, \{cc}, 255.254.0.0/8) +
+
By default, this option is treated as a preference that Tor is allowed
to override in order to keep working.
@@ -734,11 +735,13 @@ The following options are useful only for clients (that is, if
[[ExcludeExitNodes]] **ExcludeExitNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
+ A list of identity fingerprints, country codes, and address
patterns of nodes to never use when picking an exit node---that is, a
node that delivers traffic for you outside the Tor network. Note that any
node listed in ExcludeNodes is automatically considered to be part of this
- list too. See also the caveats on the "ExitNodes" option below.
+ list too. See
+ the **ExcludeNodes** option for more information on how to specify
+ nodes. See also the caveats on the "ExitNodes" option below.
[[GeoIPExcludeUnknown]] **GeoIPExcludeUnknown** **0**|**1**|**auto**::
If this option is set to 'auto', then whenever any country code is set in
@@ -749,9 +752,10 @@ The following options are useful only for clients (that is, if
configured or can't be found. (Default: auto)
[[ExitNodes]] **ExitNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
+ A list of identity fingerprints, country codes, and address
patterns of nodes to use as exit node---that is, a
- node that delivers traffic for you outside the Tor network. +
+ node that delivers traffic for you outside the Tor network. See
+ the **ExcludeNodes** option for more information on how to specify nodes. +
+
Note that if you list too few nodes here, or if you exclude too many exit
nodes with ExcludeExitNodes, you can degrade functionality. For example,
@@ -772,7 +776,7 @@ The following options are useful only for clients (that is, if
this option.
[[EntryNodes]] **EntryNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, and country codes of nodes
+ A list of identity fingerprints and country codes of nodes
to use for the first hop in your normal circuits.
Normal circuits include all
circuits except for direct connections to directory servers. The Bridge
@@ -780,7 +784,8 @@ The following options are useful only for clients (that is, if
UseBridges is 1, the Bridges are used as your entry nodes. +
+
The ExcludeNodes option overrides this option: any node listed in both
- EntryNodes and ExcludeNodes is treated as excluded.
+ EntryNodes and ExcludeNodes is treated as excluded. See
+ the **ExcludeNodes** option for more information on how to specify nodes.
[[StrictNodes]] **StrictNodes** **0**|**1**::
If StrictNodes is set to 1, Tor will treat the ExcludeNodes option as a
@@ -929,12 +934,14 @@ The following options are useful only for clients (that is, if
but it has not yet been completely constructed. (Default: 32)
[[NodeFamily]] **NodeFamily** __node__,__node__,__...__::
- The Tor servers, defined by their identity fingerprints or nicknames,
+ The Tor servers, defined by their identity fingerprints,
constitute a "family" of similar or co-administered servers, so never use
any two of them in the same circuit. Defining a NodeFamily is only needed
when a server doesn't list the family itself (with MyFamily). This option
- can be used multiple times. In addition to nodes, you can also list
- IP address and ranges and country codes in {curly braces}.
+ can be used multiple times; each instance defines a separate family. In
+ addition to nodes, you can also list IP address and ranges and country
+ codes in {curly braces}. See the **ExcludeNodes** option for more
+ information on how to specify nodes.
[[EnforceDistinctSubnets]] **EnforceDistinctSubnets** **0**|**1**::
If 1, Tor will not put two servers whose IP addresses are "too close" on
@@ -1419,16 +1426,6 @@ The following options are useful only for clients (that is, if
Tor will use a default value chosen by the directory
authorities. (Default: -1.)
-[[Support022HiddenServices]] **Support022HiddenServices** **0**|**1**|**auto**::
- Tor hidden services running versions before 0.2.3.x required clients to
- send timestamps, which can potentially be used to distinguish clients
- whose view of the current time is skewed. If this option is set to 0, we
- do not send this timestamp, and hidden services on obsolete Tor versions
- will not work. If this option is set to 1, we send the timestamp. If
- this option is "auto", we take a recommendation from the latest consensus
- document. (Default: auto)
-
-
SERVER OPTIONS
--------------
@@ -1538,7 +1535,7 @@ is non-zero):
[[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 or nicknames. When two servers both declare
+ 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
@@ -2035,6 +2032,7 @@ The following options are used to configure a hidden service.
recent HiddenServiceDir. By default, this option maps the virtual port to
the same port on 127.0.0.1 over TCP. You may override the target port,
address, or both by specifying a target of addr, port, or addr:port.
+ (You can specify an IPv6 target as [addr]:port.)
You may also have multiple lines with the same VIRTPORT: when a user
connects to that VIRTPORT, one of the TARGETs from those lines will be
chosen at random.
@@ -2066,6 +2064,12 @@ The following options are used to configure a hidden service.
service descriptors to the directory servers. This information is also
uploaded whenever it changes. (Default: 1 hour)
+[[HiddenServiceDirGroupReadable]] **HiddenServiceDirGroupReadable** **0**|**1**::
+ If this option is set to 1, allow the filesystem group to read the
+ hidden service directory and hostname file. If the option is set to 0,
+ only owner is able to read the hidden service directory. (Default: 0)
+ Has no effect on Windows.
+
TESTING NETWORK OPTIONS
-----------------------
@@ -2198,16 +2202,17 @@ The following options are used for running a testing Tor network.
Changing this requires that **TestingTorNetwork** is set. (Default: 8)
[[TestingDirAuthVoteExit]] **TestingDirAuthVoteExit** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and
+ A list of identity fingerprints, country codes, and
address patterns of nodes to vote Exit for regardless of their
uptime, bandwidth, or exit policy. See the **ExcludeNodes**
option for more information on how to specify nodes.
+
In order for this option to have any effect, **TestingTorNetwork**
- has to be set.
+ has to be set. See the **ExcludeNodes** option for more
+ information on how to specify nodes.
[[TestingDirAuthVoteGuard]] **TestingDirAuthVoteGuard** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and
+ A list of identity fingerprints and country codes and
address patterns of nodes to vote Guard for regardless of their
uptime and bandwidth. See the **ExcludeNodes** option for more
information on how to specify nodes.
@@ -2395,6 +2400,11 @@ __DataDirectory__**/stats/conn-stats**::
Only used by servers. This file is used to collect approximate connection
history (number of active connections over time).
+__DataDirectory__**/networkstatus-bridges**::
+ Only used by authoritative bridge directories. Contains information
+ about bridges that have self-reported themselves to the bridge
+ authority.
+
__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/scripts/coccinelle/calloc.cocci b/scripts/coccinelle/calloc.cocci
index 8a295eb4fd..fbda88e538 100644
--- a/scripts/coccinelle/calloc.cocci
+++ b/scripts/coccinelle/calloc.cocci
@@ -1,16 +1,19 @@
// Use calloc or realloc as appropriate instead of multiply-and-alloc
@malloc_to_calloc@
-expression a,b;
+identifier f =~ "(tor_malloc|tor_malloc_zero)";
+expression a;
+constant b;
@@
-- tor_malloc(a * b)
+- f(a * b)
+ tor_calloc(a, b)
-@malloc_zero_to_calloc@
-expression a, b;
+@calloc_arg_order@
+expression a;
+type t;
@@
-- tor_malloc_zero(a * b)
-+ tor_calloc(a, b)
+- tor_calloc(sizeof(t), a)
++ tor_calloc(a, sizeof(t))
@realloc_to_reallocarray@
expression a, b;
diff --git a/scripts/maint/checkSpace.pl b/scripts/maint/checkSpace.pl
index b529103367..c785d89567 100755
--- a/scripts/maint/checkSpace.pl
+++ b/scripts/maint/checkSpace.pl
@@ -128,7 +128,8 @@ for $fn (@ARGV) {
if ($1 ne "if" and $1 ne "while" and $1 ne "for" and
$1 ne "switch" and $1 ne "return" and $1 ne "int" and
$1 ne "elsif" and $1 ne "WINAPI" and $2 ne "WINAPI" and
- $1 ne "void" and $1 ne "__attribute__" and $1 ne "op") {
+ $1 ne "void" and $1 ne "__attribute__" and $1 ne "op" and
+ $1 ne "size_t" and $1 ne "double") {
print " fn ():$fn:$.\n";
}
}
diff --git a/src/common/address.c b/src/common/address.c
index de5d3a6ff7..0b475fc9fd 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -723,6 +723,11 @@ tor_addr_parse_mask_ports(const char *s,
/* XXXX_IP6 is this really what we want? */
bits = 96 + bits%32; /* map v4-mapped masks onto 96-128 bits */
}
+ if (any_flag) {
+ log_warn(LD_GENERAL,
+ "Found bit prefix with wildcard address; rejecting");
+ goto err;
+ }
} else { /* pick an appropriate mask, as none was given */
if (any_flag)
bits = 0; /* This is okay whether it's V6 or V4 (FIX V4-mapped V6!) */
@@ -1114,7 +1119,8 @@ fmt_addr32(uint32_t addr)
int
tor_addr_parse(tor_addr_t *addr, const char *src)
{
- char *tmp = NULL; /* Holds substring if we got a dotted quad. */
+ /* Holds substring of IPv6 address after removing square brackets */
+ char *tmp = NULL;
int result;
struct in_addr in_tmp;
struct in6_addr in6_tmp;
diff --git a/src/common/compat.c b/src/common/compat.c
index b28790f0e4..404f4f189f 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -1698,7 +1698,7 @@ log_credential_status(void)
/* log supplementary groups */
sup_gids_size = 64;
- sup_gids = tor_calloc(sizeof(gid_t), 64);
+ sup_gids = tor_calloc(64, sizeof(gid_t));
while ((ngids = getgroups(sup_gids_size, sup_gids)) < 0 &&
errno == EINVAL &&
sup_gids_size < NGROUPS_MAX) {
diff --git a/src/common/compat.h b/src/common/compat.h
index f2eef5b6e7..7001361af3 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -203,6 +203,15 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
#define STMT_END } while (0)
#endif
+/* Some tools (like coccinelle) don't like to see operators as macro
+ * arguments. */
+#define OP_LT <
+#define OP_GT >
+#define OP_GE >=
+#define OP_LE <=
+#define OP_EQ ==
+#define OP_NE !=
+
/* ===== String compatibility */
#ifdef _WIN32
/* Windows names string functions differently from most other platforms. */
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index 33672f07d8..85ed58456e 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -283,8 +283,8 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
}
/** Return the current Libevent event base that we're set up to use. */
-struct event_base *
-tor_libevent_get_base(void)
+MOCK_IMPL(struct event_base *,
+tor_libevent_get_base, (void))
{
return the_event_base;
}
@@ -717,7 +717,7 @@ tor_gettimeofday_cached_monotonic(struct timeval *tv)
struct timeval last_tv = { 0, 0 };
tor_gettimeofday_cached(tv);
- if (timercmp(tv, &last_tv, <)) {
+ if (timercmp(tv, &last_tv, OP_LT)) {
memcpy(tv, &last_tv, sizeof(struct timeval));
} else {
memcpy(&last_tv, tv, sizeof(struct timeval));
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index c5c78b822d..57d0c4da1b 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -72,7 +72,7 @@ typedef struct tor_libevent_cfg {
} tor_libevent_cfg;
void tor_libevent_initialize(tor_libevent_cfg *cfg);
-struct event_base *tor_libevent_get_base(void);
+MOCK_DECL(struct event_base *, tor_libevent_get_base, (void));
const char *tor_libevent_get_method(void);
void tor_check_libevent_version(const char *m, int server,
const char **badness_out);
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 90a16fab1a..7138ba003e 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1012,7 +1012,7 @@ crypto_pk_public_checksig(crypto_pk_t *env, char *to,
env->key, RSA_PKCS1_PADDING);
if (r<0) {
- crypto_log_errors(LOG_WARN, "checking RSA signature");
+ crypto_log_errors(LOG_INFO, "checking RSA signature");
return -1;
}
return r;
diff --git a/src/common/log.c b/src/common/log.c
index ad0da7da6b..0a21ffbd44 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -451,7 +451,7 @@ MOCK_IMPL(STATIC void,
logv,(int severity, log_domain_mask_t domain, const char *funcname,
const char *suffix, const char *format, va_list ap))
{
- char buf[10024];
+ char buf[10240];
size_t msg_len = 0;
int formatted = 0;
logfile_t *lf;
diff --git a/src/common/torlog.h b/src/common/torlog.h
index fa7266c199..483a97935f 100644
--- a/src/common/torlog.h
+++ b/src/common/torlog.h
@@ -97,8 +97,10 @@
#define LD_HEARTBEAT (1u<<20)
/** Abstract channel_t code */
#define LD_CHANNEL (1u<<21)
+/** Scheduler */
+#define LD_SCHED (1u<<22)
/** Number of logging domains in the code. */
-#define N_LOGGING_DOMAINS 22
+#define N_LOGGING_DOMAINS 23
/** 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/util.c b/src/common/util.c
index 1c35338eef..2f01a83974 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -195,33 +195,40 @@ tor_malloc_zero_(size_t size DMALLOC_PARAMS)
return result;
}
+/* The square root of SIZE_MAX + 1. If a is less than this, and b is less
+ * than this, then a*b is less than SIZE_MAX. (For example, if size_t is
+ * 32 bits, then SIZE_MAX is 0xffffffff and this value is 0x10000. If a and
+ * b are less than this, then their product is at most (65535*65535) ==
+ * 0xfffe0001. */
+#define SQRT_SIZE_MAX_P1 (((size_t)1) << (sizeof(size_t)*4))
+
+/** Return non-zero if and only if the product of the arguments is exact. */
+static INLINE int
+size_mul_check(const size_t x, const size_t y)
+{
+ /* This first check is equivalent to
+ (x < SQRT_SIZE_MAX_P1 && y < SQRT_SIZE_MAX_P1)
+
+ Rationale: if either one of x or y is >= SQRT_SIZE_MAX_P1, then it
+ will have some bit set in its most significant half.
+ */
+ return ((x|y) < SQRT_SIZE_MAX_P1 ||
+ y == 0 ||
+ x <= SIZE_MAX / y);
+}
+
/** Allocate a chunk of <b>nmemb</b>*<b>size</b> bytes of memory, fill
* the memory with zero bytes, and return a pointer to the result.
* Log and terminate the process on error. (Same as
* calloc(<b>nmemb</b>,<b>size</b>), but never returns NULL.)
- *
- * XXXX This implementation probably asserts in cases where it could
- * work, because it only tries dividing SIZE_MAX by size (according to
- * the calloc(3) man page, the size of an element of the nmemb-element
- * array to be allocated), not by nmemb (which could in theory be
- * smaller than size). Don't do that then.
+ * The second argument (<b>size</b>) should preferably be non-zero
+ * and a compile-time constant.
*/
void *
tor_calloc_(size_t nmemb, size_t size DMALLOC_PARAMS)
{
- /* You may ask yourself, "wouldn't it be smart to use calloc instead of
- * malloc+memset? Perhaps libc's calloc knows some nifty optimization trick
- * we don't!" Indeed it does, but its optimizations are only a big win when
- * we're allocating something very big (it knows if it just got the memory
- * from the OS in a pre-zeroed state). We don't want to use tor_malloc_zero
- * for big stuff, so we don't bother with calloc. */
- void *result;
- size_t max_nmemb = (size == 0) ? SIZE_MAX : SIZE_MAX/size;
-
- tor_assert(nmemb < max_nmemb);
-
- result = tor_malloc_zero_((nmemb * size) DMALLOC_FN_ARGS);
- return result;
+ tor_assert(size_mul_check(nmemb, size));
+ return tor_malloc_zero_((nmemb * size) DMALLOC_FN_ARGS);
}
/** Change the size of the memory block pointed to by <b>ptr</b> to <b>size</b>
@@ -264,7 +271,7 @@ tor_reallocarray_(void *ptr, size_t sz1, size_t sz2 DMALLOC_PARAMS)
{
/* XXXX we can make this return 0, but we would need to check all the
* reallocarray users. */
- tor_assert(sz2 == 0 || sz1 < SIZE_T_CEILING / sz2);
+ tor_assert(size_mul_check(sz1, sz2));
return tor_realloc(ptr, (sz1 * sz2) DMALLOC_FN_ARGS);
}
@@ -957,6 +964,68 @@ string_is_key_value(int severity, const char *string)
return 1;
}
+/** Return true if <b>string</b> represents a valid IPv4 adddress in
+ * 'a.b.c.d' form.
+ */
+int
+string_is_valid_ipv4_address(const char *string)
+{
+ struct in_addr addr;
+
+ return (tor_inet_pton(AF_INET,string,&addr) == 1);
+}
+
+/** Return true if <b>string</b> represents a valid IPv6 address in
+ * a form that inet_pton() can parse.
+ */
+int
+string_is_valid_ipv6_address(const char *string)
+{
+ struct in6_addr addr;
+
+ return (tor_inet_pton(AF_INET6,string,&addr) == 1);
+}
+
+/** Return true iff <b>string</b> matches a pattern of DNS names
+ * that we allow Tor clients to connect to.
+ */
+int
+string_is_valid_hostname(const char *string)
+{
+ int result = 1;
+ smartlist_t *components;
+
+ components = smartlist_new();
+
+ smartlist_split_string(components,string,".",0,0);
+
+ SMARTLIST_FOREACH_BEGIN(components, char *, c) {
+ if (c[0] == '-') {
+ result = 0;
+ break;
+ }
+
+ do {
+ if ((*c >= 'a' && *c <= 'z') ||
+ (*c >= 'A' && *c <= 'Z') ||
+ (*c >= '0' && *c <= '9') ||
+ (*c == '-'))
+ c++;
+ else
+ result = 0;
+ } while (result && *c);
+
+ } SMARTLIST_FOREACH_END(c);
+
+ SMARTLIST_FOREACH_BEGIN(components, char *, c) {
+ tor_free(c);
+ } SMARTLIST_FOREACH_END(c);
+
+ smartlist_free(components);
+
+ return result;
+}
+
/** Return true iff the DIGEST256_LEN bytes in digest are all zero. */
int
tor_digest256_is_zero(const char *digest)
@@ -1942,8 +2011,12 @@ file_status(const char *fname)
* <b>check</b>&CPD_CHECK, and we think we can create it, return 0. Else
* return -1. If CPD_GROUP_OK is set, then it's okay if the directory
* is group-readable, but in all cases we create the directory mode 0700.
- * If CPD_CHECK_MODE_ONLY is set, then we don't alter the directory permissions
- * if they are too permissive: we just return -1.
+ * If CPD_GROUP_READ is set, existing directory behaves as CPD_GROUP_OK and
+ * if the directory is created it will use mode 0750 with group read
+ * permission. Group read privileges also assume execute permission
+ * as norm for directories. If CPD_CHECK_MODE_ONLY is set, then we don't
+ * alter the directory permissions if they are too permissive:
+ * we just return -1.
* When effective_user is not NULL, check permissions against the given user
* and its primary group.
*/
@@ -1955,7 +2028,7 @@ check_private_dir(const char *dirname, cpd_check_t check,
struct stat st;
char *f;
#ifndef _WIN32
- int mask;
+ unsigned unwanted_bits = 0;
const struct passwd *pw = NULL;
uid_t running_uid;
gid_t running_gid;
@@ -1980,7 +2053,11 @@ check_private_dir(const char *dirname, cpd_check_t check,
#if defined (_WIN32)
r = mkdir(dirname);
#else
- r = mkdir(dirname, 0700);
+ if (check & CPD_GROUP_READ) {
+ r = mkdir(dirname, 0750);
+ } else {
+ r = mkdir(dirname, 0700);
+ }
#endif
if (r) {
log_warn(LD_FS, "Error creating directory %s: %s", dirname,
@@ -2033,7 +2110,8 @@ check_private_dir(const char *dirname, cpd_check_t check,
tor_free(process_ownername);
return -1;
}
- if ((check & CPD_GROUP_OK) && st.st_gid != running_gid) {
+ if ( (check & (CPD_GROUP_OK|CPD_GROUP_READ))
+ && (st.st_gid != running_gid) ) {
struct group *gr;
char *process_groupname = NULL;
gr = getgrgid(running_gid);
@@ -2048,12 +2126,12 @@ check_private_dir(const char *dirname, cpd_check_t check,
tor_free(process_groupname);
return -1;
}
- if (check & CPD_GROUP_OK) {
- mask = 0027;
+ if (check & (CPD_GROUP_OK|CPD_GROUP_READ)) {
+ unwanted_bits = 0027;
} else {
- mask = 0077;
+ unwanted_bits = 0077;
}
- if (st.st_mode & mask) {
+ if ((st.st_mode & unwanted_bits) != 0) {
unsigned new_mode;
if (check & CPD_CHECK_MODE_ONLY) {
log_warn(LD_FS, "Permissions on directory %s are too permissive.",
@@ -2063,10 +2141,13 @@ check_private_dir(const char *dirname, cpd_check_t check,
log_warn(LD_FS, "Fixing permissions on directory %s", dirname);
new_mode = st.st_mode;
new_mode |= 0700; /* Owner should have rwx */
- new_mode &= ~mask; /* Clear the other bits that we didn't want set...*/
+ if (check & CPD_GROUP_READ) {
+ new_mode |= 0050; /* Group should have rx */
+ }
+ new_mode &= ~unwanted_bits; /* Clear the bits that we didn't want set...*/
if (chmod(dirname, new_mode)) {
log_warn(LD_FS, "Could not chmod directory %s: %s", dirname,
- strerror(errno));
+ strerror(errno));
return -1;
} else {
return 0;
@@ -3474,8 +3555,9 @@ format_win_cmdline_argument(const char *arg)
smartlist_add(arg_chars, (void*)&backslash);
/* Allocate space for argument, quotes (if needed), and terminator */
- formatted_arg = tor_calloc(sizeof(char),
- (smartlist_len(arg_chars) + (need_quotes ? 2 : 0) + 1));
+ const size_t formatted_arg_len = smartlist_len(arg_chars) +
+ (need_quotes ? 2 : 0) + 1;
+ formatted_arg = tor_malloc_zero(formatted_arg_len);
/* Add leading quote */
i=0;
@@ -5113,7 +5195,7 @@ tor_check_port_forwarding(const char *filename,
for each smartlist element (one for "-p" and one for the
ports), and one for the final NULL. */
args_n = 1 + 2*smartlist_len(ports_to_forward) + 1;
- argv = tor_calloc(sizeof(char *), args_n);
+ argv = tor_calloc(args_n, sizeof(char *));
argv[argv_index++] = filename;
SMARTLIST_FOREACH_BEGIN(ports_to_forward, const char *, port) {
diff --git a/src/common/util.h b/src/common/util.h
index c5471ff9f2..d45dd06741 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -227,6 +227,9 @@ const char *find_str_at_start_of_line(const char *haystack,
const char *needle);
int string_is_C_identifier(const char *string);
int string_is_key_value(int severity, const char *string);
+int string_is_valid_hostname(const char *string);
+int string_is_valid_ipv4_address(const char *string);
+int string_is_valid_ipv6_address(const char *string);
int tor_mem_is_zero(const char *mem, size_t len);
int tor_digest_is_zero(const char *digest);
@@ -344,9 +347,11 @@ typedef unsigned int cpd_check_t;
#define CPD_CREATE 1
#define CPD_CHECK 2
#define CPD_GROUP_OK 4
-#define CPD_CHECK_MODE_ONLY 8
+#define CPD_GROUP_READ 8
+#define CPD_CHECK_MODE_ONLY 16
int check_private_dir(const char *dirname, cpd_check_t check,
const char *effective_user);
+
#define OPEN_FLAGS_REPLACE (O_WRONLY|O_CREAT|O_TRUNC)
#define OPEN_FLAGS_APPEND (O_WRONLY|O_CREAT|O_APPEND)
#define OPEN_FLAGS_DONT_REPLACE (O_CREAT|O_EXCL|O_APPEND|O_WRONLY)
diff --git a/src/config/geoip b/src/config/geoip
index 28cb59ecb7..6fc1a4a753 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on August 7 2014 Maxmind GeoLite2 Country
+# Last updated based on November 15 2014 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
@@ -16,7 +16,7 @@
16859136,16875519,JP
16875520,16908287,TH
16908288,16909055,CN
-16909056,16909311,AU
+16909056,16909311,US
16909312,16941055,CN
16941056,16973823,TH
16973824,17039359,CN
@@ -71,7 +71,7 @@
29949952,30015487,KR
30015488,30408703,CN
30408704,33554431,KR
-33554432,33554432,DE
+33554432,33554432,RU
33554433,34603007,FR
34604544,34605055,DE
34612224,34612735,IL
@@ -131,9 +131,7 @@
36700160,36962303,AE
36962304,37224447,IL
37486592,37748735,RU
-37748736,38258687,SE
-38258688,38258943,DK
-38258944,38273023,SE
+37748736,38273023,SE
38273024,38797311,KZ
38797312,39059455,PT
39059456,39321599,GR
@@ -166,9 +164,9 @@
57083941,57083941,BE
57083942,68305407,US
68305408,68305919,MX
-68305920,69094399,US
-69094400,69094655,AU
-69094656,71020543,US
+68305920,68973055,US
+68973056,68973311,CA
+68973312,71020543,US
71020544,71020799,CA
71020800,71571339,US
71571340,71571340,DE
@@ -207,7 +205,9 @@
83961856,83963903,CY
83963904,83965951,RU
83965952,83967999,CZ
-83968000,83976191,DE
+83968000,83972863,DE
+83972864,83973119,GB
+83973120,83976191,DE
83976192,83978239,CH
83978240,83980287,IQ
83980288,83982335,CH
@@ -223,9 +223,7 @@
84049920,84082687,RO
84082688,84148223,RU
84148224,84410367,DE
-84410368,84418559,RU
-84418560,84420607,GB
-84420608,84434943,RU
+84410368,84434943,RU
84434944,84443135,IT
84443136,84451327,LB
84451328,84457471,RU
@@ -237,101 +235,8 @@
84545536,84549631,GB
84549632,84551679,GE
84551680,84557823,DE
-84557824,84557824,NL
-84557825,84557825,US
-84557826,84558063,NL
-84558064,84558071,US
-84558072,84558879,NL
-84558880,84558887,US
-84558888,84560635,NL
-84560636,84560639,US
-84560640,84561063,NL
-84561064,84561071,US
-84561072,84561215,NL
-84561216,84561247,US
-84561248,84561351,NL
-84561352,84561359,MY
-84561360,84561639,NL
-84561640,84561647,ES
-84561648,84561655,AF
-84561656,84561727,NL
-84561728,84561791,US
-84561792,84562383,NL
-84562384,84562391,US
-84562392,84562511,NL
-84562512,84562527,US
-84562528,84563647,NL
-84563648,84563655,US
-84563656,84563691,NL
-84563692,84563695,GB
-84563696,84563703,NL
-84563704,84563711,US
-84563712,84564411,NL
-84564412,84564415,US
-84564416,84564498,NL
-84564499,84564499,GB
-84564500,84564863,NL
-84564864,84564871,TR
-84564872,84565247,NL
-84565248,84565311,US
-84565312,84565655,NL
-84565656,84565663,US
-84565664,84566303,NL
-84566304,84566319,US
-84566320,84566383,NL
-84566384,84566415,US
-84566416,84566420,NL
-84566421,84566421,US
-84566422,84566495,NL
-84566496,84566527,US
-84566528,84566567,NL
-84566568,84566583,US
-84566584,84566591,NL
-84566592,84566687,US
-84566688,84566719,NL
-84566720,84566743,US
-84566744,84567039,NL
-84567040,84567055,US
-84567056,84567071,NL
-84567072,84567103,US
-84567104,84567119,NL
-84567120,84567135,US
-84567136,84567199,NL
-84567200,84567231,US
-84567232,84567375,NL
-84567376,84567391,US
-84567392,84567535,NL
-84567536,84567551,US
-84567552,84567599,NL
-84567600,84567615,US
-84567616,84567647,NL
-84567648,84567679,US
-84567680,84567903,NL
-84567904,84567919,US
-84567920,84567999,NL
-84568000,84568015,US
-84568016,84568223,NL
-84568224,84568239,US
-84568240,84568255,GB
-84568256,84568287,NL
-84568288,84568303,US
-84568304,84568351,NL
-84568352,84568399,US
-84568400,84568591,NL
-84568592,84568607,GB
-84568608,84568847,NL
-84568848,84568863,US
-84568864,84568927,NL
-84568928,84568943,GB
-84568944,84568991,NL
-84568992,84569023,GB
-84569024,84569119,NL
-84569120,84569135,US
-84569136,84569183,NL
-84569184,84569199,US
-84569200,84570127,NL
-84570128,84570143,US
-84570144,84574207,NL
+84557824,84566015,NL
+84566016,84574207,GB
84574208,84576255,FR
84576256,84582399,GB
84582400,84590591,DE
@@ -430,11 +335,22 @@
86245376,86376447,OM
86376448,86409215,AE
86409216,86441983,HU
-86441984,86442495,FR
+86441984,86442255,FR
+86442256,86442271,GB
+86442272,86442359,FR
+86442360,86442367,BE
+86442368,86442399,ES
+86442400,86442415,FR
+86442416,86442431,GB
+86442432,86442495,FR
86442496,86442499,ES
86442500,86442507,FR
86442508,86442511,ES
-86442512,86442687,FR
+86442512,86442583,FR
+86442584,86442591,ES
+86442592,86442599,IT
+86442600,86442603,ES
+86442604,86442687,FR
86442688,86442691,ES
86442692,86442699,FR
86442700,86442700,ES
@@ -448,158 +364,535 @@
86442752,86443007,GB
86443008,86443047,FR
86443048,86443051,ES
-86443052,86443451,FR
+86443052,86443055,GB
+86443056,86443103,FR
+86443104,86443135,GB
+86443136,86443183,FR
+86443184,86443199,PL
+86443200,86443295,FR
+86443296,86443311,ES
+86443312,86443363,FR
+86443364,86443367,IT
+86443368,86443423,FR
+86443424,86443427,IT
+86443428,86443431,IE
+86443432,86443451,FR
86443452,86443455,ES
-86443456,86443535,FR
+86443456,86443487,NL
+86443488,86443503,ES
+86443504,86443507,IT
+86443508,86443535,FR
86443536,86443539,ES
-86443540,86444119,FR
+86443540,86443567,FR
+86443568,86443575,IE
+86443576,86443823,FR
+86443824,86443839,PT
+86443840,86443887,FR
+86443888,86443903,DE
+86443904,86443995,FR
+86443996,86443999,PT
+86444000,86444079,FR
+86444080,86444095,GB
+86444096,86444119,FR
86444120,86444123,ES
-86444124,86444287,FR
+86444124,86444127,FR
+86444128,86444143,BE
+86444144,86444287,FR
86444288,86444291,NL
-86444292,86444315,FR
+86444292,86444303,FR
+86444304,86444307,DE
+86444308,86444311,PL
+86444312,86444315,FR
86444316,86444323,ES
-86444324,86444387,FR
+86444324,86444351,FR
+86444352,86444367,NL
+86444368,86444387,FR
86444388,86444391,NL
-86444392,86444519,FR
+86444392,86444395,FR
+86444396,86444399,GB
+86444400,86444447,FR
+86444448,86444479,ES
+86444480,86444519,FR
86444520,86444523,ES
-86444524,86444563,FR
+86444524,86444527,FR
+86444528,86444543,ES
+86444544,86444555,FR
+86444556,86444559,PL
+86444560,86444563,FR
86444564,86444567,NL
86444568,86444575,FR
86444576,86444579,ES
-86444580,86444687,FR
+86444580,86444587,FR
+86444588,86444599,IT
+86444600,86444607,FR
+86444608,86444623,IT
+86444624,86444639,FR
+86444640,86444655,GB
+86444656,86444687,FR
86444688,86444691,ES
-86444692,86444835,FR
+86444692,86444703,FR
+86444704,86444719,ES
+86444720,86444799,FR
+86444800,86444815,PL
+86444816,86444835,FR
86444836,86444839,NL
86444840,86444843,ES
-86444844,86444879,FR
+86444844,86444875,FR
+86444876,86444879,CH
86444880,86444883,NL
86444884,86444895,FR
86444896,86444903,NL
-86444904,86445059,FR
+86444904,86444959,FR
+86444960,86444967,GB
+86444968,86445059,FR
86445060,86445063,NL
-86445064,86445111,FR
+86445064,86445071,FR
+86445072,86445087,PL
+86445088,86445111,FR
86445112,86445115,NL
-86445116,86445251,FR
+86445116,86445119,FR
+86445120,86445151,ES
+86445152,86445215,FR
+86445216,86445231,CH
+86445232,86445235,IT
+86445236,86445251,FR
86445252,86445255,NL
-86445256,86445559,FR
+86445256,86445291,FR
+86445292,86445295,DE
+86445296,86445343,FR
+86445344,86445351,FI
+86445352,86445423,FR
+86445424,86445431,GB
+86445432,86445519,FR
+86445520,86445527,ES
+86445528,86445559,FR
86445560,86445563,NL
-86445564,86446407,FR
+86445564,86445711,FR
+86445712,86445727,PL
+86445728,86445743,FR
+86445744,86445759,DE
+86445760,86445891,FR
+86445892,86445895,ES
+86445896,86445939,FR
+86445940,86445943,NL
+86445944,86445983,FR
+86445984,86445999,IT
+86446000,86446027,FR
+86446028,86446031,IT
+86446032,86446039,FR
+86446040,86446043,IE
+86446044,86446063,FR
+86446064,86446079,IT
+86446080,86446143,FR
+86446144,86446175,NL
+86446176,86446335,FR
+86446336,86446367,IE
+86446368,86446399,GB
+86446400,86446407,FR
86446408,86446408,DE
86446409,86446411,FR
86446412,86446412,DE
86446413,86446427,FR
86446428,86446431,DE
-86446432,86446619,FR
+86446432,86446463,FR
+86446464,86446495,ES
+86446496,86446527,CH
+86446528,86446551,FR
+86446552,86446555,NL
+86446556,86446611,FR
+86446612,86446615,ES
+86446616,86446619,FR
86446620,86446620,DE
-86446621,86446679,FR
+86446621,86446655,FR
+86446656,86446671,GB
+86446672,86446675,FR
+86446676,86446679,BE
86446680,86446683,ES
-86446684,86446719,FR
+86446684,86446711,FR
+86446712,86446719,DE
86446720,86446727,NL
-86446728,86446983,FR
+86446728,86446735,FR
+86446736,86446743,ES
+86446744,86446779,FR
+86446780,86446783,PL
+86446784,86446887,FR
+86446888,86446895,IT
+86446896,86446983,FR
86446984,86446991,IT
-86446992,86447095,FR
+86446992,86447011,FR
+86447012,86447015,ES
+86447016,86447023,FR
+86447024,86447027,IE
+86447028,86447031,FR
+86447032,86447039,ES
+86447040,86447047,PT
+86447048,86447071,FR
+86447072,86447087,DE
+86447088,86447095,FR
86447096,86447103,ES
-86447104,86447255,FR
+86447104,86447147,FR
+86447148,86447151,ES
+86447152,86447231,FR
+86447232,86447239,PL
+86447240,86447255,FR
86447256,86447263,PL
-86447264,86447279,FR
+86447264,86447267,FR
+86447268,86447271,IE
+86447272,86447279,FR
86447280,86447280,DE
86447281,86447287,FR
86447288,86447288,DE
-86447289,86448803,FR
+86447289,86447339,FR
+86447340,86447343,IT
+86447344,86447355,FR
+86447356,86447359,CH
+86447360,86447847,FR
+86447848,86447855,ES
+86447856,86448287,FR
+86448288,86448319,GB
+86448320,86448351,ES
+86448352,86448487,FR
+86448488,86448495,GB
+86448496,86448511,FR
+86448512,86448527,IT
+86448528,86448671,FR
+86448672,86448687,DE
+86448688,86448803,FR
86448804,86448807,FI
86448808,86448851,FR
86448852,86448855,IT
86448856,86448859,PT
-86448860,86449363,FR
+86448860,86449167,FR
+86449168,86449183,ES
+86449184,86449291,FR
+86449292,86449295,PL
+86449296,86449311,FR
+86449312,86449343,ES
+86449344,86449363,FR
86449364,86449367,DE
-86449368,86449499,FR
+86449368,86449375,FR
+86449376,86449379,PL
+86449380,86449383,FR
+86449384,86449387,DE
+86449388,86449471,FR
+86449472,86449475,GB
+86449476,86449499,FR
86449500,86449503,ES
-86449504,86449883,FR
+86449504,86449563,FR
+86449564,86449567,PL
+86449568,86449599,FR
+86449600,86449631,ES
+86449632,86449867,FR
+86449868,86449871,DE
+86449872,86449883,FR
86449884,86449884,DE
-86449885,86450235,FR
+86449885,86450019,FR
+86450020,86450023,IT
+86450024,86450047,FR
+86450048,86450079,IT
+86450080,86450111,FR
+86450112,86450115,IT
+86450116,86450119,FR
+86450120,86450127,IT
+86450128,86450143,FR
+86450144,86450159,ES
+86450160,86450167,FR
+86450168,86450171,DE
+86450172,86450235,FR
86450236,86450239,GB
-86450240,86451167,FR
+86450240,86450339,FR
+86450340,86450343,NL
+86450344,86450351,DE
+86450352,86450371,FR
+86450372,86450375,BE
+86450376,86450439,FR
+86450440,86450447,ES
+86450448,86450527,FR
+86450528,86450559,PT
+86450560,86450591,BE
+86450592,86450607,FR
+86450608,86450615,CZ
+86450616,86450671,FR
+86450672,86450687,GB
+86450688,86450847,FR
+86450848,86450863,PT
+86450864,86450867,FR
+86450868,86450871,ES
+86450872,86450943,FR
+86450944,86450975,IT
+86450976,86451167,FR
86451168,86451175,NL
-86451176,86452067,FR
+86451176,86451183,PL
+86451184,86451199,ES
+86451200,86451259,FR
+86451260,86451263,IT
+86451264,86451359,FR
+86451360,86451363,ES
+86451364,86451375,FR
+86451376,86451391,LT
+86451392,86451407,IT
+86451408,86451411,IE
+86451412,86451463,FR
+86451464,86451467,CH
+86451468,86451663,FR
+86451664,86451667,DE
+86451668,86451675,FR
+86451676,86451687,PL
+86451688,86451695,DE
+86451696,86451887,FR
+86451888,86451895,ES
+86451896,86451903,FR
+86451904,86451967,NL
+86451968,86452055,FR
+86452056,86452059,NL
+86452060,86452067,FR
86452068,86452071,ES
-86452072,86452299,FR
+86452072,86452215,FR
+86452216,86452223,IT
+86452224,86452263,FR
+86452264,86452267,ES
+86452268,86452279,FR
+86452280,86452283,ES
+86452284,86452287,DE
+86452288,86452291,IT
+86452292,86452299,FR
86452300,86452303,IT
-86452304,86452671,FR
+86452304,86452399,FR
+86452400,86452415,GB
+86452416,86452671,FR
86452672,86452735,GB
-86452736,86453199,FR
+86452736,86452943,FR
+86452944,86452959,GB
+86452960,86453031,FR
+86453032,86453039,ES
+86453040,86453135,FR
+86453136,86453151,PT
+86453152,86453199,FR
86453200,86453203,ES
-86453204,86453311,FR
+86453204,86453215,FR
+86453216,86453231,BE
+86453232,86453247,FR
+86453248,86453251,IT
+86453252,86453311,FR
86453312,86453315,ES
-86453316,86453836,FR
+86453316,86453379,FR
+86453380,86453383,ES
+86453384,86453391,FR
+86453392,86453399,GB
+86453400,86453503,FR
+86453504,86453631,GB
+86453632,86453791,FR
+86453792,86453807,FI
+86453808,86453823,FR
+86453824,86453836,IT
86453837,86453838,PT
-86453839,86454187,FR
+86453839,86453839,IT
+86453840,86453847,FR
+86453848,86453851,ES
+86453852,86454015,FR
+86454016,86454047,PL
+86454048,86454119,FR
+86454120,86454123,DE
+86454124,86454187,FR
86454188,86454191,IT
-86454192,86454279,FR
+86454192,86454271,FR
+86454272,86454279,GB
86454280,86454287,ES
86454288,86454295,IT
-86454296,86454335,FR
+86454296,86454299,FR
+86454300,86454303,DE
+86454304,86454335,FR
86454336,86454343,DE
-86454344,86454615,FR
+86454344,86454351,FR
+86454352,86454367,CH
+86454368,86454559,FR
+86454560,86454591,CZ
+86454592,86454607,PT
+86454608,86454611,NL
+86454612,86454615,PL
86454616,86454619,ES
-86454620,86454823,FR
+86454620,86454655,FR
+86454656,86454671,IT
+86454672,86454703,FR
+86454704,86454707,PL
+86454708,86454715,FR
+86454716,86454719,CZ
+86454720,86454823,FR
86454824,86454831,ES
-86454832,86455623,FR
+86454832,86454863,FR
+86454864,86454867,DE
+86454868,86454927,FR
+86454928,86454943,GB
+86454944,86454959,ES
+86454960,86455103,FR
+86455104,86455135,DE
+86455136,86455167,FR
+86455168,86455199,GB
+86455200,86455231,ES
+86455232,86455263,GB
+86455264,86455439,FR
+86455440,86455455,CH
+86455456,86455519,FR
+86455520,86455551,BE
+86455552,86455591,FR
+86455592,86455595,NL
+86455596,86455623,FR
86455624,86455624,DE
-86455625,86456195,FR
-86456196,86456211,DE
-86456212,86456351,FR
+86455625,86455839,FR
+86455840,86455871,DE
+86455872,86455967,FR
+86455968,86455999,PL
+86456000,86456015,FI
+86456016,86456087,FR
+86456088,86456091,CZ
+86456092,86456127,FR
+86456128,86456143,GB
+86456144,86456159,FR
+86456160,86456191,NL
+86456192,86456195,FR
+86456196,86456215,DE
+86456216,86456279,FR
+86456280,86456283,DE
+86456284,86456335,FR
+86456336,86456351,IE
86456352,86456367,CH
86456368,86456371,FR
86456372,86456375,ES
-86456376,86457059,FR
+86456376,86456575,FR
+86456576,86456831,DE
+86456832,86457055,FR
+86457056,86457059,NL
86457060,86457060,DE
86457061,86457087,FR
86457088,86457091,DE
86457092,86457111,FR
86457112,86457112,DE
-86457113,86457187,FR
+86457113,86457175,FR
+86457176,86457179,GB
+86457180,86457187,FR
86457188,86457191,ES
-86457192,86457403,FR
+86457192,86457231,FR
+86457232,86457235,PT
+86457236,86457239,PL
+86457240,86457243,DE
+86457244,86457311,FR
+86457312,86457327,CH
+86457328,86457391,FR
+86457392,86457395,BE
+86457396,86457403,FR
86457404,86457407,ES
86457408,86457455,FR
86457456,86457456,DE
-86457457,86457799,FR
+86457457,86457615,FR
+86457616,86457623,IE
+86457624,86457631,FR
+86457632,86457647,ES
+86457648,86457711,FR
+86457712,86457727,ES
+86457728,86457799,FR
86457800,86457803,ES
-86457804,86466839,FR
+86457804,86457807,FR
+86457808,86457811,ES
+86457812,86458159,FR
+86458160,86458175,DE
+86458176,86466603,FR
+86466604,86466607,ES
+86466608,86466623,FR
+86466624,86466639,ES
+86466640,86466839,FR
86466840,86466847,NL
-86466848,86467320,FR
+86466848,86466879,FR
+86466880,86466943,GB
+86466944,86466959,DE
+86466960,86467039,FR
+86467040,86467055,IT
+86467056,86467059,GB
+86467060,86467219,FR
+86467220,86467223,DE
+86467224,86467291,FR
+86467292,86467295,LT
+86467296,86467320,FR
86467321,86467321,FI
-86467322,86467999,FR
+86467322,86467455,FR
+86467456,86467487,GB
+86467488,86467551,FR
+86467552,86467583,PT
+86467584,86467903,FR
+86467904,86467935,GB
+86467936,86467999,FR
86468000,86468003,PL
-86468004,86468055,FR
+86468004,86468043,FR
+86468044,86468047,DE
+86468048,86468055,FR
86468056,86468056,DE
86468057,86468447,FR
86468448,86468479,CZ
86468480,86468587,FR
86468588,86468591,ES
-86468592,86469183,FR
+86468592,86468759,FR
+86468760,86468763,IT
+86468764,86469183,FR
86469184,86469247,GB
-86469248,86469691,FR
+86469248,86469375,FR
+86469376,86469631,BE
+86469632,86469691,FR
86469692,86469695,DE
86469696,86469779,FR
86469780,86469783,IT
-86469784,86470731,FR
+86469784,86469863,FR
+86469864,86469867,GB
+86469868,86469919,FR
+86469920,86469935,PT
+86469936,86470207,FR
+86470208,86470239,FI
+86470240,86470271,GB
+86470272,86470279,FR
+86470280,86470287,PL
+86470288,86470351,FR
+86470352,86470359,IT
+86470360,86470731,FR
86470732,86470735,BE
-86470736,86471179,FR
+86470736,86470959,FR
+86470960,86470967,IT
+86470968,86471095,FR
+86471096,86471099,ES
+86471100,86471179,FR
86471180,86471180,DE
-86471181,86473087,FR
+86471181,86471807,FR
+86471808,86471839,CH
+86471840,86471871,GB
+86471872,86471935,ES
+86471936,86471995,FR
+86471996,86471999,DE
+86472000,86472095,FR
+86472096,86472127,GB
+86472128,86472291,FR
+86472292,86472295,GB
+86472296,86472415,FR
+86472416,86472431,ES
+86472432,86472479,FR
+86472480,86472495,PL
+86472496,86473087,FR
86473088,86473151,PT
-86473152,86473359,FR
+86473152,86473215,FR
+86473216,86473247,DE
+86473248,86473359,FR
86473360,86473363,IT
86473364,86473423,FR
86473424,86473427,NL
-86473428,86474307,FR
-86474308,86474311,DE
+86473428,86473983,FR
+86473984,86474047,IT
+86474048,86474143,FR
+86474144,86474151,GB
+86474152,86474303,FR
+86474304,86474311,DE
86474312,86474475,FR
86474476,86474479,DE
86474480,86474527,FR
86474528,86474531,DE
-86474532,86474751,FR
+86474532,86474743,FR
+86474744,86474747,LT
+86474748,86474751,FR
86474752,86482943,HR
86482944,86484991,RU
86484992,86487039,NL
@@ -615,10 +908,9 @@
86507520,86573055,ES
86573056,86638591,RO
86638592,86671359,RU
-86671360,86671615,JE
-86671616,86671871,GB
-86671872,86672895,JE
-86672896,86673407,GB
+86671360,86672895,JE
+86672896,86673151,GB
+86673152,86673407,JE
86673408,86675455,DE
86675456,86677503,IT
86677504,86687743,FR
@@ -717,23 +1009,15 @@
87638016,87640063,UA
87640064,87642111,RS
87642112,87646207,GB
-87646208,87646463,FR
-87646464,87646719,RE
-87646720,87646975,YT
-87646976,87647231,FR
-87647232,87647743,RE
-87647744,87648511,FR
-87648512,87649535,RE
-87649536,87649791,FR
-87649792,87650815,RE
-87650816,87651583,FR
-87651584,87651839,RE
-87651840,87653119,FR
-87653120,87653375,RE
-87653376,87653631,FR
-87653632,87653887,RE
-87653888,87654143,FR
-87654144,87654399,RE
+87646208,87647999,FR
+87648000,87648255,RE
+87648256,87651839,FR
+87651840,87652095,RE
+87652096,87652351,FR
+87652352,87652863,RE
+87652864,87653375,FR
+87653376,87653887,RE
+87653888,87654399,FR
87654400,87670783,PL
87670784,87672831,DE
87672832,87674879,CH
@@ -797,9 +1081,7 @@
88940544,88948735,GB
88948736,88965119,IT
88965120,88997887,AM
-88997888,89028607,DE
-89028608,89031167,US
-89031168,89063423,DE
+88997888,89063423,DE
89063424,89079807,GB
89079808,89096191,NL
89096192,89128959,RU
@@ -843,12 +1125,15 @@
90544128,90546175,RU
90546176,90548223,DE
90548224,90550271,GB
-90550272,90570751,RU
+90550272,90554367,EE
+90554368,90570751,RU
90570752,90578943,IT
90578944,90583039,IR
90583040,90587135,CZ
90587136,90589183,PL
-90589184,90591231,FR
+90589184,90589439,FR
+90589440,90589695,RE
+90589696,90591231,FR
90591232,90595327,GB
90595328,90603519,PS
90603520,90605567,ES
@@ -891,7 +1176,8 @@
90764800,90765311,IL
90765312,90767359,PL
90767360,90832895,UA
-90832896,90963967,RO
+90832896,90898431,IR
+90898432,90963967,AE
90963968,91226111,SA
91226112,92274687,IR
92274688,92536831,RU
@@ -929,15 +1215,50 @@
92721152,92723199,PL
92723200,92725247,RU
92725248,92733439,SY
-92733440,92734515,FR
+92733440,92733503,FR
+92733504,92733535,PL
+92733536,92733743,FR
+92733744,92733751,IT
+92733752,92733775,FR
+92733776,92733783,DE
+92733784,92733791,FR
+92733792,92733807,PT
+92733808,92733927,FR
+92733928,92733931,BE
+92733932,92734255,FR
+92734256,92734271,DE
+92734272,92734307,FR
+92734308,92734311,ES
+92734312,92734515,FR
92734516,92734519,IT
-92734520,92734735,FR
+92734520,92734639,FR
+92734640,92734655,ES
+92734656,92734671,FR
+92734672,92734687,IT
+92734688,92734735,FR
92734736,92734739,DE
-92734740,92735615,FR
+92734740,92734879,FR
+92734880,92734895,IT
+92734896,92734943,FR
+92734944,92734975,BE
+92734976,92735263,FR
+92735264,92735295,CZ
+92735296,92735343,FR
+92735344,92735347,GB
+92735348,92735439,FR
+92735440,92735455,ES
+92735456,92735471,FR
+92735472,92735479,IT
+92735480,92735535,FR
+92735536,92735543,PL
+92735544,92735583,FR
+92735584,92735615,FI
92735616,92735616,DE
92735617,92735619,FR
92735620,92735623,ES
-92735624,92735823,FR
+92735624,92735679,FR
+92735680,92735711,NL
+92735712,92735823,FR
92735824,92735827,ES
92735828,92735875,FR
92735876,92735876,DE
@@ -945,73 +1266,632 @@
92736000,92736255,GB
92736256,92736479,FR
92736480,92736480,DE
-92736481,92738663,FR
+92736481,92736571,FR
+92736572,92736575,NL
+92736576,92736863,FR
+92736864,92736895,PL
+92736896,92737247,FR
+92737248,92737279,NL
+92737280,92737343,FR
+92737344,92737375,ES
+92737376,92737407,FR
+92737408,92737439,CH
+92737440,92737471,FR
+92737472,92737503,ES
+92737504,92737631,FR
+92737632,92737647,NL
+92737648,92738479,FR
+92738480,92738487,IT
+92738488,92738511,FR
+92738512,92738515,ES
+92738516,92738559,FR
+92738560,92738591,DE
+92738592,92738611,FR
+92738612,92738615,FI
+92738616,92738663,FR
92738664,92738679,ES
-92738680,92738719,FR
-92738720,92738727,GB
-92738728,92740447,FR
+92738680,92739355,FR
+92739356,92739359,ES
+92739360,92739503,FR
+92739504,92739507,IT
+92739508,92739839,FR
+92739840,92739903,PT
+92739904,92739967,FR
+92739968,92740031,PL
+92740032,92740095,FR
+92740096,92740127,PL
+92740128,92740287,FR
+92740288,92740351,IE
+92740352,92740447,FR
92740448,92740455,IT
-92740456,92741203,FR
+92740456,92740639,FR
+92740640,92740671,CZ
+92740672,92740767,FR
+92740768,92740815,PL
+92740816,92740831,FR
+92740832,92740847,ES
+92740848,92741203,FR
92741204,92741207,IT
-92741208,92741387,FR
+92741208,92741343,FR
+92741344,92741351,IT
+92741352,92741387,FR
92741388,92741395,IT
-92741396,92742347,FR
+92741396,92741431,FR
+92741432,92741439,IE
+92741440,92741471,FR
+92741472,92741503,CZ
+92741504,92741791,FR
+92741792,92741823,IT
+92741824,92742207,FR
+92742208,92742247,GB
+92742248,92742347,FR
92742348,92742351,IT
-92742352,92742415,FR
+92742352,92742367,FR
+92742368,92742399,GB
+92742400,92742415,BE
92742416,92742419,IT
-92742420,92742487,FR
+92742420,92742431,FR
+92742432,92742463,PT
+92742464,92742487,FR
92742488,92742491,IT
-92742492,92742691,FR
+92742492,92742527,FR
+92742528,92742543,IT
+92742544,92742687,FR
+92742688,92742691,IE
92742692,92742695,IT
-92742696,92742815,FR
+92742696,92742703,ES
+92742704,92742815,FR
92742816,92742819,ES
-92742820,92743243,FR
+92742820,92743215,FR
+92743216,92743231,BE
+92743232,92743243,FR
92743244,92743247,IT
-92743248,92743303,FR
-92743304,92743307,IT
+92743248,92743263,FR
+92743264,92743279,GB
+92743280,92743295,ES
+92743296,92743307,IT
92743308,92743311,FR
92743312,92743315,IT
92743316,92743355,FR
92743356,92743359,IT
-92743360,92743611,FR
+92743360,92743503,FR
+92743504,92743519,IT
+92743520,92743535,FR
+92743536,92743551,ES
+92743552,92743611,FR
92743612,92743615,IT
-92743616,92743955,FR
+92743616,92743631,FR
+92743632,92743639,IT
+92743640,92743643,ES
+92743644,92743663,FR
+92743664,92743671,IT
+92743672,92743955,FR
92743956,92743959,IT
-92743960,92744243,FR
+92743960,92744111,FR
+92744112,92744119,PL
+92744120,92744123,FR
+92744124,92744127,GB
+92744128,92744159,IT
+92744160,92744175,FR
+92744176,92744191,DE
+92744192,92744223,FR
+92744224,92744227,DE
+92744228,92744243,FR
92744244,92744247,NL
92744248,92744263,FR
92744264,92744267,NL
92744268,92744283,FR
92744284,92744291,NL
-92744292,92744555,FR
+92744292,92744295,ES
+92744296,92744351,FR
+92744352,92744367,BE
+92744368,92744479,FR
+92744480,92744511,GB
+92744512,92744543,FR
+92744544,92744547,BE
+92744548,92744551,FR
+92744552,92744555,ES
92744556,92744559,IT
-92744560,92747711,FR
+92744560,92744719,FR
+92744720,92744735,BE
+92744736,92744743,GB
+92744744,92744767,FR
+92744768,92744799,NL
+92744800,92744895,FR
+92744896,92744927,IT
+92744928,92744935,CZ
+92744936,92744943,CH
+92744944,92744959,FR
+92744960,92744975,PL
+92744976,92745071,FR
+92745072,92745087,ES
+92745088,92745375,FR
+92745376,92745391,IT
+92745392,92745399,FR
+92745400,92745407,ES
+92745408,92745439,IE
+92745440,92745471,NL
+92745472,92745503,FR
+92745504,92745535,DE
+92745536,92745663,FR
+92745664,92745695,IT
+92745696,92745807,FR
+92745808,92745823,NL
+92745824,92745871,FR
+92745872,92745887,IT
+92745888,92746303,FR
+92746304,92746335,GB
+92746336,92746383,FR
+92746384,92746399,CZ
+92746400,92746415,FR
+92746416,92746431,ES
+92746432,92746559,FR
+92746560,92746623,GB
+92746624,92746639,BE
+92746640,92747199,FR
+92747200,92747231,GB
+92747232,92747255,FR
+92747256,92747263,PL
+92747264,92747267,NL
+92747268,92747327,FR
+92747328,92747335,BE
+92747336,92747343,FR
+92747344,92747347,ES
+92747348,92747539,FR
+92747540,92747543,CH
+92747544,92747547,FR
+92747548,92747551,ES
+92747552,92747567,FR
+92747568,92747583,BE
+92747584,92747687,FR
+92747688,92747691,NL
+92747692,92747699,FR
+92747700,92747703,FI
+92747704,92747711,FR
92747712,92747775,GB
-92747776,92748773,FR
+92747776,92748303,FR
+92748304,92748319,CH
+92748320,92748511,FR
+92748512,92748543,IE
+92748544,92748773,FR
92748774,92748774,PT
-92748775,92749067,FR
+92748775,92748847,FR
+92748848,92748851,BE
+92748852,92748863,FR
+92748864,92748879,ES
+92748880,92749067,FR
92749068,92749071,GB
-92749072,92749747,FR
+92749072,92749183,FR
+92749184,92749215,IT
+92749216,92749439,FR
+92749440,92749471,DE
+92749472,92749531,FR
+92749532,92749535,ES
+92749536,92749747,FR
92749748,92749751,ES
-92749752,92751711,FR
+92749752,92750255,FR
+92750256,92750271,PL
+92750272,92750603,FR
+92750604,92750607,LT
+92750608,92750655,FR
+92750656,92750719,GB
+92750720,92750751,FR
+92750752,92750783,ES
+92750784,92750815,GB
+92750816,92750839,FR
+92750840,92750843,PL
+92750844,92750879,FR
+92750880,92750887,CZ
+92750888,92750975,FR
+92750976,92751039,PT
+92751040,92751071,FR
+92751072,92751103,GB
+92751104,92751679,FR
+92751680,92751711,IT
92751712,92751712,DE
-92751713,92753547,FR
+92751713,92752127,FR
+92752128,92752143,IT
+92752144,92752359,FR
+92752360,92752363,NL
+92752364,92752431,FR
+92752432,92752447,GB
+92752448,92752543,FR
+92752544,92752575,DE
+92752576,92752591,NL
+92752592,92752607,FR
+92752608,92752611,IT
+92752612,92752687,FR
+92752688,92752703,ES
+92752704,92752735,FR
+92752736,92752751,ES
+92752752,92752767,IT
+92752768,92752831,FR
+92752832,92752847,IT
+92752848,92752863,FR
+92752864,92752895,IT
+92752896,92753079,FR
+92753080,92753087,ES
+92753088,92753095,IT
+92753096,92753183,FR
+92753184,92753215,GB
+92753216,92753279,FR
+92753280,92753311,CH
+92753312,92753343,BE
+92753344,92753547,FR
92753548,92753551,IT
-92753552,92754579,FR
+92753552,92753567,FR
+92753568,92753599,BE
+92753600,92753823,FR
+92753824,92753855,DE
+92753856,92754095,FR
+92754096,92754111,GB
+92754112,92754447,FR
+92754448,92754463,GB
+92754464,92754479,FR
+92754480,92754503,ES
+92754504,92754527,FR
+92754528,92754543,PT
+92754544,92754579,FR
92754580,92754583,ES
-92754584,92757311,FR
+92754584,92754623,FR
+92754624,92754639,PL
+92754640,92754655,FR
+92754656,92754671,IT
+92754672,92755199,FR
+92755200,92755231,NL
+92755232,92755279,FR
+92755280,92755287,DE
+92755288,92755335,FR
+92755336,92755343,ES
+92755344,92755375,FR
+92755376,92755423,GB
+92755424,92755455,FR
+92755456,92755487,CH
+92755488,92755583,FR
+92755584,92755615,CZ
+92755616,92755871,FR
+92755872,92755887,GB
+92755888,92755903,ES
+92755904,92756095,FR
+92756096,92756127,DE
+92756128,92756175,FR
+92756176,92756191,PL
+92756192,92756479,FR
+92756480,92756495,GB
+92756496,92757199,FR
+92757200,92757215,GB
+92757216,92757311,FR
92757312,92757375,ES
-92757376,92762127,FR
+92757376,92758127,FR
+92758128,92758143,GB
+92758144,92758223,FR
+92758224,92758239,CH
+92758240,92758271,FR
+92758272,92758287,ES
+92758288,92758399,FR
+92758400,92758415,PL
+92758416,92758655,FR
+92758656,92758687,DE
+92758688,92758799,FR
+92758800,92758803,DE
+92758804,92758807,ES
+92758808,92758811,FR
+92758812,92758815,DE
+92758816,92758863,FR
+92758864,92758879,PL
+92758880,92759031,FR
+92759032,92759039,GB
+92759040,92759119,FR
+92759120,92759135,NL
+92759136,92759167,FR
+92759168,92759183,GB
+92759184,92760495,FR
+92760496,92760511,ES
+92760512,92760559,FR
+92760560,92760575,ES
+92760576,92760715,FR
+92760716,92760719,ES
+92760720,92761215,FR
+92761216,92761343,DE
+92761344,92761759,FR
+92761760,92761763,IT
+92761764,92761939,FR
+92761940,92761943,GB
+92761944,92762127,FR
92762128,92762135,ES
-92762136,92782687,FR
+92762136,92762319,FR
+92762320,92762335,DE
+92762336,92762383,FR
+92762384,92762391,ES
+92762392,92762655,FR
+92762656,92762687,IT
+92762688,92762839,FR
+92762840,92762847,ES
+92762848,92762879,FR
+92762880,92762911,CH
+92762912,92763311,FR
+92763312,92763327,DE
+92763328,92763331,FR
+92763332,92763339,ES
+92763340,92763391,FR
+92763392,92763519,IE
+92763520,92763647,FR
+92763648,92763679,FI
+92763680,92763711,ES
+92763712,92763775,NL
+92763776,92763839,FR
+92763840,92763903,NL
+92763904,92764287,FR
+92764288,92764303,IE
+92764304,92764431,FR
+92764432,92764447,PL
+92764448,92764463,FR
+92764464,92764479,GB
+92764480,92764511,FR
+92764512,92764543,DE
+92764544,92764595,FR
+92764596,92764599,ES
+92764600,92764799,FR
+92764800,92764807,DE
+92764808,92764863,FR
+92764864,92764911,GB
+92764912,92765295,FR
+92765296,92765311,IT
+92765312,92765351,FR
+92765352,92765359,BE
+92765360,92765391,FR
+92765392,92765395,IT
+92765396,92766015,FR
+92766016,92766047,NL
+92766048,92766079,FR
+92766080,92766143,PT
+92766144,92782687,FR
92782688,92782719,ES
-92782720,92783543,FR
+92782720,92782731,FR
+92782732,92782735,ES
+92782736,92782811,FR
+92782812,92782815,CH
+92782816,92782847,FR
+92782848,92782879,NL
+92782880,92782943,FR
+92782944,92782975,IT
+92782976,92783291,FR
+92783292,92783295,DE
+92783296,92783543,FR
92783544,92783547,ES
-92783548,92786827,FR
+92783548,92783715,FR
+92783716,92783719,NL
+92783720,92783723,IT
+92783724,92783727,FR
+92783728,92783731,ES
+92783732,92783735,IT
+92783736,92783911,FR
+92783912,92783919,PT
+92783920,92783999,FR
+92784000,92784031,IT
+92784032,92784159,FR
+92784160,92784191,CH
+92784192,92784223,FR
+92784224,92784239,PL
+92784240,92784255,FR
+92784256,92784263,NL
+92784264,92784291,FR
+92784292,92784295,PL
+92784296,92784299,FR
+92784300,92784303,DE
+92784304,92784467,FR
+92784468,92784471,NL
+92784472,92784479,FR
+92784480,92784511,ES
+92784512,92784639,GB
+92784640,92784671,FR
+92784672,92784703,GB
+92784704,92784807,FR
+92784808,92784815,LT
+92784816,92785363,FR
+92785364,92785367,PT
+92785368,92785407,FR
+92785408,92785439,CH
+92785440,92785599,FR
+92785600,92785607,GB
+92785608,92785615,FR
+92785616,92785631,IT
+92785632,92785663,FR
+92785664,92785679,BE
+92785680,92785687,ES
+92785688,92785695,DE
+92785696,92785791,FR
+92785792,92785823,IT
+92785824,92785871,FR
+92785872,92785887,IT
+92785888,92786183,FR
+92786184,92786187,ES
+92786188,92786191,PT
+92786192,92786199,FR
+92786200,92786207,BE
+92786208,92786239,FR
+92786240,92786255,FI
+92786256,92786311,FR
+92786312,92786319,CZ
+92786320,92786631,FR
+92786632,92786639,BE
+92786640,92786743,FR
+92786744,92786751,DE
+92786752,92786827,FR
92786828,92786831,IT
-92786832,92795123,FR
+92786832,92786855,FR
+92786856,92786859,PL
+92786860,92786879,FR
+92786880,92786911,DE
+92786912,92786927,GB
+92786928,92786943,ES
+92786944,92786975,FR
+92786976,92786979,GB
+92786980,92786991,FR
+92786992,92786999,IT
+92787000,92787111,FR
+92787112,92787119,IT
+92787120,92787391,FR
+92787392,92787407,BE
+92787408,92787423,FR
+92787424,92787503,ES
+92787504,92787639,FR
+92787640,92787647,DE
+92787648,92787967,FR
+92787968,92788031,ES
+92788032,92788095,FR
+92788096,92788127,PL
+92788128,92788171,FR
+92788172,92788175,ES
+92788176,92788255,FR
+92788256,92788259,PT
+92788260,92788263,FR
+92788264,92788271,GB
+92788272,92788383,FR
+92788384,92788415,CZ
+92788416,92788479,FR
+92788480,92788511,IE
+92788512,92788607,FR
+92788608,92788639,NL
+92788640,92788687,FR
+92788688,92788703,ES
+92788704,92788735,BE
+92788736,92788967,FR
+92788968,92788975,DE
+92788976,92789055,FR
+92789056,92789071,ES
+92789072,92789079,FR
+92789080,92789083,IT
+92789084,92789223,FR
+92789224,92789231,NL
+92789232,92789335,FR
+92789336,92789339,CH
+92789340,92789343,CZ
+92789344,92789383,FR
+92789384,92789387,NL
+92789388,92789391,FR
+92789392,92789395,IT
+92789396,92789399,DE
+92789400,92789423,FR
+92789424,92789427,ES
+92789428,92789475,FR
+92789476,92789479,IT
+92789480,92789499,FR
+92789500,92789503,IT
+92789504,92789743,FR
+92789744,92789759,PL
+92789760,92789919,FR
+92789920,92789951,PL
+92789952,92790239,FR
+92790240,92790271,IE
+92790272,92790283,FR
+92790284,92790287,PL
+92790288,92790367,FR
+92790368,92790371,PT
+92790372,92790463,FR
+92790464,92790495,GB
+92790496,92790511,FR
+92790512,92790527,GB
+92790528,92790575,FR
+92790576,92790591,PT
+92790592,92790703,FR
+92790704,92790719,IT
+92790720,92790799,FR
+92790800,92790803,BE
+92790804,92790815,FR
+92790816,92790847,LT
+92790848,92790863,FI
+92790864,92790959,FR
+92790960,92790975,DE
+92790976,92791039,FR
+92791040,92791167,ES
+92791168,92791183,BE
+92791184,92791215,FR
+92791216,92791223,IT
+92791224,92791231,ES
+92791232,92791263,FR
+92791264,92791279,FI
+92791280,92791283,FR
+92791284,92791295,DE
+92791296,92791327,ES
+92791328,92791359,FR
+92791360,92791391,ES
+92791392,92791423,FR
+92791424,92791455,GB
+92791456,92791487,BE
+92791488,92792319,FR
+92792320,92792383,ES
+92792384,92792415,FR
+92792416,92792431,ES
+92792432,92792511,FR
+92792512,92792575,PT
+92792576,92792703,FR
+92792704,92792767,PL
+92792768,92792799,FR
+92792800,92792831,PT
+92792832,92792959,GB
+92792960,92793023,FR
+92793024,92793055,GB
+92793056,92793087,ES
+92793088,92793215,FR
+92793216,92793247,IT
+92793248,92793263,FR
+92793264,92793279,ES
+92793280,92793887,FR
+92793888,92793919,IT
+92793920,92794143,FR
+92794144,92794159,DE
+92794160,92794175,FR
+92794176,92794207,NL
+92794208,92794367,FR
+92794368,92794399,GB
+92794400,92794503,FR
+92794504,92794511,ES
+92794512,92794879,FR
+92794880,92794895,ES
+92794896,92794943,FR
+92794944,92794975,BE
+92794976,92795103,FR
+92795104,92795111,ES
+92795112,92795123,FR
92795124,92795127,IT
-92795128,92798975,FR
+92795128,92795171,FR
+92795172,92795175,BE
+92795176,92795179,PL
+92795180,92795619,FR
+92795620,92795623,PL
+92795624,92796463,FR
+92796464,92796479,CZ
+92796480,92796511,FR
+92796512,92796543,DE
+92796544,92796583,FR
+92796584,92796587,PL
+92796588,92796671,FR
+92796672,92796687,GB
+92796688,92796695,FR
+92796696,92796703,BE
+92796704,92796711,PL
+92796712,92796727,FR
+92796728,92796735,IT
+92796736,92797567,FR
+92797568,92797759,PT
+92797760,92797903,FR
+92797904,92797911,NL
+92797912,92797983,FR
+92797984,92797987,GB
+92797988,92798015,FR
+92798016,92798047,ES
+92798048,92798175,FR
+92798176,92798191,IT
+92798192,92798223,FR
+92798224,92798231,CZ
+92798232,92798255,FR
+92798256,92798271,PL
+92798272,92798431,FR
+92798432,92798439,PL
+92798440,92798591,FR
+92798592,92798623,IE
+92798624,92798975,FR
92798976,93323263,RU
93323264,93335551,CH
93335552,93339647,IL
@@ -1056,9 +1936,7 @@
93693952,93695999,IE
93696000,93700095,FR
93700096,93702143,PL
-93702144,93705983,RU
-93705984,93706239,UA
-93706240,93708287,RU
+93702144,93708287,RU
93708288,93712383,DE
93712384,93714431,HU
93714432,93716479,NL
@@ -1071,7 +1949,9 @@
93782016,93833983,GB
93833984,93834239,NL
93834240,93835263,GB
-93835264,93835519,NL
+93835264,93835407,NL
+93835408,93835415,GB
+93835416,93835519,NL
93835520,93836287,GB
93836288,93836799,NL
93836800,93842351,GB
@@ -1088,11 +1968,15 @@
93906944,93908991,BA
93908992,93911039,IT
93911040,93913087,AE
-93913088,93914319,NL
+93913088,93913727,NL
+93913728,93913735,US
+93913736,93914319,NL
93914320,93914323,AZ
93914324,93914357,NL
93914358,93914358,GB
-93914359,93914710,NL
+93914359,93914671,NL
+93914672,93914679,US
+93914680,93914710,NL
93914711,93914711,GB
93914712,93914951,NL
93914952,93914959,US
@@ -1109,11 +1993,17 @@
93916528,93916543,US
93916544,93916591,NL
93916592,93916599,US
-93916600,93916971,NL
+93916600,93916791,NL
+93916792,93916799,US
+93916800,93916971,NL
93916972,93916975,US
-93916976,93918103,NL
+93916976,93917871,NL
+93917872,93917879,US
+93917880,93918103,NL
93918104,93918111,US
-93918112,93918215,NL
+93918112,93918199,NL
+93918200,93918207,US
+93918208,93918215,NL
93918216,93918223,US
93918224,93918555,NL
93918556,93918559,US
@@ -1122,38 +2012,34 @@
93918600,93918655,NL
93918656,93918687,US
93918688,93919263,NL
-93919264,93919279,US
-93919280,93919391,NL
+93919264,93919287,US
+93919288,93919391,NL
93919392,93919395,US
-93919396,93919951,NL
+93919396,93919727,NL
+93919728,93919735,US
+93919736,93919951,NL
93919952,93919959,US
93919960,93920059,NL
93920060,93920063,US
93920064,93920163,NL
93920164,93920167,US
-93920168,93920223,NL
-93920224,93920231,US
-93920232,93920575,NL
+93920168,93920575,NL
93920576,93920639,US
93920640,93920855,NL
93920856,93920863,US
-93920864,93920967,NL
-93920968,93920975,US
-93920976,93921055,NL
+93920864,93921055,NL
93921056,93921059,US
-93921060,93921063,NL
-93921064,93921071,GB
-93921072,93923551,NL
-93923552,93923559,US
-93923560,93923567,NL
+93921060,93921119,NL
+93921120,93921127,US
+93921128,93923095,NL
+93923096,93923103,US
+93923104,93923567,NL
93923568,93923575,US
93923576,93923855,NL
93923856,93923863,US
93923864,93924407,NL
93924408,93924415,JP
-93924416,93924591,NL
-93924592,93924599,US
-93924600,93925807,NL
+93924416,93925807,NL
93925808,93925815,KE
93925816,93927143,NL
93927144,93927151,JP
@@ -1177,7 +2063,9 @@
93974528,93976575,CH
93976576,93978623,GB
93978624,94011391,ES
-94011392,94175231,RO
+94011392,94044159,RO
+94044160,94109695,SY
+94109696,94175231,RO
94175232,94178303,SE
94178304,94178559,NO
94178560,94179071,SE
@@ -1192,7 +2080,9 @@
94184960,94185471,IT
94185472,94186495,LU
94186496,94187263,DE
-94187264,94188287,AT
+94187264,94187519,AT
+94187520,94187775,SE
+94187776,94188287,AT
94188288,94189311,SE
94189312,94189567,LI
94189568,94191615,SE
@@ -1264,22 +2154,35 @@
95388928,95389183,AU
95389184,95389695,DE
95389696,95390207,GB
-95390208,95393151,DE
+95390208,95393023,DE
+95393024,95393151,GB
95393152,95393279,RS
-95393280,95393407,DE
+95393280,95393407,GB
95393408,95393535,AE
95393536,95393663,DE
95393664,95393791,QA
95393792,95394047,GB
95394048,95395327,AU
-95395328,95395839,GB
+95395328,95395455,GB
+95395456,95395583,DE
+95395584,95395839,GB
95395840,95398399,DE
95398400,95398655,GB
-95398656,95400447,DE
+95398656,95399679,DE
+95399680,95399807,US
+95399808,95399935,DE
+95399936,95400063,CA
+95400064,95400191,DE
+95400192,95400319,CA
+95400320,95400447,DE
95400448,95400703,GB
-95400704,95401471,DE
+95400704,95400831,US
+95400832,95400959,DE
+95400960,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
@@ -1290,15 +2193,22 @@
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,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,95407359,GB
95407360,95407871,US
95407872,95408639,DE
@@ -1308,8 +2218,8 @@
95409920,95410175,DE
95410176,95410431,AU
95410432,95410447,CH
-95410448,95410687,DE
-95410688,95410943,GB
+95410448,95410559,DE
+95410560,95410943,GB
95410944,95411199,DE
95411200,95411215,NL
95411216,95420415,DE
@@ -1348,17 +2258,14 @@
96153600,96155647,PL
96155648,96157695,CH
96157696,96165887,RU
-96165888,96166143,GP
-96166144,96167167,FR
-96167168,96167423,GP
-96167424,96167679,FR
-96167680,96167935,GP
-96167936,96168191,MQ
-96168192,96169471,FR
-96169472,96169727,MQ
-96169728,96170751,FR
-96170752,96171263,GF
-96171264,96173055,FR
+96165888,96166399,FR
+96166400,96166655,GP
+96166656,96168703,FR
+96168704,96168959,MQ
+96168960,96171775,FR
+96171776,96172031,GF
+96172032,96172799,FR
+96172800,96173055,GP
96173056,96173311,MQ
96173312,96174079,FR
96174080,96206847,HU
@@ -1367,8 +2274,61 @@
96321536,96337919,RU
96337920,96403455,IR
96403456,96468991,AZ
-96468992,96731135,RO
-96731136,96796671,DE
+96468992,96731135,AE
+96731136,96739479,FR
+96739480,96739483,DE
+96739484,96739583,FR
+96739584,96739587,PT
+96739588,96740223,FR
+96740224,96740351,IT
+96740352,96742407,FR
+96742408,96742415,NL
+96742416,96742427,FR
+96742428,96742431,NL
+96742432,96742679,FR
+96742680,96742687,DE
+96742688,96744607,FR
+96744608,96744611,IT
+96744612,96744831,FR
+96744832,96744839,GB
+96744840,96747291,FR
+96747292,96747295,PT
+96747296,96756427,FR
+96756428,96756431,ES
+96756432,96756447,DE
+96756448,96756743,FR
+96756744,96756751,NL
+96756752,96757639,FR
+96757640,96757643,CH
+96757644,96757883,FR
+96757884,96757887,ES
+96757888,96759767,FR
+96759768,96759775,IT
+96759776,96760403,FR
+96760404,96760407,IT
+96760408,96761855,FR
+96761856,96761871,BE
+96761872,96762943,FR
+96762944,96763007,ES
+96763008,96763551,FR
+96763552,96763555,GB
+96763556,96764375,FR
+96764376,96764383,IT
+96764384,96764559,FR
+96764560,96764575,NL
+96764576,96767031,FR
+96767032,96767035,GB
+96767036,96767823,FR
+96767824,96767839,BE
+96767840,96768151,FR
+96768152,96768155,FI
+96768156,96770651,FR
+96770652,96770655,PL
+96770656,96773119,FR
+96773120,96773375,ES
+96773376,96778867,FR
+96778868,96778871,BE
+96778872,96796671,FR
96796672,96862207,AZ
96862208,96894975,GB
96894976,96897023,CZ
@@ -1417,7 +2377,9 @@
98734080,98736127,CH
98736128,98738175,RU
98738176,98740223,NO
-98740224,98741503,DE
+98740224,98740479,DE
+98740480,98740735,US
+98740736,98741503,DE
98741504,98741759,US
98741760,98742271,DE
98742272,98744319,GB
@@ -1427,11 +2389,13 @@
98893824,98959359,TR
98959360,99024895,DE
99024896,99025167,GB
-99025168,99025407,IT
+99025168,99025279,DE
+99025280,99025407,US
99025408,99025663,NL
99025664,99025919,DE
99025920,99025935,FI
-99025936,99026175,SE
+99025936,99026047,DE
+99026048,99026175,US
99026176,99026943,DE
99026944,99027199,GB
99027200,99027215,HR
@@ -1439,23 +2403,29 @@
99027456,99027711,PL
99027712,99027967,DE
99027968,99027983,ES
-99027984,99028223,DE
+99027984,99028095,DE
+99028096,99028223,US
99028224,99028239,GB
-99028240,99028735,DE
+99028240,99028351,DE
+99028352,99028479,US
+99028480,99028735,DE
99028736,99028751,SE
-99028752,99028991,EG
-99028992,99029247,GB
-99029248,99029503,DE
+99028752,99028863,DE
+99028864,99028991,US
+99028992,99029503,GB
99029504,99029519,IE
-99029520,99029759,TR
-99029760,99031295,DE
+99029520,99031295,DE
99031296,99031551,GB
-99031552,99031807,DE
+99031552,99031679,DE
+99031680,99031807,US
99031808,99031823,GB
-99031824,99032063,FR
+99031824,99031935,DE
+99031936,99032063,US
99032064,99043839,DE
99043840,99043847,AT
-99043848,99044351,DE
+99043848,99044095,DE
+99044096,99044223,US
+99044224,99044351,DE
99044352,99044359,BE
99044360,99044607,DE
99044608,99044615,HR
@@ -1500,12 +2470,12 @@
100560896,100560959,GB
100560960,100561023,RO
100561024,100561151,GB
-100561152,100564991,RO
+100561152,100561599,RO
+100561600,100561663,US
+100561664,100564991,RO
100564992,100569087,SE
100569088,100569343,FR
-100569344,100569599,SE
-100569600,100569855,FR
-100569856,100573183,SE
+100569344,100573183,SE
100573184,100575231,GB
100575232,100577279,DK
100577280,100579327,RU
@@ -1520,7 +2490,8 @@
100636672,100638719,NL
100638720,100646911,UA
100646912,100663295,RU
-100663296,134874866,US
+100663296,100663296,CN
+100663297,134874866,US
134874867,134874867,DO
134874868,135192575,US
135192576,135200767,MX
@@ -1532,13 +2503,13 @@
135607040,135607295,CA
135607296,135776255,US
135776256,135776511,GU
-135776512,135790591,US
-135790592,135790847,CA
-135790848,135791103,US
+135776512,135791103,US
135791104,135791615,CA
-135791616,135792639,US
-135792640,135794687,CA
-135794688,136237055,US
+135791616,135792383,US
+135792384,135794687,CA
+135794688,135926527,US
+135926528,135926783,VI
+135926784,136237055,US
136237056,136239103,CA
136239104,136404991,US
136404992,136407039,CA
@@ -1546,18 +2517,14 @@
136413184,136415231,CA
136415232,136415665,US
136415666,136415666,FR
-136415667,136689919,US
-136689920,136690175,CA
-136690176,139954241,US
+136415667,139954241,US
139954242,139954242,ES
139954243,152305663,US
152305664,152338431,GB
152338432,167772159,US
184549376,201897983,US
201897984,201898239,PR
-201898240,202182143,US
-202182144,202182399,GB
-202182400,202385407,US
+201898240,202385407,US
202385408,202385919,PR
202385920,202706431,US
202706432,202706943,PR
@@ -1565,9 +2532,11 @@
202935552,202935807,PR
202935808,203272959,US
203272960,203273215,GB
-203273216,203659007,US
-203659008,203659263,VI
-203659264,204047871,US
+203273216,203658975,US
+203658976,203658991,VI
+203658992,204047359,US
+204047360,204047615,VI
+204047616,204047871,US
204047872,204047999,PR
204048000,204048031,US
204048032,204048047,PR
@@ -1577,9 +2546,7 @@
211126784,211126911,PR
211126912,211263999,US
211264000,211264255,SA
-211264256,211597311,US
-211597312,211597567,VI
-211597568,211597719,US
+211264256,211597719,US
211597720,211597727,VI
211597728,212787199,US
212787200,212788223,PR
@@ -1595,25 +2562,39 @@
212793088,212793343,PR
212793344,212794575,US
212794576,212794583,VI
-212794584,214698239,US
+212794584,213799167,US
+213799168,213799423,CA
+213799424,214617343,US
+214617344,214617599,CA
+214617600,214698239,US
214698240,214698255,VI
214698256,214698303,US
214698304,214698311,VI
214698312,214699519,US
214699520,214699647,PR
214699648,214699775,VI
-214699776,214778367,US
-214778368,214778623,PR
-214778624,217709055,US
-217709056,217709311,PR
-217709312,219512063,US
+214699776,214779135,US
+214779136,214779391,PR
+214779392,219249919,US
+219249920,219250175,GB
+219250176,219512063,US
219512064,219512319,GB
219512320,234881023,US
234881024,234883071,CN
234883072,234884095,JP
234884096,234885119,CN
234885120,234889215,VN
-234889216,234913791,KR
+234889216,234893311,JP
+234893312,234895359,KR
+234895360,234895615,TW
+234895616,234895871,MY
+234895872,234896127,TH
+234896128,234896383,MN
+234896384,234896639,IN
+234896640,234896895,AE
+234896896,234897151,PH
+234897152,234897407,TW
+234897408,234913791,KR
234913792,234946559,HK
234946560,234947583,CN
234947584,234950655,JP
@@ -1652,7 +2633,9 @@
243400704,243531775,CN
243531776,243662847,JP
243662848,243793919,CN
-243793920,243859455,HK
+243793920,243858687,HK
+243858688,243858943,GB
+243858944,243859455,HK
243859456,243916799,AU
243916800,243924991,JP
243924992,243990527,KR
@@ -1704,7 +2687,9 @@
265023488,265027583,GB
265027584,265060351,US
265060352,265093119,FR
-265093120,266062079,US
+265093120,265533695,US
+265533696,265533951,JP
+265533952,266062079,US
266062080,266062335,IN
266062336,266070271,US
266070272,266070527,AU
@@ -1834,7 +2819,9 @@
344260608,344260863,GB
344260864,344262655,US
344262656,344262911,GB
-344262912,344588543,US
+344262912,344270847,US
+344270848,344270911,GB
+344270912,344588543,US
344588544,344589055,GB
344589056,344592895,US
344592896,344592945,GB
@@ -1880,7 +2867,8 @@
386842624,386846719,NL
386846720,386862079,US
386862080,386862335,JP
-386862336,386875391,US
+386862336,386862591,KR
+386862592,386875391,US
386875392,386879487,NL
386879488,386887679,US
386887680,386891775,NL
@@ -2075,6 +3063,8 @@
392765440,392765695,GB
392765696,394264575,US
394264576,394264831,CA
+394270720,394271231,NL
+394296320,394296831,NL
398458880,398635007,US
398635008,398643199,NL
398643200,398647295,US
@@ -2109,7 +3099,9 @@
399458304,399466495,NL
399466496,399601663,US
399601664,399618047,NL
-399618048,399630335,US
+399618048,399619839,US
+399619840,399620095,AU
+399620096,399630335,US
399630336,399638527,NL
399638528,399818751,US
399818752,399831039,NL
@@ -2160,7 +3152,19 @@
401130496,401130751,DE
401130752,401137151,US
401137152,401137663,GB
-401137664,401145855,US
+401137664,401142783,US
+401142784,401143039,PE
+401143040,401143295,BZ
+401143296,401143551,NG
+401143552,401143807,IM
+401143808,401144063,SA
+401144064,401144319,VE
+401144320,401144575,BS
+401144576,401144831,MA
+401144832,401145087,OM
+401145088,401145343,CO
+401145344,401145599,SC
+401145600,401145855,YE
401145856,401211391,CA
401211392,401293311,US
401293312,401297407,CA
@@ -2175,7 +3179,15 @@
401547264,401555455,CA
401555456,402096639,US
402096640,402096895,FR
-402096896,402105087,US
+402096896,402097151,US
+402097152,402097407,AR
+402097408,402097663,KE
+402097664,402097919,SY
+402097920,402098175,MX
+402098176,402098431,BN
+402098432,402098687,BH
+402098688,402098943,AW
+402098944,402105087,US
402105088,402105343,GB
402105344,402107391,US
402107392,402107647,IT
@@ -2203,7 +3215,9 @@
402374656,402399231,US
402399232,402403327,CA
402403328,402415615,US
-402415616,402417663,CA
+402415616,402416639,CA
+402416640,402416895,US
+402416896,402417663,CA
402417664,402550015,US
402550016,402550271,CA
402550272,402550783,GB
@@ -2234,9 +3248,9 @@
406061056,406110207,US
406110208,406142975,CA
406142976,406147071,US
-406147072,406151167,CA
+406147072,406159359,CA
406159360,406175743,US
-406183936,406208511,CA
+406175744,406208511,CA
406216704,406241279,US
406241280,406257663,PR
406257664,406274047,US
@@ -2247,10 +3261,8 @@
406323200,406388735,US
406388736,406454271,CA
406454272,406683647,US
-406683648,406683775,CA
-406683776,406683903,US
-406683904,406684159,CA
-406684160,406838783,US
+406683648,406684031,CA
+406684032,406838783,US
406838784,406839295,CA
406839296,406847487,US
406847488,407408639,CA
@@ -2278,6 +3290,7 @@
410189824,410648575,US
410648576,410714111,CA
410714112,411156479,US
+411156480,411160575,CA
411164672,411168767,CA
411168768,411303935,US
411303936,411369471,NL
@@ -2288,7 +3301,9 @@
411639808,411664383,CA
411664384,411680767,US
411680768,411688959,CA
-411688960,411697151,PR
+411688960,411691519,PR
+411691520,411692031,US
+411692032,411697151,PR
411697152,411746303,CA
411746304,411762687,PR
411762688,411770879,CA
@@ -2318,7 +3333,9 @@
412958720,413007871,CA
413007872,413908991,US
413908992,413925375,PR
-413925376,415760383,US
+413925376,414502655,US
+414502656,414502783,CA
+414502784,415760383,US
415760384,416022527,CA
416022528,416059391,US
416059392,416088063,CA
@@ -2334,7 +3351,9 @@
416743424,416776191,CA
416776192,417202175,US
417202176,417267711,CA
-417267712,417366015,US
+417267712,417335807,US
+417335808,417335935,VI
+417335936,417366015,US
417366016,417398783,CA
417398784,417431551,US
417431552,417529855,CA
@@ -2346,9 +3365,7 @@
417796096,417800191,US
417800192,417808383,BS
417808384,417816575,CA
-417820672,417832191,US
-417832192,417832447,VI
-417832448,417857535,US
+417820672,417857535,US
417857536,417923071,AR
417923072,418062335,US
418062336,418070527,CA
@@ -2541,7 +3558,8 @@
460983296,460984319,HK
460984320,460988415,PG
460988416,460994559,JP
-460994560,460995583,MY
+460994560,460995327,MY
+460995328,460995583,SG
460996608,461008895,JP
461008896,461012991,AU
461012992,461045759,KR
@@ -2554,9 +3572,9 @@
461056000,461058047,AU
461058048,461062143,HK
461062144,461078527,IN
-461078528,461078783,FJ
-461078784,461079039,AU
-461079040,461094911,FJ
+461078528,461088767,FJ
+461088768,461089023,AU
+461089024,461094911,FJ
461094912,461096959,HK
461096960,461099007,TW
461099008,461100031,JP
@@ -2662,22 +3680,26 @@
520491648,520491775,IS
520491776,520492031,IE
520492032,520493055,GB
-520493056,520494079,IT
+520493056,520493311,BE
+520493312,520494079,IT
520494080,520494335,FR
-520494336,520494591,IT
+520494336,520494591,CZ
520494592,520494847,CH
520494848,520495103,DK
-520495104,520495871,IT
+520495104,520495359,SE
+520495360,520495615,BE
+520495616,520495871,SE
520495872,520496383,DE
-520496384,520496895,IT
+520496384,520496639,TR
+520496640,520496767,CZ
+520496768,520496895,TR
520496896,520497151,ES
520497152,520497407,FR
520497408,520497919,IT
520497920,520498175,FR
520498176,520498431,CH
520498432,520498687,SE
-520498688,520498943,IT
-520498944,520499199,FR
+520498688,520499199,FR
520499200,520500223,IT
520500224,520500479,LU
520500480,520500735,DE
@@ -2733,18 +3755,22 @@
520949760,520951807,RU
520951808,520953855,IE
520953856,520962047,RU
-520962048,520978431,IE
+520962048,520963407,IE
+520963408,520963408,US
+520963409,520978431,IE
520978432,520980479,RU
520980480,520982527,IT
520982528,520984575,RU
-520984576,520986623,GB
+520984576,520986623,NG
520986624,520988671,PS
520988672,520990719,DE
520990720,520992767,RU
520994816,521011199,BG
521011200,521020415,RO
521020416,521021439,MD
-521021440,521057279,RO
+521021440,521039871,RO
+521039872,521043967,IR
+521043968,521057279,RO
521057280,521058303,MD
521058304,521076735,RO
521076736,521078783,ES
@@ -2849,13 +3875,7 @@
521953280,521961471,RU
521961472,521969663,CZ
521969664,521977855,UA
-521977856,521986303,RU
-521986304,521986559,UA
-521986560,521989631,RU
-521989632,521989887,UA
-521989888,521991679,RU
-521991680,521991935,UA
-521991936,521994239,RU
+521977856,521994239,RU
521994240,522002431,KG
522002432,522010623,IR
522010624,522018815,AE
@@ -2863,7 +3883,9 @@
522027008,522059775,RU
522059776,522125311,CZ
522125312,522133503,MD
-522133504,522135551,NL
+522133504,522134783,NL
+522134784,522134911,US
+522134912,522135551,NL
522135552,522137599,IT
522137600,522141695,CH
522141696,522143743,RU
@@ -3061,11 +4083,14 @@
529596416,529661951,TR
529661952,529727487,GE
529727488,529793023,HR
-529793024,529793337,CZ
-529793338,529793338,RU
-529793339,529793535,CZ
-529793536,529794303,RU
-529794304,529818623,CZ
+529793024,529793279,CZ
+529793280,529794303,RU
+529794304,529795071,CZ
+529795072,529796095,RU
+529796096,529797119,UA
+529797120,529805311,CZ
+529805312,529817599,RU
+529817600,529818623,CZ
529818624,529826303,RU
529826304,529826815,CZ
529826816,529827839,RU
@@ -3160,8 +4185,8 @@
531372544,531372799,DE
531372800,531380223,CH
531380224,531390463,DE
-531390464,531394559,CH
-531394560,531398655,DE
+531390464,531392511,CH
+531392512,531398655,DE
531398656,531400703,RU
531400704,531402751,UA
531402752,531404799,LU
@@ -3193,15 +4218,15 @@
531429408,531429415,IT
531429416,531429599,GB
531429600,531429607,IT
-531429608,531430319,GB
+531429608,531429855,GB
+531429856,531429863,IT
+531429864,531430319,GB
531430320,531430327,IT
531430328,531430823,GB
531430824,531430831,IT
531430832,531430847,GB
531430848,531430855,IT
-531430856,531430927,GB
-531430928,531430935,IT
-531430936,531431423,GB
+531430856,531431423,GB
531431424,531496959,RO
531496960,531628031,PL
531628032,531660799,TR
@@ -3243,7 +4268,9 @@
532246528,532250623,BA
532250624,532283391,GB
532283392,532291583,TR
-532291584,532293631,IE
+532291584,532292351,IE
+532292352,532292607,GB
+532292608,532293631,IE
532293632,532295679,IT
532295680,532297727,KG
532297728,532303871,RU
@@ -3283,8 +4310,7 @@
532381696,532414463,NL
532414464,532676607,IT
532676608,532692991,GE
-532692992,532700927,CZ
-532700928,532701183,SK
+532692992,532701183,CZ
532701184,532703231,GB
532703232,532705279,RU
532705280,532709375,NL
@@ -3324,9 +4350,7 @@
532805632,532807679,SE
532807680,533200895,IT
533200896,533233663,TR
-533233664,533236991,IE
-533236992,533237247,GB
-533237248,533250047,IE
+533233664,533250047,IE
533250048,533254143,RU
533254144,533256191,NL
533256192,533262335,RU
@@ -3336,7 +4360,9 @@
533331968,533397503,UA
533397504,533463039,KW
533463040,533479423,RU
-533479424,533481471,DE
+533479424,533479519,DE
+533479520,533479551,FI
+533479552,533481471,DE
533481472,533483519,NO
533483520,533485567,FR
533485568,533487615,LU
@@ -3385,9 +4411,7 @@
533895168,533897215,TR
533897216,533899263,DE
533899264,533901311,RU
-533901312,533904383,IL
-533904384,533904639,FR
-533904640,533905407,IL
+533901312,533905407,IL
533905408,533913599,RU
533913600,533915647,ES
533915648,533919743,GB
@@ -3402,7 +4426,7 @@
533987328,534118399,DE
534118400,534151167,KW
534151168,534183935,DE
-534183936,534249471,RO
+534183936,534249471,AE
534249472,534253567,GB
534253568,534257663,FR
534257664,534259711,SE
@@ -3430,7 +4454,6 @@
534372352,534374399,KW
534374400,534376447,FR
534376448,534378495,IE
-534378496,534380543,FR
534380544,534511615,AE
534511616,534512639,BZ
534512640,534512895,NL
@@ -3439,10 +4462,12 @@
534513216,534513279,VG
534513280,534513407,NL
534513408,534513663,SE
-534513664,534515455,US
-534515456,534515711,DE
+534513664,534514687,US
+534514688,534515711,DE
534515712,534515967,GB
-534515968,534517759,US
+534515968,534516735,US
+534516736,534516991,GB
+534516992,534517759,US
534517760,534518783,NL
534518784,534519039,DE
534519040,534519167,NL
@@ -3461,9 +4486,7 @@
534519552,534519807,NL
534519808,534521855,US
534521856,534522367,DE
-534522368,534522879,NL
-534522880,534523135,DE
-534523136,534523391,NL
+534522368,534523391,NL
534523392,534523903,DE
534523904,534530047,US
534530048,534544383,DE
@@ -3471,7 +4494,9 @@
534546432,534548479,DE
534548480,534550527,PL
534550528,534560767,RU
-534560768,534609919,GB
+534560768,534573823,GB
+534573824,534574079,NL
+534574080,534609919,GB
534609920,534642687,ES
534642688,534645759,CZ
534645760,534646271,PL
@@ -3533,12 +4558,18 @@
540737758,540737758,BR
540737759,540803071,BZ
540803072,540811263,US
-540811264,540814335,SG
+540811264,540814085,SG
+540814086,540814086,TH
+540814087,540814327,SG
+540814328,540814328,IN
+540814329,540814335,SG
540814336,540814591,US
540814592,540819455,SG
540819456,540820959,US
540820960,540820975,CA
-540820976,540826383,US
+540820976,540825347,US
+540825348,540825348,CA
+540825349,540826383,US
540826384,540826399,CA
540826400,543690751,US
543690752,543691007,AR
@@ -3640,15 +4671,15 @@
543881728,543883263,GB
543883264,544436771,US
544436772,544436775,CA
-544436776,586972927,US
+544436776,545858303,US
+545858304,545858559,PR
+545858560,586972927,US
586972928,586973183,CA
586973184,586977023,US
586977024,586977279,AU
586977280,587006719,US
587006720,587006975,GB
-587006976,587039487,US
-587039488,587039743,NO
-587039744,603979775,US
+587006976,603979775,US
603979776,603980799,CN
603980800,603981823,NP
603981824,604110847,CN
@@ -3749,7 +4780,9 @@
621445120,621805567,ES
621805568,621813759,NL
621813760,621821951,SA
-621821952,621823999,DE
+621821952,621823567,DE
+621823568,621823583,US
+621823584,621823999,DE
621824000,621826047,FR
621826048,621828095,RU
621830144,621838335,FI
@@ -3771,12 +4804,9 @@
621939712,621940479,RU
621940480,621942527,GB
621942528,621969407,RU
-621971456,621971711,IM
-621971712,621971967,GB
-621971968,621972223,IM
-621972224,621972479,GB
-621972480,621972991,IM
-621972992,621973503,GB
+621971456,621972991,IM
+621972992,621973247,GB
+621973248,621973503,IM
621973504,621975551,IE
621975552,621977599,RU
621977600,621981695,FR
@@ -3830,18 +4860,13 @@
622510080,622512127,PL
622512128,622514175,DE
622514176,622518271,NO
-622518272,622519295,NL
+622518272,622518527,GB
+622518528,622519295,NL
622519296,622520319,FR
622520320,622522367,RU
622522368,622524415,FR
622524416,622526463,ES
-622526464,622553087,DE
-622553088,622555135,US
-622555136,622559743,DE
-622559744,622561791,AT
-622561792,622582271,DE
-622582272,622583295,AT
-622583296,622591999,DE
+622526464,622591999,DE
622592000,622624767,OM
622624768,622626815,NO
622626816,622630911,DK
@@ -3896,7 +4921,7 @@
623077856,623077857,WS
623077858,623077861,NZ
623077862,623083519,CH
-623083520,623116287,RO
+623083520,623116287,ES
623116288,623378431,KW
623378432,623509503,OM
623509504,623640575,RO
@@ -3922,9 +4947,9 @@
623794176,623796223,ES
623796224,623798271,GB
623798272,623800319,GE
-623800320,623801087,SE
-623801088,623801599,US
-623801600,623801855,SE
+623800320,623800831,SE
+623800832,623801087,NL
+623801088,623801855,US
623801856,623802367,NL
623802368,623802879,SE
623802880,623804148,NL
@@ -3967,9 +4992,17 @@
624566272,624568319,RU
624568320,624570367,BE
624570368,624574463,DE
-624574464,624574715,NL
+624574464,624574535,NL
+624574536,624574543,US
+624574544,624574559,NL
+624574560,624574567,US
+624574568,624574715,NL
624574716,624574719,US
-624574720,624575063,NL
+624574720,624574855,NL
+624574856,624574863,US
+624574864,624575039,NL
+624575040,624575047,US
+624575048,624575063,NL
624575064,624575071,US
624575072,624575135,NL
624575136,624575143,US
@@ -3977,35 +5010,35 @@
624575400,624575403,US
624575404,624575679,NL
624575680,624575743,US
-624575744,624575871,NL
-624575872,624575879,US
-624575880,624576031,NL
-624576032,624576039,US
-624576040,624576127,NL
+624575744,624575759,NL
+624575760,624575767,BE
+624575768,624575895,NL
+624575896,624575903,US
+624575904,624576111,NL
+624576112,624576119,US
+624576120,624576127,NL
624576128,624576131,US
-624576132,624576471,NL
+624576132,624576287,NL
+624576288,624576295,US
+624576296,624576471,NL
624576472,624576479,US
-624576480,624576887,NL
+624576480,624576487,NL
+624576488,624576495,CA
+624576496,624576887,NL
624576888,624576895,GB
-624576896,624577135,NL
-624577136,624577139,GB
-624577140,624577151,NL
+624576896,624577151,NL
624577152,624577215,GB
624577216,624577307,NL
624577308,624577311,US
624577312,624577483,NL
624577484,624577487,US
-624577488,624577863,NL
-624577864,624577871,DK
-624577872,624578415,NL
-624578416,624578423,US
-624578424,624578719,NL
-624578720,624578723,GB
-624578724,624578887,NL
+624577488,624578887,NL
624578888,624578895,US
624578896,624578951,NL
624578952,624578955,US
-624578956,624579075,NL
+624578956,624579039,NL
+624579040,624579047,US
+624579048,624579075,NL
624579076,624579079,US
624579080,624579423,NL
624579424,624579455,US
@@ -4017,17 +5050,31 @@
624579624,624579627,US
624579628,624580132,NL
624580133,624580133,GB
-624580134,624580151,NL
+624580134,624580135,NL
+624580136,624580143,US
+624580144,624580151,NL
624580152,624580159,ES
-624580160,624581071,NL
+624580160,624580231,NL
+624580232,624580239,US
+624580240,624580263,NL
+624580264,624580271,US
+624580272,624580495,NL
+624580496,624580503,US
+624580504,624580559,NL
+624580560,624580567,US
+624580568,624581071,NL
624581072,624581087,US
624581088,624581135,NL
624581136,624581139,US
624581140,624581199,NL
624581200,624581207,GB
-624581208,624581599,NL
+624581208,624581535,NL
+624581536,624581543,US
+624581544,624581599,NL
624581600,624581631,US
-624581632,624582123,NL
+624581632,624581927,NL
+624581928,624581935,US
+624581936,624582123,NL
624582124,624582127,US
624582128,624582139,NL
624582140,624582147,US
@@ -4035,7 +5082,15 @@
624582288,624582295,US
624582296,624582399,NL
624582400,624582403,US
-624582404,624584111,NL
+624582404,624582615,NL
+624582616,624582623,US
+624582624,624582631,NL
+624582632,624582639,US
+624582640,624582759,NL
+624582760,624582767,GB
+624582768,624583239,NL
+624583240,624583247,GB
+624583248,624584111,NL
624584112,624584119,US
624584120,624584159,NL
624584160,624584175,US
@@ -4043,13 +5098,19 @@
624584384,624584391,US
624584392,624584415,NL
624584416,624584423,US
-624584424,624586279,NL
+624584424,624586183,NL
+624586184,624586191,US
+624586192,624586279,NL
624586280,624586287,US
-624586288,624587583,NL
+624586288,624587111,NL
+624587112,624587119,US
+624587120,624587583,NL
624587584,624587599,US
624587600,624587871,NL
624587872,624587903,US
-624587904,624588383,NL
+624587904,624587935,NL
+624587936,624587943,US
+624587944,624588383,NL
624588384,624588391,US
624588392,624588399,GB
624588400,624588927,NL
@@ -4058,173 +5119,792 @@
624589160,624589167,IT
624589168,624589199,NL
624589200,624589215,KE
-624589216,624589223,NL
-624589224,624589231,US
-624589232,624589719,NL
+624589216,624589375,NL
+624589376,624589383,US
+624589384,624589719,NL
624589720,624589727,US
-624589728,624589967,NL
+624589728,624589783,NL
+624589784,624589791,US
+624589792,624589967,NL
624589968,624589975,US
624589976,624590847,NL
624590848,624640527,FR
624640528,624640543,GB
-624640544,624640759,FR
+624640544,624640551,FR
+624640552,624640559,IE
+624640560,624640575,BE
+624640576,624640735,FR
+624640736,624640739,GB
+624640740,624640759,FR
624640760,624640767,NL
-624640768,624640951,FR
+624640768,624640775,ES
+624640776,624640847,FR
+624640848,624640851,ES
+624640852,624640903,FR
+624640904,624640907,CZ
+624640908,624640927,FR
+624640928,624640931,ES
+624640932,624640935,FR
+624640936,624640939,FI
+624640940,624640943,FR
+624640944,624640951,ES
624640952,624640959,PT
-624640960,624643019,FR
+624640960,624640967,NL
+624640968,624640991,FR
+624640992,624640999,CH
+624641000,624641023,FR
+624641024,624641055,GB
+624641056,624641063,FR
+624641064,624641067,GB
+624641068,624641119,FR
+624641120,624641127,PL
+624641128,624641195,FR
+624641196,624641199,PL
+624641200,624641207,DE
+624641208,624641223,FR
+624641224,624641231,PT
+624641232,624641311,FR
+624641312,624641319,BE
+624641320,624641323,ES
+624641324,624641367,FR
+624641368,624641371,DE
+624641372,624642055,FR
+624642056,624642063,PL
+624642064,624642079,BE
+624642080,624642127,FR
+624642128,624642159,GB
+624642160,624642231,FR
+624642232,624642235,ES
+624642236,624642255,FR
+624642256,624642271,IT
+624642272,624642379,FR
+624642380,624642383,FI
+624642384,624642495,FR
+624642496,624642511,ES
+624642512,624642591,FR
+624642592,624642623,DE
+624642624,624642679,FR
+624642680,624642683,IT
+624642684,624642719,FR
+624642720,624642723,IT
+624642724,624642743,FR
+624642744,624642751,GB
+624642752,624642767,FR
+624642768,624642783,GB
+624642784,624642879,FR
+624642880,624642883,IT
+624642884,624643019,FR
624643020,624643023,IT
-624643024,624645147,FR
+624643024,624643039,FR
+624643040,624643055,GB
+624643056,624643071,FR
+624643072,624643087,GB
+624643088,624643095,FR
+624643096,624643103,IT
+624643104,624643187,FR
+624643188,624643191,GB
+624643192,624643343,FR
+624643344,624643351,DE
+624643352,624643359,FR
+624643360,624643367,DE
+624643368,624643503,FR
+624643504,624643519,DE
+624643520,624643631,FR
+624643632,624643647,PL
+624643648,624643775,FR
+624643776,624643783,IT
+624643784,624644063,FR
+624644064,624644095,CH
+624644096,624644275,FR
+624644276,624644279,GB
+624644280,624644615,FR
+624644616,624644619,DE
+624644620,624644631,FR
+624644632,624644635,DE
+624644636,624644639,PL
+624644640,624644675,FR
+624644676,624644679,DE
+624644680,624644723,FR
+624644724,624644727,NL
+624644728,624644815,FR
+624644816,624644819,DE
+624644820,624645127,FR
+624645128,624645131,DE
+624645132,624645147,FR
624645148,624645151,IT
-624645152,624646343,FR
+624645152,624645279,FR
+624645280,624645295,CH
+624645296,624645619,FR
+624645620,624645623,NL
+624645624,624645759,FR
+624645760,624645823,DE
+624645824,624646095,FR
+624646096,624646099,GB
+624646100,624646143,FR
+624646144,624646159,ES
+624646160,624646235,FR
+624646236,624646239,CZ
+624646240,624646255,FR
+624646256,624646263,DE
+624646264,624646343,FR
624646344,624646347,NL
-624646348,624646583,FR
+624646348,624646351,FR
+624646352,624646367,DE
+624646368,624646495,FR
+624646496,624646527,ES
+624646528,624646535,CH
+624646536,624646583,FR
624646584,624646591,NL
-624646592,624647171,FR
+624646592,624646639,FR
+624646640,624646643,IE
+624646644,624646975,FR
+624646976,624646983,PL
+624646984,624647055,FR
+624647056,624647063,DE
+624647064,624647171,FR
624647172,624647183,ES
-624647184,624648139,FR
+624647184,624647247,FR
+624647248,624647263,GB
+624647264,624647295,FR
+624647296,624647327,ES
+624647328,624647359,FR
+624647360,624647375,PL
+624647376,624647391,FR
+624647392,624647399,PL
+624647400,624647455,FR
+624647456,624647471,ES
+624647472,624647487,FR
+624647488,624647503,PT
+624647504,624647615,FR
+624647616,624647623,PL
+624647624,624647631,ES
+624647632,624648079,FR
+624648080,624648095,ES
+624648096,624648111,FR
+624648112,624648115,IT
+624648116,624648127,FR
+624648128,624648135,DE
+624648136,624648139,FR
624648140,624648143,ES
-624648144,624657711,FR
-624657712,624657715,ES
-624657716,624657883,FR
+624648144,624653311,FR
+624653312,624653823,GB
+624653824,624656415,FR
+624656416,624656447,IT
+624656448,624656479,PL
+624656480,624656511,NL
+624656512,624656543,FR
+624656544,624656575,PL
+624656576,624656607,FR
+624656608,624656639,IT
+624656640,624656739,FR
+624656740,624656743,CZ
+624656744,624656767,FR
+624656768,624656799,NL
+624656800,624656975,FR
+624656976,624656979,PT
+624656980,624657147,FR
+624657148,624657155,ES
+624657156,624657183,FR
+624657184,624657199,IE
+624657200,624657279,FR
+624657280,624657295,IT
+624657296,624657299,DE
+624657300,624657307,FR
+624657308,624657311,PT
+624657312,624657343,FR
+624657344,624657359,ES
+624657360,624657475,FR
+624657476,624657479,DE
+624657480,624657487,FR
+624657488,624657491,PT
+624657492,624657663,FR
+624657664,624657667,ES
+624657668,624657671,FI
+624657672,624657675,PL
+624657676,624657707,FR
+624657708,624657715,ES
+624657716,624657779,FR
+624657780,624657783,GB
+624657784,624657799,FR
+624657800,624657803,IE
+624657804,624657815,FR
+624657816,624657819,ES
+624657820,624657823,GB
+624657824,624657883,FR
624657884,624657887,ES
-624657888,624658323,FR
-624658324,624658327,IE
-624658328,624658479,FR
+624657888,624657967,FR
+624657968,624657975,GB
+624657976,624658015,FR
+624658016,624658031,IT
+624658032,624658087,FR
+624658088,624658095,NL
+624658096,624658175,FR
+624658176,624658179,BE
+624658180,624658183,ES
+624658184,624658319,FR
+624658320,624658335,IE
+624658336,624658431,FR
+624658432,624658447,IT
+624658448,624658479,FR
624658480,624658483,DE
-624658484,624659031,FR
+624658484,624658671,FR
+624658672,624658675,IT
+624658676,624658799,FR
+624658800,624658803,PT
+624658804,624658843,FR
+624658844,624658847,ES
+624658848,624659031,FR
624659032,624659039,IT
-624659040,624660827,FR
+624659040,624659055,ES
+624659056,624659071,FR
+624659072,624659135,ES
+624659136,624659199,FR
+624659200,624659215,DE
+624659216,624659279,FR
+624659280,624659295,NL
+624659296,624659307,FR
+624659308,624659311,DE
+624659312,624659315,GB
+624659316,624659391,FR
+624659392,624659407,IT
+624659408,624659455,FR
+624659456,624659487,PL
+624659488,624659647,FR
+624659648,624659663,PL
+624659664,624659799,FR
+624659800,624659803,ES
+624659804,624659871,FR
+624659872,624659903,ES
+624659904,624659935,FR
+624659936,624659951,BE
+624659952,624659967,FR
+624659968,624659975,GB
+624659976,624660503,FR
+624660504,624660511,IT
+624660512,624660563,FR
+624660564,624660567,NL
+624660568,624660607,FR
+624660608,624660639,GB
+624660640,624660827,FR
624660828,624660831,ES
-624660832,624661247,FR
+624660832,624660883,FR
+624660884,624660887,DE
+624660888,624660911,FR
+624660912,624660915,PL
+624660916,624660919,IT
+624660920,624661247,FR
624661248,624661251,ES
-624661252,624661787,FR
+624661252,624661279,FR
+624661280,624661283,CZ
+624661284,624661787,FR
624661788,624661788,RO
-624661789,624661955,FR
+624661789,624661791,FR
+624661792,624661823,DE
+624661824,624661955,FR
624661956,624661959,PL
-624661960,624663951,FR
+624661960,624661967,ES
+624661968,624661975,FI
+624661976,624662455,FR
+624662456,624662459,ES
+624662460,624662543,FR
+624662544,624662559,ES
+624662560,624662623,FR
+624662624,624662627,DE
+624662628,624662751,FR
+624662752,624662755,CZ
+624662756,624662759,FR
+624662760,624662763,CH
+624662764,624662911,FR
+624662912,624663039,GB
+624663040,624663327,FR
+624663328,624663359,DE
+624663360,624663391,PT
+624663392,624663667,FR
+624663668,624663671,ES
+624663672,624663695,FR
+624663696,624663711,IT
+624663712,624663851,FR
+624663852,624663855,GB
+624663856,624663863,FR
+624663864,624663867,DE
+624663868,624663871,ES
+624663872,624663951,FR
624663952,624663955,ES
-624663956,624664527,FR
+624663956,624663971,FR
+624663972,624663975,IT
+624663976,624664255,FR
+624664256,624664287,GB
+624664288,624664319,ES
+624664320,624664351,FR
+624664352,624664367,ES
+624664368,624664479,FR
+624664480,624664483,IT
+624664484,624664527,FR
624664528,624664531,ES
-624664532,624664615,FR
-624664616,624664619,IT
-624664620,624664676,FR
+624664532,624664611,FR
+624664612,624664619,IT
+624664620,624664635,FR
+624664636,624664639,PL
+624664640,624664655,FR
+624664656,624664663,LT
+624664664,624664667,FI
+624664668,624664671,NL
+624664672,624664676,FR
624664677,624664677,IE
-624664678,624665587,FR
+624664678,624664863,FR
+624664864,624664895,ES
+624664896,624664959,NL
+624664960,624665247,FR
+624665248,624665263,PL
+624665264,624665391,FR
+624665392,624665407,PT
+624665408,624665551,FR
+624665552,624665555,LT
+624665556,624665567,FR
+624665568,624665583,GB
+624665584,624665587,FR
624665588,624665591,DE
-624665592,624665803,FR
+624665592,624665607,FR
+624665608,624665611,ES
+624665612,624665727,FR
+624665728,624665759,GB
+624665760,624665775,FR
+624665776,624665779,GB
+624665780,624665783,NL
+624665784,624665787,FR
+624665788,624665791,ES
+624665792,624665803,FR
624665804,624665807,NL
-624665808,624665951,FR
+624665808,624665811,CH
+624665812,624665859,FR
+624665860,624665863,PT
+624665864,624665951,FR
624665952,624665955,NL
-624665956,624667471,FR
+624665956,624665999,FR
+624666000,624666015,BE
+624666016,624666031,FR
+624666032,624666047,PL
+624666048,624666371,FR
+624666372,624666375,BE
+624666376,624666391,FR
+624666392,624666399,DE
+624666400,624666431,FR
+624666432,624666495,IT
+624666496,624666727,FR
+624666728,624666731,PL
+624666732,624666735,BE
+624666736,624666739,IT
+624666740,624666879,FR
+624666880,624666883,IT
+624666884,624666887,GB
+624666888,624666907,FR
+624666908,624666911,GB
+624666912,624666927,FR
+624666928,624666943,BE
+624666944,624666959,IE
+624666960,624666995,FR
+624666996,624666999,NL
+624667000,624667087,FR
+624667088,624667103,ES
+624667104,624667167,FR
+624667168,624667199,GB
+624667200,624667327,FR
+624667328,624667391,NL
+624667392,624667439,FR
+624667440,624667455,GB
+624667456,624667471,FR
624667472,624667475,IT
-624667476,624668063,FR
+624667476,624667599,FR
+624667600,624667603,IT
+624667604,624667827,FR
+624667828,624667831,ES
+624667832,624668063,FR
624668064,624668079,BE
-624668080,624668639,FR
+624668080,624668511,FR
+624668512,624668543,DE
+624668544,624668607,FR
+624668608,624668639,PT
624668640,624668643,NL
-624668644,624669795,FR
+624668644,624668715,FR
+624668716,624668735,ES
+624668736,624668751,FR
+624668752,624668767,GB
+624668768,624668815,FR
+624668816,624668831,ES
+624668832,624668863,FR
+624668864,624668879,ES
+624668880,624669011,FR
+624669012,624669015,DE
+624669016,624669247,FR
+624669248,624669255,DE
+624669256,624669311,FR
+624669312,624669327,ES
+624669328,624669359,FR
+624669360,624669367,IT
+624669368,624669439,FR
+624669440,624669455,NL
+624669456,624669499,FR
+624669500,624669503,DE
+624669504,624669583,FR
+624669584,624669591,IT
+624669592,624669727,FR
+624669728,624669743,GB
+624669744,624669795,FR
624669796,624669799,ES
-624669800,624671455,FR
+624669800,624669871,FR
+624669872,624669879,NL
+624669880,624669887,ES
+624669888,624669963,FR
+624669964,624669967,LT
+624669968,624669983,FR
+624669984,624669987,IT
+624669988,624670147,FR
+624670148,624670151,CZ
+624670152,624670195,FR
+624670196,624670199,LT
+624670200,624670391,FR
+624670392,624670395,NL
+624670396,624670399,GB
+624670400,624670403,FR
+624670404,624670407,ES
+624670408,624670443,FR
+624670444,624670447,ES
+624670448,624670799,FR
+624670800,624670803,GB
+624670804,624670895,FR
+624670896,624670903,DE
+624670904,624670915,FR
+624670916,624670919,ES
+624670920,624671263,FR
+624671264,624671279,ES
+624671280,624671407,FR
+624671408,624671423,GB
+624671424,624671439,FR
+624671440,624671455,IT
624671456,624671471,ES
-624671472,624672547,FR
+624671472,624671855,FR
+624671856,624671871,GB
+624671872,624671935,FR
+624671936,624671943,NL
+624671944,624672067,FR
+624672068,624672071,DE
+624672072,624672095,FR
+624672096,624672127,CZ
+624672128,624672131,FR
+624672132,624672135,BE
+624672136,624672175,FR
+624672176,624672179,IT
+624672180,624672511,FR
+624672512,624672515,LT
+624672516,624672519,IT
+624672520,624672523,FR
+624672524,624672527,GB
+624672528,624672547,FR
624672548,624672551,ES
-624672552,624672559,FR
+624672552,624672555,FI
+624672556,624672559,FR
624672560,624672563,IT
-624672564,624673287,FR
+624672564,624672607,FR
+624672608,624672615,NL
+624672616,624672671,FR
+624672672,624672703,PL
+624672704,624673279,FR
+624673280,624673283,CH
+624673284,624673287,FR
624673288,624673295,DE
-624673296,624673451,FR
+624673296,624673303,FR
+624673304,624673307,GB
+624673308,624673311,FR
+624673312,624673343,CH
+624673344,624673435,FR
+624673436,624673439,DE
+624673440,624673451,FR
624673452,624673455,ES
624673456,624673535,FR
624673536,624673791,ES
-624673792,624673803,FR
+624673792,624673795,PL
+624673796,624673799,DE
+624673800,624673803,FR
624673804,624673807,NL
-624673808,624673903,FR
+624673808,624673823,PL
+624673824,624673871,FR
+624673872,624673879,PL
+624673880,624673883,FR
+624673884,624673887,PL
+624673888,624673891,FI
+624673892,624673895,DE
+624673896,624673903,FR
624673904,624673919,ES
-624673920,624675691,FR
+624673920,624673955,FR
+624673956,624673959,IT
+624673960,624674079,FR
+624674080,624674111,PT
+624674112,624674339,FR
+624674340,624674343,NL
+624674344,624674459,FR
+624674460,624674463,PL
+624674464,624674495,FR
+624674496,624674503,GB
+624674504,624674527,FR
+624674528,624674559,DE
+624674560,624674735,FR
+624674736,624674739,ES
+624674740,624674783,FR
+624674784,624674815,GB
+624674816,624675055,FR
+624675056,624675059,DE
+624675060,624675691,FR
624675692,624675695,ES
-624675696,624675775,FR
+624675696,624675719,FR
+624675720,624675727,NL
+624675728,624675775,FR
624675776,624675779,ES
-624675780,624676003,FR
+624675780,624675803,FR
+624675804,624675807,ES
+624675808,624675839,GB
+624675840,624676003,FR
624676004,624676007,DE
-624676008,624676087,FR
+624676008,624676019,FR
+624676020,624676023,DE
+624676024,624676087,FR
624676088,624676091,DE
-624676092,624676715,FR
+624676092,624676183,FR
+624676184,624676191,GB
+624676192,624676495,FR
+624676496,624676511,BE
+624676512,624676715,FR
624676716,624676719,ES
-624676720,624677463,FR
+624676720,624676799,FR
+624676800,624676863,IT
+624676864,624676939,FR
+624676940,624676943,ES
+624676944,624677055,FR
+624677056,624677087,IT
+624677088,624677119,PL
+624677120,624677247,FR
+624677248,624677263,GB
+624677264,624677279,FI
+624677280,624677407,FR
+624677408,624677439,ES
+624677440,624677463,FR
624677464,624677467,ES
624677468,624677683,FR
624677684,624677687,NL
-624677688,624677767,FR
+624677688,624677727,FR
+624677728,624677731,IT
+624677732,624677767,FR
624677768,624677775,NL
-624677776,624678391,FR
+624677776,624677983,FR
+624677984,624678015,GB
+624678016,624678187,FR
+624678188,624678191,DE
+624678192,624678363,FR
+624678364,624678367,ES
+624678368,624678391,FR
624678392,624678399,NL
-624678400,624678487,FR
+624678400,624678415,FR
+624678416,624678431,GB
+624678432,624678463,FR
+624678464,624678479,PL
+624678480,624678487,FR
624678488,624678495,NL
-624678496,624679175,FR
+624678496,624678527,FR
+624678528,624678543,CH
+624678544,624678591,FR
+624678592,624678655,PT
+624678656,624679175,FR
624679176,624679183,NL
624679184,624679199,FR
624679200,624679203,ES
-624679204,624679679,FR
+624679204,624679311,FR
+624679312,624679327,DE
+624679328,624679391,FR
+624679392,624679407,GB
+624679408,624679679,FR
624679680,624679687,NL
-624679688,624679843,FR
+624679688,624679695,PL
+624679696,624679775,FR
+624679776,624679791,GB
+624679792,624679795,IT
+624679796,624679843,FR
624679844,624679847,ES
-624679848,624680931,FR
+624679848,624680191,FR
+624680192,624680255,IT
+624680256,624680511,FR
+624680512,624680527,IT
+624680528,624680735,FR
+624680736,624680743,IT
+624680744,624680747,NL
+624680748,624680895,FR
+624680896,624680927,ES
+624680928,624680931,FR
624680932,624680935,NL
-624680936,624681351,FR
+624680936,624681095,FR
+624681096,624681103,NL
+624681104,624681279,FR
+624681280,624681295,GB
+624681296,624681327,FR
+624681328,624681331,CH
+624681332,624681335,PL
+624681336,624681351,FR
624681352,624681359,NL
-624681360,624681807,FR
+624681360,624681439,FR
+624681440,624681447,CH
+624681448,624681451,DE
+624681452,624681807,FR
624681808,624681823,BE
-624681824,624683775,FR
+624681824,624681967,FR
+624681968,624681983,ES
+624681984,624681999,IT
+624682000,624682111,FR
+624682112,624682127,IT
+624682128,624682795,FR
+624682796,624682799,NL
+624682800,624683067,FR
+624683068,624683071,GB
+624683072,624683199,FR
+624683200,624683215,ES
+624683216,624683231,DE
+624683232,624683295,FR
+624683296,624683311,ES
+624683312,624683519,FR
+624683520,624683583,GB
+624683584,624683679,FR
+624683680,624683687,GB
+624683688,624683775,FR
624683776,624683779,DE
624683780,624683783,FR
624683784,624683787,DE
-624683788,624683975,FR
+624683788,624683791,PL
+624683792,624683815,FR
+624683816,624683823,PL
+624683824,624683887,FR
+624683888,624683903,GB
+624683904,624683935,FR
+624683936,624683943,DE
+624683944,624683975,FR
624683976,624683983,GB
-624683984,624684183,FR
+624683984,624683991,FR
+624683992,624683999,IT
+624684000,624684103,FR
+624684104,624684111,FI
+624684112,624684175,FR
+624684176,624684183,GB
624684184,624684191,IT
624684192,624684199,FR
624684200,624684203,IT
624684204,624684207,FR
624684208,624684211,ES
-624684212,624684799,FR
+624684212,624684287,FR
+624684288,624684303,IT
+624684304,624684511,FR
+624684512,624684543,NL
+624684544,624684671,FR
+624684672,624684679,DE
+624684680,624684735,FR
+624684736,624684767,GB
+624684768,624684775,ES
+624684776,624684799,FR
624684800,624684803,DE
-624684804,624685711,FR
+624684804,624684831,FR
+624684832,624684847,DE
+624684848,624685055,FR
+624685056,624685059,GB
+624685060,624685063,FI
+624685064,624685215,FR
+624685216,624685219,GB
+624685220,624685263,FR
+624685264,624685279,BE
+624685280,624685311,DE
+624685312,624685503,FR
+624685504,624685535,BE
+624685536,624685539,PT
+624685540,624685559,FR
+624685560,624685567,PT
+624685568,624685711,FR
624685712,624685715,ES
-624685716,624685799,FR
+624685716,624685775,FR
+624685776,624685791,DE
+624685792,624685799,FR
624685800,624685803,ES
624685804,624685919,FR
624685920,624685923,ES
624685924,624685943,FR
624685944,624685947,IT
-624685948,624686627,FR
+624685948,624685951,GB
+624685952,624685983,FR
+624685984,624685987,IT
+624685988,624686207,FR
+624686208,624686239,GB
+624686240,624686271,FR
+624686272,624686303,GB
+624686304,624686335,IE
+624686336,624686627,FR
624686628,624686631,ES
624686632,624686667,FR
624686668,624686671,ES
-624686672,624686711,FR
+624686672,624686687,GB
+624686688,624686711,FR
624686712,624686715,ES
-624686716,624687343,FR
+624686716,624686719,FR
+624686720,624686735,NL
+624686736,624686911,FR
+624686912,624686975,GB
+624686976,624687055,FR
+624687056,624687071,IE
+624687072,624687343,FR
624687344,624687346,CZ
624687347,624687347,ES
-624687348,624687827,FR
+624687348,624687615,FR
+624687616,624687619,BE
+624687620,624687623,FR
+624687624,624687627,GB
+624687628,624687827,FR
624687828,624687831,ES
-624687832,624688007,FR
+624687832,624687967,FR
+624687968,624687983,IT
+624687984,624688007,FR
624688008,624688015,ES
-624688016,624688307,FR
+624688016,624688127,FR
+624688128,624688143,PT
+624688144,624688287,FR
+624688288,624688303,PL
+624688304,624688307,FR
624688308,624688311,ES
-624688312,624688487,FR
+624688312,624688319,FR
+624688320,624688327,FI
+624688328,624688335,PL
+624688336,624688487,FR
624688488,624688491,ES
624688492,624688639,FR
624688640,624688643,ES
-624688644,624688691,FR
+624688644,624688671,FR
+624688672,624688687,PL
+624688688,624688691,FR
624688692,624688695,ES
-624688696,624688779,FR
+624688696,624688723,FR
+624688724,624688727,CH
+624688728,624688779,FR
624688780,624688783,ES
624688784,624688791,FR
624688792,624688795,ES
624688796,624688831,FR
624688832,624688835,ES
-624688836,624689076,FR
+624688836,624688839,FR
+624688840,624688847,ES
+624688848,624688863,FR
+624688864,624688895,ES
+624688896,624688999,FR
+624689000,624689007,ES
+624689008,624689055,FR
+624689056,624689063,ES
+624689064,624689075,FR
+624689076,624689076,ES
624689077,624689078,BE
-624689079,624689151,FR
+624689079,624689079,ES
+624689080,624689119,FR
+624689120,624689123,GB
+624689124,624689151,FR
624689152,624691199,DE
624691200,624693247,FR
624693248,624695295,RU
@@ -4244,7 +5924,7 @@
624738304,624740351,NL
624740352,624742399,DE
624742400,624746495,RU
-624746496,624754687,RO
+624746496,624754687,BG
624754688,624787455,AZ
624787456,624791551,DE
624791552,624795647,ES
@@ -4271,7 +5951,8 @@
625506304,625508351,PL
625508352,625512447,AZ
625512448,625514495,DE
-625514496,625515263,GB
+625514496,625514751,GG
+625514752,625515263,GB
625515264,625516031,GG
625516032,625516543,GB
625516544,625518591,BE
@@ -4284,9 +5965,7 @@
625524480,625524735,SE
625524736,625541119,FR
625541120,625606655,UA
-625606656,625621667,NL
-625621668,625621671,DE
-625621672,625672191,NL
+625606656,625672191,NL
625672192,625674239,RU
625674240,625676287,TR
625676288,625680383,MD
@@ -4332,7 +6011,9 @@
625868800,625999871,RU
625999872,627048447,DE
627048448,627113983,DK
-627113984,627145727,RO
+627113984,627138559,RO
+627138560,627142655,FR
+627142656,627145727,RO
627145728,627146751,ES
627146752,627179519,NL
627179520,627212287,IR
@@ -4344,6 +6025,7 @@
627230720,627232767,IR
627232768,627236863,PL
627236864,627238911,IQ
+627240804,627240804,US
627240960,627245055,RU
627245056,627277823,KZ
627277824,627294207,SA
@@ -4371,8 +6053,7 @@
628246528,628248575,MT
628248576,628250623,FI
628250624,628252671,NL
-628252672,628259071,DE
-628259072,628260863,SC
+628252672,628260863,DE
628260864,628277247,AZ
628277248,628293631,IR
628293632,628359167,UA
@@ -4429,8 +6110,7 @@
629196800,629198847,AZ
629198848,629202943,DK
629202944,629207039,RO
-629207040,629211135,IR
-629211136,629276671,RO
+629207040,629276671,IR
629276672,629293055,PL
629293056,629309439,TR
629309440,629313535,DE
@@ -4483,7 +6163,9 @@
629985280,629987327,TR
629987328,629989375,SE
629989376,629991423,FR
-629991424,629993471,NL
+629991424,629991935,US
+629991936,629992447,NL
+629992448,629993471,US
629993472,629997567,JO
629997568,630063103,SA
630063104,630128639,IL
@@ -4551,7 +6233,8 @@
630980608,630981631,MD
630981632,630982655,RO
630982656,630984703,MD
-630984704,630998271,RO
+630984704,630988799,IR
+630988800,630998271,RO
630998272,630998783,MD
630998784,631001087,RO
631001088,631005183,MD
@@ -4592,7 +6275,25 @@
632946688,632963071,AT
632963072,632979455,AM
632979456,633012223,IT
-633012224,633063679,FR
+633012224,633059583,FR
+633059584,633059615,ES
+633059616,633059647,DE
+633059648,633059839,FR
+633059840,633059871,IT
+633059872,633059983,FR
+633059984,633059987,GB
+633059988,633060031,FR
+633060032,633060159,IT
+633060160,633060223,FR
+633060224,633060287,GB
+633060288,633060511,FR
+633060512,633060543,DE
+633060544,633060607,BE
+633060608,633061119,FR
+633061120,633061247,IT
+633061248,633061311,NL
+633061312,633061375,DE
+633061376,633063679,FR
633063680,633063935,PL
633063936,633064191,FR
633064192,633064447,GB
@@ -4713,15 +6414,11 @@
635195392,635197439,RU
635197440,635199591,GB
635199592,635199599,IT
-635199600,635199647,GB
-635199648,635199655,IT
-635199656,635199775,GB
+635199600,635199775,GB
635199776,635199783,IT
635199784,635200167,GB
635200168,635200175,IT
-635200176,635200199,GB
-635200200,635200207,IT
-635200208,635200263,GB
+635200176,635200263,GB
635200264,635200271,IT
635200272,635200335,GB
635200336,635200343,IT
@@ -4737,15 +6434,11 @@
635200960,635200967,IT
635200968,635200991,GB
635200992,635200999,IT
-635201000,635201023,GB
-635201024,635201031,IT
-635201032,635201087,GB
+635201000,635201087,GB
635201088,635201095,IT
635201096,635201159,GB
635201160,635201167,IT
-635201168,635201255,GB
-635201256,635201263,IT
-635201264,635201455,GB
+635201168,635201455,GB
635201456,635201463,IT
635201464,635203583,GB
635203584,635207679,JO
@@ -4843,8 +6536,7 @@
636966656,636966911,IT
636966912,636967167,DE
636967168,636967935,FR
-636967936,636968191,IT
-636968192,636968447,ES
+636967936,636968447,DE
636968448,636968703,BE
636968704,636968959,DE
636968960,636974079,TR
@@ -4898,15 +6590,11 @@
637337088,637337599,RU
637337600,637403135,NO
637403136,637534207,IR
-637534208,641736959,US
-641736960,641737215,CA
-641737216,641737471,US
-641737472,641737727,CA
-641737728,641761535,US
+637534208,641761535,US
641761536,641761791,CA
641761792,641763071,US
-641763072,641763583,CA
-641763584,641765375,US
+641763072,641763327,CA
+641763328,641765375,US
641765376,641765887,CA
641765888,641766399,US
641766400,641767423,CA
@@ -4915,92 +6603,104 @@
641768960,641769727,US
641769728,641769983,CA
641769984,641771519,US
-641771520,641771775,CA
-641771776,641773055,US
+641771520,641772287,CA
+641772288,641773055,US
641773056,641773311,CA
-641773312,642093055,US
-642093056,642094591,CA
-642094592,642388479,US
+641773312,641828351,US
+641828352,641828607,MX
+641828608,641829057,US
+641829058,641829058,MX
+641829059,642089215,US
+642089216,642089471,CA
+642089472,642093055,US
+642093056,642093311,CA
+642093312,642093567,US
+642093568,642094079,CA
+642094080,642094335,US
+642094336,642094591,CA
+642094592,642387967,US
+642387968,642388223,CA
+642388224,642388479,US
642388480,642388735,CA
642388736,642793471,US
642793472,642793983,CA
-642793984,642925055,US
-642925056,642925311,MX
-642925312,642926335,US
+642793984,642926335,US
642926336,642926591,MX
642926592,643219519,US
643219520,643219523,CA
643219524,643219526,US
643219527,643219527,CA
-643219528,643240447,US
-643240448,643240703,CA
-643240704,643242495,US
-643242496,643242751,CA
-643242752,643295231,US
+643219528,643295231,US
643295232,643295487,PR
643295488,643295743,US
-643295744,643296127,PR
-643296128,643296767,US
+643295744,643296383,PR
+643296384,643296767,US
643296768,643297023,PR
643297024,643302911,US
643302912,643303167,CA
643303168,643317759,US
643317760,643318015,CA
-643318016,643346431,US
-643346432,643346687,CA
-643346688,643351551,US
-643351552,643351807,GB
-643351808,644055039,US
-644055040,644055807,CA
-644055808,644056063,US
+643318016,643318271,US
+643318272,643318527,CA
+643318528,643318847,US
+643318848,643318911,CA
+643318912,643346431,US
+643346432,643346943,CA
+643346944,644055039,US
+644055040,644055295,CA
+644055296,644056063,US
644056064,644056319,CA
644056320,644056575,US
644056576,644056831,CA
-644056832,644057087,US
-644057088,644057599,CA
-644057600,644058111,US
-644058112,644058879,CA
-644058880,644059391,US
-644059392,644059647,CA
-644059648,644060927,US
-644060928,644061183,CA
-644061184,644063231,US
-644063232,644063743,CA
-644063744,644064511,US
+644056832,644057343,US
+644057344,644057599,CA
+644057600,644058367,US
+644058368,644058879,CA
+644058880,644060671,US
+644060672,644060927,CA
+644060928,644060989,US
+644060990,644060990,CA
+644060991,644061439,US
+644061440,644061631,CA
+644061632,644061663,US
+644061664,644061695,CA
+644061696,644063231,US
+644063232,644063487,CA
+644063488,644064511,US
644064512,644064767,CA
644064768,644065055,US
644065056,644065279,CA
-644065280,644067071,US
-644067072,644067327,CA
-644067328,644069631,US
-644069632,644070143,CA
-644070144,644084479,US
-644084480,644084735,GU
-644084736,644248831,US
-644248832,644249087,CA
-644249088,644323391,US
+644065280,644067327,US
+644067328,644067583,CA
+644067584,644069631,US
+644069632,644069887,CA
+644069888,644070143,US
+644070144,644070399,CA
+644070400,644082687,US
+644082688,644082943,PR
+644082944,644268543,US
+644268544,644268569,CA
+644268570,644268570,US
+644268571,644268613,CA
+644268614,644268614,US
+644268615,644268799,CA
+644268800,644323391,US
644323392,644323407,CA
-644323408,644323583,US
-644323584,644323839,CA
-644323840,644389631,US
-644389632,644390911,CA
-644390912,644403199,US
+644323408,644389887,US
+644389888,644390399,CA
+644390400,644403199,US
644403200,644403455,CA
-644403456,644408063,US
-644408064,644408319,CA
-644408320,644414207,US
+644403456,644414207,US
644414208,644414463,CA
644414464,644422911,US
644422912,644423423,JP
644423424,644569087,US
644569088,644569343,PR
644569344,644570111,US
-644570112,644570175,PR
-644570176,644570623,US
-644570624,644571135,PR
-644571136,644582143,US
-644582144,644582399,CA
-644582400,644628735,US
+644570112,644570367,PR
+644570368,644570879,US
+644570880,644571135,PR
+644571136,644628735,US
644628736,644628991,CA
644628992,644634367,US
644634368,644634623,CA
@@ -5008,71 +6708,47 @@
644718848,644719103,CA
644719104,644760575,US
644760576,644760831,CA
-644760832,644761343,US
-644761344,644761599,CA
-644761600,644762879,US
-644762880,644763135,CA
-644763136,644765439,US
+644760832,644761439,US
+644761440,644761455,CA
+644761456,644763903,US
+644763904,644764159,CA
+644764160,644765439,US
644765440,644765695,CA
-644765696,644767878,US
-644767879,644767879,CA
-644767880,644767999,US
-644768000,644768255,CA
-644768256,644833535,US
-644833536,644833791,CA
-644833792,644834047,US
-644834048,644834303,CA
-644834304,644834815,US
+644765696,644767743,US
+644767744,644768767,CA
+644768768,644834815,US
644834816,644835327,CA
644835328,644836351,US
644836352,644836607,CA
644836608,644838655,US
-644838656,644840447,CA
-644840448,644840703,US
-644840704,644841215,CA
-644841216,644897791,US
-644897792,644898047,CA
-644898048,644898815,US
+644838656,644840959,CA
+644840960,644898815,US
644898816,644899071,CA
644899072,644899839,US
644899840,644900095,CA
644900096,644901631,US
644901632,644901887,CA
-644901888,644982271,US
-644982272,644982527,CA
-644982528,644986111,US
-644986112,644986367,CA
-644986368,644987135,US
-644987136,644987391,CA
-644987392,645185535,US
+644901888,644981759,US
+644981760,644982015,CA
+644982016,645185535,US
645185536,645185791,CA
-645185792,645188095,US
-645188096,645188351,CA
-645188352,645221631,US
+645185792,645187071,US
+645187072,645187583,CA
+645187584,645221631,US
645221632,645222399,CA
-645222400,645223423,US
-645223424,645223679,CA
-645223680,645225471,US
+645222400,645225471,US
645225472,645225727,CA
645225728,645227519,US
645227520,645228287,CA
-645228288,645229311,US
-645229312,645229567,CA
-645229568,645482495,US
-645482496,645482751,CA
-645482752,645525759,US
-645525760,645526271,CA
-645526272,645526783,US
+645228288,645482511,US
+645482512,645482519,CA
+645482520,645526783,US
645526784,645527039,CA
-645527040,645527551,US
-645527552,645527807,CA
-645527808,645528063,US
-645528064,645529343,CA
-645529344,645540351,US
+645527040,645527807,US
+645527808,645528319,CA
+645528320,645540351,US
645540352,645540607,CA
-645540608,645547007,US
-645547008,645547263,CA
-645547264,645576703,US
+645540608,645576703,US
645576704,645576997,CA
645576998,645576998,US
645576999,645577215,CA
@@ -5083,16 +6759,18 @@
645645056,645646591,US
645646592,645646847,MX
645646848,645704447,US
-645704448,645704703,MX
-645704704,645705215,US
+645704448,645704959,MX
+645704960,645705215,US
645705216,645705471,MX
645705472,645737983,US
645737984,645738239,PR
645738240,645873663,US
-645873664,645874175,CA
-645874176,645875711,US
-645875712,645876735,CA
-645876736,645989450,US
+645873664,645874431,CA
+645874432,645875967,US
+645875968,645876735,CA
+645876736,645984255,US
+645984256,645988351,CA
+645988352,645989450,US
645989451,645989451,CA
645989452,654311423,US
654311424,654311679,CN
@@ -5105,7 +6783,8 @@
655360000,656408575,KR
656408576,658505727,PK
658505728,660602879,CN
-660602880,661651455,HK
+660602880,661520383,HK
+661520384,661651455,JP
661651456,662700031,KR
662700032,666894335,CN
666894336,671088639,ID
@@ -5136,7 +6815,9 @@
692207616,692240383,ZA
692240384,692256767,GH
692256768,692260863,SD
-692260864,692261887,UG
+692260864,692260865,UG
+692260866,692260866,SD
+692260867,692261887,UG
692261888,692273151,SD
692273152,692289535,EG
692289536,692305919,NG
@@ -5147,10 +6828,14 @@
692518912,692551679,ZA
692551680,692584447,NG
692584448,692600831,AO
-692600832,692609023,EG
+692600832,692608255,EG
+692608256,692608767,AO
+692608768,692609023,EG
692609024,692617215,ZM
692617216,692625407,ZA
-692625408,692641791,KE
+692625408,692626687,KE
+692626688,692626943,AO
+692626944,692641791,KE
692641792,692649983,GA
692649984,692658175,NG
692658176,692666367,ZA
@@ -5233,7 +6918,7 @@
692946944,692948991,EG
692948992,692951039,ZM
692951040,692953087,ZA
-692953088,692955135,RW
+692953088,692954111,RW
692955136,692957183,NG
692957184,692959231,DZ
692959232,692961279,GN
@@ -5382,7 +7067,9 @@
693567488,693575679,MW
693575680,693583871,KE
693583872,693592063,NG
-693592064,693600255,MU
+693592064,693594367,MU
+693594368,693594623,KE
+693594624,693600255,MU
693600256,693608447,MA
693608448,693616639,BW
693616640,693633023,ZA
@@ -5465,8 +7152,8 @@
700340224,700341247,GH
700341248,700342271,MW
700342272,700350463,NA
-700350464,700351231,MU
-700351232,700352511,UG
+700350464,700351487,MU
+700351488,700352511,UG
700352512,700358655,MU
700358656,700366847,MZ
700366848,700375039,UG
@@ -5515,9 +7202,7 @@
700776448,700841983,RW
700841984,700846079,MU
700846080,700850175,NA
-700850176,700851455,MU
-700851456,700851711,ZA
-700851712,700854271,MU
+700850176,700854271,MU
700854272,700855295,NA
700855296,700866559,MU
700866560,700866815,NG
@@ -5561,9 +7246,7 @@
701308928,701317119,AO
701317120,701325311,CM
701325312,701333503,EG
-701333504,701338111,NA
-701338112,701338367,ZM
-701338368,701341695,NA
+701333504,701341695,NA
701341696,701349887,NG
701349888,701358079,MA
701358080,701366271,SL
@@ -5599,9 +7282,7 @@
701495296,701496319,NG
701496320,701497343,GH
701497344,701513727,ZA
-701513728,701523711,LY
-701523712,701523967,CA
-701523968,701530111,LY
+701513728,701530111,LY
701530112,701546495,SN
701546496,701562879,ZA
701562880,701579263,KE
@@ -5625,7 +7306,9 @@
701890560,701923327,SN
701923328,701956095,MA
701956096,701992959,KE
-701992960,701997055,SZ
+701992960,701994495,SZ
+701994496,701994751,ZA
+701994752,701997055,SZ
701997056,702001151,GH
702001152,702005247,ZM
702005248,702009343,KE
@@ -5635,7 +7318,9 @@
702017536,702018559,EG
702018560,702019583,NG
702019584,702020607,RW
-702020608,702021631,CD
+702020608,702021119,CD
+702021120,702021375,ZA
+702021376,702021631,CD
702021632,702029823,ZM
702029824,702038015,BJ
702038016,702046207,ZM
@@ -5804,134 +7489,23 @@
702542848,702543871,ZA
702543872,702544895,BJ
702544896,702545919,ZA
-702545920,702721791,TN
-702721792,702722047,GP
-702722048,702729215,TN
-702729216,702729471,GP
-702729472,703070207,TN
+702545920,703070207,TN
703070208,703594495,EG
-703594496,703595775,SD
-703595776,703596031,ZA
-703596032,703600383,SD
-703600384,703600639,ZA
-703600640,703601151,SD
-703601152,703601407,ZA
-703601408,703603455,SD
-703603456,703603711,ZA
-703603712,703604991,SD
-703604992,703605247,ZA
-703605248,703609087,SD
-703609088,703609343,ZA
-703609344,703613695,SD
-703613696,703613951,ZA
-703613952,703618559,SD
-703618560,703619071,ZA
-703619072,703619839,SD
-703619840,703620095,ZA
-703620096,703621887,SD
-703621888,703622143,ZA
-703622144,703622655,SD
-703622656,703622911,ZA
-703622912,703625215,SD
-703625216,703625471,ZA
-703625472,703627263,SD
-703627264,703627519,ZA
-703627520,703631871,SD
-703631872,703632127,ZA
-703632128,703633151,SD
-703633152,703633407,ZA
-703633408,703638271,SD
-703638272,703638527,ZA
-703638528,703639551,SD
-703639552,703639807,ZA
-703639808,703642367,SD
-703642368,703642623,ZA
-703642624,703643903,SD
-703643904,703644415,ZA
-703644416,703645439,SD
-703645440,703645695,ZA
-703645696,703646719,SD
-703646720,703647231,ZA
-703647232,703648767,SD
-703648768,703649023,ZA
-703649024,703649279,SD
-703649280,703650047,ZA
-703650048,703650815,SD
-703650816,703651071,ZA
-703651072,703665663,SD
-703665664,703665919,ZA
-703665920,703678463,SD
-703678464,703678719,ZA
-703678720,703682559,SD
-703682560,703682815,ZA
-703682816,703685119,SD
-703685120,703685631,ZA
-703685632,703685887,SD
-703685888,703686143,ZA
-703686144,703688447,SD
-703688448,703688703,ZA
-703688704,703689215,SD
-703689216,703689471,ZA
-703689472,703689727,SD
-703689728,703689983,ZA
-703689984,703690239,SD
-703690240,703690751,ZA
-703690752,703696127,SD
-703696128,703696383,ZA
-703696384,703696895,SD
-703696896,703697151,ZA
-703697152,703699199,SD
-703699200,703699455,ZA
-703699456,703702527,SD
-703702528,703703039,ZA
-703703040,703705599,SD
-703705600,703705855,ZA
-703705856,703706111,SD
-703706112,703706367,ZA
-703706368,703709695,SD
-703709696,703709951,ZA
-703709952,703710719,SD
-703710720,703710975,ZA
-703710976,703711487,SD
-703711488,703711743,ZA
-703711744,703713791,SD
-703713792,703714047,ZA
-703714048,703714303,SD
-703714304,703714559,ZA
-703714560,703724031,SD
-703724032,703724287,ZA
-703724288,703724543,SD
-703724544,703724799,ZA
-703724800,703725567,SD
-703725568,703725589,ZA
-703725590,703725590,KE
-703725591,703726591,ZA
-703726592,703727615,KE
-703727616,703728383,TZ
-703728384,703728639,ZA
+703594496,703725567,SD
+703725568,703727615,KE
+703727616,703728639,TZ
703728640,703733759,LY
-703733760,703734527,CM
-703734528,703734783,ZA
-703734784,703735807,CM
+703733760,703735807,CI
703735808,703737855,ZA
703737856,703746047,NG
703746048,703747071,ZA
703747072,703748095,CD
-703748096,703748351,ZA
-703748352,703749119,GN
+703748096,703749119,GN
703749120,703750143,NG
-703750144,703750655,ZA
-703750656,703750911,MG
-703750912,703751167,ZA
-703751168,703751679,MG
-703751680,703751935,ZA
-703751936,703752447,MG
-703752448,703752703,ZA
-703752704,703753215,MG
-703753216,703753471,ZA
-703753472,703754239,MG
+703750144,703754239,MG
703754240,703755263,GH
-703755264,703755899,ZA
+703755264,703755519,YT
+703755520,703755899,ZA
703755900,703755900,YT
703755901,703757311,ZA
703757312,703758335,RE
@@ -5939,125 +7513,8 @@
703759360,703760383,ZA
703760384,703761407,GH
703761408,703791103,ZA
-703791104,703791359,CD
-703791360,703791871,ZA
-703791872,703792895,CD
-703792896,703793151,ZA
-703793152,703794175,CD
-703794176,703794687,ZA
-703794688,703795199,CD
-703795200,703795455,ZA
-703795456,703798527,CD
-703798528,703799039,ZA
-703799040,703799807,CD
-703799808,703800063,ZA
-703800064,703800575,CD
-703800576,703800831,ZA
-703800832,703801855,CD
-703801856,703802111,ZA
-703802112,703804159,CD
-703804160,703804415,ZA
-703804416,703806719,CD
-703806720,703806975,ZA
-703806976,703809023,CD
-703809024,703809279,ZA
-703809280,703810559,CD
-703810560,703810815,ZA
-703810816,703811839,CD
-703811840,703812351,ZA
-703812352,703813119,CD
-703813120,703813375,ZA
-703813376,703817471,CD
-703817472,703817727,ZA
-703817728,703817983,CD
-703817984,703818239,ZA
-703818240,703822335,CD
-703822336,703822591,ZA
-703822592,703825407,CD
-703825408,703825663,ZA
-703825664,703827967,CD
-703827968,703828223,ZA
-703828224,703831295,CD
-703831296,703831551,ZA
-703831552,703832319,CD
-703832320,703832575,ZA
-703832576,703838207,CD
-703838208,703838463,ZA
-703838464,703838719,CD
-703838720,703838975,ZA
-703838976,703839743,CD
-703839744,703839999,ZA
-703840000,703841279,CD
-703841280,703841535,ZA
-703841536,703842559,CD
-703842560,703842815,ZA
-703842816,703845375,CD
-703845376,703845631,ZA
-703845632,703846911,CD
-703846912,703847167,ZA
-703847168,703847423,CD
-703847424,703847679,ZA
-703847680,703849215,CD
-703849216,703849471,ZA
-703849472,703856639,CD
-703856640,703856895,ZA
-703856896,703857919,CM
-703857920,703858431,ZA
-703858432,703858943,CM
-703858944,703859199,ZA
-703859200,703864063,CM
-703864064,703864319,ZA
-703864320,703864575,CM
-703864576,703865855,ZA
-703865856,703866623,CM
-703866624,703867135,ZA
-703867136,703867391,CM
-703867392,703867647,ZA
-703867648,703869439,CM
-703869440,703869951,ZA
-703869952,703870975,CM
-703870976,703871487,ZA
-703871488,703871743,CM
-703871744,703871999,ZA
-703872000,703876607,CM
-703876608,703876863,ZA
-703876864,703884287,CM
-703884288,703884799,ZA
-703884800,703885055,CM
-703885056,703885311,ZA
-703885312,703886079,CM
-703886080,703886335,ZA
-703886336,703888639,CM
-703888640,703888895,ZA
-703888896,703889151,CM
-703889152,703889407,ZA
-703889408,703889663,CM
-703889664,703890175,ZA
-703890176,703891455,CM
-703891456,703892223,ZA
-703892224,703897343,CM
-703897344,703897599,ZA
-703897600,703901183,CM
-703901184,703901695,ZA
-703901696,703902975,CM
-703902976,703903231,ZA
-703903232,703903487,CM
-703903488,703903743,ZA
-703903744,703905535,CM
-703905536,703905791,ZA
-703905792,703912447,CM
-703912448,703912703,ZA
-703912704,703912959,CM
-703912960,703913215,ZA
-703913216,703913727,CM
-703913728,703913983,ZA
-703913984,703914239,CM
-703914240,703914495,ZA
-703914496,703914751,CM
-703914752,703915519,ZA
-703915520,703919359,CM
-703919360,703919615,ZA
-703919616,703922175,CM
+703791104,703856639,CD
+703856640,703922175,CM
703922176,704118783,ZA
704118784,704380927,MA
704380928,704643071,LY
@@ -6102,7 +7559,9 @@
711166464,711166591,HK
711166592,711169311,JP
711169312,711169327,IN
-711169328,711196671,JP
+711169328,711173119,JP
+711173120,711173375,SG
+711173376,711196671,JP
711196672,711458815,CN
711458816,711983103,IN
711983104,712507391,VN
@@ -6126,21 +7585,55 @@
717881344,720437247,CN
720437248,720502783,AU
720502784,721420287,CN
-721420288,737479679,JP
+721420288,737206271,JP
+737206272,737207295,ID
+737207296,737221631,JP
+737221632,737222655,IN
+737222656,737230847,JP
+737230848,737231871,IN
+737231872,737244159,JP
+737244160,737246207,IN
+737246208,737247231,JP
+737247232,737249279,IN
+737249280,737290239,JP
+737290240,737291263,AU
+737291264,737479679,JP
737479680,737480703,IN
-737480704,737490943,JP
+737480704,737488895,JP
+737488896,737489151,AU
+737489152,737490943,JP
737490944,737491967,FJ
-737491968,737511423,JP
+737491968,737502207,JP
+737502208,737503231,IN
+737503232,737507327,JP
+737507328,737508351,AU
+737508352,737509872,JP
+737509873,737509873,PK
+737509874,737511423,JP
737511424,737512447,IN
-737512448,737514495,JP
+737512448,737513471,BD
+737513472,737514495,JP
737514496,737515519,IN
737515520,737516543,JP
737516544,737517567,IN
-737517568,737526783,JP
+737517568,737517823,AU
+737517824,737518079,NZ
+737518080,737518335,AU
+737518336,737526783,JP
737526784,737527295,US
-737527296,737529855,JP
+737527296,737527551,SG
+737527552,737527807,ID
+737527808,737529855,JP
737529856,737530879,IN
-737530880,737941503,JP
+737530880,737538047,JP
+737538048,737539071,NZ
+737539072,737644644,JP
+737644645,737644645,IN
+737644646,737838079,JP
+737838080,737839103,IN
+737839104,737857535,JP
+737857536,737858559,IN
+737858560,737941503,JP
737941504,737944575,IN
737944576,737950719,JP
737950720,737951743,IN
@@ -6149,12 +7642,21 @@
737959936,737965055,JP
737965056,737966079,IN
737966080,737967103,JP
-737967104,737967359,AU
-737967360,737991679,JP
+737967104,737968127,AU
+737968128,737971199,JP
+737971200,737972223,IN
+737972224,737972735,ID
+737972736,737987583,JP
+737987584,737988607,IN
+737988608,737991679,JP
737991680,737992191,IN
737992192,737999320,JP
737999321,737999321,IN
-737999322,738197503,JP
+737999322,738160639,JP
+738160640,738161663,KH
+738161664,738173951,JP
+738173952,738174975,IN
+738174976,738197503,JP
738197504,746717183,US
746717184,746782719,DE
746782720,755105791,US
@@ -6177,7 +7679,9 @@
759188480,759189503,TH
759189504,759190527,PH
759190528,759193599,IN
-759193600,759195647,ID
+759193600,759193855,ID
+759193856,759194111,SG
+759194112,759195647,ID
759195648,759196671,IN
759196672,759197695,HK
759197696,759198207,CN
@@ -6210,7 +7714,6 @@
759235584,759236607,NZ
759236608,759237631,IN
759237632,759238655,AU
-765460480,767557631,UY
771751936,771817471,RU
771817472,771948543,TR
771948544,772014079,RU
@@ -6232,7 +7735,9 @@
772538368,772603903,GR
772603904,772669439,CZ
772669440,772734975,CH
-772734976,772800511,NO
+772734976,772753663,NO
+772753664,772753919,RU
+772753920,772800511,NO
772800512,772802559,GB
772802560,772804607,RU
772804608,772806655,GL
@@ -6303,16 +7808,11 @@
772917248,772919295,RU
772919296,772923391,GB
772923392,772925439,AT
-772925440,772926463,GB
-772926464,772926719,ZW
-772926720,772927231,GB
-772927232,772927487,ZW
+772925440,772927487,GB
772927488,772929535,UA
772929536,772931583,RU
772931584,772933631,UA
-772933632,772933887,GB
-772933888,772934143,IE
-772934144,772935679,GB
+772933632,772935679,GB
772935680,772937727,PS
772937728,772939775,IT
772939776,772941823,BE
@@ -6368,8 +7868,8 @@
773050368,773052415,IE
773052416,773054463,NL
773054464,773055231,AL
-773055232,773055359,XK
-773055360,773055871,AL
+773055232,773055487,XK
+773055488,773055871,AL
773055872,773055999,RS
773056000,773056255,XK
773056256,773056511,AL
@@ -6494,8 +7994,7 @@
773646336,773648383,TR
773648384,773650431,PL
773650432,773652479,GB
-773652480,773652735,TR
-773652736,773653503,SK
+773652480,773653503,SK
773653504,773654527,TR
773654528,773656575,RU
773656576,773658623,PL
@@ -6580,13 +8079,11 @@
773828608,773830655,HU
773830656,773832703,NO
773832704,773834751,FR
-773834752,773835007,GB
-773835008,773835263,IM
-773835264,773835519,GB
+773834752,773835519,GB
773835520,773835775,IM
773835776,773836031,GB
-773836032,773836287,IM
-773836288,773836799,GB
+773836032,773836543,IM
+773836544,773836799,GB
773836800,773838847,FR
773838848,773840895,DE
773840896,773842943,GB
@@ -6606,7 +8103,9 @@
773906432,773922815,GB
773922816,773931007,UA
773931008,773934591,DE
-773934592,773939199,FR
+773934592,773935352,FR
+773935353,773935353,US
+773935354,773939199,FR
773939200,773947391,CZ
773947392,773955583,GB
773955584,773963775,FR
@@ -6636,13 +8135,7 @@
774078464,774086655,BA
774086656,774094847,BG
774094848,774103039,HU
-774103040,774104831,RU
-774104832,774105087,UA
-774105088,774105343,RU
-774105344,774105599,UA
-774105600,774109695,RU
-774109696,774109951,UA
-774109952,774119423,RU
+774103040,774119423,RU
774119424,774127615,CZ
774127616,774135807,LT
774135808,774143999,IR
@@ -6752,7 +8245,8 @@
774161569,774161578,LC
774161579,774161588,VE
774161589,774161598,TC
-774161599,774161628,US
+774161599,774161618,US
+774161619,774161628,VA
774161629,774161638,PA
774161639,774161648,RU
774161649,774161658,HK
@@ -6845,9 +8339,7 @@
774162563,774162572,MQ
774162573,774162582,YT
774162583,774162592,NC
-774162593,774162593,NG
-774162594,774162601,CA
-774162602,774162602,NG
+774162593,774162602,CA
774162603,774162622,US
774162623,774162627,MX
774162628,774162637,GB
@@ -6868,7 +8360,8 @@
774162704,774162738,US
774162739,774162743,VA
774162744,774162778,US
-774162779,774162787,CA
+774162779,774162784,CA
+774162785,774162787,UA
774162788,774162788,VA
774162789,774162798,CA
774162799,774162803,BN
@@ -7052,21 +8545,23 @@
778043392,778108927,UA
778108928,778174463,RO
778174464,778239999,UA
-778240000,778244095,AL
-778244096,778244351,RS
+778240000,778242815,AL
+778242816,778243071,XK
+778243072,778243327,RS
+778243328,778244095,AL
+778244096,778244351,XK
778244352,778245119,AL
-778245120,778245375,RS
-778245376,778247679,AL
-778247680,778247935,XK
-778247936,778248191,RS
-778248192,778249727,AL
+778245120,778245375,XK
+778245376,778249727,AL
778249728,778249983,RS
778249984,778304305,AL
778304306,778304306,SI
778304307,778305535,AL
778305536,778371071,IR
778371072,778436607,RU
-778436608,778476031,RO
+778436608,778469375,RO
+778469376,778473471,IR
+778473472,778476031,RO
778476032,778476287,MD
778476288,778493951,RO
778493952,778495999,NL
@@ -7075,95 +8570,537 @@
778500096,778502143,RO
778502144,778567679,GR
778567680,778633215,TR
-778633216,778666259,FR
+778633216,778640127,FR
+778640128,778640383,GB
+778640384,778666143,FR
+778666144,778666151,DE
+778666152,778666239,FR
+778666240,778666243,PL
+778666244,778666259,FR
778666260,778666263,ES
-778666264,778666479,FR
+778666264,778666299,FR
+778666300,778666303,FI
+778666304,778666383,FR
+778666384,778666387,IE
+778666388,778666479,FR
778666480,778666495,DE
-778666496,778666879,FR
+778666496,778666871,FR
+778666872,778666879,DE
778666880,778666943,GB
-778666944,778667391,FR
+778666944,778666959,FR
+778666960,778666967,IT
+778666968,778666975,GB
+778666976,778667007,FR
+778667008,778667039,GB
+778667040,778667071,IT
+778667072,778667131,FR
+778667132,778667135,BE
+778667136,778667287,FR
+778667288,778667291,NL
+778667292,778667295,DE
+778667296,778667327,FR
+778667328,778667331,DE
+778667332,778667391,FR
778667392,778667395,IT
-778667396,778668863,FR
+778667396,778667399,FR
+778667400,778667407,FI
+778667408,778667455,FR
+778667456,778667471,GB
+778667472,778667475,NL
+778667476,778667911,FR
+778667912,778667919,BE
+778667920,778667927,GB
+778667928,778667935,FR
+778667936,778667943,DE
+778667944,778667947,FR
+778667948,778667951,IT
+778667952,778668015,FR
+778668016,778668019,CZ
+778668020,778668063,FR
+778668064,778668095,GB
+778668096,778668543,FR
+778668544,778668559,BE
+778668560,778668575,FR
+778668576,778668591,NL
+778668592,778668623,FR
+778668624,778668627,ES
+778668628,778668715,FR
+778668716,778668719,IT
+778668720,778668863,FR
778668864,778668895,DE
-778668896,778670975,FR
+778668896,778668927,PT
+778668928,778669503,FR
+778669504,778669535,FI
+778669536,778669567,FR
+778669568,778669575,BE
+778669576,778669623,FR
+778669624,778669631,IT
+778669632,778669759,FR
+778669760,778669767,DE
+778669768,778670043,FR
+778670044,778670047,DE
+778670048,778670151,FR
+778670152,778670159,IT
+778670160,778670163,NL
+778670164,778670171,FR
+778670172,778670175,DE
+778670176,778670215,FR
+778670216,778670223,DE
+778670224,778670247,FR
+778670248,778670255,PL
+778670256,778670347,FR
+778670348,778670351,PL
+778670352,778670387,FR
+778670388,778670391,ES
+778670392,778670395,GB
+778670396,778670399,FR
+778670400,778670407,DE
+778670408,778670415,FR
+778670416,778670431,DE
+778670432,778670543,FR
+778670544,778670559,GB
+778670560,778670567,NL
+778670568,778670571,FR
+778670572,778670575,DE
+778670576,778670591,BE
+778670592,778670975,FR
778670976,778670976,DE
-778670977,778671201,FR
-778671202,778671202,ES
-778671203,778673187,FR
+778670977,778671103,FR
+778671104,778671119,CH
+778671120,778671127,GB
+778671128,778671199,FR
+778671200,778671203,ES
+778671204,778671247,FR
+778671248,778671263,GB
+778671264,778671279,PT
+778671280,778671331,FR
+778671332,778671335,IT
+778671336,778671647,FR
+778671648,778671679,ES
+778671680,778671743,GB
+778671744,778671887,FR
+778671888,778671903,NL
+778671904,778671907,FR
+778671908,778671911,FI
+778671912,778672111,FR
+778672112,778672115,IT
+778672116,778672543,FR
+778672544,778672559,DE
+778672560,778672803,FR
+778672804,778672807,FI
+778672808,778672815,FR
+778672816,778672823,CH
+778672824,778672887,FR
+778672888,778672891,PL
+778672892,778673079,FR
+778673080,778673087,GB
+778673088,778673119,FR
+778673120,778673151,DE
+778673152,778673187,FR
778673188,778673191,ES
778673192,778673207,FR
778673208,778673211,ES
-778673212,778673383,FR
+778673212,778673215,FR
+778673216,778673247,IE
+778673248,778673383,FR
778673384,778673387,IT
-778673388,778673883,FR
+778673388,778673791,FR
+778673792,778673807,BE
+778673808,778673883,FR
778673884,778673887,ES
-778673888,778675763,FR
+778673888,778674431,FR
+778674432,778674439,IT
+778674440,778674447,FR
+778674448,778674451,BE
+778674452,778674459,FR
+778674460,778674463,DE
+778674464,778674475,IT
+778674476,778674479,CZ
+778674480,778674487,DE
+778674488,778674627,FR
+778674628,778674631,PL
+778674632,778674635,NL
+778674636,778674783,FR
+778674784,778674799,IT
+778674800,778674847,FR
+778674848,778674863,IT
+778674864,778674911,FR
+778674912,778674927,PL
+778674928,778674943,ES
+778674944,778674983,FR
+778674984,778674991,ES
+778674992,778675023,FR
+778675024,778675039,BE
+778675040,778675219,FR
+778675220,778675223,DE
+778675224,778675363,FR
+778675364,778675367,DE
+778675368,778675439,FR
+778675440,778675443,NL
+778675444,778675451,FR
+778675452,778675455,IT
+778675456,778675491,FR
+778675492,778675495,ES
+778675496,778675503,FR
+778675504,778675511,IT
+778675512,778675535,FR
+778675536,778675543,ES
+778675544,778675555,FR
+778675556,778675559,PT
+778675560,778675567,DE
+778675568,778675627,FR
+778675628,778675631,ES
+778675632,778675759,FR
+778675760,778675763,GB
778675764,778675767,PL
778675768,778675795,FR
778675796,778675799,ES
-778675800,778675891,FR
+778675800,778675851,FR
+778675852,778675855,PT
+778675856,778675863,IT
+778675864,778675891,FR
778675892,778675895,ES
-778675896,778677071,FR
+778675896,778675903,GB
+778675904,778675967,FR
+778675968,778675999,DE
+778676000,778676063,FR
+778676064,778676095,CH
+778676096,778676111,NL
+778676112,778676123,FR
+778676124,778676127,PL
+778676128,778676215,FR
+778676216,778676219,CZ
+778676220,778676415,FR
+778676416,778676423,IE
+778676424,778676579,FR
+778676580,778676587,DE
+778676588,778676591,ES
+778676592,778676611,FR
+778676612,778676615,LT
+778676616,778676655,FR
+778676656,778676671,NL
+778676672,778676687,FR
+778676688,778676691,IT
+778676692,778676695,GB
+778676696,778676727,FR
+778676728,778676735,NL
+778676736,778676743,FR
+778676744,778676751,DE
+778676752,778676783,FR
+778676784,778676799,BE
+778676800,778676807,FR
+778676808,778676815,ES
+778676816,778676827,FR
+778676828,778676831,ES
+778676832,778676847,FR
+778676848,778676851,PL
+778676852,778676855,NL
+778676856,778677039,FR
+778677040,778677055,PL
+778677056,778677063,FR
+778677064,778677071,CH
778677072,778677075,NL
-778677076,778677471,FR
+778677076,778677343,FR
+778677344,778677375,PL
+778677376,778677439,FR
+778677440,778677455,FI
+778677456,778677471,FR
778677472,778677475,DE
778677476,778677503,FR
-778677504,778677507,GB
-778677508,778677519,FR
-778677520,778677523,ES
-778677524,778679212,FR
+778677504,778677505,GB
+778677506,778677506,ES
+778677507,778677507,GB
+778677508,778677759,ES
+778677760,778677855,FR
+778677856,778677859,ES
+778677860,778677875,FR
+778677876,778677879,IT
+778677880,778677943,FR
+778677944,778677947,PL
+778677948,778678019,FR
+778678020,778678023,NL
+778678024,778678027,PL
+778678028,778678031,FR
+778678032,778678035,GB
+778678036,778678119,FR
+778678120,778678127,IT
+778678128,778678175,FR
+778678176,778678191,GB
+778678192,778678807,FR
+778678808,778678815,ES
+778678816,778678839,FR
+778678840,778678847,PL
+778678848,778678871,FR
+778678872,778678875,PL
+778678876,778678991,FR
+778678992,778679007,GB
+778679008,778679023,FR
+778679024,778679031,NL
+778679032,778679087,FR
+778679088,778679095,PL
+778679096,778679167,FR
+778679168,778679199,GB
+778679200,778679212,FR
778679213,778679214,FI
778679215,778679491,FR
778679492,778679495,ES
-778679496,778680227,FR
+778679496,778679503,IT
+778679504,778679519,FR
+778679520,778679531,ES
+778679532,778679679,FR
+778679680,778679695,ES
+778679696,778679711,NL
+778679712,778679907,FR
+778679908,778679911,PT
+778679912,778679935,FR
+778679936,778679999,GB
+778680000,778680111,FR
+778680112,778680127,NL
+778680128,778680227,FR
778680228,778680231,IE
-778680232,778680683,FR
+778680232,778680447,FR
+778680448,778680455,GB
+778680456,778680471,FR
+778680472,778680475,GB
+778680476,778680559,FR
+778680560,778680575,IT
+778680576,778680683,FR
778680684,778680687,ES
-778680688,778681487,FR
+778680688,778681403,FR
+778681404,778681407,ES
+778681408,778681423,FR
+778681424,778681431,FI
+778681432,778681435,IT
+778681436,778681459,FR
+778681460,778681463,LT
+778681464,778681487,FR
778681488,778681495,NL
778681496,778681503,FR
778681504,778681507,DE
778681508,778681519,FR
778681520,778681523,ES
-778681524,778681823,FR
+778681524,778681547,FR
+778681548,778681551,ES
+778681552,778681787,FR
+778681788,778681791,ES
+778681792,778681823,FR
778681824,778681827,IT
-778681828,778691619,FR
+778681828,778681843,FR
+778681844,778681847,CH
+778681848,778681919,FR
+778681920,778681983,PT
+778681984,778682295,FR
+778682296,778682299,PL
+778682300,778682351,FR
+778682352,778682367,DE
+778682368,778690559,FR
+778690560,778690591,BE
+778690592,778690635,FR
+778690636,778690639,BE
+778690640,778690711,FR
+778690712,778690719,BE
+778690720,778690935,FR
+778690936,778690943,CH
+778690944,778690959,BE
+778690960,778691047,FR
+778691048,778691055,ES
+778691056,778691063,NL
+778691064,778691375,FR
+778691376,778691391,ES
+778691392,778691471,FR
+778691472,778691479,PL
+778691480,778691619,FR
778691620,778691623,IT
778691624,778691711,FR
778691712,778691727,GB
-778691728,778692499,FR
+778691728,778691743,FR
+778691744,778691751,DE
+778691752,778691775,FR
+778691776,778691791,IT
+778691792,778691971,FR
+778691972,778691975,CZ
+778691976,778691983,FR
+778691984,778691987,CH
+778691988,778691999,FR
+778692000,778692007,IT
+778692008,778692055,FR
+778692056,778692059,LT
+778692060,778692107,FR
+778692108,778692111,GB
+778692112,778692119,IT
+778692120,778692143,FR
+778692144,778692159,ES
+778692160,778692195,FR
+778692196,778692199,GB
+778692200,778692287,FR
+778692288,778692319,LT
+778692320,778692499,FR
778692500,778692503,ES
-778692504,778692535,FR
+778692504,778692519,FR
+778692520,778692527,NL
+778692528,778692535,FR
778692536,778692539,IT
-778692540,778692743,FR
+778692540,778692619,FR
+778692620,778692623,ES
+778692624,778692739,FR
+778692740,778692743,IE
778692744,778692747,ES
-778692748,778693095,FR
+778692748,778692751,FR
+778692752,778692767,DE
+778692768,778692799,FR
+778692800,778692807,LT
+778692808,778692815,FR
+778692816,778692823,PL
+778692824,778692847,FR
+778692848,778692863,DE
+778692864,778692879,FR
+778692880,778692883,NL
+778692884,778692887,ES
+778692888,778692927,FR
+778692928,778692943,PL
+778692944,778693075,FR
+778693076,778693079,DE
+778693080,778693095,FR
778693096,778693099,ES
-778693100,778693427,FR
+778693100,778693151,FR
+778693152,778693155,IT
+778693156,778693223,FR
+778693224,778693227,PL
+778693228,778693243,FR
+778693244,778693247,CZ
+778693248,778693403,FR
+778693404,778693407,PL
+778693408,778693427,FR
778693428,778693431,ES
-778693432,778693759,FR
+778693432,778693455,FR
+778693456,778693459,BE
+778693460,778693471,FR
+778693472,778693503,NL
+778693504,778693515,FR
+778693516,778693519,GB
+778693520,778693623,FR
+778693624,778693627,NL
+778693628,778693631,ES
+778693632,778693679,FR
+778693680,778693695,DE
+778693696,778693759,FR
778693760,778693763,ES
-778693764,778695471,FR
+778693764,778693767,PL
+778693768,778693791,FR
+778693792,778693799,NL
+778693800,778693887,FR
+778693888,778693891,ES
+778693892,778693971,FR
+778693972,778693975,CH
+778693976,778694171,FR
+778694172,778694175,CH
+778694176,778694295,FR
+778694296,778694299,IT
+778694300,778694519,FR
+778694520,778694527,CH
+778694528,778694563,FR
+778694564,778694567,GB
+778694568,778694575,NL
+778694576,778694647,FR
+778694648,778694655,DE
+778694656,778694679,FR
+778694680,778694687,GB
+778694688,778694975,FR
+778694976,778695007,CH
+778695008,778695039,ES
+778695040,778695103,FR
+778695104,778695135,FI
+778695136,778695167,DE
+778695168,778695303,FR
+778695304,778695307,DE
+778695308,778695323,FR
+778695324,778695327,PL
+778695328,778695339,FR
+778695340,778695343,ES
+778695344,778695347,DE
+778695348,778695375,FR
+778695376,778695391,FI
+778695392,778695471,FR
778695472,778695475,ES
778695476,778695487,FR
778695488,778695503,BE
-778695504,778696495,FR
+778695504,778695663,FR
+778695664,778695679,PL
+778695680,778695711,FR
+778695712,778695743,GB
+778695744,778695759,FR
+778695760,778695767,NL
+778695768,778695823,FR
+778695824,778695839,FI
+778695840,778695871,DE
+778695872,778695927,FR
+778695928,778695935,IT
+778695936,778696199,FR
+778696200,778696207,NL
+778696208,778696211,PL
+778696212,778696255,FR
+778696256,778696263,IE
+778696264,778696383,FR
+778696384,778696415,PT
+778696416,778696487,FR
+778696488,778696495,IT
778696496,778696499,ES
-778696500,778696991,FR
+778696500,778696559,FR
+778696560,778696567,PL
+778696568,778696591,FR
+778696592,778696607,DE
+778696608,778696639,NL
+778696640,778696643,ES
+778696644,778696647,FR
+778696648,778696655,PL
+778696656,778696987,FR
+778696988,778696991,NL
778696992,778696995,ES
778696996,778697067,FR
778697068,778697071,ES
-778697072,778697175,FR
+778697072,778697119,FR
+778697120,778697151,IT
+778697152,778697175,FR
778697176,778697179,ES
-778697180,778697815,FR
+778697180,778697183,FR
+778697184,778697215,PT
+778697216,778697247,FR
+778697248,778697255,DE
+778697256,778697347,FR
+778697348,778697351,PL
+778697352,778697567,FR
+778697568,778697599,GB
+778697600,778697663,FR
+778697664,778697667,IE
+778697668,778697671,FR
+778697672,778697675,GB
+778697676,778697679,FR
+778697680,778697683,DE
+778697684,778697727,FR
+778697728,778697791,DE
+778697792,778697807,FR
+778697808,778697815,IT
778697816,778697819,ES
-778697820,778697955,FR
+778697820,778697847,FR
+778697848,778697851,DE
+778697852,778697955,FR
778697956,778697959,ES
-778697960,778698447,FR
+778697960,778698399,FR
+778698400,778698431,BE
+778698432,778698447,FR
778698448,778698451,ES
-778698452,778698643,FR
+778698452,778698455,FR
+778698456,778698463,PL
+778698464,778698467,IT
+778698468,778698623,FR
+778698624,778698627,FI
+778698628,778698631,FR
+778698632,778698635,GB
+778698636,778698643,FR
778698644,778698647,ES
-778698648,778698703,FR
+778698648,778698667,FR
+778698668,778698671,GB
+778698672,778698703,FR
778698704,778698707,ES
778698708,778698751,FR
778698752,778764287,TR
@@ -7298,8 +9235,12 @@
782667776,782671871,NL
782671872,782672871,LT
782672872,782672879,IL
-782672880,782675967,LT
-782675968,782680063,NL
+782672880,782672927,LT
+782672928,782672959,US
+782672960,782675967,LT
+782675968,782676735,NL
+782676736,782676991,DE
+782676992,782680063,NL
782680064,782696447,RU
782696448,782712831,DE
782712832,782729215,RU
@@ -7424,7 +9365,9 @@
783775744,783777791,AL
783777792,783779839,RU
783779840,783781887,DK
-783781888,783783935,NL
+783781888,783782655,NL
+783782656,783782911,RU
+783782912,783783935,NL
783783936,783785983,DE
783785984,783788031,RU
783788032,783790079,NO
@@ -7460,9 +9403,7 @@
784269312,784302079,BY
784302080,784334847,RU
784334848,784465919,FR
-784465920,784524287,SE
-784524288,784524543,PL
-784524544,784596991,SE
+784465920,784596991,SE
784596992,784728063,TR
784728064,784793599,GR
784793600,784859135,CY
@@ -7598,11 +9539,11 @@
786919800,786919807,IT
786919808,786919879,GB
786919880,786919887,IT
-786919888,786919967,GB
-786919968,786919975,IT
-786919976,786920191,GB
+786919888,786920191,GB
786920192,786920199,IT
-786920200,786920343,GB
+786920200,786920303,GB
+786920304,786920311,IT
+786920312,786920343,GB
786920344,786920351,IT
786920352,786920631,GB
786920632,786920639,IT
@@ -7713,28 +9654,16 @@
787333120,787349503,DE
787349504,787365887,BG
787365888,787382271,PL
-787382272,787387647,GP
-787387648,787388671,MQ
-787388672,787388927,GP
-787388928,787390207,MQ
+787382272,787383039,GP
+787383040,787383295,MF
+787383296,787389951,GP
+787389952,787390207,MQ
787390208,787390463,GP
-787390464,787391231,FR
-787391232,787391487,MQ
-787391488,787391743,FR
-787391744,787392255,MQ
-787392256,787392511,FR
-787392512,787392767,GP
-787392768,787393791,FR
-787393792,787394303,GP
-787394304,787394559,FR
+787390464,787394559,FR
787394560,787394815,GF
-787394816,787395071,FR
-787395072,787395327,GF
-787395328,787395583,FR
-787395584,787396095,GF
-787396096,787396351,FR
-787396352,787396607,GF
-787396608,787398399,FR
+787394816,787396095,FR
+787396096,787396351,GF
+787396352,787398399,FR
787398400,787398655,MQ
787398656,787415039,PL
787415040,787431423,BA
@@ -7761,7 +9690,13 @@
787703808,787705855,AT
787705856,787707903,RO
787707904,787709951,DE
-787709952,787718143,NL
+787709952,787711487,IE
+787711488,787711999,GB
+787712000,787713023,NL
+787713024,787713279,LV
+787713280,787713535,NL
+787713536,787713791,BG
+787713792,787718143,NL
787718144,787724287,RU
787724288,787726335,UA
787726336,787742719,RU
@@ -7786,7 +9721,9 @@
787869696,787873791,GB
787873792,787881745,SE
787881746,787881747,FR
-787881748,787891247,SE
+787881748,787883391,SE
+787883392,787883519,GB
+787883520,787891247,SE
787891248,787891251,ES
787891252,787906559,SE
787906560,787939327,GR
@@ -7802,9 +9739,7 @@
788070400,788078591,RU
788078592,788086783,NL
788086784,788094975,BG
-788094976,788100095,IR
-788100096,788101119,BG
-788101120,788103167,IR
+788094976,788103167,IR
788103168,788111359,HU
788111360,788119551,LT
788119552,788127743,GB
@@ -7908,12 +9843,9 @@
788502528,788504575,IE
788504576,788506623,FR
788506624,788508671,CH
-788508672,788508927,AT
-788508928,788509183,FR
-788509184,788509439,AT
-788509440,788509951,FR
-788509952,788510463,AT
-788510464,788510719,FR
+788508672,788509439,AT
+788509440,788510207,FR
+788510208,788510719,AT
788510720,788512767,ES
788512768,788514815,FI
788514816,788516863,FR
@@ -7927,9 +9859,9 @@
789577728,790102015,US
790102016,792002559,CA
792002560,792068095,US
-792068096,792096767,CA
-792096768,792097279,US
-792097280,792330239,CA
+792068096,792095999,CA
+792096000,792096255,US
+792096256,792330239,CA
792330240,792723455,ES
792723456,793247743,DE
793247744,793313279,NZ
@@ -8017,7 +9949,8 @@
832045056,832307199,CN
832307200,832308223,MN
832308224,832311295,JP
-832311296,832315391,AU
+832311296,832312319,AU
+832313344,832315391,AU
832315392,832319487,KH
832319488,832320511,NU
832320512,832321535,VN
@@ -8067,8 +10000,8 @@
838467584,838729727,JP
838729728,838795263,KR
838795264,838860799,AU
-838860800,838995455,US
-838995456,838995967,CA
+838860800,838995711,US
+838995712,838995967,CA
838995968,838996991,US
838996992,838997247,CA
838997248,839016191,US
@@ -8089,9 +10022,11 @@
839104256,839104511,CA
839104512,839112191,US
839112192,839112703,CA
-839112704,839352319,US
-839352320,839356415,NL
-839356416,839357439,US
+839112704,839348223,US
+839348224,839348479,DE
+839348480,839348735,AT
+839348736,839352319,US
+839352320,839357439,NL
839357440,839358463,FR
839358464,839359487,GB
839359488,839360511,DE
@@ -8118,32 +10053,47 @@
840953856,840954367,JP
840954368,840956927,US
840956928,840957951,JP
-840957952,843055103,US
+840957952,842019071,US
+842019072,842019199,AS
+842019200,843055103,US
843055104,843644927,CA
843644928,844890111,US
844890112,844988415,CA
-844988416,845283327,US
+844988416,845089407,US
+845089408,845089535,PR
+845089536,845283327,US
845283328,845545471,CA
845545472,846442495,US
846442496,846446591,CA
-846446592,846537351,US
-846537352,846537352,CA
-846537353,846561279,US
+846446592,846561279,US
846561280,846594047,CA
846594048,846626815,US
846626816,846627071,CN
-846627072,855638015,US
+846627072,850506751,US
+850506752,850507007,CA
+850507008,855638015,US
855638016,872415231,GB
872415232,889192447,US
889192448,905969663,DE
-905969664,910688255,US
+905969664,910163967,US
+910163968,910197237,JP
+910197238,910197238,US
+910197239,910295039,JP
+910295040,910360575,AU
+910360576,910688255,US
910688256,911147007,IE
911147008,911212543,AU
911212544,911998975,US
911998976,912031743,JP
-912031744,912195583,US
+912031744,912064511,US
+912064512,912130047,DE
+912130048,912195583,BR
912195584,912261119,JP
-912261120,917635071,US
+912261120,916979711,US
+916979712,917045247,JP
+917045248,917110783,SG
+917110784,917241855,IE
+917241856,917635071,US
917635072,917700607,JP
917700608,917766143,SG
917766144,918683647,US
@@ -8172,30 +10122,36 @@
922205776,922205776,DE
922205777,922222591,IE
922222592,922419199,JP
-922419200,922484735,SG
+922419200,922427633,SG
+922427634,922427634,US
+922427635,922427703,SG
+922427704,922427704,US
+922427705,922484735,SG
922484736,922615807,AU
922615808,922746879,SG
922746880,956301311,US
-956301312,959447039,FR
+956301312,959447039,BE
959447040,959512575,US
-959512576,960626687,FR
+959512576,960626687,BE
960626688,960641023,GB
-960641024,960641279,FR
+960641024,960641279,BE
960641280,960643330,GB
-960643331,960643331,FR
+960643331,960643331,BE
960643332,960644351,GB
-960644352,960644863,FR
+960644352,960644863,BE
960644864,960646399,GB
-960646400,960646911,FR
+960646400,960646911,BE
960646912,960654335,GB
-960654336,960654591,FR
+960654336,960654374,BE
+960654375,960654375,GB
+960654376,960654591,BE
960654592,960659455,GB
960659456,960662015,DE
-960662016,960662271,FR
+960662016,960662271,BE
960662272,960662783,DE
960662784,960663039,FR
960663040,960671487,DE
-960671488,960671743,FR
+960671488,960671743,BE
960671744,960676607,DE
960676608,960676863,PL
960676864,960692223,DE
@@ -8204,18 +10160,12 @@
960726784,960727039,ZA
960727040,960727295,US
960727296,960728319,NL
-960728320,960728575,FR
+960728320,960728575,BE
960728576,960729343,NL
960729344,960729599,ZA
-960729600,960729855,FR
+960729600,960729855,BE
960729856,960733183,NL
-960733184,960733439,BE
-960733440,960733695,FR
-960733696,960733951,BE
-960733952,960734463,FR
-960734464,960737535,BE
-960737536,960737791,FR
-960737792,960741375,BE
+960733184,960741375,BE
960741376,960749567,NL
960749568,960757759,LU
960757760,960888831,US
@@ -8234,36 +10184,38 @@
960970752,960974847,TV
960974848,960978943,VU
960978944,960983039,NC
-960983040,961019903,FR
+960983040,961019903,BE
961019904,961021439,HK
-961021440,961021695,FR
+961021440,961021695,BE
961021696,961021951,HK
-961021952,961022079,FR
+961021952,961022079,BE
961022080,961022095,SG
-961022096,961022207,FR
+961022096,961022207,BE
961022208,961022719,HK
-961022720,961022975,FR
+961022720,961022975,BE
961022976,961025535,HK
-961025536,961025791,FR
+961025536,961025791,BE
961025792,961036799,HK
-961036800,961037055,FR
+961036800,961037055,BE
961037056,961052671,HK
961052672,961085439,JP
961085440,961087231,SG
-961087232,961087487,FR
+961087232,961087487,BE
961087488,961089023,SG
-961089024,961089535,FR
+961089024,961089535,BE
961089536,961090047,SG
-961090048,961090303,FR
+961090048,961090303,BE
961090304,961091839,SG
-961091840,961092095,FR
+961091840,961092095,BE
961092096,961092351,IN
-961092352,961092607,FR
+961092352,961092607,BE
961092608,961093887,SG
-961093888,961094143,FR
+961093888,961094143,BE
961094144,961118207,SG
961118208,961119487,MY
-961119488,961119743,FR
+961119488,961119508,BE
+961119509,961119509,MY
+961119510,961119743,BE
961119744,961126399,MY
961126400,961134591,TW
961134592,961142783,KR
@@ -8277,7 +10229,7 @@
961224704,961228799,EC
961228800,961232895,BO
961232896,961236991,PY
-961236992,961241087,FR
+961236992,961241087,BE
961241088,961245183,GF
961245184,961247231,GY
961247232,961249279,SR
@@ -8288,7 +10240,7 @@
961265664,961269759,SV
961269760,961273855,PA
961273856,961277951,CR
-961277952,961282047,FR
+961277952,961282047,BE
961282048,961314815,MX
961314816,961380351,US
961380352,961413119,CA
@@ -8316,36 +10268,36 @@
961716224,961720319,CF
961720320,961724415,TD
961724416,961740799,ZA
-961740800,961806335,FR
+961740800,961806335,BE
961806336,961810431,MR
-961810432,961826815,FR
+961810432,961826815,BE
961826816,961830911,NE
-961830912,961892351,FR
+961830912,961892351,BE
961892352,961896447,ZW
961896448,961900543,NG
-961900544,961937407,FR
+961900544,961937407,BE
961937408,961945599,IS
961945600,961950463,FI
-961950464,961950719,FR
+961950464,961950719,BE
961950720,961953791,FI
961953792,961961983,DK
961961984,961970175,NO
-961970176,962002943,FR
+961970176,962002943,BE
962002944,962035711,RU
962035712,962039807,EE
962039808,962043903,LV
962043904,962047999,LT
-962048000,962076671,FR
+962048000,962076671,BE
962076672,962080767,BH
-962080768,962084863,FR
+962080768,962084863,BE
962084864,962088959,GE
-962088960,962097151,FR
+962088960,962097151,BE
962097152,962101247,IL
-962101248,962134015,FR
+962101248,962134015,BE
962134016,962138111,AE
-962138112,962203647,FR
+962138112,962203647,BE
962203648,962207999,AT
-962208000,962208255,FR
+962208000,962208255,BE
962208256,962211839,AT
962211840,962215935,BG
962215936,962217983,HR
@@ -8353,53 +10305,55 @@
962220032,962224127,CZ
962224128,962228223,GR
962228224,962232319,HU
-962232320,962244607,FR
+962232320,962244607,BE
962244608,962248703,RO
-962248704,962252799,FR
+962248704,962252799,BE
962252800,962256895,SK
962256896,962260991,SI
962260992,962265087,TR
-962265088,962281471,FR
+962265088,962281471,BE
962281472,962285567,DO
-962285568,962359295,FR
+962285568,962359295,BE
962359296,962363391,IN
-962363392,962392063,FR
+962363392,962392063,BE
962392064,962396159,PK
-962396160,962408447,FR
+962396160,962408447,BE
962408448,962412543,TH
962412544,962416639,UZ
-962416640,962461695,FR
+962416640,962461695,BE
962461696,962469887,IE
962469888,962527231,TR
-962527232,962592767,FR
+962527232,962592767,BE
962592768,962594815,IN
-962594816,962596863,FR
+962594816,962596863,BE
962596864,962598911,SG
-962598912,962600959,FR
+962598912,962600959,BE
962600960,962609151,HK
962609152,962613247,JP
-962613248,962617343,FR
+962613248,962617343,BE
962617344,962621439,AU
-962621440,962674687,FR
+962621440,962674687,BE
962674688,962676735,BR
-962676736,962680831,FR
+962676736,962680831,BE
962680832,962689023,US
-962689024,962723839,FR
+962689024,962723839,BE
962723840,962732031,GB
962732032,962740223,DE
962740224,962744319,SE
-962744320,962748415,FR
+962744320,962748415,BE
962748416,962752511,BH
962752512,962756607,ZA
-962756608,968818687,FR
+962756608,968818687,BE
968818688,968819711,DE
-968819712,968851455,FR
+968819712,968851455,BE
968851456,968852479,US
-968852480,972744447,FR
+968852480,972743935,BE
+972743936,972744191,GB
+972744192,972744447,BE
972744448,972744703,IN
-972744704,972747263,FR
+972744704,972747263,BE
972747264,972747519,US
-972747520,973078527,FR
+972747520,973078527,BE
973078528,973209599,JP
973209600,973275135,IN
973275136,973471743,JP
@@ -8433,7 +10387,7 @@
978321408,978452479,JP
978452480,978485247,CN
978485248,978501631,TH
-978501632,978518015,SG
+978501632,978518015,HK
978518016,978583551,CN
978599936,978640895,AU
978640896,978644991,NZ
@@ -8447,9 +10401,7 @@
979369984,979410943,AU
979410944,979419135,HK
979419136,979435519,AU
-979435520,979436799,TH
-979436800,979437055,OM
-979437056,979468287,TH
+979435520,979468287,TH
979468288,979501055,BD
979501056,979566591,JP
979566592,979599359,TW
@@ -8530,11 +10482,7 @@
999817216,999821311,BD
999839744,999845887,BD
999849984,999866367,KR
-999866368,999873919,HK
-999873920,999873941,VN
-999873942,999873943,HK
-999873944,999874047,VN
-999874048,999882751,HK
+999866368,999882751,HK
999948288,1000013823,AU
1000013824,1000079359,CN
1000079360,1000341503,JP
@@ -8551,7 +10499,9 @@
1002373120,1002405887,CN
1002405888,1002422271,JP
1002422272,1002434559,AU
-1002434560,1008730111,CN
+1002434560,1002438399,CN
+1002438400,1002438655,HK
+1002438656,1008730111,CN
1008730112,1009778687,JP
1009778688,1010237439,MY
1010237440,1010302975,CN
@@ -8581,11 +10531,11 @@
1023238144,1023246335,ID
1023246336,1023279103,CN
1023279104,1023311871,IN
-1023311872,1023315711,US
-1023315712,1023315967,AU
-1023315968,1023316991,US
+1023311872,1023316991,US
1023316992,1023317247,AU
-1023317248,1023328255,US
+1023317248,1023317759,US
+1023317760,1023318015,IN
+1023318016,1023328255,US
1023328256,1023344639,JP
1023344640,1023410175,CN
1023410176,1023672319,IN
@@ -8608,7 +10558,9 @@
1023901696,1023934463,TH
1023934464,1023942719,AU
1023942720,1023942751,MY
-1023942752,1023950847,AU
+1023942752,1023946879,AU
+1023946880,1023946911,SG
+1023946912,1023950847,AU
1023950848,1023954943,ID
1023954944,1023959039,JP
1023959040,1023967231,AU
@@ -8633,15 +10585,13 @@
1024361168,1024361183,HK
1024361184,1024362911,JP
1024362912,1024362943,SG
-1024362944,1024363263,JP
-1024363264,1024363519,SG
-1024363520,1024363775,JP
-1024363776,1024364031,AU
+1024362944,1024363519,JP
+1024363520,1024364031,AU
1024364032,1024364063,JP
1024364064,1024364079,AU
-1024364080,1024365727,JP
-1024365728,1024365759,SG
-1024365760,1024368639,JP
+1024364080,1024365567,JP
+1024365568,1024365823,SG
+1024365824,1024368639,JP
1024368640,1024369407,MY
1024369408,1024371199,JP
1024371200,1024371455,PH
@@ -8717,12 +10667,10 @@
1029636096,1029668863,AU
1029668864,1029701631,IN
1029701632,1030674431,KR
-1030674432,1030676223,JP
-1030676224,1030750207,KR
+1030674432,1030676479,JP
+1030676480,1030750207,KR
1030750208,1031798783,JP
-1031798784,1032668159,CN
-1032668160,1032668415,HK
-1032668416,1035993087,CN
+1031798784,1035993087,CN
1035993088,1037565951,JP
1037565952,1038614527,TW
1038614528,1039007743,CN
@@ -8787,7 +10735,11 @@
1041268736,1041301503,NO
1041301504,1041310975,IE
1041310976,1041311231,GB
-1041311232,1041367039,IE
+1041311232,1041335295,IE
+1041335296,1041335551,GB
+1041335552,1041338879,IE
+1041338880,1041339135,GB
+1041339136,1041367039,IE
1041367040,1041498111,IT
1041498112,1041563647,SE
1041563648,1041596415,PL
@@ -8799,27 +10751,29 @@
1041701784,1041701791,FR
1041701792,1041701823,GB
1041701824,1041701831,FR
-1041701832,1041703479,GB
+1041701832,1041702399,GB
+1041702400,1041702655,FR
+1041702656,1041703479,GB
1041703480,1041703487,FR
1041703488,1041703631,GB
1041703632,1041703639,FR
-1041703640,1041704415,GB
+1041703640,1041703679,GB
+1041703680,1041703935,FR
+1041703936,1041704415,GB
1041704416,1041704423,FR
1041704424,1041706551,GB
1041706552,1041706559,FR
1041706560,1041706751,GB
-1041706752,1041707263,FR
-1041707264,1041708543,GB
+1041706752,1041707007,FR
+1041707008,1041708543,GB
1041708544,1041708799,FR
-1041708800,1041709823,GB
-1041709824,1041710079,FR
-1041710080,1041710423,GB
-1041710424,1041710431,FR
-1041710432,1041710671,GB
+1041708800,1041709951,GB
+1041709952,1041709959,FR
+1041709960,1041710671,GB
1041710672,1041710687,FR
-1041710688,1041711551,GB
-1041711552,1041711559,FR
-1041711560,1041711943,GB
+1041710688,1041711359,GB
+1041711360,1041711615,FR
+1041711616,1041711943,GB
1041711944,1041711951,FR
1041711952,1041712631,GB
1041712632,1041712639,FR
@@ -8835,15 +10789,17 @@
1041716456,1041716463,FR
1041716464,1041718015,GB
1041718016,1041718271,FR
-1041718272,1041719223,GB
+1041718272,1041718527,GB
+1041718528,1041718783,FR
+1041718784,1041719223,GB
1041719224,1041719224,FR
1041719225,1041719227,GB
1041719228,1041719228,FR
1041719229,1041719407,GB
1041719408,1041719423,FR
-1041719424,1041720575,GB
-1041720576,1041720831,FR
-1041720832,1041721599,GB
+1041719424,1041721391,GB
+1041721392,1041721407,FR
+1041721408,1041721599,GB
1041721600,1041721727,FR
1041721728,1041721759,GB
1041721760,1041721775,FR
@@ -8859,15 +10815,15 @@
1041729565,1041729566,FR
1041729567,1041729935,GB
1041729936,1041729951,FR
-1041729952,1041731071,GB
-1041731072,1041731327,FR
-1041731328,1041732031,GB
-1041732032,1041732047,FR
-1041732048,1041736381,GB
+1041729952,1041731839,GB
+1041731840,1041732095,FR
+1041732096,1041734911,GB
+1041734912,1041735167,FR
+1041735168,1041736381,GB
1041736382,1041736382,FR
-1041736383,1041736675,GB
-1041736676,1041736676,FR
-1041736677,1041737583,GB
+1041736383,1041736447,GB
+1041736448,1041736703,FR
+1041736704,1041737583,GB
1041737584,1041737591,FR
1041737592,1041737839,GB
1041737840,1041737855,FR
@@ -8875,7 +10831,9 @@
1041739032,1041739039,FR
1041739040,1041740279,GB
1041740280,1041740287,FR
-1041740288,1041742415,GB
+1041740288,1041741055,GB
+1041741056,1041741311,FR
+1041741312,1041742415,GB
1041742416,1041742423,FR
1041742424,1041743103,GB
1041743104,1041743111,FR
@@ -8889,9 +10847,7 @@
1041749640,1041749643,FR
1041749644,1041749659,GB
1041749660,1041749663,FR
-1041749664,1041751679,GB
-1041751680,1041751687,FR
-1041751688,1041753231,GB
+1041749664,1041753231,GB
1041753232,1041753239,FR
1041753240,1041756839,GB
1041756840,1041756855,FR
@@ -8941,9 +10897,7 @@
1042875136,1042875391,FR
1042875392,1042879999,NL
1042880000,1042880255,GB
-1042880256,1042889983,NL
-1042889984,1042890239,GB
-1042890240,1042939903,NL
+1042880256,1042939903,NL
1042939904,1043070975,ES
1043070976,1043079167,CZ
1043079168,1043087359,DE
@@ -8952,19 +10906,17 @@
1043103744,1043120127,DK
1043120128,1043136511,FI
1043136512,1043202047,NL
-1043202048,1043249919,AT
-1043249920,1043250175,HU
-1043250176,1043257087,AT
-1043257088,1043257343,DE
-1043257344,1043281151,AT
-1043281152,1043281407,DE
-1043281408,1043333119,AT
+1043202048,1043242495,AT
+1043242496,1043242751,DE
+1043242752,1043333119,AT
1043333120,1043341311,CH
1043341312,1043349503,IT
1043349504,1043357695,DE
1043357696,1043365887,CH
1043365888,1043398655,PT
-1043398656,1043470127,GB
+1043398656,1043465839,GB
+1043465840,1043465847,NL
+1043465848,1043470127,GB
1043470128,1043470223,NL
1043470224,1043475871,GB
1043475872,1043475887,DE
@@ -8987,16 +10939,16 @@
1043595264,1043661567,DE
1043661568,1043661823,GB
1043661824,1043857407,DE
-1043857408,1043892735,GB
-1043892736,1043892991,CD
-1043892992,1043897343,GB
+1043857408,1043897343,GB
1043897344,1043897855,KE
1043897856,1043919442,GB
1043919443,1043919443,SS
1043919444,1043921919,GB
1043921920,1043922943,IL
1043922944,1043988479,ES
-1043988480,1044118295,NL
+1043988480,1044020223,NL
+1044020224,1044020479,BE
+1044020480,1044118295,NL
1044118296,1044118303,BE
1044118304,1044118423,NL
1044118424,1044118431,BE
@@ -9010,6 +10962,7 @@
1044201472,1044217855,FI
1044217856,1044226047,DK
1044226048,1044234239,OM
+1044234240,1044250623,RE
1044283392,1044316159,FR
1044316160,1044332543,NO
1044332544,1044348927,RU
@@ -9086,7 +11039,9 @@
1044936488,1044936495,BE
1044936496,1044937247,GB
1044937248,1044937255,BE
-1044937256,1044946943,GB
+1044937256,1044938503,GB
+1044938504,1044938511,LU
+1044938512,1044946943,GB
1044946944,1044955135,UA
1044955136,1044963327,NL
1044963328,1044971519,FI
@@ -9102,10 +11057,8 @@
1045154630,1045154630,SG
1045154631,1045158306,DE
1045158307,1045158307,SG
-1045158308,1045159711,DE
-1045159712,1045159712,EG
-1045159713,1045163508,DE
-1045163509,1045163511,SG
+1045158308,1045163509,DE
+1045163510,1045163511,SG
1045163512,1045168127,DE
1045168128,1045233663,RU
1045233664,1045241855,GB
@@ -9173,7 +11126,9 @@
1046320128,1046321151,GB
1046321152,1046323199,NL
1046323200,1046331391,ES
-1046347776,1046413311,IT
+1046347776,1046360319,IT
+1046360320,1046360575,SM
+1046360576,1046413311,IT
1046413312,1046446079,SE
1046446080,1046478879,DE
1046478880,1046479839,GB
@@ -9194,9 +11149,9 @@
1046487290,1046487290,DE
1046487291,1046487551,GB
1046487552,1046487807,DE
-1046487808,1046488319,GB
-1046488320,1046488575,DE
-1046488576,1046489087,GB
+1046487808,1046488063,GB
+1046488064,1046488319,DE
+1046488320,1046489087,GB
1046489088,1046489119,DE
1046489120,1046489311,GB
1046489312,1046489327,ES
@@ -9250,12 +11205,20 @@
1046503096,1046503103,DE
1046503104,1046504447,GB
1046504448,1046508543,DE
-1046508544,1046511615,GB
-1046511616,1046515711,DE
+1046508544,1046511815,GB
+1046511816,1046511823,DE
+1046511824,1046512583,GB
+1046512584,1046512599,DE
+1046512600,1046514687,GB
+1046514688,1046515711,DE
1046515712,1046518783,GB
1046518784,1046519807,DE
-1046519808,1046525183,GB
-1046525184,1046525695,DE
+1046519808,1046524215,GB
+1046524216,1046524223,DE
+1046524224,1046525351,GB
+1046525352,1046525359,DE
+1046525360,1046525439,GB
+1046525440,1046525695,DE
1046525696,1046529023,GB
1046529024,1046530047,DE
1046530048,1046530973,GB
@@ -9270,12 +11233,8 @@
1046535440,1046535447,DE
1046535448,1046537023,GB
1046537024,1046537039,DE
-1046537040,1046538751,GB
-1046538752,1046539007,DE
-1046539008,1046543209,GB
-1046543210,1046543210,DE
-1046543211,1046543343,GB
-1046543344,1046543359,DE
+1046537040,1046543103,GB
+1046543104,1046543359,DE
1046543360,1046544383,GB
1046544384,1046560767,IT
1046560768,1046585343,ES
@@ -9322,9 +11281,9 @@
1047314432,1047322623,SE
1047322624,1047330815,IT
1047330816,1047339007,RU
-1047339008,1047346175,SE
-1047346176,1047346431,FI
-1047346432,1047347199,SE
+1047339008,1047342879,SE
+1047342880,1047342887,FI
+1047342888,1047347199,SE
1047347200,1047363583,DE
1047363584,1047371775,CZ
1047371776,1047373559,RU
@@ -9349,9 +11308,7 @@
1047658496,1047724031,EG
1047728128,1047732223,SE
1047787520,1047787775,ES
-1047789568,1047805439,AT
-1047805440,1047805695,DE
-1047805696,1047822335,AT
+1047789568,1047822335,AT
1047822336,1047838719,DE
1047838720,1047846911,DK
1047846912,1047855103,SE
@@ -9396,7 +11353,10 @@
1048576000,1048584191,DE
1048584192,1048592383,IL
1048592384,1048600575,IT
-1048600576,1048603391,UA
+1048600576,1048602111,UA
+1048602112,1048602623,PL
+1048602624,1048603135,RU
+1048603136,1048603391,UA
1048603392,1048603647,LV
1048603648,1048608767,UA
1048608768,1048616959,GB
@@ -9424,7 +11384,9 @@
1049006080,1049006335,DE
1049008128,1049009151,DE
1049016320,1049018367,DE
-1049018624,1049022463,DE
+1049018624,1049021439,DE
+1049021440,1049021695,GB
+1049021696,1049022463,DE
1049026816,1049029375,DE
1049030656,1049031679,DE
1049031744,1049031871,DE
@@ -9546,19 +11508,19 @@
1051922432,1051924479,CH
1051924480,1051948031,AT
1051948032,1051949055,CH
-1051949056,1051949823,AT
-1051949824,1051950079,NL
-1051950080,1051983871,AT
+1051949056,1051983871,AT
1051990016,1051991039,DE
1052001280,1052002303,DE
1052003584,1052003839,DE
1052011264,1052012031,DE
-1052017536,1052017663,DE
+1052017536,1052017567,DE
1052019712,1052019967,GB
1052045312,1052046079,DE
1052049408,1052057599,PL
1052057600,1052065791,RU
-1052065792,1052081151,SE
+1052065792,1052076031,SE
+1052076032,1052077055,NL
+1052077056,1052081151,SE
1052081152,1052082175,NL
1052082176,1052090367,DE
1052090368,1052098559,PL
@@ -9631,7 +11593,9 @@
1052488704,1052489727,GB
1052494336,1052494591,NL
1052498432,1052498463,RO
-1052508160,1052704767,GB
+1052508160,1052593663,GB
+1052593664,1052593919,US
+1052593920,1052704767,GB
1052704768,1052712959,NL
1052712960,1052770303,GB
1052770304,1052778495,CH
@@ -9657,19 +11621,27 @@
1053138944,1053147135,FI
1053147136,1053163519,SK
1053163520,1053294591,DK
-1053295616,1053296639,AT
-1053307904,1053308159,GB
+1053294616,1053294623,AT
+1053294656,1053294679,AT
+1053295104,1053296639,AT
+1053297152,1053297663,IT
+1053301056,1053301071,FR
+1053312872,1053312887,DK
+1053312912,1053312927,DK
1053313280,1053313535,GB
1053316688,1053316695,GB
+1053318912,1053318943,FI
1053320224,1053320239,DE
-1053327616,1053327871,ZA
+1053325824,1053326335,DE
+1053326504,1053326527,BE
+1053326544,1053326551,BE
1053329440,1053329471,ES
1053332992,1053334015,BE
1053335552,1053336575,ZA
1053339904,1053340159,AT
-1053340928,1053341183,GB
1053345280,1053345375,PK
1053349376,1053349631,NL
+1053349952,1053349967,IE
1053353408,1053353423,GB
1053353984,1053354239,IL
1053354912,1053355007,IL
@@ -9696,9 +11668,7 @@
1053663232,1053671423,RU
1053671424,1053687807,LV
1053687808,1053753343,DE
-1053753344,1053788687,NL
-1053788688,1053788695,DE
-1053788696,1053818879,NL
+1053753344,1053818879,NL
1053818880,1053819391,DE
1053819424,1053819439,DE
1053819520,1053819563,DE
@@ -9795,9 +11765,7 @@
1054015488,1054089215,IT
1054089216,1054097407,GE
1054097408,1054105599,NL
-1054105600,1054107135,FR
-1054107136,1054107391,GB
-1054107392,1054113791,FR
+1054105600,1054113791,FR
1054113792,1054121983,NL
1054121984,1054130175,AT
1054130176,1054138367,LT
@@ -9814,10 +11782,7 @@
1054186241,1054186495,GB
1054186496,1054187264,DE
1054187265,1054187519,GB
-1054187520,1054192639,FR
-1054192640,1054192895,BG
-1054192896,1054195455,FR
-1054195456,1054195711,BG
+1054187520,1054195711,FR
1054195712,1054212095,BE
1054212096,1054277631,DE
1054277632,1054343167,KW
@@ -9825,7 +11790,9 @@
1054351360,1054359551,UA
1054359552,1054367743,RO
1054367744,1054375935,FI
-1054375936,1054384127,GB
+1054375936,1054381567,GB
+1054381568,1054381823,US
+1054381824,1054384127,GB
1054384128,1054400511,DE
1054400512,1054408703,GB
1054408704,1054416895,FR
@@ -9929,8 +11896,7 @@
1056473088,1056505855,FI
1056505856,1056514047,PT
1056514048,1056522239,IT
-1056522240,1056523007,DE
-1056523008,1056538623,AT
+1056522240,1056538623,AT
1056538624,1056546815,RU
1056546816,1056555007,NO
1056555008,1056571391,GB
@@ -9951,9 +11917,7 @@
1061853696,1061854207,GB
1061854208,1061939711,US
1061939712,1061940223,JM
-1061940224,1061987839,US
-1061987840,1061988095,CA
-1061988096,1062069247,US
+1061940224,1062069247,US
1062069248,1062070271,PR
1062070272,1062219519,US
1062219520,1062219775,IN
@@ -9967,11 +11931,19 @@
1062530048,1062531071,EC
1062531072,1062545919,US
1062545920,1062546431,BM
-1062546432,1062597375,US
+1062546432,1062587135,US
+1062587136,1062587391,CA
+1062587392,1062597375,US
1062597376,1062597631,PR
1062597632,1062871551,US
1062871552,1062872063,PR
-1062872064,1063057432,US
+1062872064,1063053567,US
+1063053568,1063053647,CA
+1063053648,1063053663,US
+1063053664,1063053743,CA
+1063053744,1063053759,US
+1063053760,1063053823,CA
+1063053824,1063057432,US
1063057433,1063057433,CA
1063057434,1063305727,US
1063305728,1063305983,CA
@@ -10003,7 +11975,9 @@
1064221952,1064222207,MX
1064222208,1064445183,US
1064445184,1064445439,PK
-1064445440,1065519871,US
+1064445440,1065372927,US
+1065372928,1065373183,PR
+1065373184,1065519871,US
1065519872,1065520127,GB
1065520128,1065525791,US
1065525792,1065525807,IN
@@ -10025,9 +11999,7 @@
1065908224,1066311679,US
1066311680,1066315775,CA
1066315776,1066352639,US
-1066352640,1066354943,JM
-1066354944,1066355199,BB
-1066355200,1066355711,JM
+1066352640,1066355711,JM
1066355712,1066355967,BB
1066355968,1066369023,JM
1066369024,1067238143,US
@@ -10064,7 +12036,9 @@
1068123136,1068123391,BB
1068123392,1068175871,US
1068175872,1068176383,YE
-1068176384,1068199935,US
+1068176384,1068179455,US
+1068179456,1068179711,PR
+1068179712,1068199935,US
1068199936,1068204031,CA
1068204032,1068230655,US
1068230656,1068230911,CO
@@ -10091,7 +12065,9 @@
1070729472,1070729727,CA
1070729728,1071100927,US
1071100928,1071101951,PR
-1071101952,1071134719,US
+1071101952,1071106559,US
+1071106560,1071106815,NL
+1071106816,1071134719,US
1071134720,1071136767,HK
1071136768,1071141887,US
1071141888,1071142911,HK
@@ -10116,7 +12092,9 @@
1071255296,1071255525,LB
1071255526,1071255526,DE
1071255527,1071255551,LB
-1071255552,1071256319,US
+1071255552,1071255839,US
+1071255840,1071255847,TW
+1071255848,1071256319,US
1071256320,1071256575,HK
1071256576,1071258879,US
1071258880,1071259135,HK
@@ -10301,8 +12279,8 @@
1073028352,1073028607,US
1073028608,1073029119,GD
1073029120,1073031423,US
-1073031424,1073031679,CW
-1073031680,1073034239,US
+1073031424,1073031935,CW
+1073031936,1073034239,US
1073034240,1073034495,BB
1073034496,1073035263,US
1073035264,1073036032,GD
@@ -10469,13 +12447,16 @@
1075494912,1075558143,US
1075558144,1075558911,VI
1075558912,1075576831,US
-1075576832,1075577087,GB
-1075577088,1075579391,NO
+1075576832,1075576895,NO
+1075576896,1075576896,SE
+1075576897,1075579391,NO
1075579392,1075579903,GB
1075579904,1075585023,NO
1075585024,1075609599,US
1075609600,1075613695,TT
-1075613696,1075769343,US
+1075613696,1075717887,US
+1075717888,1075718143,CA
+1075718144,1075769343,US
1075769344,1075773439,CA
1075773440,1075855359,US
1075855360,1075871743,DO
@@ -10488,9 +12469,9 @@
1075975168,1075975679,CA
1075975680,1075976191,US
1075976192,1075976447,CA
-1075976448,1075976959,US
-1075976960,1075977215,CA
-1075977216,1075977983,US
+1075976448,1075977055,US
+1075977056,1075977071,CA
+1075977072,1075977983,US
1075977984,1075978239,CA
1075978240,1075982335,US
1075982336,1075982591,CA
@@ -10507,10 +12488,8 @@
1075988224,1075988319,US
1075988320,1075988351,CA
1075988352,1075988479,US
-1075988480,1075988991,CA
-1075988992,1075989231,US
-1075989232,1075989239,CA
-1075989240,1075989503,US
+1075988480,1075989247,CA
+1075989248,1075989503,US
1075989504,1075989759,CA
1075989760,1075990015,US
1075990016,1075990527,CA
@@ -10677,7 +12656,9 @@
1078284864,1078284991,CA
1078284992,1078285151,US
1078285152,1078285167,CA
-1078285168,1078285311,US
+1078285168,1078285255,US
+1078285256,1078285259,CA
+1078285260,1078285311,US
1078285312,1078285567,CA
1078285568,1078286351,US
1078286352,1078286367,CA
@@ -10840,17 +12821,15 @@
1080024576,1080033279,US
1080033280,1080164351,KY
1080164352,1080295423,CA
-1080295424,1080496639,US
-1080496640,1080496895,ES
-1080496896,1080498431,US
+1080295424,1080498431,US
1080498432,1080498664,GB
1080498665,1080498665,US
1080498666,1080498687,GB
-1080498688,1080513535,US
+1080498688,1080512511,US
+1080512512,1080512767,GB
+1080512768,1080513535,US
1080513536,1080513791,GB
-1080513792,1080550399,US
-1080550400,1080550655,IN
-1080550656,1080552447,US
+1080513792,1080552447,US
1080552448,1080552703,IN
1080552704,1080569343,US
1080569344,1080569599,JP
@@ -10860,7 +12839,9 @@
1080589568,1080589823,CN
1080589824,1080610559,US
1080610560,1080610815,AU
-1080610816,1080621055,US
+1080610816,1080613631,US
+1080613632,1080613887,AU
+1080613888,1080621055,US
1080621056,1080621567,AU
1080621568,1080622079,US
1080622080,1080622335,AU
@@ -10892,8 +12873,7 @@
1081037312,1081037567,CA
1081037568,1081038335,US
1081038336,1081040895,CA
-1081040896,1081057535,US
-1081061376,1081122559,US
+1081040896,1081122559,US
1081122560,1081122815,VI
1081122816,1081212927,US
1081212928,1081278463,CA
@@ -10948,7 +12928,9 @@
1081573376,1081589759,US
1081589760,1081593855,BB
1081593856,1081597951,CA
-1081597952,1082139409,US
+1081597952,1081639423,US
+1081639424,1081639679,DE
+1081639680,1082139409,US
1082139410,1082139410,ZA
1082139411,1082314751,US
1082314752,1082318847,CA
@@ -10960,7 +12942,8 @@
1082786592,1082786623,HK
1082786624,1082790143,US
1082790144,1082790399,IN
-1082790400,1082791167,US
+1082790400,1082790911,US
+1082790912,1082791167,AU
1082791168,1082791423,IN
1082791424,1082819839,US
1082819840,1082820351,IN
@@ -10982,7 +12965,9 @@
1083738112,1083740159,PR
1083740160,1084067583,US
1084067584,1084067839,CA
-1084067840,1085439999,US
+1084067840,1084153599,US
+1084153600,1084153855,NL
+1084153856,1085439999,US
1085440000,1085448191,CA
1085448192,1085456383,US
1085456384,1085457919,PR
@@ -11015,31 +13000,33 @@
1086955520,1086971903,CA
1086971904,1087016959,US
1087016960,1087021055,CA
-1087021056,1087395327,US
-1087395328,1087395455,GB
-1087395456,1087399167,US
+1087021056,1087399167,US
1087399168,1087399423,GB
1087399424,1087405407,US
1087405408,1087405423,MX
1087405424,1087413895,US
1087413896,1087413903,DE
-1087413904,1087419135,US
+1087413904,1087414271,US
+1087414272,1087414527,GB
+1087414528,1087419135,US
1087419136,1087419391,GB
1087419392,1087419903,US
1087419904,1087420159,CA
-1087420160,1087432447,US
-1087432448,1087432607,FR
-1087432608,1087432639,US
-1087432640,1087432703,FR
-1087432704,1087436159,US
+1087420160,1087432599,US
+1087432600,1087432607,FR
+1087432608,1087436031,US
+1087436032,1087436159,NL
1087436160,1087436167,CH
-1087436168,1087440895,US
+1087436168,1087436287,NL
+1087436288,1087440895,US
1087440896,1087442943,PR
1087442944,1087443551,US
1087443552,1087443583,DE
1087443584,1087444223,US
1087444224,1087444479,GB
-1087444480,1087464945,US
+1087444480,1087460863,US
+1087460864,1087461119,CA
+1087461120,1087464945,US
1087464946,1087464949,GB
1087464950,1087466489,US
1087466490,1087466493,GB
@@ -11049,11 +13036,25 @@
1087496704,1087496959,CA
1087496960,1087508161,US
1087508162,1087508162,JP
-1087508163,1087593983,US
+1087508163,1087510271,US
+1087510272,1087510463,CA
+1087510464,1087510495,US
+1087510496,1087510527,CA
+1087510528,1087514623,US
+1087514624,1087515391,BB
+1087515392,1087515647,US
+1087515648,1087516159,BB
+1087516160,1087516415,US
+1087516416,1087516671,BB
+1087516672,1087580927,US
+1087580928,1087581183,BR
+1087581184,1087593983,US
1087593984,1087594239,MX
1087594240,1087608319,US
1087608320,1087608575,GB
-1087608576,1087643723,US
+1087608576,1087626111,US
+1087626112,1087626239,VI
+1087626240,1087643723,US
1087643724,1087643727,FR
1087643728,1087654143,US
1087654144,1087654399,VE
@@ -11061,13 +13062,9 @@
1087678624,1087678655,GB
1087678656,1087686655,US
1087686656,1087686911,PR
-1087686912,1087689215,US
-1087689216,1087689471,AR
-1087689472,1087695319,US
+1087686912,1087695319,US
1087695320,1087695323,GB
-1087695324,1087708685,US
-1087708686,1087708686,AU
-1087708687,1087714335,US
+1087695324,1087714335,US
1087714336,1087714367,NL
1087714368,1087715327,US
1087715328,1087717375,PA
@@ -11080,38 +13077,38 @@
1087735648,1087746079,US
1087746080,1087746083,HK
1087746084,1087758335,US
-1087758336,1087761919,PR
-1087761920,1087762431,US
-1087762432,1087766527,PR
+1087758336,1087762175,PR
+1087762176,1087762431,US
+1087762432,1087763967,PR
+1087763968,1087764223,US
+1087764224,1087766527,PR
1087766528,1087798943,US
1087798944,1087798975,CA
-1087798976,1087799413,US
-1087799414,1087799414,DE
-1087799415,1087799787,US
+1087798976,1087799295,US
+1087799296,1087799372,DE
+1087799373,1087799374,US
+1087799375,1087799551,DE
+1087799552,1087799787,US
1087799788,1087799791,CH
1087799792,1087825663,US
1087825664,1087825919,SA
-1087825920,1087836415,US
-1087836416,1087836671,FR
-1087836672,1087837359,US
-1087837360,1087837367,BR
-1087837368,1087839231,US
-1087839232,1087839487,GB
-1087839488,1087862783,US
+1087825920,1087837183,US
+1087837184,1087837439,BR
+1087837440,1087839231,US
+1087839232,1087839359,GB
+1087839360,1087862783,US
1087862784,1087864831,PA
1087864832,1087873023,US
1087873024,1087873279,CA
1087873280,1087883263,US
1087883264,1087883519,AR
-1087883520,1087884001,US
-1087884002,1087884002,GB
-1087884003,1087950111,US
+1087883520,1087950111,US
1087950112,1087950119,PR
1087950120,1088012767,US
1088012768,1088012775,PR
-1088012776,1088398591,US
-1088398592,1088398719,CA
-1088398720,1088684031,US
+1088012776,1088319103,US
+1088319104,1088319231,CA
+1088319232,1088684031,US
1088684032,1088946175,CA
1088946176,1089053183,US
1089053184,1089053439,BR
@@ -11167,7 +13164,9 @@
1089579520,1089580031,VE
1089580032,1089598975,US
1089598976,1089599231,HK
-1089599232,1089881599,US
+1089599232,1089824767,US
+1089824768,1089825023,VI
+1089825024,1089881599,US
1089881600,1089882111,GB
1089882112,1089882623,US
1089882624,1089883135,GB
@@ -11195,8 +13194,8 @@
1091803392,1091807231,US
1091807232,1091807487,CA
1091807488,1091807999,US
-1091808000,1091808511,CA
-1091808512,1091812351,US
+1091808000,1091808255,CA
+1091808256,1091812351,US
1091812352,1091812607,CN
1091812608,1091960831,US
1091960832,1092026367,CA
@@ -11320,7 +13319,6 @@
1094670800,1095450623,US
1095450624,1095467007,BS
1095467008,1095483391,US
-1095484416,1095484671,US
1095491584,1095627775,US
1095627776,1095628287,CA
1095628288,1096278015,US
@@ -11350,14 +13348,10 @@
1097837199,1097896191,US
1097896192,1097897215,VI
1097897216,1097947135,US
-1097947136,1097947735,VI
-1097947736,1097947743,US
-1097947744,1097949183,VI
+1097947136,1097949183,VI
1097949184,1097951231,US
1097951232,1097953279,VI
-1097953280,1098507263,US
-1098507264,1098507519,CA
-1098507520,1101121535,US
+1097953280,1101121535,US
1101121536,1101121791,EC
1101121792,1101182975,US
1101182976,1101183487,YE
@@ -11387,8 +13381,8 @@
1101475840,1101479935,CO
1101479936,1101484031,US
1101484032,1101488127,CO
-1101488128,1101521407,US
-1101521408,1101521919,AS
+1101488128,1101521663,US
+1101521664,1101521919,AS
1101521920,1101542399,US
1101542400,1101542911,CO
1101542912,1101574655,US
@@ -11405,8 +13399,8 @@
1101681408,1101681663,NL
1101681664,1101750783,US
1101750784,1101751295,BM
-1101751296,1101767935,US
-1101767936,1101768191,CW
+1101751296,1101767679,US
+1101767680,1101768191,CW
1101768192,1101797375,US
1101797376,1101798399,BB
1101798400,1101803519,US
@@ -11472,9 +13466,7 @@
1104842752,1104844799,PR
1104844800,1104924415,US
1104924416,1104924671,IN
-1104924672,1105034495,US
-1105034496,1105034751,IT
-1105034752,1105099519,US
+1104924672,1105099519,US
1105099520,1105099775,EC
1105099776,1106381199,US
1106381200,1106381207,UM
@@ -11602,24 +13594,22 @@
1110573056,1110587391,PR
1110587392,1110587903,US
1110587904,1110588159,PR
-1110588160,1110588671,US
-1110588672,1110589183,PR
-1110589184,1110589439,US
+1110588160,1110588415,US
+1110588416,1110588671,PR
+1110588672,1110589439,US
1110589440,1110590207,PR
1110590208,1110590463,US
-1110590464,1110591231,PR
-1110591232,1110591487,US
-1110591488,1110592255,PR
+1110590464,1110590975,PR
+1110590976,1110591743,US
+1110591744,1110592255,PR
1110592256,1110592511,US
1110592512,1110593023,PR
-1110593024,1110593279,US
-1110593280,1110593535,PR
-1110593536,1110593791,US
+1110593024,1110593791,US
1110593792,1110594047,PR
1110594048,1110594303,US
1110594304,1110594815,PR
-1110594816,1110595583,US
-1110595584,1110598655,PR
+1110594816,1110595776,US
+1110595777,1110598655,PR
1110598656,1110598911,US
1110598912,1110638591,PR
1110638592,1110654463,US
@@ -11634,7 +13624,9 @@
1110853632,1110854655,GB
1110854656,1110855679,US
1110855680,1110856703,CN
-1110856704,1110857727,IN
+1110856704,1110857215,IN
+1110857216,1110857471,DE
+1110857472,1110857727,IN
1110857728,1110858751,SG
1110858752,1110859007,US
1110859008,1110859263,AU
@@ -11644,7 +13636,7 @@
1110867456,1110867967,JM
1110867968,1110887423,US
1110887424,1110887679,IE
-1110887680,1110925311,US
+1110887680,1110929407,US
1110929408,1110933503,BM
1110933504,1111195647,US
1111195648,1111212031,CA
@@ -11677,7 +13669,9 @@
1113603328,1113603583,GT
1113603584,1113603839,US
1113603840,1113604095,CA
-1113604096,1113657343,US
+1113604096,1113643202,US
+1113643203,1113643237,CH
+1113643238,1113657343,US
1113657344,1113661439,CA
1113661440,1113669631,US
1113669632,1113677823,CA
@@ -11706,8 +13700,12 @@
1114512128,1114513407,US
1114513408,1114513471,SA
1114513472,1114513535,US
-1114513536,1114515455,SA
-1114515456,1114517503,US
+1114513536,1114513663,SA
+1114513664,1114514175,US
+1114514176,1114515455,SA
+1114515456,1114515463,US
+1114515464,1114515471,CA
+1114515472,1114517503,US
1114517504,1114518015,CA
1114518016,1114520063,US
1114520064,1114520319,PH
@@ -11788,9 +13786,13 @@
1117420032,1117420415,CA
1117420416,1117420447,US
1117420448,1117421567,CA
-1117421568,1117460223,US
+1117421568,1117458911,US
+1117458912,1117458943,GB
+1117458944,1117460223,US
1117460224,1117460287,GB
-1117460288,1117683711,US
+1117460288,1117480191,US
+1117480192,1117480255,CA
+1117480256,1117683711,US
1117683712,1117691903,CA
1117691904,1117724671,US
1117724672,1117728767,CA
@@ -11872,7 +13874,9 @@
1118975488,1118975743,KE
1118975744,1118975999,US
1118976000,1118976255,GB
-1118976256,1118980607,US
+1118976256,1118980095,US
+1118980096,1118980351,GF
+1118980352,1118980607,US
1118980608,1118980863,TZ
1118980864,1118983423,US
1118983424,1118983679,NI
@@ -11929,11 +13933,15 @@
1119502336,1119510527,CA
1119510528,1119558143,US
1119558144,1119558655,PR
-1119558656,1119568383,US
+1119558656,1119567871,US
+1119567872,1119568127,GB
+1119568128,1119568383,US
1119568384,1119568639,GB
-1119568640,1119570175,US
-1119570176,1119570303,GB
-1119570304,1119571967,US
+1119568640,1119568895,US
+1119568896,1119569151,GB
+1119569152,1119570175,US
+1119570176,1119570431,GB
+1119570432,1119571967,US
1119571968,1119576063,CA
1119576064,1119580159,US
1119580160,1119584255,CA
@@ -11962,7 +13970,9 @@
1120312064,1120312319,PH
1120312320,1120312575,US
1120312576,1120312831,PH
-1120312832,1120346111,US
+1120312832,1120315391,US
+1120315392,1120317439,SG
+1120317440,1120346111,US
1120346112,1120350207,CA
1120350208,1120370687,US
1120370688,1120371199,CA
@@ -12059,8 +14069,12 @@
1120743680,1120744447,US
1120744448,1120744703,KN
1120744704,1120788479,US
-1120793856,1120794111,US
-1120796672,1120854015,US
+1120793088,1120793343,US
+1120796672,1120826367,US
+1120826368,1120826370,CA
+1120826371,1120826371,US
+1120826372,1120826623,CA
+1120826624,1120854015,US
1120854016,1120862207,CA
1120862208,1120875007,US
1120875008,1120875263,AS
@@ -12086,7 +14100,9 @@
1121254144,1121255423,CA
1121255424,1121714998,US
1121714999,1121714999,KW
-1121715000,1121878015,US
+1121715000,1121763327,US
+1121763328,1121767423,CA
+1121767424,1121878015,US
1121878016,1121910783,CA
1121910784,1122074623,US
1122074624,1122087935,CA
@@ -12109,11 +14125,7 @@
1122451456,1122455551,CO
1122455552,1122476031,US
1122476032,1122480127,PR
-1122480128,1122494975,US
-1122494976,1122495231,PR
-1122495232,1122497791,US
-1122497792,1122498047,PR
-1122498048,1122533375,US
+1122480128,1122533375,US
1122533376,1122535423,GB
1122535424,1122538495,KR
1122538496,1122635775,US
@@ -12132,17 +14144,13 @@
1123589632,1123589887,DE
1123589888,1123590143,US
1123590144,1123598335,VI
-1123598336,1123606527,CA
-1123606528,1123635199,US
+1123598336,1123635199,US
1123635200,1123635455,AU
-1123635456,1123635639,GB
+1123635456,1123635639,US
1123635640,1123635640,RU
-1123635641,1123635670,GB
+1123635641,1123635670,US
1123635671,1123635671,RU
-1123635672,1123635711,GB
-1123635712,1123638527,US
-1123638528,1123638783,FR
-1123638784,1123651583,US
+1123635672,1123651583,US
1123651584,1123651839,JM
1123651840,1123652095,BB
1123652096,1123652863,JM
@@ -12201,9 +14209,7 @@
1125481728,1125489151,US
1125489152,1125490687,CA
1125490688,1125498879,US
-1125498880,1125501439,CA
-1125501440,1125501695,US
-1125501696,1125508095,CA
+1125498880,1125508095,CA
1125508096,1125508351,PA
1125508352,1125514239,CA
1125514240,1125514495,CY
@@ -12235,13 +14241,17 @@
1128529920,1128641023,CA
1128641024,1128641535,US
1128641536,1128792063,CA
-1128792064,1130537215,US
+1128792064,1128817407,US
+1128817408,1128817663,NL
+1128817664,1130537215,US
1130537216,1130537471,GU
1130537472,1130537727,US
1130537728,1130537983,GU
1130537984,1130538751,US
1130538752,1130539007,GU
-1130539008,1133461247,US
+1130539008,1133226239,US
+1133226240,1133226495,AS
+1133226496,1133461247,US
1133461248,1133461503,CA
1133461504,1133785439,US
1133785440,1133785471,GB
@@ -12252,8 +14262,10 @@
1134448640,1134546943,US
1134546944,1134551039,CA
1134551040,1136523263,US
-1136523264,1136523775,CA
-1136523776,1136721919,US
+1136523264,1136523391,CA
+1136523392,1136523519,US
+1136523520,1136523647,CA
+1136523648,1136721919,US
1136721920,1136787455,CA
1136787456,1137195519,US
1137195520,1137195775,JP
@@ -12287,7 +14299,9 @@
1137541120,1137623039,US
1137623040,1137639423,PR
1137639424,1137704959,US
-1137704960,1137712383,CA
+1137704960,1137706239,CA
+1137706240,1137706495,US
+1137706496,1137712383,CA
1137712384,1137712639,US
1137712640,1137713151,CA
1137713152,1137758207,US
@@ -12303,9 +14317,7 @@
1137893376,1137917951,US
1137917952,1137922047,CA
1137922048,1137926143,US
-1137926144,1137926655,CA
-1137926656,1137926911,AW
-1137926912,1137929727,CA
+1137926144,1137929727,CA
1137929728,1137929983,IE
1137929984,1137934335,CA
1137934336,1137950719,US
@@ -12318,7 +14330,9 @@
1137975296,1137983487,US
1137983488,1137991679,CA
1137991680,1138049023,US
-1138049024,1138061311,CA
+1138049024,1138053631,CA
+1138053632,1138053887,US
+1138053888,1138061311,CA
1138061312,1138069503,US
1138069504,1138073599,JM
1138073600,1138163711,US
@@ -12336,12 +14350,10 @@
1138196480,1138204671,CA
1138204672,1138212863,US
1138212864,1138216959,CA
-1138216960,1138372863,US
-1138372864,1138373119,AS
-1138373120,1138373887,US
-1138373888,1138374655,AS
-1138374656,1138374911,US
-1138374912,1138375679,AS
+1138216960,1138374143,US
+1138374144,1138374399,AS
+1138374400,1138375167,US
+1138375168,1138375679,AS
1138375680,1138419711,US
1138419712,1138419967,DE
1138419968,1138499583,US
@@ -12366,7 +14378,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
@@ -12379,25 +14393,23 @@
1139167232,1139167743,US
1139167744,1139168767,PR
1139168768,1139169279,US
-1139169280,1139170303,PR
-1139170304,1139171071,US
+1139169280,1139170175,PR
+1139170176,1139170815,US
+1139170816,1139170943,PR
+1139170944,1139171071,US
1139171072,1139171327,PR
-1139171328,1139175679,US
-1139175680,1139175807,PR
-1139175808,1139179519,US
+1139171328,1139179519,US
1139179520,1139195903,CA
1139195904,1139216383,US
1139216384,1139220479,CA
1139220480,1139265535,US
1139265536,1139269631,CA
-1139269632,1144796671,US
-1144796672,1144796799,CA
-1144796800,1144796927,US
-1144796928,1144797055,CA
-1144797056,1145141247,US
-1145142784,1145158143,US
-1145158144,1145158655,CA
-1145158656,1145188351,US
+1139269632,1143726207,US
+1143726208,1143726335,CA
+1143726336,1144796671,US
+1144796672,1144796927,CA
+1144796928,1145141247,US
+1145142784,1145188351,US
1145188352,1145192447,CA
1145192448,1145242111,US
1145242112,1145242367,NO
@@ -12424,9 +14436,7 @@
1145430016,1145475071,US
1145475072,1145479167,CA
1145479168,1145503743,US
-1145503744,1145506815,CA
-1145506816,1145507071,US
-1145507072,1145520127,CA
+1145503744,1145520127,CA
1145520128,1145552895,US
1145552896,1145556991,CA
1145556992,1150043135,US
@@ -12461,17 +14471,15 @@
1151946240,1151946751,GB
1151946752,1152073727,US
1152073728,1152077823,CA
-1152077824,1152083455,US
-1152083456,1152083711,MO
-1152083712,1152116479,US
+1152077824,1152116479,US
1152116480,1152116735,CA
1152116736,1152117759,US
1152117760,1152117952,IL
1152117953,1152117953,CA
1152117954,1152118015,IL
-1152118016,1152121855,US
-1152121856,1152122111,ID
-1152122112,1152581631,US
+1152118016,1152120319,US
+1152120320,1152120575,CA
+1152120576,1152581631,US
1152581632,1152614399,CA
1152614400,1152778239,US
1152778240,1152843775,CA
@@ -12511,17 +14519,14 @@
1158340608,1158344703,CA
1158344704,1158348799,US
1158348800,1158381567,CA
-1158381568,1158414591,US
-1158416336,1158416351,US
-1158416896,1158417151,US
-1158420480,1158439167,US
-1158439296,1158439423,US
-1158439680,1158439935,US
+1158381568,1158438911,US
1158441216,1158441471,US
1158443008,1158724607,US
1158724608,1158724863,NL
1158724864,1158774783,US
-1158774784,1158791167,CA
+1158774784,1158784703,CA
+1158784704,1158784767,US
+1158784768,1158791167,CA
1158791168,1158794239,BM
1158794240,1158794495,US
1158794496,1158799359,BM
@@ -12532,7 +14537,11 @@
1159213056,1159217151,CA
1159217152,1159249919,US
1159249920,1159254015,PR
-1159254016,1159269119,US
+1159254016,1159262475,US
+1159262476,1159262479,SA
+1159262480,1159262487,US
+1159262488,1159262491,SA
+1159262492,1159269119,US
1159269120,1159269375,AR
1159269376,1159274495,US
1159274496,1159274751,GB
@@ -12566,7 +14575,9 @@
1159519744,1159520255,CA
1159520256,1159521535,US
1159521536,1159521791,CA
-1159521792,1159522815,US
+1159521792,1159522223,US
+1159522224,1159522239,CA
+1159522240,1159522815,US
1159522816,1159523071,CA
1159523072,1159523583,US
1159523584,1159524351,CA
@@ -12574,15 +14585,15 @@
1159525376,1159526399,CA
1159526400,1159527935,US
1159527936,1159528191,CA
-1159528192,1159694591,US
+1159528192,1159668479,US
+1159668480,1159668735,CA
+1159668736,1159694591,US
1159694592,1159694847,CA
1159694848,1159700479,US
1159700480,1159725055,CA
1159725056,1160011775,US
1160011776,1160019967,CA
-1160019968,1160202239,US
-1160202240,1160202495,CA
-1160202496,1160364031,US
+1160019968,1160364031,US
1160364032,1160368127,CA
1160368128,1160373247,US
1160373248,1160373503,AE
@@ -12615,9 +14626,7 @@
1160610816,1160665599,US
1160665600,1160665855,CH
1160665856,1160667135,US
-1160667136,1160667903,CA
-1160667904,1160668159,US
-1160668160,1160675327,CA
+1160667136,1160675327,CA
1160675328,1160678399,US
1160678400,1160678655,MX
1160678656,1160683519,US
@@ -12676,16 +14685,10 @@
1161437184,1161453567,US
1161453568,1161457663,CA
1161457664,1161576447,US
-1161576448,1161578111,CA
-1161578112,1161578239,US
-1161578240,1161580543,CA
-1161580544,1161586687,US
-1161586688,1161586943,PA
-1161586944,1161617407,US
+1161576448,1161580543,CA
+1161580544,1161617407,US
1161617408,1161625599,CA
-1161625600,1161627703,US
-1161627704,1161627711,DE
-1161627712,1161631623,US
+1161625600,1161631623,US
1161631624,1161631631,KW
1161631632,1161649407,US
1161649408,1161649663,AR
@@ -12795,9 +14798,7 @@
1163472896,1163479295,US
1163479296,1163479551,CA
1163479552,1163526143,US
-1163526144,1163526399,CA
-1163526400,1163526655,US
-1163526656,1163526911,CA
+1163526144,1163526911,CA
1163526912,1163527167,US
1163527168,1163527679,CA
1163527680,1163527935,US
@@ -12921,8 +14922,14 @@
1168393664,1168393983,CA
1168393984,1168394143,US
1168394144,1168394151,CA
-1168394152,1168394239,US
-1168394240,1168394495,CA
+1168394152,1168394279,US
+1168394280,1168394303,CA
+1168394304,1168394399,US
+1168394400,1168394407,CA
+1168394408,1168394431,US
+1168394432,1168394447,CA
+1168394448,1168394479,US
+1168394480,1168394495,CA
1168394496,1168394575,US
1168394576,1168394591,CA
1168394592,1168394719,US
@@ -12997,7 +15004,8 @@
1169203200,1169211391,CA
1169211392,1170190335,US
1170190336,1170190847,GB
-1170190848,1170227199,US
+1170190848,1170191103,JP
+1170191104,1170227199,US
1170227200,1170231295,NL
1170231296,1170461183,US
1170461184,1170461695,CO
@@ -13017,7 +15025,11 @@
1170522112,1175728639,US
1175728640,1175728895,CA
1175728896,1175977983,US
-1175977984,1176502271,CA
+1175977984,1176068167,CA
+1176068168,1176068175,US
+1176068176,1176068191,CA
+1176068192,1176068207,US
+1176068208,1176502271,CA
1176502272,1176616959,US
1176616960,1176620031,CA
1176620032,1176620447,US
@@ -13039,7 +15051,9 @@
1176702976,1176707071,CA
1176707072,1176731647,US
1176731648,1176735743,PR
-1176735744,1176738303,US
+1176735744,1176736767,US
+1176736768,1176737023,NG
+1176737024,1176738303,US
1176738304,1176739071,CO
1176739072,1176739583,US
1176739584,1176739839,CO
@@ -13086,13 +15100,13 @@
1177075456,1177164863,US
1177164864,1177164895,CA
1177164896,1177165055,US
-1177165056,1177165311,CA
+1177165056,1177165061,CA
+1177165062,1177165062,US
+1177165063,1177165311,CA
1177165312,1177354239,US
-1177354240,1177357311,PR
-1177357312,1177357567,US
-1177357568,1177405695,PR
-1177405696,1177405951,US
-1177405952,1177419775,PR
+1177354240,1177356799,PR
+1177356800,1177357055,US
+1177357056,1177419775,PR
1177419776,1177505401,US
1177505402,1177505402,BB
1177505403,1177550847,US
@@ -13115,9 +15129,9 @@
1192468480,1192476671,CA
1192476672,1192488959,US
1192488960,1192493055,CA
-1192493056,1207932159,US
-1207932160,1207932415,CA
-1207932416,1207975935,US
+1192493056,1207032703,US
+1207032704,1207032831,CA
+1207032832,1207975935,US
1207975936,1207980031,CA
1207980032,1208008703,US
1208008704,1208016895,CA
@@ -13216,15 +15230,17 @@
1209867520,1209917439,US
1209917440,1209925631,CA
1209925632,1210253311,US
-1210253312,1210258431,CA
-1210258432,1210258687,US
-1210258688,1210261503,CA
+1210253312,1210261503,CA
1210261504,1210420223,US
1210420224,1210420479,IT
1210420480,1210421503,US
1210421504,1210421551,CA
-1210421552,1210449919,US
-1210449920,1210580991,CA
+1210421552,1210447003,US
+1210447004,1210447004,CA
+1210447005,1210449919,US
+1210449920,1210554367,CA
+1210554368,1210554623,US
+1210554624,1210580991,CA
1210580992,1210847231,US
1210851328,1210925055,US
1210925056,1210941439,CA
@@ -13296,9 +15312,11 @@
1224473600,1224474623,US
1224474624,1224475647,GT
1224475648,1224476671,US
-1224476672,1224476927,CW
-1224476928,1224477183,US
-1224477184,1224478719,CW
+1224476672,1224476927,SX
+1224476928,1224477439,US
+1224477440,1224477695,SX
+1224477696,1224477951,US
+1224477952,1224478719,SX
1224478720,1224480767,US
1224480768,1224484863,JM
1224484864,1224493055,GT
@@ -13341,7 +15359,9 @@
1246923520,1246923775,AU
1246923776,1246937087,US
1246937088,1246945279,CA
-1246945280,1247119439,US
+1246945280,1247060479,US
+1247060480,1247060735,CA
+1247060736,1247119439,US
1247119440,1247119447,KW
1247119448,1247119967,US
1247119968,1247119975,KW
@@ -13350,7 +15370,9 @@
1247123712,1247123967,US
1247123968,1247124223,LU
1247124224,1247490047,US
-1247494144,1248864255,US
+1247494144,1247556640,US
+1247556641,1247556641,CA
+1247556642,1248864255,US
1248864256,1248866303,CA
1248866304,1248879615,US
1248880640,1248885759,US
@@ -13437,7 +15459,9 @@
1249256448,1249257471,CA
1249257472,1249260543,US
1249260544,1249261567,CA
-1249261568,1249272831,US
+1249261568,1249267711,US
+1249267712,1249268735,AF
+1249268736,1249272831,US
1249272832,1249273855,CA
1249273856,1249281023,US
1249282048,1249310719,US
@@ -13459,7 +15483,6 @@
1249397760,1249409023,US
1249409024,1249410047,CA
1249410048,1249432575,US
-1249433088,1249433343,US
1249433600,1249434623,US
1249434624,1249435647,CA
1249435648,1249449983,US
@@ -13496,7 +15519,8 @@
1249592320,1249593343,CA
1249593344,1249598463,US
1249598464,1249599487,CA
-1249599488,1249637887,US
+1249599488,1249609983,US
+1249611776,1249637887,US
1249637888,1249638143,CA
1249638144,1249710143,US
1249710144,1249710207,CN
@@ -13505,19 +15529,22 @@
1249710592,1249710847,DE
1249710848,1249715711,US
1249715712,1249715967,DE
-1249715968,1249716735,US
+1249715968,1249716479,US
+1249716480,1249716735,TW
1249716736,1249716991,DE
-1249716992,1249720319,US
-1249720320,1249720511,AU
+1249716992,1249718015,US
+1249718016,1249718271,BE
+1249718272,1249720319,US
+1249720320,1249720367,AU
+1249720368,1249720383,SG
+1249720384,1249720511,AU
1249720512,1249720527,IN
1249720528,1249720575,AU
1249720576,1249720591,FR
1249720592,1249720599,GB
1249720600,1249720607,IT
1249720608,1249720831,GB
-1249720832,1249721119,US
-1249721120,1249721135,CA
-1249721136,1249721343,US
+1249720832,1249721343,US
1249721344,1249721351,AT
1249721352,1249721359,BE
1249721360,1249721367,CH
@@ -13570,7 +15597,12 @@
1249721808,1249721815,ZA
1249721816,1249722111,US
1249722112,1249722367,IN
-1249722368,1249725439,US
+1249722368,1249724671,US
+1249724672,1249724694,BE
+1249724695,1249724695,US
+1249724696,1249724927,BE
+1249724928,1249725183,FI
+1249725184,1249725439,US
1249725440,1249725695,NL
1249725696,1249725951,US
1249725952,1249726207,NL
@@ -13578,9 +15610,15 @@
1249728000,1249728255,HU
1249728256,1249744895,US
1249744896,1249745151,TW
-1249745152,1249754390,US
+1249745152,1249752319,US
+1249752320,1249752575,BE
+1249752576,1249754111,US
+1249754112,1249754367,IE
+1249754368,1249754390,US
1249754391,1249754391,DE
-1249754392,1249796095,US
+1249754392,1249754623,US
+1249754624,1249754879,SG
+1249754880,1249796095,US
1249796096,1249804287,CA
1249804288,1249851903,US
1249851904,1249852159,FR
@@ -13597,7 +15635,9 @@
1254704640,1254978751,US
1254978752,1254978767,LB
1254978768,1254989823,US
-1254989824,1254998015,CA
+1254989824,1254990335,CA
+1254990336,1254990591,US
+1254990592,1254998015,CA
1254998016,1255002111,US
1255002112,1255006207,CA
1255006208,1255011583,US
@@ -13622,7 +15662,9 @@
1255514112,1255522303,CA
1255522304,1255571455,US
1255571456,1255579647,CA
-1255579648,1255669759,US
+1255579648,1255588351,US
+1255588352,1255588607,NL
+1255588608,1255669759,US
1255669760,1255735295,CA
1255735296,1255770367,US
1255770368,1255770623,CA
@@ -13643,8 +15685,8 @@
1262783744,1262783871,US
1262783872,1262783999,CA
1262784000,1262784127,US
-1262784128,1262784255,CA
-1262784256,1263271423,US
+1262784128,1262784511,CA
+1262784512,1263271423,US
1263271424,1263271679,CA
1263271680,1264717823,US
1264717824,1264718079,CA
@@ -13662,7 +15704,11 @@
1266147328,1266155519,CA
1266155520,1267934968,US
1267934969,1267934969,CA
-1267934970,1268252671,US
+1267934970,1268152737,US
+1268152738,1268152738,CA
+1268152739,1268200732,US
+1268200733,1268200733,VI
+1268200734,1268252671,US
1268252672,1268776959,CA
1268776960,1275600895,US
1275600896,1275604991,BM
@@ -13692,8 +15738,8 @@
1279262720,1279787007,CA
1279787008,1279848447,US
1279848448,1279851519,PR
-1279851520,1279852031,VI
-1279852032,1279852543,PR
+1279851520,1279851775,VI
+1279851776,1279852543,PR
1279852544,1279950847,US
1279950848,1279951103,CA
1279951104,1279951231,US
@@ -13702,7 +15748,9 @@
1279952384,1279952895,CA
1279952896,1279953151,US
1279953152,1279953663,CA
-1279953664,1279959551,US
+1279953664,1279953759,US
+1279953760,1279953791,CA
+1279953792,1279959551,US
1279959552,1279959807,CA
1279959808,1279960479,US
1279960480,1279960511,CA
@@ -13889,13 +15937,11 @@
1296367616,1296400383,GR
1296400384,1296433151,BH
1296433152,1296465919,BG
-1296465920,1296470015,LT
-1296470016,1296473087,NO
-1296473088,1296475135,LT
-1296475136,1296476159,US
-1296476160,1296479743,LT
+1296465920,1296474111,FR
+1296474112,1296476159,US
+1296476160,1296479743,FR
1296479744,1296482303,NO
-1296482304,1296498687,LT
+1296482304,1296498687,FR
1296498688,1296531455,BG
1296531456,1296564223,MT
1296564224,1296566271,GB
@@ -13952,7 +15998,9 @@
1296677640,1296677647,NG
1296677648,1296677727,JE
1296677728,1296677735,NG
-1296677736,1296678903,JE
+1296677736,1296678791,JE
+1296678792,1296678799,NG
+1296678800,1296678903,JE
1296678904,1296678911,NG
1296678912,1296680959,SA
1296680960,1296683007,ES
@@ -14038,9 +16086,15 @@
1297072128,1297088511,PL
1297088512,1297121279,AT
1297121280,1297154047,SE
-1297154048,1297178623,RO
+1297154048,1297173503,RO
+1297173504,1297173759,IR
+1297173760,1297173775,IQ
+1297173776,1297175551,IR
+1297175552,1297178623,RO
1297178624,1297178879,NL
-1297178880,1297215487,RO
+1297178880,1297182719,RO
+1297182720,1297184767,ES
+1297184768,1297215487,RO
1297215488,1297217535,NL
1297217536,1297219583,RO
1297219584,1297285119,RU
@@ -14086,7 +16140,9 @@
1297727488,1297743871,MD
1297743872,1297760255,DE
1297760256,1297776639,LT
-1297776640,1297793023,DE
+1297776640,1297782783,DE
+1297782784,1297784831,PT
+1297784832,1297793023,DE
1297793024,1297809407,UA
1297809408,1297825791,PL
1297825792,1297842175,RU
@@ -14161,7 +16217,7 @@
1298137088,1298661375,GB
1298661376,1298677759,FR
1298677760,1298694143,IR
-1298694144,1298710527,RO
+1298694144,1298710527,BG
1298710528,1298726911,CZ
1298726912,1298743295,RS
1298743296,1298759679,FI
@@ -14199,16 +16255,16 @@
1299120128,1299136511,SI
1299136512,1299169279,HU
1299169280,1299174399,FR
-1299174400,1299176447,GB
-1299176448,1299177471,FR
-1299177472,1299179519,DE
-1299179520,1299185663,FR
+1299174400,1299178495,GB
+1299178496,1299185663,FR
1299185664,1299447807,PL
1299447808,1299709951,AT
1299709952,1299972095,UA
1299972096,1300234239,IL
1300234240,1302331391,FR
-1302331392,1303379967,NL
+1302331392,1303359999,NL
+1303360000,1303360255,DE
+1303360256,1303379967,NL
1303379968,1304428543,DE
1304428544,1305477119,FR
1305477120,1305739263,ES
@@ -14342,10 +16398,8 @@
1307623424,1307627519,FR
1307627520,1307631615,SE
1307631616,1307635711,IT
-1307635712,1307636991,EE
-1307636992,1307637247,LV
-1307637248,1307637503,EE
-1307637504,1307637759,LV
+1307635712,1307636735,EE
+1307636736,1307637759,LV
1307637760,1307639807,LT
1307639808,1307643903,IT
1307643904,1307652095,RU
@@ -14374,9 +16428,9 @@
1307742208,1307746303,HU
1307746304,1307750399,UA
1307750400,1307754495,IT
-1307754496,1307757289,GB
-1307757290,1307757293,FR
-1307757294,1307758591,GB
+1307754496,1307757055,GB
+1307757056,1307757311,FR
+1307757312,1307758591,GB
1307758592,1307762687,SM
1307762688,1307766783,PL
1307766784,1307770879,GB
@@ -14389,6 +16443,7 @@
1307807744,1307811839,SE
1307811840,1307815935,NL
1307816192,1307816447,GB
+1307817286,1307817286,DE
1307817984,1307818048,GB
1307818049,1307818049,BE
1307818050,1307818239,GB
@@ -14423,7 +16478,9 @@
1307926528,1307930623,KZ
1307930624,1307934719,RU
1307934720,1307938815,FR
-1307938816,1307942911,US
+1307938816,1307941242,US
+1307941243,1307941243,TR
+1307941244,1307942911,US
1307942912,1307947007,RU
1307947008,1307951103,CH
1307951104,1307959295,RU
@@ -14521,19 +16578,7 @@
1310588928,1310605311,RU
1310605312,1310621695,PL
1310621696,1310638079,RS
-1310638080,1310639615,RU
-1310639616,1310639871,UA
-1310639872,1310640639,RU
-1310640640,1310641407,UA
-1310641408,1310642175,RU
-1310642176,1310642431,UA
-1310642432,1310643711,RU
-1310643712,1310644223,UA
-1310644224,1310648063,RU
-1310648064,1310648319,UA
-1310648320,1310650623,RU
-1310650624,1310650879,UA
-1310650880,1310656511,RU
+1310638080,1310656511,RU
1310656512,1310657535,GB
1310657536,1310658559,SE
1310658560,1310660607,RU
@@ -14583,9 +16628,7 @@
1311250432,1311252479,RU
1311252480,1311253447,GB
1311253448,1311253455,IT
-1311253456,1311254447,GB
-1311254448,1311254455,IT
-1311254456,1311254527,GB
+1311253456,1311254527,GB
1311254528,1311256575,SE
1311256576,1311258623,FR
1311258624,1311262719,GB
@@ -14611,11 +16654,13 @@
1311301632,1311303679,TR
1311303680,1311307775,GB
1311307776,1311309823,IS
-1311309824,1311310591,GB
-1311310592,1311310847,GG
+1311309824,1311310335,GB
+1311310336,1311310847,GG
1311310848,1311310857,GB
1311310858,1311310858,GG
-1311310859,1311311871,GB
+1311310859,1311311103,GB
+1311311104,1311311359,GG
+1311311360,1311311871,GB
1311311872,1311315967,CZ
1311315968,1311318015,PL
1311318016,1311320063,RU
@@ -14646,9 +16691,11 @@
1311506432,1311637503,CZ
1311637504,1312292863,DE
1312292864,1312817151,LT
-1312817152,1313183103,SE
-1313183104,1313183231,DK
-1313183232,1313865727,SE
+1312817152,1313144959,SE
+1313144960,1313145087,DK
+1313145088,1313391615,SE
+1313391616,1313391871,DK
+1313391872,1313865727,SE
1313865728,1313931263,CZ
1313931264,1313996799,RU
1313996800,1314062335,SE
@@ -14682,10 +16729,9 @@
1315741696,1315745791,LB
1315745792,1315749887,CZ
1315749888,1315753983,RU
-1315758080,1315758847,RE
-1315758848,1315760639,FR
-1315760640,1315760895,RE
-1315760896,1315761407,FR
+1315758080,1315760383,FR
+1315760384,1315761151,RE
+1315761152,1315761407,FR
1315761408,1315761663,RE
1315761664,1315761919,FR
1315761920,1315762175,RE
@@ -14771,7 +16817,9 @@
1317636096,1317637119,IE
1317637120,1317642239,GB
1317642240,1317642495,IE
-1317642496,1317646551,GB
+1317642496,1317643316,GB
+1317643317,1317643317,IE
+1317643318,1317646551,GB
1317646552,1317646559,IE
1317646560,1317647015,GB
1317647016,1317647023,IE
@@ -14790,7 +16838,9 @@
1317765120,1317781503,GE
1317781504,1317814271,RU
1317814272,1317830655,DE
-1317830656,1317847039,NL
+1317830656,1317831167,NL
+1317831168,1317831423,RU
+1317831424,1317847039,NL
1317847040,1317863423,RU
1317863424,1317879807,GB
1317879808,1317896191,SK
@@ -14819,10 +16869,7 @@
1318682624,1318690815,RU
1318690816,1318699007,DK
1318699008,1318707199,IE
-1318707200,1318707455,FR
-1318707456,1318713023,GB
-1318713024,1318713087,FR
-1318713088,1318715391,GB
+1318707200,1318715391,FR
1318715392,1318723583,BG
1318723584,1318731775,IR
1318731776,1318739967,PL
@@ -14845,7 +16892,9 @@
1318871040,1318879231,DK
1318879232,1318887423,CZ
1318887424,1318895615,PL
-1318895616,1318903807,DK
+1318895616,1318900735,DK
+1318900736,1318900991,SE
+1318900992,1318903807,DK
1318903808,1318911999,RU
1318912000,1318920191,MK
1318920192,1318928383,IR
@@ -14900,8 +16949,7 @@
1331836928,1331838975,FR
1331838976,1331841023,ES
1331841024,1331843071,CZ
-1331843072,1331844863,GB
-1331844864,1331845119,FR
+1331843072,1331845119,GB
1331845120,1331847167,RU
1331847168,1331849215,FR
1331849216,1331851263,BG
@@ -14942,7 +16990,12 @@
1331931136,1331933183,SE
1331933184,1331935231,TR
1331935232,1331937279,NL
-1331937280,1331939327,GB
+1331937280,1331938063,NG
+1331938064,1331938079,GB
+1331938080,1331938431,NG
+1331938432,1331938559,GB
+1331938560,1331939071,NG
+1331939072,1331939327,GB
1331939328,1331941375,BE
1331941376,1331943423,ES
1331943424,1331945471,RU
@@ -15037,15 +17090,28 @@
1334479360,1334479871,SE
1334479872,1334480639,DK
1334480640,1334484991,SE
-1334484992,1334487039,DK
+1334484992,1334485503,DK
+1334485504,1334485759,SE
+1334485760,1334486015,DK
+1334486016,1334486527,SE
+1334486528,1334487039,DK
1334487040,1334487295,SE
-1334487296,1334489087,DK
+1334487296,1334487551,DK
+1334487552,1334487807,SE
+1334487808,1334489087,DK
1334489088,1334501631,SE
-1334501632,1334508031,DK
-1334508032,1334508415,SE
-1334508416,1334509055,DK
-1334509056,1334509311,SE
-1334509312,1334509567,DK
+1334501632,1334501887,DK
+1334501888,1334502143,SE
+1334502144,1334502911,DK
+1334502912,1334503423,SE
+1334503424,1334505855,DK
+1334505856,1334506239,SE
+1334506240,1334507007,DK
+1334507008,1334507519,SE
+1334507520,1334508031,DK
+1334508032,1334508543,SE
+1334508544,1334508799,DK
+1334508800,1334509567,SE
1334509568,1334542335,PL
1334542336,1334575103,RU
1334575104,1334579199,UA
@@ -15059,7 +17125,9 @@
1334611968,1334616063,ME
1334616064,1334620159,MD
1334620160,1334624255,DE
-1334624256,1334628351,GB
+1334624256,1334625791,GB
+1334625792,1334626047,AU
+1334626048,1334628351,GB
1334628352,1334632447,IE
1334632448,1334636543,KZ
1334636544,1334640639,RU
@@ -15078,8 +17146,8 @@
1334681856,1334682111,GB
1334682112,1334682367,IE
1334682368,1334682623,FR
-1334682624,1334683135,DE
-1334683136,1334683391,GB
+1334682624,1334683135,GB
+1334683136,1334683391,CZ
1334683392,1334683647,CH
1334683648,1334683903,GB
1334683904,1334684031,DE
@@ -15179,7 +17247,8 @@
1336619008,1336621055,AL
1336621056,1336623103,DE
1336623104,1336625151,BE
-1336625152,1336626286,GB
+1336625152,1336625407,IE
+1336625408,1336626286,GB
1336626287,1336626287,IE
1336626288,1336627199,GB
1336627200,1336629247,NO
@@ -15232,95 +17301,55 @@
1342177280,1342628207,GB
1342628208,1342628223,IE
1342628224,1342701567,GB
-1342701568,1342704127,MQ
-1342704128,1342704383,FR
-1342704384,1342704895,MQ
-1342704896,1342705151,FR
-1342705152,1342705919,MQ
-1342705920,1342706175,FR
-1342706176,1342707711,MQ
-1342707712,1342707967,FR
-1342707968,1342708223,MQ
-1342708224,1342708479,FR
-1342708480,1342708735,MQ
-1342708736,1342708991,FR
-1342708992,1342711807,MQ
-1342711808,1342712063,FR
-1342712064,1342716159,MQ
-1342716160,1342716415,FR
-1342716416,1342716927,MQ
-1342716928,1342717183,FR
-1342717184,1342717951,MQ
-1342717952,1342718207,GP
-1342718208,1342718463,FR
-1342718464,1342719231,GP
-1342719232,1342719487,FR
-1342719488,1342720255,GP
-1342720256,1342720511,FR
-1342720512,1342720767,GP
-1342720768,1342721023,FR
-1342721024,1342722303,GP
-1342722304,1342722559,FR
-1342722560,1342723071,GP
-1342723072,1342723327,FR
-1342723328,1342724095,GP
-1342724096,1342724351,FR
-1342724352,1342725375,GP
-1342725376,1342725631,FR
-1342725632,1342727423,GP
-1342727424,1342727679,FR
-1342727680,1342729215,GP
-1342729216,1342729471,FR
-1342729472,1342729727,GP
-1342729728,1342729983,FR
-1342729984,1342733823,GP
-1342733824,1342734079,FR
-1342734080,1342734335,GP
-1342734336,1342734847,RE
-1342734848,1342735103,FR
-1342735104,1342736639,RE
-1342736640,1342736895,FR
-1342736896,1342738175,RE
-1342738176,1342738687,FR
-1342738688,1342739199,RE
-1342739200,1342739455,FR
-1342739456,1342741503,RE
-1342741504,1342742015,FR
-1342742016,1342742271,RE
-1342742272,1342742783,FR
-1342742784,1342743039,RE
-1342743040,1342743295,FR
-1342743296,1342743807,RE
-1342743808,1342744063,FR
-1342744064,1342749695,RE
-1342749696,1342750207,FR
-1342750208,1342753023,RE
-1342753024,1342753279,FR
-1342753280,1342756351,RE
-1342756352,1342757119,FR
-1342757120,1342757887,RE
-1342757888,1342758399,FR
-1342758400,1342759167,RE
-1342759168,1342759423,FR
-1342759424,1342760447,RE
-1342760448,1342760703,FR
-1342760704,1342763519,RE
-1342763520,1342763775,FR
-1342763776,1342764031,RE
-1342764032,1342764287,FR
-1342764288,1342766079,RE
-1342766080,1342766847,FR
-1342766848,1342767103,RE
-1342767104,1342988287,FR
+1342701568,1342750719,RE
+1342750720,1342751999,FR
+1342752000,1342752255,RE
+1342752256,1342753023,FR
+1342753024,1342753279,YT
+1342753280,1342754047,FR
+1342754048,1342754303,RE
+1342754304,1342755583,FR
+1342755584,1342756095,RE
+1342756096,1342759679,FR
+1342759680,1342759935,RE
+1342759936,1342760703,FR
+1342760704,1342760959,RE
+1342760960,1342763007,FR
+1342763008,1342763263,YT
+1342763264,1342765055,FR
+1342765056,1342765311,RE
+1342765312,1342988287,FR
1342988288,1342989055,US
-1342989056,1342996479,FR
-1342996480,1343000575,GF
-1343000576,1343001087,FR
-1343001088,1343001855,GF
-1343001856,1343002111,FR
-1343002112,1343005695,GF
-1343005696,1343005951,FR
-1343005952,1343012863,GF
+1342989056,1342996991,FR
+1342996992,1342997247,GF
+1342997248,1342997759,FR
+1342997760,1342999551,GF
+1342999552,1343000575,FR
+1343000576,1343001087,GF
+1343001088,1343001599,FR
+1343001600,1343002367,GF
+1343002368,1343002879,FR
+1343002880,1343003135,GF
+1343003136,1343003391,FR
+1343003392,1343004159,GF
+1343004160,1343004671,FR
+1343004672,1343004927,GF
+1343004928,1343005439,FR
+1343005440,1343007231,GF
+1343007232,1343007487,FR
+1343007488,1343007999,GF
+1343008000,1343008255,FR
+1343008256,1343008511,GF
+1343008512,1343008767,FR
+1343008768,1343009023,GF
+1343009024,1343010047,FR
+1343010048,1343010303,GF
+1343010304,1343010815,FR
+1343010816,1343011071,GF
+1343011072,1343011583,FR
+1343011584,1343012095,GF
+1343012096,1343012607,FR
+1343012608,1343012863,GF
1343012864,1343017983,FR
1343017984,1343018495,RE
1343018496,1343025151,FR
@@ -15425,12 +17454,7 @@
1346740224,1346744319,FI
1346744320,1346748415,RU
1346748416,1346752511,DE
-1346752512,1346753023,RE
-1346753024,1346753791,FR
-1346753792,1346754303,RE
-1346754304,1346754559,FR
-1346754560,1346755071,RE
-1346755072,1346755583,FR
+1346752512,1346755583,FR
1346755584,1346756095,RE
1346756096,1346756607,FR
1346756608,1346760703,SE
@@ -15726,31 +17750,27 @@
1347295217,1347295223,US
1347295224,1347295224,AO
1347295225,1347295232,NG
-1347295233,1347295744,SE
-1347295745,1347295745,US
-1347295746,1347295748,SE
-1347295749,1347295752,US
+1347295233,1347295743,SE
+1347295744,1347295752,US
1347295753,1347295755,BW
-1347295756,1347295759,SE
+1347295756,1347295759,US
1347295760,1347295775,BW
1347295776,1347295776,IQ
1347295777,1347295784,HU
1347295785,1347295791,LB
-1347295792,1347295816,SE
+1347295792,1347295816,US
1347295817,1347295824,OM
1347295825,1347295832,GH
1347295833,1347295840,FR
1347295841,1347295848,NG
1347295849,1347295852,LS
-1347295853,1347295856,SE
+1347295853,1347295856,US
1347295857,1347295864,NG
-1347295865,1347295928,SE
+1347295865,1347295928,US
1347295929,1347295936,NG
1347295937,1347295976,US
1347295977,1347295984,LS
-1347295985,1347295992,US
-1347295993,1347295999,SE
-1347296000,1347296007,US
+1347295985,1347296007,US
1347296008,1347296008,SE
1347296009,1347296032,US
1347296033,1347296040,SE
@@ -15782,9 +17802,7 @@
1347305472,1347309567,AL
1347309568,1347313663,DE
1347313664,1347321855,RU
-1347325952,1347327743,CZ
-1347327744,1347327999,SK
-1347328000,1347330047,CZ
+1347325952,1347330047,CZ
1347330048,1347338239,DE
1347338240,1347342335,RU
1347342336,1347346431,SE
@@ -15888,8 +17906,7 @@
1347755160,1347755175,GR
1347755176,1347756031,CY
1347756032,1347760127,NL
-1347760128,1347762175,CZ
-1347762176,1347764223,HU
+1347760128,1347764223,HU
1347764224,1347772415,GB
1347772416,1347776511,MT
1347776512,1347780607,SE
@@ -15910,7 +17927,8 @@
1347837952,1347846143,RO
1347846144,1347850239,NO
1347850240,1347854335,IT
-1347854336,1347854847,DE
+1347854336,1347854591,DE
+1347854600,1347854607,DE
1347857408,1347858431,DE
1347862090,1347862090,DE
1347862272,1347862527,DE
@@ -16056,53 +18074,31 @@
1348861952,1348993023,ES
1348993024,1349124095,IT
1349124096,1349255167,GR
-1349255168,1349400575,AT
-1349400576,1349401087,DE
-1349401088,1349451775,AT
+1349255168,1349451775,AT
1349451776,1349517311,IE
1349517312,1349763071,NL
1349763072,1349771263,RU
1349771264,1349779455,NL
1349779456,1349910527,IT
1349910528,1350041599,FR
-1350041600,1350067575,AT
-1350067576,1350067579,CH
-1350067580,1350110335,AT
-1350110336,1350110463,DE
-1350110464,1350140927,AT
-1350140928,1350141055,CH
-1350141056,1350166015,AT
-1350166016,1350166271,SK
-1350166272,1350188543,AT
-1350188544,1350188799,DE
-1350188800,1350195231,AT
-1350195232,1350195235,DE
-1350195236,1350215679,AT
+1350041600,1350215679,AT
1350215680,1350215935,IQ
1350215936,1350216959,AT
1350216960,1350217215,IQ
1350217216,1350217471,AT
1350217472,1350217727,IQ
-1350217728,1350230015,AT
-1350230016,1350230271,DE
-1350230272,1350251007,AT
-1350251008,1350251263,HU
-1350251264,1350259447,AT
-1350259448,1350259451,CZ
-1350259452,1350290223,AT
-1350290224,1350290227,CH
-1350290228,1350303743,AT
+1350217728,1350303743,AT
1350303744,1350434815,FR
1350434816,1350565887,NL
1350565888,1352299775,DE
1352299776,1352300031,US
1352300032,1352412159,DE
1352412160,1352412415,FR
-1352412416,1352412799,DE
-1352412800,1352412863,GB
-1352412864,1352417279,DE
+1352412416,1352417279,DE
1352417280,1352418303,SK
-1352418304,1352663039,DE
+1352418304,1352488959,DE
+1352488960,1352491007,FR
+1352491008,1352663039,DE
1352663040,1353187327,DK
1353187328,1353262295,GB
1353262296,1353262303,US
@@ -16112,11 +18108,11 @@
1353275248,1353275255,ES
1353275256,1353277439,GB
1353277440,1353279487,CH
-1353279488,1353287959,GB
+1353279488,1353279583,GB
+1353279584,1353279591,IT
+1353279592,1353287959,GB
1353287960,1353287967,IE
-1353287968,1353288191,GB
-1353288192,1353288447,IE
-1353288448,1353298687,GB
+1353287968,1353298687,GB
1353298688,1353299455,SE
1353299456,1353300079,GB
1353300080,1353300095,SE
@@ -16126,9 +18122,7 @@
1353308160,1353309183,FR
1353309184,1353312447,GB
1353312448,1353312479,CH
-1353312480,1353313535,GB
-1353313536,1353313791,IE
-1353313792,1353315327,GB
+1353312480,1353315327,GB
1353315328,1353316351,ES
1353316352,1353318399,GB
1353318400,1353383935,SE
@@ -16161,9 +18155,7 @@
1356070912,1356201983,NO
1356201984,1356333055,FR
1356333056,1356464127,SE
-1356464128,1356539775,CH
-1356539776,1356539903,DE
-1356539904,1356595199,CH
+1356464128,1356595199,CH
1356595200,1356857343,FI
1356857344,1356922879,ES
1356922880,1356988415,GB
@@ -16182,9 +18174,12 @@
1357324288,1357325311,GB
1357326336,1357326337,ES
1357327360,1357327615,FR
-1357328384,1357328639,GB
+1357328384,1357328671,GB
+1357328896,1357329151,NL
1357329408,1357329415,BE
+1357330944,1357331199,GB
1357335808,1357336063,IT
+1357337600,1357337615,NL
1357340672,1357341695,GB
1357342976,1357343231,GB
1357343488,1357343503,GB
@@ -16194,24 +18189,29 @@
1357346848,1357346863,FR
1357347336,1357347375,FR
1357347456,1357347583,FR
-1357347616,1357347647,FR
+1357347616,1357347655,FR
1357347840,1357348095,PL
1357348384,1357348415,ES
+1357348480,1357348607,ES
1357351168,1357351423,PL
1357359872,1357360383,GB
1357361152,1357363199,GB
1357363200,1357364223,QA
1357364224,1357365247,ES
-1357366784,1357366959,FR
+1357366784,1357366959,GB
1357366960,1357366967,BE
-1357366968,1357366975,FR
-1357366976,1357367039,GB
+1357366968,1357367039,GB
+1357368352,1357368383,NL
1357368576,1357368831,NL
+1357371392,1357371647,GB
1357372160,1357372927,GB
1357373468,1357373471,GB
1357373480,1357373483,GB
1357373488,1357373519,GB
-1357373952,1357374463,GB
+1357373520,1357373535,FI
+1357373952,1357374975,GB
+1357377536,1357377671,FR
+1357377792,1357378047,FR
1357381632,1357414399,NO
1357414400,1357447167,LV
1357447168,1357479935,IE
@@ -16232,6 +18232,7 @@
1357877248,1357877311,DE
1357877376,1357877439,DE
1357879936,1357880063,GB
+1357883392,1357883647,FR
1357883648,1357883903,SE
1357885952,1357886207,SE
1357889024,1357889279,GB
@@ -16241,14 +18242,12 @@
1357891840,1357892095,GB
1357892608,1357892735,NL
1357892864,1357893119,NL
+1357896192,1357896447,DE
1357898752,1357898879,DE
1357899584,1357899615,NL
1357899648,1357899775,GB
1357900416,1357900543,SE
-1357902336,1357902365,GB
1357902366,1357902366,NO
-1357902367,1357902591,GB
-1357902592,1357902847,RU
1357902848,1357903359,GB
1357904896,1357905407,GB
1357905920,1357910015,LT
@@ -16289,13 +18288,11 @@
1357984912,1357984919,IT
1357984920,1357985015,GB
1357985016,1357985023,IT
-1357985024,1357985575,GB
-1357985576,1357985583,IT
-1357985584,1357985791,GB
+1357985024,1357985599,GB
+1357985600,1357985607,IT
+1357985608,1357985791,GB
1357985792,1357987839,DE
-1357987840,1357989631,GB
-1357989632,1357989887,FR
-1357989888,1357991935,GB
+1357987840,1357991935,GB
1357991936,1357996031,NO
1357996032,1358000127,CH
1358000128,1358004223,LI
@@ -16329,21 +18326,17 @@
1358147584,1358151679,GB
1358151680,1358155775,DE
1358155776,1358159871,CH
-1358163968,1358164223,FR
-1358164224,1358164479,MQ
-1358164480,1358164991,FR
-1358164992,1358165503,MQ
-1358165504,1358166015,FR
-1358166016,1358166783,MQ
-1358166784,1358167551,FR
-1358167552,1358167807,MQ
-1358167808,1358168063,FR
+1358163968,1358165503,FR
+1358165504,1358165759,MQ
+1358165760,1358166015,FR
+1358166016,1358166527,MQ
+1358166528,1358168063,FR
1358168064,1358172159,GB
1358172160,1358176255,CY
1358176256,1358180351,RU
1358180352,1358184447,ES
-1358184448,1358186607,SE
-1358186608,1358186623,NO
+1358184448,1358186608,SE
+1358186609,1358186623,NO
1358186624,1358187775,SE
1358187776,1358187839,NO
1358187840,1358192639,SE
@@ -16427,9 +18420,7 @@
1358553088,1358557183,UA
1358557184,1358557951,GB
1358557952,1358558207,IE
-1358558208,1358560255,GB
-1358560256,1358560511,IE
-1358560512,1358561279,GB
+1358558208,1358561279,GB
1358561280,1358569471,CZ
1358569472,1358573567,NG
1358573568,1358577663,LV
@@ -16521,9 +18512,7 @@
1358862899,1358862899,NO
1358862900,1358863359,GB
1358863360,1358863615,US
-1358863616,1358863903,GB
-1358863904,1358863919,SA
-1358863920,1358864383,GB
+1358863616,1358864383,GB
1358864384,1358872575,CH
1358872576,1358876671,IT
1358876672,1358880767,LV
@@ -16586,7 +18575,9 @@
1359413248,1359429631,DE
1359429632,1359446015,LT
1359446016,1359462399,DK
-1359462400,1359467775,DE
+1359462400,1359467007,DE
+1359467008,1359467263,US
+1359467264,1359467775,DE
1359467776,1359468031,US
1359468032,1359470591,DE
1359470592,1359478783,CH
@@ -16633,7 +18624,13 @@
1360113664,1360117759,HU
1360117760,1360121855,FI
1360121856,1360125951,DE
-1360125952,1360130047,SI
+1360125952,1360127487,SI
+1360127488,1360127999,RS
+1360128000,1360128511,MK
+1360128512,1360128767,ME
+1360128768,1360129023,SI
+1360129024,1360129535,BA
+1360129536,1360130047,SI
1360130048,1360134143,IE
1360134144,1360138239,NL
1360138240,1360142335,CH
@@ -16875,9 +18872,7 @@
1363410944,1363673087,NL
1363673088,1363935231,IT
1363935232,1364197375,GB
-1364197376,1364212991,FR
-1364212992,1364213247,GF
-1364213248,1364262911,FR
+1364197376,1364262911,FR
1364262912,1364328447,IT
1364328448,1364459519,BE
1364459520,1364525055,PT
@@ -16950,7 +18945,9 @@
1364963328,1364967423,RU
1364967424,1364971519,GB
1364971520,1364975615,CZ
-1364975616,1364979711,BJ
+1364975616,1364979199,BJ
+1364979200,1364979455,NG
+1364979456,1364979711,BJ
1364979712,1364983039,GB
1364983040,1364983295,CH
1364983296,1364983807,GB
@@ -16975,7 +18972,8 @@
1365044800,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
@@ -17022,7 +19020,9 @@
1365219704,1365219711,US
1365219712,1365220231,NL
1365220232,1365220239,IE
-1365220240,1365221239,NL
+1365220240,1365220503,NL
+1365220504,1365220507,IE
+1365220508,1365221239,NL
1365221240,1365221247,US
1365221248,1365221375,NL
1365221376,1365225471,GE
@@ -17034,7 +19034,11 @@
1365245952,1366294527,GB
1366294528,1366405831,IT
1366405832,1366405835,SI
-1366405836,1367343103,IT
+1366405836,1366465791,IT
+1366465792,1366465873,NL
+1366465874,1366465874,IT
+1366465875,1366466047,NL
+1366466048,1367343103,IT
1367343104,1369440255,GB
1369440256,1369473023,DE
1369473024,1369505791,HU
@@ -17211,6 +19215,7 @@
1372698880,1372699391,DE
1372699904,1372700159,DE
1372702720,1372703231,DE
+1372703616,1372703743,DE
1372704768,1372713983,DE
1372715008,1372717055,DE
1372717056,1372749823,PL
@@ -17226,95 +19231,121 @@
1373437952,1373503487,CH
1373503488,1373569023,RU
1373569024,1373634559,AT
-1373634560,1374683135,SE
+1373634560,1373854975,SE
+1373854976,1373855180,RU
+1373855181,1373855181,SE
+1373855182,1373855220,RU
+1373855221,1373855221,SE
+1373855222,1373855231,RU
+1373855232,1374683135,SE
1374683136,1375207423,BE
-1375207424,1375207935,FR
-1375207936,1375208447,MQ
-1375208448,1375208703,GP
-1375208704,1375210239,MQ
-1375210240,1375210495,GP
-1375210496,1375211519,MQ
-1375211520,1375211775,GP
-1375211776,1375212031,FR
-1375212032,1375212799,GP
-1375212800,1375213055,FR
-1375213056,1375215615,GP
-1375215616,1375215871,GF
-1375215872,1375216383,FR
-1375216384,1375218175,GF
-1375218176,1375218687,FR
-1375218688,1375219455,GF
-1375219456,1375219711,FR
-1375219712,1375221247,GF
-1375221248,1375221503,FR
-1375221504,1375221759,GF
-1375221760,1375222783,FR
-1375222784,1375223807,GF
-1375223808,1375227135,MQ
-1375227136,1375227647,FR
-1375227648,1375230463,MQ
-1375230464,1375230719,FR
-1375230720,1375233023,MQ
-1375233024,1375233279,FR
-1375233280,1375233791,MQ
-1375233792,1375235071,FR
-1375235072,1375235583,MQ
-1375235584,1375236095,FR
-1375236096,1375236351,MQ
-1375236352,1375236863,FR
-1375236864,1375237631,MQ
-1375237632,1375237887,FR
-1375237888,1375239679,MQ
-1375239680,1375239935,FR
-1375239936,1375240191,MQ
-1375240192,1375240447,FR
-1375240448,1375240959,GP
-1375240960,1375241215,FR
-1375241216,1375241983,GP
-1375241984,1375242239,FR
+1375207424,1375207679,MQ
+1375207680,1375208703,FR
+1375208704,1375209215,MQ
+1375209216,1375209471,FR
+1375209472,1375209983,MQ
+1375209984,1375210751,FR
+1375210752,1375211519,MQ
+1375211520,1375211775,FR
+1375211776,1375213311,GP
+1375213312,1375213567,FR
+1375213568,1375215103,GP
+1375215104,1375215359,FR
+1375215360,1375215615,GP
+1375215616,1375215871,FR
+1375215872,1375216127,GF
+1375216128,1375217663,FR
+1375217664,1375218175,GF
+1375218176,1375218431,FR
+1375218432,1375219711,GF
+1375219712,1375219967,FR
+1375219968,1375220479,GF
+1375220480,1375220735,FR
+1375220736,1375220991,GF
+1375220992,1375221247,FR
+1375221248,1375221503,GF
+1375221504,1375223039,FR
+1375223040,1375223551,GF
+1375223552,1375224831,FR
+1375224832,1375225087,MQ
+1375225088,1375225599,FR
+1375225600,1375225855,MQ
+1375225856,1375226111,FR
+1375226112,1375227903,MQ
+1375227904,1375228671,FR
+1375228672,1375228927,MQ
+1375228928,1375229439,FR
+1375229440,1375230719,MQ
+1375230720,1375231231,FR
+1375231232,1375231487,MQ
+1375231488,1375231999,FR
+1375232000,1375232255,MQ
+1375232256,1375233023,FR
+1375233024,1375233279,MQ
+1375233280,1375233791,FR
+1375233792,1375234303,MQ
+1375234304,1375236351,FR
+1375236352,1375236863,MQ
+1375236864,1375237631,FR
+1375237632,1375237887,MQ
+1375237888,1375239679,FR
+1375239680,1375239935,MQ
+1375239936,1375240191,FR
+1375240192,1375240959,GP
+1375240960,1375242239,FR
1375242240,1375242495,MF
-1375242496,1375242751,GP
-1375242752,1375243263,FR
-1375243264,1375245311,GP
-1375245312,1375246079,FR
-1375246080,1375246335,GP
-1375246336,1375246591,FR
-1375246592,1375247359,GP
-1375247360,1375247615,FR
-1375247616,1375249919,GP
-1375249920,1375250175,FR
-1375250176,1375250431,GP
-1375250432,1375251455,FR
-1375251456,1375252223,GP
-1375252224,1375253247,FR
-1375253248,1375253759,GP
-1375253760,1375254527,FR
-1375254528,1375256063,GP
-1375256064,1375256319,FR
-1375256320,1375256575,GP
+1375242496,1375243263,GP
+1375243264,1375243519,FR
+1375243520,1375243775,GP
+1375243776,1375244031,FR
+1375244032,1375244287,GP
+1375244288,1375244799,FR
+1375244800,1375246591,GP
+1375246592,1375246847,FR
+1375246848,1375247615,GP
+1375247616,1375247871,FR
+1375247872,1375248383,GP
+1375248384,1375248639,FR
+1375248640,1375248895,GP
+1375248896,1375249919,FR
+1375249920,1375250175,GP
+1375250176,1375251967,FR
+1375251968,1375252479,GP
+1375252480,1375252991,FR
+1375252992,1375254015,GP
+1375254016,1375254527,FR
+1375254528,1375255039,GP
+1375255040,1375255295,FR
+1375255296,1375255551,GP
+1375255552,1375256063,FR
+1375256064,1375256575,GP
1375256576,1375257087,RE
-1375257088,1375257343,FR
-1375257344,1375257855,RE
-1375257856,1375258111,FR
-1375258112,1375258879,RE
-1375258880,1375261183,FR
-1375261184,1375261695,RE
-1375261696,1375262207,FR
-1375262208,1375265535,RE
-1375265536,1375266047,FR
-1375266048,1375266303,RE
-1375266304,1375268095,FR
+1375257088,1375257855,FR
+1375257856,1375258111,RE
+1375258112,1375259135,FR
+1375259136,1375259647,RE
+1375259648,1375260671,FR
+1375260672,1375260927,RE
+1375260928,1375261951,FR
+1375261952,1375262463,RE
+1375262464,1375262719,FR
+1375262720,1375263231,RE
+1375263232,1375264511,FR
+1375264512,1375265279,RE
+1375265280,1375265535,FR
+1375265536,1375266047,RE
+1375266048,1375266559,FR
+1375266560,1375267839,RE
+1375267840,1375268095,FR
1375268096,1375268351,RE
-1375268352,1375268863,FR
-1375268864,1375269119,RE
-1375269120,1375269631,FR
-1375269632,1375270143,RE
-1375270144,1375270655,FR
-1375270656,1375271423,RE
-1375271424,1375271679,FR
-1375271680,1375271935,RE
-1375271936,1375272191,FR
-1375272192,1375272959,RE
+1375268352,1375269119,FR
+1375269120,1375269631,RE
+1375269632,1375270143,FR
+1375270144,1375270399,RE
+1375270400,1375271167,FR
+1375271168,1375272191,RE
+1375272192,1375272703,FR
+1375272704,1375272959,RE
1375272960,1375731711,FR
1375731712,1378877439,GB
1378877440,1379926015,IT
@@ -17342,9 +19373,7 @@
1382213632,1382219775,GB
1382219776,1382222847,SE
1382222848,1382223103,FI
-1382223104,1382226943,SE
-1382226944,1382227199,NO
-1382227200,1382252543,SE
+1382223104,1382252543,SE
1382252544,1382268927,CZ
1382268928,1382285311,IR
1382285312,1382301695,CZ
@@ -17361,7 +19390,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
@@ -17397,7 +19428,9 @@
1383251968,1383260159,CZ
1383260160,1383268351,RU
1383268352,1383273983,IR
-1383273984,1383275775,KW
+1383273984,1383274248,KW
+1383274249,1383274249,IR
+1383274250,1383275775,KW
1383275776,1383276543,IR
1383276544,1383284735,KZ
1383284736,1383292927,PL
@@ -17554,11 +19587,7 @@
1385496576,1385504767,SI
1385504768,1385512959,IT
1385512960,1385521151,DE
-1385521152,1385523711,AT
-1385523712,1385523967,HU
-1385523968,1385524479,AT
-1385524480,1385524735,HU
-1385524736,1385529343,AT
+1385521152,1385529343,AT
1385529344,1385537535,RU
1385537536,1385545727,DE
1385545728,1385553919,RU
@@ -17637,6 +19666,7 @@
1388587520,1388587775,GB
1388588288,1388588543,GB
1388588800,1388589823,GB
+1388590080,1388590335,GB
1388591104,1388591359,AU
1388593152,1388601343,RU
1388601344,1388609535,SE
@@ -17647,13 +19677,7 @@
1388642304,1388650495,FI
1388650496,1388658687,PL
1388658688,1388666879,GB
-1388666880,1388667135,FR
-1388667136,1388667391,RE
-1388667392,1388668671,FR
-1388668672,1388668927,RE
-1388668928,1388669183,FR
-1388669184,1388669439,RE
-1388669440,1388675071,FR
+1388666880,1388675071,FR
1388677632,1388677887,NL
1388678144,1388679167,DE
1388681216,1388683263,DE
@@ -17696,11 +19720,13 @@
1388744760,1388744767,IE
1388744768,1388744831,GB
1388744832,1388744847,IE
-1388744848,1388745971,GB
+1388744848,1388744959,GB
+1388744960,1388745215,IE
+1388745216,1388745971,GB
1388745972,1388745975,IE
1388745976,1388746495,GB
-1388746496,1388746751,IE
-1388746752,1388746911,GB
+1388746496,1388746559,IE
+1388746560,1388746911,GB
1388746912,1388746927,IE
1388746928,1388748799,GB
1388748800,1388756991,RU
@@ -17780,14 +19806,15 @@
1389707264,1389723647,IT
1389723648,1389756415,ES
1389756416,1389772799,SE
-1389772800,1389783039,SI
+1389772800,1389778431,SI
+1389778432,1389780991,RS
+1389780992,1389783039,HR
1389783040,1389785087,BA
1389785088,1389787135,MK
-1389787136,1389789183,SI
+1389787136,1389788671,SI
+1389788672,1389789183,RS
1389789184,1389805567,PL
-1389805568,1389805823,DE
-1389805824,1389806079,US
-1389806080,1389806591,DE
+1389805568,1389806591,DE
1389806592,1389806847,SA
1389806848,1389821951,DE
1389821952,1389838335,NL
@@ -17796,9 +19823,7 @@
1389871104,1389887487,FI
1389887488,1389953023,FR
1389953024,1390018559,NL
-1390018560,1390074879,AT
-1390074880,1390075135,HU
-1390075136,1390084095,AT
+1390018560,1390084095,AT
1390084096,1390149631,GB
1390149632,1390215167,CH
1390215168,1390280703,IS
@@ -17827,11 +19852,7 @@
1397071872,1397096447,RU
1397096448,1397227519,IE
1397227520,1397489663,DK
-1397489664,1397582847,CH
-1397582848,1397583103,DE
-1397583104,1397583615,CH
-1397583616,1397583871,DE
-1397583872,1397751807,CH
+1397489664,1397751807,CH
1397751808,1398276095,NL
1398276096,1398800383,DK
1398800384,1398833151,KW
@@ -17947,7 +19968,9 @@
1401546752,1401548799,IT
1401548800,1401550847,FR
1401550848,1401551103,GB
-1401551104,1401552639,JE
+1401551104,1401551359,JE
+1401551360,1401551615,GB
+1401551616,1401552639,JE
1401552640,1401552895,GB
1401552896,1401554943,NL
1401554944,1401556991,IE
@@ -17962,7 +19985,9 @@
1401634816,1401651199,HR
1401651200,1401667583,RU
1401667584,1401683967,IT
-1401683968,1401749503,SE
+1401683968,1401712895,SE
+1401712896,1401713151,DE
+1401713152,1401749503,SE
1401749504,1401765887,DE
1401765888,1401782271,IE
1401782272,1401815039,FR
@@ -18183,30 +20208,14 @@
1404385280,1404386047,LT
1404386048,1404387327,SE
1404387328,1404420095,LT
-1404420096,1404436479,RU
+1404420096,1404426502,RU
+1404426503,1404426503,SE
+1404426504,1404436479,RU
1404436480,1404444671,SE
-1404444672,1404445951,NO
-1404445952,1404446207,SE
-1404446208,1404446719,NO
-1404446720,1404446975,SE
-1404446976,1404447999,NO
-1404448000,1404448255,SE
-1404448256,1404452863,NO
+1404444672,1404452863,NO
1404452864,1404510207,SE
-1404510208,1404510975,HR
-1404510976,1404511231,SE
-1404511232,1404512255,HR
-1404512256,1404512767,SE
-1404512768,1404513023,HR
-1404513024,1404514303,SE
-1404514304,1404514559,HR
-1404514560,1404514815,SE
-1404514816,1404515071,HR
-1404515072,1404515327,SE
-1404515328,1404515839,HR
-1404515840,1404516095,SE
-1404516096,1404518143,HR
-1404518144,1404522495,SE
+1404510208,1404518399,HR
+1404518400,1404522495,SE
1404522496,1404526591,LV
1404526592,1404538879,SE
1404538880,1404542975,LV
@@ -18215,93 +20224,31 @@
1404563456,1404567551,SE
1404567552,1404583935,HR
1404583936,1404600319,NO
-1404600320,1404678143,SE
+1404600320,1404633087,SE
+1404633088,1404633599,HR
+1404633600,1404633855,SE
+1404633856,1404635647,HR
+1404635648,1404635903,SE
+1404635904,1404637439,HR
+1404637440,1404637695,SE
+1404637696,1404638207,HR
+1404638208,1404638463,SE
+1404638464,1404641279,HR
+1404641280,1404678143,SE
1404678144,1404680191,HR
1404680192,1404731391,SE
-1404731392,1404732159,HR
-1404732160,1404732671,SE
-1404732672,1404733951,HR
-1404733952,1404734207,SE
-1404734208,1404736511,HR
-1404736512,1404736767,SE
-1404736768,1404740095,HR
-1404740096,1404740351,SE
-1404740352,1404740863,HR
-1404740864,1404741119,SE
-1404741120,1404742911,HR
-1404742912,1404743679,SE
-1404743680,1404744959,HR
-1404744960,1404745215,SE
-1404745216,1404745983,HR
-1404745984,1404746495,SE
-1404746496,1404748031,HR
-1404748032,1404748287,SE
-1404748288,1404748799,HR
-1404748800,1404749311,SE
-1404749312,1404749567,HR
-1404749568,1404750079,SE
-1404750080,1404752639,HR
-1404752640,1404752895,SE
-1404752896,1404754943,HR
-1404754944,1404755199,SE
-1404755200,1404755967,HR
-1404755968,1404756223,SE
-1404756224,1404756479,HR
-1404756480,1404756735,SE
-1404756736,1404757247,HR
-1404757248,1404757503,SE
-1404757504,1404759551,HR
-1404759552,1404759807,SE
-1404759808,1404760063,HR
-1404760064,1404760319,SE
-1404760320,1404760831,HR
-1404760832,1404761087,SE
-1404761088,1404762111,HR
-1404762112,1404762367,SE
-1404762368,1404762623,HR
-1404762624,1404763135,SE
-1404763136,1404763647,HR
-1404763648,1404763903,SE
-1404763904,1404764159,HR
+1404731392,1404764159,HR
1404764160,1404780543,NL
1404780544,1404788735,SE
-1404788736,1404790527,NL
-1404790528,1404790783,SE
-1404790784,1404791039,NL
-1404791040,1404791295,SE
-1404791296,1404791807,NL
-1404791808,1404792063,SE
-1404792064,1404792575,NL
-1404792576,1404792831,SE
-1404792832,1404793599,NL
-1404793600,1404793855,SE
-1404793856,1404795135,NL
-1404795136,1404795391,SE
-1404795392,1404795647,NL
-1404795648,1404795903,SE
-1404795904,1404796927,NL
+1404788736,1404796927,NL
1404796928,1404801023,EE
-1404801024,1404803071,SE
-1404803072,1404803327,LV
-1404803328,1404803583,SE
+1404801024,1404803583,SE
1404803584,1404804095,LV
1404804096,1404805119,SE
1404805120,1404813311,AT
1404813312,1404815871,EE
1404815872,1404816383,LT
-1404816384,1404821503,NL
-1404821504,1404821759,SE
-1404821760,1404822271,NL
-1404822272,1404822527,SE
-1404822528,1404822783,NL
-1404822784,1404823039,SE
-1404823040,1404825087,NL
-1404825088,1404825343,SE
-1404825344,1404826367,NL
-1404826368,1404826623,SE
-1404826624,1404827135,NL
-1404827136,1404827903,SE
-1404827904,1404829695,NL
+1404816384,1404829695,NL
1404829696,1404870655,RU
1404870656,1404872703,LT
1404872704,1404874751,SE
@@ -18310,21 +20257,44 @@
1404887040,1404927999,NL
1404928000,1404944383,SE
1404944384,1404960767,LT
-1404960768,1405009919,SE
-1405009920,1405010687,LT
-1405010688,1405010943,SE
-1405010944,1405011199,LT
-1405011200,1405011711,SE
-1405011712,1405013759,LT
-1405013760,1405014015,SE
-1405014016,1405020159,LT
-1405020160,1405020415,SE
-1405020416,1405020927,LT
-1405020928,1405021183,SE
-1405021184,1405021439,LT
-1405021440,1405021951,SE
-1405021952,1405022207,LT
-1405022208,1405026303,SE
+1404960768,1404977151,SE
+1404977152,1404977919,LT
+1404977920,1404978175,SE
+1404978176,1404980223,LT
+1404980224,1404980479,SE
+1404980480,1404981247,LT
+1404981248,1404981503,SE
+1404981504,1404983551,LT
+1404983552,1404983807,SE
+1404983808,1404985087,LT
+1404985088,1404985343,SE
+1404985344,1404986623,LT
+1404986624,1404986879,SE
+1404986880,1404987135,LT
+1404987136,1404987311,SE
+1404987312,1404987312,LT
+1404987313,1404987647,SE
+1404987648,1404988415,LT
+1404988416,1404988469,SE
+1404988470,1404988470,LT
+1404988471,1404988671,SE
+1404988672,1404989695,LT
+1404989696,1404989951,SE
+1404989952,1404990463,LT
+1404990464,1404990719,SE
+1404990720,1404990975,LT
+1404990976,1404991231,SE
+1404991232,1404992511,LT
+1404992512,1404992767,SE
+1404992768,1404993535,LT
+1404993536,1405009919,SE
+1405009920,1405022207,LT
+1405022208,1405022463,SE
+1405022464,1405022975,LT
+1405022976,1405023231,SE
+1405023232,1405025023,LT
+1405025024,1405025279,SE
+1405025280,1405026303,LT
1405026304,1405042687,NO
1405042688,1405048831,SE
1405048832,1405050879,HR
@@ -18333,21 +20303,133 @@
1405063168,1405067263,NO
1405067264,1405083647,EE
1405083648,1405091839,SE
-1405091840,1405815295,FR
-1405815296,1405815551,MQ
-1405815552,1405820927,FR
-1405820928,1405821183,MQ
-1405821184,1405822719,FR
-1405822720,1405822975,MQ
-1405822976,1405834751,FR
-1405834752,1405835007,MQ
-1405835008,1405850879,FR
-1405850880,1405851135,MQ
-1405851136,1405858815,FR
+1405091840,1405813759,FR
+1405813760,1405814015,MQ
+1405814016,1405815807,FR
+1405815808,1405816063,MQ
+1405816064,1405816319,FR
+1405816320,1405816575,MQ
+1405816576,1405816831,FR
+1405816832,1405817087,MQ
+1405817088,1405817343,FR
+1405817344,1405817599,MQ
+1405817600,1405818111,FR
+1405818112,1405818367,MQ
+1405818368,1405818623,FR
+1405818624,1405818879,MQ
+1405818880,1405819135,FR
+1405819136,1405819391,MQ
+1405819392,1405819903,FR
+1405819904,1405820159,MQ
+1405820160,1405820671,FR
+1405820672,1405820927,MQ
+1405820928,1405821439,FR
+1405821440,1405821695,MQ
+1405821696,1405822207,FR
+1405822208,1405822719,MQ
+1405822720,1405823231,FR
+1405823232,1405823743,MQ
+1405823744,1405824255,FR
+1405824256,1405824511,MQ
+1405824512,1405824767,FR
+1405824768,1405825279,MQ
+1405825280,1405825535,FR
+1405825536,1405826303,MQ
+1405826304,1405826559,FR
+1405826560,1405826815,MQ
+1405826816,1405827071,FR
+1405827072,1405827583,MQ
+1405827584,1405827839,FR
+1405827840,1405828095,MQ
+1405828096,1405828607,FR
+1405828608,1405829119,MQ
+1405829120,1405829375,FR
+1405829376,1405829631,MQ
+1405829632,1405830143,FR
+1405830144,1405830399,MQ
+1405830400,1405830655,FR
+1405830656,1405831167,MQ
+1405831168,1405831423,FR
+1405831424,1405831679,MQ
+1405831680,1405833727,FR
+1405833728,1405833983,MQ
+1405833984,1405834495,FR
+1405834496,1405835263,MQ
+1405835264,1405835775,FR
+1405835776,1405836031,MQ
+1405836032,1405836543,FR
+1405836544,1405837055,MQ
+1405837056,1405837311,FR
+1405837312,1405837567,MQ
+1405837568,1405838079,FR
+1405838080,1405838591,MQ
+1405838592,1405839103,FR
+1405839104,1405839359,MQ
+1405839360,1405839615,FR
+1405839616,1405839871,MQ
+1405839872,1405840127,FR
+1405840128,1405840639,MQ
+1405840640,1405845503,FR
+1405845504,1405845759,MQ
+1405845760,1405846015,FR
+1405846016,1405846527,MQ
+1405846528,1405846783,FR
+1405846784,1405847039,MQ
+1405847040,1405847551,FR
+1405847552,1405847807,MQ
+1405847808,1405848063,FR
+1405848064,1405848319,MQ
+1405848320,1405848575,FR
+1405848576,1405848831,MQ
+1405848832,1405849087,FR
+1405849088,1405849599,MQ
+1405849600,1405849855,FR
+1405849856,1405850111,MQ
+1405850112,1405850623,FR
+1405850624,1405850879,MQ
+1405850880,1405851135,FR
+1405851136,1405851903,MQ
+1405851904,1405852159,FR
+1405852160,1405853439,MQ
+1405853440,1405854463,FR
+1405854464,1405854975,MQ
+1405854976,1405856255,FR
+1405856256,1405856511,MQ
+1405856512,1405857791,FR
+1405857792,1405858559,MQ
+1405858560,1405858815,FR
1405858816,1405859071,MQ
-1405859072,1405871103,FR
-1405871104,1405871359,MQ
-1405871360,1406140415,FR
+1405859072,1405859327,FR
+1405859328,1405860351,MQ
+1405860352,1405860607,FR
+1405860608,1405861119,MQ
+1405861120,1405861375,FR
+1405861376,1405861631,MQ
+1405861632,1405862143,FR
+1405862144,1405862399,MQ
+1405862400,1405862911,FR
+1405862912,1405863423,MQ
+1405863424,1405864447,FR
+1405864448,1405864703,MQ
+1405864704,1405864959,FR
+1405864960,1405865983,MQ
+1405865984,1405866239,FR
+1405866240,1405866495,MQ
+1405866496,1405867519,FR
+1405867520,1405867775,MQ
+1405867776,1405868287,FR
+1405868288,1405868799,MQ
+1405868800,1405870335,FR
+1405870336,1405870591,MQ
+1405870592,1405871359,FR
+1405871360,1405871615,MQ
+1405871616,1405871871,FR
+1405871872,1405872127,MQ
+1405872128,1405872383,FR
+1405872384,1405872895,MQ
+1405872896,1405873663,FR
+1405873664,1405873919,MQ
+1405873920,1406140415,FR
1406140416,1406205951,CZ
1406205952,1406271487,SE
1406271488,1406337023,IE
@@ -18369,35 +20451,23 @@
1406730240,1406746623,RU
1406746624,1406754815,BE
1406754816,1406763007,GB
-1406763008,1406763263,BE
-1406763264,1406764799,LU
-1406764800,1406765055,BE
-1406765056,1406765311,LU
-1406765312,1406765823,BE
-1406765824,1406766335,LU
-1406766336,1406767103,BE
-1406767104,1406767615,LU
-1406767616,1406767871,BE
-1406767872,1406768127,LU
-1406768128,1406768383,BE
-1406768384,1406769407,LU
-1406769408,1406769663,BE
-1406769664,1406770431,LU
-1406770432,1406770687,BE
-1406770688,1406770943,LU
-1406770944,1406771199,BE
+1406763008,1406771199,LU
1406771200,1406779391,GB
1406779392,1406787583,RU
-1406787584,1406791167,ES
-1406791168,1406791295,GB
+1406787584,1406791159,ES
+1406791160,1406791295,GB
1406791296,1406793843,ES
1406793844,1406793847,GB
1406793848,1406794751,ES
1406794752,1406795775,NL
1406795776,1406796543,GB
1406796544,1406796799,IM
-1406796800,1406803455,GB
-1406803456,1406803967,IM
+1406796800,1406802175,GB
+1406802176,1406802431,IM
+1406802432,1406803199,GB
+1406803200,1406803455,IM
+1406803456,1406803711,GB
+1406803712,1406803967,IM
1406803968,1406812159,DE
1406812160,1406820351,SE
1406820352,1406828543,PL
@@ -18452,9 +20522,7 @@
1407320064,1407451135,SE
1407451136,1407483903,BG
1407483904,1407516671,CH
-1407516672,1407522719,GB
-1407522720,1407522727,CD
-1407522728,1407526231,GB
+1407516672,1407526231,GB
1407526232,1407526239,CD
1407526240,1407529178,GB
1407529179,1407529180,NG
@@ -18572,9 +20640,7 @@
1410514944,1410523135,GB
1410523136,1410531327,PT
1410531328,1410539519,DE
-1410539520,1410540671,GB
-1410540672,1410540799,US
-1410540800,1410547711,GB
+1410539520,1410547711,GB
1410547712,1410555903,CZ
1410555904,1410564095,GB
1410564096,1410572287,SE
@@ -18600,9 +20666,9 @@
1410711552,1410719743,BG
1410719744,1410727935,RU
1410727936,1410736127,BG
-1410736128,1410738687,RS
-1410738688,1410738943,XK
-1410738944,1410744319,RS
+1410736128,1410739967,RS
+1410739968,1410740479,XK
+1410740480,1410744319,RS
1410744320,1410752511,FR
1410752512,1410760703,NL
1410760704,1410768895,RU
@@ -18617,15 +20683,7 @@
1410834432,1410842623,PL
1410842624,1410850815,PT
1410850816,1410859007,DE
-1410859008,1410972159,NL
-1410972160,1410972415,DE
-1410972416,1410972671,NL
-1410972672,1410972927,DE
-1410972928,1410973439,NL
-1410973440,1410973695,DE
-1410973696,1410975487,NL
-1410975488,1410975743,DE
-1410975744,1411383295,NL
+1410859008,1411383295,NL
1411383296,1411448831,LT
1411448832,1411449727,IT
1411449728,1411449791,DE
@@ -18672,8 +20730,11 @@
1411899392,1411901439,ES
1411901440,1411903487,IE
1411903488,1411907583,RU
+1411907584,1411911679,GB
1411911680,1411915775,US
+1411915776,1411919871,GB
1411919872,1411921919,DE
+1411922432,1411923967,GB
1411923968,1411940351,BG
1411940352,1411973119,PL
1411973120,1411999743,SI
@@ -18729,11 +20790,9 @@
1412939776,1412956159,CH
1412956160,1413480447,DE
1413480448,1414004735,IN
-1414004736,1414036607,CH
-1414036608,1414036991,DE
-1414036992,1414039551,CH
-1414039552,1414040575,DE
-1414040576,1414069218,CH
+1414004736,1414039551,CH
+1414039552,1414040191,DE
+1414040192,1414069218,CH
1414069219,1414069219,AT
1414069220,1414094847,CH
1414094848,1414095615,DE
@@ -18747,9 +20806,7 @@
1415577600,1416101887,FR
1416101888,1416364031,NL
1416364032,1416626175,IL
-1416626176,1416876287,AT
-1416876288,1416876543,CH
-1416876544,1416941567,AT
+1416626176,1416941567,AT
1416941568,1416943615,CH
1416943616,1416944639,AT
1416944640,1416945663,CZ
@@ -18758,61 +20815,7 @@
1417019392,1417150463,DE
1417150464,1417674751,ES
1417674752,1421869055,DE
-1421869056,1421886975,BE
-1421886976,1421887743,NL
-1421887744,1421888511,BE
-1421888512,1421888767,NL
-1421888768,1421889279,BE
-1421889280,1421889791,NL
-1421889792,1421890047,BE
-1421890048,1421890303,NL
-1421890304,1421893119,BE
-1421893120,1421893631,NL
-1421893632,1421894143,BE
-1421894144,1421894399,NL
-1421894400,1421894783,BE
-1421894784,1421894911,NL
-1421894912,1421896063,BE
-1421896064,1421896703,NL
-1421896704,1421896831,BE
-1421896832,1421896959,NL
-1421896960,1421897727,BE
-1421897728,1421898239,NL
-1421898240,1421899263,BE
-1421899264,1421899519,NL
-1421899520,1421900543,BE
-1421900544,1421900799,NL
-1421900800,1421959679,BE
-1421959680,1421959807,NL
-1421959808,1421959935,BE
-1421959936,1421960191,NL
-1421960192,1422022143,BE
-1422022144,1422022399,NL
-1422022400,1422082559,BE
-1422082560,1422083071,NL
-1422083072,1422084223,BE
-1422084224,1422084351,NL
-1422084352,1422085119,BE
-1422085120,1422085375,NL
-1422085376,1422085887,BE
-1422085888,1422086143,NL
-1422086144,1422087679,BE
-1422087680,1422088191,NL
-1422088192,1422088447,BE
-1422088448,1422088703,NL
-1422088704,1422088959,BE
-1422088960,1422089215,NL
-1422089216,1422089471,BE
-1422089472,1422089727,NL
-1422089728,1422095743,BE
-1422095744,1422095871,NL
-1422095872,1422128639,BE
-1422128640,1422129151,NL
-1422129152,1422132479,BE
-1422132480,1422132735,NL
-1422132736,1422289663,BE
-1422289664,1422289791,NL
-1422289792,1422393343,BE
+1421869056,1422393343,BE
1422393344,1422413567,DE
1422413568,1422413695,AT
1422413696,1422413727,US
@@ -18838,10 +20841,10 @@
1422786560,1422852095,HU
1422857088,1422857151,FR
1422910208,1422910463,NL
+1422911232,1422911487,NL
1422916608,1422916863,GB
1422917120,1422917343,GB
1422917344,1422917375,NL
-1422917376,1422917631,GB
1422917632,1423441919,NO
1423441920,1423704063,SE
1423704064,1423966207,IT
@@ -18858,21 +20861,27 @@
1424503716,1424523263,ES
1424523264,1424556031,RO
1424556032,1424588799,EG
-1424588800,1424592639,GB
-1424592640,1424592895,FR
-1424592896,1424595711,GB
-1424595712,1424595967,IT
-1424595968,1424597069,GB
+1424588800,1424595743,GB
+1424595744,1424595751,IT
+1424595752,1424597069,GB
1424597070,1424597070,CZ
-1424597071,1424600575,GB
-1424600576,1424600831,FR
-1424600832,1424602879,GB
-1424602880,1424603135,US
-1424603136,1424604975,GB
-1424604976,1424604983,NL
-1424604984,1424607743,GB
+1424597071,1424603023,GB
+1424603024,1424603039,US
+1424603040,1424604975,GB
+1424604976,1424604991,NL
+1424604992,1424607743,GB
1424607744,1424607775,DE
-1424607776,1424617215,GB
+1424607776,1424608083,GB
+1424608084,1424608087,FR
+1424608088,1424610643,GB
+1424610644,1424610644,PL
+1424610645,1424610992,GB
+1424610993,1424610993,FR
+1424610994,1424611002,GB
+1424611003,1424611003,FR
+1424611004,1424611005,GB
+1424611006,1424611006,FR
+1424611007,1424617215,GB
1424617216,1424617231,IT
1424617232,1424621567,GB
1424621568,1424625663,PL
@@ -18963,17 +20972,12 @@
1425485312,1425489407,RO
1425489408,1425489663,NL
1425489664,1425506303,RO
-1425506304,1425518847,NO
-1425518848,1425518975,RU
-1425518976,1425522687,NO
+1425506304,1425522687,NO
1425522688,1425539071,IT
1425539072,1425801215,FI
-1425801216,1425813759,BG
-1425813760,1425814015,MK
-1425814016,1425814271,BG
-1425814272,1425814527,MK
+1425801216,1425813503,BG
+1425813504,1425814527,MK
1425814528,1425817599,BG
-1425820160,1425820415,DE
1425833984,1425850367,RU
1425850368,1425866751,GB
1425866752,1425883135,CH
@@ -18984,7 +20988,8 @@
1425948672,1425965055,DE
1425965056,1425970175,IT
1425970176,1425970431,FR
-1425970432,1425980415,IT
+1425970432,1425977343,IT
+1425977344,1425980415,FR
1425980416,1425980671,IQ
1425980672,1425981439,IT
1425981440,1425997823,RU
@@ -18992,17 +20997,7 @@
1426014208,1426030591,DK
1426030592,1426046975,BH
1426046976,1426063359,SI
-1426063360,1426094335,CH
-1426094336,1426094591,DE
-1426094592,1426112511,CH
-1426112512,1426112767,DE
-1426112768,1426118271,CH
-1426118272,1426118399,DE
-1426118400,1426168575,CH
-1426168576,1426168831,DE
-1426168832,1426175999,CH
-1426176000,1426176255,DE
-1426176256,1426587647,CH
+1426063360,1426587647,CH
1426587648,1426604031,SE
1426604032,1426620415,DE
1426636800,1426653183,GB
@@ -19026,9 +21021,7 @@
1426915328,1426931711,AT
1426931712,1426948095,CZ
1426948096,1426964479,DE
-1426964480,1426967287,GB
-1426967288,1426967295,ES
-1426967296,1426980863,GB
+1426964480,1426980863,GB
1426980864,1426997247,BG
1426997248,1427013631,PL
1427013632,1427030015,FR
@@ -19082,7 +21075,9 @@
1427832832,1427865599,BE
1427865600,1427898367,DK
1427898368,1427914751,RU
-1427914752,1427931135,BE
+1427914752,1427930965,BE
+1427930966,1427930966,LU
+1427930967,1427931135,BE
1427931136,1427947519,PL
1427947520,1427963903,RU
1427963904,1427980287,TR
@@ -19142,7 +21137,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
@@ -19219,12 +21216,8 @@
1433615028,1433615028,GB
1433615029,1433615359,DE
1433615360,1433615615,FR
-1433615616,1433615871,GB
-1433615872,1433616127,CH
-1433616128,1433616383,GB
-1433616384,1433621759,AE
-1433621760,1433622015,IN
-1433622016,1433624575,AE
+1433615616,1433616383,GB
+1433616384,1433624575,AE
1433624576,1433632767,LV
1433632768,1433640959,GI
1433640960,1433649151,RU
@@ -19266,9 +21259,9 @@
1433860096,1433862143,DE
1433862144,1433864191,CH
1433864192,1433866239,HU
-1433866240,1433867519,NL
-1433867520,1433867775,GB
-1433867776,1433868287,NL
+1433866240,1433867521,NL
+1433867522,1433867522,GB
+1433867523,1433868287,NL
1433868288,1433870335,GB
1433870336,1433872383,TR
1433872384,1433874431,IT
@@ -19310,9 +21303,7 @@
1434615808,1434648575,IL
1434648576,1434681343,FI
1434681344,1434714111,DE
-1434714112,1434717951,AZ
-1434717952,1434718207,GB
-1434718208,1434746879,AZ
+1434714112,1434746879,AZ
1434746880,1434779647,CZ
1434779648,1434812415,GB
1434812416,1434845183,IR
@@ -19354,9 +21345,7 @@
1436464384,1436464639,AT
1436464640,1436465151,DE
1436465152,1436467199,RU
-1436467200,1436468223,DE
-1436468224,1436468479,AT
-1436468480,1436469247,DE
+1436467200,1436469247,DE
1436469248,1436471295,NL
1436471296,1436473343,BE
1436473344,1436475391,RO
@@ -19453,15 +21442,15 @@
1439055872,1439072255,RU
1439072256,1439088639,UA
1439088640,1439105023,PL
-1439105024,1439121407,AT
+1439105024,1439106559,AT
+1439106560,1439106815,DE
+1439106816,1439121407,AT
1439121408,1439154175,DE
1439154176,1439156106,GB
1439156107,1439156108,LB
1439156109,1439170559,GB
1439170560,1439236095,NO
-1439236096,1439261439,BE
-1439261440,1439261695,FR
-1439261696,1439301631,BE
+1439236096,1439301631,BE
1439301632,1439305727,RU
1439305728,1439309823,DK
1439309824,1439318015,PL
@@ -19511,7 +21500,7 @@
1439561728,1439562239,GB
1439562240,1439562751,IE
1439562752,1439563007,DE
-1439563008,1439563263,IT
+1439563008,1439563263,GB
1439563264,1439563775,DE
1439563776,1439629311,LT
1439629312,1439694847,CZ
@@ -19532,8 +21521,7 @@
1440645120,1440669695,RS
1440669696,1440671743,NL
1440671744,1440672767,EE
-1440672768,1440673791,RS
-1440673792,1440710655,NL
+1440672768,1440710655,NL
1440710656,1440743423,UA
1440743424,1441267711,SE
1441267712,1441275903,DE
@@ -19558,9 +21546,9 @@
1441439744,1441447935,LV
1441447936,1441456127,BE
1441456128,1441464319,NL
-1441464320,1441468927,SE
-1441468928,1441469183,DK
-1441469184,1441472511,SE
+1441464320,1441470463,SE
+1441470464,1441470719,DK
+1441470720,1441472511,SE
1441472512,1441480703,RU
1441480704,1441488895,TR
1441488896,1441497087,GB
@@ -19620,9 +21608,7 @@
1442709504,1442775039,LV
1442775040,1442779135,PL
1442779136,1442783231,DE
-1442783232,1442786559,NO
-1442786560,1442786815,LV
-1442786816,1442787327,NO
+1442783232,1442787327,NO
1442787328,1442791423,LT
1442791424,1442795519,LV
1442799616,1442803711,LT
@@ -19637,11 +21623,7 @@
1442832384,1442836479,GB
1442836480,1442840575,PL
1442840576,1444937727,GB
-1444937728,1444985599,AT
-1444985600,1444985855,DE
-1444985856,1445061631,AT
-1445061632,1445061887,DE
-1445061888,1445068799,AT
+1444937728,1445068799,AT
1445068800,1445199871,RO
1445199872,1445330943,QA
1445330944,1445396479,LT
@@ -19653,14 +21635,13 @@
1446182912,1446248447,SA
1446248448,1446313983,DK
1446313984,1446445055,GB
-1446445056,1446510591,RO
+1446445056,1446510591,IR
1446510592,1446543359,DE
1446543360,1446576127,AT
1446576128,1446608895,IR
1446608896,1446641663,BY
1446641664,1446674431,SI
-1446674432,1446707135,DK
-1446707136,1446707199,NO
+1446674432,1446707199,DK
1446707200,1446739967,AT
1446739968,1446772735,HU
1446772736,1446805503,SA
@@ -19683,7 +21664,9 @@
1449459712,1449525247,HU
1449525248,1449590783,RU
1449590784,1449656319,DE
-1449656320,1449706495,RO
+1449656320,1449664511,RO
+1449664512,1449668607,IR
+1449668608,1449706495,RO
1449706496,1449707519,MD
1449707520,1449736191,RO
1449736192,1449738239,MD
@@ -19699,13 +21682,16 @@
1449824256,1449826303,MD
1449826304,1449840639,RO
1449840640,1449852927,MD
-1449852928,1449869311,RO
+1449852928,1449857023,IR
+1449857024,1449869311,RO
1449869312,1449870335,MD
1449870336,1449883647,RO
1449883648,1449885695,BE
1449885696,1449893887,RO
1449893888,1449895935,MD
-1449895936,1449918463,RO
+1449895936,1449906175,RO
+1449906176,1449910271,IR
+1449910272,1449918463,RO
1449918464,1449951231,JO
1449951232,1449983999,TR
1449984000,1449992191,NL
@@ -19769,19 +21755,13 @@
1466097664,1466099711,ES
1466099712,1466101759,PL
1466101760,1466103807,DE
-1466103808,1466104116,FR
-1466104117,1466104117,GB
-1466104118,1466104442,FR
-1466104443,1466104443,GB
-1466104444,1466104467,FR
-1466104468,1466104468,GB
-1466104469,1466104942,FR
+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
@@ -19803,7 +21783,9 @@
1466499072,1466564607,PL
1466564608,1466571894,DE
1466571895,1466571895,AE
-1466571896,1466589183,DE
+1466571896,1466588785,DE
+1466588786,1466588786,FR
+1466588787,1466589183,DE
1466589184,1466590207,FR
1466590208,1466591999,GB
1466592000,1466613759,DE
@@ -19946,12 +21928,7 @@
1475211264,1475213311,DE
1475213312,1475215359,FR
1475215360,1475223551,IT
-1475223552,1475226239,SE
-1475226240,1475226367,NO
-1475226368,1475226495,SE
-1475226496,1475227647,NO
-1475227648,1475231743,SE
-1475231744,1475233791,NO
+1475223552,1475233791,NO
1475233792,1475235839,GB
1475235840,1475237887,IE
1475237888,1475239935,ES
@@ -19969,7 +21946,9 @@
1475260416,1475262463,FR
1475262464,1475266559,DE
1475266560,1475268607,GB
-1475268608,1475270655,RS
+1475268608,1475268863,RS
+1475268864,1475269119,XK
+1475269120,1475270655,RS
1475270656,1475272703,GB
1475272704,1475274751,BE
1475274752,1475276799,RU
@@ -20022,23 +22001,13 @@
1475575808,1475592191,AT
1475592192,1475608575,GB
1475608576,1475624959,RU
-1475624960,1475637303,JE
-1475637304,1475637311,GB
-1475637312,1475637471,JE
-1475637472,1475637479,GB
-1475637480,1475638783,JE
+1475624960,1475638783,JE
1475638784,1475639039,GB
1475639040,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
+1475639488,1475641343,JE
1475641344,1475657727,UA
1475657728,1475674111,SK
1475674112,1475690495,DE
@@ -20049,10 +22018,8 @@
1475724868,1475724869,GB
1475724870,1475724870,RU
1475724871,1475725055,GB
-1475725056,1475725311,RU
-1475725312,1475726079,GB
-1475726080,1475726335,RU
-1475726336,1475729663,GB
+1475725056,1475725183,RU
+1475725184,1475729663,GB
1475729664,1475729671,UA
1475729672,1475731007,GB
1475731008,1475731071,UA
@@ -20184,7 +22151,8 @@
1481741568,1481741568,GG
1481741569,1481741823,GB
1481741824,1481742079,GG
-1481742080,1481744383,GB
+1481742080,1481744127,GB
+1481744128,1481744383,GG
1481744384,1481752575,IT
1481752576,1481760767,RU
1481760768,1481768959,UA
@@ -20244,19 +22212,7 @@
1482948608,1483210751,CZ
1483210752,1483735039,GB
1483735040,1483997183,FI
-1483997184,1484044287,AT
-1484044288,1484044543,DE
-1484044544,1484049911,AT
-1484049912,1484049915,DE
-1484049916,1484049921,AT
-1484049922,1484049922,DE
-1484049923,1484084607,AT
-1484084608,1484084735,DE
-1484084736,1484084991,AT
-1484084992,1484085119,DE
-1484085120,1484088831,AT
-1484088832,1484089087,DE
-1484089088,1484128255,AT
+1483997184,1484128255,AT
1484128256,1484259327,LT
1484259328,1484783615,FR
1484783616,1484849151,DE
@@ -20270,9 +22226,7 @@
1485250560,1485254655,IR
1485254656,1485259007,RU
1485259008,1485262847,UA
-1485262848,1485263615,RU
-1485263616,1485263871,UA
-1485263872,1485266943,RU
+1485262848,1485266943,RU
1485266944,1485271039,RO
1485271040,1485275135,UA
1485275136,1485283327,LV
@@ -20356,13 +22310,18 @@
1489644032,1489644287,IT
1489644288,1489644543,FR
1489644544,1489644799,IQ
-1489644800,1489648383,IT
+1489644800,1489647615,IT
+1489647616,1489648383,FR
1489648384,1489648639,GR
1489648640,1489649663,IT
1489649664,1489650687,FR
-1489650688,1489660159,IT
-1489660160,1489660415,LY
-1489660416,1489666047,IT
+1489650688,1489651199,IT
+1489651200,1489653247,FR
+1489653248,1489655295,IT
+1489655296,1489655551,GR
+1489655552,1489659647,IT
+1489659648,1489661951,FR
+1489661952,1489666047,IT
1489666048,1489674239,GB
1489674240,1489676287,NL
1489676288,1489698815,GB
@@ -20379,35 +22338,26 @@
1490028544,1490029055,UA
1490029056,1490042879,NL
1490042880,1490053375,CZ
-1490053376,1490053631,PL
-1490053632,1490059263,CZ
+1490053376,1490054143,PL
+1490054144,1490059263,CZ
1490059264,1490075647,DE
1490075648,1490092031,GB
1490092032,1490108415,DE
1490108416,1490124799,MC
1490124800,1490141183,HU
1490141184,1490142719,CZ
-1490142720,1490143231,HU
-1490143232,1490143999,CZ
-1490144000,1490144255,HU
-1490144256,1490146559,CZ
-1490146560,1490146815,HU
-1490146816,1490148863,CZ
-1490148864,1490149119,HU
-1490149120,1490151679,CZ
-1490151680,1490151935,HU
-1490151936,1490153983,CZ
-1490153984,1490154239,HU
-1490154240,1490154495,CZ
-1490154496,1490154751,HU
-1490154752,1490157567,CZ
+1490142720,1490142975,HU
+1490142976,1490145279,CZ
+1490145280,1490147327,HU
+1490147328,1490149375,CZ
+1490149376,1490150399,HU
+1490150400,1490155519,CZ
+1490155520,1490157567,HU
1490157568,1490173951,RU
1490173952,1490190335,PT
1490190336,1490196991,GB
1490196992,1490197247,IE
-1490197248,1490205183,GB
-1490205184,1490205439,LY
-1490205440,1490206719,GB
+1490197248,1490206719,GB
1490206720,1490223103,GE
1490223104,1490255871,GB
1490255872,1490272255,NL
@@ -20451,32 +22401,32 @@
1491075072,1493172223,TR
1493172224,1493303295,DE
1493303296,1493430527,FR
-1493430528,1493430783,GP
-1493430784,1493431039,FR
-1493431040,1493431551,GP
-1493431552,1493431807,FR
-1493431808,1493432319,GP
-1493432320,1493434111,MQ
-1493434112,1493434367,FR
+1493430528,1493431039,GP
+1493431040,1493431807,FR
+1493431808,1493432063,GP
+1493432064,1493433087,FR
+1493433088,1493433855,MQ
+1493433856,1493434111,FR
+1493434112,1493434367,MQ
1493434368,1493565439,SA
1493565440,1493696511,ES
1493696512,1493958655,NO
1493958656,1494220799,DE
-1494220800,1494221823,FR
-1494221824,1494222335,RE
+1494220800,1494222079,FR
+1494222080,1494222335,RE
1494222336,1494222591,FR
1494222592,1494222847,RE
-1494222848,1494223615,FR
-1494223616,1494223871,RE
-1494223872,1494225407,FR
+1494222848,1494223359,FR
+1494223360,1494223615,RE
+1494223616,1494223871,FR
+1494223872,1494224127,RE
+1494224128,1494224895,FR
+1494224896,1494225151,GP
+1494225152,1494225407,FR
1494225408,1494225663,GP
-1494225664,1494226687,FR
-1494226688,1494226943,GP
-1494226944,1494227455,FR
-1494227456,1494227967,GP
-1494227968,1494228479,FR
-1494228480,1494228735,GP
-1494228736,1494228991,FR
+1494225664,1494227711,FR
+1494227712,1494227967,GP
+1494227968,1494228991,FR
1494228992,1494237183,RU
1494237184,1494245375,IE
1494245376,1494253567,RU
@@ -20645,13 +22595,19 @@
1495517184,1495518207,MD
1495518208,1495571455,RO
1495571456,1495572479,MD
-1495572480,1495608319,RO
+1495572480,1495597055,RO
+1495597056,1495601151,IR
+1495601152,1495608319,RO
1495608320,1495609343,MD
1495609344,1495623679,RO
1495623680,1495623935,MD
-1495623936,1495670783,RO
+1495623936,1495632127,RO
+1495632128,1495632639,MD
+1495632640,1495670783,RO
1495670784,1495671807,MD
-1495671808,1495678975,RO
+1495671808,1495672831,RO
+1495672832,1495674879,ES
+1495674880,1495678975,RO
1495678976,1495679999,MD
1495680000,1495682047,RO
1495682048,1495683071,MD
@@ -20667,9 +22623,12 @@
1495756800,1495758847,MD
1495758848,1495759871,RO
1495759872,1495760127,MD
-1495760128,1495762943,RO
+1495760128,1495760895,RO
+1495760896,1495762943,DE
1495762944,1495764991,MD
-1495764992,1495782655,RO
+1495764992,1495771135,RO
+1495771136,1495772159,PL
+1495772160,1495782655,RO
1495782656,1495782911,GB
1495782912,1495790079,RO
1495790080,1495790335,MD
@@ -20691,13 +22650,16 @@
1495957504,1495958527,MD
1495958528,1495966719,RO
1495966720,1495967743,MD
-1495967744,1495970815,RO
+1495967744,1495968767,NL
+1495968768,1495970815,RO
1495970816,1495971839,MD
1495971840,1495982079,RO
1495982080,1495983103,MD
1495983104,1495986175,RO
1495986176,1495988223,MD
-1495988224,1496004607,RO
+1495988224,1495990271,RO
+1495990272,1495994367,IR
+1495994368,1496004607,RO
1496004608,1496005631,MD
1496005632,1496018943,RO
1496018944,1496020991,MD
@@ -20717,7 +22679,9 @@
1496121344,1496122367,MD
1496122368,1496131583,RO
1496131584,1496132607,MD
-1496132608,1496197119,RO
+1496132608,1496133631,RO
+1496133632,1496137727,IR
+1496137728,1496197119,RO
1496197120,1496197631,MD
1496197632,1496228863,RO
1496228864,1496229887,MD
@@ -20736,13 +22700,7 @@
1499594752,1499725823,NL
1499725824,1499856895,IE
1499856896,1499987967,CZ
-1499987968,1499989247,AT
-1499989248,1499989503,HU
-1499989504,1499990911,AT
-1499990912,1499991039,HU
-1499991040,1499992575,AT
-1499992576,1499992831,HU
-1499992832,1499996159,AT
+1499987968,1499996159,AT
1499996160,1500004351,GB
1500004352,1500020735,RU
1500020736,1500028927,IS
@@ -20818,11 +22776,7 @@
1500479488,1500495871,RU
1500495872,1500512255,BA
1500512256,1500643327,RU
-1500643328,1500661247,PT
-1500661248,1500661503,RO
-1500661504,1500667647,PT
-1500667648,1500667903,RO
-1500667904,1500774399,PT
+1500643328,1500774399,PT
1500774400,1500905471,LT
1500905472,1501036543,IT
1501036544,1501298687,RO
@@ -20863,8 +22817,10 @@
1502937088,1502953471,RO
1502953472,1502969855,MD
1502969856,1502975231,FR
-1502975232,1502975487,GB
-1502975488,1502975743,FR
+1502975232,1502975247,GB
+1502975248,1502975327,FR
+1502975328,1502975359,GB
+1502975360,1502975743,FR
1502975744,1502975999,DE
1502976000,1502978047,FR
1502978048,1502979071,US
@@ -20895,7 +22851,9 @@
1503084544,1503100927,GB
1503100928,1503117311,RU
1503117312,1503133695,NO
-1503133696,1503395839,PT
+1503133696,1503370138,PT
+1503370139,1503370139,GB
+1503370140,1503395839,PT
1503395840,1503657983,FR
1503657984,1503690751,SE
1503690752,1503723519,IS
@@ -21075,9 +23033,7 @@
1503905648,1503905655,IT
1503905656,1503905663,AT
1503905664,1503920127,DE
-1503920128,1503985151,HR
-1503985152,1503985407,DE
-1503985408,1503985663,HR
+1503920128,1503985663,HR
1503985664,1504018431,IR
1504018432,1504051199,RO
1504051200,1504083967,FI
@@ -21111,9 +23067,7 @@
1505304576,1505312767,FR
1505312768,1505320959,RU
1505320960,1505329151,AT
-1505329152,1505335807,IE
-1505335808,1505336063,GB
-1505336064,1505336575,IE
+1505329152,1505336575,IE
1505336576,1505336831,GB
1505336832,1505337343,IE
1505337344,1505345535,FR
@@ -21164,32 +23118,12 @@
1505705984,1505714175,DE
1505714176,1505722367,LV
1505722368,1505738751,PL
-1505738752,1505740543,GB
-1505740544,1505740607,IL
-1505740608,1505740631,GB
-1505740632,1505740799,IL
-1505740800,1505746943,GB
+1505738752,1505746943,GB
1505746944,1505755135,RU
1505755136,1506017279,GB
1506017280,1506082815,IR
1506082816,1506148351,GB
-1506148352,1506218751,IR
-1506218752,1506219007,DE
-1506219008,1506219263,IR
-1506219264,1506219519,DE
-1506219520,1506219775,IR
-1506219776,1506220031,DE
-1506220032,1506261759,IR
-1506261760,1506262783,DE
-1506262784,1506265343,IR
-1506265344,1506267135,DE
-1506267136,1506270207,IR
-1506270208,1506271231,DE
-1506271232,1506274303,IR
-1506274304,1506274559,DE
-1506274560,1506274815,IR
-1506274816,1506275071,DE
-1506275072,1506279423,IR
+1506148352,1506279423,IR
1506279424,1506312191,NL
1506312192,1506316287,GB
1506316288,1506322431,PL
@@ -21224,15 +23158,21 @@
1506450864,1506450879,CZ
1506450880,1506453311,GB
1506453312,1506453319,SE
-1506453320,1506456831,GB
-1506456832,1506457087,IT
-1506457088,1506458244,GB
+1506453320,1506456533,GB
+1506456534,1506456534,IT
+1506456535,1506458244,GB
1506458245,1506458245,CH
-1506458246,1506460151,GB
+1506458246,1506459968,GB
+1506459969,1506459969,FR
+1506459970,1506460151,GB
1506460152,1506460159,FR
-1506460160,1506462719,GB
+1506460160,1506462511,GB
+1506462512,1506462527,FR
+1506462528,1506462719,GB
1506462720,1506462975,IT
-1506462976,1506463679,GB
+1506462976,1506463551,GB
+1506463552,1506463615,DE
+1506463616,1506463679,GB
1506463680,1506463695,DE
1506463696,1506464895,GB
1506464896,1506464911,NL
@@ -21241,8 +23181,8 @@
1506465189,1506466383,GB
1506466384,1506466391,DE
1506466392,1506466399,GB
-1506466400,1506466431,DE
-1506466432,1506469663,GB
+1506466400,1506466559,DE
+1506466560,1506469663,GB
1506469664,1506469695,IT
1506469696,1506469759,GB
1506469760,1506469775,IT
@@ -21250,11 +23190,7 @@
1506471984,1506471999,NL
1506472000,1506472031,GB
1506472032,1506472047,NL
-1506472048,1506473471,GB
-1506473472,1506473727,IT
-1506473728,1506474239,GB
-1506474240,1506474495,IT
-1506474496,1506476031,GB
+1506472048,1506476031,GB
1506476032,1506508799,KW
1506508800,1506541567,CZ
1506541568,1506574335,RU
@@ -21302,9 +23238,9 @@
1507262464,1507327999,BG
1507328000,1507393535,RS
1507393536,1507459071,CH
-1507459072,1507502847,KZ
-1507502848,1507503103,GB
-1507503104,1507524607,KZ
+1507459072,1507483903,KZ
+1507483904,1507484159,NZ
+1507484160,1507524607,KZ
1507524608,1507590143,EE
1507590144,1507655679,NL
1507655680,1507659775,DE
@@ -21346,15 +23282,13 @@
1508589568,1508605951,IR
1508605952,1508622335,RU
1508622336,1508638719,EE
-1508638720,1508639999,SE
-1508640000,1508640255,DK
-1508640256,1508642175,SE
+1508638720,1508642175,SE
1508642176,1508642303,DK
1508642304,1508642559,SE
1508642560,1508642815,DK
-1508642816,1508650751,SE
-1508650752,1508651007,DK
-1508651008,1508655103,SE
+1508642816,1508647691,SE
+1508647692,1508647692,DK
+1508647693,1508655103,SE
1508655104,1508671487,FI
1508671488,1508687871,CH
1508687872,1508704255,UZ
@@ -21365,9 +23299,7 @@
1508769792,1508786175,PL
1508786176,1508802559,DE
1508802560,1508818943,GB
-1508818944,1508819711,RO
-1508819712,1508819967,DE
-1508819968,1508830719,RO
+1508818944,1508830719,RO
1508830720,1508831487,SK
1508831488,1508835327,RO
1508835328,1508851711,CZ
@@ -21385,9 +23317,7 @@
1509449728,1509453823,ES
1509453824,1509457919,RU
1509457920,1509462015,NL
-1509462016,1509465599,LI
-1509465600,1509465855,CH
-1509465856,1509466111,LI
+1509462016,1509466111,LI
1509466112,1509470207,NL
1509470208,1509478399,RU
1509478400,1509482495,FR
@@ -21448,230 +23378,354 @@
1509883904,1509900287,NL
1509900288,1509916671,RU
1509916672,1509933055,GB
-1509933056,1509949439,US
-1509949440,1510663167,FR
-1510663168,1510663423,RE
-1510663424,1511981055,FR
-1511981056,1511981567,RE
-1511981568,1511982591,FR
-1511982592,1511983615,RE
-1511983616,1511984639,FR
-1511984640,1511985151,RE
-1511985152,1511985407,FR
-1511985408,1511986175,RE
-1511986176,1511986431,FR
-1511986432,1511986687,RE
-1511986688,1511986943,FR
-1511986944,1511987199,RE
-1511987200,1511987967,FR
-1511987968,1511988479,RE
-1511988480,1511988735,FR
-1511988736,1511989247,RE
-1511989248,1511989503,FR
-1511989504,1511990271,RE
-1511990272,1511990527,FR
-1511990528,1511991295,RE
-1511991296,1511991551,FR
-1511991552,1511992575,RE
-1511992576,1511993087,FR
-1511993088,1511994367,RE
-1511994368,1511995135,FR
-1511995136,1511995391,RE
-1511995392,1511995647,FR
-1511995648,1511996415,RE
-1511996416,1511996671,FR
-1511996672,1511996927,RE
-1511996928,1511997439,FR
-1511997440,1511998207,MQ
-1511998208,1511998463,FR
-1511998464,1511998719,MQ
-1511998720,1511998975,FR
-1511998976,1511999487,MQ
-1511999488,1511999743,FR
-1511999744,1512001023,MQ
-1512001024,1512001535,FR
-1512001536,1512003583,MQ
-1512003584,1512003839,FR
-1512003840,1512004095,MQ
-1512004096,1512004351,FR
-1512004352,1512005631,MQ
-1512005632,1512006143,BL
-1512006144,1512006399,FR
-1512006400,1512006911,BL
-1512006912,1512007167,MF
-1512007168,1512007423,FR
-1512007424,1512007935,BL
-1512007936,1512008191,FR
-1512008192,1512008447,BL
-1512008448,1512008703,MF
-1512008704,1512009215,BL
-1512009216,1512009471,MF
-1512009472,1512010239,BL
-1512010240,1512010495,GP
-1512010496,1512010751,BL
-1512010752,1512011263,MF
-1512011264,1512012287,BL
-1512012288,1512012543,FR
-1512012544,1512013055,BL
-1512013056,1512013311,FR
-1512013312,1512013567,BL
-1512013568,1512013823,FR
-1512013824,1512016639,GF
-1512016640,1512016895,FR
-1512016896,1512018943,GF
-1512018944,1512019199,FR
-1512019200,1512020479,GF
-1512020480,1512022015,FR
-1512022016,1512022271,GF
-1512022272,1512022527,FR
-1512022528,1512028415,GF
-1512028416,1512030207,FR
+1509933056,1509949439,NL
+1509949440,1510605311,FR
+1510605312,1510605823,RE
+1510605824,1510608383,FR
+1510608384,1510608639,RE
+1510608640,1510609407,FR
+1510609408,1510610175,RE
+1510610176,1510614015,FR
+1510614016,1510614783,RE
+1510614784,1510615039,FR
+1510615040,1510615295,RE
+1510615296,1510615551,FR
+1510615552,1510616319,RE
+1510616320,1510616575,FR
+1510616576,1510616831,RE
+1510616832,1510617087,FR
+1510617088,1510617599,RE
+1510617600,1510617855,FR
+1510617856,1510619135,RE
+1510619136,1510619391,FR
+1510619392,1510620159,RE
+1510620160,1510621695,FR
+1510621696,1510621951,RE
+1510621952,1510622463,FR
+1510622464,1510622719,RE
+1510622720,1510624511,FR
+1510624512,1510624767,RE
+1510624768,1510625791,FR
+1510625792,1510626303,RE
+1510626304,1510626815,FR
+1510626816,1510627071,RE
+1510627072,1510628351,FR
+1510628352,1510628607,RE
+1510628608,1510628863,FR
+1510628864,1510629119,RE
+1510629120,1510629631,FR
+1510629632,1510629887,RE
+1510629888,1510630399,FR
+1510630400,1510630655,RE
+1510630656,1510631167,FR
+1510631168,1510631423,RE
+1510631424,1510631935,FR
+1510631936,1510632703,RE
+1510632704,1510632959,FR
+1510632960,1510633727,RE
+1510633728,1510633983,FR
+1510633984,1510635263,RE
+1510635264,1510637567,FR
+1510637568,1510638079,RE
+1510638080,1510638335,FR
+1510638336,1510638591,RE
+1510638592,1510638847,FR
+1510638848,1510639359,RE
+1510639360,1510639871,FR
+1510639872,1510640127,RE
+1510640128,1510640383,FR
+1510640384,1510641151,RE
+1510641152,1510641407,FR
+1510641408,1510641919,RE
+1510641920,1510642431,FR
+1510642432,1510642943,RE
+1510642944,1510643455,FR
+1510643456,1510643711,RE
+1510643712,1510644479,FR
+1510644480,1510645759,RE
+1510645760,1510646015,FR
+1510646016,1510646271,RE
+1510646272,1510646783,FR
+1510646784,1510647295,RE
+1510647296,1510647807,FR
+1510647808,1510648319,RE
+1510648320,1510649343,FR
+1510649344,1510649599,RE
+1510649600,1510650623,FR
+1510650624,1510650879,RE
+1510650880,1510651135,FR
+1510651136,1510651391,RE
+1510651392,1510651647,FR
+1510651648,1510652159,RE
+1510652160,1510652927,FR
+1510652928,1510653439,RE
+1510653440,1510654719,FR
+1510654720,1510654975,RE
+1510654976,1510655487,FR
+1510655488,1510656255,RE
+1510656256,1510656511,FR
+1510656512,1510657023,RE
+1510657024,1510658303,FR
+1510658304,1510658559,RE
+1510658560,1510658815,FR
+1510658816,1510659071,RE
+1510659072,1510659839,FR
+1510659840,1510660095,RE
+1510660096,1510660863,FR
+1510660864,1510661119,RE
+1510661120,1510661375,FR
+1510661376,1510661631,RE
+1510661632,1510662399,FR
+1510662400,1510663423,RE
+1510663424,1510663679,FR
+1510663680,1510663935,RE
+1510663936,1510664447,FR
+1510664448,1510664703,RE
+1510664704,1510664959,FR
+1510664960,1510665215,RE
+1510665216,1510665983,FR
+1510665984,1510667775,RE
+1510667776,1511981567,FR
+1511981568,1511982079,RE
+1511982080,1511982335,FR
+1511982336,1511982591,RE
+1511982592,1511984383,FR
+1511984384,1511984639,RE
+1511984640,1511985151,FR
+1511985152,1511985407,RE
+1511985408,1511987199,FR
+1511987200,1511987711,RE
+1511987712,1511990271,FR
+1511990272,1511990527,RE
+1511990528,1511992575,FR
+1511992576,1511992831,RE
+1511992832,1511995391,FR
+1511995392,1511995647,RE
+1511995648,1511996415,FR
+1511996416,1511996671,RE
+1511996672,1511997183,FR
+1511997184,1511997439,RE
+1511997440,1511997695,FR
+1511997696,1511998463,MQ
+1511998464,1512001279,FR
+1512001280,1512002047,MQ
+1512002048,1512002303,FR
+1512002304,1512002559,MQ
+1512002560,1512006143,FR
+1512006144,1512006399,MF
+1512006400,1512006655,FR
+1512006656,1512008191,BL
+1512008192,1512008703,FR
+1512008704,1512008959,BL
+1512008960,1512010495,FR
+1512010496,1512010751,MF
+1512010752,1512011263,FR
+1512011264,1512011775,BL
+1512011776,1512012287,FR
+1512012288,1512012543,BL
+1512012544,1512012799,MF
+1512012800,1512013055,FR
+1512013056,1512013311,BL
+1512013312,1512013567,FR
+1512013568,1512013823,BL
+1512013824,1512014335,FR
+1512014336,1512015103,GF
+1512015104,1512015615,FR
+1512015616,1512016127,GF
+1512016128,1512016383,FR
+1512016384,1512018175,GF
+1512018176,1512018431,FR
+1512018432,1512018687,GF
+1512018688,1512019711,FR
+1512019712,1512019967,GF
+1512019968,1512020479,FR
+1512020480,1512021503,GF
+1512021504,1512021759,FR
+1512021760,1512023295,GF
+1512023296,1512023551,FR
+1512023552,1512023807,GF
+1512023808,1512024831,FR
+1512024832,1512025087,GF
+1512025088,1512025599,FR
+1512025600,1512026879,GF
+1512026880,1512028159,FR
+1512028160,1512030207,GF
1512030208,1512046591,YT
-1512046592,1512767487,FR
-1512767488,1512767743,RE
-1512767744,1512767999,FR
-1512768000,1512768255,RE
-1512768256,1512768511,FR
-1512768512,1512770047,RE
-1512770048,1512770303,FR
-1512770304,1512770815,RE
-1512770816,1512771583,FR
-1512771584,1512772351,RE
-1512772352,1512772863,FR
-1512772864,1512777215,RE
-1512777216,1512777471,FR
-1512777472,1512778495,RE
-1512778496,1512779007,FR
-1512779008,1512779519,RE
-1512779520,1512780031,FR
-1512780032,1512780287,RE
-1512780288,1512780543,FR
-1512780544,1512781567,RE
-1512781568,1512782847,FR
-1512782848,1512783103,RE
-1512783104,1512783359,FR
-1512783360,1512785919,RE
-1512785920,1512787199,FR
-1512787200,1512787967,RE
-1512787968,1512788223,FR
-1512788224,1512791807,RE
-1512791808,1512793087,FR
-1512793088,1512794111,RE
-1512794112,1512794367,FR
-1512794368,1512794623,RE
-1512794624,1512794879,FR
-1512794880,1512795135,RE
-1512795136,1512795391,FR
-1512795392,1512796415,RE
-1512796416,1512796671,FR
-1512796672,1512797183,RE
-1512797184,1512797439,FR
-1512797440,1512797695,RE
-1512797696,1512797951,FR
-1512797952,1512798207,RE
-1512798208,1512799231,FR
-1512799232,1512799487,RE
-1512799488,1512800511,FR
-1512800512,1512801023,MQ
-1512801024,1512801535,FR
-1512801536,1512802303,MQ
-1512802304,1512802815,FR
-1512802816,1512803071,MQ
-1512803072,1512803327,FR
-1512803328,1512803839,MQ
-1512803840,1512804607,FR
-1512804608,1512805375,MQ
-1512805376,1512805631,FR
-1512805632,1512806399,MQ
-1512806400,1512806655,FR
-1512806656,1512807423,MQ
-1512807424,1512807679,FR
-1512807680,1512807935,MQ
-1512807936,1512808447,FR
-1512808448,1512808959,MQ
-1512808960,1512809215,FR
-1512809216,1512810495,MQ
-1512810496,1512810751,FR
-1512810752,1512812543,MQ
-1512812544,1512812799,FR
-1512812800,1512813311,MQ
-1512813312,1512813567,FR
-1512813568,1512813823,MQ
-1512813824,1512814079,FR
-1512814080,1512815615,MQ
-1512815616,1512815871,FR
-1512815872,1512816639,MQ
-1512816640,1512818431,GP
-1512818432,1512818687,FR
-1512818688,1512819967,GP
-1512819968,1512820223,FR
-1512820224,1512822271,GP
-1512822272,1512822527,FR
-1512822528,1512824319,GP
-1512824320,1512824831,FR
-1512824832,1512826367,GP
-1512826368,1512826623,FR
-1512826624,1512828671,GP
-1512828672,1512828927,FR
-1512828928,1512830463,GP
-1512830464,1512830719,FR
-1512830720,1512831999,GP
-1512832000,1512832255,FR
-1512832256,1512832767,GP
-1512832768,1514110975,FR
-1514110976,1514111487,GP
-1514111488,1514111743,FR
-1514111744,1514112255,GP
-1514112256,1514112767,FR
-1514112768,1514114047,GP
-1514114048,1514114559,FR
-1514114560,1514116863,GP
-1514116864,1514117119,FR
-1514117120,1514117887,GP
-1514117888,1514118143,FR
-1514118144,1514119423,GP
-1514119424,1514119679,FR
-1514119680,1514119935,GP
-1514119936,1514120191,FR
-1514120192,1514121215,GP
-1514121216,1514121471,FR
-1514121472,1514123007,GP
-1514123008,1514123263,FR
-1514123264,1514125055,GP
-1514125056,1514125823,FR
-1514125824,1514126079,GP
-1514126080,1514126335,FR
-1514126336,1514126591,GP
-1514126592,1514127359,FR
-1514127360,1514127871,RE
-1514127872,1514128127,FR
-1514128128,1514128895,RE
-1514128896,1514129151,FR
-1514129152,1514129919,RE
-1514129920,1514130175,FR
-1514130176,1514130687,RE
-1514130688,1514130943,FR
-1514130944,1514131455,RE
-1514131456,1514131711,FR
-1514131712,1514131967,RE
-1514131968,1514132223,FR
-1514132224,1514132735,RE
-1514132736,1514132991,FR
-1514132992,1514134015,RE
-1514134016,1514134271,FR
-1514134272,1514135295,RE
-1514135296,1514135551,FR
-1514135552,1514135807,RE
-1514135808,1514136063,FR
-1514136064,1514136831,RE
-1514136832,1514137855,FR
-1514137856,1514139391,RE
-1514139392,1514139647,FR
-1514139648,1514140415,RE
-1514140416,1514140671,FR
-1514140672,1514142207,RE
-1514142208,1514142463,FR
-1514142464,1514143743,RE
+1512046592,1512308991,FR
+1512308992,1512309247,GP
+1512309248,1512310271,FR
+1512310272,1512310527,GP
+1512310528,1512310783,FR
+1512310784,1512311295,GP
+1512311296,1512311551,FR
+1512311552,1512312063,GP
+1512312064,1512314367,FR
+1512314368,1512314623,GP
+1512314624,1512314879,FR
+1512314880,1512315391,GP
+1512315392,1512315647,FR
+1512315648,1512316159,GP
+1512316160,1512316415,FR
+1512316416,1512316927,GP
+1512316928,1512317439,FR
+1512317440,1512317951,GP
+1512317952,1512318207,FR
+1512318208,1512318463,GP
+1512318464,1512319231,FR
+1512319232,1512319487,GP
+1512319488,1512319743,FR
+1512319744,1512319999,GP
+1512320000,1512320511,FR
+1512320512,1512320767,GP
+1512320768,1512322047,FR
+1512322048,1512322303,GP
+1512322304,1512322559,FR
+1512322560,1512322815,GP
+1512322816,1512323327,FR
+1512323328,1512323583,GP
+1512323584,1512324095,FR
+1512324096,1512324351,GP
+1512324352,1512324863,FR
+1512324864,1512325119,GP
+1512325120,1512325631,FR
+1512325632,1512325887,GP
+1512325888,1512326399,FR
+1512326400,1512326655,GP
+1512326656,1512327423,FR
+1512327424,1512328191,GP
+1512328192,1512329727,FR
+1512329728,1512330239,GP
+1512330240,1512330495,FR
+1512330496,1512332287,GP
+1512332288,1512332799,FR
+1512332800,1512333311,GP
+1512333312,1512334079,FR
+1512334080,1512334335,GP
+1512334336,1512334847,FR
+1512334848,1512335103,GP
+1512335104,1512335359,FR
+1512335360,1512335871,GP
+1512335872,1512336383,FR
+1512336384,1512337151,GP
+1512337152,1512338175,FR
+1512338176,1512338431,GP
+1512338432,1512338943,FR
+1512338944,1512339199,GP
+1512339200,1512339455,FR
+1512339456,1512339711,GP
+1512339712,1512340735,FR
+1512340736,1512341247,GP
+1512341248,1512341503,FR
+1512341504,1512341759,GP
+1512341760,1512342271,FR
+1512342272,1512342527,GP
+1512342528,1512343295,FR
+1512343296,1512343551,GP
+1512343552,1512344063,FR
+1512344064,1512344575,GP
+1512344576,1512344831,FR
+1512344832,1512345087,GP
+1512345088,1512345855,FR
+1512345856,1512346111,GP
+1512346112,1512346367,FR
+1512346368,1512346623,GP
+1512346624,1512347391,FR
+1512347392,1512347903,GP
+1512347904,1512348159,FR
+1512348160,1512348927,GP
+1512348928,1512349439,FR
+1512349440,1512349951,GP
+1512349952,1512350463,FR
+1512350464,1512350719,GP
+1512350720,1512351231,FR
+1512351232,1512351487,GP
+1512351488,1512351999,FR
+1512352000,1512352767,GP
+1512352768,1512353535,FR
+1512353536,1512354047,GP
+1512354048,1512354303,FR
+1512354304,1512354559,GP
+1512354560,1512354815,FR
+1512354816,1512355327,GP
+1512355328,1512356095,FR
+1512356096,1512356351,GP
+1512356352,1512356607,FR
+1512356608,1512356863,GP
+1512356864,1512357119,FR
+1512357120,1512357375,GP
+1512357376,1512357631,FR
+1512357632,1512357887,GP
+1512357888,1512358655,FR
+1512358656,1512359167,GP
+1512359168,1512359423,FR
+1512359424,1512360191,GP
+1512360192,1512360447,FR
+1512360448,1512361471,GP
+1512361472,1512361727,FR
+1512361728,1512361983,GP
+1512361984,1512362239,FR
+1512362240,1512362495,GP
+1512362496,1512363007,FR
+1512363008,1512363263,GP
+1512363264,1512363519,FR
+1512363520,1512363775,GP
+1512363776,1512364031,FR
+1512364032,1512364287,GP
+1512364288,1512364543,FR
+1512364544,1512366847,GP
+1512366848,1512367359,FR
+1512367360,1512367615,GP
+1512367616,1512368127,FR
+1512368128,1512368383,GP
+1512368384,1512368639,FR
+1512368640,1512368895,GP
+1512368896,1512370431,FR
+1512370432,1512370441,GP
+1512370442,1512370442,FR
+1512370443,1512370687,GP
+1512370688,1512370943,FR
+1512370944,1512372223,GP
+1512372224,1512372735,FR
+1512372736,1512372991,GP
+1512372992,1514111231,FR
+1514111232,1514111743,GP
+1514111744,1514111999,FR
+1514112000,1514112255,GP
+1514112256,1514113791,FR
+1514113792,1514114047,GP
+1514114048,1514114815,FR
+1514114816,1514115071,GP
+1514115072,1514115583,FR
+1514115584,1514115839,GP
+1514115840,1514116351,FR
+1514116352,1514116607,GP
+1514116608,1514119935,FR
+1514119936,1514120191,GP
+1514120192,1514121215,FR
+1514121216,1514121471,GP
+1514121472,1514123007,FR
+1514123008,1514123263,GP
+1514123264,1514124287,FR
+1514124288,1514124543,GP
+1514124544,1514127871,FR
+1514127872,1514128127,RE
+1514128128,1514128895,FR
+1514128896,1514129407,RE
+1514129408,1514131967,FR
+1514131968,1514132223,RE
+1514132224,1514132735,FR
+1514132736,1514132991,RE
+1514132992,1514134271,FR
+1514134272,1514134527,RE
+1514134528,1514136063,FR
+1514136064,1514136319,RE
+1514136320,1514137599,FR
+1514137600,1514137855,RE
+1514137856,1514142207,FR
+1514142208,1514142719,RE
+1514142720,1514142975,FR
+1514142976,1514143231,RE
+1514143232,1514143743,FR
1514143744,1514176511,SK
1514176512,1515467007,FR
1515467008,1515467263,ES
@@ -21688,87 +23742,51 @@
1515488512,1515488895,US
1515488896,1515489023,FR
1515489024,1515489039,DE
-1515489040,1515489151,FR
+1515489040,1515489055,FR
+1515489056,1515489087,DE
+1515489088,1515489151,FR
1515489152,1515489167,ES
1515489168,1518338047,FR
1518338048,1518370815,DE
-1518370816,1518403839,NL
-1518403840,1518404095,SE
-1518404096,1518404351,NL
-1518404352,1518404863,SE
-1518404864,1518405119,NL
-1518405120,1518405375,SE
-1518405376,1518406655,NL
-1518406656,1518406911,SE
-1518406912,1518407935,NL
-1518407936,1518408191,SE
-1518408192,1518409727,NL
-1518409728,1518436351,SE
+1518370816,1518409727,NL
+1518409728,1518412031,SE
+1518412032,1518413567,NO
+1518413568,1518413823,SE
+1518413824,1518418943,NO
+1518418944,1518419199,SE
+1518419200,1518419967,NO
+1518419968,1518436351,SE
1518436352,1518452735,NO
1518452736,1518460927,AT
-1518460928,1518470143,NL
-1518470144,1518472191,SE
+1518460928,1518471167,NL
+1518471168,1518472191,SE
1518472192,1518475263,LT
1518475264,1518476287,SE
1518476288,1518476799,EE
1518476800,1518477311,SE
1518477312,1518481407,EE
1518481408,1518489599,SE
-1518489600,1518490623,NL
-1518490624,1518493695,SE
-1518493696,1518501887,NL
+1518489600,1518501887,NL
1518501888,1518503935,EE
1518503936,1518510079,LT
1518510080,1518516223,LV
1518516224,1518517247,SE
1518517248,1518518271,LV
-1518518272,1518540543,SE
+1518518272,1518532351,SE
+1518532352,1518532607,NO
+1518532608,1518532863,SE
+1518532864,1518533375,NO
+1518533376,1518533887,SE
+1518533888,1518534143,NO
+1518534144,1518540543,SE
1518540544,1518540799,LT
-1518540800,1518542847,SE
+1518540800,1518541479,SE
+1518541480,1518541480,DE
+1518541481,1518542847,SE
1518542848,1518551039,LT
1518551040,1518565375,NL
1518565376,1518567423,SE
-1518567424,1518568703,LV
-1518568704,1518568959,SE
-1518568960,1518570239,LV
-1518570240,1518570495,SE
-1518570496,1518572543,LV
-1518572544,1518572799,SE
-1518572800,1518573311,LV
-1518573312,1518573823,SE
-1518573824,1518574335,LV
-1518574336,1518574591,SE
-1518574592,1518576127,LV
-1518576128,1518576383,SE
-1518576384,1518577407,LV
-1518577408,1518577919,SE
-1518577920,1518578687,LV
-1518578688,1518578943,SE
-1518578944,1518580479,LV
-1518580480,1518580735,SE
-1518580736,1518582271,LV
-1518582272,1518582527,SE
-1518582528,1518583039,LV
-1518583040,1518583295,SE
-1518583296,1518585343,LV
-1518585344,1518585599,SE
-1518585600,1518585855,LV
-1518585856,1518586111,SE
-1518586112,1518586623,LV
-1518586624,1518586879,SE
-1518586880,1518587647,LV
-1518587648,1518587903,SE
-1518587904,1518591743,LV
-1518591744,1518591999,SE
-1518592000,1518592255,LV
-1518592256,1518592511,SE
-1518592512,1518594047,LV
-1518594048,1518594303,SE
-1518594304,1518594815,LV
-1518594816,1518595071,SE
-1518595072,1518595327,LV
-1518595328,1518595583,SE
-1518595584,1518600191,LV
+1518567424,1518600191,LV
1518600192,1518633215,SE
1518633216,1518633471,NL
1518633472,1518635007,SE
@@ -21784,7 +23802,35 @@
1518780416,1518796799,HR
1518796800,1518927871,DE
1518927872,1518944255,RU
-1518944256,1518960639,SE
+1518944256,1518945023,NL
+1518945024,1518945535,SE
+1518945536,1518946303,NL
+1518946304,1518946815,SE
+1518946816,1518947327,NL
+1518947328,1518948095,SE
+1518948096,1518948351,NL
+1518948352,1518948863,SE
+1518948864,1518949119,NL
+1518949120,1518949631,SE
+1518949632,1518950911,NL
+1518950912,1518951167,SE
+1518951168,1518951679,NL
+1518951680,1518952191,SE
+1518952192,1518954751,NL
+1518954752,1518955007,SE
+1518955008,1518955775,NL
+1518955776,1518956031,SE
+1518956032,1518956543,NL
+1518956544,1518957311,SE
+1518957312,1518957823,NL
+1518957824,1518958079,SE
+1518958080,1518958591,NL
+1518958592,1518958847,SE
+1518958848,1518959103,NL
+1518959104,1518959359,SE
+1518959360,1518959871,NL
+1518959872,1518960127,SE
+1518960128,1518960639,NL
1518960640,1518961663,LT
1518961664,1518962175,EE
1518962176,1518962687,SE
@@ -21792,51 +23838,49 @@
1518964736,1518966783,HR
1518966784,1518967807,SE
1518967808,1518977023,HR
-1518977024,1518993407,SE
+1518977024,1518977791,SE
+1518977792,1518978559,NL
+1518978560,1518979071,SE
+1518979072,1518980095,NL
+1518980096,1518980607,SE
+1518980608,1518980863,NL
+1518980864,1518981631,SE
+1518981632,1518982143,NL
+1518982144,1518982399,SE
+1518982400,1518982655,NL
+1518982656,1518983935,SE
+1518983936,1518984191,NL
+1518984192,1518989311,SE
+1518989312,1518992127,NL
+1518992128,1518992383,SE
+1518992384,1518992639,NL
+1518992640,1518992895,SE
+1518992896,1518993152,NL
+1518993153,1518993407,SE
1518993408,1519190015,RU
1519190016,1519206399,SE
1519206400,1519208447,LV
1519208448,1519214591,SE
-1519214592,1519214847,LV
-1519214848,1519215359,SE
-1519215360,1519215615,LV
-1519215616,1519215871,SE
-1519215872,1519219455,LV
+1519214592,1519219455,LV
1519219456,1519219711,SE
1519219712,1519222783,LV
1519222784,1519259647,SE
1519259648,1519260671,NL
1519260672,1519263743,SE
-1519263744,1519289343,NL
-1519289344,1519292415,SE
+1519263744,1519290367,NL
+1519290368,1519292415,SE
1519292416,1519293951,LT
-1519293952,1519297023,SE
-1519297024,1519297279,LT
-1519297280,1519297535,SE
-1519297536,1519297791,LT
-1519297792,1519298559,SE
-1519298560,1519298815,LT
-1519298816,1519300607,SE
+1519293952,1519296511,SE
+1519296512,1519299583,LT
+1519299584,1519300607,SE
1519300608,1519304703,LT
-1519304704,1519313151,SE
-1519313152,1519313407,LT
-1519313408,1519313663,SE
-1519313664,1519313919,LT
-1519313920,1519314175,SE
-1519314176,1519318271,LT
-1519318272,1519318527,SE
-1519318528,1519321087,LT
+1519304704,1519312895,SE
+1519312896,1519321087,LT
1519321088,1519386623,RU
1519386624,1519394815,SE
1519394816,1519398911,HR
1519398912,1519403007,SE
-1519403008,1519411711,NL
-1519411712,1519411967,SE
-1519411968,1519415295,NL
-1519415296,1519415551,SE
-1519415552,1519416575,NL
-1519416576,1519416831,SE
-1519416832,1519419391,NL
+1519403008,1519419391,NL
1519419392,1519452159,SE
1519452160,1519517695,NL
1519517696,1519583231,AT
@@ -21867,19 +23911,13 @@
1520271360,1520304127,SI
1520304128,1520435199,TR
1520435200,1521483775,ES
-1521483776,1521531391,CZ
-1521531392,1521531647,PL
-1521531648,1522008063,CZ
+1521483776,1522008063,CZ
1522008064,1522139135,DK
1522139136,1522270207,DE
1522270208,1522401279,RU
1522401280,1522532351,EE
1522532352,1524629503,GB
-1524629504,1525092351,SE
-1525092352,1525092479,DK
-1525092480,1525122047,SE
-1525122048,1525122175,DK
-1525122176,1525678079,SE
+1524629504,1525678079,SE
1525678080,1526726655,GB
1526726656,1531183103,DE
1531183104,1531445247,FR
@@ -21890,9 +23928,7 @@
1532199936,1532200959,RS
1532200960,1532231679,HU
1532231680,1532362751,GB
-1532362752,1532408063,BE
-1532408064,1532408319,DE
-1532408320,1532493823,BE
+1532362752,1532493823,BE
1532493824,1532559359,FR
1532559360,1532624895,DE
1532624896,1532626943,ES
@@ -21953,13 +23989,13 @@
1533472768,1533474815,ES
1533474816,1533476863,FR
1533476864,1533478911,IE
-1533478912,1533480959,RS
1533480960,1533483007,NL
1533483008,1533485055,AM
1533485056,1533486079,GB
1533486080,1533486335,SE
1533486336,1533486591,NO
-1533486592,1533487103,GB
+1533486592,1533486847,DK
+1533486848,1533487103,GB
1533487104,1533489151,FR
1533489152,1533491199,ES
1533491200,1533493247,AM
@@ -22037,74 +24073,254 @@
1533929472,1533932799,GB
1533932800,1533933055,DE
1533933056,1534066687,GB
-1534066688,1534135295,AT
-1534135296,1534135423,HU
-1534135424,1534145279,AT
-1534145280,1534145407,DE
-1534145408,1534147711,AT
-1534147712,1534147839,CZ
-1534147840,1534156543,AT
-1534156544,1534156671,SK
-1534156672,1534241535,AT
-1534241536,1534241663,DE
-1534241664,1534268671,AT
-1534268672,1534268927,HU
-1534268928,1534279423,AT
-1534279424,1534279551,SK
-1534279552,1534298751,AT
-1534298752,1534298879,HU
-1534298880,1534299903,AT
-1534299904,1534300159,HU
-1534300160,1534302975,AT
-1534302976,1534303231,HU
-1534303232,1534303999,AT
-1534304000,1534304255,SK
-1534304256,1534328831,AT
+1534066688,1534328831,AT
1534328832,1534459903,ES
1534459904,1534590975,AT
1534590976,1534656511,HU
1534656512,1534711807,FR
1534711808,1534712831,BE
-1534712832,1534714415,FR
-1534714416,1534714431,ES
-1534714432,1534714751,FR
+1534712832,1534713919,FR
+1534713920,1534713927,CH
+1534713928,1534714055,FR
+1534714056,1534714063,PL
+1534714064,1534714079,NL
+1534714080,1534714207,FR
+1534714208,1534714223,NL
+1534714224,1534714255,FR
+1534714256,1534714259,FI
+1534714260,1534714279,FR
+1534714280,1534714283,DE
+1534714284,1534714287,CH
+1534714288,1534714323,FR
+1534714324,1534714327,ES
+1534714328,1534714403,FR
+1534714404,1534714431,ES
+1534714432,1534714539,FR
+1534714540,1534714543,ES
+1534714544,1534714575,FR
+1534714576,1534714583,NL
+1534714584,1534714751,FR
1534714752,1534714767,DE
-1534714768,1534715263,FR
+1534714768,1534714799,FR
+1534714800,1534714815,GB
+1534714816,1534714927,FR
+1534714928,1534714931,DE
+1534714932,1534715211,FR
+1534715212,1534715215,LT
+1534715216,1534715263,FR
1534715264,1534715267,IT
-1534715268,1534715871,FR
+1534715268,1534715295,FR
+1534715296,1534715299,GB
+1534715300,1534715359,FR
+1534715360,1534715367,DE
+1534715368,1534715415,FR
+1534715416,1534715419,PL
+1534715420,1534715423,FR
+1534715424,1534715431,IT
+1534715432,1534715439,FR
+1534715440,1534715447,IT
+1534715448,1534715631,FR
+1534715632,1534715639,DE
+1534715640,1534715671,FR
+1534715672,1534715675,CZ
+1534715676,1534715711,FR
+1534715712,1534715727,GB
+1534715728,1534715775,FR
+1534715776,1534715783,ES
+1534715784,1534715791,IT
+1534715792,1534715871,FR
1534715872,1534715875,ES
-1534715876,1534715935,FR
+1534715876,1534715879,FR
+1534715880,1534715883,PL
+1534715884,1534715935,FR
1534715936,1534715939,NL
-1534715940,1534716375,FR
+1534715940,1534716007,FR
+1534716008,1534716015,IT
+1534716016,1534716031,ES
+1534716032,1534716095,FR
+1534716096,1534716127,NL
+1534716128,1534716131,GB
+1534716132,1534716163,FR
+1534716164,1534716167,BE
+1534716168,1534716303,FR
+1534716304,1534716307,GB
+1534716308,1534716367,FR
+1534716368,1534716375,IT
1534716376,1534716379,ES
-1534716380,1534717199,FR
+1534716380,1534716383,BE
+1534716384,1534716447,FR
+1534716448,1534716463,ES
+1534716464,1534716575,FR
+1534716576,1534716591,NL
+1534716592,1534716623,FR
+1534716624,1534716639,BE
+1534716640,1534716647,IT
+1534716648,1534716763,FR
+1534716764,1534716767,BE
+1534716768,1534716775,DE
+1534716776,1534716783,FR
+1534716784,1534716791,NL
+1534716792,1534716799,LT
+1534716800,1534716803,FI
+1534716804,1534716807,NL
+1534716808,1534717035,FR
+1534717036,1534717039,IT
+1534717040,1534717063,FR
+1534717064,1534717071,IT
+1534717072,1534717087,GB
+1534717088,1534717199,FR
1534717200,1534717215,GB
1534717216,1534717247,FR
1534717248,1534717251,ES
-1534717252,1534717263,FR
+1534717252,1534717255,FR
+1534717256,1534717263,IT
1534717264,1534717267,ES
-1534717268,1534717663,FR
+1534717268,1534717323,FR
+1534717324,1534717327,CH
+1534717328,1534717343,NL
+1534717344,1534717407,FR
+1534717408,1534717415,IT
+1534717416,1534717551,FR
+1534717552,1534717567,PL
+1534717568,1534717587,FR
+1534717588,1534717591,GB
+1534717592,1534717599,FR
+1534717600,1534717631,PT
+1534717632,1534717663,FR
1534717664,1534717679,GB
-1534717680,1534717923,FR
+1534717680,1534717695,BE
+1534717696,1534717711,PT
+1534717712,1534717791,FR
+1534717792,1534717823,NL
+1534717824,1534717915,FR
+1534717916,1534717919,ES
+1534717920,1534717923,FR
1534717924,1534717927,IT
-1534717928,1534718763,FR
-1534718764,1534718767,ES
-1534718768,1534719747,FR
+1534717928,1534717935,FR
+1534717936,1534717951,CZ
+1534717952,1534717991,FR
+1534717992,1534717995,FI
+1534717996,1534718007,FR
+1534718008,1534718011,ES
+1534718012,1534718271,FR
+1534718272,1534718335,PT
+1534718336,1534718351,FR
+1534718352,1534718359,IT
+1534718360,1534718363,GB
+1534718364,1534718475,FR
+1534718476,1534718479,GB
+1534718480,1534718535,FR
+1534718536,1534718539,IT
+1534718540,1534718575,FR
+1534718576,1534718591,LT
+1534718592,1534718631,FR
+1534718632,1534718639,GB
+1534718640,1534718655,FR
+1534718656,1534718687,GB
+1534718688,1534718759,FR
+1534718760,1534718767,ES
+1534718768,1534718819,FR
+1534718820,1534718823,PL
+1534718824,1534719087,FR
+1534719088,1534719103,GB
+1534719104,1534719335,FR
+1534719336,1534719339,IT
+1534719340,1534719423,FR
+1534719424,1534719439,PL
+1534719440,1534719459,FR
+1534719460,1534719463,DE
+1534719464,1534719471,FR
+1534719472,1534719487,BE
+1534719488,1534719507,FR
+1534719508,1534719511,FI
+1534719512,1534719519,FR
+1534719520,1534719535,GB
+1534719536,1534719567,FR
+1534719568,1534719575,LT
+1534719576,1534719583,IT
+1534719584,1534719599,PT
+1534719600,1534719607,PL
+1534719608,1534719615,FR
+1534719616,1534719631,PL
+1534719632,1534719747,FR
1534719748,1534719751,ES
1534719752,1534719783,FR
1534719784,1534719787,ES
-1534719788,1534720003,FR
+1534719788,1534719791,PT
+1534719792,1534719815,FR
+1534719816,1534719823,GB
+1534719824,1534719831,FR
+1534719832,1534719839,PL
+1534719840,1534719967,FR
+1534719968,1534719983,IT
+1534719984,1534720003,FR
1534720004,1534720007,ES
1534720008,1534720011,IT
-1534720012,1534720023,FR
+1534720012,1534720015,FR
+1534720016,1534720023,IT
1534720024,1534720027,PL
-1534720028,1534720179,FR
+1534720028,1534720047,FR
+1534720048,1534720063,GB
+1534720064,1534720095,FR
+1534720096,1534720111,IT
+1534720112,1534720179,FR
1534720180,1534720183,ES
-1534720184,1534720471,FR
+1534720184,1534720211,FR
+1534720212,1534720215,DE
+1534720216,1534720223,GB
+1534720224,1534720255,FR
+1534720256,1534720271,PL
+1534720272,1534720415,FR
+1534720416,1534720419,ES
+1534720420,1534720423,FR
+1534720424,1534720431,IT
+1534720432,1534720467,FR
+1534720468,1534720471,ES
1534720472,1534720479,DE
-1534720480,1534721619,FR
+1534720480,1534720527,FR
+1534720528,1534720531,BE
+1534720532,1534720647,FR
+1534720648,1534720655,ES
+1534720656,1534720735,FR
+1534720736,1534720739,PL
+1534720740,1534720743,FR
+1534720744,1534720767,GB
+1534720768,1534720787,FR
+1534720788,1534720791,IT
+1534720792,1534720943,FR
+1534720944,1534720951,LT
+1534720952,1534720967,FR
+1534720968,1534720975,IT
+1534720976,1534720991,FR
+1534720992,1534721007,IT
+1534721008,1534721035,FR
+1534721036,1534721039,PT
+1534721040,1534721071,FR
+1534721072,1534721087,IT
+1534721088,1534721115,FR
+1534721116,1534721119,CH
+1534721120,1534721195,FR
+1534721196,1534721199,DE
+1534721200,1534721215,IT
+1534721216,1534721295,FR
+1534721296,1534721311,GB
+1534721312,1534721391,FR
+1534721392,1534721407,GB
+1534721408,1534721487,FR
+1534721488,1534721491,BE
+1534721492,1534721587,FR
+1534721588,1534721591,LT
+1534721592,1534721619,FR
1534721620,1534721623,ES
-1534721624,1534722047,FR
+1534721624,1534721707,FR
+1534721708,1534721711,IT
+1534721712,1534721727,FR
+1534721728,1534721743,GB
+1534721744,1534721827,FR
+1534721828,1534721831,DE
+1534721832,1534721971,FR
+1534721972,1534721975,GB
+1534721976,1534722047,FR
1534722048,1534787583,RU
1534787584,1534791679,RO
1534791680,1534795775,RU
@@ -22125,11 +24341,9 @@
1534984192,1534985215,NO
1534985216,1535049727,ES
1535049728,1535115263,SK
-1535115264,1535146495,AT
-1535146496,1535146751,CH
-1535146752,1535197183,AT
-1535197184,1535203071,EE
-1535203072,1535246335,SE
+1535115264,1535197183,AT
+1535197184,1535203359,EE
+1535203360,1535246335,SE
1535246336,1535311871,AT
1535311872,1535344639,NO
1535344640,1535350783,LV
@@ -22137,8 +24351,7 @@
1535352832,1535361023,EE
1535361024,1535377407,NL
1535377408,1535442943,GR
-1535442944,1535450879,RU
-1535450880,1535451135,FI
+1535442944,1535451135,RU
1535451136,1535459327,DK
1535459328,1535475711,AT
1535475712,1535508479,IR
@@ -22172,10 +24385,12 @@
1535715328,1535717375,DE
1535717376,1535721471,CH
1535721472,1535721727,DE
-1535721728,1535737855,CH
-1535737856,1535746815,HU
-1535746816,1535747071,RS
-1535747072,1535770623,HU
+1535721728,1535727871,CH
+1535727872,1535728127,DE
+1535728128,1535732735,CH
+1535732736,1535735807,DE
+1535735808,1535737855,CH
+1535737856,1535770623,HU
1535770624,1535803391,CH
1535803392,1535836159,GR
1535836160,1535868927,CZ
@@ -22277,9 +24492,7 @@
1536684032,1536688127,GB
1536688128,1537212415,FI
1537212416,1538260991,FR
-1538260992,1538628607,BE
-1538628608,1538629119,FR
-1538629120,1538785279,BE
+1538260992,1538785279,BE
1538785280,1538793471,NL
1538793472,1538797567,DE
1538797568,1538801663,NL
@@ -22358,7 +24571,11 @@
1539211264,1539213311,CZ
1539213312,1539215359,SE
1539215360,1539219455,DE
-1539219456,1539221247,GG
+1539219456,1539219967,GG
+1539219968,1539220223,GB
+1539220224,1539220479,GG
+1539220480,1539220991,GB
+1539220992,1539221247,GG
1539221248,1539221503,GB
1539221504,1539223551,FR
1539223552,1539225599,RU
@@ -23266,8 +25483,7 @@
1539865600,1539866623,UA
1539866624,1539867647,IT
1539867648,1539868671,RO
-1539868672,1539868927,UA
-1539868928,1539869695,RU
+1539868672,1539869695,RU
1539869696,1539870719,ES
1539870720,1539871743,IL
1539872768,1539873791,SE
@@ -23566,7 +25782,6 @@
1540242944,1540243455,RU
1540243456,1540243967,PL
1540243968,1540244479,RU
-1540244480,1540244735,CH
1540244992,1540245503,DE
1540245504,1540246015,RU
1540246016,1540246527,IT
@@ -23641,7 +25856,8 @@
1540284928,1540285439,UA
1540285440,1540285951,DE
1540285952,1540286463,RU
-1540286464,1540286975,NL
+1540286464,1540286719,GB
+1540286720,1540286975,NL
1540286976,1540287487,GB
1540287488,1540288511,AT
1540288512,1540289535,RU
@@ -23764,7 +25980,7 @@
1540361472,1540361727,DE
1540361728,1540361983,IT
1540361984,1540362239,EE
-1540362240,1540363263,DE
+1540362496,1540363007,DE
1540363264,1540363519,RU
1540363776,1540364031,IS
1540364032,1540364287,RU
@@ -24252,7 +26468,6 @@
1540588544,1540589567,UA
1540589568,1540593663,RU
1540594688,1540595711,IT
-1540595712,1540596735,UZ
1540596736,1540597759,FR
1540597760,1540598783,SE
1540598784,1540600831,UA
@@ -24313,7 +26528,6 @@
1540631040,1540631295,NL
1540631296,1540631551,CH
1540631552,1540631807,HR
-1540631808,1540632063,LV
1540632064,1540632319,AT
1540632320,1540632575,RU
1540632576,1540632831,DK
@@ -24358,7 +26572,6 @@
1540645120,1540645375,RU
1540645376,1540645631,BE
1540645632,1540645887,NL
-1540645888,1540646143,PL
1540646144,1540646399,RO
1540646400,1540646655,PS
1540646656,1540646911,SE
@@ -24386,7 +26599,7 @@
1540653056,1540653311,FR
1540653312,1540653567,DK
1540653568,1540653823,DE
-1540653824,1540654335,GB
+1540653824,1540654079,GB
1540654336,1540654591,RU
1540654592,1540654847,SI
1540654848,1540655103,RU
@@ -24470,7 +26683,6 @@
1540678656,1540678911,SE
1540678912,1540679167,GB
1540679168,1540679423,RU
-1540679424,1540679679,PL
1540679680,1540679935,LT
1540679936,1540680191,BG
1540680192,1540680447,CH
@@ -24525,7 +26737,7 @@
1540693760,1540694015,UZ
1540694016,1540694271,CH
1540694272,1540694527,UA
-1540694528,1540695039,RO
+1540694528,1540694783,RO
1540695040,1540695295,DE
1540695296,1540695551,NL
1540695552,1540695807,PL
@@ -24690,7 +26902,6 @@
1540742144,1540742399,RU
1540742400,1540742655,DE
1540742656,1540742911,AT
-1540742912,1540743167,RU
1540743168,1540743423,NO
1540743424,1540743679,GB
1540743680,1540743935,PL
@@ -24726,7 +26937,6 @@
1540756480,1540757503,DK
1540757504,1540758527,PL
1540758528,1540759551,UA
-1540760064,1540760319,UA
1540760576,1540761599,PL
1540761600,1540762623,RU
1540762624,1540763647,LU
@@ -24745,9 +26955,9 @@
1540779008,1540780031,NL
1540780032,1540781055,UA
1540781056,1540783103,RU
-1540783104,1540784639,UA
-1540784640,1540784895,RU
-1540784896,1540787199,UA
+1540783104,1540784383,UA
+1540784384,1540785151,RU
+1540785152,1540787199,UA
1540787200,1540788223,KZ
1540788224,1540790271,RU
1540790272,1540791295,KW
@@ -24799,11 +27009,10 @@
1540848640,1540849663,UA
1540849664,1540850687,RU
1540850688,1540851711,FI
-1540851712,1540852735,UA
-1540852736,1540853759,RU
+1540851712,1540853759,RU
1540853760,1540854783,UA
1540854784,1540855807,NL
-1540855808,1540856831,RU
+1540855808,1540856831,UA
1540856832,1540857855,NL
1540857856,1540858879,DK
1540858880,1540859903,GB
@@ -24811,7 +27020,9 @@
1540860928,1540861951,KZ
1540861952,1540862975,BY
1540862976,1540865023,GB
-1540865024,1540872191,RU
+1540865024,1540867071,RU
+1540867072,1540868095,KZ
+1540868096,1540872191,RU
1540872192,1540873215,BG
1540873216,1540875263,RU
1540875264,1540876287,PL
@@ -25399,13 +27610,11 @@
1541165312,1541165567,RU
1541165568,1541165823,NL
1541165824,1541166079,GB
-1541166080,1541166335,RU
1541166336,1541166591,FR
1541166592,1541166847,RO
1541166848,1541167103,RU
1541167104,1541167359,NL
1541167360,1541167615,AT
-1541167616,1541167871,RU
1541167872,1541168127,UA
1541168128,1541168639,RU
1541168640,1541168895,MD
@@ -25439,7 +27648,6 @@
1541176064,1541176319,NL
1541176320,1541176575,AM
1541176576,1541176831,DE
-1541176832,1541177087,RU
1541177088,1541177343,GB
1541177344,1541177599,CH
1541177600,1541177855,DE
@@ -25484,7 +27692,6 @@
1541187840,1541188351,RU
1541188352,1541188607,FR
1541188608,1541188863,HU
-1541188864,1541189119,RU
1541189120,1541189375,UA
1541189376,1541189631,GB
1541189888,1541190143,PL
@@ -25510,7 +27717,6 @@
1541195520,1541195775,GB
1541195776,1541196031,FR
1541196032,1541196287,CZ
-1541196288,1541196543,RU
1541196800,1541197055,UA
1541197056,1541197311,PL
1541197312,1541197567,RU
@@ -25592,7 +27798,6 @@
1541228032,1541228543,RU
1541228544,1541229055,CZ
1541229056,1541229567,UA
-1541229568,1541230079,RU
1541230080,1541230591,RO
1541230592,1541231103,RU
1541231104,1541231615,GB
@@ -25729,7 +27934,7 @@
1541338112,1541341183,UA
1541341184,1541341439,TR
1541341440,1541341695,RU
-1541341696,1541341951,HU
+1541341696,1541341951,DE
1541341952,1541342463,PL
1541342464,1541342719,FR
1541342720,1541342975,PL
@@ -26004,8 +28209,8 @@
1541426176,1541426687,RU
1541426688,1541427199,UA
1541427200,1541428223,RU
-1541428224,1541428991,UA
-1541428992,1541429247,RU
+1541428224,1541428735,UA
+1541428736,1541429247,RU
1541429248,1541429759,FI
1541429760,1541430271,CZ
1541430272,1541430783,LT
@@ -26116,7 +28321,9 @@
1541532672,1541533695,RU
1541533696,1541534719,PL
1541534720,1541535743,IT
-1541535744,1541536767,US
+1541535744,1541536255,US
+1541536256,1541536511,IE
+1541536512,1541536767,US
1541536768,1541537791,RU
1541537792,1541538303,GB
1541538304,1541538815,RO
@@ -26145,15 +28352,14 @@
1541552128,1541553151,UA
1541553152,1541555199,RU
1541555200,1541556223,PL
-1541556224,1541556479,UA
1541556480,1541556735,RU
1541556736,1541557247,IT
1541557504,1541557759,SI
-1541557760,1541558015,RU
1541558016,1541558271,HU
1541558272,1541559295,RU
1541560320,1541561343,DE
-1541561344,1541562879,RU
+1541561344,1541562367,RU
+1541562624,1541562879,RU
1541562880,1541563135,FR
1541563136,1541563391,NL
1541563392,1541564415,PL
@@ -26386,7 +28592,7 @@
1541700864,1541701119,PL
1541701120,1541701631,IL
1541701632,1541702655,RO
-1541702656,1541703679,RU
+1541703424,1541703679,RU
1541703680,1541704703,PL
1541704704,1541706239,RO
1541706240,1541706751,UA
@@ -26401,7 +28607,6 @@
1541711872,1541712127,FR
1541712128,1541712383,TR
1541712384,1541712895,DE
-1541712896,1541713919,RU
1541713920,1541714175,NL
1541714176,1541716223,RU
1541716224,1541716479,PL
@@ -26454,7 +28659,6 @@
1541740032,1541740287,PL
1541740288,1541740543,NL
1541740544,1541740799,CZ
-1541740800,1541741055,RU
1541741056,1541741567,PL
1541741568,1541742079,SK
1541742080,1541742591,RO
@@ -26467,7 +28671,6 @@
1541746944,1541747199,NL
1541747200,1541747711,RU
1541747712,1541748735,UA
-1541748736,1541748991,RU
1541748992,1541749247,AT
1541749248,1541749503,ES
1541749504,1541749759,RU
@@ -26738,7 +28941,6 @@
1541893632,1541894143,PL
1541894144,1541895167,RU
1541895168,1541897727,PL
-1541897728,1541897983,RU
1541897984,1541898239,UA
1541898240,1541900799,RU
1541900800,1541901055,RO
@@ -27558,7 +29760,7 @@
1542392832,1542393087,RO
1542393088,1542393343,BG
1542393344,1542393599,IR
-1542393600,1542394879,RU
+1542393856,1542394879,RU
1542394880,1542395135,DE
1542395136,1542395391,ES
1542395392,1542395647,RU
@@ -28035,8 +30237,8 @@
1546000384,1546001407,UZ
1546001408,1546002943,RU
1546002944,1546003199,UA
-1546003200,1546003455,RU
-1546003456,1546004479,CZ
+1546003200,1546003967,RU
+1546003968,1546004479,CZ
1546004480,1546004735,UA
1546004736,1546005247,CZ
1546005248,1546006527,RU
@@ -28056,7 +30258,7 @@
1546088448,1546092543,GB
1546092544,1546096639,RU
1546096640,1546100735,IT
-1546100736,1546104831,DE
+1546100736,1546104831,AT
1546104832,1546108927,IE
1546108928,1546113023,IM
1546113024,1546121215,RU
@@ -28067,7 +30269,9 @@
1546122464,1546122479,DZ
1546122480,1546122649,FR
1546122650,1546122650,PT
-1546122651,1546125311,FR
+1546122651,1546122696,FR
+1546122697,1546122697,ES
+1546122698,1546125311,FR
1546125312,1546256383,GB
1546256384,1546264575,RU
1546264576,1546266623,TR
@@ -28137,20 +30341,25 @@
1546682368,1546698751,BE
1546698752,1546715135,NL
1546715136,1546731519,LV
-1546731520,1546731775,RE
-1546731776,1546735103,FR
+1546731520,1546735103,FR
1546735104,1546735359,RE
-1546735360,1546739711,FR
-1546739712,1546739967,GP
-1546739968,1546741503,FR
-1546741504,1546742015,GP
-1546742016,1546742527,FR
-1546742528,1546743295,GF
-1546743296,1546743551,FR
-1546743552,1546743807,GF
-1546743808,1546745087,FR
-1546745088,1546745855,MQ
-1546745856,1546747903,FR
+1546735360,1546735871,FR
+1546735872,1546736127,RE
+1546736128,1546736639,FR
+1546736640,1546736895,RE
+1546736896,1546740223,FR
+1546740224,1546740479,GP
+1546740480,1546741503,FR
+1546741504,1546741759,GP
+1546741760,1546742527,FR
+1546742528,1546743039,GF
+1546743040,1546743295,FR
+1546743296,1546743551,GF
+1546743552,1546745599,FR
+1546745600,1546745855,MQ
+1546745856,1546746111,FR
+1546746112,1546746367,MQ
+1546746368,1546747903,FR
1546747904,1546764287,RU
1546764288,1546780671,UA
1546780672,1546797055,IR
@@ -28162,7 +30371,9 @@
1546911744,1546928127,SK
1546928128,1546944511,GB
1546944512,1546960895,UA
-1546960896,1546977279,HU
+1546960896,1546964991,HU
+1546964992,1546966015,US
+1546966016,1546977279,HU
1546977280,1546993663,MK
1546993664,1547010047,RU
1547010048,1547026431,SI
@@ -28206,19 +30417,13 @@
1547542528,1547546623,FR
1547546624,1547550719,IR
1547550720,1547554815,IE
-1547554816,1547555071,AT
-1547555072,1547555078,DE
-1547555079,1547555079,AT
-1547555080,1547555327,DE
-1547555328,1547558911,AT
+1547554816,1547558911,AT
1547558912,1547563007,IL
1547563008,1547565311,NL
1547565312,1547565823,US
1547565824,1547567103,NL
1547567104,1547571199,GB
-1547571200,1547572991,AT
-1547572992,1547573247,HU
-1547573248,1547575295,AT
+1547571200,1547575295,AT
1547575296,1547579391,NO
1547579392,1547583487,RU
1547583488,1547587583,KG
@@ -28280,19 +30485,13 @@
1547685888,1547689983,AT
1547689984,1547694079,IT
1547694080,1547698175,HU
-1547698176,1547925783,NL
-1547925784,1547925791,DE
-1547925792,1548130303,NL
-1548130304,1548130559,BE
-1548130560,1548158599,NL
+1547698176,1548158599,NL
1548158600,1548158607,GB
1548158608,1548159231,NL
1548159232,1548159235,ES
1548159236,1548159487,NL
1548159488,1548159999,GB
-1548160000,1548160255,NL
-1548160256,1548160511,PL
-1548160512,1548162479,NL
+1548160000,1548162479,NL
1548162480,1548162495,FR
1548162496,1548169215,NL
1548169216,1548171263,DE
@@ -28322,10 +30521,14 @@
1549795328,1550057471,AE
1550057472,1550188543,RU
1550188544,1550319615,FR
-1550319616,1550581759,CH
+1550319616,1550519551,CH
+1550519552,1550519807,DE
+1550519808,1550581759,CH
1550581760,1550843903,NL
1550843904,1550974975,UA
-1550974976,1551007743,RO
+1550974976,1550979071,RO
+1550979072,1550983167,IR
+1550983168,1551007743,RO
1551007744,1551106047,MD
1551106048,1551237119,DE
1551237120,1551368191,GR
@@ -28346,101 +30549,28 @@
1551577088,1551580159,NL
1551604480,1551604735,SE
1551630336,1551892479,RU
-1551892480,1553989887,FR
-1553989888,1553990911,MQ
-1553990912,1553991167,FR
-1553991168,1553992703,MQ
-1553992704,1553993215,FR
-1553993216,1553996031,MQ
-1553996032,1553996543,FR
-1553996544,1553997311,MQ
-1553997312,1553997567,FR
-1553997568,1554001407,MQ
-1554001408,1554001663,FR
-1554001664,1554001919,MQ
-1554001920,1554002175,FR
-1554002176,1554005247,MQ
-1554005248,1554005503,FR
-1554005504,1554006015,MQ
-1554006016,1554006783,GP
-1554006784,1554007295,FR
-1554007296,1554007807,GP
-1554007808,1554008063,FR
-1554008064,1554009343,GP
-1554009344,1554009855,FR
-1554009856,1554011647,GP
-1554011648,1554011903,FR
-1554011904,1554013695,GP
-1554013696,1554014207,FR
-1554014208,1554015231,GP
-1554015232,1554015487,FR
-1554015488,1554016767,GP
-1554016768,1554017279,FR
-1554017280,1554018047,GP
-1554018048,1554018303,FR
-1554018304,1554019583,GP
-1554019584,1554019839,FR
-1554019840,1554021119,GP
-1554021120,1554021375,FR
-1554021376,1554021887,GP
-1554021888,1554022399,FR
-1554022400,1554023423,GP
-1554023424,1554023679,FR
-1554023680,1554024959,GP
-1554024960,1554025215,FR
-1554025216,1554025471,GP
-1554025472,1554025727,FR
-1554025728,1554026751,GP
-1554026752,1554027007,FR
-1554027008,1554027519,GP
-1554027520,1554027775,FR
-1554027776,1554029055,GP
-1554029056,1554029311,FR
-1554029312,1554030079,GP
-1554030080,1554030335,FR
-1554030336,1554030591,GP
-1554030592,1554031615,MQ
-1554031616,1554032127,FR
-1554032128,1554032383,MQ
-1554032384,1554032639,FR
-1554032640,1554035455,MQ
-1554035456,1554035967,FR
-1554035968,1554037503,MQ
-1554037504,1554037759,FR
-1554037760,1554038271,MQ
-1554038272,1554038783,FR
-1554038784,1554039295,RE
-1554039296,1554039807,FR
-1554039808,1554040063,RE
-1554040064,1554040319,FR
-1554040320,1554041343,RE
-1554041344,1554041599,FR
-1554041600,1554042367,RE
-1554042368,1554042879,FR
-1554042880,1554043903,RE
-1554043904,1554044159,FR
-1554044160,1554046463,RE
-1554046464,1554046719,FR
-1554046720,1554047231,RE
-1554047232,1554048255,FR
-1554048256,1554048767,RE
-1554048768,1554049279,FR
-1554049280,1554049535,RE
-1554049536,1554049791,FR
-1554049792,1554052351,RE
-1554052352,1554052607,FR
-1554052608,1554053887,RE
-1554053888,1554054143,FR
-1554054144,1554054655,RE
-1554054656,1556086783,FR
+1551892480,1556086783,FR
1556086784,1557921791,DE
1557921792,1558052863,NO
1558052864,1558054399,FR
1558054400,1558054655,DE
-1558054656,1558118399,FR
+1558054656,1558079407,FR
+1558079408,1558079415,PL
+1558079416,1558079423,GB
+1558079424,1558081175,FR
+1558081176,1558081183,BE
+1558081184,1558084655,FR
+1558084656,1558084659,BE
+1558084660,1558085055,FR
+1558085056,1558085071,GB
+1558085072,1558093531,FR
+1558093532,1558093532,HR
+1558093533,1558118399,FR
1558118400,1558119423,DE
1558119424,1558122495,RU
-1558122496,1558151167,AT
+1558122496,1558123519,AT
+1558123520,1558124543,LU
+1558124544,1558151167,AT
1558151168,1558183935,IT
1558183936,1558708223,DE
1558708224,1559236607,GB
@@ -28493,7 +30623,7 @@
1559633920,1559642111,IT
1559650304,1559658495,IT
1559658496,1559683071,RU
-1559683072,1559691263,CH
+1559683072,1559691263,NL
1559691264,1559756799,BG
1559756800,1559789567,AT
1559789568,1559822335,RU
@@ -28502,7 +30632,9 @@
1559887872,1559920639,PT
1559920640,1559924693,LU
1559924694,1559924694,GB
-1559924695,1559932927,LU
+1559924695,1559929599,LU
+1559929600,1559929855,LV
+1559929856,1559932927,LU
1559932928,1559943167,DE
1559943168,1559944191,LU
1559944192,1559945727,FR
@@ -28528,17 +30660,7 @@
1562378240,1564999679,IT
1564999680,1565523967,UA
1565523968,1565655039,RU
-1565655040,1565673215,AT
-1565673216,1565673471,DE
-1565673472,1565675263,AT
-1565675264,1565675391,DE
-1565675392,1565713295,AT
-1565713296,1565713299,CH
-1565713300,1565718919,AT
-1565718920,1565718927,DE
-1565718928,1565723135,AT
-1565723136,1565723391,HU
-1565723392,1565786111,AT
+1565655040,1565786111,AT
1565786112,1565917183,BY
1565917184,1566048255,RS
1566048256,1566056447,RU
@@ -28661,7 +30783,6 @@
1566425088,1566427135,RS
1566427136,1566429183,IT
1566429184,1566437375,GB
-1566437376,1566439423,BE
1566439424,1566443519,DE
1566443520,1566445567,NO
1566445568,1566447615,PL
@@ -28721,9 +30842,9 @@
1566558208,1566560255,JO
1566560256,1566560767,IT
1566560768,1566561015,SM
-1566561016,1566561017,IT
-1566561018,1566561023,SM
-1566561024,1566564351,IT
+1566561016,1566561019,IT
+1566561020,1566561279,SM
+1566561280,1566564351,IT
1566564352,1566566399,IS
1566566400,1566568447,FR
1566568448,1566570495,KZ
@@ -28746,11 +30867,7 @@
1567621120,1567696383,RO
1567696384,1567696895,MD
1567696896,1567703039,RO
-1567703040,1567707391,MD
-1567707392,1567707647,RO
-1567707648,1567707903,MD
-1567707904,1567708671,RO
-1567708672,1567709183,MD
+1567703040,1567709183,MD
1567709184,1567710207,RO
1567710208,1567711231,MD
1567711232,1567713279,RO
@@ -28761,7 +30878,9 @@
1567727360,1567727615,GB
1567727616,1567742975,RO
1567742976,1567743487,MD
-1567743488,1567749119,RO
+1567743488,1567743999,RO
+1567744000,1567748095,IR
+1567748096,1567749119,RO
1567749120,1567750143,MD
1567750144,1567752191,RO
1567752192,1567756287,MD
@@ -28789,7 +30908,8 @@
1567988736,1567992831,MD
1567992832,1567993343,RO
1567993344,1567993599,GB
-1567993600,1567997951,RO
+1567993600,1567993855,RO
+1567993856,1567997951,IR
1567997952,1568014335,NL
1568014336,1568022527,DE
1568022528,1568026623,RO
@@ -28810,79 +30930,62 @@
1568120832,1568122879,MD
1568122880,1568130047,RO
1568130048,1568133119,MD
-1568133120,1568138239,RO
+1568133120,1568137215,IR
+1568137216,1568138239,RO
1568138240,1568141311,MD
1568141312,1568178175,RO
1568178176,1568210943,RU
1568210944,1568243711,GB
-1568243712,1568243967,FR
-1568243968,1568244735,GP
-1568244736,1568244991,FR
-1568244992,1568245759,GP
-1568245760,1568246271,FR
-1568246272,1568246527,GF
-1568246528,1568247039,GP
-1568247040,1568247295,FR
+1568243712,1568245759,GP
+1568245760,1568247295,FR
1568247296,1568247551,GF
1568247552,1568247807,MF
1568247808,1568248063,FR
1568248064,1568248831,GP
-1568248832,1568249087,MQ
-1568249088,1568249599,GP
-1568249600,1568249855,MQ
+1568248832,1568249087,FR
+1568249088,1568249855,GP
1568249856,1568250111,FR
1568250112,1568250879,GP
1568250880,1568251135,FR
1568251136,1568251647,GP
1568251648,1568251903,MF
-1568251904,1568252159,MQ
-1568252160,1568252415,GP
-1568252416,1568252671,MQ
-1568252672,1568252927,GP
+1568251904,1568252159,FR
+1568252160,1568252927,GP
1568252928,1568253183,GF
-1568253184,1568253951,GP
-1568253952,1568255743,FR
-1568255744,1568255999,GF
-1568256000,1568256511,GP
-1568256512,1568259071,FR
-1568259072,1568259327,MQ
+1568253184,1568254207,GP
+1568254208,1568254975,FR
+1568254976,1568255487,GP
+1568255488,1568255999,FR
+1568256000,1568256255,GP
+1568256256,1568259327,FR
1568259328,1568260095,GP
1568260096,1568260351,FR
-1568260352,1568260607,MF
-1568260608,1568261119,GP
+1568260352,1568260863,MF
+1568260864,1568261119,GP
1568261120,1568261375,FR
1568261376,1568262143,GP
-1568262144,1568262655,MQ
-1568262656,1568262911,GP
-1568262912,1568263167,MQ
-1568263168,1568263423,FR
-1568263424,1568263679,MQ
-1568263680,1568264447,FR
-1568264448,1568264703,GP
-1568264704,1568265215,MF
-1568265216,1568265471,FR
-1568265472,1568266239,GP
+1568262144,1568262399,MQ
+1568262400,1568263167,GP
+1568263168,1568264447,FR
+1568264448,1568264959,GP
+1568264960,1568265215,MF
+1568265216,1568266239,GP
1568266240,1568266495,FR
1568266496,1568267263,GP
-1568267264,1568268543,FR
+1568267264,1568267775,MF
+1568267776,1568268543,FR
1568268544,1568269311,GP
-1568269312,1568269567,MQ
+1568269312,1568269567,FR
1568269568,1568270079,GP
1568270080,1568270335,MQ
-1568270336,1568271359,GP
-1568271360,1568271615,FR
-1568271616,1568272383,GP
+1568270336,1568272383,GP
1568272384,1568273151,FR
1568273152,1568273407,GF
-1568273408,1568274175,FR
-1568274176,1568274687,MQ
-1568274688,1568274943,GP
-1568274944,1568275199,MQ
-1568275200,1568275455,GP
+1568273408,1568274687,FR
+1568274688,1568275455,GP
1568275456,1568275711,FR
1568275712,1568275967,MQ
-1568275968,1568276223,FR
-1568276224,1568276479,MQ
+1568275968,1568276479,FR
1568276480,1568309247,DE
1568309248,1568342015,RO
1568342016,1568374783,BG
@@ -28895,9 +30998,7 @@
1568571392,1568604159,LB
1568604160,1568636927,UA
1568636928,1569193983,DE
-1569193984,1569438463,HR
-1569438464,1569438719,BR
-1569438720,1569718271,HR
+1569193984,1569718271,HR
1569718272,1570242559,IT
1570242560,1570275327,GB
1570275328,1570308095,BG
@@ -28919,14 +31020,13 @@
1570586624,1570590719,PL
1570590720,1570592767,IL
1570592768,1570596863,PL
-1570596864,1570598911,UA
1570598912,1570600959,PL
1570600960,1570603007,RU
1570603008,1570605055,CZ
1570605056,1570607103,NL
1570607104,1570609151,RU
1570609152,1570611199,PL
-1570611200,1570619391,RU
+1570611200,1570617343,RU
1570619392,1570621439,BA
1570621440,1570625535,RU
1570625536,1570627583,GB
@@ -28936,7 +31036,9 @@
1570644776,1570644991,FR
1570644992,1570645247,GB
1570645248,1570652159,FR
-1570652160,1570668543,SE
+1570652160,1570660863,SE
+1570660864,1570661375,NO
+1570661376,1570668543,SE
1570668544,1570686975,RU
1570686976,1570693119,NL
1570693120,1570695167,RU
@@ -28991,7 +31093,7 @@
1571443712,1571444991,CZ
1571444992,1571445247,UA
1571445248,1571446271,NL
-1571446272,1571446783,CZ
+1571446272,1571446783,RU
1571446784,1571447039,GB
1571447040,1571447295,CZ
1571447296,1571447807,RU
@@ -29002,7 +31104,9 @@
1571449344,1571449855,CZ
1571449856,1571450879,RU
1571450880,1571452927,UA
-1571452928,1571453951,CZ
+1571452928,1571453183,CZ
+1571453184,1571453695,RU
+1571453696,1571453951,CZ
1571453952,1571455999,RU
1571456000,1571456511,UA
1571456512,1571456767,CZ
@@ -29018,10 +31122,14 @@
1571471104,1571471359,CZ
1571471360,1571475455,RU
1571475456,1571476479,CZ
-1571476480,1571478527,RU
-1571478528,1571487743,CZ
+1571476480,1571479551,RU
+1571479552,1571483647,CZ
+1571483648,1571484159,RU
+1571484160,1571487743,CZ
1571487744,1571495935,SK
-1571495936,1571504127,CZ
+1571495936,1571499007,CZ
+1571499008,1571500031,RU
+1571500032,1571504127,BY
1571504128,1571508223,UA
1571508224,1571514367,CZ
1571514368,1571520511,BY
@@ -29034,8 +31142,9 @@
1571529216,1571529727,CZ
1571529728,1571530239,RU
1571530240,1571531263,CZ
-1571531264,1571531775,UA
-1571531776,1571534079,CZ
+1571531264,1571532031,UA
+1571532032,1571532287,RU
+1571532288,1571534079,CZ
1571534080,1571534847,RU
1571534848,1571535103,LV
1571535104,1571535617,CZ
@@ -29105,30 +31214,24 @@
1571815424,1571815679,FR
1571815680,1571815935,RE
1571815936,1571816959,FR
-1571816960,1571817727,RE
-1571817728,1571818495,FR
+1571816960,1571817215,RE
+1571817216,1571818495,FR
1571818496,1571818751,RE
1571818752,1571819007,FR
1571819008,1571819263,RE
1571819264,1571819519,FR
1571819520,1571819775,RE
-1571819776,1571820287,FR
-1571820288,1571820543,RE
-1571820544,1571820799,FR
-1571820800,1571821055,RE
-1571821056,1571822591,FR
-1571822592,1571823103,RE
-1571823104,1571823871,FR
-1571823872,1571824127,RE
-1571824128,1571824895,FR
-1571824896,1571825151,RE
-1571825152,1571826687,FR
-1571826688,1571827199,RE
-1571827200,1571827711,FR
-1571827712,1571827967,RE
-1571827968,1571828991,FR
-1571828992,1571829247,RE
-1571829248,1571831807,FR
+1571819776,1571821055,FR
+1571821056,1571821823,RE
+1571821824,1571822847,FR
+1571822848,1571823615,RE
+1571823616,1571825407,FR
+1571825408,1571825663,RE
+1571825664,1571827455,FR
+1571827456,1571827967,RE
+1571827968,1571830783,FR
+1571830784,1571831039,RE
+1571831040,1571831807,FR
1571831808,1571848191,DK
1571848192,1571864575,RU
1571864576,1571880959,PL
@@ -29231,8 +31334,7 @@
1572538368,1572540415,NL
1572540416,1572542463,GB
1572542464,1572544511,IT
-1572544512,1572544767,FR
-1572544768,1572546559,IQ
+1572544512,1572546559,IQ
1572546560,1572548607,FR
1572548608,1572550655,NL
1572550656,1572552703,DE
@@ -29244,11 +31346,12 @@
1572562944,1572564991,CZ
1572564992,1572567039,DE
1572567040,1572569087,RU
-1572571136,1572573183,RO
-1572573184,1572574463,GG
-1572574464,1572574719,GB
-1572574720,1572574975,GG
-1572574976,1572575231,GB
+1572571136,1572572159,RO
+1572572160,1572573183,BG
+1572573184,1572573951,GG
+1572573952,1572574207,GB
+1572574208,1572574463,GG
+1572574464,1572575231,GB
1572575232,1572577279,RU
1572577280,1572579327,AM
1572579328,1572581375,GB
@@ -29314,8 +31417,9 @@
1572706304,1572708351,DE
1572708352,1572708607,GB
1572708608,1572709375,GG
-1572709376,1572710143,GB
-1572710144,1572710399,GG
+1572709376,1572709887,GB
+1572709888,1572710143,GG
+1572710144,1572710399,GB
1572710400,1572712447,DE
1572712448,1572714495,ES
1572714496,1572714943,NG
@@ -29406,15 +31510,49 @@
1578585088,1578586111,PT
1578586112,1578588159,ES
1578588160,1578590207,PL
-1578590208,1578590787,FR
+1578590208,1578590223,FR
+1578590224,1578590231,CH
+1578590232,1578590347,FR
+1578590348,1578590351,FI
+1578590352,1578590367,IT
+1578590368,1578590603,FR
+1578590604,1578590607,GB
+1578590608,1578590659,FR
+1578590660,1578590663,PL
+1578590664,1578590719,FR
+1578590720,1578590727,ES
+1578590728,1578590731,GB
+1578590732,1578590767,FR
+1578590768,1578590783,BE
+1578590784,1578590787,FR
1578590788,1578590791,ES
1578590792,1578590851,FR
1578590852,1578590855,ES
1578590856,1578590863,FR
1578590864,1578590879,BE
-1578590880,1578591695,FR
+1578590880,1578590895,GB
+1578590896,1578590975,FR
+1578590976,1578590991,IT
+1578590992,1578591087,FR
+1578591088,1578591103,GB
+1578591104,1578591231,FR
+1578591232,1578591247,NL
+1578591248,1578591263,GB
+1578591264,1578591391,FR
+1578591392,1578591399,BE
+1578591400,1578591663,FR
+1578591664,1578591679,GB
+1578591680,1578591695,FR
1578591696,1578591699,ES
-1578591700,1578592167,FR
+1578591700,1578591799,FR
+1578591800,1578591807,PL
+1578591808,1578591823,ES
+1578591824,1578591903,FR
+1578591904,1578591919,PL
+1578591920,1578591983,FR
+1578591984,1578591999,ES
+1578592000,1578592163,FR
+1578592164,1578592167,DE
1578592168,1578592171,IT
1578592172,1578592175,FR
1578592176,1578592183,CZ
@@ -29423,34 +31561,211 @@
1578592200,1578592207,CH
1578592208,1578592295,FR
1578592296,1578592303,NL
-1578592304,1578593023,FR
+1578592304,1578592379,FR
+1578592380,1578592383,GB
+1578592384,1578592511,FR
+1578592512,1578592519,ES
+1578592520,1578592543,FR
+1578592544,1578592559,GB
+1578592560,1578592575,BE
+1578592576,1578592687,FR
+1578592688,1578592695,ES
+1578592696,1578592735,FR
+1578592736,1578592743,FI
+1578592744,1578592799,FR
+1578592800,1578592803,NL
+1578592804,1578592811,FR
+1578592812,1578592815,ES
+1578592816,1578592855,FR
+1578592856,1578592859,PL
+1578592860,1578592863,FR
+1578592864,1578592879,DE
+1578592880,1578592883,GB
+1578592884,1578592991,FR
+1578592992,1578593007,NL
+1578593008,1578593023,FR
1578593024,1578593279,DE
-1578593280,1578593439,FR
+1578593280,1578593323,FR
+1578593324,1578593327,DE
+1578593328,1578593415,FR
+1578593416,1578593423,IT
+1578593424,1578593439,FR
1578593440,1578593443,ES
-1578593444,1578593551,FR
+1578593444,1578593479,FR
+1578593480,1578593483,ES
+1578593484,1578593491,FR
+1578593492,1578593495,GB
+1578593496,1578593551,FR
1578593552,1578593559,NL
-1578593560,1578593955,FR
+1578593560,1578593587,FR
+1578593588,1578593591,GB
+1578593592,1578593671,FR
+1578593672,1578593679,CH
+1578593680,1578593703,FR
+1578593704,1578593711,ES
+1578593712,1578593807,FR
+1578593808,1578593823,DE
+1578593824,1578593939,FR
+1578593940,1578593943,PL
+1578593944,1578593955,FR
1578593956,1578593959,ES
-1578593960,1578595367,FR
+1578593960,1578594063,FR
+1578594064,1578594079,PL
+1578594080,1578594095,FR
+1578594096,1578594111,PL
+1578594112,1578594143,FR
+1578594144,1578594147,ES
+1578594148,1578594151,FR
+1578594152,1578594159,ES
+1578594160,1578594163,IT
+1578594164,1578594239,FR
+1578594240,1578594255,PT
+1578594256,1578594271,IT
+1578594272,1578594303,BE
+1578594304,1578594359,FR
+1578594360,1578594363,NL
+1578594364,1578594367,FR
+1578594368,1578594371,IT
+1578594372,1578594383,FR
+1578594384,1578594399,IT
+1578594400,1578594523,FR
+1578594524,1578594527,CH
+1578594528,1578594547,FR
+1578594548,1578594551,IT
+1578594552,1578594559,FR
+1578594560,1578594815,ES
+1578594816,1578594879,FR
+1578594880,1578594895,FI
+1578594896,1578595203,FR
+1578595204,1578595207,GB
+1578595208,1578595215,FR
+1578595216,1578595231,IE
+1578595232,1578595367,FR
1578595368,1578595371,IT
-1578595372,1578595419,FR
+1578595372,1578595379,FR
+1578595380,1578595383,ES
+1578595384,1578595419,FR
1578595420,1578595423,GB
-1578595424,1578595987,FR
+1578595424,1578595439,FR
+1578595440,1578595447,NL
+1578595448,1578595535,FR
+1578595536,1578595543,LT
+1578595544,1578595551,FR
+1578595552,1578595559,NL
+1578595560,1578595583,FR
+1578595584,1578595599,BE
+1578595600,1578595607,FR
+1578595608,1578595611,GB
+1578595612,1578595615,FR
+1578595616,1578595619,ES
+1578595620,1578595627,FR
+1578595628,1578595631,ES
+1578595632,1578595663,FR
+1578595664,1578595679,ES
+1578595680,1578595747,FR
+1578595748,1578595751,CH
+1578595752,1578595767,FR
+1578595768,1578595775,ES
+1578595776,1578595871,FR
+1578595872,1578595903,IT
+1578595904,1578595911,GB
+1578595912,1578595987,FR
1578595988,1578595991,ES
-1578595992,1578602495,FR
+1578595992,1578596119,FR
+1578596120,1578596123,IT
+1578596124,1578596143,FR
+1578596144,1578596147,ES
+1578596148,1578596159,FR
+1578596160,1578596167,DE
+1578596168,1578596239,FR
+1578596240,1578596255,ES
+1578596256,1578596351,FR
+1578596352,1578596863,GB
+1578596864,1578602495,FR
1578602496,1578604543,NL
1578604544,1578606591,GB
1578606592,1578607725,DE
1578607726,1578607726,FR
1578607727,1578608639,DE
1578608640,1578610687,CZ
-1578610688,1578612907,FR
+1578610688,1578610779,FR
+1578610780,1578610783,DE
+1578610784,1578610819,FR
+1578610820,1578610823,ES
+1578610824,1578610827,FR
+1578610828,1578610831,IT
+1578610832,1578610847,FR
+1578610848,1578610851,DE
+1578610852,1578610855,FR
+1578610856,1578610859,IT
+1578610860,1578610871,FR
+1578610872,1578610879,PL
+1578610880,1578611051,FR
+1578611052,1578611055,NL
+1578611056,1578611127,FR
+1578611128,1578611135,NL
+1578611136,1578611151,FR
+1578611152,1578611167,GB
+1578611168,1578611199,FR
+1578611200,1578611215,BE
+1578611216,1578611239,FR
+1578611240,1578611243,DE
+1578611244,1578611423,FR
+1578611424,1578611439,PT
+1578611440,1578611443,FR
+1578611444,1578611447,IT
+1578611448,1578611455,FI
+1578611456,1578611583,IE
+1578611584,1578611711,GB
+1578611712,1578611907,FR
+1578611908,1578611911,PT
+1578611912,1578611919,FR
+1578611920,1578611935,IT
+1578611936,1578612255,FR
+1578612256,1578612263,DE
+1578612264,1578612271,FR
+1578612272,1578612287,GB
+1578612288,1578612303,FR
+1578612304,1578612319,DE
+1578612320,1578612523,FR
+1578612524,1578612527,PL
+1578612528,1578612579,FR
+1578612580,1578612583,BE
+1578612584,1578612591,FI
+1578612592,1578612899,FR
+1578612900,1578612903,ES
+1578612904,1578612907,FR
1578612908,1578612911,ES
-1578612912,1578613735,FR
+1578612912,1578612943,FR
+1578612944,1578612959,NL
+1578612960,1578612979,FR
+1578612980,1578612983,IE
+1578612984,1578612991,FR
+1578612992,1578613247,IT
+1578613248,1578613279,ES
+1578613280,1578613427,FR
+1578613428,1578613431,BE
+1578613432,1578613663,FR
+1578613664,1578613679,IT
+1578613680,1578613711,FR
+1578613712,1578613719,BE
+1578613720,1578613735,FR
1578613736,1578613739,ES
-1578613740,1578613931,FR
+1578613740,1578613759,FR
+1578613760,1578613775,GB
+1578613776,1578613787,FR
+1578613788,1578613791,DE
+1578613792,1578613823,FR
+1578613824,1578613839,NL
+1578613840,1578613847,GB
+1578613848,1578613855,IT
+1578613856,1578613931,FR
1578613932,1578613935,NL
-1578613936,1578614271,FR
+1578613936,1578614003,FR
+1578614004,1578614007,CZ
+1578614008,1578614047,FR
+1578614048,1578614055,ES
+1578614056,1578614271,FR
1578614272,1578614527,ES
1578614528,1578631167,FR
1578631168,1578663935,RO
@@ -29475,7 +31790,7 @@
1580007424,1580015615,RU
1580015616,1580048383,UA
1580048384,1580064767,RU
-1580064768,1580072959,DE
+1580064768,1580072959,GB
1580072960,1580134399,PT
1580134400,1580136447,ES
1580136448,1580138495,PT
@@ -29485,19 +31800,7 @@
1580466176,1580597247,RO
1580597248,1580728319,TR
1580728320,1580990463,AE
-1580990464,1580999679,PT
-1580999680,1580999935,RO
-1580999936,1581001215,PT
-1581001216,1581001471,RO
-1581001472,1581118463,PT
-1581118464,1581118719,RO
-1581118720,1581126655,PT
-1581126656,1581127167,RO
-1581127168,1581132031,PT
-1581132032,1581132287,RO
-1581132288,1581208575,PT
-1581208576,1581208831,RO
-1581208832,1581252607,PT
+1580990464,1581252607,PT
1581252608,1581776895,GR
1581776896,1581793279,RU
1581793280,1581809663,PL
@@ -29548,7 +31851,9 @@
1583616000,1583620095,NL
1583620096,1583624191,IT
1583624192,1583624447,XK
-1583624448,1583628287,RS
+1583624448,1583626751,RS
+1583626752,1583627007,XK
+1583627008,1583628287,RS
1583628288,1583632383,DE
1583632384,1583636479,RU
1583636480,1583640575,MK
@@ -29559,7 +31864,9 @@
1583656960,1583665151,RU
1583665152,1583669247,UA
1583669248,1583673343,GE
-1583673344,1583677439,DE
+1583673344,1583675647,DE
+1583675648,1583675903,US
+1583675904,1583677439,DE
1583677440,1583681535,FI
1583681536,1583685631,PL
1583685632,1583689727,DE
@@ -29567,6 +31874,7 @@
1583693824,1583697919,RU
1583697920,1583702015,TR
1583702016,1583706111,RU
+1583706624,1583706879,RU
1583710208,1583714303,IR
1583714304,1583722495,GB
1583722496,1583726591,IR
@@ -29583,7 +31891,9 @@
1583767552,1583771647,AT
1583771648,1583775743,RU
1583775744,1583779839,IT
-1583779840,1583780263,GB
+1583779840,1583780047,GB
+1583780048,1583780055,IT
+1583780056,1583780263,GB
1583780264,1583780271,IT
1583780272,1583780335,GB
1583780336,1583780343,IT
@@ -29630,9 +31940,7 @@
1583861760,1583865855,LU
1583865856,1583869951,RU
1583869952,1583874047,KZ
-1583874048,1584119935,BE
-1584119936,1584120063,FR
-1584120064,1584398335,BE
+1583874048,1584398335,BE
1584398336,1584529407,CZ
1584529408,1584660479,DE
1584660480,1584857087,GB
@@ -29655,9 +31963,8 @@
1585219584,1585221631,NL
1585221632,1585223679,SK
1585223680,1585224959,FR
-1585224960,1585225215,RE
-1585225216,1585225471,FR
-1585225472,1585225727,YT
+1585224960,1585225471,RE
+1585225472,1585225727,FR
1585225728,1585227007,UA
1585227008,1585227263,RU
1585227264,1585227775,UA
@@ -29665,9 +31972,11 @@
1585231872,1585233919,CZ
1585233920,1585238015,RU
1585238016,1585240063,DE
-1585240064,1585240575,FR
-1585240576,1585241855,MQ
-1585241856,1585242111,GP
+1585240064,1585240319,FR
+1585240320,1585240575,GP
+1585240576,1585240831,MQ
+1585240832,1585241087,FR
+1585241088,1585242111,MQ
1585242112,1585244159,RU
1585244160,1585246207,FR
1585246208,1585248255,RU
@@ -29713,7 +32022,8 @@
1585334272,1585336319,DE
1585336320,1585338367,SE
1585338368,1585340415,RU
-1585340416,1585342463,AT
+1585340416,1585340671,DE
+1585340672,1585342463,AT
1585342464,1585344511,GB
1585344512,1585346559,FR
1585346560,1585348607,GB
@@ -29791,9 +32101,7 @@
1586151424,1586159615,TR
1586159616,1586167807,MT
1586167808,1586175999,DE
-1586176000,1586177151,BE
-1586177152,1586177279,DE
-1586177280,1586184191,BE
+1586176000,1586184191,BE
1586184192,1586192383,NO
1586192384,1586200575,RU
1586200576,1586208767,MD
@@ -29934,11 +32242,17 @@
1589608448,1589608703,SE
1589608704,1589608959,DK
1589608960,1589609215,SE
-1589609216,1589611519,DK
+1589609216,1589609983,DK
+1589609984,1589610239,SE
+1589610240,1589610495,DK
+1589610496,1589611263,SE
+1589611264,1589611519,DK
1589611520,1589611775,SE
-1589611776,1589612287,DK
-1589612288,1589620735,SE
-1589620736,1589641215,DK
+1589611776,1589612031,DK
+1589612032,1589620991,SE
+1589620992,1589621247,DK
+1589621248,1589621503,SE
+1589621504,1589641215,DK
1589641216,1590034431,GB
1590034432,1590036479,RU
1590036480,1590038527,GB
@@ -30001,9 +32315,7 @@
1590165504,1590689791,AE
1590689792,1591214079,NL
1591214080,1591738367,DE
-1591738368,1591977471,BE
-1591977472,1591977599,NL
-1591977600,1592000511,BE
+1591738368,1592000511,BE
1592000512,1592004607,ES
1592004608,1592008703,AM
1592008704,1592012799,GB
@@ -30121,7 +32433,9 @@
1593147392,1593163775,RU
1593163776,1593180159,AT
1593180160,1593196543,NO
-1593196544,1593212927,SE
+1593196544,1593203103,SE
+1593203104,1593203135,FI
+1593203136,1593212927,SE
1593212928,1593229311,PL
1593229312,1593245695,EE
1593245696,1593247743,NL
@@ -30164,7 +32478,11 @@
1593421568,1593421823,GB
1593421824,1593422591,DE
1593422592,1593422847,GB
-1593422848,1593442303,DE
+1593422848,1593431167,DE
+1593431168,1593431295,GB
+1593431296,1593440511,DE
+1593440512,1593440767,GB
+1593440768,1593442303,DE
1593442304,1593475071,BA
1593475072,1593491455,HR
1593491456,1593499647,DE
@@ -30211,13 +32529,11 @@
1596932096,1596940543,CZ
1596940544,1596940799,RU
1596940800,1596941055,UA
-1596941056,1596941311,CZ
+1596941056,1596941311,BY
1596941312,1596942335,RU
1596942336,1596945407,UA
1596945408,1596945919,CZ
-1596945920,1596946175,RU
-1596946176,1596946431,NL
-1596946432,1596947455,RU
+1596945920,1596947455,RU
1596947456,1596948479,UA
1596948480,1596950527,BY
1596950528,1596950783,UA
@@ -30231,8 +32547,8 @@
1596954624,1596954879,RU
1596954880,1596955391,CZ
1596955392,1596955647,RU
-1596955648,1596956415,CZ
-1596956416,1596956671,RU
+1596955648,1596956159,CZ
+1596956160,1596956671,RU
1596956672,1596956927,CZ
1596956928,1596956963,DE
1596956964,1596956964,RU
@@ -30250,9 +32566,7 @@
1596963328,1596963839,CZ
1596963840,1596964095,KZ
1596964096,1596964607,CZ
-1596964608,1596965887,RU
-1596965888,1596966911,KG
-1596966912,1596967167,RU
+1596964608,1596967167,RU
1596967168,1596967423,CZ
1596967424,1596967935,RU
1596967936,1596968959,UA
@@ -30348,7 +32662,9 @@
1602230271,1602230271,DE
1602230272,1602232319,DK
1602232320,1602234367,CH
-1602234368,1602236415,FR
+1602234368,1602235967,FR
+1602235968,1602235999,ES
+1602236000,1602236415,FR
1602236416,1602238463,GB
1602238464,1602240511,TR
1602240512,1602242559,BY
@@ -30469,25 +32785,9 @@
1602781184,1602813951,FR
1602813952,1602846719,RU
1602846720,1602879487,GE
-1602879488,1602879488,MQ
-1602879489,1602879743,RE
-1602879744,1602882303,MQ
-1602882304,1602882559,RE
-1602882560,1602885631,MQ
-1602885632,1602885887,RE
-1602885888,1602891775,MQ
-1602891776,1602892031,RE
-1602892032,1602894847,MQ
-1602894848,1602895103,RE
-1602895104,1602896383,MQ
-1602896384,1602896639,RE
-1602896640,1602896924,MQ
+1602879488,1602896924,MQ
1602896925,1602896925,RE
-1602896926,1602897407,MQ
-1602897408,1602897663,RE
-1602897664,1602907135,MQ
-1602907136,1602907391,RE
-1602907392,1602912255,MQ
+1602896926,1602912255,MQ
1602912256,1602928639,GB
1602928640,1602930687,HU
1602930688,1602932735,GB
@@ -30520,8 +32820,7 @@
1603081256,1603081263,FI
1603081264,1603081279,GB
1603081280,1603081295,US
-1603081296,1603081407,GB
-1603081408,1603081471,ES
+1603081296,1603081471,ES
1603081472,1603082239,GB
1603082240,1603082495,DE
1603082496,1603082751,GT
@@ -30570,9 +32869,8 @@
1603207168,1603215359,RU
1603215360,1603219455,DE
1603219456,1603223551,CH
-1603223552,1603225087,GB
-1603225088,1603225343,FR
-1603225344,1603227647,GB
+1603223552,1603223807,FR
+1603223808,1603227647,GB
1603227648,1603231743,AT
1603231744,1603235839,IT
1603235840,1603239935,RU
@@ -30582,11 +32880,7 @@
1603252224,1603256319,RU
1603256320,1603260415,SE
1603260416,1603264511,RU
-1603264512,1603266559,AT
-1603266560,1603266815,HU
-1603266816,1603267711,AT
-1603267712,1603267839,SK
-1603267840,1603268607,AT
+1603264512,1603268607,AT
1603268608,1603272703,PL
1603272704,1603796991,GB
1603796992,1603813375,RU
@@ -30666,15 +32960,11 @@
1605109432,1605109439,IT
1605109440,1605109495,GB
1605109496,1605109503,IT
-1605109504,1605109599,GB
-1605109600,1605109607,IT
-1605109608,1605109639,GB
+1605109504,1605109639,GB
1605109640,1605109647,IT
1605109648,1605110111,GB
1605110112,1605110119,IT
-1605110120,1605110167,GB
-1605110168,1605110175,IT
-1605110176,1605110263,GB
+1605110120,1605110263,GB
1605110264,1605110271,IT
1605110272,1605111023,GB
1605111024,1605111031,IT
@@ -30686,13 +32976,9 @@
1605111920,1605111927,IT
1605111928,1605111935,GB
1605111936,1605111943,IT
-1605111944,1605112647,GB
-1605112648,1605112655,IT
-1605112656,1605112847,GB
+1605111944,1605112847,GB
1605112848,1605112855,IT
-1605112856,1605112983,GB
-1605112984,1605112991,IT
-1605112992,1605113087,GB
+1605112856,1605113087,GB
1605113088,1605113095,IT
1605113096,1605113383,GB
1605113384,1605113391,IT
@@ -30700,7 +32986,13 @@
1605113408,1605113415,IT
1605113416,1605113503,GB
1605113504,1605113511,IT
-1605113512,1605114199,GB
+1605113512,1605113567,GB
+1605113568,1605113575,IT
+1605113576,1605113839,GB
+1605113840,1605113847,IT
+1605113848,1605114071,GB
+1605114072,1605114079,IT
+1605114080,1605114199,GB
1605114200,1605114207,IT
1605114208,1605114263,GB
1605114264,1605114271,IT
@@ -30716,14 +33008,14 @@
1605115600,1605115607,IT
1605115608,1605115863,GB
1605115864,1605115871,IT
-1605115872,1605115879,GB
-1605115880,1605115887,IT
-1605115888,1605115903,GB
+1605115872,1605115903,GB
1605115904,1605124095,RU
1605124096,1605125263,GB
1605125264,1605125267,DE
1605125268,1605125269,GB
-1605125270,1605125279,DE
+1605125270,1605125275,DE
+1605125276,1605125276,GB
+1605125277,1605125279,DE
1605125280,1605125903,GB
1605125904,1605125919,DE
1605125920,1605130239,GB
@@ -30778,37 +33070,30 @@
1605734537,1605735423,GB
1605735424,1605742591,RU
1605742592,1605744639,GB
-1605744640,1605750783,RU
-1605750784,1605751807,GB
-1605751808,1605763071,RU
-1605763072,1605765119,KZ
-1605765120,1605795839,RU
+1605744640,1605763071,RU
+1605763072,1605767167,KZ
+1605767168,1605795839,RU
1605795840,1605828607,BE
1605828608,1605828863,GB
-1605828864,1605830399,IL
+1605828864,1605829375,US
+1605829376,1605830399,IL
1605830400,1605830655,US
1605830656,1605840895,RU
1605840896,1605844991,CH
1605844992,1605861375,RU
1605861376,1605894143,TR
-1605894144,1606156287,RO
+1605894144,1606156287,SA
1606156288,1606418431,RU
1606418432,1606636287,SE
1606636288,1606636543,GB
1606636544,1607467007,SE
1607467008,1607532543,DE
-1607532544,1607562495,SE
-1607562496,1607562751,DK
-1607562752,1607569407,SE
+1607532544,1607569407,SE
1607569408,1607572479,DK
1607572480,1607575551,SE
1607575552,1607577599,GB
1607577600,1607581695,SE
-1607581696,1607584511,DK
-1607584512,1607584767,SE
-1607584768,1607585023,DK
-1607585024,1607585279,SE
-1607585280,1607595263,DK
+1607581696,1607595263,DK
1607595264,1607595519,SE
1607595520,1607598079,DK
1607598080,1607601919,IT
@@ -30835,14 +33120,13 @@
1607640807,1607647231,IT
1607647232,1607651327,DE
1607651328,1607655423,FR
-1607655424,1607660287,IT
-1607660288,1607660543,PT
-1607660544,1607663615,IT
+1607655424,1607663615,IT
1607663616,1607729151,NL
1607729152,1607737343,SY
-1607737344,1607761919,EG
-1607761920,1607766015,SY
-1607766016,1607794687,EG
+1607737344,1607745535,EG
+1607745536,1607766015,SY
+1607766016,1607778303,EG
+1607778304,1607794687,SY
1607794688,1607860223,RU
1607860224,1607892991,ES
1607892992,1607893055,GB
@@ -30923,15 +33207,17 @@
1611923456,1612185599,CA
1612185600,1612611327,US
1612611328,1612636159,CA
-1612636160,1613405695,US
-1613405696,1613405951,CA
-1613405952,1613471743,US
+1612636160,1613405183,US
+1613405184,1613405311,CA
+1613405312,1613471743,US
1613471744,1613479935,JM
1613479936,1613480191,CA
1613480192,1613488127,US
1613488128,1613492223,CA
1613492224,1613504511,US
-1613504512,1613529087,CA
+1613504512,1613522431,CA
+1613522432,1613522687,US
+1613522688,1613529087,CA
1613529088,1613545471,US
1613545472,1613565951,CA
1613565952,1613606911,US
@@ -30951,15 +33237,13 @@
1613742080,1613758463,US
1613758464,1614282751,CA
1614282752,1614741503,US
-1614741504,1614743039,CA
-1614743040,1614743295,US
-1614743296,1614757887,CA
+1614741504,1614743295,CA
+1614743296,1614743551,US
+1614743552,1614757887,CA
1614757888,1614774271,US
1614774272,1614786559,CA
1614786560,1618837503,US
-1618837504,1618840319,CA
-1618840320,1618840575,US
-1618840576,1618841599,CA
+1618837504,1618841599,CA
1618841600,1618849791,US
1618849792,1618850303,CA
1618850304,1618850559,US
@@ -30974,9 +33258,9 @@
1632354304,1632362495,CA
1632362496,1632978303,US
1632978304,1632978431,CA
-1632978432,1632979583,US
-1632979584,1632979711,CA
-1632979712,1634414591,US
+1632978432,1632979071,US
+1632979072,1632979199,CA
+1632979200,1634414591,US
1634414592,1634418687,CA
1634418688,1634447359,US
1634447360,1634451455,CA
@@ -30986,9 +33270,11 @@
1634467840,1634729983,CA
1634729984,1652293631,US
1652293632,1652310015,CA
-1652310016,1652447849,US
-1652447850,1652447850,CN
-1652447851,1652481279,US
+1652310016,1652447743,US
+1652447744,1652447999,CN
+1652448000,1652461823,US
+1652461824,1652462079,CN
+1652462080,1652481279,US
1652481280,1652481791,CN
1652481792,1653500927,US
1653500928,1653501439,IL
@@ -31010,9 +33296,7 @@
1654554624,1654558719,CA
1654558720,1654648831,US
1654648832,1654652927,CA
-1654652928,1656731007,US
-1656731008,1656731135,VI
-1656731136,1673527295,US
+1654652928,1673527295,US
1673527296,1673560063,CA
1673560064,1673580287,US
1673580288,1673580543,CA
@@ -31024,7 +33308,35 @@
1680535552,1680539647,CA
1680539648,1680564223,US
1680564224,1680572415,CA
-1680572416,1681915903,US
+1680572416,1680627199,US
+1680627200,1680627263,CA
+1680627264,1680646399,US
+1680646400,1680646655,CA
+1680646656,1680646911,US
+1680646912,1680647423,CA
+1680647424,1680651775,US
+1680651776,1680652031,CA
+1680652032,1680652351,US
+1680652352,1680652543,CA
+1680652544,1680732927,US
+1680732928,1680733183,CA
+1680733184,1680734719,US
+1680734720,1680734975,CA
+1680734976,1680749567,US
+1680749568,1680749695,CA
+1680749696,1680780927,US
+1680780928,1680781055,CA
+1680781056,1680781439,US
+1680781440,1680781567,CA
+1680781568,1680798591,US
+1680798592,1680798719,CA
+1680798720,1680801023,US
+1680801024,1680801151,CA
+1680801152,1680808703,US
+1680808704,1680808831,CA
+1680808832,1680814399,US
+1680814400,1680814463,PR
+1680814464,1681915903,US
1686110208,1694498815,US
1694498816,1694499839,CN
1694499840,1694500863,ID
@@ -31091,8 +33403,8 @@
1701003264,1701011455,MY
1701011456,1701019647,CN
1701019648,1701052415,GU
-1701052416,1701101567,NZ
-1701101568,1701117951,SG
+1701052416,1701093375,NZ
+1701093376,1701117951,SG
1701117952,1701134335,NC
1701134336,1701142527,CN
1701142528,1701143551,HK
@@ -31127,8 +33439,13 @@
1703411712,1703673855,TW
1703673856,1703935999,JP
1703936000,1704984575,CN
-1704984576,1705498623,AU
-1705498624,1705500671,GB
+1704984576,1705488383,AU
+1705488384,1705489407,HK
+1705489408,1705490431,SG
+1705490432,1705491455,GB
+1705491456,1705494527,HK
+1705494528,1705497599,SG
+1705497600,1705500671,GB
1705500672,1707081727,AU
1707081728,1707737087,CN
1707737088,1707802623,KR
@@ -31170,7 +33487,8 @@
1728140288,1728141311,SG
1728141312,1728142335,CN
1728142336,1728143359,NP
-1728143360,1728144383,MP
+1728143360,1728143615,GU
+1728143616,1728144383,MP
1728144384,1728145407,IN
1728145408,1728146431,MY
1728146432,1728147455,AU
@@ -31270,7 +33588,6 @@
1728316416,1728317439,MY
1728317440,1728319487,JP
1728319488,1728320511,AU
-1728321536,1728322559,JP
1728322560,1728323583,MY
1728323584,1728324607,JP
1728324608,1728325631,SG
@@ -31297,7 +33614,11 @@
1728346112,1728346367,AU
1728346368,1728346623,NZ
1728346624,1728347135,AU
-1728347136,1728348159,SG
+1728347136,1728347391,SG
+1728347392,1728347421,AU
+1728347422,1728347422,SG
+1728347423,1728347647,AU
+1728347648,1728348159,SG
1728348160,1728349183,VN
1728349184,1728349951,AU
1728349952,1728350207,NP
@@ -31633,19 +33954,17 @@
1728673792,1728674815,JP
1728674816,1728675839,ID
1728675840,1728676863,KR
-1728676864,1728677887,IN
1728677888,1728678911,BD
+1728678912,1728679935,PG
1728679936,1728680959,ID
1728680960,1728681983,MY
1728681984,1728683007,CN
-1728683008,1728684031,BD
1728684032,1728685055,AU
1728685056,1728686079,JP
1728686080,1728687103,AU
1728687104,1728689407,JP
1728689408,1728689663,BD
1728689664,1728689919,PK
-1728689920,1728690175,SG
1728690176,1728691199,BD
1728691200,1728692223,KH
1728692224,1728693247,JP
@@ -31726,7 +34045,6 @@
1728762880,1728763903,VN
1728763904,1728764927,KR
1728764928,1728765439,SG
-1728765440,1728765695,IN
1728765696,1728765951,ID
1728765952,1728766975,IN
1728766976,1728767999,TH
@@ -31826,7 +34144,7 @@
1728855040,1728856063,HK
1728856064,1728857087,MY
1728857088,1728858111,CN
-1728858112,1728860159,BD
+1728858112,1728859135,BD
1728860160,1728860671,ID
1728860672,1728861183,BD
1728861184,1728861439,ID
@@ -31849,7 +34167,6 @@
1728878592,1728879615,MY
1728879616,1728880127,IN
1728880128,1728880383,JP
-1728880384,1728880639,MY
1728880640,1728881663,KH
1728881664,1728881919,ID
1728881920,1728882175,AU
@@ -31879,7 +34196,6 @@
1728901632,1728902143,ID
1728902144,1728902399,SG
1728902400,1728902655,IN
-1728902656,1728902911,MY
1728902912,1728903167,BD
1728903168,1728905215,KR
1728905472,1728905727,PK
@@ -31910,7 +34226,6 @@
1728935936,1728936959,MY
1728936960,1728937983,CN
1728937984,1728939007,SG
-1728939008,1728939519,MY
1728939520,1728939775,PH
1728939776,1728940031,IN
1728940032,1728942079,JP
@@ -31952,7 +34267,6 @@
1728974848,1728976383,ID
1728976384,1728976895,AU
1728976896,1728977151,AF
-1728977664,1728977919,BD
1728977920,1728978943,MY
1728978944,1728979967,JP
1728979968,1728980991,MN
@@ -31967,12 +34281,11 @@
1728988160,1728988191,NZ
1728988192,1728988199,US
1728988200,1728989183,NZ
-1728989184,1728990207,BD
+1728989184,1728989695,BD
1728990208,1728990335,MY
1728990336,1728990463,ID
1728990464,1728990975,KR
1728990976,1728991231,SG
-1728991232,1728992255,BD
1728992256,1728993279,CN
1728993280,1728994303,PG
1728994304,1728995327,AU
@@ -32013,15 +34326,13 @@
1729029120,1729029375,AU
1729029376,1729029631,ID
1729029632,1729029887,AU
-1729029888,1729030143,PK
1729030144,1729031167,IN
1729031168,1729032191,SG
1729032192,1729033215,CN
1729033216,1729033727,SG
1729033728,1729034239,GB
1729034240,1729035263,KH
-1729035264,1729035519,SG
-1729035520,1729036287,AU
+1729035264,1729036287,AU
1729036288,1729037311,JP
1729037312,1729039359,CN
1729039360,1729040383,JP
@@ -32035,7 +34346,6 @@
1729047552,1729048575,AU
1729048576,1729049599,VN
1729049600,1729050623,IN
-1729050624,1729051647,JP
1729051648,1729053695,IN
1729053696,1729054719,JP
1729054720,1729055231,AU
@@ -32045,7 +34355,6 @@
1729056768,1729057791,IN
1729057792,1729058815,HK
1729058816,1729059839,TH
-1729059840,1729060863,JP
1729060864,1729061887,CN
1729061888,1729062911,SG
1729062912,1729063935,MY
@@ -32084,7 +34393,7 @@
1729090560,1729091583,JP
1729091584,1729092607,HK
1729092608,1729094143,BD
-1729094144,1729094655,IN
+1729094400,1729094655,IN
1729094656,1729095167,AU
1729095680,1729096703,SG
1729096704,1729097215,AU
@@ -32100,11 +34409,8 @@
1729105664,1729105919,VU
1729105920,1729106943,SG
1729106944,1729107967,NZ
-1729107968,1729108479,IN
-1729108480,1729108616,KR
-1729108617,1729108617,HK
-1729108618,1729108735,KR
-1729108736,1729108991,HK
+1729108480,1729108607,KR
+1729108608,1729108991,HK
1729108992,1729111039,IN
1729111040,1729112063,JP
1729112064,1729113087,MY
@@ -32200,7 +34506,6 @@
1729190912,1729191935,HK
1729191936,1729195007,IN
1729195008,1729195519,MN
-1729195520,1729196031,BD
1729196032,1729197055,GU
1729197056,1729198079,HK
1729198080,1729199103,CN
@@ -32259,7 +34564,7 @@
1729248256,1729249279,JP
1729249280,1729252351,IN
1729254400,1729255423,AU
-1729255424,1729256447,MY
+1729255424,1729257471,MY
1729257472,1729258495,ID
1729258496,1729259519,JP
1729259520,1729260543,IN
@@ -32375,7 +34680,7 @@
1729376768,1729377023,SG
1729377024,1729377279,ID
1729377280,1729378303,BD
-1729378304,1729378815,IN
+1729378560,1729378815,IN
1729379072,1729379327,SG
1729379328,1729380351,HK
1729380352,1729381375,IN
@@ -32388,14 +34693,13 @@
1729387008,1729387519,ID
1729387520,1729388543,SG
1729388544,1729389567,HK
-1729389568,1729389823,IN
1729390592,1729391103,IN
1729391104,1729391615,ID
1729391616,1729392639,JP
1729392640,1729393663,CN
1729393664,1729394687,KR
1729394688,1729395711,TH
-1729395712,1729395967,NR
+1729395712,1729395967,AU
1729395968,1729396735,IN
1729396736,1729397759,CN
1729397760,1729398783,PK
@@ -32745,7 +35049,6 @@
1729774592,1729775615,AU
1729775616,1729776127,IN
1729776128,1729776639,MY
-1729776640,1729777663,IN
1729777664,1729779711,PK
1729779712,1729780735,AU
1729780736,1729781759,HK
@@ -32754,7 +35057,6 @@
1729783552,1729783807,NZ
1729783808,1729785855,IN
1729785856,1729786879,BD
-1729786880,1729787903,JP
1729787904,1729789951,HK
1729789952,1729790975,ID
1729792000,1729793023,BD
@@ -32803,13 +35105,11 @@
1729832448,1729832959,AU
1729832960,1729833983,JP
1729833984,1729835007,SG
-1729835008,1729836031,IN
1729836032,1729837055,NZ
1729837056,1729838079,CN
1729838080,1729840127,VN
1729840128,1729841151,JP
1729841152,1729842175,MY
-1729842176,1729843199,HK
1729843200,1729844223,JP
1729844224,1729845247,IN
1729845248,1729846271,NZ
@@ -32868,7 +35168,6 @@
1729884160,1729885183,CN
1729885184,1729886207,JP
1729886208,1729887743,ID
-1729887744,1729887999,VU
1729888000,1729888255,IN
1729888256,1729889279,KH
1729889280,1729891327,CN
@@ -33059,9 +35358,7 @@
1730082816,1730083839,PW
1730083840,1730084863,JP
1730084864,1730085887,CN
-1730085888,1730086143,AU
-1730086144,1730086399,ID
-1730086400,1730086911,AU
+1730085888,1730086911,AU
1730086912,1730087935,HK
1730087936,1730088959,JP
1730088960,1730091007,HK
@@ -33118,6 +35415,328 @@
1730147328,1730148351,JP
1730148352,1730149375,ID
1730149376,1730150399,JP
+1730150400,1730360319,CN
+1730412544,1730414591,AU
+1730414592,1730415615,ID
+1730415616,1730416127,AU
+1730416128,1730416639,ID
+1730416640,1730417663,PH
+1730417664,1730418687,CN
+1730418688,1730419711,BD
+1730419712,1730420735,CN
+1730420736,1730421759,ID
+1730421760,1730422783,CN
+1730422784,1730423807,ID
+1730423808,1730425855,IN
+1730425856,1730426879,HK
+1730426880,1730429951,CN
+1730429952,1730430207,ID
+1730430208,1730430463,AU
+1730430464,1730430719,HK
+1730430720,1730430975,IN
+1730430976,1730431999,CN
+1730432000,1730435071,IN
+1730435072,1730436095,HK
+1730436096,1730437119,SG
+1730437120,1730438143,CN
+1730438144,1730439167,BD
+1730439168,1730440191,IN
+1730440192,1730442239,HK
+1730442240,1730443263,TW
+1730443264,1730445311,IN
+1730445312,1730445567,NZ
+1730445568,1730446335,AU
+1730446336,1730448383,CN
+1730448384,1730449407,JP
+1730449408,1730450431,VU
+1730450432,1730450687,AU
+1730450688,1730450943,IN
+1730450944,1730451455,PH
+1730451456,1730452479,AU
+1730452480,1730453503,ID
+1730453504,1730476031,CN
+1730476032,1730476543,AU
+1730476544,1730476799,NZ
+1730476800,1730477055,IN
+1730477056,1730478079,AU
+1730478080,1730479103,CN
+1730479104,1730480127,HK
+1730480128,1730480639,AU
+1730480640,1730481151,JP
+1730481152,1730483199,CN
+1730483200,1730483711,IN
+1730483712,1730484223,AU
+1730484224,1730485247,CN
+1730485248,1730487295,VN
+1730487296,1730488319,TW
+1730488320,1730489343,HK
+1730489344,1730490367,CN
+1730490368,1730491391,PH
+1730491392,1730493439,CN
+1730493440,1730494463,HK
+1730494464,1730495487,JP
+1730495488,1730496511,AU
+1730496512,1730497535,CN
+1730497536,1730499583,IN
+1730499584,1730500607,HK
+1730500608,1730501631,IN
+1730501632,1730502655,JP
+1730502656,1730503167,MY
+1730503168,1730503423,ID
+1730503424,1730503679,AU
+1730503680,1730505727,CN
+1730505728,1730508799,JP
+1730508800,1730509823,AU
+1730509824,1730510847,CN
+1730510848,1730511871,AU
+1730511872,1730512895,JP
+1730512896,1730521087,CN
+1730521088,1730522111,ID
+1730522112,1730524159,CN
+1730524160,1730525183,IN
+1730525184,1730526207,HK
+1730526208,1730528255,JP
+1730528256,1730529279,SG
+1730529280,1730529791,IN
+1730529792,1730530303,AU
+1730530304,1730531327,NZ
+1730531328,1730535423,CN
+1730535424,1730536447,ID
+1730536448,1730536703,AU
+1730536704,1730537471,ID
+1730537472,1730538495,HK
+1730538496,1730540543,JP
+1730540544,1730541567,ID
+1730541568,1730544639,CN
+1730544640,1730545919,IN
+1730545920,1730546687,AU
+1730546688,1730547711,IN
+1730547712,1730548735,BD
+1730548736,1730549759,HK
+1730549760,1730550783,KR
+1730550784,1730551807,HK
+1730551808,1730552831,CN
+1730552832,1730553855,IN
+1730553856,1730555903,CN
+1730555904,1730556415,IN
+1730556416,1730556927,HK
+1730556928,1730557951,JP
+1730557952,1730558975,CN
+1730558976,1730559999,MY
+1730560000,1730561023,HK
+1730561024,1730562047,IN
+1730562048,1730563071,SG
+1730563072,1730564095,CN
+1730564096,1730565119,HK
+1730565120,1730566143,CN
+1730566144,1730566655,IN
+1730566656,1730567167,HK
+1730567168,1730569215,CN
+1730569216,1730570239,ID
+1730570240,1730571263,HK
+1730571264,1730572287,IN
+1730572288,1730573311,KH
+1730573312,1730574335,CN
+1730574336,1730575359,AU
+1730575360,1730577407,IN
+1730577408,1730578431,CN
+1730578432,1730579455,VN
+1730579456,1730580479,CN
+1730580480,1730580735,HK
+1730580736,1730580991,AU
+1730580992,1730581503,TW
+1730581504,1730582015,AU
+1730582016,1730582271,IN
+1730582272,1730582527,PH
+1730582528,1730585599,HK
+1730585600,1730586623,NZ
+1730586624,1730587647,HK
+1730587648,1730588671,PH
+1730588672,1730589695,IN
+1730589696,1730590719,JP
+1730590720,1730591743,SG
+1730591744,1730591999,PH
+1730592000,1730592767,IN
+1730592768,1730593791,MY
+1730593792,1730594815,NP
+1730594816,1730596863,IN
+1730596864,1730597887,JP
+1730597888,1730598911,PH
+1730598912,1730599423,AU
+1730599424,1730599935,VU
+1730599936,1730604031,CN
+1730605056,1730607103,IN
+1730607104,1730608127,JP
+1730608128,1730609151,CN
+1730609152,1730610687,IN
+1730610688,1730610943,MY
+1730610944,1730611199,SG
+1730611200,1730612223,IN
+1730612224,1730613247,ID
+1730613248,1730614271,CN
+1730614272,1730615295,NZ
+1730615296,1730616319,HK
+1730616320,1730617343,IN
+1730617344,1730618367,TW
+1730618368,1730619391,KR
+1730619392,1730619903,HK
+1730619904,1730620415,SG
+1730620416,1730621439,NZ
+1730621440,1730622719,ID
+1730622720,1730622975,AU
+1730622976,1730623231,IN
+1730623232,1730623487,AU
+1730623488,1730624511,HK
+1730624512,1730625535,AU
+1730625536,1730626559,CN
+1730626560,1730629631,HK
+1730629632,1730630655,PK
+1730630656,1730631679,AU
+1730631680,1730632703,CN
+1730632704,1730634751,VN
+1730634752,1730637823,CN
+1730637824,1730638079,AU
+1730638080,1730638335,JP
+1730638336,1730638847,NZ
+1730638848,1730639871,IN
+1730639872,1730640383,AU
+1730640384,1730640895,MY
+1730640896,1730641919,JP
+1730641920,1730643967,IN
+1730643968,1730644735,AU
+1730644736,1730644991,IN
+1730644992,1730646015,MY
+1730646016,1730647039,CN
+1730647040,1730649087,HK
+1730649088,1730650111,IN
+1730650112,1730658303,CN
+1730658304,1730660351,JP
+1730660352,1730669567,CN
+1730669568,1730670079,IN
+1730670080,1730670591,AU
+1730670592,1730672639,IN
+1730672640,1730673407,AU
+1730673408,1730673663,IN
+1730673664,1730674687,FM
+1730674688,1730675711,AU
+1730675712,1730677759,HK
+1730677760,1730686975,CN
+1730686976,1730687999,IN
+1730688000,1730688511,AU
+1730688512,1730689023,ID
+1730689024,1730692095,IN
+1730692096,1730692607,ID
+1730692608,1730693119,AU
+1730693120,1730694143,IN
+1730694144,1730695167,BD
+1730695168,1730695423,IN
+1730695424,1730695679,NZ
+1730695680,1730696191,BD
+1730696192,1730697215,HK
+1730697216,1730698239,CN
+1730698240,1730699263,ID
+1730699264,1730700287,JP
+1730700288,1730701311,CN
+1730701312,1730702335,JP
+1730702336,1730702591,ID
+1730702592,1730702847,AU
+1730702848,1730703359,HK
+1730703360,1730704383,CN
+1730704384,1730705407,TH
+1730705408,1730706431,ID
+1730706432,1730708479,JP
+1730708480,1730713599,TH
+1730713600,1730714623,HK
+1730714624,1730715647,JP
+1730715648,1730716671,HK
+1730716672,1730717183,PH
+1730717184,1730717695,AU
+1730717696,1730718719,IN
+1730718720,1730720767,HK
+1730720768,1730723839,TH
+1730723840,1730724863,CN
+1730724864,1730727935,IN
+1730727936,1730728959,HK
+1730728960,1730729983,CN
+1730729984,1730731007,JP
+1730731008,1730732031,CN
+1730732032,1730732287,AU
+1730732288,1730732543,HK
+1730732544,1730733055,BD
+1730733056,1730741247,CN
+1730741248,1730742271,HK
+1730742272,1730742783,AF
+1730742784,1730743295,IN
+1730743296,1730744319,SG
+1730744320,1730745343,CN
+1730745344,1730752511,IN
+1730752512,1730753535,HK
+1730753536,1730754559,CN
+1730754560,1730755071,IN
+1730755072,1730755583,TH
+1730755584,1730756607,JP
+1730756608,1730757631,HK
+1730757632,1730758655,SG
+1730758656,1730759679,JP
+1730759680,1730760703,SG
+1730760704,1730761727,HK
+1730761728,1730762751,TH
+1730762752,1730766847,IN
+1730766848,1730767871,HK
+1730767872,1730768127,AU
+1730768128,1730768639,ID
+1730768640,1730768895,BD
+1730768896,1730769919,JP
+1730769920,1730770943,CN
+1730770944,1730771967,ID
+1730771968,1730772991,HK
+1730772992,1730774015,SG
+1730774016,1730775039,HK
+1730775040,1730776063,JP
+1730776064,1730777087,CN
+1730777088,1730778111,IN
+1730778112,1730780159,CN
+1730780160,1730781183,AU
+1730781184,1730783231,CN
+1730783232,1730783487,IN
+1730783488,1730783743,ID
+1730783744,1730783999,IN
+1730784000,1730784255,ID
+1730784256,1730785279,HK
+1730785280,1730786303,AU
+1730786304,1730788351,HK
+1730788352,1730790399,ID
+1730790400,1730791423,IN
+1730791424,1730794495,ID
+1730794496,1730795007,BD
+1730795008,1730795519,IN
+1730795520,1730796543,AU
+1730796544,1730800639,CN
+1730800640,1730801663,IN
+1730801664,1730802687,JP
+1730802688,1730803199,BD
+1730803200,1730803711,ID
+1730803712,1730804735,HK
+1730804736,1730805759,JP
+1730805760,1730806783,AF
+1730806784,1730807807,JP
+1730807808,1730808831,CN
+1730808832,1730809855,HK
+1730809856,1730810623,IN
+1730810624,1730811903,AU
+1730811904,1730814975,CN
+1730814976,1730815999,HK
+1730816000,1730817023,ID
+1730817024,1730818047,JP
+1730818048,1730819071,AU
+1730819072,1730820095,JP
+1730820096,1730821119,VN
+1730821120,1730822143,HK
+1730822144,1730824191,CN
+1730824192,1730825215,IN
+1730825216,1730826239,CN
+1730826240,1730827263,JP
+1730827264,1730829311,IN
1742733312,1742734335,HK
1742734336,1742735359,IN
1742735360,1742736383,JP
@@ -33404,7 +36023,7 @@
1743026176,1743027199,BD
1743027200,1743028223,AU
1743028224,1743029247,CN
-1743029248,1743030271,AU
+1743029248,1743029503,AU
1743030272,1743031295,HK
1743031296,1743035391,IN
1743035392,1743036415,PK
@@ -33544,7 +36163,7 @@
1743163392,1743166463,IN
1743166464,1743167487,AU
1743167488,1743168511,HK
-1743168512,1743169535,IN
+1743169024,1743169535,IN
1743169536,1743170559,JP
1743170560,1743171583,KR
1743171584,1743172607,AU
@@ -33871,7 +36490,7 @@
1743506944,1743507455,IN
1743507456,1743509503,VN
1743509504,1743510527,HK
-1743510528,1743545343,CN
+1743510528,1743552511,CN
1743585280,1743589375,CN
1743589376,1743590399,AU
1743590400,1743591423,KR
@@ -33931,7 +36550,9 @@
1743681536,1743682559,AU
1743682560,1743683583,MY
1743683584,1743683839,JP
-1743683840,1743684607,HK
+1743683840,1743684095,AU
+1743684096,1743684351,HK
+1743684352,1743684607,AU
1743684608,1743685631,CN
1743685632,1743686655,ID
1743686656,1743688703,CN
@@ -33982,6 +36603,38 @@
1743740928,1743741951,CN
1743741952,1743742975,HK
1743742976,1743743487,NZ
+1743743488,1743743999,AU
+1743744000,1743745023,JP
+1743745024,1743746047,KR
+1743746048,1743748095,VN
+1743748096,1743748607,IN
+1743748608,1743748863,HK
+1743748864,1743749119,MY
+1743749120,1743751167,AU
+1743751168,1743755263,IN
+1743755264,1743757311,CN
+1743757312,1743758335,TO
+1743758336,1743758591,HK
+1743758592,1743758847,ID
+1743758848,1743759359,AU
+1743759360,1743761407,IN
+1743761408,1743764479,CN
+1743764480,1743765503,ID
+1743765504,1743767551,CN
+1743767552,1743768575,PH
+1743768576,1743770623,CN
+1743770624,1743770879,AU
+1743770880,1743771135,PH
+1743771136,1743771647,NZ
+1743771648,1743772671,JP
+1743772672,1743773695,SG
+1743773696,1743774719,CN
+1743774720,1743775743,NZ
+1743775744,1743776767,IN
+1743776768,1743778815,KR
+1743778816,1743779839,CN
+1743779840,1743780863,MY
+1743780864,1743781887,BD
1743781888,1743783935,JP
1743783936,1743784959,IN
1743784960,1743785983,JP
@@ -34166,7 +36819,8 @@
1743983616,1743984639,KR
1743984640,1743985663,CN
1743985664,1743994879,IN
-1743994880,1743995903,AU
+1743994880,1743995135,PG
+1743995136,1743995903,AU
1743995904,1743997951,IN
1743997952,1743999999,BD
1744000000,1744001023,AU
@@ -34231,15 +36885,15 @@
1744056576,1744056831,MY
1744056832,1744057087,NZ
1744057088,1744057343,ID
-1744057344,1744059391,HK
-1744059392,1744066559,CN
+1744057344,1744058879,HK
+1744058880,1744066559,CN
1744066560,1744067583,HK
1744067584,1744068607,JP
1744068608,1744069631,ID
1744069632,1744070655,SG
1744070656,1744071679,JP
1744071680,1744072703,KR
-1744072704,1744074751,JP
+1744072704,1744073727,JP
1744074752,1744076799,IN
1744076800,1744077823,AU
1744077824,1744078847,PK
@@ -34268,6 +36922,7 @@
1744101376,1744102399,HK
1744102400,1744103423,FJ
1744103424,1744104447,CN
+1744104448,1744105471,AU
1744105472,1744106751,IN
1744106752,1744107007,ID
1744107008,1744107519,SG
@@ -34354,7 +37009,7 @@
1744192512,1744194559,JP
1744194560,1744194815,ID
1744194816,1744195071,HK
-1744195072,1744195327,AU
+1744195072,1744195327,SG
1744195328,1744195583,HK
1744195584,1744196607,JP
1744196608,1744197631,IN
@@ -34514,7 +37169,7 @@
1744349184,1744350207,CN
1744350208,1744351231,IN
1744351232,1744352255,NZ
-1744352256,1744354303,HK
+1744353280,1744354303,HK
1744354304,1744355327,AU
1744355328,1744356351,CN
1744356352,1744357375,JP
@@ -34535,7 +37190,6 @@
1744370688,1744371711,HK
1744371712,1744372735,BD
1744372736,1744373759,IN
-1744373760,1744374783,JP
1744374784,1744375807,CN
1744375808,1744376831,IN
1744376832,1744377855,VN
@@ -34543,7 +37197,9 @@
1744378880,1744379903,KR
1744379904,1744380927,HK
1744380928,1744383999,IN
-1744384000,1744384039,AU
+1744384000,1744384000,AU
+1744384001,1744384031,GU
+1744384032,1744384039,AU
1744384040,1744384047,GU
1744384048,1744385023,AU
1744385024,1744386047,CN
@@ -34560,7 +37216,7 @@
1744395264,1744396287,MY
1744396288,1744397311,IN
1744397312,1744398335,VN
-1744398336,1744400383,HK
+1744399360,1744400383,HK
1744400384,1744402431,JP
1744402432,1744403455,IN
1744403456,1744404479,AU
@@ -34582,7 +37238,6 @@
1744425472,1744425727,ID
1744425728,1744425983,IN
1744425984,1744427007,JP
-1744427008,1744428031,PG
1744428032,1744429567,AU
1744429568,1744429823,IN
1744429824,1744430079,ID
@@ -34591,7 +37246,7 @@
1744434176,1744435199,CN
1744435200,1744436223,IN
1744436224,1744437247,CN
-1744437248,1744439295,JP
+1744438272,1744439295,JP
1744439296,1744439807,AU
1744439808,1744440319,IN
1744440320,1744441343,HK
@@ -34600,7 +37255,6 @@
1744443392,1744444415,VN
1744444416,1744445439,IN
1744445440,1744446463,CN
-1744446464,1744447487,JP
1744447488,1744447743,IN
1744447744,1744447999,HK
1744448000,1744448511,BD
@@ -34700,7 +37354,6 @@
1744547840,1744548863,AF
1744548864,1744549887,ID
1744549888,1744551935,IN
-1744551936,1744552959,JP
1744552960,1744553471,SG
1744553472,1744553983,HK
1744553984,1744555007,MY
@@ -34877,7 +37530,8 @@
1744733184,1744734207,NZ
1744734208,1744736255,AU
1744736256,1744737279,JP
-1744737280,1744738303,CN
+1744737280,1744738047,HK
+1744738048,1744738303,CN
1744738304,1744739327,SG
1744739328,1744740351,NZ
1744740352,1744741375,IN
@@ -34973,7 +37627,11 @@
1747219456,1747220479,CA
1747220480,1747227647,US
1747227648,1747228671,CA
-1747228672,1747256319,US
+1747228672,1747235839,US
+1747235840,1747236863,CA
+1747236864,1747255807,US
+1747255808,1747256063,CN
+1747256064,1747256319,US
1747256320,1747256575,IE
1747256576,1747256831,AU
1747256832,1747257087,AE
@@ -34989,6 +37647,7 @@
1747276800,1747283967,US
1747283968,1747284991,CA
1747284992,1747293183,US
+1747293184,1747294207,CA
1747294208,1747304447,US
1747304448,1747308543,CA
1747308544,1747316735,US
@@ -35030,7 +37689,11 @@
1754207488,1754207743,KI
1754207744,1754207999,MM
1754208000,1754208255,VU
-1754208256,1754208511,NA
+1754208256,1754208326,NA
+1754208327,1754208327,AO
+1754208328,1754208353,NA
+1754208354,1754208354,AO
+1754208355,1754208511,NA
1754208512,1754208767,DJ
1754208768,1754209023,BF
1754209024,1754209279,BW
@@ -35067,18 +37730,19 @@
1754258432,1754258687,MG
1754258688,1754258943,US
1754258944,1754259199,TN
-1754259200,1754792959,US
+1754259200,1754333183,US
+1754333184,1754337279,CA
+1754337280,1754792959,US
1754792960,1754793983,CA
1754793984,1754799103,US
1754799104,1754800127,CA
-1754800128,1754804223,US
-1754805248,1754822655,US
+1754800128,1754822655,US
1754822656,1754823679,CA
1754823680,1754830847,US
1754830848,1754831871,CA
1754831872,1754832895,US
-1754832896,1754836991,CA
-1754836992,1754845183,US
+1754832896,1754835967,CA
+1754835968,1754845183,US
1754845184,1754846207,CA
1754846208,1754849279,US
1754849280,1754850303,CA
@@ -35088,9 +37752,18 @@
1754863616,1754864639,CA
1754864640,1754869759,US
1754869760,1754870783,CA
+1754870784,1754871807,US
+1754871808,1754872831,CA
1754872832,1754890239,US
1754890240,1754892287,BB
-1754923008,1755062271,US
+1754892288,1754894335,CA
+1754894336,1754899455,US
+1754899456,1754900479,CA
+1754900480,1754911743,US
+1754911744,1754912767,CA
+1754912768,1754920959,US
+1754920960,1754921983,DM
+1754921984,1755062271,US
1755062272,1755066367,CA
1755066368,1755070463,US
1755070464,1755074559,CA
@@ -35126,14 +37799,327 @@
1755111168,1755111423,SD
1755111424,1755119615,US
1755119616,1755283455,CA
-1755283456,1755324415,US
-1755324416,1755328511,CA
-1755340800,1755348991,US
-1755357184,1755365375,US
-1755381760,1755512831,US
-1755512832,1755545599,CA
-1755578368,1755709439,US
-1762656256,1763704831,MU
+1755283456,1755365375,US
+1755365376,1755373567,CA
+1755373568,1755512831,US
+1755512832,1755578367,CA
+1755578368,1755717631,US
+1755717632,1755721727,BS
+1755721728,1755734271,US
+1755734272,1755734527,LB
+1755734528,1755734783,BS
+1755734784,1755735295,US
+1755735296,1755735551,KE
+1755735552,1755735807,MA
+1755735808,1755736063,CN
+1755736064,1755736319,US
+1755736320,1755736575,MX
+1755736576,1755736831,AW
+1755736832,1755737087,US
+1755737088,1755737343,GH
+1755737344,1755737599,IN
+1755737600,1755737855,MO
+1755737856,1755738111,MT
+1755738112,1755738367,QA
+1755738368,1755738623,YE
+1755738624,1755738879,GR
+1755738880,1755739135,US
+1755739136,1755739391,BH
+1755739392,1755739647,CO
+1755739648,1755739903,OM
+1755739904,1755740159,BN
+1755740160,1755740415,SC
+1755740416,1755740671,SY
+1755740672,1755741183,US
+1755741184,1755741439,PA
+1755741440,1755741695,BZ
+1755741696,1755741951,IM
+1755741952,1755742207,NG
+1755742208,1755799551,US
+1755799552,1755807743,CA
+1755807744,1755824127,US
+1755824128,1755824383,TV
+1755824384,1755824639,SY
+1755824640,1755824895,ZW
+1755824896,1755825151,TG
+1755825152,1755825407,GM
+1755825408,1755825663,AO
+1755825664,1755825919,LB
+1755825920,1755826175,MW
+1755826176,1755826431,CV
+1755826432,1755826687,TZ
+1755826688,1755826943,KM
+1755826944,1755827199,MN
+1755827200,1755827455,CG
+1755827456,1755827711,FM
+1755827712,1755827967,SB
+1755827968,1755828223,BI
+1755828224,1755828479,CD
+1755828480,1755828735,NE
+1755828736,1755828991,NP
+1755828992,1755829247,PK
+1755829248,1755829503,KZ
+1755829504,1755829759,OM
+1755829760,1755830015,CN
+1755830016,1755830271,ST
+1755830272,1755830527,LR
+1755830528,1755830783,JP
+1755830784,1755831039,SD
+1755831040,1755831295,MU
+1755831296,1755831551,GQ
+1755831552,1755831807,MK
+1755831808,1755832063,TL
+1755832064,1755832319,ML
+1755832320,1755832575,DZ
+1755832576,1755832831,MM
+1755832832,1755833087,NR
+1755833088,1755833343,SA
+1755833344,1755833599,IN
+1755833600,1755833855,BY
+1755833856,1755834111,SZ
+1755834112,1755834367,CN
+1755834368,1755834623,TN
+1755834624,1755834879,US
+1755834880,1755835135,PG
+1755835136,1755835391,US
+1755835392,1755835647,BA
+1755835648,1755835903,LS
+1755835904,1755836159,GN
+1755836160,1755836415,FJ
+1755836416,1755836671,MH
+1755836672,1755836927,SL
+1755836928,1755837183,LK
+1755837184,1755837439,MG
+1755837440,1755837695,ME
+1755837696,1755837951,MR
+1755837952,1755838207,SO
+1755838208,1755838463,UA
+1755838464,1755838719,LY
+1755838720,1755838975,TO
+1755838976,1755839231,TD
+1755839232,1755839487,MZ
+1755839488,1755839743,ZM
+1755839744,1755839999,ER
+1755840000,1755840255,AL
+1755840256,1755840511,RU
+1755840512,1756049407,US
+1756049408,1756053503,CA
+1756053504,1756086271,US
+1756086272,1756090367,CA
+1756090368,1757417471,US
+1757417472,1757419519,CA
+1757419520,1757424639,US
+1757424640,1757425663,CA
+1757425664,1757426687,US
+1757426688,1757427711,CA
+1757427712,1757443071,US
+1757443072,1757446143,CA
+1757446144,1757447167,US
+1757447168,1757448191,CA
+1757448192,1757450239,US
+1757450240,1757451263,CA
+1757451264,1757452287,US
+1757452288,1757453311,CA
+1757453312,1757457407,US
+1757457408,1757458431,CA
+1757458432,1757460479,US
+1757460480,1757462527,VI
+1757462528,1757472767,US
+1757472768,1757473791,CA
+1757473792,1757487103,US
+1757487104,1757489151,CA
+1757489152,1757491199,US
+1757491200,1757497343,CA
+1757497344,1757501439,US
+1757502464,1757503487,CA
+1757503488,1757505535,US
+1757505536,1757506559,CA
+1757506560,1757512703,US
+1757512704,1757513727,CA
+1757513728,1757522943,US
+1757522944,1757523967,CA
+1757523968,1757529087,US
+1757529088,1757530111,AI
+1757530112,1757532159,US
+1757532160,1757534207,CA
+1757534208,1757552639,US
+1757552640,1757560831,CA
+1757560832,1757642751,US
+1757642752,1757675519,CA
+1757675520,1757937663,US
+1757937664,1757941759,CA
+1757941760,1757958143,US
+1757958144,1757962239,CA
+1757962240,1757966335,BB
+1757966336,1758035967,US
+1758068736,1758265343,US
+1758265344,1758330879,CA
+1758330880,1758412799,US
+1758412800,1758413055,BG
+1758413056,1758413311,SE
+1758413312,1758413567,PS
+1758413568,1758414335,US
+1758414336,1758414591,LV
+1758414592,1758414847,IN
+1758414848,1758415103,GD
+1758415104,1758415359,GB
+1758415360,1758415615,FR
+1758415616,1758415871,CY
+1758415872,1758416127,IT
+1758416128,1758416383,US
+1758416384,1758416639,CF
+1758416640,1758416895,IL
+1758416896,1758417151,VC
+1758417152,1758417407,ID
+1758417408,1758417663,CL
+1758417664,1758417919,HK
+1758417920,1758418175,DE
+1758418176,1758418431,RU
+1758418432,1758418687,CN
+1758418688,1758418943,BL
+1758418944,1758419199,US
+1758419200,1758419455,CR
+1758419456,1758419711,EG
+1758419712,1758419967,VE
+1758419968,1758420223,US
+1758420224,1758420479,HU
+1758420480,1758420735,CH
+1758420736,1758420991,MM
+1758420992,1759126527,US
+1759127552,1759128575,US
+1759128576,1759129599,CA
+1759129600,1759131647,US
+1759131648,1759133695,CA
+1759133696,1759138815,US
+1759138816,1759139839,CA
+1759139840,1759140863,US
+1759140864,1759141887,CA
+1759141888,1759149055,US
+1759149056,1759150079,CA
+1759150080,1759160319,US
+1759160320,1759162367,BM
+1759162368,1759163391,BB
+1759163392,1759166463,US
+1759166464,1759167487,CA
+1759167488,1759168511,US
+1759170560,1759172607,US
+1759172608,1759173631,VC
+1759173632,1759178751,US
+1759178752,1759179775,PR
+1759179776,1759184895,US
+1759184896,1759186943,CA
+1759186944,1759188991,US
+1759188992,1759190015,VC
+1759190016,1759191039,PR
+1759191040,1759201279,US
+1759201280,1759202303,VG
+1759203328,1759208447,US
+1759208448,1759209471,CA
+1759209472,1759213567,US
+1759215616,1759217663,CA
+1759217664,1759222783,US
+1759222784,1759223807,CA
+1759223808,1759230975,US
+1759230976,1759233023,CA
+1759233024,1759234047,US
+1759234048,1759236095,CA
+1759236096,1759239167,US
+1759239168,1759240191,CA
+1759240192,1759244287,US
+1759248384,1759313919,US
+1759313920,1759346687,CA
+1759346688,1759395839,US
+1759399936,1759408127,US
+1759408128,1759412223,CA
+1759412224,1759412991,US
+1759412992,1759413247,AU
+1759413248,1759414271,US
+1759414272,1759414527,SE
+1759414528,1759415295,US
+1759415296,1759415551,SG
+1759415552,1759416575,US
+1759416576,1759416831,HK
+1759416832,1759417599,US
+1759417600,1759417855,FR
+1759417856,1759419391,US
+1759419392,1759419647,MX
+1759419648,1759510527,US
+1759510528,1759510783,VE
+1759510784,1759511039,AG
+1759511040,1759511295,GT
+1759511296,1759511551,VC
+1759511552,1759511807,PY
+1759511808,1759512063,JM
+1759512064,1759512319,MS
+1759512320,1759512575,GD
+1759512576,1759512831,LC
+1759512832,1759513087,HT
+1759513088,1759513343,EC
+1759513344,1759513599,KN
+1759513600,1759513855,SR
+1759513856,1759514111,NI
+1759514112,1759514367,BB
+1759514368,1759514623,PE
+1759514624,1759514879,KY
+1759514880,1759515135,TT
+1759515136,1759515391,GY
+1759515392,1759515647,BO
+1759515648,1759515903,CU
+1759515904,1759516159,DM
+1759516160,1759516415,SH
+1759516416,1759516671,BM
+1759516672,1759516927,FJ
+1759516928,1759517183,HN
+1759517184,1759517439,GL
+1759517440,1759517695,MQ
+1759517696,1759517951,GF
+1759517952,1759518207,MF
+1759518208,1759518463,BZ
+1759518464,1759518719,GP
+1759518720,1759518975,AW
+1759518976,1759519231,AI
+1759519232,1759519487,BL
+1759519488,1759519743,CO
+1759519744,1759519999,TC
+1759520000,1759520255,VG
+1759520256,1759520511,AX
+1759520512,1759520767,UM
+1759520768,1759521023,SV
+1759521024,1759521279,TK
+1759521280,1759521535,SJ
+1759521536,1759521791,PM
+1759521792,1759522047,GS
+1759522048,1759522303,DO
+1759522304,1759522559,RE
+1759522560,1759522815,PN
+1759522816,1759523071,MP
+1759523072,1759523327,NF
+1759523328,1759523583,US
+1759523584,1759523839,NU
+1759523840,1759524095,NC
+1759524096,1759524351,NL
+1759524352,1759524607,CX
+1759524608,1759524863,BS
+1759524864,1759525119,PF
+1759525120,1759525375,CK
+1759525376,1759525631,TF
+1759525632,1759525887,FK
+1759525888,1759526143,GG
+1759526144,1759526399,CC
+1759526400,1759526655,JE
+1759526656,1759526911,FO
+1759526912,1759535103,US
+1759535104,1759543295,CA
+1759543296,1759544319,US
+1759544320,1759559679,CA
+1759559680,1759608831,US
+1759641600,1760100351,US
+1760165888,1760231423,CA
+1760231424,1760362495,US
+1761607680,1762656255,ZA
+1762656256,1763000335,MU
+1763000336,1763000339,UG
+1763000340,1763704831,MU
1763704832,1764753407,EG
1764753408,1765801983,KE
1765801984,1766850559,MA
@@ -35194,8 +38180,8 @@
1793064960,1794113535,CN
1794113536,1795162111,KR
1795162112,1795387903,US
-1795387904,1795388159,CA
-1795388160,1795555839,US
+1795387904,1795388287,CA
+1795388288,1795555839,US
1795555840,1795555855,CA
1795555856,1795556351,US
1795556352,1795556607,CA
@@ -35229,7 +38215,27 @@
1795593728,1795595775,NL
1795595776,1795596287,US
1795596288,1795603455,NL
-1795603456,1805049855,US
+1795603456,1796253695,US
+1796253696,1796253951,CA
+1796253952,1796257919,US
+1796257920,1796258047,PR
+1796258048,1796262911,US
+1796262912,1796263167,PR
+1796263168,1796325375,US
+1796325376,1796325631,PR
+1796325632,1796402431,US
+1796402432,1796402559,CA
+1796402560,1796403199,US
+1796403200,1796403327,CA
+1796403328,1796404095,US
+1796404096,1796404223,CA
+1796404224,1796404735,US
+1796404736,1796404863,CA
+1796404864,1796406655,US
+1796406656,1796406783,CA
+1796406784,1805000058,US
+1805000059,1805000059,CA
+1805000060,1805049855,US
1805049856,1805058047,CA
1805058048,1805144063,US
1805144064,1805148159,CA
@@ -35243,7 +38249,20 @@
1805190400,1805190655,ES
1805190656,1805210623,US
1805210624,1805210879,EG
-1805210880,1805582335,US
+1805210880,1805251583,US
+1805251584,1805251839,DE
+1805251840,1805252095,GB
+1805252096,1805252351,DE
+1805252352,1805252607,GB
+1805252608,1805252863,DE
+1805252864,1805253119,GB
+1805253120,1805253375,DE
+1805253376,1805253631,GB
+1805253632,1805253887,DE
+1805253888,1805254143,GB
+1805254144,1805254399,DE
+1805254400,1805254655,GB
+1805254656,1805582335,US
1805582336,1805647871,CA
1805647872,1805713407,US
1805713408,1805717503,CA
@@ -35257,7 +38276,12 @@
1805752576,1805753087,CA
1805753088,1805754111,US
1805754112,1805754367,CA
-1805754368,1806174207,US
+1805754368,1806172159,US
+1806172160,1806172415,DE
+1806172416,1806172671,GB
+1806172672,1806172927,DE
+1806172928,1806173183,GB
+1806173184,1806174207,US
1806174208,1806174463,BR
1806174464,1806205183,US
1806205184,1806205439,CA
@@ -35275,8 +38299,7 @@
1807597568,1807646719,CA
1807646720,1807655679,US
1807655680,1807655935,IE
-1807655936,1807656191,LR
-1807656192,1807656447,CZ
+1807655936,1807656447,US
1807656448,1807656703,NL
1807656704,1807657983,US
1807657984,1807658239,SG
@@ -35312,12 +38335,17 @@
1815966976,1815967231,US
1815967232,1815967487,CA
1815967488,1815968255,US
-1815968256,1815968511,FR
-1815968512,1815968639,US
-1815968640,1815968767,FR
+1815968256,1815968767,FR
1815968768,1815969279,US
1815969280,1815969791,JP
-1815969792,1815987199,US
+1815969792,1815977983,US
+1815977984,1815979007,JP
+1815979008,1815980031,NL
+1815980032,1815980543,AU
+1815980544,1815981055,DE
+1815981056,1815982079,GB
+1815982080,1815982591,FR
+1815982592,1815987199,US
1815987200,1815987711,GB
1815987712,1815988223,NL
1815988224,1815988735,JP
@@ -35336,7 +38364,9 @@
1815996160,1815996415,CA
1815996416,1815997695,US
1815997696,1815997951,FR
-1815997952,1816001791,US
+1815997952,1816001279,US
+1816001280,1816001535,AU
+1816001536,1816001791,US
1816001792,1816002559,NL
1816002560,1816068095,US
1816068096,1816133631,CA
@@ -35360,23 +38390,26 @@
1822553856,1822554111,HK
1822554112,1822572543,US
1822572544,1822605311,CA
-1822605312,1822609407,US
-1822609408,1822609535,SG
-1822609536,1822611487,US
-1822611488,1822611551,CA
-1822611552,1822611967,US
-1822611968,1822612479,CA
-1822612480,1822614015,US
+1822605312,1822611514,US
+1822611515,1822611515,CA
+1822611516,1822614015,US
1822614016,1822614271,JP
1822614272,1822614783,US
1822614784,1822615039,FR
-1822615040,1822617855,US
+1822615040,1822615295,NO
+1822615296,1822617855,US
1822617856,1822618367,CA
-1822618368,1822618879,US
-1822618880,1822619391,CA
-1822619392,1822619903,US
-1822619904,1822620415,AU
-1822620416,1822654463,US
+1822618368,1822619135,US
+1822619136,1822619391,CA
+1822619392,1822619647,US
+1822619648,1822620415,AU
+1822620416,1822620927,US
+1822620928,1822621247,NO
+1822621248,1822621249,US
+1822621250,1822621250,NO
+1822621251,1822621263,US
+1822621264,1822621264,NO
+1822621265,1822654463,US
1822654464,1822662143,CA
1822662144,1822662399,US
1822662400,1822670847,CA
@@ -35422,9 +38455,7 @@
1831862272,1832124415,PT
1832124416,1832386559,IT
1832386560,1832517631,DK
-1832517632,1832582655,SE
-1832582656,1832582911,DK
-1832582912,1832583167,SE
+1832517632,1832583167,SE
1832583168,1832648703,DK
1832648704,1832681471,HR
1832681472,1832714239,RU
@@ -35433,26 +38464,12 @@
1832779776,1832780031,FR
1832780032,1832780287,MQ
1832780288,1832780799,FR
-1832780800,1832781567,MQ
-1832781568,1832782335,FR
-1832782336,1832783103,MQ
-1832783104,1832783359,FR
-1832783360,1832783615,MQ
-1832783616,1832783871,FR
+1832780800,1832781311,MQ
+1832781312,1832783871,FR
1832783872,1832784639,GP
-1832784640,1832785151,FR
-1832785152,1832785407,GP
-1832785408,1832785663,FR
-1832785664,1832785919,GP
-1832785920,1832787199,FR
-1832787200,1832787455,GF
-1832787456,1832788735,FR
-1832788736,1832788991,RE
-1832788992,1832789503,FR
-1832789504,1832790015,RE
-1832790016,1832791039,FR
-1832791040,1832791295,YT
-1832791296,1832791551,FR
+1832784640,1832786943,FR
+1832786944,1832787455,GF
+1832787456,1832791551,FR
1832791552,1832791807,YT
1832791808,1832794879,FR
1832794880,1832795135,GP
@@ -35460,15 +38477,17 @@
1832796416,1832796671,RE
1832796672,1832796927,FR
1832796928,1832797183,GP
-1832797184,1832798975,FR
-1832798976,1832799743,GP
-1832799744,1832801535,FR
-1832801536,1832802047,MQ
-1832802048,1832802559,FR
+1832797184,1832798463,FR
+1832798464,1832798719,GP
+1832798720,1832798975,FR
+1832798976,1832799231,GP
+1832799232,1832799743,FR
+1832799744,1832799999,GP
+1832800000,1832802559,FR
1832802560,1832802815,MQ
-1832802816,1832803839,FR
-1832803840,1832804351,MQ
-1832804352,1832812543,FR
+1832802816,1832803327,FR
+1832803328,1832803839,MQ
+1832803840,1832812543,FR
1832812544,1832845311,RU
1832845312,1832878079,BH
1832878080,1832878412,RU
@@ -35561,8 +38580,8 @@
1833357312,1833357587,GB
1833357588,1833357631,IE
1833357632,1833357823,GB
-1833357824,1833358079,IE
-1833358080,1833359359,GB
+1833357824,1833357903,IE
+1833357904,1833359359,GB
1833359360,1833361407,DE
1833361408,1833363455,GB
1833363456,1833365503,RU
@@ -35583,9 +38602,7 @@
1833398272,1833400319,DE
1833400320,1833402367,GB
1833402368,1833406463,FR
-1833406464,1833406719,GB
-1833406720,1833406975,LV
-1833406976,1833408511,GB
+1833406464,1833408511,GB
1833410560,1833412607,LU
1833412608,1833414655,GB
1833414656,1833416703,RU
@@ -35635,7 +38652,7 @@
1833545728,1833549823,IT
1833549824,1833553919,RU
1833553920,1833558015,CZ
-1833558016,1833562111,RO
+1833558016,1833562111,BG
1833562112,1833566207,PS
1833566208,1833570303,SE
1833570304,1833571583,NL
@@ -35766,9 +38783,7 @@
1835918440,1835918447,IT
1835918448,1835918519,GB
1835918520,1835918527,IT
-1835918528,1835918599,GB
-1835918600,1835918607,IT
-1835918608,1835918711,GB
+1835918528,1835918711,GB
1835918712,1835918719,IT
1835918720,1835918735,GB
1835918736,1835918743,IT
@@ -35776,51 +38791,41 @@
1835918824,1835918831,IT
1835918832,1835918847,GB
1835918848,1835918855,IT
-1835918856,1835919095,GB
-1835919096,1835919103,IT
-1835919104,1835919127,GB
+1835918856,1835919127,GB
1835919128,1835919135,IT
1835919136,1835919151,GB
1835919152,1835919159,IT
-1835919160,1835919751,GB
+1835919160,1835919327,GB
+1835919328,1835919335,IT
+1835919336,1835919751,GB
1835919752,1835919759,IT
1835919760,1835920479,GB
1835920480,1835920487,IT
-1835920488,1835921047,GB
-1835921048,1835921055,IT
-1835921056,1835921119,GB
+1835920488,1835920991,GB
+1835920992,1835920999,IT
+1835921000,1835921119,GB
1835921120,1835921127,IT
1835921128,1835921343,GB
1835921344,1835921351,IT
-1835921352,1835921463,GB
-1835921464,1835921471,IT
-1835921472,1835921711,GB
+1835921352,1835921711,GB
1835921712,1835921719,IT
1835921720,1835922415,GB
1835922416,1835922423,IT
-1835922424,1835922455,GB
-1835922456,1835922463,IT
-1835922464,1835922559,GB
+1835922424,1835922559,GB
1835922560,1835922567,IT
1835922568,1835922647,GB
1835922648,1835922655,IT
1835922656,1835923351,GB
1835923352,1835923359,IT
-1835923360,1835923487,GB
-1835923488,1835923495,IT
-1835923496,1835923863,GB
-1835923864,1835923871,IT
-1835923872,1835924375,GB
+1835923360,1835924375,GB
1835924376,1835924383,IT
-1835924384,1835925503,GB
+1835924384,1835925159,GB
+1835925160,1835925167,IT
+1835925168,1835925503,GB
1835925504,1835933695,LV
1835933696,1835942399,RU
1835942400,1835942655,UA
-1835942656,1835947775,RU
-1835947776,1835948031,UA
-1835948032,1835949055,RU
-1835949056,1835949311,UA
-1835949312,1835950079,RU
+1835942656,1835950079,RU
1835950080,1835958271,LB
1835958272,1835966463,HU
1835966464,1835974655,IR
@@ -35837,8 +38842,8 @@
1836580864,1836597247,RU
1836597248,1836598271,LU
1836598272,1836605439,FR
-1836605440,1836612607,LU
-1836612608,1836613631,DE
+1836605440,1836611583,LU
+1836611584,1836613631,DE
1836613632,1836626943,RU
1836626944,1836627967,NL
1836627968,1836630015,RU
@@ -35849,39 +38854,44 @@
1836687360,1836711935,BG
1836711936,1836728319,UA
1836728320,1836744703,RS
-1836744704,1836746495,FR
+1836744704,1836745983,FR
+1836745984,1836746239,RE
+1836746240,1836746495,FR
1836746496,1836747007,RE
-1836747008,1836747263,FR
-1836747264,1836748031,RE
-1836748032,1836748543,FR
-1836748544,1836748799,RE
-1836748800,1836749055,FR
-1836749056,1836749567,RE
-1836749568,1836750079,FR
-1836750080,1836750591,RE
+1836747008,1836750335,FR
+1836750336,1836750591,RE
1836750592,1836751103,FR
-1836751104,1836751615,RE
-1836751616,1836753151,FR
-1836753152,1836753407,RE
-1836753408,1836753919,FR
-1836753920,1836754687,RE
-1836754688,1836755455,FR
-1836755456,1836755711,RE
+1836751104,1836751359,RE
+1836751360,1836751871,FR
+1836751872,1836752127,RE
+1836752128,1836752639,FR
+1836752640,1836753151,RE
+1836753152,1836754175,FR
+1836754176,1836754431,RE
+1836754432,1836755199,FR
+1836755200,1836755711,RE
1836755712,1836755967,FR
1836755968,1836756223,RE
-1836756224,1836756479,FR
-1836756480,1836756991,RE
-1836756992,1836758015,FR
-1836758016,1836758527,RE
-1836758528,1836758783,FR
+1836756224,1836756735,FR
+1836756736,1836756991,RE
+1836756992,1836758783,FR
1836758784,1836759039,RE
1836759040,1836759551,FR
-1836759552,1836760575,RE
-1836760576,1836760831,FR
-1836760832,1836761087,RE
+1836759552,1836759807,RE
+1836759808,1836760063,FR
+1836760064,1836760831,RE
+1836760832,1836761087,FR
1836761088,1836777471,IR
1836777472,1836793855,SI
-1836793856,1836810239,GB
+1836793856,1836794567,GB
+1836794568,1836794587,FR
+1836794588,1836794588,GB
+1836794589,1836794592,FR
+1836794593,1836794594,GB
+1836794595,1836794595,FR
+1836794596,1836797951,GB
+1836797952,1836798207,DE
+1836798208,1836810239,GB
1836810240,1836826623,RU
1836826624,1836843007,CZ
1836843008,1836875775,RU
@@ -35940,8 +38950,12 @@
1840119808,1840152575,RU
1840152576,1840185343,GB
1840185344,1840218111,BA
-1840218112,1840316415,GB
-1840316416,1840381951,RO
+1840218112,1840232447,GB
+1840232448,1840232703,US
+1840232704,1840247007,GB
+1840247008,1840247023,NL
+1840247024,1840316415,GB
+1840316416,1840381951,AE
1840381952,1840447487,GR
1840447488,1840513023,NO
1840513024,1840644095,GB
@@ -35984,8 +38998,7 @@
1841669120,1841669375,PL
1841669376,1841669631,BE
1841669632,1841670143,UA
-1841670144,1841671935,PL
-1841671936,1841672191,GB
+1841670144,1841672191,PL
1841672192,1841674239,FR
1841674240,1841676287,PL
1841676288,1841680383,RU
@@ -36003,8 +39016,7 @@
1841758208,1841766399,PL
1841766400,1841774591,HU
1841774592,1841782783,PL
-1841782784,1841790975,RO
-1841790976,1841799167,BG
+1841782784,1841799167,BG
1841799168,1841807359,DE
1841807360,1841815551,NO
1841815552,1841823743,BG
@@ -36025,7 +39037,7 @@
1841897472,1841905663,RO
1841905664,1841922047,RU
1841922048,1841924351,NL
-1841924352,1841924607,DE
+1841924352,1841924607,GB
1841924608,1841925887,NL
1841925888,1841926143,DE
1841926144,1841930239,NL
@@ -36050,22 +39062,15 @@
1842044928,1842053119,GB
1842053120,1842069503,IR
1842069504,1842077695,RU
-1842077696,1842077951,FR
-1842077952,1842078207,MQ
-1842078208,1842078719,FR
-1842078720,1842078975,MQ
-1842078976,1842079487,FR
-1842079488,1842080767,MQ
+1842077696,1842078207,MQ
+1842078208,1842078463,FR
+1842078464,1842078975,MQ
+1842078976,1842079743,FR
+1842079744,1842080767,MQ
1842080768,1842081023,GP
-1842081024,1842081279,MQ
-1842081280,1842081535,GP
-1842081536,1842081791,MQ
-1842081792,1842082047,GP
-1842082048,1842082559,MQ
-1842082560,1842082815,GP
-1842082816,1842083071,MQ
-1842083072,1842083583,GP
-1842083584,1842084607,MQ
+1842081024,1842083071,MQ
+1842083072,1842083327,GP
+1842083328,1842084607,MQ
1842084608,1842084863,GP
1842084864,1842085887,MQ
1842085888,1842118655,GB
@@ -36102,7 +39107,9 @@
1842206720,1842208767,SE
1842208768,1842210815,GB
1842210816,1842212863,LT
-1842212864,1842214911,CZ
+1842212864,1842213631,CZ
+1842213632,1842213887,SK
+1842213888,1842214911,CZ
1842214912,1842216959,RU
1842216960,1842225151,RO
1842225152,1842233343,UA
@@ -36133,9 +39140,7 @@
1843478528,1843494911,SE
1843494912,1843511295,IR
1843511296,1843527679,RU
-1843527680,1843539199,IL
-1843539200,1843539455,FR
-1843539456,1843544063,IL
+1843527680,1843544063,IL
1843544064,1843560447,RU
1843560448,1843576831,DE
1843576832,1843593215,RU
@@ -36179,7 +39184,6 @@
1843955712,1843957759,IT
1843957760,1843959807,CZ
1843959808,1843961855,GB
-1843961856,1843962111,DE
1843963904,1843965951,DE
1843965952,1843967999,GB
1843968000,1843970047,RU
@@ -36224,9 +39228,7 @@
1844068352,1844070399,ES
1844070400,1844072447,LU
1844072448,1844076543,ES
-1844076544,1844077055,GB
-1844077056,1844077567,IE
-1844077568,1844078591,GB
+1844076544,1844078591,GB
1844078592,1844080639,DE
1844080640,1844082687,GE
1844082688,1844084735,DE
@@ -36282,9 +39284,7 @@
1844174848,1844178943,DE
1844178944,1844180991,EE
1844180992,1844183039,TR
-1844183040,1844185087,IT
-1844185088,1844187135,CH
-1844187136,1844191231,IT
+1844183040,1844191231,IT
1844191232,1844195327,AL
1844199424,1844203519,RU
1844203520,1844207615,NL
@@ -36348,7 +39348,8 @@
1844772864,1844838399,RS
1844838400,1844903935,GB
1844903936,1844969471,NO
-1844969472,1845035007,RU
+1844969472,1845034751,RU
+1845034752,1845035007,BY
1845035008,1845100543,GB
1845100544,1845166079,DE
1845166080,1845231615,UA
@@ -36387,9 +39388,7 @@
1847757824,1847758847,CN
1847758848,1847770111,TH
1847770112,1847771135,SG
-1847771136,1847780351,TH
-1847780352,1847780607,CN
-1847780608,1847783423,TH
+1847771136,1847783423,TH
1847783424,1847787519,US
1847787520,1847803903,KR
1847803904,1847807999,VN
@@ -36584,8 +39583,7 @@
1868300288,1868333055,IN
1868333056,1868341247,PK
1868341248,1868345343,ID
-1868345344,1868346111,GU
-1868346112,1868346367,AU
+1868345344,1868346367,GU
1868346368,1868347391,TH
1868347392,1868348415,AU
1868348416,1868349439,KR
@@ -36725,9 +39723,7 @@
1888031232,1888034815,HK
1888034816,1888038911,JP
1888038912,1888040959,CN
-1888040960,1888041471,JP
-1888041472,1888041727,NZ
-1888041728,1888059391,JP
+1888040960,1888059391,JP
1888059392,1888063487,VN
1888063488,1888067583,JP
1888067584,1888071679,MY
@@ -36813,11 +39809,7 @@
1897267200,1897365503,VN
1897365504,1897398271,MY
1897398272,1897660415,CN
-1897660416,1897663487,HK
-1897663488,1897663743,GB
-1897663744,1897697279,HK
-1897697280,1897697535,AU
-1897697536,1897725951,HK
+1897660416,1897725951,HK
1897725952,1897730047,JP
1897730048,1897734143,AU
1897734144,1897738239,HK
@@ -36852,7 +39844,7 @@
1899273216,1899274239,JP
1899274240,1899282431,CN
1899282432,1899290623,KR
-1899290624,1899294719,AU
+1899292672,1899294719,AU
1899294720,1899298815,JP
1899298816,1899364351,TH
1899364352,1899724799,CN
@@ -36869,9 +39861,7 @@
1899850752,1899851775,VN
1899851776,1899855871,JP
1899855872,1899888639,TW
-1899888640,1902210559,CN
-1902210560,1902210815,MO
-1902210816,1904345087,CN
+1899888640,1904345087,CN
1904345088,1904361471,JP
1904361472,1904369663,KR
1904369664,1904375807,CN
@@ -36953,7 +39943,6 @@
1914601472,1914634239,KR
1914634240,1914642431,BD
1914642432,1914650623,KR
-1914652160,1914652415,MN
1914652672,1914654719,AU
1914654720,1914658815,JP
1914658816,1914660863,AU
@@ -37000,7 +39989,9 @@
1919918080,1919926271,CN
1919926272,1919942655,KR
1919942656,1919999999,CN
-1920000000,1920008191,HK
+1920000000,1920002047,HK
+1920002048,1920003071,CN
+1920003072,1920008191,HK
1920008192,1920057343,CN
1920057344,1920058111,HK
1920058112,1920072703,CN
@@ -37073,7 +40064,10 @@
1925640192,1925642239,ID
1925642240,1925644287,CN
1925644288,1925660671,KR
-1925660672,1925664767,HK
+1925660672,1925661439,TW
+1925661440,1925662207,HK
+1925662208,1925663743,TW
+1925663744,1925664767,HK
1925664768,1925677055,ID
1925677056,1926234111,KR
1926234112,1929379839,CN
@@ -37211,7 +40205,6 @@
1941438464,1941569535,IN
1941569536,1941618687,PK
1941618688,1941635071,AU
-1941635072,1941639167,IN
1941639168,1941643263,NP
1941643264,1941651455,IN
1941651456,1941655551,JP
@@ -37382,9 +40375,7 @@
1959104512,1959106559,AU
1959106560,1959108607,JP
1959110656,1959112703,JP
-1959112704,1959113215,HK
-1959113216,1959113471,IN
-1959113472,1959114751,HK
+1959112704,1959114751,HK
1959114752,1959115007,IN
1959115008,1959116799,HK
1959116800,1959133183,SG
@@ -37462,7 +40453,11 @@
1964120064,1964122111,JP
1964122112,1964122367,SG
1964122368,1964122879,JP
-1964122880,1964126207,SG
+1964122880,1964123135,HK
+1964123136,1964123391,GB
+1964123392,1964123647,US
+1964123648,1964123903,CN
+1964123904,1964126207,SG
1964126208,1964126463,HK
1964126464,1964130303,SG
1964130304,1964134399,HK
@@ -37694,7 +40689,7 @@
1991442432,1991499775,BD
1991499776,1991507967,NC
1991507968,1991835647,CN
-1991835648,1991901183,SG
+1991835648,1991901183,IN
1991901184,1992097791,CN
1992097792,1992163327,SG
1992163328,1992818687,CN
@@ -37718,7 +40713,9 @@
1996634112,1996636159,AU
1996636160,1996644351,ID
1996644352,1996652543,BT
-1996652544,1997078527,CN
+1996652544,1996685311,CN
+1996685312,1996750847,HK
+1996750848,1997078527,CN
1997078528,1997094911,AU
1997094912,1997144063,HK
1997144064,1997176831,CN
@@ -37789,9 +40786,14 @@
1998569472,1998577663,CN
1998577664,1998579711,AU
1998579712,1998581759,SG
-1998581760,1998584319,KR
+1998581760,1998584063,KR
+1998584064,1998584319,IN
1998584320,1998584575,OM
-1998584576,1998585855,KR
+1998584576,1998584831,IN
+1998584832,1998585087,ZA
+1998585088,1998585343,KR
+1998585344,1998585599,JP
+1998585600,1998585855,KR
1998585856,1999130623,CN
1999130624,1999134719,BD
1999134720,1999136767,MN
@@ -37849,13 +40851,15 @@
2001559552,2001567743,KR
2001567744,2001600511,TW
2001600512,2001797119,CN
-2001797120,2001798047,SG
+2001797120,2001797647,SG
+2001797648,2001797663,US
+2001797664,2001798047,SG
2001798048,2001798079,US
2001798080,2001798087,SG
2001798088,2001798095,US
-2001798096,2001798787,SG
-2001798788,2001798791,AU
-2001798792,2001799687,SG
+2001798096,2001798407,SG
+2001798408,2001798415,US
+2001798416,2001799687,SG
2001799688,2001799695,US
2001799696,2001799711,SG
2001799712,2001799743,US
@@ -37875,11 +40879,9 @@
2001801136,2001801151,US
2001801152,2001801339,SG
2001801340,2001801343,US
-2001801344,2001801615,SG
-2001801616,2001801623,NL
-2001801624,2001801663,SG
-2001801664,2001801703,US
-2001801704,2001801711,SG
+2001801344,2001801663,SG
+2001801664,2001801695,US
+2001801696,2001801711,SG
2001801712,2001801727,US
2001801728,2001801775,SG
2001801776,2001801807,US
@@ -37905,13 +40907,23 @@
2001803920,2001803935,US
2001803936,2001804015,SG
2001804016,2001804023,US
-2001804024,2001805943,SG
+2001804024,2001804295,SG
+2001804296,2001804303,US
+2001804304,2001805943,SG
2001805944,2001805951,US
-2001805952,2001809383,SG
+2001805952,2001806527,SG
+2001806528,2001806559,SA
+2001806560,2001807959,SG
+2001807960,2001807967,US
+2001807968,2001809039,SG
+2001809040,2001809047,US
+2001809048,2001809127,SG
+2001809128,2001809135,US
+2001809136,2001809383,SG
2001809384,2001809391,US
-2001809392,2001810495,SG
-2001810496,2001810527,MY
-2001810528,2001810559,SG
+2001809392,2001810111,SG
+2001810112,2001810143,US
+2001810144,2001810559,SG
2001810560,2001810623,MY
2001810624,2001812127,SG
2001812128,2001812159,SA
@@ -37919,9 +40931,7 @@
2001812256,2001812263,US
2001812264,2001812671,SG
2001812672,2001812675,GB
-2001812676,2001813655,SG
-2001813656,2001813663,AU
-2001813664,2001813783,SG
+2001812676,2001813783,SG
2001813784,2001813791,IN
2001813792,2001814431,SG
2001814432,2001814439,US
@@ -37929,25 +40939,27 @@
2001814576,2001814583,US
2001814584,2001815191,SG
2001815192,2001815199,US
-2001815200,2001817079,SG
-2001817080,2001817087,US
-2001817088,2001818639,SG
+2001815200,2001816071,SG
+2001816072,2001816079,US
+2001816080,2001816407,SG
+2001816408,2001816415,US
+2001816416,2001818063,SG
+2001818064,2001818071,US
+2001818072,2001818615,SG
+2001818616,2001818623,IN
+2001818624,2001818639,SG
2001818640,2001818647,US
-2001818648,2001818847,SG
-2001818848,2001818851,AU
-2001818852,2001819495,SG
-2001819496,2001819503,US
-2001819504,2001819887,SG
+2001818648,2001819703,SG
+2001819704,2001819711,US
+2001819712,2001819887,SG
2001819888,2001819895,IE
2001819896,2001819999,SG
2001820000,2001820031,IE
2001820032,2001820719,SG
2001820720,2001820727,CA
-2001820728,2001820991,SG
-2001820992,2001820999,US
-2001821000,2001821191,SG
-2001821192,2001821199,US
-2001821200,2001821335,SG
+2001820728,2001820871,SG
+2001820872,2001820879,US
+2001820880,2001821335,SG
2001821336,2001821343,US
2001821344,2001821367,SG
2001821368,2001821375,US
@@ -37955,234 +40967,57 @@
2001821424,2001821431,US
2001821432,2001821439,SG
2001821440,2001821447,US
-2001821448,2001821623,SG
-2001821624,2001821631,US
-2001821632,2001823007,SG
+2001821448,2001822263,SG
+2001822264,2001822271,US
+2001822272,2001823007,SG
2001823008,2001823015,US
-2001823016,2001823447,SG
+2001823016,2001823215,SG
+2001823216,2001823223,US
+2001823224,2001823303,SG
+2001823304,2001823311,US
+2001823312,2001823447,SG
2001823448,2001823455,US
2001823456,2001824175,SG
2001824176,2001824183,US
-2001824184,2001824287,SG
-2001824288,2001824295,US
-2001824296,2001824479,SG
-2001824480,2001824487,US
-2001824488,2001824495,SG
-2001824496,2001824503,KR
-2001824504,2001825183,SG
-2001825184,2001825215,US
-2001825216,2001825647,SG
-2001825648,2001825655,US
-2001825656,2001829891,SG
-2001829892,2001829903,US
-2001829904,2001830091,SG
-2001830092,2001830095,US
-2001830096,2001830175,SG
-2001830176,2001830191,US
-2001830192,2001830207,SG
-2001830208,2001830223,US
-2001830224,2001830335,SG
-2001830336,2001830351,US
-2001830352,2001830479,SG
-2001830480,2001830495,US
-2001830496,2001830567,SG
-2001830568,2001830575,US
-2001830576,2001830673,SG
-2001830674,2001830674,HK
-2001830675,2001830719,SG
-2001830720,2001830783,US
-2001830784,2001830927,SG
-2001830928,2001830935,US
-2001830936,2001830943,NL
-2001830944,2001830975,SG
-2001830976,2001830983,US
-2001830984,2001831007,SG
-2001831008,2001831015,US
-2001831016,2001831027,SG
-2001831028,2001831031,US
-2001831032,2001831163,SG
-2001831164,2001831167,US
-2001831168,2001831287,SG
-2001831288,2001831295,US
-2001831296,2001831331,SG
-2001831332,2001831335,US
-2001831336,2001831683,SG
-2001831684,2001831687,US
-2001831688,2001831691,SG
-2001831692,2001831703,US
-2001831704,2001831915,SG
-2001831916,2001831919,US
-2001831920,2001831943,SG
-2001831944,2001831951,US
-2001831952,2001831963,SG
-2001831964,2001831967,US
-2001831968,2001831992,SG
-2001831993,2001831993,US
-2001831994,2001832135,SG
-2001832136,2001832139,US
-2001832140,2001832147,SG
-2001832148,2001832151,US
-2001832152,2001832315,SG
-2001832316,2001832319,US
-2001832320,2001832443,SG
-2001832444,2001832447,US
-2001832448,2001832615,SG
-2001832616,2001832623,AZ
-2001832624,2001832751,SG
-2001832752,2001832759,IE
-2001832760,2001832879,SG
-2001832880,2001832887,US
-2001832888,2001832903,SG
-2001832904,2001832911,US
-2001832912,2001832951,SG
-2001832952,2001832955,US
-2001832956,2001833007,SG
+2001824184,2001824335,SG
+2001824336,2001824343,US
+2001824344,2001824543,SG
+2001824544,2001824551,PH
+2001824552,2001825247,SG
+2001825248,2001825255,US
+2001825256,2001825511,SG
+2001825512,2001825519,US
+2001825520,2001825623,SG
+2001825624,2001825631,US
+2001825632,2001826199,SG
+2001826200,2001826207,US
+2001826208,2001826639,SG
+2001826640,2001826671,US
+2001826672,2001826847,SG
+2001826848,2001826863,US
+2001826864,2001826911,SG
+2001826912,2001826943,US
+2001826944,2001827103,SG
+2001827104,2001827111,CA
+2001827112,2001827199,SG
+2001827200,2001827215,US
+2001827216,2001827551,SG
+2001827552,2001827567,PH
+2001827568,2001828351,SG
+2001828352,2001828367,US
+2001828368,2001828383,SG
+2001828384,2001828399,AU
+2001828400,2001828799,SG
+2001828800,2001828863,US
+2001828864,2001828927,SG
+2001828928,2001828991,US
+2001828992,2001829087,SG
+2001829088,2001829439,US
+2001829440,2001829887,SG
+2001829888,2001833007,HK
2001833008,2001833015,CN
-2001833016,2001833071,SG
-2001833072,2001833079,US
-2001833080,2001833099,SG
-2001833100,2001833103,US
-2001833104,2001833255,SG
-2001833256,2001833263,US
-2001833264,2001833419,SG
-2001833420,2001833421,US
-2001833422,2001833439,SG
-2001833440,2001833447,US
-2001833448,2001833487,SG
-2001833488,2001833495,US
-2001833496,2001833655,SG
-2001833656,2001833663,GB
-2001833664,2001833679,SG
-2001833680,2001833687,GB
-2001833688,2001833727,SG
-2001833728,2001833791,US
-2001833792,2001834096,SG
-2001834097,2001834097,US
-2001834098,2001834239,SG
-2001834240,2001834495,HK
-2001834496,2001834751,SG
-2001834752,2001834815,US
-2001834816,2001834935,SG
-2001834936,2001834943,JP
-2001834944,2001834947,US
-2001834948,2001835035,SG
-2001835036,2001835039,US
-2001835040,2001835103,SG
-2001835104,2001835135,US
-2001835136,2001835147,SG
-2001835148,2001835151,US
-2001835152,2001835231,SG
-2001835232,2001835239,US
-2001835240,2001835247,SG
-2001835248,2001835263,US
-2001835264,2001835515,SG
-2001835516,2001835519,US
-2001835520,2001835587,SG
-2001835588,2001835591,US
-2001835592,2001835711,SG
-2001835712,2001835719,US
-2001835720,2001835793,SG
-2001835794,2001835794,US
-2001835795,2001835795,SG
-2001835796,2001835799,US
-2001835800,2001835959,SG
-2001835960,2001835983,US
-2001835984,2001836107,SG
-2001836108,2001836111,US
-2001836112,2001836267,SG
-2001836268,2001836271,US
-2001836272,2001836291,SG
-2001836292,2001836295,US
-2001836296,2001836419,SG
-2001836420,2001836423,US
-2001836424,2001836427,SG
-2001836428,2001836431,US
-2001836432,2001836435,SG
-2001836436,2001836439,US
-2001836440,2001836451,SG
-2001836452,2001836455,US
-2001836456,2001836471,SG
-2001836472,2001836487,US
-2001836488,2001836506,SG
-2001836507,2001836507,US
-2001836508,2001836543,SG
-2001836544,2001838079,US
-2001838080,2001838627,SG
-2001838628,2001838631,US
-2001838632,2001838633,SG
-2001838634,2001838634,HK
-2001838635,2001838755,SG
-2001838756,2001838759,US
-2001838760,2001838763,SG
-2001838764,2001838767,US
-2001838768,2001838847,SG
-2001838848,2001839103,HK
-2001839104,2001839111,SG
-2001839112,2001839115,US
-2001839116,2001839535,SG
-2001839536,2001839543,US
-2001839544,2001839595,SG
-2001839596,2001839599,SA
-2001839600,2001839739,SG
-2001839740,2001839743,US
-2001839744,2001839775,SG
-2001839776,2001839783,US
-2001839784,2001839803,SG
-2001839804,2001839807,US
-2001839808,2001840057,SG
-2001840058,2001840059,SA
-2001840060,2001840071,SG
-2001840072,2001840079,US
-2001840080,2001840175,SG
-2001840176,2001840183,US
-2001840184,2001840767,SG
-2001840768,2001840799,US
-2001840800,2001841159,SG
-2001841160,2001841167,US
-2001841168,2001841175,SG
-2001841176,2001841176,US
-2001841177,2001841177,SA
-2001841178,2001841179,SG
-2001841180,2001841247,US
-2001841248,2001841279,SA
-2001841280,2001841311,SG
-2001841312,2001841319,US
-2001841320,2001841343,SG
-2001841344,2001841407,US
-2001841408,2001841639,SG
-2001841640,2001841647,US
-2001841648,2001842047,SG
-2001842048,2001842111,US
-2001842112,2001842175,SG
-2001842176,2001842271,US
-2001842272,2001842319,SG
-2001842320,2001842327,US
-2001842328,2001842343,SG
-2001842344,2001842351,US
-2001842352,2001842687,SG
-2001842688,2001842751,US
-2001842752,2001842783,SG
-2001842784,2001842815,US
-2001842816,2001843249,SG
-2001843250,2001843251,US
-2001843252,2001843471,SG
-2001843472,2001843475,US
-2001843476,2001843839,SG
-2001843840,2001843967,US
-2001843968,2001844127,SG
-2001844128,2001845247,US
-2001845248,2001845335,SG
-2001845336,2001845343,US
-2001845344,2001845359,SG
-2001845360,2001845375,US
-2001845376,2001845391,SG
-2001845392,2001845503,US
-2001845504,2001845695,SG
-2001845696,2001845703,US
-2001845704,2001845799,SG
-2001845800,2001845807,US
-2001845808,2001846015,SG
-2001846016,2001846311,US
+2001833016,2001846271,HK
+2001846272,2001846311,US
2001846312,2001846335,SG
2001846336,2001846359,US
2001846360,2001846479,SG
@@ -38731,7 +41566,9 @@
2019049472,2019078143,AU
2019078144,2019082239,IN
2019082240,2019098623,HK
-2019098624,2019115007,PH
+2019098624,2019106815,PH
+2019106816,2019107071,NO
+2019107072,2019115007,PH
2019115008,2019117055,US
2019117056,2019119103,IN
2019119104,2019121151,NZ
@@ -38915,7 +41752,7 @@
2047508480,2047574015,CN
2047574016,2047606783,SG
2047606784,2047803391,CN
-2047803392,2047868927,SG
+2047803392,2047868927,IN
2047868928,2048917503,JP
2048917504,2049966079,KR
2049966080,2050047999,CN
@@ -38928,8 +41765,7 @@
2050091008,2050097151,JP
2050097152,2050101247,SG
2050101248,2050113535,JP
-2050113536,2050129663,SG
-2050129664,2050129919,JP
+2050113536,2050129919,SG
2050129920,2050162687,IN
2050162688,2050228223,CN
2050228224,2050490367,PH
@@ -39064,18 +41900,13 @@
2060451840,2061500415,JP
2061500416,2063073279,CN
2063073280,2063077375,BD
-2063077376,2063077377,PH
-2063077378,2063077378,HK
-2063077379,2063077631,PH
-2063077632,2063079423,HK
+2063077376,2063079423,HK
2063079424,2063081471,CN
2063081472,2063085567,ID
2063085568,2063089663,CN
2063089664,2063097855,JP
2063097856,2063106047,MM
-2063106048,2063106559,SG
-2063106560,2063106815,AU
-2063106816,2063107071,SG
+2063106048,2063107071,SG
2063107072,2063107327,JP
2063107328,2063107623,SG
2063107624,2063107631,AU
@@ -39084,19 +41915,18 @@
2063110144,2063111167,JP
2063111168,2063114239,AU
2063114240,2063115263,IN
-2063115264,2063117311,JP
-2063117312,2063117567,NZ
-2063117568,2063117823,JP
+2063115264,2063117823,JP
2063117824,2063117839,PH
2063117840,2063117951,JP
2063117952,2063118079,PH
-2063118080,2063118335,JP
+2063118080,2063118159,JP
+2063118160,2063118191,PH
+2063118192,2063118335,JP
2063118336,2063118591,IN
2063118592,2063119871,JP
2063119872,2063120383,IN
-2063120384,2063120895,JP
-2063120896,2063121151,AU
-2063121152,2063122431,JP
+2063120384,2063121919,JP
+2063121920,2063122431,IN
2063122432,2063138815,SG
2063138816,2063335423,JP
2063335424,2063341567,AU
@@ -39320,7 +42150,11 @@
2083389440,2083454975,KR
2083454976,2083471359,CN
2083471360,2083487743,JP
-2083487744,2083504127,AU
+2083487744,2083491583,AU
+2083491584,2083491839,US
+2083491840,2083492863,AU
+2083492864,2083493375,US
+2083493376,2083504127,AU
2083504128,2083520511,JP
2083520512,2083966719,KR
2083966720,2083966975,JP
@@ -39345,7 +42179,6 @@
2087452672,2087453695,AU
2087453696,2087454719,KH
2087454720,2087456767,CN
-2087456768,2087457791,MY
2087458816,2087460863,FJ
2087460864,2087462911,JP
2087462912,2087464959,CN
@@ -39481,7 +42314,9 @@
2099216384,2099232767,KR
2099232768,2100297727,CN
2100297728,2100854783,JP
-2100854784,2100887551,US
+2100854784,2100874495,US
+2100874496,2100874751,AU
+2100874752,2100887551,US
2100887552,2100953087,KR
2100953088,2100969471,VN
2100969472,2100985855,JP
@@ -39543,13 +42378,9 @@
2112487424,2112618495,VN
2112618496,2112880639,NZ
2112880640,2113683455,KR
-2113683456,2113685759,JP
-2113685760,2113686015,MY
-2113686016,2113687807,JP
-2113687808,2113688063,AU
-2113688064,2113688319,JP
-2113688320,2113688575,SG
-2113688576,2113693599,JP
+2113683456,2113687999,JP
+2113688000,2113688031,AU
+2113688032,2113693599,JP
2113693600,2113693615,HK
2113693616,2113716223,JP
2113716224,2113724927,SG
@@ -39571,7 +42402,11 @@
2147489792,2147491839,RU
2147491840,2147494911,DE
2147494912,2147495167,RO
-2147495168,2147498239,DE
+2147495168,2147495423,DE
+2147495424,2147495935,RO
+2147495936,2147497215,DE
+2147497216,2147497471,RO
+2147497472,2147498239,DE
2147498240,2147498495,RO
2147498496,2147500031,DE
2147500032,2147501055,FR
@@ -39614,7 +42449,9 @@
2151778304,2151780351,RU
2151780352,2151782399,DE
2151782400,2151784447,ES
-2151784448,2151792639,IR
+2151784448,2151788479,IR
+2151788480,2151788495,IQ
+2151788496,2151792639,IR
2151792640,2151794687,CH
2151794688,2151796735,IT
2151796736,2151797759,DE
@@ -39683,9 +42520,7 @@
2155827200,2155831295,PL
2155831296,2155833343,RU
2155833344,2155833855,SE
-2155833856,2155834084,NL
-2155834085,2155834111,SE
-2155834112,2155834367,NL
+2155833856,2155834367,NL
2155834368,2155834464,SE
2155834465,2155834512,NL
2155834513,2155834532,SE
@@ -39731,7 +42566,9 @@
2159673344,2159869951,US
2159869952,2159935487,CA
2159935488,2160525311,US
-2160525312,2160590847,SG
+2160525312,2160533503,SG
+2160533504,2160541695,NL
+2160541696,2160590847,SG
2160590848,2160656383,US
2160721920,2160852991,US
2160852992,2160885759,RU
@@ -39744,9 +42581,7 @@
2160914432,2160918527,SA
2160918528,2161508351,US
2161508352,2161573887,FI
-2161573888,2162228223,US
-2162228224,2162228479,CA
-2162228480,2162687999,US
+2161573888,2162687999,US
2162688000,2162753535,GB
2162753536,2162819071,CA
2162819072,2162884607,RO
@@ -39780,10 +42615,11 @@
2166571008,2166575103,GB
2166575104,2166575359,US
2166575360,2166575615,GB
-2166575616,2166607009,US
+2166575616,2166606847,US
+2166606848,2166607009,GB
2166607010,2166607010,DE
-2166607011,2166607011,GB
-2166607012,2166613759,US
+2166607011,2166607103,GB
+2166607104,2166613759,US
2166613760,2166614015,DE
2166614016,2167209983,US
2167275520,2167930879,US
@@ -39855,7 +42691,9 @@
2178351104,2178416639,GB
2178416640,2178482175,US
2178482176,2178547711,DE
-2178547712,2179391487,US
+2178547712,2178900223,US
+2178900224,2178900479,NZ
+2178900480,2179391487,US
2179391488,2179391999,GB
2179392000,2179397632,US
2179397633,2179397633,GB
@@ -39993,15 +42831,21 @@
2188718582,2188718582,DE
2188718583,2188724463,US
2188724464,2188724464,NL
-2188724465,2188726783,US
+2188724465,2188724991,US
+2188724992,2188725247,RS
+2188725248,2188726783,US
2188726784,2188727039,GB
2188727040,2188728319,US
2188728320,2188728575,GB
2188728576,2188734463,US
2188734464,2188734719,FR
-2188734720,2188738306,US
+2188734720,2188736511,US
+2188736512,2188736767,GB
+2188736768,2188738306,US
2188738307,2188738307,GB
-2188738308,2188768767,US
+2188738308,2188749055,US
+2188749056,2188749311,SL
+2188749312,2188768767,US
2188768768,2188769279,YT
2188769280,2188902399,US
2188902400,2188967935,FR
@@ -40074,15 +42918,15 @@
2193707408,2193707415,IT
2193707416,2193707559,GB
2193707560,2193707567,IT
-2193707568,2193707615,GB
-2193707616,2193707623,IT
-2193707624,2193707751,GB
+2193707568,2193707655,GB
+2193707656,2193707663,IT
+2193707664,2193707751,GB
2193707752,2193707759,IT
-2193707760,2193707831,GB
-2193707832,2193707839,IT
-2193707840,2193708511,GB
-2193708512,2193708519,IT
-2193708520,2193708735,GB
+2193707760,2193708423,GB
+2193708424,2193708431,IT
+2193708432,2193708647,GB
+2193708648,2193708655,IT
+2193708656,2193708735,GB
2193708736,2193708743,IT
2193708744,2193709087,GB
2193709088,2193709095,IT
@@ -40140,9 +42984,7 @@
2197780480,2197782527,DE
2197782528,2197782685,RU
2197782686,2197782686,UA
-2197782687,2197782783,RU
-2197782784,2197783039,UA
-2197783040,2197786623,RU
+2197782687,2197786623,RU
2197786624,2197788671,IT
2197788672,2197790719,PL
2197790720,2197792767,SE
@@ -40168,7 +43010,7 @@
2197859328,2197860351,CL
2197860352,2197865471,BR
2197865472,2197866495,AR
-2197867520,2197869567,BR
+2197866496,2197869567,BR
2197869568,2197870591,UY
2197870592,2197874687,BR
2197874688,2197875711,AR
@@ -40180,24 +43022,83 @@
2202534912,2202540031,BR
2202540032,2202541055,PY
2202541056,2202542079,AR
-2202542080,2202550271,BR
+2202542080,2202552319,BR
2202552320,2202553343,AR
-2202554368,2202559487,BR
+2202553344,2202554367,TT
+2202554368,2202562559,BR
2202562560,2202563583,CW
-2202565632,2202566655,BR
+2202563584,2202567679,BR
2202567680,2202568703,AR
-2202569728,2202570751,BR
+2202568704,2202569727,NL
+2202569728,2202573823,BR
2202573824,2202574847,AR
-2202574848,2202578943,BR
+2202574848,2202576895,BR
+2202576896,2202577919,VE
+2202577920,2202586111,BR
+2202586112,2202587135,AR
+2202587136,2202588159,HN
+2202588160,2202589183,MX
+2202589184,2202591231,BR
+2202591232,2202592255,PA
+2202592256,2202593279,MX
+2202593280,2202595327,CL
+2202595328,2202596351,AR
+2202596352,2202599423,BR
2202599424,2204172287,US
2204172288,2204237823,SE
2204237824,2204303359,US
2204303360,2204368895,DE
+2204368896,2204369919,PA
+2204369920,2204376063,BR
+2204376064,2204377087,CL
+2204377088,2204378111,BR
+2204378112,2204379135,TT
+2204379136,2204385279,BR
+2204385280,2204386303,AR
+2204386304,2204391423,BR
+2204391424,2204392447,AR
+2204392448,2204394495,BR
+2204394496,2204395519,AR
+2204395520,2204396543,BR
+2204396544,2204397567,AR
+2204397568,2204404735,BR
+2204404736,2204405759,SV
+2204405760,2204409855,BR
+2204409856,2204410879,TT
+2204410880,2204414975,BR
+2204414976,2204415999,AR
+2204416000,2204417023,PY
+2204417024,2204420095,BR
+2204420096,2204421119,BO
+2204421120,2204434431,BR
2204434432,2204499967,US
2204499968,2204565503,CH
2204565504,2204631039,US
2204631040,2204696575,CA
2204696576,2204893183,US
+2204893184,2204894207,AR
+2204894208,2204895231,PA
+2204895232,2204897279,BR
+2204897280,2204898303,HN
+2204898304,2204899327,PA
+2204899328,2204902399,BR
+2204902400,2204903423,CR
+2204903424,2204904447,AR
+2204904448,2204910591,BR
+2204910592,2204911615,CL
+2204911616,2204913663,BR
+2204913664,2204914687,AR
+2204914688,2204929023,BR
+2204929024,2204930047,AR
+2204930048,2204936191,BR
+2204936192,2204937215,CO
+2204937216,2204942335,BR
+2204942336,2204943359,PY
+2204943360,2204946431,BR
+2204946432,2204947455,CL
+2204947456,2204952575,BR
+2204952576,2204953599,HN
+2204953600,2204958719,BR
2204958720,2205089791,US
2205089792,2205155327,GB
2205155328,2205286399,JP
@@ -40216,12 +43117,13 @@
2205538304,2205540351,RU
2205540352,2205548543,IQ
2205548544,2206269439,US
-2206269440,2206334975,CA
+2206269440,2206334975,HK
2206334976,2206400511,AT
2206400512,2206466047,US
2206466048,2207121407,CA
2207121408,2207449087,US
-2207449088,2207647487,CA
+2207449088,2207514623,HK
+2207514624,2207647487,CA
2207647488,2207647743,US
2207647744,2207648511,CA
2207648512,2207649791,US
@@ -40248,6 +43150,28 @@
2208038912,2208235519,US
2208235520,2208301055,DE
2208301056,2208366591,FI
+2208366592,2208379903,BR
+2208379904,2208380927,HN
+2208380928,2208381951,CL
+2208381952,2208387071,BR
+2208387072,2208388095,HN
+2208388096,2208389119,SX
+2208389120,2208390143,AR
+2208390144,2208392191,BR
+2208392192,2208393215,PE
+2208393216,2208404479,BR
+2208404480,2208405503,BZ
+2208405504,2208406527,AR
+2208406528,2208413695,BR
+2208413696,2208414719,AR
+2208414720,2208417791,BR
+2208417792,2208418815,CL
+2208418816,2208425983,BR
+2208425984,2208428031,AR
+2208428032,2208429055,BR
+2208429056,2208430079,MX
+2208430080,2208431103,BR
+2208431104,2208432127,PY
2208432128,2208563199,CA
2208563200,2208759807,DK
2208759808,2208890879,US
@@ -40280,11 +43204,30 @@
2211446784,2211643391,US
2211643392,2211708927,NL
2211708928,2211774463,US
-2211774464,2211839999,CA
+2211774464,2211839999,HK
2211840000,2212036607,US
2212036608,2212102143,AU
2212102144,2212233215,US
2212233216,2212298751,DE
+2212298752,2212299775,AR
+2212299776,2212300799,DO
+2212300800,2212301823,HN
+2212301824,2212302847,BR
+2212302848,2212303871,AR
+2212303872,2212304895,BR
+2212304896,2212305919,PA
+2212305920,2212306943,TT
+2212307968,2212308991,BR
+2212308992,2212310015,CO
+2212310016,2212315135,BR
+2212315136,2212316159,AR
+2212316160,2212335615,BR
+2212335616,2212336639,CW
+2212336640,2212337663,BR
+2212337664,2212338687,PE
+2212338688,2212340735,BR
+2212340736,2212341759,CL
+2212341760,2212364287,BR
2212364288,2212495359,US
2212495360,2212560895,NL
2212560896,2212691967,US
@@ -40321,13 +43264,16 @@
2214264832,2214330367,GB
2214330368,2214461439,US
2214461440,2214526975,FR
+2214526976,2214527999,BR
+2214528000,2214529023,AR
+2214529024,2214530047,BR
+2214530048,2214531071,AR
+2214531072,2214540287,BR
+2214541312,2214542335,BR
+2214542336,2214543359,AR
2214592512,2218786815,US
2218786816,2219769855,IL
-2219769856,2222521855,US
-2222521856,2222522111,PR
-2222522112,2223111679,US
-2223111680,2223111935,VI
-2223111936,2224160767,US
+2219769856,2224160767,US
2224160768,2224226303,GB
2224226304,2224242687,US
2224242688,2224259071,SG
@@ -40394,6 +43340,10 @@
2231107584,2231173119,DE
2231173120,2231238655,US
2231238656,2231304191,MX
+2231305216,2231306239,AR
+2231307264,2231309311,BR
+2231309312,2231310335,CO
+2231310336,2231311359,BR
2231369728,2248146943,JP
2248146944,2248148991,IT
2248148992,2248151039,ES
@@ -40438,7 +43388,9 @@
2250047488,2250113023,US
2250113024,2250178559,DE
2250178560,2250244095,CA
-2250244096,2250375167,US
+2250244096,2250282239,US
+2250282240,2250282495,GB
+2250282496,2250375167,US
2250375168,2250440703,DE
2250440704,2250506239,US
2250506240,2250571775,GB
@@ -40532,22 +43484,8 @@
2258580032,2258582783,TW
2258582784,2258582791,GB
2258582792,2258583551,TW
-2258583552,2258583575,GB
-2258583576,2258583583,TW
-2258583584,2258583775,GB
-2258583776,2258583807,TW
-2258583808,2258583935,GB
-2258583936,2258583967,TW
-2258583968,2258584007,GB
-2258584008,2258584351,TW
-2258584352,2258584383,GB
-2258584384,2258584574,TW
-2258584575,2258584575,GB
-2258584576,2258591575,TW
-2258591576,2258591579,GB
-2258591580,2258591631,TW
-2258591632,2258591639,GB
-2258591640,2258591935,TW
+2258583552,2258591743,GB
+2258591744,2258591935,TW
2258591936,2258591967,HK
2258591968,2258592271,TW
2258592272,2258592279,JP
@@ -40559,9 +43497,8 @@
2258592480,2258592495,AU
2258592496,2258592511,TW
2258592512,2258592767,AU
-2258592768,2258592791,TW
-2258592792,2258592803,HK
-2258592804,2258593279,TW
+2258592768,2258593023,HK
+2258593024,2258593279,TW
2258593280,2258593535,HK
2258593536,2258594047,TW
2258594048,2258594111,HK
@@ -40586,13 +43523,9 @@
2258596104,2258596159,TW
2258596160,2258596255,HK
2258596256,2258596351,TW
-2258596352,2258596863,HK
-2258596864,2258596887,TW
-2258596888,2258596903,HK
-2258596904,2258596991,TW
-2258596992,2258597023,HK
-2258597024,2258597115,TW
-2258597116,2258597215,HK
+2258596352,2258597071,HK
+2258597072,2258597079,TW
+2258597080,2258597215,HK
2258597216,2258597263,TW
2258597264,2258597293,HK
2258597294,2258597294,PG
@@ -40647,9 +43580,11 @@
2258599676,2258599679,JP
2258599680,2258599743,TW
2258599744,2258599747,AU
-2258599748,2258600263,TW
-2258600264,2258600267,HK
-2258600268,2258600515,TW
+2258599748,2258599935,TW
+2258599936,2258599971,HK
+2258599972,2258599975,AU
+2258599976,2258600447,HK
+2258600448,2258600515,TW
2258600516,2258600519,IN
2258600520,2258600523,TW
2258600524,2258600527,IN
@@ -40674,18 +43609,10 @@
2258601408,2258601423,AU
2258601424,2258601471,TW
2258601472,2258601983,JP
-2258601984,2258602303,TW
-2258602304,2258602327,HK
-2258602328,2258602335,TW
-2258602336,2258602367,HK
-2258602368,2258602399,TW
-2258602400,2258602447,HK
-2258602448,2258602479,TW
-2258602480,2258602495,HK
-2258602496,2258602815,TW
-2258602816,2258602879,HK
-2258602880,2258603007,TW
-2258603008,2258603071,HK
+2258601984,2258602239,TW
+2258602240,2258602495,HK
+2258602496,2258602751,TW
+2258602752,2258603071,HK
2258603072,2258603087,TW
2258603088,2258603089,HK
2258603090,2258603090,PG
@@ -40705,12 +43632,11 @@
2258603944,2258603951,TW
2258603952,2258603967,HK
2258603968,2258604031,TW
-2258604032,2258604287,HK
-2258604288,2258604671,TW
+2258604032,2258604543,HK
+2258604544,2258604671,TW
2258604672,2258604735,SG
2258604736,2258604799,AU
-2258604800,2258605055,HK
-2258605056,2258605311,TW
+2258604800,2258605311,HK
2258605312,2258605439,SG
2258605440,2258605823,TW
2258605824,2258605951,AU
@@ -40718,12 +43644,7 @@
2258606000,2258606015,AU
2258606016,2258606047,TW
2258606048,2258606079,AU
-2258606080,2258606143,TW
-2258606144,2258606147,HK
-2258606148,2258606151,TW
-2258606152,2258606191,HK
-2258606192,2258606199,TW
-2258606200,2258606367,HK
+2258606080,2258606367,HK
2258606368,2258606415,TW
2258606416,2258606423,HK
2258606424,2258606463,TW
@@ -40743,17 +43664,17 @@
2258607088,2258607091,AU
2258607092,2258607095,NZ
2258607096,2258607103,AU
-2258607104,2258607263,TW
+2258607104,2258607171,TW
+2258607172,2258607172,AU
+2258607173,2258607263,TW
2258607264,2258607279,AU
2258607280,2258607351,TW
2258607352,2258607359,NZ
2258607360,2258607519,AU
2258607520,2258607543,TW
2258607544,2258607551,AU
-2258607552,2258607819,TW
-2258607820,2258607823,HK
-2258607824,2258607871,TW
-2258607872,2258607879,HK
+2258607552,2258607615,TW
+2258607616,2258607879,HK
2258607880,2258607903,TW
2258607904,2258607999,HK
2258608000,2258608063,TW
@@ -40762,7 +43683,8 @@
2258608256,2258608259,JP
2258608260,2258608279,TW
2258608280,2258608283,JP
-2258608284,2258608639,TW
+2258608284,2258608383,TW
+2258608384,2258608639,HK
2258608640,2258608647,AU
2258608648,2258608655,TW
2258608656,2258608663,JP
@@ -40774,12 +43696,8 @@
2258608896,2258609087,TW
2258609088,2258609119,AU
2258609120,2258609151,TW
-2258609152,2258609407,AU
-2258609408,2258609423,TW
-2258609424,2258609471,AU
-2258609472,2258609567,TW
-2258609568,2258609575,AU
-2258609576,2258609919,TW
+2258609152,2258609663,AU
+2258609664,2258609919,TW
2258609920,2258609967,AU
2258609968,2258610179,TW
2258610180,2258610183,IN
@@ -40795,35 +43713,32 @@
2258611216,2258611223,NZ
2258611224,2258611567,TW
2258611568,2258611583,AU
-2258611584,2258612223,TW
+2258611584,2258611967,TW
+2258611968,2258612223,HK
2258612224,2258612303,AU
2258612304,2258612351,TW
2258612352,2258612367,AU
2258612368,2258612383,TW
2258612384,2258612743,AU
-2258612744,2258613503,TW
+2258612744,2258612767,TW
+2258612768,2258612799,AU
+2258612800,2258613503,TW
2258613504,2258613567,AU
2258613568,2258614783,TW
2258614784,2258614815,IN
2258614816,2258615039,TW
2258615040,2258615055,IN
-2258615056,2258615347,TW
-2258615348,2258615355,AU
-2258615356,2258615391,TW
-2258615392,2258615395,AU
-2258615396,2258616191,TW
+2258615056,2258615295,TW
+2258615296,2258615551,AU
+2258615552,2258616191,TW
2258616192,2258616203,AU
2258616204,2258616207,TW
2258616208,2258616303,AU
2258616304,2258616311,TW
2258616312,2258616319,AU
-2258616320,2258620447,TW
-2258620448,2258620455,HK
-2258620456,2258620463,TW
-2258620464,2258620467,HK
-2258620468,2258620471,TW
-2258620472,2258620475,HK
-2258620476,2258632703,TW
+2258616320,2258620415,TW
+2258620416,2258621951,HK
+2258621952,2258632703,TW
2258632704,2258698239,JP
2258698240,2259222527,US
2259222528,2259288063,DE
@@ -40842,23 +43757,21 @@
2260467712,2260533247,NL
2260533248,2260598783,US
2260598784,2260664319,CA
-2260664320,2260720895,GB
-2260720896,2260721151,DE
-2260721152,2260723711,GB
+2260664320,2260720639,GB
+2260720640,2260720895,DE
+2260720896,2260723711,GB
2260723712,2260723967,IL
2260723968,2260729343,GB
2260729344,2260729599,IL
2260729600,2260729855,GB
2260729856,2260926463,US
-2260992000,2261057535,CN
+2260992000,2261057535,TH
2261057536,2261188607,US
2261188608,2261254143,CA
2261254144,2261385215,US
2261385216,2261450751,PR
2261450752,2261516287,NL
-2261516288,2261569535,US
-2261569536,2261569791,TH
-2261569792,2261647359,US
+2261516288,2261647359,US
2261647360,2261712895,FR
2261712896,2261778431,US
2261778432,2261843967,TW
@@ -40907,15 +43820,19 @@
2276786176,2276851711,CA
2276851712,2277769215,US
2277769216,2277834751,GB
-2277834752,2281007103,US
+2277834752,2280998911,US
+2280998912,2280999167,FR
+2280999168,2281007103,US
2281007104,2281007359,IN
-2281007360,2281023487,US
+2281007360,2281010159,US
+2281010160,2281010175,SG
+2281010176,2281023487,US
2281023488,2281023743,IN
2281023744,2281029631,US
2281029632,2281029887,FR
2281029888,2281037823,US
-2281037824,2281038079,FR
-2281038080,2281701375,US
+2281037824,2281037951,FR
+2281037952,2281701375,US
2281701376,2281705471,CH
2281705472,2282226175,US
2282226176,2282226243,AU
@@ -40945,9 +43862,7 @@
2292973568,2293039103,DE
2293039104,2293080575,LU
2293080576,2293080831,BE
-2293080832,2293085183,LU
-2293085184,2293085439,BE
-2293085440,2293104639,LU
+2293080832,2293104639,LU
2293104640,2293825535,US
2293825536,2293891071,IN
2293891072,2293956607,AU
@@ -40970,7 +43885,11 @@
2297298944,2297364479,CH
2297364480,2297626623,US
2297626624,2297692159,DE
-2297692160,2299461631,US
+2297692160,2298144255,US
+2298144256,2298144511,GB
+2298144512,2298371071,US
+2298371072,2298371327,GB
+2298371328,2299461631,US
2299461632,2299527167,CA
2299527168,2299592703,US
2299592704,2299658239,NL
@@ -40997,7 +43916,7 @@
2303189558,2303189558,IE
2303189559,2303262719,US
2303262720,2303328255,GB
-2303328256,2303393791,CA
+2303328256,2303393791,HK
2303393792,2303459327,US
2303459328,2303524863,AU
2303524864,2303852543,US
@@ -41158,17 +44077,18 @@
2321874944,2321940479,JP
2321940480,2322006015,FR
2322006016,2322071551,US
-2322071552,2322137087,GB
+2322071552,2322130431,GB
+2322130432,2322130687,SG
+2322130688,2322137087,GB
2322137088,2322202623,US
2322202624,2322268159,SE
2322268160,2322333695,JP
2322333696,2322923519,US
2323054592,2323120127,CA
2323316736,2323382271,US
-2323382272,2323406847,NO
-2323406848,2323407103,DK
-2323407104,2323447807,NO
-2323447808,2323775487,US
+2323382272,2323447807,NO
+2323447808,2323693567,US
+2323709952,2323775487,US
2323775488,2323841023,AU
2323841024,2323906559,CH
2323906560,2323972095,IT
@@ -41214,7 +44134,13 @@
2330525696,2330591231,SE
2330591232,2330656767,US
2330656768,2330722303,NZ
-2330722304,2331181055,US
+2330722304,2330956287,US
+2330956288,2330956543,GB
+2330956544,2330956799,US
+2330956800,2330957311,NZ
+2330957312,2330968063,US
+2330968064,2330968319,IN
+2330968320,2331181055,US
2331181056,2331246591,JP
2331246592,2331443199,DE
2331443200,2331508735,US
@@ -41224,7 +44150,9 @@
2331836416,2331901951,GB
2331901952,2331967487,US
2332033024,2332098559,ID
-2332098560,2332360703,DE
+2332098560,2332298751,DE
+2332298752,2332298879,GB
+2332298880,2332360703,DE
2332426240,2332622847,DE
2332622848,2332688383,CN
2332688384,2332753919,NL
@@ -41348,7 +44276,6 @@
2344353792,2344419327,AU
2344419328,2344484863,CN
2344484864,2344550399,PK
-2344609024,2344609279,IT
2344615936,2344878079,ID
2344878080,2346188799,CN
2346188800,2346254335,AU
@@ -41513,12 +44440,17 @@
2372075520,2372206591,DE
2372206592,2372214783,UA
2372214784,2372218879,DE
-2372218880,2372222975,FR
+2372218880,2372222463,FR
+2372222464,2372222975,CH
2372224512,2372224767,GB
-2372227072,2372227583,NO
-2372230400,2372230655,AT
-2372231424,2372231679,HU
+2372227072,2372227327,NO
+2372227500,2372227510,NO
+2372227520,2372227522,NO
+2372227571,2372227571,NO
+2372228352,2372228607,KR
+2372230400,2372230655,RU
2372231680,2372232191,GB
+2372233472,2372233727,NO
2372238730,2372238730,US
2372239360,2372240383,SK
2372240384,2372240895,NL
@@ -41540,7 +44472,8 @@
2372493312,2372497407,ES
2372497408,2372499455,IE
2372499456,2372501503,NL
-2372501504,2372505599,UA
+2372501504,2372503551,BG
+2372503552,2372505599,UA
2372505600,2372507647,NL
2372507648,2372509695,IT
2372509696,2372510207,AE
@@ -41548,7 +44481,9 @@
2372510336,2372510336,ES
2372510337,2372510463,AO
2372510464,2372511743,AE
-2372511744,2372513791,SI
+2372511744,2372512815,SI
+2372512816,2372512816,BA
+2372512817,2372513791,SI
2372513792,2372534271,GB
2372534272,2372665343,US
2372665344,2372730879,IT
@@ -41573,11 +44508,7 @@
2373911042,2373911042,US
2373911043,2373976063,FI
2373976064,2374107135,US
-2374107136,2374171135,DE
-2374171136,2374171206,CH
-2374171207,2374171207,DE
-2374171208,2374171391,CH
-2374171392,2374172671,DE
+2374107136,2374172671,DE
2374172672,2374238207,US
2374238208,2374303743,AU
2374303744,2374369279,US
@@ -41620,7 +44551,9 @@
2375155712,2375221247,US
2375221248,2375286783,SE
2375286784,2375352319,CH
-2375352320,2376269823,US
+2375352320,2376079615,US
+2376079616,2376079871,GB
+2376079872,2376269823,US
2376269824,2376335359,GB
2376335360,2376597503,US
2376597504,2376663039,AU
@@ -41647,7 +44580,11 @@
2378026240,2378026495,US
2378026496,2378027007,FR
2378027008,2378170367,US
-2378170368,2378235903,FI
+2378170368,2378203135,FI
+2378203136,2378203647,NO
+2378203648,2378210559,FI
+2378210560,2378211071,NO
+2378211072,2378235903,FI
2378235904,2378301439,US
2378301440,2378366975,FR
2378366976,2378432511,US
@@ -41674,9 +44611,7 @@
2380558848,2380559103,ZA
2380559104,2380578815,GB
2380578816,2380579071,JP
-2380579072,2380579327,GB
-2380579328,2380579583,HK
-2380579584,2380595199,GB
+2380579072,2380595199,GB
2380660736,2380726271,US
2380726272,2380791807,GB
2380791808,2381119487,US
@@ -41695,8 +44630,10 @@
2382168064,2382233599,BE
2382233600,2382299135,US
2382299136,2382331903,GR
-2382331904,2382335999,FR
-2382336000,2382340095,NL
+2382331904,2382336255,FR
+2382336256,2382337791,NL
+2382337792,2382338047,FR
+2382338048,2382340095,NL
2382340096,2382342143,CH
2382342144,2382344191,AT
2382344192,2382346239,NL
@@ -41723,7 +44660,9 @@
2382659072,2382676479,US
2382676480,2382676991,CA
2382676992,2382677503,US
-2382677504,2382677987,CA
+2382677504,2382677507,CA
+2382677508,2382677511,BY
+2382677512,2382677987,CA
2382677988,2382677991,US
2382677992,2382678015,CA
2382678016,2382678527,US
@@ -41746,15 +44685,13 @@
2386690048,2386988287,CA
2386988288,2386988543,CH
2386988544,2386989055,CA
-2386989056,2386989311,GB
+2386989056,2386989311,CH
2386989312,2387003391,CA
-2387003392,2387003647,GB
+2387003392,2387003647,CH
2387003648,2387003903,CA
-2387003904,2387004159,GB
+2387003904,2387004159,CH
2387004160,2387344127,CA
-2387344128,2387344895,US
-2387344896,2387345151,CA
-2387345152,2387345407,US
+2387344128,2387345407,US
2387345408,2387410943,CA
2387410944,2387476479,US
2387476480,2387542015,CA
@@ -41773,23 +44710,21 @@
2390818816,2390884351,US
2390884352,2390995455,CA
2390995456,2391015423,US
-2391015424,2391277567,CA
+2391015424,2391165439,CA
+2391165440,2391165695,US
+2391165696,2391277567,CA
2391277568,2391343103,US
-2391343104,2393044095,CA
-2393044096,2393044223,US
-2393044224,2394947583,CA
+2391343104,2393313407,CA
+2393313408,2393313535,US
+2393313536,2394947583,CA
2394947584,2395013119,US
2395013120,2395209727,CA
2395209728,2395340799,US
-2395340800,2395804159,CA
-2395804160,2395804415,GB
-2395804416,2395814911,CA
+2395340800,2395814911,CA
2395814912,2395815167,US
2395815168,2395841023,CA
2395841024,2395841535,GB
-2395841536,2395854079,CA
-2395854080,2395854335,US
-2395854336,2397700095,CA
+2395841536,2397700095,CA
2397700096,2397765631,US
2397765632,2398748671,CA
2398748672,2398945279,US
@@ -41987,7 +44922,9 @@
2427322368,2427453439,US
2427453440,2427536895,NO
2427536896,2427537151,US
-2427537152,2427584511,NO
+2427537152,2427544319,NO
+2427544320,2427544575,MY
+2427544576,2427584511,NO
2427584512,2427650047,GB
2427650048,2427846655,NO
2427846656,2428174335,US
@@ -42014,9 +44951,7 @@
2432172032,2432237567,BE
2432237568,2432568575,US
2432568576,2432568831,BE
-2432568832,2432577535,US
-2432577536,2432577791,GB
-2432577792,2432587263,US
+2432568832,2432587263,US
2432587264,2432587519,IE
2432587520,2432616447,US
2432616448,2432617471,NL
@@ -42098,7 +45033,8 @@
2449477632,2449479679,AL
2449479680,2449481727,FR
2449481728,2449485823,DE
-2449485824,2449489919,RO
+2449485824,2449487871,IE
+2449487872,2449489919,RO
2449489920,2449490943,FR
2449490944,2449491199,DE
2449491200,2449491967,FR
@@ -42119,7 +45055,9 @@
2450849792,2450915327,SE
2450915328,2451026431,US
2451026432,2451026687,AU
-2451026688,2451042815,US
+2451026688,2451031807,US
+2451031808,2451032063,SG
+2451032064,2451042815,US
2451042816,2451043071,ZA
2451043072,2451986959,US
2451986960,2451986960,GB
@@ -42143,7 +45081,7 @@
2453803008,2453805055,KZ
2453805056,2453807103,FI
2453807104,2453815295,GB
-2453815296,2453831679,RO
+2453815296,2453831679,BG
2453831680,2453833727,IQ
2453833728,2453835775,ES
2453835776,2453837823,FR
@@ -42164,11 +45102,14 @@
2454585344,2454716415,US
2454716416,2454781951,GB
2454781952,2454847487,FI
-2454847488,2454851583,US
+2454847488,2454851327,US
+2454851328,2454851583,DE
2454851584,2454851839,DK
2454851840,2454853119,US
2454853120,2454853375,DK
-2454853376,2454885503,US
+2454853376,2454864895,US
+2454864896,2454865151,FR
+2454865152,2454885503,US
2454885504,2454885631,GB
2454885632,2454887423,US
2454887424,2454887679,DK
@@ -42178,9 +45119,9 @@
2454905920,2454905951,AR
2454905952,2454906943,US
2454906944,2454906951,CL
-2454906952,2454907265,US
-2454907266,2454907266,CL
-2454907267,2454907903,US
+2454906952,2454907263,US
+2454907264,2454907391,CL
+2454907392,2454907903,US
2454907904,2454908159,VE
2454908160,2454913023,US
2454913024,2454978559,CL
@@ -42194,9 +45135,10 @@
2455247872,2455248895,US
2455248896,2455257087,TH
2455257088,2455261183,PH
-2455261184,2455262207,US
+2455261184,2455262207,MY
2455262208,2455263231,KR
-2455263232,2455273471,US
+2455263232,2455265279,PH
+2455265280,2455273471,US
2455273472,2455275519,AU
2455275520,2455371775,US
2455371776,2455437311,GB
@@ -42258,9 +45200,7 @@
2459893760,2459959295,CH
2459959296,2460024831,US
2460024832,2460090367,FI
-2460090368,2460152319,GB
-2460152320,2460152575,FR
-2460152576,2460155903,GB
+2460090368,2460155903,GB
2460155904,2460221439,US
2460221440,2460286975,BR
2460286976,2460549119,US
@@ -42269,7 +45209,9 @@
2460680192,2460745727,NZ
2460745728,2460811263,NO
2460811264,2460876799,SE
-2460876800,2460942335,US
+2460876800,2460920319,US
+2460920320,2460920575,GB
+2460920576,2460942335,US
2460942336,2461007871,BE
2461007872,2461138943,GB
2461138944,2461204479,AU
@@ -42371,7 +45313,9 @@
2466242560,2466250751,GE
2466250752,2466318335,US
2466318336,2466318591,SG
-2466318592,2466323455,US
+2466318592,2466319103,US
+2466319104,2466319359,AU
+2466319360,2466323455,US
2466323456,2466323711,SG
2466323712,2466326015,US
2466326016,2466326271,SG
@@ -42409,11 +45353,15 @@
2470248448,2470510591,US
2470510592,2470576127,BR
2470576128,2470641663,AU
-2470641664,2470707199,LU
+2470641664,2470703359,LU
+2470703360,2470703615,BE
+2470703616,2470707199,LU
2470707200,2470772735,GB
2470772736,2470838271,AU
2470838272,2471165951,US
-2471165952,2471231487,CH
+2471165952,2471198719,CH
+2471198720,2471211007,US
+2471211008,2471231487,CH
2471231488,2471297023,AU
2471297024,2471362559,GB
2471428096,2471690239,US
@@ -42538,7 +45486,13 @@
2486697984,2486763519,AT
2486763520,2486960127,US
2486960128,2487025663,FR
-2487025664,2488205311,US
+2487025664,2487369727,US
+2487369728,2487369983,PF
+2487369984,2487370495,US
+2487370496,2487384319,PF
+2487384320,2487384575,US
+2487384576,2487386111,PF
+2487386112,2488205311,US
2488205312,2488270847,GB
2488270848,2488336383,US
2488336384,2488401919,PL
@@ -42550,11 +45504,7 @@
2489712640,2489745407,PE
2489745408,2489778175,HT
2489778176,2489843711,DO
-2489843712,2489995519,US
-2489995520,2489995544,SG
-2489995545,2489995545,US
-2489995546,2489995775,SG
-2489995776,2490013695,US
+2489843712,2490013695,US
2490013696,2490015743,GB
2490015744,2490043391,US
2490043392,2490043647,GB
@@ -42580,23 +45530,17 @@
2492989440,2493513727,US
2493513728,2493579263,SE
2493579264,2493644799,JP
-2493644800,2493755391,US
-2493755904,2493756415,US
-2493759488,2494103551,US
+2493644800,2494103551,US
2494103552,2494169087,FR
2494169088,2494562303,US
2494562304,2494627839,GB
2494627840,2494650623,US
2494650624,2494650879,BR
-2494650880,2494657535,US
-2494657536,2494657791,CO
-2494657792,2494677247,US
+2494650880,2494677247,US
2494677248,2494677503,AU
2494677504,2494677759,US
2494677760,2494678015,AU
-2494678016,2494683135,US
-2494683136,2494683391,SG
-2494683392,2494689791,US
+2494678016,2494689791,US
2494689792,2494690047,IN
2494690048,2494889983,US
2494889984,2494955519,GB
@@ -42604,13 +45548,13 @@
2495021056,2495152127,US
2495217664,2495283199,US
2495283200,2495348735,CH
-2495348736,2495410943,US
-2495410944,2495411199,AU
-2495411200,2495807487,US
+2495348736,2495807487,US
2495807488,2495873023,AU
2495873024,2495938559,CH
2495938560,2496004095,GB
-2496004096,2496069631,AT
+2496004096,2496015103,AT
+2496015104,2496015359,PL
+2496015360,2496069631,AT
2496069632,2496135167,US
2496135168,2496200703,NL
2496200704,2497682431,MX
@@ -42650,29 +45594,37 @@
2500149504,2500149759,GB
2500149760,2500150527,US
2500150528,2500150783,GB
-2500150784,2500158463,US
-2500158464,2500158719,GB
-2500158720,2500161023,US
+2500150784,2500161023,US
2500161024,2500161535,GB
-2500161536,2500162175,US
-2500162176,2500162815,GB
-2500162816,2500166207,US
-2500166208,2500166223,GB
-2500166224,2500175871,US
+2500161536,2500162559,US
+2500162560,2500162815,GB
+2500162816,2500166143,US
+2500166144,2500166399,GB
+2500166400,2500175871,US
2500175872,2500175879,RO
-2500175880,2500188159,US
-2500188160,2500188415,CH
-2500188416,2500198911,US
+2500175880,2500188679,US
+2500188680,2500188687,CH
+2500188688,2500196351,US
+2500196352,2500198399,FI
+2500198400,2500198911,US
2500198912,2500199167,GB
2500199168,2500199423,US
2500199424,2500199679,IE
-2500199680,2500201535,US
+2500199680,2500200703,US
+2500200704,2500200959,GB
+2500200960,2500201535,US
2500201536,2500201543,GB
2500201544,2500202879,US
2500202880,2500203007,ES
-2500203008,2500219135,US
+2500203008,2500212415,US
+2500212416,2500212423,CH
+2500212424,2500212991,US
+2500212992,2500213247,ES
+2500213248,2500219135,US
2500219136,2500219391,DE
-2500219392,2500225551,US
+2500219392,2500221455,US
+2500221456,2500221459,FR
+2500221460,2500225551,US
2500225552,2500225559,ES
2500225560,2500228607,US
2500228608,2500228863,FR
@@ -42694,23 +45646,23 @@
2500245504,2500245759,GB
2500245760,2500246015,US
2500246016,2500246527,GB
-2500246528,2500272127,US
+2500246528,2500247551,US
+2500247552,2500248063,ES
+2500248064,2500272127,US
2500272128,2500272639,GB
-2500272640,2500274431,US
-2500274432,2500274687,GB
-2500274688,2500275199,US
-2500275200,2500275711,GB
-2500275712,2500276223,US
+2500272640,2500276223,US
2500276224,2500276735,GB
2500276736,2500276991,US
2500276992,2500277247,GB
2500277248,2500289023,US
-2500289024,2500289279,FR
-2500289280,2500292607,US
+2500289024,2500289151,FR
+2500289152,2500292607,US
2500292608,2500292863,DE
2500292864,2500293375,US
2500293376,2500293631,DE
-2500293632,2500319231,US
+2500293632,2500313855,US
+2500313856,2500314111,AT
+2500314112,2500319231,US
2500319232,2500319743,ES
2500319744,2500392959,US
2500392960,2500393215,IN
@@ -42720,9 +45672,13 @@
2500532750,2500532750,GR
2500532751,2500535295,US
2500535296,2500535551,IE
-2500535552,2500537687,US
+2500535552,2500537343,US
+2500537344,2500537599,GB
+2500537600,2500537687,US
2500537688,2500537695,GB
-2500537696,2500551679,US
+2500537696,2500542751,US
+2500542752,2500542755,NL
+2500542756,2500551679,US
2500551680,2500551935,FR
2500551936,2500553759,US
2500553760,2500553767,GB
@@ -42730,9 +45686,7 @@
2500554380,2500554487,DE
2500554488,2500555263,US
2500555264,2500555519,FR
-2500555520,2500558847,US
-2500558848,2500559103,FR
-2500559104,2500591615,US
+2500555520,2500591615,US
2500591616,2500595711,GB
2500595712,2500608511,US
2500608512,2500608767,ES
@@ -42742,19 +45696,27 @@
2500616192,2500616703,IT
2500616704,2500636735,US
2500636736,2500636799,GB
-2500636800,2500638719,US
+2500636800,2500637727,US
+2500637728,2500637759,GB
+2500637760,2500638719,US
2500638720,2500639743,GB
-2500639744,2500644863,US
-2500644864,2500645119,FR
-2500645120,2500646911,US
+2500639744,2500646911,US
2500646912,2500647935,ES
-2500647936,2500687871,US
+2500647936,2500666111,US
+2500666112,2500666367,LU
+2500666368,2500666463,US
+2500666464,2500666471,LU
+2500666472,2500687871,US
2500687872,2500689919,FR
2500689920,2500694271,US
2500694272,2500694527,IT
2500694528,2500719103,US
2500719104,2500720639,IE
-2500720640,2501574655,US
+2500720640,2500720652,US
+2500720653,2500720653,IE
+2500720654,2500723799,US
+2500723800,2500723807,ES
+2500723808,2501574655,US
2501574656,2501640191,KZ
2501640192,2503016447,US
2503016448,2503081983,IL
@@ -42774,17 +45736,28 @@
2503917568,2503933951,BG
2503933952,2504470527,US
2504470528,2504470783,ES
-2504470784,2504474623,US
+2504470784,2504472831,US
+2504472832,2504473599,ES
+2504473600,2504474623,US
2504474624,2504482815,HR
-2504482816,2504491007,US
+2504482816,2504486911,ES
+2504486912,2504491007,US
2504491008,2504499199,IT
2504499200,2504916991,US
2504916992,2504982527,IL
-2504982528,2505793535,US
+2504982528,2505457663,US
+2505457664,2505459711,IE
+2505459712,2505469951,US
+2505469952,2505474047,NL
+2505474048,2505572351,US
+2505572352,2505637887,IL
+2505637888,2505793535,US
2505793536,2505801727,ES
2505801728,2506293247,US
2506293248,2506358783,CA
-2506358784,2506360831,US
+2506358784,2506359039,US
+2506359040,2506359295,ES
+2506359296,2506360831,US
2506360832,2506361087,ES
2506361088,2507124735,US
2507124736,2507124991,IN
@@ -42816,7 +45789,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
@@ -43143,7 +46118,7 @@
2545090560,2545156095,US
2545156096,2545221631,GB
2545221632,2545287167,US
-2545287168,2545352703,GB
+2545287168,2545352703,ES
2545352704,2545352959,SE
2545352960,2545418239,CH
2545418240,2545483775,NL
@@ -43154,7 +46129,8 @@
2545811456,2547187711,US
2547187712,2547318783,GB
2547318784,2547515391,US
-2547515392,2547523583,GB
+2547523584,2547535871,GB
+2547540480,2547540735,SE
2547553024,2547553279,RU
2548039680,2548563967,GB
2548563968,2548826111,IR
@@ -43198,7 +46174,8 @@
2549612544,2549614591,SE
2549614592,2549616639,IT
2549616640,2549618687,BE
-2549618688,2549620735,DE
+2549618688,2549618943,US
+2549618944,2549620735,DE
2549620736,2549624831,PL
2549624832,2549626879,BE
2549626880,2549628927,PL
@@ -43208,7 +46185,8 @@
2549645312,2549678079,CH
2549678080,2549698559,GB
2549698560,2549700607,PL
-2549700608,2549701375,DE
+2549700608,2549700863,FR
+2549700864,2549701375,DE
2549701376,2549701631,SE
2549701632,2549701887,PL
2549701888,2549702143,FR
@@ -43236,7 +46214,8 @@
2549927936,2549929983,HR
2549929984,2549932031,DE
2549932032,2549940223,HR
-2549940224,2550136831,RO
+2549940224,2550005759,AE
+2550005760,2550136831,RO
2550136832,2550202367,DO
2550202368,2553544703,US
2553544704,2553610239,IN
@@ -43282,7 +46261,8 @@
2556780032,2556780799,SG
2556780800,2556821503,HK
2556821504,2556887039,SG
-2556887040,2557018111,HK
+2556887040,2556985343,HK
+2556985344,2557018111,CN
2557018112,2557083647,GB
2557083648,2557542399,ZA
2557542400,2557607935,US
@@ -43392,7 +46372,86 @@
2584412160,2584477695,CA
2584477696,2584608767,US
2584608768,2584739839,CH
-2584739840,2584805375,MU
+2584739840,2584739903,SG
+2584739904,2584740351,MU
+2584740352,2584740415,HK
+2584740416,2584740863,MU
+2584740864,2584740927,SG
+2584740928,2584741375,MU
+2584741376,2584741439,HK
+2584741440,2584741887,MU
+2584741888,2584741951,SG
+2584741952,2584742399,MU
+2584742400,2584742463,HK
+2584742464,2584742911,MU
+2584742912,2584742975,SG
+2584742976,2584743423,MU
+2584743424,2584743487,HK
+2584743488,2584743935,MU
+2584743936,2584743999,SG
+2584744000,2584744447,MU
+2584744448,2584744511,HK
+2584744512,2584744959,MU
+2584744960,2584745023,SG
+2584745024,2584745471,MU
+2584745472,2584745535,HK
+2584745536,2584745983,MU
+2584745984,2584746047,SG
+2584746048,2584746495,MU
+2584746496,2584746559,HK
+2584746560,2584747007,MU
+2584747008,2584747071,SG
+2584747072,2584747519,MU
+2584747520,2584747583,HK
+2584747584,2584748031,MU
+2584748032,2584748095,SG
+2584748096,2584748543,MU
+2584748544,2584748607,HK
+2584748608,2584749055,MU
+2584749056,2584749119,SG
+2584749120,2584749567,MU
+2584749568,2584749631,HK
+2584749632,2584750079,MU
+2584750080,2584750143,SG
+2584750144,2584750591,MU
+2584750592,2584750655,HK
+2584750656,2584751103,MU
+2584751104,2584751167,SG
+2584751168,2584751615,MU
+2584751616,2584751679,HK
+2584751680,2584752127,MU
+2584752128,2584752191,SG
+2584752192,2584752639,MU
+2584752640,2584752703,HK
+2584752704,2584753151,MU
+2584753152,2584753215,SG
+2584753216,2584753663,MU
+2584753664,2584753727,HK
+2584753728,2584754175,MU
+2584754176,2584754239,SG
+2584754240,2584754687,MU
+2584754688,2584754751,HK
+2584754752,2584755199,MU
+2584755200,2584755263,SG
+2584755264,2584755711,MU
+2584755712,2584755775,HK
+2584755776,2584756223,MU
+2584756224,2584756287,SG
+2584756288,2584756735,MU
+2584756736,2584756799,HK
+2584756800,2584757247,MU
+2584757248,2584757311,SG
+2584757312,2584757759,MU
+2584757760,2584757823,HK
+2584757824,2584758271,MU
+2584758272,2584758335,SG
+2584758336,2584758783,MU
+2584758784,2584758847,HK
+2584758848,2584759295,MU
+2584759296,2584759359,SG
+2584759360,2584759807,MU
+2584759808,2584759871,HK
+2584759872,2584805375,MU
2584805376,2585001983,US
2585001984,2585067519,CA
2585067520,2585788415,US
@@ -43409,18 +46468,27 @@
2586610176,2586610431,ES
2586610432,2586610687,US
2586610688,2586611711,ES
-2586611712,2586611967,GB
-2586611968,2586619903,US
+2586611712,2586619903,US
2586619904,2586620415,FR
2586620416,2586622463,US
2586622464,2586622975,ES
-2586622976,2586640895,US
+2586622976,2586640383,US
+2586640384,2586640399,MC
+2586640400,2586640895,US
2586640896,2586641407,FR
2586641408,2586650687,US
2586650688,2586650703,DE
-2586650704,2586733567,US
+2586650704,2586650879,US
+2586650880,2586651135,NL
+2586651136,2586714879,US
+2586714880,2586715135,NL
+2586715136,2586733567,US
2586733568,2586733823,LT
-2586733824,2586804223,US
+2586733824,2586734591,US
+2586734592,2586735615,LT
+2586735616,2586788607,US
+2586788608,2586788863,GB
+2586788864,2586804223,US
2586804224,2586804479,ES
2586804480,2586828799,US
2586828800,2586829055,CH
@@ -43429,8 +46497,8 @@
2586874880,2586875135,US
2586875136,2586875903,ES
2586875904,2586876927,US
-2586876928,2586877951,ES
-2586877952,2586952191,US
+2586876928,2586879999,ES
+2586880000,2586952191,US
2586952192,2586952447,FR
2586952448,2587017215,US
2587017216,2587017471,IE
@@ -43440,8 +46508,8 @@
2587021824,2587022335,IE
2587022336,2587066879,US
2587066880,2587067135,GB
-2587067136,2587067647,US
-2587067648,2587067903,GB
+2587067136,2587067391,US
+2587067392,2587067903,GB
2587067904,2587068415,US
2587068416,2587068479,GB
2587068480,2587071759,US
@@ -43454,27 +46522,43 @@
2587240390,2587240390,FR
2587240391,2587249417,US
2587249418,2587249418,FR
-2587249419,2587394047,US
+2587249419,2587378175,US
+2587378176,2587378431,IT
+2587378432,2587379967,US
+2587379968,2587380223,IT
+2587380224,2587394047,US
2587394048,2587394559,ES
-2587394560,2587396095,US
+2587394560,2587394815,US
+2587394816,2587395071,ES
+2587395072,2587396095,US
2587396096,2587399167,ES
2587399168,2587443199,US
2587443200,2587447295,CH
2587447296,2587476760,US
2587476761,2587476761,LB
-2587476762,2587479119,US
+2587476762,2587477759,US
+2587477760,2587478015,LB
+2587478016,2587479119,US
2587479120,2587479120,LB
-2587479121,2587481969,US
+2587479121,2587481087,US
+2587481088,2587481343,LB
+2587481344,2587481969,US
2587481970,2587481970,LB
2587481971,2587492351,US
2587492352,2587493375,ES
2587493376,2587508735,US
2587508736,2587525119,GB
2587525120,2587542527,US
-2587542528,2587543551,ES
-2587543552,2587926527,US
+2587542528,2587544063,ES
+2587544064,2587582463,US
+2587582464,2587586559,NL
+2587586560,2587926527,US
2587926528,2587930623,BG
-2587930624,2587951103,US
+2587930624,2587939071,US
+2587939072,2587939583,PR
+2587939584,2587940607,US
+2587940608,2587940863,PR
+2587940864,2587951103,US
2587951104,2587952127,ZA
2587952128,2587953151,NG
2587953152,2587954175,MU
@@ -43483,7 +46567,9 @@
2587959296,2587961343,SN
2587961344,2587962367,ZA
2587962368,2587963391,SS
-2587963392,2587964415,SD
+2587963392,2587964027,SD
+2587964028,2587964028,SS
+2587964029,2587964415,SD
2587964416,2587965439,ZA
2587965440,2587966463,KE
2587966464,2587967487,BF
@@ -43550,7 +46636,7 @@
2588442624,2588459007,CM
2588459008,2588467199,UG
2588467200,2588471295,TN
-2588471296,2588476415,ZA
+2588471296,2588477439,ZA
2588477440,2588478463,NG
2588478464,2588479487,UG
2588479488,2588480511,ZA
@@ -43576,7 +46662,7 @@
2588494848,2588495871,SO
2588495872,2588496895,ZW
2588496896,2588497919,BW
-2588497920,2588498943,SD
+2588497920,2588498943,SS
2588498944,2588499967,DZ
2588499968,2588500991,ZA
2588500992,2588502015,CI
@@ -43588,21 +46674,31 @@
2588507136,2588508159,SO
2588508160,2588510207,LY
2588510208,2588512255,ZA
-2588522496,2588526591,ZA
+2588512256,2588514303,TZ
+2588514304,2588516351,ZA
+2588516352,2588518399,TD
+2588519424,2588520447,SN
+2588520448,2588521471,SL
+2588521472,2588526591,ZA
2588526592,2588528639,CM
-2588528640,2588530687,ZA
-2588532736,2588534783,ZA
-2588536832,2588538879,ZA
+2588528640,2588534783,ZA
+2588534784,2588535807,ZM
+2588535808,2588536831,NG
+2588536832,2588540927,ZA
2588672000,2588934143,KE
2588934144,2589982719,SC
2589982720,2590507007,SD
2590507008,2591031295,TN
2591031296,2591096831,GA
2591293440,2591326207,GA
+2591326208,2591358975,AO
+2591490048,2591498239,BI
+2591498240,2591510527,ZA
+2591514624,2591522815,SZ
2591522816,2591526911,LR
-2591531008,2591539199,ZA
+2591526912,2591539199,ZA
2591539200,2591547391,GA
-2591547392,2591555583,ZA
+2591547392,2591571967,ZA
2591571968,2591588351,NG
2591588352,2591604735,MG
2591604736,2591612927,MU
@@ -43615,21 +46711,20 @@
2592006144,2592022527,TZ
2592022528,2592026623,BJ
2592026624,2592026879,US
-2592026880,2592027391,MU
+2592026880,2592027391,ZA
2592027392,2592027647,GB
-2592027648,2592028159,MU
+2592027648,2592028159,ZA
2592028160,2592028415,CA
-2592028416,2592028671,MU
+2592028416,2592028671,ZA
2592028672,2592028799,NG
2592028800,2592028927,KE
-2592028928,2592029183,MU
+2592028928,2592029183,ZA
2592029184,2592029311,CI
-2592029312,2592029695,MU
-2592029696,2592030207,ZA
+2592029312,2592030207,ZA
2592030208,2592030335,GH
2592030336,2592030463,CM
2592030464,2592030591,UG
-2592030592,2592030719,MU
+2592030592,2592030719,ZA
2592030720,2592034815,LY
2592034816,2592038911,NE
2592038912,2592043007,DZ
@@ -43678,9 +46773,7 @@
2609119232,2609184767,FR
2609184768,2609250303,PL
2609250304,2609381375,US
-2609381376,2609428479,GB
-2609428480,2609428735,IN
-2609428736,2609446911,GB
+2609381376,2609446911,GB
2609446912,2609512447,DK
2609512448,2609643519,US
2609643520,2609709055,GB
@@ -43717,9 +46810,7 @@
2614165504,2614231039,NO
2614231040,2614296575,ES
2614296576,2614362111,BR
-2614362112,2614386431,US
-2614386432,2614386559,PR
-2614386560,2615083007,US
+2614362112,2615083007,US
2615083008,2615148543,TR
2615148544,2615345151,US
2615345152,2615410687,NO
@@ -43773,7 +46864,7 @@
2617146624,2617146879,GY
2617146880,2617147135,DE
2617147136,2617147391,AO
-2617147392,2617148159,US
+2617147392,2617148415,US
2617151488,2617155583,CA
2617155584,2617163775,US
2617163776,2617164031,SK
@@ -43909,6 +47000,7 @@
2627010560,2627076095,NZ
2627076096,2627141631,NL
2627141632,2627403775,US
+2627469312,2627731455,TZ
2634022912,2634088447,CN
2634088448,2634350591,JP
2634416128,2635005951,JP
@@ -44005,7 +47097,9 @@
2647326720,2647392255,GB
2647392256,2647457791,US
2647457792,2647523327,JP
-2647523328,2647687167,US
+2647523328,2647605503,US
+2647605504,2647605759,GB
+2647605760,2647687167,US
2647687168,2647687423,CA
2647687424,2647851007,US
2647851008,2647916543,AU
@@ -44064,7 +47158,9 @@
2655125504,2655191039,PL
2655256576,2655715327,US
2655715328,2655780863,PL
-2655780864,2656632831,US
+2655780864,2656387071,US
+2656387072,2656403455,CA
+2656403456,2656632831,US
2656632832,2656698367,AU
2656698368,2656763903,FI
2656763904,2656829439,US
@@ -44087,7 +47183,9 @@
2658009088,2658074623,IT
2658074624,2658140159,US
2658140160,2658205695,NO
-2658205696,2658598911,US
+2658205696,2658451455,US
+2658451456,2658451711,MY
+2658451712,2658598911,US
2658598912,2658664447,GB
2658664448,2658926591,US
2658926592,2659057663,GB
@@ -44119,9 +47217,7 @@
2661548032,2661679103,US
2661679104,2661885951,LU
2661885952,2661886207,BE
-2661886208,2661909247,LU
-2661909248,2661909503,BE
-2661909504,2661914111,LU
+2661886208,2661914111,LU
2661914112,2661914367,BE
2661914368,2661941247,LU
2661941248,2662006783,CL
@@ -44155,7 +47251,9 @@
2665545728,2665611263,DE
2665611264,2665676799,CH
2665676800,2665742335,ES
-2665742336,2665873407,US
+2665742336,2665783551,US
+2665783552,2665783807,GB
+2665783808,2665873407,US
2665873408,2665938943,GB
2665938944,2666004479,FR
2666004480,2666070015,CH
@@ -44178,8 +47276,7 @@
2667528192,2667532287,FR
2667532288,2667534335,RU
2667534336,2667536383,PL
-2667536384,2667536639,FR
-2667536640,2667537087,AT
+2667536384,2667537087,AT
2667537088,2667537119,FR
2667537120,2667537151,AT
2667537152,2667541503,FR
@@ -44225,7 +47322,10 @@
2668102648,2668102655,US
2668102656,2668102991,NL
2668102992,2668102999,US
-2668103000,2668103743,NL
+2668103000,2668103719,NL
+2668103720,2668103727,US
+2668103728,2668103735,NL
+2668103736,2668103743,US
2668103744,2668103775,KE
2668103776,2668104127,NL
2668104128,2668104135,GB
@@ -44233,8 +47333,84 @@
2668104192,2668104207,KE
2668104208,2668104247,NL
2668104248,2668104255,US
-2668104256,2668167167,NL
-2668167168,2668363775,US
+2668104256,2668104999,NL
+2668105000,2668105015,US
+2668105016,2668105063,NL
+2668105064,2668105071,US
+2668105072,2668105135,NL
+2668105136,2668105151,US
+2668105152,2668105223,NL
+2668105224,2668105239,US
+2668105240,2668105255,NL
+2668105256,2668105271,US
+2668105272,2668105287,NL
+2668105288,2668105351,US
+2668105352,2668105383,NL
+2668105384,2668105391,US
+2668105392,2668105399,NL
+2668105400,2668105439,US
+2668105440,2668105471,NL
+2668105472,2668105479,US
+2668105480,2668105727,NL
+2668105728,2668105791,US
+2668105792,2668106935,NL
+2668106936,2668106943,US
+2668106944,2668106951,NL
+2668106952,2668106959,US
+2668106960,2668107599,NL
+2668107600,2668107607,US
+2668107608,2668107679,NL
+2668107680,2668107687,US
+2668107688,2668107711,NL
+2668107712,2668107759,US
+2668107760,2668107767,NL
+2668107768,2668107775,US
+2668107776,2668108303,NL
+2668108304,2668108335,US
+2668108336,2668108343,CA
+2668108344,2668108359,US
+2668108360,2668108383,NL
+2668108384,2668108391,US
+2668108392,2668108399,NL
+2668108400,2668108415,US
+2668108416,2668108799,NL
+2668108800,2668108807,US
+2668108808,2668108823,NL
+2668108824,2668108831,US
+2668108832,2668108855,NL
+2668108856,2668108863,US
+2668108864,2668108887,NL
+2668108888,2668108903,US
+2668108904,2668108919,NL
+2668108920,2668108927,US
+2668108928,2668108935,NL
+2668108936,2668108951,GB
+2668108952,2668108967,NL
+2668108968,2668108983,US
+2668108984,2668108999,NL
+2668109000,2668109023,US
+2668109024,2668109031,NL
+2668109032,2668109047,US
+2668109048,2668109063,NL
+2668109064,2668109071,US
+2668109072,2668109615,NL
+2668109616,2668109623,US
+2668109624,2668109639,NL
+2668109640,2668109663,US
+2668109664,2668109671,NL
+2668109672,2668109687,US
+2668109688,2668109695,NL
+2668109696,2668109743,US
+2668109744,2668109751,NL
+2668109752,2668109759,US
+2668109760,2668109951,NL
+2668109952,2668110047,US
+2668110048,2668134399,NL
+2668134400,2668150783,GB
+2668150784,2668167167,NL
+2668167168,2668286463,US
+2668286464,2668286719,GB
+2668286720,2668363775,US
2668363776,2668429311,CH
2668429312,2668494847,AU
2668494848,2668560383,US
@@ -44253,9 +47429,14 @@
2668916736,2668918783,TR
2668918784,2668920831,ES
2668920832,2668953599,IT
-2668953600,2668989951,US
+2668953600,2668969983,US
+2668969984,2668971007,GB
+2668971008,2668987135,US
+2668987136,2668987391,AU
+2668987392,2668989951,US
2668989952,2668990463,NZ
-2668990464,2669019135,US
+2668990464,2668991487,IN
+2668991488,2669019135,US
2669019136,2669084671,CH
2669084672,2669150207,ES
2669150208,2669215743,US
@@ -44280,9 +47461,9 @@
2671378432,2671443967,NO
2671443968,2671509503,US
2671509504,2671575039,NL
-2671575040,2671720191,US
-2671720192,2671720447,VE
-2671720448,2671749119,US
+2671575040,2671711479,US
+2671711480,2671711483,DE
+2671711484,2671749119,US
2671749120,2671750143,CA
2671750144,2672295935,US
2672295936,2672361471,SE
@@ -44303,9 +47484,7 @@
2673737728,2673803263,US
2673803264,2673868799,FR
2673868800,2674130943,US
-2674130944,2674163711,GB
-2674163712,2674171903,CA
-2674171904,2674175999,GB
+2674130944,2674175999,GB
2674176000,2674192383,US
2674192384,2674196479,CH
2674196480,2674249727,GB
@@ -44337,23 +47516,25 @@
2677080064,2677145599,US
2677145600,2677178367,TR
2677178368,2677211135,UA
-2677211136,2677276671,GB
+2677211136,2677276671,ES
2677276672,2677342207,LV
2677342208,2677407743,IT
2677407744,2677473279,US
2677473280,2677538815,FR
2677538816,2677604351,FI
-2677604352,2677622783,US
-2677622784,2677623039,IE
-2677623040,2677635071,US
+2677604352,2677635071,US
2677635072,2677636095,CN
2677636096,2677639679,US
2677639680,2677639935,CA
2677639936,2677642239,US
2677642240,2677642495,ES
-2677642496,2677642751,US
+2677642496,2677642751,CA
2677642752,2677643007,SE
-2677643008,2677648383,US
+2677643008,2677644287,US
+2677644288,2677644347,GB
+2677644348,2677644348,US
+2677644349,2677644543,GB
+2677644544,2677648383,US
2677648384,2677649407,JP
2677649408,2677650431,US
2677650432,2677650943,RO
@@ -44368,7 +47549,9 @@
2677669888,2677735423,DE
2677735424,2677800959,US
2677800960,2677866495,CH
-2677866496,2677997567,US
+2677866496,2677924863,US
+2677924864,2677925119,GB
+2677925120,2677997567,US
2677997568,2678063103,CA
2678063104,2678128639,UA
2678128640,2678194175,US
@@ -44411,7 +47594,10 @@
2679242752,2679308287,US
2679308288,2679373823,CH
2679373824,2679406591,GB
-2679406592,2679422975,BR
+2679406592,2679414783,US
+2679414784,2679418879,BR
+2679418880,2679420927,SG
+2679420928,2679422975,BR
2679422976,2679431167,US
2679431168,2679439359,FR
2679439360,2679523327,US
@@ -44448,7 +47634,9 @@
2682014208,2682014719,GB
2682014720,2682015231,US
2682015232,2682015487,IN
-2682015488,2682123263,US
+2682015488,2682107903,US
+2682107904,2682108159,GB
+2682108160,2682123263,US
2682123264,2682123519,AU
2682123520,2682257407,US
2682257408,2682322943,UA
@@ -44467,8 +47655,9 @@
2683371520,2683437055,CH
2683437056,2683568127,US
2683568128,2683633663,GB
-2683637760,2683637859,NL
-2683637861,2683641855,NL
+2683637760,2683637859,FR
+2683637861,2683638015,FR
+2683638016,2683641855,NL
2683641856,2683645951,US
2683646208,2683650047,SG
2683650048,2683651071,US
@@ -44508,13 +47697,17 @@
2684191988,2684191999,US
2684192000,2684192103,NL
2684192104,2684192107,US
-2684192108,2684192303,NL
+2684192108,2684192151,NL
+2684192152,2684192159,US
+2684192160,2684192303,NL
2684192304,2684192311,US
2684192312,2684192387,NL
2684192388,2684192391,US
2684192392,2684192459,NL
2684192460,2684192463,US
-2684192464,2684192511,NL
+2684192464,2684192495,NL
+2684192496,2684192503,US
+2684192504,2684192511,NL
2684192512,2684192519,US
2684192520,2684192523,NL
2684192524,2684192535,US
@@ -44530,7 +47723,9 @@
2684192980,2684192983,US
2684192984,2684193147,NL
2684193148,2684193151,US
-2684193152,2684193275,NL
+2684193152,2684193175,NL
+2684193176,2684193183,US
+2684193184,2684193275,NL
2684193276,2684193279,US
2684193280,2684193447,NL
2684193448,2684193455,AZ
@@ -44538,7 +47733,9 @@
2684193584,2684193591,IE
2684193592,2684193735,NL
2684193736,2684193743,US
-2684193744,2684193887,NL
+2684193744,2684193751,NL
+2684193752,2684193759,US
+2684193760,2684193887,NL
2684193888,2684193911,US
2684193912,2684193931,NL
2684193932,2684193935,US
@@ -44551,7 +47748,9 @@
2684194144,2684194151,US
2684194152,2684194167,NL
2684194168,2684194171,US
-2684194172,2684194351,NL
+2684194172,2684194319,NL
+2684194320,2684194327,SA
+2684194328,2684194351,NL
2684194352,2684194359,US
2684194360,2684194487,NL
2684194488,2684194495,GB
@@ -44563,7 +47762,9 @@
2684194560,2684194623,US
2684194624,2684194723,NL
2684194724,2684194727,US
-2684194728,2684195119,NL
+2684194728,2684194815,NL
+2684194816,2684194823,US
+2684194824,2684195119,NL
2684195120,2684195123,US
2684195124,2684195199,NL
2684195200,2684195263,US
@@ -44573,7 +47774,9 @@
2684195336,2684195339,US
2684195340,2684195663,NL
2684195664,2684195667,US
-2684195668,2684195867,NL
+2684195668,2684195695,NL
+2684195696,2684195703,US
+2684195704,2684195867,NL
2684195868,2684195871,US
2684195872,2684195927,NL
2684195928,2684195935,JP
@@ -44581,7 +47784,9 @@
2684195980,2684195983,US
2684195984,2684196095,NL
2684196096,2684196159,US
-2684196160,2684196343,NL
+2684196160,2684196215,NL
+2684196216,2684196223,US
+2684196224,2684196343,NL
2684196344,2684196351,US
2684196352,2684196391,NL
2684196392,2684196399,US
@@ -44595,7 +47800,9 @@
2684196940,2684196943,US
2684196944,2684196959,NL
2684196960,2684196963,US
-2684196964,2684197099,NL
+2684196964,2684197031,NL
+2684197032,2684197039,IT
+2684197040,2684197099,NL
2684197100,2684197103,US
2684197104,2684197115,NL
2684197116,2684197119,US
@@ -44660,9 +47867,8 @@
2687041536,2687238143,US
2687238144,2687297231,DE
2687297232,2687297239,GB
-2687297240,2687301375,DE
-2687301376,2687301631,NL
-2687301632,2687560191,DE
+2687297240,2687297247,SE
+2687297248,2687560191,DE
2687560192,2687560447,ZA
2687560448,2687762431,DE
2687762432,2687827967,AT
@@ -44744,8 +47950,8 @@
2697854976,2697889791,AU
2697889792,2697891839,US
2697891840,2697892863,AU
-2697892864,2697894143,US
-2697894144,2697920511,AU
+2697892864,2697894399,US
+2697894400,2697920511,AU
2697920512,2698117119,US
2698117120,2698182655,IS
2698182656,2698248191,DE
@@ -44759,6 +47965,7 @@
2698838016,2698903551,BE
2698903552,2698969087,AU
2698969088,2699034623,CA
+2699034624,2699165695,AO
2699231232,2699296767,US
2699296768,2699362303,FR
2699362304,2699624447,US
@@ -44826,9 +48033,7 @@
2704343040,2704408575,US
2704408576,2704474111,AU
2704474112,2704476927,US
-2704476928,2704476929,GB
-2704476930,2704476930,US
-2704476931,2704477183,GB
+2704476928,2704477183,GB
2704477184,2704485119,US
2704485120,2704485375,AU
2704485376,2704539647,US
@@ -44847,9 +48052,7 @@
2705522688,2705588223,ES
2705588224,2705596159,US
2705596160,2705596415,CA
-2705596416,2705621247,US
-2705621248,2705621503,CH
-2705621504,2705691647,US
+2705596416,2705691647,US
2705691648,2705692671,GB
2705692672,2705710079,US
2705710080,2705711103,IN
@@ -44911,7 +48114,8 @@
2713583616,2713649151,AR
2713649152,2713946367,US
2713946368,2713946623,CA
-2713946624,2713976831,US
+2713946624,2713946879,GB
+2713946880,2713976831,US
2713976832,2714042367,VE
2714042368,2714238975,US
2714238976,2714304511,TH
@@ -45003,7 +48207,9 @@
2731674624,2731679743,US
2731679744,2731680767,CA
2731680768,2731681791,US
-2731681792,2731682815,PR
+2731681792,2731682047,PR
+2731682048,2731682303,VI
+2731682304,2731682815,PR
2731682816,2731685887,US
2731685888,2731686911,CA
2731686912,2731688959,US
@@ -45087,9 +48293,7 @@
2732220416,2732227583,US
2732227584,2732228607,CA
2732228608,2732261375,US
-2732261376,2732262399,CA
-2732262400,2732263423,US
-2732263424,2732265471,CA
+2732261376,2732265471,CA
2732265472,2732273663,US
2732273664,2732275711,CA
2732275712,2732278783,US
@@ -45112,7 +48316,8 @@
2732351488,2732353535,PR
2732353536,2732361727,US
2732361728,2732363775,BB
-2732363776,2732375039,US
+2732363776,2732371967,US
+2732372992,2732375039,US
2732375040,2732376063,CA
2732376064,2732379135,US
2732379136,2732380159,CA
@@ -45352,12 +48557,15 @@
2737769472,2737770495,IN
2737770496,2737771263,AU
2737771264,2737771519,JP
-2737771520,2737772031,AU
-2737772544,2737774591,JP
+2737771520,2737771775,AU
+2737771776,2737772031,NZ
+2737772288,2737774591,JP
2737774592,2737776639,BD
2737776640,2737777663,AU
2737777664,2737778175,HK
-2737778432,2737785855,AU
+2737778432,2737781759,AU
+2737781760,2737782783,US
+2737782784,2737785855,AU
2737785856,2737788927,BD
2737788928,2737789951,MY
2737789952,2737793023,AU
@@ -45471,7 +48679,9 @@
2746482688,2746548223,KR
2746548224,2746824703,US
2746824704,2746824959,CA
-2746824960,2747072511,US
+2746824960,2746839295,US
+2746839296,2746839551,CA
+2746839552,2747072511,US
2747072512,2747138047,AU
2747138048,2747465727,US
2747465728,2748055551,ZA
@@ -45495,7 +48705,9 @@
2750873600,2750939135,CL
2750939136,2751070207,US
2751070208,2751135743,CL
-2751135744,2751397887,US
+2751135744,2751176703,US
+2751176704,2751176959,GU
+2751176960,2751397887,US
2751397888,2751463423,KR
2751463424,2751528959,KZ
2751528960,2751660031,FR
@@ -45637,9 +48849,7 @@
2765568000,2765570047,IR
2765570048,2765578239,RU
2765578240,2765580287,AZ
-2765580288,2765581567,GB
-2765581568,2765581823,ZA
-2765581824,2765582335,GB
+2765580288,2765582335,GB
2765582336,2765586431,CZ
2765586432,2765619199,IR
2765619200,2768240639,US
@@ -45661,7 +48871,9 @@
2770337792,2770993151,US
2770993152,2771124223,IN
2771124224,2771451903,US
+2771517440,2771648511,TN
2771648512,2771910655,ZA
+2771910656,2772434943,ZM
2772434944,2772631551,US
2772697088,2772762623,US
2772762624,2772828159,AU
@@ -45717,8 +48929,8 @@
2780561408,2780758015,US
2780758016,2780823551,AU
2780823552,2780925951,US
-2780925952,2780926207,GB
-2780926208,2780926975,US
+2780925952,2780926463,GB
+2780926464,2780926975,US
2780926976,2780927487,GB
2780927488,2780927743,US
2780927744,2780927999,GB
@@ -45768,11 +48980,12 @@
2784165888,2784296959,KR
2784296960,2784362495,US
2784362496,2784428031,KR
-2784428032,2784952319,US
-2785017856,2785300735,US
-2785300736,2785300991,PR
-2785300992,2785542143,US
-2785542144,2786066431,CH
+2784428032,2784952063,US
+2784952064,2784952319,NL
+2785017856,2785542143,US
+2785542144,2785673215,CH
+2785673216,2785738751,NL
+2785738752,2786066431,CH
2786066432,2788163583,US
2788163584,2788229119,CA
2788229120,2788261887,US
@@ -45832,13 +49045,13 @@
2803826688,2803892223,US
2803892224,2805465087,CA
2805465088,2805989375,UY
-2805989376,2806012927,US
-2806012928,2806013183,HK
-2806013184,2806644735,US
+2805989376,2806644735,US
2806644736,2806710271,CA
2806710272,2807103487,US
2807103488,2807169023,NL
-2807169024,2807566335,US
+2807169024,2807271679,US
+2807271680,2807271935,AU
+2807271936,2807566335,US
2807566336,2807574527,CA
2807574528,2807587071,US
2807587072,2807587327,IT
@@ -45867,7 +49080,11 @@
2808872960,2808938495,UY
2808938496,2809069567,US
2809069568,2809135103,SA
-2809135104,2809397247,US
+2809135104,2809266175,US
+2809266176,2809286975,CA
+2809286976,2809286991,US
+2809286992,2809331711,CA
+2809331712,2809397247,US
2809397248,2809462783,UY
2809462784,2809855999,US
2809856000,2809921535,AU
@@ -45943,9 +49160,11 @@
2816264704,2816270335,US
2816270336,2816271615,SG
2816271616,2816271871,JP
-2816271872,2816272383,IN
+2816271872,2816272127,IN
+2816272128,2816272383,AU
2816272384,2816273407,JP
-2816273408,2816275455,IN
+2816273408,2816274431,IN
+2816274432,2816275455,AU
2816275456,2816278527,SG
2816278528,2816671743,US
2816671744,2816737279,CA
@@ -45955,8 +49174,7 @@
2817277952,2817294335,NL
2817294336,2817933055,US
2817933056,2817933311,CA
-2817933312,2817933567,PR
-2817933568,2818002943,US
+2817933312,2818002943,US
2818002944,2818003722,GB
2818003723,2818003723,US
2818003724,2818004991,GB
@@ -45964,7 +49182,9 @@
2818244608,2818310143,US
2818310144,2818375679,AR
2818375680,2818572287,US
-2818637824,2818703359,NL
+2818637824,2818654207,NL
+2818654208,2818670591,AU
+2818670592,2818703359,NL
2818703360,2822731894,US
2822731895,2822731895,GB
2822731896,2823159807,US
@@ -46050,7 +49270,9 @@
2829844480,2829910015,ZA
2829910016,2830066431,US
2830066432,2830066687,HK
-2830066688,2830106623,US
+2830066688,2830085887,US
+2830085888,2830086143,GB
+2830086144,2830106623,US
2830106624,2830172159,CO
2830172160,2830434303,US
2830499840,2830761983,US
@@ -46079,7 +49301,7 @@
2833907712,2833973247,GT
2833973248,2834010111,US
2834010112,2834014207,CA
-2834018304,2834030591,US
+2834014208,2834030591,US
2834030592,2834034687,CA
2834034688,2834497535,US
2834497536,2834563071,SV
@@ -46090,11 +49312,21 @@
2835218432,2835283967,US
2835283968,2835349503,MX
2835480576,2837446655,US
-2837446656,2838822911,CH
+2837446656,2837839871,CH
+2837839872,2837905407,NL
+2837905408,2838298623,CH
+2838298624,2838495231,NL
+2838495232,2838691839,CH
+2838691840,2838757375,NL
+2838757376,2838822911,CH
2838822912,2839019519,NL
2839019520,2839085055,CH
-2839085056,2839150591,NL
-2839150592,2839543807,CH
+2839085056,2839101439,NL
+2839101440,2839117823,MX
+2839117824,2839150591,NL
+2839150592,2839281663,CH
+2839281664,2839412735,NL
+2839412736,2839543807,CH
2839543808,2843803647,US
2843803648,2843869183,ZA
2843869184,2844524543,US
@@ -46124,6 +49356,17 @@
2849964032,2850029567,HK
2850029568,2851012607,US
2851078144,2851995647,US
+2852061184,2852062207,ZA
+2852063232,2852064255,KE
+2852064256,2852065279,ZA
+2852065280,2852066303,GH
+2852067328,2852068351,SD
+2852069376,2852070399,ZA
+2852071424,2852072447,NG
+2852072448,2852073471,ZA
+2852073472,2852074495,TZ
+2852074496,2852075519,MW
+2852075520,2852076543,ZA
2852192256,2852716653,US
2852716654,2852716654,AU
2852716655,2853306367,US
@@ -46139,11 +49382,7 @@
2855484672,2855485439,AR
2855485440,2855501823,UY
2855501824,2855534591,AR
-2855534592,2855811583,US
-2855811584,2855811730,DE
-2855811731,2855811731,US
-2855811732,2855811839,DE
-2855811840,2856058879,US
+2855534592,2856058879,US
2856058880,2856124415,CH
2856124416,2856184831,US
2856184832,2856185855,GB
@@ -46157,9 +49396,7 @@
2857697280,2858352639,US
2858418176,2859007999,US
2859008000,2859073535,JP
-2859073536,2861069055,US
-2861069056,2861069311,GB
-2861069312,2861850879,US
+2859073536,2861850879,US
2861850880,2861851391,HK
2861851392,2861851647,US
2861851648,2861861375,HK
@@ -46185,26 +49422,28 @@
2864844800,2864845055,NL
2864845056,2864848895,US
2864848896,2864849151,GB
-2864849152,2865417215,US
-2865417216,2865417471,GB
-2865417472,2865577983,US
+2864849152,2865417457,US
+2865417458,2865417458,GB
+2865417459,2865577983,US
2865577984,2865610751,BE
2865610752,2865889279,US
2865889280,2865954815,AR
-2865954816,2867265535,US
+2865954816,2866953215,US
+2866953216,2866953471,AU
+2866953472,2867265535,US
2867331072,2867396607,US
2867462144,2867593215,US
2867593216,2867724287,CH
2867855360,2868117503,US
-2868379648,2868605183,US
-2868605184,2868605439,NO
-2868605440,2868658175,US
+2868379648,2868605376,US
+2868605377,2868605377,NO
+2868605378,2868658175,US
2868658176,2868658431,GB
-2868658432,2868676607,US
+2868658432,2868673023,US
+2868673024,2868673279,FR
+2868673280,2868676607,US
2868676608,2868676863,AU
-2868676864,2868689407,US
-2868689408,2868689663,AU
-2868689664,2868772863,US
+2868676864,2868772863,US
2868838400,2868903935,BE
2868903936,2869035007,SG
2869035008,2869166079,JP
@@ -46213,7 +49452,9 @@
2869952512,2870018047,FR
2870018048,2870083583,DE
2870083584,2870089727,FR
-2870089728,2870091775,DE
+2870089728,2870090495,DE
+2870090496,2870090751,BE
+2870090752,2870091775,DE
2870091776,2870149119,FR
2870149120,2870214655,HU
2870214656,2870280191,DK
@@ -46363,19 +49604,15 @@
2905446656,2905446911,DE
2905446912,2905473023,US
2905473024,2905481215,CA
-2905481216,2913086719,US
-2913086720,2913086812,CA
-2913086813,2913086813,US
-2913086814,2913086816,CA
-2913086817,2913086817,US
-2913086818,2913086819,CA
-2913086820,2913086820,US
-2913086821,2913086975,CA
-2913086976,2913992703,US
+2905481216,2913992703,US
2913992704,2914516991,CA
-2914516992,2915092135,US
-2915092136,2915092143,SA
-2915092144,2915250175,US
+2914516992,2915195647,US
+2915195648,2915195903,CL
+2915195904,2915196927,US
+2915196928,2915197183,IE
+2915197184,2915197439,US
+2915197440,2915197695,FI
+2915197696,2915250175,US
2915250176,2915254271,CA
2915254272,2915516415,US
2915516416,2915516671,NL
@@ -46409,7 +49646,9 @@
2916319232,2916335615,PR
2916335616,2916368383,US
2916368384,2916401151,CA
-2916401152,2916515839,US
+2916401152,2916410879,US
+2916410880,2916411135,GB
+2916411136,2916515839,US
2916515840,2916519935,CA
2916519936,2916581375,US
2916581376,2916614143,PR
@@ -46432,7 +49671,8 @@
2917267712,2917267967,AG
2917267968,2917268223,JM
2917268224,2917268479,BB
-2917268480,2917269503,JM
+2917268480,2917268735,TC
+2917268736,2917269503,JM
2917269504,2917449727,US
2917449728,2917466111,PR
2917466112,2917572607,US
@@ -46488,11 +49728,7 @@
2918023168,2918043647,US
2918043648,2918047743,CA
2918047744,2918051839,US
-2918051840,2918111999,CA
-2918112000,2918112127,US
-2918112128,2918112895,CA
-2918112896,2918113023,US
-2918113024,2918121471,CA
+2918051840,2918121471,CA
2918121472,2918154239,US
2918154240,2918170623,CA
2918170624,2918187775,US
@@ -46517,9 +49753,7 @@
2918395904,2918404095,US
2918404096,2918406911,PR
2918406912,2918407167,US
-2918407168,2918407295,PR
-2918407296,2918407423,US
-2918407424,2918408191,PR
+2918407168,2918408191,PR
2918408192,2918432767,US
2918432768,2918436863,CA
2918436864,2918469631,US
@@ -46530,17 +49764,13 @@
2918473216,2918473727,CA
2918473728,2918477823,US
2918477824,2918481919,CA
-2918481920,2918528255,US
-2918528256,2918528511,NO
-2918528512,2918528767,US
-2918528768,2918528863,CA
-2918528864,2918528883,US
-2918528884,2918528885,CA
-2918528886,2918530559,US
-2918530560,2918530815,PH
-2918530816,2918536719,US
+2918481920,2918527743,US
+2918527744,2918527999,NO
+2918528000,2918536719,US
2918536720,2918536727,CA
-2918536728,2918570239,US
+2918536728,2918568191,US
+2918568192,2918568319,AU
+2918568320,2918570239,US
2918570240,2918570495,JP
2918570496,2918580223,US
2918580224,2918588415,CA
@@ -46607,42 +49837,49 @@
2919759872,2921512703,US
2921512704,2921512959,CA
2921512960,2921530367,US
-2921530368,2921531391,DE
-2921531392,2921541119,US
+2921530368,2921530879,DE
+2921530880,2921541119,US
2921541120,2921541375,DE
2921541376,2921542143,US
2921542144,2921542399,CA
-2921542400,2921545727,US
+2921542400,2921545215,US
+2921545216,2921545727,DE
2921545728,2921545983,NL
-2921545984,2921546495,US
+2921545984,2921546239,US
+2921546240,2921546495,FR
2921546496,2921546751,NL
-2921546752,2921547519,US
+2921546752,2921547007,US
+2921547008,2921547263,FR
+2921547264,2921547519,US
2921547520,2921547775,DE
2921547776,2921548031,GB
-2921548032,2921548799,US
-2921548800,2921549055,FR
+2921548032,2921548831,US
+2921548832,2921549055,FR
2921549056,2921550335,US
2921550336,2921550591,IT
-2921550592,2921552895,US
+2921550592,2921551615,US
+2921551616,2921551871,BR
+2921551872,2921552127,AR
+2921552128,2921552383,US
+2921552384,2921552639,MX
+2921552640,2921552895,US
2921552896,2921553151,CL
2921553152,2921553407,BR
2921553408,2921553663,CO
2921553664,2921562111,US
2921562112,2921594879,CA
-2921594880,2925002751,US
+2921594880,2921681631,US
+2921681632,2921681639,JP
+2921681640,2925002751,US
2925002752,2925527039,CA
2925527040,2926575615,US
-2926575616,2926777343,CA
-2926777344,2926777855,US
-2926777856,2926778111,CA
-2926778112,2926778239,US
-2926778240,2926779391,CA
-2926779392,2926779519,US
-2926779520,2927084799,CA
-2927084800,2927085055,US
-2927085056,2927085567,CA
-2927085568,2927085823,US
-2927085824,2927099903,CA
+2926575616,2926777727,CA
+2926777728,2926777983,US
+2926777984,2927084543,CA
+2927084544,2927085055,US
+2927085056,2927085311,CA
+2927085312,2927085567,US
+2927085568,2927099903,CA
2927099904,2927242751,US
2927242752,2927243263,AE
2927243264,2927254783,US
@@ -46687,16 +49924,15 @@
2938634240,2938699775,IN
2938699776,2938700031,PH
2938700032,2938700287,ID
-2938700288,2938700543,KR
+2938700288,2938700543,AE
2938700544,2938701055,SG
2938701056,2938701311,IQ
2938701312,2938701567,AU
-2938701568,2938701823,KR
-2938701824,2938702079,IN
+2938701568,2938702079,IN
2938702080,2938703103,HK
2938703104,2938703359,IL
2938703360,2938703615,ZA
-2938703616,2938703871,KR
+2938703616,2938703871,IN
2938703872,2938707967,HK
2938707968,2938710015,JP
2938710016,2938712063,AU
@@ -46786,9 +50022,9 @@
2947598336,2947602431,AU
2947602432,2947603455,NZ
2947603456,2947604479,TH
-2947604480,2947609599,HK
-2947609600,2947609855,GB
-2947609856,2947612671,HK
+2947604480,2947611135,HK
+2947611136,2947611391,AU
+2947611392,2947612671,HK
2947612672,2947678207,JP
2947678208,2947743743,CN
2947743744,2947809279,JP
@@ -46815,9 +50051,7 @@
2953466368,2953466879,GB
2953467392,2953467647,GB
2953467904,2953469951,BE
-2953469952,2953474815,CH
-2953474816,2953475071,DE
-2953475072,2953478143,CH
+2953469952,2953478143,CH
2953478144,2953503551,SE
2953503552,2953503559,NO
2953503560,2953510911,SE
@@ -46827,9 +50061,7 @@
2953596928,2953598975,ES
2953598976,2953601023,IT
2953601024,2953603071,RU
-2953603072,2953603977,GB
-2953603978,2953603979,IE
-2953603980,2953605119,GB
+2953603072,2953605119,GB
2953605120,2953609215,CZ
2953609216,2953707519,IL
2953707520,2953838591,RU
@@ -46843,149 +50075,992 @@
2954647552,2954657791,ES
2954657792,2954756095,JO
2954756096,2954821631,TR
-2954821632,2954822927,FR
+2954821632,2954821651,FR
+2954821652,2954821655,IT
+2954821656,2954821775,FR
+2954821776,2954821783,IT
+2954821784,2954822047,FR
+2954822048,2954822063,ES
+2954822064,2954822159,FR
+2954822160,2954822167,GB
+2954822168,2954822175,NL
+2954822176,2954822255,FR
+2954822256,2954822263,PL
+2954822264,2954822311,FR
+2954822312,2954822319,GB
+2954822320,2954822335,FR
+2954822336,2954822339,PL
+2954822340,2954822347,FR
+2954822348,2954822351,BE
+2954822352,2954822527,FR
+2954822528,2954822531,ES
+2954822532,2954822559,FR
+2954822560,2954822575,NL
+2954822576,2954822591,FR
+2954822592,2954822599,GB
+2954822600,2954822655,FR
+2954822656,2954822687,GB
+2954822688,2954822783,FR
+2954822784,2954822791,GB
+2954822792,2954822927,FR
2954822928,2954822931,DE
-2954822932,2954823395,FR
+2954822932,2954823071,FR
+2954823072,2954823103,BE
+2954823104,2954823263,FR
+2954823264,2954823295,CZ
+2954823296,2954823383,FR
+2954823384,2954823387,DE
+2954823388,2954823395,FR
2954823396,2954823399,GB
-2954823400,2954824255,FR
+2954823400,2954823403,NL
+2954823404,2954823551,FR
+2954823552,2954823555,BE
+2954823556,2954823559,CZ
+2954823560,2954823567,FR
+2954823568,2954823583,GB
+2954823584,2954823703,FR
+2954823704,2954823707,NL
+2954823708,2954823767,FR
+2954823768,2954823771,GB
+2954823772,2954823779,FR
+2954823780,2954823791,GB
+2954823792,2954823891,FR
+2954823892,2954823895,CH
+2954823896,2954823903,FR
+2954823904,2954823911,DE
+2954823912,2954823927,FR
+2954823928,2954823935,CH
+2954823936,2954823999,FR
+2954824000,2954824015,ES
+2954824016,2954824031,FR
+2954824032,2954824047,IT
+2954824048,2954824255,FR
2954824256,2954824259,ES
-2954824260,2954825063,FR
+2954824260,2954824271,FR
+2954824272,2954824275,ES
+2954824276,2954824279,FR
+2954824280,2954824283,PT
+2954824284,2954824431,FR
+2954824432,2954824447,PL
+2954824448,2954824711,FR
+2954824712,2954824719,ES
+2954824720,2954824735,FI
+2954824736,2954824767,DE
+2954824768,2954824775,FR
+2954824776,2954824783,IT
+2954824784,2954824911,FR
+2954824912,2954824919,CH
+2954824920,2954824943,FR
+2954824944,2954824959,BE
+2954824960,2954824975,FR
+2954824976,2954824991,ES
+2954824992,2954825023,FR
+2954825024,2954825039,NL
+2954825040,2954825063,FR
2954825064,2954825067,ES
-2954825068,2954825315,FR
+2954825068,2954825159,FR
+2954825160,2954825167,GB
+2954825168,2954825183,FR
+2954825184,2954825191,GB
+2954825192,2954825271,FR
+2954825272,2954825275,ES
+2954825276,2954825315,FR
2954825316,2954825319,ES
-2954825320,2954825403,FR
+2954825320,2954825327,FR
+2954825328,2954825335,DE
+2954825336,2954825343,FR
+2954825344,2954825351,DE
+2954825352,2954825375,FR
+2954825376,2954825383,DE
+2954825384,2954825403,FR
2954825404,2954825407,ES
2954825408,2954825535,FR
2954825536,2954825539,ES
-2954825540,2954826031,FR
+2954825540,2954825551,FR
+2954825552,2954825567,ES
+2954825568,2954825759,FR
+2954825760,2954825791,LT
+2954825792,2954825927,FR
+2954825928,2954825931,CZ
+2954825932,2954826031,FR
2954826032,2954826035,ES
-2954826036,2954826159,FR
+2954826036,2954826039,FR
+2954826040,2954826043,DE
+2954826044,2954826063,FR
+2954826064,2954826071,DE
+2954826072,2954826159,FR
2954826160,2954826163,ES
-2954826164,2954826755,FR
+2954826164,2954826167,FR
+2954826168,2954826175,DE
+2954826176,2954826279,FR
+2954826280,2954826287,ES
+2954826288,2954826343,FR
+2954826344,2954826351,NL
+2954826352,2954826379,FR
+2954826380,2954826383,ES
+2954826384,2954826403,FR
+2954826404,2954826407,IT
+2954826408,2954826415,FR
+2954826416,2954826423,NL
+2954826424,2954826447,FR
+2954826448,2954826451,GB
+2954826452,2954826471,FR
+2954826472,2954826475,GB
+2954826476,2954826755,FR
2954826756,2954826759,IT
2954826760,2954826763,ES
2954826764,2954826775,FR
2954826776,2954826779,ES
-2954826780,2954827799,FR
+2954826780,2954826799,FR
+2954826800,2954826807,ES
+2954826808,2954827007,FR
+2954827008,2954827135,ES
+2954827136,2954827167,FR
+2954827168,2954827199,GB
+2954827200,2954827231,FR
+2954827232,2954827263,BE
+2954827264,2954827295,ES
+2954827296,2954827391,FR
+2954827392,2954827423,DE
+2954827424,2954827647,FR
+2954827648,2954827775,GB
+2954827776,2954827779,FR
+2954827780,2954827783,GB
+2954827784,2954827799,FR
2954827800,2954827807,DE
-2954827808,2954829395,FR
+2954827808,2954827811,IT
+2954827812,2954827823,FR
+2954827824,2954827831,IE
+2954827832,2954827839,PT
+2954827840,2954827855,FR
+2954827856,2954827871,ES
+2954827872,2954827999,FR
+2954828000,2954828031,NL
+2954828032,2954828159,FR
+2954828160,2954828191,IT
+2954828192,2954828447,FR
+2954828448,2954828463,GB
+2954828464,2954828471,IT
+2954828472,2954828799,FR
+2954828800,2954828815,GB
+2954828816,2954828823,FR
+2954828824,2954828831,PT
+2954828832,2954828839,DE
+2954828840,2954828959,FR
+2954828960,2954828975,PL
+2954828976,2954829135,FR
+2954829136,2954829139,DE
+2954829140,2954829179,FR
+2954829180,2954829183,NL
+2954829184,2954829215,GB
+2954829216,2954829375,FR
+2954829376,2954829391,ES
+2954829392,2954829395,FR
2954829396,2954829399,IT
-2954829400,2954829751,FR
+2954829400,2954829427,FR
+2954829428,2954829431,NL
+2954829432,2954829435,GB
+2954829436,2954829459,FR
+2954829460,2954829463,PL
+2954829464,2954829727,FR
+2954829728,2954829735,DE
+2954829736,2954829751,FR
2954829752,2954829752,ES
2954829753,2954829759,FR
2954829760,2954829823,ES
2954829824,2954829843,FR
2954829844,2954829847,DE
-2954829848,2954830395,FR
+2954829848,2954829855,FR
+2954829856,2954829871,PL
+2954829872,2954829875,FR
+2954829876,2954829879,DE
+2954829880,2954829887,FR
+2954829888,2954829903,BE
+2954829904,2954829983,FR
+2954829984,2954830015,GB
+2954830016,2954830111,FR
+2954830112,2954830127,IE
+2954830128,2954830183,FR
+2954830184,2954830191,IT
+2954830192,2954830207,FR
+2954830208,2954830271,PL
+2954830272,2954830287,FR
+2954830288,2954830303,NL
+2954830304,2954830375,FR
+2954830376,2954830383,DE
+2954830384,2954830391,FR
+2954830392,2954830395,BE
2954830396,2954830399,ES
-2954830400,2954831247,FR
+2954830400,2954830447,FR
+2954830448,2954830455,PL
+2954830456,2954830735,FR
+2954830736,2954830751,NL
+2954830752,2954830847,FR
+2954830848,2954830855,IT
+2954830856,2954830895,FR
+2954830896,2954830911,GB
+2954830912,2954830927,FR
+2954830928,2954830931,CZ
+2954830932,2954830975,FR
+2954830976,2954830983,IT
+2954830984,2954830991,FR
+2954830992,2954830995,IT
+2954830996,2954831247,FR
2954831248,2954831251,ES
-2954831252,2954832343,FR
+2954831252,2954831255,FR
+2954831256,2954831263,DE
+2954831264,2954831327,FR
+2954831328,2954831331,LT
+2954831332,2954831503,FR
+2954831504,2954831511,NL
+2954831512,2954831519,FR
+2954831520,2954831535,BE
+2954831536,2954831543,FR
+2954831544,2954831551,ES
+2954831552,2954831611,FR
+2954831612,2954831615,ES
+2954831616,2954831667,FR
+2954831668,2954831671,CZ
+2954831672,2954831807,FR
+2954831808,2954831823,ES
+2954831824,2954831919,FR
+2954831920,2954831935,PL
+2954831936,2954832007,FR
+2954832008,2954832015,PL
+2954832016,2954832159,FR
+2954832160,2954832167,PT
+2954832168,2954832215,FR
+2954832216,2954832219,IE
+2954832220,2954832223,GB
+2954832224,2954832255,FR
+2954832256,2954832287,GB
+2954832288,2954832319,PT
+2954832320,2954832343,FR
2954832344,2954832347,CH
-2954832348,2954832891,FR
+2954832348,2954832671,FR
+2954832672,2954832679,ES
+2954832680,2954832799,FR
+2954832800,2954832815,CZ
+2954832816,2954832823,PT
+2954832824,2954832887,FR
+2954832888,2954832891,IT
2954832892,2954832895,ES
-2954832896,2954833419,FR
+2954832896,2954832927,GB
+2954832928,2954832959,DE
+2954832960,2954833039,FR
+2954833040,2954833047,CZ
+2954833048,2954833055,ES
+2954833056,2954833079,FR
+2954833080,2954833087,IT
+2954833088,2954833255,FR
+2954833256,2954833263,LT
+2954833264,2954833315,FR
+2954833316,2954833319,FI
+2954833320,2954833419,FR
2954833420,2954833423,PL
-2954833424,2954833555,FR
+2954833424,2954833551,FR
+2954833552,2954833555,ES
2954833556,2954833559,NL
2954833560,2954833567,FR
2954833568,2954833571,ES
-2954833572,2954833655,FR
+2954833572,2954833575,FR
+2954833576,2954833583,NL
+2954833584,2954833615,FR
+2954833616,2954833631,DE
+2954833632,2954833635,IT
+2954833636,2954833655,FR
2954833656,2954833659,IT
-2954833660,2954834519,FR
+2954833660,2954833679,FR
+2954833680,2954833695,ES
+2954833696,2954833723,FR
+2954833724,2954833727,LT
+2954833728,2954833855,FR
+2954833856,2954833887,ES
+2954833888,2954833919,FR
+2954833920,2954833927,GB
+2954833928,2954834007,FR
+2954834008,2954834011,GB
+2954834012,2954834063,FR
+2954834064,2954834079,ES
+2954834080,2954834095,CH
+2954834096,2954834151,FR
+2954834152,2954834159,DE
+2954834160,2954834223,FR
+2954834224,2954834227,CH
+2954834228,2954834255,FR
+2954834256,2954834271,CH
+2954834272,2954834287,FR
+2954834288,2954834303,DE
+2954834304,2954834335,NL
+2954834336,2954834431,FR
+2954834432,2954834439,PL
+2954834440,2954834447,FR
+2954834448,2954834455,ES
+2954834456,2954834495,FR
+2954834496,2954834503,PT
+2954834504,2954834519,FR
2954834520,2954834523,ES
-2954834524,2954834671,FR
+2954834524,2954834559,FR
+2954834560,2954834563,GB
+2954834564,2954834623,FR
+2954834624,2954834627,DE
+2954834628,2954834663,FR
+2954834664,2954834671,IE
2954834672,2954834675,ES
-2954834676,2954835295,FR
+2954834676,2954834847,FR
+2954834848,2954834863,ES
+2954834864,2954834871,FR
+2954834872,2954834879,PT
+2954834880,2954834911,ES
+2954834912,2954835295,FR
2954835296,2954835299,ES
-2954835300,2954835443,FR
+2954835300,2954835307,DE
+2954835308,2954835407,FR
+2954835408,2954835411,NL
+2954835412,2954835443,FR
2954835444,2954835447,ES
2954835448,2954835451,FR
2954835452,2954835455,ES
-2954835456,2954837071,FR
+2954835456,2954835479,FR
+2954835480,2954835487,PL
+2954835488,2954835583,FR
+2954835584,2954835599,PT
+2954835600,2954835607,FR
+2954835608,2954835611,PL
+2954835612,2954835615,FR
+2954835616,2954835619,DE
+2954835620,2954836031,FR
+2954836032,2954836063,DE
+2954836064,2954836239,FR
+2954836240,2954836255,IE
+2954836256,2954836351,FR
+2954836352,2954836355,IE
+2954836356,2954836359,FR
+2954836360,2954836367,ES
+2954836368,2954836399,FR
+2954836400,2954836407,BE
+2954836408,2954836415,IT
+2954836416,2954836771,FR
+2954836772,2954836775,GB
+2954836776,2954836895,FR
+2954836896,2954836903,IE
+2954836904,2954837071,FR
2954837072,2954837075,ES
-2954837076,2954837615,FR
+2954837076,2954837119,FR
+2954837120,2954837123,IE
+2954837124,2954837127,ES
+2954837128,2954837135,FR
+2954837136,2954837143,DE
+2954837144,2954837407,FR
+2954837408,2954837423,BE
+2954837424,2954837431,FR
+2954837432,2954837439,PL
+2954837440,2954837479,FR
+2954837480,2954837483,ES
+2954837484,2954837495,FR
+2954837496,2954837499,DE
+2954837500,2954837535,FR
+2954837536,2954837543,PT
+2954837544,2954837551,IT
+2954837552,2954837559,DE
+2954837560,2954837567,FR
+2954837568,2954837575,CZ
+2954837576,2954837583,FR
+2954837584,2954837591,IE
+2954837592,2954837615,FR
2954837616,2954837619,IT
-2954837620,2954837667,FR
+2954837620,2954837663,FR
+2954837664,2954837667,IT
2954837668,2954837671,ES
-2954837672,2954837827,FR
+2954837672,2954837691,FR
+2954837692,2954837695,ES
+2954837696,2954837827,FR
2954837828,2954837831,DE
2954837832,2954837867,FR
2954837868,2954837871,ES
-2954837872,2954838599,FR
+2954837872,2954837919,FR
+2954837920,2954837935,GB
+2954837936,2954838115,FR
+2954838116,2954838119,DE
+2954838120,2954838127,FR
+2954838128,2954838131,FI
+2954838132,2954838135,FR
+2954838136,2954838143,GB
+2954838144,2954838151,PL
+2954838152,2954838199,FR
+2954838200,2954838203,CH
+2954838204,2954838239,FR
+2954838240,2954838255,IT
+2954838256,2954838263,IE
+2954838264,2954838379,FR
+2954838380,2954838383,IT
+2954838384,2954838415,FR
+2954838416,2954838423,ES
+2954838424,2954838511,FR
+2954838512,2954838519,NL
+2954838520,2954838539,FR
+2954838540,2954838543,PT
+2954838544,2954838559,FR
+2954838560,2954838575,IT
+2954838576,2954838599,FR
2954838600,2954838607,GB
2954838608,2954838615,NL
-2954838616,2954839239,FR
+2954838616,2954838863,FR
+2954838864,2954838871,GB
+2954838872,2954838879,FR
+2954838880,2954838895,ES
+2954838896,2954838935,FR
+2954838936,2954838939,PL
+2954838940,2954838943,CH
+2954838944,2954838959,IT
+2954838960,2954838975,DE
+2954838976,2954838999,FR
+2954839000,2954839007,DE
+2954839008,2954839063,FR
+2954839064,2954839067,IT
+2954839068,2954839211,FR
+2954839212,2954839215,ES
+2954839216,2954839239,FR
2954839240,2954839243,IT
2954839244,2954839267,FR
2954839268,2954839271,ES
-2954839272,2954839471,FR
+2954839272,2954839343,FR
+2954839344,2954839351,FI
+2954839352,2954839403,FR
+2954839404,2954839407,IT
+2954839408,2954839423,ES
+2954839424,2954839471,FR
2954839472,2954839479,BE
-2954839480,2954840255,FR
+2954839480,2954839487,ES
+2954839488,2954839523,FR
+2954839524,2954839527,BE
+2954839528,2954839551,FR
+2954839552,2954839583,PL
+2954839584,2954839647,FR
+2954839648,2954839679,GB
+2954839680,2954840175,FR
+2954840176,2954840179,GB
+2954840180,2954840183,FR
+2954840184,2954840191,PT
+2954840192,2954840255,FR
2954840256,2954840447,GB
2954840448,2954840515,FR
2954840516,2954840519,NL
-2954840520,2954840927,FR
+2954840520,2954840575,FR
+2954840576,2954840591,DE
+2954840592,2954840619,FR
+2954840620,2954840623,ES
+2954840624,2954840639,IT
+2954840640,2954840903,FR
+2954840904,2954840911,GB
+2954840912,2954840927,FR
2954840928,2954840931,DE
-2954840932,2954841567,FR
+2954840932,2954841111,FR
+2954841112,2954841119,BE
+2954841120,2954841183,FR
+2954841184,2954841199,NL
+2954841200,2954841207,PL
+2954841208,2954841275,FR
+2954841276,2954841279,DE
+2954841280,2954841299,FR
+2954841300,2954841303,BE
+2954841304,2954841567,FR
2954841568,2954841583,ES
-2954841584,2954841707,FR
+2954841584,2954841595,FR
+2954841596,2954841599,ES
+2954841600,2954841639,FR
+2954841640,2954841643,GB
+2954841644,2954841667,FR
+2954841668,2954841671,DE
+2954841672,2954841707,FR
2954841708,2954841711,NL
-2954841712,2954841807,FR
+2954841712,2954841715,FR
+2954841716,2954841719,IT
+2954841720,2954841727,FR
+2954841728,2954841759,CH
+2954841760,2954841807,FR
2954841808,2954841815,NL
-2954841816,2954843503,FR
+2954841816,2954841855,FR
+2954841856,2954841871,IT
+2954841872,2954841903,FR
+2954841904,2954841907,BE
+2954841908,2954841983,FR
+2954841984,2954841999,ES
+2954842000,2954842043,FR
+2954842044,2954842047,CH
+2954842048,2954842111,FR
+2954842112,2954842143,PL
+2954842144,2954842207,FR
+2954842208,2954842239,DE
+2954842240,2954842403,FR
+2954842404,2954842407,BE
+2954842408,2954842415,FR
+2954842416,2954842419,CH
+2954842420,2954842431,FR
+2954842432,2954842439,GB
+2954842440,2954842463,FR
+2954842464,2954842467,NL
+2954842468,2954842559,FR
+2954842560,2954842575,CZ
+2954842576,2954842703,FR
+2954842704,2954842719,GB
+2954842720,2954842727,FR
+2954842728,2954842731,DE
+2954842732,2954842863,FR
+2954842864,2954842879,ES
+2954842880,2954842911,CZ
+2954842912,2954843055,FR
+2954843056,2954843071,PL
+2954843072,2954843103,FR
+2954843104,2954843135,IE
+2954843136,2954843183,FR
+2954843184,2954843187,ES
+2954843188,2954843319,FR
+2954843320,2954843323,GB
+2954843324,2954843407,FR
+2954843408,2954843415,PL
+2954843416,2954843419,BE
+2954843420,2954843423,PL
+2954843424,2954843503,FR
2954843504,2954843507,ES
-2954843508,2954843767,FR
+2954843508,2954843591,FR
+2954843592,2954843595,BE
+2954843596,2954843599,ES
+2954843600,2954843603,BE
+2954843604,2954843723,FR
+2954843724,2954843727,DE
+2954843728,2954843767,FR
2954843768,2954843771,ES
-2954843772,2954844147,FR
+2954843772,2954843871,FR
+2954843872,2954843887,DE
+2954843888,2954843895,FR
+2954843896,2954843899,DE
+2954843900,2954844031,FR
+2954844032,2954844039,NL
+2954844040,2954844047,IE
+2954844048,2954844147,FR
2954844148,2954844151,DE
-2954844152,2954844999,FR
+2954844152,2954844155,ES
+2954844156,2954844183,FR
+2954844184,2954844187,DE
+2954844188,2954844191,FR
+2954844192,2954844223,IE
+2954844224,2954844239,FR
+2954844240,2954844255,IT
+2954844256,2954844447,FR
+2954844448,2954844455,PT
+2954844456,2954844551,FR
+2954844552,2954844559,PL
+2954844560,2954844607,FR
+2954844608,2954844639,ES
+2954844640,2954844731,FR
+2954844732,2954844735,PL
+2954844736,2954844991,FR
+2954844992,2954844999,GB
2954845000,2954845003,ES
-2954845004,2954846095,FR
+2954845004,2954845023,FR
+2954845024,2954845039,DE
+2954845040,2954845083,FR
+2954845084,2954845087,IE
+2954845088,2954845091,FR
+2954845092,2954845095,CZ
+2954845096,2954845111,FR
+2954845112,2954845119,DE
+2954845120,2954845135,GB
+2954845136,2954845159,FR
+2954845160,2954845167,CZ
+2954845168,2954845391,FR
+2954845392,2954845407,PL
+2954845408,2954845695,FR
+2954845696,2954845759,BE
+2954845760,2954845791,DE
+2954845792,2954845999,FR
+2954846000,2954846015,PT
+2954846016,2954846047,FR
+2954846048,2954846055,NL
+2954846056,2954846063,FR
+2954846064,2954846079,ES
+2954846080,2954846095,FR
2954846096,2954846103,NL
2954846104,2954846107,FR
2954846108,2954846111,ES
-2954846112,2954846139,FR
+2954846112,2954846123,FR
+2954846124,2954846127,IT
+2954846128,2954846139,FR
2954846140,2954846143,ES
-2954846144,2954855075,FR
+2954846144,2954846175,FR
+2954846176,2954846191,NL
+2954846192,2954854471,FR
+2954854472,2954854475,CH
+2954854476,2954854495,FR
+2954854496,2954854511,IT
+2954854512,2954854671,FR
+2954854672,2954854687,ES
+2954854688,2954854815,FR
+2954854816,2954854847,PL
+2954854848,2954854871,FR
+2954854872,2954854875,IT
+2954854876,2954854975,FR
+2954854976,2954854991,PL
+2954854992,2954855007,IT
+2954855008,2954855023,FR
+2954855024,2954855039,DE
+2954855040,2954855075,FR
2954855076,2954855079,ES
-2954855080,2954855507,FR
+2954855080,2954855087,FR
+2954855088,2954855091,PL
+2954855092,2954855507,FR
2954855508,2954855511,DE
2954855512,2954855515,FR
2954855516,2954855519,ES
2954855520,2954855527,FR
2954855528,2954855531,ES
-2954855532,2954856179,FR
+2954855532,2954855615,FR
+2954855616,2954855619,DE
+2954855620,2954855639,FR
+2954855640,2954855643,DE
+2954855644,2954855647,ES
+2954855648,2954855651,CZ
+2954855652,2954855727,FR
+2954855728,2954855743,DE
+2954855744,2954856063,FR
+2954856064,2954856067,LT
+2954856068,2954856071,FR
+2954856072,2954856079,GB
+2954856080,2954856111,FR
+2954856112,2954856115,ES
+2954856116,2954856175,FR
+2954856176,2954856179,DE
2954856180,2954856183,ES
-2954856184,2954859323,FR
+2954856184,2954856543,FR
+2954856544,2954856547,CH
+2954856548,2954856551,CZ
+2954856552,2954856563,FR
+2954856564,2954856567,DE
+2954856568,2954856571,CH
+2954856572,2954856611,FR
+2954856612,2954856615,IT
+2954856616,2954856619,FR
+2954856620,2954856623,ES
+2954856624,2954856975,FR
+2954856976,2954856979,GB
+2954856980,2954856983,LT
+2954856984,2954856999,FR
+2954857000,2954857003,DE
+2954857004,2954857087,FR
+2954857088,2954857091,IT
+2954857092,2954857095,FR
+2954857096,2954857099,LT
+2954857100,2954857115,FR
+2954857116,2954857119,NL
+2954857120,2954857183,FR
+2954857184,2954857215,PL
+2954857216,2954857703,FR
+2954857704,2954857707,ES
+2954857708,2954857999,FR
+2954858000,2954858015,IE
+2954858016,2954858059,FR
+2954858060,2954858063,BE
+2954858064,2954858367,FR
+2954858368,2954858375,NL
+2954858376,2954858379,ES
+2954858380,2954858383,IE
+2954858384,2954858419,FR
+2954858420,2954858423,GB
+2954858424,2954858427,FR
+2954858428,2954858431,BE
+2954858432,2954858483,FR
+2954858484,2954858487,GB
+2954858488,2954858819,FR
+2954858820,2954858823,IT
+2954858824,2954858827,ES
+2954858828,2954858831,FR
+2954858832,2954858847,PL
+2954858848,2954859043,FR
+2954859044,2954859047,ES
+2954859048,2954859119,FR
+2954859120,2954859123,CZ
+2954859124,2954859239,FR
+2954859240,2954859243,PL
+2954859244,2954859311,FR
+2954859312,2954859315,ES
+2954859316,2954859323,FR
2954859324,2954859327,ES
-2954859328,2954861875,FR
+2954859328,2954859583,FR
+2954859584,2954859615,DE
+2954859616,2954859679,FR
+2954859680,2954859695,PT
+2954859696,2954859711,FR
+2954859712,2954859727,PL
+2954859728,2954859743,FR
+2954859744,2954859775,ES
+2954859776,2954859831,FR
+2954859832,2954859839,ES
+2954859840,2954859871,FR
+2954859872,2954859903,ES
+2954859904,2954859955,FR
+2954859956,2954859959,GB
+2954859960,2954860223,FR
+2954860224,2954860227,PL
+2954860228,2954860231,FR
+2954860232,2954860239,IT
+2954860240,2954860255,FR
+2954860256,2954860259,PL
+2954860260,2954860263,FR
+2954860264,2954860271,GB
+2954860272,2954860303,FR
+2954860304,2954860319,FI
+2954860320,2954860327,FR
+2954860328,2954860335,NL
+2954860336,2954860367,FR
+2954860368,2954860383,PL
+2954860384,2954860415,FR
+2954860416,2954860423,NL
+2954860424,2954860427,FR
+2954860428,2954860431,BE
+2954860432,2954860447,FR
+2954860448,2954860455,GB
+2954860456,2954860535,FR
+2954860536,2954860539,DE
+2954860540,2954860671,FR
+2954860672,2954860687,DE
+2954860688,2954860695,GB
+2954860696,2954860703,CZ
+2954860704,2954860735,FR
+2954860736,2954860751,PL
+2954860752,2954860767,FR
+2954860768,2954860783,ES
+2954860784,2954860791,FR
+2954860792,2954860799,IT
+2954860800,2954860991,FR
+2954860992,2954861007,DE
+2954861008,2954861119,FR
+2954861120,2954861135,GB
+2954861136,2954861167,FR
+2954861168,2954861183,BE
+2954861184,2954861191,PL
+2954861192,2954861423,FR
+2954861424,2954861431,CZ
+2954861432,2954861619,FR
+2954861620,2954861623,IT
+2954861624,2954861635,FR
+2954861636,2954861639,ES
+2954861640,2954861671,FR
+2954861672,2954861675,ES
+2954861676,2954861759,FR
+2954861760,2954861763,ES
+2954861764,2954861839,FR
+2954861840,2954861847,IT
+2954861848,2954861875,FR
2954861876,2954861879,CH
-2954861880,2954862415,FR
+2954861880,2954861919,FR
+2954861920,2954861923,CZ
+2954861924,2954861947,FR
+2954861948,2954861951,FI
+2954861952,2954861983,FR
+2954861984,2954861987,IE
+2954861988,2954861995,FR
+2954861996,2954861999,ES
+2954862000,2954862047,FR
+2954862048,2954862079,ES
+2954862080,2954862207,FR
+2954862208,2954862211,ES
+2954862212,2954862247,FR
+2954862248,2954862255,ES
+2954862256,2954862367,FR
+2954862368,2954862375,DE
+2954862376,2954862383,FR
+2954862384,2954862391,DE
+2954862392,2954862415,FR
2954862416,2954862419,ES
-2954862420,2954863615,FR
+2954862420,2954862423,FR
+2954862424,2954862431,PL
+2954862432,2954862471,FR
+2954862472,2954862479,FI
+2954862480,2954863615,FR
2954863616,2954864639,DE
2954864640,2954865663,IT
2954865664,2954866687,ES
-2954866688,2954870799,FR
+2954866688,2954867041,FR
+2954867042,2954867043,PT
+2954867044,2954870799,FR
2954870800,2954870803,ES
2954870804,2954870843,FR
2954870844,2954870847,ES
-2954870848,2954870903,FR
+2954870848,2954870871,FR
+2954870872,2954870875,ES
+2954870876,2954870903,FR
2954870904,2954870907,ES
-2954870908,2954875879,FR
+2954870908,2954871391,FR
+2954871392,2954871423,DE
+2954871424,2954871615,FR
+2954871616,2954871623,PT
+2954871624,2954871627,FR
+2954871628,2954871631,IT
+2954871632,2954871635,FR
+2954871636,2954871639,IT
+2954871640,2954871743,FR
+2954871744,2954871759,CH
+2954871760,2954871839,FR
+2954871840,2954871871,NL
+2954871872,2954871887,FR
+2954871888,2954871895,BE
+2954871896,2954872323,FR
+2954872324,2954872327,IT
+2954872328,2954872383,FR
+2954872384,2954872415,IE
+2954872416,2954872447,FR
+2954872448,2954872479,CH
+2954872480,2954872559,FR
+2954872560,2954872567,NL
+2954872568,2954872587,FR
+2954872588,2954872591,LT
+2954872592,2954872679,FR
+2954872680,2954872687,ES
+2954872688,2954872863,FR
+2954872864,2954872895,ES
+2954872896,2954872959,FR
+2954872960,2954872975,IT
+2954872976,2954872979,FR
+2954872980,2954872983,GB
+2954872984,2954872987,FR
+2954872988,2954872991,FI
+2954872992,2954873023,PL
+2954873024,2954873087,BE
+2954873088,2954873391,FR
+2954873392,2954873407,NL
+2954873408,2954873451,FR
+2954873452,2954873455,GB
+2954873456,2954873551,FR
+2954873552,2954873567,PL
+2954873568,2954873583,FR
+2954873584,2954873591,DE
+2954873592,2954873647,FR
+2954873648,2954873663,IE
+2954873664,2954873783,FR
+2954873784,2954873787,PT
+2954873788,2954873839,FR
+2954873840,2954873847,ES
+2954873848,2954873851,CZ
+2954873852,2954873903,FR
+2954873904,2954873911,IT
+2954873912,2954874123,FR
+2954874124,2954874127,LT
+2954874128,2954874135,FR
+2954874136,2954874143,FI
+2954874144,2954874151,NL
+2954874152,2954874319,FR
+2954874320,2954874335,IT
+2954874336,2954874355,FR
+2954874356,2954874359,IT
+2954874360,2954874379,FR
+2954874380,2954874383,CZ
+2954874384,2954874391,FR
+2954874392,2954874399,DE
+2954874400,2954874419,FR
+2954874420,2954874423,NL
+2954874424,2954874799,FR
+2954874800,2954874815,GB
+2954874816,2954874827,FR
+2954874828,2954874831,ES
+2954874832,2954874867,FR
+2954874868,2954874871,IT
+2954874872,2954874927,FR
+2954874928,2954874943,IE
+2954874944,2954875023,FR
+2954875024,2954875039,PL
+2954875040,2954875047,NL
+2954875048,2954875055,FR
+2954875056,2954875071,CZ
+2954875072,2954875103,FR
+2954875104,2954875135,NL
+2954875136,2954875167,GB
+2954875168,2954875183,FR
+2954875184,2954875191,GB
+2954875192,2954875203,FR
+2954875204,2954875207,CH
+2954875208,2954875231,FR
+2954875232,2954875247,ES
+2954875248,2954875279,FR
+2954875280,2954875287,PL
+2954875288,2954875295,GB
+2954875296,2954875311,FR
+2954875312,2954875327,IT
+2954875328,2954875379,FR
+2954875380,2954875383,DE
+2954875384,2954875391,FR
+2954875392,2954875455,GB
+2954875456,2954875471,FR
+2954875472,2954875479,FI
+2954875480,2954875695,FR
+2954875696,2954875711,PL
+2954875712,2954875779,FR
+2954875780,2954875783,ES
+2954875784,2954875871,FR
+2954875872,2954875879,BE
2954875880,2954875883,ES
-2954875884,2954876871,FR
+2954875884,2954875911,FR
+2954875912,2954875919,PL
+2954875920,2954876055,FR
+2954876056,2954876063,IE
+2954876064,2954876111,FR
+2954876112,2954876119,ES
+2954876120,2954876399,FR
+2954876400,2954876407,IT
+2954876408,2954876447,FR
+2954876448,2954876455,CH
+2954876456,2954876459,DE
+2954876460,2954876591,FR
+2954876592,2954876607,CH
+2954876608,2954876639,PT
+2954876640,2954876871,FR
2954876872,2954876875,ES
2954876876,2954876887,FR
2954876888,2954876891,ES
-2954876892,2954877103,FR
+2954876892,2954876903,FR
+2954876904,2954876911,IT
+2954876912,2954876927,FR
+2954876928,2954876943,PL
+2954876944,2954877103,FR
2954877104,2954877107,PL
-2954877108,2954877163,FR
+2954877108,2954877111,FR
+2954877112,2954877119,NL
+2954877120,2954877151,FR
+2954877152,2954877159,PL
+2954877160,2954877163,FR
2954877164,2954877167,ES
-2954877168,2954877819,FR
+2954877168,2954877279,FR
+2954877280,2954877311,NL
+2954877312,2954877535,FR
+2954877536,2954877539,IT
+2954877540,2954877599,FR
+2954877600,2954877615,IT
+2954877616,2954877819,FR
2954877820,2954877823,ES
-2954877824,2954878907,FR
+2954877824,2954877983,FR
+2954877984,2954877991,DE
+2954877992,2954878031,FR
+2954878032,2954878035,IT
+2954878036,2954878095,FR
+2954878096,2954878111,ES
+2954878112,2954878143,FR
+2954878144,2954878207,ES
+2954878208,2954878463,IE
+2954878464,2954878495,FR
+2954878496,2954878499,ES
+2954878500,2954878511,FR
+2954878512,2954878527,ES
+2954878528,2954878591,FR
+2954878592,2954878607,DE
+2954878608,2954878707,FR
+2954878708,2954878711,ES
+2954878712,2954878815,FR
+2954878816,2954878847,LT
+2954878848,2954878863,FR
+2954878864,2954878871,GB
+2954878872,2954878887,FR
+2954878888,2954878891,PL
+2954878892,2954878907,FR
2954878908,2954878911,ES
2954878912,2954887167,FR
2954887168,2954891263,UA
@@ -47143,7 +51218,8 @@
2957193216,2957195263,RU
2957195264,2957197311,PS
2957197312,2957201407,IR
-2957201408,2957202679,US
+2957201408,2957201423,GB
+2957201424,2957202679,US
2957202680,2957202680,PT
2957202681,2957203455,US
2957203456,2957205503,FR
@@ -47406,7 +51482,8 @@
2960152576,2960158719,RU
2960158720,2960160767,PL
2960160768,2960162815,UA
-2960162816,2960171007,CZ
+2960162816,2960168959,RU
+2960168960,2960171007,CZ
2960171008,2960175103,RU
2960175104,2960179199,SK
2960179200,2960205823,RU
@@ -47593,10 +51670,15 @@
2961088512,2961088767,SE
2961088768,2961089535,UA
2961089536,2961090559,KG
-2961090560,2961108991,RO
+2961090560,2961102847,RO
+2961102848,2961103871,DE
+2961103872,2961108991,RO
2961108992,2961111039,GB
-2961111040,2961113087,RO
-2961113088,2961178623,CH
+2961111040,2961112063,PL
+2961112064,2961113087,RO
+2961113088,2961166079,CH
+2961166080,2961166335,DE
+2961166336,2961178623,CH
2961178624,2965372927,FR
2965372928,2965766143,RU
2965766144,2965897215,DE
@@ -47738,11 +51820,7 @@
2987552768,2987556863,GB
2987556864,2987560959,NL
2987560960,2987565055,DE
-2987565056,2987566591,AT
-2987566592,2987566847,HU
-2987566848,2987568383,AT
-2987568384,2987568639,HU
-2987568640,2987569151,AT
+2987565056,2987569151,AT
2987569152,2987573247,FR
2987573248,2987577343,TR
2987577344,2987585535,RU
@@ -47817,7 +51895,9 @@
2987771904,2987773951,IT
2987773952,2987775999,FR
2987776000,2987778047,NL
-2987778048,2987780095,CH
+2987778048,2987779071,CH
+2987779072,2987779583,LI
+2987779584,2987780095,CH
2987780096,2987782143,GB
2987782144,2987784191,EE
2987784192,2987786239,DK
@@ -47888,216 +51968,1850 @@
2988179456,2988411647,SE
2988411648,2988411775,DE
2988411776,2988441599,SE
-2988441600,2988442075,FR
+2988441600,2988441603,ES
+2988441604,2988441607,FR
+2988441608,2988441615,DE
+2988441616,2988441815,FR
+2988441816,2988441819,LT
+2988441820,2988441887,FR
+2988441888,2988441895,NL
+2988441896,2988441899,FR
+2988441900,2988441903,IT
+2988441904,2988441919,FR
+2988441920,2988441923,ES
+2988441924,2988441927,FR
+2988441928,2988441931,DE
+2988441932,2988441951,FR
+2988441952,2988441967,IE
+2988441968,2988441975,FR
+2988441976,2988441979,GB
+2988441980,2988441983,FR
+2988441984,2988441991,DE
+2988441992,2988442075,FR
2988442076,2988442079,ES
-2988442080,2988442847,FR
+2988442080,2988442087,PT
+2988442088,2988442111,FR
+2988442112,2988442143,CZ
+2988442144,2988442175,CH
+2988442176,2988442207,BE
+2988442208,2988442239,GB
+2988442240,2988442447,FR
+2988442448,2988442463,PL
+2988442464,2988442495,FR
+2988442496,2988442503,BE
+2988442504,2988442687,FR
+2988442688,2988442703,IT
+2988442704,2988442751,FR
+2988442752,2988442783,PT
+2988442784,2988442815,FR
+2988442816,2988442831,PL
+2988442832,2988442847,FR
2988442848,2988442863,IT
-2988442864,2988444208,FR
+2988442864,2988442871,FR
+2988442872,2988442879,DE
+2988442880,2988442911,FR
+2988442912,2988442919,GB
+2988442920,2988442923,FR
+2988442924,2988442927,PT
+2988442928,2988442943,FR
+2988442944,2988442975,GB
+2988442976,2988443071,FR
+2988443072,2988443087,BE
+2988443088,2988443447,FR
+2988443448,2988443455,DE
+2988443456,2988443647,FR
+2988443648,2988443651,NL
+2988443652,2988443927,FR
+2988443928,2988443935,IT
+2988443936,2988444203,FR
+2988444204,2988444207,DE
+2988444208,2988444208,PL
2988444209,2988444209,FI
-2988444210,2988444671,FR
+2988444210,2988444211,PL
+2988444212,2988444287,FR
+2988444288,2988444415,GB
+2988444416,2988444543,PT
+2988444544,2988444575,FR
+2988444576,2988444607,FI
+2988444608,2988444639,ES
+2988444640,2988444671,FR
2988444672,2988444679,ES
-2988444680,2988449207,FR
-2988449208,2988449215,ES
-2988449216,2988451839,FR
+2988444680,2988444703,FR
+2988444704,2988444719,GB
+2988444720,2988444967,FR
+2988444968,2988444975,IT
+2988444976,2988445279,FR
+2988445280,2988445287,IT
+2988445288,2988445295,GB
+2988445296,2988445375,FR
+2988445376,2988445391,GB
+2988445392,2988446275,FR
+2988446276,2988446279,ES
+2988446280,2988446431,FR
+2988446432,2988446463,IT
+2988446464,2988447327,FR
+2988447328,2988447359,IT
+2988447360,2988447423,FR
+2988447424,2988447487,PT
+2988447488,2988447507,FR
+2988447508,2988447511,NL
+2988447512,2988447519,FR
+2988447520,2988447535,IT
+2988447536,2988447551,FR
+2988447552,2988447583,DE
+2988447584,2988447599,NL
+2988447600,2988447615,FR
+2988447616,2988447743,PT
+2988447744,2988447747,DE
+2988447748,2988447959,FR
+2988447960,2988447967,IT
+2988447968,2988448031,FR
+2988448032,2988448063,GB
+2988448064,2988448127,FR
+2988448128,2988448255,IT
+2988448256,2988448271,FR
+2988448272,2988448287,NL
+2988448288,2988448567,FR
+2988448568,2988448575,PL
+2988448576,2988448639,FR
+2988448640,2988448671,NL
+2988448672,2988448687,CZ
+2988448688,2988448695,FR
+2988448696,2988448703,DE
+2988448704,2988448767,PT
+2988448768,2988448799,FR
+2988448800,2988448815,ES
+2988448816,2988448907,FR
+2988448908,2988448911,IT
+2988448912,2988449055,FR
+2988449056,2988449071,ES
+2988449072,2988449183,FR
+2988449184,2988449191,PL
+2988449192,2988449199,FI
+2988449200,2988449215,ES
+2988449216,2988449567,FR
+2988449568,2988449575,GB
+2988449576,2988451839,FR
2988451840,2988453887,BE
-2988453888,2988457983,GB
-2988457984,2988458319,FR
+2988453888,2988454399,GB
+2988454400,2988454655,FR
+2988454656,2988457983,GB
+2988457984,2988458047,FR
+2988458048,2988458063,DE
+2988458064,2988458299,FR
+2988458300,2988458303,ES
+2988458304,2988458319,FR
2988458320,2988458327,NL
-2988458328,2988459119,FR
+2988458328,2988458399,FR
+2988458400,2988458431,NL
+2988458432,2988458763,FR
+2988458764,2988458767,DE
+2988458768,2988459023,FR
+2988459024,2988459039,ES
+2988459040,2988459047,IT
+2988459048,2988459055,FR
+2988459056,2988459071,ES
+2988459072,2988459107,FR
+2988459108,2988459111,PL
+2988459112,2988459119,FR
2988459120,2988459127,IT
2988459128,2988459135,PL
-2988459136,2988459535,FR
+2988459136,2988459183,FR
+2988459184,2988459199,CZ
+2988459200,2988459243,FR
+2988459244,2988459247,ES
+2988459248,2988459251,DE
+2988459252,2988459439,FR
+2988459440,2988459455,GB
+2988459456,2988459535,FR
2988459536,2988459539,ES
-2988459540,2988459679,FR
+2988459540,2988459543,BE
+2988459544,2988459603,FR
+2988459604,2988459607,ES
+2988459608,2988459631,FR
+2988459632,2988459639,DE
+2988459640,2988459643,IT
+2988459644,2988459679,FR
2988459680,2988459683,ES
2988459684,2988459687,FR
2988459688,2988459691,PL
-2988459692,2988459863,FR
+2988459692,2988459695,ES
+2988459696,2988459719,FR
+2988459720,2988459723,IT
+2988459724,2988459759,FR
+2988459760,2988459767,DE
+2988459768,2988459863,FR
2988459864,2988459867,ES
-2988459868,2988460575,FR
+2988459868,2988459903,FR
+2988459904,2988459967,PL
+2988459968,2988460031,FR
+2988460032,2988460063,DE
+2988460064,2988460115,FR
+2988460116,2988460119,DE
+2988460120,2988460123,IT
+2988460124,2988460191,FR
+2988460192,2988460207,BE
+2988460208,2988460223,IT
+2988460224,2988460311,FR
+2988460312,2988460319,IT
+2988460320,2988460371,FR
+2988460372,2988460375,DE
+2988460376,2988460383,FR
+2988460384,2988460399,ES
+2988460400,2988460547,FR
+2988460548,2988460551,NL
+2988460552,2988460559,FR
+2988460560,2988460575,CZ
2988460576,2988460591,PT
-2988460592,2988460651,FR
+2988460592,2988460631,FR
+2988460632,2988460635,DE
+2988460636,2988460647,FR
+2988460648,2988460651,GB
2988460652,2988460655,ES
-2988460656,2988461703,FR
+2988460656,2988460703,FR
+2988460704,2988460711,PL
+2988460712,2988460735,FR
+2988460736,2988460751,GB
+2988460752,2988460755,FR
+2988460756,2988460759,BE
+2988460760,2988460767,FR
+2988460768,2988460799,GB
+2988460800,2988460895,FR
+2988460896,2988460927,PT
+2988460928,2988460959,FR
+2988460960,2988460975,NL
+2988460976,2988461003,FR
+2988461004,2988461007,ES
+2988461008,2988461031,FR
+2988461032,2988461035,GB
+2988461036,2988461183,FR
+2988461184,2988461215,IE
+2988461216,2988461255,FR
+2988461256,2988461259,ES
+2988461260,2988461263,DE
+2988461264,2988461279,FR
+2988461280,2988461295,IT
+2988461296,2988461299,PL
+2988461300,2988461307,FR
+2988461308,2988461311,NL
+2988461312,2988461375,PL
+2988461376,2988461391,FR
+2988461392,2988461399,DE
+2988461400,2988461407,PL
+2988461408,2988461415,NL
+2988461416,2988461523,FR
+2988461524,2988461527,LT
+2988461528,2988461595,FR
+2988461596,2988461599,CH
+2988461600,2988461631,FR
+2988461632,2988461695,PL
+2988461696,2988461703,FR
2988461704,2988461707,NL
-2988461708,2988462603,FR
+2988461708,2988461815,FR
+2988461816,2988461819,GB
+2988461820,2988461871,FR
+2988461872,2988461879,PT
+2988461880,2988461907,FR
+2988461908,2988461911,ES
+2988461912,2988462127,FR
+2988462128,2988462131,CH
+2988462132,2988462171,FR
+2988462172,2988462175,IT
+2988462176,2988462195,FR
+2988462196,2988462199,IT
+2988462200,2988462311,FR
+2988462312,2988462319,DE
+2988462320,2988462323,FR
+2988462324,2988462327,IE
+2988462328,2988462603,FR
2988462604,2988462607,ES
-2988462608,2988463915,FR
+2988462608,2988462623,FR
+2988462624,2988462639,CH
+2988462640,2988462747,FR
+2988462748,2988462751,ES
+2988462752,2988463131,FR
+2988463132,2988463135,ES
+2988463136,2988463143,IT
+2988463144,2988463167,FR
+2988463168,2988463199,PL
+2988463200,2988463203,ES
+2988463204,2988463207,FR
+2988463208,2988463211,NL
+2988463212,2988463247,FR
+2988463248,2988463251,PL
+2988463252,2988463263,FR
+2988463264,2988463279,GB
+2988463280,2988463319,FR
+2988463320,2988463323,FI
+2988463324,2988463615,FR
+2988463616,2988463623,GB
+2988463624,2988463627,FR
+2988463628,2988463631,ES
+2988463632,2988463791,FR
+2988463792,2988463799,ES
+2988463800,2988463915,FR
2988463916,2988463919,ES
2988463920,2988463999,FR
2988464000,2988464007,IE
2988464008,2988464015,LT
-2988464016,2988464611,FR
+2988464016,2988464059,FR
+2988464060,2988464063,ES
+2988464064,2988464359,FR
+2988464360,2988464360,NL
+2988464361,2988464543,FR
+2988464544,2988464551,NL
+2988464552,2988464591,FR
+2988464592,2988464595,BE
+2988464596,2988464611,FR
2988464612,2988464615,IT
-2988464616,2988464623,FR
+2988464616,2988464619,FR
+2988464620,2988464623,LT
2988464624,2988464627,ES
-2988464628,2988465215,FR
+2988464628,2988464927,FR
+2988464928,2988464943,DE
+2988464944,2988464947,BE
+2988464948,2988464951,FR
+2988464952,2988464955,IE
+2988464956,2988464959,FR
+2988464960,2988464975,ES
+2988464976,2988464991,FR
+2988464992,2988465023,DE
+2988465024,2988465151,FR
+2988465152,2988465215,GB
2988465216,2988465219,ES
-2988465220,2988465279,FR
+2988465220,2988465231,FR
+2988465232,2988465239,IT
+2988465240,2988465279,FR
2988465280,2988465295,DE
-2988465296,2988465559,FR
+2988465296,2988465307,FR
+2988465308,2988465311,DE
+2988465312,2988465359,FR
+2988465360,2988465363,GB
+2988465364,2988465391,FR
+2988465392,2988465399,CH
+2988465400,2988465559,FR
2988465560,2988465563,ES
-2988465564,2988476415,FR
+2988465564,2988465567,FR
+2988465568,2988465571,ES
+2988465572,2988465587,FR
+2988465588,2988465591,IT
+2988465592,2988465615,FR
+2988465616,2988465619,IT
+2988465620,2988465623,DE
+2988465624,2988465919,FR
+2988465920,2988465983,ES
+2988465984,2988476415,FR
2988476416,2988478463,IT
-2988478464,2988478579,FR
+2988478464,2988478487,FR
+2988478488,2988478495,PL
+2988478496,2988478499,ES
+2988478500,2988478579,FR
2988478580,2988478583,DE
2988478584,2988478587,FR
2988478588,2988478591,DE
-2988478592,2988479791,FR
+2988478592,2988478683,FR
+2988478684,2988478687,BE
+2988478688,2988478863,FR
+2988478864,2988478871,IE
+2988478872,2988478879,FR
+2988478880,2988478911,GB
+2988478912,2988478947,FR
+2988478948,2988478951,CZ
+2988478952,2988479003,FR
+2988479004,2988479007,ES
+2988479008,2988479055,FR
+2988479056,2988479071,ES
+2988479072,2988479075,BE
+2988479076,2988479103,FR
+2988479104,2988479107,IE
+2988479108,2988479119,FR
+2988479120,2988479135,NL
+2988479136,2988479143,FR
+2988479144,2988479147,DE
+2988479148,2988479159,FR
+2988479160,2988479167,ES
+2988479168,2988479199,FR
+2988479200,2988479231,PL
+2988479232,2988479323,FR
+2988479324,2988479327,PL
+2988479328,2988479343,FR
+2988479344,2988479359,NL
+2988479360,2988479519,FR
+2988479520,2988479535,DE
+2988479536,2988479567,FR
+2988479568,2988479575,DE
+2988479576,2988479711,FR
+2988479712,2988479743,CH
+2988479744,2988479783,FR
+2988479784,2988479787,ES
+2988479788,2988479791,FR
2988479792,2988479807,GB
-2988479808,2988482111,FR
+2988479808,2988480007,FR
+2988480008,2988480011,CH
+2988480012,2988480031,FR
+2988480032,2988480047,DE
+2988480048,2988480095,FR
+2988480096,2988480111,IT
+2988480112,2988480143,FR
+2988480144,2988480147,ES
+2988480148,2988480155,FR
+2988480156,2988480159,BE
+2988480160,2988480223,FR
+2988480224,2988480227,NL
+2988480228,2988480231,IE
+2988480232,2988480235,FR
+2988480236,2988480239,IT
+2988480240,2988480431,FR
+2988480432,2988480435,BE
+2988480436,2988480503,FR
+2988480504,2988480511,DE
+2988480512,2988480783,FR
+2988480784,2988480799,NL
+2988480800,2988480895,FR
+2988480896,2988480903,DE
+2988480904,2988480915,ES
+2988480916,2988480923,FR
+2988480924,2988480927,ES
+2988480928,2988481039,FR
+2988481040,2988481047,GB
+2988481048,2988481063,FR
+2988481064,2988481067,GB
+2988481068,2988481223,FR
+2988481224,2988481231,BE
+2988481232,2988481599,FR
+2988481600,2988481663,NL
+2988481664,2988481679,FR
+2988481680,2988481695,IT
+2988481696,2988481775,FR
+2988481776,2988481779,IE
+2988481780,2988482031,FR
+2988482032,2988482035,ES
+2988482036,2988482111,FR
2988482112,2988482143,DE
-2988482144,2988482319,FR
-2988482320,2988482335,IT
-2988482336,2988482575,FR
+2988482144,2988482163,FR
+2988482164,2988482167,IT
+2988482168,2988482175,FR
+2988482176,2988482191,ES
+2988482192,2988482291,FR
+2988482292,2988482295,IE
+2988482296,2988482315,FR
+2988482316,2988482335,IT
+2988482336,2988482399,FR
+2988482400,2988482407,GB
+2988482408,2988482411,PL
+2988482412,2988482447,FR
+2988482448,2988482463,DE
+2988482464,2988482495,FR
+2988482496,2988482511,PL
+2988482512,2988482535,FR
+2988482536,2988482543,ES
+2988482544,2988482575,FR
2988482576,2988482579,CZ
-2988482580,2988483027,FR
+2988482580,2988482639,FR
+2988482640,2988482647,PL
+2988482648,2988482655,FR
+2988482656,2988482687,GB
+2988482688,2988482775,FR
+2988482776,2988482779,DE
+2988482780,2988482823,FR
+2988482824,2988482827,CZ
+2988482828,2988482879,FR
+2988482880,2988482883,DE
+2988482884,2988482887,PL
+2988482888,2988482891,BE
+2988482892,2988482895,FI
+2988482896,2988482927,ES
+2988482928,2988483027,FR
2988483028,2988483031,ES
-2988483032,2988484831,FR
+2988483032,2988483035,FR
+2988483036,2988483039,IT
+2988483040,2988483095,FR
+2988483096,2988483103,BE
+2988483104,2988483115,FR
+2988483116,2988483119,IT
+2988483120,2988483199,FR
+2988483200,2988483231,PT
+2988483232,2988483387,FR
+2988483388,2988483391,GB
+2988483392,2988483427,FR
+2988483428,2988483431,GB
+2988483432,2988483639,FR
+2988483640,2988483647,GB
+2988483648,2988483663,IT
+2988483664,2988483679,FR
+2988483680,2988483695,PT
+2988483696,2988483739,FR
+2988483740,2988483743,BE
+2988483744,2988483771,FR
+2988483772,2988483775,PL
+2988483776,2988483871,FR
+2988483872,2988483879,GB
+2988483880,2988483959,FR
+2988483960,2988483963,ES
+2988483964,2988483987,FR
+2988483988,2988483991,ES
+2988483992,2988484031,FR
+2988484032,2988484047,GB
+2988484048,2988484095,FR
+2988484096,2988484111,ES
+2988484112,2988484127,PL
+2988484128,2988484163,FR
+2988484164,2988484167,GB
+2988484168,2988484171,PL
+2988484172,2988484187,FR
+2988484188,2988484191,ES
+2988484192,2988484407,FR
+2988484408,2988484415,PL
+2988484416,2988484423,IT
+2988484424,2988484427,FR
+2988484428,2988484431,DE
+2988484432,2988484439,FR
+2988484440,2988484443,FI
+2988484444,2988484831,FR
2988484832,2988484847,GB
-2988484848,2988485683,FR
+2988484848,2988484955,FR
+2988484956,2988484959,DE
+2988484960,2988485167,FR
+2988485168,2988485183,GB
+2988485184,2988485599,FR
+2988485600,2988485607,ES
+2988485608,2988485675,FR
+2988485676,2988485679,NL
+2988485680,2988485683,FR
2988485684,2988485687,PL
-2988485688,2988486311,FR
+2988485688,2988485767,FR
+2988485768,2988485771,BE
+2988485772,2988485831,FR
+2988485832,2988485839,NL
+2988485840,2988486015,FR
+2988486016,2988486031,GB
+2988486032,2988486075,FR
+2988486076,2988486079,DE
+2988486080,2988486083,FR
+2988486084,2988486087,PT
+2988486088,2988486127,FR
+2988486128,2988486143,GB
+2988486144,2988486147,FR
+2988486148,2988486151,BE
+2988486152,2988486199,FR
+2988486200,2988486207,GB
+2988486208,2988486215,IT
+2988486216,2988486311,FR
2988486312,2988486319,NL
-2988486320,2988487071,FR
+2988486320,2988486375,FR
+2988486376,2988486379,DE
+2988486380,2988486519,FR
+2988486520,2988486527,PL
+2988486528,2988486575,FR
+2988486576,2988486579,GB
+2988486580,2988486647,FR
+2988486648,2988486651,ES
+2988486652,2988486655,IT
+2988486656,2988486707,FR
+2988486708,2988486711,IT
+2988486712,2988486719,IE
+2988486720,2988486791,FR
+2988486792,2988486795,ES
+2988486796,2988486799,FR
+2988486800,2988486807,PL
+2988486808,2988486811,FR
+2988486812,2988486815,DE
+2988486816,2988486879,FR
+2988486880,2988486887,BE
+2988486888,2988486891,FR
+2988486892,2988486895,IT
+2988486896,2988486907,FR
+2988486908,2988486911,NL
+2988486912,2988487071,FR
2988487072,2988487075,ES
2988487076,2988487095,FR
2988487096,2988487099,ES
-2988487100,2988489119,FR
+2988487100,2988487135,FR
+2988487136,2988487167,ES
+2988487168,2988487235,FR
+2988487236,2988487239,NL
+2988487240,2988487303,FR
+2988487304,2988487311,NL
+2988487312,2988487883,FR
+2988487884,2988487887,NL
+2988487888,2988487967,FR
+2988487968,2988487975,DE
+2988487976,2988488031,FR
+2988488032,2988488047,NL
+2988488048,2988488151,FR
+2988488152,2988488159,IT
+2988488160,2988488183,FR
+2988488184,2988488187,DE
+2988488188,2988488479,FR
+2988488480,2988488487,CH
+2988488488,2988488563,FR
+2988488564,2988488567,GB
+2988488568,2988488647,FR
+2988488648,2988488655,IT
+2988488656,2988488671,FR
+2988488672,2988488679,BE
+2988488680,2988488963,FR
+2988488964,2988488967,DE
+2988488968,2988488971,GB
+2988488972,2988488975,IT
+2988488976,2988489071,FR
+2988489072,2988489087,GB
+2988489088,2988489095,FR
+2988489096,2988489099,DE
+2988489100,2988489119,FR
2988489120,2988489127,DE
-2988489128,2988489479,FR
+2988489128,2988489135,FR
+2988489136,2988489151,PT
+2988489152,2988489175,FR
+2988489176,2988489179,DE
+2988489180,2988489255,FR
+2988489256,2988489259,GB
+2988489260,2988489295,FR
+2988489296,2988489311,CH
+2988489312,2988489335,FR
+2988489336,2988489343,BE
+2988489344,2988489379,FR
+2988489380,2988489383,ES
+2988489384,2988489391,PL
+2988489392,2988489479,FR
2988489480,2988489483,DE
-2988489484,2988489675,FR
+2988489484,2988489487,NL
+2988489488,2988489527,FR
+2988489528,2988489535,PT
+2988489536,2988489671,FR
+2988489672,2988489675,IT
2988489676,2988489679,ES
-2988489680,2988490179,FR
+2988489680,2988489711,FR
+2988489712,2988489719,IE
+2988489720,2988489727,PL
+2988489728,2988489743,FR
+2988489744,2988489747,CH
+2988489748,2988489791,FR
+2988489792,2988489823,PL
+2988489824,2988489855,FR
+2988489856,2988489887,GB
+2988489888,2988489903,FR
+2988489904,2988489919,PT
+2988489920,2988490047,FR
+2988490048,2988490051,PL
+2988490052,2988490055,FR
+2988490056,2988490059,BE
+2988490060,2988490063,FR
+2988490064,2988490079,GB
+2988490080,2988490095,FR
+2988490096,2988490103,CH
+2988490104,2988490179,FR
2988490180,2988490183,ES
-2988490184,2988490683,FR
+2988490184,2988490195,FR
+2988490196,2988490199,GB
+2988490200,2988490247,FR
+2988490248,2988490251,IE
+2988490252,2988490359,FR
+2988490360,2988490367,PT
+2988490368,2988490383,FR
+2988490384,2988490399,IE
+2988490400,2988490407,DE
+2988490408,2988490631,FR
+2988490632,2988490639,IT
+2988490640,2988490655,PL
+2988490656,2988490671,ES
+2988490672,2988490683,FR
2988490684,2988490686,IT
2988490687,2988490687,BE
-2988490688,2988492799,FR
+2988490688,2988490719,ES
+2988490720,2988492799,FR
2988492800,2988494847,PL
-2988494848,2988499663,FR
+2988494848,2988498991,FR
+2988498992,2988499007,DE
+2988499008,2988499167,FR
+2988499168,2988499199,NL
+2988499200,2988499231,FR
+2988499232,2988499263,PT
+2988499264,2988499455,FR
+2988499456,2988499463,CZ
+2988499464,2988499471,ES
+2988499472,2988499487,FR
+2988499488,2988499503,DE
+2988499504,2988499559,FR
+2988499560,2988499567,PT
+2988499568,2988499623,FR
+2988499624,2988499631,GB
+2988499632,2988499639,FR
+2988499640,2988499647,IT
+2988499648,2988499663,FR
2988499664,2988499671,NL
2988499672,2988499729,FR
2988499730,2988499730,GB
2988499731,2988499736,FR
2988499737,2988499737,NL
-2988499738,2988500415,FR
+2988499738,2988499767,FR
+2988499768,2988499775,GB
+2988499776,2988499823,FR
+2988499824,2988499831,GB
+2988499832,2988499851,FR
+2988499852,2988499855,ES
+2988499856,2988499935,FR
+2988499936,2988499967,IE
+2988499968,2988500255,FR
+2988500256,2988500271,ES
+2988500272,2988500343,FR
+2988500344,2988500347,IT
+2988500348,2988500351,CH
+2988500352,2988500415,FR
2988500416,2988500447,CZ
-2988500448,2988500855,FR
+2988500448,2988500511,FR
+2988500512,2988500519,CH
+2988500520,2988500607,FR
+2988500608,2988500623,PL
+2988500624,2988500639,FR
+2988500640,2988500671,IT
+2988500672,2988500679,FR
+2988500680,2988500687,ES
+2988500688,2988500703,GB
+2988500704,2988500735,FR
+2988500736,2988500751,PL
+2988500752,2988500855,FR
2988500856,2988500859,ES
-2988500860,2988501127,FR
+2988500860,2988500959,FR
+2988500960,2988500975,NL
+2988500976,2988501055,FR
+2988501056,2988501087,GB
+2988501088,2988501127,FR
2988501128,2988501131,IT
-2988501132,2988502051,FR
+2988501132,2988501215,FR
+2988501216,2988501223,FI
+2988501224,2988501367,FR
+2988501368,2988501375,IE
+2988501376,2988502051,FR
2988502052,2988502055,PL
-2988502056,2988502479,FR
+2988502056,2988502107,FR
+2988502108,2988502111,GB
+2988502112,2988502267,FR
+2988502268,2988502271,BE
+2988502272,2988502287,FR
+2988502288,2988502303,PL
+2988502304,2988502391,FR
+2988502392,2988502399,IT
+2988502400,2988502407,FR
+2988502408,2988502411,FI
+2988502412,2988502479,FR
2988502480,2988502483,ES
-2988502484,2988502655,FR
+2988502484,2988502487,PL
+2988502488,2988502491,FR
+2988502492,2988502495,DE
+2988502496,2988502631,FR
+2988502632,2988502639,FI
+2988502640,2988502655,FR
2988502656,2988502719,DE
-2988502720,2988502881,FR
+2988502720,2988502735,FR
+2988502736,2988502751,ES
+2988502752,2988502881,FR
2988502882,2988502882,IT
-2988502883,2988504371,FR
+2988502883,2988502891,FR
+2988502892,2988502895,ES
+2988502896,2988502911,FI
+2988502912,2988503031,FR
+2988503032,2988503035,FI
+2988503036,2988503327,FR
+2988503328,2988503343,IT
+2988503344,2988503395,FR
+2988503396,2988503399,NL
+2988503400,2988503407,CH
+2988503408,2988503903,FR
+2988503904,2988503907,PL
+2988503908,2988503911,DE
+2988503912,2988503919,FR
+2988503920,2988503927,IT
+2988503928,2988503935,FR
+2988503936,2988503939,GB
+2988503940,2988503999,FR
+2988504000,2988504003,BE
+2988504004,2988504095,FR
+2988504096,2988504127,PL
+2988504128,2988504143,CH
+2988504144,2988504231,FR
+2988504232,2988504239,DE
+2988504240,2988504315,FR
+2988504316,2988504319,PT
+2988504320,2988504371,FR
2988504372,2988504375,PL
-2988504376,2988505391,FR
+2988504376,2988504435,FR
+2988504436,2988504439,LT
+2988504440,2988504543,FR
+2988504544,2988504559,DE
+2988504560,2988504567,FR
+2988504568,2988504575,IT
+2988504576,2988504591,FR
+2988504592,2988504599,IT
+2988504600,2988504647,FR
+2988504648,2988504655,IT
+2988504656,2988504827,FR
+2988504828,2988504831,DE
+2988504832,2988504895,FR
+2988504896,2988504959,DE
+2988504960,2988504967,FR
+2988504968,2988504975,ES
+2988504976,2988504979,PL
+2988504980,2988505151,FR
+2988505152,2988505167,GB
+2988505168,2988505183,FR
+2988505184,2988505191,NL
+2988505192,2988505199,DE
+2988505200,2988505207,FR
+2988505208,2988505215,ES
+2988505216,2988505335,FR
+2988505336,2988505339,IE
+2988505340,2988505343,DE
+2988505344,2988505375,FR
+2988505376,2988505391,GB
2988505392,2988505395,ES
-2988505396,2988507163,FR
+2988505396,2988505399,FI
+2988505400,2988505403,PL
+2988505404,2988505455,FR
+2988505456,2988505463,GB
+2988505464,2988505479,FR
+2988505480,2988505487,IT
+2988505488,2988505495,FR
+2988505496,2988505499,NL
+2988505500,2988505503,ES
+2988505504,2988505567,FR
+2988505568,2988505583,IE
+2988505584,2988505615,FR
+2988505616,2988505623,PL
+2988505624,2988505703,FR
+2988505704,2988505707,FI
+2988505708,2988505735,FR
+2988505736,2988505743,FI
+2988505744,2988505751,ES
+2988505752,2988505951,FR
+2988505952,2988505967,NL
+2988505968,2988506235,FR
+2988506236,2988506239,NL
+2988506240,2988506379,FR
+2988506380,2988506383,GB
+2988506384,2988506439,FR
+2988506440,2988506447,IE
+2988506448,2988506459,FR
+2988506460,2988506463,ES
+2988506464,2988506495,FR
+2988506496,2988506499,CH
+2988506500,2988506527,FR
+2988506528,2988506543,IE
+2988506544,2988506567,FR
+2988506568,2988506571,NL
+2988506572,2988506651,FR
+2988506652,2988506655,IT
+2988506656,2988506671,FR
+2988506672,2988506687,DE
+2988506688,2988506703,FR
+2988506704,2988506719,ES
+2988506720,2988506767,FR
+2988506768,2988506771,NL
+2988506772,2988506827,FR
+2988506828,2988506831,ES
+2988506832,2988506867,FR
+2988506868,2988506875,CH
+2988506876,2988506879,DE
+2988506880,2988506943,FR
+2988506944,2988506975,DE
+2988506976,2988507039,FR
+2988507040,2988507071,ES
+2988507072,2988507135,FR
+2988507136,2988507143,PL
+2988507144,2988507151,FR
+2988507152,2988507155,ES
+2988507156,2988507163,FR
2988507164,2988507167,ES
-2988507168,2988507975,FR
+2988507168,2988507203,FR
+2988507204,2988507207,DE
+2988507208,2988507215,FR
+2988507216,2988507223,FI
+2988507224,2988507231,DE
+2988507232,2988507291,FR
+2988507292,2988507295,IT
+2988507296,2988507459,FR
+2988507460,2988507463,BE
+2988507464,2988507471,DE
+2988507472,2988507503,FR
+2988507504,2988507519,IT
+2988507520,2988507527,FR
+2988507528,2988507531,GB
+2988507532,2988507535,NL
+2988507536,2988507567,FR
+2988507568,2988507583,ES
+2988507584,2988507595,FR
+2988507596,2988507599,LT
+2988507600,2988507615,FR
+2988507616,2988507623,DE
+2988507624,2988507627,FR
+2988507628,2988507631,PL
+2988507632,2988507743,FR
+2988507744,2988507759,NL
+2988507760,2988507775,FR
+2988507776,2988507791,NL
+2988507792,2988507807,IT
+2988507808,2988507871,FR
+2988507872,2988507879,DE
+2988507880,2988507955,FR
+2988507956,2988507959,DE
+2988507960,2988507975,FR
2988507976,2988507979,IT
-2988507980,2988509511,FR
+2988507980,2988508035,FR
+2988508036,2988508039,DE
+2988508040,2988508111,FR
+2988508112,2988508127,IE
+2988508128,2988508143,FR
+2988508144,2988508147,IE
+2988508148,2988508175,FR
+2988508176,2988508191,IE
+2988508192,2988508211,FR
+2988508212,2988508215,CZ
+2988508216,2988508239,FR
+2988508240,2988508255,GB
+2988508256,2988508303,FR
+2988508304,2988508307,CH
+2988508308,2988508479,FR
+2988508480,2988508543,BE
+2988508544,2988508607,FR
+2988508608,2988508639,ES
+2988508640,2988508671,DE
+2988508672,2988508723,FR
+2988508724,2988508727,GB
+2988508728,2988508947,FR
+2988508948,2988508951,ES
+2988508952,2988508987,FR
+2988508988,2988508991,ES
+2988508992,2988509007,BE
+2988509008,2988509011,FR
+2988509012,2988509015,BE
+2988509016,2988509023,FR
+2988509024,2988509055,CH
+2988509056,2988509287,FR
+2988509288,2988509291,GB
+2988509292,2988509403,FR
+2988509404,2988509407,FI
+2988509408,2988509467,FR
+2988509468,2988509471,BE
+2988509472,2988509511,FR
2988509512,2988509515,PL
-2988509516,2988509747,FR
+2988509516,2988509551,FR
+2988509552,2988509559,DE
+2988509560,2988509599,FR
+2988509600,2988509615,DE
+2988509616,2988509619,FR
+2988509620,2988509623,DE
+2988509624,2988509627,FR
+2988509628,2988509631,GB
+2988509632,2988509735,FR
+2988509736,2988509739,CH
+2988509740,2988509747,FR
2988509748,2988509751,LT
-2988509752,2988512903,FR
+2988509752,2988509755,IT
+2988509756,2988509767,FR
+2988509768,2988509775,PL
+2988509776,2988509779,DE
+2988509780,2988509791,FR
+2988509792,2988509823,ES
+2988509824,2988509839,PL
+2988509840,2988509863,FR
+2988509864,2988509871,NL
+2988509872,2988509875,FR
+2988509876,2988509879,NL
+2988509880,2988509931,FR
+2988509932,2988509935,ES
+2988509936,2988509939,IT
+2988509940,2988509951,FR
+2988509952,2988509955,DE
+2988509956,2988509983,FR
+2988509984,2988509991,DE
+2988509992,2988509999,FR
+2988510000,2988510015,IT
+2988510016,2988510023,IE
+2988510024,2988510039,FR
+2988510040,2988510043,ES
+2988510044,2988510207,FR
+2988510208,2988510215,GB
+2988510216,2988510223,DE
+2988510224,2988510255,FR
+2988510256,2988510259,FI
+2988510260,2988510323,FR
+2988510324,2988510327,FI
+2988510328,2988510335,ES
+2988510336,2988510423,FR
+2988510424,2988510427,DE
+2988510428,2988510431,IT
+2988510432,2988510499,FR
+2988510500,2988510503,GB
+2988510504,2988510507,FR
+2988510508,2988510511,GB
+2988510512,2988510515,FR
+2988510516,2988510519,ES
+2988510520,2988510975,FR
+2988510976,2988510983,PL
+2988510984,2988511559,FR
+2988511560,2988511567,IT
+2988511568,2988511615,FR
+2988511616,2988511647,IE
+2988511648,2988511695,FR
+2988511696,2988511703,PL
+2988511704,2988511719,FR
+2988511720,2988511723,PL
+2988511724,2988511743,FR
+2988511744,2988511747,IT
+2988511748,2988511835,FR
+2988511836,2988511839,IT
+2988511840,2988511855,BE
+2988511856,2988511871,FR
+2988511872,2988511879,IT
+2988511880,2988511887,FR
+2988511888,2988511903,CH
+2988511904,2988511927,FR
+2988511928,2988511931,ES
+2988511932,2988511959,FR
+2988511960,2988511967,DE
+2988511968,2988511999,FR
+2988512000,2988512031,PL
+2988512032,2988512055,FR
+2988512056,2988512059,GB
+2988512060,2988512143,FR
+2988512144,2988512159,ES
+2988512160,2988512195,FR
+2988512196,2988512199,PL
+2988512200,2988512231,FR
+2988512232,2988512239,NL
+2988512240,2988512435,FR
+2988512436,2988512439,DE
+2988512440,2988512455,FR
+2988512456,2988512459,GB
+2988512460,2988512467,FR
+2988512468,2988512471,GB
+2988512472,2988512511,FR
+2988512512,2988512515,DE
+2988512516,2988512519,PL
+2988512520,2988512703,FR
+2988512704,2988512735,ES
+2988512736,2988512767,PL
+2988512768,2988512879,FR
+2988512880,2988512895,GB
+2988512896,2988512903,FR
2988512904,2988512907,GB
-2988512908,2988513003,FR
+2988512908,2988512911,DE
+2988512912,2988512963,FR
+2988512964,2988512967,PL
+2988512968,2988513003,FR
2988513004,2988513007,ES
-2988513008,2988513747,FR
+2988513008,2988513015,FR
+2988513016,2988513019,PT
+2988513020,2988513023,GB
+2988513024,2988513135,FR
+2988513136,2988513151,IT
+2988513152,2988513207,FR
+2988513208,2988513219,GB
+2988513220,2988513231,FR
+2988513232,2988513235,GB
+2988513236,2988513239,FR
+2988513240,2988513247,IT
+2988513248,2988513327,FR
+2988513328,2988513331,PL
+2988513332,2988513351,FR
+2988513352,2988513359,DE
+2988513360,2988513363,ES
+2988513364,2988513503,FR
+2988513504,2988513511,GB
+2988513512,2988513711,FR
+2988513712,2988513715,GB
+2988513716,2988513743,FR
+2988513744,2988513747,DE
2988513748,2988513751,IT
-2988513752,2988515327,FR
+2988513752,2988513919,FR
+2988513920,2988513951,PL
+2988513952,2988513967,FR
+2988513968,2988513983,NL
+2988513984,2988513999,BE
+2988514000,2988514015,FR
+2988514016,2988514023,GB
+2988514024,2988514131,FR
+2988514132,2988514135,DE
+2988514136,2988514239,FR
+2988514240,2988514243,DE
+2988514244,2988514335,FR
+2988514336,2988514339,GB
+2988514340,2988514359,FR
+2988514360,2988514367,ES
+2988514368,2988514399,FR
+2988514400,2988514431,NL
+2988514432,2988514463,FR
+2988514464,2988514495,GB
+2988514496,2988514527,NL
+2988514528,2988514543,GB
+2988514544,2988514559,PT
+2988514560,2988514591,FR
+2988514592,2988514623,PL
+2988514624,2988514687,FR
+2988514688,2988514719,FI
+2988514720,2988514735,FR
+2988514736,2988514739,DE
+2988514740,2988514747,FR
+2988514748,2988514751,NL
+2988514752,2988514819,FR
+2988514820,2988514823,NL
+2988514824,2988514847,FR
+2988514848,2988514879,DE
+2988514880,2988514991,FR
+2988514992,2988514995,IT
+2988514996,2988515007,FR
+2988515008,2988515023,BE
+2988515024,2988515031,FR
+2988515032,2988515035,ES
+2988515036,2988515327,FR
2988515328,2988517375,DE
2988517376,2988519423,FR
2988519424,2988521471,PL
-2988521472,2988524075,FR
+2988521472,2988523523,FR
+2988523524,2988523527,GB
+2988523528,2988523603,FR
+2988523604,2988523607,LT
+2988523608,2988523631,FR
+2988523632,2988523639,IT
+2988523640,2988523651,FR
+2988523652,2988523655,IT
+2988523656,2988523663,ES
+2988523664,2988523667,FR
+2988523668,2988523671,NL
+2988523672,2988523711,FR
+2988523712,2988523727,ES
+2988523728,2988523735,FI
+2988523736,2988524047,FR
+2988524048,2988524055,NL
+2988524056,2988524063,FR
+2988524064,2988524071,PL
+2988524072,2988524075,FR
2988524076,2988524079,ES
-2988524080,2988524271,FR
+2988524080,2988524143,FR
+2988524144,2988524147,GB
+2988524148,2988524175,FR
+2988524176,2988524183,IT
+2988524184,2988524271,FR
2988524272,2988524287,DE
-2988524288,2988525887,FR
+2988524288,2988524299,FR
+2988524300,2988524303,DE
+2988524304,2988524367,FR
+2988524368,2988524383,NL
+2988524384,2988524479,FR
+2988524480,2988524483,NL
+2988524484,2988524511,FR
+2988524512,2988524543,IT
+2988524544,2988524559,ES
+2988524560,2988524575,BE
+2988524576,2988524591,PL
+2988524592,2988524639,FR
+2988524640,2988524671,PL
+2988524672,2988524767,FR
+2988524768,2988524799,CH
+2988524800,2988524815,FR
+2988524816,2988524831,GB
+2988524832,2988524863,FR
+2988524864,2988524895,PL
+2988524896,2988524911,FR
+2988524912,2988524919,DE
+2988524920,2988525579,FR
+2988525580,2988525583,IT
+2988525584,2988525631,FR
+2988525632,2988525647,ES
+2988525648,2988525819,FR
+2988525820,2988525823,IT
+2988525824,2988525847,FR
+2988525848,2988525851,CZ
+2988525852,2988525887,FR
2988525888,2988525951,GB
-2988525952,2988526415,FR
-2988526416,2988526423,ES
-2988526424,2988527527,FR
+2988525952,2988526079,FR
+2988526080,2988526087,DE
+2988526088,2988526091,IT
+2988526092,2988526143,FR
+2988526144,2988526175,CH
+2988526176,2988526367,FR
+2988526368,2988526383,IT
+2988526384,2988526423,ES
+2988526424,2988526427,GB
+2988526428,2988526431,FR
+2988526432,2988526435,IT
+2988526436,2988526575,FR
+2988526576,2988526579,GB
+2988526580,2988526927,FR
+2988526928,2988526935,DE
+2988526936,2988526939,IT
+2988526940,2988526947,FR
+2988526948,2988526951,BE
+2988526952,2988526999,FR
+2988527000,2988527003,IT
+2988527004,2988527039,FR
+2988527040,2988527055,NL
+2988527056,2988527087,FR
+2988527088,2988527095,IT
+2988527096,2988527167,FR
+2988527168,2988527175,ES
+2988527176,2988527191,FR
+2988527192,2988527195,NL
+2988527196,2988527411,FR
+2988527412,2988527415,ES
+2988527416,2988527527,FR
2988527528,2988527531,NL
-2988527532,2988527831,FR
+2988527532,2988527535,FR
+2988527536,2988527543,PL
+2988527544,2988527583,FR
+2988527584,2988527591,IT
+2988527592,2988527615,FR
+2988527616,2988527623,DE
+2988527624,2988527671,FR
+2988527672,2988527675,IT
+2988527676,2988527747,FR
+2988527748,2988527751,IT
+2988527752,2988527755,FR
+2988527756,2988527759,IT
+2988527760,2988527823,FR
+2988527824,2988527831,PL
2988527832,2988527839,ES
2988527840,2988527887,FR
2988527888,2988527891,ES
-2988527892,2988529351,FR
+2988527892,2988528015,FR
+2988528016,2988528031,GB
+2988528032,2988528111,FR
+2988528112,2988528115,PL
+2988528116,2988528187,FR
+2988528188,2988528191,IT
+2988528192,2988528219,FR
+2988528220,2988528223,PT
+2988528224,2988528279,FR
+2988528280,2988528287,DE
+2988528288,2988528351,FR
+2988528352,2988528383,PL
+2988528384,2988528639,FR
+2988528640,2988528647,ES
+2988528648,2988528655,FR
+2988528656,2988528659,BE
+2988528660,2988528699,FR
+2988528700,2988528703,CZ
+2988528704,2988528751,FR
+2988528752,2988528759,NL
+2988528760,2988528835,FR
+2988528836,2988528839,IT
+2988528840,2988528931,FR
+2988528932,2988528935,NL
+2988528936,2988528943,FR
+2988528944,2988528959,ES
+2988528960,2988528983,FR
+2988528984,2988528991,GB
+2988528992,2988529031,FR
+2988529032,2988529039,GB
+2988529040,2988529087,FR
+2988529088,2988529095,GB
+2988529096,2988529159,FR
+2988529160,2988529163,ES
+2988529164,2988529215,FR
+2988529216,2988529247,IE
+2988529248,2988529251,FR
+2988529252,2988529255,PT
+2988529256,2988529263,IT
+2988529264,2988529315,FR
+2988529316,2988529319,PL
+2988529320,2988529323,FR
+2988529324,2988529327,BE
+2988529328,2988529343,FR
+2988529344,2988529351,ES
2988529352,2988529359,GB
2988529360,2988529375,FR
2988529376,2988529383,GB
2988529384,2988529387,ES
-2988529388,2988535807,FR
+2988529388,2988529599,FR
+2988529600,2988529607,IT
+2988529608,2988529787,FR
+2988529788,2988529791,ES
+2988529792,2988529915,FR
+2988529916,2988529919,DE
+2988529920,2988529935,NL
+2988529936,2988529947,FR
+2988529948,2988529951,BE
+2988529952,2988529955,FR
+2988529956,2988529959,ES
+2988529960,2988530031,FR
+2988530032,2988530039,GB
+2988530040,2988530255,FR
+2988530256,2988530271,IT
+2988530272,2988530311,FR
+2988530312,2988530319,CH
+2988530320,2988530407,FR
+2988530408,2988530415,ES
+2988530416,2988530695,FR
+2988530696,2988530703,IE
+2988530704,2988530735,FR
+2988530736,2988530739,IT
+2988530740,2988530847,FR
+2988530848,2988530863,ES
+2988530864,2988530871,FR
+2988530872,2988530879,ES
+2988530880,2988530927,FR
+2988530928,2988530943,BE
+2988530944,2988531027,FR
+2988531028,2988531031,CZ
+2988531032,2988531039,FR
+2988531040,2988531043,DE
+2988531044,2988531075,FR
+2988531076,2988531079,GB
+2988531080,2988531247,FR
+2988531248,2988531255,GB
+2988531256,2988531259,FR
+2988531260,2988531263,ES
+2988531264,2988531291,FR
+2988531292,2988531295,DE
+2988531296,2988531311,GB
+2988531312,2988531315,CZ
+2988531316,2988531319,FR
+2988531320,2988531323,GB
+2988531324,2988531327,FR
+2988531328,2988531351,GB
+2988531352,2988531391,FR
+2988531392,2988531399,NL
+2988531400,2988531423,FR
+2988531424,2988531427,NL
+2988531428,2988531431,FR
+2988531432,2988531439,ES
+2988531440,2988535807,FR
2988535808,2988537855,ES
2988537856,2988539971,FR
2988539972,2988539975,ES
-2988539976,2988540503,FR
+2988539976,2988540007,FR
+2988540008,2988540015,ES
+2988540016,2988540019,FR
+2988540020,2988540023,DE
+2988540024,2988540231,FR
+2988540232,2988540235,ES
+2988540236,2988540239,DE
+2988540240,2988540303,FR
+2988540304,2988540319,IT
+2988540320,2988540359,FR
+2988540360,2988540363,DE
+2988540364,2988540495,FR
+2988540496,2988540503,IE
2988540504,2988540507,NL
-2988540508,2988544671,FR
+2988540508,2988540563,FR
+2988540564,2988540567,CZ
+2988540568,2988540631,FR
+2988540632,2988540635,CZ
+2988540636,2988540639,FR
+2988540640,2988540647,IT
+2988540648,2988540667,FR
+2988540668,2988540671,DE
+2988540672,2988540783,FR
+2988540784,2988540787,PL
+2988540788,2988541119,FR
+2988541120,2988541127,BE
+2988541128,2988541315,FR
+2988541316,2988541319,FI
+2988541320,2988541343,FR
+2988541344,2988541347,NL
+2988541348,2988541367,FR
+2988541368,2988541371,GB
+2988541372,2988541439,FR
+2988541440,2988541443,ES
+2988541444,2988541455,FR
+2988541456,2988541463,DE
+2988541464,2988541547,FR
+2988541548,2988541551,GB
+2988541552,2988541659,FR
+2988541660,2988541663,ES
+2988541664,2988541691,FR
+2988541692,2988541695,DE
+2988541696,2988541735,FR
+2988541736,2988541743,DE
+2988541744,2988541815,FR
+2988541816,2988541819,IE
+2988541820,2988541855,FR
+2988541856,2988541863,PL
+2988541864,2988541867,BE
+2988541868,2988541895,FR
+2988541896,2988541903,NL
+2988541904,2988541927,FR
+2988541928,2988541935,LT
+2988541936,2988542027,FR
+2988542028,2988542031,ES
+2988542032,2988542047,PT
+2988542048,2988542143,FR
+2988542144,2988542175,IT
+2988542176,2988542431,FR
+2988542432,2988542439,BE
+2988542440,2988542443,GB
+2988542444,2988542447,IE
+2988542448,2988542539,FR
+2988542540,2988542543,DE
+2988542544,2988542607,FR
+2988542608,2988542611,PL
+2988542612,2988542615,FR
+2988542616,2988542623,IT
+2988542624,2988542627,FR
+2988542628,2988542631,NL
+2988542632,2988542911,FR
+2988542912,2988542919,IE
+2988542920,2988542927,FR
+2988542928,2988542931,IT
+2988542932,2988542935,PL
+2988542936,2988542939,FR
+2988542940,2988542943,ES
+2988542944,2988543023,FR
+2988543024,2988543039,BE
+2988543040,2988543051,FR
+2988543052,2988543055,NL
+2988543056,2988543063,FR
+2988543064,2988543067,ES
+2988543068,2988543103,FR
+2988543104,2988543135,CH
+2988543136,2988543167,BE
+2988543168,2988543191,FR
+2988543192,2988543195,NL
+2988543196,2988543379,FR
+2988543380,2988543383,ES
+2988543384,2988543407,FR
+2988543408,2988543411,CZ
+2988543412,2988543439,FR
+2988543440,2988543447,GB
+2988543448,2988543551,FR
+2988543552,2988543559,ES
+2988543560,2988543563,PT
+2988543564,2988543615,FR
+2988543616,2988543647,CZ
+2988543648,2988543679,FR
+2988543680,2988543711,NL
+2988543712,2988543935,FR
+2988543936,2988543939,GB
+2988543940,2988544003,FR
+2988544004,2988544007,PL
+2988544008,2988544015,FR
+2988544016,2988544023,DE
+2988544024,2988544039,FR
+2988544040,2988544043,IT
+2988544044,2988544047,BE
+2988544048,2988544183,FR
+2988544184,2988544187,DE
+2988544188,2988544223,FR
+2988544224,2988544227,ES
+2988544228,2988544231,FR
+2988544232,2988544239,GB
+2988544240,2988544271,FR
+2988544272,2988544275,CH
+2988544276,2988544303,FR
+2988544304,2988544307,DE
+2988544308,2988544327,FR
+2988544328,2988544331,PT
+2988544332,2988544495,FR
+2988544496,2988544511,GB
+2988544512,2988544655,FR
+2988544656,2988544659,ES
+2988544660,2988544671,FR
2988544672,2988544687,GB
2988544688,2988544691,NL
-2988544692,2988546727,FR
+2988544692,2988544727,FR
+2988544728,2988544735,DE
+2988544736,2988544935,FR
+2988544936,2988544943,NL
+2988544944,2988544987,FR
+2988544988,2988544991,IE
+2988544992,2988544999,ES
+2988545000,2988545003,DE
+2988545004,2988545007,IT
+2988545008,2988545015,FR
+2988545016,2988545019,DE
+2988545020,2988545031,FR
+2988545032,2988545039,FI
+2988545040,2988545051,FR
+2988545052,2988545055,GB
+2988545056,2988545215,FR
+2988545216,2988545223,ES
+2988545224,2988545227,NL
+2988545228,2988545383,FR
+2988545384,2988545387,DE
+2988545388,2988545455,FR
+2988545456,2988545471,IT
+2988545472,2988545487,GB
+2988545488,2988545551,FR
+2988545552,2988545555,GB
+2988545556,2988545559,NL
+2988545560,2988545583,FR
+2988545584,2988545599,IT
+2988545600,2988545871,FR
+2988545872,2988545887,ES
+2988545888,2988545931,FR
+2988545932,2988545935,PL
+2988545936,2988546015,FR
+2988546016,2988546031,NL
+2988546032,2988546035,GB
+2988546036,2988546291,FR
+2988546292,2988546295,ES
+2988546296,2988546555,FR
+2988546556,2988546559,ES
+2988546560,2988546583,FR
+2988546584,2988546591,DE
+2988546592,2988546619,FR
+2988546620,2988546623,ES
+2988546624,2988546687,FR
+2988546688,2988546691,CH
+2988546692,2988546695,FR
+2988546696,2988546699,ES
+2988546700,2988546703,FR
+2988546704,2988546719,DE
+2988546720,2988546727,FR
2988546728,2988546731,ES
-2988546732,2988547067,FR
+2988546732,2988546735,DE
+2988546736,2988546863,FR
+2988546864,2988546867,CH
+2988546868,2988546871,FR
+2988546872,2988546879,DE
+2988546880,2988546995,FR
+2988546996,2988546999,IT
+2988547000,2988547063,FR
+2988547064,2988547067,GB
2988547068,2988547071,ES
2988547072,2988547095,FR
2988547096,2988547099,ES
-2988547100,2988547655,FR
+2988547100,2988547167,FR
+2988547168,2988547175,GB
+2988547176,2988547263,FR
+2988547264,2988547267,NL
+2988547268,2988547479,FR
+2988547480,2988547487,GB
+2988547488,2988547507,FR
+2988547508,2988547511,NL
+2988547512,2988547543,FR
+2988547544,2988547547,NL
+2988547548,2988547567,FR
+2988547568,2988547583,DE
+2988547584,2988547655,FR
2988547656,2988547663,PL
-2988547664,2988547871,FR
+2988547664,2988547807,FR
+2988547808,2988547823,GB
+2988547824,2988547839,FR
+2988547840,2988547855,DE
+2988547856,2988547871,FR
2988547872,2988547903,GB
-2988547904,2988548015,FR
+2988547904,2988547979,FR
+2988547980,2988547983,ES
+2988547984,2988548015,FR
2988548016,2988548019,ES
2988548020,2988548095,FR
2988548096,2988550143,ES
-2988550144,2988550359,FR
+2988550144,2988550175,FR
+2988550176,2988550179,DE
+2988550180,2988550207,FR
+2988550208,2988550239,DE
+2988550240,2988550247,FR
+2988550248,2988550251,PL
+2988550252,2988550259,FR
+2988550260,2988550263,PL
+2988550264,2988550359,FR
2988550360,2988550363,ES
-2988550364,2988550438,FR
+2988550364,2988550367,FR
+2988550368,2988550399,FI
+2988550400,2988550431,FR
+2988550432,2988550438,ES
2988550439,2988550439,GB
-2988550440,2988550463,FR
+2988550440,2988550447,ES
+2988550448,2988550451,FR
+2988550452,2988550455,IE
+2988550456,2988550463,FR
2988550464,2988550527,DE
-2988550528,2988551443,FR
+2988550528,2988550627,FR
+2988550628,2988550631,CZ
+2988550632,2988550679,FR
+2988550680,2988550687,GB
+2988550688,2988550911,FR
+2988550912,2988550927,NL
+2988550928,2988551135,FR
+2988551136,2988551167,ES
+2988551168,2988551443,FR
2988551444,2988551447,ES
-2988551448,2988551535,FR
+2988551448,2988551511,FR
+2988551512,2988551519,ES
+2988551520,2988551535,FI
2988551536,2988551551,DE
-2988551552,2988553531,FR
+2988551552,2988551871,FR
+2988551872,2988551887,PL
+2988551888,2988552543,FR
+2988552544,2988552551,PL
+2988552552,2988552567,FR
+2988552568,2988552575,GB
+2988552576,2988552603,FR
+2988552604,2988552607,GB
+2988552608,2988552647,FR
+2988552648,2988552655,NL
+2988552656,2988552659,FR
+2988552660,2988552663,PT
+2988552664,2988552671,NL
+2988552672,2988552711,FR
+2988552712,2988552719,IE
+2988552720,2988552735,GB
+2988552736,2988552831,FR
+2988552832,2988552847,ES
+2988552848,2988552883,FR
+2988552884,2988552887,IT
+2988552888,2988552891,DE
+2988552892,2988552915,FR
+2988552916,2988552919,NL
+2988552920,2988552927,FR
+2988552928,2988552943,ES
+2988552944,2988553087,FR
+2988553088,2988553119,GB
+2988553120,2988553399,FR
+2988553400,2988553407,NL
+2988553408,2988553415,FR
+2988553416,2988553423,DE
+2988553424,2988553455,FR
+2988553456,2988553471,GB
+2988553472,2988553531,FR
2988553532,2988553535,ES
-2988553536,2988554035,FR
+2988553536,2988553551,GB
+2988553552,2988553567,FR
+2988553568,2988553575,PL
+2988553576,2988553659,FR
+2988553660,2988553663,NL
+2988553664,2988554015,FR
+2988554016,2988554031,BE
+2988554032,2988554035,FR
2988554036,2988554039,ES
-2988554040,2988555527,FR
+2988554040,2988554063,FR
+2988554064,2988554067,DE
+2988554068,2988554071,FR
+2988554072,2988554075,ES
+2988554076,2988554127,FR
+2988554128,2988554131,IT
+2988554132,2988554175,FR
+2988554176,2988554183,CZ
+2988554184,2988554499,FR
+2988554500,2988554503,GB
+2988554504,2988554547,FR
+2988554548,2988554551,IT
+2988554552,2988554787,FR
+2988554788,2988554791,CH
+2988554792,2988554795,FI
+2988554796,2988554919,FR
+2988554920,2988554927,BE
+2988554928,2988555055,FR
+2988555056,2988555063,FI
+2988555064,2988555115,FR
+2988555116,2988555119,ES
+2988555120,2988555123,BE
+2988555124,2988555127,IT
+2988555128,2988555167,FR
+2988555168,2988555183,ES
+2988555184,2988555187,IT
+2988555188,2988555211,FR
+2988555212,2988555215,GB
+2988555216,2988555231,FR
+2988555232,2988555263,PL
+2988555264,2988555527,FR
2988555528,2988555531,ES
-2988555532,2988556207,FR
+2988555532,2988555563,FR
+2988555564,2988555567,PL
+2988555568,2988555719,FR
+2988555720,2988555723,IE
+2988555724,2988555727,CZ
+2988555728,2988556179,FR
+2988556180,2988556183,ES
+2988556184,2988556191,FR
+2988556192,2988556195,ES
+2988556196,2988556199,CH
+2988556200,2988556207,FR
2988556208,2988556211,DE
-2988556212,2988556359,FR
+2988556212,2988556215,FR
+2988556216,2988556219,DE
+2988556220,2988556223,PL
+2988556224,2988556359,FR
2988556360,2988556363,ES
-2988556364,2988557507,FR
+2988556364,2988556463,FR
+2988556464,2988556479,CH
+2988556480,2988556483,GB
+2988556484,2988556539,FR
+2988556540,2988556543,BE
+2988556544,2988556891,FR
+2988556892,2988556895,IT
+2988556896,2988556967,FR
+2988556968,2988556975,DE
+2988556976,2988557051,FR
+2988557052,2988557055,PT
+2988557056,2988557063,FR
+2988557064,2988557071,GB
+2988557072,2988557079,FR
+2988557080,2988557087,IT
+2988557088,2988557095,FI
+2988557096,2988557247,FR
+2988557248,2988557251,DE
+2988557252,2988557263,FR
+2988557264,2988557279,BE
+2988557280,2988557287,FR
+2988557288,2988557291,PL
+2988557292,2988557295,FR
+2988557296,2988557299,IE
+2988557300,2988557303,ES
+2988557304,2988557311,DE
+2988557312,2988557439,FR
+2988557440,2988557471,GB
+2988557472,2988557491,FR
+2988557492,2988557495,GB
+2988557496,2988557499,DE
+2988557500,2988557507,FR
2988557508,2988557511,ES
-2988557512,2988557539,FR
+2988557512,2988557531,FR
+2988557532,2988557535,ES
+2988557536,2988557539,FR
2988557540,2988557543,ES
-2988557544,2988558203,FR
+2988557544,2988557559,FR
+2988557560,2988557563,DE
+2988557564,2988557643,FR
+2988557644,2988557651,DE
+2988557652,2988557767,FR
+2988557768,2988557771,DE
+2988557772,2988558063,FR
+2988558064,2988558067,BE
+2988558068,2988558071,DE
+2988558072,2988558111,FR
+2988558112,2988558119,IT
+2988558120,2988558143,FR
+2988558144,2988558159,GB
+2988558160,2988558175,FR
+2988558176,2988558191,NL
+2988558192,2988558203,FR
2988558204,2988558207,DE
-2988558208,2988558803,FR
+2988558208,2988558591,FR
+2988558592,2988558623,DE
+2988558624,2988558655,NL
+2988558656,2988558719,PL
+2988558720,2988558727,NL
+2988558728,2988558731,BE
+2988558732,2988558803,FR
2988558804,2988558807,ES
2988558808,2988558815,NL
-2988558816,2988561583,FR
+2988558816,2988558831,GB
+2988558832,2988558863,FR
+2988558864,2988558879,NL
+2988558880,2988558891,FR
+2988558892,2988558895,DE
+2988558896,2988558907,FR
+2988558908,2988558911,DE
+2988558912,2988558927,FR
+2988558928,2988558935,CZ
+2988558936,2988558939,IT
+2988558940,2988559011,FR
+2988559012,2988559015,BE
+2988559016,2988559023,DE
+2988559024,2988559247,FR
+2988559248,2988559255,GB
+2988559256,2988559631,FR
+2988559632,2988559647,GB
+2988559648,2988559663,IT
+2988559664,2988559695,FR
+2988559696,2988559703,GB
+2988559704,2988559735,FR
+2988559736,2988559743,GB
+2988559744,2988560287,FR
+2988560288,2988560319,ES
+2988560320,2988560351,FR
+2988560352,2988560383,ES
+2988560384,2988560387,CZ
+2988560388,2988560431,FR
+2988560432,2988560439,CH
+2988560440,2988560463,FR
+2988560464,2988560479,NL
+2988560480,2988560511,FR
+2988560512,2988560527,IT
+2988560528,2988560531,FR
+2988560532,2988560535,ES
+2988560536,2988560543,IT
+2988560544,2988560595,FR
+2988560596,2988560599,ES
+2988560600,2988560607,FR
+2988560608,2988560623,PL
+2988560624,2988560635,FR
+2988560636,2988560639,DE
+2988560640,2988560703,PT
+2988560704,2988560711,NL
+2988560712,2988560719,FR
+2988560720,2988560735,DE
+2988560736,2988560895,FR
+2988560896,2988560919,PL
+2988560920,2988561039,FR
+2988561040,2988561043,GB
+2988561044,2988561055,FR
+2988561056,2988561059,ES
+2988561060,2988561063,FR
+2988561064,2988561071,PL
+2988561072,2988561075,BE
+2988561076,2988561095,FR
+2988561096,2988561099,NL
+2988561100,2988561103,ES
+2988561104,2988561179,FR
+2988561180,2988561183,NL
+2988561184,2988561203,FR
+2988561204,2988561207,PT
+2988561208,2988561215,PL
+2988561216,2988561231,ES
+2988561232,2988561283,FR
+2988561284,2988561287,PT
+2988561288,2988561291,IE
+2988561292,2988561295,DE
+2988561296,2988561343,FR
+2988561344,2988561375,PL
+2988561376,2988561391,NL
+2988561392,2988561583,FR
2988561584,2988561591,GB
-2988561592,2988561763,FR
+2988561592,2988561599,FR
+2988561600,2988561631,PL
+2988561632,2988561663,FR
+2988561664,2988561671,PL
+2988561672,2988561747,FR
+2988561748,2988561751,FI
+2988561752,2988561759,FR
+2988561760,2988561763,LT
2988561764,2988561767,IT
-2988561768,2988562847,FR
+2988561768,2988561847,FR
+2988561848,2988561855,IT
+2988561856,2988561871,GB
+2988561872,2988561875,IE
+2988561876,2988561887,FR
+2988561888,2988561903,GB
+2988561904,2988562143,FR
+2988562144,2988562151,IE
+2988562152,2988562159,DE
+2988562160,2988562495,FR
+2988562496,2988562527,GB
+2988562528,2988562559,FR
+2988562560,2988562575,PL
+2988562576,2988562599,FR
+2988562600,2988562607,DE
+2988562608,2988562615,PT
+2988562616,2988562843,FR
+2988562844,2988562847,DE
2988562848,2988562863,GB
-2988562864,2988564143,FR
+2988562864,2988563015,FR
+2988563016,2988563023,IE
+2988563024,2988563075,FR
+2988563076,2988563079,ES
+2988563080,2988563135,FR
+2988563136,2988563151,PT
+2988563152,2988563167,FR
+2988563168,2988563183,GB
+2988563184,2988563199,FR
+2988563200,2988563263,PT
+2988563264,2988564011,FR
+2988564012,2988564015,IE
+2988564016,2988564019,ES
+2988564020,2988564023,FR
+2988564024,2988564027,IE
+2988564028,2988564143,FR
2988564144,2988564159,ES
-2988564160,2988572671,FR
+2988564160,2988564187,FR
+2988564188,2988564191,PL
+2988564192,2988564199,FR
+2988564200,2988564207,IT
+2988564208,2988564471,FR
+2988564472,2988564479,CZ
+2988564480,2988572671,FR
2988572672,2988703743,RU
2988703744,2988834815,PL
2988834816,2988965887,CH
@@ -48122,10 +53836,12 @@
2990211072,2990276607,GR
2990276608,2990342143,ES
2990342144,2990407679,KW
-2990407680,2990421728,US
+2990407680,2990407935,US
+2990407936,2990408191,GB
+2990408192,2990421728,US
2990421729,2990421729,GB
2990421730,2990440447,US
-2990440448,2990473215,NL
+2990440448,2990473215,GB
2990473216,2990475674,DE
2990475675,2990475675,HR
2990475676,2990500113,DE
@@ -48143,7 +53859,9 @@
2991161344,2991177727,FR
2991177728,2991179503,SE
2991179504,2991179507,ES
-2991179508,2991194111,SE
+2991179508,2991191807,SE
+2991191808,2991192063,FI
+2991192064,2991194111,SE
2991194112,2991210495,NO
2991210496,2991243263,RU
2991243264,2991259647,UA
@@ -48305,28 +54023,12 @@
2997878784,2998140927,RU
2998140928,2998403071,PL
2998403072,2998665215,RU
-2998665216,2998710451,AT
-2998710452,2998710455,DE
-2998710456,2998712975,AT
-2998712976,2998712979,DE
-2998712980,2998720227,AT
-2998720228,2998720231,CZ
-2998720232,2998820735,AT
-2998820736,2998820863,CZ
-2998820864,2998834559,AT
-2998834560,2998834687,HU
-2998834688,2998841343,AT
-2998841344,2998841599,DE
-2998841600,2998875391,AT
-2998875392,2998875519,CZ
-2998875520,2998927359,AT
-2998927360,2998991615,CH
-2998991616,2998991871,DE
-2998991872,2999026943,CH
-2999026944,2999027071,DE
-2999027072,2999380223,CH
-2999380224,2999380479,DE
-2999380480,2999451647,CH
+2998665216,2998679039,AT
+2998679040,2998679295,SI
+2998679296,2998902527,AT
+2998902528,2998902783,SI
+2998902784,2998927359,AT
+2998927360,2999451647,CH
2999451648,2999713791,DE
2999713792,2999975935,RU
2999975936,2999984127,FR
@@ -48365,8 +54067,7 @@
3000246272,3000248319,RO
3000248320,3000252415,PL
3000252416,3000254463,RO
-3000254464,3000256511,UA
-3000256512,3000260607,RU
+3000254464,3000260607,RU
3000260608,3000262655,RS
3000262656,3000266751,UA
3000266752,3000268799,DE
@@ -48537,7 +54238,9 @@
3001901056,3001905151,FR
3001905152,3001909247,GB
3001909248,3001917439,ES
-3001917440,3001921535,GB
+3001917440,3001919743,GB
+3001919744,3001919999,AU
+3001920000,3001921535,GB
3001921536,3001929727,RU
3001929728,3001933823,RS
3001933824,3001937919,ES
@@ -48720,7 +54423,8 @@
3003076608,3003078143,GB
3003078144,3003078151,US
3003078152,3003078155,IN
-3003078156,3003080703,GB
+3003078156,3003078399,US
+3003078400,3003080703,GB
3003080704,3003082751,FR
3003082752,3003084799,ES
3003086848,3003088895,RU
@@ -48762,29 +54466,43 @@
3003129088,3003129343,CO
3003129344,3003129599,BO
3003129600,3003129855,HN
-3003129856,3003138559,CR
+3003129856,3003130111,MX
+3003130112,3003130367,CR
+3003130368,3003130623,MX
+3003130624,3003131647,CR
+3003131648,3003133183,MX
+3003133184,3003133695,CR
+3003133696,3003134719,MX
+3003134720,3003134975,CR
+3003134976,3003135487,MX
+3003135488,3003136255,CR
+3003136256,3003137279,MX
+3003137280,3003137791,CR
+3003137792,3003138047,MX
+3003138048,3003138559,HN
3003138560,3003139071,PA
-3003139072,3003139583,CR
+3003139072,3003139583,HN
3003139584,3003140351,PA
-3003140352,3003140607,CR
+3003140352,3003140607,HN
3003140608,3003141375,PA
-3003141376,3003141631,CR
+3003141376,3003141631,HN
3003141632,3003141887,PA
-3003141888,3003143679,CR
+3003141888,3003143679,HN
3003143680,3003144447,PA
-3003144448,3003146239,CR
+3003144448,3003146239,HN
3003146240,3003146495,PA
-3003146496,3003147007,CR
+3003146496,3003147007,GT
3003147008,3003147263,PA
-3003147264,3003148031,CR
+3003147264,3003148031,GT
3003148032,3003148543,PA
-3003148544,3003148799,CR
+3003148544,3003148799,GT
3003148800,3003149311,PA
-3003149312,3003151871,CR
+3003149312,3003150335,GT
+3003150336,3003151871,SV
3003151872,3003152383,PA
-3003152384,3003152639,CR
+3003152384,3003152639,SV
3003152640,3003152895,PA
-3003152896,3003154431,CR
+3003152896,3003154431,SV
3003154432,3003154687,CL
3003154688,3003154943,EC
3003154944,3003159039,AR
@@ -48833,33 +54551,39 @@
3005888000,3005888255,CO
3005888256,3005890047,PA
3005890048,3005890303,CO
-3005890304,3005891071,PA
-3005891072,3005891327,CO
+3005890304,3005890559,PA
+3005890560,3005891327,CO
3005891328,3005893119,PA
3005893120,3005893631,CO
3005893632,3005893887,PA
3005893888,3005894143,CO
-3005894144,3005894655,PA
-3005894656,3005894911,CO
+3005894144,3005894399,PA
+3005894400,3005894911,CO
3005894912,3005896703,PA
3005896704,3005896959,CO
-3005896960,3005899263,PA
-3005899264,3005899519,CO
-3005899520,3005900031,PA
-3005900032,3005900287,CO
-3005900288,3005902591,PA
+3005896960,3005897215,PA
+3005897216,3005897727,CO
+3005897728,3005897983,PA
+3005897984,3005898239,CO
+3005898240,3005899007,PA
+3005899008,3005900287,CO
+3005900288,3005901055,PA
+3005901056,3005901311,CO
+3005901312,3005902591,PA
3005902592,3005902847,CO
-3005902848,3005903359,PA
-3005903360,3005903871,CO
-3005903872,3005905151,PA
-3005905152,3005905407,CO
-3005905408,3005905919,PA
-3005905920,3005906943,CO
+3005902848,3005903103,PA
+3005903104,3005903871,CO
+3005903872,3005904895,PA
+3005904896,3005905407,CO
+3005905408,3005905663,PA
+3005905664,3005906943,CO
3005906944,3005911039,PA
3005911040,3005911295,CO
3005911296,3005911551,PA
3005911552,3005911807,CO
-3005911808,3005913343,PA
+3005911808,3005912831,PA
+3005912832,3005913087,CO
+3005913088,3005913343,PA
3005913344,3005913599,CO
3005913600,3005913855,PA
3005913856,3005914623,CO
@@ -48895,8 +54619,8 @@
3006279168,3006279423,NI
3006279424,3006283519,PA
3006283520,3006283775,NI
-3006283776,3006284287,CR
-3006284288,3006284799,PA
+3006283776,3006284543,CR
+3006284544,3006284799,PA
3006284800,3006285055,CR
3006285056,3006285311,PA
3006285312,3006285567,CR
@@ -48904,33 +54628,35 @@
3006285824,3006286079,CR
3006286080,3006287103,PA
3006287104,3006287359,CR
-3006287360,3006288639,PA
+3006287360,3006287871,PA
+3006287872,3006288127,CR
+3006288128,3006288639,PA
3006288640,3006289151,CR
-3006289152,3006289663,PA
-3006289664,3006289919,CR
-3006289920,3006291455,PA
-3006291456,3006291711,CR
-3006291712,3006292991,PA
+3006289152,3006289407,PA
+3006289408,3006289919,CR
+3006289920,3006291199,PA
+3006291200,3006291967,CR
+3006291968,3006292991,PA
3006292992,3006293247,CR
3006293248,3006296575,PA
3006296576,3006296831,CR
3006296832,3006308351,PA
3006308352,3006308863,CR
3006308864,3006310143,PA
-3006310144,3006310399,CR
-3006310400,3006311167,PA
+3006310144,3006310655,CR
+3006310656,3006311167,PA
3006311168,3006311423,CR
3006311424,3006311679,PA
-3006311680,3006312191,CR
-3006312192,3006312703,PA
-3006312704,3006312959,CR
-3006312960,3006313727,PA
-3006313728,3006313983,CR
-3006313984,3006314239,PA
-3006314240,3006314495,CR
+3006311680,3006312447,CR
+3006312448,3006312703,PA
+3006312704,3006313215,CR
+3006313216,3006313727,PA
+3006313728,3006314495,CR
3006314496,3006315263,PA
3006315264,3006315775,CR
-3006315776,3006320895,PA
+3006315776,3006316031,PA
+3006316032,3006316287,CR
+3006316288,3006320895,PA
3006320896,3006321151,CR
3006321152,3006321663,PA
3006321664,3006322175,CR
@@ -48938,9 +54664,11 @@
3006322432,3006323199,CR
3006323200,3006323455,PA
3006323456,3006323711,CR
-3006323712,3006329343,PA
-3006329344,3006329855,NI
-3006329856,3006330367,PA
+3006323712,3006328831,PA
+3006328832,3006329087,NI
+3006329088,3006329343,PA
+3006329344,3006330111,NI
+3006330112,3006330367,PA
3006330368,3006330623,NI
3006330624,3006330879,PA
3006330880,3006331903,CR
@@ -48971,11 +54699,13 @@
3006513152,3006513663,PA
3006513664,3006514431,CR
3006514432,3006514687,PA
-3006514688,3006517503,CR
+3006514688,3006516479,CR
+3006516480,3006516735,PA
+3006516736,3006517503,CR
3006517504,3006517759,NI
3006517760,3006518527,CR
-3006518528,3006519039,NI
-3006519040,3006521343,CR
+3006518528,3006519295,NI
+3006519296,3006521343,CR
3006521344,3006528511,AR
3006528512,3006529535,BZ
3006529536,3006660607,DO
@@ -49014,85 +54744,225 @@
3007123456,3007143935,AR
3007143936,3007148031,CL
3007148032,3007152127,CO
-3007152128,3007152383,CL
+3007152128,3007152143,CL
+3007152144,3007152159,DE
+3007152160,3007152383,CL
3007152384,3007152639,US
-3007152640,3007152895,CL
+3007152640,3007152655,CL
+3007152656,3007152671,DE
+3007152672,3007152895,CL
3007152896,3007153151,US
-3007153152,3007153407,CL
-3007153408,3007153663,US
-3007153664,3007153919,CL
+3007153152,3007153167,CL
+3007153168,3007153183,DE
+3007153184,3007153279,CL
+3007153280,3007153663,US
+3007153664,3007153679,CL
+3007153680,3007153695,DE
+3007153696,3007153919,CL
3007153920,3007154175,US
-3007154176,3007154431,CL
-3007154432,3007154687,US
-3007154688,3007154943,CL
+3007154176,3007154191,CL
+3007154192,3007154207,DE
+3007154208,3007154303,CL
+3007154304,3007154687,US
+3007154688,3007154703,CL
+3007154704,3007154719,DE
+3007154720,3007154943,CL
3007154944,3007155199,US
-3007155200,3007155455,CL
+3007155200,3007155215,CL
+3007155216,3007155231,DE
+3007155232,3007155327,CL
+3007155328,3007155455,US
3007155456,3007155711,GB
-3007155712,3007155967,CL
+3007155712,3007155727,CL
+3007155728,3007155743,DE
+3007155744,3007155967,CL
3007155968,3007156223,DE
-3007156224,3007156479,CL
+3007156224,3007156239,CL
+3007156240,3007156255,DE
+3007156256,3007156351,CL
+3007156352,3007156479,US
3007156480,3007156495,ES
-3007156496,3007156991,CL
+3007156496,3007156511,DE
+3007156512,3007156543,CL
+3007156544,3007156607,GB
+3007156608,3007156751,CL
+3007156752,3007156767,DE
+3007156768,3007156991,CL
3007156992,3007157007,HR
-3007157008,3007157503,CL
+3007157008,3007157055,CL
+3007157056,3007157119,GB
+3007157120,3007157247,DE
+3007157248,3007157263,CL
+3007157264,3007157279,DE
+3007157280,3007157375,CL
+3007157376,3007157503,US
3007157504,3007157519,IE
-3007157520,3007158015,CL
+3007157520,3007157567,CL
+3007157568,3007157631,GB
+3007157632,3007157759,US
+3007157760,3007157775,CL
+3007157776,3007157791,DE
+3007157792,3007158015,CL
3007158016,3007158031,BE
-3007158032,3007158527,CL
+3007158032,3007158079,CL
+3007158080,3007158143,GB
+3007158144,3007158271,DE
+3007158272,3007158287,CL
+3007158288,3007158303,DE
+3007158304,3007158399,CL
+3007158400,3007158527,US
3007158528,3007158543,GB
-3007158544,3007159039,CL
+3007158544,3007158591,CL
+3007158592,3007158655,GB
+3007158656,3007158783,DE
+3007158784,3007158799,CL
+3007158800,3007158815,DE
+3007158816,3007159039,CL
3007159040,3007159055,GB
-3007159056,3007159551,CL
+3007159056,3007159103,CL
+3007159104,3007159167,GB
+3007159168,3007159295,US
+3007159296,3007159311,CL
+3007159312,3007159327,DE
+3007159328,3007159423,CL
+3007159424,3007159551,US
3007159552,3007159567,RU
-3007159568,3007160063,CL
+3007159568,3007159615,CL
+3007159616,3007159679,GB
+3007159680,3007159807,DE
+3007159808,3007159823,CL
+3007159824,3007159839,DE
+3007159840,3007160063,CL
3007160064,3007160079,HR
-3007160080,3007160575,CL
+3007160080,3007160127,CL
+3007160128,3007160191,GB
+3007160192,3007160319,DE
+3007160320,3007160335,CL
+3007160336,3007160351,DE
+3007160352,3007160447,CL
+3007160448,3007160575,US
3007160576,3007160591,IE
3007160592,3007160607,US
-3007160608,3007161087,CL
+3007160608,3007160703,CL
+3007160704,3007160831,US
+3007160832,3007160847,CL
+3007160848,3007160863,DE
+3007160864,3007161087,CL
3007161088,3007161103,GB
-3007161104,3007161599,CL
+3007161104,3007161215,CL
+3007161216,3007161343,DE
+3007161344,3007161359,CL
+3007161360,3007161375,DE
+3007161376,3007161471,CL
+3007161472,3007161599,US
3007161600,3007161615,GB
-3007161616,3007162111,CL
+3007161616,3007161727,CL
+3007161728,3007161855,DE
+3007161856,3007161871,CL
+3007161872,3007161887,DE
+3007161888,3007162111,CL
3007162112,3007162127,ES
-3007162128,3007162623,CL
+3007162128,3007162239,CL
+3007162240,3007162367,US
+3007162368,3007162383,CL
+3007162384,3007162399,DE
+3007162400,3007162495,CL
+3007162496,3007162623,US
3007162624,3007162639,NL
-3007162640,3007163135,CL
+3007162640,3007162751,CL
+3007162752,3007162879,DE
+3007162880,3007162895,CL
+3007162896,3007162911,DE
+3007162912,3007163135,CL
3007163136,3007163151,GB
-3007163152,3007163647,CL
+3007163152,3007163199,CL
+3007163200,3007163263,DE
+3007163264,3007163407,CL
+3007163408,3007163423,DE
+3007163424,3007163519,CL
+3007163520,3007163647,US
3007163648,3007163663,ES
-3007163664,3007164159,CL
+3007163664,3007163711,CL
+3007163712,3007163775,DE
+3007163776,3007163903,US
+3007163904,3007163919,CL
+3007163920,3007163935,DE
+3007163936,3007164159,CL
3007164160,3007164175,SK
-3007164176,3007164671,CL
+3007164176,3007164223,CL
+3007164224,3007164287,DE
+3007164288,3007164431,CL
+3007164432,3007164447,DE
+3007164448,3007164543,CL
+3007164544,3007164671,US
3007164672,3007164687,SE
-3007164688,3007165183,CL
+3007164688,3007164735,CL
+3007164736,3007164799,DE
+3007164800,3007164943,CL
+3007164944,3007164959,DE
+3007164960,3007165183,CL
3007165184,3007165199,GB
-3007165200,3007165695,CL
+3007165200,3007165247,CL
+3007165248,3007165311,DE
+3007165312,3007165439,US
+3007165440,3007165455,CL
+3007165456,3007165471,DE
+3007165472,3007165567,CL
+3007165568,3007165695,US
3007165696,3007165711,DK
-3007165712,3007166207,CL
+3007165712,3007165759,CL
+3007165760,3007165823,DE
+3007165824,3007165967,CL
+3007165968,3007165983,DE
+3007165984,3007166207,CL
3007166208,3007166223,TR
-3007166224,3007166719,CL
+3007166224,3007166271,CL
+3007166272,3007166335,DE
+3007166336,3007166479,CL
+3007166480,3007166495,DE
+3007166496,3007166591,CL
+3007166592,3007166719,US
3007166720,3007166735,GB
-3007166736,3007167231,CL
+3007166736,3007166751,DE
+3007166752,3007166847,CL
+3007166848,3007166975,US
+3007166976,3007166991,CL
+3007166992,3007167007,DE
+3007167008,3007167231,CL
3007167232,3007167247,ES
-3007167248,3007167743,CL
+3007167248,3007167263,DE
+3007167264,3007167503,CL
+3007167504,3007167519,DE
+3007167520,3007167615,CL
+3007167616,3007167743,US
3007167744,3007167759,AU
-3007167760,3007168255,CL
+3007167760,3007167775,DE
+3007167776,3007168015,CL
+3007168016,3007168031,DE
+3007168032,3007168127,CL
+3007168128,3007168255,US
3007168256,3007168271,GR
-3007168272,3007168511,CL
+3007168272,3007168287,DE
+3007168288,3007168383,CL
+3007168384,3007168511,US
3007168512,3007168767,QA
3007168768,3007169023,CL
3007169024,3007169151,US
-3007169152,3007171855,CL
+3007169152,3007169279,CL
+3007169280,3007169535,US
+3007169536,3007170559,CL
+3007170560,3007171071,DE
+3007171072,3007171855,CL
3007171856,3007171871,US
-3007171872,3007175679,CL
+3007171872,3007172607,CL
+3007172608,3007175679,BR
3007175680,3007175935,GB
-3007175936,3007183359,CL
+3007175936,3007183359,BR
3007183360,3007183615,AU
3007183616,3007183871,IE
3007183872,3007184127,JO
3007184128,3007184383,KW
-3007184384,3007184895,CL
+3007184384,3007184895,BR
3007184896,3007250431,AR
3007250432,3007268095,CR
3007268096,3007268607,PA
@@ -49118,8 +54988,8 @@
3007283456,3007283711,PA
3007283712,3007283967,CR
3007283968,3007284223,PA
-3007284224,3007286015,CR
-3007286016,3007286271,PA
+3007284224,3007285759,CR
+3007285760,3007286271,PA
3007286272,3007286783,CR
3007286784,3007287295,PA
3007287296,3007287551,CR
@@ -49160,7 +55030,9 @@
3025403904,3025600511,CN
3025600512,3025603071,IN
3025603072,3025603087,HK
-3025603088,3025603839,IN
+3025603088,3025603103,IN
+3025603104,3025603199,HK
+3025603200,3025603839,IN
3025603840,3025604095,HK
3025604096,3025604381,IN
3025604382,3025606655,SG
@@ -49173,7 +55045,9 @@
3025608192,3025608203,JP
3025608204,3025610751,IN
3025610752,3025612799,SG
-3025612800,3025616895,IN
+3025612800,3025612895,IN
+3025612896,3025612927,SG
+3025612928,3025616895,IN
3025616896,3025617407,SG
3025617408,3025618943,IN
3025618944,3025619487,SG
@@ -49191,7 +55065,8 @@
3025625400,3025625407,TH
3025625408,3025625471,SG
3025625472,3025625503,MY
-3025625504,3025625535,IN
+3025625504,3025625519,SG
+3025625520,3025625535,IN
3025625536,3025625599,CA
3025625600,3025625855,SG
3025625856,3025629439,IN
@@ -49205,7 +55080,11 @@
3025631240,3025631247,AU
3025631248,3025632255,IN
3025632256,3025632271,SG
-3025632272,3025633535,IN
+3025632272,3025632287,IN
+3025632288,3025632351,SG
+3025632352,3025632511,IN
+3025632512,3025632767,SG
+3025632768,3025633535,IN
3025633536,3025633791,HK
3025633792,3025633807,AU
3025633808,3025637151,IN
@@ -49224,18 +55103,27 @@
3025639176,3025639423,IN
3025639424,3025639679,SG
3025639680,3025639935,HK
-3025639936,3025640447,IN
+3025639936,3025640191,IN
+3025640192,3025640447,JP
3025640448,3025640799,MY
3025640800,3025641727,IN
3025641728,3025641743,HK
3025641744,3025641759,IN
3025641760,3025641775,HK
-3025641776,3025647103,IN
+3025641776,3025641983,IN
+3025641984,3025642495,HK
+3025642496,3025642751,SG
+3025642752,3025647103,IN
3025647104,3025647359,SG
3025647360,3025647615,AU
3025647616,3025647775,IN
3025647776,3025647791,SG
-3025647792,3025648079,IN
+3025647792,3025647839,IN
+3025647840,3025647871,SG
+3025647872,3025647903,HK
+3025647904,3025647935,IN
+3025647936,3025647967,SG
+3025647968,3025648079,IN
3025648080,3025648087,SG
3025648088,3025648091,US
3025648092,3025649151,IN
@@ -49352,9 +55240,7 @@
3031695360,3031760895,TH
3031760896,3031826431,AU
3031826432,3031891967,KR
-3031891968,3031913983,TH
-3031913984,3031914239,SG
-3031914240,3031957503,TH
+3031891968,3031957503,TH
3031957504,3032252415,CN
3032252416,3032271871,HK
3032271872,3032272895,AU
@@ -49452,7 +55338,8 @@
3035324416,3035326463,JP
3035326464,3035328511,AU
3035332608,3035333631,AU
-3035333632,3035334655,HK
+3035333632,3035333887,JP
+3035333888,3035334655,HK
3035335680,3035337727,JP
3035337728,3035338751,ID
3035338752,3035339007,SG
@@ -49479,8 +55366,8 @@
3039232000,3039297535,EC
3039297536,3039363071,PY
3039363072,3039412223,BZ
-3039412224,3039412991,CL
-3039412992,3039413247,BR
+3039412224,3039412735,CL
+3039412736,3039413247,BR
3039413248,3039413503,CL
3039413504,3039414015,BR
3039414016,3039414271,CL
@@ -49492,14 +55379,13 @@
3039416716,3039416735,CL
3039416736,3039416739,US
3039416740,3039416831,CL
-3039416832,3039417343,BR
-3039417344,3039417855,CL
+3039416832,3039417599,BR
+3039417600,3039417855,CL
3039417856,3039418111,BR
3039418112,3039418367,CL
3039418368,3039418879,BR
3039418880,3039419135,CL
-3039419136,3039420159,BR
-3039420160,3039420415,CL
+3039419136,3039420415,BR
3039420416,3039428607,AR
3039428608,3039559679,CL
3039559680,3039821823,AR
@@ -49631,7 +55517,9 @@
3050708480,3050708495,FR
3050708496,3050708991,CL
3050708992,3050709007,AT
-3050709008,3050709503,CL
+3050709008,3050709247,CL
+3050709248,3050709375,DE
+3050709376,3050709503,CL
3050709504,3050709519,TH
3050709520,3050710015,CL
3050710016,3050710031,ES
@@ -49647,7 +55535,11 @@
3050712576,3050712591,PL
3050712592,3050713087,CL
3050713088,3050713103,LV
-3050713104,3050766335,CL
+3050713104,3050714367,CL
+3050714368,3050714623,GB
+3050714624,3050715647,CL
+3050715648,3050718719,US
+3050718720,3050766335,CL
3050766336,3050766351,NO
3050766352,3050766847,CL
3050766848,3050766863,KR
@@ -49697,9 +55589,15 @@
3050778112,3050778127,KR
3050778128,3050778623,CL
3050778624,3050778639,TR
-3050778640,3050831871,CL
+3050778640,3050786815,CL
+3050786816,3050788863,US
+3050788864,3050790911,CL
+3050790912,3050807295,US
+3050807296,3050831871,CL
3050831872,3051356159,BR
-3051356160,3051373055,CR
+3051356160,3051372543,CR
+3051372544,3051372799,PA
+3051372800,3051373055,CR
3051373056,3051373311,PA
3051373312,3051374335,CR
3051374336,3051374591,PA
@@ -49899,7 +55797,6 @@
3068986368,3068987391,AU
3068987392,3068990463,IN
3068990464,3068991487,VN
-3068991488,3068991743,IN
3068993536,3069018111,KR
3069018112,3069034495,IN
3069034496,3069050879,KR
@@ -49974,7 +55871,8 @@
3078619136,3081437183,CN
3081437184,3081502719,MY
3081502720,3081764863,CN
-3081764864,3081846783,JP
+3081764864,3081844735,JP
+3081844736,3081846783,AU
3081846784,3081847807,TW
3081847808,3081848831,KR
3081848832,3081850879,SG
@@ -49991,7 +55889,9 @@
3082158080,3082166271,CN
3082166272,3082174463,JP
3082174464,3082178559,BZ
-3082178560,3082179583,HK
+3082178560,3082178823,HK
+3082178824,3082178824,SG
+3082178825,3082179583,HK
3082179584,3082181631,IN
3082181632,3082182655,ID
3082182656,3082190847,LA
@@ -50001,9 +55901,7 @@
3088605184,3088609279,NL
3088609280,3088629759,US
3088629760,3088633855,NL
-3088633856,3088924671,US
-3088924672,3088925695,NL
-3088925696,3088998399,US
+3088633856,3088998399,US
3088998400,3089002495,NL
3089002496,3089027071,US
3089027072,3089031167,NL
@@ -50019,9 +55917,7 @@
3091955712,3091959807,CA
3091959808,3091976191,US
3091976192,3091980287,CA
-3091980288,3092569343,US
-3092569344,3092569599,AU
-3092569600,3092578303,US
+3091980288,3092578303,US
3092578304,3092582399,NL
3092582400,3092615167,US
3092615168,3092619263,NL
@@ -50107,11 +56003,11 @@
3098263552,3098271743,CA
3098271744,3098278847,US
3098278848,3098278911,CA
-3098278912,3098411007,US
+3098278912,3098350383,US
+3098350384,3098350391,BR
+3098350392,3098411007,US
3098411008,3098415103,PK
-3098415104,3098439679,US
-3098439680,3098443775,CA
-3098443776,3098476543,US
+3098415104,3098476543,US
3098476544,3098492927,CA
3098492928,3098494719,US
3098494720,3098495743,CA
@@ -50145,6 +56041,8 @@
3103857408,3103857663,RS
3103857664,3103857919,FR
3103857920,3103858175,PL
+3103858176,3103858431,BG
+3103858432,3103858687,AT
3103916032,3103917055,CH
3103917056,3103918079,IT
3103918080,3103919103,DE
@@ -50206,8 +56104,8 @@
3103974400,3103974911,SE
3103974912,3103974919,LT
3103974920,3103974943,SE
-3103974944,3103975039,LT
-3103975040,3103975423,SE
+3103974944,3103975071,LT
+3103975072,3103975423,SE
3103975424,3103976447,SA
3103976448,3103977471,GB
3103977472,3103978495,NL
@@ -50239,7 +56137,9 @@
3104009216,3104010239,IT
3104010240,3104011263,PL
3104011264,3104012287,ES
-3104012288,3104013311,BH
+3104012288,3104012799,BH
+3104012800,3104013055,SA
+3104013056,3104013311,BH
3104013312,3104014335,IR
3104014336,3104015359,FR
3104015360,3104016383,SE
@@ -50650,7 +56550,15 @@
3104451584,3104452607,RU
3104452608,3104453631,NL
3104453632,3104454655,CH
-3104454656,3104455679,NL
+3104454656,3104454660,NL
+3104454661,3104454782,SE
+3104454783,3104455050,NL
+3104455051,3104455082,SE
+3104455083,3104455146,NL
+3104455147,3104455162,SE
+3104455163,3104455294,NL
+3104455295,3104455423,SE
+3104455424,3104455679,NL
3104455680,3104456703,RU
3104456704,3104457727,IL
3104457728,3104458751,DE
@@ -50994,7 +56902,6 @@
3104826368,3104827391,CH
3104827392,3104828415,PL
3104828416,3104829439,AT
-3104829440,3104830463,DK
3104830464,3104831487,DE
3104831488,3104832511,NL
3104832512,3104833535,CZ
@@ -51014,7 +56921,9 @@
3104848896,3104849919,DE
3104849920,3104850943,RU
3104850944,3104851199,JE
-3104851200,3104851967,GB
+3104851200,3104851455,GB
+3104851456,3104851711,GG
+3104851712,3104851967,GB
3104851968,3104852991,DE
3104852992,3104854015,AT
3104854016,3104855039,GI
@@ -51420,7 +57329,6 @@
3105289216,3105290239,AT
3105290240,3105291263,TR
3105291264,3105292287,CH
-3105292288,3105293311,DE
3105293312,3105294335,GB
3105294336,3105295359,RU
3105295360,3105296383,PL
@@ -51458,6 +57366,7 @@
3105331200,3105332223,IQ
3105332224,3105333247,DE
3105333248,3105334271,LV
+3105334272,3105335295,UA
3105335296,3105336319,GR
3105336320,3105337343,IL
3105337344,3105339391,GB
@@ -51507,8 +57416,7 @@
3105386496,3105387519,RU
3105387520,3105388543,IT
3105388544,3105389567,GB
-3105389568,3105389823,LB
-3105389824,3105390591,TR
+3105389568,3105390591,TR
3105390592,3105391615,JO
3105391616,3105392639,NL
3105392640,3105393663,IR
@@ -51556,7 +57464,9 @@
3105441792,3105442815,IT
3105442816,3105443839,FI
3105443840,3105444863,NL
-3105444864,3105445887,GB
+3105444864,3105445119,GB
+3105445120,3105445631,US
+3105445632,3105445887,GB
3105445888,3105446911,RU
3105446912,3105447935,CH
3105447936,3105448959,DE
@@ -51640,9 +57550,7 @@
3105532928,3105533951,RS
3105533952,3105534975,BA
3105534976,3105535231,GB
-3105535232,3105535773,NO
-3105535774,3105535774,RU
-3105535775,3105535999,NO
+3105535232,3105535999,NO
3105536000,3105537023,AZ
3105537024,3105538047,AT
3105538048,3105539071,RU
@@ -51720,7 +57628,10 @@
3105614848,3105615871,NL
3105615872,3105616895,SE
3105616896,3105617919,GB
-3105617920,3105618943,NL
+3105617920,3105617953,US
+3105617954,3105617954,NL
+3105617955,3105618175,US
+3105618176,3105618943,NL
3105618944,3105619967,DE
3105619968,3105620991,TR
3105620992,3105622015,DE
@@ -51763,7 +57674,8 @@
3105655808,3105656831,ES
3105656832,3105657855,SK
3105657856,3105658879,NL
-3105658880,3105659903,IL
+3105658880,3105659135,GB
+3105659136,3105659903,IL
3105659904,3105660927,DE
3105660928,3105661951,TR
3105661952,3105662975,GB
@@ -51771,7 +57683,13 @@
3105664000,3105665023,DE
3105665024,3105666047,PL
3105667072,3105668095,DE
-3105668096,3105669119,NL
+3105668096,3105668131,US
+3105668132,3105668159,NL
+3105668160,3105668191,US
+3105668192,3105668351,NL
+3105668352,3105668863,US
+3105668864,3105668879,NL
+3105668880,3105669119,US
3105669120,3105670143,CZ
3105670144,3105671167,IE
3105671168,3105673215,GB
@@ -52018,9 +57936,9 @@
3105933344,3105933359,IT
3105933360,3105933463,GB
3105933464,3105933471,IT
-3105933472,3105934127,GB
-3105934128,3105934135,IT
-3105934136,3105934215,GB
+3105933472,3105933871,GB
+3105933872,3105933879,IT
+3105933880,3105934215,GB
3105934216,3105934223,IT
3105934224,3105934231,GB
3105934232,3105934239,IT
@@ -52033,7 +57951,9 @@
3105939456,3105940479,BY
3105940480,3105941503,GR
3105941504,3105942527,NL
-3105942528,3105943551,LU
+3105942528,3105943039,LU
+3105943040,3105943295,BE
+3105943296,3105943551,LU
3105943552,3105944575,NL
3105944576,3105945599,DE
3105945600,3105946623,RU
@@ -52163,7 +58083,9 @@
3106067456,3106068479,DE
3106068480,3106070527,NL
3106070528,3106071551,UA
-3106071552,3106072575,BH
+3106071552,3106072063,BH
+3106072064,3106072319,US
+3106072320,3106072575,BH
3106072576,3106073599,GB
3106073600,3106074623,PL
3106074624,3106076671,RU
@@ -52290,7 +58212,8 @@
3106202624,3106203647,RU
3106203648,3106204671,GR
3106204672,3106205695,MT
-3106205696,3106206719,NO
+3106205696,3106205951,SE
+3106205952,3106206719,NO
3106206720,3106207743,GE
3106207744,3106208767,GB
3106208768,3106209791,RO
@@ -52327,9 +58250,11 @@
3106239488,3106240511,IT
3106240512,3106241535,IE
3106241536,3106242559,NL
+3106242560,3106243583,RU
3106243584,3106244607,FI
3106244608,3106245631,DE
-3106245632,3106246655,SE
+3106245632,3106245887,DK
+3106245888,3106246655,SE
3106246656,3106247679,DE
3106247680,3106248703,NO
3106248704,3106249727,DE
@@ -52355,7 +58280,7 @@
3106271232,3106272255,SK
3106272256,3106273279,NL
3106273280,3106274303,DE
-3106274304,3106275327,FR
+3106274304,3106275327,CH
3106275328,3106276351,FI
3106276352,3106277375,AT
3106277376,3106278399,DE
@@ -52404,7 +58329,9 @@
3106324480,3106325503,AL
3106325504,3106326527,FR
3106326528,3106326783,NL
-3106326784,3106327551,IL
+3106326784,3106327039,US
+3106327040,3106327295,GB
+3106327296,3106327551,NL
3106327552,3106328575,RU
3106328576,3106329599,UA
3106329600,3106330623,IQ
@@ -52477,7 +58404,7 @@
3106403328,3106405375,GB
3106405376,3106406399,DE
3106406400,3106407423,RU
-3106407424,3106409471,GB
+3106408448,3106409471,GB
3106409472,3106411519,IT
3106411520,3106412543,HU
3106412544,3106413567,GB
@@ -52706,12 +58633,14 @@
3106656256,3106657279,GB
3106657280,3106658303,NL
3106658304,3106659327,GB
-3106659328,3106660351,NL
+3106659328,3106660351,CZ
3106660352,3106661375,UA
3106661376,3106662399,TR
3106662400,3106663423,IE
3106663424,3106664447,UA
-3106664448,3106666495,FR
+3106664448,3106665727,FR
+3106665728,3106665983,CH
+3106665984,3106666495,FR
3106666496,3106667519,UA
3106667520,3106668543,ES
3106668544,3106669567,RU
@@ -52850,7 +58779,10 @@
3106817024,3106818047,IT
3106818048,3106819071,IE
3106819072,3106820095,BE
-3106820096,3106824191,CH
+3106820096,3106821631,CH
+3106821632,3106821887,HK
+3106821888,3106822143,RU
+3106822144,3106824191,CH
3106824192,3106825215,RU
3106825216,3106826239,IT
3106826240,3106827263,PL
@@ -52901,12 +58833,12 @@
3106872320,3106873343,BE
3106873344,3106874367,ES
3106874368,3106875391,RU
-3106875392,3106876415,SE
+3106875392,3106876415,NO
3106876416,3106877439,CZ
3106877440,3106878463,IR
3106878464,3106879487,RU
3106879488,3106880511,MK
-3106880512,3106881535,GB
+3106880512,3106881535,NL
3106881536,3106882559,PL
3106882560,3106883583,BE
3106883584,3106884607,GB
@@ -52966,7 +58898,7 @@
3106940928,3106941951,HU
3106941952,3106943999,FR
3106944000,3106945023,IT
-3106945024,3106946047,DE
+3106945024,3106946047,NL
3106946048,3106947071,GB
3106947072,3106948095,AE
3106948096,3106949119,NL
@@ -53367,6 +59299,7 @@
3107374261,3107374280,US
3107374321,3107374332,MX
3107374334,3107374335,MX
+3107374337,3107374340,US
3107375104,3107376127,GB
3107376128,3107377151,NL
3107377152,3107378175,AT
@@ -53479,8 +59412,12 @@
3107496064,3107496191,FR
3107496192,3107496255,DE
3107496256,3107496287,BS
-3107496288,3107496319,FR
-3107496320,3107496703,NL
+3107496288,3107496319,VG
+3107496320,3107496447,NL
+3107496448,3107496463,CL
+3107496464,3107496479,ES
+3107496480,3107496511,GB
+3107496512,3107496703,NL
3107496704,3107496719,PE
3107496720,3107496735,KP
3107496736,3107496751,FJ
@@ -53492,7 +59429,8 @@
3107496832,3107496847,BR
3107496848,3107496863,KP
3107496864,3107496879,HK
-3107496880,3107496911,IS
+3107496880,3107496895,IS
+3107496896,3107496911,US
3107496912,3107496927,PL
3107496928,3107496959,FR
3107496960,3107497983,DK
@@ -53509,7 +59447,8 @@
3107508224,3107509247,PL
3107509248,3107510271,SE
3107510272,3107511295,IT
-3107511296,3107512319,SI
+3107511296,3107511807,RS
+3107511808,3107512319,SI
3107512320,3107513343,NL
3107513344,3107514367,DE
3107514368,3107515391,US
@@ -53538,7 +59477,7 @@
3107540992,3107542015,RO
3107542016,3107543039,SE
3107543040,3107544063,DE
-3107544064,3107545087,IR
+3107544064,3107545087,GB
3107545088,3107546111,NL
3107546112,3107547135,GB
3107547136,3107548159,SE
@@ -53923,7 +59862,7 @@
3107961856,3107962879,RU
3107962880,3107963903,FR
3107963904,3107964927,RU
-3107964928,3107965951,ES
+3107964928,3107965951,PL
3107965952,3107966975,DE
3107966976,3107967999,NO
3107968000,3107969023,DE
@@ -53951,7 +59890,7 @@
3107991552,3107992575,AT
3107992576,3107993599,RU
3107993600,3107994623,RO
-3107994624,3107995647,DE
+3107994624,3107995647,AT
3107995648,3107996671,BE
3107996672,3107997695,IT
3107997696,3107998719,SE
@@ -53962,7 +59901,7 @@
3108002816,3108003839,RO
3108003840,3108004863,DE
3108004864,3108005887,RU
-3108005888,3108006911,RO
+3108005888,3108006911,LT
3108006912,3108007935,NL
3108007936,3108008959,DE
3108008960,3108009983,CH
@@ -54039,13 +59978,14 @@
3108085760,3108086783,LV
3108086784,3108087807,GB
3108087808,3108088831,CH
-3108088832,3108089855,NL
+3108088832,3108089855,RU
3108089856,3108090879,SE
3108090880,3108091903,BE
3108091904,3108092927,ES
3108092928,3108093951,SE
3108093952,3108095999,DE
-3108096000,3108097023,RU
+3108096000,3108096767,RU
+3108096768,3108097023,ES
3108097024,3108098047,TR
3108098048,3108099071,DE
3108099072,3108100095,NL
@@ -54061,10 +60001,571 @@
3108109312,3108110335,IQ
3108110336,3108111359,DK
3108111360,3108112383,GB
-3108112384,3108113407,UA
+3108112384,3108113407,US
3108113408,3108114431,RU
3108114432,3108115455,AE
3108115456,3108116479,GB
+3108116480,3108117503,IT
+3108117504,3108118527,RU
+3108118528,3108119551,GB
+3108119552,3108120575,CZ
+3108120576,3108122623,ES
+3108122624,3108123647,AT
+3108123648,3108124671,HU
+3108124672,3108125695,ES
+3108125696,3108126719,CH
+3108126720,3108127743,DE
+3108127744,3108128767,BY
+3108128768,3108129791,ES
+3108129792,3108130815,DE
+3108130816,3108131839,NL
+3108131840,3108132863,RU
+3108132864,3108133887,GB
+3108133888,3108134911,NL
+3108134912,3108135935,LU
+3108135936,3108136959,FR
+3108136960,3108137983,NL
+3108137984,3108139007,CH
+3108139008,3108141055,GB
+3108141056,3108142079,PL
+3108142080,3108143103,TR
+3108143104,3108144127,AL
+3108144128,3108145151,DE
+3108145152,3108146175,RO
+3108146176,3108147199,NL
+3108147200,3108148223,RU
+3108148224,3108149247,SI
+3108149248,3108150271,FR
+3108150272,3108151295,CH
+3108151296,3108152319,CY
+3108152320,3108153343,GB
+3108153344,3108154367,NL
+3108154368,3108155391,ES
+3108155392,3108156415,DE
+3108156416,3108157439,GB
+3108157440,3108158463,DK
+3108158464,3108159487,CZ
+3108159488,3108161535,DE
+3108161536,3108162559,SK
+3108162560,3108164607,GB
+3108164608,3108165631,PL
+3108165632,3108166655,RU
+3108166656,3108167679,DE
+3108167680,3108169727,IR
+3108169728,3108170751,FR
+3108170752,3108171775,DE
+3108171776,3108172799,GB
+3108172800,3108173823,DE
+3108173824,3108174847,NL
+3108174848,3108175871,KG
+3108175872,3108176895,UA
+3108176896,3108177919,NL
+3108177920,3108178943,PL
+3108178944,3108179967,IR
+3108179968,3108180991,NO
+3108180992,3108182015,IE
+3108182016,3108183039,DE
+3108183040,3108184063,ES
+3108184064,3108185087,TR
+3108185088,3108186111,DE
+3108186112,3108187135,NO
+3108187136,3108188159,NL
+3108188160,3108189183,GB
+3108189184,3108190207,RU
+3108191232,3108193279,NL
+3108193280,3108194303,PL
+3108194304,3108195327,FR
+3108195328,3108196351,GB
+3108196352,3108197375,FI
+3108197376,3108198399,IS
+3108198400,3108199423,FR
+3108199424,3108200447,RU
+3108200448,3108201471,ES
+3108201472,3108202495,IR
+3108202496,3108203519,ES
+3108203520,3108204543,AT
+3108204544,3108205567,ES
+3108205568,3108206591,NO
+3108206592,3108208639,TR
+3108208640,3108209663,DK
+3108209664,3108210687,CZ
+3108210688,3108211711,BR
+3108211712,3108212735,GB
+3108212736,3108213759,FR
+3108213760,3108214783,GB
+3108214784,3108215807,FR
+3108215808,3108216831,DE
+3108216832,3108217855,RU
+3108217856,3108218879,GB
+3108218880,3108219903,RU
+3108219904,3108220927,AT
+3108220928,3108221951,AL
+3108221952,3108222975,IS
+3108222976,3108223999,GB
+3108224000,3108225023,CZ
+3108225024,3108227071,CH
+3108227072,3108228095,NL
+3108228096,3108229119,TR
+3108229120,3108230143,ES
+3108230144,3108231167,IR
+3108231168,3108232191,PL
+3108232192,3108233215,DE
+3108233216,3108234239,NL
+3108234240,3108235263,AT
+3108235264,3108236287,GB
+3108236288,3108237311,IT
+3108237312,3108238335,LT
+3108238336,3108239359,RU
+3108239360,3108240383,GB
+3108240384,3108241407,CZ
+3108241408,3108242431,GB
+3108242432,3108243455,AT
+3108243456,3108244479,GE
+3108244480,3108245503,PL
+3108245504,3108246527,UA
+3108246528,3108247551,RU
+3108247552,3108248575,PL
+3108248576,3108249599,CZ
+3108249600,3108250623,CH
+3108250624,3108251647,LT
+3108251648,3108252671,DE
+3108252672,3108253695,LU
+3108253696,3108254719,ME
+3108254720,3108255743,CH
+3108255744,3108256767,FI
+3108256768,3108257791,RS
+3108257792,3108258815,CH
+3108258816,3108259839,CZ
+3108259840,3108260863,HU
+3108260864,3108261887,DE
+3108261888,3108262911,AE
+3108262912,3108263935,GB
+3108263936,3108264959,NL
+3108264960,3108265983,RU
+3108265984,3108267007,NL
+3108267008,3108268031,RU
+3108268032,3108269055,GB
+3108269056,3108270079,ES
+3108270080,3108271103,GB
+3108271104,3108272127,RU
+3108272128,3108273151,RO
+3108273152,3108274175,DE
+3108274176,3108275199,CY
+3108275200,3108276223,HR
+3108276224,3108277247,DE
+3108277248,3108278271,GB
+3108278272,3108279295,RU
+3108279296,3108280319,FR
+3108280320,3108281343,RU
+3108281344,3108282367,CZ
+3108282368,3108283391,NL
+3108283392,3108284415,CZ
+3108284416,3108285439,NO
+3108285440,3108286463,NL
+3108286464,3108287487,IT
+3108287488,3108288511,NL
+3108288512,3108289535,RU
+3108289536,3108290559,RO
+3108290560,3108291583,IT
+3108291584,3108292607,NL
+3108292608,3108293631,GB
+3108293632,3108294655,CH
+3108294656,3108295679,EE
+3108295680,3108297727,CZ
+3108297728,3108298751,TR
+3108298752,3108300799,FR
+3108300800,3108301823,GB
+3108301824,3108302847,CH
+3108302848,3108303871,NL
+3108303872,3108304895,RU
+3108304896,3108305919,GB
+3108305920,3108306943,IE
+3108306944,3108307967,PL
+3108307968,3108308991,IQ
+3108308992,3108310015,FR
+3108310016,3108312063,GB
+3108312064,3108313087,PL
+3108313088,3108314111,LV
+3108314112,3108315135,BA
+3108315136,3108316159,NL
+3108316160,3108317183,FI
+3108317184,3108318207,CH
+3108318208,3108319231,SE
+3108319232,3108320255,SK
+3108320256,3108321279,FR
+3108321280,3108322303,RO
+3108322304,3108323327,NL
+3108323328,3108324351,GB
+3108324352,3108325375,CZ
+3108325376,3108326399,FI
+3108326400,3108327423,FR
+3108327424,3108328447,RU
+3108328448,3108329471,GB
+3108329472,3108330495,NL
+3108330496,3108331519,CH
+3108331520,3108332543,HU
+3108332544,3108333567,NL
+3108333568,3108334591,SK
+3108334592,3108335615,IR
+3108335616,3108336639,NL
+3108336640,3108337663,GB
+3108337664,3108338687,IR
+3108338688,3108339711,RU
+3108339712,3108340735,NL
+3108340736,3108341759,RU
+3108341760,3108342783,CH
+3108342784,3108343807,FI
+3108343808,3108344831,GB
+3108344832,3108345855,SI
+3108345856,3108346879,UA
+3108346880,3108347903,NL
+3108347904,3108348927,AT
+3108348928,3108349951,BE
+3108349952,3108350975,SE
+3108350976,3108351999,GE
+3108352000,3108354047,DE
+3108354048,3108355071,TM
+3108355072,3108356095,IT
+3108356096,3108358143,PL
+3108358144,3108359167,RO
+3108359168,3108360191,NL
+3108360192,3108361215,RU
+3108361216,3108362239,IE
+3108362240,3108363263,LU
+3108363264,3108364287,RU
+3108364288,3108365311,LU
+3108365312,3108366335,FR
+3108366336,3108367359,NL
+3108367360,3108368383,AT
+3108368384,3108369407,RO
+3108369408,3108370431,BE
+3108370432,3108371455,FR
+3108371456,3108372479,ES
+3108372480,3108373503,SK
+3108373504,3108374527,NL
+3108374528,3108375551,GB
+3108375552,3108376575,BY
+3108376576,3108377599,UA
+3108377600,3108378623,DE
+3108378624,3108379647,CZ
+3108379648,3108380671,IE
+3108380672,3108381695,GB
+3108381696,3108382719,PL
+3108382720,3108383743,CH
+3108383744,3108384767,BE
+3108384768,3108385791,CH
+3108385792,3108386815,GE
+3108386816,3108387839,GB
+3108387840,3108388863,IQ
+3108388864,3108389887,NL
+3108389888,3108390911,CH
+3108390912,3108391935,BE
+3108391936,3108392959,GR
+3108392960,3108393983,LI
+3108393984,3108395007,TR
+3108395008,3108396031,GB
+3108396032,3108397055,ES
+3108397056,3108398079,TR
+3108398080,3108399103,PT
+3108399104,3108400127,RU
+3108400128,3108401151,UA
+3108401152,3108402175,NL
+3108402176,3108403199,KZ
+3108403200,3108404223,DE
+3108404224,3108405247,SE
+3108405248,3108406271,UA
+3108406272,3108407295,GB
+3108407296,3108408319,ES
+3108408320,3108409343,TR
+3108409344,3108410367,DE
+3108410368,3108411391,IT
+3108411392,3108412415,ES
+3108412416,3108414463,GB
+3108414464,3108415487,RU
+3108415488,3108416511,GB
+3108416512,3108417535,ES
+3108417536,3108418559,FR
+3108418560,3108419583,PL
+3108419584,3108420607,NL
+3108420608,3108421631,MD
+3108421632,3108422655,GB
+3108422656,3108423679,IR
+3108423680,3108424703,IT
+3108424704,3108425727,DE
+3108425728,3108427775,NL
+3108427776,3108428799,CZ
+3108428800,3108429823,DE
+3108429824,3108430847,LB
+3108430848,3108433919,NL
+3108433920,3108434943,GB
+3108434944,3108435967,CH
+3108435968,3108436991,IL
+3108436992,3108438015,GB
+3108438016,3108439039,UA
+3108439040,3108440063,DE
+3108440064,3108441087,IT
+3108441088,3108443135,CH
+3108443136,3108444159,PL
+3108444160,3108445183,GB
+3108445184,3108446207,ES
+3108446208,3108447231,DE
+3108447232,3108448255,GB
+3108448256,3108449279,CZ
+3108449280,3108450303,IT
+3108450304,3108451327,GB
+3108451328,3108452351,RU
+3108452352,3108453375,LU
+3108453376,3108454399,NL
+3108454400,3108456447,RU
+3108456448,3108457471,GB
+3108457472,3108459519,RU
+3108459520,3108460543,DE
+3108460544,3108461567,RO
+3108461568,3108462591,GB
+3108462592,3108463615,RU
+3108463616,3108464639,GB
+3108464640,3108465663,HU
+3108465664,3108466687,GB
+3108466688,3108467711,CH
+3108467712,3108468735,TR
+3108468736,3108470783,DE
+3108470784,3108471807,LV
+3108471808,3108472831,YE
+3108472832,3108473855,GB
+3108473856,3108474879,PS
+3108474880,3108475903,RU
+3108475904,3108476927,FR
+3108476928,3108477951,IR
+3108477952,3108478975,FR
+3108478976,3108479999,IE
+3108480000,3108481023,AT
+3108481024,3108482047,DE
+3108482048,3108483071,SI
+3108483072,3108484095,SE
+3108484096,3108485119,AL
+3108485120,3108486143,GB
+3108486144,3108487167,FR
+3108487168,3108488191,IR
+3108488192,3108489215,RU
+3108489216,3108490239,ES
+3108490240,3108491263,AE
+3108491264,3108492287,NO
+3108492288,3108493311,RU
+3108493312,3108494335,CY
+3108494336,3108496383,NL
+3108496384,3108497407,DE
+3108497408,3108498431,CZ
+3108498432,3108499455,HR
+3108499456,3108500479,PL
+3108500480,3108501503,IT
+3108501504,3108502527,DE
+3108502528,3108503551,AT
+3108503552,3108504575,CH
+3108504576,3108505599,FR
+3108505600,3108506623,RU
+3108506624,3108507647,ES
+3108507648,3108508671,HU
+3108508672,3108509695,CH
+3108509696,3108510719,IR
+3108510720,3108511743,SI
+3108511744,3108512767,RU
+3108512768,3108513791,DK
+3108513792,3108514815,IT
+3108514816,3108515839,ES
+3108515840,3108516863,UA
+3108516864,3108517887,ES
+3108517888,3108518911,BG
+3108518912,3108519935,SI
+3108519936,3108520959,CH
+3108520960,3108521983,CZ
+3108521984,3108523007,AT
+3108523008,3108524031,IT
+3108524032,3108525055,FR
+3108525056,3108526079,LV
+3108526080,3108527103,FR
+3108527104,3108528127,GB
+3108528128,3108529151,NO
+3108529152,3108530175,JO
+3108530176,3108531199,SI
+3108531200,3108532223,GB
+3108532224,3108533247,ES
+3108533248,3108534271,FI
+3108534272,3108536319,NL
+3108536320,3108537343,GB
+3108537344,3108538367,NL
+3108538368,3108539391,AT
+3108539392,3108540415,DK
+3108540416,3108541439,RU
+3108541440,3108542463,GR
+3108542464,3108543487,PT
+3108543488,3108544511,US
+3108544512,3108546559,NL
+3108546560,3108547583,BE
+3108547584,3108548607,GB
+3108548608,3108549631,RO
+3108549632,3108550655,NL
+3108550656,3108551679,PL
+3108551680,3108552703,RU
+3108552704,3108553727,CH
+3108553728,3108554751,PL
+3108554752,3108555775,DE
+3108555776,3108556799,LV
+3108556800,3108557823,DK
+3108557824,3108558847,ES
+3108558848,3108559871,LB
+3108559872,3108560895,NO
+3108560896,3108562943,RU
+3108562944,3108563967,DE
+3108563968,3108564991,CH
+3108564992,3108566015,RO
+3108566016,3108567039,DE
+3108567040,3108568063,FR
+3108568064,3108569087,TR
+3108569088,3108570111,IR
+3108570112,3108571135,SI
+3108571136,3108572159,GB
+3108572160,3108573183,NO
+3108573184,3108574207,RU
+3108574208,3108575231,DE
+3108575232,3108576255,NO
+3108576256,3108578303,NL
+3108578304,3108579327,GB
+3108579328,3108580351,GR
+3108580352,3108581375,GB
+3108581376,3108582399,DE
+3108582400,3108583423,FR
+3108583424,3108584447,BG
+3108584448,3108585471,PL
+3108585472,3108586495,GB
+3108586496,3108587519,EE
+3108587520,3108588543,DK
+3108588544,3108589567,IR
+3108589568,3108590591,DE
+3108590592,3108591615,GB
+3108591616,3108592639,PL
+3108592640,3108593663,NL
+3108593664,3108594687,ES
+3108594688,3108597759,CZ
+3108597760,3108598783,IR
+3108598784,3108600831,CH
+3108600832,3108601855,NL
+3108601856,3108602879,TR
+3108602880,3108603903,EE
+3108603904,3108604927,IT
+3108604928,3108605951,GB
+3108605952,3108606975,NL
+3108606976,3108609023,GB
+3108609024,3108610047,LI
+3108610048,3108611071,CZ
+3108611072,3108612095,IT
+3108612096,3108615167,ES
+3108615168,3108616191,RU
+3108616192,3108618239,GB
+3108618240,3108619263,RU
+3108619264,3108620287,DK
+3108620288,3108621311,TR
+3108621312,3108622335,FR
+3108622336,3108623359,PL
+3108623360,3108625407,RU
+3108625408,3108626431,NL
+3108626432,3108627455,CZ
+3108627456,3108628479,PL
+3108628480,3108629503,FR
+3108629504,3108630527,BG
+3108630528,3108631551,CH
+3108631552,3108633599,IT
+3108633600,3108634623,FR
+3108634624,3108635647,AT
+3108635648,3108636671,UZ
+3108636672,3108637695,FR
+3108637696,3108638719,DE
+3108638720,3108639743,ES
+3108639744,3108640767,HU
+3108640768,3108641791,GB
+3108641792,3108642815,CH
+3108642816,3108643839,FR
+3108643840,3108644863,IT
+3108644864,3108645887,FR
+3108645888,3108646911,NL
+3108646912,3108647935,DK
+3108647936,3108648959,FR
+3108648960,3108649983,IM
+3108649984,3108651007,CZ
+3108651008,3108652031,DE
+3108652032,3108653055,CH
+3108653056,3108654079,GI
+3108654080,3108655103,NL
+3108655104,3108656127,ES
+3108656128,3108657151,PL
+3108657152,3108658175,RS
+3108658176,3108659199,GE
+3108659200,3108660223,FR
+3108660224,3108661247,UZ
+3108661248,3108662271,RU
+3108662272,3108676607,CH
+3108676608,3108677631,IR
+3108677632,3108678655,GB
+3108678656,3108679679,RU
+3108679680,3108680703,GB
+3108680704,3108681727,DE
+3108681728,3108682751,RU
+3108682752,3108683775,IT
+3108683776,3108684799,ES
+3108684800,3108685823,SK
+3108685824,3108686847,FR
+3108686848,3108687871,CZ
+3108687872,3108688895,FO
+3108688896,3108689919,CH
+3108689920,3108690943,DE
+3108690944,3108691967,RU
+3108691968,3108692991,DE
+3108692992,3108694015,RU
+3108694016,3108696063,GB
+3108696064,3108697087,ES
+3108697088,3108698111,DE
+3108698112,3108699135,IT
+3108699136,3108700159,RU
+3108700160,3108701183,PL
+3108701184,3108702207,RU
+3108702208,3108703231,AT
+3108703232,3108704255,ES
+3108704256,3108705279,SA
+3108705280,3108706303,GB
+3108706304,3108707327,DE
+3108707328,3108708351,GB
+3108708352,3108709375,CH
+3108709376,3108710399,PL
+3108710400,3108711423,SE
+3108711424,3108712447,RU
+3108712448,3108713471,BG
+3108713472,3108714495,RO
+3108714496,3108715519,RS
+3108715520,3108716543,GB
+3108716544,3108717567,RU
+3108717568,3108718591,FR
+3108718592,3108719615,RU
+3108719616,3108720639,IT
+3108720640,3108721663,MD
+3108721664,3108723711,RU
+3108723712,3108724735,GB
+3108724736,3108725759,IQ
+3108725760,3108726783,DE
+3108726784,3108727807,GB
+3108727808,3108728831,IT
+3108728832,3108729855,NL
+3108729856,3108730879,CZ
+3108730880,3108731903,GB
+3108731904,3108732927,FR
+3108732928,3108733951,FI
+3108733952,3108734975,RU
+3108734976,3108735999,CZ
+3108736000,3108737023,FR
+3108737024,3108738047,IE
+3108738048,3108739071,DE
+3108739072,3108740095,CH
+3108740096,3108741119,NL
+3108741120,3108742143,PL
+3108743168,3108744191,NL
3120562176,3120594943,CO
3120594944,3120599039,AR
3120599040,3120601087,EC
@@ -54164,7 +60665,9 @@
3123707904,3124232191,UY
3124232192,3124760751,AR
3124760752,3124760759,MX
-3124760760,3124783103,AR
+3124760760,3124765183,AR
+3124765184,3124765439,MX
+3124765440,3124783103,AR
3124783104,3124785151,GT
3124785152,3124788223,CL
3124788224,3124789247,PE
@@ -54178,7 +60681,9 @@
3124846592,3124848639,AR
3124848640,3124849663,PA
3124849664,3124850687,AR
-3124850688,3124853887,HN
+3124850688,3124852175,HN
+3124852176,3124852191,PH
+3124852192,3124853887,HN
3124853888,3124853903,FR
3124853904,3124854783,HN
3124854784,3124887551,CL
@@ -54186,9 +60691,7 @@
3124953088,3125018623,CL
3125018624,3125280767,EC
3125280768,3125542911,PA
-3125542912,3125658111,NI
-3125658112,3125658367,MX
-3125658368,3125673983,NI
+3125542912,3125673983,NI
3125673984,3125805055,CL
3125805056,3126329343,CO
3126329344,3126853631,VE
@@ -54282,7 +60785,8 @@
3154124800,3154126847,PL
3154126848,3154128895,RU
3154128896,3154132991,EE
-3154132992,3154157567,UA
+3154132992,3154149375,UA
+3154149376,3154157567,KZ
3154157568,3154173951,RU
3154173952,3154182143,MD
3154182144,3154247679,DE
@@ -54294,31 +60798,7 @@
3154575360,3154640895,FR
3154640896,3155165183,IT
3155165184,3155427327,RU
-3155427328,3155536647,AT
-3155536648,3155536655,DE
-3155536656,3155540735,AT
-3155540736,3155540991,HU
-3155540992,3155542323,AT
-3155542324,3155542327,CH
-3155542328,3155598079,AT
-3155598080,3155598335,DE
-3155598336,3155628031,AT
-3155628032,3155628287,HU
-3155628288,3155663743,AT
-3155663744,3155663871,CH
-3155663872,3155675647,AT
-3155675648,3155675775,DE
-3155675776,3155676415,AT
-3155676416,3155676671,HU
-3155676672,3155681791,AT
-3155681792,3155682047,HU
-3155682048,3155684095,AT
-3155684096,3155684223,HU
-3155684224,3155685119,AT
-3155685120,3155685247,HU
-3155685248,3155685375,AT
-3155685376,3155685631,CZ
-3155685632,3155689471,AT
+3155427328,3155689471,AT
3155689472,3155951615,RO
3155951616,3156213759,GB
3156213760,3156279295,RU
@@ -54333,7 +60813,9 @@
3156759432,3156759432,GB
3156759433,3156803583,DE
3156803584,3156869119,TR
-3156869120,3156930559,LU
+3156869120,3156926463,LU
+3156926464,3156928511,NL
+3156928512,3156930559,LU
3156930560,3156933631,US
3156933632,3156934655,SG
3156934656,3157000191,RU
@@ -54347,9 +60829,9 @@
3157196800,3157262335,PL
3157262336,3157786623,SA
3157786624,3158048767,TR
-3158048768,3158214911,CH
-3158214912,3158215167,DE
-3158215168,3158310911,CH
+3158048768,3158092031,CH
+3158092032,3158092287,DE
+3158092288,3158310911,CH
3158310912,3158312959,FI
3158312960,3158315007,AZ
3158315008,3158317055,DE
@@ -54421,13 +60903,23 @@
3158458368,3158474751,GB
3158474752,3158507519,OM
3158507520,3158573055,FI
-3158573056,3158630399,RU
+3158573056,3158581247,RU
+3158581248,3158589439,DE
+3158589440,3158615039,RU
+3158615040,3158616063,GB
+3158616064,3158630399,RU
3158630400,3158638591,PL
3158638592,3158704127,LT
3158704128,3158835199,KW
3158835200,3158851583,IQ
3158851584,3158859775,RU
-3158859776,3158861567,NL
+3158859776,3158860031,NL
+3158860032,3158860287,GB
+3158860288,3158860543,NL
+3158860544,3158860799,GB
+3158860800,3158861055,NL
+3158861056,3158861311,UA
+3158861312,3158861567,IE
3158861568,3158861823,AE
3158861824,3158862079,IN
3158862080,3158862335,GB
@@ -54446,7 +60938,8 @@
3158865408,3158865663,AL
3158865664,3158865919,CY
3158865920,3158866943,IT
-3158866944,3158867455,NL
+3158866944,3158867199,DE
+3158867200,3158867455,HU
3158867456,3158867711,DE
3158867712,3158867967,NL
3158867968,3158884351,AZ
@@ -54614,38 +61107,27 @@
3161620480,3161636863,DK
3161636864,3161653247,RU
3161653248,3161669631,LU
-3161669632,3161669887,FR
-3161669888,3161670143,RE
-3161670144,3161670399,FR
-3161670400,3161670655,RE
-3161670656,3161671167,FR
+3161669632,3161669887,RE
+3161669888,3161671167,FR
3161671168,3161671423,RE
-3161671424,3161672063,FR
-3161672064,3161672191,RE
-3161672192,3161672703,FR
-3161672704,3161672959,RE
-3161672960,3161673471,FR
-3161673472,3161673983,RE
-3161673984,3161675775,FR
-3161675776,3161676031,RE
-3161676032,3161677823,FR
+3161671424,3161672959,FR
+3161672960,3161673215,RE
+3161673216,3161673471,FR
+3161673472,3161673727,RE
+3161673728,3161677823,FR
3161677824,3161678079,MQ
-3161678080,3161678335,FR
-3161678336,3161679359,MQ
-3161679360,3161679615,FR
-3161679616,3161679871,MQ
+3161678080,3161678847,FR
+3161678848,3161679103,MQ
+3161679104,3161679871,FR
3161679872,3161680639,GP
3161680640,3161681151,FR
-3161681152,3161681919,GP
-3161681920,3161682175,GF
-3161682176,3161682431,FR
+3161681152,3161681663,GP
+3161681664,3161682431,FR
3161682432,3161682943,GF
-3161682944,3161683967,MQ
-3161683968,3161684223,FR
-3161684224,3161684479,MQ
-3161684480,3161685503,FR
-3161685504,3161685759,MQ
-3161685760,3161686015,FR
+3161682944,3161683711,MQ
+3161683712,3161684735,FR
+3161684736,3161684991,MQ
+3161684992,3161686015,FR
3161686016,3161702399,UA
3161702400,3161718783,AM
3161718784,3161735167,PL
@@ -54680,18 +61162,14 @@
3162071040,3162087423,IR
3162087424,3162095615,SK
3162095616,3162103807,GE
-3162103808,3162105087,FR
-3162105088,3162105855,NL
-3162105856,3162106111,FR
-3162106112,3162106367,NL
-3162106368,3162106623,FR
-3162106624,3162107391,NL
+3162103808,3162104831,FR
+3162104832,3162105343,NL
+3162105344,3162105599,FR
+3162105600,3162107391,NL
3162107392,3162107647,FR
3162107648,3162108415,NL
3162108416,3162108671,FR
-3162108672,3162108927,NL
-3162108928,3162109183,FR
-3162109184,3162111103,NL
+3162108672,3162111103,NL
3162111104,3162111167,FR
3162111168,3162111999,NL
3162112000,3162120191,PL
@@ -54826,85 +61304,460 @@
3164936192,3164937749,LT
3164937750,3164937750,FR
3164937751,3164938239,LT
-3164938240,3164947579,FR
+3164938240,3164946431,FR
+3164946432,3164946435,BE
+3164946436,3164946463,FR
+3164946464,3164946471,IT
+3164946472,3164946655,FR
+3164946656,3164946671,BE
+3164946672,3164946727,FR
+3164946728,3164946731,NL
+3164946732,3164946751,FR
+3164946752,3164946783,ES
+3164946784,3164947567,FR
+3164947568,3164947575,ES
+3164947576,3164947579,DE
3164947580,3164947583,IT
-3164947584,3164949135,FR
+3164947584,3164947631,FR
+3164947632,3164947635,IT
+3164947636,3164947727,FR
+3164947728,3164947743,GB
+3164947744,3164948671,FR
+3164948672,3164948703,IT
+3164948704,3164948851,FR
+3164948852,3164948855,IT
+3164948856,3164948959,FR
+3164948960,3164948991,ES
+3164948992,3164949103,FR
+3164949104,3164949107,LT
+3164949108,3164949135,FR
3164949136,3164949151,NL
-3164949152,3164950695,FR
+3164949152,3164949171,FR
+3164949172,3164949175,LT
+3164949176,3164949183,FR
+3164949184,3164949191,IT
+3164949192,3164949195,FR
+3164949196,3164949199,IE
+3164949200,3164949311,FR
+3164949312,3164949327,NL
+3164949328,3164949331,DE
+3164949332,3164949407,FR
+3164949408,3164949439,GB
+3164949440,3164949479,FR
+3164949480,3164949487,PL
+3164949488,3164950063,FR
+3164950064,3164950079,IT
+3164950080,3164950407,FR
+3164950408,3164950411,DE
+3164950412,3164950451,FR
+3164950452,3164950455,FI
+3164950456,3164950511,FR
+3164950512,3164950515,NL
+3164950516,3164950519,FR
+3164950520,3164950523,ES
+3164950524,3164950559,FR
+3164950560,3164950591,GB
+3164950592,3164950687,FR
+3164950688,3164950695,PL
3164950696,3164950703,NL
-3164950704,3164951663,FR
+3164950704,3164950707,IT
+3164950708,3164950751,FR
+3164950752,3164950759,NL
+3164950760,3164950767,GB
+3164950768,3164951167,FR
+3164951168,3164951199,PT
+3164951200,3164951247,FR
+3164951248,3164951263,ES
+3164951264,3164951295,PL
+3164951296,3164951455,ES
+3164951456,3164951523,FR
+3164951524,3164951527,PL
+3164951528,3164951547,FR
+3164951548,3164951559,IT
+3164951560,3164951567,NL
+3164951568,3164951583,FR
+3164951584,3164951591,DE
+3164951592,3164951663,FR
3164951664,3164951671,PL
-3164951672,3164952224,FR
+3164951672,3164951675,FR
+3164951676,3164951679,ES
+3164951680,3164951683,FR
+3164951684,3164951687,GB
+3164951688,3164951743,FR
+3164951744,3164951775,PL
+3164951776,3164951807,DE
+3164951808,3164952224,FR
3164952225,3164952231,GB
3164952232,3164952233,FR
3164952234,3164952235,GB
3164952236,3164952236,FR
3164952237,3164952237,GB
-3164952238,3164953255,FR
+3164952238,3164952271,FR
+3164952272,3164952287,DE
+3164952288,3164952303,FR
+3164952304,3164952319,LT
+3164952320,3164952399,FR
+3164952400,3164952415,NL
+3164952416,3164952431,FR
+3164952432,3164952447,ES
+3164952448,3164952479,FR
+3164952480,3164952511,ES
+3164952512,3164952527,IE
+3164952528,3164952831,FR
+3164952832,3164952895,GB
+3164952896,3164953247,FR
+3164953248,3164953255,BE
3164953256,3164953263,CZ
-3164953264,3164953391,FR
+3164953264,3164953383,FR
+3164953384,3164953387,PL
+3164953388,3164953391,FR
3164953392,3164953399,NL
-3164953400,3164953583,FR
+3164953400,3164953443,FR
+3164953444,3164953447,BE
+3164953448,3164953451,PL
+3164953452,3164953463,FR
+3164953464,3164953467,NL
+3164953468,3164953503,FR
+3164953504,3164953511,IT
+3164953512,3164953571,FR
+3164953572,3164953575,ES
+3164953576,3164953583,FR
3164953584,3164953599,ES
-3164953600,3164954511,FR
+3164953600,3164953663,FR
+3164953664,3164953727,CH
+3164953728,3164953855,DE
+3164953856,3164954207,FR
+3164954208,3164954223,LT
+3164954224,3164954255,FR
+3164954256,3164954271,NL
+3164954272,3164954495,FR
+3164954496,3164954499,IT
+3164954500,3164954511,FR
3164954512,3164954515,IT
-3164954516,3164960439,FR
+3164954516,3164954527,FR
+3164954528,3164954543,IE
+3164954544,3164954583,FR
+3164954584,3164954591,IT
+3164954592,3164958815,FR
+3164958816,3164958847,ES
+3164958848,3164958911,BE
+3164958912,3164959039,FR
+3164959040,3164959103,IT
+3164959104,3164959135,PT
+3164959136,3164959239,FR
+3164959240,3164959247,ES
+3164959248,3164959263,FR
+3164959264,3164959279,IT
+3164959280,3164959375,FR
+3164959376,3164959383,DE
+3164959384,3164959387,ES
+3164959388,3164959391,FR
+3164959392,3164959407,ES
+3164959408,3164959663,FR
+3164959664,3164959679,IT
+3164959680,3164959743,PT
+3164959744,3164959935,FR
+3164959936,3164959999,BE
+3164960000,3164960263,FR
+3164960264,3164960267,ES
+3164960268,3164960303,FR
+3164960304,3164960319,CH
+3164960320,3164960335,FR
+3164960336,3164960339,LT
+3164960340,3164960363,FR
+3164960364,3164960367,ES
+3164960368,3164960439,FR
3164960440,3164960443,DE
-3164960444,3164960715,FR
+3164960444,3164960471,FR
+3164960472,3164960479,CH
+3164960480,3164960495,ES
+3164960496,3164960599,FR
+3164960600,3164960607,FI
+3164960608,3164960631,FR
+3164960632,3164960639,ES
+3164960640,3164960715,FR
3164960716,3164960719,NL
-3164960720,3164960843,FR
+3164960720,3164960799,FR
+3164960800,3164960831,PT
+3164960832,3164960843,FR
3164960844,3164960847,NL
-3164960848,3164961391,FR
+3164960848,3164960943,FR
+3164960944,3164960959,GB
+3164960960,3164960999,FR
+3164961000,3164961003,PL
+3164961004,3164961015,FR
+3164961016,3164961023,NL
+3164961024,3164961151,FR
+3164961152,3164961167,PL
+3164961168,3164961175,IE
+3164961176,3164961335,FR
+3164961336,3164961343,DE
+3164961344,3164961359,FR
+3164961360,3164961363,FI
+3164961364,3164961391,FR
3164961392,3164961395,ES
-3164961396,3164961511,FR
+3164961396,3164961407,FR
+3164961408,3164961471,PT
+3164961472,3164961503,FR
+3164961504,3164961511,IT
3164961512,3164961519,GB
3164961520,3164961551,FR
-3164961552,3164961555,ES
-3164961556,3164962471,FR
+3164961552,3164961559,ES
+3164961560,3164961563,FR
+3164961564,3164961567,CH
+3164961568,3164961759,FR
+3164961760,3164961763,NL
+3164961764,3164961767,IT
+3164961768,3164961775,FR
+3164961776,3164961783,GB
+3164961784,3164961815,FR
+3164961816,3164961823,IT
+3164961824,3164961859,FR
+3164961860,3164961863,ES
+3164961864,3164961871,FR
+3164961872,3164961887,PL
+3164961888,3164961979,FR
+3164961980,3164961983,IE
+3164961984,3164962015,FR
+3164962016,3164962031,NL
+3164962032,3164962111,FR
+3164962112,3164962143,CH
+3164962144,3164962151,FR
+3164962152,3164962159,BE
+3164962160,3164962247,FR
+3164962248,3164962255,DE
+3164962256,3164962279,FR
+3164962280,3164962283,PL
+3164962284,3164962443,FR
+3164962444,3164962447,CZ
+3164962448,3164962463,FR
+3164962464,3164962471,IT
3164962472,3164962475,ES
-3164962476,3164962815,FR
+3164962476,3164962631,FR
+3164962632,3164962639,DE
+3164962640,3164962719,FR
+3164962720,3164962723,GB
+3164962724,3164962815,FR
3164962816,3164964863,ES
3164964864,3164966911,FI
-3164966912,3164968319,FR
+3164966912,3164968255,FR
+3164968256,3164968271,DE
+3164968272,3164968287,GB
+3164968288,3164968319,IT
3164968320,3164968447,GB
3164968448,3164968455,FR
3164968456,3164968459,NL
-3164968460,3164968835,FR
+3164968460,3164968463,FR
+3164968464,3164968471,IT
+3164968472,3164968687,FR
+3164968688,3164968703,IT
+3164968704,3164968831,FR
+3164968832,3164968835,PL
3164968836,3164968839,ES
-3164968840,3164969019,FR
+3164968840,3164968903,FR
+3164968904,3164968911,IT
+3164968912,3164969019,FR
3164969020,3164969023,BE
-3164969024,3164969039,FR
+3164969024,3164969027,IT
+3164969028,3164969039,FR
3164969040,3164969047,NL
-3164969048,3164970413,FR
+3164969048,3164969191,FR
+3164969192,3164969199,ES
+3164969200,3164969203,DE
+3164969204,3164969503,FR
+3164969504,3164969535,IT
+3164969536,3164969647,FR
+3164969648,3164969655,GB
+3164969656,3164969663,FR
+3164969664,3164969695,BE
+3164969696,3164969895,FR
+3164969896,3164969899,ES
+3164969900,3164969919,FR
+3164969920,3164969951,DE
+3164969952,3164970207,FR
+3164970208,3164970215,PL
+3164970216,3164970219,GB
+3164970220,3164970287,FR
+3164970288,3164970291,ES
+3164970292,3164970295,FR
+3164970296,3164970299,ES
+3164970300,3164970303,FR
+3164970304,3164970335,NL
+3164970336,3164970347,FR
+3164970348,3164970351,ES
+3164970352,3164970359,PL
+3164970360,3164970371,FR
+3164970372,3164970375,CH
+3164970376,3164970383,FR
+3164970384,3164970387,PL
+3164970388,3164970413,FR
3164970414,3164970415,IT
-3164970416,3164970923,FR
+3164970416,3164970495,FR
+3164970496,3164970527,BE
+3164970528,3164970543,FR
+3164970544,3164970551,IE
+3164970552,3164970599,FR
+3164970600,3164970603,BE
+3164970604,3164970607,FR
+3164970608,3164970615,DE
+3164970616,3164970639,FR
+3164970640,3164970647,DE
+3164970648,3164970687,FR
+3164970688,3164970691,DE
+3164970692,3164970879,FR
+3164970880,3164970883,ES
+3164970884,3164970911,FR
+3164970912,3164970915,ES
+3164970916,3164970923,FR
3164970924,3164970927,LT
-3164970928,3164971791,FR
+3164970928,3164971455,FR
+3164971456,3164971459,CZ
+3164971460,3164971567,FR
+3164971568,3164971571,DE
+3164971572,3164971679,FR
+3164971680,3164971711,NL
+3164971712,3164971791,FR
3164971792,3164971799,IT
-3164971800,3164973419,FR
+3164971800,3164971967,FR
+3164971968,3164971983,PT
+3164971984,3164972027,FR
+3164972028,3164972031,DE
+3164972032,3164972499,FR
+3164972500,3164972503,IT
+3164972504,3164972511,FR
+3164972512,3164972527,IT
+3164972528,3164972687,FR
+3164972688,3164972695,PT
+3164972696,3164972703,FR
+3164972704,3164972719,IT
+3164972720,3164973419,FR
3164973420,3164973423,ES
-3164973424,3164973663,FR
-3164973664,3164973695,GB
-3164973696,3164974335,FR
+3164973424,3164973627,FR
+3164973628,3164973631,IT
+3164973632,3164973695,GB
+3164973696,3164973759,FR
+3164973760,3164973791,IE
+3164973792,3164973843,FR
+3164973844,3164973847,IE
+3164973848,3164973855,PL
+3164973856,3164973863,FR
+3164973864,3164973867,BE
+3164973868,3164973871,GB
+3164973872,3164973879,FR
+3164973880,3164973883,PL
+3164973884,3164974111,FR
+3164974112,3164974119,ES
+3164974120,3164974127,FR
+3164974128,3164974135,NL
+3164974136,3164974239,FR
+3164974240,3164974271,PT
+3164974272,3164974303,FR
+3164974304,3164974335,NL
3164974336,3164974463,GB
3164974464,3164974527,FR
3164974528,3164974559,ES
-3164974560,3164976143,FR
+3164974560,3164974647,FR
+3164974648,3164974655,DE
+3164974656,3164974667,FR
+3164974668,3164974671,BE
+3164974672,3164974727,FR
+3164974728,3164974731,CH
+3164974732,3164974887,FR
+3164974888,3164974895,GB
+3164974896,3164975039,FR
+3164975040,3164975103,GB
+3164975104,3164975135,PT
+3164975136,3164975167,FR
+3164975168,3164975199,NL
+3164975200,3164975739,FR
+3164975740,3164975743,BE
+3164975744,3164975815,FR
+3164975816,3164975823,IT
+3164975824,3164975939,FR
+3164975940,3164975943,DE
+3164975944,3164975999,FR
+3164976000,3164976015,ES
+3164976016,3164976063,FR
+3164976064,3164976095,GB
+3164976096,3164976127,FR
+3164976128,3164976135,GB
+3164976136,3164976143,FR
3164976144,3164976159,BE
-3164976160,3164976295,FR
+3164976160,3164976175,IT
+3164976176,3164976191,FR
+3164976192,3164976207,DE
+3164976208,3164976239,FR
+3164976240,3164976255,GB
+3164976256,3164976263,FR
+3164976264,3164976271,ES
+3164976272,3164976295,FR
3164976296,3164976303,IT
-3164976304,3164995583,FR
+3164976304,3164976315,FR
+3164976316,3164976319,GB
+3164976320,3164976327,ES
+3164976328,3164976463,FR
+3164976464,3164976479,ES
+3164976480,3164976535,FR
+3164976536,3164976539,ES
+3164976540,3164976571,FR
+3164976572,3164976575,DE
+3164976576,3164976583,FR
+3164976584,3164976591,IT
+3164976592,3164976663,FR
+3164976664,3164976671,ES
+3164976672,3164976831,FR
+3164976832,3164976839,DE
+3164976840,3164977415,FR
+3164977416,3164977423,GB
+3164977424,3164977503,FR
+3164977504,3164977535,CZ
+3164977536,3164977551,PT
+3164977552,3164977599,FR
+3164977600,3164977631,GB
+3164977632,3164977647,IE
+3164977648,3164977855,FR
+3164977856,3164977871,LT
+3164977872,3164977883,FR
+3164977884,3164977887,PL
+3164977888,3164977903,FR
+3164977904,3164977907,GB
+3164977908,3164977911,FR
+3164977912,3164977919,IT
+3164977920,3164978063,FR
+3164978064,3164978067,ES
+3164978068,3164978151,FR
+3164978152,3164978155,CH
+3164978156,3164978159,FR
+3164978160,3164978175,ES
+3164978176,3164978607,FR
+3164978608,3164978623,IT
+3164978624,3164978719,FR
+3164978720,3164978751,ES
+3164978752,3164978975,FR
+3164978976,3164978979,PL
+3164978980,3164978983,FR
+3164978984,3164978991,IT
+3164978992,3164978999,FR
+3164979000,3164979003,ES
+3164979004,3164979103,FR
+3164979104,3164979111,IT
+3164979112,3164979159,FR
+3164979160,3164979167,IT
+3164979168,3164995583,FR
3164995584,3165061119,RU
3165061120,3165126655,SK
3165126656,3165192191,RU
3165192192,3165257727,GE
3165257728,3165323263,RO
3165323264,3165388799,ES
-3165388800,3165417471,RO
+3165388800,3165417471,MT
3165417472,3165421567,DE
3165421568,3165425663,IE
-3165425664,3165437951,RO
-3165437952,3165454335,AT
+3165425664,3165429759,GB
+3165429760,3165437951,RO
+3165437952,3165439487,AT
+3165439488,3165439743,GB
+3165439744,3165454335,AT
3165454336,3165519871,RO
3165519872,3165585407,DE
3165585408,3165650943,CZ
@@ -54940,11 +61793,7 @@
3166697472,3166699519,RO
3166699520,3166961663,DE
3166961664,3167223807,SI
-3167223808,3167321095,NL
-3167321096,3167321099,DE
-3167321100,3167476583,NL
-3167476584,3167476591,DE
-3167476592,3167748095,NL
+3167223808,3167748095,NL
3167748096,3167762431,RO
3167762432,3167764479,MD
3167764480,3167772671,RO
@@ -54962,16 +61811,31 @@
3167799296,3167803391,MD
3167803392,3167813631,RO
3167813632,3167815679,MD
-3167815680,3167868927,RO
+3167815680,3167842303,RO
+3167842304,3167843327,ES
+3167843328,3167846399,RO
+3167846400,3167851519,IR
+3167851520,3167852543,DE
+3167852544,3167862783,RO
+3167862784,3167866879,IR
+3167866880,3167868927,RO
3167868928,3167879167,MD
3167879168,3167895551,DE
-3167895552,3167938559,RO
+3167895552,3167899647,IR
+3167899648,3167902719,RO
+3167902720,3167902975,BE
+3167902976,3167928319,RO
+3167928320,3167932415,IR
+3167932416,3167934463,RO
+3167934464,3167935487,ES
+3167935488,3167938559,RO
3167938560,3167939583,MD
3167939584,3167940607,RO
3167940608,3167943679,MD
3167943680,3167944447,RO
3167944448,3167944703,GB
-3167944704,3167987711,RO
+3167944704,3167948799,IR
+3167948800,3167987711,RO
3167987712,3167989759,MD
3167989760,3168005887,RO
3168005888,3168006143,NL
@@ -54983,12 +61847,17 @@
3168016384,3168018431,MD
3168018432,3168020479,RO
3168020480,3168022527,MD
-3168022528,3168038911,RO
+3168022528,3168026623,IR
+3168026624,3168038911,RO
3168038912,3168039935,MD
3168039936,3168040959,BE
3168040960,3168050431,RO
3168050432,3168050687,MD
-3168050688,3168081919,RO
+3168050688,3168071679,RO
+3168071680,3168073727,IR
+3168073728,3168077823,RO
+3168077824,3168079871,ES
+3168079872,3168081919,RO
3168081920,3168083967,FR
3168083968,3168084991,RO
3168084992,3168086015,MD
@@ -54996,9 +61865,13 @@
3168088064,3168089087,RO
3168089088,3168090111,MD
3168090112,3168092159,ES
-3168092160,3168096255,RO
+3168092160,3168096255,IR
3168096256,3168100351,MD
-3168100352,3168129023,RO
+3168100352,3168111615,RO
+3168111616,3168112639,FR
+3168112640,3168124927,RO
+3168124928,3168126975,IR
+3168126976,3168129023,RO
3168129024,3168130047,MD
3168130048,3168132095,RO
3168132096,3168133119,MD
@@ -55008,7 +61881,10 @@
3168138240,3168139263,MD
3168139264,3168156671,RO
3168156672,3168157695,MD
-3168157696,3168165887,RO
+3168157696,3168161791,IR
+3168161792,3168165119,RO
+3168165120,3168165375,DE
+3168165376,3168165887,RO
3168165888,3168166911,MD
3168166912,3168169983,RO
3168169984,3168172031,ES
@@ -55022,7 +61898,7 @@
3168192512,3168194559,MD
3168194560,3168199679,RO
3168199680,3168200703,MD
-3168200704,3168202751,RO
+3168200704,3168202751,IR
3168202752,3168203775,ES
3168203776,3168267263,RO
3168267264,3168269311,MD
@@ -55153,7 +62029,10 @@
3187910656,3187914751,CL
3187914752,3187916799,BO
3187916800,3187933183,CO
-3187933184,3187935519,GT
+3187933184,3187933311,HN
+3187933312,3187933341,GT
+3187933342,3187933342,HN
+3187933343,3187935519,GT
3187935520,3187935527,HN
3187935528,3187935607,GT
3187935608,3187935615,HN
@@ -55161,15 +62040,23 @@
3187936048,3187936063,HN
3187936064,3187936711,GT
3187936712,3187936719,HN
-3187936720,3187940351,GT
-3187940352,3187940607,HN
-3187940608,3187940963,GT
+3187936720,3187939847,GT
+3187939848,3187939855,HN
+3187939856,3187940479,GT
+3187940480,3187940543,HN
+3187940544,3187940963,GT
3187940964,3187940967,HN
3187940968,3187943055,GT
3187943056,3187943063,HN
3187943064,3187943127,GT
3187943128,3187943135,HN
-3187943136,3187945971,GT
+3187943136,3187943399,GT
+3187943400,3187943403,HN
+3187943404,3187944671,GT
+3187944672,3187944679,HN
+3187944680,3187944773,GT
+3187944774,3187944774,HN
+3187944775,3187945971,GT
3187945972,3187945975,HN
3187945976,3187946111,GT
3187946112,3187946239,HN
@@ -55177,7 +62064,11 @@
3187946640,3187946647,HN
3187946648,3187947983,GT
3187947984,3187947987,HN
-3187947988,3187948799,GT
+3187947988,3187948031,GT
+3187948032,3187948159,HN
+3187948160,3187948479,GT
+3187948480,3187948543,HN
+3187948544,3187948799,GT
3187948800,3187948927,HN
3187948928,3187949567,GT
3187949568,3187950126,BQ
@@ -55212,7 +62103,7 @@
3188137184,3188146175,AR
3188146176,3188170751,CO
3188170752,3188174847,CR
-3188174848,3188178943,AR
+3188174848,3188178943,BR
3188178944,3188187135,CR
3188187136,3188203519,AR
3188203520,3188207615,DO
@@ -55221,7 +62112,8 @@
3188228096,3188236287,PE
3188236288,3188237311,PA
3188237312,3188239359,VE
-3188239360,3188240383,PE
+3188239360,3188239615,BR
+3188239616,3188240383,PE
3188240384,3188241407,CO
3188241408,3188242431,EC
3188242432,3188244479,AR
@@ -55236,7 +62128,7 @@
3188270080,3188270335,MX
3188270336,3188270847,VE
3188270848,3188271103,BR
-3188271104,3188273151,VE
+3188271104,3188273151,MX
3188273152,3188275199,PA
3188275200,3188277247,CL
3188277248,3188293631,CO
@@ -55254,11 +62146,17 @@
3188473856,3188482047,PE
3188482048,3188490239,AR
3188490240,3188498431,CO
-3188498432,3188513407,AR
+3188498432,3188512127,AR
+3188512128,3188512255,US
+3188512256,3188513407,AR
3188513408,3188513535,US
-3188513536,3188517119,AR
+3188513536,3188516095,AR
+3188516096,3188516223,US
+3188516224,3188517119,AR
3188517120,3188517247,US
-3188517248,3188518271,AR
+3188517248,3188517759,AR
+3188517760,3188517887,US
+3188517888,3188518271,AR
3188518272,3188518399,US
3188518400,3188523007,AR
3188523008,3188539391,CO
@@ -55326,27 +62224,25 @@
3191193600,3191209983,HN
3191209984,3191275519,CL
3191275520,3191341055,AR
-3191341056,3191405951,GT
-3191405952,3191406335,SV
+3191341056,3191406079,GT
+3191406080,3191406335,SV
3191406336,3191406591,GT
3191406592,3191439359,SV
3191439360,3191455743,EC
3191455744,3191472127,AR
3191472128,3191603199,TT
-3191603200,3191607807,CO
+3191603200,3191603519,CO
+3191603520,3191603583,PR
+3191603584,3191607807,CO
3191607808,3191608319,CL
3191608320,3191610623,CO
3191610624,3191610879,PE
3191610880,3191611391,CO
3191611392,3191619583,VE
-3191619584,3191624703,CL
-3191624704,3191624959,CO
-3191624960,3191626239,CL
-3191626240,3191626495,CO
-3191626496,3191633663,CL
-3191633664,3191633919,CO
-3191633920,3191635967,CL
-3191635968,3191647743,CO
+3191619584,3191635967,CL
+3191635968,3191637759,CO
+3191637760,3191638015,AR
+3191638016,3191647743,CO
3191647744,3191647807,AR
3191647808,3191648255,CO
3191648256,3191649791,US
@@ -55358,27 +62254,25 @@
3191670016,3191670271,AR
3191670272,3191670783,CO
3191670784,3191672831,CL
-3191672832,3191674879,CO
-3191674880,3191676927,CL
+3191672832,3191673855,CO
+3191673856,3191676927,CL
3191676928,3191677951,US
3191677952,3191678207,AR
3191678208,3191678719,US
3191678720,3191678975,AR
-3191678976,3191680255,US
-3191680256,3191680511,AR
-3191680512,3191680767,US
+3191678976,3191680767,US
3191680768,3191681279,AR
3191681280,3191681535,US
-3191681536,3191683327,AR
-3191683328,3191684607,US
-3191684608,3191684863,AR
-3191684864,3191685119,US
+3191681536,3191682303,AR
+3191682304,3191682559,US
+3191682560,3191683327,AR
+3191683328,3191685119,US
3191685120,3191685631,AR
3191685632,3191685887,US
3191685888,3191687167,AR
3191687168,3191688703,CO
3191688704,3191693311,US
-3191693312,3191695871,CO
+3191693312,3191695871,CL
3191695872,3191696127,US
3191696128,3191696383,CO
3191696384,3191701503,US
@@ -55392,23 +62286,28 @@
3191705600,3191705855,US
3191705856,3191706111,CO
3191706112,3191706623,US
-3191706624,3191719935,CO
-3191719936,3191721215,AR
-3191721216,3191721471,CO
-3191721472,3191722495,AR
-3191722496,3191725055,CO
+3191706624,3191707647,CO
+3191707648,3191719935,CL
+3191719936,3191722495,AR
+3191722496,3191724031,CL
+3191724032,3191725055,CO
3191725056,3191725311,AR
-3191725312,3191726079,CO
+3191725312,3191725567,CL
+3191725568,3191726079,CO
3191726080,3191726335,AR
3191726336,3191726591,CO
3191726592,3191726847,AR
3191726848,3191727103,CO
3191727104,3191727359,AR
-3191727360,3191730431,CO
+3191727360,3191729919,CO
+3191729920,3191730431,CL
3191730432,3191730687,AR
3191730688,3191730943,CO
3191730944,3191731199,AR
-3191731200,3191732479,CO
+3191731200,3191731711,CO
+3191731712,3191731967,AR
+3191731968,3191732223,CO
+3191732224,3191732479,CL
3191732480,3191732735,AR
3191732736,3191734079,CO
3191734080,3191734143,US
@@ -55428,15 +62327,21 @@
3193438208,3193450495,CW
3193450496,3193450751,SR
3193450752,3193569279,CW
-3193569280,3193579263,CO
+3193569280,3193573087,CO
+3193573088,3193573095,US
+3193573096,3193579263,CO
3193579264,3193579519,EC
3193579520,3193582591,CO
3193582592,3193583103,EC
-3193583104,3193595391,CO
+3193583104,3193592319,CO
+3193592320,3193592575,EC
+3193592576,3193595391,CO
3193595392,3193595647,EC
-3193595648,3193599999,CO
-3193600000,3193600255,EC
-3193600256,3193605375,CO
+3193595648,3193599743,CO
+3193599744,3193600255,EC
+3193600256,3193604351,CO
+3193604352,3193605119,EC
+3193605120,3193605375,CO
3193605376,3193605631,EC
3193605632,3193606143,CO
3193606144,3193606399,EC
@@ -55466,10 +62371,8 @@
3193736448,3193737471,AR
3193737472,3193739007,US
3193739008,3193739263,AR
-3193739264,3193739519,US
-3193739520,3193739775,AR
-3193739776,3193740287,US
-3193740288,3193741311,AR
+3193739264,3193740543,US
+3193740544,3193741311,AR
3193741312,3193741823,US
3193741824,3193742079,AR
3193742080,3193742335,US
@@ -55481,29 +62384,27 @@
3193743744,3193743871,US
3193743872,3193743999,AR
3193744000,3193744127,US
-3193744128,3193745279,AR
-3193745280,3193745407,US
+3193744128,3193744639,AR
+3193744640,3193744895,US
+3193744896,3193745151,AR
+3193745152,3193745407,US
3193745408,3193746431,AR
3193746432,3193746687,US
3193746688,3193746751,AR
3193746752,3193746815,US
3193746816,3193746879,AR
-3193746880,3193746943,US
-3193746944,3193747199,AR
-3193747200,3193747455,US
+3193746880,3193747455,US
3193747456,3193747583,AR
-3193747584,3193748223,US
-3193748224,3193748863,AR
-3193748864,3193748991,US
-3193748992,3193749247,AR
-3193749248,3193749759,US
+3193747584,3193748479,US
+3193748480,3193748863,AR
+3193748864,3193749759,US
3193749760,3193750015,AR
3193750016,3193750271,US
3193750272,3193750527,AR
3193750528,3193750783,US
3193750784,3193751807,AR
-3193751808,3193752319,US
-3193752320,3193752831,AR
+3193751808,3193752703,US
+3193752704,3193752831,AR
3193752832,3193752959,US
3193752960,3193753087,AR
3193753088,3193753343,US
@@ -55511,9 +62412,13 @@
3193754624,3193754751,US
3193754752,3193755135,AR
3193755136,3193755263,US
-3193755264,3193756415,AR
+3193755264,3193755647,AR
+3193755648,3193755775,US
+3193755776,3193756415,AR
3193756416,3193756543,US
-3193756544,3193757055,AR
+3193756544,3193756799,AR
+3193756800,3193756927,US
+3193756928,3193757055,AR
3193757056,3193757183,US
3193757184,3193765887,AR
3193765888,3193774079,TT
@@ -55544,8 +62449,9 @@
3194028032,3194044415,AR
3194044416,3194052607,CO
3194052608,3194056703,TT
-3194056704,3194058495,CW
-3194058496,3194058751,CA
+3194056704,3194057727,CW
+3194057728,3194057983,CA
+3194057984,3194058751,CW
3194058752,3194060799,AR
3194060800,3194068991,CO
3194068992,3194071039,PA
@@ -55557,11 +62463,13 @@
3194126336,3194127359,GT
3194127360,3194129407,PE
3194129408,3194129663,AR
-3194129664,3194129671,BR
-3194129672,3194130431,AR
+3194129664,3194129919,BR
+3194129920,3194130431,AR
3194130432,3194134527,BR
3194134528,3194135551,AR
-3194135552,3194136575,GT
+3194135552,3194136063,GT
+3194136064,3194136319,BR
+3194136320,3194136575,GT
3194136576,3194137087,BR
3194137088,3194140159,AR
3194140160,3194142719,CR
@@ -55621,7 +62529,10 @@
3194596352,3194597375,HT
3194597376,3194601471,AR
3194601472,3194602495,CW
-3194602496,3194613759,AR
+3194602496,3194610943,AR
+3194610944,3194611199,CO
+3194611200,3194613503,AR
+3194613504,3194613759,CL
3194613760,3194617855,PE
3194617856,3194626047,NI
3194626048,3194630143,AR
@@ -55699,7 +62610,9 @@
3194925056,3194929151,AR
3194929152,3194937343,EC
3194937344,3194945535,AR
-3194945536,3194953727,GT
+3194945536,3194953215,GT
+3194953216,3194953343,NI
+3194953344,3194953727,GT
3194953728,3194959871,AR
3194959872,3194961919,US
3194961920,3194970111,EC
@@ -55735,7 +62648,22 @@
3195067392,3195068415,CR
3195068416,3195076607,CW
3195076608,3195084799,CL
-3195084800,3195092991,CR
+3195084800,3195085055,CR
+3195085056,3195086335,NI
+3195086336,3195087359,CR
+3195087360,3195087615,NI
+3195087616,3195088127,CR
+3195088128,3195088639,NI
+3195088640,3195088895,CR
+3195088896,3195089919,NI
+3195089920,3195090431,CR
+3195090432,3195090687,NI
+3195090688,3195091199,CR
+3195091200,3195091455,NI
+3195091456,3195092223,CR
+3195092224,3195092479,NI
+3195092480,3195092735,CR
+3195092736,3195092991,NI
3195092992,3195097087,DO
3195097088,3195099135,CR
3195099136,3195100159,GT
@@ -55747,7 +62675,8 @@
3195138048,3195139071,DO
3195139072,3195140095,CL
3195140096,3195142143,CR
-3195142144,3195150335,VE
+3195142144,3195142399,MX
+3195142400,3195150335,VE
3195150336,3195158527,CL
3195158528,3195199487,AR
3195199488,3195201535,PY
@@ -55769,9 +62698,7 @@
3195256832,3195265023,AR
3195265024,3195273215,CO
3195273216,3195535359,PE
-3195535360,3195536639,SV
-3195536640,3195536895,FR
-3195536896,3195543551,SV
+3195535360,3195543551,SV
3195547648,3195551743,AR
3195551744,3195559935,EC
3195559936,3195568127,AR
@@ -55809,7 +62736,9 @@
3195738112,3195740159,HN
3195740160,3195740415,US
3195740416,3195740927,PA
-3195740928,3195741951,US
+3195740928,3195741055,US
+3195741056,3195741087,HN
+3195741088,3195741951,US
3195741952,3195744255,PA
3195744256,3195748351,EC
3195748352,3195752447,CL
@@ -55828,7 +62757,9 @@
3195805696,3195807743,NI
3195807744,3195808639,BZ
3195808640,3195808767,CO
-3195808768,3195809791,BZ
+3195808768,3195809151,BZ
+3195809152,3195809279,US
+3195809280,3195809791,BZ
3195809792,3195811839,PE
3195811840,3195813887,AR
3195813888,3195822079,DO
@@ -55921,7 +62852,9 @@
3200614400,3200647167,AR
3200647168,3201302527,VE
3201302528,3201433599,CL
-3201433600,3201441791,AR
+3201433600,3201435135,AR
+3201435136,3201435263,US
+3201435264,3201441791,AR
3201441792,3201442047,US
3201442048,3201499135,AR
3201499136,3201515519,CL
@@ -55956,12 +62889,14 @@
3201869856,3201869871,PE
3201869872,3201871743,AR
3201871744,3201871807,PE
-3201871808,3201871871,AR
+3201871808,3201871811,AR
+3201871812,3201871815,PE
+3201871816,3201871871,AR
3201871872,3201875967,PE
3201875968,3201880063,CO
3201880064,3201884159,EC
-3201884160,3201892351,VE
-3201892352,3201925119,AR
+3201884160,3201894399,VE
+3201894400,3201925119,AR
3201925120,3201957887,CL
3201957888,3202088959,PA
3202088960,3202220031,AR
@@ -55997,9 +62932,11 @@
3203556864,3203557119,DO
3203557120,3203561471,CO
3203561472,3203562495,SV
-3203562496,3203564031,CO
-3203564032,3203564287,PA
-3203564288,3203566591,CO
+3203562496,3203563775,CO
+3203563776,3203564287,PA
+3203564288,3203564799,CO
+3203564800,3203565055,DO
+3203565056,3203566591,CO
3203566592,3203566847,PA
3203566848,3203568639,CO
3203568640,3203569663,SV
@@ -56018,12 +62955,18 @@
3210740736,3210742015,BR
3210742016,3210742031,IT
3210742032,3210742047,US
-3210742048,3210742271,BR
+3210742048,3210742063,BR
+3210742064,3210742079,US
+3210742080,3210742271,BR
3210742272,3210742527,CL
3210742528,3210742543,KR
-3210742544,3210743039,CL
+3210742544,3210742567,CL
+3210742568,3210742575,US
+3210742576,3210743039,CL
3210743040,3210743055,GR
-3210743056,3210743295,CL
+3210743056,3210743079,CL
+3210743080,3210743087,US
+3210743088,3210743295,CL
3210743296,3210743551,US
3210743552,3210743567,TH
3210743568,3210743583,US
@@ -56036,7 +62979,7 @@
3210745360,3210745375,US
3210745376,3210745855,CL
3210745856,3210745871,IT
-3210745872,3210746367,CL
+3210745872,3210746367,BR
3210746368,3210746383,SE
3210746384,3210746879,CL
3210746880,3210746895,CH
@@ -56069,11 +63012,13 @@
3210773504,3210773519,PL
3210773520,3210774271,CL
3210774272,3210774287,NO
-3210774288,3210774783,CL
+3210774288,3210774527,CL
+3210774528,3210774783,BR
3210774784,3210774799,IT
-3210774800,3210775295,CL
+3210774800,3210775295,BR
3210775296,3210775311,CH
-3210775312,3210776319,CL
+3210775312,3210775551,BR
+3210775552,3210776319,CL
3210776320,3210776575,US
3210776576,3210776831,CL
3210776832,3210777087,US
@@ -56093,7 +63038,9 @@
3210786560,3210786575,GR
3210786576,3210803071,CL
3210803072,3210803087,US
-3210803088,3210803327,CL
+3210803088,3210803199,CL
+3210803200,3210803201,US
+3210803202,3210803327,CL
3210803328,3210803455,BR
3210803456,3210805247,CL
3210805248,3210809343,PA
@@ -56120,77 +63067,212 @@
3210926080,3210928127,AR
3210928128,3210936319,NI
3210936320,3211067391,EC
-3211067392,3211073023,US
+3211067392,3211071487,US
+3211071488,3211071999,DE
+3211072000,3211073023,US
3211073024,3211073279,CA
3211073280,3211073535,US
-3211073536,3211075583,CL
+3211073536,3211075583,NL
3211075584,3211075839,US
-3211075840,3211080703,CL
+3211075840,3211076095,CL
+3211076096,3211076607,LT
+3211076608,3211079167,CL
+3211079168,3211079423,NL
+3211079424,3211080703,CL
3211080704,3211080959,NL
3211080960,3211081215,CL
3211081216,3211081727,CH
3211081728,3211083775,CL
3211083776,3211083791,RU
-3211083792,3211084287,CL
+3211083792,3211083855,CL
+3211083856,3211083871,DE
+3211083872,3211084287,CL
3211084288,3211084303,NL
-3211084304,3211084671,CL
+3211084304,3211084367,CL
+3211084368,3211084383,DE
+3211084384,3211084559,CL
+3211084560,3211084575,DE
+3211084576,3211084671,CL
3211084672,3211084799,BY
3211084800,3211084815,AT
-3211084816,3211085311,CL
+3211084816,3211084879,CL
+3211084880,3211084895,DE
+3211084896,3211084927,CL
+3211084928,3211085055,US
+3211085056,3211085071,CL
+3211085072,3211085087,DE
+3211085088,3211085311,CL
3211085312,3211085327,GB
-3211085328,3211085695,CL
+3211085328,3211085391,CL
+3211085392,3211085407,DE
+3211085408,3211085583,CL
+3211085584,3211085599,DE
+3211085600,3211085695,CL
3211085696,3211085823,GE
3211085824,3211085839,TH
-3211085840,3211086095,CL
+3211085840,3211085903,CL
+3211085904,3211085919,DE
+3211085920,3211086095,CL
3211086096,3211086111,US
3211086112,3211086335,CL
3211086336,3211086351,FR
-3211086352,3211086847,CL
+3211086352,3211086367,DE
+3211086368,3211086463,CL
+3211086464,3211086591,US
+3211086592,3211086607,CL
+3211086608,3211086623,DE
+3211086624,3211086847,CL
3211086848,3211086863,PL
-3211086864,3211087359,CL
+3211086864,3211086879,DE
+3211086880,3211087119,CL
+3211087120,3211087135,DE
+3211087136,3211087359,CL
3211087360,3211087375,GB
-3211087376,3211087871,CL
+3211087376,3211087391,DE
+3211087392,3211087631,CL
+3211087632,3211087647,DE
+3211087648,3211087871,CL
3211087872,3211087887,ES
-3211087888,3211088383,CL
+3211087888,3211087903,DE
+3211087904,3211087999,CL
+3211088000,3211088127,US
+3211088128,3211088143,CL
+3211088144,3211088159,DE
+3211088160,3211088383,CL
3211088384,3211088399,BE
-3211088400,3211088895,CL
+3211088400,3211088415,DE
+3211088416,3211088655,CL
+3211088656,3211088671,DE
+3211088672,3211088895,CL
3211088896,3211088911,DK
-3211088912,3211089407,CL
+3211088912,3211088927,DE
+3211088928,3211089167,CL
+3211089168,3211089183,DE
+3211089184,3211089407,CL
3211089408,3211089423,GB
-3211089424,3211089919,CL
+3211089424,3211089439,DE
+3211089440,3211089535,CL
+3211089536,3211089663,US
+3211089664,3211089679,CL
+3211089680,3211089695,DE
+3211089696,3211089919,CL
3211089920,3211089935,GB
-3211089936,3211090431,CL
+3211089936,3211089951,DE
+3211089952,3211090191,CL
+3211090192,3211090207,DE
+3211090208,3211090431,CL
3211090432,3211090447,GR
-3211090448,3211090943,CL
+3211090448,3211090463,DE
+3211090464,3211090703,CL
+3211090704,3211090719,DE
+3211090720,3211090943,CL
3211090944,3211090959,TR
-3211090960,3211091455,CL
+3211090960,3211090975,DE
+3211090976,3211091071,CL
+3211091072,3211091199,US
+3211091200,3211091215,CL
+3211091216,3211091231,DE
+3211091232,3211091455,CL
3211091456,3211091471,FI
-3211091472,3211091967,CL
+3211091472,3211091487,DE
+3211091488,3211091727,CL
+3211091728,3211091743,DE
+3211091744,3211091967,CL
3211091968,3211091983,RU
-3211091984,3211092479,CL
+3211091984,3211091999,DE
+3211092000,3211092239,CL
+3211092240,3211092255,DE
+3211092256,3211092479,CL
3211092480,3211092495,BE
-3211092496,3211092991,CL
+3211092496,3211092511,DE
+3211092512,3211092607,CL
+3211092608,3211092735,US
+3211092736,3211092751,CL
+3211092752,3211092767,DE
+3211092768,3211092991,CL
3211092992,3211093007,SK
-3211093008,3211093503,CL
+3211093008,3211093023,DE
+3211093024,3211093263,CL
+3211093264,3211093279,DE
+3211093280,3211093503,CL
3211093504,3211093519,HR
-3211093520,3211094015,CL
+3211093520,3211093535,DE
+3211093536,3211093775,CL
+3211093776,3211093791,DE
+3211093792,3211094015,CL
3211094016,3211094031,CZ
-3211094032,3211094527,CL
+3211094032,3211094047,DE
+3211094048,3211094143,CL
+3211094144,3211094271,US
+3211094272,3211094287,CL
+3211094288,3211094303,DE
+3211094304,3211094527,CL
3211094528,3211094543,HR
-3211094544,3211095039,CL
+3211094544,3211094559,DE
+3211094560,3211094799,CL
+3211094800,3211094815,DE
+3211094816,3211095039,CL
3211095040,3211095055,ES
-3211095056,3211095551,CL
+3211095056,3211095071,DE
+3211095072,3211095311,CL
+3211095312,3211095327,DE
+3211095328,3211095551,CL
3211095552,3211095567,GB
-3211095568,3211096063,CL
+3211095568,3211095583,DE
+3211095584,3211095679,CL
+3211095680,3211095807,US
+3211095808,3211095823,CL
+3211095824,3211095839,DE
+3211095840,3211096063,CL
3211096064,3211096079,GB
-3211096080,3211096575,CL
+3211096080,3211096095,DE
+3211096096,3211096335,CL
+3211096336,3211096351,DE
+3211096352,3211096575,CL
3211096576,3211096831,GB
-3211096832,3211097087,CL
+3211096832,3211096847,CL
+3211096848,3211096863,DE
+3211096864,3211097087,CL
3211097088,3211097103,DE
-3211097104,3211099647,CL
+3211097104,3211097151,GB
+3211097152,3211097215,CL
+3211097216,3211097343,GB
+3211097344,3211097359,CL
+3211097360,3211097375,DE
+3211097376,3211097599,CL
+3211097600,3211097855,US
+3211097856,3211097871,CL
+3211097872,3211097887,DE
+3211097888,3211098111,CL
+3211098112,3211098367,US
+3211098368,3211098383,CL
+3211098384,3211098399,DE
+3211098400,3211098623,CL
+3211098624,3211098879,US
+3211098880,3211098895,CL
+3211098896,3211098911,DE
+3211098912,3211099135,CL
+3211099136,3211099391,DE
+3211099392,3211099407,CL
+3211099408,3211099423,DE
+3211099424,3211099647,CL
3211099648,3211099663,DE
-3211099664,3211129599,CL
-3211129600,3211129855,BR
+3211099664,3211099679,GB
+3211099680,3211099711,CL
+3211099712,3211099775,DE
+3211099776,3211099903,GB
+3211099904,3211099919,CL
+3211099920,3211099935,DE
+3211099936,3211101951,CL
+3211101952,3211102207,AR
+3211102208,3211104767,AU
+3211104768,3211106303,CL
+3211106304,3211108351,US
+3211108352,3211124735,CL
+3211124736,3211128831,US
+3211128832,3211129343,CL
+3211129344,3211129599,SG
+3211129600,3211129855,NL
3211129856,3211132927,CL
3211132928,3211137023,CO
3211137024,3211141119,AR
@@ -56307,7 +63389,7 @@
3220164608,3220168703,IE
3220168704,3220172799,US
3220172800,3221225471,BR
-3221225480,3221225727,GB
+3221225480,3221225727,US
3221226240,3221226495,US
3221226496,3221227519,KY
3221227520,3221242879,US
@@ -56367,7 +63449,13 @@
3221806080,3221806335,IN
3221806336,3221806591,US
3221806592,3221806847,IN
-3221806848,3222011903,US
+3221806848,3221991167,US
+3221991168,3221991423,NZ
+3221991424,3221993727,US
+3221993728,3221993983,FR
+3221993984,3222003967,US
+3222003968,3222004223,FR
+3222004224,3222011903,US
3222011904,3222012159,CA
3222012160,3222012415,NL
3222012416,3222023935,US
@@ -56475,8 +63563,7 @@
3223223296,3223223551,AI
3223223552,3223227903,US
3223227904,3223228159,CA
-3223228160,3223228415,US
-3223228928,3223229695,US
+3223228160,3223229695,US
3223229696,3223229951,CA
3223229952,3223236607,US
3223236608,3223237631,GB
@@ -56494,9 +63581,7 @@
3223262976,3223263231,BE
3223263232,3223263743,US
3223263744,3223264255,NL
-3223264256,3223264511,US
-3223264512,3223264767,CA
-3223264768,3223265023,US
+3223264256,3223265023,US
3223265024,3223265279,NL
3223265280,3223266559,US
3223266560,3223266815,AU
@@ -56579,16 +63664,12 @@
3223473232,3223474175,CA
3223474176,3223477247,US
3223477248,3223478271,CA
-3223478272,3223480319,US
-3223480832,3223481087,US
+3223478272,3223481087,US
3223481088,3223481343,SE
3223481344,3223483391,US
3223483392,3223483647,NL
-3223483648,3223483903,US
-3223484416,3223491071,US
-3223491584,3223497215,US
-3223497728,3223498751,US
-3223499264,3223499519,US
+3223483904,3223491071,US
+3223491584,3223499519,US
3223499520,3223499775,FI
3223499776,3223500031,US
3223500032,3223503871,CA
@@ -56620,8 +63701,7 @@
3223556608,3223556863,NL
3223556864,3223557375,US
3223557376,3223558655,DE
-3223558656,3223559679,US
-3223559936,3223563263,US
+3223558656,3223563263,US
3223563264,3223563519,NL
3223563520,3223566079,US
3223566080,3223568639,NL
@@ -56635,7 +63715,9 @@
3223578112,3223580671,US
3223580672,3223581951,AT
3223581952,3223582207,US
-3223582208,3223582719,NL
+3223582208,3223582212,NL
+3223582213,3223582213,PT
+3223582214,3223582719,NL
3223582720,3223582975,AU
3223582976,3223584767,US
3223584768,3223585023,GB
@@ -56694,38 +63776,36 @@
3223650048,3223650303,GB
3223650304,3223715839,CH
3223715840,3223781375,DK
-3223781376,3223847935,US
-3223848448,3223855103,US
+3223781376,3223855103,US
3223855104,3223857151,CA
-3223857152,3223862783,US
-3223863296,3223863807,US
+3223857152,3223863807,US
+3223863808,3223864319,CA
3223864320,3223864575,US
3223864576,3223864831,AE
3223864832,3223865343,HR
3223865344,3223867391,FI
3223867392,3223867647,GB
3223867648,3223867903,CA
+3223867904,3223868415,US
3223868416,3223869439,BM
3223869440,3223871487,US
3223871488,3223873535,CA
-3223873536,3223875071,US
-3223875584,3223877119,US
-3223877632,3223881727,US
+3223873536,3223881727,US
3223881728,3223882751,CA
+3223882752,3223883263,US
3223883264,3223883519,CA
-3223883520,3223898623,US
-3223899136,3223902207,US
+3223883520,3223902463,US
3223902464,3223902719,CA
-3223903232,3223905279,US
+3223902720,3223905279,US
3223905280,3223905535,FI
3223905536,3223905791,US
3223906304,3223909375,CA
-3223909376,3223910911,US
+3223909376,3223911935,US
3223911936,3223912191,CA
-3223912192,3223938815,US
+3223912448,3223938815,US
3223938816,3223946239,GB
3223946240,3223947519,CH
-3223947520,3223947775,US
+3223947520,3223948287,US
3223948288,3223948543,NL
3223948544,3223949823,CH
3223949824,3223950079,AU
@@ -56734,10 +63814,10 @@
3223950592,3223953663,CH
3223953664,3223955967,US
3223955968,3223956223,AU
-3223956224,3223957759,US
+3223956224,3223958015,US
3223958016,3223963135,JP
3223963136,3223963647,US
-3223963904,3223964159,CA
+3223963648,3223964159,CA
3223964160,3223964415,US
3223964416,3223964671,AU
3223964672,3223965183,US
@@ -56765,7 +63845,9 @@
3223994112,3223994623,DE
3223994880,3223995391,US
3223995392,3223995647,CA
-3223995648,3223999487,US
+3223995648,3223996415,US
+3223996416,3223996927,CA
+3223996928,3223999487,US
3224000256,3224000511,NL
3224000512,3224001023,US
3224001024,3224001279,CA
@@ -56779,8 +63861,7 @@
3224006912,3224012031,NL
3224012032,3224014591,US
3224014592,3224014847,NL
-3224014848,3224015615,US
-3224015872,3224016639,US
+3224014848,3224016639,US
3224016640,3224016895,AU
3224016896,3224024063,US
3224024064,3224029695,CH
@@ -56789,8 +63870,7 @@
3224030720,3224030975,CA
3224030976,3224038655,US
3224038656,3224038911,AU
-3224038912,3224039679,US
-3224039936,3224042751,US
+3224038912,3224042751,US
3224042752,3224043007,DE
3224043008,3224084991,US
3224084992,3224087551,SE
@@ -56798,7 +63878,7 @@
3224088064,3224088319,AU
3224088320,3224090879,US
3224090880,3224091135,AU
-3224091648,3224091903,US
+3224091136,3224091903,US
3224091904,3224092159,AU
3224092160,3224092415,CA
3224092416,3224092671,US
@@ -56814,25 +63894,22 @@
3224097792,3224098047,NL
3224098048,3224099583,US
3224099584,3224099839,CA
-3224099840,3224100863,US
-3224101120,3224101375,US
+3224099840,3224101375,US
3224101376,3224102399,AU
+3224102912,3224103423,US
3224103424,3224103679,NL
3224103680,3224104703,US
3224104704,3224104959,AU
-3224104960,3224105471,US
-3224105728,3224106495,US
-3224106752,3224109055,US
+3224104960,3224109055,US
3224109056,3224109311,NL
3224109312,3224119551,DE
3224119552,3224126463,FR
-3224126976,3224127231,US
+3224126464,3224127231,US
3224127232,3224129791,FR
3224129792,3224132351,DE
3224132352,3224170495,US
3224170496,3224173567,SE
-3224173568,3224174335,US
-3224174592,3224288255,US
+3224173568,3224288255,US
3224288256,3224289023,DE
3224289024,3224302335,US
3224302336,3224302591,CA
@@ -56840,54 +63917,56 @@
3224305664,3224367615,JP
3224367616,3224368127,US
3224368128,3224369663,CH
-3224369664,3224373247,US
+3224369664,3224370431,US
+3224370432,3224370687,CA
+3224370688,3224370943,US
+3224370944,3224371199,CA
+3224371200,3224373247,US
3224373248,3224373503,AU
-3224373504,3224379135,US
+3224373504,3224373759,US
+3224373760,3224374015,AU
+3224374016,3224379135,US
3224379136,3224379391,NL
-3224379392,3224392191,US
-3224392704,3224398079,US
-3224398336,3224398591,US
+3224379392,3224398591,US
3224398592,3224398847,DE
3224398848,3224399103,US
3224399104,3224399615,AU
-3224399616,3224407039,US
+3224399616,3224407295,US
3224407296,3224407551,CA
-3224407808,3224408319,US
+3224407552,3224408319,US
3224408320,3224408575,NL
-3224408576,3224424959,US
-3224425216,3224427007,US
-3224427520,3224428543,US
+3224408576,3224427519,US
+3224427520,3224427775,CA
+3224427776,3224428543,US
3224428544,3224428799,NL
-3224428800,3224430079,US
+3224428800,3224430335,US
3224430336,3224430591,NL
-3224430592,3224430847,US
+3224430592,3224431103,US
3224431104,3224431359,CA
3224431360,3224431615,US
-3224432128,3224432383,US
-3224433152,3224433407,US
-3224433664,3224434687,US
+3224432128,3224434687,US
3224434688,3224434943,AU
3224434944,3224435967,US
3224435968,3224436223,MU
-3224436224,3224436479,US
+3224436224,3224436735,US
3224436736,3224502271,FI
3224502272,3224567807,JP
3224567808,3224571903,NO
-3224571904,3224633343,JP
+3224571904,3224580095,JP
+3224580096,3224580351,US
+3224580352,3224633343,JP
3224633344,3224646399,DE
3224646400,3224651775,US
3224651776,3224652287,AU
-3224652800,3224660991,US
+3224652288,3224660991,US
3224660992,3224661247,CA
-3224661504,3224662527,US
-3224663040,3224663551,US
+3224661248,3224663807,US
3224672000,3224672255,US
3224672256,3224672511,NL
-3224672512,3224673791,US
+3224672512,3224674047,US
3224674048,3224674559,DE
3224674560,3224674815,GB
-3224675072,3224675839,US
-3224676864,3224677119,US
+3224674816,3224677119,US
3224677120,3224678655,AU
3224678656,3224680703,US
3224680704,3224680959,AU
@@ -56900,22 +63979,21 @@
3224692736,3224692991,NL
3224692992,3224694527,US
3224694528,3224694783,CA
-3224694784,3224695039,US
-3224695808,3224697343,US
-3224697856,3224698111,US
+3224694784,3224698111,US
3224698112,3224698623,NL
-3224698880,3224699135,US
+3224698624,3224699135,US
3224699136,3224699647,BE
3224699648,3224725247,US
-3224725248,3224725503,DE
-3224725504,3224725759,NL
+3224725248,3224725759,NL
3224725760,3224739071,US
3224739072,3224739327,FI
3224739328,3224772351,US
-3224772352,3224778751,DE
+3224772352,3224776447,DE
+3224776448,3224776703,GB
+3224776704,3224777983,DE
+3224777984,3224778239,US
3224779776,3224785151,DE
-3224785152,3224787967,US
-3224788480,3224791039,US
+3224785152,3224791039,US
3224791040,3224791295,NL
3224791296,3224791807,AU
3224791808,3224793343,US
@@ -56924,7 +64002,7 @@
3224793856,3224795391,DK
3224795392,3224795647,CA
3224795648,3224795903,CH
-3224796160,3224796415,US
+3224795904,3224796415,US
3224796416,3224797439,DE
3224797440,3224797695,US
3224797696,3224797951,AU
@@ -56932,9 +64010,11 @@
3224798208,3224798463,NL
3224798464,3224798975,US
3224798976,3224799231,AU
+3224799232,3224799487,US
3224799488,3224799743,AU
3224799744,3224799999,US
3224800000,3224800255,NL
+3224800256,3224800511,US
3224800512,3224816639,FR
3224816640,3224816895,IL
3224816896,3224820735,FR
@@ -56942,8 +64022,7 @@
3224820992,3224821247,DE
3224821248,3224822015,US
3224822016,3224822271,NL
-3224822272,3224822527,US
-3224822784,3224823039,US
+3224822272,3224823039,US
3224823296,3224826367,US
3224826368,3224826623,CA
3224826624,3224826879,US
@@ -56952,25 +64031,23 @@
3224827648,3224827903,AU
3224827904,3224828671,US
3224828672,3224828927,AU
-3224829184,3224829439,US
+3224828928,3224829439,US
3224829440,3224829695,NL
-3224829952,3224834047,US
+3224829696,3224834047,US
3224834048,3224834303,SG
3224834304,3224834559,US
3224834560,3224834815,TH
3224834816,3224850175,US
3224850176,3224850431,IN
-3224850432,3224850943,US
-3224851200,3224851455,US
+3224850432,3224851455,US
3224851456,3224851711,NL
-3224851968,3224852735,US
+3224851712,3224852735,US
3224852736,3224852991,NL
-3224852992,3224854527,US
-3224854784,3224855039,US
+3224852992,3224855039,US
3224855040,3224855551,AU
3224855552,3224855807,US
3224855808,3224856063,IT
-3224856064,3224856575,US
+3224856064,3224856831,US
3224856832,3224857087,NL
3224857088,3224857855,US
3224857856,3224858111,PL
@@ -56981,8 +64058,10 @@
3224859392,3224859647,NL
3224859648,3224860159,US
3224860160,3224860415,AU
-3224860928,3224862719,US
+3224860416,3224860671,CA
+3224860672,3224862975,US
3224862976,3224863231,NL
+3224863232,3224863487,CA
3224863488,3224863743,US
3224863744,3224863999,NL
3224864000,3224870655,US
@@ -56991,32 +64070,31 @@
3224878080,3224878335,NL
3224878336,3224878591,US
3224878592,3224878847,AU
+3224878848,3224879359,US
3224879360,3224879615,NL
3224879616,3224879871,CA
3224879872,3224880383,US
3224880384,3224880639,NL
3224880640,3224880895,AU
-3224880896,3224882431,US
+3224880896,3224882687,US
3224882688,3224882943,CA
3224882944,3224883455,US
3224883456,3224883711,AU
3224883712,3224884223,US
3224884224,3224884479,NL
-3224884480,3224884991,US
+3224884480,3224885247,US
3224885248,3224885503,CA
-3224885760,3224886015,US
+3224885504,3224886015,US
3224886016,3224886527,AU
3224886528,3224887295,US
3224887296,3224887551,CA
-3224887808,3224889087,US
+3224887552,3224889343,US
3224889344,3224889599,AU
3224889600,3224890879,US
3224890880,3224891135,AU
-3224891136,3224891647,US
-3224892160,3224892415,CA
+3224891136,3224892415,US
3224892416,3224892671,NL
-3224892928,3224893183,US
-3224893440,3224893951,US
+3224892672,3224893951,US
3224894464,3224899071,US
3224899072,3224899327,AT
3224899328,3224908543,US
@@ -57034,64 +64112,60 @@
3225034752,3225035775,BG
3225035776,3225037055,US
3225037056,3225049599,FI
-3225050112,3225051135,US
-3225052672,3225056767,US
-3225057024,3225057535,US
+3225049600,3225057535,US
3225057536,3225057791,CA
-3225057792,3225060351,US
-3225060352,3225061631,AU
+3225057792,3225060607,US
+3225060608,3225061631,AU
+3225061632,3225062399,US
3225062400,3225063423,VC
-3225063424,3225064447,US
-3225064704,3225075967,US
+3225063424,3225076223,US
3225076224,3225076479,CA
3225076480,3225076991,US
3225076992,3225077247,SE
-3225077504,3225081087,US
+3225077248,3225081087,US
3225081088,3225081343,CA
-3225081600,3225082367,US
+3225081344,3225082367,US
3225082368,3225082623,NL
-3225082880,3225084671,US
+3225082624,3225084671,US
3225084672,3225085183,NL
3225085184,3225085439,ES
3225085440,3225089279,US
3225089280,3225089535,CA
-3225089536,3225091071,US
-3225091584,3225091839,US
-3225092096,3225314303,US
+3225089536,3225314303,US
3225314304,3225314559,GB
-3225314560,3225419775,US
-3225420032,3225420287,US
+3225314560,3225420799,US
3225420800,3225423871,CA
3225423872,3225424383,US
3225424896,3225426943,US
3225426944,3225427199,NL
+3225427200,3225427455,US
+3225427456,3225427967,CA
3225427968,3225428991,US
-3225429504,3225429759,CA
-3225430016,3225431039,CA
+3225428992,3225431039,CA
3225431040,3225431551,NL
3225431552,3225434111,US
3225434112,3225436159,CA
-3225436160,3225437695,US
-3225438208,3225442559,US
-3225443328,3225444607,US
+3225436160,3225445375,US
3225445376,3225446399,BE
3225446400,3225450495,US
3225450496,3225451263,AG
3225451264,3225451519,MS
+3225451520,3225451775,US
3225451776,3225452031,NL
3225452544,3225456639,CA
3225456640,3225459711,US
+3225459712,3225459967,CA
3225459968,3225460479,US
-3225460480,3225462783,CA
-3225462784,3225468927,US
+3225460480,3225462015,CA
+3225462016,3225468927,US
3225468928,3225469951,CA
-3225470464,3225470719,US
+3225470464,3225471487,US
3225471488,3225471743,NL
-3225471744,3225472511,US
-3225473024,3225498111,US
+3225471744,3225472255,HK
+3225472256,3225472511,US
+3225473024,3225498367,US
3225498368,3225503487,NL
-3225503488,3225505535,US
-3225505792,3225506047,US
+3225503488,3225506303,US
3225506304,3225508863,AU
3225508864,3225509631,CH
3225509632,3225509887,US
@@ -57099,39 +64173,40 @@
3225510144,3225518591,US
3225518592,3225518847,AU
3225518848,3225519359,NL
-3225519872,3225520639,US
+3225519360,3225520895,US
3225520896,3225521151,NL
3225521152,3225522175,US
3225522176,3225522943,GB
3225522944,3225524223,US
3225524224,3225524479,VE
3225524480,3225524735,GB
-3225525248,3225526271,US
+3225524736,3225526271,US
3225526272,3225528319,BB
3225529088,3225529343,US
3225529600,3225530367,US
3225530368,3225530623,PR
-3225530624,3225530879,US
-3225531136,3225531647,US
+3225530624,3225531903,US
3225531904,3225532159,AU
3225532160,3225535999,CH
3225536000,3225540863,US
3225540864,3225541119,AU
3225541120,3225541375,US
-3225541376,3225544703,GB
+3225541376,3225543935,GB
+3225543936,3225544703,US
3225544704,3225546751,CA
-3225546752,3225548543,US
+3225546752,3225548799,US
3225548800,3225549055,AU
3225549056,3225549311,US
3225549312,3225549567,AU
-3225549568,3225550591,US
+3225549568,3225550847,US
3225550848,3225616383,DK
+3225616384,3225616639,US
3225616640,3225616895,AU
+3225616896,3225617151,US
3225617152,3225617663,NL
-3225617920,3225618175,US
-3225618432,3225618687,US
+3225617664,3225618687,US
3225618688,3225618943,CA
-3225619200,3225619455,US
+3225618944,3225619455,US
3225619456,3225619711,AU
3225619712,3225624575,US
3225624576,3225625599,CA
@@ -57146,14 +64221,11 @@
3225629184,3225629439,NL
3225629440,3225629695,US
3225629696,3225629951,NL
-3225629952,3225630207,US
+3225629952,3225630463,US
3225630464,3225630719,NL
3225630720,3225631231,US
3225631232,3225631487,NL
-3225631488,3225632767,US
-3225633536,3225633791,US
-3225634048,3225634815,US
-3225635072,3225635583,US
+3225631488,3225635839,US
3225635840,3225636095,NL
3225636096,3225636607,US
3225636608,3225636863,NL
@@ -57166,35 +64238,35 @@
3225640704,3225641983,US
3225641984,3225643263,GB
3225643264,3225643775,CA
-3225643776,3225649919,US
-3225650176,3225650943,US
+3225643776,3225650943,US
3225650944,3225651199,GB
-3225651200,3225658367,US
-3225658624,3225658879,US
+3225651200,3225659135,US
3225659136,3225659391,DE
3225659392,3225659647,AU
+3225659648,3225659903,US
3225659904,3225660159,DE
3225660160,3225660415,AU
-3225660416,3225664511,US
-3225664512,3225669887,DE
+3225660416,3225664767,US
+3225664768,3225669887,DE
3225669888,3225671935,US
3225671936,3225672191,AU
3225672192,3225672447,DE
3225672448,3225672703,US
3225672704,3225673215,NL
+3225673216,3225673471,CA
3225673472,3225673727,IE
3225673728,3225679871,US
3225679872,3225680127,AU
3225680128,3225680383,GR
-3225680640,3225681151,US
-3225681408,3225681663,US
+3225680384,3225680639,CA
+3225680640,3225681663,US
+3225681664,3225681919,CA
3225681920,3225682943,DE
3225682944,3225683199,AT
3225683200,3225687039,DE
3225687040,3225687807,US
3225687808,3225688063,NL
-3225688064,3225689343,US
-3225689600,3225689855,US
+3225688064,3225689855,US
3225689856,3225694975,NL
3225694976,3225695231,PL
3225695232,3225695487,US
@@ -57213,8 +64285,7 @@
3225717504,3225717759,AU
3225717760,3225720063,US
3225720576,3225721343,GB
-3225721344,3225722111,US
-3225722624,3225723903,US
+3225721344,3225723903,US
3225723904,3225725439,DE
3225725440,3225725695,GB
3225725696,3225726207,AU
@@ -57302,13 +64373,17 @@
3225874944,3225875199,GB
3225875456,3225875967,US
3225876480,3225878271,US
-3225878528,3225881343,SE
+3225878528,3225880319,SE
+3225880320,3225880575,US
+3225880576,3225881343,SE
3225881344,3225881599,IT
3225881600,3225885183,SE
3225885184,3225885695,AT
3225885696,3225887999,SE
3225888000,3225888255,GB
-3225888256,3225905407,SE
+3225888256,3225894399,SE
+3225894400,3225894911,GB
+3225894912,3225905407,SE
3225905408,3225905663,IT
3225905664,3225913855,SE
3225913856,3225914111,DE
@@ -57351,7 +64426,7 @@
3225942528,3225944063,SE
3225944064,3226008831,TW
3226008832,3226009343,US
-3226009856,3226010879,US
+3226009600,3226010879,US
3226010880,3226011135,CA
3226011136,3226012671,US
3226012672,3226012927,AU
@@ -57397,7 +64472,6 @@
3226194944,3226201087,CA
3226201088,3226201343,US
3226201344,3226201855,CA
-3226201856,3226202111,US
3226202112,3226205439,CA
3226205440,3226205695,AE
3226205696,3226205951,CA
@@ -57451,8 +64525,7 @@
3226393600,3226393855,DE
3226393856,3226397695,US
3226397696,3226400255,DE
-3226400256,3226470399,US
-3226470656,3226473471,US
+3226400256,3226473471,US
3226473472,3226473727,NL
3226473728,3226473983,PT
3226473984,3226474495,US
@@ -57477,7 +64550,7 @@
3226547200,3226548223,CA
3226548992,3226549247,BE
3226549248,3226550271,NL
-3226551040,3226551807,US
+3226550272,3226552319,US
3226552832,3226553087,US
3226553344,3226555391,US
3226555648,3226555903,CA
@@ -57556,9 +64629,7 @@
3226695680,3226695935,US
3226695936,3226696191,CA
3226696192,3226696703,AU
-3226696704,3226698495,US
-3226698496,3226698751,CA
-3226698752,3226704895,US
+3226696704,3226704895,US
3226705152,3226705407,AU
3226705408,3226705919,US
3226705920,3226706175,FR
@@ -57592,7 +64663,8 @@
3226733824,3226734079,NL
3226734080,3226734335,US
3226734336,3226734591,NL
-3226734592,3226736383,US
+3226734592,3226735615,US
+3226735872,3226736383,US
3226736896,3226737407,US
3226737408,3226737663,AT
3226737664,3226738175,US
@@ -57623,8 +64695,7 @@
3226775040,3226775295,US
3226775552,3226782463,FI
3226782720,3226783743,FI
-3226783744,3226783999,US
-3226784256,3226784767,US
+3226783744,3226784767,US
3226784768,3226785023,GB
3226785024,3226786559,US
3226786560,3226786815,AU
@@ -57703,7 +64774,7 @@
3227013120,3227013375,AU
3227013376,3227013887,US
3227013888,3227014399,NL
-3227014400,3227014655,NZ
+3227014400,3227014655,AU
3227014656,3227014911,NL
3227014912,3227017215,US
3227017472,3227017983,NL
@@ -57750,7 +64821,7 @@
3227237120,3227237631,US
3227237632,3227237887,NO
3227237888,3227238143,US
-3227238144,3227238399,GB
+3227238144,3227238399,NL
3227238400,3227239935,US
3227240192,3227240447,GB
3227240704,3227240959,GB
@@ -57841,7 +64912,7 @@
3227425792,3227427583,DK
3227427584,3227427839,ES
3227427840,3227429119,US
-3227429120,3227429375,NZ
+3227429120,3227429375,AU
3227429376,3227429887,US
3227429888,3227430143,NL
3227430144,3227430399,US
@@ -57921,9 +64992,7 @@
3227526656,3227526911,ZA
3227526912,3227533311,MU
3227533312,3227534335,US
-3227534336,3227539455,MU
-3227539456,3227539711,ZA
-3227539712,3227541503,MU
+3227534336,3227541503,MU
3227541504,3227541759,ZA
3227541760,3227557887,MU
3227557888,3227558911,US
@@ -57944,13 +65013,19 @@
3227722522,3227722522,US
3227722523,3227724031,CA
3227724032,3227724287,US
-3227724288,3227748035,CA
+3227724288,3227738879,CA
+3227738880,3227739135,US
+3227739136,3227748035,CA
3227748036,3227748039,US
3227748040,3227751868,CA
3227751869,3227751869,US
-3227751870,3227756505,CA
+3227751870,3227755775,CA
+3227755776,3227756031,US
+3227756032,3227756505,CA
3227756506,3227756506,US
-3227756507,3227765503,CA
+3227756507,3227762655,CA
+3227762656,3227762671,US
+3227762672,3227765503,CA
3227765504,3227765759,US
3227765760,3227777759,CA
3227777760,3227777763,US
@@ -58017,11 +65092,11 @@
3227834368,3227837439,MX
3227837440,3227837951,BR
3227837952,3227842303,MX
-3227842560,3227842815,BR
+3227842304,3227842815,BR
3227842816,3227843327,MX
3227843328,3227843583,BR
3227844096,3227844351,AR
-3227844864,3227845119,ES
+3227844864,3227845119,NL
3227845120,3227845631,US
3227845632,3227845887,NL
3227846144,3227846655,US
@@ -58091,7 +65166,7 @@
3227934720,3227947519,US
3227947520,3227955711,DE
3227955712,3227964927,US
-3227964928,3227965183,GB
+3227964928,3227965183,NL
3227965184,3227966975,US
3227967232,3227967487,US
3227967488,3227967999,NL
@@ -58163,7 +65238,8 @@
3228061696,3228061951,AU
3228061952,3228062207,US
3228062208,3228062463,GB
-3228062464,3228077055,US
+3228062464,3228069631,US
+3228069888,3228077055,US
3228077056,3228077311,NL
3228077312,3228077567,US
3228077568,3228077823,NL
@@ -58171,7 +65247,7 @@
3228078848,3228079103,GR
3228079104,3228080639,US
3228080640,3228081151,NL
-3228081152,3228081919,US
+3228081152,3228082175,US
3228082944,3228083967,US
3228083968,3228084479,NL
3228084480,3228085247,US
@@ -58281,8 +65357,7 @@
3228347392,3228348159,SK
3228348160,3228353279,US
3228353280,3228358399,SE
-3228358400,3228361471,US
-3228361728,3228362239,US
+3228358400,3228362239,US
3228362240,3228362495,AU
3228362496,3228362751,US
3228363008,3228363263,US
@@ -58298,7 +65373,8 @@
3228405504,3228405759,SG
3228405760,3228406015,IN
3228406016,3228406271,US
-3228406272,3228407039,FR
+3228406272,3228406527,IN
+3228406528,3228407039,FR
3228407040,3228420095,DE
3228420608,3228424703,DE
3228424704,3228424959,US
@@ -58380,20 +65456,16 @@
3228628992,3228630527,US
3228630528,3228630783,NL
3228631040,3228696575,NL
-3228696576,3228826371,IL
+3228696576,3228714764,IL
+3228714765,3228714765,CA
+3228714766,3228826371,IL
3228826372,3228826372,US
3228826373,3228830719,IL
3228830720,3228833791,PS
3228833792,3229024255,IL
3229024512,3229024767,US
3229025280,3229058047,US
-3229058816,3229061119,US
-3229061120,3229062433,CA
-3229062434,3229062450,US
-3229062451,3229064951,CA
-3229064952,3229064955,US
-3229064956,3229065215,CA
-3229065216,3229092095,US
+3229058816,3229092095,US
3229092096,3229093887,AU
3229093888,3229104895,US
3229104896,3229105151,ES
@@ -58411,9 +65483,11 @@
3229160960,3229161471,DE
3229161472,3229161727,SE
3229161728,3229161983,GB
-3229161984,3229164543,SE
+3229161984,3229164287,SE
+3229164288,3229164543,DK
3229164544,3229165055,GB
-3229165056,3229167103,SE
+3229165056,3229165311,NO
+3229165312,3229167103,SE
3229167104,3229167615,IT
3229167616,3229171711,SE
3229171712,3229172223,GB
@@ -58421,15 +65495,20 @@
3229182464,3229182975,GB
3229182976,3229183999,SE
3229184000,3229184511,GB
-3229184512,3229195263,SE
+3229184512,3229186815,SE
+3229186816,3229187327,ES
+3229187328,3229187583,SE
+3229187584,3229187839,DK
+3229187840,3229195263,SE
3229195264,3229196287,DE
3229196288,3229196799,SE
3229196800,3229197311,NL
3229197312,3229197823,SE
3229197824,3229198335,GB
-3229198336,3229198847,SE
+3229198336,3229198591,SE
+3229198592,3229198847,ES
3229198848,3229199103,CH
-3229199104,3229199359,AT
+3229199104,3229199359,IT
3229199360,3229200383,SE
3229200384,3229200895,GB
3229200896,3229201151,DE
@@ -58452,7 +65531,7 @@
3229264896,3229265919,US
3229265920,3229266175,AU
3229266176,3229266943,US
-3229266944,3229267199,NZ
+3229266944,3229267199,AU
3229267200,3229272319,US
3229273856,3229274623,US
3229274624,3229274879,AU
@@ -58539,7 +65618,9 @@
3229844736,3229844991,US
3229845248,3229845503,US
3229845504,3229847295,CA
-3229847296,3229870335,US
+3229847296,3229849599,US
+3229849600,3229849855,AU
+3229849856,3229870335,US
3229870848,3229874943,US
3229874944,3229875455,AU
3229875456,3229875967,US
@@ -58583,9 +65664,7 @@
3229940736,3229940991,CH
3229940992,3229941247,AU
3229941248,3229941503,US
-3229942272,3229942783,US
-3229943040,3229943295,US
-3229943552,3229944319,US
+3229941760,3229944319,US
3229944320,3229944575,AU
3229944576,3229945087,US
3229945344,3229945599,AU
@@ -58595,7 +65674,7 @@
3229947392,3229948927,US
3229948928,3229949183,IT
3229949184,3229949695,US
-3229949696,3229949951,NZ
+3229949696,3229949951,AU
3229949952,3229950207,NL
3229950208,3229950975,US
3229950976,3229951231,NL
@@ -58626,7 +65705,7 @@
3230004224,3230004479,NL
3230004480,3230004991,US
3230005760,3230006015,MU
-3230006016,3230007295,US
+3230006016,3230007039,US
3230007296,3230072831,FR
3230072832,3230074623,US
3230074624,3230074879,DE
@@ -58719,8 +65798,7 @@
3230156544,3230164991,FI
3230165504,3230167295,US
3230167552,3230168063,CA
-3230168832,3230174463,US
-3230175232,3230177791,US
+3230168832,3230177791,US
3230177792,3230178303,GB
3230178304,3230178559,CH
3230179328,3230210047,US
@@ -58792,15 +65870,13 @@
3230295040,3230295295,AU
3230295296,3230296319,US
3230296320,3230297343,NO
-3230297344,3230299647,SE
+3230297344,3230300159,SE
3230301696,3230302207,US
-3230302464,3230302719,CA
3230302976,3230307327,US
3230307584,3230309119,US
3230309120,3230309375,NO
3230309376,3230310143,GB
-3230310144,3230310655,US
-3230310912,3230316287,US
+3230310144,3230316287,US
3230316288,3230316543,NL
3230316544,3230316799,US
3230316800,3230317311,CA
@@ -58837,9 +65913,12 @@
3230372864,3230383359,CA
3230383616,3230384127,CA
3230384384,3230387455,CA
-3230387712,3230400255,CA
+3230387712,3230390015,CA
+3230390016,3230390271,US
+3230390272,3230400255,CA
3230681088,3230683135,FR
-3230787584,3230797311,US
+3230787584,3230793727,US
+3230793984,3230797311,US
3230797312,3230797567,SG
3230797568,3230823679,US
3230823680,3230823935,NL
@@ -58874,7 +65953,7 @@
3230842112,3230842367,AU
3230842624,3230843135,US
3230843136,3230843391,NL
-3230843392,3230844671,US
+3230843392,3230844927,US
3230844928,3230845183,AU
3230845184,3230845951,US
3230845952,3230846207,CZ
@@ -59233,6 +66312,7 @@
3231285248,3231291647,US
3231291648,3231291903,NL
3231291904,3231292159,US
+3231292160,3231292415,MX
3231292416,3231292927,US
3231292928,3231293183,AU
3231293184,3231294975,US
@@ -59247,7 +66327,7 @@
3231300352,3231300607,US
3231300608,3231301119,NL
3231301120,3231302143,US
-3231302144,3231302399,NO
+3231302144,3231302399,NL
3231302400,3231302655,US
3231302656,3231303167,AU
3231303168,3231307007,US
@@ -59263,11 +66343,16 @@
3231319040,3231322111,US
3231322112,3231324671,SG
3231325184,3231326207,CA
-3231326208,3231352831,US
+3231326208,3231349759,US
+3231350528,3231352831,US
3231352832,3231358975,CA
-3231358976,3231383551,US
+3231358976,3231369215,US
+3231369216,3231369471,TW
+3231369472,3231383551,US
3231383552,3231385599,NO
-3231385600,3231477759,US
+3231385600,3231444071,US
+3231444072,3231444079,CA
+3231444080,3231477759,US
3231477760,3231478015,CA
3231478016,3231482879,US
3231482880,3231483135,BE
@@ -59312,9 +66397,7 @@
3231513600,3231514367,US
3231514624,3231515647,NO
3231515648,3231516159,US
-3231516672,3231518719,SE
-3231518720,3231518975,BR
-3231518976,3231519231,SE
+3231516672,3231519231,SE
3231519744,3231521791,US
3231522560,3231528959,US
3231528960,3231528991,CA
@@ -59367,8 +66450,8 @@
3231588864,3231589119,GB
3231589120,3231591679,US
3231591680,3231591935,AU
-3231591936,3231593983,US
-3231593984,3231594495,GB
+3231591936,3231594239,US
+3231594240,3231594495,GB
3231594496,3231641855,US
3231641856,3231642111,SG
3231642112,3231644927,US
@@ -59406,7 +66489,7 @@
3231711232,3231713023,US
3231713024,3231713279,CA
3231713280,3231713791,US
-3231713792,3231714047,GB
+3231713792,3231714047,NL
3231714048,3231715071,US
3231715072,3231715327,NL
3231715328,3231715583,AU
@@ -59429,8 +66512,7 @@
3231723008,3231723519,US
3231723776,3231724031,US
3231724032,3231724287,BR
-3231724288,3231725055,US
-3231725312,3231727871,US
+3231724288,3231727871,US
3231727872,3231728127,NL
3231728384,3231728639,NL
3231728640,3231729407,US
@@ -59441,7 +66523,8 @@
3231737600,3231738367,US
3231738368,3231738623,NL
3231738624,3231739135,US
-3231739136,3231739647,NL
+3231739136,3231739391,GB
+3231739392,3231739647,NL
3231739648,3231739903,BR
3231739904,3231742719,US
3231742720,3231742975,NL
@@ -59491,8 +66574,7 @@
3231800320,3231801343,CN
3231801344,3231809535,CA
3231809536,3231810047,AU
-3231810560,3231825919,US
-3231825920,3231842303,CA
+3231810560,3231842303,US
3231842304,3231843327,RU
3231843328,3231844351,NO
3231844352,3231845375,RU
@@ -59571,7 +66653,9 @@
3232065792,3232066303,GB
3232066304,3232066559,SE
3232066560,3232066815,NO
-3232066816,3232079871,SE
+3232066816,3232070399,SE
+3232070400,3232070655,ES
+3232070656,3232079871,SE
3232079872,3232080895,GB
3232080896,3232082687,SE
3232082688,3232083199,GB
@@ -59594,11 +66678,16 @@
3232098304,3232100095,SE
3232100096,3232100351,IE
3232100352,3232101119,GB
-3232101120,3232104447,SE
+3232101120,3232102143,SE
+3232102144,3232102144,DK
+3232102145,3232102145,SE
+3232102146,3232102399,DK
+3232102400,3232104447,SE
3232104448,3232106495,DE
3232107520,3232108543,RU
3232108544,3232112639,DE
-3232116736,3232129023,DE
+3232116736,3232125183,DE
+3232125952,3232129023,DE
3232129024,3232130047,NL
3232130048,3232131071,UA
3232131072,3232133119,DE
@@ -59676,9 +66765,9 @@
3232724152,3232724159,US
3232724160,3232727039,CA
3232727040,3232759807,US
-3232759808,3232772095,SE
-3232772096,3232774143,IT
-3232774144,3232774911,SE
+3232759808,3232765951,SE
+3232765952,3232766207,NO
+3232766208,3232774911,SE
3232774912,3232775167,IE
3232775168,3232794879,SE
3232794880,3232795135,DE
@@ -59771,8 +66860,7 @@
3233590528,3233590783,PR
3233590784,3233591295,AU
3233591552,3233593599,US
-3233593600,3233593855,NZ
-3233593856,3233594111,AU
+3233593600,3233594111,AU
3233594112,3233594367,NL
3233594368,3233594623,US
3233594624,3233594879,NL
@@ -59806,7 +66894,7 @@
3233625600,3233625855,AU
3233625856,3233626111,NL
3233626112,3233626879,US
-3233627136,3233628671,US
+3233627136,3233628415,US
3233628672,3233628927,FR
3233628928,3233629439,CA
3233629440,3233629695,GB
@@ -59839,7 +66927,7 @@
3233654272,3233655551,GB
3233655552,3233662975,US
3233663488,3233663999,NL
-3233664256,3233665023,US
+3233664000,3233665023,US
3233665024,3233666047,AU
3233666048,3233668863,US
3233668864,3233669119,AU
@@ -59852,6 +66940,7 @@
3233677312,3233679103,US
3233679360,3233682431,US
3233682944,3233684991,US
+3233684992,3233685247,MX
3233685248,3233685503,BR
3233685760,3233688063,US
3233688576,3233688831,NL
@@ -59955,11 +67044,7 @@
3233808384,3233873919,TW
3233873920,3233874175,US
3233874176,3233874687,AU
-3233874688,3233903615,US
-3233903616,3233903743,GB
-3233903744,3233903807,US
-3233903808,3233903871,GB
-3233903872,3233926294,US
+3233874688,3233926294,US
3233926295,3233926295,MX
3233926296,3233939455,US
3233939456,3234004991,FI
@@ -60065,13 +67150,16 @@
3234232576,3234232831,US
3234232832,3234233087,BR
3234233088,3234238975,US
-3234238976,3234239487,MY
-3234239488,3234240383,US
+3234238976,3234239231,MY
+3234239232,3234239327,US
+3234239328,3234239329,MY
+3234239330,3234240383,US
3234240384,3234240387,IE
3234240388,3234240607,US
3234240608,3234240611,IL
3234240612,3234247167,US
-3234247680,3234269695,US
+3234247680,3234267135,US
+3234267392,3234269695,US
3234270208,3234271231,CA
3234271232,3234275327,PT
3234275328,3234279423,AU
@@ -60083,7 +67171,14 @@
3234316288,3234320383,CA
3234320384,3234332671,US
3234332928,3234334975,US
-3234335744,3234349055,US
+3234335744,3234338815,US
+3234338816,3234339071,CN
+3234339072,3234339327,MT
+3234339328,3234339583,LB
+3234339584,3234339839,PA
+3234339840,3234340095,US
+3234340096,3234340351,IN
+3234340352,3234349055,US
3234349056,3234353151,NZ
3234353152,3234549759,US
3234549760,3234550015,RU
@@ -60129,7 +67224,8 @@
3234726144,3234726399,CA
3234726400,3234726911,US
3234726912,3234727935,CA
-3234727936,3234733055,US
+3234727936,3234730495,US
+3234730752,3234733055,US
3234733056,3234733311,CA
3234733312,3234735103,US
3234735616,3234737407,US
@@ -60160,7 +67256,8 @@
3234781440,3234781951,CA
3234781952,3234782719,US
3234782720,3234783999,IL
-3234784000,3234791167,US
+3234784000,3234786815,US
+3234787328,3234791167,US
3234791424,3234794495,US
3234794752,3234795007,US
3234795008,3234795263,NL
@@ -60227,15 +67324,15 @@
3234861056,3234886143,US
3234886656,3234926847,US
3234927616,3234988031,US
-3234988032,3234990847,CA
+3234988032,3234991103,CA
3234991104,3234998783,US
3234999296,3235004415,US
3235004416,3235021823,CA
3235021824,3235026943,US
-3235026944,3235028991,CA
-3235028992,3235045375,US
-3235045376,3235046143,CA
-3235046144,3235085311,US
+3235026944,3235027967,CA
+3235027968,3235045375,US
+3235045376,3235045887,CA
+3235045888,3235085311,US
3235085312,3235086335,CA
3235086336,3235184639,US
3235184640,3235184895,CA
@@ -60345,7 +67442,12 @@
3236233216,3236238591,US
3236239360,3236241407,CA
3236241408,3236302847,US
-3236306944,3236364287,US
+3236306944,3236312063,US
+3236312064,3236312319,MO
+3236312320,3236312575,GH
+3236312576,3236312831,GR
+3236312832,3236313087,QA
+3236313088,3236364287,US
3236364544,3236365567,US
3236365824,3236368127,US
3236368128,3236368383,AU
@@ -60475,10 +67577,7 @@
3236826112,3236827135,CA
3236827136,3236958207,US
3236958208,3236962303,AU
-3236962304,3236966143,US
-3236966400,3237021695,US
-3237021696,3237023743,CA
-3237023744,3237038079,US
+3236962304,3237038079,US
3237038080,3237038335,CA
3237038336,3237043967,US
3237043968,3237044223,CH
@@ -60525,8 +67624,7 @@
3237308672,3237310719,AU
3237310720,3237312767,US
3237312768,3237313023,BO
-3237313024,3237317631,US
-3237317888,3237319679,US
+3237313024,3237319679,US
3237319680,3237319935,MU
3237319936,3237320703,US
3237320704,3237320959,UA
@@ -60586,7 +67684,9 @@
3237634310,3237634310,GB
3237634311,3237647103,US
3237647104,3237647359,AU
-3237647360,3237679359,US
+3237647360,3237648639,US
+3237648640,3237648895,AU
+3237648896,3237679359,US
3237679872,3237681663,US
3237681664,3237682943,CA
3237682944,3237684991,US
@@ -60621,7 +67721,7 @@
3237781504,3237785599,CA
3237785600,3237797887,US
3237797888,3237801983,CA
-3237806080,3237857535,US
+3237801984,3237857535,US
3237858304,3237863423,CA
3237863424,3237867519,US
3237867520,3237867775,HK
@@ -60662,7 +67762,7 @@
3237961472,3237961727,HT
3237961728,3238002687,US
3238002688,3238008831,NL
-3238008832,3238010879,PL
+3238008832,3238010879,GB
3238010880,3238017023,CH
3238017024,3238018303,DK
3238018304,3238018559,UA
@@ -60743,7 +67843,7 @@
3238536192,3238537215,DK
3238537216,3238538495,CH
3238538496,3238538751,PL
-3238538752,3238539263,RU
+3238538752,3238539263,UA
3238539264,3238541567,CH
3238541568,3238541823,PL
3238541824,3238542591,CH
@@ -60826,8 +67926,8 @@
3238867968,3238887423,SE
3238887424,3238888447,NL
3238888448,3238893567,SE
-3238893568,3238894591,NL
-3238894592,3238897663,SE
+3238893568,3238895615,NL
+3238895616,3238897663,SE
3238897664,3238899711,NL
3238899712,3238901759,SE
3238901760,3238902783,NL
@@ -60856,7 +67956,9 @@
3238993920,3238995967,HR
3238995968,3239001087,SE
3239001088,3239002111,NL
-3239002112,3239008255,SE
+3239002112,3239006207,SE
+3239006208,3239007231,NL
+3239007232,3239008255,SE
3239008256,3239009279,NL
3239009280,3239018495,SE
3239018496,3239020543,HR
@@ -60866,7 +67968,6 @@
3239026688,3239028735,HR
3239028736,3239051263,SE
3239051264,3239053311,DE
-3239054336,3239054847,DE
3239055360,3239059455,DE
3239062272,3239062527,ES
3239062528,3239062783,CH
@@ -61044,9 +68145,7 @@
3239275520,3239276543,UA
3239276544,3239277055,LU
3239277056,3239277567,DE
-3239277568,3239278079,RU
-3239278080,3239278591,UA
-3239278592,3239279103,RU
+3239277568,3239279103,RU
3239279104,3239280127,PL
3239280128,3239280639,RU
3239281664,3239282687,RU
@@ -61104,7 +68203,7 @@
3239468288,3239468543,RO
3239468544,3239468799,NO
3239468800,3239469055,RO
-3239469056,3239470591,DE
+3239470080,3239470591,DE
3239470592,3239470847,CH
3239470848,3239471103,BG
3239471872,3239472127,FR
@@ -61114,7 +68213,7 @@
3239480320,3239480575,UA
3239480832,3239481087,CH
3239481088,3239481343,FR
-3239481344,3239486719,DE
+3239485440,3239486719,DE
3239486720,3239486975,ES
3239486976,3239487487,DE
3239487744,3239487999,PL
@@ -61166,9 +68265,8 @@
3239541248,3239541503,UA
3239541504,3239541759,FR
3239541760,3239542015,GB
-3239542016,3239542271,PL
3239542272,3239542527,RU
-3239542784,3239544831,DE
+3239543808,3239544831,DE
3239544832,3239545087,GB
3239545088,3239545343,SI
3239545344,3239545855,HU
@@ -61202,7 +68300,9 @@
3239574016,3239574783,DE
3239575040,3239575295,DE
3239575296,3239575551,DK
-3239575552,3239578879,DE
+3239576064,3239576319,DE
+3239576576,3239576831,DE
+3239577088,3239578879,DE
3239579136,3239579391,PL
3239579392,3239581695,DE
3239581696,3239581951,PL
@@ -61215,7 +68315,8 @@
3239583744,3239584767,DE
3239585024,3239585279,DE
3239587840,3239591935,DE
-3239591936,3239592447,FI
+3239591936,3239592191,FI
+3239592192,3239592447,CN
3239592448,3239592703,US
3239592704,3239593983,FI
3239593984,3239624703,DE
@@ -61447,7 +68548,7 @@
3239896064,3239896575,DE
3239896576,3239896831,PL
3239896832,3239897087,HU
-3239897088,3239897343,IE
+3239897088,3239897343,GB
3239897344,3239897599,FR
3239897600,3239897855,RU
3239897856,3239898111,FR
@@ -61460,7 +68561,7 @@
3239902464,3239902719,RU
3239902720,3239902975,EE
3239903232,3239904255,DE
-3239904512,3239904767,DE
+3239904512,3239904767,GB
3239905024,3239907327,DE
3239907328,3239907583,UA
3239907584,3239907839,DE
@@ -61477,11 +68578,8 @@
3239916800,3239917055,KZ
3239917056,3239917311,DE
3239917312,3239917567,BG
-3239919616,3239922687,DE
-3239922688,3239922724,LU
-3239922725,3239922725,DE
-3239922726,3239922943,LU
-3239922944,3239935999,DE
+3239919616,3239927807,DE
+3239931904,3239935999,DE
3239936512,3239938815,DE
3239938816,3239939071,NL
3239939072,3239949311,DE
@@ -61501,7 +68599,8 @@
3239960064,3239960319,FR
3239960320,3239960575,GB
3239960576,3239966719,DE
-3239967232,3239968255,DE
+3239967232,3239967487,DE
+3239967744,3239968255,DE
3239968512,3239968767,PL
3239968768,3239969023,NO
3239969536,3239971839,DE
@@ -61514,7 +68613,8 @@
3239978752,3239979007,RU
3239979264,3239979519,GB
3239979520,3239979775,DE
-3239980032,3239996415,DE
+3239980032,3239993343,DE
+3239995392,3239996415,DE
3239996416,3239996671,GB
3239996928,3239997183,BE
3239997184,3239997439,GB
@@ -61549,7 +68649,7 @@
3240085504,3240087551,KZ
3240087552,3240097791,DE
3240098816,3240099327,CH
-3240100352,3240100863,GB
+3240100608,3240100863,GB
3240101376,3240101887,GB
3240102144,3240102399,GB
3240102912,3240103935,UA
@@ -61580,11 +68680,7 @@
3240120832,3240121343,GB
3240122368,3240123391,GB
3240125440,3240125695,RO
-3240125696,3240132607,GB
-3240140800,3240142847,GB
-3240153600,3240154111,GB
-3240161536,3240161791,GB
-3240163840,3240165375,GB
+3240125696,3240165375,GB
3240165376,3240165887,PL
3240165888,3240166399,ES
3240166400,3240166911,PL
@@ -61756,7 +68852,6 @@
3240280704,3240280831,RU
3240280832,3240280959,GB
3240280960,3240281215,PL
-3240281216,3240281343,FR
3240281344,3240281471,PL
3240281472,3240281599,FR
3240281600,3240281727,JO
@@ -61852,7 +68947,7 @@
3240423424,3240435711,GB
3240436480,3240436735,GB
3240436736,3240437759,DE
-3240438784,3240443903,GB
+3240438784,3240439807,GB
3240450048,3240454911,GB
3240454912,3240455167,IN
3240456192,3240460287,GB
@@ -61882,7 +68977,8 @@
3240467968,3240468223,DE
3240468224,3240468479,CH
3240468480,3240476671,GB
-3240484864,3240486911,GB
+3240485120,3240485375,GB
+3240485632,3240486399,GB
3240487424,3240487935,GB
3240487936,3240488191,CH
3240488192,3240488447,GB
@@ -61899,7 +68995,8 @@
3240534016,3240536640,GB
3240536641,3240536641,US
3240536642,3240550399,GB
-3240558592,3240575487,GB
+3240558592,3240560127,GB
+3240560640,3240575487,GB
3240575488,3240575743,RO
3240575744,3240575999,GB
3240576000,3240576255,DE
@@ -61922,7 +69019,7 @@
3240588800,3240589055,UA
3240589056,3240589311,RO
3240589312,3240593407,SE
-3240593408,3240594175,GB
+3240593408,3240593663,GB
3240594176,3240594431,DK
3240594432,3240599551,GB
3240602624,3240605695,GB
@@ -61931,7 +69028,6 @@
3240615936,3240622079,GB
3240622080,3240622591,RU
3240622592,3240623103,GB
-3240623872,3240624127,GB
3240624128,3240689663,EE
3240689664,3240690175,GB
3240690176,3240690687,TR
@@ -62037,7 +69133,8 @@
3240754176,3240755199,DE
3240755200,3240759295,IT
3240771584,3240779775,IT
-3240788992,3240791551,IT
+3240788992,3240790015,IT
+3240790528,3240791551,IT
3240791552,3240791807,RU
3240791808,3240792063,ES
3240792064,3240792319,GB
@@ -62065,11 +69162,7 @@
3240812288,3240812543,KW
3240813568,3240814591,PL
3240814592,3240816639,IT
-3240818688,3240819711,NL
-3240819712,3240819715,GB
-3240819716,3240819716,NL
-3240819717,3240819967,GB
-3240819968,3240820735,NL
+3240818688,3240820735,NL
3240820736,3240820799,FR
3240820800,3240820831,CY
3240820832,3240820863,GB
@@ -62082,7 +69175,7 @@
3240827392,3240827647,BG
3240827648,3240827903,CH
3240828160,3240828415,DE
-3240828416,3240837119,IT
+3240828928,3240837119,IT
3240839424,3240839679,IT
3240840192,3240840447,IT
3240840448,3240840703,PL
@@ -62096,7 +69189,8 @@
3240845312,3240845823,IT
3240846336,3240846847,IT
3240846848,3240847359,VA
-3240847360,3240852735,IT
+3240847360,3240848895,IT
+3240849152,3240852735,IT
3240852736,3240852991,GB
3240853248,3240853503,RU
3240853504,3240854527,VA
@@ -62131,7 +69225,8 @@
3240886272,3241017343,SE
3241017344,3241017855,AT
3241017856,3241018111,RU
-3241018112,3241029119,AT
+3241018112,3241018367,FR
+3241018368,3241029119,AT
3241029120,3241029375,UA
3241029376,3241029631,PL
3241029632,3241031679,AT
@@ -62254,15 +69349,19 @@
3241146624,3241146879,RO
3241146880,3241147903,CH
3241148160,3241148415,CH
-3241148416,3241476095,FR
-3241476608,3241477631,BE
+3241148416,3241416767,FR
+3241416768,3241416831,US
+3241416832,3241476095,FR
+3241476608,3241477375,BE
3241477632,3241477887,GB
3241478144,3241481727,BE
3241481728,3241481983,PT
3241481984,3241482239,DE
3241482240,3241484799,SE
3241484800,3241485055,BE
-3241485312,3241496575,BE
+3241485312,3241486591,BE
+3241486592,3241487615,SE
+3241487616,3241496575,BE
3241496576,3241496831,AT
3241497344,3241497599,UA
3241497600,3241497855,SE
@@ -62284,8 +69383,10 @@
3241508864,3241541375,BE
3241541376,3241541631,PL
3241541632,3241672703,FR
-3241673472,3241689087,FR
-3241691136,3241699327,FR
+3241673728,3241678847,FR
+3241680896,3241689087,FR
+3241691136,3241692159,FR
+3241693184,3241699327,FR
3241699584,3241699839,FR
3241699840,3241700095,SE
3241700096,3241723903,FR
@@ -62316,7 +69417,6 @@
3241842688,3241843455,BE
3241843456,3241843711,CH
3241843712,3241848063,BE
-3241851904,3241852927,GB
3241852928,3241854463,SK
3241854464,3241854975,GB
3241854976,3241855999,DE
@@ -62368,9 +69468,7 @@
3243238400,3243245567,NL
3243245568,3243376639,AT
3243376640,3243442175,GB
-3243442176,3243443199,AT
-3243443200,3243443455,DE
-3243443456,3243507711,AT
+3243442176,3243507711,AT
3243507712,3243507967,GB
3243509248,3243509759,CZ
3243509760,3243510015,RU
@@ -62735,7 +69833,6 @@
3244882176,3244882431,UA
3244882432,3244882687,IT
3244882688,3244882943,PL
-3244882944,3244883199,NL
3244883200,3244883455,RU
3244883456,3244883711,CZ
3244883712,3244883967,NL
@@ -62963,7 +70060,6 @@
3244945664,3244945919,NL
3244945920,3244946175,PL
3244946176,3244946431,TR
-3244946432,3244946687,RO
3244946688,3244946943,RU
3244946944,3244947455,DE
3244947456,3244947711,PL
@@ -63142,10 +70238,7 @@
3245126656,3245126911,FR
3245126912,3245127167,DE
3245127168,3245127423,RU
-3245127424,3245127679,AT
-3245127680,3245127742,US
-3245127743,3245127743,DE
-3245127744,3245127935,US
+3245127680,3245127935,DE
3245127936,3245128191,LV
3245128192,3245128447,IT
3245128448,3245128703,CH
@@ -63161,7 +70254,6 @@
3245132288,3245132543,PL
3245132544,3245132799,FR
3245132800,3245133311,IT
-3245133312,3245133567,PL
3245134080,3245134335,UA
3245134336,3245134591,NL
3245134848,3245135103,AT
@@ -63216,7 +70308,6 @@
3245169152,3245169407,IT
3245169408,3245169663,PL
3245169920,3245170175,PT
-3245170176,3245170431,GB
3245170432,3245170687,CH
3245170688,3245171711,DE
3245172736,3245173759,IT
@@ -63291,8 +70382,7 @@
3245219840,3245221887,FI
3245221888,3245223935,DE
3245223936,3245225471,NL
-3245225472,3245225727,GB
-3245225728,3245225983,NL
+3245225472,3245225983,GB
3245225984,3245228031,HU
3245228032,3245229055,FI
3245229056,3245230079,DE
@@ -63323,7 +70413,7 @@
3245243392,3245244415,UA
3245244416,3245244671,ES
3245244672,3245244927,AT
-3245244928,3245245183,BE
+3245244928,3245245183,US
3245245440,3245245695,BG
3245245696,3245245951,DE
3245246720,3245246975,PL
@@ -63470,8 +70560,6 @@
3246129152,3246260223,RU
3246260224,3246325759,PT
3246351616,3246352639,ES
-3246374400,3246374655,ES
-3246376960,3246377215,ES
3246378752,3246379007,ES
3246379008,3246381055,GB
3246391296,3246613503,GB
@@ -63479,8 +70567,7 @@
3246614528,3246744543,GB
3246744544,3246744559,NG
3246744560,3246784511,GB
-3246784512,3246825727,CH
-3246825728,3246825983,GB
+3246784512,3246825983,CH
3246825984,3246826239,US
3246826240,3246915583,CH
3246915584,3247046655,PT
@@ -63574,9 +70661,9 @@
3247112192,3247177727,FR
3247177728,3247243263,TR
3247243264,3247244287,DE
-3247244288,3247252319,NL
-3247252320,3247252327,DE
-3247252328,3247253503,NL
+3247244288,3247250175,NL
+3247250176,3247250431,DE
+3247250432,3247253503,NL
3247253504,3247254527,DE
3247254528,3247267839,NL
3247267840,3247268351,DE
@@ -63590,7 +70677,8 @@
3247309824,3247313663,FI
3247313664,3247313919,AM
3247313920,3247316479,FI
-3247316480,3247316991,RU
+3247316480,3247316735,IR
+3247316736,3247316991,RU
3247321600,3247322111,FI
3247322368,3247322623,DE
3247322624,3247323135,FI
@@ -63618,7 +70706,7 @@
3247341312,3247341567,DE
3247343616,3247345663,FI
3247345920,3247346175,HU
-3247346176,3247346943,FI
+3247346432,3247346943,FI
3247346944,3247347199,SI
3247347200,3247347455,FI
3247347456,3247347711,IL
@@ -63675,7 +70763,7 @@
3247438848,3247439871,FI
3247439872,3247702015,ES
3247702016,3247702271,RO
-3247702528,3247703551,ES
+3247702528,3247703295,ES
3247703552,3247704063,FR
3247705856,3247706111,RU
3247708160,3247711743,ES
@@ -63772,7 +70860,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
@@ -63813,7 +70902,6 @@
3248521984,3248522239,RU
3248522240,3248522751,NO
3248523264,3248524287,NO
-3248525312,3248525567,DE
3248526336,3248527359,NO
3248528384,3248528895,NO
3248528896,3248529151,RU
@@ -63827,30 +70915,31 @@
3248551936,3248553215,NO
3248553728,3248553983,RU
3248553984,3248554239,RO
-3248554496,3248557055,NO
3248557056,3248558079,UA
3248558080,3248575487,NO
3248575488,3248576511,CZ
-3248576512,3248591871,NO
-3248592384,3248599039,NO
+3248576512,3248582655,NO
+3248584704,3248586751,NO
+3248589312,3248589823,NO
+3248590848,3248591871,NO
+3248592896,3248599039,NO
3248599040,3248603135,SE
3248603136,3248603391,BG
3248603392,3248603647,RU
3248603648,3248604159,NO
-3248604928,3248608767,NO
-3248609280,3248619519,NO
+3248606208,3248608255,NO
+3248609280,3248610303,NO
+3248611328,3248619519,NO
3248619520,3248624383,DK
3248624384,3248624639,US
3248624640,3248750591,DK
3248750592,3248750847,PT
-3248751616,3248752127,PL
3248752640,3248752895,DE
3248752896,3248753151,TR
3248753408,3248753663,GB
3248753664,3248753919,FR
3248753920,3248754431,GB
3248754432,3248754687,AT
-3248754688,3248758783,PL
3248758784,3248774143,SE
3248774144,3248775167,UA
3248775168,3248783615,GB
@@ -63896,10 +70985,8 @@
3248807936,3248808447,AT
3248808448,3248808959,GR
3248808960,3248810111,FR
-3248810112,3248810143,RU
3248810144,3248810175,CY
3248810176,3248810207,FR
-3248810208,3248810239,GB
3248810240,3248810495,CH
3248810496,3248812543,AT
3248812544,3248813055,GB
@@ -63910,12 +70997,12 @@
3248816128,3248881663,CZ
3248881664,3249012735,FI
3249012736,3249012991,DE
-3249012992,3249014271,LU
+3249012992,3249014015,LU
3249014272,3249014783,DE
3249014784,3249025023,LU
3249025536,3249025791,FR
3249026560,3249026815,PL
-3249026816,3249045503,LU
+3249027584,3249045503,LU
3249045504,3249078271,DE
3249078272,3249078783,RU
3249078784,3249079295,CH
@@ -64022,28 +71109,28 @@
3249141760,3249142271,RU
3249142784,3249143295,UA
3249143296,3249143807,GB
-3249143808,3249242879,AT
-3249242880,3249243135,DE
-3249243136,3249274879,AT
+3249143808,3249274879,AT
3249274880,3249405951,NL
3249405952,3249521279,DE
3249521280,3249521343,UA
3249521344,3249537023,DE
3249537024,3249537279,PT
-3249537536,3249537791,NL
3249537792,3249538047,GB
-3249538048,3249551359,NL
+3249538048,3249541119,NL
+3249545216,3249551359,NL
3249551360,3249552639,GB
-3249552640,3249565695,NL
+3249552640,3249553407,NL
+3249561600,3249565695,NL
3249569792,3249574143,NL
3249574144,3249574399,RU
3249574400,3249574655,GB
3249574656,3249574911,UA
-3249574912,3249583103,NL
-3249583616,3249590527,NL
+3249574912,3249576191,NL
+3249577728,3249583103,NL
+3249584128,3249590527,NL
3249590528,3249590783,FR
-3249590784,3249591295,NL
-3249591808,3249600255,NL
+3249591808,3249595391,NL
+3249595904,3249600255,NL
3249600256,3249600511,AT
3249600512,3249601535,UA
3249601536,3249601791,RU
@@ -64056,9 +71143,11 @@
3249677056,3249677311,SE
3249677312,3249678847,IE
3249679104,3249679359,CH
-3249679360,3249683455,IE
+3249679360,3249682943,IE
3249683456,3249684479,SE
-3249684480,3249698047,IE
+3249684480,3249696767,IE
+3249697280,3249697535,IE
+3249697792,3249698047,IE
3249698048,3249698303,PL
3249698304,3249698559,RU
3249698560,3249698815,HU
@@ -64069,8 +71158,8 @@
3249702144,3249702399,FI
3249702400,3249702655,FR
3249702656,3249702911,RU
-3249702912,3249703679,FR
-3249703680,3249703935,GB
+3249702912,3249703167,FR
+3249703424,3249703679,FR
3249703936,3249704191,FR
3249704192,3249704447,RO
3249704704,3249704959,PL
@@ -64090,7 +71179,6 @@
3249710592,3249710847,BG
3249710848,3249711103,PL
3249711104,3249711359,HU
-3249711360,3249711615,DE
3249711872,3249712127,AT
3249712384,3249712639,GB
3249712896,3249713151,DK
@@ -64113,7 +71201,6 @@
3249723392,3249723647,IT
3249723648,3249723903,GB
3249724160,3249724415,LU
-3249724416,3249724671,IL
3249724672,3249724927,RU
3249724928,3249725183,BG
3249725184,3249725439,GB
@@ -64223,7 +71310,9 @@
3250010368,3250010879,CH
3250010880,3250012159,SE
3250012160,3250013183,DE
-3250013184,3250020863,SE
+3250013184,3250015231,SE
+3250015232,3250015743,FI
+3250015744,3250020863,SE
3250020864,3250021375,IT
3250021376,3250022399,FR
3250022400,3250023423,SE
@@ -64239,7 +71328,9 @@
3250035456,3250035711,US
3250035712,3250038271,SE
3250038272,3250039295,ES
-3250039296,3250042623,SE
+3250039296,3250039807,SE
+3250039808,3250040319,GB
+3250040320,3250042623,SE
3250042624,3250043135,FR
3250043136,3250061311,SE
3250061312,3250192383,FI
@@ -64254,7 +71345,7 @@
3250194688,3250194943,UA
3250194944,3250195199,RO
3250195456,3250195711,DE
-3250195712,3250196223,GB
+3250195712,3250195967,GB
3250196224,3250196479,UA
3250196480,3250200575,AT
3250200576,3250200831,HU
@@ -64312,8 +71403,7 @@
3250357904,3250357919,FR
3250357920,3250357927,PL
3250357928,3250357959,CY
-3250357960,3250357967,GB
-3250357976,3250358015,GB
+3250357984,3250357999,GB
3250358016,3250358527,LB
3250358528,3250358783,HU
3250359296,3250359807,HU
@@ -64390,7 +71480,6 @@
3250588928,3250589183,GB
3250589184,3250589439,DE
3250589504,3250589567,HR
-3250589632,3250589695,NO
3250589696,3250593791,CH
3250593792,3250594815,GB
3250594816,3250595327,UA
@@ -64415,7 +71504,6 @@
3250667520,3250675711,PL
3250675712,3250683903,GB
3250683904,3250692095,CH
-3250692096,3250692351,NO
3250692352,3250692607,NL
3250693376,3250693631,UA
3250693632,3250694143,DE
@@ -64457,7 +71545,7 @@
3250751488,3250751999,DE
3250752000,3250752511,CH
3250752512,3250753023,BG
-3250753024,3250754047,DE
+3250753536,3250754047,DE
3250754048,3250754303,AT
3250754560,3250755071,DE
3250755584,3250755839,FR
@@ -64477,11 +71565,10 @@
3251111168,3251111423,CH
3251111424,3251111679,AT
3251111680,3251111935,ES
-3251111936,3251112191,BG
3251112192,3251112447,SK
3251112448,3251112703,RU
3251112704,3251112959,SE
-3251112960,3251113983,BG
+3251113472,3251113983,BG
3251114496,3251114751,RU
3251114752,3251115007,RO
3251115008,3251115263,PL
@@ -64510,7 +71597,6 @@
3251126784,3251127295,PL
3251127296,3251127807,UA
3251127808,3251128319,NL
-3251128832,3251129343,SE
3251129344,3251129855,UA
3251129856,3251130367,CH
3251130368,3251130879,GB
@@ -64567,7 +71653,6 @@
3251152128,3251152639,RO
3251152640,3251152895,UA
3251152896,3251153151,RU
-3251153152,3251153407,UA
3251153408,3251153663,TR
3251153664,3251153919,FR
3251153920,3251154175,DE
@@ -64578,7 +71663,7 @@
3251155456,3251155711,NL
3251155712,3251155967,UA
3251155968,3251156223,TR
-3251156224,3251156735,FR
+3251156480,3251156735,FR
3251156736,3251156991,UA
3251156992,3251157247,FR
3251157248,3251157503,BE
@@ -64589,7 +71674,6 @@
3251158784,3251159295,GB
3251159296,3251159551,DE
3251159808,3251160063,DE
-3251160064,3251160319,JO
3251160320,3251160575,PL
3251160576,3251160831,NL
3251160832,3251161087,RU
@@ -64630,7 +71714,6 @@
3251171840,3251172095,RO
3251172096,3251172351,ES
3251172608,3251172863,GB
-3251172864,3251173119,UA
3251173120,3251173375,SA
3251173376,3251173631,UA
3251173632,3251173887,DE
@@ -64652,7 +71735,6 @@
3251183872,3251184127,CH
3251184128,3251184383,PL
3251184640,3251184895,PL
-3251184896,3251185151,DE
3251185408,3251185663,DK
3251185664,3251185919,IT
3251185920,3251186175,AT
@@ -64660,7 +71742,6 @@
3251186432,3251186687,SE
3251186688,3251186943,RO
3251186944,3251187199,SI
-3251187200,3251187455,GR
3251187456,3251187711,GB
3251187712,3251188735,NL
3251188736,3251189759,DE
@@ -64711,13 +71792,11 @@
3251213312,3251213375,CY
3251213376,3251213439,DE
3251213504,3251213567,NL
-3251213568,3251213631,FR
3251213632,3251213695,PL
3251213760,3251213823,CY
3251213824,3251213887,GB
3251213888,3251214015,CY
3251214080,3251214143,CY
-3251214144,3251214207,AF
3251214272,3251214335,DE
3251214336,3251214463,RU
3251214464,3251214591,UA
@@ -64744,11 +71823,9 @@
3251220224,3251220479,UA
3251220480,3251222527,DE
3251222528,3251224575,GB
-3251225088,3251225599,FR
3251225600,3251226111,GB
3251226112,3251226623,UA
3251226624,3251227135,GB
-3251227136,3251227647,DE
3251227648,3251228159,GB
3251228160,3251228671,UA
3251229696,3251230719,SI
@@ -64759,7 +71836,6 @@
3251234816,3251235839,RO
3251235840,3251236863,DE
3251236864,3251237887,BG
-3251238912,3251239935,FR
3251240960,3251241215,BE
3251241216,3251243007,GB
3251245056,3251245311,DE
@@ -64775,7 +71851,7 @@
3251252736,3251256831,CH
3251256832,3251257343,GB
3251257344,3251259903,BE
-3251260672,3251261439,FR
+3251260416,3251261439,FR
3251261440,3251264255,CH
3251264256,3251265535,FR
3251265536,3251267839,NL
@@ -64805,23 +71881,25 @@
3251302400,3251306495,LI
3251306496,3251306751,AT
3251306752,3251307007,MK
-3251307008,3251307519,RS
3251307520,3251307775,MK
3251307776,3251308031,GB
3251308032,3251308543,RS
-3251310592,3251311103,SI
3251311104,3251311615,RS
3251311616,3251312127,GB
3251312384,3251312639,CH
-3251312640,3251314687,RS
+3251313152,3251313663,RS
3251314688,3251315711,FR
3251315712,3251317759,RU
3251317760,3251318783,PL
3251318784,3251319807,UA
3251320832,3251321855,PL
3251321856,3251322879,RU
-3251322880,3251331327,GB
-3251331328,3251331583,FR
+3251322880,3251331071,GB
+3251331072,3251331262,FR
+3251331263,3251331263,GB
+3251331264,3251331321,FR
+3251331322,3251331322,GB
+3251331323,3251331583,FR
3251331584,3251332095,PL
3251332096,3251333119,RU
3251333120,3251333631,CH
@@ -64850,7 +71928,6 @@
3251362304,3251362815,UA
3251362816,3251363327,NL
3251363328,3251363839,PL
-3251363840,3251364095,MK
3251364096,3251364607,NL
3251364608,3251364863,RO
3251364864,3251366911,IT
@@ -64872,8 +71949,8 @@
3252167680,3252176127,NL
3252176128,3252177919,SE
3252177920,3252178943,HR
-3252178944,3252179455,SE
-3252179456,3252189183,NL
+3252178944,3252179199,SE
+3252179200,3252189183,NL
3252189184,3252190719,SE
3252190720,3252190975,NO
3252190976,3252191231,SE
@@ -64919,9 +71996,9 @@
3252318976,3252319231,PL
3252319232,3252319743,AT
3252319744,3252319999,RU
-3252320000,3252320255,GR
3252320256,3252320511,CZ
-3252320768,3252321791,GR
+3252320768,3252321023,GR
+3252321280,3252321791,GR
3252321792,3252322303,PL
3252322304,3252323327,NO
3252323328,3252324351,PL
@@ -64935,9 +72012,7 @@
3252336640,3252337663,UA
3252337664,3252338687,RU
3252338688,3252340735,BE
-3252340736,3252340991,TR
3252341248,3252341503,DE
-3252341504,3252341759,GR
3252342016,3252342079,GB
3252342080,3252342239,CY
3252342240,3252342271,CH
@@ -64948,7 +72023,6 @@
3252342608,3252342655,CY
3252342656,3252342783,IL
3252342784,3252346367,DE
-3252346368,3252346623,GB
3252346624,3252355071,GR
3252355072,3252356351,LT
3252357120,3252358911,LT
@@ -64988,21 +72062,30 @@
3252387584,3252387839,RU
3252387840,3252404223,LT
3252404224,3252405759,NO
-3252405760,3252409663,LT
+3252405760,3252406271,FR
+3252406272,3252407295,NO
+3252407296,3252409663,FR
3252409664,3252409679,CD
-3252409680,3252421631,LT
-3252421632,3252423679,NO
-3252423680,3252448511,LT
+3252409680,3252415487,FR
+3252415488,3252415743,LT
+3252415744,3252420607,FR
+3252420608,3252424703,NO
+3252424704,3252428799,FR
+3252428800,3252429823,NO
+3252429824,3252448511,FR
3252448512,3252448767,NO
-3252448768,3252449791,LT
+3252448768,3252449791,FR
3252449792,3252450047,DK
-3252450048,3252452543,LT
+3252450048,3252452543,FR
3252452544,3252452551,SS
-3252452552,3252455679,LT
+3252452552,3252455679,FR
3252455680,3252455807,BI
-3252455808,3252469759,LT
+3252455808,3252461567,FR
+3252461568,3252469759,NO
3252469760,3252473855,NL
-3252473856,3252486143,LT
+3252473856,3252475903,NO
+3252475904,3252477951,FR
+3252477952,3252486143,NO
3252486144,3252490239,BE
3252490240,3252496127,SE
3252496128,3252496383,AU
@@ -65032,7 +72115,8 @@
3252527104,3252535295,BE
3252540416,3252541951,NL
3252541952,3252542207,CI
-3252542208,3252551679,BE
+3252542208,3252542719,BE
+3252543488,3252551679,BE
3252551680,3252563967,CH
3252563968,3252564479,RU
3252564480,3252564735,GB
@@ -65120,7 +72204,6 @@
3252913152,3252913407,ES
3252913408,3252913663,FR
3252913664,3252913919,RU
-3252913920,3252914175,NO
3252914176,3252916223,FR
3252916224,3252920319,DE
3252920320,3252928511,LB
@@ -65140,7 +72223,6 @@
3252939264,3252939775,DE
3252940288,3252940799,PT
3252940800,3252941311,RU
-3252941312,3252941823,RO
3252941824,3252942847,GB
3252942848,3252943359,FR
3252943360,3252943871,UA
@@ -65149,7 +72231,7 @@
3252944896,3252945151,AT
3252945152,3252945407,GB
3252945408,3252945663,UA
-3252945664,3252980735,AT
+3252945664,3252976639,AT
3252980992,3252981247,GB
3252981248,3252981503,RU
3252981504,3252981759,SE
@@ -65165,11 +72247,12 @@
3252984832,3252985087,FR
3252985088,3252985343,SE
3252985344,3252985855,RU
-3252985856,3252989439,AT
+3252985856,3252989183,AT
3252989440,3252989695,PL
3252989696,3253004799,AT
3253004800,3253005055,CZ
-3253005056,3253010431,AT
+3253005056,3253006335,AT
+3253006336,3253010431,DE
3253010432,3253075967,FI
3253075968,3253207039,RO
3253207040,3253270527,RU
@@ -65200,11 +72283,15 @@
3253403648,3253403903,PL
3253403904,3253409791,SE
3253409792,3253410047,GB
-3253410048,3253412351,SE
+3253410048,3253411327,SE
+3253411328,3253411583,NO
+3253411584,3253412351,SE
3253412352,3253412607,US
3253412608,3253416447,SE
3253416448,3253416703,GB
-3253416704,3253428223,SE
+3253416704,3253419519,SE
+3253419520,3253419775,GB
+3253419776,3253428223,SE
3253428224,3253428479,DE
3253428480,3253429247,SE
3253429248,3253429759,JP
@@ -65222,7 +72309,8 @@
3253436416,3253440511,SE
3253440512,3253440767,FR
3253440768,3253441023,SE
-3253441024,3253441535,AT
+3253441024,3253441279,CL
+3253441280,3253441535,NL
3253441536,3253443839,SE
3253443840,3253444351,NO
3253444352,3253453311,SE
@@ -65291,7 +72379,6 @@
3253658624,3253659647,DE
3253659648,3253660671,GB
3253661696,3253662719,NL
-3253662720,3253663743,RO
3253663744,3253664767,NL
3253664768,3253665791,DE
3253665792,3253666815,CZ
@@ -65313,7 +72400,6 @@
3253683200,3253685247,UA
3253685248,3253686271,FR
3253686272,3253687295,PL
-3253687296,3253688319,RU
3253688320,3253690367,NL
3253690368,3253691391,DK
3253691392,3253692415,PL
@@ -65385,7 +72471,11 @@
3253737856,3253738559,GB
3253738560,3253738567,CZ
3253738568,3253738575,BE
-3253738576,3253741679,GB
+3253738576,3253739263,GB
+3253739264,3253739519,FR
+3253739520,3253741055,GB
+3253741056,3253741311,BE
+3253741312,3253741679,GB
3253741680,3253741695,RU
3253741696,3253745151,GB
3253745152,3253745279,NO
@@ -65415,7 +72505,9 @@
3253765280,3253765295,NL
3253765296,3253765311,BE
3253765312,3253765375,TR
-3253765376,3253796863,GB
+3253765376,3253767711,GB
+3253767712,3253767743,DE
+3253767744,3253796863,GB
3253796864,3253862399,SE
3253862400,3253862655,GB
3253862656,3253882879,FR
@@ -65423,14 +72515,12 @@
3253886976,3253887231,GB
3253887232,3253887487,NL
3253887488,3253887743,ES
-3253887744,3253887999,GB
3253888000,3253888255,PL
3253888256,3253888511,BE
3253888512,3253888767,GB
3253888768,3253889023,SE
3253889024,3253889279,RO
3253889280,3253889535,CH
-3253889536,3253889791,DE
3253889792,3253890047,DK
3253890048,3253890303,NL
3253890560,3253890815,GB
@@ -65508,23 +72598,30 @@
3253967872,3253968895,UA
3253968896,3253969151,DE
3253969408,3253969919,AT
-3253969920,3253970431,NL
3253970432,3253970687,RU
3253970688,3253970943,UA
3253970944,3253971967,RS
3253971968,3253972991,RU
3253972992,3253974527,GB
-3253974784,3253974847,NO
-3253974848,3253974911,SE
-3253974976,3253975039,SE
+3253974784,3253975039,SE
3253975040,3253977087,DE
3253977088,3253985279,TR
3253985280,3253993471,GB
-3253993472,3254124543,BE
+3253993472,3254001919,BE
+3254001920,3254002175,NL
+3254002176,3254079743,BE
+3254079744,3254079999,HU
+3254080000,3254124543,BE
3254124544,3254255615,CH
-3254255616,3254263807,FR
-3254263808,3254264063,GF
-3254264064,3254488431,FR
+3254255616,3254256127,FR
+3254256128,3254256383,GP
+3254256384,3254260991,FR
+3254260992,3254262015,YT
+3254262016,3254266367,FR
+3254266368,3254266623,RE
+3254266624,3254277119,FR
+3254277120,3254278143,YT
+3254278144,3254488431,FR
3254488432,3254488447,MG
3254488448,3254489407,FR
3254489408,3254489439,MR
@@ -65556,27 +72653,23 @@
3254508800,3254508831,MQ
3254508832,3254521855,FR
3254521856,3254522111,GB
-3254522112,3254607871,FR
-3254607872,3254610175,RE
-3254610176,3254610431,FR
-3254610432,3254610687,RE
-3254610688,3254611455,FR
-3254611456,3254611456,YT
-3254611457,3254611711,FR
-3254611712,3254611712,YT
-3254611713,3254611967,FR
-3254611968,3254612991,RE
-3254612992,3254613247,FR
-3254613248,3254614015,RE
-3254614016,3254614527,FR
-3254614528,3254615039,RE
-3254615040,3254615551,FR
-3254615552,3254615552,YT
-3254615553,3254615807,FR
-3254615808,3254615808,YT
-3254615809,3254648831,FR
-3254648832,3254649087,GB
-3254649088,3254649855,AL
+3254522112,3254608895,FR
+3254608896,3254609151,RE
+3254609152,3254609407,FR
+3254609408,3254609663,RE
+3254609664,3254609919,FR
+3254609920,3254610431,RE
+3254610432,3254610687,FR
+3254610688,3254610943,RE
+3254610944,3254611199,FR
+3254611200,3254611455,RE
+3254611456,3254611967,YT
+3254611968,3254612991,FR
+3254612992,3254613247,RE
+3254613248,3254615551,FR
+3254615552,3254616063,YT
+3254616064,3254648831,FR
+3254648832,3254649855,AL
3254649856,3254650879,SE
3254653440,3254654847,DE
3254654848,3254654975,DK
@@ -65584,7 +72677,8 @@
3254656256,3254656511,BG
3254656512,3254656767,DE
3254656768,3254657023,GB
-3254657024,3254665215,RO
+3254657024,3254661119,ES
+3254661120,3254665215,RO
3254681600,3254697983,DE
3254697984,3254698495,SE
3254698496,3254699007,GB
@@ -65698,7 +72792,6 @@
3254822144,3254822399,DE
3254822400,3254822655,FR
3254822656,3254822911,PL
-3254822912,3254823167,CH
3254823168,3254823423,NO
3254823424,3254823679,NL
3254823680,3254823935,PL
@@ -65729,7 +72822,6 @@
3254832128,3254832383,RO
3254832384,3254832639,BE
3254832640,3254832895,UA
-3254832896,3254833151,LV
3254833152,3254833407,DE
3254833408,3254833663,RU
3254833664,3254833919,GB
@@ -65759,7 +72851,6 @@
3254841344,3254841599,PL
3254841600,3254841855,IE
3254841856,3254842111,LV
-3254842624,3254842879,RU
3254842880,3254843135,SE
3254843136,3254843391,DE
3254843648,3254843903,FR
@@ -65831,7 +72922,6 @@
3254901760,3254902271,UA
3254902272,3254904831,SK
3254904832,3254907903,RU
-3254907904,3254908159,SK
3254908160,3254908415,CH
3254908416,3254908671,PL
3254908672,3254908927,MT
@@ -65841,34 +72931,30 @@
3254910976,3255044095,FR
3255044608,3255056383,FR
3255058432,3255067647,FR
-3255068672,3255114751,FR
+3255068672,3255081727,FR
+3255081984,3255114751,FR
3255115264,3255117823,FR
3255118336,3255120127,FR
3255120384,3255120639,FR
3255120640,3255120895,DE
3255120896,3255123711,FR
3255123712,3255123967,DE
-3255123968,3255127551,FR
+3255123968,3255125503,FR
+3255126016,3255127551,FR
3255127808,3255128575,FR
3255129856,3255130111,HR
-3255130112,3255146495,FR
+3255130112,3255134207,FR
+3255135232,3255146495,FR
3255148544,3255153151,FR
-3255153664,3255166975,FR
-3255167488,3255172351,FR
+3255153664,3255164927,FR
+3255166720,3255166975,FR
+3255167488,3255171071,FR
3255172352,3255172607,DE
3255172608,3255173119,FR
3255173120,3255173631,SH
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
+3255173840,3255175167,GB
3255175200,3255175231,GB
3255175248,3255175263,GB
3255175280,3255175295,GB
@@ -65936,7 +73022,7 @@
3255304192,3255304447,DE
3255304448,3255305215,LV
3255305216,3255305471,BG
-3255305472,3255307775,LV
+3255305472,3255307263,LV
3255307776,3255308031,PL
3255308032,3255308287,CH
3255308288,3255311359,LV
@@ -66076,7 +73162,7 @@
3255562240,3255563263,CH
3255563776,3255564031,CH
3255564032,3255564287,RU
-3255564288,3255565311,CH
+3255564288,3255564799,CH
3255565312,3255565955,DE
3255565956,3255565956,CH
3255565957,3255566079,DE
@@ -66104,7 +73190,11 @@
3255743232,3255743487,IT
3255743488,3255743743,DE
3255743744,3255743999,US
-3255744000,3255762943,SE
+3255744000,3255745535,SE
+3255745536,3255745791,DK
+3255745792,3255752959,SE
+3255752960,3255753215,LI
+3255753216,3255762943,SE
3255762944,3255771135,DE
3255779328,3255791615,DE
3255791616,3255792639,UA
@@ -66121,8 +73211,11 @@
3255817472,3255817727,ES
3255817728,3255820287,DE
3255821312,3255822335,CH
-3255822336,3255828479,DE
-3255828480,3256025087,SE
+3255822336,3255826943,DE
+3255827456,3255828479,DE
+3255828480,3255939623,SE
+3255939624,3255939624,GB
+3255939625,3256025087,SE
3256025088,3256057855,NO
3256057856,3256082431,DK
3256082432,3256090623,LV
@@ -66161,7 +73254,6 @@
3256415232,3256415743,PL
3256415744,3256416255,UA
3256416256,3256416767,RS
-3256417024,3256417279,GB
3256417280,3256417791,NO
3256417792,3256418303,GB
3256418304,3256483839,DE
@@ -66174,7 +73266,6 @@
3256513280,3256524287,NL
3256524288,3256524799,DE
3256524800,3256528895,NL
-3256530688,3256530943,DE
3256530944,3256549375,NL
3256549376,3256614911,TR
3256614912,3256615935,FI
@@ -66233,6 +73324,7 @@
3256692736,3256693759,GR
3256694784,3256695807,DE
3256695808,3256696831,UA
+3256698368,3256698623,NL
3256699392,3256699647,GB
3256705024,3256705279,IE
3256705536,3256705791,BE
@@ -66254,7 +73346,6 @@
3256745984,3256778751,ES
3256778752,3256786943,CY
3256786944,3256787199,NL
-3256787200,3256787455,RO
3256787456,3256787711,DE
3256787712,3256787967,UA
3256787968,3256788223,PL
@@ -66298,7 +73389,9 @@
3256827136,3256827391,IS
3256827392,3256827647,GB
3256827648,3256827903,PL
-3256827904,3256864511,DE
+3256827904,3256844287,DE
+3256860672,3256863743,DE
+3256864256,3256864511,DE
3256864512,3256864767,CH
3256864768,3256870911,DE
3256870912,3256871167,RU
@@ -66316,7 +73409,8 @@
3256899584,3256915455,GB
3256915456,3256915711,RS
3256915712,3256915967,SE
-3256915968,3256945663,GB
+3256915968,3256944639,GB
+3256944896,3256945151,GB
3256945664,3256945919,SI
3256945920,3256946175,GB
3256946176,3256946431,RO
@@ -66352,8 +73446,7 @@
3256973312,3256973823,DE
3256973824,3256975359,IR
3256975360,3256988671,GB
-3256988672,3256988927,RU
-3256988928,3256989183,UA
+3256988672,3256989183,UA
3256989440,3256989695,GB
3256989696,3256989951,HU
3256989952,3256990207,PL
@@ -66368,12 +73461,14 @@
3257024512,3257032703,AU
3257032704,3257040895,GB
3257042944,3257051135,GB
-3257052160,3257057279,GB
+3257052160,3257052927,GB
+3257053184,3257057279,GB
3257058816,3257059071,PL
3257059072,3257092607,GB
3257092608,3257092863,RO
-3257092864,3257121535,GB
-3257121792,3257139199,GB
+3257092864,3257095167,GB
+3257097472,3257097983,GB
+3257098240,3257139199,GB
3257139200,3257139455,DK
3257139456,3257143295,GB
3257143296,3257143807,RU
@@ -66396,7 +73491,7 @@
3257181440,3257181695,PL
3257181696,3257181951,FR
3257182208,3257182463,PL
-3257182464,3257186303,GB
+3257182720,3257186303,GB
3257188352,3257196543,GB
3257196544,3257200639,LU
3257200640,3257204735,GB
@@ -66414,7 +73509,7 @@
3257303040,3257311231,PT
3257311232,3257335807,CH
3257335808,3257355775,DE
-3257356288,3257357311,DE
+3257356288,3257356799,DE
3257357312,3257357567,PT
3257357568,3257357823,SI
3257357824,3257371903,DE
@@ -66423,16 +73518,19 @@
3257372672,3257382911,DE
3257382912,3257383167,NL
3257383168,3257383679,DE
-3257383936,3257388799,DE
+3257383936,3257387007,DE
+3257388544,3257388799,DE
3257388800,3257389055,FR
3257389056,3257390079,DE
-3257390592,3257401343,DE
+3257390592,3257395199,DE
+3257396224,3257401343,DE
3257401344,3257453567,CH
3257453568,3257454591,RO
3257454592,3257455103,IT
3257455104,3257455359,RO
3257455360,3257455615,SI
-3257455616,3257466879,CH
+3257455616,3257461759,CH
+3257462016,3257466879,CH
3257466880,3257467135,DE
3257467392,3257467903,SE
3257467904,3257468927,IT
@@ -66442,8 +73540,7 @@
3257470976,3257471999,FI
3257472000,3257472511,SG
3257472512,3257475071,FI
-3257476096,3257477119,DE
-3257480192,3257480447,GB
+3257476864,3257477119,DE
3257481216,3257481471,GB
3257481472,3257481727,DE
3257481728,3257481983,FI
@@ -66468,9 +73565,7 @@
3257546688,3257546719,DE
3257546720,3257546751,DK
3257546752,3257548799,IE
-3257548800,3257555199,GB
-3257555200,3257555455,CH
-3257555456,3257556991,GB
+3257548800,3257556991,GB
3257557504,3257558015,LU
3257558016,3257559039,RO
3257559552,3257560063,UA
@@ -66505,23 +73600,42 @@
3257742336,3257743359,DE
3257743360,3257748479,NL
3257748480,3257749503,DE
-3257749504,3257753087,NL
-3257753088,3257753343,DE
-3257753344,3257759631,NL
-3257759632,3257759639,DE
-3257759640,3257765887,NL
+3257749504,3257765887,NL
3257765888,3257767935,DE
3257767936,3257782271,NL
3257782272,3257784319,DE
3257784320,3257794559,NL
3257794560,3257835519,GB
-3257835520,3257843711,IE
-3257843712,3257844735,GB
+3257835520,3257836287,IE
+3257836288,3257836543,GB
+3257836544,3257836799,IE
+3257836800,3257837055,GB
+3257837056,3257837311,IE
+3257837312,3257837567,GB
+3257837568,3257837823,IE
+3257837824,3257838335,GB
+3257838336,3257838591,IE
+3257838592,3257839103,GB
+3257839104,3257839359,IE
+3257839360,3257839615,GB
+3257839616,3257839871,IE
+3257839872,3257840127,GB
+3257840128,3257840383,IE
+3257840384,3257840639,GB
+3257840640,3257840895,IE
+3257840896,3257841151,GB
+3257841152,3257841407,IE
+3257841408,3257841663,GB
+3257841664,3257841919,IE
+3257841920,3257842943,GB
+3257842944,3257843199,IE
+3257843200,3257844735,GB
3257844736,3257860095,IE
3257860096,3257925631,SE
3257925632,3257925887,AT
3257925888,3257926143,SE
-3257926144,3257977855,AT
+3257926144,3257926399,AT
+3257926656,3257977855,AT
3257977856,3257978111,GB
3257978112,3257978367,SE
3257978368,3257978623,BG
@@ -66529,7 +73643,6 @@
3257978880,3257979135,FR
3257979136,3257979391,UA
3257979392,3257979647,GB
-3257979648,3257979903,DE
3257979904,3257980159,UA
3257980160,3257980415,SE
3257980416,3257980671,NL
@@ -66538,15 +73651,16 @@
3257981184,3257981439,GB
3257981440,3257981695,RU
3257981696,3257981951,PL
-3257981952,3257987327,AT
+3257986048,3257987327,AT
3257987328,3257987583,CZ
-3257987584,3257988095,AT
+3257987840,3257988095,AT
3257989120,3257991167,AT
-3257991168,3257995519,DE
+3257991168,3257995263,DE
3257996032,3258003967,DE
3258003968,3258004479,RU
-3258004480,3258018815,DE
-3258019328,3258021887,DE
+3258004992,3258018815,DE
+3258019328,3258019583,DE
+3258019840,3258021887,DE
3258021888,3258022911,RU
3258022912,3258023167,PL
3258023168,3258023423,DE
@@ -66555,12 +73669,12 @@
3258023936,3258056703,DE
3258057216,3258057471,CZ
3258058240,3258058495,RU
-3258058496,3258059007,RO
+3258058496,3258058751,RO
3258059008,3258059263,UA
3258059264,3258059519,RU
3258059520,3258059775,RO
3258062848,3258063103,RU
-3258063104,3258063871,CZ
+3258063360,3258063871,CZ
3258063872,3258064127,AT
3258064128,3258064383,FR
3258064384,3258065151,GB
@@ -66583,7 +73697,6 @@
3258070528,3258071295,GB
3258071296,3258071551,DK
3258071552,3258071807,DE
-3258071808,3258072063,GB
3258072064,3258072319,FR
3258072320,3258072575,PL
3258072576,3258072831,BE
@@ -66622,7 +73735,6 @@
3258084352,3258084607,GB
3258084608,3258084863,AT
3258084864,3258085119,PL
-3258085120,3258085375,LT
3258085376,3258085631,NL
3258085632,3258085887,DE
3258085888,3258086143,UA
@@ -66672,14 +73784,14 @@
3258103040,3258103295,SE
3258103296,3258103551,DE
3258103552,3258103807,AE
-3258104064,3258104319,GB
3258104320,3258104575,PL
3258104576,3258104831,DE
3258105088,3258105599,CZ
3258105600,3258105855,DE
3258105856,3258109951,CZ
3258109952,3258110207,DK
-3258110208,3258111487,CZ
+3258110208,3258110975,CZ
+3258111232,3258111487,CZ
3258111488,3258111743,PL
3258111744,3258118399,CZ
3258118400,3258118655,UA
@@ -66734,11 +73846,15 @@
3258368000,3258384383,KW
3258384384,3258385407,DE
3258386432,3258411007,DE
-3258411520,3258427647,DE
+3258411520,3258423295,DE
+3258424320,3258424575,DE
+3258424832,3258426367,DE
+3258427392,3258427647,DE
3258427648,3258427903,RO
3258427904,3258428159,DE
3258428416,3258449919,DE
-3258449920,3258486783,CH
+3258449920,3258468351,CH
+3258474496,3258486783,CH
3258486784,3258487807,LI
3258487808,3258503935,CH
3258503936,3258504191,PL
@@ -66750,11 +73866,12 @@
3258507008,3258515455,CH
3258515456,3258580991,FR
3258580992,3258646527,RU
-3258646528,3258691583,DE
+3258646528,3258660351,DE
+3258660864,3258681343,DE
+3258683136,3258691583,DE
3258691840,3258692351,AT
3258692352,3258692607,DE
3258692608,3258692863,FR
-3258692864,3258693119,DE
3258693120,3258693375,SI
3258693376,3258693631,DE
3258693632,3258693887,RU
@@ -66780,10 +73897,11 @@
3258732544,3258732799,SE
3258732800,3258733055,CH
3258733056,3258733311,RO
-3258733312,3258734591,GB
+3258733312,3258734079,GB
+3258734336,3258734591,GB
3258735104,3258735359,GB
3258736640,3258745855,GB
-3258746880,3258762751,GB
+3258746880,3258762239,GB
3258763264,3258764287,GB
3258764288,3258764543,DE
3258764800,3258765055,BE
@@ -66816,17 +73934,21 @@
3258796032,3258802175,GB
3258802176,3258806271,LU
3258806272,3258813439,GB
-3258814464,3258818047,GB
+3258814464,3258817535,GB
+3258817792,3258818047,GB
3258818048,3258818303,SE
3258818560,3258843135,GB
3258843136,3258843391,RU
-3258843648,3258847231,GB
+3258844672,3258847231,GB
3258848256,3258848767,GB
3258848768,3258849023,RO
3258849024,3258849279,DE
3258849280,3258859519,GB
3258859520,3258859775,BY
-3258859776,3258900479,GB
+3258859776,3258860031,GB
+3258860288,3258882047,GB
+3258883072,3258883327,GB
+3258884096,3258900479,GB
3258901504,3258902783,GB
3258903040,3258903295,FR
3258903296,3258903551,GB
@@ -66850,16 +73972,15 @@
3259226112,3259227391,RU
3259227392,3259227647,KZ
3259227648,3259236351,RU
-3259236352,3259236863,SE
-3259236864,3259237119,CH
-3259237120,3259237887,SE
+3259236352,3259237887,SE
3259237888,3259238143,FR
3259238144,3259243007,SE
3259243008,3259243519,AT
3259243520,3259244543,US
3259244544,3259246591,SE
3259246592,3259247615,IT
-3259247616,3259248127,SE
+3259247616,3259247871,LI
+3259247872,3259248127,SE
3259248128,3259248383,GB
3259248384,3259248895,SE
3259248896,3259249151,GB
@@ -66881,7 +74002,9 @@
3259285760,3259286015,GB
3259286016,3259290879,SE
3259290880,3259291135,US
-3259291136,3259297535,SE
+3259291136,3259293951,SE
+3259293952,3259294207,LI
+3259294208,3259297535,SE
3259297536,3259297791,GB
3259297792,3259301887,SE
3259301888,3259302143,DE
@@ -66912,7 +74035,9 @@
3259438080,3259438335,ES
3259438336,3259457279,SE
3259457280,3259457535,IT
-3259457536,3259470847,SE
+3259457536,3259466239,SE
+3259466240,3259466495,LI
+3259466496,3259470847,SE
3259470848,3259471871,US
3259471872,3259479807,SE
3259479808,3259480063,DK
@@ -66920,11 +74045,15 @@
3259480832,3259481087,ES
3259481088,3259490303,SE
3259490304,3259490815,IN
-3259490816,3259498495,SE
+3259490816,3259491071,SE
+3259491072,3259491327,LI
+3259491328,3259498495,SE
3259498496,3259541503,GB
3259541504,3259543551,NL
3259543552,3259760639,GB
-3259760640,3259814399,DE
+3259761152,3259767807,DE
+3259768064,3259787263,DE
+3259787520,3259814399,DE
3259814400,3259814655,AT
3259814656,3259816447,DE
3259816704,3259821055,DE
@@ -66933,8 +74062,7 @@
3259823104,3259823615,RO
3259823616,3259823871,NO
3259823872,3259824127,IE
-3259824128,3259825919,DE
-3259826176,3259891711,DE
+3259824128,3259891711,DE
3259891712,3259957247,BE
3259957248,3259958271,DE
3259958272,3259959295,RU
@@ -66977,7 +74105,6 @@
3260549376,3260549631,CH
3260549632,3260549887,DE
3260550144,3260550399,PL
-3260550400,3260550655,DE
3260550656,3260551167,RU
3260551168,3260553983,DE
3260553984,3260554239,GB
@@ -67030,8 +74157,7 @@
3260678144,3260743679,IL
3260743680,3260809215,IT
3260809216,3260874751,PL
-3260891136,3260893439,DK
-3260893440,3260894207,SE
+3260893184,3260894207,SE
3260894208,3260895231,AT
3260895232,3260898303,SE
3260898304,3260899327,ES
@@ -67041,7 +74167,7 @@
3260900608,3260901119,NL
3260901120,3260903423,DE
3260903424,3260906239,CH
-3260906240,3260906495,DE
+3260906368,3260906495,DE
3260906496,3260907519,PL
3260907520,3260915711,GB
3260915712,3260923903,UA
@@ -67072,10 +74198,11 @@
3261534720,3261534975,US
3261534976,3261539327,SE
3261539328,3261540351,SG
-3261540352,3261595647,SE
+3261540352,3261554175,SE
+3261554176,3261554431,DK
+3261554432,3261595647,SE
3261595648,3261599743,NL
-3261600768,3261627903,NL
-3261628160,3261632511,NL
+3261600768,3261632511,NL
3261633536,3261636095,NL
3261636352,3261643775,NL
3261644800,3261661183,NL
@@ -67088,9 +74215,7 @@
3261677568,3261685759,GB
3261685760,3261687807,DE
3261687808,3261689855,RO
-3261689856,3261690623,GB
-3261690624,3261690879,AU
-3261690880,3261691903,GB
+3261689856,3261691903,GB
3261691904,3261692997,NL
3261692998,3261692998,US
3261692999,3261694463,NL
@@ -67143,14 +74268,17 @@
3261797632,3261797887,RU
3261797888,3261798143,TR
3261798144,3261798399,RU
-3261798400,3261812735,AT
+3261798400,3261805567,AT
+3261805568,3261806591,DE
+3261806592,3261810687,AT
3261812736,3261812991,RU
-3261812992,3261816575,AT
+3261812992,3261815807,AT
+3261816064,3261816575,AT
3261816576,3261816831,DE
3261816832,3261820927,AT
3261820928,3261821183,RO
3261821184,3261821439,AT
-3261821440,3261821695,NL
+3261821440,3261821695,GB
3261821696,3261821951,UA
3261821952,3261822207,RU
3261822208,3261822463,UA
@@ -67163,21 +74291,19 @@
3261824000,3261824255,RU
3261824512,3261824767,FR
3261824768,3261825023,PT
-3261825024,3261837311,AT
-3261839360,3261855743,AT
+3261825280,3261855743,AT
3261857792,3261923327,CZ
3261923328,3261988863,NL
3261988864,3261989119,SE
-3261989120,3261989631,FI
-3261990144,3261990399,FI
+3261989120,3261989375,FI
3261990400,3261990655,UA
-3261990656,3261990911,FI
-3261992448,3261993215,FI
+3261992448,3261992703,FI
3261993472,3261993727,RU
-3261993728,3261995263,FI
+3261993728,3261993983,FI
+3261994752,3261995263,FI
3261995264,3261995519,DE
3261995520,3261995775,PL
-3261995776,3262005247,FI
+3261996800,3262005247,FI
3262005248,3262005759,PL
3262005760,3262006015,RU
3262006016,3262006271,NL
@@ -67191,20 +74317,17 @@
3262008576,3262008831,PL
3262008832,3262009087,AT
3262009088,3262009343,UA
-3262009344,3262010367,FI
-3262011392,3262013439,FI
+3262010112,3262010367,FI
3262013440,3262017535,SE
-3262017536,3262018559,FI
+3262018304,3262018559,FI
3262018560,3262018815,PL
-3262018816,3262019071,FI
-3262020096,3262021119,FI
3262021120,3262021375,UA
3262021376,3262021631,PL
3262021632,3262021887,CH
3262021888,3262022143,UA
3262022912,3262023167,DE
3262023680,3262023935,DK
-3262023936,3262025727,FI
+3262025216,3262025471,FI
3262027264,3262027519,TR
3262027520,3262027775,BE
3262027776,3262028287,RU
@@ -67295,10 +74418,11 @@
3262185472,3262191615,DE
3262192128,3262192383,DE
3262192640,3262196479,DE
-3262196736,3262203903,DE
-3262204928,3262224383,DE
+3262196736,3262200319,DE
+3262200576,3262218239,DE
+3262219264,3262224383,DE
3262224896,3262225151,AT
-3262225152,3262227711,DE
+3262225408,3262227455,DE
3262227712,3262227967,RO
3262227968,3262229247,DE
3262229248,3262229503,NL
@@ -67376,7 +74500,6 @@
3262461312,3262461439,NO
3262461440,3262461567,DE
3262461568,3262461695,GB
-3262461696,3262461823,UA
3262461824,3262461951,RO
3262461952,3262463999,IQ
3262464000,3262472191,RU
@@ -67456,7 +74579,9 @@
3262478308,3262478311,ES
3262478312,3262478319,DE
3262478320,3262478323,GB
-3262478324,3262478389,DE
+3262478324,3262478345,DE
+3262478346,3262478346,PT
+3262478347,3262478389,DE
3262478390,3262478390,ES
3262478391,3262478404,DE
3262478405,3262478405,GB
@@ -67490,7 +74615,6 @@
3262480384,3262488575,GB
3262488576,3262496767,SE
3262496768,3262504959,FR
-3262504960,3262505471,DE
3262505472,3262505983,GB
3262505984,3262506495,PL
3262506496,3262507007,RO
@@ -67502,11 +74626,7 @@
3262511104,3262511615,GB
3262512128,3262512639,UA
3262512640,3262513151,DE
-3262513152,3262550271,AT
-3262550272,3262550527,DE
-3262550528,3262562815,AT
-3262562816,3262563071,HU
-3262563072,3262578687,AT
+3262513152,3262578687,AT
3262578688,3262611455,FR
3262611456,3262627839,GB
3262627840,3262636031,IT
@@ -67515,9 +74635,7 @@
3262648320,3262648575,DE
3262648576,3262654463,NL
3262654464,3262654719,DE
-3262654720,3262658967,NL
-3262658968,3262658975,DE
-3262658976,3262664703,NL
+3262654720,3262664703,NL
3262664704,3262670847,DE
3262670848,3262690815,NL
3262690816,3262691583,DE
@@ -67525,9 +74643,7 @@
3262693376,3262701567,DE
3262701568,3262715135,NL
3262715136,3262715391,DE
-3262715392,3262718463,NL
-3262718464,3262718471,DE
-3262718472,3262722815,NL
+3262715392,3262722815,NL
3262722816,3262723071,DE
3262723072,3262732799,NL
3262732800,3262733055,DE
@@ -67538,7 +74654,8 @@
3262840320,3262906367,NL
3262906368,3262954495,CH
3262954496,3262955519,LI
-3262955520,3262964991,CH
+3262955520,3262958591,CH
+3262959104,3262964991,CH
3262964992,3262965247,DE
3262965248,3262971903,CH
3262971904,3263029247,IE
@@ -67557,7 +74674,6 @@
3263062016,3263070207,EE
3263070208,3263070719,FR
3263070720,3263070975,NL
-3263070976,3263071487,DE
3263072256,3263074303,LB
3263074304,3263074815,CH
3263074816,3263075327,RO
@@ -67573,7 +74689,7 @@
3263085568,3263086591,CH
3263086592,3263086847,DK
3263086848,3263087103,NL
-3263087104,3263087871,DE
+3263087360,3263087871,DE
3263087872,3263088127,SI
3263088128,3263088383,DE
3263088384,3263088639,LV
@@ -67599,12 +74715,12 @@
3263094784,3263095039,UA
3263095040,3263095295,ES
3263095296,3263095551,FR
-3263095552,3263095807,RO
3263095808,3263096063,DE
3263096064,3263096319,PL
3263096320,3263096575,TR
3263096576,3263096831,SA
3263096832,3263097087,PL
+3263097088,3263097343,FR
3263097344,3263097599,DK
3263097600,3263097855,NL
3263097856,3263098111,FR
@@ -67632,11 +74748,13 @@
3263104042,3263121420,DE
3263121421,3263121421,BE
3263121422,3263131647,DE
-3263132672,3263137791,DE
+3263133184,3263133439,DE
+3263133696,3263137791,DE
3263137792,3263138303,PL
3263138304,3263138551,DE
3263138552,3263138815,AT
-3263138816,3263168511,DE
+3263138816,3263165439,DE
+3263166464,3263168511,DE
3263168512,3263430655,GB
3263430656,3263436543,SE
3263436544,3263436799,ES
@@ -67652,9 +74770,7 @@
3263478528,3263478783,ES
3263478784,3263480831,SE
3263480832,3263481855,JP
-3263481856,3263482879,SE
-3263482880,3263483903,IT
-3263483904,3263496191,SE
+3263481856,3263496191,SE
3263496192,3263501519,GB
3263501520,3263501527,IE
3263501528,3263503103,GB
@@ -67683,7 +74799,11 @@
3263692800,3263823871,FI
3263823872,3263826943,DE
3263826944,3263827199,AT
-3263827200,3263878145,DE
+3263827200,3263833855,DE
+3263833856,3263833903,GB
+3263833904,3263833919,DE
+3263833920,3263834111,GB
+3263834112,3263878145,DE
3263878146,3263878146,US
3263878147,3263886079,DE
3263886080,3263886335,SG
@@ -67692,7 +74812,8 @@
3263979520,3263987711,DE
3263987712,3264004095,ES
3264004096,3264012287,HU
-3264012544,3264013055,GB
+3264012544,3264012799,FR
+3264012800,3264013055,GB
3264013056,3264013311,TR
3264013312,3264013567,UA
3264013824,3264014079,NL
@@ -67746,18 +74867,15 @@
3264307200,3264311295,PL
3264311808,3264312063,DE
3264312064,3264312319,CH
-3264312320,3264312575,PL
3264312576,3264312831,UA
3264312832,3264313087,DE
3264313088,3264313343,NL
3264313344,3264313599,RO
3264313600,3264313855,PT
3264313856,3264314623,DE
-3264314624,3264314879,SE
3264314880,3264315135,GB
3264315392,3264317439,IE
3264318464,3264318975,ES
-3264318976,3264319487,DE
3264319488,3264319743,FR
3264319744,3264319999,SE
3264320000,3264320255,DE
@@ -67765,7 +74883,6 @@
3264321024,3264321535,DE
3264321792,3264322047,RS
3264322048,3264322303,FR
-3264322304,3264322559,RO
3264322560,3264322815,HU
3264322816,3264323071,CH
3264323072,3264323327,RU
@@ -67808,7 +74925,8 @@
3264345088,3264346111,NL
3264346112,3264347135,SE
3264347136,3264348159,DE
-3264348672,3264372223,FR
+3264348160,3264360191,FR
+3264360448,3264372223,FR
3264372736,3264375039,FR
3264375040,3264376063,SE
3264376064,3264376319,HR
@@ -67852,26 +74970,28 @@
3264411648,3264413695,PL
3264417536,3264419327,CH
3264423424,3264428031,CH
-3264430592,3264431103,CH
+3264430592,3264430847,CH
3264431104,3264431615,LI
3264431616,3264431871,CH
3264432128,3264434687,CH
3264434944,3264438783,CH
3264439296,3264439551,CH
-3264439808,3264441343,CH
+3264439808,3264440831,CH
3264441344,3264441599,PL
-3264442112,3264444415,CH
-3264444672,3264444927,CH
+3264442368,3264444415,CH
3264444928,3264445183,DE
3264445184,3264445439,CH
3264447488,3264447743,CH
3264447744,3264447999,DE
-3264448000,3264452607,CH
+3264448000,3264448511,CH
+3264449536,3264450047,CH
+3264450304,3264452607,CH
3264454656,3264456191,CH
3264456704,3264463871,CH
3264463872,3264466943,LI
3264466944,3264474623,CH
-3264474880,3264476671,CH
+3264475136,3264475391,CH
+3264476416,3264476671,CH
3264476672,3264477183,RU
3264477184,3264477439,PL
3264477440,3264477695,RU
@@ -67912,7 +75032,7 @@
3264624640,3264624671,US
3264624672,3264626687,GB
3264626688,3264627711,EE
-3264628736,3264630783,UA
+3264628736,3264629759,UA
3264630784,3264631807,DE
3264631808,3264632831,RO
3264632832,3264633855,RU
@@ -68038,19 +75158,16 @@
3264846208,3264846335,AE
3264846336,3264846463,GB
3264846464,3264846591,NO
-3264846592,3264846719,US
3264846720,3264846847,RU
3264846848,3264846911,DK
3264846912,3264847103,CY
3264847168,3264847199,IE
-3264847200,3264847231,NO
3264847232,3264847263,CH
3264847264,3264847295,LI
3264847296,3264847359,CY
3264847488,3264847615,RU
3264847616,3264847679,PL
3264847680,3264847743,FI
-3264847744,3264847807,BE
3264847808,3264847871,SE
3264847872,3264849919,DE
3264849920,3264850431,GB
@@ -68078,24 +75195,29 @@
3264921600,3264929791,LU
3264929792,3264937983,SK
3264937984,3265003519,GB
-3265003520,3265018879,DE
+3265003520,3265006591,DE
+3265007616,3265018879,DE
3265018880,3265019903,HK
3265036288,3265042943,DE
-3265043456,3265045759,DE
+3265043456,3265044991,DE
+3265045504,3265045759,DE
3265045760,3265046015,TR
-3265046016,3265055231,DE
+3265046016,3265048575,DE
+3265050624,3265054719,DE
3265055232,3265055743,FR
3265055744,3265069055,DE
3265069056,3265134591,FI
3265134592,3265137983,CH
3265137984,3265138047,NL
-3265138048,3265138863,CH
+3265138048,3265138599,CH
+3265138600,3265138607,NL
+3265138608,3265138863,CH
3265138864,3265138879,SE
3265138880,3265139999,CH
3265140000,3265140015,BE
-3265140016,3265140991,CH
-3265140992,3265141247,GB
-3265141248,3265141551,CH
+3265140016,3265141135,CH
+3265141136,3265141151,GB
+3265141152,3265141551,CH
3265141552,3265141555,IE
3265141556,3265141759,CH
3265141760,3265141775,GB
@@ -68125,7 +75247,7 @@
3265371136,3265376255,DE
3265377280,3265378303,GB
3265378304,3265379327,NL
-3265380352,3265382399,GB
+3265380352,3265382911,GB
3265386496,3265386751,NL
3265387008,3265387263,NL
3265388544,3265392639,GB
@@ -68137,7 +75259,6 @@
3265593344,3265594367,RU
3265594880,3265595391,UA
3265595392,3265595903,PL
-3265595904,3265596415,RU
3265596416,3265596927,GB
3265596928,3265597439,FR
3265597440,3265599999,RU
@@ -68149,7 +75270,6 @@
3265602048,3265602303,NL
3265602560,3265602815,IT
3265602816,3265603071,IE
-3265603072,3265603327,DK
3265603328,3265603583,MD
3265603584,3265603839,DE
3265603840,3265604095,PL
@@ -68184,7 +75304,8 @@
3265824768,3265825023,US
3265825024,3265877247,GB
3265877504,3265879039,GB
-3265880064,3265887487,GB
+3265880064,3265886207,GB
+3265887232,3265887487,GB
3265887488,3265887743,PT
3265887744,3265888255,PL
3265888256,3265902335,GB
@@ -68214,7 +75335,6 @@
3265911808,3265912063,PL
3265912064,3265912319,GB
3265912320,3265912575,DE
-3265912576,3265912831,RO
3265912832,3265913087,CZ
3265913088,3265913343,SE
3265913344,3265914367,PL
@@ -68297,17 +75417,18 @@
3266420736,3266428927,GB
3266428928,3266437119,GR
3266437120,3266445311,GL
-3266445312,3266472959,NL
-3266472960,3266473215,SE
-3266473216,3266510847,NL
+3266445312,3266510847,NL
3266510848,3266543615,ES
3266543616,3266576383,IT
3266576384,3266582783,DE
3266583040,3266588927,DE
-3266589184,3266603519,DE
-3266604032,3266617327,DE
+3266589440,3266603007,DE
+3266603264,3266603519,DE
+3266604032,3266617279,DE
+3266617312,3266617327,DE
3266617328,3266617343,GB
-3266617344,3266634383,DE
+3266617344,3266621439,DE
+3266624512,3266634383,DE
3266634392,3266634399,EE
3266634400,3266634431,DE
3266634464,3266634751,DE
@@ -68318,9 +75439,7 @@
3266772992,3266781183,IT
3266781184,3266789375,PL
3266789376,3266797567,SM
-3266797568,3266797823,GB
-3266797824,3266798079,ES
-3266798080,3266805759,GB
+3266797568,3266805759,GB
3266805760,3266813951,AT
3266813952,3266822143,UA
3266822144,3266830335,FR
@@ -68406,6 +75525,7 @@
3267537920,3267538943,FR
3267549184,3267550207,DK
3267559424,3267624959,DE
+3267628400,3267628415,FR
3267630080,3267631095,GB
3267631096,3267631103,IT
3267631104,3267631615,GB
@@ -68413,11 +75533,19 @@
3267636864,3267636991,ZA
3267648320,3267648335,GB
3267650320,3267650335,AT
+3267657576,3267657583,RO
+3267657696,3267657703,RO
+3267657712,3267657727,RO
3267660608,3267660671,ES
+3267661904,3267661967,ES
+3267662896,3267662911,IE
3267665920,3267666943,GB
3267667456,3267667967,GB
3267670016,3267671039,ZA
3267674208,3267674239,GB
+3267681312,3267681327,FR
+3267681888,3267681903,FR
+3267683936,3267683967,PL
3267684352,3267684863,GB
3267690496,3267691519,FI
3267691520,3267692543,SE
@@ -68449,7 +75577,7 @@
3268223200,3268223231,GB
3268224768,3268225023,US
3268226368,3268226399,GB
-3268226496,3268226663,GB
+3268226496,3268226655,GB
3268226688,3268226815,GB
3268227328,3268227391,GB
3268227520,3268227615,GB
@@ -68471,12 +75599,13 @@
3268235520,3268235775,GB
3268235936,3268236031,GB
3268236192,3268236207,GB
-3268236544,3268236607,GB
-3268236672,3268236799,GB
+3268236544,3268236799,GB
3268238336,3268238359,GB
3268238368,3268238399,GB
3268238472,3268238543,GB
-3268238552,3268238847,GB
+3268238552,3268238591,GB
+3268238608,3268238623,GB
+3268238632,3268238847,GB
3268239584,3268240127,GB
3268240160,3268240191,GB
3268240384,3268240399,GB
@@ -68501,9 +75630,7 @@
3268249600,3268251311,GB
3268251312,3268251327,IE
3268251328,3268251647,GB
-3268254464,3268254543,GB
-3268254592,3268254607,GB
-3268254624,3268254639,GB
+3268254464,3268254719,GB
3268254896,3268254903,GB
3268255824,3268255863,GB
3268255896,3268255919,GB
@@ -68562,9 +75689,7 @@
3268345856,3268411391,GB
3268411392,3268426751,AT
3268426752,3268427775,CH
-3268427776,3268463615,AT
-3268463616,3268463871,CH
-3268463872,3268464127,AT
+3268427776,3268464127,AT
3268464128,3268464383,LI
3268464384,3268476927,AT
3268476928,3268537087,CH
@@ -69005,8 +76130,9 @@
3271933440,3271933695,SE
3271933696,3271933951,DE
3271933952,3272015871,FR
-3272015872,3272017407,RO
-3272017664,3272018943,RO
+3272015872,3272016639,RO
+3272016896,3272017919,RO
+3272018176,3272018431,RO
3272019968,3272020991,IT
3272020992,3272024063,DK
3272024064,3272032255,IE
@@ -69233,15 +76359,15 @@
3272392704,3272400895,AT
3272400912,3272400919,GB
3272402432,3272402687,GB
-3272402688,3272402815,SE
3272403968,3272404991,FR
3272404992,3272406015,DE
3272406016,3272407039,NL
3272409088,3272417279,BE
-3272417280,3272418687,FR
-3272418688,3272419327,PL
+3272417280,3272418303,FR
+3272418304,3272418559,GB
+3272418560,3272418687,FR
+3272418816,3272419327,PL
3272419328,3272420351,DE
-3272420608,3272420863,DE
3272420864,3272420991,PL
3272420992,3272421119,DK
3272421376,3272421887,RO
@@ -69275,7 +76401,6 @@
3272479744,3272480255,SE
3272480256,3272480511,FR
3272480512,3272480767,CH
-3272480768,3272481023,DE
3272481024,3272481279,SE
3272481792,3272482047,IT
3272482048,3272482303,NL
@@ -69336,7 +76461,7 @@
3272884224,3272892415,DE
3272892416,3272892927,UA
3272893440,3272893951,SE
-3272893952,3272894463,UA
+3272893952,3272894463,RU
3272894976,3272895487,RO
3272895488,3272895999,GB
3272896000,3272896511,PL
@@ -69448,7 +76573,6 @@
3273261056,3273261567,NO
3273261568,3273262079,BE
3273262080,3273262591,LU
-3273262592,3273263103,RU
3273263616,3273264127,SE
3273264128,3273264639,PL
3273264640,3273265151,AT
@@ -69503,9 +76627,8 @@
3273333056,3273333119,DE
3273334272,3273334783,DE
3273334784,3273335039,AE
-3273335040,3273335295,DE
3273335296,3273335423,GB
-3273335432,3273335439,GB
+3273335432,3273335447,GB
3273335936,3273335999,DE
3273336848,3273336863,DE
3273336864,3273336871,GB
@@ -69639,17 +76762,14 @@
3273687040,3273719807,DE
3273719808,3273720831,NL
3273720832,3273720847,IE
-3273720848,3273726719,NL
-3273726720,3273726975,GB
-3273726976,3273727087,DK
+3273720848,3273727087,NL
3273727088,3273727088,GB
3273727089,3273727095,ES
-3273727096,3273727119,DK
+3273727096,3273727119,NL
3273727120,3273727127,PT
-3273727128,3273727135,DK
+3273727128,3273727135,NL
3273727136,3273727167,IT
-3273727168,3273727231,DK
-3273727232,3273732095,NL
+3273727168,3273732095,NL
3273732096,3273736191,GB
3273736192,3273744383,FR
3273744384,3273746943,GB
@@ -69660,7 +76780,9 @@
3273762304,3273762559,NL
3273762560,3273768959,DE
3273768960,3273785343,TR
-3273785344,3273801727,RU
+3273785344,3273792511,RU
+3273792512,3273793023,UZ
+3273793024,3273801727,RU
3273801728,3273802239,DE
3273802752,3273803263,SA
3273803776,3273804287,CH
@@ -69732,7 +76854,6 @@
3274051584,3274052351,UA
3274052352,3274052607,GB
3274052608,3274052863,DE
-3274052864,3274053119,GB
3274053120,3274053375,KZ
3274053376,3274053631,RU
3274053632,3274054655,DE
@@ -69751,7 +76872,6 @@
3274163200,3274163711,UA
3274163712,3274164223,BG
3274164224,3274164735,AT
-3274165248,3274165759,GB
3274165760,3274166271,RU
3274166272,3274166783,AT
3274166784,3274167295,UA
@@ -69811,7 +76931,6 @@
3274368512,3274368767,AT
3274368768,3274369023,FR
3274370048,3274371071,GB
-3274371072,3274373375,NL
3274373376,3274373631,PL
3274373632,3274374143,FR
3274374144,3274375167,DE
@@ -69940,8 +77059,7 @@
3274471680,3274471935,GB
3274472960,3274483711,GB
3274489600,3274489855,GB
-3274490176,3274490895,GB
-3274490912,3274491199,GB
+3274490176,3274491199,GB
3274491208,3274491247,GB
3274491256,3274491295,GB
3274491304,3274491319,GB
@@ -70003,7 +77121,6 @@
3274695424,3274695679,PL
3274695680,3274695935,SI
3274695936,3274696191,DE
-3274696192,3274696447,DK
3274696448,3274696703,CH
3274696704,3274696959,IT
3274696960,3274697215,GR
@@ -70041,11 +77158,7 @@
3274814464,3274815487,GB
3274815488,3274816511,RU
3274816512,3274817535,SK
-3274817536,3274819839,RU
-3274819840,3274820095,UA
-3274820096,3274821119,RU
-3274821120,3274821375,UA
-3274821376,3274821631,RU
+3274817536,3274821631,RU
3274821632,3274823679,KZ
3274823680,3274825727,TR
3274825728,3274827775,DE
@@ -70113,16 +77226,15 @@
3275415552,3275423743,UA
3275423744,3275423751,GB
3275423808,3275423839,GB
-3275423872,3275424735,GB
-3275424752,3275425343,GB
-3275425536,3275425559,GB
-3275425568,3275425583,GB
-3275425792,3275426559,GB
+3275423872,3275424719,GB
+3275424728,3275424735,GB
+3275424752,3275425311,GB
+3275425328,3275425343,GB
+3275425536,3275426559,GB
3275426576,3275428367,GB
3275428376,3275428407,GB
3275428416,3275428447,GB
3275429888,3275430143,GB
-3275430272,3275430399,GB
3275430592,3275430631,GB
3275430656,3275430911,GB
3275431936,3275432959,GB
@@ -70143,20 +77255,30 @@
3275443840,3275443967,GB
3275444224,3275444735,GB
3275446272,3275446783,GB
-3275446800,3275446823,GB
+3275446800,3275446815,GB
3275446848,3275447039,GB
3275447056,3275447151,GB
-3275448320,3275450207,GB
+3275448320,3275449359,GB
+3275449376,3275449399,GB
+3275449408,3275449519,GB
+3275449520,3275449527,FR
+3275449528,3275449567,GB
+3275449584,3275450207,GB
3275450224,3275450879,GB
3275451232,3275451263,GB
3275451392,3275451663,GB
3275451680,3275451711,GB
3275451720,3275451727,GB
3275451744,3275451767,GB
-3275452416,3275455231,GB
+3275451776,3275451779,GB
+3275452416,3275453695,GB
+3275453824,3275453839,GB
+3275453848,3275454063,GB
+3275454080,3275454127,GB
+3275454144,3275455231,GB
3275455248,3275456407,GB
-3275456416,3275457535,GB
-3275457536,3275457791,FK
+3275456416,3275457279,GB
+3275457280,3275457791,FK
3275457792,3275458559,GB
3275458560,3275460095,IE
3275460096,3275460223,GB
@@ -70172,20 +77294,18 @@
3275468768,3275468799,IE
3275468800,3275474951,GB
3275474960,3275475039,GB
-3275475044,3275476223,GB
-3275476288,3275476479,GB
-3275476656,3275476687,GB
-3275476704,3275476735,GB
+3275475044,3275475711,GB
+3275475720,3275475791,GB
+3275475800,3275475879,GB
+3275475968,3275476735,GB
3275476992,3275477567,GB
3275477760,3275478271,GB
3275478528,3275481087,GB
+3275481344,3275481599,GB
+3275482112,3275482367,GB
3275483136,3275483647,GB
3275484160,3275484415,GB
-3275485184,3275485215,GB
-3275485224,3275485231,GB
-3275485248,3275485375,GB
-3275485408,3275485423,GB
-3275485440,3275485759,GB
+3275485184,3275485759,GB
3275488768,3275489279,CZ
3275489280,3275497471,GB
3275497472,3275505663,DE
@@ -70225,7 +77345,6 @@
3275512320,3275512447,FI
3275512448,3275512575,DK
3275512576,3275512703,BE
-3275512704,3275512831,PL
3275512832,3275512895,SE
3275512896,3275512959,AT
3275512960,3275513023,PL
@@ -70241,7 +77360,6 @@
3275530240,3275530751,DK
3275530752,3275531263,AT
3275531264,3275531775,GB
-3275531776,3275532287,IE
3275532288,3275532799,UA
3275532800,3275533311,GB
3275533824,3275534335,UA
@@ -70422,30 +77540,24 @@
3275931648,3275939839,UA
3275939840,3275948031,GB
3275948032,3276013567,SE
-3276013568,3276014239,GB
-3276014240,3276014247,FR
-3276014248,3276014799,GB
+3276013568,3276014079,GB
+3276014080,3276014335,FR
+3276014336,3276014799,GB
3276014800,3276014815,FR
3276014816,3276014951,GB
3276014952,3276014959,ES
-3276014960,3276018175,GB
-3276018176,3276018431,FR
-3276018432,3276019495,GB
-3276019496,3276019503,FR
-3276019504,3276019631,GB
-3276019632,3276019639,FR
-3276019640,3276020129,GB
+3276014960,3276020129,GB
3276020130,3276020130,FR
-3276020131,3276020735,GB
-3276020736,3276020991,FR
-3276020992,3276025159,GB
+3276020131,3276023039,GB
+3276023040,3276023295,FR
+3276023296,3276025159,GB
3276025160,3276025167,FR
3276025168,3276026367,GB
3276026368,3276026623,FR
-3276026624,3276027647,GB
-3276027648,3276027903,FR
-3276027904,3276029375,GB
-3276029376,3276029439,FR
+3276026624,3276027391,GB
+3276027392,3276027647,FR
+3276027648,3276029183,GB
+3276029184,3276029439,FR
3276029440,3276030591,GB
3276030592,3276030607,FR
3276030608,3276031479,GB
@@ -70460,11 +77572,13 @@
3276042016,3276042031,FR
3276042032,3276042079,GB
3276042080,3276042095,FR
-3276042096,3276042495,GB
-3276042496,3276042751,FR
-3276042752,3276045247,GB
+3276042096,3276042751,GB
+3276042752,3276043007,FR
+3276043008,3276045247,GB
3276045248,3276045255,FR
-3276045256,3276046335,GB
+3276045256,3276045823,GB
+3276045824,3276046079,FR
+3276046080,3276046335,GB
3276046336,3276062719,RU
3276062720,3276063231,PL
3276063232,3276063743,FR
@@ -70609,20 +77723,25 @@
3276455936,3276464127,BE
3276464128,3276472319,GR
3276473304,3276473311,AT
-3276480256,3276480511,FR
+3276474880,3276474927,IT
+3276478064,3276478095,CH
+3276478720,3276478975,FR
3276485632,3276486655,GB
+3276494336,3276494591,GB
+3276499504,3276499567,DE
3276503040,3276505087,DE
3276508680,3276508687,GB
-3276508928,3276509183,GB
3276509184,3276510207,IT
3276512256,3276513023,ZA
-3276517632,3276517887,NL
3276518368,3276518383,NL
+3276520704,3276520735,SE
3276522496,3276523519,NL
+3276524864,3276524895,PT
3276527616,3276527743,PK
+3276528128,3276528191,GB
3276528352,3276528359,GB
3276530688,3276531711,NL
-3276536688,3276536695,HU
+3276536752,3276536783,HU
3276537344,3276537599,AT
3276537856,3276668927,ES
3276668928,3276677119,MC
@@ -70713,42 +77832,33 @@
3276861184,3276861439,DE
3276861440,3276865535,DK
3276865536,3276866303,NL
-3276866304,3276866559,GB
-3276866560,3276866815,IT
-3276866816,3276870911,GB
-3276870912,3276871423,IT
-3276871424,3276873983,GB
+3276866304,3276870911,GB
+3276870912,3276871679,IT
+3276871680,3276873983,GB
3276873984,3276874239,ES
-3276874240,3276876383,GB
+3276874240,3276874959,GB
+3276874960,3276874975,NL
+3276874976,3276876383,GB
3276876384,3276876415,NL
-3276876416,3276882431,GB
-3276882432,3276882943,IT
-3276882944,3276883711,GB
-3276883712,3276883967,IT
-3276883968,3276886363,GB
+3276876416,3276883711,GB
+3276883712,3276883839,IT
+3276883840,3276886363,GB
3276886364,3276886367,DE
-3276886368,3276890111,GB
-3276890112,3276890367,US
-3276890368,3276892159,GB
+3276886368,3276892159,GB
3276892160,3276893183,IT
3276893184,3276893695,GB
3276893696,3276893951,IT
3276893952,3276898671,GB
3276898672,3276898687,CH
-3276898688,3276902141,GB
+3276898688,3276901613,GB
+3276901614,3276901614,CH
+3276901615,3276902141,GB
3276902142,3276902142,CH
3276902143,3276902655,GB
3276902656,3276902911,SE
-3276902912,3276903167,GB
-3276903168,3276903679,SE
-3276903680,3276907519,GB
-3276907520,3276907775,NL
-3276907776,3276908287,GB
-3276908288,3276908543,BE
-3276908544,3276908799,SE
-3276908800,3276909823,GB
-3276909824,3276910079,SE
-3276910080,3276911167,GB
+3276902912,3276907519,GB
+3276907520,3276907551,NL
+3276907552,3276911167,GB
3276911168,3276911199,IT
3276911200,3276911615,GB
3276911616,3276911871,IT
@@ -70770,9 +77880,7 @@
3276919488,3276919535,DE
3276919536,3276922879,GB
3276922880,3276923135,FR
-3276923136,3276923647,GB
-3276923648,3276924159,FR
-3276924160,3276925951,GB
+3276923136,3276925951,GB
3276925952,3276926207,FR
3276926208,3276931071,GB
3276931072,3276939263,KZ
@@ -70803,7 +77911,6 @@
3277178880,3277179135,ES
3277179392,3277179647,DE
3277179648,3277180159,BE
-3277180160,3277180415,NL
3277180416,3277180671,RU
3277180928,3277181183,UA
3277181184,3277181439,PL
@@ -70813,7 +77920,6 @@
3277182208,3277182463,RU
3277182464,3277182719,UA
3277182720,3277182975,BG
-3277182976,3277183231,UA
3277183232,3277183487,DE
3277183744,3277183999,UA
3277184000,3277184255,DE
@@ -70827,7 +77933,6 @@
3277186560,3277186815,PL
3277186816,3277187071,RU
3277187072,3277187327,GB
-3277187328,3277187583,UA
3277187584,3277188351,RU
3277188352,3277188607,DE
3277188608,3277188863,RU
@@ -70836,7 +77941,6 @@
3277189376,3277189631,PL
3277189632,3277189887,TR
3277189888,3277190143,PL
-3277190144,3277190399,SE
3277190400,3277190655,GB
3277190656,3277190911,BE
3277190912,3277191167,FR
@@ -70962,9 +78066,7 @@
3277389312,3277389823,AM
3277389824,3277394943,GB
3277394944,3277395455,US
-3277395456,3277402591,GB
-3277402592,3277402607,ES
-3277402608,3277403135,GB
+3277395456,3277403135,GB
3277403136,3277403215,FR
3277403216,3277403231,GB
3277403232,3277403279,FR
@@ -70972,15 +78074,13 @@
3277403296,3277403311,FR
3277403312,3277403327,GB
3277403328,3277403359,FR
-3277403360,3277403391,GB
-3277403392,3277403455,FR
+3277403360,3277403375,GB
+3277403376,3277403455,FR
3277403456,3277403647,GB
3277403648,3277403807,ES
3277403808,3277404159,GB
3277404160,3277404415,DE
-3277404416,3277404511,IT
-3277404512,3277404527,GB
-3277404528,3277404655,IT
+3277404416,3277404655,IT
3277404656,3277404671,GB
3277404672,3277404735,CH
3277404736,3277404927,GB
@@ -71007,7 +78107,7 @@
3277482496,3277483007,PL
3277483008,3277483519,IT
3277483520,3277484031,RO
-3277484032,3277486079,CH
+3277484032,3277484543,CH
3277486080,3277486591,GB
3277486592,3277487103,UA
3277487104,3277487615,RO
@@ -71077,13 +78177,13 @@
3277717504,3277725695,YE
3277725696,3277733887,CH
3277733888,3277742079,DE
-3277742080,3277746175,FI
+3277742080,3277745151,FI
+3277745152,3277746175,CH
3277746176,3277750271,GB
3277750272,3277766655,IT
3277766656,3277774847,PL
3277774848,3277783039,RU
3277783040,3277815807,BE
-3277815808,3277816063,RO
3277816064,3277816319,PL
3277816576,3277816831,GB
3277816832,3277817087,CH
@@ -71158,7 +78258,6 @@
3277843456,3277843967,PT
3277843968,3277845503,DK
3277845504,3277847039,NL
-3277847040,3277847551,DK
3277847552,3277848063,RU
3277848064,3277848575,RO
3277848576,3277856767,AT
@@ -71187,9 +78286,7 @@
3278061568,3278065663,NL
3278065664,3278110719,GB
3278110720,3278176255,SE
-3278176256,3278210559,FR
-3278210560,3278210815,MQ
-3278210816,3278241791,FR
+3278176256,3278241791,FR
3278241792,3278307327,GB
3278307328,3278372863,IT
3278372864,3278635007,GB
@@ -71234,7 +78331,9 @@
3278929920,3278938111,TR
3278938112,3278939611,DE
3278939612,3278939615,FR
-3278939616,3278940055,DE
+3278939616,3278939715,DE
+3278939716,3278939719,TR
+3278939720,3278940055,DE
3278940056,3278940059,SG
3278940060,3278940355,DE
3278940356,3278940359,NL
@@ -71382,7 +78481,6 @@
3279057408,3279057919,FR
3279058944,3279059455,UA
3279059456,3279060479,RU
-3279060480,3279060991,PL
3279060992,3279069183,UA
3279069184,3279077375,PL
3279077376,3279085567,ES
@@ -71409,7 +78507,9 @@
3279388672,3279396863,GR
3279421440,3279486975,IT
3279486976,3279552511,NL
-3279552512,3279560703,LV
+3279552512,3279559028,LV
+3279559029,3279559029,US
+3279559030,3279560703,LV
3279560704,3279568895,GB
3279568896,3279577087,IT
3279577088,3279585279,BE
@@ -71429,7 +78529,9 @@
3279601664,3279609855,CZ
3279609856,3279618047,RU
3279618048,3279683583,UA
-3279683584,3279946751,DE
+3279683584,3279794943,DE
+3279794944,3279795199,NO
+3279795200,3279946751,DE
3279946752,3279947775,SE
3279947776,3279948799,NL
3279949824,3279950847,UA
@@ -71566,7 +78668,6 @@
3280577792,3280578047,NL
3280578048,3280578303,RO
3280578304,3280578559,UA
-3280578560,3280578815,PL
3280578816,3280579071,NL
3280579072,3280579327,DE
3280579328,3280579583,RU
@@ -71717,7 +78818,7 @@
3280998656,3280999423,GB
3280999424,3280999679,HU
3280999680,3280999935,UA
-3280999936,3281000447,DE
+3280999936,3281000191,DE
3281000448,3281000703,FR
3281000704,3281000959,UA
3281000960,3281001215,SI
@@ -71757,7 +78858,7 @@
3281339648,3281339903,GB
3281339904,3281340159,UA
3281340160,3281340415,BG
-3281340416,3281340927,RO
+3281340416,3281340671,RO
3281340928,3281341183,DE
3281341184,3281341439,AT
3281341440,3281341695,DE
@@ -71770,7 +78871,7 @@
3281344000,3281344255,NL
3281344256,3281344511,RU
3281344512,3281344767,UA
-3281344768,3281345279,RU
+3281344768,3281345023,RU
3281345280,3281345535,SA
3281345536,3281345791,CH
3281346048,3281346303,SI
@@ -71948,7 +79049,6 @@
3282746112,3282746367,SE
3282746368,3282746623,PL
3282746624,3282746879,SE
-3282746880,3282747135,RO
3282747136,3282747391,PL
3282747392,3282763775,RU
3282763776,3282960383,GB
@@ -71959,10 +79059,8 @@
3283156992,3283173375,DE
3283173376,3283174399,PL
3283174400,3283176447,UA
-3283176448,3283177471,GB
3283177472,3283178495,BE
3283178496,3283179519,PL
-3283179520,3283180543,LU
3283180544,3283181567,UA
3283181568,3283182591,NO
3283182592,3283183615,PL
@@ -72020,7 +79118,6 @@
3283249152,3283249663,UA
3283249664,3283250175,RO
3283250176,3283250687,RU
-3283250688,3283251199,RO
3283251200,3283251711,FR
3283251712,3283252223,PL
3283252224,3283252735,BG
@@ -72048,11 +79145,9 @@
3283488256,3283488511,PL
3283488768,3283489279,FR
3283489280,3283489535,DE
-3283489536,3283489791,PL
3283489792,3283490047,RU
3283490048,3283490559,UA
3283490560,3283490815,PL
-3283490816,3283491071,CH
3283491072,3283491327,TR
3283491328,3283491583,AT
3283491584,3283491839,RO
@@ -72064,7 +79159,6 @@
3283493120,3283493375,IL
3283493376,3283493887,PL
3283493888,3283494143,DK
-3283494400,3283494655,PL
3283494656,3283494911,DK
3283494912,3283495167,PL
3283495168,3283495423,BG
@@ -72143,8 +79237,7 @@
3283944448,3283945471,AT
3283945472,3283946495,UA
3283946496,3283947519,GB
-3283947520,3283947775,UA
-3283947776,3283948543,RU
+3283947520,3283948543,RU
3283948544,3283949567,NL
3283949568,3283950591,SE
3283950592,3283951615,KZ
@@ -72196,7 +79289,6 @@
3283990016,3283990527,SE
3283991040,3283991551,RO
3283991552,3283992063,SE
-3283992064,3283992575,RO
3283992576,3283993087,IL
3283993088,3283993599,RO
3283993600,3283994111,UA
@@ -72255,10 +79347,14 @@
3284016384,3284016639,CH
3284016640,3284017151,DK
3284017152,3284025343,GR
-3284025344,3284030471,GB
+3284025344,3284029183,GB
+3284029184,3284029199,US
+3284029200,3284030471,GB
3284030472,3284030479,IL
3284030480,3284030495,FR
-3284030496,3284033535,GB
+3284030496,3284030615,GB
+3284030616,3284030623,SE
+3284030624,3284033535,GB
3284033536,3284041727,RU
3284041728,3284041983,DK
3284041984,3284042239,SI
@@ -72353,7 +79449,6 @@
3284108800,3284109311,FR
3284109312,3284109823,RU
3284109824,3284110335,UA
-3284110336,3284110847,RU
3284110848,3284111359,DK
3284111360,3284111871,SE
3284111872,3284112383,RU
@@ -72451,7 +79546,7 @@
3284717312,3284717567,DE
3284717568,3284717823,FR
3284717824,3284718079,RU
-3284718080,3284718591,GB
+3284718336,3284718591,GB
3284718592,3284718847,PL
3284718848,3284719103,RU
3284719104,3284719359,PL
@@ -72483,9 +79578,7 @@
3284811776,3284819967,KE
3284819968,3284828159,GB
3284828160,3284844543,AT
-3284844544,3284856063,CH
-3284856064,3284856191,DE
-3284856192,3284860927,CH
+3284844544,3284860927,CH
3284860928,3284926463,DE
3284926464,3284991999,NO
3284992000,3285057535,PL
@@ -72601,12 +79694,19 @@
3285453440,3285453567,GB
3285457072,3285457079,GB
3285461184,3285461215,NL
+3285461808,3285461839,NL
+3285463168,3285463199,LU
+3285465600,3285465855,GB
3285472256,3285472271,US
3285472272,3285472287,DE
3285472288,3285472511,US
+3285477136,3285477151,IT
3285480960,3285481215,CH
-3285501696,3285501951,GB
+3285495296,3285495807,ES
+3285501328,3285501359,CZ
3285510144,3285512191,GB
+3285515776,3285515799,GR
+3285515816,3285515823,GR
3285516288,3285516687,BE
3285516688,3285516691,NL
3285516692,3285517311,BE
@@ -72715,23 +79815,26 @@
3285913648,3285913655,IE
3285913656,3285913703,GB
3285913708,3285913711,FI
+3285913712,3285913719,GB
3285917696,3285917703,GB
-3285917712,3285917759,GB
+3285917712,3285917807,GB
+3285917952,3285918207,GB
3285919744,3285921791,QA
-3285922048,3285922303,FR
3285924912,3285924919,CH
+3285924920,3285924927,FI
+3285924928,3285924943,DE
3285925164,3285925171,CH
3285926432,3285926463,CH
3285926592,3285926623,DE
3285928304,3285928311,GB
3285931528,3285931535,DE
+3285934592,3285934847,ES
3285935872,3285936127,GB
3285939136,3285939175,GB
3285939184,3285939191,GB
3285939744,3285939759,GB
3285939840,3285939967,GB
3285941248,3285941503,ES
-3285946112,3285946367,ES
3285949856,3285949887,ES
3285950208,3285950463,IT
3285951648,3285951679,ES
@@ -72811,7 +79914,6 @@
3286355968,3286356991,DE
3286356992,3286358015,PL
3286358016,3286359039,GB
-3286359040,3286360063,PT
3286360064,3286361087,IT
3286361088,3286362111,UA
3286362112,3286363135,RU
@@ -72826,11 +79928,13 @@
3286403072,3286403327,GG
3286403328,3286404863,GB
3286404864,3286405375,GG
-3286405376,3286405887,GB
-3286405888,3286406143,GG
-3286406144,3286406399,GB
-3286406400,3286406655,GG
-3286406656,3286409215,GB
+3286405376,3286406399,GB
+3286406400,3286406911,GG
+3286406912,3286407167,GB
+3286407168,3286407423,GG
+3286407424,3286407679,GB
+3286407680,3286407935,GG
+3286407936,3286409215,GB
3286409216,3286417407,DE
3286417408,3286417663,UA
3286417664,3286417919,IT
@@ -72864,7 +79968,9 @@
3286425344,3286425599,IT
3286425600,3286433791,KW
3286433792,3286499327,DE
-3286499328,3286564863,HU
+3286499328,3286514431,HU
+3286514432,3286514687,RO
+3286514688,3286564863,HU
3286564864,3286566655,AE
3286566656,3286567423,KW
3286567424,3286630399,AE
@@ -72902,9 +80008,7 @@
3286662400,3286662655,UA
3286662656,3286662911,DE
3286662912,3286671359,UA
-3286671360,3286672639,AT
-3286672640,3286672895,HU
-3286672896,3286679551,AT
+3286671360,3286679551,AT
3286679552,3286695935,IT
3286695936,3286761471,DK
3286761472,3286773759,GB
@@ -72912,7 +80016,9 @@
3286777856,3286778111,GB
3286778112,3286781951,FR
3286781952,3286794239,GB
-3286794240,3286888447,DE
+3286794240,3286799103,DE
+3286799104,3286799359,IT
+3286799360,3286888447,DE
3286888448,3286889471,IE
3286889472,3286892543,DE
3286892544,3286893055,LI
@@ -72962,7 +80068,6 @@
3286917120,3286918143,RU
3286918144,3286919167,AT
3286919168,3286920191,DE
-3286920192,3286920447,RU
3286921216,3286922239,UA
3286922240,3286923263,GB
3286923264,3286924287,CM
@@ -72981,7 +80086,6 @@
3286929408,3286929663,LV
3286929664,3286929919,BE
3286929920,3286930175,SE
-3286930176,3286930431,RU
3286930432,3286930687,UA
3286930688,3286930943,DE
3286930944,3286931199,SE
@@ -73092,7 +80196,6 @@
3287218432,3287218687,GB
3287218688,3287218943,RU
3287218944,3287219199,FR
-3287219200,3287219455,DE
3287219456,3287219711,CH
3287219712,3287220223,SE
3287220224,3287285759,RU
@@ -73167,7 +80270,7 @@
3287465984,3287467007,DK
3287467008,3287468031,SA
3287468032,3287469055,UA
-3287469056,3287471103,DE
+3287469056,3287470079,DE
3287471104,3287472127,GB
3287472128,3287472639,RU
3287472640,3287473151,UA
@@ -73178,7 +80281,7 @@
3287479296,3287480319,RO
3287480320,3287481343,AT
3287481344,3287482367,PL
-3287482368,3287548927,DE
+3287482368,3287548415,DE
3287548928,3287549439,UA
3287549440,3287549951,SE
3287549952,3287550463,UA
@@ -73265,7 +80368,6 @@
3287675648,3287675903,DE
3287675904,3287676159,BE
3287676160,3287676415,DE
-3287676416,3287676671,RU
3287676672,3287676927,GB
3287676928,3287677183,ES
3287677184,3287677439,RU
@@ -73297,7 +80399,6 @@
3287728128,3287729407,IT
3287729664,3287729919,DK
3287729920,3287730175,HU
-3287731200,3287732223,DE
3287732224,3287734271,IT
3287734272,3287734527,PL
3287734528,3287734783,UA
@@ -73339,7 +80440,6 @@
3287830784,3287831039,GB
3287831040,3287831295,RU
3287831296,3287831551,CH
-3287831552,3287831807,RO
3287831808,3287832063,AT
3287832064,3287832319,FI
3287832320,3287832575,NL
@@ -73397,7 +80497,7 @@
3287954432,3287954687,CH
3287954688,3287954943,RO
3287954944,3287955199,PL
-3287955200,3287955711,RU
+3287955456,3287955711,RU
3287955712,3287955967,DE
3287955968,3287956223,SI
3287956224,3287956479,RO
@@ -73501,10 +80601,8 @@
3288466432,3288467455,SY
3288467456,3288469503,BI
3288469504,3288481791,ZA
-3288481792,3288482303,ZW
-3288482304,3288483071,ZA
-3288483072,3288483327,ZW
-3288483328,3288485631,ZA
+3288481792,3288482559,ZW
+3288482560,3288485631,ZA
3288485632,3288485887,ZW
3288485888,3288489983,MA
3288489984,3288514559,ZA
@@ -73559,9 +80657,7 @@
3288616960,3288617215,ZW
3288617216,3288661759,ZA
3288661760,3288662015,LS
-3288662016,3288727551,ZA
-3288727552,3288727807,MU
-3288727808,3288753919,ZA
+3288662016,3288753919,ZA
3288753920,3288754175,NG
3288758272,3288758527,EG
3288758528,3288772607,ZA
@@ -73582,7 +80678,9 @@
3288787968,3288788223,EG
3288788224,3288792831,ZA
3288792832,3288793087,AO
-3288793088,3289004031,ZA
+3288793088,3289002751,ZA
+3289002752,3289003007,AO
+3289003008,3289004031,ZA
3289004032,3289005055,NG
3289005056,3289005311,TZ
3289005312,3289014527,ZA
@@ -73602,7 +80700,8 @@
3289027584,3289027839,MZ
3289027840,3289041407,ZA
3289041408,3289041663,NG
-3289041664,3289044991,ZA
+3289041664,3289044735,ZA
+3289044736,3289044991,GH
3289044992,3289047039,ML
3289047040,3289048063,ZA
3289048064,3289048319,UG
@@ -73636,6 +80735,7 @@
3289108480,3289114367,ZA
3289114368,3289114623,NG
3289114624,3289115135,ZA
+3289115136,3289115391,AO
3289115392,3289120511,ZA
3289120512,3289120767,TZ
3289120768,3289123327,PR
@@ -73650,20 +80750,28 @@
3289169920,3289186303,MA
3289186304,3289212159,ZA
3289212160,3289212415,MZ
+3289212416,3289212927,NG
3289214976,3289215231,NG
3289215232,3289217279,ZA
3289217280,3289217535,KE
3289218560,3289220351,ZA
3289220352,3289220607,TZ
3289220608,3289221119,ZA
-3289221632,3289229311,ZA
+3289221120,3289221631,KE
+3289221632,3289227519,ZA
+3289227520,3289227775,NG
+3289227776,3289229311,ZA
3289229312,3289229567,SZ
-3289229824,3289230591,ZA
+3289229568,3289230591,ZA
+3289230592,3289230847,KE
3289233408,3289233919,ZA
3289233920,3289234175,TZ
3289234176,3289235199,ZA
3289235200,3289235455,KE
-3289237504,3289243391,ZA
+3289237504,3289237759,ZA
+3289238528,3289238783,AO
+3289238784,3289239039,ZA
+3289239552,3289243391,ZA
3289243392,3289243647,BI
3289243648,3289321471,ZA
3289321472,3289325567,IN
@@ -73754,9 +80862,11 @@
3290719232,3290955775,ZA
3290955776,3290980351,CR
3290980352,3290984447,ZA
+3290984448,3290988543,MZ
3290988544,3290992639,KE
3290992640,3290996735,GH
3290996736,3291000831,NG
+3291000832,3291004927,ZA
3291004928,3291021311,NG
3291021312,3291029503,ZA
3291029504,3291037695,TZ
@@ -73818,6 +80928,7 @@
3291215616,3291215871,BF
3291215872,3291216127,KE
3291216128,3291216383,LS
+3291216384,3291216639,ZA
3291216640,3291216895,NG
3291217920,3291230207,ZA
3291230208,3291234303,GH
@@ -73897,15 +81008,14 @@
3291546624,3291546879,SZ
3291546880,3291547135,TZ
3291547136,3291547391,AO
+3291547392,3291547647,RW
3291742208,3292004351,US
3292004352,3292266495,SC
3292397568,3292528639,ZA
3300917248,3300921343,MU
3300921344,3300925439,BJ
3300925440,3300929535,MG
-3300933632,3300935679,MU
-3300937728,3300938751,MU
-3300941824,3300950015,MU
+3300933632,3300950015,MU
3300953088,3300954111,MU
3300966400,3301113855,ZA
3301113856,3301146623,NG
@@ -73945,8 +81055,9 @@
3301471488,3301474047,NG
3301474048,3301474303,GH
3301474304,3301490687,MA
+3301490688,3301494783,ZA
3301494784,3301498879,ZM
-3301507328,3301507583,ZW
+3301507328,3301507583,MU
3301507584,3301507839,GH
3301507840,3301508095,EG
3301508608,3301509119,ZA
@@ -73993,6 +81104,7 @@
3302505472,3302506495,NA
3302506496,3302514687,KE
3302522880,3302523903,KE
+3302523904,3302525951,ZA
3302525952,3302526975,EG
3302526976,3302529023,NG
3302529024,3302530047,ZA
@@ -74023,8 +81135,8 @@
3302548992,3302549503,ZA
3302549504,3302550015,KE
3302550016,3302550527,TZ
-3302550528,3302551039,ZA
-3302551040,3302551551,MU
+3302550528,3302551295,ZA
+3302551296,3302551551,MU
3302551552,3302552063,EG
3302552064,3302552575,KE
3302552832,3302553087,KE
@@ -74035,7 +81147,6 @@
3302554368,3302554623,NG
3302554624,3302554879,EG
3302554880,3302555135,NG
-3302555136,3302555391,MU
3302555392,3302555647,NG
3302555648,3302621183,MA
3302621184,3302684671,EG
@@ -74048,6 +81159,7 @@
3302766592,3302768639,ZA
3302768640,3302776831,NG
3302776832,3302785023,ZW
+3302785024,3302793215,NG
3302801408,3302805503,NG
3302805504,3302809599,MW
3302809600,3302817791,NG
@@ -74085,16 +81197,13 @@
3302958080,3302958335,BI
3302958336,3302958591,SZ
3302958592,3302958847,DJ
+3302958848,3302959103,GA
3304062976,3304456191,SC
3304456192,3304521727,NG
3304521728,3304587263,SC
3304587264,3304718335,ZA
3304849408,3305111551,ZA
-3305111552,3305130239,TN
-3305130240,3305130495,GP
-3305130496,3305362687,TN
-3305362688,3305362943,GP
-3305362944,3307208703,TN
+3305111552,3307208703,TN
3307208704,3309305855,EG
3309305856,3312451583,ZA
3312451584,3312975871,DZ
@@ -74170,13 +81279,13 @@
3315463168,3315464191,SO
3315464192,3315465215,CD
3315465216,3315466239,CG
-3315466240,3315467263,MZ
-3315467264,3315467519,ZA
-3315467520,3315482623,MZ
+3315466240,3315482623,MZ
3315482624,3315499007,MG
3315499008,3315515391,ZM
3315515392,3315531775,SC
-3315531776,3315539967,CM
+3315531776,3315535871,CM
+3315535872,3315536127,TD
+3315536128,3315539967,CM
3315539968,3315548159,ZA
3315548160,3315552255,NG
3315552256,3315556351,GW
@@ -74194,9 +81303,7 @@
3317301248,3317432319,TZ
3317432320,3317497855,NA
3317497856,3317530623,CD
-3317530624,3317538815,LS
-3317538816,3317539071,ZA
-3317539072,3317547007,LS
+3317530624,3317547007,LS
3317547008,3317563391,ZA
3317563392,3317694463,GH
3317694464,3318218751,EG
@@ -74332,7 +81439,11 @@
3321790464,3321806847,LS
3321806848,3321823231,SD
3321823232,3321839615,NG
-3321839616,3321855999,GH
+3321839616,3321848831,GH
+3321848832,3321849855,ZA
+3321849856,3321850879,GH
+3321850880,3321851903,ZA
+3321851904,3321855999,GH
3321856000,3321860095,CV
3321860096,3321864191,ZA
3321864192,3321868287,NG
@@ -74461,14 +81572,14 @@
3323680329,3323680413,CA
3323680414,3323680414,US
3323680415,3323680511,CA
-3323680512,3323680767,US
-3323680768,3323681023,CA
-3323681024,3323681279,US
+3323680512,3323681279,US
3323681280,3323682955,CA
3323682956,3323682959,US
3323682960,3323684863,CA
3323684864,3323685375,US
-3323685376,3323685887,CA
+3323685376,3323685551,CA
+3323685552,3323685555,BY
+3323685556,3323685887,CA
3323685888,3323686399,US
3323686400,3323686911,CA
3323686912,3323687423,US
@@ -74476,7 +81587,7 @@
3323687936,3323687999,US
3323688000,3323688959,CA
3323688960,3323689199,US
-3323689200,3323689215,BY
+3323689200,3323689215,CA
3323689216,3323689471,US
3323689472,3323690495,CA
3323690496,3323741439,US
@@ -74603,11 +81714,7 @@
3324706304,3324706559,CA
3324706560,3324811047,US
3324811048,3324811055,AU
-3324811056,3324843775,US
-3324843776,3324843799,AU
-3324843800,3324843801,US
-3324843802,3324844031,AU
-3324844032,3324980223,US
+3324811056,3324980223,US
3324980224,3324981247,CA
3324981248,3325034495,US
3325034496,3325035519,NZ
@@ -74646,9 +81753,13 @@
3325211420,3325211423,US
3325211424,3325211647,CA
3325211648,3325211775,US
-3325211776,3325213687,CA
+3325211776,3325212647,CA
+3325212648,3325212655,US
+3325212656,3325213687,CA
3325213688,3325213695,US
-3325213696,3325216527,CA
+3325213696,3325216271,CA
+3325216272,3325216287,BY
+3325216288,3325216527,CA
3325216528,3325216531,US
3325216532,3325217939,CA
3325217940,3325217943,US
@@ -74664,7 +81775,11 @@
3325221452,3325221455,US
3325221456,3325221791,CA
3325221792,3325221795,FR
-3325221796,3325223647,CA
+3325221796,3325222203,CA
+3325222204,3325222207,BY
+3325222208,3325223083,CA
+3325223084,3325223087,BY
+3325223088,3325223647,CA
3325223648,3325223663,DE
3325223664,3325224671,CA
3325224672,3325224675,US
@@ -74678,7 +81793,9 @@
3325229592,3325229599,US
3325229600,3325230319,CA
3325230320,3325230323,US
-3325230324,3325231103,CA
+3325230324,3325230583,CA
+3325230584,3325230591,SN
+3325230592,3325231103,CA
3325231104,3325232127,US
3325233152,3325234175,US
3325234176,3325234431,SA
@@ -74706,9 +81823,10 @@
3325284864,3325285119,AU
3325285376,3325296383,US
3325296384,3325296639,CA
-3325296640,3325304063,US
-3325304064,3325304319,AS
-3325304320,3325304831,US
+3325296640,3325304127,US
+3325304128,3325304191,AS
+3325304192,3325304319,US
+3325304320,3325304831,AS
3325304832,3325307647,CA
3325307648,3325307903,BB
3325307904,3325313023,CA
@@ -74724,9 +81842,7 @@
3325438976,3325442559,MU
3325442560,3325443583,ZA
3325443584,3325444095,US
-3325444096,3325444351,MU
-3325444352,3325444607,ZA
-3325444608,3325448447,MU
+3325444096,3325448447,MU
3325448448,3325448959,US
3325448960,3325450239,MU
3325450240,3325451007,US
@@ -74808,7 +81924,9 @@
3326413824,3326414335,YE
3326414336,3326420991,US
3326420992,3326423039,PR
-3326423040,3326526463,US
+3326423040,3326499327,US
+3326499328,3326499583,IN
+3326499584,3326526463,US
3326526464,3326526719,CA
3326526720,3326613503,US
3326613504,3326615551,CA
@@ -74839,9 +81957,7 @@
3326738176,3326740479,US
3326741760,3326742015,US
3326742528,3326746623,US
-3326749184,3326796863,US
-3326796864,3326796927,GB
-3326796928,3326952191,US
+3326749184,3326952191,US
3326952192,3326952447,AS
3326952448,3326953983,US
3326953984,3326954495,AS
@@ -74947,7 +82063,11 @@
3328775936,3328788479,US
3328788480,3328789503,FR
3328789504,3328794623,US
-3328794624,3328802815,CA
+3328794624,3328801279,CA
+3328801280,3328801791,CZ
+3328801792,3328802047,CA
+3328802048,3328802303,DE
+3328802304,3328802815,AU
3328802816,3328826813,US
3328826814,3328826814,SG
3328826815,3329230335,US
@@ -75032,7 +82152,14 @@
3331102464,3331102719,CA
3331102720,3331194879,US
3331194880,3331260415,AU
-3331260416,3331356671,US
+3331260416,3331269375,US
+3331269376,3331269631,AU
+3331269632,3331269887,FR
+3331269888,3331270655,US
+3331270656,3331270911,FR
+3331270912,3331271423,US
+3331271424,3331271679,FR
+3331271680,3331356671,US
3331356672,3331357183,BZ
3331357184,3331362815,US
3331362816,3331366911,CA
@@ -75052,7 +82179,9 @@
3331632640,3331632895,CA
3331632896,3331633407,US
3331633408,3331633919,CH
-3331633920,3331647231,US
+3331633920,3331637247,US
+3331637248,3331638271,KR
+3331638272,3331647231,US
3331647232,3331647487,CA
3331647488,3331649279,US
3331649280,3331649535,CA
@@ -75069,9 +82198,7 @@
3331983360,3331988479,US
3331988480,3331989503,CA
3331989504,3332028415,US
-3332028416,3332028927,CA
-3332028928,3332029183,US
-3332029184,3332030463,CA
+3332028416,3332030463,CA
3332030464,3332083967,US
3332083968,3332084223,AU
3332084224,3332423423,US
@@ -75151,9 +82278,7 @@
3332898560,3332899071,US
3332899072,3332906495,CA
3332906496,3332909567,US
-3332909568,3332909823,CA
-3332909824,3332910079,US
-3332910080,3332922879,CA
+3332909568,3332922879,CA
3332922880,3332923391,US
3332923392,3332925695,CA
3332925696,3332929023,US
@@ -75184,16 +82309,21 @@
3333374976,3333375231,IN
3333375232,3333385983,US
3333385984,3333386239,JP
-3333386240,3333427967,US
+3333386240,3333396479,US
+3333396480,3333396689,GB
+3333396690,3333396691,US
+3333396692,3333396735,GB
+3333396736,3333427967,US
3333427968,3333428007,GB
3333428008,3333428008,US
3333428009,3333428223,GB
-3333428224,3333476607,US
-3333477376,3333480191,US
+3333428224,3333480191,US
3333480192,3333481471,DE
3333481472,3333517823,US
3333517824,3333518335,CA
-3333518336,3333583871,US
+3333518336,3333519359,US
+3333519360,3333521407,GB
+3333521408,3333583871,US
3333583872,3333584895,CA
3333584896,3333593855,US
3333593856,3333594111,CA
@@ -75275,7 +82405,7 @@
3335439616,3335439871,CH
3335439872,3335440383,US
3335440384,3335441151,CH
-3335441152,3335458815,US
+3335441152,3335456767,US
3335458816,3335460863,BM
3335460864,3335475199,US
3335475200,3335475455,DE
@@ -75291,7 +82421,9 @@
3336139776,3336140799,CA
3336140800,3336854015,US
3336854016,3336854271,CO
-3336854272,3336991231,US
+3336854272,3336896767,US
+3336896768,3336897023,VE
+3336897024,3336991231,US
3336991232,3336991487,CA
3336991488,3336993023,US
3336993024,3336993535,CA
@@ -75313,7 +82445,9 @@
3337055232,3337060351,CA
3337060352,3337069055,US
3337069056,3337069119,GB
-3337069120,3337289983,US
+3337069120,3337107711,US
+3337107712,3337107967,GB
+3337107968,3337289983,US
3337289984,3337293567,CA
3337293568,3337293823,US
3337293824,3337297919,CA
@@ -75464,12 +82598,18 @@
3338403840,3338424319,US
3338424320,3338428415,CA
3338428416,3338429439,US
-3338429440,3338429951,CA
+3338429440,3338429695,CA
+3338429696,3338429951,SG
3338429952,3338430719,US
-3338430720,3338432511,CA
+3338430720,3338430975,NL
+3338430976,3338431487,US
+3338431488,3338431743,CA
+3338431744,3338432255,US
+3338432256,3338432511,CA
3338432512,3338455039,US
3338455040,3338455295,GB
-3338455296,3338567679,US
+3338455296,3338541567,US
+3338542080,3338567679,US
3338567680,3338600447,CA
3338600448,3338686463,US
3338686464,3338688511,AW
@@ -75479,7 +82619,9 @@
3338825728,3338827775,AW
3338827776,3338912767,US
3338912768,3338913023,EC
-3338913024,3338935039,US
+3338913024,3338934015,US
+3338934016,3338934271,GB
+3338934272,3338935039,US
3338935040,3338935295,GB
3338935296,3338964991,US
3338964992,3338965247,CA
@@ -75581,9 +82723,7 @@
3339965440,3339968511,CA
3339968512,3339975935,US
3339975936,3339976191,CA
-3339976192,3339991807,US
-3339991808,3339992063,CA
-3339992064,3340080127,US
+3339976192,3340080127,US
3340080128,3340081151,CA
3340081152,3340084223,US
3340084224,3340085247,KN
@@ -75685,9 +82825,7 @@
3341518848,3341520895,CA
3341520896,3341521663,US
3341521664,3341531135,CA
-3341531392,3341531647,US
-3341531648,3341531903,IN
-3341531904,3341534207,US
+3341531136,3341534207,US
3341534976,3341537279,CA
3341537280,3341546239,US
3341546240,3341547007,CA
@@ -75752,7 +82890,8 @@
3342517248,3342526463,US
3342526464,3342528511,CA
3342528512,3342543359,US
-3342543872,3342552063,US
+3342543872,3342548991,US
+3342551040,3342552063,US
3342552064,3342553087,CA
3342553088,3342565375,US
3342565376,3342567423,CA
@@ -75768,17 +82907,15 @@
3342603264,3342604799,US
3342604800,3342605311,CA
3342605312,3342605567,US
-3342605568,3342614271,CA
-3342614528,3342623743,CA
-3342624256,3342627839,CA
-3342628096,3342663423,CA
+3342605568,3342663423,CA
3342663680,3342831103,US
3342831104,3342831359,IN
3342831360,3343013887,US
3343013888,3343015935,CA
3343015936,3343055871,US
3343055872,3343056895,CA
-3343056896,3343129087,US
+3343056896,3343126015,US
+3343126528,3343129087,US
3343129600,3343153151,US
3343153152,3343154943,CA
3343154944,3343167487,US
@@ -75809,7 +82946,9 @@
3343465472,3343466495,JM
3343466496,3343470847,US
3343471104,3343557119,US
-3343557376,3343858687,US
+3343557376,3343649791,US
+3343649792,3343650815,VI
+3343650816,3343858687,US
3343858688,3343859199,VG
3343859200,3344111871,US
3344112128,3344116223,US
@@ -75837,7 +82976,9 @@
3344242176,3344242687,US
3344242688,3344255999,CA
3344256000,3344261631,US
-3344261888,3344266239,CA
+3344261888,3344263430,CA
+3344263431,3344263431,US
+3344263432,3344266239,CA
3344266240,3344266751,US
3344266752,3344268543,CA
3344268544,3344268799,GB
@@ -75882,9 +83023,7 @@
3344656384,3344658431,US
3344658432,3344660479,CA
3344660480,3344670719,US
-3344670720,3344671231,GP
-3344671232,3344671487,MF
-3344671488,3344671743,GP
+3344670720,3344671743,GP
3344671744,3344676863,US
3344676864,3344677407,CA
3344677408,3344677423,US
@@ -75979,7 +83118,9 @@
3345447680,3345448447,FR
3345448448,3345448703,BE
3345448704,3345448959,DE
-3345448960,3346140671,US
+3345448960,3345659903,US
+3345659904,3345660159,CA
+3345660160,3346140671,US
3346141184,3346188799,US
3346189312,3346196479,US
3346196480,3346197503,CA
@@ -76069,8 +83210,8 @@
3349545728,3349545983,US
3349545984,3349549567,CA
3349550080,3349551103,CA
-3349551104,3349553663,US
-3349553664,3349605375,CA
+3349551104,3349553407,US
+3349553408,3349605375,CA
3349605632,3349607423,CA
3349607936,3349608447,CA
3349608448,3349609471,US
@@ -76193,7 +83334,8 @@
3351043072,3351043583,FR
3351043584,3351044095,CA
3351044096,3351058943,US
-3351059456,3351071743,US
+3351059456,3351068159,US
+3351068672,3351071743,US
3351071744,3351072767,CA
3351072768,3351074815,US
3351074816,3351076863,CA
@@ -76201,8 +83343,10 @@
3351080960,3351081983,AG
3351081984,3351086079,US
3351086080,3351087103,CA
-3351087104,3351094527,US
-3351094528,3351095295,CA
+3351087104,3351094271,US
+3351094272,3351094527,CA
+3351094528,3351095039,US
+3351095040,3351095295,CA
3351095296,3351103487,US
3351103488,3351104511,CA
3351104512,3351104639,JP
@@ -76233,8 +83377,7 @@
3351306240,3351307263,VC
3351307264,3351308287,US
3351308288,3351310335,CA
-3351310336,3351318015,US
-3351318528,3351326719,US
+3351310336,3351326719,US
3351326720,3351328767,CA
3351328768,3351336959,US
3351336960,3351339007,CA
@@ -76242,7 +83385,9 @@
3351357440,3351359487,CA
3351359488,3351372799,US
3351372800,3351373823,BM
-3351373824,3351380223,US
+3351373824,3351376127,US
+3351376128,3351376383,PR
+3351376384,3351380223,US
3351380224,3351380479,CA
3351380480,3351380735,US
3351380736,3351381759,CA
@@ -76345,14 +83490,18 @@
3351475712,3351475967,IS
3351475968,3351483391,US
3351483392,3351484415,CA
-3351484416,3351485439,US
-3351485440,3351488511,CA
+3351484416,3351486463,US
+3351486464,3351488511,CA
3351488512,3351494911,US
3351494912,3351495679,SG
3351495680,3351495935,US
-3351495936,3351496191,SG
+3351495936,3351495989,SG
+3351495990,3351495990,US
+3351495991,3351496191,SG
3351496192,3351496447,US
-3351496448,3351496703,SG
+3351496448,3351496675,SG
+3351496676,3351496679,US
+3351496680,3351496703,SG
3351496704,3351497727,US
3351497728,3351498751,CA
3351498752,3351501823,US
@@ -76438,8 +83587,8 @@
3353731504,3353732607,US
3353732608,3353732863,DE
3353732864,3353736191,US
-3353736192,3353736703,PR
-3353736704,3353737215,US
+3353736192,3353736959,PR
+3353736960,3353737215,US
3353737216,3353737471,GB
3353737472,3353741823,US
3353742336,3353780223,US
@@ -76450,9 +83599,7 @@
3353861120,3353862143,CA
3353862144,3353862719,US
3353862720,3353862751,CA
-3353862752,3353864447,US
-3353864448,3353864703,CA
-3353864704,3353864959,US
+3353862752,3353864959,US
3353864960,3353865215,CA
3353865216,3353884927,US
3353884928,3353885183,GB
@@ -76482,7 +83629,9 @@
3354656768,3354663423,US
3354663936,3354676223,US
3354676224,3354677247,CA
-3354677248,3354687487,US
+3354677248,3354686975,US
+3354686976,3354687231,HK
+3354687232,3354687487,US
3354687488,3354688511,CA
3354688512,3354720767,US
3354721280,3354758655,US
@@ -76504,8 +83653,7 @@
3354972160,3354972415,CA
3354972416,3355012607,US
3355013120,3355017215,CA
-3355017216,3355052031,US
-3355052032,3355052287,CA
+3355017216,3355052287,US
3355052288,3355052543,AU
3355052544,3355053311,CA
3355053312,3355053567,US
@@ -76530,11 +83678,13 @@
3355385856,3355407359,US
3355407360,3355408383,PR
3355408384,3355412479,US
-3355412480,3355412991,BE
+3355412480,3355412607,BE
+3355412608,3355412735,US
+3355412736,3355412991,BE
3355412992,3355432959,US
3355432960,3355435007,CA
3355435008,3355443199,US
-3355443200,3355443200,GB
+3355443200,3355443200,CN
3355443201,3355445247,CO
3355445248,3355447295,BR
3355447296,3355447551,CU
@@ -76550,7 +83700,6 @@
3355459584,3355459839,PA
3355459840,3355460095,VE
3355460096,3355460351,CL
-3355460352,3355460607,BR
3355460608,3355460863,UY
3355460864,3355461887,BR
3355461888,3355463423,EC
@@ -76714,8 +83863,7 @@
3355870720,3355871231,CR
3355871232,3355873279,BR
3355873280,3355875327,BQ
-3355875328,3355876351,MX
-3355876352,3355877375,VE
+3355875328,3355877375,MX
3355877376,3355885567,CO
3355885568,3355901951,GT
3355901952,3355902975,BR
@@ -76899,7 +84047,10 @@
3356180480,3356190719,CL
3356190720,3356192767,DO
3356192768,3356194815,AR
-3356196864,3356229631,VE
+3356196864,3356201471,KY
+3356201472,3356201727,VE
+3356201728,3356213247,KY
+3356213248,3356229631,VE
3356229632,3356233727,BR
3356233728,3356237823,CL
3356237824,3356246015,GT
@@ -76969,7 +84120,7 @@
3356368896,3356369407,BR
3356369408,3356369663,EC
3356369664,3356369919,BR
-3356370176,3356370943,AR
+3356369920,3356370943,AR
3356370944,3356372991,CO
3356372992,3356375039,CU
3356377088,3356379647,CL
@@ -76988,13 +84139,13 @@
3356391168,3356391423,PA
3356393472,3356413439,CL
3356413440,3356413823,CO
-3356413824,3356420607,CL
-3356420608,3356420991,CO
-3356420992,3356421247,CL
+3356413824,3356420863,CL
+3356420864,3356421119,CO
+3356421120,3356421247,CL
3356421248,3356421375,CO
-3356421376,3356421759,CL
-3356421760,3356422015,CO
-3356422016,3356425471,CL
+3356421376,3356421631,CL
+3356421632,3356422143,CO
+3356422144,3356425471,CL
3356425472,3356425599,CO
3356425600,3356426239,CL
3356426240,3356427263,BR
@@ -77035,7 +84186,8 @@
3356988672,3356989439,MX
3356989952,3356996607,MX
3356996608,3356997631,BR
-3356997632,3357003007,MX
+3356997632,3356998911,MX
+3356999168,3357003007,MX
3357003776,3357007871,MX
3357007872,3357011967,BR
3357011968,3357015551,MX
@@ -77128,9 +84280,8 @@
3357451144,3357451151,HN
3357451152,3357451263,GT
3357451264,3357451519,HN
-3357451520,3357451575,GT
-3357451576,3357451583,NI
-3357451584,3357452287,GT
+3357451520,3357451775,NI
+3357451776,3357452287,GT
3357452288,3357452799,HN
3357452800,3357453055,NI
3357453056,3357453071,GT
@@ -77151,7 +84302,9 @@
3357457712,3357457727,CR
3357457728,3357458431,GT
3357458432,3357474815,CL
-3357474816,3357475071,US
+3357474816,3357475015,US
+3357475016,3357475019,AR
+3357475020,3357475071,US
3357475072,3357475887,AR
3357475888,3357475903,VE
3357475904,3357475999,AR
@@ -77198,7 +84351,9 @@
3357480360,3357480367,CO
3357480368,3357480463,AR
3357480464,3357480479,CO
-3357480480,3357480719,AR
+3357480480,3357480511,AR
+3357480512,3357480543,CO
+3357480544,3357480719,AR
3357480720,3357480735,CO
3357480736,3357480959,AR
3357480960,3357483007,EC
@@ -77213,7 +84368,9 @@
3357556992,3357557247,AR
3357557248,3357557759,MX
3357557760,3357558783,EC
-3357558784,3357559039,AR
+3357558784,3357558895,AR
+3357558896,3357558903,EC
+3357558904,3357559039,AR
3357559040,3357559295,EC
3357559296,3357559551,CA
3357559552,3357559807,US
@@ -77237,8 +84394,7 @@
3357607168,3357613055,MX
3357613056,3357613311,AR
3357613312,3357616127,MX
-3357616384,3357618943,MX
-3357619200,3357623039,MX
+3357616384,3357623039,MX
3357623040,3357623295,AR
3357623296,3357626623,MX
3357627392,3357627647,MX
@@ -77266,9 +84422,9 @@
3357715456,3357715711,MX
3357715968,3357723903,MX
3357724416,3357725183,MX
-3357725440,3357726463,MX
+3357725440,3357726719,MX
3357726720,3357727743,BR
-3357728000,3357728767,MX
+3357727744,3357728767,MX
3357728768,3357736959,BR
3357736960,3357745151,VE
3357745152,3357753343,CO
@@ -77280,7 +84436,11 @@
3357776128,3357776383,UY
3357776384,3357776895,US
3357776896,3357777919,CL
-3357777920,3357786111,GT
+3357777920,3357778415,GT
+3357778416,3357778423,SV
+3357778424,3357784319,GT
+3357784320,3357784335,SV
+3357784336,3357786111,GT
3357786112,3357802495,VE
3357802496,3357868031,MX
3357868032,3357933567,PE
@@ -77301,8 +84461,8 @@
3358132128,3358132135,CO
3358132136,3358132607,AR
3358132608,3358132735,CO
-3358132736,3358132991,AR
-3358132992,3358133119,EC
+3358132736,3358132975,AR
+3358132976,3358133119,EC
3358133120,3358133247,AR
3358133248,3358133759,VE
3358133760,3358142719,AR
@@ -77310,19 +84470,20 @@
3358142976,3358143231,CO
3358143232,3358143487,AR
3358143488,3358143999,US
-3358144000,3358144255,AR
+3358144000,3358144127,CL
+3358144128,3358144255,AR
3358144256,3358144511,CL
3358144512,3358145023,VE
3358145024,3358149631,AR
-3358149632,3358149887,CO
-3358149888,3358150015,AR
-3358150016,3358150143,CO
-3358150144,3358150423,AR
+3358149632,3358150399,CO
+3358150400,3358150423,AR
3358150424,3358150431,CO
3358150432,3358150479,AR
3358150480,3358150655,CO
3358150656,3358150911,EC
-3358150912,3358151263,AR
+3358150912,3358151039,AR
+3358151040,3358151167,EC
+3358151168,3358151263,AR
3358151264,3358151271,EC
3358151272,3358151423,AR
3358151424,3358151551,EC
@@ -77334,8 +84495,8 @@
3358152560,3358152575,PE
3358152576,3358152703,AR
3358152704,3358152959,US
-3358152960,3358153087,EC
-3358153088,3358153279,AR
+3358152960,3358153215,EC
+3358153216,3358153279,AR
3358153280,3358153311,US
3358153312,3358153343,AR
3358153344,3358153535,US
@@ -77363,10 +84524,16 @@
3358326784,3358392319,VE
3358392320,3358457855,AR
3358457856,3358523391,PA
-3358523392,3358529535,VE
+3358523392,3358525951,VE
+3358525952,3358526463,AR
+3358526464,3358529535,VE
3358529536,3358530303,AR
-3358530304,3358532607,VE
-3358532608,3358532863,AR
+3358530304,3358530943,VE
+3358530944,3358531071,AR
+3358531072,3358531583,VE
+3358531584,3358531839,AR
+3358531840,3358532351,VE
+3358532352,3358532863,AR
3358532864,3358534399,VE
3358534400,3358534655,AR
3358534656,3358535167,VE
@@ -77381,9 +84548,13 @@
3358549760,3358550015,AR
3358550016,3358553599,VE
3358553600,3358553855,AR
-3358553856,3358558463,VE
+3358553856,3358556159,VE
+3358556160,3358558463,AR
3358558464,3358558591,PY
-3358558592,3358562303,VE
+3358558592,3358559231,AR
+3358559232,3358560255,VE
+3358560256,3358561791,AR
+3358561792,3358562303,VE
3358562304,3358563327,PE
3358563328,3358564095,CO
3358564096,3358564351,MX
@@ -77429,24 +84600,19 @@
3358567392,3358567407,VE
3358567408,3358567423,AR
3358567424,3358568959,CO
-3358568960,3358570495,VE
+3358568960,3358569471,AR
+3358569472,3358570495,VE
3358570496,3358570751,MX
3358570752,3358571263,PE
3358571264,3358572543,MX
-3358572544,3358573055,VE
-3358573056,3358573311,AR
-3358573312,3358574847,VE
-3358574848,3358576127,AR
-3358576128,3358577151,VE
+3358572544,3358577151,AR
3358577152,3358577407,PE
-3358577408,3358577919,AR
-3358577920,3358578175,VE
-3358578176,3358578431,AR
+3358577408,3358578431,AR
3358578432,3358578687,VE
3358578688,3358579967,CO
3358579968,3358580223,AR
3358580224,3358580735,MX
-3358580736,3358588927,VE
+3358580736,3358588927,AR
3358588928,3358654463,PE
3358654464,3358658559,AR
3358658560,3358660607,CL
@@ -77479,9 +84645,7 @@
3358892032,3358918655,MX
3358918656,3358924799,BR
3358924800,3358965759,MX
-3358965760,3358966783,BR
-3358966784,3358967039,MX
-3358967040,3358973951,BR
+3358965760,3358973951,BR
3358973952,3358982143,MX
3358982144,3359047679,CL
3359047680,3359080447,AR
@@ -77535,7 +84699,9 @@
3359520768,3359522815,US
3359522816,3359539199,NI
3359539200,3359571967,PE
-3359571968,3359582207,AR
+3359571968,3359573759,AR
+3359573760,3359574015,US
+3359574016,3359582207,AR
3359582208,3359584255,PA
3359584256,3359586303,AR
3359586304,3359588351,CL
@@ -77574,7 +84740,9 @@
3360251904,3360253951,BO
3360253952,3360255999,SV
3360256000,3360260095,CL
-3360260096,3360276479,AR
+3360260096,3360260351,AR
+3360260352,3360260607,US
+3360260608,3360276479,AR
3360276480,3360278527,VE
3360278528,3360280575,EC
3360280576,3360282623,CL
@@ -77584,9 +84752,7 @@
3360342016,3360354303,VE
3360354304,3360356351,PA
3360356352,3360358399,CR
-3360358400,3360358911,CL
-3360358912,3360358919,CO
-3360358920,3360366591,CL
+3360358400,3360366591,CL
3360366592,3360382975,CO
3360382976,3360399359,VE
3360399360,3360403455,BO
@@ -77610,7 +84776,9 @@
3360707584,3360708095,US
3360708096,3360708223,AR
3360708224,3360708351,US
-3360708352,3360708991,AR
+3360708352,3360708479,AR
+3360708480,3360708735,US
+3360708736,3360708991,AR
3360708992,3360709247,US
3360709248,3360709631,AR
3360709632,3360709759,US
@@ -77626,7 +84794,9 @@
3360765952,3360767999,CO
3360768000,3360772351,AR
3360772352,3360772479,BO
-3360772480,3360781839,AR
+3360772480,3360780399,AR
+3360780400,3360780415,BR
+3360780416,3360781839,AR
3360781840,3360781847,DO
3360781848,3360781943,AR
3360781944,3360781947,MX
@@ -77653,9 +84823,7 @@
3361072640,3361072767,VE
3361072768,3361072895,CO
3361072896,3361073151,VE
-3361073152,3361074175,CO
-3361074176,3361074431,VE
-3361074432,3361079295,CO
+3361073152,3361079295,CO
3361079296,3361144831,CL
3361144832,3361210367,BO
3361210368,3361275903,DO
@@ -77704,18 +84872,22 @@
3362258944,3362324479,CL
3362324480,3362324735,AR
3362324736,3362324991,US
-3362324992,3362328063,AR
+3362324992,3362327039,AR
+3362327040,3362327551,US
+3362327552,3362328063,AR
3362328064,3362328575,US
3362328576,3362337279,AR
3362337280,3362338047,US
-3362338048,3362342143,AR
+3362338048,3362338559,AR
+3362338560,3362338815,US
+3362338816,3362339327,AR
+3362339328,3362339583,US
+3362339584,3362342143,AR
3362342144,3362342399,PA
3362342400,3362343423,AR
3362343424,3362343679,US
3362343680,3362344447,AR
-3362344448,3362344703,US
-3362344704,3362344959,AR
-3362344960,3362346751,US
+3362344448,3362346751,US
3362346752,3362348799,AR
3362348800,3362349055,US
3362349056,3362351103,CR
@@ -77729,8 +84901,7 @@
3362426880,3362428927,PA
3362428928,3362430975,CL
3362430976,3362447359,CO
-3362447360,3362447871,SV
-3362447872,3362448895,HN
+3362447360,3362448895,HN
3362448896,3362449151,SV
3362449152,3362449407,HN
3362449408,3362451199,SV
@@ -77760,7 +84931,13 @@
3362529280,3362537471,PA
3362537472,3362545663,AR
3362545664,3362549759,PE
-3362549760,3362553855,AR
+3362549760,3362551871,AR
+3362551872,3362551887,MX
+3362551888,3362552143,AR
+3362552144,3362552159,PR
+3362552160,3362553023,AR
+3362553024,3362553039,PR
+3362553040,3362553855,AR
3362553856,3362557951,PY
3362557952,3362562047,AR
3362570240,3362586623,UY
@@ -77893,7 +85070,9 @@
3368086528,3368087551,CR
3368087552,3370188799,BR
3370188800,3370196991,MX
-3370196992,3370487807,BR
+3370196992,3370214399,BR
+3370214400,3370215423,AR
+3370215424,3370487807,BR
3370487808,3370488831,CR
3370488832,3370489855,AR
3370489856,3370490879,VE
@@ -77901,7 +85080,9 @@
3370506240,3370507263,VE
3370507264,3370514943,BR
3370515456,3370516479,AR
-3370516480,3376873471,BR
+3370516480,3371106303,BR
+3371106304,3371122687,MX
+3371122688,3376873471,BR
3376881664,3376922623,BR
3376926720,3377291263,BR
3377295360,3377303551,BR
@@ -77917,21 +85098,28 @@
3380761088,3380761599,VE
3380761600,3380764671,BR
3380764672,3380808191,MX
+3380808192,3380808703,CR
3380808704,3380811775,MX
3380811776,3380813823,BR
3380813824,3380815103,MX
3380815104,3380815359,CR
+3380815360,3380815871,CL
3380815872,3380816127,MX
3380816128,3380816383,BO
3380816896,3380817151,MX
+3380817152,3380817407,BO
3380817920,3380818175,MX
+3380818176,3380818431,PA
3380818944,3380822527,MX
3380823040,3380824063,BR
-3380824064,3380826111,MX
+3380824064,3380824319,MX
+3380825088,3380825343,MX
+3380825344,3380825599,HT
3380826112,3380828159,BR
3380828160,3380828671,MX
3380829184,3380830207,BR
3380830208,3380830463,MX
+3380830464,3380830719,CO
3380831232,3380831743,MX
3380832256,3380832767,MX
3380833280,3380833791,MX
@@ -77939,6 +85127,7 @@
3380835328,3380835839,MX
3380836352,3380836607,MX
3380836608,3380836863,PE
+3380836864,3380837375,SV
3380837376,3380840447,MX
3380840448,3380843519,BR
3380843520,3380844543,PA
@@ -78062,9 +85251,7 @@
3384410112,3384672255,CL
3384672256,3384688639,HN
3384688640,3384705023,CO
-3384705024,3384705535,US
-3384705536,3384706047,PA
-3384706048,3384707071,US
+3384705024,3384707071,US
3384707072,3384721407,PA
3384721408,3384725503,US
3384725504,3384732415,PA
@@ -78151,7 +85338,9 @@
3387424768,3387555839,CO
3387555840,3387568127,AR
3387568128,3387572223,PE
-3387572224,3387573375,AR
+3387572224,3387572539,AR
+3387572540,3387572543,CO
+3387572544,3387573375,AR
3387573376,3387573759,CO
3387573760,3387574015,AR
3387574016,3387574143,CO
@@ -78159,7 +85348,9 @@
3387574784,3387575039,CO
3387575040,3387575295,AR
3387575296,3387575423,CO
-3387575424,3387575807,AR
+3387575424,3387575551,AR
+3387575552,3387575567,CO
+3387575568,3387575807,AR
3387575808,3387576063,CO
3387576064,3387576319,AR
3387576320,3387578367,EC
@@ -78268,7 +85459,8 @@
3389143040,3389145087,AU
3389145088,3389151231,HK
3389151232,3389152255,JP
-3389152256,3389153279,AU
+3389152256,3389153023,US
+3389153024,3389153279,AU
3389153280,3389161471,TV
3389161472,3389194239,JP
3389194240,3389195775,AU
@@ -78291,8 +85483,7 @@
3389214720,3389218815,NZ
3389218816,3389222911,AU
3389222912,3389223935,US
-3389223936,3389225983,IN
-3389225984,3389226239,SG
+3389223936,3389226239,IN
3389226240,3389226495,AU
3389226496,3389227007,IN
3389227008,3389227519,CN
@@ -78414,7 +85605,7 @@
3389458432,3389460479,AU
3389460480,3389464575,JP
3389464576,3389469695,NZ
-3389469696,3389471743,IN
+3389471232,3389471487,IN
3389471744,3389472767,NZ
3389472768,3389480959,AU
3389480960,3389489151,JP
@@ -78543,7 +85734,10 @@
3389812736,3389813759,AU
3389813760,3389814015,CN
3389814016,3389814527,TH
-3389814528,3389846527,AU
+3389814528,3389815295,AU
+3389816064,3389816575,AU
+3389816576,3389816831,US
+3389816832,3389846527,AU
3389846528,3389847551,JP
3389847552,3389849599,NZ
3389849600,3389915135,JP
@@ -78890,7 +86084,9 @@
3391954944,3391971327,HK
3391971328,3391979519,AU
3391979520,3391979775,HK
-3391979776,3391980031,JP
+3391979776,3391979955,CN
+3391979956,3391979957,JP
+3391979958,3391980031,CN
3391980032,3391980543,HK
3391980544,3391983615,MY
3391983616,3391984639,NP
@@ -78991,7 +86187,6 @@
3392416256,3392416767,HK
3392416768,3392417023,IN
3392417024,3392417535,AU
-3392417536,3392417791,HK
3392417792,3392418559,ID
3392418560,3392418815,SG
3392418816,3392419071,ID
@@ -79073,9 +86268,7 @@
3392692224,3392700415,IN
3392700416,3392708607,SG
3392708608,3392712703,ID
-3392712704,3392714751,AF
-3392714752,3392715007,FR
-3392715008,3392716799,AF
+3392712704,3392716799,AF
3392716800,3392733183,IN
3392733184,3392741375,ID
3392741376,3392765951,PH
@@ -79237,9 +86430,7 @@
3393189888,3393190911,CN
3393190912,3393191167,IN
3393191424,3393191935,SB
-3393191936,3393222911,HK
-3393222912,3393223167,MY
-3393223168,3393257471,HK
+3393191936,3393257471,HK
3393257472,3393260031,CN
3393260032,3393260543,BD
3393260544,3393265663,AU
@@ -79356,7 +86547,9 @@
3393855744,3393855999,NZ
3393856000,3393856255,AU
3393856256,3393856511,HK
-3393856768,3393857023,SG
+3393856768,3393856896,AU
+3393856897,3393856897,SG
+3393856898,3393857023,AU
3393857024,3393857535,NZ
3393857536,3393858047,HK
3393858304,3393858559,ID
@@ -79553,7 +86746,9 @@
3394760704,3394764799,ID
3394764800,3394772991,HK
3394777088,3394781183,JP
-3394781184,3394789375,MP
+3394781184,3394785023,MP
+3394785024,3394785279,US
+3394785280,3394789375,MP
3394789376,3394797567,HK
3394797568,3394813951,IN
3394813952,3394815999,JP
@@ -79603,7 +86798,7 @@
3394904320,3394904575,IN
3394904576,3394905087,AU
3394905088,3394905343,BN
-3394905344,3394906111,AU
+3394905600,3394906111,AU
3394906112,3394906367,IN
3394906368,3394906623,AU
3394906624,3394907135,IN
@@ -79611,7 +86806,6 @@
3394908160,3394910207,AU
3394910208,3394912255,NZ
3394912256,3394920447,PF
-3394920448,3394924543,IN
3394924544,3394928639,CN
3394928640,3394936831,PH
3394936832,3394940927,AU
@@ -79745,9 +86939,9 @@
3397070848,3397074943,PH
3397074944,3397083135,HK
3397083136,3397087231,CN
-3397091328,3397097471,GU
-3397097472,3397097855,MP
-3397097856,3397099519,GU
+3397091328,3397095679,GU
+3397095680,3397095935,MP
+3397095936,3397099519,GU
3397099520,3397103615,HK
3397103616,3397105663,LA
3397105664,3397107711,JP
@@ -79789,7 +86983,7 @@
3397213184,3397213439,IN
3397213440,3397213695,AU
3397213696,3397214207,ID
-3397214208,3397214719,MN
+3397214208,3397214719,BD
3397214720,3397215231,AU
3397215232,3397215743,ID
3397215744,3397216255,PH
@@ -79870,7 +87064,8 @@
3397500928,3397501951,BD
3397501952,3397503999,IN
3397504000,3397505023,TH
-3397505024,3397506559,IN
+3397505280,3397505535,IN
+3397506048,3397506559,IN
3397506560,3397506815,AU
3397506816,3397507071,IN
3397507072,3397507583,ID
@@ -79958,8 +87153,8 @@
3397878784,3397881855,JP
3397881856,3397882111,HK
3397882112,3397887999,JP
-3397888000,3397888768,IN
-3397888769,3397910527,JP
+3397888000,3397889023,IN
+3397889024,3397910527,JP
3397910528,3397918719,SG
3397918720,3397922815,AU
3397922816,3397926911,CN
@@ -80070,9 +87265,7 @@
3398639904,3398639907,MY
3398639908,3398640671,JP
3398640672,3398640695,SG
-3398640696,3398641407,JP
-3398641408,3398641663,MY
-3398641664,3398641919,JP
+3398640696,3398641919,JP
3398641920,3398642175,AU
3398642176,3398642431,JP
3398642432,3398642943,AU
@@ -80108,8 +87301,7 @@
3398830080,3398831103,KH
3398831104,3398831359,JP
3398831360,3398831615,HK
-3398831616,3398831871,SG
-3398831872,3398832127,JP
+3398831616,3398832127,JP
3398832128,3398840319,CN
3398840320,3398842367,JP
3398842368,3398843391,CN
@@ -80291,9 +87483,7 @@
3399995392,3399999487,KR
3399999488,3400000255,SG
3400000256,3400000511,AU
-3400000512,3400002303,SG
-3400002304,3400002367,HK
-3400002368,3400004607,SG
+3400000512,3400004607,SG
3400004608,3400004863,AU
3400004864,3400005119,SG
3400005120,3400005375,AU
@@ -80400,7 +87590,9 @@
3400433664,3400435711,HK
3400435712,3400435967,BD
3400435968,3400441855,HK
-3400441856,3400450047,NZ
+3400441856,3400446975,NZ
+3400446976,3400447231,GB
+3400447232,3400450047,NZ
3400450048,3400458239,JP
3400458240,3400466431,AU
3400466432,3400499199,MO
@@ -80428,7 +87620,9 @@
3400648832,3400649943,SG
3400649944,3400649951,HK
3400649952,3400650239,SG
-3400650240,3400654847,AU
+3400650240,3400650495,AU
+3400650496,3400650751,SG
+3400650752,3400654847,AU
3400654848,3400663039,IN
3400663040,3400683519,MY
3400683520,3400691711,JP
@@ -80476,7 +87670,8 @@
3401400320,3401404415,AU
3401404416,3401408511,CN
3401408512,3401416703,HK
-3401416704,3401420799,KR
+3401416704,3401416959,KR
+3401417728,3401420799,SG
3401420800,3401424895,JP
3401424896,3401428991,NZ
3401428992,3401431039,JP
@@ -80500,7 +87695,9 @@
3401545728,3401547775,BD
3401547776,3401580543,IN
3401580544,3402629119,CN
-3402629120,3405774847,JP
+3402629120,3402917631,JP
+3402917632,3402917887,US
+3402917888,3405774847,JP
3405774848,3405775871,AU
3405775872,3405776895,CN
3405776896,3405777407,AU
@@ -80698,8 +87895,6 @@
3406208512,3406208767,AU
3406208768,3406209023,CN
3406209024,3406221311,AU
-3406221824,3406222079,IN
-3406222592,3406222847,IN
3406223360,3406225407,AU
3406225408,3406229503,CN
3406229504,3406231039,AU
@@ -81009,7 +88204,9 @@
3406864640,3406865151,CN
3406865152,3406865663,AU
3406865664,3406865919,IN
-3406865920,3406871039,AU
+3406865920,3406869759,AU
+3406869760,3406870015,JP
+3406870016,3406871039,AU
3406871040,3406871551,CN
3406871552,3406881791,AU
3406881792,3406882047,CN
@@ -81056,7 +88253,9 @@
3406948352,3406948607,AU
3406948608,3406948863,CN
3406948864,3406950655,AU
-3406950656,3406951423,NF
+3406950656,3406950911,NF
+3406950912,3406951167,AU
+3406951168,3406951423,NF
3406951424,3406952447,AU
3406952448,3406952703,CN
3406952960,3406954239,AU
@@ -81361,8 +88560,8 @@
3407377408,3407377663,CN
3407377664,3407378943,AU
3407378944,3407379455,CN
-3407379456,3407382271,AU
-3407382272,3407382527,JP
+3407379456,3407382015,AU
+3407382016,3407382527,JP
3407382528,3407384831,AU
3407384832,3407385087,CN
3407385088,3407386623,AU
@@ -81436,7 +88635,11 @@
3407473408,3407473919,CN
3407473920,3407475199,AU
3407475200,3407475455,CN
-3407475456,3407481855,AU
+3407475456,3407481087,AU
+3407481088,3407481223,JP
+3407481224,3407481231,AU
+3407481232,3407481599,JP
+3407481600,3407481855,AU
3407481856,3407482111,CN
3407482112,3407487487,AU
3407487488,3407487743,CN
@@ -82101,7 +89304,9 @@
3409871616,3409871871,CN
3409871872,3409873663,AU
3409873664,3409873919,CN
-3409873920,3409876991,AU
+3409873920,3409875967,AU
+3409875968,3409876735,JP
+3409876736,3409876991,AU
3409876992,3409878015,TH
3409878016,3409879295,AU
3409879296,3409879551,CN
@@ -82299,7 +89504,7 @@
3411641344,3411642367,IN
3411642368,3411643391,CN
3411643392,3411644415,VN
-3411644416,3411644927,AU
+3411644672,3411644927,AU
3411644928,3411645951,ID
3411645952,3411646207,SG
3411646208,3411647487,IN
@@ -82478,7 +89683,8 @@
3413180416,3413213183,TH
3413213184,3413229567,VN
3413229568,3413245951,AU
-3413245952,3413262335,MY
+3413245952,3413251071,MY
+3413251072,3413262335,JP
3413262336,3413263359,PH
3413270528,3413278719,TH
3413278720,3413295103,NZ
@@ -82495,11 +89701,7 @@
3413327872,3413344255,IN
3413344256,3413360639,PH
3413360640,3413377023,MY
-3413377024,3413395199,SG
-3413395200,3413395455,AU
-3413395456,3413415935,SG
-3413415936,3413416191,AU
-3413416192,3413524479,SG
+3413377024,3413524479,SG
3413524480,3413540863,TH
3413540864,3413557247,NZ
3413557248,3413565439,CN
@@ -82577,7 +89779,9 @@
3413934080,3413946367,IN
3413946368,3413950463,AU
3413950464,3413966847,IN
-3413966848,3414050303,SG
+3413966848,3414024191,SG
+3414024192,3414024447,AU
+3414024448,3414050303,SG
3414050304,3414050559,US
3414050560,3414155519,SG
3414155520,3414155775,PH
@@ -82748,7 +89952,6 @@
3416262656,3416264703,AU
3416264704,3416268799,JP
3416268800,3416272895,HK
-3416274688,3416274943,MN
3416274944,3416276991,ID
3416276992,3416285183,HK
3416285184,3416287231,VN
@@ -82777,8 +89980,6 @@
3416372224,3416372479,CN
3416372480,3416372735,SG
3416372736,3416372991,AU
-3416373248,3416373503,AU
-3416373504,3416373759,SG
3416373760,3416374271,AU
3416374272,3416374527,PH
3416374528,3416374783,IN
@@ -82790,12 +89991,13 @@
3416474584,3416474599,AU
3416474600,3416474639,JP
3416474640,3416474647,NZ
-3416474648,3416475391,JP
-3416475392,3416475647,NZ
-3416475648,3416482047,JP
-3416482048,3416482303,SG
-3416482304,3416489727,JP
-3416489728,3416489983,AU
+3416474648,3416475439,JP
+3416475440,3416475455,NZ
+3416475456,3416482047,JP
+3416482048,3416482055,SG
+3416482056,3416489755,JP
+3416489756,3416489759,AU
+3416489760,3416489983,JP
3416489984,3416506367,VN
3416506368,3416514559,TW
3416514560,3416522751,IN
@@ -82803,8 +90005,8 @@
3416588288,3416653823,JP
3416653824,3416667135,AU
3416667136,3416667647,US
-3416667648,3416667775,AU
-3416667776,3416668159,US
+3416667648,3416667903,AU
+3416667904,3416668159,US
3416668160,3416686591,AU
3416686592,3416694783,SG
3416694784,3416702975,CN
@@ -82887,7 +90089,7 @@
3417014272,3417022463,JP
3417022464,3417030655,KR
3417030656,3417034751,AU
-3417034752,3417035775,IN
+3417035008,3417035775,IN
3417035776,3417036799,JP
3417036800,3417037823,ID
3417037824,3417038079,AU
@@ -82912,14 +90114,11 @@
3417182208,3417184767,AU
3417184768,3417185023,MN
3417185024,3417185279,AF
-3417185280,3417185535,AU
-3417185536,3417185791,SG
+3417185280,3417185791,SG
3417185792,3417186303,NZ
3417186304,3417194495,HK
3417194496,3417198591,JP
-3417198592,3417200127,SG
-3417200128,3417200383,AU
-3417200384,3417200639,SG
+3417198592,3417200639,SG
3417200640,3417202687,JP
3417202688,3417210879,CN
3417210880,3417227263,AU
@@ -83034,7 +90233,9 @@
3418243072,3418251263,PH
3418251264,3418255359,CN
3418255360,3418257407,ID
-3418257408,3418259455,HK
+3418257408,3418257663,HK
+3418257664,3418257919,AU
+3418257920,3418259455,HK
3418259456,3418267647,IN
3418267648,3418271743,VN
3418271744,3418273791,SG
@@ -83045,9 +90246,7 @@
3418282240,3418282495,AU
3418282496,3418283519,PH
3418283520,3418284031,AU
-3418284032,3418286847,SG
-3418286848,3418287103,AU
-3418287104,3418288127,SG
+3418284032,3418288127,SG
3418288128,3418290175,ID
3418290176,3418290431,IN
3418290432,3418290687,CN
@@ -83066,7 +90265,6 @@
3418301440,3418302463,AU
3418302464,3418304511,ID
3418304512,3418306559,VN
-3418306560,3418307583,MN
3418308608,3418324991,CN
3418324992,3418326015,VU
3418326016,3418326271,AU
@@ -83094,7 +90292,9 @@
3418403584,3418403839,AU
3418403840,3418406911,JP
3418406912,3418423295,IN
-3418423296,3418444091,HK
+3418423296,3418434559,HK
+3418434560,3418434815,SG
+3418434816,3418444091,HK
3418444092,3418444095,CN
3418444096,3418456063,HK
3418456064,3418472447,IN
@@ -83156,7 +90356,13 @@
3419078656,3419209727,TW
3419209728,3419226111,VN
3419226112,3419234303,CN
-3419234304,3419242495,JP
+3419234304,3419239935,JP
+3419239936,3419240447,US
+3419240448,3419240959,JP
+3419240960,3419241471,US
+3419241472,3419241983,JP
+3419241984,3419242239,US
+3419242240,3419242495,JP
3419242496,3419275263,CN
3419275264,3419340799,AU
3419340800,3419344895,TW
@@ -83233,8 +90439,8 @@
3419897856,3419899903,JP
3419899904,3419900159,FR
3419900160,3419900415,BE
-3419900416,3419901439,AU
-3419901440,3419901951,NZ
+3419900416,3419901567,AU
+3419901568,3419901951,NZ
3419901952,3419902207,AU
3419902208,3419902463,HK
3419902464,3419902719,CN
@@ -83313,15 +90519,12 @@
3422000536,3422000536,IN
3422000537,3422552063,KR
3422552064,3422850559,US
-3422850560,3422851071,GB
-3422851072,3422955519,US
+3422850560,3422850815,GB
+3422850816,3422955519,US
3422955520,3422956799,FR
-3422956800,3423092735,US
-3423092736,3423092767,VI
-3423092768,3423092783,US
-3423092784,3423092831,VI
-3423092832,3423092847,US
-3423092848,3423093759,VI
+3422956800,3423076351,US
+3423077376,3423092735,US
+3423092736,3423093759,VI
3423093760,3423094783,US
3423094784,3423095807,CA
3423095808,3423128575,US
@@ -83333,10 +90536,8 @@
3423182848,3423184895,CA
3423184896,3423204095,US
3423204096,3423204351,CA
-3423204352,3423222271,US
-3423222272,3423222527,CA
-3423222528,3423229951,US
-3423232000,3423236095,US
+3423204352,3423229951,US
+3423230976,3423236095,US
3423238144,3423248383,US
3423248384,3423249407,CA
3423249408,3423258623,US
@@ -83368,9 +90569,7 @@
3423468544,3423469567,CA
3423469568,3423473663,US
3423473664,3423474687,CA
-3423474688,3423480063,US
-3423480064,3423480319,AU
-3423480320,3423480831,US
+3423474688,3423480831,US
3423480832,3423480987,NG
3423480988,3423480988,US
3423480989,3423481343,NG
@@ -83440,15 +90639,16 @@
3424507136,3424507391,CA
3424507392,3425173503,US
3425173504,3425304575,CA
-3425304576,3425471487,US
-3425472512,3425697791,US
+3425304576,3425697791,US
3425697792,3425699839,CA
3425699840,3425711615,US
3425713152,3425714175,US
3425714176,3425722367,CA
3425722368,3425726463,US
3425728512,3425828863,US
-3425828864,3425894399,CA
+3425828864,3425869167,CA
+3425869168,3425869183,US
+3425869184,3425894399,CA
3425894400,3426013183,US
3426013184,3426013439,IL
3426013440,3426306559,US
@@ -83767,9 +90967,7 @@
3429171200,3429236735,CA
3429236736,3429382143,US
3429382144,3429382399,DE
-3429382400,3429401855,US
-3429401856,3429402111,CA
-3429402112,3429500927,US
+3429382400,3429500927,US
3429500928,3429502975,CA
3429502976,3429517407,US
3429517408,3429517411,HK
@@ -83786,9 +90984,7 @@
3429892096,3429957631,CA
3429957632,3430073354,US
3430073355,3430073355,AU
-3430073356,3430074111,US
-3430074112,3430074367,AU
-3430074368,3430146047,US
+3430073356,3430146047,US
3430148096,3430328831,US
3430328832,3430329087,GH
3430329088,3430354943,US
@@ -83856,12 +91052,15 @@
3430845440,3430845951,MX
3430845952,3430849535,US
3430849536,3430850047,CA
-3430850048,3430973951,US
-3430974208,3431114495,US
+3430850048,3431114495,US
3431114496,3431114751,CA
3431114752,3431468031,US
3431468032,3431469055,CA
-3431469056,3431596287,US
+3431469056,3431526911,US
+3431526912,3431526921,CH
+3431526922,3431526922,US
+3431526923,3431527167,CH
+3431527168,3431596287,US
3431596288,3431602687,CA
3431602688,3431602943,US
3431602944,3431606271,CA
@@ -83951,7 +91150,8 @@
3432689152,3432689663,CA
3432689664,3432695807,US
3432697856,3432708095,US
-3432710144,3432807423,US
+3432710144,3432717311,US
+3432718336,3432807423,US
3432807424,3432808447,CA
3432808448,3433824511,US
3433824512,3433824767,DE
@@ -83969,7 +91169,8 @@
3434014720,3434015231,US
3434015232,3434020607,CA
3434020608,3434427391,US
-3434427392,3434428415,HR
+3434427392,3434428159,HR
+3434428160,3434428415,HN
3434428416,3434433279,US
3434433280,3434433535,PR
3434433536,3434553343,US
@@ -83981,7 +91182,9 @@
3434575616,3434583039,US
3434583040,3434584063,NL
3434584064,3434807551,US
-3434807552,3434831359,CA
+3434807552,3434810111,CA
+3434810112,3434810367,US
+3434810368,3434831359,CA
3434831360,3434831615,US
3434831616,3434872575,CA
3434872576,3434913791,US
@@ -84016,9 +91219,7 @@
3436290048,3436314367,CA
3436314368,3436476415,US
3436476416,3436478463,AW
-3436478464,3436492799,US
-3436492800,3436493055,NL
-3436493056,3436507135,US
+3436478464,3436507135,US
3436507136,3436509183,BB
3436509184,3436697087,US
3436697088,3436697343,VE
@@ -84140,8 +91341,8 @@
3437755904,3437756159,US
3437756160,3437756415,IE
3437756416,3437772799,US
-3437772800,3437776895,CA
-3437776896,3437789863,US
+3437772800,3437776639,CA
+3437776640,3437789863,US
3437789864,3437789871,AU
3437789872,3437961215,US
3437961216,3437964287,ZA
@@ -84290,8 +91491,8 @@
3449212928,3449213183,US
3449213184,3449213695,CA
3449213696,3449214975,US
-3449214976,3449215743,CA
-3449215744,3449215871,US
+3449214976,3449215487,CA
+3449215488,3449215871,US
3449215872,3449215999,CA
3449216000,3449220607,US
3449220608,3449221375,CA
@@ -84310,9 +91511,7 @@
3449575680,3449593855,US
3449593856,3449594111,AU
3449594112,3449638911,US
-3449638912,3449639167,GB
-3449639168,3449639423,US
-3449639424,3449639679,GB
+3449638912,3449639679,GB
3449639680,3449639935,US
3449639936,3449640191,GB
3449640192,3449640447,NL
@@ -84329,7 +91528,9 @@
3449843200,3449843711,YE
3449843712,3449874687,US
3449874688,3449874943,AG
-3449874944,3449923583,US
+3449874944,3449884159,US
+3449884160,3449884415,AS
+3449884416,3449923583,US
3449923584,3449923839,ES
3449923840,3449974783,US
3449974784,3449976831,CA
@@ -84380,17 +91581,13 @@
3450950656,3450951679,JP
3450951680,3450953727,US
3450953728,3450957823,DE
-3450957824,3450974207,US
-3450974208,3450974463,GB
-3450974464,3450975231,US
+3450957824,3450975231,US
3450975232,3450975743,LB
3450975744,3450982399,US
3450982400,3450984447,TW
3450984448,3450986495,PH
3450986496,3450986751,HK
-3450986752,3450987007,US
-3450987008,3450987263,CN
-3450987264,3451170303,US
+3450986752,3451170303,US
3451170304,3451170559,VE
3451170560,3451187967,US
3451187968,3451188223,AU
@@ -84467,9 +91664,7 @@
3452174336,3452180479,US
3452181504,3452436479,US
3452436480,3452502015,CA
-3452502016,3452678399,US
-3452678400,3452682239,BE
-3452682240,3452715007,US
+3452502016,3452715007,US
3452715008,3452723199,CA
3452723200,3452764671,US
3452764672,3452765183,CA
@@ -84491,9 +91686,7 @@
3452770304,3452770559,CA
3452770560,3452770815,US
3452770816,3452771071,CA
-3452771072,3452771327,US
-3452771328,3452771583,CA
-3452771584,3452771839,US
+3452771072,3452771839,US
3452771840,3452773119,CA
3452773120,3452773375,US
3452773376,3452773887,CA
@@ -84570,7 +91763,9 @@
3452813312,3452813567,US
3452813568,3452814079,CA
3452814080,3452814335,US
-3452814336,3452816127,CA
+3452814336,3452815359,CA
+3452815360,3452815615,US
+3452815616,3452816127,CA
3452816128,3452816511,US
3452816512,3452816527,CA
3452816528,3452816895,US
@@ -84588,7 +91783,9 @@
3452821504,3452822271,US
3452822272,3452822527,CA
3452822528,3452822783,US
-3452822784,3452824063,CA
+3452822784,3452823551,CA
+3452823552,3452823807,US
+3452823808,3452824063,CA
3452824064,3452824319,US
3452824320,3452824575,CA
3452824576,3452824831,US
@@ -84917,7 +92114,9 @@
3456303104,3456311295,JP
3456311296,3456360447,US
3456360448,3456364543,BG
-3456364544,3456892927,US
+3456364544,3456856063,US
+3456856064,3456856319,CA
+3456856320,3456892927,US
3456892928,3456958463,CA
3456958464,3457551871,US
3457551872,3457552127,CA
@@ -84965,7 +92164,7 @@
3458820096,3458820351,CA
3458820352,3458820863,US
3458820864,3458821119,JM
-3458822144,3459055615,US
+3458821120,3459055615,US
3459055616,3459121151,CA
3459121152,3459186687,US
3459186688,3459252223,CA
@@ -85091,14 +92290,12 @@
3459456512,3459456767,US
3459456768,3459457279,CA
3459457536,3459457791,CA
-3459457792,3459458047,PR
3459458048,3459512319,US
3459512320,3459513855,CA
3459513856,3459592191,US
3459592192,3459596287,CA
3459596288,3459614719,US
-3459616768,3459617023,CA
-3459617024,3459617791,US
+3459616768,3459617791,US
3459617792,3459617999,CA
3459618000,3459618000,ID
3459618001,3459618047,CA
@@ -85107,12 +92304,14 @@
3459619072,3459622911,US
3459624960,3459629055,BM
3459629056,3459631103,US
-3459633152,3459731455,US
+3459633152,3459686399,US
+3459686400,3459687167,NL
+3459687168,3459731455,US
3459731456,3459735551,CA
3459735552,3459745535,US
3459745536,3459745791,IT
3459745792,3459842815,US
-3459842816,3459843071,AR
+3459842816,3459843071,BR
3459843072,3459848959,US
3459848960,3459849215,FR
3459849216,3459850239,US
@@ -85441,7 +92640,9 @@
3464388608,3464391935,US
3464391936,3464392191,CA
3464392192,3464394751,US
-3464394752,3464396799,VC
+3464394752,3464395263,VC
+3464395264,3464395519,LC
+3464395520,3464396799,VC
3464396800,3464415231,US
3464417280,3464421631,US
3464421632,3464421887,CA
@@ -85510,9 +92711,9 @@
3465962496,3465962751,CA
3465962752,3466067967,US
3466067968,3466068223,CA
-3466068224,3466068991,US
-3466068992,3466069247,CA
-3466069248,3466069343,US
+3466068224,3466069071,US
+3466069072,3466069087,CA
+3466069088,3466069343,US
3466069344,3466069375,CA
3466069376,3466069447,US
3466069448,3466069455,CA
@@ -85556,11 +92757,13 @@
3466914304,3466914559,FR
3466914560,3466929407,US
3466929408,3466929663,IT
-3466929664,3466937663,US
+3466929664,3466937599,US
+3466937600,3466937663,ES
3466937664,3466937669,DE
3466937670,3466937670,US
3466937671,3466937727,DE
-3466937728,3466938444,US
+3466937728,3466937855,ES
+3466937856,3466938444,US
3466938445,3466938448,HK
3466938449,3466938807,US
3466938808,3466938811,GB
@@ -85700,9 +92903,7 @@
3469176320,3469176575,MX
3469176576,3469186303,US
3469186304,3469186559,MX
-3469186560,3469859583,US
-3469859584,3469859839,CA
-3469859840,3469893631,US
+3469186560,3469893631,US
3469893632,3469901823,CA
3469901824,3469989887,US
3469990400,3470131199,US
@@ -85802,7 +93003,9 @@
3473755392,3473755647,HN
3473755648,3473765887,US
3473765888,3473766399,EC
-3473766400,3473901055,US
+3473766400,3473786111,US
+3473786112,3473786127,PR
+3473786128,3473901055,US
3473901056,3473901311,EC
3473901312,3473917439,US
3473917440,3473917695,PR
@@ -85837,7 +93040,9 @@
3475670272,3475670527,AI
3475670528,3475670783,LC
3475670784,3475670847,DM
-3475670848,3475671039,AG
+3475670848,3475670857,AG
+3475670858,3475670858,DM
+3475670859,3475671039,AG
3475671040,3475681279,US
3475681280,3475685375,HN
3475685376,3475851263,US
@@ -86021,7 +93226,9 @@
3481843456,3481843711,GB
3481843712,3481951395,US
3481951396,3481951399,GB
-3481951400,3481964575,US
+3481951400,3481958271,US
+3481958272,3481958399,NL
+3481958400,3481964575,US
3481964576,3481964579,IE
3481964580,3481993791,US
3481993792,3481993799,CA
@@ -86105,9 +93312,9 @@
3482039296,3482039551,US
3482039552,3482040319,CA
3482040320,3482041087,US
-3482041088,3482041343,CA
-3482041344,3482041599,US
-3482041600,3482042367,CA
+3482041088,3482041855,CA
+3482041856,3482042111,US
+3482042112,3482042367,CA
3482042368,3482043903,US
3482043904,3482044927,CA
3482044928,3482045183,US
@@ -86125,7 +93332,11 @@
3482051584,3482051839,US
3482051840,3482052863,CA
3482052864,3482053631,US
-3482053632,3482054655,CA
+3482053632,3482053887,CA
+3482053888,3482053999,US
+3482054000,3482054015,CA
+3482054016,3482054143,US
+3482054144,3482054655,CA
3482054656,3482058239,US
3482058240,3482058495,CA
3482058496,3482583039,US
@@ -86246,9 +93457,9 @@
3485462528,3485464575,VC
3485464576,3485466623,LC
3485466624,3485597695,US
-3485597696,3485672543,CA
-3485672544,3485672551,US
-3485672552,3485695999,CA
+3485597696,3485694975,CA
+3485694976,3485695231,US
+3485695232,3485695999,CA
3485696000,3485721056,US
3485721057,3485721057,AE
3485721058,3485959423,US
@@ -86457,11 +93668,11 @@
3486702592,3486702847,CA
3486702848,3487039487,US
3487039488,3487105023,CA
-3487105024,3487175935,US
+3487105024,3487174143,US
+3487174144,3487174271,CH
+3487174272,3487175935,US
3487175936,3487176191,GB
-3487176192,3487177983,US
-3487177984,3487178239,GB
-3487178240,3487181359,US
+3487176192,3487181359,US
3487181360,3487181375,GB
3487181376,3487189247,US
3487189248,3487189503,DK
@@ -86551,7 +93762,7 @@
3489399040,3489464319,US
3489464320,3489529855,CA
3489529856,3489562623,US
-3489563136,3489563391,JM
+3489565440,3489565695,JM
3489566720,3489575935,US
3489575936,3489576959,CN
3489576960,3489577215,US
@@ -86581,7 +93792,9 @@
3490265344,3490267135,CO
3490267136,3490488319,US
3490488320,3490489343,PR
-3490489344,3490703615,US
+3490489344,3490702847,US
+3490702848,3490703103,AS
+3490703104,3490703615,US
3490703616,3490703871,PR
3490703872,3490786047,US
3490786048,3490786303,PR
@@ -86594,9 +93807,7 @@
3491478528,3491637247,US
3491637248,3491637759,CO
3491637760,3491651583,US
-3491651584,3491654655,VI
-3491654656,3491654911,US
-3491654912,3491659775,VI
+3491651584,3491659775,VI
3491659776,3491743743,US
3491743744,3491745791,CO
3491745792,3491969023,US
@@ -86609,21 +93820,27 @@
3492812760,3492812763,JP
3492812764,3492845823,US
3492845824,3492846079,CH
-3492846080,3492867071,US
+3492846080,3492858111,US
+3492858112,3492858367,SA
+3492858368,3492864767,US
+3492864768,3492865023,CA
+3492865024,3492865279,US
+3492865280,3492865359,GB
+3492865360,3492865375,US
+3492865376,3492865504,GB
+3492865505,3492865505,US
+3492865506,3492865535,GB
+3492865536,3492867071,US
3492867072,3492867327,FR
-3492867328,3492868607,US
-3492868608,3492868863,MX
-3492868864,3492869631,US
+3492867328,3492869631,US
3492869632,3492869887,BR
3492869888,3492877954,US
3492877955,3492877955,CA
-3492877956,3492886527,US
-3492886528,3492886559,GB
-3492886560,3492886591,US
-3492886592,3492886783,GB
-3492886784,3492894975,US
+3492877956,3492894975,US
3492894976,3492895231,BE
-3492895232,3492912127,US
+3492895232,3492910079,US
+3492910080,3492910207,GB
+3492910208,3492912127,US
3492912128,3492912151,GB
3492912152,3492912159,US
3492912160,3492912383,GB
@@ -86631,9 +93848,9 @@
3492913664,3492913919,CA
3492913920,3492917247,US
3492917248,3492917503,VI
-3492917504,3492923391,US
-3492923392,3492923647,GB
-3492923648,3492933375,US
+3492917504,3492921855,US
+3492921856,3492922111,VI
+3492922112,3492933375,US
3492933376,3492933376,CA
3492933377,3492933377,CH
3492933378,3492933631,CA
@@ -86645,17 +93862,15 @@
3492950864,3492950879,DE
3492950880,3492954623,US
3492954624,3492955135,GB
-3492955136,3492960255,US
-3492960256,3492960511,ES
-3492960512,3492962815,US
-3492962816,3492963071,GB
-3492963072,3492968191,US
+3492955136,3492957695,US
+3492957696,3492958207,VI
+3492958208,3492962559,US
+3492962560,3492962815,GB
+3492962816,3492968191,US
3492968192,3492968447,GB
-3492968448,3492969505,US
-3492969506,3492969506,VI
-3492969507,3492969535,US
-3492969536,3492969599,VI
-3492969600,3492994815,US
+3492968448,3492969471,US
+3492969472,3492969727,VI
+3492969728,3492994815,US
3492994816,3492995071,GB
3492995072,3492996127,US
3492996128,3492996136,GB
@@ -86665,15 +93880,15 @@
3493013760,3493014015,GB
3493014016,3493014627,US
3493014628,3493014628,GB
-3493014629,3493029341,US
-3493029342,3493029342,GB
-3493029343,3493039359,US
+3493014629,3493029119,US
+3493029120,3493029311,GB
+3493029312,3493029327,US
+3493029328,3493029375,GB
+3493029376,3493039359,US
3493039360,3493039615,AR
3493039616,3493061119,US
3493061120,3493061375,BR
-3493061376,3493062911,US
-3493062912,3493063167,DE
-3493063168,3493073151,US
+3493061376,3493073151,US
3493073152,3493073407,BO
3493073408,3493073663,US
3493073664,3493073919,BO
@@ -86708,10 +93923,10 @@
3493987328,3493990399,US
3493990400,3493991423,CA
3493991424,3493998591,US
-3493998592,3493998847,AI
-3493998848,3493999359,KN
+3493998592,3493999103,AI
+3493999104,3493999359,KN
3493999360,3494000639,AI
-3494000640,3494003711,US
+3494000640,3494002687,US
3494003712,3494004735,CA
3494004736,3494009855,US
3494009856,3494010879,CA
@@ -86757,7 +93972,7 @@
3494244352,3494246399,CA
3494246400,3494247423,US
3494247424,3494250495,CA
-3494250496,3494262783,US
+3494251520,3494262783,US
3494262784,3494264831,CA
3494264832,3494271999,US
3494272000,3494273023,KN
@@ -86780,7 +93995,8 @@
3494361088,3494362111,CA
3494362112,3494380543,US
3494380544,3494381567,CA
-3494381568,3494402559,US
+3494381568,3494386687,US
+3494387712,3494402559,US
3494402560,3494402815,GB
3494402816,3494410239,US
3494410240,3494412287,CA
@@ -86803,9 +94019,7 @@
3494496512,3494496767,US
3494498304,3494510591,US
3494510592,3494512639,CA
-3494512640,3494512895,US
-3494512896,3494513151,NO
-3494513152,3494516735,US
+3494512640,3494516735,US
3494516736,3494517759,CA
3494517760,3494540031,US
3494540032,3494540287,UG
@@ -86855,7 +94069,8 @@
3494788096,3494788351,NG
3494788352,3494788607,LY
3494788608,3494789119,CA
-3494789120,3494852607,US
+3494789120,3494812671,US
+3494813696,3494852607,US
3494852608,3494854655,CA
3494854656,3494862847,US
3494862848,3494863871,DM
@@ -86916,10 +94131,11 @@
3495215104,3495217151,VI
3495217152,3495219199,VC
3495219200,3495225343,US
+3495225856,3495226111,GB
3495226624,3495226879,US
3495227392,3495251967,US
3495251968,3495254015,CA
-3495254016,3495260159,US
+3495255040,3495260159,US
3495260160,3495261183,CA
3495261184,3495271423,US
3495272192,3495285759,US
@@ -86980,9 +94196,9 @@
3495620608,3495622655,CA
3495622656,3495635967,US
3495636992,3495647231,US
-3495648000,3495653887,US
-3495653888,3495654143,CA
-3495654144,3495673855,US
+3495648000,3495654143,US
+3495654144,3495654399,CA
+3495654400,3495673855,US
3495673856,3495674879,MF
3495674880,3495675391,VG
3495675392,3495688191,US
@@ -87018,9 +94234,10 @@
3495864320,3495864831,DM
3495864832,3495865343,MF
3495865344,3495866367,US
-3495866368,3495866623,VC
-3495866624,3495866879,LC
-3495866880,3495867391,VC
+3495866368,3495866623,LC
+3495866624,3495867050,VC
+3495867051,3495867051,LC
+3495867052,3495867391,VC
3495867392,3495867647,LC
3495867648,3495868415,VC
3495868416,3495871487,US
@@ -87046,8 +94263,10 @@
3496189952,3496190519,US
3496190520,3496190527,CA
3496190528,3496190719,US
-3496190720,3496190975,CA
-3496190976,3496296447,US
+3496190720,3496190735,CA
+3496190736,3496190751,US
+3496190752,3496190767,CA
+3496190768,3496296447,US
3496296448,3496312831,CA
3496312832,3496468479,US
3496468480,3496476671,CA
@@ -87294,7 +94513,9 @@
3507038208,3507040255,TW
3507040256,3507290111,US
3507290112,3507355647,AR
-3507355648,3507470335,US
+3507355648,3507427583,US
+3507427584,3507427839,CA
+3507427840,3507470335,US
3507470336,3507486719,CA
3507486720,3507585023,US
3507585024,3507598911,CA
@@ -87498,15 +94719,11 @@
3509522176,3509522431,CA
3509522432,3509522687,KW
3509522688,3509522943,CA
-3509522944,3509523679,US
-3509523680,3509523695,CA
-3509523696,3509524223,US
-3509524224,3509524735,CA
+3509522944,3509524479,US
+3509524480,3509524735,CA
3509524736,3509524991,US
3509524992,3509525759,CA
-3509525760,3509526015,US
-3509526016,3509526271,CA
-3509526272,3509526527,US
+3509525760,3509526527,US
3509526528,3509526783,CA
3509526784,3509527807,US
3509527808,3509528063,CA
@@ -87517,7 +94734,9 @@
3509532672,3509532927,US
3509532928,3509533439,CA
3509533440,3509534719,US
-3509534720,3509535999,CA
+3509534720,3509535487,CA
+3509535488,3509535743,US
+3509535744,3509535999,CA
3509536000,3509536255,US
3509536256,3509536767,CA
3509536768,3509537279,US
@@ -87526,9 +94745,11 @@
3509538560,3509538815,CA
3509538816,3509539071,US
3509539072,3509539327,CA
-3509539328,3509539583,US
-3509539584,3509540095,CA
-3509540096,3509540607,US
+3509539328,3509539631,US
+3509539632,3509539647,CA
+3509539648,3509539967,US
+3509539968,3509540031,CA
+3509540032,3509540607,US
3509540608,3509541503,CA
3509541504,3509541631,US
3509541632,3509541887,CA
@@ -87544,14 +94765,16 @@
3509546096,3509546111,CA
3509546112,3509546495,US
3509546496,3509547007,CA
-3509547008,3509551359,US
-3509551360,3509551871,CA
+3509547008,3509551615,US
+3509551616,3509551871,CA
3509551872,3509552127,US
3509552128,3509552639,CA
3509552640,3509553919,US
3509553920,3509554959,CA
3509554960,3509555199,US
-3509555200,3509556735,CA
+3509555200,3509555455,CA
+3509555456,3509555711,US
+3509555712,3509556735,CA
3509556736,3509557759,US
3509557760,3509558015,CA
3509558016,3509559039,US
@@ -87573,11 +94796,9 @@
3509567232,3509569023,CA
3509569024,3509569535,US
3509569536,3509569791,CA
-3509569792,3509570815,US
-3509570816,3509571583,CA
-3509571584,3509571839,US
-3509571840,3509572095,CA
-3509572096,3509572351,US
+3509569792,3509571071,US
+3509571072,3509571327,CA
+3509571328,3509572351,US
3509572352,3509573375,CA
3509573376,3509573439,US
3509573440,3509573455,CA
@@ -87927,7 +95148,9 @@
3515301888,3515318271,CA
3515318272,3515358975,US
3515358976,3515359231,MX
-3515359232,3515596799,US
+3515359232,3515450623,US
+3515450624,3515450879,CA
+3515450880,3515596799,US
3515596800,3515613183,CA
3515613184,3515711487,US
3515711488,3515731967,CA
@@ -87958,7 +95181,9 @@
3516530688,3516643083,US
3516643084,3516643087,PR
3516643088,3516899839,US
-3516899840,3516900095,NG
+3516899840,3516900031,NG
+3516900032,3516900063,US
+3516900064,3516900095,NG
3516900096,3516900351,US
3516900352,3516900607,NG
3516900608,3516900863,US
@@ -87983,13 +95208,17 @@
3517120512,3517173759,US
3517173760,3517174783,IN
3517174784,3517233151,US
-3517233152,3517235199,GU
+3517233152,3517234687,GU
+3517234688,3517234943,US
+3517234944,3517235199,GU
3517235200,3517382655,US
3517382656,3517383167,CA
3517383168,3517383423,US
3517383424,3517384703,CA
-3517384704,3517385215,US
-3517385216,3517385727,CA
+3517384704,3517385407,US
+3517385408,3517385439,CA
+3517385440,3517385471,US
+3517385472,3517385727,CA
3517385728,3517385983,US
3517385984,3517387263,CA
3517387264,3517387519,US
@@ -88027,14 +95256,14 @@
3517399040,3517399807,US
3517399808,3517399871,CA
3517399872,3517400063,US
-3517400064,3517400575,CA
-3517400576,3517401855,US
+3517400064,3517400319,CA
+3517400320,3517401855,US
3517401856,3517402367,CA
3517402368,3517402623,US
3517402624,3517402879,CA
3517402880,3517403647,US
-3517403648,3517404159,CA
-3517404160,3517404415,US
+3517403648,3517403903,CA
+3517403904,3517404415,US
3517404416,3517404927,CA
3517404928,3517405183,US
3517405184,3517405439,CA
@@ -88058,10 +95287,10 @@
3517413120,3517414399,CA
3517414400,3517414911,US
3517414912,3517415423,CA
-3517415424,3517416191,US
-3517416192,3517416447,CA
-3517416448,3517416703,US
-3517416704,3517417471,CA
+3517415424,3517416919,US
+3517416920,3517416927,CA
+3517416928,3517416959,US
+3517416960,3517417471,CA
3517417472,3517418495,US
3517418496,3517419007,CA
3517419008,3517419519,US
@@ -88111,7 +95340,9 @@
3517438464,3517438943,US
3517438944,3517439231,CA
3517439232,3517439743,US
-3517439744,3517442047,CA
+3517439744,3517441279,CA
+3517441280,3517441535,US
+3517441536,3517442047,CA
3517442048,3517442175,US
3517442176,3517442207,CA
3517442208,3517442559,US
@@ -88168,7 +95399,9 @@
3517608192,3517608447,US
3517608448,3517608703,GB
3517608704,3517609727,US
-3517609728,3517610495,SE
+3517609728,3517609743,SE
+3517609744,3517609751,US
+3517609752,3517610495,SE
3517610496,3517611263,IE
3517611264,3517612031,SE
3517612032,3517644799,US
@@ -88246,7 +95479,9 @@
3519877888,3519878143,CA
3519878144,3519878271,US
3519878272,3519878303,CA
-3519878304,3519879727,US
+3519878304,3519878911,US
+3519878912,3519879167,CA
+3519879168,3519879727,US
3519879728,3519879735,CA
3519879736,3519879935,US
3519879936,3519880447,CA
@@ -88255,7 +95490,9 @@
3519882496,3519882751,US
3519882752,3519884031,CA
3519884032,3519884287,US
-3519884288,3519901695,CA
+3519884288,3519898367,CA
+3519898368,3519898623,US
+3519898624,3519901695,CA
3519901696,3519930367,US
3519934464,3519938559,CA
3519938560,3520020479,US
@@ -88318,8 +95555,8 @@
3521965056,3521966079,DE
3521966080,3522101247,US
3522101248,3522109439,CA
-3522109440,3522118399,US
-3522118400,3522118655,GB
+3522109440,3522118143,US
+3522118144,3522118655,GB
3522118656,3522118911,US
3522118912,3522119679,GB
3522119680,3522119935,US
@@ -88389,12 +95626,25 @@
3523557376,3523559423,CN
3523559424,3523575807,PH
3523575808,3523583999,CN
-3523584000,3523601663,HK
+3523584000,3523596359,HK
+3523596360,3523596375,PK
+3523596376,3523596783,HK
+3523596784,3523596791,PK
+3523596792,3523596927,HK
+3523596928,3523597055,PK
+3523597056,3523597063,HK
+3523597064,3523597103,PK
+3523597104,3523597119,HK
+3523597120,3523597127,PK
+3523597128,3523597567,HK
+3523597568,3523597823,PK
+3523597824,3523601663,HK
3523601664,3523601919,SA
3523601920,3523674111,HK
3523674112,3523682303,FJ
3523682304,3523686399,NZ
-3523686400,3523690495,AU
+3523686400,3523688447,AU
+3523688704,3523690495,AU
3523690496,3523698687,IN
3523698688,3523700735,JP
3523700736,3523701759,HK
@@ -88426,7 +95676,9 @@
3524722688,3524730879,SG
3524730880,3524739071,CN
3524739072,3524743167,ID
-3524743168,3524745727,MP
+3524743168,3524745215,MP
+3524745216,3524745471,GU
+3524745472,3524745727,MP
3524745728,3524745983,GU
3524745984,3524747263,MP
3524747264,3524755455,PH
@@ -88448,8 +95700,8 @@
3526651136,3526651391,KP
3526651392,3526754303,CN
3526754304,3526845183,NZ
-3526845184,3526845439,AU
-3526845440,3526885375,NZ
+3526845184,3526845311,AU
+3526845312,3526885375,NZ
3526885376,3526893567,PK
3526893568,3526897663,NZ
3526897664,3526901759,HK
@@ -88499,9 +95751,7 @@
3529089024,3529097215,KR
3529097216,3529113599,JP
3529113600,3531603967,KR
-3531603968,3533765631,JP
-3533765632,3533765887,CN
-3533765888,3534749695,JP
+3531603968,3534749695,JP
3534749696,3534757887,HK
3534757888,3534758143,AU
3534758144,3534758147,JP
@@ -88532,7 +95782,11 @@
3535831040,3535863807,TW
3535863808,3535880191,SG
3535880192,3535896575,JP
-3535896576,3535929343,AU
+3535896576,3535905791,AU
+3535905792,3535906047,US
+3535906048,3535909887,AU
+3535909888,3535910143,US
+3535910144,3535929343,AU
3535929344,3535994879,JP
3535994880,3536060415,MY
3536060416,3536322559,JP
@@ -88623,9 +95877,7 @@
3557072896,3557081087,DE
3557081088,3557089279,NL
3557089280,3557105663,DE
-3557105664,3557111807,BG
-3557111808,3557112831,GB
-3557112832,3557113855,BG
+3557105664,3557113855,BG
3557113856,3557130239,RU
3557130240,3557138431,BG
3557138432,3557146623,RU
@@ -88730,8 +95982,12 @@
3557916672,3557920055,NO
3557920056,3557920056,DK
3557920057,3557924863,NO
-3557924864,3557925887,AX
-3557925888,3557929983,FI
+3557924864,3557926143,AX
+3557926144,3557926399,FI
+3557926400,3557926655,AX
+3557926656,3557929471,FI
+3557929472,3557929727,AX
+3557929728,3557929983,FI
3557929984,3557933055,AX
3557933056,3557941247,IT
3557941248,3557957631,DE
@@ -88759,9 +96015,7 @@
3558146048,3558154239,RU
3558154240,3558157391,GB
3558157392,3558157407,AF
-3558157408,3558161663,GB
-3558161664,3558161919,TD
-3558161920,3558162431,GB
+3558157408,3558162431,GB
3558162432,3558170623,DE
3558170624,3558178815,GB
3558178816,3558187007,BG
@@ -88803,9 +96057,7 @@
3558293504,3558301695,RU
3558301696,3558318079,DE
3558318080,3558334463,FR
-3558334464,3558339959,CH
-3558339960,3558339967,DE
-3558339968,3558342655,CH
+3558334464,3558342655,CH
3558342656,3558350847,IT
3558350848,3558359039,RU
3558359040,3558367231,GB
@@ -88850,11 +96102,9 @@
3558719488,3558735871,IL
3558735872,3558741503,GB
3558741504,3558742015,GG
-3558742016,3558742527,GB
-3558742528,3558742783,GG
-3558742784,3558743039,GB
-3558743040,3558743295,GG
-3558743296,3558743551,GB
+3558742016,3558742271,GB
+3558742272,3558742527,GG
+3558742528,3558743551,GB
3558743552,3558743807,GG
3558743808,3558744063,GB
3558744064,3558752255,LB
@@ -88906,7 +96156,7 @@
3559093760,3559095455,GB
3559095456,3559095456,BE
3559095457,3559096063,GB
-3559096064,3559096319,BE
+3559096064,3559096319,NL
3559096320,3559104511,RO
3559104512,3559112703,RU
3559112704,3559120895,IT
@@ -88930,9 +96180,9 @@
3559276544,3559284735,GB
3559284736,3559292927,RU
3559292928,3559301119,JO
-3559301120,3559305215,GB
-3559305216,3559305471,US
-3559305472,3559309311,GB
+3559301120,3559306576,GB
+3559306577,3559306577,AT
+3559306578,3559309311,GB
3559309312,3559317503,PL
3559317504,3559325695,FI
3559325696,3559333887,IT
@@ -89004,9 +96254,11 @@
3559890944,3559899135,CH
3559899136,3559899647,UA
3559899648,3559899967,EE
-3559899968,3559900223,UA
-3559900224,3559900287,EE
-3559900288,3559902719,UA
+3559899968,3559900031,UA
+3559900032,3559900095,EE
+3559900096,3559900223,UA
+3559900224,3559900351,EE
+3559900352,3559902719,UA
3559902720,3559902975,EE
3559902976,3559903231,UA
3559903232,3559907327,EE
@@ -89022,9 +96274,11 @@
3559989248,3559997439,PL
3559997440,3560005631,KE
3560005632,3560013823,RU
-3560013824,3560022527,GB
-3560022528,3560022783,ES
-3560022784,3560023631,GB
+3560013824,3560015871,GB
+3560015872,3560016127,ES
+3560016128,3560022751,GB
+3560022752,3560022767,ES
+3560022768,3560023631,GB
3560023632,3560023639,ES
3560023640,3560023791,GB
3560023792,3560023799,ES
@@ -89063,9 +96317,9 @@
3560316928,3560325119,NL
3560325120,3560333311,DK
3560333312,3560341503,RO
-3560341504,3560346623,GB
-3560346624,3560347647,US
-3560347648,3560357887,GB
+3560341504,3560345855,GB
+3560345856,3560348159,US
+3560348160,3560357887,GB
3560357888,3560366079,GR
3560366080,3560374271,CH
3560374272,3560382463,ES
@@ -89108,9 +96362,7 @@
3560669184,3560685567,CH
3560685568,3560693759,ES
3560693760,3560701951,PL
-3560705536,3560705791,DE
3560707584,3560707839,DE
-3560708096,3560708351,DE
3560709632,3560709887,DE
3560710144,3560718335,CH
3560718336,3560726527,GM
@@ -89251,9 +96503,7 @@
3561242624,3561259007,DE
3561259008,3561267199,IL
3561267200,3561275391,UA
-3561275392,3561288831,BE
-3561288832,3561288959,FR
-3561288960,3561291775,BE
+3561275392,3561291775,BE
3561291776,3561299967,RS
3561299968,3561308159,GB
3561308160,3561316351,PL
@@ -89277,7 +96527,9 @@
3561472000,3561480191,DE
3561480192,3561488383,GB
3561488384,3561496575,OM
-3561496576,3561502719,GB
+3561496576,3561496831,GB
+3561496832,3561497087,NL
+3561497088,3561502719,GB
3561502720,3561503743,NL
3561503744,3561504767,GB
3561504768,3561512959,DE
@@ -89296,10 +96548,12 @@
3561604352,3561604607,FR
3561604608,3561607391,GB
3561607392,3561607423,FR
-3561607424,3561609215,GB
-3561609216,3561609471,FR
-3561609472,3561616639,GB
-3561616640,3561616895,FR
+3561607424,3561607935,GB
+3561607936,3561608191,FR
+3561608192,3561609215,GB
+3561609216,3561609727,FR
+3561609728,3561616383,GB
+3561616384,3561616895,FR
3561616896,3561618943,GB
3561618944,3561619455,ES
3561619456,3561641450,GB
@@ -89320,11 +96574,7 @@
3561775104,3561783295,IL
3561783296,3561799679,RU
3561799680,3561807871,DE
-3561807872,3561808895,BE
-3561808896,3561809151,LU
-3561809152,3561814271,BE
-3561814272,3561814527,LU
-3561814528,3561815039,BE
+3561807872,3561815039,BE
3561815040,3561815295,LU
3561815296,3561816063,BE
3561816064,3561824255,VA
@@ -89524,9 +96774,7 @@
3563225088,3563233279,LB
3563233280,3563241471,BY
3563241472,3563257855,TR
-3563257856,3563268351,FR
-3563268352,3563268607,BE
-3563268608,3563290623,FR
+3563257856,3563290623,FR
3563290624,3563315199,DE
3563315200,3563323391,DK
3563323648,3563329791,GB
@@ -89745,9 +96993,7 @@
3564895744,3564896255,GB
3564896256,3564904447,RU
3564904448,3564912639,DE
-3564912640,3564915711,NL
-3564915712,3564915967,BG
-3564915968,3564920831,NL
+3564912640,3564920831,NL
3564920832,3564922111,DE
3564922112,3564929023,US
3564929024,3564937215,AT
@@ -89768,15 +97014,9 @@
3565002752,3565027327,NO
3565027328,3565035519,PL
3565035520,3565036287,IE
-3565036288,3565037055,GB
-3565037056,3565037311,IE
-3565037312,3565038079,GB
-3565038080,3565038335,IE
-3565038336,3565038879,GB
+3565036288,3565038879,GB
3565038880,3565038895,IE
-3565038896,3565039103,GB
-3565039104,3565039359,IE
-3565039360,3565039615,GB
+3565038896,3565039615,GB
3565039616,3565041663,IE
3565041664,3565043711,GB
3565043712,3565051903,AT
@@ -89874,11 +97114,7 @@
3565767272,3565767287,GB
3565767296,3565767351,GB
3565767360,3565767399,GB
-3565767408,3565767439,GB
-3565767456,3565767487,GB
-3565767504,3565767599,GB
-3565767616,3565767631,GB
-3565767680,3565767999,GB
+3565767408,3565767999,GB
3565768208,3565768223,GB
3565768240,3565768247,GB
3565768448,3565768575,GB
@@ -89963,7 +97199,6 @@
3567152256,3567152383,GB
3567152400,3567152407,GB
3567152640,3567152647,GB
-3567152664,3567152671,GB
3567152744,3567152751,GB
3567152832,3567152863,GB
3567152960,3567152991,GB
@@ -89994,9 +97229,7 @@
3567389696,3567390975,DE
3567390976,3567391231,GB
3567391232,3567391487,DE
-3567391488,3567394815,GB
-3567394816,3567395071,FR
-3567395072,3567399167,GB
+3567391488,3567399167,GB
3567399168,3567399423,DE
3567399424,3567399935,GB
3567399936,3567401471,DE
@@ -90008,13 +97241,17 @@
3567453696,3567453951,ES
3567453952,3567456407,GB
3567456408,3567456415,ES
-3567456416,3567458305,GB
+3567456416,3567456511,GB
+3567456512,3567456767,ES
+3567456768,3567458305,GB
3567458306,3567458306,ES
3567458307,3567459935,GB
3567459936,3567459943,ES
3567459944,3567465983,GB
3567465984,3567466239,ES
-3567466240,3567495679,GB
+3567466240,3567490559,GB
+3567490560,3567490815,ES
+3567490816,3567495679,GB
3567495680,3567495935,ES
3567495936,3567499007,GB
3567499008,3567499135,ES
@@ -90084,9 +97321,7 @@
3568476160,3568484351,DK
3568484352,3568492543,NL
3568492544,3568500735,RS
-3568500736,3568520137,IL
-3568520138,3568520138,SY
-3568520139,3568566271,IL
+3568500736,3568566271,IL
3568566272,3568599039,FR
3568599040,3568631807,PL
3568631808,3568697343,SE
@@ -90144,8 +97379,8 @@
3570663424,3570728959,GB
3570728960,3570729983,FI
3570729984,3570731007,SE
-3570731008,3570794495,FI
-3570794496,3570860031,SE
+3570731008,3570794751,FI
+3570794752,3570860031,SE
3570860032,3570892799,CH
3570892800,3570925567,SA
3570925568,3570991103,IT
@@ -90170,7 +97405,9 @@
3571580928,3571646463,FI
3571646464,3571655560,DE
3571655561,3571655561,RO
-3571655562,3571711999,DE
+3571655562,3571688383,DE
+3571688384,3571689215,ES
+3571689216,3571711999,DE
3571712000,3571843071,GB
3571843072,3571974143,ES
3571974144,3571978239,RU
@@ -90245,7 +97482,11 @@
3574136832,3574169599,DE
3574169600,3574174839,GB
3574174840,3574174847,ES
-3574174848,3574187007,GB
+3574174848,3574186801,GB
+3574186802,3574186802,ES
+3574186803,3574186803,GB
+3574186804,3574186804,ES
+3574186805,3574187007,GB
3574187008,3574188031,ES
3574188032,3574190591,GB
3574190592,3574190847,ES
@@ -90265,22 +97506,19 @@
3574464512,3574530047,TR
3574530048,3574594559,SE
3574594560,3574595583,GB
-3574595584,3574595839,GF
-3574595840,3574597887,FR
-3574597888,3574598143,GP
-3574598144,3574598399,MQ
-3574598400,3574599423,FR
+3574595584,3574596607,FR
+3574596608,3574596863,MF
+3574596864,3574597119,MQ
+3574597120,3574597631,FR
+3574597632,3574597887,GP
+3574597888,3574598911,FR
+3574598912,3574599167,MQ
+3574599168,3574599423,FR
3574599424,3574599679,MQ
3574599680,3574599935,GP
-3574599936,3574600191,FR
-3574600192,3574600447,MQ
-3574600448,3574601215,FR
+3574599936,3574601215,FR
3574601216,3574601471,GP
-3574601472,3574602239,FR
-3574602240,3574602495,GF
-3574602496,3574602751,FR
-3574602752,3574603007,RE
-3574603008,3574603775,FR
+3574601472,3574603775,FR
3574603776,3574611967,BG
3574611968,3574628351,HU
3574628352,3574661119,GR
@@ -90290,7 +97528,9 @@
3574792192,3574824959,CZ
3574824960,3574830079,GB
3574830080,3574831103,NL
-3574831104,3574857727,GB
+3574831104,3574842367,GB
+3574842368,3574842623,NL
+3574842624,3574857727,GB
3574857728,3574923263,DE
3574923264,3574939647,RU
3574939648,3574941375,SE
@@ -90319,11 +97559,7 @@
3575590912,3575640063,BE
3575640064,3575644159,TR
3575644160,3575709695,DK
-3575709696,3575715839,AT
-3575715840,3575716351,SK
-3575716352,3575739391,AT
-3575739392,3575739647,FR
-3575739648,3575742463,AT
+3575709696,3575742463,AT
3575742464,3575775231,RU
3575775232,3575824383,NL
3575824384,3575832575,KW
@@ -90451,7 +97687,7 @@
3576084704,3576084735,GB
3576084864,3576084927,GB
3576085184,3576085215,GB
-3576085696,3576085711,GB
+3576085504,3576085759,GB
3576086016,3576086143,GB
3576086368,3576086399,GB
3576086496,3576086527,GB
@@ -90478,9 +97714,9 @@
3576093184,3576093247,GB
3576095232,3576096767,GB
3576099072,3576100863,GB
-3576101376,3576111359,GB
-3576111360,3576111615,FR
-3576111616,3576135679,GB
+3576101376,3576134653,GB
+3576134654,3576134654,CH
+3576134655,3576135679,GB
3576135680,3576168447,DE
3576168448,3576233983,GB
3576233984,3576236543,FR
@@ -90488,11 +97724,7 @@
3576241992,3576241999,FR
3576242000,3576242383,GB
3576242384,3576242391,FR
-3576242392,3576245247,GB
-3576245248,3576245503,FR
-3576245504,3576251135,GB
-3576251136,3576251391,FR
-3576251392,3576251711,GB
+3576242392,3576251711,GB
3576251712,3576251775,FR
3576251776,3576252415,GB
3576252416,3576252671,FR
@@ -90504,14 +97736,14 @@
3576254696,3576254703,FR
3576254704,3576254775,GB
3576254776,3576254783,FR
-3576254784,3576260607,GB
+3576254784,3576258047,GB
+3576258048,3576258303,FR
+3576258304,3576260607,GB
3576260608,3576260623,FR
3576260624,3576260863,GB
-3576260864,3576261119,FR
-3576261120,3576263447,GB
-3576263448,3576263455,FR
-3576263456,3576263679,GB
-3576263680,3576263935,FR
+3576260864,3576260871,FR
+3576260872,3576263919,GB
+3576263920,3576263935,FR
3576263936,3576264255,GB
3576264256,3576264263,FR
3576264264,3576264351,GB
@@ -90520,15 +97752,15 @@
3576264376,3576264383,FR
3576264384,3576264679,GB
3576264680,3576264687,FR
-3576264688,3576264959,GB
-3576264960,3576265215,FR
-3576265216,3576266751,GB
+3576264688,3576266751,GB
3576266752,3576299519,FR
3576299520,3576365055,AE
3576365056,3576430591,TR
3576430592,3576496127,FR
3576496128,3576561663,IT
-3576561664,3576627199,NL
+3576561664,3576622100,NL
+3576622101,3576622101,GB
+3576622102,3576627199,NL
3576627200,3576692735,AT
3576692736,3576758271,GB
3576758272,3576823807,BE
@@ -90538,22 +97770,28 @@
3576987648,3577020415,GB
3577020416,3577085951,NL
3577085952,3577151487,DE
-3577151488,3577152767,RE
-3577152768,3577154047,FR
-3577154048,3577155583,RE
-3577155584,3577155839,FR
-3577155840,3577156351,RE
-3577156352,3577157631,FR
-3577157632,3577158399,RE
-3577158400,3577158911,FR
-3577158912,3577159167,RE
-3577159168,3577159679,FR
-3577159680,3577159935,RE
-3577159936,3577160959,FR
-3577160960,3577161023,YT
-3577161024,3577161087,FR
-3577161088,3577161215,YT
-3577161216,3577165567,FR
+3577151488,3577151999,RE
+3577152000,3577152255,FR
+3577152256,3577152511,RE
+3577152512,3577153023,FR
+3577153024,3577153279,RE
+3577153280,3577153791,FR
+3577153792,3577154303,RE
+3577154304,3577154815,FR
+3577154816,3577155327,RE
+3577155328,3577155839,FR
+3577155840,3577156095,RE
+3577156096,3577156607,FR
+3577156608,3577156863,RE
+3577156864,3577157375,FR
+3577157376,3577157887,RE
+3577157888,3577158655,FR
+3577158656,3577159167,RE
+3577159168,3577160959,FR
+3577160960,3577161215,YT
+3577161216,3577163775,FR
+3577163776,3577164031,RE
+3577164032,3577165567,FR
3577165568,3577166079,RE
3577166080,3577166591,FR
3577166592,3577167103,RE
@@ -90568,12 +97806,12 @@
3577544704,3577545983,DE
3577545984,3577546111,SE
3577546112,3577610239,DE
-3577625600,3577625855,GB
-3577626112,3577626367,GB
+3577626176,3577626239,GB
3577628672,3577629695,CH
3577635840,3577636863,DE
3577636864,3577637887,GB
3577641200,3577641215,FR
+3577641472,3577641983,FR
3577650048,3577650063,NL
3577653248,3577655295,IT
3577663488,3577664511,SE
@@ -90706,7 +97944,9 @@
3580643328,3580645375,UA
3580645376,3580647423,PL
3580647424,3580647935,GB
-3580647936,3580649471,DE
+3580647936,3580648703,DE
+3580648704,3580648959,GB
+3580648960,3580649471,DE
3580649472,3580651519,SE
3580651520,3580653567,NL
3580653568,3580655615,PL
@@ -90747,21 +97987,7 @@
3581239296,3581241343,NL
3581242624,3581245439,FR
3581255680,3581258751,FR
-3581280256,3581365247,BE
-3581365248,3581365503,NL
-3581365504,3581365759,BE
-3581365760,3581366015,NL
-3581366016,3581366783,BE
-3581366784,3581367039,NL
-3581367040,3581367295,BE
-3581367296,3581367807,NL
-3581367808,3581368063,BE
-3581368064,3581368319,NL
-3581368320,3581371391,BE
-3581371392,3581371647,NL
-3581371648,3581371903,BE
-3581371904,3581372159,NL
-3581372160,3581411327,BE
+3581280256,3581411327,BE
3581411328,3581673471,GB
3581673472,3581935615,NL
3581935616,3581943807,RU
@@ -90856,7 +98082,7 @@
3582509056,3582517247,SA
3582517248,3582525439,PL
3582525440,3582533631,IM
-3582533632,3582541823,BG
+3582533632,3582541823,IT
3582541824,3582550015,US
3582550016,3582558207,RS
3582558208,3582570911,MC
@@ -90903,7 +98129,8 @@
3582885888,3582894079,TR
3582894080,3582902271,CH
3582902272,3582910463,RU
-3582910464,3582917631,SI
+3582910464,3582916607,SI
+3582916608,3582917631,ZA
3582917632,3582918655,LU
3582918656,3582926847,GB
3582926848,3582935039,ES
@@ -90939,7 +98166,9 @@
3583157760,3583160319,GB
3583160320,3583161343,DE
3583161344,3583162623,GB
-3583162624,3583162879,ZA
+3583162624,3583162751,ZA
+3583162752,3583162815,GB
+3583162816,3583162879,ZA
3583162880,3583164415,GB
3583164416,3583172607,PT
3583172608,3583188991,DE
@@ -90975,7 +98204,11 @@
3583418368,3583426559,TN
3583426560,3583434751,CI
3583434752,3583442943,AT
-3583442944,3583451135,UA
+3583442944,3583445247,RU
+3583445248,3583445503,UA
+3583445504,3583446783,RU
+3583446784,3583447039,UA
+3583447040,3583451135,RU
3583451136,3583459327,IL
3583459328,3583467111,CZ
3583467112,3583467119,PL
@@ -91006,7 +98239,9 @@
3583696896,3583705087,NL
3583705088,3583713279,UA
3583713280,3583721471,CZ
-3583721472,3583729663,DE
+3583721472,3583727871,DE
+3583727872,3583728127,GB
+3583728128,3583729663,DE
3583729664,3583737855,TR
3583742976,3583743487,PL
3583743488,3583743743,GB
@@ -91115,12 +98350,17 @@
3584509232,3584509239,AW
3584509240,3584509695,GB
3584509696,3584509951,JE
-3584509952,3584516095,GB
+3584509952,3584513535,GB
+3584513536,3584513791,JE
+3584513792,3584516095,GB
3584516096,3584524287,NO
3584524288,3584532479,IS
3584532480,3584540671,DE
3584540672,3584548863,RU
-3584548864,3584557055,ES
+3584548864,3584549887,ES
+3584549888,3584550911,FR
+3584550912,3584552959,IT
+3584552960,3584557055,FR
3584557056,3584565247,EE
3584565248,3584573439,RU
3584573440,3584589823,DE
@@ -91259,7 +98499,9 @@
3585646592,3585654783,SA
3585654784,3585662975,NO
3585662976,3585671167,BY
-3585671168,3585679359,SE
+3585671168,3585672191,SE
+3585672192,3585672447,DK
+3585672448,3585679359,SE
3585679360,3585687551,FI
3585687552,3585695743,DE
3585695744,3585702527,GB
@@ -91289,9 +98531,8 @@
3585861632,3585863679,EE
3585863680,3585865471,NL
3585865472,3585865727,LB
-3585865728,3585866495,EE
-3585866496,3585866751,RU
-3585866752,3585867775,EE
+3585865728,3585865983,UA
+3585865984,3585867775,EE
3585867776,3585875967,NO
3585875968,3585884159,CH
3585884160,3585892351,IQ
@@ -91299,22 +98540,9 @@
3585900544,3585906687,NO
3585906688,3585907711,CZ
3585907712,3585908735,NO
-3585908736,3585908991,FR
-3585908992,3585909247,GF
-3585909248,3585909503,FR
-3585909504,3585909759,GF
-3585909760,3585910271,FR
-3585910272,3585910527,GP
-3585910528,3585912831,FR
-3585912832,3585913087,GP
-3585913088,3585913855,FR
-3585913856,3585914623,GP
-3585914624,3585914879,GF
-3585914880,3585915391,FR
-3585915392,3585915647,GP
-3585915648,3585915903,FR
-3585915904,3585916159,GP
-3585916160,3585916671,FR
+3585908736,3585913855,FR
+3585913856,3585914367,GP
+3585914368,3585916671,FR
3585916672,3585916927,MQ
3585916928,3585925119,IT
3585925120,3585933311,CH
@@ -91323,7 +98551,9 @@
3585949696,3585957887,KW
3585957888,3585966079,SE
3585966080,3585974271,CH
-3585974272,3585982463,BE
+3585974272,3585976831,BE
+3585976832,3585977087,GB
+3585977088,3585982463,BE
3585982464,3585998847,RU
3585998848,3586007039,ES
3586007040,3586015231,LT
@@ -91343,7 +98573,9 @@
3586162688,3586179071,FI
3586179072,3586195455,ES
3586195456,3586203647,RU
-3586203648,3586205695,KE
+3586203648,3586204415,KE
+3586204416,3586204671,ZM
+3586204672,3586205695,KE
3586205696,3586207743,BW
3586207744,3586208767,ZA
3586208768,3586211071,KE
@@ -91450,9 +98682,7 @@
3587129344,3587145727,NL
3587145728,3587162111,CY
3587162112,3587178495,IR
-3587178496,3587182591,AT
-3587182592,3587182847,HU
-3587182848,3587186687,AT
+3587178496,3587186687,AT
3587186688,3587186943,DE
3587186944,3587187199,GB
3587187200,3587187455,DE
@@ -91469,9 +98699,7 @@
3587231232,3587231263,NL
3587231264,3587233087,GB
3587233088,3587233095,NL
-3587233096,3587233279,GB
-3587233280,3587233535,NL
-3587233536,3587234191,GB
+3587233096,3587234191,GB
3587234192,3587234207,NL
3587234208,3587237631,GB
3587237632,3587237887,NL
@@ -91489,7 +98717,8 @@
3587242672,3587242679,DE
3587242680,3587244031,GB
3587244032,3587260415,IT
-3587260416,3587284991,DE
+3587260416,3587282943,DE
+3587282944,3587284991,PT
3587284992,3587291135,IT
3587291136,3587292159,FR
3587292160,3587309567,IT
@@ -91532,9 +98761,7 @@
3587620864,3587637247,SE
3587637248,3587646975,FR
3587646976,3587647231,MC
-3587647232,3587647743,FR
-3587647744,3587647999,GB
-3587648000,3587653631,FR
+3587647232,3587653631,FR
3587653632,3587670015,SK
3587670016,3587702783,IT
3587702784,3587710975,DE
@@ -91573,8 +98800,7 @@
3588153344,3588161535,RU
3588161536,3588173311,FR
3588173312,3588173567,RE
-3588173568,3588173823,YT
-3588173824,3588227071,FR
+3588173568,3588227071,FR
3588227072,3588292607,BE
3588292608,3588308991,AT
3588308992,3588325375,NO
@@ -91656,9 +98882,7 @@
3589242880,3589259263,NL
3589259264,3589275647,DE
3589275648,3589292031,RS
-3589292032,3589305343,AT
-3589305344,3589305599,DE
-3589305600,3589308415,AT
+3589292032,3589308415,AT
3589308416,3589324799,DE
3589324800,3589341183,BG
3589341184,3589373951,PL
@@ -91670,9 +98894,7 @@
3589431040,3589431295,ES
3589431296,3589432831,GB
3589432832,3589433087,CH
-3589433088,3589433855,GB
-3589433856,3589434111,IE
-3589434112,3589435759,GB
+3589433088,3589435759,GB
3589435760,3589435763,ES
3589435764,3589439487,GB
3589439488,3589455871,SE
@@ -91685,10 +98907,10 @@
3589545984,3589554175,DE
3589554176,3589570559,PS
3589570560,3589578751,GB
-3589578752,3589579007,IN
+3589578752,3589579007,NL
3589579008,3589580543,GB
-3589580544,3589580799,NL
-3589580800,3589582975,GB
+3589580544,3589581055,NL
+3589581056,3589582975,GB
3589582976,3589583103,NL
3589583104,3589583871,GB
3589583872,3589584127,NL
@@ -91705,13 +98927,13 @@
3589742592,3589746175,NL
3589746176,3589746687,US
3589746688,3589767167,NL
-3589767168,3589816319,RU
+3589767168,3589810431,RU
+3589810432,3589810687,PL
+3589810688,3589816319,RU
3589825792,3589826047,DE
3589827712,3589827839,DE
-3589828352,3589828607,FR
3589828736,3589828863,NL
3589829632,3589830143,GB
-3589831680,3589831935,FR
3589832704,3589849087,TR
3589849088,3589865471,GB
3589865472,3589881855,GR
@@ -91759,9 +98981,7 @@
3590251648,3590251775,NL
3590251776,3590252543,FR
3590252544,3590253055,LB
-3590253056,3590253311,FR
-3590253312,3590253567,GB
-3590253568,3590254847,FR
+3590253056,3590254847,FR
3590254848,3590255103,GB
3590255104,3590255871,FR
3590255872,3590255935,US
@@ -91775,7 +98995,9 @@
3590258688,3590291455,IT
3590291456,3590299647,EG
3590299648,3590307839,FI
-3590307840,3590312935,GB
+3590307840,3590308951,GB
+3590308952,3590308959,GH
+3590308960,3590312935,GB
3590312936,3590312943,UG
3590312944,3590317951,GB
3590317952,3590318015,UA
@@ -91843,7 +99065,9 @@
3624376336,3624376343,AU
3624376344,3624376351,US
3624376352,3624376359,PT
-3624376360,3624377863,US
+3624376360,3624376655,US
+3624376656,3624376679,GB
+3624376680,3624377863,US
3624377864,3624377871,GB
3624377872,3624377879,US
3624377880,3624377887,GB
@@ -91852,11 +99076,9 @@
3624377912,3624386559,US
3624386560,3624394751,CA
3624394752,3624402943,US
-3624402944,3624407039,JP
-3624407040,3624435711,US
-3624435712,3624443391,CA
-3624443392,3624443903,US
-3624443904,3624452095,CA
+3624402944,3624411135,JP
+3624411136,3624435711,US
+3624435712,3624452095,CA
3624452096,3624480767,US
3624480768,3624484863,CA
3624484864,3624534015,US
@@ -91875,9 +99097,10 @@
3624721920,3624730623,US
3624730624,3624796159,CA
3624796160,3624812543,US
-3624813056,3624814079,US
+3624813056,3624813823,US
3624814336,3624815103,US
-3624815616,3624828927,US
+3624815616,3624816383,US
+3624816640,3624828927,US
3624828928,3624833023,CA
3624833024,3624845311,US
3624845312,3624849407,AU
@@ -91964,7 +99187,9 @@
3628161024,3628161279,CA
3628161280,3628179455,US
3628179456,3628187647,CA
-3628187648,3628225779,US
+3628187648,3628225387,US
+3628225388,3628225395,GB
+3628225396,3628225779,US
3628225780,3628225783,GB
3628225784,3628236799,US
3628236800,3628257279,CA
@@ -92055,17 +99280,7 @@
3629789952,3629790207,CA
3629790208,3629839103,US
3629839104,3629839359,CA
-3629839360,3630039047,US
-3630039048,3630039055,CA
-3630039056,3630039079,US
-3630039080,3630039087,CA
-3630039088,3630039119,US
-3630039120,3630039135,CA
-3630039136,3630039159,US
-3630039160,3630039167,CA
-3630039168,3630039183,US
-3630039184,3630039199,CA
-3630039200,3630039295,US
+3629839360,3630039295,US
3630039296,3630039551,CA
3630039552,3630040063,US
3630040064,3630040319,CA
@@ -92105,9 +99320,7 @@
3630058752,3630059007,CA
3630059008,3630059263,US
3630059264,3630059519,CA
-3630059520,3630060799,US
-3630060800,3630061055,CA
-3630061056,3630061567,US
+3630059520,3630061567,US
3630061568,3630062079,CA
3630062080,3630062335,US
3630062336,3630062591,CA
@@ -92116,15 +99329,17 @@
3630063872,3630063935,US
3630063936,3630063951,CA
3630063952,3630066431,US
-3630066432,3630067967,CA
-3630067968,3630068991,US
+3630066432,3630067711,CA
+3630067712,3630068991,US
3630068992,3630069247,CA
3630069248,3630069503,US
3630069504,3630069759,CA
3630069760,3630071295,US
3630071296,3630071551,CA
3630071552,3630072575,US
-3630072576,3630074111,CA
+3630072576,3630073599,CA
+3630073600,3630073855,US
+3630073856,3630074111,CA
3630074112,3630074879,US
3630074880,3630075135,CA
3630075136,3630075311,US
@@ -92147,7 +99362,9 @@
3630082048,3630082559,CA
3630082560,3630082815,US
3630082816,3630083071,CA
-3630083072,3630084607,US
+3630083072,3630083583,US
+3630083584,3630083839,CA
+3630083840,3630084607,US
3630084608,3630084863,CA
3630084864,3630085119,US
3630085120,3630085375,CA
@@ -92197,10 +99414,8 @@
3630152192,3630152703,US
3630152704,3630153215,CA
3630153216,3630155775,US
-3630155776,3630158079,CA
-3630158080,3630158295,US
-3630158296,3630158303,CA
-3630158304,3630159103,US
+3630155776,3630158335,CA
+3630158336,3630159103,US
3630159104,3630159359,CA
3630159360,3630159615,US
3630159616,3630159871,CA
@@ -92214,8 +99429,8 @@
3630162432,3630162943,CA
3630162944,3630163199,US
3630163200,3630163455,CA
-3630163456,3630163967,US
-3630163968,3630164735,CA
+3630163456,3630163711,US
+3630163712,3630164735,CA
3630164736,3630164991,US
3630164992,3630166527,CA
3630166528,3630167007,US
@@ -92274,8 +99489,19 @@
3631667200,3631667455,US
3631667456,3631668223,CA
3631668224,3631668479,US
-3631668480,3631668991,CA
-3631668992,3631822815,US
+3631668480,3631668735,CA
+3631668736,3631669807,US
+3631669808,3631669823,EC
+3631669824,3631670527,US
+3631670528,3631670783,NG
+3631670784,3631671039,EC
+3631671040,3631671295,US
+3631671296,3631671551,JM
+3631671552,3631671807,PY
+3631671808,3631672063,US
+3631672064,3631672575,PY
+3631672576,3631672831,NG
+3631672832,3631822815,US
3631822816,3631822831,AU
3631822832,3631825647,US
3631825648,3631825663,NZ
@@ -92291,7 +99517,9 @@
3632197632,3632201727,CA
3632201728,3632244223,US
3632244224,3632244479,CA
-3632244480,3632332799,US
+3632244480,3632279039,US
+3632279040,3632279295,SA
+3632279296,3632332799,US
3632332800,3632357375,CA
3632357376,3632381951,US
3632381952,3632390143,CA
@@ -92329,7 +99557,6 @@
3633348608,3633405951,US
3633405952,3633410047,CA
3633410048,3633446911,US
-3633454080,3633454335,US
3633455104,3633456383,US
3633456384,3633456639,AU
3633456640,3633479679,US
@@ -92349,7 +99576,9 @@
3633550848,3633551359,GA
3633551360,3633757439,US
3633757440,3633757695,IN
-3633757696,3633785343,US
+3633757696,3633757951,US
+3633757952,3633758207,PH
+3633758208,3633785343,US
3633785600,3633786367,US
3633786880,3633815807,US
3633815808,3633816063,CA
@@ -92587,7 +99816,9 @@
3636158208,3636158215,CA
3636158216,3636158463,US
3636158464,3636158719,CA
-3636158720,3636158975,US
+3636158720,3636158871,US
+3636158872,3636158879,CA
+3636158880,3636158975,US
3636158976,3636159743,CA
3636159744,3636160511,US
3636160512,3636160767,CA
@@ -92603,8 +99834,7 @@
3636166400,3636166655,CA
3636166656,3636206079,US
3636206080,3636206335,AU
-3636206336,3636301823,US
-3636305920,3636396031,US
+3636206336,3636396031,US
3636396032,3636461567,CA
3636461568,3636609023,US
3636609024,3636621311,CA
@@ -92615,7 +99845,11 @@
3636627200,3636627455,BR
3636627456,3636628479,MX
3636628480,3636628991,PE
-3636628992,3636822015,US
+3636628992,3636740095,US
+3636740096,3636740351,CA
+3636740352,3636741503,US
+3636741504,3636741631,CA
+3636741632,3636822015,US
3636822016,3636854783,CA
3636854784,3636887551,US
3636887552,3636895743,CA
@@ -92642,7 +99876,9 @@
3637641216,3637665791,US
3637665792,3637669887,CA
3637669888,3637706751,US
-3637706752,3637739519,CA
+3637706752,3637726591,CA
+3637726592,3637726719,US
+3637726720,3637739519,CA
3637739520,3638165503,US
3638165504,3638181887,CA
3638181888,3638214399,US
@@ -92655,7 +99891,9 @@
3638247936,3638248703,GB
3638248704,3638249215,US
3638249216,3638249471,GB
-3638249472,3638304767,US
+3638249472,3638250559,US
+3638250560,3638250623,GB
+3638250624,3638304767,US
3638304768,3638312959,CA
3638312960,3638349823,US
3638349824,3638350079,AU
@@ -92666,15 +99904,15 @@
3638400000,3638401087,US
3638401088,3638401119,CA
3638401120,3638509567,US
-3638509568,3638534143,CA
+3638509568,3638526719,CA
+3638526720,3638526975,US
+3638526976,3638534143,CA
3638534144,3638697983,US
3638697984,3638706175,CA
3638706176,3638706687,US
3638706688,3638706943,NG
3638706944,3638738943,US
-3638740992,3638746111,US
-3638746112,3638746367,MX
-3638746368,3638874111,US
+3638740992,3638874111,US
3638874112,3638878207,CA
3638878208,3638984703,US
3638984704,3638992895,GT
@@ -92688,7 +99926,7 @@
3639148544,3639222271,US
3639222272,3639230463,CA
3639230464,3639247359,US
-3639248128,3639249151,US
+3639247872,3639249151,US
3639249664,3639255039,US
3639255040,3639263231,CA
3639263232,3639279615,US
@@ -92746,9 +99984,9 @@
3639664640,3639668735,CA
3639668736,3639672831,US
3639672832,3639681023,CL
-3639681024,3639684991,US
-3639684992,3639685119,SA
-3639685120,3639692031,US
+3639681024,3639685055,US
+3639685056,3639685063,SA
+3639685064,3639692031,US
3639692032,3639692287,GB
3639692288,3639704573,US
3639704574,3639704574,GB
@@ -92760,7 +99998,9 @@
3639737375,3639737599,GB
3639737600,3639737629,US
3639737630,3639737630,GB
-3639737631,3639902207,US
+3639737631,3639868415,US
+3639868416,3639868543,MX
+3639868544,3639902207,US
3639902208,3639918591,PE
3639918592,3639934975,AR
3639934976,3640057855,US
@@ -92842,7 +100082,9 @@
3641356536,3641356543,CM
3641356544,3641357983,GB
3641357984,3641358015,SL
-3641358016,3641360383,GB
+3641358016,3641359359,GB
+3641359360,3641359615,US
+3641359616,3641360383,GB
3641360384,3641368575,RO
3641368576,3641372671,GB
3641372672,3641376767,BG
@@ -92915,9 +100157,9 @@
3641669120,3641670271,ZW
3641670272,3641670911,GB
3641670912,3641671167,LS
-3641671168,3641671423,ZW
-3641671424,3641671679,GB
+3641671168,3641671679,GB
3641671680,3641679871,RU
+3641679872,3641680127,DK
3641681152,3641681407,SE
3641681408,3641681663,FR
3641683968,3641688063,KZ
@@ -93053,8 +100295,7 @@
3642253312,3642257407,FI
3642257408,3642261503,RU
3642261504,3642265599,BA
-3642265600,3642267647,AE
-3642267648,3642269695,IR
+3642265600,3642269695,AE
3642269696,3642273791,UA
3642273792,3642277887,RU
3642277888,3642290175,DE
@@ -93125,7 +100366,9 @@
3642554199,3642554199,RU
3642554200,3642554367,UA
3642554368,3642554623,LT
-3642554624,3642556415,UA
+3642554624,3642554720,UA
+3642554721,3642554721,LV
+3642554722,3642556415,UA
3642556416,3642560511,CZ
3642560512,3642564607,KG
3642564608,3642568703,DE
@@ -93160,7 +100403,9 @@
3642691584,3642695679,DE
3642695680,3642699775,SK
3642699776,3642703871,CZ
-3642703872,3642707967,LU
+3642703872,3642705151,LU
+3642705152,3642705407,DE
+3642705408,3642707967,LU
3642707968,3642712063,DE
3642712064,3642716159,NO
3642716160,3642720255,IT
@@ -93202,15 +100447,7 @@
3644928000,3644932095,GI
3644932096,3644936191,IT
3644936192,3644940287,RU
-3644940288,3644942847,HU
-3644942848,3644943103,BG
-3644943104,3644943359,HU
-3644943360,3644943615,BG
-3644943616,3644946175,HU
-3644946176,3644946687,BG
-3644946688,3644946943,HU
-3644946944,3644947967,BG
-3644947968,3644948479,HU
+3644940288,3644948479,HU
3644948480,3644952575,DE
3644952576,3644960767,GB
3644960768,3644964863,TR
@@ -93226,9 +100463,7 @@
3645009920,3645014015,FR
3645014016,3645018111,DE
3645018112,3645022207,RU
-3645022208,3645023743,CZ
-3645023744,3645023999,SK
-3645024000,3645030399,CZ
+3645022208,3645030399,CZ
3645030400,3645038591,IR
3645038592,3645046783,PS
3645046784,3645050879,RU
@@ -93302,6 +100537,7 @@
3645325312,3645329407,IT
3645329408,3645333503,CH
3645334272,3645335039,DE
+3645335688,3645335691,DE
3645337600,3645341695,FR
3645341696,3645345791,RU
3645345792,3645349887,FI
@@ -93491,7 +100727,11 @@
3647966208,3647967231,GB
3647967232,3647968255,BE
3647968256,3647969279,FR
-3647969280,3647971327,DE
+3647969280,3647969327,DE
+3647969328,3647969335,IT
+3647969336,3647970047,DE
+3647970048,3647970303,BE
+3647970304,3647971327,DE
3647971328,3647972351,GB
3647972352,3647973375,IT
3647973376,3647973399,DE
@@ -93514,9 +100754,7 @@
3647980384,3647980415,FR
3647980416,3647980543,DE
3647980544,3647981567,GB
-3647981568,3647981823,BE
-3647981824,3647982079,DK
-3647982080,3647982591,BE
+3647981568,3647982591,BE
3647982592,3647983615,IT
3647983616,3647984031,DE
3647984032,3647984047,NL
@@ -93599,7 +100837,9 @@
3648192512,3648196607,DE
3648196608,3648200703,IT
3648200704,3648208895,SE
-3648208896,3648212991,DE
+3648208896,3648209166,DE
+3648209167,3648209169,GB
+3648209170,3648212991,DE
3648212992,3648217087,RU
3648217088,3648221183,UA
3648221184,3648225279,IE
@@ -93667,9 +100907,7 @@
3648512000,3648516095,NL
3648516096,3648519167,RS
3648519168,3648520191,MK
-3648520192,3648523775,NL
-3648523776,3648524031,DE
-3648524032,3648782335,NL
+3648520192,3648782335,NL
3648782336,3649044479,ES
3649044480,3649110015,FR
3649110016,3649175551,PT
@@ -93763,7 +101001,9 @@
3650285568,3650289663,UA
3650289664,3650297855,RU
3650297856,3650301951,LT
-3650301952,3650310143,DE
+3650301952,3650307103,DE
+3650307104,3650307134,GB
+3650307135,3650310143,DE
3650310144,3650314239,GB
3650314240,3650318335,DE
3650318336,3650322431,GI
@@ -93864,16 +101104,17 @@
3650748416,3650879487,GB
3650879488,3650912255,RO
3650912256,3650915327,GB
-3650915328,3650915337,FR
-3650915338,3650915338,BE
-3650915339,3650915583,FR
+3650915328,3650915583,FR
3650915584,3650920447,GB
3650920448,3650920457,FR
3650920458,3650920458,GB
3650920459,3650920703,FR
-3650920704,3650926079,GB
-3650926080,3650926335,BE
-3650926336,3650926591,GB
+3650920704,3650920895,LB
+3650920896,3650920927,GB
+3650920928,3650920959,LB
+3650920960,3650922799,GB
+3650922800,3650922815,FR
+3650922816,3650926591,GB
3650926592,3650929663,ES
3650929664,3650929847,GB
3650929848,3650929855,FR
@@ -93885,9 +101126,9 @@
3650932976,3650939599,GB
3650939600,3650939607,FR
3650939608,3650939615,TR
-3650939616,3650944511,GB
-3650944512,3650944767,FR
-3650944768,3650945023,GB
+3650939616,3650940927,GB
+3650940928,3650941183,NL
+3650941184,3650945023,GB
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651108863,DE
@@ -93896,7 +101137,9 @@
3651152896,3651153919,GB
3651153920,3651168255,DE
3651168256,3651169023,ES
-3651169024,3651207167,DE
+3651169024,3651192319,DE
+3651192320,3651193343,GB
+3651193344,3651207167,DE
3651207168,3651207199,GB
3651207224,3651207295,GB
3651207424,3651207615,GB
@@ -94007,7 +101250,9 @@
3651958784,3651960831,IR
3651960832,3651964927,GB
3651964928,3651969023,SK
-3651969024,3651977215,DE
+3651969024,3651971613,DE
+3651971614,3651971614,TR
+3651971615,3651977215,DE
3651977216,3651985407,IT
3651985408,3651997695,PL
3651997696,3652001791,RU
@@ -94044,16 +101289,18 @@
3652149248,3652153343,DE
3652153344,3652157439,SE
3652157440,3652165631,RU
-3652165632,3652169471,FR
+3652165632,3652165887,GF
+3652165888,3652169471,FR
3652169472,3652169727,GF
-3652169728,3652170495,MQ
-3652170496,3652170751,FR
+3652169728,3652170239,MQ
+3652170240,3652170751,FR
3652170752,3652171007,MQ
-3652171008,3652172031,FR
-3652172032,3652172287,RE
-3652172288,3652172799,FR
-3652172800,3652173055,RE
-3652173056,3652173823,FR
+3652171008,3652171519,FR
+3652171520,3652171775,MQ
+3652171776,3652172287,RE
+3652172288,3652172543,FR
+3652172544,3652172799,RE
+3652172800,3652173823,FR
3652173824,3652177919,AT
3652177920,3652182015,CY
3652182016,3652190207,DE
@@ -94067,7 +101314,9 @@
3653386240,3653390335,DE
3653390336,3653394431,FR
3653394432,3653402623,NL
-3653402624,3653410060,GB
+3653402624,3653407103,GB
+3653407104,3653407111,UG
+3653407112,3653410060,GB
3653410061,3653410061,YT
3653410062,3653410815,GB
3653410816,3653414911,CZ
@@ -94083,9 +101332,7 @@
3653451776,3653464063,RU
3653464064,3653468159,NL
3653468160,3653472255,GR
-3653472256,3653472511,NL
-3653472512,3653472767,US
-3653472768,3653476351,NL
+3653472256,3653476351,NL
3653476352,3653480447,CZ
3653480448,3653484543,DK
3653484544,3653488639,TR
@@ -94152,8 +101399,7 @@
3654025216,3654287359,GB
3654287360,3654608404,SE
3654608405,3654608405,NO
-3654608406,3654608639,SE
-3654608640,3654608895,RU
+3654608406,3654608895,SE
3654608896,3654609919,NO
3654609920,3654614143,SE
3654614144,3654614271,FI
@@ -94168,13 +101414,13 @@
3659628544,3659661311,JP
3659661312,3659792383,TW
3659792384,3660054527,KR
-3660054528,3660097535,JP
-3660097536,3660097791,US
-3660097792,3660099583,JP
-3660099584,3660099839,US
-3660099840,3660102143,JP
-3660102144,3660102399,US
-3660102400,3660102655,JP
+3660054528,3660097023,JP
+3660097024,3660097279,US
+3660097280,3660099071,JP
+3660099072,3660099583,US
+3660099584,3660100095,JP
+3660100096,3660100607,US
+3660100608,3660102655,JP
3660102656,3660102911,US
3660102912,3660578815,JP
3660578816,3661103103,KR
@@ -94250,7 +101496,9 @@
3669618688,3669620735,CN
3669622784,3669688319,SG
3669688320,3669753855,TW
-3669753856,3670015999,HK
+3669753856,3669777663,HK
+3669777664,3669777919,SG
+3669777920,3670015999,HK
3670016000,3671064575,CN
3671064576,3671130111,MY
3671130112,3671195647,KR
@@ -94385,7 +101633,9 @@
3715760128,3715891199,CN
3715891200,3716153343,HK
3716153344,3716169727,SG
-3716169728,3716186111,TH
+3716169728,3716175615,JP
+3716175616,3716184575,TH
+3716184576,3716186111,JP
3716186112,3716415487,CN
3716415488,3716431871,VN
3716431872,3716440063,KR
@@ -94546,16 +101796,12 @@
3755988992,3755990015,HK
3755990016,3755991039,SG
3755991040,3755999231,JP
-3755999232,3756002815,IN
-3756002816,3756003071,LK
-3756003072,3757047807,IN
+3755999232,3757047807,IN
3757047808,3757834239,CN
3757834240,3757867007,AU
3757867008,3757875519,CN
3757875520,3757875583,HK
-3757875584,3757880063,CN
-3757880064,3757883391,HK
-3757883392,3757899775,CN
+3757875584,3757899775,CN
3757899776,3757965311,KR
3757965312,3758063615,CN
3758063616,3758079999,HK
diff --git a/src/config/geoip6 b/src/config/geoip6
index 06bd578b85..b5f0575cbf 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,8 +1,16 @@
-# Last updated based on August 7 2014 Maxmind GeoLite2 Country
+# Last updated based on November 15 2014 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
-2001:218::,2001:218:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:200::,2001:200::ffff:ffff:ffff:ffff:ffff,JP
+2001:200:120::,2001:200:120:ffff:ffff:ffff:ffff:ffff,JP
+2001:200:148::,2001:200:148:ffff:ffff:ffff:ffff:ffff,JP
+2001:200:167::,2001:200:167:ffff:ffff:ffff:ffff:ffff,JP
+2001:208:3::,2001:208:3:ffff:ffff:ffff:ffff:ffff,SG
+2001:208:5::,2001:208:5:ffff:ffff:ffff:ffff:ffff,SG
+2001:218::,2001:218:e000:ffff:ffff:ffff:ffff:ffff,JP
+2001:218:e001::,2001:218:e001:ffff:ffff:ffff:ffff:ffff,US
+2001:218:e002::,2001:218:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:220::,2001:220:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:230::,2001:230:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:238::,2001:238:ffff:ffff:ffff:ffff:ffff:ffff,TW
@@ -46,7 +54,9 @@
2001:368::,2001:368:ffff:ffff:ffff:ffff:ffff:ffff,JP
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:380::,2001:380:1fb:ffff:ffff:ffff:ffff:ffff,JP
+2001:380:1fc::,2001:380:1fc:ffff:ffff:ffff:ffff:ffff,VN
+2001:380:1fd::,2001:380:ffff:ffff:ffff:ffff:ffff:ffff,JP
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
@@ -60,9 +70,2170 @@
2001:3d8::,2001:3d8:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:3e0::,2001:3e0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:3e8::,2001:3e8:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:400::,2001:4ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:500::,2001:5ff:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:600::,2001:7ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:400::,2001:400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:408::,2001:408:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:410::,2001:410:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:418::,2001:418:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:420::,2001:420:4049:ffff:ffff:ffff:ffff:ffff,US
+2001:420:404a::,2001:420:404a:ffff:ffff:ffff:ffff:ffff,GB
+2001:420:404b::,2001:420:5040:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5041::,2001:420:5041:ffff:ffff:ffff:ffff:ffff,AU
+2001:420:5042::,2001:420:5042:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5043::,2001:420:5043:ffff:ffff:ffff:ffff:ffff,AU
+2001:420:5044::,2001:420:5441:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5442::,2001:420:5442:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:5443::,2001:420:5882:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5883::,2001:420:5883:ffff:ffff:ffff:ffff:ffff,CN
+2001:420:5884::,2001:420:5a3f:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5a40::,2001:420:5a40:ffff:ffff:ffff:ffff:ffff,CN
+2001:420:5a41::,2001:420:5a43:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5a44::,2001:420:5a44:ffff:ffff:ffff:ffff:ffff,CN
+2001:420:5a45::,2001:420:5c3f:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5c40::,2001:420:5c40:ffff:ffff:ffff:ffff:ffff,SG
+2001:420:5c41::,2001:420:c0cf:ffff:ffff:ffff:ffff:ffff,US
+2001:420:c0d0::,2001:420:c0d0:ffff:ffff:ffff:ffff:ffff,AU
+2001:420:c0d1::,2001:420:c0d3:ffff:ffff:ffff:ffff:ffff,US
+2001:420:c0d4::,2001:420:c0d4:ffff:ffff:ffff:ffff:ffff,SG
+2001:420:c0d5::,2001:420:c0d7:ffff:ffff:ffff:ffff:ffff,US
+2001:420:c0d8::,2001:420:c0d8:ffff:ffff:ffff:ffff:ffff,CN
+2001:420:c0d9::,2001:420:c0df:ffff:ffff:ffff:ffff:ffff,US
+2001:420:c0e0::,2001:420:c0e0:ffff:ffff:ffff:ffff:ffff,IN
+2001:420:c0e1::,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
+2001:440::,2001:440:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:448::,2001:448:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2001:450::,2001:450:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:458::,2001:458:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:460::,2001:460:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:468::,2001:468:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:470::,2001:470:19:9ff:ffff:ffff:ffff:ffff,US
+2001:470:19:a00::,2001:470:19:fff:ffff:ffff:ffff:ffff,CN
+2001:470:19:1000::,2001:470:1c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1d::,2001:470:1d:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:1e::,2001:470:26:7ff:ffff:ffff:ffff:ffff,US
+2001:470:26:800::,2001:470:26:fff:ffff:ffff:ffff:ffff,CH
+2001:470:26:1000::,2001:470:34:ffff:ffff:ffff:ffff:ffff,US
+2001:470:35::,2001:470:35:7ff:ffff:ffff:ffff:ffff,ID
+2001:470:35:800::,2001:470:3c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:3d::,2001:470:3d:ffff:ffff:ffff:ffff:ffff,PH
+2001:470:3e::,2001:470:6d:3ff:ffff:ffff:ffff:ffff,US
+2001:470:6d:400::,2001:470:6d:7ff:ffff:ffff:ffff:ffff,DE
+2001:470:6d:800::,2001:470:1eff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f00::,2001:470:1f00:ffff:ffff:ffff:ffff:ffff,AU
+2001:470:1f01::,2001:470:69a3:ffff:ffff:ffff:ffff:ffff,US
+2001:470:69a4::,2001:470:69a4:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:69a5::,2001:470:6adc:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6add::,2001:470:6add:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:6ade::,2001:470:6b2e:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6b2f::,2001:470:6b2f:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:6b30::,2001:470:6be4:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6be5::,2001:470:6be5:ffff:ffff:ffff:ffff:ffff,GB
+2001:470:6be6::,2001:470:6bed:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6bee::,2001:470:6bee:ffff:ffff:ffff:ffff:ffff,IN
+2001:470:6bef::,2001:470:710f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7110::,2001:470:7110:ffff:ffff:ffff:ffff:ffff,UA
+2001:470:7111::,2001:470:75bf:ffff:ffff:ffff:ffff:ffff,US
+2001:470:75c0::,2001:470:75c0:ffff:ffff:ffff:ffff:ffff,TR
+2001:470:75c1::,2001:470:75c4:ffff:ffff:ffff:ffff:ffff,US
+2001:470:75c5::,2001:470:75c5:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:75c6::,2001:470:80b6:ffff:ffff:ffff:ffff:ffff,US
+2001:470:80b7::,2001:470:80b7:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:80b8::,2001:470:81ee:ffff:ffff:ffff:ffff:ffff,US
+2001:470:81ef::,2001:470:81ef:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:81f0::,2001:470:83a2:ffff:ffff:ffff:ffff:ffff,US
+2001:470:83a3::,2001:470:83a3:ffff:ffff:ffff:ffff:ffff,AU
+2001:470:83a4::,2001:470:83bb:ffff:ffff:ffff:ffff:ffff,US
+2001:470:83bc::,2001:470:83bc:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:83bd::,2001:470:83e8:ffff:ffff:ffff:ffff:ffff,US
+2001:470:83e9::,2001:470:83e9:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:83ea::,2001:470:9ebf:ffff:ffff:ffff:ffff:ffff,US
+2001:470:9ec0::,2001:470:9ec0:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:9ec1::,2001:470:b7a4:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b7a5::,2001:470:b7a5:ffff:ffff:ffff:ffff:ffff,CH
+2001:470:b7a6::,2001:470:de60:ffff:ffff:ffff:ffff:ffff,US
+2001:470:de61::,2001:470:de61:ffff:ffff:ffff:ffff:ffff,RU
+2001:470:de62::,2001:470:e97e:ffff:ffff:ffff:ffff:ffff,US
+2001:470:e97f::,2001:470:e97f:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:e980::,2001:470:ea76:ffff:ffff:ffff:ffff:ffff,US
+2001:470:ea77::,2001:470:ea77:ffff:ffff:ffff:ffff:ffff,AU
+2001:470:ea78::,2001:470:f1fa:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f1fb::,2001:470:f1fb:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f1fc::,2001:470:f382:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f383::,2001:470:f383:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f384::,2001:470:fe3f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:fe40::,2001:470:fe40:ffff:ffff:ffff:ffff:ffff,JP
+2001:470:fe41::,2001:470:fe7b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:fe7c::,2001:470:fe7c:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:fe7d::,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
+2001:4a0::,2001:4a0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4b0::,2001:4b0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4b8::,2001:4b8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4c0::,2001:4c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:4c8::,2001:4c8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:4d0::,2001:4d0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4e0::,2001:4e0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4e8::,2001:4e8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:4f0::,2001:4f0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4f8::,2001:4f8:ffff:ffff:ffff:ffff:ffff:ffff,US
+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: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
+2001:500:60::,2001:500:7d:ffff:ffff:ffff:ffff:ffff,US
+2001:500:80::,2001:500:83:ffff:ffff:ffff:ffff:ffff,CA
+2001:500:84::,2001:500:89:ffff:ffff:ffff:ffff:ffff,US
+2001:500:8c::,2001:500:9f:ffff:ffff:ffff:ffff:ffff,US
+2001:500:a0::,2001:500:a7:ffff:ffff:ffff:ffff:ffff,CA
+2001:500:a8::,2001:500:a8:ffff:ffff:ffff:ffff:ffff,US
+2001:500:c0::,2001:500:ef:ffff:ffff:ffff:ffff:ffff,CA
+2001:500:f0::,2001:500:f0:ffff:ffff:ffff:ffff:ffff,US
+2001:500:f1::,2001:500:f1:ffff:ffff:ffff:ffff:ffff,CA
+2001:500:100::,2001:500:109:ffff:ffff:ffff:ffff:ffff,CA
+2001:500:3e5::,2001:500:3e5:ffff:ffff:ffff:ffff:ffff,US
+2001:500:30ff::,2001:500:30ff:ffff:ffff:ffff:ffff:ffff,US
+2001:500:3682::,2001:500:3682:ffff:ffff:ffff:ffff:ffff,US
+2001:500:4431::,2001:500:4431:ffff:ffff:ffff:ffff:ffff,US
+2001:500:7967::,2001:500:7967:ffff:ffff:ffff:ffff:ffff,US
+2001:500:856e::,2001:500:856e:ffff:ffff:ffff:ffff:ffff,US
+2001:500:d937::,2001:500:d937:ffff:ffff:ffff:ffff:ffff,US
+2001:500:ed30::,2001:500:ed30:ffff:ffff:ffff:ffff:ffff,US
+2001:501:8a29::,2001:501:8a29:ffff:ffff:ffff:ffff:ffff,US
+2001:501:973c::,2001:501:973c:ffff:ffff:ffff:ffff:ffff,US
+2001:501:b1f9::,2001:501:b1f9:ffff:ffff:ffff:ffff:ffff,US
+2001:502:8cc::,2001:502:8cc:ffff:ffff:ffff:ffff:ffff,US
+2001:502:100e::,2001:502:100e:ffff:ffff:ffff:ffff:ffff,US
+2001:502:1ca1::,2001:502:1ca1:ffff:ffff:ffff:ffff:ffff,US
+2001:502:2eda::,2001:502:2eda:ffff:ffff:ffff:ffff:ffff,US
+2001:502:4612::,2001:502:4612:ffff:ffff:ffff:ffff:ffff,US
+2001:502:63bd::,2001:502:63bd:ffff:ffff:ffff:ffff:ffff,US
+2001:502:7094::,2001:502:7094:ffff:ffff:ffff:ffff:ffff,US
+2001:502:7a71::,2001:502:7a71:ffff:ffff:ffff:ffff:ffff,US
+2001:502:8c25::,2001:502:8c25:ffff:ffff:ffff:ffff:ffff,US
+2001:502:ad09::,2001:502:ad09:ffff:ffff:ffff:ffff:ffff,US
+2001:502:be98::,2001:502:be98:ffff:ffff:ffff:ffff:ffff,US
+2001:502:cbe4::,2001:502:cbe4:ffff:ffff:ffff:ffff:ffff,US
+2001:502:cfb5::,2001:502:cfb5:ffff:ffff:ffff:ffff:ffff,US
+2001:502:d399::,2001:502:d399:ffff:ffff:ffff:ffff:ffff,US
+2001:502:f3ff::,2001:502:f3ff:ffff:ffff:ffff:ffff:ffff,US
+2001:503:c27::,2001:503:c27:ffff:ffff:ffff:ffff:ffff,US
+2001:503:d2d::,2001:503:d2d:ffff:ffff:ffff:ffff:ffff,US
+2001:503:231d::,2001:503:231d:ffff:ffff:ffff:ffff:ffff,US
+2001:503:3227::,2001:503:3227:ffff:ffff:ffff:ffff:ffff,US
+2001:503:39c1::,2001:503:39c1:ffff:ffff:ffff:ffff:ffff,US
+2001:503:4872::,2001:503:4872:ffff:ffff:ffff:ffff:ffff,US
+2001:503:5419::,2001:503:5419:ffff:ffff:ffff:ffff:ffff,US
+2001:503:5ae2::,2001:503:5ae2:ffff:ffff:ffff:ffff:ffff,US
+2001:503:6810::,2001:503:6810:ffff:ffff:ffff:ffff:ffff,US
+2001:503:7bbb::,2001:503:7bbb:ffff:ffff:ffff:ffff:ffff,US
+2001:503:7bbf::,2001:503:7bbf:ffff:ffff:ffff:ffff:ffff,US
+2001:503:8028::,2001:503:8028:ffff:ffff:ffff:ffff:ffff,US
+2001:503:83eb::,2001:503:83eb:ffff:ffff:ffff:ffff:ffff,US
+2001:503:91ef::,2001:503:91ef:ffff:ffff:ffff:ffff:ffff,US
+2001:503:a124::,2001:503:a124:ffff:ffff:ffff:ffff:ffff,US
+2001:503:a83e::,2001:503:a83e:ffff:ffff:ffff:ffff:ffff,US
+2001:503:ba3e::,2001:503:ba3e:ffff:ffff:ffff:ffff:ffff,US
+2001:503:bfb0::,2001:503:bfb0:ffff:ffff:ffff:ffff:ffff,US
+2001:503:c779::,2001:503:c779:ffff:ffff:ffff:ffff:ffff,US
+2001:503:cc2c::,2001:503:cc2c:ffff:ffff:ffff:ffff:ffff,US
+2001:503:d1ae::,2001:503:d1ae:ffff:ffff:ffff:ffff:ffff,US
+2001:503:d414::,2001:503:d414:ffff:ffff:ffff:ffff:ffff,US
+2001:503:e239::,2001:503:e239:ffff:ffff:ffff:ffff:ffff,US
+2001:503:e8ef::,2001:503:e8ef:ffff:ffff:ffff:ffff:ffff,US
+2001:503:eea3::,2001:503:eea3:ffff:ffff:ffff:ffff:ffff,US
+2001:503:f189::,2001:503:f189:ffff:ffff:ffff:ffff:ffff,US
+2001:503:f261::,2001:503:f261:ffff:ffff:ffff:ffff:ffff,US
+2001:503:f3da::,2001:503:f3da:ffff:ffff:ffff:ffff:ffff,US
+2001:503:ff39::,2001:503:ff39:ffff:ffff:ffff:ffff:ffff,US
+2001:504::,2001:504:13:ffff:ffff:ffff:ffff:ffff,US
+2001:504:15::,2001:504:15:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:16::,2001:504:19:ffff:ffff:ffff:ffff:ffff,US
+2001:504:1a::,2001:504:1a:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:1b::,2001:504:1c:ffff:ffff:ffff:ffff:ffff,US
+2001:504:1d::,2001:504:1d:ffff:ffff:ffff:ffff:ffff,PR
+2001:504:20::,2001:504:23:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:24::,2001:504:24:ffff:ffff:ffff:ffff:ffff,US
+2001:504:25::,2001:504:26:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:27::,2001:504:29:ffff:ffff:ffff:ffff:ffff,US
+2001:504:2b::,2001:504:2d:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:2e::,2001:504:2e:ffff:ffff:ffff:ffff:ffff,US
+2001:504:2f::,2001:504:2f:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:30::,2001:504:34:ffff:ffff:ffff:ffff:ffff,US
+2001:504:35::,2001:504:35:ffff:ffff:ffff:ffff:ffff,GD
+2001:504:36::,2001:504:36:ffff:ffff:ffff:ffff:ffff,US
+2001:504:37::,2001:504:37:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:38::,2001:504:38:ffff:ffff:ffff:ffff:ffff,US
+2001:504:39::,2001:504:39:ffff:ffff:ffff:ffff:ffff,CA
+2001:504:3a::,2001:504:3d:ffff:ffff:ffff:ffff:ffff,US
+2001:504:3e::,2001:504:3e:ffff:ffff:ffff:ffff:ffff,JM
+2001:504:3f::,2001:504:41: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
+2001:506:28::,2001:506:28:ffff:ffff:ffff:ffff:ffff,US
+2001:506:100::,2001:506:100:ffff:ffff:ffff:ffff:ffff,US
+2001:506:1000::,2001:506:2fff:ffff:ffff:ffff:ffff:ffff,US
+2001:506:4000::,2001:506:7fff:ffff:ffff:ffff:ffff:ffff,US
+2001:508::,2001:508:ffff:ffff:ffff:ffff:ffff:ffff,BM
+2001:510::,2001:510:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:518::,2001:518:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:520::,2001:520:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:528::,2001:528:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:530::,2001:530:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:538::,2001:538:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:540::,2001:540:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:548::,2001:548:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:550::,2001:550:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:558::,2001:560:ffff:ffff:ffff:ffff:ffff:ffff,US
+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
+2001:590::,2001:590:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:598::,2001:598:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:5a0::,2001:5a0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5a8::,2001:5a8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5b0::,2001:5b0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5b8::,2001:5b8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5c0:1000::,2001:5c0:1fff:ffff:ffff:ffff:ffff:ffff,CA
+2001:5c8::,2001:5c8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5d0::,2001:5d0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5d8::,2001:5d8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5e0::,2001:5e0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5e8::,2001:5e8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5f0::,2001:5f0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:5f8::,2001:5f8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:608::,2001:608:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:610::,2001:610:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:618::,2001:618:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:620::,2001:620: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: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:66f:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:670::,2001:673:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2001:678:1::,2001:678:1:ffff:ffff:ffff:ffff:ffff,CZ
+2001:678:2::,2001:678:2:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:3::,2001:678:3:ffff:ffff:ffff:ffff:ffff,CH
+2001:678:4::,2001:678:5:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:6::,2001:678:6:ffff:ffff:ffff:ffff:ffff,LT
+2001:678:7::,2001:678:7:ffff:ffff:ffff:ffff:ffff,GR
+2001:678:8::,2001:678:8:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:9::,2001:678:a:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:b::,2001:678:b:ffff:ffff:ffff:ffff:ffff,LV
+2001:678:c::,2001:678:c:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:d::,2001:678:d:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:e::,2001:678:e:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:f::,2001:678:11:ffff:ffff:ffff:ffff:ffff,CZ
+2001:678:12::,2001:678:12:ffff:ffff:ffff:ffff:ffff,IT
+2001:678:13::,2001:678:18:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:19::,2001:678:19:ffff:ffff:ffff:ffff:ffff,LT
+2001:678:1a::,2001:678:1a:ffff:ffff:ffff:ffff:ffff,DK
+2001:678:1b::,2001:678:1b:ffff:ffff:ffff:ffff:ffff,LU
+2001:678:1c::,2001:678:1c:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:20::,2001:678:20:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:24::,2001:678:24:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:28::,2001:678:28:ffff:ffff:ffff:ffff:ffff,SM
+2001:678:2c::,2001:678:2c:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:30::,2001:678:30:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:34::,2001:678:34:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:38::,2001:678:38:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:3c::,2001:678:3c:ffff:ffff:ffff:ffff:ffff,BG
+2001:678:40::,2001:678:40:ffff:ffff:ffff:ffff:ffff,ES
+2001:678:44::,2001:678:44:ffff:ffff:ffff:ffff:ffff,ES
+2001:678:48::,2001:678:48:ffff:ffff:ffff:ffff:ffff,ES
+2001:678:4c::,2001:678:4c:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:60::,2001:678:60:ffff:ffff:ffff:ffff:ffff,LU
+2001:678:64::,2001:678:64:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:68::,2001:678:68:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:6c::,2001:678:6c:ffff:ffff:ffff:ffff:ffff,BE
+2001:678:70::,2001:678:70:ffff:ffff:ffff:ffff:ffff,SK
+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: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,IE
+2001:67c:24::,2001:67c:24:ffff:ffff:ffff:ffff:ffff,DE
+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:40::,2001:67c:40:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:44::,2001:67c:44:ffff:ffff:ffff:ffff:ffff,RO
+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:67c:64::,2001:67c:64:ffff:ffff:ffff:ffff:ffff,NL
+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,NL
+2001:67c:78::,2001:67c:78:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:84::,2001:67c:84:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:88::,2001:67c:88:ffff:ffff:ffff:ffff:ffff,CH
+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
+2001:67c:9c::,2001:67c:9c:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:a0::,2001:67c:a0:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:a4::,2001:67c:a4:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:a8::,2001:67c:a8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:ac::,2001:67c:ac:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:b0::,2001:67c:b0:ffff:ffff:ffff:ffff:ffff,NL
+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: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:100::,2001:67c:100:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:108::,2001:67c:108:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:10c::,2001:67c:10c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:110::,2001:67c:110:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:114::,2001:67c:114:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:118::,2001:67c:118:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:11c::,2001:67c:11c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:120::,2001:67c:120:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:124::,2001:67c:124:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:128::,2001:67c:128:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:12c::,2001:67c:12c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:130::,2001:67c:130:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:134::,2001:67c:134:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:138::,2001:67c:138:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:13c::,2001:67c:13c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:140::,2001:67c:140:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:148::,2001:67c:148:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:14c::,2001:67c:14d:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:154::,2001:67c:154:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:158::,2001:67c:158:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:15c::,2001:67c:15c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:160::,2001:67c:160:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:164::,2001:67c:164:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:168::,2001:67c:168:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:170::,2001:67c:170:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:174::,2001:67c:174:ffff:ffff:ffff:ffff:ffff,NL
+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
+2001:67c:184::,2001:67c:184:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:188::,2001:67c:188:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:18c::,2001:67c:18c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:190::,2001:67c:190:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:194::,2001:67c:194:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:19c::,2001:67c:19c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1a0::,2001:67c:1a0:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:1a4::,2001:67c:1a4:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1a8::,2001:67c:1a8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1ac::,2001:67c:1ac:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1b0::,2001:67c:1b0:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1b4::,2001:67c:1b4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1b8::,2001:67c:1b8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1bc::,2001:67c:1bc:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1c0::,2001:67c:1c0:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1c4::,2001:67c:1c4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1c8::,2001:67c:1c8:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1cc::,2001:67c:1cc:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:1d0::,2001:67c:1d0:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1d4::,2001:67c:1d4:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1d8::,2001:67c:1d8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1dc::,2001:67c:1dc:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1e0::,2001:67c:1e0:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1e4::,2001:67c:1e4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1e8::,2001:67c:1e8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1ec::,2001:67c:1ec:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:1f0::,2001:67c:1f0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1f4::,2001:67c:1f4:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:1f8::,2001:67c:1f8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1fc::,2001:67c:1fc:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:200::,2001:67c:200:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:204::,2001:67c:204:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:208::,2001:67c:208:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:20c::,2001:67c:20c:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:210::,2001:67c:210:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:214::,2001:67c:214:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:218::,2001:67c:218:ffff:ffff:ffff:ffff:ffff,LT
+2001:67c:21c::,2001:67c:21c:ffff:ffff:ffff:ffff:ffff,AM
+2001:67c:220::,2001:67c:220:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:224::,2001:67c:224:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:228::,2001:67c:228:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:22c::,2001:67c:22c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:230::,2001:67c:230:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:234::,2001:67c:234:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:238::,2001:67c:238:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:23c::,2001:67c:23c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:240::,2001:67c:240:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:244::,2001:67c:244:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:248::,2001:67c:248:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:24c::,2001:67c:24c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:250::,2001:67c:250:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:254::,2001:67c:254:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:258::,2001:67c:258:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:25c::,2001:67c:25c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:260::,2001:67c:260:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:264::,2001:67c:264:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:268::,2001:67c:268:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:26c::,2001:67c:26c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:270::,2001:67c:270:ffff:ffff:ffff:ffff:ffff,NL
+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: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: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: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: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,CH
+2001:67c:374::,2001:67c:374:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:37c::,2001:67c:37c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:380::,2001:67c:380:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:384::,2001:67c:384:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:388::,2001:67c:388:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:38c::,2001:67c:38c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:390::,2001:67c:390:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:394::,2001:67c:394:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:398::,2001:67c:398:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:39c::,2001:67c:39c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:3a0::,2001:67c:3a0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:3a4::,2001:67c:3a4:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:3a8::,2001:67c:3a8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:3ac::,2001:67c:3ac:ffff:ffff:ffff:ffff:ffff,RS
+2001:67c:3b0::,2001:67c:3b0:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:3b4::,2001:67c:3b4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:3b8::,2001:67c:3b8:ffff:ffff:ffff:ffff:ffff,IE
+2001:67c:3bc::,2001:67c:3bc:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:3c0::,2001:67c:3c0:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:3c4::,2001:67c:3c4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:3c8::,2001:67c:3c8:ffff:ffff:ffff:ffff:ffff,EE
+2001:67c:3cc::,2001:67c:3cc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:3d0::,2001:67c:3d0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:3d4::,2001:67c:3d4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:3d8::,2001:67c:3d8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:3dc::,2001:67c:3dc:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:3e0::,2001:67c:3e0:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:3e4::,2001:67c:3e4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:3e8::,2001:67c:3e9:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:3f0::,2001:67c:3f0:ffff:ffff:ffff:ffff:ffff,GB
+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,AT
+2001:67c:400::,2001:67c:400:ffff:ffff:ffff:ffff:ffff,RU
+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
+2001:67c:410::,2001:67c:410:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:414::,2001:67c:414:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:418::,2001:67c:418:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:41c::,2001:67c:41c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:420::,2001:67c:420:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:424::,2001:67c:424:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:428::,2001:67c:428:ffff:ffff:ffff:ffff:ffff,RU
+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: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,RO
+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:458::,2001:67c:458:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:45c::,2001:67c:45c:ffff:ffff:ffff:ffff:ffff,NL
+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
+2001:67c:46c::,2001:67c:46c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:470::,2001:67c:470:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:474::,2001:67c:474:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:478::,2001:67c:478:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:47c::,2001:67c:47c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:480::,2001:67c:480:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:484::,2001:67c:484:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:488::,2001:67c:488:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:48c::,2001:67c:48c:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:490::,2001:67c:490:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:494::,2001:67c:494:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:498::,2001:67c:498:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:49c::,2001:67c:49c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4a0::,2001:67c:4a0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:4a4::,2001:67c:4a4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4a8::,2001:67c:4a8:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:4ac::,2001:67c:4ac:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:4b0::,2001:67c:4b0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:4b4::,2001:67c:4b4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:4b8::,2001:67c:4b8:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:4bc::,2001:67c:4bc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4c0::,2001:67c:4c0:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:4c4::,2001:67c:4c4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4c8::,2001:67c:4c8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:4cc::,2001:67c:4cc:ffff:ffff:ffff:ffff:ffff,IL
+2001:67c:4d0::,2001:67c:4d0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:4d4::,2001:67c:4d4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:4d8::,2001:67c:4d8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4dc::,2001:67c:4dc:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:4e4::,2001:67c:4e4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:4e8::,2001:67c:4e8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:4ec::,2001:67c:4ec:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:4f0::,2001:67c:4f0:ffff:ffff:ffff:ffff:ffff,CH
+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: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: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
+2001:67c:54c::,2001:67c:54c:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:550::,2001:67c:550:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:554::,2001:67c:554:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:558::,2001:67c:558:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:55c::,2001:67c:55c:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:560::,2001:67c:560:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:564::,2001:67c:564:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:568::,2001:67c:568:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:56c::,2001:67c:56c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:570::,2001:67c:570:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:574::,2001:67c:574:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:578::,2001:67c:578:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:57c::,2001:67c:57c:ffff:ffff:ffff:ffff:ffff,BY
+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,NO
+2001:67c:594::,2001:67c:594:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:598::,2001:67c:598:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:59c::,2001:67c:59c:ffff:ffff:ffff:ffff:ffff,HU
+2001:67c:5a0::,2001:67c:5a1:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:5a8::,2001:67c:5a8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:5ac::,2001:67c:5ac:ffff:ffff:ffff:ffff:ffff,BY
+2001:67c:5b0::,2001:67c:5b0:ffff:ffff:ffff:ffff:ffff,LV
+2001:67c:5b4::,2001:67c:5b4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:5b8::,2001:67c:5b8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:5bc::,2001:67c:5bc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:5c0::,2001:67c:5c0:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:5c4::,2001:67c:5c4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:5c8::,2001:67c:5c8:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:5cc::,2001:67c:5cc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:5d0::,2001:67c:5d0:ffff:ffff:ffff:ffff:ffff,LV
+2001:67c:5d4::,2001:67c:5d4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:5d8::,2001:67c:5d8:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:5dc::,2001:67c:5dc:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:5e0::,2001:67c:5e0:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:5e4::,2001:67c:5e4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:5e8::,2001:67c:5e8:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:5ec::,2001:67c:5ec:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:5f0::,2001:67c:5f0:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:5f4::,2001:67c:5f4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:5f8::,2001:67c:5f8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:5fc::,2001:67c:5fc:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:600::,2001:67c:600:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:604::,2001:67c:604:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:608::,2001:67c:608:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:60c::,2001:67c:60c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:610::,2001:67c:610:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:61c::,2001:67c:61c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:620::,2001:67c:620:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:624::,2001:67c:624:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:628::,2001:67c:628:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:62c::,2001:67c:62c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:630::,2001:67c:630:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:634::,2001:67c:634:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:638::,2001:67c:638:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:63c::,2001:67c:63c:ffff:ffff:ffff:ffff:ffff,DE
+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
+2001:67c:65c::,2001:67c:65c:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:660::,2001:67c:660:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:664::,2001:67c:664:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:668::,2001:67c:668:ffff:ffff:ffff:ffff:ffff,MD
+2001:67c:66c::,2001:67c:66c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:670::,2001:67c:670:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:674::,2001:67c:674:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:678::,2001:67c:678:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:67c::,2001:67c:67c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:680::,2001:67c:680:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:684::,2001:67c:684:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:688::,2001:67c:688:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:68c::,2001:67c:68c:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:690::,2001:67c:690:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:694::,2001:67c:694:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:698::,2001:67c:698:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:69c::,2001:67c:69c:ffff:ffff:ffff:ffff:ffff,RS
+2001:67c:6a0::,2001:67c:6a0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:6a4::,2001:67c:6a4:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:6a8::,2001:67c:6a8:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:6ac::,2001:67c:6ac:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:6b0::,2001:67c:6b0:ffff:ffff:ffff:ffff:ffff,NL
+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,SE
+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,RU
+2001:67c:6f8::,2001:67c:6f8:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:6fc::,2001:67c:6fc: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,CZ
+2001:67c:70c::,2001:67c:70c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:710::,2001:67c:710:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:714::,2001:67c:714:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:718::,2001:67c:718:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:71c::,2001:67c:71c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:720::,2001:67c:720:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:724::,2001:67c:724:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:728::,2001:67c:728:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:72c::,2001:67c:72c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:730::,2001:67c:730:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:734::,2001:67c:734:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:738::,2001:67c:738:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:73c::,2001:67c:73c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:740::,2001:67c:740:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:744::,2001:67c:744:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:748::,2001:67c:748:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:74c::,2001:67c:74c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:750::,2001:67c:750:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:754::,2001:67c:754:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:758::,2001:67c:758:ffff:ffff:ffff:ffff:ffff,DE
+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:771:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:778::,2001:67c:778:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:77c::,2001:67c:77c:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:784::,2001:67c:784:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:788::,2001:67c:788:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:78c::,2001:67c:78c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:790::,2001:67c:790:ffff:ffff:ffff:ffff:ffff,IT
+2001:67c:794::,2001:67c:794:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:798::,2001:67c:798:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:79c::,2001:67c:79c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:7a0::,2001:67c:7a0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:7a4::,2001:67c:7a4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:7a8::,2001:67c:7a8:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:7ac::,2001:67c:7ac:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:7b0::,2001:67c:7b0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:7b4::,2001:67c:7b4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:7b8::,2001:67c:7b8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:7c0::,2001:67c:7c3:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:7d0::,2001:67c:7d0:ffff:ffff:ffff:ffff:ffff,LV
+2001:67c:7d4::,2001:67c:7d4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:7d8::,2001:67c:7d8:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:7dc::,2001:67c:7dc:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:7e0::,2001:67c:7e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:7e4::,2001:67c:7e4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:7e8::,2001:67c:7e8:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:7ec::,2001:67c:7ec:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:7f0::,2001:67c:7f0:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:7f4::,2001:67c:7f4:ffff:ffff:ffff:ffff:ffff,KW
+2001:67c:7f8::,2001:67c:7f8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:7fc::,2001:67c:7fc:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1000::,2001:67c:1001:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1008::,2001:67c:1009:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1010::,2001:67c:1011:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1018::,2001:67c:1019:ffff:ffff:ffff:ffff:ffff,DE
+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,RO
+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,PL
+2001:67c:1044::,2001:67c:1044:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1048::,2001:67c:1048:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:104c::,2001:67c:104c:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1054::,2001:67c:1054:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1058::,2001:67c:1058:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:105c::,2001:67c:105c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1060::,2001:67c:1060:ffff:ffff:ffff:ffff:ffff,LU
+2001:67c:1064::,2001:67c:1064:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1068::,2001:67c:1068:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:106c::,2001:67c:106c:ffff:ffff:ffff:ffff:ffff,GB
+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:1090::,2001:67c:1090:ffff:ffff:ffff:ffff:ffff,CH
+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:1100::,2001:67c:1100:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1104::,2001:67c:1104:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1108::,2001:67c:1109:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:1110::,2001:67c:1111:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1118::,2001:67c:1118:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:111c::,2001:67c:111c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1120::,2001:67c:1120:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1124::,2001:67c:1124:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:1128::,2001:67c:1128:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:112c::,2001:67c:112c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1130::,2001:67c:1130:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1134::,2001:67c:1134:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1138::,2001:67c:1138:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:113c::,2001:67c:113c:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1140::,2001:67c:1140:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1144::,2001:67c:1144:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1148::,2001:67c:1148:ffff:ffff:ffff:ffff:ffff,ES
+2001:67c:114c::,2001:67c:114c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1150::,2001:67c:1150:ffff:ffff:ffff:ffff:ffff,IL
+2001:67c:1154::,2001:67c:1154:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:1158::,2001:67c:1158:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:115c::,2001:67c:115c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1160::,2001:67c:1160:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1164::,2001:67c:1164:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:116c::,2001:67c:116c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1170::,2001:67c:1170:ffff:ffff:ffff:ffff:ffff,GB
+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: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,GB
+2001:67c:11ec::,2001:67c:11ec:ffff:ffff:ffff:ffff:ffff,TR
+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:1203:ffff:ffff:ffff:ffff:ffff,FR
+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,CH
+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,LU
+2001:67c:1254::,2001:67c:1254:ffff:ffff:ffff:ffff:ffff,FR
+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: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:1294::,2001:67c:1294:ffff:ffff:ffff:ffff:ffff,SE
+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,FR
+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,PL
+2001:67c:12dc::,2001:67c:12dc:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:12e0::,2001:67c:12e0:ffff:ffff:ffff:ffff:ffff,UA
+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:12f4::,2001:67c:12f4:ffff:ffff:ffff:ffff:ffff,CZ
+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: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,MD
+2001:67c:130c::,2001:67c:130c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1310::,2001:67c:1310:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1314::,2001:67c:1314:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1318::,2001:67c:1318:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:131c::,2001:67c:131c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1320::,2001:67c:1320:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1324::,2001:67c:1324:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1328::,2001:67c:1328:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:132c::,2001:67c:132c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1330::,2001:67c:1330:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1334::,2001:67c:1334:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1338::,2001:67c:1338:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:133c::,2001:67c:133c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1340::,2001:67c:1340:ffff:ffff:ffff:ffff:ffff,HR
+2001:67c:1348::,2001:67c:1348:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:134c::,2001:67c:134c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1350::,2001:67c:1350:ffff:ffff:ffff:ffff:ffff,CY
+2001:67c:1354::,2001:67c:1354:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1358::,2001:67c:1358:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:135c::,2001:67c:135c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1360::,2001:67c:1360:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1364::,2001:67c:1364:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1368::,2001:67c:1368:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:136c::,2001:67c:136c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1370::,2001:67c:1370:ffff:ffff:ffff:ffff:ffff,UA
+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: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: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:1400::,2001:67c:1407:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1420::,2001:67c:1427:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1440::,2001:67c:1447:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1460::,2001:67c:1467:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1480::,2001:67c:1480:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1484::,2001:67c:1484:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1488::,2001:67c:1488:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:148c::,2001:67c:148c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1490::,2001:67c:1490:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1494::,2001:67c:1494:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1498::,2001:67c:1498:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:149c::,2001:67c:149c:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:14a0::,2001:67c:14a0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:14a4::,2001:67c:14a4:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:14ac::,2001:67c:14ac:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:14b0::,2001:67c:14b0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:14b4::,2001:67c:14b4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:14b8::,2001:67c:14b8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:14bc::,2001:67c:14bc:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:14c4::,2001:67c:14c4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:14d0::,2001:67c:14d0:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:14d4::,2001:67c:14d4:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:14d8::,2001:67c:14d8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:14dc::,2001:67c:14dc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:14e0::,2001:67c:14e7:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1500::,2001:67c:1500:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1504::,2001:67c:1504:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1508::,2001:67c:1508:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:150c::,2001:67c:150c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1510::,2001:67c:1510:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1514::,2001:67c:1514:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1518::,2001:67c:1518:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:151c::,2001:67c:151c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1520::,2001:67c:1520:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1524::,2001:67c:1524:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1528::,2001:67c:1528:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:152c::,2001:67c:152c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1530::,2001:67c:1530:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1534::,2001:67c:1534:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1538::,2001:67c:1538:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:153c::,2001:67c:153c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1540::,2001:67c:1540:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1544::,2001:67c:1544:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:154c::,2001:67c:154c:ffff:ffff:ffff:ffff:ffff,SE
+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: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
+2001:67c:157c::,2001:67c:157c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1580::,2001:67c:1580:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1584::,2001:67c:1584:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:158c::,2001:67c:158c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1590::,2001:67c:1591:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1598::,2001:67c:1598:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:159c::,2001:67c:159c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:15a0::,2001:67c:15a3:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:15b0::,2001:67c:15b0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:15b8::,2001:67c:15b8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:15bc::,2001:67c:15bc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15c0::,2001:67c:15c0:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:15c4::,2001:67c:15c4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15c8::,2001:67c:15c8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15cc::,2001:67c:15cc:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:15d0::,2001:67c:15d0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:15d4::,2001:67c:15d4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15d8::,2001:67c:15d8:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:15dc::,2001:67c:15dc:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:15e0::,2001:67c:15e0:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:15e4::,2001:67c:15e4:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:15e8::,2001:67c:15e8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15ec::,2001:67c:15ec:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:15f0::,2001:67c:15f0:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:15f4::,2001:67c:15f4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:15f8::,2001:67c:15f8:ffff:ffff:ffff:ffff:ffff,RU
+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,UA
+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:16c8::,2001:67c:16c8:ffff:ffff:ffff:ffff:ffff,CZ
+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,RO
+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: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:1720::,2001:67c:1720:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1724::,2001:67c:1724:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1728::,2001:67c:1728:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c: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: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
+2001:67c:1748::,2001:67c:1748:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:174c::,2001:67c:174c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1750::,2001:67c:1750:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1754::,2001:67c:1754:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1758::,2001:67c:1758:ffff:ffff:ffff:ffff:ffff,DE
+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
+2001:67c:177c::,2001:67c:177c:ffff:ffff:ffff:ffff:ffff,LT
+2001:67c:1780::,2001:67c:1780:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:1784::,2001:67c:1784:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1788::,2001:67c:1788:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:178c::,2001:67c:178c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1790::,2001:67c:1790:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1794::,2001:67c:1794:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1798::,2001:67c:1798:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:179c::,2001:67c:179c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17a0::,2001:67c:17a0:ffff:ffff:ffff:ffff:ffff,FI
+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,PL
+2001:67c:17b4::,2001:67c:17b4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:17b8::,2001:67c:17b8:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:17bc::,2001:67c:17bc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17c0::,2001:67c:17c0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17c4::,2001:67c:17c4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17c8::,2001:67c:17c8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:17cc::,2001:67c:17cc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17d0::,2001:67c:17d0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:17d4::,2001:67c:17d4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:17d8::,2001:67c:17d8:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:17dc::,2001:67c:17dc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17e0::,2001:67c:17e0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17e4::,2001:67c:17e4:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:17e8::,2001:67c:17e8:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:17ec::,2001:67c:17ec:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:17f0::,2001:67c:17f0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17f4::,2001:67c:17f4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:17f8::,2001:67c:17f8:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:17fc::,2001:67c:17fc:ffff:ffff:ffff:ffff:ffff,RO
+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: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,RO
+2001:67c:181c::,2001:67c:181c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1820::,2001:67c:1820:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1828::,2001:67c:1828:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:182c::,2001:67c:182c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1830::,2001:67c:1830:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1834::,2001:67c:1834:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:1838::,2001:67c:1838:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:183c::,2001:67c:183c:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:1840::,2001:67c:1840:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1844::,2001:67c:1844:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1848::,2001:67c:1848:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:184c::,2001:67c:184c:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:1850::,2001:67c:1850:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1854::,2001:67c:1854:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1858::,2001:67c:1858:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:185c::,2001:67c:185c:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:1860::,2001:67c:1860:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1864::,2001:67c:1864:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1868::,2001:67c:1868:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:186c::,2001:67c:186c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1870::,2001:67c:1870:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1874::,2001:67c:1874:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1878::,2001:67c:1878:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:187c::,2001:67c:187c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1880::,2001:67c:1880:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1884::,2001:67c:1884:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1888::,2001:67c:1888:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:188c::,2001:67c:188c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:1890::,2001:67c:1890:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1894::,2001:67c:1894:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1898::,2001:67c:1898:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:189c::,2001:67c:189c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:18a0::,2001:67c:18a0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:18a4::,2001:67c:18a4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:18a8::,2001:67c:18a8:ffff:ffff:ffff:ffff:ffff,BY
+2001:67c:18ac::,2001:67c:18ac:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:18b0::,2001:67c:18b0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:18b4::,2001:67c:18b4:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:18b8::,2001:67c:18b8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:18bc::,2001:67c:18bc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:18c0::,2001:67c:18c0:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:18c4::,2001:67c:18c4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:18c8::,2001:67c:18c9:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:18d0::,2001:67c:18d0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:18d4::,2001:67c:18d4:ffff:ffff:ffff:ffff:ffff,NZ
+2001:67c:18d8::,2001:67c:18d8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:18dc::,2001:67c:18dc:ffff:ffff:ffff:ffff:ffff,LI
+2001:67c:18e0::,2001:67c:18e0:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:18e4::,2001:67c:18e4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:18e8::,2001:67c:18e8:ffff:ffff:ffff:ffff:ffff,DE
+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,RO
+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
+2001:67c:1918::,2001:67c:1918:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:191c::,2001:67c:191c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1920::,2001:67c:1920:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1924::,2001:67c:1924:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1928::,2001:67c:1928:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:192c::,2001:67c:192c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1930::,2001:67c:1933:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1940::,2001:67c:1940:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1944::,2001:67c:1944:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1948::,2001:67c:1948:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:194c::,2001:67c:194c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1950::,2001:67c:1950:ffff:ffff:ffff:ffff:ffff,DE
+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:1960::,2001:67c:1960:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1964::,2001:67c:1964:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1968::,2001:67c:1968:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:196c::,2001:67c:196c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1970::,2001:67c:1970:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1974::,2001:67c:1974:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:1978::,2001:67c:1978:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:197c::,2001:67c:197c:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:1980::,2001:67c:1980:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:1984::,2001:67c:1984:ffff:ffff:ffff:ffff:ffff,BG
+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:19a0::,2001:67c:19a0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:19a4::,2001:67c:19a4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:19a8::,2001:67c:19a8:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:19ac::,2001:67c:19ac:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:19b0::,2001:67c:19b3:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:19c0::,2001:67c:19c0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:19c4::,2001:67c:19c4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:19c8::,2001:67c:19c8:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:19cc::,2001:67c:19cc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:19d0::,2001:67c:19d0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:19d4::,2001:67c:19d4:ffff:ffff:ffff:ffff:ffff,RU
+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,RO
+2001:67c:19e4::,2001:67c:19e4:ffff:ffff:ffff:ffff:ffff,RO
+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
+2001:67c:19f4::,2001:67c:19f4:ffff:ffff:ffff:ffff:ffff,RU
+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:1b08::,2001:67c:1b08:ffff:ffff:ffff:ffff:ffff,CZ
+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:1b20::,2001:67c:1b20:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1b24::,2001:67c:1b24:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:1b30::,2001:67c:1b30:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1b34::,2001:67c:1b34:ffff:ffff:ffff:ffff:ffff,DE
+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:1b54::,2001:67c:1b54:ffff:ffff:ffff:ffff:ffff,RO
+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:1b6c::,2001:67c:1b6c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1b70::,2001:67c:1b70:ffff:ffff:ffff:ffff:ffff,AT
+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: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,CZ
+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,RO
+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:1ba4::,2001:67c:1ba4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:1ba8::,2001:67c:1ba8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1bb0::,2001:67c:1bb0:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1bb4::,2001:67c:1bb4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:1bb8::,2001:67c:1bb8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1bbc::,2001:67c:1bbc:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:1bc0::,2001:67c:1bc0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1bc4::,2001:67c:1bc4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:1bc8::,2001:67c:1bc8:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1bcc::,2001:67c:1bcc:ffff:ffff:ffff:ffff:ffff,UA
+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,RO
+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
+2001:67c:1bec::,2001:67c:1bec:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1bf4::,2001:67c:1bf4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:1bf8::,2001:67c:1bf8:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1bfc::,2001:67c:1bfc:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:1c00::,2001:67c:1cff:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2004::,2001:67c:2004:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2008::,2001:67c:2008:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:200c::,2001:67c:200c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2010::,2001:67c:2010:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2014::,2001:67c:2014:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2018::,2001:67c:2018:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2020::,2001:67c:2020:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2024::,2001:67c:2024:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2028::,2001:67c:2028:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2030::,2001:67c:2030:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2034::,2001:67c:2034:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2038::,2001:67c:2038:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:203c::,2001:67c:203c:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2040::,2001:67c:2040:ffff:ffff:ffff:ffff:ffff,AE
+2001:67c:2044::,2001:67c:2044:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2048::,2001:67c:2048:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:204c::,2001:67c:204c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2050::,2001:67c:2050:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:205c::,2001:67c:205c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2060::,2001:67c:2060:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2064::,2001:67c:2064:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2068::,2001:67c:2068:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:206c::,2001:67c:206c:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2070::,2001:67c:2070:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2074::,2001:67c:2074:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2078::,2001:67c:2078:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:207c::,2001:67c:207c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2080::,2001:67c:2080:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2084::,2001:67c:2084:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2088::,2001:67c:2088:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:208c::,2001:67c:208c:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:20a0::,2001:67c:20a1:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:20a8::,2001:67c:20a8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:20ac::,2001:67c:20ac:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:20b0::,2001:67c:20b0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:20b4::,2001:67c:20b4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:20b8::,2001:67c:20b9:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:20c0::,2001:67c:20c0:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:20c4::,2001:67c:20c4:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:20c8::,2001:67c:20c8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:20cc::,2001:67c:20cc:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:20d0::,2001:67c:20d1:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:20d8::,2001:67c:20d8:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:20dc::,2001:67c:20dc:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:20e0::,2001:67c:20e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:20e4::,2001:67c:20e4:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:20e8::,2001:67c:20e8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:20ec::,2001:67c:20ec:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:20f0::,2001:67c:20f0:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:20f4::,2001:67c:20f4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:20f8::,2001:67c:20f8:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2100::,2001:67c:2100:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2104::,2001:67c:2104:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2108::,2001:67c:2108:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:210c::,2001:67c:210c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2110::,2001:67c:2110:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2114::,2001:67c:2114:ffff:ffff:ffff:ffff:ffff,IS
+2001:67c:2118::,2001:67c:2118:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:211c::,2001:67c:211c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2120::,2001:67c:2120:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2124::,2001:67c:2124:ffff:ffff:ffff:ffff:ffff,HU
+2001:67c:2128::,2001:67c:2128:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:212c::,2001:67c:212c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2130::,2001:67c:2130:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2134::,2001:67c:2134:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2138::,2001:67c:2138:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:213c::,2001:67c:213c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2144::,2001:67c:2144:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:2148::,2001:67c:2148:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:214c::,2001:67c:214c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2150::,2001:67c:2150:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2154::,2001:67c:2154:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:2158::,2001:67c:2158:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:215c::,2001:67c:215c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2160::,2001:67c:2160:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2164::,2001:67c:2164:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:2168::,2001:67c:2168:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:216c::,2001:67c:216c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2170::,2001:67c:2170:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2174::,2001:67c:2174:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2178::,2001:67c:2178:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:217c::,2001:67c:217c:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2180::,2001:67c:2180:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2188::,2001:67c:2188:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:218c::,2001:67c:218c:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2190::,2001:67c:2190:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2194::,2001:67c:2194:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2198::,2001:67c:2198:ffff:ffff:ffff:ffff:ffff,LV
+2001:67c:219c::,2001:67c:219c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:21a0::,2001:67c:21a0:ffff:ffff:ffff:ffff:ffff,IT
+2001:67c:21a4::,2001:67c:21a4:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:21a8::,2001:67c:21a8:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:21ac::,2001:67c:21ac:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:21b0::,2001:67c:21b0:ffff:ffff:ffff:ffff:ffff,DE
+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:21c0::,2001:67c:21c0:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:21c4::,2001:67c:21c4:ffff:ffff:ffff:ffff:ffff,GB
+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: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: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
+2001:67c:220c::,2001:67c:220c:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:2210::,2001:67c:2210:ffff:ffff:ffff:ffff:ffff,RS
+2001:67c:2214::,2001:67c:2214:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2218::,2001:67c:2219:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2220::,2001:67c:2220:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2224::,2001:67c:2224:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2228::,2001:67c:2228:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:222c::,2001:67c:222c:ffff:ffff:ffff:ffff:ffff,SK
+2001:67c:2234::,2001:67c:2234:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2238::,2001:67c:2238:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:223c::,2001:67c:223c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2240::,2001:67c:2240:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2244::,2001:67c:2244:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2248::,2001:67c:2248:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2250::,2001:67c:2250:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2254::,2001:67c:2254:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2258::,2001:67c:2258:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:225c::,2001:67c:225c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2260::,2001:67c:2260:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2264::,2001:67c:2264:ffff:ffff:ffff:ffff:ffff,KG
+2001:67c:2268::,2001:67c:2268:ffff:ffff:ffff:ffff:ffff,BY
+2001:67c:226c::,2001:67c:226c:ffff:ffff:ffff:ffff:ffff,NL
+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,PL
+2001:67c:227c::,2001:67c:227c:ffff:ffff:ffff:ffff:ffff,DK
+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,RU
+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:22f8::,2001:67c:22f8:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:22fc::,2001:67c:22fc:ffff:ffff:ffff:ffff:ffff,SE
+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
+2001:67c:230c::,2001:67c:230c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2310::,2001:67c:2310:ffff:ffff:ffff:ffff:ffff,DE
+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:232c::,2001:67c:232c:ffff:ffff:ffff:ffff:ffff,LV
+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:2348::,2001:67c:2348:ffff:ffff:ffff:ffff:ffff,AE
+2001:67c:234c::,2001:67c:234c:ffff:ffff:ffff:ffff:ffff,PL
+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:2394::,2001:67c:2394:ffff:ffff:ffff:ffff:ffff,DE
+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: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:23d4::,2001:67c:23d4:ffff:ffff:ffff:ffff:ffff,EE
+2001:67c:23d8::,2001:67c:23d9:ffff:ffff:ffff:ffff:ffff,AT
+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: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
+2001:67c:240c::,2001:67c:240c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2410::,2001:67c:2410:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:2414::,2001:67c:2414:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2418::,2001:67c:2418:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2420::,2001:67c:2420:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2424::,2001:67c:2424:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2428::,2001:67c:2428:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:242c::,2001:67c:242c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2430::,2001:67c:2433:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2440::,2001:67c:2440:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2444::,2001:67c:2444:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2448::,2001:67c:2448:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:244c::,2001:67c:244c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2454::,2001:67c:2454:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:245c::,2001:67c:245c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:2460::,2001:67c:2460:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2464::,2001:67c:2464:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2468::,2001:67c:2468:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:246c::,2001:67c:246c:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2470::,2001:67c:2470:ffff:ffff:ffff:ffff:ffff,UA
+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
+2001:67c:2490::,2001:67c:2490:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2494::,2001:67c:2494:ffff:ffff:ffff:ffff:ffff,CZ
+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,CZ
+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:24b4::,2001:67c:24b4:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:24b8::,2001:67c:24b8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:24bc::,2001:67c:24bc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:24c4::,2001:67c:24c4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:24c8::,2001:67c:24c8:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:24cc::,2001:67c:24cc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:24d0::,2001:67c:24d0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:24d4::,2001:67c:24d4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:24d8::,2001:67c:24d8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:24dc::,2001:67c:24dc:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:24e0::,2001:67c:24e0:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:24e4::,2001:67c:24e4:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:24e8::,2001:67c:24e9:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:24f0::,2001:67c:24f0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:24f4::,2001:67c:24f4:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:24f8::,2001:67c:24f8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:24fc::,2001:67c:24fc:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2500::,2001:67c:2507:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2520::,2001:67c:2520:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2524::,2001:67c:2524:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2528::,2001:67c:2528:ffff:ffff:ffff:ffff:ffff,LV
+2001:67c:252c::,2001:67c:252c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2534::,2001:67c:2534:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2538::,2001:67c:2538:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:253c::,2001:67c:253c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2540::,2001:67c:2540:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2544::,2001:67c:2544:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2548::,2001:67c:2548:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:254c::,2001:67c:254c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2550::,2001:67c:2550:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2554::,2001:67c:2554:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2558::,2001:67c:2558:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:255c::,2001:67c:255c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2560::,2001:67c:2560:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2564::,2001:67c:2564:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:256c::,2001:67c:256c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2574::,2001:67c:2574:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2578::,2001:67c:2578:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:257c::,2001:67c:257c:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2580::,2001:67c:2580:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2584::,2001:67c:2584:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2588::,2001:67c:2588:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2590::,2001:67c:2590:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2594::,2001:67c:2594:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2598::,2001:67c:2598:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:259c::,2001:67c:259c:ffff:ffff:ffff:ffff:ffff,AE
+2001:67c:25a0::,2001:67c:25a0:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:25a4::,2001:67c:25a4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:25a8::,2001:67c:25a8:ffff:ffff:ffff:ffff:ffff,GB
+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
+2001:67c:25b8::,2001:67c:25b8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:25bc::,2001:67c:25bc:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:25c0::,2001:67c:25c0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:25c4::,2001:67c:25c4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:25cc::,2001:67c:25cc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:25d0::,2001:67c:25d0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:25d4::,2001:67c:25d4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:25d8::,2001:67c:25d8:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:25dc::,2001:67c:25dc:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:25e4::,2001:67c:25e4:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:25f4::,2001:67c:25f4:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:25fc::,2001:67c:25fc:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2600::,2001:67c:2600:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2604::,2001:67c:2604:ffff:ffff:ffff:ffff:ffff,SK
+2001:67c:260c::,2001:67c:260c:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2610::,2001:67c:2610:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2614::,2001:67c:2614:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2618::,2001:67c:2618:ffff:ffff:ffff:ffff:ffff,EE
+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: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: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:265c::,2001:67c:265c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2660::,2001:67c:2660:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2664::,2001:67c:2664:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2668::,2001:67c:2668:ffff:ffff:ffff:ffff:ffff,DK
+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:2678::,2001:67c:2678:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:267c::,2001:67c:267c:ffff:ffff:ffff:ffff:ffff,PL
+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
+2001:67c:2690::,2001:67c:2690:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:2694::,2001:67c:2694:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2698::,2001:67c:2698:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:269c::,2001:67c:269c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:26a0::,2001:67c:26a0:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:26a4::,2001:67c:26a4:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:26ac::,2001:67c:26ac:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:26b0::,2001:67c:26b0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:26b4::,2001:67c:26b4:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:26b8::,2001:67c:26b8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:26bc::,2001:67c:26bc:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:26c0::,2001:67c:26c3:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:26d0::,2001:67c:26d0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:26d4::,2001:67c:26d4:ffff:ffff:ffff:ffff:ffff,SK
+2001:67c:26d8::,2001:67c:26d8:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:26dc::,2001:67c:26dc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:26e0::,2001:67c:26e0:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:26e4::,2001:67c:26e4:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:26e8::,2001:67c:26e8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:26ec::,2001:67c:26ec:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:26f0::,2001:67c:26f0:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:26f4::,2001:67c:26f4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:26f8::,2001:67c:26f8:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:26fc::,2001:67c:26fc:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2700::,2001:67c:2700:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:2704::,2001:67c:2704:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2708::,2001:67c:2708:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:270c::,2001:67c:270c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2710::,2001:67c:2710:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2714::,2001:67c:2714:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2718::,2001:67c:2718:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:271c::,2001:67c:271c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2720::,2001:67c:2720:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2724::,2001:67c:2724:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2728::,2001:67c:2728:ffff:ffff:ffff:ffff:ffff,IR
+2001:67c:272c::,2001:67c:272c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2730::,2001:67c:2730:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2734::,2001:67c:2734:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2738::,2001:67c:2738:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:273c::,2001:67c:273c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2740::,2001:67c:2740:ffff:ffff:ffff:ffff:ffff,SK
+2001:67c:2744::,2001:67c:2744:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2748::,2001:67c:2748:ffff:ffff:ffff:ffff:ffff,GR
+2001:67c:274c::,2001:67c:274c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2758::,2001:67c:2758:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:275c::,2001:67c:275c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2760::,2001:67c:2760:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2764::,2001:67c:2764:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:2768::,2001:67c:2768:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:276c::,2001:67c:276c:ffff:ffff:ffff:ffff:ffff,NL
+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:2778::,2001:67c:2778:ffff:ffff:ffff:ffff:ffff,RU
+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: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,NO
+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,LI
+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: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: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
+2001:67c:2890::,2001:67c:2890:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2894::,2001:67c:2894:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2898::,2001:67c:2898:ffff:ffff:ffff:ffff:ffff,ES
+2001:67c:289c::,2001:67c:289c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:28a0::,2001:67c:28a0:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:28a4::,2001:67c:28a4:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:28a8::,2001:67c:28a8:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:28ac::,2001:67c:28ac:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:28b0::,2001:67c:28b0:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:28b4::,2001:67c:28b4:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:28b8::,2001:67c:28b8:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:28bc::,2001:67c:28bc:ffff:ffff:ffff:ffff:ffff,HU
+2001:67c:28c0::,2001:67c:28c0:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:28c4::,2001:67c:28c4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:28cc::,2001:67c:28cc:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:28d0::,2001:67c:28d0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:28d8::,2001:67c:28d8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:28e0::,2001:67c:28e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:28e4::,2001:67c:28e4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:28e8::,2001:67c:28e8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:28f0::,2001:67c:28f0:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:28f4::,2001:67c:28f4:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:28f8::,2001:67c:28f8:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:28fc::,2001:67c:28fc:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2900::,2001:67c:291f:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2980::,2001:67c:2980:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2984::,2001:67c:2984:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2988::,2001:67c:2989:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:2994::,2001:67c:2994:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:2998::,2001:67c:2998:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:299c::,2001:67c:299c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:29a0::,2001:67c:29a0:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:29a8::,2001:67c:29a8:ffff:ffff:ffff:ffff:ffff,CH
+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: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
+2001:67c:29d0::,2001:67c:29d0:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:29d4::,2001:67c:29d4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:29d8::,2001:67c:29d8:ffff:ffff:ffff:ffff:ffff,AE
+2001:67c:29dc::,2001:67c:29dc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:29e0::,2001:67c:29e0:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:29e4::,2001:67c:29e4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:29e8::,2001:67c:29e8:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:29ec::,2001:67c:29ec:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:29f0::,2001:67c:29f0:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:29f4::,2001:67c:29f4:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:29f8::,2001:67c:29f8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:29fc::,2001:67c:29fc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2a00::,2001:67c:2a00:ffff:ffff:ffff:ffff:ffff,NO
+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:2a14::,2001:67c:2a14:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2a18::,2001:67c:2a18:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2a24::,2001:67c:2a24:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2a28::,2001:67c:2a28:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2a2c::,2001:67c:2a2c:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2a30::,2001:67c:2a30:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2a34::,2001:67c:2a34:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2a38::,2001:67c:2a38:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2a3c::,2001:67c:2a3c:ffff:ffff:ffff:ffff:ffff,ES
+2001:67c:2a40::,2001:67c:2a40:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2a44::,2001:67c:2a44:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2a48::,2001:67c:2a48:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2a4c::,2001:67c:2a4c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2a50::,2001:67c:2a50:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2a54::,2001:67c:2a54:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2a58::,2001:67c:2a58:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:2a5c::,2001:67c:2a5c:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2a64::,2001:67c:2a64:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2a68::,2001:67c:2a68:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:2a6c::,2001:67c:2a6c:ffff:ffff:ffff:ffff:ffff,TR
+2001:67c:2a70::,2001:67c:2a70:ffff:ffff:ffff:ffff:ffff,NL
+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,DK
+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: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,SE
+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,CH
+2001:67c:2af0::,2001:67c:2af0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2af4::,2001:67c:2af4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2afc::,2001:67c:2afc:ffff:ffff:ffff:ffff:ffff,SI
+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
+2001:67c:2b10::,2001:67c:2b10:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2b14::,2001:67c:2b14:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2b18::,2001:67c:2b18:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2b1c::,2001:67c:2b1c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2b20::,2001:67c:2b20:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2b24::,2001:67c:2b24:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2b28::,2001:67c:2b28:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2b2c::,2001:67c:2b2c:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2b30::,2001:67c:2b30:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2b34::,2001:67c:2b34:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2b3c::,2001:67c:2b3c:ffff:ffff:ffff:ffff:ffff,FR
+2001:67c:2b40::,2001:67c:2b40:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2b44::,2001:67c:2b44:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:2b48::,2001:67c:2b48:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2b4c::,2001:67c:2b4c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2b50::,2001:67c:2b50:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2b54::,2001:67c:2b54:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2b58::,2001:67c:2b58:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2b5c::,2001:67c:2b5c:ffff:ffff:ffff:ffff:ffff,FR
+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,RO
+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,RO
+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: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,UA
+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,PL
+2001:67c:2be4::,2001:67c:2be4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2be8::,2001:67c:2be8:ffff:ffff:ffff:ffff:ffff,NL
+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: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:6a8: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
+2001:6d0::,2001:6d0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2001:6d8::,2001:6df:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:6e0::,2001:6e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:6e8::,2001:6ef:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2001:6f0::,2001:6f7:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:6f8::,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:718:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:720::,2001:720:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:728::,2001:728:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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
+2001:758::,2001:758:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:760::,2001:760:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:768::,2001:768:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:770::,2001:770:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2001:778::,2001:77f:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2001:780::,2001:787:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:788::,2001:78f:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:790::,2001:790:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2001:798::,2001:798:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:7a0::,2001:7a0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:7a8::,2001:7a8:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:7b0::,2001:7b0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:7b8::,2001:7b8: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: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:ffff:ffff:ffff:ffff:ffff:ffff,LU
+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
+2001:7f8:3::,2001:7f8:5:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:6::,2001:7f8:6:ffff:ffff:ffff:ffff:ffff,BG
+2001:7f8:7::,2001:7f8:7:ffff:ffff:ffff:ffff:ffff,FI
+2001:7f8:8::,2001:7f8:8:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:9::,2001:7f8:9:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:a::,2001:7f8:a:ffff:ffff:ffff:ffff:ffff,PT
+2001:7f8:b::,2001:7f8:b:ffff:ffff:ffff:ffff:ffff,IT
+2001:7f8:c::,2001:7f8:c:ffff:ffff:ffff:ffff:ffff,CH
+2001:7f8:d::,2001:7f8:d:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:e::,2001:7f8:e:ffff:ffff:ffff:ffff:ffff,NL
+2001:7f8:f::,2001:7f8:f:ffff:ffff:ffff:ffff:ffff,ES
+2001:7f8:10::,2001:7f8:10:ffff:ffff:ffff:ffff:ffff,IT
+2001:7f8:12::,2001:7f8:12:ffff:ffff:ffff:ffff:ffff,NO
+2001:7f8:13::,2001:7f8:13:ffff:ffff:ffff:ffff:ffff,NL
+2001:7f8:14::,2001:7f8:14:ffff:ffff:ffff:ffff:ffff,CZ
+2001:7f8:15::,2001:7f8:15:ffff:ffff:ffff:ffff:ffff,EE
+2001:7f8:16::,2001:7f8:16:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:17::,2001:7f8:17:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:18::,2001:7f8:18:ffff:ffff:ffff:ffff:ffff,IE
+2001:7f8:19::,2001:7f8:19:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:1b::,2001:7f8:1b:ffff:ffff:ffff:ffff:ffff,BE
+2001:7f8:1c::,2001:7f8:1c:ffff:ffff:ffff:ffff:ffff,CH
+2001:7f8:1d::,2001:7f8:1d:ffff:ffff:ffff:ffff:ffff,FI
+2001:7f8:1e::,2001:7f8:1e:ffff:ffff:ffff:ffff:ffff,RS
+2001:7f8:1f::,2001:7f8:1f:ffff:ffff:ffff:ffff:ffff,DK
+2001:7f8:20::,2001:7f8:20:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:21::,2001:7f8:21:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:23::,2001:7f8:23:ffff:ffff:ffff:ffff:ffff,IT
+2001:7f8:24::,2001:7f8:24:ffff:ffff:ffff:ffff:ffff,CH
+2001:7f8:25::,2001:7f8:25:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:26::,2001:7f8:26:ffff:ffff:ffff:ffff:ffff,BE
+2001:7f8:27::,2001:7f8:27:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:28::,2001:7f8:28:ffff:ffff:ffff:ffff:ffff,HR
+2001:7f8:29::,2001:7f8:29:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:2a::,2001:7f8:2a:ffff:ffff:ffff:ffff:ffff,ES
+2001:7f8:2d::,2001:7f8:2d:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:2f::,2001:7f8:2f:ffff:ffff:ffff:ffff:ffff,SK
+2001:7f8:30::,2001:7f8:30:ffff:ffff:ffff:ffff:ffff,AT
+2001:7f8:31::,2001:7f8:31:ffff:ffff:ffff:ffff:ffff,NL
+2001:7f8:33::,2001:7f8:33:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:34::,2001:7f8:34:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:35::,2001:7f8:35:ffff:ffff:ffff:ffff:ffff,HU
+2001:7f8:37::,2001:7f8:38:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:39::,2001:7f8:39:ffff:ffff:ffff:ffff:ffff,EE
+2001:7f8:3a::,2001:7f8:3a:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:3b::,2001:7f8:3b:ffff:ffff:ffff:ffff:ffff,IL
+2001:7f8:3d::,2001:7f8:3d:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:3e::,2001:7f8:3e:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:41::,2001:7f8:41:ffff:ffff:ffff:ffff:ffff,NO
+2001:7f8:42::,2001:7f8:42:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:43::,2001:7f8:43:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:44::,2001:7f8:44:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:45::,2001:7f8:45:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:46::,2001:7f8:46:ffff:ffff:ffff:ffff:ffff,SI
+2001:7f8:47::,2001:7f8:47:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:48::,2001:7f8:48:ffff:ffff:ffff:ffff:ffff,IS
+2001:7f8:4a::,2001:7f8:4a:ffff:ffff:ffff:ffff:ffff,AT
+2001:7f8:4b::,2001:7f8:4b:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:4c::,2001:7f8:4c:ffff:ffff:ffff:ffff:ffff,LU
+2001:7f8:4d::,2001:7f8:4d:ffff:ffff:ffff:ffff:ffff,IE
+2001:7f8:4e::,2001:7f8:4e:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:4f::,2001:7f8:4f:ffff:ffff:ffff:ffff:ffff,BH
+2001:7f8:50::,2001:7f8:50:ffff:ffff:ffff:ffff:ffff,EE
+2001:7f8:51::,2001:7f8:51:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:52::,2001:7f8:52:ffff:ffff:ffff:ffff:ffff,LB
+2001:7f8:53::,2001:7f8:53:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:54::,2001:7f8:54:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:55::,2001:7f8:55:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:56::,2001:7f8:56:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:58::,2001:7f8:58:ffff:ffff:ffff:ffff:ffff,BG
+2001:7f8:59::,2001:7f8:59:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:5a::,2001:7f8:5a:ffff:ffff:ffff:ffff:ffff,BY
+2001:7f8:5b::,2001:7f8:5b:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:5c::,2001:7f8:5c:ffff:ffff:ffff:ffff:ffff,SE
+2001:7f8:5d::,2001:7f8:5d:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:5e::,2001:7f8:5e:ffff:ffff:ffff:ffff:ffff,CZ
+2001:7f8:5f::,2001:7f8:5f:ffff:ffff:ffff:ffff:ffff,IT
+2001:7f8:60::,2001:7f8:60:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:61::,2001:7f8:61:ffff:ffff:ffff:ffff:ffff,NL
+2001:7f8:63::,2001:7f8:63:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:64::,2001:7f8:64:ffff:ffff:ffff:ffff:ffff,RO
+2001:7f8:66::,2001:7f8:66:ffff:ffff:ffff:ffff:ffff,AT
+2001:7f8:67::,2001:7f8:67:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:68::,2001:7f8:68:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:69::,2001:7f8:69:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:6a::,2001:7f8:6a:ffff:ffff:ffff:ffff:ffff,MD
+2001:7f8:6b::,2001:7f8:6b:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:6c::,2001:7f8:6c:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:6d::,2001:7f8:6d:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:6e::,2001:7f8:6e:ffff:ffff:ffff:ffff:ffff,GR
+2001:7f8:6f::,2001:7f8:70:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:71::,2001:7f8:71:ffff:ffff:ffff:ffff:ffff,AT
+2001:7f8:72::,2001:7f8:72:ffff:ffff:ffff:ffff:ffff,PS
+2001:7f8:73::,2001:7f8:73:ffff:ffff:ffff:ffff:ffff,AE
+2001:7f8:74::,2001:7f8:75:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:76::,2001:7f8:76:ffff:ffff:ffff:ffff:ffff,NO
+2001:7f8:77::,2001:7f8:78:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:79::,2001:7f8:79:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:7a::,2001:7f8:7a:ffff:ffff:ffff:ffff:ffff,AE
+2001:7f8:7b::,2001:7f8:7b:ffff:ffff:ffff:ffff:ffff,UA
+2001:7f8:7c::,2001:7f8:7c:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:7d::,2001:7f8:7d:ffff:ffff:ffff:ffff:ffff,RU
+2001:7f8:7e::,2001:7f8:7e:ffff:ffff:ffff:ffff:ffff,ES
+2001:7f8:7f::,2001:7f8:7f:ffff:ffff:ffff:ffff:ffff,CZ
+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,PL
+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
+2001:7f8:87::,2001:7f8:87:ffff:ffff:ffff:ffff:ffff,CZ
+2001:7f8:88::,2001:7f8:89:ffff:ffff:ffff:ffff:ffff,FR
+2001:7f8:8a::,2001:7f8:8a:ffff:ffff:ffff:ffff:ffff,PL
+2001:7f8:8b::,2001:7f8:8b:ffff:ffff:ffff:ffff:ffff,BY
+2001:7f8:8d::,2001:7f8:8d:ffff:ffff:ffff:ffff:ffff,AT
+2001:7f8:8e::,2001:7f8:8e:ffff:ffff:ffff:ffff:ffff,BG
+2001:7fa:0:1::,2001:7fa::1:ffff:ffff:ffff:ffff,HK
+2001:7fa:0:2::,2001:7fa::2:ffff:ffff:ffff:ffff,KR
+2001:7fa:0:3::,2001:7fa::3:ffff:ffff:ffff:ffff,JP
+2001:7fa:1::,2001:7fa:1:ffff:ffff:ffff:ffff:ffff,TW
+2001:7fa:2::,2001:7fa:2:ffff:ffff:ffff:ffff:ffff,ID
+2001:7fa:3::,2001:7fa:4:ffff:ffff:ffff:ffff:ffff,NZ
+2001:7fa:5::,2001:7fa:5:ffff:ffff:ffff:ffff:ffff,CN
+2001:7fa:6::,2001:7fa:6:ffff:ffff:ffff:ffff:ffff,VN
+2001:7fa:7::,2001:7fa:7:ffff:ffff:ffff:ffff:ffff,JP
+2001:7fa:8::,2001:7fa:8:ffff:ffff:ffff:ffff:ffff,KR
+2001:7fa:9::,2001:7fa:e:ffff:ffff:ffff:ffff:ffff,AU
+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:7fe::,2001:7fe:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:808::,2001:808:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:810::,2001:810:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:818::,2001:81f:ffff:ffff:ffff:ffff:ffff:ffff,PT
@@ -93,8 +2264,64 @@
2001:8e0::,2001:8e8:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:8f0::,2001:8f3:ffff:ffff:ffff:ffff:ffff:ffff,CY
2001:8f8::,2001:8ff:ffff:ffff:ffff:ffff:ffff:ffff,AE
-2001:900::,2001:9ff:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2001:a00::,2001:aff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:900::,2001:900:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:908::,2001:908:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:910::,2001:917:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:918::,2001:918:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:920::,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
+2001:940::,2001:940:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:948::,2001:948:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:950::,2001:950:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2001:958::,2001:958:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:960::,2001:960:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:968::,2001:968:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:978::,2001:978:ffff:ffff:ffff:ffff:ffff:ffff,DE
+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
+2001:9a0::,2001:9a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:9a8::,2001:9a8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:9b0::,2001:9b0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:9c0::,2001:9c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:9c8::,2001:9cf:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:9d0::,2001:9d0:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2001:9d8::,2001:9d8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:9e0::,2001:9e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:9e8::,2001:9e8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:9f0::,2001:9f0: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: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
+2001:a38::,2001:a38:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:a40::,2001:a40:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2001:a48::,2001:a48:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:a50::,2001:a50:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:a58::,2001:a58:ffff:ffff:ffff:ffff:ffff:ffff,RU
+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: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
+2001:a98::,2001:a98:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2001:aa0::,2001:aa0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:aa8::,2001:ab7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:ab8::,2001:ab8:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2001:ac0::,2001:ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:ac8::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:ad0::,2001:ad0:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2001:ad8::,2001:ae0: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:b08::,2001:b08:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:b10::,2001:b10:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -116,7 +2343,7 @@
2001:b98::,2001:b98:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:ba0::,2001:ba0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2001:ba8::,2001:ba8:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2001:bb0::,2001:bb0: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:bc0::,2001:bc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:bc8::,2001:bc8:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -156,8 +2383,759 @@
2001:ce8::,2001:ce8:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:cf0::,2001:cf0:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:cf8::,2001:cf8:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2001:d00::,2001:db7:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2001:db9::,2001:dff:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2001:d00::,2001:d00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:d08::,2001:d08:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2001:d10::,2001:d10:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2001:d18::,2001:d18:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2001:d28::,2001:d28:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:d30::,2001:d30:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:d38::,2001:d38:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2001:d40::,2001:d40:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2001:d48::,2001:d48:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2001:d50::,2001:d50:ffff:ffff:ffff:ffff:ffff:ffff,JP
+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: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
+2001:da0::,2001:da0:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:da8::,2001:daa:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2001:db0::,2001:db0:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:dc0::,2001:dc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:dc1::,2001:dc1:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2001:dc2::,2001:dc4:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:dc5::,2001:dc5:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2001:dc6::,2001:dc6:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2001:dc7::,2001:dc7:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2001:dc8::,2001:dc8:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2001:dc9::,2001:dc9:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:dca::,2001:dca:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2001:dcc::,2001:dcc:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2001:dcd::,2001:dcd:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:dce::,2001:dce:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2001:dd8::,2001:dd8::ffff:ffff:ffff:ffff:ffff,FJ
+2001:dd8:1::,2001:dd8:1:ffff:ffff:ffff:ffff:ffff,CN
+2001:dd8:2::,2001:dd8:2:ffff:ffff:ffff:ffff:ffff,MY
+2001:dd8:3::,2001:dd8:3:ffff:ffff:ffff:ffff:ffff,NZ
+2001:dd8:4::,2001:dd8:4:ffff:ffff:ffff:ffff:ffff,SG
+2001:dd8:5::,2001:dd8:5:ffff:ffff:ffff:ffff:ffff,CN
+2001:dd8:6::,2001:dd8:6:ffff:ffff:ffff:ffff:ffff,AU
+2001:dd8:7::,2001:dd8:7:ffff:ffff:ffff:ffff:ffff,NP
+2001:dd8:8::,2001:dd8:f:ffff:ffff:ffff:ffff:ffff,AU
+2001:dd8:10::,2001:dd8:11:ffff:ffff:ffff:ffff:ffff,NP
+2001:dd8:12::,2001:dd8:12:ffff:ffff:ffff:ffff:ffff,AU
+2001:dd8:13::,2001:dd8:13:ffff:ffff:ffff:ffff:ffff,NZ
+2001:dd8:14::,2001:dd8:14:ffff:ffff:ffff:ffff:ffff,AU
+2001:dd8:15::,2001:dd8:15:ffff:ffff:ffff:ffff:ffff,HK
+2001:dd8:16::,2001:dd8:16:ffff:ffff:ffff:ffff:ffff,SG
+2001:dd8:17::,2001:dd8:17:ffff:ffff:ffff:ffff:ffff,KR
+2001:dd8:18::,2001:dd8:18:ffff:ffff:ffff:ffff:ffff,TW
+2001:dd8:19::,2001:dd8:19:ffff:ffff:ffff:ffff:ffff,IN
+2001:dd8:1a::,2001:dd8:1a:ffff:ffff:ffff:ffff:ffff,CN
+2001:dd8:1b::,2001:dd8:1b:ffff:ffff:ffff:ffff:ffff,IN
+2001:dd8:1c::,2001:dd8:1c:ffff:ffff:ffff:ffff:ffff,PK
+2001:dd8:1d::,2001:dd8:1d:ffff:ffff:ffff:ffff:ffff,BD
+2001:dd8:1e::,2001:dd8:1e:ffff:ffff:ffff:ffff:ffff,KH
+2001:dd8:1f::,2001:dd8:1f:ffff:ffff:ffff:ffff:ffff,ID
+2001:dd8:20::,2001:dd8:21:ffff:ffff:ffff:ffff:ffff,IN
+2001:dd8:22::,2001:dd8:22:ffff:ffff:ffff:ffff:ffff,JP
+2001:dd8:24::,2001:dd8:25:ffff:ffff:ffff:ffff:ffff,NP
+2001:de1::,2001:de1:3f:ffff:ffff:ffff:ffff:ffff,JP
+2001:de8::,2001:de8::ffff:ffff:ffff:ffff:ffff,TH
+2001:de8:1::,2001:de8:1:ffff:ffff:ffff:ffff:ffff,IN
+2001:de8:2::,2001:de8:2:ffff:ffff:ffff:ffff:ffff,ID
+2001:de8:3::,2001:de8:3:ffff:ffff:ffff:ffff:ffff,VN
+2001:de8:4::,2001:de8:7:ffff:ffff:ffff:ffff:ffff,SG
+2001:de8:8::,2001:de8:8:ffff:ffff:ffff:ffff:ffff,JP
+2001:de8:9::,2001:de8:9:ffff:ffff:ffff:ffff:ffff,AU
+2001:de8:a::,2001:de8:a:ffff:ffff:ffff:ffff:ffff,VN
+2001:de8:b::,2001:de8:b:ffff:ffff:ffff:ffff:ffff,BD
+2001:de8:c::,2001:de8:c:ffff:ffff:ffff:ffff:ffff,JP
+2001:de8:d::,2001:de8:d:ffff:ffff:ffff:ffff:ffff,SG
+2001:de8:e::,2001:de8:e:ffff:ffff:ffff:ffff:ffff,TH
+2001:de8:f::,2001:de8:10:ffff:ffff:ffff:ffff:ffff,MY
+2001:de8:11::,2001:de8:11:ffff:ffff:ffff:ffff:ffff,ID
+2001:de8:12::,2001:de8:12:ffff:ffff:ffff:ffff:ffff,SG
+2001:de8:13::,2001:de8:13:ffff:ffff:ffff:ffff:ffff,MY
+2001:de8:14::,2001:de8:14:ffff:ffff:ffff:ffff:ffff,AU
+2001:de8:15::,2001:de8:15:ffff:ffff:ffff:ffff:ffff,ID
+2001:de8:16::,2001:de8:16:ffff:ffff:ffff:ffff:ffff,PF
+2001:de8:17::,2001:de8:17:ffff:ffff:ffff:ffff:ffff,AU
+2001:de8:19::,2001:de8:19:ffff:ffff:ffff:ffff:ffff,NZ
+2001:de8:1a::,2001:de8:1a:ffff:ffff:ffff:ffff:ffff,ID
+2001:de8:1b::,2001:de8:1b:ffff:ffff:ffff:ffff:ffff,MY
+2001:de8:1d::,2001:de8:1d:ffff:ffff:ffff:ffff:ffff,KH
+2001:de8:1e::,2001:de8:1e:ffff:ffff:ffff:ffff:ffff,JP
+2001:de9::,2001:de9::ffff:ffff:ffff:ffff:ffff,LK
+2001:dea::,2001:dea::ffff:ffff:ffff:ffff:ffff,AU
+2001:deb::,2001:deb::ffff:ffff:ffff:ffff:ffff,TH
+2001:dec::,2001:dec::ffff:ffff:ffff:ffff:ffff,VU
+2001:ded::,2001:ded::ffff:ffff:ffff:ffff:ffff,SG
+2001:dee::,2001:dee::ffff:ffff:ffff:ffff:ffff,HK
+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: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
+2001:df0:14::,2001:df0:14:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:15::,2001:df0:15:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:17::,2001:df0:17:ffff:ffff:ffff:ffff:ffff,LK
+2001:df0:18::,2001:df0:18:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:19::,2001:df0:1d:ffff:ffff:ffff:ffff:ffff,VN
+2001:df0:1e::,2001:df0:1e:ffff:ffff:ffff:ffff:ffff,TH
+2001:df0:1f::,2001:df0:1f:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:20::,2001:df0:3f:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:40::,2001:df0:40:ffff:ffff:ffff:ffff:ffff,VN
+2001:df0:41::,2001:df0:41:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:42::,2001:df0:42:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:43::,2001:df0:43:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:44::,2001:df0:44:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:45::,2001:df0:46:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:48::,2001:df0:48:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:49::,2001:df0:49:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:4a::,2001:df0:4a:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:4b::,2001:df0:4d:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:4f::,2001:df0:60:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:62::,2001:df0:62:ffff:ffff:ffff:ffff:ffff,TH
+2001:df0:63::,2001:df0:63:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:65::,2001:df0:65:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:66::,2001:df0:66:ffff:ffff:ffff:ffff:ffff,VN
+2001:df0:68::,2001:df0:68:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:69::,2001:df0:69:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:6a::,2001:df0:6a:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:6b::,2001:df0:6b:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:6c::,2001:df0:6c:ffff:ffff:ffff:ffff:ffff,WS
+2001:df0:6f::,2001:df0:6f:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:70::,2001:df0:70:ffff:ffff:ffff:ffff:ffff,PH
+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:7c: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: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
+2001:df0:a4::,2001:df0:a4:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:a5::,2001:df0:a6:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:a7::,2001:df0:ab:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:ad::,2001:df0:ad:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:ae::,2001:df0:ae:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:b0::,2001:df0:b0:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:b1::,2001:df0:b8:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:b9::,2001:df0:b9:ffff:ffff:ffff:ffff:ffff,NZ
+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:d6: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:ffff:ffff:ffff:ffff:ffff,TW
+2001:df0:da::,2001:df0:da: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:f5::,2001:df0:f5:ffff:ffff:ffff:ffff:ffff,AU
+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: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:21d::,2001:df0:21d:ffff:ffff:ffff:ffff:ffff,AU
+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:225::,2001:df0:225:ffff:ffff:ffff:ffff:ffff,IN
+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:22f:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:230::,2001:df0:230:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:231::,2001:df0:231:ffff:ffff:ffff:ffff:ffff,NZ
+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:240::,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: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
+2001:df0:254::,2001:df0:254:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:255::,2001:df0:255:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:256::,2001:df0:256:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:257::,2001:df0:257:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:258::,2001:df0:258:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:259::,2001:df0:259:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:25a::,2001:df0:25a:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:25b::,2001:df0:25b:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:25c::,2001:df0:25d:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:25e::,2001:df0:25e:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:260::,2001:df0:260:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:261::,2001:df0:261:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:262::,2001:df0:262:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:263::,2001:df0:263:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:264::,2001:df0:264:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:265::,2001:df0:265:ffff:ffff:ffff:ffff:ffff,TH
+2001:df0:266::,2001:df0:266:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:267::,2001:df0:267:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:268::,2001:df0:269:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:26a::,2001:df0:26b:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:26c::,2001:df0:26c:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:26d::,2001:df0:26f:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:270::,2001:df0:270:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:271::,2001:df0:271:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:272::,2001:df0:272:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:273::,2001:df0:273:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:274::,2001:df0:277:ffff:ffff:ffff:ffff:ffff,NP
+2001:df0:278::,2001:df0:278:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:279::,2001:df0:279:ffff:ffff:ffff:ffff:ffff,PK
+2001:df0:27a::,2001:df0:27a:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:27b::,2001:df0:27b:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:27c::,2001:df0:27c:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:27d::,2001:df0:27d:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:27e::,2001:df0:27e:ffff:ffff:ffff:ffff:ffff,CN
+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
+2001:df0:295::,2001:df0:296:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:298::,2001:df0:298:ffff:ffff:ffff:ffff:ffff,PH
+2001:df0:299::,2001:df0:299:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:29a::,2001:df0:29a:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:29b::,2001:df0:29b:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:29c::,2001:df0:29c:ffff:ffff:ffff:ffff:ffff,VN
+2001:df0:29d::,2001:df0:29d:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:29e::,2001:df0:29e:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:29f::,2001:df0:29f:ffff:ffff:ffff:ffff:ffff,BD
+2001:df0:2a0::,2001:df0:2a0:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:2a1::,2001:df0:2a1:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2a2::,2001:df0:2a2:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:2a3::,2001:df0:2a3:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:2a4::,2001:df0:2a4:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2a5::,2001:df0:2a5:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2a6::,2001:df0:2a6:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:2a7::,2001:df0:2a7:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2a8::,2001:df0:2a8:ffff:ffff:ffff:ffff:ffff,PH
+2001:df0:2a9::,2001:df0:2aa:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2ab::,2001:df0:2ab:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2ac::,2001:df0:2ac:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2ad::,2001:df0:2ad:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2ae::,2001:df0:2ae:ffff:ffff:ffff:ffff:ffff,WS
+2001:df0:2af::,2001:df0:2af:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:2b0::,2001:df0:2b1:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2b2::,2001:df0:2b2:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2b4::,2001:df0:2b4:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:2b5::,2001:df0:2b5:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2b7::,2001:df0:2b7:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2b8::,2001:df0:2b8:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:2b9::,2001:df0:2b9:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:2ba::,2001:df0:2ba:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2bb::,2001:df0:2bb:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:2bc::,2001:df0:2bc:ffff:ffff:ffff:ffff:ffff,ID
+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,CN
+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:2ff:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:300::,2001:df0:311:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:314::,2001:df0:317: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:404::,2001:df0:404:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:405::,2001:df0:405:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:407::,2001:df0:407:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:408::,2001:df0:408:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:409::,2001:df0:409:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:40a::,2001:df0:40a:ffff:ffff:ffff:ffff:ffff,AU
+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:417::,2001:df0:417:ffff:ffff:ffff:ffff:ffff,JP
+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:424::,2001:df0:424:ffff:ffff:ffff:ffff:ffff,AU
+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:459::,2001:df0:459:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:45a::,2001:df0:45a:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:45b::,2001:df0:45b:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:45c::,2001:df0:45d:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:45e::,2001:df0:45e:ffff:ffff:ffff:ffff:ffff,BD
+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:463::,2001:df0:463:ffff:ffff:ffff:ffff:ffff,SG
+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:500::,2001:df0:5ff:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:800::,2001:df0:800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:c00::,2001:df0:c00:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:1000::,2001:df0:1000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df0:1400::,2001:df0:1400:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:1800::,2001:df0:1800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:1c00::,2001:df0:1c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2000::,2001:df0:2000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2400::,2001:df0:2400:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2800::,2001:df0:2800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2c00::,2001:df0:2c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:3000::,2001:df0:3000:ffff:ffff:ffff:ffff:ffff,PH
+2001:df0:3400::,2001:df0:3400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:3800::,2001:df0:3800:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:3c00::,2001:df0:3c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:4000::,2001:df0:4000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:4400::,2001:df0:4400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:4800::,2001:df0:4800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:4c00::,2001:df0:4c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:5000::,2001:df0:5000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:5400::,2001:df0:5400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:5800::,2001:df0:5800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:5c00::,2001:df0:5c00:ffff:ffff:ffff:ffff:ffff,BD
+2001:df0:6000::,2001:df0:6000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:6400::,2001:df0:6400:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:6800::,2001:df0:6800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:6c00::,2001:df0:6c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:7000::,2001:df0:7000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:7400::,2001:df0:7400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:7800::,2001:df0:7800:ffff:ffff:ffff:ffff:ffff,WS
+2001:df0:7c00::,2001:df0:7c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:8000::,2001:df0:8000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:8400::,2001:df0:8400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:8800::,2001:df0:8800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:8c00::,2001:df0:8c00:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:9400::,2001:df0:9400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:9800::,2001:df0:9800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:9c00::,2001:df0:9c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:a000::,2001:df0:a000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:a400::,2001:df0:a400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:a800::,2001:df0:a800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:ac00::,2001:df0:ac00:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:b000::,2001:df0:b000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df0:b400::,2001:df0:b400:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:b800::,2001:df0:b800:ffff:ffff:ffff:ffff:ffff,PH
+2001:df0:bc00::,2001:df0:bc00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:c000::,2001:df0:c000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:c400::,2001:df0:c400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:c800::,2001:df0:c800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:cc00::,2001:df0:cc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:d000::,2001:df0:d000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:d400::,2001:df0:d400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:d800::,2001:df0:d800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:dc00::,2001:df0:dc00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:e000::,2001:df0:e000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:e400::,2001:df0:e400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:e800::,2001:df0:e800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:ec00::,2001:df0:ec00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:f000::,2001:df0:f000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:f400::,2001:df0:f401:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:f800::,2001:df0:f800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:fc00::,2001:df0:fc01:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1::,2001:df1::ffff:ffff:ffff:ffff:ffff,TH
+2001:df1:400::,2001:df1:400:ffff:ffff:ffff:ffff:ffff,BD
+2001:df1:800::,2001:df1:800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df1:c00::,2001:df1:c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:1000::,2001:df1:1000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:1400::,2001:df1:1400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:1800::,2001:df1:1800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:1c00::,2001:df1:1c00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:2000::,2001:df1:2000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:2800::,2001:df1:2800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df1:3000::,2001:df1:3000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:3800::,2001:df1:3800:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df1:4000::,2001:df1:4000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:4800::,2001:df1:4800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:5000::,2001:df1:5000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df1:5800::,2001:df1:5800:ffff:ffff:ffff:ffff:ffff,BD
+2001:df1:6000::,2001:df1:6000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df1:6800::,2001:df1:6800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:7000::,2001:df1:7000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:7800::,2001:df1:7800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:8000::,2001:df1:8000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:8800::,2001:df1:8800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:9000::,2001:df1:9000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:9800::,2001:df1:9800:ffff:ffff:ffff:ffff:ffff,MY
+2001:df1:a000::,2001:df1:a000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df1:a800::,2001:df1:a800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df1:b000::,2001:df1:b000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df1:b800::,2001:df1:b800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:c000::,2001:df1:c000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:c800::,2001:df1:c800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df1:d000::,2001:df1:d000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:d800::,2001:df1:d800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:e000::,2001:df1:e000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:e800::,2001:df1:e800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df1:f000::,2001:df1:f000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:f800::,2001:df1:f800:ffff:ffff:ffff:ffff:ffff,BN
+2001:df2::,2001:df2::ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:800::,2001:df2:800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:1000::,2001:df2:1000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:1800::,2001:df2:1803:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:2000::,2001:df2:2000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:2800::,2001:df2:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:3000::,2001:df2:3000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df2:3800::,2001:df2:3800:ffff:ffff:ffff:ffff:ffff,TH
+2001:df2:4000::,2001:df2:4000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:4800::,2001:df2:4800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:5000::,2001:df2:5000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:5800::,2001:df2:5800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:6000::,2001:df2:6000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:6800::,2001:df2:6800:ffff:ffff:ffff:ffff:ffff,PH
+2001:df2:7000::,2001:df2:7000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:7800::,2001:df2:7800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:8000::,2001:df2:8000:ffff:ffff:ffff:ffff:ffff,BN
+2001:df2:8800::,2001:df2:8800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:9000::,2001:df2:9000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:9800::,2001:df2:9803:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:a000::,2001:df2:a000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:a800::,2001:df2:a800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:b000::,2001:df2:b000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:c000::,2001:df2:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:c800::,2001:df2:c800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:d000::,2001:df2:d000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:d800::,2001:df2:d800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df2:e000::,2001:df2:e000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:e800::,2001:df2:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:f000::,2001:df2:f000:ffff:ffff:ffff:ffff:ffff,VN
+2001:df2:f800::,2001:df2:f800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3::,2001:df3::ffff:ffff:ffff:ffff:ffff,MY
+2001:df3:800::,2001:df3:80f:ffff:ffff:ffff:ffff:ffff,CN
+2001:df3:1000::,2001:df3:1000:ffff:ffff:ffff:ffff:ffff,BD
+2001:df3:1800::,2001:df3:1800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:2000::,2001:df3:2000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:2800::,2001:df3:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:3000::,2001:df3:3000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:3800::,2001:df3:3800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:4000::,2001:df3:4000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df3:4800::,2001:df3:4800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:5000::,2001:df3:5000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:5800::,2001:df3:5800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:6000::,2001:df3:6000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df3:6800::,2001:df3:6800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:7000::,2001:df3:7000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:7800::,2001:df3:7800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df3:8000::,2001:df3:8000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:8800::,2001:df3:8800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:9800::,2001:df3:9800:ffff:ffff:ffff:ffff:ffff,MY
+2001:df3:a000::,2001:df3:a003:ffff:ffff:ffff:ffff:ffff,PH
+2001:df3:a800::,2001:df3:a800:ffff:ffff:ffff:ffff:ffff,MY
+2001:df3:b000::,2001:df3:b000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df3:b800::,2001:df3:b800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:c000::,2001:df3:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:c800::,2001:df3:c800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:d000::,2001:df3:d000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df3:d800::,2001:df3:d800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df3:e000::,2001:df3:e000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df3:e800::,2001:df3:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df3:f000::,2001:df3:f000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:f800::,2001:df3:f800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4::,2001:df4::ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:800::,2001:df4:800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:1000::,2001:df4:1000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:1800::,2001:df4:1800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:2000::,2001:df4:2000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df4:2800::,2001:df4:2800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:3000::,2001:df4:3000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df4:3800::,2001:df4:3800:ffff:ffff:ffff:ffff:ffff,BD
+2001:df4:4000::,2001:df4:400f:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:4800::,2001:df4:4800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:5000::,2001:df4:5000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:5800::,2001:df4:5800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:6000::,2001:df4:6000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:6800::,2001:df4:6800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:7000::,2001:df4:7000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:7800::,2001:df4:7800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:8000::,2001:df4:8000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df4:8800::,2001:df4:8800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df4:9000::,2001:df4:9000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:9800::,2001:df4:9800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:a000::,2001:df4:a000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df4:a800::,2001:df4:a800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:b000::,2001:df4:b000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:b800::,2001:df4:b800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df4:c000::,2001:df4:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df4:c800::,2001:df4:c800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df4:d000::,2001:df4:d000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:d800::,2001:df4:d800:ffff:ffff:ffff:ffff:ffff,VN
+2001:df4:e000::,2001:df4:e000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:e800::,2001:df4:e800:ffff:ffff:ffff:ffff:ffff,MN
+2001:df4:f000::,2001:df4:f000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df4:f800::,2001:df4:f800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5::,2001:df5::ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:800::,2001:df5:800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:1000::,2001:df5:1000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:1800::,2001:df5:1800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:2000::,2001:df5:2000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:2800::,2001:df5:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:3000::,2001:df5:3000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:3800::,2001:df5:3800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:4000::,2001:df5:4000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:4800::,2001:df5:4800:ffff:ffff:ffff:ffff:ffff,BN
+2001:df5:5000::,2001:df5:5000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:5800::,2001:df5:5800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:6000::,2001:df5:6000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:6800::,2001:df5:6800:ffff:ffff:ffff:ffff:ffff,KR
+2001:df5:7000::,2001:df5:7000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:7800::,2001:df5:7800:ffff:ffff:ffff:ffff:ffff,CN
+2001:df5:8000::,2001:df5:8000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:8800::,2001:df5:8800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:9000::,2001:df5:9000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:9800::,2001:df5:9800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:a000::,2001:df5:a000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:a800::,2001:df5:a800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:b000::,2001:df5:b000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:b800::,2001:df5:b800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:c800::,2001:df5:c800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:d000::,2001:df5:d000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:d800::,2001:df5:d800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:e000::,2001:df5:e000:ffff:ffff:ffff:ffff:ffff,MY
+2001:df5:e800::,2001:df5:e800:ffff:ffff:ffff:ffff:ffff,PH
+2001:df5:f000::,2001:df5:f000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:f800::,2001:df5:f800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6::,2001:df6:1:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:800::,2001:df6:80f:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:1000::,2001:df6:1000:ffff:ffff:ffff:ffff:ffff,PH
+2001:df6:1800::,2001:df6:1800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:2000::,2001:df6:2001:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:2800::,2001:df6:2800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:3000::,2001:df6:3000:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:3800::,2001:df6:3800:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:4000::,2001:df6:4001:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:4800::,2001:df6:4801:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df6:5000::,2001:df6:5000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:5800::,2001:df6:5800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:6000::,2001:df6:6000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:6800::,2001:df6:6800:ffff:ffff:ffff:ffff:ffff,CN
+2001:df6:7000::,2001:df6:7000:ffff:ffff:ffff:ffff:ffff,VN
+2001:df6:7800::,2001:df6:7800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:8000::,2001:df6:8000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:8800::,2001:df6:8800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:9000::,2001:df6:9000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:9800::,2001:df6:9800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:a000::,2001:df6:a000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df6:a800::,2001:df6:a800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:b000::,2001:df6:b000:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:b800::,2001:df6:b800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df6:c000::,2001:df6:c000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:c800::,2001:df6:c800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:d000::,2001:df6:d000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:d800::,2001:df6:d800:ffff:ffff:ffff:ffff:ffff,BD
+2001:df6:e800::,2001:df6:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:f000::,2001:df6:f000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:f800::,2001:df6:f800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7::,2001:df7::ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:800::,2001:df7:800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:1000::,2001:df7:1000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:1800::,2001:df7:1800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:2000::,2001:df7:2000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:2800::,2001:df7:2800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:3000::,2001:df7:3001:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df7:3800::,2001:df7:3800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:4000::,2001:df7:4000:ffff:ffff:ffff:ffff:ffff,SG
+2001:df7:4800::,2001:df7:481f:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:5000::,2001:df7:5000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:5800::,2001:df7:5800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:6000::,2001:df7:6000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:6800::,2001:df7:6800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:7000::,2001:df7:7000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df7:7800::,2001:df7:7800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:8800::,2001:df7:8800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:9000::,2001:df7:9000:ffff:ffff:ffff:ffff:ffff,PH
+2001:df7:9800::,2001:df7:9800:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df7:a000::,2001:df7:a000:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:a800::,2001:df7:a800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:b000::,2001:df7:b000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:b800::,2001:df7:b800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df7:c000::,2001:df7:c003:ffff:ffff:ffff:ffff:ffff,SG
+2001:df7:c800::,2001:df7:c800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:d000::,2001:df7:d000:ffff:ffff:ffff:ffff:ffff,BD
+2001:df7:d800::,2001:df7:d800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:e000::,2001:df7:e000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:e800::,2001:df7:e800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:f000::,2001:df7:f000:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:f800::,2001:df7:f800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df8::,2001:df9:ffff:ffff:ffff:ffff:ffff:ffff,AU
+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
2001:e10::,2001:e10:ffff:ffff:ffff:ffff:ffff:ffff,TW
@@ -303,7 +3281,7 @@
2001:13e8::,2001:13e8:ffff:ffff:ffff:ffff:ffff:ffff,AR
2001:13f0::,2001:13f0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2001:13f8::,2001:13f8:ffff:ffff:ffff:ffff:ffff:ffff,CO
-2001:1400::,2001:1400:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:1400::,2001:1407:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:1408::,2001:1408:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:1410::,2001:1410:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:1418::,2001:1418:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -316,7 +3294,9 @@
2001:1450::,2001:1450:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:1458::,2001:1459:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:1460::,2001:1460:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2001:1468::,2001:146f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:1468::,2001:1469:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:146a::,2001:146a::ffff:ffff:ffff:ffff:ffff,RU
+2001:146a:1::,2001:146f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:1470::,2001:1477:ffff:ffff:ffff:ffff:ffff:ffff,SI
2001:1478::,2001:1478:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:1488::,2001:1488:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -386,7 +3366,9 @@
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:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:16c0::,2001:16c0:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2001:16c0::,2001:16c0:1233:ffff:ffff:ffff:ffff:ffff,IR
+2001:16c0:1234::,2001:16c0:1234:ffff:ffff:ffff:ffff:ffff,AU
+2001:16c0:1235::,2001:16c0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2001:16c8::,2001:16c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:16d0::,2001:16d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:16d8::,2001:16d8:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -497,7 +3479,7 @@
2001:1b50::,2001:1b57:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:1b58::,2001:1b58:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:1b60::,2001:1b67:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:1b68::,2001:1b68:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2001:1b68::,2001:1b6f:ffff:ffff:ffff:ffff:ffff:ffff,TR
2001:1b70::,2001:1b77:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:1b78::,2001:1b78:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:1b80::,2001:1b80:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -517,6 +3499,8 @@
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:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:2002:4e48::,2001:2002:4e49:ffff:ffff:ffff:ffff:ffff,SE
+2001:2003:54fa::,2001:2003:54fa: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
2001:4018::,2001:4018:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -575,7 +3559,6 @@
2001:41f0::,2001:41f0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:41f8::,2001:41f8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4200::,2001:4200:ffff:ffff:ffff:ffff:ffff:ffff,ZA
-2001:4208::,2001:4208:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:4210::,2001:4210:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:4218::,2001:4218:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2001:4220::,2001:4220:ffff:ffff:ffff:ffff:ffff:ffff,EG
@@ -626,7 +3609,7 @@
2001:43c8::,2001:43c8:ffff:ffff:ffff:ffff:ffff:ffff,EG
2001:43d0::,2001:43d0:ffff:ffff:ffff:ffff:ffff:ffff,KE
2001:43d8::,2001:43d8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
-2001:43e0::,2001:43e0:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2001:43e0::,2001:43e0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
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:1:ffff:ffff:ffff:ffff:ffff,TZ
@@ -656,7 +3639,7 @@
2001:43f8:1c0::,2001:43f8:1c0:ffff:ffff:ffff:ffff:ffff,DZ
2001:43f8:1d0::,2001:43f8:1d0:ffff:ffff:ffff:ffff:ffff,GH
2001:43f8:1e0::,2001:43f8:1e0:ffff:ffff:ffff:ffff:ffff,NG
-2001:43f8:1f0::,2001:43f8:1f5:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:1f0::,2001:43f8:1f6:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:200::,2001:43f8:200:ffff:ffff:ffff:ffff:ffff,KE
2001:43f8:210::,2001:43f8:210:ffff:ffff:ffff:ffff:ffff,LS
2001:43f8:230::,2001:43f8:230:ffff:ffff:ffff:ffff:ffff,ZA
@@ -724,7 +3707,34 @@
2001:43f8:9a0::,2001:43f8:9a0:ffff:ffff:ffff:ffff:ffff,BJ
2001:43f8:9b0::,2001:43f8:9b1:ffff:ffff:ffff:ffff:ffff,SZ
2001:43f8:9c0::,2001:43f8:9c0:ffff:ffff:ffff:ffff:ffff,DJ
-2001:4400::,2001:44ff:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:43f8:9d0::,2001:43f8:9d0:ffff:ffff:ffff:ffff:ffff,AO
+2001:43f8:9e0::,2001:43f8:9e0:ffff:ffff:ffff:ffff:ffff,ZW
+2001:43f8:9f0::,2001:43f8:9f0:ffff:ffff:ffff:ffff:ffff,NG
+2001:43f8:a00::,2001:43f8:a00:ffff:ffff:ffff:ffff:ffff,NG
+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
+2001:4420::,2001:4420:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2001:4428::,2001:4428:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2001:4430::,2001:4430:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2001:4438::,2001:4438:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2001:4450::,2001:4450:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2001:4458::,2001:4458:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2001:4460::,2001:4460:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:4470::,2001:4470:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2001:4478::,2001:447b:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:4480::,2001:4480:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2001:4488::,2001:448b:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2001:4490::,2001:4493:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2001:4498::,2001:4498:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2001:44a0::,2001:44a0:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:44a8::,2001:44a8:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:44b0::,2001:44b0:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:44b8::,2001:44b8:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2001:44c0::,2001:44c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2001:44c8::,2001:44c8:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2001:44d0::,2001:44df:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2001:44f0::,2001:44f0:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:4500::,2001:4500:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:4508::,2001:4508:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:4510::,2001:4517:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -735,7 +3745,38 @@
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:46ff:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2001:4800::,2001:48ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+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:11ff:ffff:ffff:ffff:ffff:ffff,US
+2001:4830:1200::,2001:4830:1200:ffff:ffff:ffff:ffff:ffff,AU
+2001:4830:1201::,2001:4830:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4838::,2001:4838:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4840::,2001:4840:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4848::,2001:4848:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4850::,2001:4850:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4858::,2001:4858:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4860::,2001:4860:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4868::,2001:4868:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4870::,2001:4871:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4878::,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:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4888::,2001:4888:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4890::,2001:4890:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4898::,2001:489a:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48a0::,2001:48a0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48a8::,2001:48a8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48b0::,2001:48b0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48b8::,2001:48b8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48c0::,2001:48c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48c8::,2001:48c8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48d0::,2001:48d0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48d8::,2001:48d8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48e0::,2001:48e0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48e8::,2001:48e8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:48f8::,2001:48f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4900::,2001:4900:ffff:ffff:ffff:ffff:ffff:ffff,CA
2001:4908::,2001:4908:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4910::,2001:4910:ffff:ffff:ffff:ffff:ffff:ffff,BM
@@ -788,7 +3829,7 @@
2001:4b90::,2001:4b90:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:4b98::,2001:4b98:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:4ba0::,2001:4ba0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:4ba8::,2001:4ba8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:4ba8::,2001:4baf:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:4bb0::,2001:4bb0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:4bb8::,2001:4bb8:ffff:ffff:ffff:ffff:ffff:ffff,AT
2001:4bc0::,2001:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -799,14 +3840,73 @@
2001:4be8::,2001:4be8:ffff:ffff:ffff:ffff:ffff:ffff,GB
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:4dff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4c00::,2001:4c07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+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:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2001:4c30::,2001:4c30:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:4c38::,2001:4c3f:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:4c40::,2001:4c40:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2001:4c48::,2001:4c4f:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2001:4c50::,2001:4c57:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4c58::,2001:4c5f:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:4c60::,2001:4c60:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:4c68::,2001:4c68:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4c70::,2001:4c70:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2001:4c78::,2001:4c78:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:4c80::,2001:4c80:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4c88::,2001:4c88:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2001:4c90::,2001:4c97:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:4c98::,2001:4c98:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4ca0::,2001:4ca0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4ca8::,2001:4ca8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4cb0::,2001:4cb0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4cb8::,2001:4cb8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:4cc0::,2001:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2001:4cc8::,2001:4cc8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:4cd0::,2001:4cd0:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2001:4cd8::,2001:4cd8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4ce0::,2001:4ce0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4ce8::,2001:4cf0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4cf8::,2001:4cf8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4d00::,2001:4d00:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2001:4d08::,2001:4d08:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4d10::,2001:4d10:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:4d18::,2001:4d18:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2001:4d20::,2001:4d20:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4d30::,2001:4d30:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4d38::,2001:4d38:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:4d48::,2001:4d48:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4d50::,2001:4d50:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4d58::,2001:4d58:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:4d60::,2001:4d60:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:4d68::,2001:4d68:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2001:4d70::,2001:4d70:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2001:4d78::,2001:4d78:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4d80::,2001:4d80:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2001:4d88::,2001:4d88:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4d90::,2001:4d90:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2001:4d98::,2001:4d98:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:4da0::,2001:4da7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:4da8::,2001:4da8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2001:4db0::,2001:4db0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4db8::,2001:4db8:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:4dc0::,2001:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:4dc8::,2001:4dc8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4dd0::,2001:4dd7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:4dd8::,2001:4dd8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2001:4de0::,2001:4de0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:4de8::,2001:4de8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2001:4df0::,2001:4df0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2001:8000::,2001:8fff:ffff:ffff:ffff:ffff:ffff:ffff,AU
2001:a000::,2001:a7ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:b000::,2001:b7ff:ffff:ffff:ffff:ffff:ffff:ffff,TW
-2003::,2003:1fff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2003::,2003:62:4401:ffff:ffff:ffff:ffff:ffff,DE
+2003:62:4402::,2003:62:4402:ffff:ffff:ffff:ffff:ffff,US
+2003:62:4403::,2003:1fff:ffff:ffff:ffff:ffff:ffff:ffff,DE
2400::,2400:fff:ffff:ffff:ffff:ffff:ffff:ffff,KR
2400:1000::,2400:1000:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2400:1080::,2400:1080:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:1100::,2400:1100:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:1200::,2400:1200:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2400:1300::,2400:1300:ffff:ffff:ffff:ffff:ffff:ffff,TW
@@ -885,7 +3985,6 @@
2400:4c00::,2400:4c00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:4c80::,2400:4c80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2400:4d00::,2400:4d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:4d80::,2400:4d80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:4e00::,2400:4e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:4e80::,2400:4e80:ffff:ffff:ffff:ffff:ffff:ffff,TW
2400:4f00::,2400:4f00:ffff:ffff:ffff:ffff:ffff:ffff,PK
@@ -1003,7 +4102,8 @@
2400:8780::,2400:8780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:8800::,2400:8800:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:8880::,2400:8880:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2400:8900::,2400:8900:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:8900::,2400:8900::ffff:ffff:ffff:ffff:ffff,JP
+2400:8900:1::,2400:8901:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:8980::,2400:8980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:8a00::,2400:8a00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:8a80::,2400:8a80:ffff:ffff:ffff:ffff:ffff:ffff,PH
@@ -1051,7 +4151,6 @@
2400:a000::,2400:a000:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:a080::,2400:a080:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:a100::,2400:a100:ffff:ffff:ffff:ffff:ffff:ffff,NP
-2400:a180::,2400:a180:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:a280::,2400:a280:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:a300::,2400:a300:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:a380::,2400:a380:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -1131,7 +4230,15 @@
2400:c980::,2400:c980:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:ca00::,2400:ca00:ffff:ffff:ffff:ffff:ffff:ffff,BD
2400:ca80::,2400:ca80:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:cb00::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00::,2400:cb00:20:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00:21::,2400:cb00:21:ffff:ffff:ffff:ffff:ffff,IT
+2400:cb00:22::,2400:cb00:24:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00:25::,2400:cb00:25:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:26::,2400:cb00:38:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00:39::,2400:cb00:39:ffff:ffff:ffff:ffff:ffff,IT
+2400:cb00:3a::,2400:cb00:f00c:ffff:ffff:ffff:ffff:ffff,HK
+2400:cb00:f00d::,2400:cb00:f00d:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:f00e::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:cb80::,2400:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cc00::,2400:cc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:cc80::,2400:cc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -1372,6 +4479,7 @@
2401:4480::,2401:4480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:4500::,2401:4500:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:4580::,2401:4580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:4600::,2401:4600:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:4680::,2401:4680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:4700::,2401:4700:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:4780::,2401:4780:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -1402,85 +4510,165 @@
2401:5480::,2401:5480:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:5500::,2401:5500:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:5580::,2401:5580:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2401:5680::,2401:5680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:5700::,2401:5700:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2401:5780::,2401:5780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:5800::,2401:5800:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2401:5880::,2401:5880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:5900::,2401:5900:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:5980::,2401:5980:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:5a00::,2401:5a00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:5a80::,2401:5a80:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:5b00::,2401:5b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:5b80::,2401:5b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:5c00::,2401:5c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:5c80::,2401:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:5d00::,2401:5d00:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2401:5d80::,2401:5d80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:5e00::,2401:5e00:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2401:5e80::,2401:5e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:5f00::,2401:5f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:5f80::,2401:5f80:ffff:ffff:ffff:ffff:ffff:ffff,VN
2401:6000::,2401:6fff:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7000::,2401:7000:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2401:7080::,2401:7080:ffff:ffff:ffff:ffff:ffff:ffff,TW
2401:7100::,2401:7100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:7180::,2401:7180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7200::,2401:7200:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:7280::,2401:7280:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:7300::,2401:7300:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:7380::,2401:7380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7400::,2401:7401:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2401:7480::,2401:7480:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:7500::,2401:7500:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:7580::,2401:7580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7600::,2401:7600:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:7680::,2401:7680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7700::,2401:7700:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:7780::,2401:7780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7800::,2401:7800:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2401:7880::,2401:7880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7900::,2401:7900:ffff:ffff:ffff:ffff:ffff:ffff,LK
+2401:7980::,2401:7980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7a00::,2401:7a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:7a80::,2401:7a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7b00::,2401:7b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:7b80::,2401:7b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7c00::,2401:7c00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2401:7c80::,2401:7c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7d00::,2401:7d00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2401:7d80::,2401:7d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:7e00::,2401:7e00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:7e80::,2401:7e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7f00::,2401:7f00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2401:7f80::,2401:7f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:8000::,2401:803f:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2401:8080::,2401:8080:ffff:ffff:ffff:ffff:ffff:ffff,AF
2401:8100::,2401:8100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:8180::,2401:8180:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:8200::,2401:8200:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:8280::,2401:8280:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:8300::,2401:8300:ffff:ffff:ffff:ffff:ffff:ffff,MV
+2401:8380::,2401:8380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:8400::,2401:8400:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2401:8480::,2401:8480:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:8500::,2401:8500:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:8580::,2401:8580:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:8600::,2401:8600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:8680::,2401:8680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:8700::,2401:8700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2401:8780::,2401:8780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:8800::,2401:8800:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:8880::,2401:8880:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:8900::,2401:8900:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:8980::,2401:8980:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:8a00::,2401:8a00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:8a80::,2401:8a80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:8b00::,2401:8b00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2401:8b80::,2401:8b80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:8c00::,2401:8c01:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:8c80::,2401:8c80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:8d00::,2401:8d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:8d80::,2401:8d80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:8e00::,2401:8e00:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2401:8e80::,2401:8e80:ffff:ffff:ffff:ffff:ffff:ffff,PH
2401:8f00::,2401:8f00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2401:8f80::,2401:8f80:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:9080::,2401:9080:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:9100::,2401:9100:ffff:ffff:ffff:ffff:ffff:ffff,MO
+2401:9180::,2401:9180:ffff:ffff:ffff:ffff:ffff:ffff,TW
2401:9200::,2401:9200:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:9280::,2401:9280:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:9300::,2401:9300:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:9380::,2401:9380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:9400::,2401:9400:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2401:9480::,2401:9480:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:9500::,2401:9500:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2401:9580::,2401:9580:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:9600::,2401:9600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:9680::,2401:9680:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:9700::,2401:9700:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2401:9780::,2401:9780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:9800::,2401:9800:ffff:ffff:ffff:ffff:ffff:ffff,PH
-2401:9900::,2401:9900:ffff:ffff:ffff:ffff:ffff:ffff,LK
+2401:9880::,2401:9880:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:9980::,2401:9980:ffff:ffff:ffff:ffff:ffff:ffff,MY
2401:9a00::,2401:9a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:9a80::,2401:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:9b00::,2401:9b00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2401:9b80::,2401:9b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:9c00::,2401:9c00:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2401:9c80::,2401:9c80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:9d00::,2401:9d00:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2401:9d80::,2401:9d80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:9e00::,2401:9e00:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2401:9e80::,2401:9e80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:9f00::,2401:9f00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2401:9f80::,2401:9f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:a000::,2401:a000:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2401:a080::,2401:a080:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:a100::,2401:a100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:a180::,2401:a180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:a280::,2401:a280:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:a300::,2401:a300:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2401:a380::,2401:a380:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:a400::,2401:a400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:a480::,2401:a480:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:a500::,2401:a500:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2401:a580::,2401:a580:ffff:ffff:ffff:ffff:ffff:ffff,TH
2401:a600::,2401:a600:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:a680::,2401:a680:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:a700::,2401:a700:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2401:a780::,2401:a780:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:a800::,2401:a800:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2401:a880::,2401:a880:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:a900::,2401:a900:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:a980::,2401:a980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:aa00::,2401:aa00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:aa80::,2401:aa80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:ab00::,2401:ab00:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2401:ab80::,2401:ab80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:ac00::,2401:ac00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:ac80::,2401:ac80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:ad00::,2401:ad00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2401:ad80::,2401:ad80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:ae00::,2401:ae00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2401:ae80::,2401:ae80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:af00::,2401:af00:ffff:ffff:ffff:ffff:ffff:ffff,NC
+2401:af80::,2401:af80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:b000::,2401:b000:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2401:b080::,2401:b080:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:b100::,2401:b100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:b180::,2401:b180:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:b200::,2401:b200:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:b280::,2401:b280:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:b300::,2401:b300:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:b380::,2401:b380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:b400::,2401:b400:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:b480::,2401:b480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:b500::,2401:b500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:b580::,2401:b580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:b600::,2401:b600:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2401:b680::,2401:b680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:b700::,2401:b700:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:b800::,2401:b800:ffff:ffff:ffff:ffff:ffff:ffff,VN
2401:b900::,2401:b900:ffff:ffff:ffff:ffff:ffff:ffff,PH
@@ -1548,7 +4736,16 @@
2401:f700::,2401:f700:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:f800::,2401:f800:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:f900::,2401:f900:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2401:fa00::,2401:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00::,2401:fa00::ffff:ffff:ffff:ffff:ffff,AU
+2401:fa00:1::,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:ffff:ffff:ffff:ffff:ffff,SG
+2401:fa00:10::,2401:fa00:14:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:15::,2401:fa00:15:ffff:ffff:ffff:ffff:ffff,JP
+2401:fa00:16::,2401:fa00:3f:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:40::,2401:fa00:40:ffff:ffff:ffff:ffff:ffff,CN
+2401:fa00:41::,2401:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:fb00::,2401:fb00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2401:fc00::,2401:fc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:fd00::,2401:fd00:ffff:ffff:ffff:ffff:ffff:ffff,MY
@@ -2005,6 +5202,7 @@
2403:d400::,2403:d400:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:d500::,2403:d500:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:d600::,2403:d600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:d700::,2403:d700:ffff:ffff:ffff:ffff:ffff:ffff,MN
2403:d800::,2403:d800:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2403:d900::,2403:d900:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:da00::,2403:da00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -2290,7 +5488,7 @@
2404:e500::,2404:e500:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:e600::,2404:e600:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:e700::,2404:e700:ffff:ffff:ffff:ffff:ffff:ffff,ID
-2404:e800::,2404:e8ff:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2404:e800::,2404:e801:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:e900::,2404:e900:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:ea00::,2404:ea00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:eb00::,2404:eb00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -2307,7 +5505,13 @@
2404:f600::,2404:f600:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:f700::,2404:f700:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:f800::,2404:f800:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2404:f801::,2404:f801:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801::,2404:f801:7:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8::,2404:f801:8:ffff:ffff:ffff:ffff:ffff,IN
+2404:f801:9::,2404:f801:802f:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8030::,2404:f801:8030:ffff:ffff:ffff:ffff:ffff,IN
+2404:f801:8031::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8058::,2404:f801:8058:ffff:ffff:ffff:ffff:ffff,IN
+2404:f801:8059::,2404:f801:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:f900::,2404:f900:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:fa00::,2404:fa00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:fb00::,2404:fb00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -2520,7 +5724,6 @@
2405:d200::,2405:d200:ffff:ffff:ffff:ffff:ffff:ffff,JP
2405:d300::,2405:d300:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:d400::,2405:d400:ffff:ffff:ffff:ffff:ffff:ffff,PH
-2405:d500::,2405:d500:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:d600::,2405:d600:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:d700::,2405:d700:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:d800::,2405:d800:ffff:ffff:ffff:ffff:ffff:ffff,SG
@@ -2537,7 +5740,6 @@
2405:e600::,2405:e600:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:e700::,2405:e700:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:e800::,2405:e800:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2405:e900::,2405:e900:ffff:ffff:ffff:ffff:ffff:ffff,PH
2405:ea00::,2405:ea00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:eb00::,2405:eb00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:ec00::,2405:ec00:ffff:ffff:ffff:ffff:ffff:ffff,BT
@@ -2590,7 +5792,11 @@
2406:1d00::,2406:1d00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2406:1e00::,2406:1e00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2406:1f00::,2406:1f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2406:2000::,2406:2000:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000::,2406:2000:ef95:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000:ef96::,2406:2000:ef96:ffff:ffff:ffff:ffff:ffff,HK
+2406:2000:ef97::,2406:2000:efb9:ffff:ffff:ffff:ffff:ffff,TW
+2406:2000:efba::,2406:2000:efba:ffff:ffff:ffff:ffff:ffff,HK
+2406:2000:efbb::,2406:2000:ffff:ffff:ffff:ffff:ffff:ffff,TW
2406:2100::,2406:2100:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:2200::,2406:2200:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:2300::,2406:2300:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -2606,7 +5812,7 @@
2406:2d00::,2406:2d00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:2e00::,2406:2e00:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:2f00::,2406:2f00:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2406:3000::,2406:30ff:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2406:3000::,2406:3003:ffff:ffff:ffff:ffff:ffff:ffff,SG
2406:3100::,2406:3100:ffff:ffff:ffff:ffff:ffff:ffff,TH
2406:3200::,2406:3200:ffff:ffff:ffff:ffff:ffff:ffff,PH
2406:3300::,2406:3300:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -2677,6 +5883,7 @@
2406:7400::,2406:7400:ffff:ffff:ffff:ffff:ffff:ffff,IN
2406:7500::,2406:7500:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:7600::,2406:7600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2406:7700::,2406:7700:ffff:ffff:ffff:ffff:ffff:ffff,MY
2406:7800::,2406:7801:ffff:ffff:ffff:ffff:ffff:ffff,BN
2406:7900::,2406:7900:ffff:ffff:ffff:ffff:ffff:ffff,TH
2406:7a00::,2406:7a00:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -2837,7 +6044,6 @@
2407:1c00::,2407:1c00:ffff:ffff:ffff:ffff:ffff:ffff,SG
2407:1d00::,2407:1d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:1e00::,2407:1e00:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2407:1f00::,2407:1f00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:2000::,2407:2000:ffff:ffff:ffff:ffff:ffff:ffff,KR
2407:2100::,2407:2100:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:2200::,2407:2200:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -2951,7 +6157,6 @@
2407:9300::,2407:9300:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:9400::,2407:9400:ffff:ffff:ffff:ffff:ffff:ffff,MY
2407:9500::,2407:9500:ffff:ffff:ffff:ffff:ffff:ffff,NP
-2407:9700::,2407:9700:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:9800::,2407:9800:ffff:ffff:ffff:ffff:ffff:ffff,PH
2407:9900::,2407:9900:ffff:ffff:ffff:ffff:ffff:ffff,JP
2407:9a00::,2407:9a00:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -3064,6 +6269,7 @@
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:1f:ffff:ffff:ffff:ffff:ffff:ffff,JP
240e::,240e:fff:ffff:ffff:ffff:ffff:ffff:ffff,CN
240f::,240f:ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -3088,10 +6294,9 @@
2600:1900::,2600:190f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1a00::,2600:1a0f:ffff:ffff:ffff:ffff:ffff:ffff,GD
2600:1b00::,2600:1bff:ffff:ffff:ffff:ffff:ffff:ffff,JM
-2600:1c00::,2600:1c0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1d00::,2600:1d0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1e00::,2600:1e0f:ffff:ffff:ffff:ffff:ffff:ffff,VC
-2600:2000::,2600:200f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f00::,2600:200f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2400::,2600:2407:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2800::,2600:2803:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2c00::,2600:2c03:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3119,7 +6324,7 @@
2600:8400::,2600:840f:ffff:ffff:ffff:ffff:ffff:ffff,BB
2600:8800::,2600:880f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:e000::,2600:e00f:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2601::,2601:ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2601::,2601:f: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
@@ -3127,7 +6332,23 @@
2602:230::,2602:231:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:232::,2602:232:ffff:ffff:ffff:ffff:ffff:ffff,CA
2602:240::,2602:25f:ffff:ffff:ffff:ffff:ffff:ffff,US
-2602:300::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:300::,2602:306:b868:ffff:ffff:ffff:ffff:ffff,US
+2602:306:b869::,2602:306:b869:ffff:ffff:ffff:ffff:ffff,NL
+2602:306:b86a::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa2::,2602:ffa2:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa3::,2602:ffa3:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa4::,2602:ffa4:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa5::,2602:ffa5:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa6::,2602:ffa6:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa7::,2602:ffa7:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa8::,2602:ffa8:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffa9::,2602:ffa9:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffaa::,2602:ffaa:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffab::,2602:ffab:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffac::,2602:ffac:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffad::,2602:ffad:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffae::,2602:ffae:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ffaf::,2602:ffaf:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffb0::,2602:ffb0:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ffb1::,2602:ffb1:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ffb2::,2602:ffb2:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -3269,7 +6490,9 @@
2604:1e80::,2604:1e80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:1f00::,2604:1f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:1f80::,2604:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2604:2000::,2604:2100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:2000::,2604:2000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:2080::,2604:2080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:2100::,2604:2100:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:2180::,2604:2180:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:2200::,2604:2200:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:2280::,2604:2280:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3395,7 +6618,9 @@
2604:5e80::,2604:5e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5f00::,2604:5f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5f80::,2604:5f80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:6000::,2604:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:6000::,2604:6000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:6080::,2604:6080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:6100::,2604:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:6180::,2604:6180:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:6200::,2604:6200:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:6280::,2604:6280:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3469,10 +6694,10 @@
2604:8500::,2604:8500:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8580::,2604:8580:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8600::,2604:8600:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2604:8680::,2604:8680:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8700::,2604:8700:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8780::,2604:8780:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:8800::,2604:88ff:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2604:8800::,2604:8800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:8880::,2604:8880:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:8900::,2604:8900:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:8980::,2604:8980:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:8a00::,2604:8a00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3558,6 +6783,7 @@
2604:b200::,2604:b200:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b280::,2604:b280:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:b300::,2604:b300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:b380::,2604:b380:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b400::,2604:b400:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b480::,2604:b480:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:b500::,2604:b500:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3601,6 +6827,7 @@
2604:c800::,2604:c800:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c880::,2604:c880:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:c900::,2604:c900: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:ca80::,2604:ca80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:cb00::,2604:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3630,7 +6857,6 @@
2604:d700::,2604:d700:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d780::,2604:d780:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:d800::,2604:d801:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:d880::,2604:d880: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
@@ -3745,7 +6971,6 @@
2605:1080::,2605:1080:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1100::,2605:1100:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:1180::,2605:1180:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:1200::,2605:1200:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1280::,2605:1280:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1300::,2605:1300:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:1380::,2605:1380:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -3800,6 +7025,7 @@
2605:2c80::,2605:2c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:2d00::,2605:2d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:2d80::,2605:2d80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:2e00::,2605:2e00:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:2e80::,2605:2e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:2f00::,2605:2f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:2f80::,2605:2f80:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3852,7 +7078,6 @@
2605:4700::,2605:4700:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4780::,2605:4780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4800::,2605:4800:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:4880::,2605:4880:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4900::,2605:4900:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4980::,2605:4980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4a00::,2605:4a00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -3882,7 +7107,6 @@
2605:5600::,2605:5600:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5680::,2605:5680:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5700::,2605:5700:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:5780::,2605:5780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5800::,2605:5800:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5880::,2605:5880:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5900::,2605:5900:ffff:ffff:ffff:ffff:ffff:ffff,JM
@@ -3899,7 +7123,9 @@
2605:5e80::,2605:5e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5f00::,2605:5f00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5f80::,2605:5f80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:6000::,2605:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:6000::,2605:6000:ffff:ffff:ffff:ffff:ffff:ffff,US
+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
@@ -4014,39 +7240,77 @@
2605:9900::,2605:9900:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9980::,2605:9980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9a00::,2605:9a00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9a80::,2605:9a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9b00::,2605:9b00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9b80::,2605:9b80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9c00::,2605:9c00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9c80::,2605:9c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9d00::,2605:9d00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9d80::,2605:9d80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9e00::,2605:9e00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9e80::,2605:9e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:9f00::,2605:9f00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:a000::,2605:a100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:9f80::,2605:9f80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a000::,2605:a000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a080::,2605:a080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a100::,2605:a100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a180::,2605:a180:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a200::,2605:a200:ffff:ffff:ffff:ffff:ffff:ffff,JM
+2605:a280::,2605:a280:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a300::,2605:a300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a380::,2605:a380:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a400::,2605:a40f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a480::,2605:a480:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a500::,2605:a500:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:a600::,2605:a700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a580::,2605:a580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a600::,2605:a601:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a680::,2605:a680:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:a700::,2605:a700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a780::,2605:a780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a800::,2605:a800:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:a880::,2605:a880:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:a900::,2605:a900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:a980::,2605:a980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:aa00::,2605:aa00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:aa80::,2605:aa80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ab00::,2605:ab00:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:ab80::,2605:ab80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ac00::,2605:ac00:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:ac80::,2605:ac80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ad00::,2605:ad00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:ad80::,2605:ad80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ae00::,2605:ae00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:ae80::,2605:ae80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:af00::,2605:af00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:af80::,2605:af80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b000::,2605:b000:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:b080::,2605:b080:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b100::,2605:b100:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:b180::,2605:b180:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b200::,2605:b200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:b280::,2605:b280:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b300::,2605:b300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:b380::,2605:b380:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b400::,2605:b400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:b480::,2605:b480:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:b500::,2605:b500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:b580::,2605:b580:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b600::,2605:b600:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:b680::,2605:b680:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b700::,2605:b700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:b780::,2605:b780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b800::,2605:b800:ffff:ffff:ffff:ffff:ffff:ffff,PR
+2605:b880::,2605:b880:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:b900::,2605:b900:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:b980::,2605:b980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ba00::,2605:ba00:ffff:ffff:ffff:ffff:ffff:ffff,PR
+2605:ba80::,2605:ba80:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:bb00::,2605:bb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:bb80::,2605:bb80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:bc00::,2605:bc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:bc80::,2605:bc80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:bd00::,2605:bd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:bd80::,2605:bd80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:be00::,2605:be00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:bf00::,2605:bf00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:c000::,2605:c000:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4081,7 +7345,8 @@
2605:dd00::,2605:dd00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:de00::,2605:de00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:df00::,2605:df00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:e000::,2605:e100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:e000::,2605:e000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:e100::,2605:e100:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e200::,2605:e200:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:e300::,2605:e300:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e400::,2605:e400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4208,7 +7473,8 @@
2606:5d00::,2606:5d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:5e00::,2606:5e00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:5f00::,2606:5f00:ffff:ffff:ffff:ffff:ffff:ffff,PR
-2606:6000::,2606:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:6000::,2606:6000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:6100::,2606:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:6200::,2606:6200:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:6300::,2606:6300:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:6400::,2606:6400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4271,7 +7537,10 @@
2606:9d00::,2606:9d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:9e00::,2606:9e00:ffff:ffff:ffff:ffff:ffff:ffff,BM
2606:9f00::,2606:9f00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:a000::,2606:a100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:a000::,2606:a000:dd41:f5ff:ffff:ffff:ffff:ffff,US
+2606:a000:dd41:f600::,2606:a000:dd41:f7ff:ffff:ffff:ffff:ffff,AU
+2606:a000:dd41:f800::,2606:a000:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:a100::,2606:a100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:a200::,2606:a200:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:a300::,2606:a300:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:a400::,2606:a400:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4320,7 +7589,7 @@
2606:d000::,2606:d000:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d100::,2606:d100:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d200::,2606:d200:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:d300::,2606:d300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:d300::,2606:d300:fff:ffff:ffff:ffff:ffff:ffff,US
2606:d400::,2606:d400:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d500::,2606:d500:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:d600::,2606:d600:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4694,7 +7963,36 @@
2607:f2e8::,2607:f2e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f2f0::,2607:f2f0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f2f8::,2607:f2f8:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:f300::,2607:f400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f300::,2607:f300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f308::,2607:f308:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f310::,2607:f310:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f318::,2607:f318:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f330::,2607:f330:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f338::,2607:f338:ffff:ffff:ffff:ffff:ffff:ffff,CA
+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:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f360::,2607:f360:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f368::,2607:f368:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f370::,2607:f370:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f378::,2607:f378:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f380::,2607:f380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f388::,2607:f388:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f390::,2607:f390:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f398::,2607:f398:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3a0::,2607:f3a0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3b0::,2607:f3b0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3b8::,2607:f3b8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3c0::,2607:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3c8::,2607:f3c8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3d0::,2607:f3d0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3d8::,2607:f3d8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:f3e0::,2607:f3e0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:f3e8::,2607:f3e8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3f0::,2607:f3f0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f3f8::,2607:f3f8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f400::,2607:f400:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f408::,2607:f408:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f418::,2607:f418:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f420::,2607:f420:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -4933,7 +8231,38 @@
2607:fbe8::,2607:fbe8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fbf0::,2607:fbf0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fbf8::,2607:fbf8:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fc00::,2607:fd00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc00::,2607:fc00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc08::,2607:fc08:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc10::,2607:fc10:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fc18::,2607:fc18:fff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc20::,2607:fc20:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc28::,2607:fc28:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc30::,2607:fc30:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc38::,2607:fc38:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc40::,2607:fc40:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc48::,2607:fc48:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc50::,2607:fc50:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc58::,2607:fc58:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc60::,2607:fc60:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc68::,2607:fc68:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc70::,2607:fc70:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fc78::,2607:fc78:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fc80::,2607:fc80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc88::,2607:fc88:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc90::,2607:fc90:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fc98::,2607:fc98:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fca0::,2607:fca0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fca8::,2607:fca8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcb8::,2607:fcb8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcc0::,2607:fcc0:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fcc8::,2607:fcc8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcd0::,2607:fcd0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcd8::,2607:fcd8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fce0::,2607:fce0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fce8::,2607:fce8:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcf0::,2607:fcf0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:fcf8::,2607:fcf8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:fd00::,2607:fd00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd08::,2607:fd08:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd10::,2607:fd10:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd28::,2607:fd28:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -5098,7 +8427,1042 @@
2610:1e8::,2610:1e8:ffff:ffff:ffff:ffff:ffff:ffff,CA
2610:1f0::,2610:1f0:ffff:ffff:ffff:ffff:ffff:ffff,US
2610:1f8::,2610:1f8:ffff:ffff:ffff:ffff:ffff:ffff,US
-2620::,2620:100:f:ffff:ffff:ffff:ffff:ffff,US
+2620::,2620::ffff:ffff:ffff:ffff:ffff,US
+2620:0:10::,2620::10:ffff:ffff:ffff:ffff:ffff,US
+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,FR
+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
+2620:0:b0::,2620::b0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c0::,2620::c0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:f0::,2620::f0:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:100::,2620::100:ffff:ffff:ffff:ffff:ffff,US
+2620:0:110::,2620::110:ffff:ffff:ffff:ffff:ffff,US
+2620:0:120::,2620::120:ffff:ffff:ffff:ffff:ffff,US
+2620:0:140::,2620::140:ffff:ffff:ffff:ffff:ffff,US
+2620:0:150::,2620::150:ffff:ffff:ffff:ffff:ffff,US
+2620:0:160::,2620::160:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:170::,2620::170:ffff:ffff:ffff:ffff:ffff,US
+2620:0:180::,2620::180:ffff:ffff:ffff:ffff:ffff,US
+2620:0:190::,2620::190:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1a0::,2620::1a0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1b0::,2620::1b0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1c0::,2620::1c0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1d0::,2620::1d0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1f0::,2620::1f0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:200::,2620::200:ffff:ffff:ffff:ffff:ffff,US
+2620:0:210::,2620::210:ffff:ffff:ffff:ffff:ffff,US
+2620:0:220::,2620::220:ffff:ffff:ffff:ffff:ffff,US
+2620:0:230::,2620::230:ffff:ffff:ffff:ffff:ffff,CA
+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:270::,2620::270: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:380::,2620::380: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
+2620:0:3e0::,2620::3e0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:3f0::,2620::3f0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:400::,2620::57f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:600::,2620::600:ffff:ffff:ffff:ffff:ffff,US
+2620:0:610::,2620::61f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:630::,2620::630:ffff:ffff:ffff:ffff:ffff,US
+2620:0:640::,2620::640:ffff:ffff:ffff:ffff:ffff,US
+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::691:ffff:ffff:ffff:ffff:ffff,US
+2620:0:6a0::,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:800::,2620::802:ffff:ffff:ffff:ffff:ffff,US
+2620:0:810::,2620::810:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:820::,2620::820:ffff:ffff:ffff:ffff:ffff,US
+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: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
+2620:0:8d0::,2620::8d0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:8e0::,2620::8e0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:8f0::,2620::8f0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:900::,2620::900:ffff:ffff:ffff:ffff:ffff,US
+2620:0:910::,2620::910:ffff:ffff:ffff:ffff:ffff,US
+2620:0:920::,2620::920:ffff:ffff:ffff:ffff:ffff,US
+2620:0:930::,2620::930:ffff:ffff:ffff:ffff:ffff,US
+2620:0:940::,2620::940:ffff:ffff:ffff:ffff:ffff,US
+2620:0:950::,2620::950:ffff:ffff:ffff:ffff:ffff,US
+2620:0:960::,2620::960:ffff:ffff:ffff:ffff:ffff,US
+2620:0:970::,2620::970:ffff:ffff:ffff:ffff:ffff,US
+2620:0:980::,2620::980:ffff:ffff:ffff:ffff:ffff,US
+2620:0:990::,2620::990:ffff:ffff:ffff:ffff:ffff,US
+2620:0:9a0::,2620::9a0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:9b0::,2620::9b0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:9c0::,2620::9c0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:9e0::,2620::9e0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:9f0::,2620::9f0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:a00::,2620::a1f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b00::,2620::b00:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b10::,2620::b13:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b20::,2620::b20:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b30::,2620::b30:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b40::,2620::b40:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b50::,2620::b50:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b60::,2620::b61:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b80::,2620::b80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:b90::,2620::b90:ffff:ffff:ffff:ffff:ffff,US
+2620:0:ba0::,2620::ba0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:bb0::,2620::bb0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:bd0::,2620::bd0:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:be0::,2620::be0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:bf0::,2620::bf0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c10::,2620::c20:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c30::,2620::c30:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c40::,2620::c40:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c60::,2620::c60:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c70::,2620::c70:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c80::,2620::c80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:c90::,2620::ca0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:cb0::,2620::cb0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:cc0::,2620::ccf:ffff:ffff:ffff:ffff:ffff,US
+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: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,CN
+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::e50:ffff:ffff:ffff:ffff:ffff,US
+2620:0:e60::,2620::e60:ffff:ffff:ffff:ffff:ffff,US
+2620:0:e80::,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: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::101f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1020::,2620::1020:ffff:ffff:ffff:ffff:ffff,MX
+2620:0:1021::,2620::103f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1040::,2620::1040:ffff:ffff:ffff:ffff:ffff,IE
+2620:0:1041::,2620::1041:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1042::,2620::1042:ffff:ffff:ffff:ffff:ffff,GB
+2620:0:1043::,2620::104a:ffff:ffff:ffff:ffff:ffff,US
+2620:0:104b::,2620::104b:ffff:ffff:ffff:ffff:ffff,NL
+2620:0:104c::,2620::105e:ffff:ffff:ffff:ffff:ffff,US
+2620:0:105f::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
+2620:0:1060::,2620::106a:ffff:ffff:ffff:ffff:ffff,US
+2620:0:106b::,2620::106b:ffff:ffff:ffff:ffff:ffff,RU
+2620:0:106c::,2620::1072:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1073::,2620::1073:ffff:ffff:ffff:ffff:ffff,GB
+2620:0:1074::,2620::10ff:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1400::,2620::143f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1500::,2620::157f:ffff:ffff:ffff:ffff:ffff,US
+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: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
+2620:0:1ad0::,2620::1ad7:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1ae0::,2620::1ae0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1af0::,2620::1af0:ffff:ffff:ffff:ffff:ffff,CA
+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::2220: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: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
+2620:0:22c0::,2620::22c0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:22d0::,2620::22d0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:22e0::,2620::22e0:ffff:ffff:ffff:ffff:ffff,CA
+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:2860::,2620::2860:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2870::,2620::2870:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2880::,2620::2880:ffff:ffff:ffff:ffff:ffff,US
+2620:0:28a0::,2620::28a0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:28b0::,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:2a00::,2620::2a1f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2b00::,2620::2b00:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2b10::,2620::2b10:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2b20::,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: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
+2620:0:2e00::,2620::2e00:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e10::,2620::2e10:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e30::,2620::2e30:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e40::,2620::2e40:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e50::,2620::2e50:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e60::,2620::2e60:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e70::,2620::2e80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2ea0::,2620::2ea0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2eb0::,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: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
+2620:0:5040::,2620::5040:ffff:ffff:ffff:ffff:ffff,US
+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:5200::,2620::5200:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5300::,2620::530f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:aa00::,2620::aa00:ffff:ffff:ffff:ffff:ffff,US
+2620:1::,2620:1::ffff:ffff:ffff:ffff:ffff,US
+2620:1:4000::,2620:1:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1:8000::,2620:1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1:c000::,2620:1:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:2::,2620:2::ffff:ffff:ffff:ffff:ffff,US
+2620:2:4000::,2620:2:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:2:8000::,2620:2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:2:c000::,2620:2:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:3::,2620:3::ffff:ffff:ffff:ffff:ffff,US
+2620:3:4000::,2620:3:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3:8000::,2620:3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:3:c000::,2620:3:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4::,2620:4::ffff:ffff:ffff:ffff:ffff,US
+2620:4:4000::,2620:4:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4:8000::,2620:4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4:c000::,2620:4:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:5::,2620:5::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:c000::,2620:5:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:6::,2620:6::ffff:ffff:ffff:ffff:ffff,CA
+2620:6:4000::,2620:6:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:6:8000::,2620:6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:6:c000::,2620:6:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:7::,2620:7::ffff:ffff:ffff:ffff:ffff,US
+2620:7:4000::,2620:7:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:7:8000::,2620:7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:7:c000::,2620:7:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:8::,2620:8:7f:ffff:ffff:ffff:ffff:ffff,CA
+2620:8:8200::,2620:8:8200:ffff:ffff:ffff:ffff:ffff,US
+2620:9::,2620:9::ffff:ffff:ffff:ffff:ffff,US
+2620:9:4000::,2620:9:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:9:8000::,2620:9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9:c000::,2620:9:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:a::,2620:a:f:ffff:ffff:ffff:ffff:ffff,CA
+2620:a:4000::,2620:a:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:a:8000::,2620:a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a:c000::,2620:a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:b::,2620:b::ffff:ffff:ffff:ffff:ffff,US
+2620:b:4000::,2620:b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:b:8000::,2620:b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b:c000::,2620:b:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c::,2620:c::ffff:ffff:ffff:ffff:ffff,US
+2620:c:4000::,2620:c:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c:8000::,2620:c:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c:c000::,2620:c:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d::,2620:d::ffff:ffff:ffff:ffff:ffff,US
+2620:d:4000::,2620:d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d:8000::,2620:d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d:c000::,2620:d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e::,2620:e::ffff:ffff:ffff:ffff:ffff,US
+2620:e:4000::,2620:e:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e:8000::,2620:e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e:c000::,2620:e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f::,2620:f:f:ffff:ffff:ffff:ffff:ffff,US
+2620:f:4000::,2620:f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f:8000::,2620:f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f:c000::,2620:f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:10::,2620:10::ffff:ffff:ffff:ffff:ffff,US
+2620:10:4000::,2620:10:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:10:8000::,2620:10:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:10:c000::,2620:10:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:11::,2620:11:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11:4000::,2620:11:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:11:8000::,2620:11:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:11:c000::,2620:11:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:12::,2620:12::ffff:ffff:ffff:ffff:ffff,US
+2620:12:4000::,2620:12:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:12:8000::,2620:12:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:12:c000::,2620:12:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:13::,2620:13::ffff:ffff:ffff:ffff:ffff,CA
+2620:13:4000::,2620:13:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:13:8000::,2620:13:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:13:c000::,2620:13:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:14::,2620:14::ffff:ffff:ffff:ffff:ffff,US
+2620:14:4000::,2620:14:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:14:8000::,2620:14:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:14:c000::,2620:14:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:15::,2620:15::ffff:ffff:ffff:ffff:ffff,US
+2620:15:4000::,2620:15:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:15:8000::,2620:15:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:15:c000::,2620:15:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:16::,2620:16::ffff:ffff:ffff:ffff:ffff,CA
+2620:16:4000::,2620:16:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:16:8000::,2620:16:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:16:c000::,2620:16:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:17::,2620:17::ffff:ffff:ffff:ffff:ffff,US
+2620:17:4000::,2620:17:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:17:8000::,2620:17:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:17:c000::,2620:17:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:18::,2620:18::ffff:ffff:ffff:ffff:ffff,US
+2620:18:4000::,2620:18:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:18:8000::,2620:18:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:18:c000::,2620:18:c000:ffff:ffff:ffff:ffff:ffff,KN
+2620:19::,2620:19::ffff:ffff:ffff:ffff:ffff,US
+2620:19:4000::,2620:19:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:19:8000::,2620:19:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:19:c000::,2620:19:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1a::,2620:1a::ffff:ffff:ffff:ffff:ffff,US
+2620:1a:4000::,2620:1a:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1a:8000::,2620:1a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1a:c000::,2620:1a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1b::,2620:1b:f:ffff:ffff:ffff:ffff:ffff,US
+2620:1b:4000::,2620:1b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1b:8000::,2620:1b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1b:c000::,2620:1b:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1c::,2620:1c::ffff:ffff:ffff:ffff:ffff,US
+2620:1c:4000::,2620:1c:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1c:8000::,2620:1c:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1c:c000::,2620:1c:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1d::,2620:1d::ffff:ffff:ffff:ffff:ffff,US
+2620:1d:4000::,2620:1d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1d:8000::,2620:1d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1d:c000::,2620:1d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1e::,2620:1e::ffff:ffff:ffff:ffff:ffff,US
+2620:1e:4000::,2620:1e:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:1e:8000::,2620:1e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1e:c000::,2620:1e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:1f::,2620:1f::ffff:ffff:ffff:ffff:ffff,US
+2620:1f:4000::,2620:1f:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:1f:8000::,2620:1f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:1f:c000::,2620:1f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:20::,2620:20::ffff:ffff:ffff:ffff:ffff,US
+2620:20:4000::,2620:20:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:20:8000::,2620:20:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:20:c000::,2620:20:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:21::,2620:21::ffff:ffff:ffff:ffff:ffff,US
+2620:21:4000::,2620:21:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:8000::,2620:21:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:c000::,2620:21:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:22::,2620:22::ffff:ffff:ffff:ffff:ffff,US
+2620:22:4000::,2620:22:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:22:8000::,2620:22:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:22:c000::,2620:22:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:23::,2620:23::ffff:ffff:ffff:ffff:ffff,US
+2620:23:4000::,2620:23:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:23:8000::,2620:23:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:23:c000::,2620:23:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:24::,2620:24:1f:ffff:ffff:ffff:ffff:ffff,US
+2620:24:8080::,2620:24:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:25::,2620:25::ffff:ffff:ffff:ffff:ffff,US
+2620:25:4000::,2620:25:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:25:8000::,2620:25:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:25:c000::,2620:25:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:26::,2620:26::ffff:ffff:ffff:ffff:ffff,US
+2620:26:4000::,2620:26:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:26:8000::,2620:26:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:26:c000::,2620:26:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:27::,2620:27:f:ffff:ffff:ffff:ffff:ffff,US
+2620:27:8080::,2620:27:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:28::,2620:28::ffff:ffff:ffff:ffff:ffff,US
+2620:28:4000::,2620:28:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:28:8000::,2620:28:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:28:c000::,2620:28:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:29::,2620:29::ffff:ffff:ffff:ffff:ffff,US
+2620:29:4000::,2620:29:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:29:8000::,2620:29:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:29:c000::,2620:29:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:2a::,2620:2a::ffff:ffff:ffff:ffff:ffff,US
+2620:2a:4000::,2620:2a:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:2a:8000::,2620:2a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:2a:c000::,2620:2a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:2b::,2620:2b::ffff:ffff:ffff:ffff:ffff,US
+2620:2b:4000::,2620:2b:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:2b:8000::,2620:2b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:2b:c000::,2620:2b:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:2c::,2620:2c:f:ffff:ffff:ffff:ffff:ffff,US
+2620:2c:8080::,2620:2c:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:2d::,2620:2d::ffff:ffff:ffff:ffff:ffff,US
+2620:2d:4000::,2620:2d:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:2d:8000::,2620:2d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:2d:c000::,2620:2d:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:2e::,2620:2e:3f:ffff:ffff:ffff:ffff:ffff,US
+2620:2e:8080::,2620:2e:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:2f::,2620:2f::ffff:ffff:ffff:ffff:ffff,CA
+2620:2f:4000::,2620:2f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:2f:8000::,2620:2f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:2f:c000::,2620:2f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:30::,2620:30::ffff:ffff:ffff:ffff:ffff,US
+2620:30:4000::,2620:30:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:30:8000::,2620:30:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:30:c000::,2620:30:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:31::,2620:31::ffff:ffff:ffff:ffff:ffff,US
+2620:31:4000::,2620:31:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:31:8000::,2620:31:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:31:c000::,2620:31:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:32::,2620:32::ffff:ffff:ffff:ffff:ffff,US
+2620:32:4000::,2620:32:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:32:8000::,2620:32:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:32:c000::,2620:32:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:33::,2620:33::ffff:ffff:ffff:ffff:ffff,US
+2620:33:4000::,2620:33:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:33:8000::,2620:33:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:33:c000::,2620:33:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:34::,2620:34::ffff:ffff:ffff:ffff:ffff,US
+2620:34:4000::,2620:34:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:34:8000::,2620:34:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:34:c000::,2620:34:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:35::,2620:35::ffff:ffff:ffff:ffff:ffff,US
+2620:35:4000::,2620:35:400f:ffff:ffff:ffff:ffff:ffff,CA
+2620:35:8000::,2620:35:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:35:c000::,2620:35:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:36::,2620:36::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:c000::,2620:36:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:37::,2620:37::ffff:ffff:ffff:ffff:ffff,US
+2620:37:4000::,2620:37:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:37:8000::,2620:37:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:37:c000::,2620:37:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:38::,2620:38::ffff:ffff:ffff:ffff:ffff,US
+2620:38:4000::,2620:38:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:38:8000::,2620:38:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:38:c000::,2620:38:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:39::,2620:39::ffff:ffff:ffff:ffff:ffff,US
+2620:39:4000::,2620:39:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:39:8000::,2620:39:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:39:c000::,2620:39:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:3a::,2620:3a::ffff:ffff:ffff:ffff:ffff,US
+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:c000::,2620:3a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:3b::,2620:3b::ffff:ffff:ffff:ffff:ffff,US
+2620:3b:4000::,2620:3b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3b:8000::,2620:3b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:3b:c000::,2620:3b:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:3c::,2620:3c:3f:ffff:ffff:ffff:ffff:ffff,US
+2620:3c:8080::,2620:3c:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:3d::,2620:3d::ffff:ffff:ffff:ffff:ffff,US
+2620:3d:4000::,2620:3d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3d:8000::,2620:3d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:3d:c000::,2620:3d:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:3e::,2620:3e::ffff:ffff:ffff:ffff:ffff,US
+2620:3e:4000::,2620:3e:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3e:8000::,2620:3e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:3e:c000::,2620:3e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:3f::,2620:3f::ffff:ffff:ffff:ffff:ffff,US
+2620:3f:4000::,2620:3f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:3f:8000::,2620:3f:8000: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:4000::,2620:40:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:40:8000::,2620:40:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:40:c000::,2620:40:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:41::,2620:41:1:ffff:ffff:ffff:ffff:ffff,US
+2620:41:4000::,2620:41:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:41:8000::,2620:41:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:41:c000::,2620:41:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:42::,2620:42::ffff:ffff:ffff:ffff:ffff,US
+2620:42:4000::,2620:42:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:42:c000::,2620:42:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:43::,2620:43::ffff:ffff:ffff:ffff:ffff,US
+2620:43:4000::,2620:43:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:43:8000::,2620:43:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:43:c000::,2620:43:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:44::,2620:44:1:ffff:ffff:ffff:ffff:ffff,US
+2620:44:4000::,2620:44:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:44:8000::,2620:44:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:45::,2620:45::ffff:ffff:ffff:ffff:ffff,CA
+2620:45:4000::,2620:45:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:45:8000::,2620:45:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:45:c000::,2620:45:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:46::,2620:46::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:c000::,2620:46:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:47::,2620:47::ffff:ffff:ffff:ffff:ffff,US
+2620:47:4000::,2620:47:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:8000::,2620:47:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:c000::,2620:47:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:48::,2620:48::ffff:ffff:ffff:ffff:ffff,US
+2620:48:4000::,2620:48:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:48:8000::,2620:48:8000:ffff:ffff:ffff:ffff:ffff,US
+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:8080::,2620:49:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:4a::,2620:4a::ffff:ffff:ffff:ffff:ffff,US
+2620:4a:4000::,2620:4a:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4a:8000::,2620:4a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4a:c000::,2620:4a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4b::,2620:4b::ffff:ffff:ffff:ffff:ffff,CA
+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: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
+2620:4c:c000::,2620:4c:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4d::,2620:4d::ffff:ffff:ffff:ffff:ffff,US
+2620:4d:4000::,2620:4d:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:4d:8000::,2620:4d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4d:c000::,2620:4d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4e::,2620:4e::ffff:ffff:ffff:ffff:ffff,US
+2620:4e:4000::,2620:4e:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:4e:8000::,2620:4e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4e:c000::,2620:4e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f::,2620:4f::ffff:ffff:ffff:ffff:ffff,US
+2620:4f:4000::,2620:4f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f:8000::,2620:4f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f:c000::,2620:4f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:50::,2620:50:f:ffff:ffff:ffff:ffff:ffff,US
+2620:50:8080::,2620:50:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:51::,2620:51::ffff:ffff:ffff:ffff:ffff,US
+2620:51:4000::,2620:51:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:51:8000::,2620:51:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:51:c000::,2620:51:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:52::,2620:52:3:ffff:ffff:ffff:ffff:ffff,US
+2620:52:4000::,2620:52:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:52:8000::,2620:52:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:52:c000::,2620:52:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:53::,2620:53::ffff:ffff:ffff:ffff:ffff,US
+2620:53:4000::,2620:53:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:53:8000::,2620:53:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:53:c000::,2620:53:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:54::,2620:54::ffff:ffff:ffff:ffff:ffff,US
+2620:54:4000::,2620:54:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:54:8000::,2620:54:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:54:c000::,2620:54:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:55::,2620:55::ffff:ffff:ffff:ffff:ffff,US
+2620:55:4000::,2620:55:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:55:8000::,2620:55:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:55:c000::,2620:55:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:56::,2620:56::ffff:ffff:ffff:ffff:ffff,US
+2620:56:4000::,2620:56:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:56:8000::,2620:56:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:56:c000::,2620:56:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:57::,2620:57::ffff:ffff:ffff:ffff:ffff,US
+2620:57:4000::,2620:57:400f:ffff:ffff:ffff:ffff:ffff,KY
+2620:57:8000::,2620:57:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:57:c000::,2620:57:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:58::,2620:58:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:58:8800::,2620:58:8800:ffff:ffff:ffff:ffff:ffff,US
+2620:59::,2620:59::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
+2620:5a::,2620:5a::ffff:ffff:ffff:ffff:ffff,US
+2620:5a:4000::,2620:5a:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:5a:8000::,2620:5a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5a:c000::,2620:5a:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:5b::,2620:5b::ffff:ffff:ffff:ffff:ffff,US
+2620:5b:4000::,2620:5b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:5b:8000::,2620:5b:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:5b:c000::,2620:5b:c00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:5c::,2620:5c::ffff:ffff:ffff:ffff:ffff,US
+2620:5c:4000::,2620:5c:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:5c:8000::,2620:5c:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5c:c000::,2620:5c:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:5d::,2620:5d::ffff:ffff:ffff:ffff:ffff,US
+2620:5d:4000::,2620:5d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:5d:8000::,2620:5d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5d:c000::,2620:5d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:5e::,2620:5e::ffff:ffff:ffff:ffff:ffff,US
+2620:5e:4000::,2620:5e:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:5e:8000::,2620:5e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5e:c000::,2620:5e:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:5f::,2620:5f::ffff:ffff:ffff:ffff:ffff,US
+2620:5f:4000::,2620:5f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:5f:8000::,2620:5f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:5f:c000::,2620:5f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:60::,2620:60::ffff:ffff:ffff:ffff:ffff,US
+2620:60:4000::,2620:60:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:60:8000::,2620:60:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:60:c000::,2620:60:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:61::,2620:61::ffff:ffff:ffff:ffff:ffff,CA
+2620:61:4000::,2620:61:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:61:8000::,2620:61:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:61:c000::,2620:61:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:62::,2620:62::ffff:ffff:ffff:ffff:ffff,US
+2620:62:4000::,2620:62:400f:ffff:ffff:ffff:ffff:ffff,CA
+2620:62:8000::,2620:62:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:62:c000::,2620:62:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:63::,2620:63::ffff:ffff:ffff:ffff:ffff,US
+2620:63:4000::,2620:63:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:63:8000::,2620:63:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:63:c000::,2620:63:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:64::,2620:64::ffff:ffff:ffff:ffff:ffff,US
+2620:64:4000::,2620:64:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:64:8000::,2620:64:8000:ffff:ffff:ffff:ffff:ffff,TW
+2620:64:c000::,2620:64:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:65::,2620:65:ff: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: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
+2620:66:c000::,2620:66:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:67::,2620:67::ffff:ffff:ffff:ffff:ffff,US
+2620:67:4000::,2620:67:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:67:8000::,2620:67:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:67:c000::,2620:67:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:68::,2620:68::ffff:ffff:ffff:ffff:ffff,US
+2620:68:4000::,2620:68:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:68:8000::,2620:68:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:68:c000::,2620:68:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:69:4000::,2620:69:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:69:8000::,2620:69:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:69:c000::,2620:69:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:6a::,2620:6a::ffff:ffff:ffff:ffff:ffff,US
+2620:6a:4000::,2620:6a:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:6a:8000::,2620:6a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:6a:c000::,2620:6a:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:6b::,2620:6b::ffff:ffff:ffff:ffff:ffff,US
+2620:6b:4000::,2620:6b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:6b:8000::,2620:6b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:6b:c000::,2620:6b:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:6c::,2620:6c:3f:ffff:ffff:ffff:ffff:ffff,US
+2620:6c:8080::,2620:6c:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:6d:40::,2620:6d:40:ffff:ffff:ffff:ffff:ffff,US
+2620:6d:8000::,2620:6d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:6d:c000::,2620:6d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:6e::,2620:6e::ffff:ffff:ffff:ffff:ffff,US
+2620:6e:4000::,2620:6e:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:6e:8000::,2620:6e:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:6e:c000::,2620:6e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:6f::,2620:6f::ffff:ffff:ffff:ffff:ffff,US
+2620:6f:4000::,2620:6f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:6f:8000::,2620:6f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:6f:c000::,2620:6f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:70::,2620:70::ffff:ffff:ffff:ffff:ffff,US
+2620:70:4000::,2620:70:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:70:8000::,2620:70:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:70:c000::,2620:70:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:71::,2620:71::ffff:ffff:ffff:ffff:ffff,US
+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: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
+2620:73::,2620:73::ffff:ffff:ffff:ffff:ffff,US
+2620:73:4000::,2620:73:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:73:8000::,2620:73:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:73:c000::,2620:73:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:74::,2620:74:1f:ffff:ffff:ffff:ffff:ffff,US
+2620:74:8080::,2620:74:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:75::,2620:75::ffff:ffff:ffff:ffff:ffff,US
+2620:75:4000::,2620:75:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:75:8000::,2620:75:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:75:c000::,2620:75:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:76::,2620:76::ffff:ffff:ffff:ffff:ffff,US
+2620:76:4000::,2620:76:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:76:8000::,2620:76:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:76:c000::,2620:76:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:77::,2620:77::ffff:ffff:ffff:ffff:ffff,US
+2620:77:4000::,2620:77:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:77:8000::,2620:77:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:77:c000::,2620:77:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:78::,2620:78::ffff:ffff:ffff:ffff:ffff,US
+2620:78:4000::,2620:78:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:78:8000::,2620:78:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:78:c000::,2620:78:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:79::,2620:79::ffff:ffff:ffff:ffff:ffff,US
+2620:79:4000::,2620:79:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:79:8000::,2620:79:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:79:c000::,2620:79:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:7a::,2620:7a::ffff:ffff:ffff:ffff:ffff,US
+2620:7a:4000::,2620:7a:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:7a:8000::,2620:7a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:7a:c000::,2620:7a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:7b::,2620:7b::ffff:ffff:ffff:ffff:ffff,US
+2620:7b:4000::,2620:7b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:7b:8000::,2620:7b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:7b:e000::,2620:7b:e000:ffff:ffff:ffff:ffff:ffff,US
+2620:7c:4000::,2620:7c:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:7c:a000::,2620:7c:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:7d::,2620:7d::ffff:ffff:ffff:ffff:ffff,US
+2620:7d:4000::,2620:7d:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:7d:8000::,2620:7d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:7d:c000::,2620:7d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:7e::,2620:7e:f:ffff:ffff:ffff:ffff:ffff,US
+2620:7e:60c0::,2620:7e:60c0:ffff:ffff:ffff:ffff:ffff,US
+2620:7e:c080::,2620:7e:c080:ffff:ffff:ffff:ffff:ffff,US
+2620:7f:2040::,2620:7f:2040:ffff:ffff:ffff:ffff:ffff,US
+2620:7f:8000::,2620:7f:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:7f:c000::,2620:7f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:80::,2620:80::ffff:ffff:ffff:ffff:ffff,US
+2620:80:4000::,2620:80:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:80:8000::,2620:80:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:80:c000::,2620:80:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:81::,2620:81::ffff:ffff:ffff:ffff:ffff,US
+2620:81:4000::,2620:81:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:81:8000::,2620:81:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:81:c000::,2620:81:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:82:4000::,2620:82:4000:ffff:ffff:ffff:ffff:ffff,US
+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:8000: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
+2620:84:8000::,2620:84:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:84:c000::,2620:84:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:85::,2620:85::ffff:ffff:ffff:ffff:ffff,US
+2620:85:4000::,2620:85:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:85:8000::,2620:85:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:85:c000::,2620:85:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:86::,2620:86::ffff:ffff:ffff:ffff:ffff,US
+2620:86:4000::,2620:86:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:86:8000::,2620:86:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:86:c000::,2620:86:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:87::,2620:87::ffff:ffff:ffff:ffff:ffff,US
+2620:87:4000::,2620:87:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:87:8000::,2620:87:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:87:c000::,2620:87:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:88::,2620:88::ffff:ffff:ffff:ffff:ffff,US
+2620:88:4000::,2620:88:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:88:8000::,2620:88:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:88:c000::,2620:88:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:89::,2620:89::ffff:ffff:ffff:ffff:ffff,US
+2620:89:4000::,2620:89:4000: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: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
+2620:8a:c000::,2620:8a:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:8b::,2620:8b::ffff:ffff:ffff:ffff:ffff,US
+2620:8b:4000::,2620:8b:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:8b:8000::,2620:8b:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:8b:c000::,2620:8b:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:8c:4000::,2620:8c:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:8c:8000::,2620:8c:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:8c:c000::,2620:8c:c000: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:c000::,2620:8d:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:8e::,2620:8e::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
+2620:8e:c000::,2620:8e:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:8f::,2620:8f::ffff:ffff:ffff:ffff:ffff,US
+2620:8f:4000::,2620:8f:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:8f:8000::,2620:8f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:8f:c000::,2620:8f:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:90::,2620:90::ffff:ffff:ffff:ffff:ffff,CA
+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: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:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:92::,2620:92:f:ffff:ffff:ffff:ffff:ffff,US
+2620:92:4000::,2620:92:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:92:8000::,2620:92:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:92:c000::,2620:92:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:93::,2620:93::ffff:ffff:ffff:ffff:ffff,US
+2620:93:4000::,2620:93:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:93:8000::,2620:93:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:93:c000::,2620:93:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:94::,2620:94::ffff:ffff:ffff:ffff:ffff,US
+2620:94:4000::,2620:94:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:94:8000::,2620:94:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:94:c000::,2620:94:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:95::,2620:95::ffff:ffff:ffff:ffff:ffff,US
+2620:95:4000::,2620:95:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:95:8000::,2620:95:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:95:c000::,2620:95:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:96::,2620:96::ffff:ffff:ffff:ffff:ffff,US
+2620:96:4000::,2620:96:400f:ffff:ffff:ffff:ffff:ffff,CA
+2620:96:8000::,2620:96:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:96:c000::,2620:96:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:97::,2620:97::ffff:ffff:ffff:ffff:ffff,US
+2620:97:4000::,2620:97:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:97:8000::,2620:97:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:97:c000::,2620:97:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:98::,2620:98::ffff:ffff:ffff:ffff:ffff,US
+2620:98:4000::,2620:98:4000: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:99::,2620:99::ffff:ffff:ffff:ffff:ffff,US
+2620:99:4000::,2620:99:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:99:8000::,2620:99:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9a::,2620:9a::ffff:ffff:ffff:ffff:ffff,CA
+2620:9a:8000::,2620:9a:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9b:8000::,2620:9b:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9c::,2620:9c::ffff:ffff:ffff:ffff:ffff,US
+2620:9c:8000::,2620:9c:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9d::,2620:9d::ffff:ffff:ffff:ffff:ffff,US
+2620:9d:8000::,2620:9d:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9e::,2620:9e::ffff:ffff:ffff:ffff:ffff,US
+2620:9e:8000::,2620:9e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:9f::,2620:9f:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:9f:8000::,2620:9f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a0::,2620:a0::ffff:ffff:ffff:ffff:ffff,US
+2620:a0:8000::,2620:a0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a1::,2620:a1::ffff:ffff:ffff:ffff:ffff,US
+2620:a1:8000::,2620:a1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a2::,2620:a2::ffff:ffff:ffff:ffff:ffff,US
+2620:a2:8000::,2620:a2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a3::,2620:a3::ffff:ffff:ffff:ffff:ffff,US
+2620:a3:8000::,2620:a3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a3:c020::,2620:a3:c020:ffff:ffff:ffff:ffff:ffff,US
+2620:a4:40::,2620:a4:40:ffff:ffff:ffff:ffff:ffff,US
+2620:a4:4060::,2620:a4:4060:ffff:ffff:ffff:ffff:ffff,US
+2620:a4:8080::,2620:a4:8080:ffff:ffff:ffff:ffff:ffff,US
+2620:a5::,2620:a5::ffff:ffff:ffff:ffff:ffff,US
+2620:a5:8000::,2620:a5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a6::,2620:a6::ffff:ffff:ffff:ffff:ffff,US
+2620:a6:8000::,2620:a6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a7::,2620:a7::ffff:ffff:ffff:ffff:ffff,US
+2620:a7:8000::,2620:a7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a8::,2620:a8::ffff:ffff:ffff:ffff:ffff,US
+2620:a8:8000::,2620:a8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a9::,2620:a9::ffff:ffff:ffff:ffff:ffff,US
+2620:a9:8000::,2620:a9:800f:ffff:ffff:ffff:ffff:ffff,US
+2620:aa::,2620:aa::ffff:ffff:ffff:ffff:ffff,US
+2620:aa:8000::,2620:aa:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ab::,2620:ab::ffff:ffff:ffff:ffff:ffff,US
+2620:ab:8000::,2620:ab:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ac::,2620:ac::ffff:ffff:ffff:ffff:ffff,US
+2620:ac:8000::,2620:ac:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ad::,2620:ad::ffff:ffff:ffff:ffff:ffff,US
+2620:ad:8000::,2620:ad:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ae::,2620:ae::ffff:ffff:ffff:ffff:ffff,CA
+2620:ae:8000::,2620:ae:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:af::,2620:af::ffff:ffff:ffff:ffff:ffff,US
+2620:af:8000::,2620:af:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b0::,2620:b0::ffff:ffff:ffff:ffff:ffff,CA
+2620:b0:8000::,2620:b0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b1::,2620:b1::ffff:ffff:ffff:ffff:ffff,US
+2620:b1:8000::,2620:b1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b2::,2620:b2::ffff:ffff:ffff:ffff:ffff,US
+2620:b2:8000::,2620:b2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b3::,2620:b3::ffff:ffff:ffff:ffff:ffff,US
+2620:b3:8000::,2620:b3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b4::,2620:b4::ffff:ffff:ffff:ffff:ffff,US
+2620:b4:8000::,2620:b4:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:b5::,2620:b5::ffff:ffff:ffff:ffff:ffff,US
+2620:b5:8000::,2620:b5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b6::,2620:b6::ffff:ffff:ffff:ffff:ffff,US
+2620:b6:8000::,2620:b6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b7::,2620:b7::ffff:ffff:ffff:ffff:ffff,US
+2620:b7:8000::,2620:b7:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:b8::,2620:b8::ffff:ffff:ffff:ffff:ffff,US
+2620:b8:8000::,2620:b8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:b9::,2620:b9::ffff:ffff:ffff:ffff:ffff,US
+2620:b9:8000::,2620:b9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ba::,2620:ba::ffff:ffff:ffff:ffff:ffff,US
+2620:ba:8000::,2620:ba:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:bb::,2620:bb::ffff:ffff:ffff:ffff:ffff,US
+2620:bb:8000::,2620:bb:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:bc:8000::,2620:bc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:bd::,2620:bd::ffff:ffff:ffff:ffff:ffff,CA
+2620:bd:8000::,2620:bd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:be::,2620:be::ffff:ffff:ffff:ffff:ffff,US
+2620:be:8000::,2620:be:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:bf::,2620:bf::ffff:ffff:ffff:ffff:ffff,US
+2620:bf:8000::,2620:bf:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c0::,2620:c0::ffff:ffff:ffff:ffff:ffff,US
+2620:c0:8000::,2620:c0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c1::,2620:c1::ffff:ffff:ffff:ffff:ffff,US
+2620:c1:8000::,2620:c1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c2::,2620:c2::ffff:ffff:ffff:ffff:ffff,CA
+2620:c2:8000::,2620:c2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c3::,2620:c3::ffff:ffff:ffff:ffff:ffff,US
+2620:c3:8000::,2620:c3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c4::,2620:c4::ffff:ffff:ffff:ffff:ffff,US
+2620:c4:8000::,2620:c4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c5::,2620:c5::ffff:ffff:ffff:ffff:ffff,US
+2620:c5:8000::,2620:c5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c6::,2620:c6::ffff:ffff:ffff:ffff:ffff,US
+2620:c6:8000::,2620:c6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c7::,2620:c7::ffff:ffff:ffff:ffff:ffff,US
+2620:c7:8000::,2620:c7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c8::,2620:c8::ffff:ffff:ffff:ffff:ffff,US
+2620:c8:8000::,2620:c8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c9::,2620:c9::ffff:ffff:ffff:ffff:ffff,US
+2620:c9:8000::,2620:c9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ca::,2620:ca::ffff:ffff:ffff:ffff:ffff,US
+2620:ca:8000::,2620:ca:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cb::,2620:cb::ffff:ffff:ffff:ffff:ffff,US
+2620:cb:8000::,2620:cb:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:cc::,2620:cc::ffff:ffff:ffff:ffff:ffff,US
+2620:cc:8000::,2620:cc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cd::,2620:cd::ffff:ffff:ffff:ffff:ffff,US
+2620:cd:8000::,2620:cd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ce::,2620:ce::ffff:ffff:ffff:ffff:ffff,US
+2620:ce:8000::,2620:ce:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cf::,2620:cf::ffff:ffff:ffff:ffff:ffff,US
+2620:cf:8000::,2620:cf:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d0::,2620:d0::ffff:ffff:ffff:ffff:ffff,US
+2620:d0:8000::,2620:d0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d1::,2620:d1::ffff:ffff:ffff:ffff:ffff,US
+2620:d1:8000::,2620:d1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d2::,2620:d2::ffff:ffff:ffff:ffff:ffff,US
+2620:d2:8000::,2620:d2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d3::,2620:d3::ffff:ffff:ffff:ffff:ffff,US
+2620:d3:8000::,2620:d3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d4::,2620:d4::ffff:ffff:ffff:ffff:ffff,US
+2620:d4:8000::,2620:d4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d5::,2620:d5::ffff:ffff:ffff:ffff:ffff,US
+2620:d5:8000::,2620:d5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d6::,2620:d6::ffff:ffff:ffff:ffff:ffff,US
+2620:d6:8000::,2620:d6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d7::,2620:d7::ffff:ffff:ffff:ffff:ffff,US
+2620:d7:8000::,2620:d7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d8::,2620:d8::ffff:ffff:ffff:ffff:ffff,US
+2620:d8:8000::,2620:d8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d9::,2620:d9::ffff:ffff:ffff:ffff:ffff,US
+2620:d9:8000::,2620:d9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:da::,2620:da::ffff:ffff:ffff:ffff:ffff,US
+2620:da:8000::,2620:da:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:db::,2620:db::ffff:ffff:ffff:ffff:ffff,US
+2620:db:8000::,2620:db:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:dc::,2620:dc::ffff:ffff:ffff:ffff:ffff,US
+2620:dc:8::,2620:dc:8:ffff:ffff:ffff:ffff:ffff,US
+2620:dc:8000::,2620:dc:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:dd::,2620:dd::ffff:ffff:ffff:ffff:ffff,CA
+2620:dd:8000::,2620:dd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:de::,2620:de::ffff:ffff:ffff:ffff:ffff,US
+2620:de:8000::,2620:de:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:df::,2620:df::ffff:ffff:ffff:ffff:ffff,US
+2620:df:8000::,2620:df:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e0::,2620:e0::ffff:ffff:ffff:ffff:ffff,US
+2620:e0:8000::,2620:e0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e1::,2620:e1::ffff:ffff:ffff:ffff:ffff,US
+2620:e1:8000::,2620:e1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e2::,2620:e2::ffff:ffff:ffff:ffff:ffff,US
+2620:e2:8000::,2620:e2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e3::,2620:e3::ffff:ffff:ffff:ffff:ffff,US
+2620:e3:8000::,2620:e3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e4::,2620:e4::ffff:ffff:ffff:ffff:ffff,US
+2620:e4:8000::,2620:e4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e5::,2620:e5::ffff:ffff:ffff:ffff:ffff,US
+2620:e5:8000::,2620:e5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e6::,2620:e6::ffff:ffff:ffff:ffff:ffff,US
+2620:e6:8000::,2620:e6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e7::,2620:e7::ffff:ffff:ffff:ffff:ffff,US
+2620:e7:8000::,2620:e7:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:e8::,2620:e8::ffff:ffff:ffff:ffff:ffff,US
+2620:e8:8000::,2620:e8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e9::,2620:e9::ffff:ffff:ffff:ffff:ffff,US
+2620:e9:8000::,2620:e9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ea::,2620:ea:f:ffff:ffff:ffff:ffff:ffff,US
+2620:ea:8000::,2620:ea:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:eb::,2620:eb::ffff:ffff:ffff:ffff:ffff,US
+2620:eb:8000::,2620:eb:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ec::,2620:ec::ffff:ffff:ffff:ffff:ffff,US
+2620:ec:8000::,2620:ec:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ed::,2620:ed::ffff:ffff:ffff:ffff:ffff,US
+2620:ed:8000::,2620:ed:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ee::,2620:ee::ffff:ffff:ffff:ffff:ffff,US
+2620:ee:8000::,2620:ee:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ef::,2620:ef::ffff:ffff:ffff:ffff:ffff,US
+2620:ef:8000::,2620:ef:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f0::,2620:f0::ffff:ffff:ffff:ffff:ffff,US
+2620:f0:8000::,2620:f0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f1::,2620:f1::ffff:ffff:ffff:ffff:ffff,US
+2620:f1:8000::,2620:f1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f2::,2620:f2::ffff:ffff:ffff:ffff:ffff,CA
+2620:f2:8000::,2620:f2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f3::,2620:f3::ffff:ffff:ffff:ffff:ffff,US
+2620:f3:8000::,2620:f3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f4::,2620:f4::ffff:ffff:ffff:ffff:ffff,US
+2620:f4:8000::,2620:f4:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:f5::,2620:f5::ffff:ffff:ffff:ffff:ffff,US
+2620:f5:8000::,2620:f5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f6::,2620:f6::ffff:ffff:ffff:ffff:ffff,CA
+2620:f6:8000::,2620:f6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f7::,2620:f7::ffff:ffff:ffff:ffff:ffff,US
+2620:f7:8000::,2620:f7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f8::,2620:f8::ffff:ffff:ffff:ffff:ffff,US
+2620:f8:8000::,2620:f8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f9::,2620:f9:f:ffff:ffff:ffff:ffff:ffff,US
+2620:f9:8000::,2620:f9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fa::,2620:fa::ffff:ffff:ffff:ffff:ffff,US
+2620:fa:8000::,2620:fa:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:fb::,2620:fb::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:8000::,2620:fc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fd::,2620:fd::ffff:ffff:ffff:ffff:ffff,CA
+2620:fd:8000::,2620:fd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fe::,2620:fe:ff:ffff:ffff:ffff:ffff:ffff,US
+2620:fe:8000::,2620:fe:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ff::,2620:ff::ffff:ffff:ffff:ffff:ffff,US
+2620:ff:8000::,2620:ff:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:100::,2620:100:f:ffff:ffff:ffff:ffff:ffff,US
2620:100:1000::,2620:100:1001:ffff:ffff:ffff:ffff:ffff,US
2620:100:3000::,2620:100:3007:ffff:ffff:ffff:ffff:ffff,US
2620:100:4000::,2620:100:403f:ffff:ffff:ffff:ffff:ffff,US
@@ -5121,7 +9485,9 @@
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:80ff:ffff:ffff:ffff:ffff:ffff,US
-2620:101:9000::,2620:101:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:9000::,2620:101:9004:ffff:ffff:ffff:ffff:ffff,US
+2620:101:9005::,2620:101:9005:ffff:ffff:ffff:ffff:ffff,CA
+2620:101:9006::,2620:101:900f:ffff:ffff:ffff:ffff:ffff,US
2620:101:a000::,2620:101:a001:ffff:ffff:ffff:ffff:ffff,US
2620:101:b000::,2620:101:b07f:ffff:ffff:ffff:ffff:ffff,US
2620:101:c000::,2620:101:c00f:ffff:ffff:ffff:ffff:ffff,CA
@@ -5526,6 +9892,31 @@
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: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
+2620:11b:9000::,2620:11b:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:11b:a000::,2620:11b:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11b:b000::,2620:11b:b00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11b:c000::,2620:11b:c00f:ffff:ffff:ffff:ffff:ffff,US
+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: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
+2620:11c:4000::,2620:11c:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:5000::,2620:11c:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:6000::,2620:11c:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:7000::,2620:11c:700f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:8000::,2620:11c:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:9000::,2620:11c:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:a000::,2620:11c:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:b000::,2620:11c:b00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:c000::,2620:11c:c00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:11c:d000::,2620:11c:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:e000::,2620:11c:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11c:f000::,2620:11c:f00f: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
@@ -5575,7 +9966,7 @@
2620:176::,2620:177:fff:ffff:ffff:ffff:ffff:ffff,US
2620:178::,2620:178:fff:ffff:ffff:ffff:ffff:ffff,US
2620:179::,2620:179:fff:ffff:ffff:ffff:ffff:ffff,US
-2620:17a::,2620:17a:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:17a::,2620:17a:fff:ffff:ffff:ffff:ffff:ffff,FR
2620:17b::,2620:17b:fff:ffff:ffff:ffff:ffff:ffff,US
2620:17c::,2620:17c:fff:ffff:ffff:ffff:ffff:ffff,US
2620:17e::,2620:17e:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -5587,6 +9978,8 @@
2620:1d0::,2620:1d0:ffff:ffff:ffff:ffff:ffff:ffff,US
2620:1e0::,2620:1e1:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e2::,2620:1e2:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:1e3::,2620:1e3:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:1e4::,2620:1e4:ffff:ffff:ffff:ffff:ffff:ffff,CA
2620:1f0::,2620:1f1:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1f2::,2620:1f4:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1f5::,2620:1f5:fff:ffff:ffff:ffff:ffff:ffff,CA
@@ -5875,6 +10268,7 @@
2801:10::,2801:10:7:ffff:ffff:ffff:ffff:ffff,AR
2801:10:2000::,2801:10:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:10:4000::,2801:10:4000:ffff:ffff:ffff:ffff:ffff,AR
+2801:10:6000::,2801:10:6000:ffff:ffff:ffff:ffff:ffff,HN
2801:10:8000::,2801:10:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:10:a000::,2801:10:a000:ffff:ffff:ffff:ffff:ffff,AR
2801:10:c000::,2801:10:c000:ffff:ffff:ffff:ffff:ffff,CO
@@ -5887,27 +10281,32 @@
2801:12::,2801:12::ffff:ffff:ffff:ffff:ffff,PY
2801:12:2000::,2801:12:2000:ffff:ffff:ffff:ffff:ffff,HN
2801:12:4000::,2801:12:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:12:6000::,2801:12:6000:ffff:ffff:ffff:ffff:ffff,SV
2801:12:8000::,2801:12:8000:ffff:ffff:ffff:ffff:ffff,AR
-2801:12:a000::,2801:12:a000:ffff:ffff:ffff:ffff:ffff,CL
+2801:12:a000::,2801:12:a00f:ffff:ffff:ffff:ffff:ffff,CL
2801:12:c000::,2801:12:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:13::,2801:13::ffff:ffff:ffff:ffff:ffff,VE
2801:13:2000::,2801:13:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:4000::,2801:13:4000:ffff:ffff:ffff:ffff:ffff,CL
2801:13:8000::,2801:13:8000:ffff:ffff:ffff:ffff:ffff,SV
+2801:13:a000::,2801:13:a000:ffff:ffff:ffff:ffff:ffff,CO
2801:13:c000::,2801:13:c000:ffff:ffff:ffff:ffff:ffff,TT
2801:14::,2801:14::ffff:ffff:ffff:ffff:ffff,CO
2801:14:2000::,2801:14:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:14:4000::,2801:14:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:14:6000::,2801:14:6000:ffff:ffff:ffff:ffff:ffff,BO
2801:14:a000::,2801:14:a001:ffff:ffff:ffff:ffff:ffff,UY
2801:14:c000::,2801:14:c000:ffff:ffff:ffff:ffff:ffff,BO
2801:15::,2801:15::ffff:ffff:ffff:ffff:ffff,EC
2801:15:2000::,2801:15:2000:ffff:ffff:ffff:ffff:ffff,CR
2801:15:4000::,2801:15:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:15:8000::,2801:15:8000:ffff:ffff:ffff:ffff:ffff,CR
+2801:15:a000::,2801:15:a000:ffff:ffff:ffff:ffff:ffff,DO
2801:15:c000::,2801:15:c000:ffff:ffff:ffff:ffff:ffff,GT
2801:16::,2801:16::ffff:ffff:ffff:ffff:ffff,CW
2801:16:2000::,2801:16:2000:ffff:ffff:ffff:ffff:ffff,HN
2801:16:4000::,2801:16:4000:ffff:ffff:ffff:ffff:ffff,AR
+2801:16:6000::,2801:16:6000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:8000::,2801:16:8000:ffff:ffff:ffff:ffff:ffff,CO
2801:16:a000::,2801:16:a000:ffff:ffff:ffff:ffff:ffff,CR
2801:16:c000::,2801:16:c000:ffff:ffff:ffff:ffff:ffff,AR
@@ -5915,10 +10314,12 @@
2801:17:2000::,2801:17:2000:ffff:ffff:ffff:ffff:ffff,PY
2801:17:4000::,2801:17:4000:ffff:ffff:ffff:ffff:ffff,CO
2801:17:8000::,2801:17:8000:ffff:ffff:ffff:ffff:ffff,CR
+2801:17:a000::,2801:17:a000:ffff:ffff:ffff:ffff:ffff,HT
2801:17:c000::,2801:17:c000:ffff:ffff:ffff:ffff:ffff,PA
2801:18::,2801:18::ffff:ffff:ffff:ffff:ffff,CR
2801:18:2000::,2801:18:2000:ffff:ffff:ffff:ffff:ffff,CO
2801:18:4000::,2801:18:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:18:6000::,2801:18:6000:ffff:ffff:ffff:ffff:ffff,AR
2801:18:8000::,2801:18:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:18:a000::,2801:18:a000:ffff:ffff:ffff:ffff:ffff,BO
2801:18:c000::,2801:18:c000:ffff:ffff:ffff:ffff:ffff,AR
@@ -5931,6 +10332,7 @@
2801:1a::,2801:1a::ffff:ffff:ffff:ffff:ffff,CO
2801:1a:2000::,2801:1a:2000:ffff:ffff:ffff:ffff:ffff,AR
2801:1a:4000::,2801:1a:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:1a:6000::,2801:1a:6000:ffff:ffff:ffff:ffff:ffff,CR
2801:1a:8000::,2801:1a:8000:ffff:ffff:ffff:ffff:ffff,CL
2801:1a:a000::,2801:1a:a000:ffff:ffff:ffff:ffff:ffff,AR
2801:1a:c000::,2801:1a:c000:ffff:ffff:ffff:ffff:ffff,CO
@@ -5938,10 +10340,12 @@
2801:1b:2000::,2801:1b:2000:ffff:ffff:ffff:ffff:ffff,UY
2801:1b:4000::,2801:1b:4000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:8000::,2801:1b:8000:ffff:ffff:ffff:ffff:ffff,CL
+2801:1b:a000::,2801:1b:a000:ffff:ffff:ffff:ffff:ffff,AR
2801:1b:c000::,2801:1b:c000:ffff:ffff:ffff:ffff:ffff,PA
2801:1c::,2801:1c::ffff:ffff:ffff:ffff:ffff,PY
2801:1c:2000::,2801:1c:2000:ffff:ffff:ffff:ffff:ffff,PE
2801:1c:4000::,2801:1c:4000:ffff:ffff:ffff:ffff:ffff,CO
+2801:1c:6000::,2801:1c:6000:ffff:ffff:ffff:ffff:ffff,PA
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:c000::,2801:1c:c000:ffff:ffff:ffff:ffff:ffff,HN
@@ -5949,6 +10353,7 @@
2801:1d:2000::,2801:1d:2000:ffff:ffff:ffff:ffff:ffff,GT
2801:1d:4000::,2801:1d:4000:ffff:ffff:ffff:ffff:ffff,TT
2801:1d:8000::,2801:1d:8000:ffff:ffff:ffff:ffff:ffff,AR
+2801:1d:a000::,2801:1d:a000:ffff:ffff:ffff:ffff:ffff,CR
2801:1d:c000::,2801:1d:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:1e::,2801:1e::ffff:ffff:ffff:ffff:ffff,EC
2801:1e:2000::,2801:1e:2000:ffff:ffff:ffff:ffff:ffff,AR
@@ -5960,6 +10365,7 @@
2801:1f:2000::,2801:1f:2000:ffff:ffff:ffff:ffff:ffff,CR
2801:1f:4000::,2801:1f:4000:ffff:ffff:ffff:ffff:ffff,CR
2801:1f:8000::,2801:1f:8000:ffff:ffff:ffff:ffff:ffff,AR
+2801:1f:a000::,2801:1f:a000:ffff:ffff:ffff:ffff:ffff,CL
2801:1f:c000::,2801:1f:c000:ffff:ffff:ffff:ffff:ffff,CR
2801:80::,2801:80::ffff:ffff:ffff:ffff:ffff,BR
2801:80:10::,2801:80:10:ffff:ffff:ffff:ffff:ffff,BR
@@ -6137,7 +10543,6 @@
2801:80:b10::,2801:80:b10:ffff:ffff:ffff:ffff:ffff,BR
2801:80:b20::,2801:80:b20:ffff:ffff:ffff:ffff:ffff,BR
2801:80:b30::,2801:80:b30:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:b40::,2801:80:b40:ffff:ffff:ffff:ffff:ffff,BR
2801:80:b50::,2801:80:b50:ffff:ffff:ffff:ffff:ffff,BR
2801:80:b60::,2801:80:b60:ffff:ffff:ffff:ffff:ffff,BR
2801:80:b70::,2801:80:b70:ffff:ffff:ffff:ffff:ffff,BR
@@ -6151,6 +10556,23 @@
2801:80:c10::,2801:80:c10:ffff:ffff:ffff:ffff:ffff,BR
2801:80:c20::,2801:80:c20:ffff:ffff:ffff:ffff:ffff,BR
2801:80:c30::,2801:80:c30:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c40::,2801:80:c40:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c50::,2801:80:c50:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c60::,2801:80:c60:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c70::,2801:80:c70:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c80::,2801:80:c80:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:c90::,2801:80:c90:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:ca0::,2801:80:ca0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:cb0::,2801:80:cb0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:cc0::,2801:80:cc0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:cd0::,2801:80:cd0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:ce0::,2801:80:ce0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:cf0::,2801:80:cf0:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:d10::,2801:80:d10:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:d20::,2801:80:d2f:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:d40::,2801:80:d40:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:d50::,2801:80:d50:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:d60::,2801:80:d6f: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
@@ -6209,6 +10631,7 @@
2801:160::,2801:160:ff:ffff:ffff:ffff:ffff:ffff,CO
2801:170::,2801:170:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:180::,2801:180:f:ffff:ffff:ffff:ffff:ffff,PA
+2801:188::,2801:188:f:ffff:ffff:ffff:ffff:ffff,AR
2801:190::,2801:190:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:1a0::,2801:1a0:3f:ffff:ffff:ffff:ffff:ffff,CO
2801:1b0::,2801:1b0:ff:ffff:ffff:ffff:ffff:ffff,CO
@@ -6224,6 +10647,7 @@
2803:200::,2803:200:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:280::,2803:280:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:300::,2803:300:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:380::,2803:380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:400::,2803:400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:480::,2803:480:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:500::,2803:500:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -6238,6 +10662,7 @@
2803:a00::,2803:a00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a80::,2803:a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:b00::,2803:b00:ffff:ffff:ffff:ffff:ffff:ffff,EC
+2803:b80::,2803:b80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:c00::,2803:c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c80::,2803:c80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:d00::,2803:d00:ffff:ffff:ffff:ffff:ffff:ffff,GY
@@ -6252,8 +10677,8 @@
2803:1200::,2803:1200:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1280::,2803:1280:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1300::,2803:1300:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:1380::,2803:1380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:1400::,2803:1400:ffff:ffff:ffff:ffff:ffff:ffff,DO
-2803:1480::,2803:1480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1500::,2803:1500:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:1580::,2803:1580:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1600::,2803:1600:ffff:ffff:ffff:ffff:ffff:ffff,BQ
@@ -6266,8 +10691,10 @@
2803:1a00::,2803:1a00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1a80::,2803:1a80:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:1b00::,2803:1b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1b80::,2803:1b80:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:1c80::,2803:1c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1d00::,2803:1d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1d80::,2803:1d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1e00::,2803:1e00:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:1e80::,2803:1e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1f00::,2803:1f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6278,6 +10705,7 @@
2803:2200::,2803:2200:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:2280::,2803:2280:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:2300::,2803:2300:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2380::,2803:2380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2400::,2803:2400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2480::,2803:2480:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:2500::,2803:2500:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -6292,9 +10720,11 @@
2803:2a00::,2803:2a00:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:2a80::,2803:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2b00::,2803:2b00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:2b80::,2803:2b80:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:2c00::,2803:2c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2c80::,2803:2c80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:2d00::,2803:2d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2d80::,2803:2d80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:2e00::,2803:2e00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:2e80::,2803:2e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2f00::,2803:2f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6305,6 +10735,7 @@
2803:3200::,2803:3200:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:3280::,2803:3280:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:3300::,2803:3300:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:3380::,2803:3380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3400::,2803:3400:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:3480::,2803:3480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3500::,2803:3500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6322,6 +10753,7 @@
2803:3c00::,2803:3c00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:3c80::,2803:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3d00::,2803:3d00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
+2803:3d80::,2803:3d80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3e00::,2803:3e00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3e80::,2803:3e80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:3f00::,2803:3f00:ffff:ffff:ffff:ffff:ffff:ffff,HN
@@ -6332,6 +10764,7 @@
2803:4200::,2803:4200:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4280::,2803:4280:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4300::,2803:4300:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:4380::,2803:4380:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:4400::,2803:4400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4480::,2803:4480:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:4500::,2803:4500:ffff:ffff:ffff:ffff:ffff:ffff,CW
@@ -6346,6 +10779,7 @@
2803:4a00::,2803:4a00:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:4a80::,2803:4a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4b00::,2803:4b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:4b80::,2803:4b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4c00::,2803:4c00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:4c80::,2803:4c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4d00::,2803:4d00:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -6360,6 +10794,7 @@
2803:5200::,2803:5200:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:5280::,2803:5280:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:5300::,2803:5300:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:5380::,2803:5380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:5400::,2803:5400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5480::,2803:5480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5500::,2803:5500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6368,14 +10803,16 @@
2803:5680::,2803:5680:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:5700::,2803:5700:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:5880::,2803:5880:ffff:ffff:ffff:ffff:ffff:ffff,AR
-2803:5900::,2803:5900:ffff:ffff:ffff:ffff:ffff:ffff,GY
+2803:5900::,2803:5900:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:5980::,2803:5980:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5a00::,2803:5a00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5a80::,2803:5a80:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:5b00::,2803:5b00:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:5b80::,2803:5b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5c00::,2803:5c00:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:5c80::,2803:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:5d00::,2803:5d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
+2803:5d80::,2803:5d80:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:5e00::,2803:5e00:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:5e80::,2803:5e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5f00::,2803:5f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6386,6 +10823,7 @@
2803:6200::,2803:6200:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6280::,2803:6280:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:6300::,2803:6300:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:6380::,2803:6380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6400::,2803:6400:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:6480::,2803:6480:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:6500::,2803:6500:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -6400,9 +10838,11 @@
2803:6a00::,2803:6a00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:6a80::,2803:6a80:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:6b00::,2803:6b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:6b80::,2803:6b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6c00::,2803:6c00:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:6c80::,2803:6c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6d00::,2803:6d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:6d80::,2803:6d80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6e00::,2803:6e00:ffff:ffff:ffff:ffff:ffff:ffff,SR
2803:6e80::,2803:6e80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:6f00::,2803:6f00:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -6413,6 +10853,7 @@
2803:7200::,2803:7200:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:7280::,2803:7280:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:7300::,2803:7300:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:7380::,2803:7380:ffff:ffff:ffff:ffff:ffff:ffff,SX
2803:7400::,2803:7400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7480::,2803:7480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7500::,2803:7500:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -6430,6 +10871,7 @@
2803:7c00::,2803:7c00:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:7c80::,2803:7c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:7d00::,2803:7d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:7d80::,2803:7d80:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:7e00::,2803:7e00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7e80::,2803:7e80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7f00::,2803:7f00:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -6440,6 +10882,7 @@
2803:8200::,2803:8200:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8280::,2803:8280:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:8300::,2803:8300:ffff:ffff:ffff:ffff:ffff:ffff,EC
+2803:8380::,2803:8380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8400::,2803:8400:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8480::,2803:8480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8500::,2803:8500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6454,6 +10897,7 @@
2803:8a00::,2803:8a00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:8a80::,2803:8a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8b00::,2803:8b00:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:8b80::,2803:8b80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8c00::,2803:8c00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:8c80::,2803:8c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:8d00::,2803:8d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6468,6 +10912,7 @@
2803:9200::,2803:9200:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:9280::,2803:9280:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9300::,2803:9300:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:9380::,2803:9380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:9400::,2803:9400:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:9480::,2803:9480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9500::,2803:9500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6482,9 +10927,11 @@
2803:9a00::,2803:9a00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:9a80::,2803:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:9b00::,2803:9b00:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:9b80::,2803:9b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9c00::,2803:9c00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9c80::,2803:9c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9d00::,2803:9d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
+2803:9d80::,2803:9d80:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:9e00::,2803:9e00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9e80::,2803:9e80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:9f00::,2803:9f00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6495,6 +10942,7 @@
2803:a200::,2803:a200:ffff:ffff:ffff:ffff:ffff:ffff,SR
2803:a280::,2803:a280:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:a300::,2803:a300:ffff:ffff:ffff:ffff:ffff:ffff,BZ
+2803:a380::,2803:a380:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:a400::,2803:a400:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a480::,2803:a480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a500::,2803:a500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6509,9 +10957,11 @@
2803:aa00::,2803:aa00:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:aa80::,2803:aa80:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:ab00::,2803:ab00:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:ab80::,2803:ab80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:ac00::,2803:ac00:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ac80::,2803:ac80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:ad00::,2803:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:ad80::,2803:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:ae00::,2803:ae00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ae80::,2803:ae80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:af00::,2803:af00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6522,6 +10972,7 @@
2803:b200::,2803:b200:ffff:ffff:ffff:ffff:ffff:ffff,UY
2803:b280::,2803:b280:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b300::,2803:b300:ffff:ffff:ffff:ffff:ffff:ffff,PY
+2803:b380::,2803:b380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b400::,2803:b400:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:b480::,2803:b480:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b500::,2803:b500:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -6539,6 +10990,7 @@
2803:bc00::,2803:bc00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bc80::,2803:bc80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:bd00::,2803:bd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:bd80::,2803:bd80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:be00::,2803:be00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:be80::,2803:be80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:bf00::,2803:bf00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6549,6 +11001,7 @@
2803:c200::,2803:c200:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:c280::,2803:c280:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:c300::,2803:c300:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:c380::,2803:c380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:c400::,2803:c400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c480::,2803:c480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c500::,2803:c500:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6563,9 +11016,11 @@
2803:ca00::,2803:ca00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ca80::,2803:ca80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:cb00::,2803:cb00:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:cb80::,2803:cb80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cc00::,2803:cc00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:cc80::,2803:cc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cd00::,2803:cd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:cd80::,2803:cd80:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:ce00::,2803:ce00:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:ce80::,2803:ce80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:cf00::,2803:cf00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -6576,6 +11031,7 @@
2803:d200::,2803:d200:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:d280::,2803:d280:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:d300::,2803:d300:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:d380::,2803:d380:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d400::,2803:d400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d480::,2803:d480:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:d500::,2803:d500:ffff:ffff:ffff:ffff:ffff:ffff,BZ
@@ -6593,6 +11049,7 @@
2803:dc00::,2803:dc00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dc80::,2803:dc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:dd00::,2803:dd00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:dd80::,2803:dd80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:de00::,2803:de00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:de80::,2803:de80:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:df00::,2803:df00:ffff:ffff:ffff:ffff:ffff:ffff,SV
@@ -6603,6 +11060,7 @@
2803:e200::,2803:e200:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e280::,2803:e280:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e300::,2803:e300:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:e380::,2803:e380:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:e400::,2803:e400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e480::,2803:e480:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e500::,2803:e500:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -6617,9 +11075,11 @@
2803:ea00::,2803:ea00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ea80::,2803:ea80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:eb00::,2803:eb00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:eb80::,2803:eb80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ec00::,2803:ec00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ec80::,2803:ec80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ed00::,2803:ed00:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:ed80::,2803:ed80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ee00::,2803:ee00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ee80::,2803:ee80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ef00::,2803:ef00:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -6630,6 +11090,7 @@
2803:f200::,2803:f200:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f280::,2803:f280:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:f300::,2803:f300:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:f380::,2803:f380:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f400::,2803:f400:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:f480::,2803:f480:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:f500::,2803:f500:ffff:ffff:ffff:ffff:ffff:ffff,CW
@@ -6644,8 +11105,10 @@
2803:fa00::,2803:fa00:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:fa80::,2803:fa80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fb00::,2803:fb00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:fc00::,2803:fc00:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:fc80::,2803:fc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fd00::,2803:fd00:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:fd80::,2803:fd80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:fe00::,2803:fe00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:fe80::,2803:fe80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:ff00::,2803:ff00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -7050,7 +11513,6 @@
2804:670::,2804:670:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:674::,2804:674:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:678::,2804:678:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:67c::,2804:67c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:680::,2804:680:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:684::,2804:684:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:688::,2804:688:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -8381,15 +12843,233 @@
2804:1b78::,2804:1b78:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b7c::,2804:1b7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1b80::,2804:1b80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b84::,2804:1b84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b88::,2804:1b88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b8c::,2804:1b8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b90::,2804:1b90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b94::,2804:1b94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b98::,2804:1b98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1b9c::,2804:1b9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ba0::,2804:1ba0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ba4::,2804:1ba4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ba8::,2804:1ba8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bac::,2804:1bac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bb0::,2804:1bb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bb4::,2804:1bb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bb8::,2804:1bb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bbc::,2804:1bbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bc0::,2804:1bc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bc4::,2804:1bc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bc8::,2804:1bc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bcc::,2804:1bcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bd0::,2804:1bd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bd4::,2804:1bd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bd8::,2804:1bd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bdc::,2804:1bdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1be0::,2804:1be0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1be4::,2804:1be4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1be8::,2804:1be8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bec::,2804:1bec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bf0::,2804:1bf0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bf4::,2804:1bf4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bf8::,2804:1bf8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1bfc::,2804:1bfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c00::,2804:1c00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c04::,2804:1c04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c08::,2804:1c08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c0c::,2804:1c0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c10::,2804:1c10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c14::,2804:1c14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c18::,2804:1c18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c1c::,2804:1c1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c20::,2804:1c20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c24::,2804:1c24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c28::,2804:1c28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c2c::,2804:1c2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c30::,2804:1c30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c34::,2804:1c34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c38::,2804:1c38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c3c::,2804:1c3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c40::,2804:1c40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c44::,2804:1c44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c48::,2804:1c48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c4c::,2804:1c4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c50::,2804:1c50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c54::,2804:1c54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c58::,2804:1c58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c5c::,2804:1c5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c60::,2804:1c60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c64::,2804:1c64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c68::,2804:1c68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c6c::,2804:1c6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c70::,2804:1c70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c74::,2804:1c74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c78::,2804:1c78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c7c::,2804:1c7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c80::,2804:1c80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c84::,2804:1c84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c88::,2804:1c88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c8c::,2804:1c8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c90::,2804:1c90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c94::,2804:1c94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c98::,2804:1c98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1c9c::,2804:1c9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ca0::,2804:1ca0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ca4::,2804:1ca4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ca8::,2804:1ca8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cac::,2804:1cac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cb0::,2804:1cb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cb4::,2804:1cb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cb8::,2804:1cb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cbc::,2804:1cbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cc0::,2804:1cc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cc4::,2804:1cc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cc8::,2804:1cc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ccc::,2804:1ccc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cd0::,2804:1cd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cd4::,2804:1cd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cd8::,2804:1cd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cdc::,2804:1cdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ce0::,2804:1ce0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ce4::,2804:1ce4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ce8::,2804:1ce8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cec::,2804:1cec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cf0::,2804:1cf0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cf4::,2804:1cf4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cf8::,2804:1cf8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1cfc::,2804:1cfc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d00::,2804:1d00:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d04::,2804:1d04:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d08::,2804:1d08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d0c::,2804:1d0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d10::,2804:1d10:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d14::,2804:1d14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d18::,2804:1d18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d1c::,2804:1d1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d20::,2804:1d20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d24::,2804:1d24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d28::,2804:1d28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d2c::,2804:1d2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d30::,2804:1d30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d34::,2804:1d34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d38::,2804:1d38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d3c::,2804:1d3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d40::,2804:1d40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d44::,2804:1d44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d48::,2804:1d48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d4c::,2804:1d4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d50::,2804:1d50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d54::,2804:1d54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d58::,2804:1d58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d5c::,2804:1d5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d60::,2804:1d60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d64::,2804:1d64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d68::,2804:1d68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d6c::,2804:1d6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d70::,2804:1d70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d74::,2804:1d74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d78::,2804:1d78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d7c::,2804:1d7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d80::,2804:1d80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d84::,2804:1d84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d88::,2804:1d88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d8c::,2804:1d8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d90::,2804:1d90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d94::,2804:1d94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d98::,2804:1d98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1d9c::,2804:1d9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1da0::,2804:1da0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1da4::,2804:1da4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1da8::,2804:1da8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dac::,2804:1dac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1db0::,2804:1db0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1db4::,2804:1db4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1db8::,2804:1db8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dbc::,2804:1dbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dc0::,2804:1dc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dc4::,2804:1dc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dc8::,2804:1dc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dcc::,2804:1dcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dd0::,2804:1dd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dd4::,2804:1dd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dd8::,2804:1dd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ddc::,2804:1ddc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1de0::,2804:1de0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1de4::,2804:1de4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1de8::,2804:1de8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1dec::,2804:1dec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1df0::,2804:1df0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1df4::,2804:1df4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+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
+2804:1e14::,2804:1e14:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e18::,2804:1e18:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e1c::,2804:1e1c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e20::,2804:1e20:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e24::,2804:1e24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e28::,2804:1e28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e2c::,2804:1e2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e30::,2804:1e30:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e34::,2804:1e34:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e38::,2804:1e38:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e3c::,2804:1e3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e40::,2804:1e40:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e44::,2804:1e44:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e48::,2804:1e48:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e4c::,2804:1e4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e50::,2804:1e50:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e54::,2804:1e54:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e58::,2804:1e58:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e5c::,2804:1e5c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e60::,2804:1e60:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e64::,2804:1e64:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e68::,2804:1e68:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e6c::,2804:1e6c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e70::,2804:1e70:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e74::,2804:1e74:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e78::,2804:1e78:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e7c::,2804:1e7c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e80::,2804:1e80:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e84::,2804:1e84:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e88::,2804:1e88:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e8c::,2804:1e8c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e90::,2804:1e90:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e94::,2804:1e94:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e98::,2804:1e98:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1e9c::,2804:1e9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ea0::,2804:1ea0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ea4::,2804:1ea4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ea8::,2804:1ea8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1eac::,2804:1eac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1eb0::,2804:1eb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1eb4::,2804:1eb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1eb8::,2804:1eb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ebc::,2804:1ebc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ec0::,2804:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ec4::,2804:1ec4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ec8::,2804:1ec8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ecc::,2804:1ecc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ed0::,2804:1ed0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ed4::,2804:1ed4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1ed8::,2804:1ed8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1edc::,2804:1edc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f00::,2804:1f00:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f02::,2804:1f02:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f04::,2804:1f04:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f06::,2804:1f06:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f08::,2804:1f08:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f0a::,2804:1f0a:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f0c::,2804:1f0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f0e::,2804:1f0e:1fff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:200::,2806:200:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:210::,2806:216::ffff:ffff:ffff:ffff:ffff,MX
-2806:217::,2806:218:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:217::,2806:21b:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:220::,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
@@ -8417,7 +13097,9 @@
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:87f:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a00:800::,2a00:801:210:ffff:ffff:ffff:ffff:ffff,SE
+2a00:801:211::,2a00:801:211:ffff:ffff:ffff:ffff:ffff,NO
+2a00:801:212::,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
@@ -8481,7 +13163,6 @@
2a00:e10::,2a00:e10:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:e18::,2a00:e18:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:e20::,2a00:e20:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:e28::,2a00:e28:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:e30::,2a00:e30:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:e38::,2a00:e38:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a00:e40::,2a00:e40:ffff:ffff:ffff:ffff:ffff:ffff,BG
@@ -8793,7 +13474,7 @@
2a00:1878::,2a00:1878:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a00:1880::,2a00:1880:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:1888::,2a00:1888:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:1890::,2a00:1890:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:1890::,2a00:1897:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1898::,2a00:1898:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:18a0::,2a00:18a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:18a8::,2a00:18a8:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -8809,7 +13490,7 @@
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:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a00:1910::,2a00:1910:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:1910::,2a00:1917:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1918::,2a00:191f:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a00:1920::,2a00:1920:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1928::,2a00:1928:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -9113,7 +13794,7 @@
2a00:4a80::,2a00:4a80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:4aa0::,2a00:4aa0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:4ac0::,2a00:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:4ae0::,2a00:4ae0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:4ae0::,2a00:4ae7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:4b00::,2a00:4b00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:4b40::,2a00:4b40:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a00:4b60::,2a00:4b60:ffff:ffff:ffff:ffff:ffff:ffff,CY
@@ -9124,7 +13805,6 @@
2a00:4c00::,2a00:4c00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:4c20::,2a00:4c20:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a00:4c40::,2a00:4c40:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:4c60::,2a00:4c60:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:4c80::,2a00:4c87:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a00:4ca0::,2a00:4ca0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:4cc0::,2a00:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -9240,7 +13920,7 @@
2a00:5b40::,2a00:5b40:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:5b60::,2a00:5b60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:5b80::,2a00:5b87:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a00:5ba0::,2a00:5ba0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:5ba0::,2a00:5ba7:ffff:ffff:ffff:ffff:ffff:ffff,DE
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
@@ -9322,7 +14002,7 @@
2a00:65e0::,2a00:65e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:6600::,2a00:6600:ffff:ffff:ffff:ffff:ffff:ffff,BH
2a00:6620::,2a00:6620:ffff:ffff:ffff:ffff:ffff:ffff,GR
-2a00:6640::,2a00:6640:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a00:6640::,2a00:6647:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:6660::,2a00:6660:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a00:6680::,2a00:6680:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:66a0::,2a00:66a0:ffff:ffff:ffff:ffff:ffff:ffff,IL
@@ -9529,7 +14209,7 @@
2a00:81e0::,2a00:81e0:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a00:8200::,2a00:8200:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:8220::,2a00:8220:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a00:8240::,2a00:8240:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:8240::,2a00:8247:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:8260::,2a00:8260:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:8280::,2a00:8280:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:82a0::,2a00:82a0:ffff:ffff:ffff:ffff:ffff:ffff,BG
@@ -10001,7 +14681,14 @@
2a00:c0a0::,2a00:c0a0:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a00:c0c0::,2a00:c0c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:c0e0::,2a00:c0e0:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a00:c100::,2a00:c1ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:c100::,2a00:c100:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a00:c120::,2a00:c120:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a00:c140::,2a00:c140:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a00:c160::,2a00:c160:ffff:ffff:ffff:ffff:ffff:ffff,AL
+2a00:c180::,2a00:c180:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a00:c1a0::,2a00:c1a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:c1c0::,2a00:c1c0:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a00:c1e0::,2a00:c1e7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:c200::,2a00:c200:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:c220::,2a00:c220:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:c240::,2a00:c240:ffff:ffff:ffff:ffff:ffff:ffff,AE
@@ -10059,7 +14746,7 @@
2a00:c920::,2a00:c920:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a00:c940::,2a00:c940:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:c960::,2a00:c960:ffff:ffff:ffff:ffff:ffff:ffff,GR
-2a00:c980::,2a00:c980:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:c980::,2a00:c987:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:c9a0::,2a00:c9a0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a00:c9c0::,2a00:c9c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:c9e0::,2a00:c9e0:ffff:ffff:ffff:ffff:ffff:ffff,IQ
@@ -10073,7 +14760,6 @@
2a00:cb00::,2a00:cb00:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a00:cb20::,2a00:cb20:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:cb40::,2a00:cb40:ffff:ffff:ffff:ffff:ffff:ffff,SK
-2a00:cb60::,2a00:cb60:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:cb80::,2a00:cb80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:cba0::,2a00:cba0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cbc0::,2a00:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -10380,7 +15066,6 @@
2a00:f3a0::,2a00:f3a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:f3c0::,2a00:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:f3e0::,2a00:f3e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:f400::,2a00:f400:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a00:f420::,2a00:f420:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:f440::,2a00:f440:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:f460::,2a00:f460:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -10473,12 +15158,42 @@
2a00:ffa0::,2a00:ffa0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:ffc0::,2a00:ffc0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:ffe0::,2a00:ffe0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01::,2a01:ff:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a01::,2a01::ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:8::,2a01:8:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a01:10::,2a01:10:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a01:18::,2a01:18:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a01:20::,2a01:20:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:28::,2a01:28:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a01:30::,2a01:30:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:38::,2a01:38:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a01:40::,2a01:40:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:48::,2a01:48:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:50::,2a01:50:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:58::,2a01:58:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a01:68::,2a01:68:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:70::,2a01:70:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:78::,2a01:78:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:80::,2a01:80:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a01:88::,2a01:88:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a01:90::,2a01:90:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:98::,2a01:98:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:a0::,2a01:a0:ffff:ffff:ffff:ffff:ffff:ffff,MT
+2a01:a8::,2a01:a8:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b0::,2a01:b1:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a01:b8::,2a01:b8:ffff:ffff:ffff:ffff:ffff:ffff,VA
+2a01:c0::,2a01:c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:c8::,2a01:c8:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:d0::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a01: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
+2a01:f0::,2a01:f0:ffff:ffff:ffff:ffff:ffff:ffff,ES
+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:10::,2a01:110:10:ffff:ffff:ffff:ffff:ffff,GB
2a01:120::,2a01:120:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:130::,2a01:130:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:138::,2a01:13f:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:130::,2a01:13f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:140::,2a01:140:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:148::,2a01:148:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:150::,2a01:150:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -10496,7 +15211,7 @@
2a01:1b0::,2a01:1b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:1b8::,2a01:1b8:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a01:1c0::,2a01:1c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:1c8::,2a01:1c8:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:1c8::,2a01:1cf:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:1d0::,2a01:1d0:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a01:1d8::,2a01:1d8:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:1e0::,2a01:1e0:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -10531,6 +15246,7 @@
2a01:2d0::,2a01:2d0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:2d8::,2a01:2d8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:2e0::,2a01:2ef:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a01:300:22::,2a01:300:22:ffff:ffff:ffff:ffff:ffff,GB
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:320:ffff:ffff:ffff:ffff:ffff:ffff,MD
@@ -10538,9 +15254,11 @@
2a01:330::,2a01:330:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:338::,2a01:338:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:340::,2a01:340:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a01:348::,2a01:348:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:348::,2a01:348:6f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:348:70::,2a01:348:70:ffff:ffff:ffff:ffff:ffff,AE
+2a01:348:71::,2a01:348:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:350::,2a01:350:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a01:358::,2a01:358:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a01:358::,2a01:35f:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a01:360::,2a01:360:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:368::,2a01:36f:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a01:378::,2a01:378:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -10678,7 +15396,11 @@
2a01:7f8::,2a01:7f8: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:eff:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:e00::,2a01:e35:2e0a:ffff:ffff:ffff:ffff:ffff,FR
+2a01:e35:2e0b::,2a01:e35:2e0b:ffff:ffff:ffff:ffff:ffff,US
+2a01:e35:2e0c::,2a01:e35:8bde:ffff:ffff:ffff:ffff:ffff,FR
+2a01:e35:8bdf::,2a01:e35:8bdf:ffff:ffff:ffff:ffff:ffff,NL
+2a01:e35:8be0::,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
@@ -10724,7 +15446,6 @@
2a01:45c0::,2a01:45c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
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,GB
2a01:4640::,2a01:4640: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
@@ -10813,7 +15534,6 @@
2a01:5140::,2a01:5140:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:5160::,2a01:5160:ffff:ffff:ffff:ffff:ffff:ffff,ME
2a01:5180::,2a01:5180:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:51a0::,2a01:51a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:51c0::,2a01:51c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:5200::,2a01:5200:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a01:5220::,2a01:5220:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -10850,7 +15570,7 @@
2a01:5620::,2a01:5620:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:5640::,2a01:5640:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:5660::,2a01:5660:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a01:5680::,2a01:5680:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:5680::,2a01:5687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:56a0::,2a01:56a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:56c0::,2a01:56c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:56e0::,2a01:56e0:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -11081,7 +15801,6 @@
2a01:7400::,2a01:7400:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:7420::,2a01:7420:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7440::,2a01:7440:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a01:7460::,2a01:7460:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7480::,2a01:7480:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:74a0::,2a01:74a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:74c0::,2a01:74c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -11113,7 +15832,6 @@
2a01:7820::,2a01:7820:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7840::,2a01:7840:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7860::,2a01:7860:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a01:7880::,2a01:7880:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:78a0::,2a01:78a0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:78c0::,2a01:78c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:78e0::,2a01:78e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -11232,7 +15950,7 @@
2a01:8780::,2a01:8787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:87c0::,2a01:87c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:87e0::,2a01:87e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a01:8800::,2a01:8800:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a01:8800::,2a01:8807:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:8820::,2a01:8820:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:8840::,2a01:8840:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:8860::,2a01:8860:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -11272,7 +15990,7 @@
2a01:8ca0::,2a01:8ca0:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a01:8cc0::,2a01:8cc0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:8ce0::,2a01:8ce0:ffff:ffff:ffff:ffff:ffff:ffff,KZ
-2a01:8d00::,2a01:8d00:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a01:8d00::,2a01:8d03:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a01:8d20::,2a01:8d20:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:8d40::,2a01:8d47:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:8d80::,2a01:8d80:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -11289,7 +16007,7 @@
2a01:8f00::,2a01:8f00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:8f20::,2a01:8f20:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:8f40::,2a01:8f40:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a01:8f60::,2a01:8f60:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a01:8f60::,2a01:8f67:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:8f80::,2a01:8f80: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
@@ -11453,7 +16171,6 @@
2a01:a400::,2a01:a400:ffff:ffff:ffff:ffff:ffff:ffff,JE
2a01:a420::,2a01:a420:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a01:a440::,2a01:a440:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a01:a460::,2a01:a460:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:a4a0::,2a01:a4a0:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a01:a4c0::,2a01:a4c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:a4e0::,2a01:a4e0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -11712,7 +16429,6 @@
2a02:188::,2a02:18f:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:190::,2a02:190:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:198::,2a02:198:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a02:1a0::,2a02:1a7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:1a8::,2a02:1a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:1b8::,2a02:1b8:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:1c0::,2a02:1c0:ffff:ffff:ffff:ffff:ffff:ffff,BG
@@ -11726,7 +16442,7 @@
2a02:200::,2a02:200: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:218::,2a02:218:ffff:ffff:ffff:ffff:ffff:ffff,DE
+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
2a02:230::,2a02:230:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -11734,7 +16450,7 @@
2a02:240::,2a02:240:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:248::,2a02:248:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:250::,2a02:250:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:258::,2a02:258:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:258::,2a02:25f:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:260::,2a02:260:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:268::,2a02:268:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:270::,2a02:270:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -11798,7 +16514,7 @@
2a02:450::,2a02:450:ffff:ffff:ffff:ffff:ffff:ffff,DE
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:468:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:468::,2a02:46f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:470::,2a02:470: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
@@ -11816,7 +16532,34 @@
2a02:4e8::,2a02:4e8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:4f0::,2a02:4f0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:4f8::,2a02:4f8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:500::,2a02:5ff:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:500::,2a02:500:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a02:508::,2a02:508:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:518::,2a02:518:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:520::,2a02:520:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:530::,2a02:530:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:538::,2a02:538:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a02:540::,2a02:540:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a02:548::,2a02:548:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:550::,2a02:550:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:558::,2a02:558:ffff:ffff:ffff:ffff:ffff:ffff,HU
+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: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:590:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:598::,2a02:598:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:5a0::,2a02:5a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:5b0::,2a02:5b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:5b8::,2a02:5b8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:5c0::,2a02:5c0:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:5c8::,2a02:5c8:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:5d0::,2a02:5d0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:5d8::,2a02:5d8:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a02:5e0::,2a02:5e0:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a02:5f0::,2a02:5f0:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a02:5f8::,2a02:5f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:600::,2a02:600:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:608::,2a02:608:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:610::,2a02:610:ffff:ffff:ffff:ffff:ffff:ffff,LV
@@ -11892,7 +16635,7 @@
2a02:840::,2a02:840:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a02:848::,2a02:848:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:850::,2a02:850:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a02:858::,2a02:858:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:858::,2a02:85f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a02:860::,2a02:860:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:868::,2a02:868:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:870::,2a02:870:ffff:ffff:ffff:ffff:ffff:ffff,PT
@@ -11913,7 +16656,40 @@
2a02:8e8::,2a02:8e8:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:8f0::,2a02:8f0:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a02:8f8::,2a02:8f8:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a02:900::,2a02:a00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:900::,2a02:900:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a02:908::,2a02:908:f460:ffff:ffff:ffff:ffff:ffff,DE
+2a02:908:f461::,2a02:908:f461:ffff:ffff:ffff:ffff:ffff,CA
+2a02:908:f462::,2a02:908:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:910::,2a02:910:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:918::,2a02:918:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:920::,2a02:920:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:928::,2a02:928:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:930::,2a02:930:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:938::,2a02:93f:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:940::,2a02:940:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a02:950::,2a02:957:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a02:958::,2a02:958:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:960::,2a02:960:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:968::,2a02:968:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:970::,2a02:970:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:978::,2a02:978:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:980::,2a02:980:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a02:988::,2a02:988:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:990::,2a02:990:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:998::,2a02:998:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:9a0::,2a02:9a0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:9a8::,2a02:9a8:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:9b0::,2a02:9b0:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a02:9b8::,2a02:9b9:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:9c0::,2a02:9c0:ffff:ffff:ffff:ffff:ffff:ffff,JO
+2a02:9c8::,2a02:9c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:9d0::,2a02:9d0:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a02:9d8::,2a02:9d8:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:9e0::,2a02:9e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:9e8::,2a02:9e8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:9f0::,2a02:9f0:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a02:9f8::,2a02:9f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:a00::,2a02:a00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:a08::,2a02:a08:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a10::,2a02:a10:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a18::,2a02:a18:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -11946,13 +16722,13 @@
2a02:af0::,2a02:af0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:af8::,2a02:af8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:b00::,2a02:b00:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:b08::,2a02:b08:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:b08::,2a02:b0f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:b10::,2a02:b10:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:b18::,2a02:b18:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:b20::,2a02:b20:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:b28::,2a02:b28:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:b30::,2a02:b30:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:b48::,2a02:b48:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a02:b48::,2a02:b4f:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:b50::,2a02:b50:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:b58::,2a02:b58:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a02:b60::,2a02:b60:ffff:ffff:ffff:ffff:ffff:ffff,IQ
@@ -12097,7 +16873,21 @@
2a02:ff0::,2a02:ff0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:ff8::,2a02:ff8:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:1000::,2a02:103f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:1200::,2a02:12ff:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1200::,2a02:1205:503f:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1205:5040::,2a02:1205:5040:ffff:ffff:ffff:ffff:ffff,GB
+2a02:1205:5041::,2a02:1205:504b:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1205:504c::,2a02:1205:504c:ffff:ffff:ffff:ffff:ffff,DE
+2a02:1205:504d::,2a02:1205:c6aa:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1205:c6ab::,2a02:1205:c6ab:ffff:ffff:ffff:ffff:ffff,DE
+2a02:1205:c6ac::,2a02:120b:7fb:ffff:ffff:ffff:ffff:ffff,CH
+2a02:120b:7fc::,2a02:120b:7fc:ffff:ffff:ffff:ffff:ffff,DE
+2a02:120b:7fd::,2a02:120b:2c68:ffff:ffff:ffff:ffff:ffff,CH
+2a02:120b:2c69::,2a02:120b:2c69:ffff:ffff:ffff:ffff:ffff,DE
+2a02:120b:2c6a::,2a02:120b:c3c7:ffff:ffff:ffff:ffff:ffff,CH
+2a02:120b:c3c8::,2a02:120b:c3c8:ffff:ffff:ffff:ffff:ffff,DE
+2a02:120b:c3c9::,2a02:120b:c3e3:ffff:ffff:ffff:ffff:ffff,CH
+2a02:120b:c3e4::,2a02:120b:c3e4:ffff:ffff:ffff:ffff:ffff,DE
+2a02:120b:c3e5::,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:1310::,2a02:1310:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -12192,15 +16982,52 @@
2a02:17e8::,2a02:17e8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:17f0::,2a02:17f0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:17f8::,2a02:17f8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:1800::,2a02:18ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a02:2000::,2a02:20ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:1800::,2a02:1811:111:ffff:ffff:ffff:ffff:ffff,BE
+2a02:1811:112::,2a02:1811:112:ffff:ffff:ffff:ffff:ffff,FR
+2a02:1811:113::,2a02:1811:3101:ffff:ffff:ffff:ffff:ffff,BE
+2a02:1811:3102::,2a02:1811:3102:ffff:ffff:ffff:ffff:ffff,FR
+2a02:1811:3103::,2a02:18ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2000::,2a02:2000:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a02:2008::,2a02:2008:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:2010::,2a02:2010:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a02:2018::,2a02:2018:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2020::,2a02:2020:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a02:2028::,2a02:2028:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:2030::,2a02:2030:ffff:ffff:ffff:ffff:ffff:ffff,BA
+2a02:2038::,2a02:2038:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:2040::,2a02:2040:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:2048::,2a02:2048:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a02:2050::,2a02:2050:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:2058::,2a02:2058:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:2060::,2a02:2060:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:2068::,2a02:2068:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a02:2070::,2a02:2070:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2078::,2a02:2078:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a02:2080::,2a02:2080:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:2088::,2a02:2088:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:2090::,2a02:2090:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2098::,2a02:209f:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:20a0::,2a02:20a0:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:20a8::,2a02:20a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:20b0::,2a02:20b0: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:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:20d0::,2a02:20d0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:20d8::,2a02:20d8:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:20e0::,2a02:20e7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:20e8::,2a02:20e8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:20f0::,2a02:20f0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:20f8::,2a02:20f8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:2100::,2a02:2100:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2108::,2a02:2108:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:2110::,2a02:2110:ffff:ffff:ffff:ffff:ffff:ffff,GB
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:2140:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a02:2148::,2a02:214f:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:2148::,2a02:2149:82ff:ffff:ffff:ffff:ffff:ffff,GR
+2a02:2149:8300::,2a02:2149:8300:ffff:ffff:ffff:ffff:ffff,AF
+2a02:2149:8301::,2a02:214f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a02:2150::,2a02:2150:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:2158::,2a02:2158:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:2160::,2a02:2160:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -12333,7 +17160,6 @@
2a02:2580::,2a02:2587:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:2588::,2a02:2588:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2590::,2a02:2590:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a02:2598::,2a02:2598:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:25a0::,2a02:25a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:25a8::,2a02:25af:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:25b0::,2a02:25b0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -12373,11 +17199,47 @@
2a02:26c0::,2a02:26c0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:26c8::,2a02:26c8:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a02:26d0::,2a02:26d0:ffff:ffff:ffff:ffff:ffff:ffff,PS
-2a02:26d8::,2a02:26d8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:26e0::,2a02:26e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:26e8::,2a02:26e8:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:26f8::,2a02:26ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:2700::,2a02:27ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2700::,2a02:2700:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a02:2708::,2a02:2708:ffff:ffff:ffff:ffff:ffff:ffff,RU
+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::,2a02:2768:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2770::,2a02:2770:11:ffff:ffff:ffff:ffff:ffff,NL
+2a02:2770:12::,2a02:2770:12:ffff:ffff:ffff:ffff:ffff,RU
+2a02:2770:13::,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
+2a02:2788::,2a02:2788:143:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2788:144::,2a02:2788:144:ffff:ffff:ffff:ffff:ffff,MA
+2a02:2788:145::,2a02:2788:613:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2788:614::,2a02:2788:614:ffff:ffff:ffff:ffff:ffff,FR
+2a02:2788:615::,2a02:2788:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2790::,2a02:2790:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:2798::,2a02:2798:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:27a0::,2a02:27a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:27a8::,2a02:27a8::ffff:ffff:ffff:ffff:ffff,FR
+2a02:27a8:1::,2a02:27af:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a02:27b0::,2a02:27b0:ffff:ffff:ffff:ffff:ffff:ffff,BA
+2a02:27b8::,2a02:27b8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:27c0::,2a02:27c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a02:27c8::,2a02:27c8:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:27d0::,2a02:27d0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a02:27d8::,2a02:27d8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:27e0::,2a02:27e0:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a02:27e8::,2a02:27e8:ffff:ffff:ffff:ffff:ffff:ffff,IT
+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:2800:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2808::,2a02:2808:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2810::,2a02:2810:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -12413,8 +17275,7 @@
2a02:2900::,2a02:2900:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:2908::,2a02:2908:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a02:2910::,2a02:2910:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a02:2918::,2a02:2918:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:2920::,2a02:2920:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:2918::,2a02:2920:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2928::,2a02:2928:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:2930::,2a02:2930:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:2938::,2a02:2938:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -12482,7 +17343,7 @@
2a02:2b30::,2a02:2b30:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:2b38::,2a02:2b38:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2b40::,2a02:2b47:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a02:2b48::,2a02:2b48:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:2b48::,2a02:2b4f:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:2b50::,2a02:2b50:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:2b58::,2a02:2b58:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:2b80::,2a02:2b80:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -12511,12 +17372,18 @@
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:2fff:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a02:2f00::,2a02:2f0e:d31e:ffff:ffff:ffff:ffff:ffff,RO
+2a02:2f0e:d31f::,2a02:2f0e:d31f:ffff:ffff:ffff:ffff:ffff,HK
+2a02:2f0e:d320::,2a02:2f0f:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a02:2f80::,2a02:2f80:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a02:2fa0::,2a02:2fa0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:2fc0::,2a02:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:2fe0::,2a02:2fe0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:3000::,2a02:31ff:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:4000::,2a02:4000:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:4020::,2a02:4020:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:4040::,2a02:4040:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:4060::,2a02:4060:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:4060::,2a02:4067:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:4080::,2a02:4080:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a02:40a0::,2a02:40a0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a02:40c0::,2a02:40c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -12999,13 +17866,28 @@
2a02:7fa0::,2a02:7fa0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:7fc0::,2a02:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:7fe0::,2a02:7fe0:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a02:8000::,2a02:821f:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:8010::,2a02:8017:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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:e280:ffff:ffff:ffff:ffff:ffff,DE
+2a02:8070:e281::,2a02:8070:e281:ffff:ffff:ffff:ffff:ffff,CH
+2a02:8070:e282::,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:810b:85ff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:810b:8600::,2a02:810b:8600:ffff:ffff:ffff:ffff:ffff,GB
+2a02:810b:8601::,2a02:810b:863f:ffff:ffff:ffff:ffff:ffff,DE
+2a02:810b:8640::,2a02:810b:8640:ffff:ffff:ffff:ffff:ffff,GB
+2a02:810b:8641::,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:8380::,2a02:838f:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:8400::,2a02:847f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:8800::,2a02:88ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:9000::,2a02:91ff:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:a000::,2a02:a0ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:a000::,2a02:a03f:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:a200::,2a02:a21f:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a300::,2a02:a31f:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:a400::,2a02:a47f:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -13203,7 +18085,6 @@
2a02:e940::,2a02:e947:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a02:e980::,2a02:e987:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a02:e9c0::,2a02:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:ea00::,2a02:ea07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ea40::,2a02:ea47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:ea80::,2a02:ea87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:eac0::,2a02:eac7:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -13331,7 +18212,7 @@
2a03:4c0::,2a03:4c0:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:4e0::,2a03:4e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:500::,2a03:500:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:520::,2a03:520:ffff:ffff:ffff:ffff:ffff:ffff,NO
+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:580::,2a03:580:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -13354,7 +18235,7 @@
2a03:7a0::,2a03:7a0:ffff:ffff:ffff:ffff:ffff:ffff,ME
2a03:7c0::,2a03:7c0:ffff:ffff:ffff:ffff:ffff:ffff,PS
2a03:7e0::,2a03:7e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a03:800::,2a03:800:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:800::,2a03:807:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:820::,2a03:820:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:840::,2a03:840:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:860::,2a03:860:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -13396,7 +18277,6 @@
2a03:d20::,2a03:d20:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:d40::,2a03:d40:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:d60::,2a03:d60:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a03:d80::,2a03:d80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:da0::,2a03:da0:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a03:dc0::,2a03:dc0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:de0::,2a03:de0:ffff:ffff:ffff:ffff:ffff:ffff,BE
@@ -13528,191 +18408,360 @@
2a03:1e20::,2a03:1e20:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:1e40::,2a03:1e40:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:1e60::,2a03:1e60:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:1e80::,2a03:1e80:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:1e80::,2a03:1e87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:1ea0::,2a03:1ea0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1ec0::,2a03:1ec0:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a03:1ee0::,2a03:1ee0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1f00::,2a03:1f00:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:1f20::,2a03:1f20:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1f40::,2a03:1f40:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:1f60::,2a03:1f60:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a03:1f80::,2a03:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:1fa0::,2a03:1fa0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2000::,2a03:2000:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2020::,2a03:2020:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2040::,2a03:2040:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a03:2060::,2a03:2060:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2080::,2a03:2080:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:20a0::,2a03:20a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:20c0::,2a03:20c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:20e0::,2a03:20e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:2100::,2a03:2100:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a03:2120::,2a03:2120:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2140::,2a03:2140:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:2160::,2a03:2160:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2180::,2a03:2180:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:21a0::,2a03:21a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:21c0::,2a03:21c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:21e0::,2a03:21e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
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:2263: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
-2a03:2300::,2a03:2300:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a03:22e0::,2a03:22e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:2300::,2a03:2307:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a03:2320::,2a03:2320:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:2340::,2a03:2340:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:2360::,2a03:2360:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:2380::,2a03:2380:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:23a0::,2a03:23a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:23c0::,2a03:23c0:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a03:23e0::,2a03:23e0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:2400::,2a03:2400:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2420::,2a03:2420:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2440::,2a03:2440:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:2460::,2a03:2460:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:2480::,2a03:2480:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:24a0::,2a03:24a0:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a03:24c0::,2a03:24c0:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:24e0::,2a03:24e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2500::,2a03:2500:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2520::,2a03:2520:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:2540::,2a03:2540:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2560::,2a03:2560:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a03:2580::,2a03:2580:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:25a0::,2a03:25a0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:25c0::,2a03:25c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:25e0::,2a03:25e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2600::,2a03:2600:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a03:2620::,2a03:2620:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:2640::,2a03:2640:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:2660::,2a03:2660:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:2680::,2a03:2680:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:26a0::,2a03:26a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:26c0::,2a03:26c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:26e0::,2a03:26e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:2700::,2a03:2700:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:2720::,2a03:2720:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2740::,2a03:2740:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:2760::,2a03:2760:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a03:2780::,2a03:2780:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:27a0::,2a03:27a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:27c0::,2a03:27c0:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a03:27e0::,2a03:27e0:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a03:2800::,2a03:2800:ffff:ffff:ffff:ffff:ffff:ffff,GB
+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: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
2a03:2900::,2a03:2900:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2920::,2a03:2920:ffff:ffff:ffff:ffff:ffff:ffff,ME
2a03:2940::,2a03:2940:ffff:ffff:ffff:ffff:ffff:ffff,PS
+2a03:2960::,2a03:2960:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2980::,2a03:2980:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:29a0::,2a03:29a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:29c0::,2a03:29c0:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a03:29e0::,2a03:29e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:2a00::,2a03:2a00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2a20::,2a03:2a20:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:2a40::,2a03:2a40:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a03:2a60::,2a03:2a60:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:2a80::,2a03:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:2aa0::,2a03:2aa0:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a03:2ac0::,2a03:2ac0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2ae0::,2a03:2ae0:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a03:2b00::,2a03:2b00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:2b20::,2a03:2b20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2b40::,2a03:2b40:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:2b60::,2a03:2b60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:2b80::,2a03:2b80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:2ba0::,2a03:2ba0:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a03:2bc0::,2a03:2bc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:2be0::,2a03:2be0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:2c00::,2a03:2c00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:2c20::,2a03:2c20:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2c40::,2a03:2c40:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:2c60::,2a03:2c60:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2c80::,2a03:2c80:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2ca0::,2a03:2ca0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2cc0::,2a03:2cc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2d00::,2a03:2d00:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2d20::,2a03:2d20:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2d60::,2a03:2d60:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:2d80::,2a03:2d80:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2da0::,2a03:2da0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2dc0::,2a03:2dc0:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a03:2de0::,2a03:2de0:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:2e00::,2a03:2e00:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:2e20::,2a03:2e20:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a03:2e40::,2a03:2e40:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:2e60::,2a03:2e60:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:2ea0::,2a03:2ea0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2ec0::,2a03:2ec0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:2ee0::,2a03:2ee0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:2f00::,2a03:2f00:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a03:2f20::,2a03:2f20:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:2f40::,2a03:2f40:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a03:2f60::,2a03:2f60:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:2f80::,2a03:2f80:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:2fa0::,2a03:2fa0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2fc0::,2a03:2fc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:2fe0::,2a03:2fe0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3000::,2a03:3000:ffff:ffff:ffff:ffff:ffff:ffff,BY
+2a03:3020::,2a03:3020:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3040::,2a03:3040:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:3060::,2a03:3060:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:30a0::,2a03:30a0:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:30c0::,2a03:30c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:30e0::,2a03:30e0:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:3100::,2a03:3100:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3120::,2a03:3120:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3140::,2a03:3140:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a03:3160::,2a03:3160:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a03:3180::,2a03:3180:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a03:31a0::,2a03:31a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:31c0::,2a03:31c0:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a03:31e0::,2a03:31e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3200::,2a03:3200:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3220::,2a03:3220:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:3240::,2a03:3240:ffff:ffff:ffff:ffff:ffff:ffff,UZ
+2a03:3260::,2a03:3260:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:3280::,2a03:3280:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:32a0::,2a03:32a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:32c0::,2a03:32c0:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a03:32e0::,2a03:32e0:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a03:3300::,2a03:3300:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:3320::,2a03:3320:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a03:3340::,2a03:3340:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:3360::,2a03:3360:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:3380::,2a03:3380:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a03:33a0::,2a03:33a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:33c0::,2a03:33c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:33e0::,2a03:33e0:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:3400::,2a03:3400:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:3420::,2a03:3420:ffff:ffff:ffff:ffff:ffff:ffff,LI
2a03:3440::,2a03:3440:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a03:3460::,2a03:3460:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:3480::,2a03:3480:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:34a0::,2a03:34a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:34c0::,2a03:34c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:34e0::,2a03:34e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3500::,2a03:3500:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:3520::,2a03:3520:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:3540::,2a03:3547:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:3580::,2a03:3580:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a03:35a0::,2a03:35a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:35c0::,2a03:35c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:35e0::,2a03:35e0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:3600::,2a03:3600:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a03:3620::,2a03:3620:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:3640::,2a03:3640:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:3660::,2a03:3660:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3680::,2a03:3680:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:36a0::,2a03:36a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:36c0::,2a03:36c0:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a03:36e0::,2a03:36e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3700::,2a03:3700:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3720::,2a03:3720:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:3760::,2a03:3760:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:37a0::,2a03:37a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:37c0::,2a03:37c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:37e0::,2a03:37e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3800::,2a03:3800:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:3820::,2a03:3820:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3840::,2a03:3847:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:3880::,2a03:3880:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:38a0::,2a03:38a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:38c0::,2a03:38c0:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:38e0::,2a03:38e0:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a03:3900::,2a03:3900:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:3920::,2a03:3920:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3940::,2a03:3940:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:3960::,2a03:3960:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:3980::,2a03:3980:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a03:39c0::,2a03:39c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:39e0::,2a03:39e0:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a03:3a00::,2a03:3a00:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:3a20::,2a03:3a20:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a03:3a40::,2a03:3a40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3a80::,2a03:3a80:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3aa0::,2a03:3aa0:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:3ac0::,2a03:3ac0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:3ae0::,2a03:3ae0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3b00::,2a03:3b00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:3b20::,2a03:3b20:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a03:3b40::,2a03:3b40:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:3b60::,2a03:3b60:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:3b80::,2a03:3b80:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:3ba0::,2a03:3ba0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3bc0::,2a03:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:3be0::,2a03:3be0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3c00::,2a03:3c00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:3c20::,2a03:3c20:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:3c40::,2a03:3c40:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:3c60::,2a03:3c60:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3c80::,2a03:3c80:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:3ca0::,2a03:3ca0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:3cc0::,2a03:3cc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:3d00::,2a03:3d00:ffff:ffff:ffff:ffff:ffff:ffff,AM
+2a03:3d20::,2a03:3d20:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3d40::,2a03:3d40:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3d60::,2a03:3d60:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:3d80::,2a03:3d80:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:3da0::,2a03:3da0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:3dc0::,2a03:3dc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:3e00::,2a03:3e00:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:3de0::,2a03:3de0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:3e00::,2a03:3e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:3e40::,2a03:3e40:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3e60::,2a03:3e60:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:3e80::,2a03:3e80:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:3ea0::,2a03:3ea0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:3ec0::,2a03:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:3ee0::,2a03:3ee0:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a03:3f00::,2a03:3f00:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a03:3f20::,2a03:3f20:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:3f40::,2a03:3f40:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:3f60::,2a03:3f60:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a03:3f80::,2a03:3f80:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:3fa0::,2a03:3fa0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:3fc0::,2a03:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:3fe0::,2a03:3fe0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4000::,2a03:4000:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:4020::,2a03:4020:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4040::,2a03:4040:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:4060::,2a03:4060:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:4080::,2a03:4080:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:40a0::,2a03:40a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:40c0::,2a03:40c0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:40e0::,2a03:40e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4100::,2a03:4107:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a03:4140::,2a03:4140:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:4160::,2a03:4160:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4180::,2a03:4180:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:41a0::,2a03:41a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:41c0::,2a03:41c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:41e0::,2a03:41e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4200::,2a03:4200:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:4220::,2a03:4220:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:4240::,2a03:4240:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:4260::,2a03:4260:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:4280::,2a03:4280:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a03:42a0::,2a03:42a0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:42c0::,2a03:42c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:42e0::,2a03:42e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4300::,2a03:4307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4340::,2a03:4340:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:4360::,2a03:4360:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a03:4380::,2a03:4380:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a03:43a0::,2a03:43a0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:43c0::,2a03:43c0:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a03:43e0::,2a03:43e0:ffff:ffff:ffff:ffff:ffff:ffff,LI
2a03:4400::,2a03:4400:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:4440::,2a03:4440:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:4460::,2a03:4460:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:4480::,2a03:4480:ffff:ffff:ffff:ffff:ffff:ffff,AZ
+2a03:44a0::,2a03:44a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:44c0::,2a03:44c0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:4500::,2a03:4500:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:4520::,2a03:4520:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:4540::,2a03:4540:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:4560::,2a03:4560:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:4580::,2a03:4580:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:45a0::,2a03:45a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:45c0::,2a03:45c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a03:45e0::,2a03:45e0:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:4600::,2a03:4600:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:4620::,2a03:4620:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:4640::,2a03:4640:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:4660::,2a03:4660:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:4680::,2a03:4680:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a03:46a0::,2a03:46a0:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a03:46c0::,2a03:46c0:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:46e0::,2a03:46e0:ffff:ffff:ffff:ffff:ffff:ffff,UZ
2a03:4700::,2a03:4700:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:4720::,2a03:4720:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:4740::,2a03:4740:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:4760::,2a03:4760:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:4780::,2a03:4780:ffff:ffff:ffff:ffff:ffff:ffff,KW
+2a03:47a0::,2a03:47a0:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a03:47c0::,2a03:47c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a03:4800::,2a03:4800:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:4820::,2a03:4820:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:4840::,2a03:4847:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:4880::,2a03:4880:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:48a0::,2a03:48a0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:48c0::,2a03:48c0:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a03:48e0::,2a03:48e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4900::,2a03:4900:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:4920::,2a03:4920:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4940::,2a03:4940:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a03:4960::,2a03:4960:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:4980::,2a03:4980:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:49a0::,2a03:49a0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:49c0::,2a03:49c0:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a03:4a00::,2a03:4a00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:49e0::,2a03:49e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a03:4a20::,2a03:4a20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4a40::,2a03:4a40:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:4a60::,2a03:4a60:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a03:4a80::,2a03:4a80:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:4aa0::,2a03:4aa0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4ac0::,2a03:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a03:4ae0::,2a03:4ae0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:4b00::,2a03:4b00:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:4b20::,2a03:4b20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4b40::,2a03:4b40:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a03:4b60::,2a03:4b60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:4b80::,2a03:4b80:ffff:ffff:ffff:ffff:ffff:ffff,AL
+2a03:4ba0::,2a03:4ba0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:4bc0::,2a03:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:4be0::,2a03:4be0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:4c00::,2a03:4c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:4c40::,2a03:4c40:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a03:4c60::,2a03:4c60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4c80::,2a03:4c80:ffff:ffff:ffff:ffff:ffff:ffff,LI
+2a03:4ca0::,2a03:4ca0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a03:4cc0::,2a03:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:4ce0::,2a03:4ce0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:4d00::,2a03:4d00:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:4d20::,2a03:4d20:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:4d40::,2a03:4d40:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:4d60::,2a03:4d60:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4d80::,2a03:4d80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4dc0::,2a03:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4e00::,2a03:4e00:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -13769,9 +18818,7 @@
2a03:5b80::,2a03:5b80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:5bc0::,2a03:5bc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:5c00::,2a03:5c00:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a03:5c40::,2a03:5c40:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:5c80::,2a03:5c80:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:5cc0::,2a03:5cc0:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a03:5d00::,2a03:5d07:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:5d40::,2a03:5d40:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:5d80::,2a03:5d80:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -14100,7 +19147,6 @@
2a03:b240::,2a03:b240:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:b280::,2a03:b280:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:b300::,2a03:b300:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:b340::,2a03:b340:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:b380::,2a03:b380:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:b3c0::,2a03:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:b400::,2a03:b400:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -14200,7 +19246,6 @@
2a03:cb80::,2a03:cb80:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a03:cbc0::,2a03:cbc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:cc00::,2a03:cc00:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:cc40::,2a03:cc40:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:cc80::,2a03:cc80:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a03:ccc0::,2a03:ccc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:cd00::,2a03:cd00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14214,7 +19259,7 @@
2a03:cf40::,2a03:cf40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:cf80::,2a03:cf80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:cfc0::,2a03:cfc0:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a03:d000::,2a03:d000:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:d000::,2a03:d007:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:d040::,2a03:d040:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:d080::,2a03:d080:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:d0c0::,2a03:d0c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -14231,7 +19276,9 @@
2a03:d3c0::,2a03:d3c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:d400::,2a03:d400:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:d440::,2a03:d440:ffff:ffff:ffff:ffff:ffff:ffff,HU
-2a03:d480::,2a03:d480:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:d480::,2a03:d480::ffff:ffff:ffff:ffff:ffff,GB
+2a03:d480:1::,2a03:d480:1:ffff:ffff:ffff:ffff:ffff,IM
+2a03:d480:2::,2a03:d480:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:d4c0::,2a03:d4c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:d500::,2a03:d500:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:d540::,2a03:d540:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -14805,7 +19852,6 @@
2a04:68c0::,2a04:68c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:6900::,2a04:6907:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:6940::,2a04:6947:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a04:6980::,2a04:6987:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:69c0::,2a04:69c7:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a04:6a00::,2a04:6a07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:6a40::,2a04:6a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -15069,7 +20115,6 @@
2a04:a980::,2a04:a987:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:a9c0::,2a04:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:aa00::,2a04:aa07:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a04:aa40::,2a04:aa47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:aa80::,2a04:aa87:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:aac0::,2a04:aac7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:ab00::,2a04:ab07:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -15147,7 +20192,6 @@
2a04:be80::,2a04:be87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:bec0::,2a04:bec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:bf00::,2a04:bf07:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a04:bf40::,2a04:bf47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a04:bf80::,2a04:bf87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a04:bfc0::,2a04:bfc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:c000::,2a04:c007:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -15311,7 +20355,6 @@
2a04:e900::,2a04:e907:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:e940::,2a04:e947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:e980::,2a04:e987:ffff:ffff:ffff:ffff:ffff:ffff,IL
-2a04:e9c0::,2a04:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:ea00::,2a04:ea07:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a04:ea40::,2a04:ea47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:ea80::,2a04:ea87:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -15321,6 +20364,7 @@
2a04:eb80::,2a04:eb87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:ebc0::,2a04:ebc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ec00::,2a04:ec01:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a04:ec10::,2a04:ec11:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ec20::,2a04:ec23:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a04:ec40::,2a04:ec47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ec80::,2a04:ec87:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -15349,6 +20393,7 @@
2a04:f280::,2a04:f287:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a04:f2c0::,2a04:f2c7:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a04:f300::,2a04:f300:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a04:f310::,2a04:f311:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:f320::,2a04:f323:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:f340::,2a04:f347:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:f380::,2a04:f387:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -15383,7 +20428,6 @@
2a04:fbc0::,2a04:fbc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:fc00::,2a04:fc07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:fc40::,2a04:fc47:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2a04:fc80::,2a04:fc87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:fcc0::,2a04:fcc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:fd00::,2a04:fd07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ff40::,2a04:ff47:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -15412,6 +20456,313 @@
2a05:500::,2a05:507:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a05:540::,2a05:547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:580::,2a05:587:ffff:ffff:ffff:ffff:ffff:ffff,AE
+2a05:5c0::,2a05:5c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:600::,2a05:607:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:640::,2a05:647:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:680::,2a05:687:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:6c0::,2a05:6c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:700::,2a05:707:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a05:740::,2a05:747:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:780::,2a05:787:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:7c0::,2a05:7c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:800::,2a05:807:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:840::,2a05:843:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:860::,2a05:863:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:880::,2a05:887:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:8c0::,2a05:8c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:900::,2a05:907:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:940::,2a05:947:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:980::,2a05:987:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a05:9c0::,2a05:9c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:a00::,2a05:a07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:a40::,2a05:a47:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:a80::,2a05:a87:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:ac0::,2a05:ac7:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:b00::,2a05:b07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:b40::,2a05:b47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:b80::,2a05:b87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:bc0::,2a05:bc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:c00::,2a05:c07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a05:c40::,2a05:c47:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:c80::,2a05:c87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:cc0::,2a05:cc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:d00::,2a05:d07:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a05:d40::,2a05:d47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:d80::,2a05:d87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:dc0::,2a05:dc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:e00::,2a05:e07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:e40::,2a05:e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:e80::,2a05:e87:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:ec0::,2a05:ec7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a05:f00::,2a05:f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:f40::,2a05:f47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:f80::,2a05:f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:fc0::,2a05:fc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1000::,2a05:1007:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:1040::,2a05:1047:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1080::,2a05:1087:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:10c0::,2a05:10c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:1100::,2a05:1107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:1140::,2a05:1147:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:1180::,2a05:1187:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:11c0::,2a05:11c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1200::,2a05:1203:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:1220::,2a05:1223:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:1240::,2a05:1247:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:1280::,2a05:1287:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:12c0::,2a05:12c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:1300::,2a05:1307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1340::,2a05:1347:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:1380::,2a05:1387:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:13c0::,2a05:13c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1400::,2a05:1407:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:1440::,2a05:1447:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1480::,2a05:1487:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:14c0::,2a05:14c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:1540::,2a05:1547:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:1580::,2a05:1587:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a05:15c0::,2a05:15c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:1600::,2a05:1607:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a05:1640::,2a05:1647:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:1680::,2a05:1687:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:16c0::,2a05:16c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:1700::,2a05:1707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:1740::,2a05:1747:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1780::,2a05:1787:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:17c0::,2a05:17c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:1800::,2a05:1807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:1840::,2a05:1847:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a05:1880::,2a05:1887:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:18c0::,2a05:18c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:1900::,2a05:1907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:1940::,2a05:1947:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:1980::,2a05:1987:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a05:19c0::,2a05:19c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:1a00::,2a05:1a3f:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:1c00::,2a05:1c07:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:1c40::,2a05:1c47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:1c80::,2a05:1c87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1cc0::,2a05:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a05:1d00::,2a05:1d07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1d40::,2a05:1d43:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:1d60::,2a05:1d63:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1d80::,2a05:1d87:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:1e00::,2a05:1e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:1e40::,2a05:1e47:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:1e80::,2a05:1e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:1ec0::,2a05:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:1f00::,2a05:1f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:1f40::,2a05:1f47:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a05:1f80::,2a05:1f87:ffff:ffff:ffff:ffff:ffff:ffff,BA
+2a05:1fc0::,2a05:1fc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:2000::,2a05:2007:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:2040::,2a05:2047:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:2080::,2a05:2087:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:20c0::,2a05:20c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2100::,2a05:2107:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:2140::,2a05:2147:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a05:2180::,2a05:2187:ffff:ffff:ffff:ffff:ffff:ffff,TM
+2a05:21c0::,2a05:21c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:2200::,2a05:2207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2240::,2a05:2247:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:2280::,2a05:2287:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a05:2300::,2a05:2307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2340::,2a05:2347:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2380::,2a05:2387:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:23c0::,2a05:23c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:2400::,2a05:2407:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:2440::,2a05:2447:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:2480::,2a05:2487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:24c0::,2a05:24c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2500::,2a05:2507:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2540::,2a05:2547:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:2580::,2a05:2587:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:25c0::,2a05:25c7:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:2600::,2a05:2607:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:2640::,2a05:2647:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:2680::,2a05:2687:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:26c0::,2a05:26c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2700::,2a05:2707:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:2740::,2a05:2747:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:2780::,2a05:2787:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:27c0::,2a05:27c7:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a05:2800::,2a05:2807:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:2880::,2a05:2887:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:28c0::,2a05:28c7:ffff:ffff:ffff:ffff:ffff:ffff,PT
+2a05:2900::,2a05:2907:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2940::,2a05:2947:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:2980::,2a05:2987:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:29c0::,2a05:29c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:2a00::,2a05:2a07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2a40::,2a05:2a47:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:2a80::,2a05:2a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2ac0::,2a05:2ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:2b00::,2a05:2b07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2b40::,2a05:2b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2b80::,2a05:2b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2bc0::,2a05:2bc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2c00::,2a05:2c03:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:2c20::,2a05:2c23:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:2c40::,2a05:2c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2c80::,2a05:2c87:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a05:2cc0::,2a05:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2d00::,2a05:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2d40::,2a05:2d47:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:2d80::,2a05:2d87:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a05:2dc0::,2a05:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:2e00::,2a05:2e07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2e40::,2a05:2e47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:2e80::,2a05:2e87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2ec0::,2a05:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:2f00::,2a05:2f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:2f40::,2a05:2f47:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:2f80::,2a05:2f87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:2fc0::,2a05:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3000::,2a05:3007:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:3040::,2a05:3047:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:3080::,2a05:3087:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a05:30c0::,2a05:30c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3100::,2a05:3107:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:3140::,2a05:3147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:3180::,2a05:3187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:31c0::,2a05:31c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:3200::,2a05:3207:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:3240::,2a05:3247:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3280::,2a05:3287:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a05:32c0::,2a05:32c7:ffff:ffff:ffff:ffff:ffff:ffff,PS
+2a05:3300::,2a05:3307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:3340::,2a05:3347:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3380::,2a05:3387:ffff:ffff:ffff:ffff:ffff:ffff,YE
+2a05:33c0::,2a05:33c7:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a05:3400::,2a05:3407:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:3440::,2a05:3447:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:3480::,2a05:3487:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:34c0::,2a05:34c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:3500::,2a05:3507:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:3540::,2a05:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:3580::,2a05:3587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:35c0::,2a05:35c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:3600::,2a05:3607:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a05:3640::,2a05:3647:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:3680::,2a05:3687:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:36c0::,2a05:36c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:3700::,2a05:3707:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:3740::,2a05:3747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:3780::,2a05:3787:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:37c0::,2a05:37c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:3800::,2a05:3807:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:3840::,2a05:3847:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:3880::,2a05:3887:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:38c0::,2a05:38c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:3900::,2a05:3907:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:3940::,2a05:3941:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:3950::,2a05:3951:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:3960::,2a05:3963:ffff:ffff:ffff:ffff:ffff:ffff,NL
+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
+2a05:3b40::,2a05:3b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:3b80::,2a05:3b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:3bc0::,2a05:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3c00::,2a05:3c07:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:3c40::,2a05:3c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:3c80::,2a05:3c87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:3cc0::,2a05:3cc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:3d00::,2a05:3d07:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a05:3d40::,2a05:3d47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:3d80::,2a05:3d87:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:3dc0::,2a05:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:3e00::,2a05:3e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:3e40::,2a05:3e47:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:3e80::,2a05:3e87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:3ec0::,2a05:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:3f00::,2a05:3f07:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a05:3f40::,2a05:3f47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:3f80::,2a05:3f87:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a05:3fc0::,2a05:3fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:4000::,2a05:4007:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4040::,2a05:4047:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4080::,2a05:4087:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a05:40c0::,2a05:40c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:4100::,2a05:4107:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:4140::,2a05:4147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4180::,2a05:4187:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:41c0::,2a05:41c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:4200::,2a05:4207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4240::,2a05:4247:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:4280::,2a05:4287:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a05:42c0::,2a05:42c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:4300::,2a05:4307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4340::,2a05:4347:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4380::,2a05:4387:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:43c0::,2a05:43c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:4400::,2a05:4407:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:4440::,2a05:4447:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:4480::,2a05:4487:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:44c0::,2a05:44c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:4500::,2a05:4507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:4540::,2a05:4547:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4580::,2a05:4587:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:45c0::,2a05:45c7:ffff:ffff:ffff:ffff:ffff:ffff,UZ
+2a05:4600::,2a05:4607:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a05:4640::,2a05:4647:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:4680::,2a05:4687:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:46c0::,2a05:46c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:4700::,2a05:4707:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:4740::,2a05:4747:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:4780::,2a05:4787:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:47c0::,2a05:47c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:4800::,2a05:4807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:4840::,2a05:4847:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:4880::,2a05:4887:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:48c0::,2a05:48c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:4900::,2a05:4907:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:4940::,2a05:4947:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a05:4980::,2a05:4987:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a05:49c0::,2a05:49c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:4a00::,2a05:4a07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:4a40::,2a05:4a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4a80::,2a05:4a87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4ac0::,2a05:4ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:4b00::,2a05:4b07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a05:4b40::,2a05:4b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4b80::,2a05:4b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4bc0::,2a05:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4c00::,2a05:4c07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a05:4c40::,2a05:4c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4c80::,2a05:4c87:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a05:4cc0::,2a05:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4d00::,2a05:4d07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a05:4d40::,2a05:4d47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4d80::,2a05:4d87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:4dc0::,2a05:4dc7:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:4e00::,2a05:4e07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a05:4e40::,2a05:4e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:4e80::,2a05:4e87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4ec0::,2a05:4ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:4f00::,2a05:4f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:4f40::,2a05:4f47:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a05:4f80::,2a05:4f87:ffff:ffff:ffff:ffff:ffff:ffff,RS
+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:5080::,2a05:5087:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:50c0::,2a05:50c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a05:5100::,2a05:5107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:5140::,2a05:5147:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:5180::,2a05:5187:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:51c0::,2a05:51c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:5200::,2a05:5207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:5240::,2a05:5247:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:5280::,2a05:5283:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:52c0::,2a05:52c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:5300::,2a05:5307:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:5340::,2a05:5347:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:5380::,2a05:5387:ffff:ffff:ffff:ffff:ffff:ffff,PL
2c0e::,2c0e:fff:ffff:ffff:ffff:ffff:ffff:ffff,EG
2c0e:2000::,2c0e:200f:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f600::,2c0f:f600:ffff:ffff:ffff:ffff:ffff:ffff,GN
@@ -15453,12 +20804,26 @@
2c0f:f720::,2c0f:f720:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f728::,2c0f:f728:ffff:ffff:ffff:ffff:ffff:ffff,BW
2c0f:f730::,2c0f:f730:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:f738::,2c0f:f738:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:f740::,2c0f:f740:ffff:ffff:ffff:ffff:ffff:ffff,AO
+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
+2c0f:f768::,2c0f:f768:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:f770::,2c0f:f770:ffff:ffff:ffff:ffff:ffff:ffff,BJ
+2c0f:f778::,2c0f:f778:ffff:ffff:ffff:ffff:ffff:ffff,NA
+2c0f:f780::,2c0f:f780:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f788::,2c0f:f788:ffff:ffff:ffff:ffff:ffff:ffff,BI
+2c0f:f798::,2c0f:f798:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f7a0::,2c0f:f7a0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:f7a8::,2c0f:f7af:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f800::,2c0f:f80f:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f810::,2c0f:f810:ffff:ffff:ffff:ffff:ffff:ffff,AO
2c0f:f818::,2c0f:f818:ffff:ffff:ffff:ffff:ffff:ffff,BJ
2c0f:f820::,2c0f:f820:ffff:ffff:ffff:ffff:ffff:ffff,GH
2c0f:f828::,2c0f:f828:ffff:ffff:ffff:ffff:ffff:ffff,AO
-2c0f:f830::,2c0f:f830:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+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
@@ -15480,7 +20845,7 @@
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:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:f8f0::,2c0f:f8f0:ffff:ffff:ffff:ffff:ffff:ffff,MU
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
@@ -15535,7 +20900,6 @@
2c0f:fab0::,2c0f:fabf:ffff:ffff:ffff:ffff:ffff:ffff,TN
2c0f:fac0::,2c0f:fac0:ffff:ffff:ffff:ffff:ffff:ffff,MW
2c0f:fac8::,2c0f:fac8:ffff:ffff:ffff:ffff:ffff:ffff,BW
-2c0f:fad0::,2c0f:fad0:ffff:ffff:ffff:ffff:ffff:ffff,RW
2c0f:fad8::,2c0f:fad8:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:fae0::,2c0f:fae0:ffff:ffff:ffff:ffff:ffff:ffff,CM
2c0f:fae8::,2c0f:fae8:ffff:ffff:ffff:ffff:ffff:ffff,KE
@@ -15606,7 +20970,6 @@
2c0f:fd58::,2c0f:fd58:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:fd60::,2c0f:fd60:ffff:ffff:ffff:ffff:ffff:ffff,UG
2c0f:fd68::,2c0f:fd68:ffff:ffff:ffff:ffff:ffff:ffff,ZA
-2c0f:fd70::,2c0f:fd70:ffff:ffff:ffff:ffff:ffff:ffff,UG
2c0f:fd78::,2c0f:fd78:ffff:ffff:ffff:ffff:ffff:ffff,BI
2c0f:fd80::,2c0f:fd80:ffff:ffff:ffff:ffff:ffff:ffff,BF
2c0f:fd88::,2c0f:fd88:ffff:ffff:ffff:ffff:ffff:ffff,GH
diff --git a/src/ext/tinytest_demo.c b/src/ext/tinytest_demo.c
index 634e112cb8..c07f099791 100644
--- a/src/ext/tinytest_demo.c
+++ b/src/ext/tinytest_demo.c
@@ -74,13 +74,13 @@ test_strcmp(void *data)
values of the failing things.
Fail unless strcmp("abc, "abc") == 0 */
- tt_int_op(strcmp("abc", "abc"), ==, 0);
+ tt_int_op(strcmp("abc", "abc"), OP_EQ, 0);
/* Fail unless strcmp("abc, "abcd") is less than 0 */
- tt_int_op(strcmp("abc", "abcd"), < , 0);
+ tt_int_op(strcmp("abc", "abcd"), OP_LT, 0);
/* Incidentally, there's a test_str_op that uses strcmp internally. */
- tt_str_op("abc", <, "abcd");
+ tt_str_op("abc", OP_LT, "abcd");
/* Every test-case function needs to finish with an "end:"
@@ -153,11 +153,11 @@ test_memcpy(void *ptr)
/* Let's make sure that memcpy does what we'd like. */
strcpy(db->buffer1, "String 0");
memcpy(db->buffer2, db->buffer1, sizeof(db->buffer1));
- tt_str_op(db->buffer1, ==, db->buffer2);
+ tt_str_op(db->buffer1, OP_EQ, db->buffer2);
/* tt_mem_op() does a memcmp, as opposed to the strcmp in tt_str_op() */
db->buffer2[100] = 3; /* Make the buffers unequal */
- tt_mem_op(db->buffer1, <, db->buffer2, sizeof(db->buffer1));
+ tt_mem_op(db->buffer1, OP_LT, db->buffer2, sizeof(db->buffer1));
/* Now we've allocated memory that's referenced by a local variable.
The end block of the function will clean it up. */
@@ -165,7 +165,7 @@ test_memcpy(void *ptr)
tt_assert(mem);
/* Another rather trivial test. */
- tt_str_op(db->buffer1, !=, mem);
+ tt_str_op(db->buffer1, OP_NE, mem);
end:
/* This time our end block has something to do. */
@@ -186,9 +186,9 @@ test_timeout(void *ptr)
#endif
t2 = time(NULL);
- tt_int_op(t2-t1, >=, 4);
+ tt_int_op(t2-t1, OP_GE, 4);
- tt_int_op(t2-t1, <=, 6);
+ tt_int_op(t2-t1, OP_LE, 6);
end:
;
diff --git a/src/or/Makefile.nmake b/src/or/Makefile.nmake
index 523bf3306b..2ac98cd372 100644
--- a/src/or/Makefile.nmake
+++ b/src/or/Makefile.nmake
@@ -63,6 +63,7 @@ LIBTOR_OBJECTS = \
routerlist.obj \
routerparse.obj \
routerset.obj \
+ scheduler.obj \
statefile.obj \
status.obj \
transports.obj
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 080d8fb6c7..4cdc03bc03 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -562,8 +562,8 @@ buf_clear(buf_t *buf)
}
/** Return the number of bytes stored in <b>buf</b> */
-size_t
-buf_datalen(const buf_t *buf)
+MOCK_IMPL(size_t,
+buf_datalen, (const buf_t *buf))
{
return buf->datalen;
}
@@ -2054,8 +2054,20 @@ parse_socks(const char *data, size_t datalen, socks_request_t *req,
req->address[len] = 0;
req->port = ntohs(get_uint16(data+5+len));
*drain_out = 5+len+2;
- if (!tor_strisprint(req->address) || strchr(req->address,'\"')) {
+
+ if (string_is_valid_ipv4_address(req->address) ||
+ string_is_valid_ipv6_address(req->address)) {
+ log_unsafe_socks_warning(5,req->address,req->port,safe_socks);
+
+ if (safe_socks) {
+ socks_request_set_socks5_error(req, SOCKS5_NOT_ALLOWED);
+ return -1;
+ }
+ }
+
+ if (!string_is_valid_hostname(req->address)) {
socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
+
log_warn(LD_PROTOCOL,
"Your application (using socks5 to port %d) gave Tor "
"a malformed hostname: %s. Rejecting the connection.",
diff --git a/src/or/buffers.h b/src/or/buffers.h
index 9c2c7d0e9d..4687fbefd7 100644
--- a/src/or/buffers.h
+++ b/src/or/buffers.h
@@ -24,7 +24,7 @@ void buf_shrink(buf_t *buf);
size_t buf_shrink_freelists(int free_all);
void buf_dump_freelist_sizes(int severity);
-size_t buf_datalen(const buf_t *buf);
+MOCK_DECL(size_t, buf_datalen, (const buf_t *buf));
size_t buf_allocation(const buf_t *buf);
size_t buf_slack(const buf_t *buf);
diff --git a/src/or/channel.c b/src/or/channel.c
index 13a122662a..5ee0748802 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -13,6 +13,9 @@
#define TOR_CHANNEL_INTERNAL_
+/* This one's for stuff only channel.c and the test suite should see */
+#define CHANNEL_PRIVATE_
+
#include "or.h"
#include "channel.h"
#include "channeltls.h"
@@ -29,29 +32,7 @@
#include "rephist.h"
#include "router.h"
#include "routerlist.h"
-
-/* Cell queue structure */
-
-typedef struct cell_queue_entry_s cell_queue_entry_t;
-struct cell_queue_entry_s {
- TOR_SIMPLEQ_ENTRY(cell_queue_entry_s) next;
- enum {
- CELL_QUEUE_FIXED,
- CELL_QUEUE_VAR,
- CELL_QUEUE_PACKED
- } type;
- union {
- struct {
- cell_t *cell;
- } fixed;
- struct {
- var_cell_t *var_cell;
- } var;
- struct {
- packed_cell_t *packed_cell;
- } packed;
- } u;
-};
+#include "scheduler.h"
/* Global lists of channels */
@@ -76,6 +57,60 @@ static smartlist_t *finished_listeners = NULL;
/* Counter for ID numbers */
static uint64_t n_channels_allocated = 0;
+/*
+ * Channel global byte/cell counters, for statistics and for scheduler high
+ * /low-water marks.
+ */
+
+/*
+ * Total number of cells ever given to any channel with the
+ * channel_write_*_cell() functions.
+ */
+
+static uint64_t n_channel_cells_queued = 0;
+
+/*
+ * Total number of cells ever passed to a channel lower layer with the
+ * write_*_cell() methods.
+ */
+
+static uint64_t n_channel_cells_passed_to_lower_layer = 0;
+
+/*
+ * Current number of cells in all channel queues; should be
+ * n_channel_cells_queued - n_channel_cells_passed_to_lower_layer.
+ */
+
+static uint64_t n_channel_cells_in_queues = 0;
+
+/*
+ * Total number of bytes for all cells ever queued to a channel and
+ * counted in n_channel_cells_queued.
+ */
+
+static uint64_t n_channel_bytes_queued = 0;
+
+/*
+ * Total number of bytes for all cells ever passed to a channel lower layer
+ * and counted in n_channel_cells_passed_to_lower_layer.
+ */
+
+static uint64_t n_channel_bytes_passed_to_lower_layer = 0;
+
+/*
+ * Current number of bytes in all channel queues; should be
+ * n_channel_bytes_queued - n_channel_bytes_passed_to_lower_layer.
+ */
+
+static uint64_t n_channel_bytes_in_queues = 0;
+
+/*
+ * Current total estimated queue size *including lower layer queues and
+ * transmit overhead*
+ */
+
+STATIC uint64_t estimated_total_queue_size = 0;
+
/* Digest->channel map
*
* Similar to the one used in connection_or.c, this maps from the identity
@@ -123,6 +158,8 @@ cell_queue_entry_new_var(var_cell_t *var_cell);
static int is_destroy_cell(channel_t *chan,
const cell_queue_entry_t *q, circid_t *circid_out);
+static void channel_assert_counter_consistency(void);
+
/* Functions to maintain the digest map */
static void channel_add_to_digest_map(channel_t *chan);
static void channel_remove_from_digest_map(channel_t *chan);
@@ -140,6 +177,8 @@ channel_free_list(smartlist_t *channels, int mark_for_close);
static void
channel_listener_free_list(smartlist_t *channels, int mark_for_close);
static void channel_listener_force_free(channel_listener_t *chan_l);
+static size_t channel_get_cell_queue_entry_size(channel_t *chan,
+ cell_queue_entry_t *q);
static void
channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q);
@@ -746,6 +785,9 @@ channel_init(channel_t *chan)
/* It hasn't been open yet. */
chan->has_been_open = 0;
+
+ /* Scheduler state is idle */
+ chan->scheduler_state = SCHED_CHAN_IDLE;
}
/**
@@ -788,6 +830,9 @@ channel_free(channel_t *chan)
"Freeing channel " U64_FORMAT " at %p",
U64_PRINTF_ARG(chan->global_identifier), chan);
+ /* Get this one out of the scheduler */
+ scheduler_release_channel(chan);
+
/*
* Get rid of cmux policy before we do anything, so cmux policies don't
* see channels in weird half-freed states.
@@ -863,6 +908,9 @@ channel_force_free(channel_t *chan)
"Force-freeing channel " U64_FORMAT " at %p",
U64_PRINTF_ARG(chan->global_identifier), chan);
+ /* Get this one out of the scheduler */
+ scheduler_release_channel(chan);
+
/*
* Get rid of cmux policy before we do anything, so cmux policies don't
* see channels in weird half-freed states.
@@ -1666,6 +1714,36 @@ cell_queue_entry_new_var(var_cell_t *var_cell)
}
/**
+ * Ask how big the cell contained in a cell_queue_entry_t is
+ */
+
+static size_t
+channel_get_cell_queue_entry_size(channel_t *chan, cell_queue_entry_t *q)
+{
+ size_t rv = 0;
+
+ tor_assert(chan);
+ tor_assert(q);
+
+ switch (q->type) {
+ case CELL_QUEUE_FIXED:
+ rv = get_cell_network_size(chan->wide_circ_ids);
+ break;
+ case CELL_QUEUE_VAR:
+ rv = get_var_cell_header_size(chan->wide_circ_ids) +
+ (q->u.var.var_cell ? q->u.var.var_cell->payload_len : 0);
+ break;
+ case CELL_QUEUE_PACKED:
+ rv = get_cell_network_size(chan->wide_circ_ids);
+ break;
+ default:
+ tor_assert(1);
+ }
+
+ return rv;
+}
+
+/**
* Write to a channel based on a cell_queue_entry_t
*
* Given a cell_queue_entry_t filled out by the caller, try to send the cell
@@ -1677,6 +1755,7 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
{
int result = 0, sent = 0;
cell_queue_entry_t *tmp = NULL;
+ size_t cell_bytes;
tor_assert(chan);
tor_assert(q);
@@ -1693,6 +1772,9 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
}
}
+ /* For statistical purposes, figure out how big this cell is */
+ cell_bytes = channel_get_cell_queue_entry_size(chan, q);
+
/* Can we send it right out? If so, try */
if (TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue) &&
chan->state == CHANNEL_STATE_OPEN) {
@@ -1726,6 +1808,13 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
channel_timestamp_drained(chan);
/* Update the counter */
++(chan->n_cells_xmitted);
+ chan->n_bytes_xmitted += cell_bytes;
+ /* Update global counters */
+ ++n_channel_cells_queued;
+ ++n_channel_cells_passed_to_lower_layer;
+ n_channel_bytes_queued += cell_bytes;
+ n_channel_bytes_passed_to_lower_layer += cell_bytes;
+ channel_assert_counter_consistency();
}
}
@@ -1737,6 +1826,14 @@ channel_write_cell_queue_entry(channel_t *chan, cell_queue_entry_t *q)
*/
tmp = cell_queue_entry_dup(q);
TOR_SIMPLEQ_INSERT_TAIL(&chan->outgoing_queue, tmp, next);
+ /* Update global counters */
+ ++n_channel_cells_queued;
+ ++n_channel_cells_in_queues;
+ n_channel_bytes_queued += cell_bytes;
+ n_channel_bytes_in_queues += cell_bytes;
+ channel_assert_counter_consistency();
+ /* Update channel queue size */
+ chan->bytes_in_queue += cell_bytes;
/* Try to process the queue? */
if (chan->state == CHANNEL_STATE_OPEN) channel_flush_cells(chan);
}
@@ -1775,6 +1872,9 @@ channel_write_cell(channel_t *chan, cell_t *cell)
q.type = CELL_QUEUE_FIXED;
q.u.fixed.cell = cell;
channel_write_cell_queue_entry(chan, &q);
+
+ /* Update the queue size estimate */
+ channel_update_xmit_queue_size(chan);
}
/**
@@ -1810,6 +1910,9 @@ channel_write_packed_cell(channel_t *chan, packed_cell_t *packed_cell)
q.type = CELL_QUEUE_PACKED;
q.u.packed.packed_cell = packed_cell;
channel_write_cell_queue_entry(chan, &q);
+
+ /* Update the queue size estimate */
+ channel_update_xmit_queue_size(chan);
}
/**
@@ -1846,6 +1949,9 @@ channel_write_var_cell(channel_t *chan, var_cell_t *var_cell)
q.type = CELL_QUEUE_VAR;
q.u.var.var_cell = var_cell;
channel_write_cell_queue_entry(chan, &q);
+
+ /* Update the queue size estimate */
+ channel_update_xmit_queue_size(chan);
}
/**
@@ -1941,6 +2047,41 @@ channel_change_state(channel_t *chan, channel_state_t to_state)
}
}
+ /*
+ * If we're going to a closed/closing state, we don't need scheduling any
+ * more; in CHANNEL_STATE_MAINT we can't accept writes.
+ */
+ if (to_state == CHANNEL_STATE_CLOSING ||
+ to_state == CHANNEL_STATE_CLOSED ||
+ to_state == CHANNEL_STATE_ERROR) {
+ scheduler_release_channel(chan);
+ } else if (to_state == CHANNEL_STATE_MAINT) {
+ scheduler_channel_doesnt_want_writes(chan);
+ }
+
+ /*
+ * If we're closing, this channel no longer counts toward the global
+ * estimated queue size; if we're open, it now does.
+ */
+ if ((to_state == CHANNEL_STATE_CLOSING ||
+ to_state == CHANNEL_STATE_CLOSED ||
+ to_state == CHANNEL_STATE_ERROR) &&
+ (from_state == CHANNEL_STATE_OPEN ||
+ from_state == CHANNEL_STATE_MAINT)) {
+ estimated_total_queue_size -= chan->bytes_in_queue;
+ }
+
+ /*
+ * If we're opening, this channel now does count toward the global
+ * estimated queue size.
+ */
+ if ((to_state == CHANNEL_STATE_OPEN ||
+ to_state == CHANNEL_STATE_MAINT) &&
+ !(from_state == CHANNEL_STATE_OPEN ||
+ from_state == CHANNEL_STATE_MAINT)) {
+ estimated_total_queue_size += chan->bytes_in_queue;
+ }
+
/* Tell circuits if we opened and stuff */
if (to_state == CHANNEL_STATE_OPEN) {
channel_do_open_actions(chan);
@@ -2056,12 +2197,13 @@ channel_listener_change_state(channel_listener_t *chan_l,
#define MAX_CELLS_TO_GET_FROM_CIRCUITS_FOR_UNLIMITED 256
-ssize_t
-channel_flush_some_cells(channel_t *chan, ssize_t num_cells)
+MOCK_IMPL(ssize_t,
+channel_flush_some_cells, (channel_t *chan, ssize_t num_cells))
{
unsigned int unlimited = 0;
ssize_t flushed = 0;
int num_cells_from_circs, clamped_num_cells;
+ int q_len_before, q_len_after;
tor_assert(chan);
@@ -2087,14 +2229,45 @@ channel_flush_some_cells(channel_t *chan, ssize_t num_cells)
clamped_num_cells = (int)(num_cells - flushed);
}
}
+
+ /*
+ * Keep track of the change in queue size; we have to count cells
+ * channel_flush_from_first_active_circuit() writes out directly,
+ * but not double-count ones we might get later in
+ * channel_flush_some_cells_from_outgoing_queue()
+ */
+ q_len_before = chan_cell_queue_len(&(chan->outgoing_queue));
+
/* Try to get more cells from any active circuits */
num_cells_from_circs = channel_flush_from_first_active_circuit(
chan, clamped_num_cells);
- /* If it claims we got some, process the queue again */
+ q_len_after = chan_cell_queue_len(&(chan->outgoing_queue));
+
+ /*
+ * If it claims we got some, adjust the flushed counter and consider
+ * processing the queue again
+ */
if (num_cells_from_circs > 0) {
- flushed += channel_flush_some_cells_from_outgoing_queue(chan,
- (unlimited ? -1 : num_cells - flushed));
+ /*
+ * Adjust flushed by the number of cells counted in
+ * num_cells_from_circs that didn't go to the cell queue.
+ */
+
+ if (q_len_after > q_len_before) {
+ num_cells_from_circs -= (q_len_after - q_len_before);
+ if (num_cells_from_circs < 0) num_cells_from_circs = 0;
+ }
+
+ flushed += num_cells_from_circs;
+
+ /* Now process the queue if necessary */
+
+ if ((q_len_after > q_len_before) &&
+ (unlimited || (flushed < num_cells))) {
+ flushed += channel_flush_some_cells_from_outgoing_queue(chan,
+ (unlimited ? -1 : num_cells - flushed));
+ }
}
}
}
@@ -2117,6 +2290,8 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
unsigned int unlimited = 0;
ssize_t flushed = 0;
cell_queue_entry_t *q = NULL;
+ size_t cell_size;
+ int free_q = 0, handed_off = 0;
tor_assert(chan);
tor_assert(chan->write_cell);
@@ -2130,8 +2305,12 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
if (chan->state == CHANNEL_STATE_OPEN) {
while ((unlimited || num_cells > flushed) &&
NULL != (q = TOR_SIMPLEQ_FIRST(&chan->outgoing_queue))) {
+ free_q = 0;
+ handed_off = 0;
if (1) {
+ /* Figure out how big it is for statistical purposes */
+ cell_size = channel_get_cell_queue_entry_size(chan, q);
/*
* Okay, we have a good queue entry, try to give it to the lower
* layer.
@@ -2144,8 +2323,9 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
++flushed;
channel_timestamp_xmit(chan);
++(chan->n_cells_xmitted);
- cell_queue_entry_free(q, 1);
- q = NULL;
+ chan->n_bytes_xmitted += cell_size;
+ free_q = 1;
+ handed_off = 1;
}
/* Else couldn't write it; leave it on the queue */
} else {
@@ -2156,8 +2336,8 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
"(global ID " U64_FORMAT ").",
chan, U64_PRINTF_ARG(chan->global_identifier));
/* Throw it away */
- cell_queue_entry_free(q, 0);
- q = NULL;
+ free_q = 1;
+ handed_off = 0;
}
break;
case CELL_QUEUE_PACKED:
@@ -2167,8 +2347,9 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
++flushed;
channel_timestamp_xmit(chan);
++(chan->n_cells_xmitted);
- cell_queue_entry_free(q, 1);
- q = NULL;
+ chan->n_bytes_xmitted += cell_size;
+ free_q = 1;
+ handed_off = 1;
}
/* Else couldn't write it; leave it on the queue */
} else {
@@ -2179,8 +2360,8 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
"(global ID " U64_FORMAT ").",
chan, U64_PRINTF_ARG(chan->global_identifier));
/* Throw it away */
- cell_queue_entry_free(q, 0);
- q = NULL;
+ free_q = 1;
+ handed_off = 0;
}
break;
case CELL_QUEUE_VAR:
@@ -2190,8 +2371,9 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
++flushed;
channel_timestamp_xmit(chan);
++(chan->n_cells_xmitted);
- cell_queue_entry_free(q, 1);
- q = NULL;
+ chan->n_bytes_xmitted += cell_size;
+ free_q = 1;
+ handed_off = 1;
}
/* Else couldn't write it; leave it on the queue */
} else {
@@ -2202,8 +2384,8 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
"(global ID " U64_FORMAT ").",
chan, U64_PRINTF_ARG(chan->global_identifier));
/* Throw it away */
- cell_queue_entry_free(q, 0);
- q = NULL;
+ free_q = 1;
+ handed_off = 0;
}
break;
default:
@@ -2213,12 +2395,32 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
"(global ID " U64_FORMAT "; ignoring it."
" Someone should fix this.",
q->type, chan, U64_PRINTF_ARG(chan->global_identifier));
- cell_queue_entry_free(q, 0);
- q = NULL;
+ free_q = 1;
+ handed_off = 0;
}
- /* if q got NULLed out, we used it and should remove the queue entry */
- if (!q) TOR_SIMPLEQ_REMOVE_HEAD(&chan->outgoing_queue, next);
+ /*
+ * if free_q is set, we used it and should remove the queue entry;
+ * we have to do the free down here so TOR_SIMPLEQ_REMOVE_HEAD isn't
+ * accessing freed memory
+ */
+ if (free_q) {
+ TOR_SIMPLEQ_REMOVE_HEAD(&chan->outgoing_queue, next);
+ /*
+ * ...and we handed a cell off to the lower layer, so we should
+ * update the counters.
+ */
+ ++n_channel_cells_passed_to_lower_layer;
+ --n_channel_cells_in_queues;
+ n_channel_bytes_passed_to_lower_layer += cell_size;
+ n_channel_bytes_in_queues -= cell_size;
+ channel_assert_counter_consistency();
+ /* Update the channel's queue size too */
+ chan->bytes_in_queue -= cell_size;
+ /* Finally, free q */
+ cell_queue_entry_free(q, handed_off);
+ q = NULL;
+ }
/* No cell removed from list, so we can't go on any further */
else break;
}
@@ -2230,6 +2432,9 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
channel_timestamp_drained(chan);
}
+ /* Update the estimate queue size */
+ channel_update_xmit_queue_size(chan);
+
return flushed;
}
@@ -2541,8 +2746,9 @@ channel_queue_cell(channel_t *chan, cell_t *cell)
/* Timestamp for receiving */
channel_timestamp_recv(chan);
- /* Update the counter */
+ /* Update the counters */
++(chan->n_cells_recved);
+ chan->n_bytes_recved += get_cell_network_size(chan->wide_circ_ids);
/* If we don't need to queue we can just call cell_handler */
if (!need_to_queue) {
@@ -2596,6 +2802,8 @@ channel_queue_var_cell(channel_t *chan, var_cell_t *var_cell)
/* Update the counter */
++(chan->n_cells_recved);
+ chan->n_bytes_recved += get_var_cell_header_size(chan->wide_circ_ids) +
+ var_cell->payload_len;
/* If we don't need to queue we can just call cell_handler */
if (!need_to_queue) {
@@ -2645,6 +2853,19 @@ packed_cell_is_destroy(channel_t *chan,
return 0;
}
+/**
+ * Assert that the global channel stats counters are internally consistent
+ */
+
+static void
+channel_assert_counter_consistency(void)
+{
+ tor_assert(n_channel_cells_queued ==
+ (n_channel_cells_in_queues + n_channel_cells_passed_to_lower_layer));
+ tor_assert(n_channel_bytes_queued ==
+ (n_channel_bytes_in_queues + n_channel_bytes_passed_to_lower_layer));
+}
+
/** DOCDOC */
static int
is_destroy_cell(channel_t *chan,
@@ -2727,6 +2948,19 @@ channel_dumpstats(int severity)
{
if (all_channels && smartlist_len(all_channels) > 0) {
tor_log(severity, LD_GENERAL,
+ "Channels have queued " U64_FORMAT " bytes in " U64_FORMAT " cells, "
+ "and handed " U64_FORMAT " bytes in " U64_FORMAT " cells to the lower"
+ " layer.",
+ U64_PRINTF_ARG(n_channel_bytes_queued),
+ U64_PRINTF_ARG(n_channel_cells_queued),
+ U64_PRINTF_ARG(n_channel_bytes_passed_to_lower_layer),
+ U64_PRINTF_ARG(n_channel_cells_passed_to_lower_layer));
+ tor_log(severity, LD_GENERAL,
+ "There are currently " U64_FORMAT " bytes in " U64_FORMAT " cells "
+ "in channel queues.",
+ U64_PRINTF_ARG(n_channel_bytes_in_queues),
+ U64_PRINTF_ARG(n_channel_cells_in_queues));
+ tor_log(severity, LD_GENERAL,
"Dumping statistics about %d channels:",
smartlist_len(all_channels));
tor_log(severity, LD_GENERAL,
@@ -3200,7 +3434,7 @@ channel_listener_describe_transport(channel_listener_t *chan_l)
/**
* Return the number of entries in <b>queue</b>
*/
-static int
+STATIC int
chan_cell_queue_len(const chan_cell_queue_t *queue)
{
int r = 0;
@@ -3216,8 +3450,8 @@ chan_cell_queue_len(const chan_cell_queue_t *queue)
* Dump statistics for one channel to the log
*/
-void
-channel_dump_statistics(channel_t *chan, int severity)
+MOCK_IMPL(void,
+channel_dump_statistics, (channel_t *chan, int severity))
{
double avg, interval, age;
time_t now = time(NULL);
@@ -3369,12 +3603,22 @@ channel_dump_statistics(channel_t *chan, int severity)
/* Describe counters and rates */
tor_log(severity, LD_GENERAL,
" * Channel " U64_FORMAT " has received "
- U64_FORMAT " cells and transmitted " U64_FORMAT,
+ U64_FORMAT " bytes in " U64_FORMAT " cells and transmitted "
+ U64_FORMAT " bytes in " U64_FORMAT " cells",
U64_PRINTF_ARG(chan->global_identifier),
+ U64_PRINTF_ARG(chan->n_bytes_recved),
U64_PRINTF_ARG(chan->n_cells_recved),
+ U64_PRINTF_ARG(chan->n_bytes_xmitted),
U64_PRINTF_ARG(chan->n_cells_xmitted));
if (now > chan->timestamp_created &&
chan->timestamp_created > 0) {
+ if (chan->n_bytes_recved > 0) {
+ avg = (double)(chan->n_bytes_recved) / age;
+ tor_log(severity, LD_GENERAL,
+ " * Channel " U64_FORMAT " has averaged %f "
+ "bytes received per second",
+ U64_PRINTF_ARG(chan->global_identifier), avg);
+ }
if (chan->n_cells_recved > 0) {
avg = (double)(chan->n_cells_recved) / age;
if (avg >= 1.0) {
@@ -3390,6 +3634,13 @@ channel_dump_statistics(channel_t *chan, int severity)
U64_PRINTF_ARG(chan->global_identifier), interval);
}
}
+ if (chan->n_bytes_xmitted > 0) {
+ avg = (double)(chan->n_bytes_xmitted) / age;
+ tor_log(severity, LD_GENERAL,
+ " * Channel " U64_FORMAT " has averaged %f "
+ "bytes transmitted per second",
+ U64_PRINTF_ARG(chan->global_identifier), avg);
+ }
if (chan->n_cells_xmitted > 0) {
avg = (double)(chan->n_cells_xmitted) / age;
if (avg >= 1.0) {
@@ -3807,6 +4058,50 @@ channel_mark_outgoing(channel_t *chan)
chan->is_incoming = 0;
}
+/************************
+ * Flow control queries *
+ ***********************/
+
+/*
+ * Get the latest estimate for the total queue size of all open channels
+ */
+
+uint64_t
+channel_get_global_queue_estimate(void)
+{
+ return estimated_total_queue_size;
+}
+
+/*
+ * Estimate the number of writeable cells
+ *
+ * Ask the lower layer for an estimate of how many cells it can accept, and
+ * then subtract the length of our outgoing_queue, if any, to produce an
+ * estimate of the number of cells this channel can accept for writes.
+ */
+
+int
+channel_num_cells_writeable(channel_t *chan)
+{
+ int result;
+
+ tor_assert(chan);
+ tor_assert(chan->num_cells_writeable);
+
+ if (chan->state == CHANNEL_STATE_OPEN) {
+ /* Query lower layer */
+ result = chan->num_cells_writeable(chan);
+ /* Subtract cell queue length, if any */
+ result -= chan_cell_queue_len(&chan->outgoing_queue);
+ if (result < 0) result = 0;
+ } else {
+ /* No cells are writeable in any other state */
+ result = 0;
+ }
+
+ return result;
+}
+
/*********************
* Timestamp updates *
********************/
@@ -4209,3 +4504,87 @@ channel_set_circid_type(channel_t *chan,
}
}
+/**
+ * Update the estimated number of bytes queued to transmit for this channel,
+ * and notify the scheduler. The estimate includes both the channel queue and
+ * the queue size reported by the lower layer, and an overhead estimate
+ * optionally provided by the lower layer.
+ */
+
+void
+channel_update_xmit_queue_size(channel_t *chan)
+{
+ uint64_t queued, adj;
+ double overhead;
+
+ tor_assert(chan);
+ tor_assert(chan->num_bytes_queued);
+
+ /*
+ * First, get the number of bytes we have queued without factoring in
+ * lower-layer overhead.
+ */
+ queued = chan->num_bytes_queued(chan) + chan->bytes_in_queue;
+ /* Next, adjust by the overhead factor, if any is available */
+ if (chan->get_overhead_estimate) {
+ overhead = chan->get_overhead_estimate(chan);
+ if (overhead >= 1.0f) {
+ queued *= overhead;
+ } else {
+ /* Ignore silly overhead factors */
+ log_notice(LD_CHANNEL, "Ignoring silly overhead factor %f", overhead);
+ }
+ }
+
+ /* Now, compare to the previous estimate */
+ if (queued > chan->bytes_queued_for_xmit) {
+ adj = queued - chan->bytes_queued_for_xmit;
+ log_debug(LD_CHANNEL,
+ "Increasing queue size for channel " U64_FORMAT " by " U64_FORMAT
+ " from " U64_FORMAT " to " U64_FORMAT,
+ U64_PRINTF_ARG(chan->global_identifier),
+ U64_PRINTF_ARG(adj),
+ U64_PRINTF_ARG(chan->bytes_queued_for_xmit),
+ U64_PRINTF_ARG(queued));
+ /* Update the channel's estimate */
+ chan->bytes_queued_for_xmit = queued;
+
+ /* Update the global queue size estimate if appropriate */
+ if (chan->state == CHANNEL_STATE_OPEN ||
+ chan->state == CHANNEL_STATE_MAINT) {
+ estimated_total_queue_size += adj;
+ log_debug(LD_CHANNEL,
+ "Increasing global queue size by " U64_FORMAT " for channel "
+ U64_FORMAT ", new size is " U64_FORMAT,
+ U64_PRINTF_ARG(adj), U64_PRINTF_ARG(chan->global_identifier),
+ U64_PRINTF_ARG(estimated_total_queue_size));
+ /* Tell the scheduler we're increasing the queue size */
+ scheduler_adjust_queue_size(chan, 1, adj);
+ }
+ } else if (queued < chan->bytes_queued_for_xmit) {
+ adj = chan->bytes_queued_for_xmit - queued;
+ log_debug(LD_CHANNEL,
+ "Decreasing queue size for channel " U64_FORMAT " by " U64_FORMAT
+ " from " U64_FORMAT " to " U64_FORMAT,
+ U64_PRINTF_ARG(chan->global_identifier),
+ U64_PRINTF_ARG(adj),
+ U64_PRINTF_ARG(chan->bytes_queued_for_xmit),
+ U64_PRINTF_ARG(queued));
+ /* Update the channel's estimate */
+ chan->bytes_queued_for_xmit = queued;
+
+ /* Update the global queue size estimate if appropriate */
+ if (chan->state == CHANNEL_STATE_OPEN ||
+ chan->state == CHANNEL_STATE_MAINT) {
+ estimated_total_queue_size -= adj;
+ log_debug(LD_CHANNEL,
+ "Decreasing global queue size by " U64_FORMAT " for channel "
+ U64_FORMAT ", new size is " U64_FORMAT,
+ U64_PRINTF_ARG(adj), U64_PRINTF_ARG(chan->global_identifier),
+ U64_PRINTF_ARG(estimated_total_queue_size));
+ /* Tell the scheduler we're decreasing the queue size */
+ scheduler_adjust_queue_size(chan, -1, adj);
+ }
+ }
+}
+
diff --git a/src/or/channel.h b/src/or/channel.h
index 4cd8f4391e..5c2a1a35e2 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -57,6 +57,32 @@ struct channel_s {
CHANNEL_CLOSE_FOR_ERROR
} reason_for_closing;
+ /** State variable for use by the scheduler */
+ enum {
+ /*
+ * The channel is not open, or it has a full output buffer but no queued
+ * cells.
+ */
+ SCHED_CHAN_IDLE = 0,
+ /*
+ * The channel has space on its output buffer to write, but no queued
+ * cells.
+ */
+ SCHED_CHAN_WAITING_FOR_CELLS,
+ /*
+ * The scheduler has queued cells but no output buffer space to write.
+ */
+ SCHED_CHAN_WAITING_TO_WRITE,
+ /*
+ * The scheduler has both queued cells and output buffer space, and is
+ * eligible for the scheduler loop.
+ */
+ SCHED_CHAN_PENDING
+ } scheduler_state;
+
+ /** Heap index for use by the scheduler */
+ int sched_heap_idx;
+
/** Timestamps for both cell channels and listeners */
time_t timestamp_created; /* Channel created */
time_t timestamp_active; /* Any activity */
@@ -79,6 +105,11 @@ struct channel_s {
/* Methods implemented by the lower layer */
/**
+ * Ask the lower layer for an estimate of the average overhead for
+ * transmissions on this channel.
+ */
+ double (*get_overhead_estimate)(channel_t *);
+ /*
* Ask the underlying transport what the remote endpoint address is, in
* a tor_addr_t. This is optional and subclasses may leave this NULL.
* If they implement it, they should write the address out to the
@@ -110,7 +141,11 @@ struct channel_s {
int (*matches_extend_info)(channel_t *, extend_info_t *);
/** Check if this channel matches a target address when extending */
int (*matches_target)(channel_t *, const tor_addr_t *);
- /** Write a cell to an open channel */
+ /* Ask the lower layer how many bytes it has queued but not yet sent */
+ size_t (*num_bytes_queued)(channel_t *);
+ /* Ask the lower layer how many cells can be written */
+ int (*num_cells_writeable)(channel_t *);
+ /* Write a cell to an open channel */
int (*write_cell)(channel_t *, cell_t *);
/** Write a packed cell to an open channel */
int (*write_packed_cell)(channel_t *, packed_cell_t *);
@@ -198,8 +233,16 @@ struct channel_s {
uint64_t dirreq_id;
/** Channel counters for cell channels */
- uint64_t n_cells_recved;
- uint64_t n_cells_xmitted;
+ uint64_t n_cells_recved, n_bytes_recved;
+ uint64_t n_cells_xmitted, n_bytes_xmitted;
+
+ /** Our current contribution to the scheduler's total xmit queue */
+ uint64_t bytes_queued_for_xmit;
+
+ /** Number of bytes in this channel's cell queue; does not include
+ * lower-layer queueing.
+ */
+ uint64_t bytes_in_queue;
};
struct channel_listener_s {
@@ -311,6 +354,34 @@ void channel_set_cmux_policy_everywhere(circuitmux_policy_t *pol);
#ifdef TOR_CHANNEL_INTERNAL_
+#ifdef CHANNEL_PRIVATE_
+/* Cell queue structure (here rather than channel.c for test suite use) */
+
+typedef struct cell_queue_entry_s cell_queue_entry_t;
+struct cell_queue_entry_s {
+ TOR_SIMPLEQ_ENTRY(cell_queue_entry_s) next;
+ enum {
+ CELL_QUEUE_FIXED,
+ CELL_QUEUE_VAR,
+ CELL_QUEUE_PACKED
+ } type;
+ union {
+ struct {
+ cell_t *cell;
+ } fixed;
+ struct {
+ var_cell_t *var_cell;
+ } var;
+ struct {
+ packed_cell_t *packed_cell;
+ } packed;
+ } u;
+};
+
+/* Cell queue functions for benefit of test suite */
+STATIC int chan_cell_queue_len(const chan_cell_queue_t *queue);
+#endif
+
/* Channel operations for subclasses and internal use only */
/* Initialize a newly allocated channel - do this first in subclass
@@ -384,7 +455,8 @@ void channel_queue_var_cell(channel_t *chan, var_cell_t *var_cell);
void channel_flush_cells(channel_t *chan);
/* Request from lower layer for more cells if available */
-ssize_t channel_flush_some_cells(channel_t *chan, ssize_t num_cells);
+MOCK_DECL(ssize_t, channel_flush_some_cells,
+ (channel_t *chan, ssize_t num_cells));
/* Query if data available on this channel */
int channel_more_to_flush(channel_t *chan);
@@ -435,7 +507,7 @@ channel_t * channel_next_with_digest(channel_t *chan);
*/
const char * channel_describe_transport(channel_t *chan);
-void channel_dump_statistics(channel_t *chan, int severity);
+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);
@@ -458,6 +530,7 @@ unsigned int channel_num_circuits(channel_t *chan);
void channel_set_circid_type(channel_t *chan, crypto_pk_t *identity_rcvd,
int consider_identity);
void channel_timestamp_client(channel_t *chan);
+void channel_update_xmit_queue_size(channel_t *chan);
const char * channel_listener_describe_transport(channel_listener_t *chan_l);
void channel_listener_dump_statistics(channel_listener_t *chan_l,
@@ -465,6 +538,10 @@ void channel_listener_dump_statistics(channel_listener_t *chan_l,
void channel_listener_dump_transport_statistics(channel_listener_t *chan_l,
int severity);
+/* Flow control queries */
+uint64_t channel_get_global_queue_estimate(void);
+int channel_num_cells_writeable(channel_t *chan);
+
/* Timestamp queries */
time_t channel_when_created(channel_t *chan);
time_t channel_when_last_active(channel_t *chan);
diff --git a/src/or/channeltls.c b/src/or/channeltls.c
index db044aee56..90ad1e679f 100644
--- a/src/or/channeltls.c
+++ b/src/or/channeltls.c
@@ -25,6 +25,7 @@
#include "relay.h"
#include "router.h"
#include "routerlist.h"
+#include "scheduler.h"
/** How many CELL_PADDING cells have we received, ever? */
uint64_t stats_n_padding_cells_processed = 0;
@@ -54,6 +55,7 @@ static void channel_tls_common_init(channel_tls_t *tlschan);
static void channel_tls_close_method(channel_t *chan);
static const char * channel_tls_describe_transport_method(channel_t *chan);
static void channel_tls_free_method(channel_t *chan);
+static double channel_tls_get_overhead_estimate_method(channel_t *chan);
static int
channel_tls_get_remote_addr_method(channel_t *chan, tor_addr_t *addr_out);
static int
@@ -67,6 +69,8 @@ channel_tls_matches_extend_info_method(channel_t *chan,
extend_info_t *extend_info);
static int channel_tls_matches_target_method(channel_t *chan,
const tor_addr_t *target);
+static int channel_tls_num_cells_writeable_method(channel_t *chan);
+static size_t channel_tls_num_bytes_queued_method(channel_t *chan);
static int channel_tls_write_cell_method(channel_t *chan,
cell_t *cell);
static int channel_tls_write_packed_cell_method(channel_t *chan,
@@ -116,6 +120,7 @@ channel_tls_common_init(channel_tls_t *tlschan)
chan->close = channel_tls_close_method;
chan->describe_transport = channel_tls_describe_transport_method;
chan->free = channel_tls_free_method;
+ chan->get_overhead_estimate = channel_tls_get_overhead_estimate_method;
chan->get_remote_addr = channel_tls_get_remote_addr_method;
chan->get_remote_descr = channel_tls_get_remote_descr_method;
chan->get_transport_name = channel_tls_get_transport_name_method;
@@ -123,6 +128,8 @@ channel_tls_common_init(channel_tls_t *tlschan)
chan->is_canonical = channel_tls_is_canonical_method;
chan->matches_extend_info = channel_tls_matches_extend_info_method;
chan->matches_target = channel_tls_matches_target_method;
+ chan->num_bytes_queued = channel_tls_num_bytes_queued_method;
+ chan->num_cells_writeable = channel_tls_num_cells_writeable_method;
chan->write_cell = channel_tls_write_cell_method;
chan->write_packed_cell = channel_tls_write_packed_cell_method;
chan->write_var_cell = channel_tls_write_var_cell_method;
@@ -435,6 +442,40 @@ channel_tls_free_method(channel_t *chan)
}
/**
+ * Get an estimate of the average TLS overhead for the upper layer
+ */
+
+static double
+channel_tls_get_overhead_estimate_method(channel_t *chan)
+{
+ double overhead = 1.0f;
+ channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
+
+ tor_assert(tlschan);
+ tor_assert(tlschan->conn);
+
+ /* Just return 1.0f if we don't have sensible data */
+ if (tlschan->conn->bytes_xmitted > 0 &&
+ tlschan->conn->bytes_xmitted_by_tls >=
+ tlschan->conn->bytes_xmitted) {
+ overhead = ((double)(tlschan->conn->bytes_xmitted_by_tls)) /
+ ((double)(tlschan->conn->bytes_xmitted));
+
+ /*
+ * Never estimate more than 2.0; otherwise we get silly large estimates
+ * at the very start of a new TLS connection.
+ */
+ if (overhead > 2.0f) overhead = 2.0f;
+ }
+
+ log_debug(LD_CHANNEL,
+ "Estimated overhead ratio for TLS chan " U64_FORMAT " is %f",
+ U64_PRINTF_ARG(chan->global_identifier), overhead);
+
+ return overhead;
+}
+
+/**
* Get the remote address of a channel_tls_t
*
* This implements the get_remote_addr method for channel_tls_t; copy the
@@ -673,6 +714,53 @@ channel_tls_matches_target_method(channel_t *chan,
}
/**
+ * Tell the upper layer how many bytes we have queued and not yet
+ * sent.
+ */
+
+static size_t
+channel_tls_num_bytes_queued_method(channel_t *chan)
+{
+ channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
+
+ tor_assert(tlschan);
+ tor_assert(tlschan->conn);
+
+ return connection_get_outbuf_len(TO_CONN(tlschan->conn));
+}
+
+/**
+ * Tell the upper layer how many cells we can accept to write
+ *
+ * This implements the num_cells_writeable method for channel_tls_t; it
+ * returns an estimate of the number of cells we can accept with
+ * channel_tls_write_*_cell().
+ */
+
+static int
+channel_tls_num_cells_writeable_method(channel_t *chan)
+{
+ size_t outbuf_len;
+ ssize_t n;
+ channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
+ size_t cell_network_size;
+
+ tor_assert(tlschan);
+ tor_assert(tlschan->conn);
+
+ cell_network_size = get_cell_network_size(tlschan->conn->wide_circ_ids);
+ outbuf_len = connection_get_outbuf_len(TO_CONN(tlschan->conn));
+ /* Get the number of cells */
+ n = CEIL_DIV(OR_CONN_HIGHWATER - outbuf_len, cell_network_size);
+ if (n < 0) n = 0;
+#if SIZEOF_SIZE_T > SIZEOF_INT
+ if (n > INT_MAX) n = INT_MAX;
+#endif
+
+ return (int)n;
+}
+
+/**
* Write a cell to a channel_tls_t
*
* This implements the write_cell method for channel_tls_t; given a
@@ -867,6 +955,10 @@ channel_tls_handle_state_change_on_orconn(channel_tls_t *chan,
* CHANNEL_STATE_MAINT on this.
*/
channel_change_state(base_chan, CHANNEL_STATE_OPEN);
+ /* We might have just become writeable; check and tell the scheduler */
+ if (connection_or_num_cells_writeable(conn) > 0) {
+ scheduler_channel_wants_writes(base_chan);
+ }
} else {
/*
* Not open, so from CHANNEL_STATE_OPEN we go to CHANNEL_STATE_MAINT,
@@ -878,58 +970,6 @@ channel_tls_handle_state_change_on_orconn(channel_tls_t *chan,
}
}
-/**
- * Flush cells from a channel_tls_t
- *
- * Try to flush up to about num_cells cells, and return how many we flushed.
- */
-
-ssize_t
-channel_tls_flush_some_cells(channel_tls_t *chan, ssize_t num_cells)
-{
- ssize_t flushed = 0;
-
- tor_assert(chan);
-
- if (flushed >= num_cells) goto done;
-
- /*
- * If channel_tls_t ever buffers anything below the channel_t layer, flush
- * that first here.
- */
-
- flushed += channel_flush_some_cells(TLS_CHAN_TO_BASE(chan),
- num_cells - flushed);
-
- /*
- * If channel_tls_t ever buffers anything below the channel_t layer, check
- * how much we actually got and push it on down here.
- */
-
- done:
- return flushed;
-}
-
-/**
- * Check if a channel_tls_t has anything to flush
- *
- * Return true if there is any more to flush on this channel (cells in queue
- * or active circuits).
- */
-
-int
-channel_tls_more_to_flush(channel_tls_t *chan)
-{
- tor_assert(chan);
-
- /*
- * If channel_tls_t ever buffers anything below channel_t, the
- * check for that should go here first.
- */
-
- return channel_more_to_flush(TLS_CHAN_TO_BASE(chan));
-}
-
#ifdef KEEP_TIMING_STATS
/**
diff --git a/src/or/channeltls.h b/src/or/channeltls.h
index 06be6fa555..133ad43bb4 100644
--- a/src/or/channeltls.h
+++ b/src/or/channeltls.h
@@ -40,8 +40,6 @@ channel_t * channel_tls_to_base(channel_tls_t *tlschan);
channel_tls_t * channel_tls_from_base(channel_t *chan);
/* Things for connection_or.c to call back into */
-ssize_t channel_tls_flush_some_cells(channel_tls_t *chan, ssize_t num_cells);
-int channel_tls_more_to_flush(channel_tls_t *chan);
void channel_tls_handle_cell(cell_t *cell, or_connection_t *conn);
void channel_tls_handle_state_change_on_orconn(channel_tls_t *chan,
or_connection_t *conn,
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 44946d389c..ddb186bea4 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -14,6 +14,7 @@
#include "or.h"
#include "channel.h"
#include "circpathbias.h"
+#define CIRCUITBUILD_PRIVATE
#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuitstats.h"
@@ -943,9 +944,9 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
circuit_rep_hist_note_result(circ);
circuit_has_opened(circ); /* do other actions as necessary */
- if (!can_complete_circuit && !circ->build_state->onehop_tunnel) {
+ if (!have_completed_a_circuit() && !circ->build_state->onehop_tunnel) {
const or_options_t *options = get_options();
- can_complete_circuit=1;
+ note_that_we_completed_a_circuit();
/* FFFF Log a count of known routers here */
log_notice(LD_GENERAL,
"Tor has successfully opened a circuit. "
@@ -1033,7 +1034,8 @@ circuit_note_clock_jumped(int seconds_elapsed)
seconds_elapsed >=0 ? "forward" : "backward");
control_event_general_status(LOG_WARN, "CLOCK_JUMPED TIME=%d",
seconds_elapsed);
- can_complete_circuit=0; /* so it'll log when it works again */
+ /* so we log when it works again */
+ note_that_we_maybe_cant_complete_circuits();
control_event_client_status(severity, "CIRCUIT_NOT_ESTABLISHED REASON=%s",
"CLOCK_JUMPED");
circuit_mark_all_unused_circs();
@@ -1548,7 +1550,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
* -1 means "Don't use this router at all."
*/
the_nodes = nodelist_get_list();
- n_supported = tor_calloc(sizeof(int), smartlist_len(the_nodes));
+ n_supported = tor_calloc(smartlist_len(the_nodes), sizeof(int));
SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) {
const int i = node_sl_idx;
if (router_digest_is_me(node->identity)) {
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index d9da1e7f88..0e88b47676 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -302,8 +302,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. */
-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) {
@@ -1719,30 +1719,36 @@ circuit_mark_for_close_, (circuit_t *circ, int reason, int line,
tor_assert(circ->state == CIRCUIT_STATE_OPEN);
tor_assert(ocirc->build_state->chosen_exit);
tor_assert(ocirc->rend_data);
- /* treat this like getting a nack from it */
- log_info(LD_REND, "Failed intro circ %s to %s (awaiting ack). %s",
- safe_str_client(ocirc->rend_data->onion_address),
- safe_str_client(build_state_get_exit_nickname(ocirc->build_state)),
- timed_out ? "Recording timeout." : "Removing from descriptor.");
- rend_client_report_intro_point_failure(ocirc->build_state->chosen_exit,
- ocirc->rend_data,
- timed_out ?
- INTRO_POINT_FAILURE_TIMEOUT :
- INTRO_POINT_FAILURE_GENERIC);
+ if (orig_reason != END_CIRC_REASON_IP_NOW_REDUNDANT) {
+ /* treat this like getting a nack from it */
+ log_info(LD_REND, "Failed intro circ %s to %s (awaiting ack). %s",
+ safe_str_client(ocirc->rend_data->onion_address),
+ safe_str_client(build_state_get_exit_nickname(ocirc->build_state)),
+ timed_out ? "Recording timeout." : "Removing from descriptor.");
+ rend_client_report_intro_point_failure(ocirc->build_state->chosen_exit,
+ ocirc->rend_data,
+ timed_out ?
+ INTRO_POINT_FAILURE_TIMEOUT :
+ INTRO_POINT_FAILURE_GENERIC);
+ }
} else if (circ->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
reason != END_CIRC_REASON_TIMEOUT) {
origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
if (ocirc->build_state->chosen_exit && ocirc->rend_data) {
- log_info(LD_REND, "Failed intro circ %s to %s "
- "(building circuit to intro point). "
- "Marking intro point as possibly unreachable.",
- safe_str_client(ocirc->rend_data->onion_address),
- safe_str_client(build_state_get_exit_nickname(ocirc->build_state)));
- rend_client_report_intro_point_failure(ocirc->build_state->chosen_exit,
- ocirc->rend_data,
- INTRO_POINT_FAILURE_UNREACHABLE);
+ if (orig_reason != END_CIRC_REASON_IP_NOW_REDUNDANT) {
+ log_info(LD_REND, "Failed intro circ %s to %s "
+ "(building circuit to intro point). "
+ "Marking intro point as possibly unreachable.",
+ safe_str_client(ocirc->rend_data->onion_address),
+ safe_str_client(build_state_get_exit_nickname(
+ ocirc->build_state)));
+ rend_client_report_intro_point_failure(ocirc->build_state->chosen_exit,
+ ocirc->rend_data,
+ INTRO_POINT_FAILURE_UNREACHABLE);
+ }
}
}
+
if (circ->n_chan) {
circuit_clear_cell_queue(circ, circ->n_chan);
/* Only send destroy if the channel isn't closing anyway */
diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h
index addaa725d4..ea1076d53f 100644
--- a/src/or/circuitlist.h
+++ b/src/or/circuitlist.h
@@ -72,7 +72,8 @@ void circuit_free_all(void);
void circuits_handle_oom(size_t current_allocation);
void channel_note_destroy_pending(channel_t *chan, circid_t id);
-void channel_note_destroy_not_pending(channel_t *chan, circid_t id);
+MOCK_DECL(void, channel_note_destroy_not_pending,
+ (channel_t *chan, circid_t id));
#ifdef CIRCUITLIST_PRIVATE
STATIC void circuit_free(circuit_t *circ);
diff --git a/src/or/circuitmux.c b/src/or/circuitmux.c
index 663711c6c0..443dad0a54 100644
--- a/src/or/circuitmux.c
+++ b/src/or/circuitmux.c
@@ -621,8 +621,8 @@ circuitmux_clear_policy(circuitmux_t *cmux)
* Return the policy currently installed on a circuitmux_t
*/
-const circuitmux_policy_t *
-circuitmux_get_policy(circuitmux_t *cmux)
+MOCK_IMPL(const circuitmux_policy_t *,
+circuitmux_get_policy, (circuitmux_t *cmux))
{
tor_assert(cmux);
@@ -896,8 +896,8 @@ circuitmux_num_cells_for_circuit(circuitmux_t *cmux, circuit_t *circ)
* Query total number of available cells on a circuitmux
*/
-unsigned int
-circuitmux_num_cells(circuitmux_t *cmux)
+MOCK_IMPL(unsigned int,
+circuitmux_num_cells, (circuitmux_t *cmux))
{
tor_assert(cmux);
@@ -1951,3 +1951,51 @@ circuitmux_count_queued_destroy_cells(const channel_t *chan,
return n_destroy_cells;
}
+/**
+ * Compare cmuxes to see which is more preferred; return < 0 if
+ * cmux_1 has higher priority (i.e., cmux_1 < cmux_2 in the scheduler's
+ * sort order), > 0 if cmux_2 has higher priority, or 0 if they are
+ * equally preferred.
+ *
+ * If the cmuxes have different cmux policies or the policy does not
+ * support the cmp_cmux method, return 0.
+ */
+
+MOCK_IMPL(int,
+circuitmux_compare_muxes, (circuitmux_t *cmux_1, circuitmux_t *cmux_2))
+{
+ const circuitmux_policy_t *policy;
+
+ tor_assert(cmux_1);
+ tor_assert(cmux_2);
+
+ if (cmux_1 == cmux_2) {
+ /* Equivalent because they're the same cmux */
+ return 0;
+ }
+
+ if (cmux_1->policy && cmux_2->policy) {
+ if (cmux_1->policy == cmux_2->policy) {
+ policy = cmux_1->policy;
+
+ if (policy->cmp_cmux) {
+ /* Okay, we can compare! */
+ return policy->cmp_cmux(cmux_1, cmux_1->policy_data,
+ cmux_2, cmux_2->policy_data);
+ } else {
+ /*
+ * Equivalent because the policy doesn't know how to compare between
+ * muxes.
+ */
+ return 0;
+ }
+ } else {
+ /* Equivalent because they have different policies */
+ return 0;
+ }
+ } else {
+ /* Equivalent because one or both are missing a policy */
+ return 0;
+ }
+}
+
diff --git a/src/or/circuitmux.h b/src/or/circuitmux.h
index eade2486a2..53092cd66c 100644
--- a/src/or/circuitmux.h
+++ b/src/or/circuitmux.h
@@ -57,6 +57,9 @@ struct circuitmux_policy_s {
/* Choose a circuit */
circuit_t * (*pick_active_circuit)(circuitmux_t *cmux,
circuitmux_policy_data_t *pol_data);
+ /* Optional: channel comparator for use by the scheduler */
+ int (*cmp_cmux)(circuitmux_t *cmux_1, circuitmux_policy_data_t *pol_data_1,
+ circuitmux_t *cmux_2, circuitmux_policy_data_t *pol_data_2);
};
/*
@@ -105,7 +108,8 @@ void circuitmux_free(circuitmux_t *cmux);
/* Policy control */
void circuitmux_clear_policy(circuitmux_t *cmux);
-const circuitmux_policy_t * circuitmux_get_policy(circuitmux_t *cmux);
+MOCK_DECL(const circuitmux_policy_t *,
+ circuitmux_get_policy, (circuitmux_t *cmux));
void circuitmux_set_policy(circuitmux_t *cmux,
const circuitmux_policy_t *pol);
@@ -117,7 +121,7 @@ int circuitmux_is_circuit_attached(circuitmux_t *cmux, circuit_t *circ);
int circuitmux_is_circuit_active(circuitmux_t *cmux, circuit_t *circ);
unsigned int circuitmux_num_cells_for_circuit(circuitmux_t *cmux,
circuit_t *circ);
-unsigned int circuitmux_num_cells(circuitmux_t *cmux);
+MOCK_DECL(unsigned int, circuitmux_num_cells, (circuitmux_t *cmux));
unsigned int circuitmux_num_circuits(circuitmux_t *cmux);
unsigned int circuitmux_num_active_circuits(circuitmux_t *cmux);
@@ -148,5 +152,9 @@ void circuitmux_append_destroy_cell(channel_t *chan,
void circuitmux_mark_destroyed_circids_usable(circuitmux_t *cmux,
channel_t *chan);
+/* Optional interchannel comparisons for scheduling */
+MOCK_DECL(int, circuitmux_compare_muxes,
+ (circuitmux_t *cmux_1, circuitmux_t *cmux_2));
+
#endif /* TOR_CIRCUITMUX_H */
diff --git a/src/or/circuitmux_ewma.c b/src/or/circuitmux_ewma.c
index 49d899e5e7..0d7d6ef197 100644
--- a/src/or/circuitmux_ewma.c
+++ b/src/or/circuitmux_ewma.c
@@ -187,6 +187,9 @@ ewma_notify_xmit_cells(circuitmux_t *cmux,
static circuit_t *
ewma_pick_active_circuit(circuitmux_t *cmux,
circuitmux_policy_data_t *pol_data);
+static int
+ewma_cmp_cmux(circuitmux_t *cmux_1, circuitmux_policy_data_t *pol_data_1,
+ circuitmux_t *cmux_2, circuitmux_policy_data_t *pol_data_2);
/*** EWMA global variables ***/
@@ -209,7 +212,8 @@ circuitmux_policy_t ewma_policy = {
/*.notify_circ_inactive =*/ ewma_notify_circ_inactive,
/*.notify_set_n_cells =*/ NULL, /* EWMA doesn't need this */
/*.notify_xmit_cells =*/ ewma_notify_xmit_cells,
- /*.pick_active_circuit =*/ ewma_pick_active_circuit
+ /*.pick_active_circuit =*/ ewma_pick_active_circuit,
+ /*.cmp_cmux =*/ ewma_cmp_cmux
};
/*** EWMA method implementations using the below EWMA helper functions ***/
@@ -453,6 +457,58 @@ ewma_pick_active_circuit(circuitmux_t *cmux,
return circ;
}
+/**
+ * Compare two EWMA cmuxes, and return -1, 0 or 1 to indicate which should
+ * be more preferred - see circuitmux_compare_muxes() of circuitmux.c.
+ */
+
+static int
+ewma_cmp_cmux(circuitmux_t *cmux_1, circuitmux_policy_data_t *pol_data_1,
+ circuitmux_t *cmux_2, circuitmux_policy_data_t *pol_data_2)
+{
+ ewma_policy_data_t *p1 = NULL, *p2 = NULL;
+ cell_ewma_t *ce1 = NULL, *ce2 = NULL;
+
+ tor_assert(cmux_1);
+ tor_assert(pol_data_1);
+ tor_assert(cmux_2);
+ tor_assert(pol_data_2);
+
+ p1 = TO_EWMA_POL_DATA(pol_data_1);
+ p2 = TO_EWMA_POL_DATA(pol_data_1);
+
+ if (p1 != p2) {
+ /* Get the head cell_ewma_t from each queue */
+ if (smartlist_len(p1->active_circuit_pqueue) > 0) {
+ ce1 = smartlist_get(p1->active_circuit_pqueue, 0);
+ }
+
+ if (smartlist_len(p2->active_circuit_pqueue) > 0) {
+ ce2 = smartlist_get(p2->active_circuit_pqueue, 0);
+ }
+
+ /* Got both of them? */
+ if (ce1 != NULL && ce2 != NULL) {
+ /* Pick whichever one has the better best circuit */
+ return compare_cell_ewma_counts(ce1, ce2);
+ } else {
+ if (ce1 != NULL ) {
+ /* We only have a circuit on cmux_1, so prefer it */
+ return -1;
+ } else if (ce2 != NULL) {
+ /* We only have a circuit on cmux_2, so prefer it */
+ return 1;
+ } else {
+ /* No circuits at all; no preference */
+ return 0;
+ }
+ }
+ } else {
+ /* We got identical params */
+ return 0;
+ }
+}
+
/** Helper for sorting cell_ewma_t values in their priority queue. */
static int
compare_cell_ewma_counts(const void *p1, const void *p2)
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index 956c969db6..a136278e58 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -404,7 +404,7 @@ circuit_build_times_new_consensus_params(circuit_build_times_t *cbt,
* distress anyway, so memory correctness here is paramount over
* doing acrobatics to preserve the array.
*/
- recent_circs = tor_calloc(sizeof(int8_t), num);
+ recent_circs = tor_calloc(num, sizeof(int8_t));
if (cbt->liveness.timeouts_after_firsthop &&
cbt->liveness.num_recent_circs > 0) {
memcpy(recent_circs, cbt->liveness.timeouts_after_firsthop,
@@ -508,7 +508,7 @@ circuit_build_times_init(circuit_build_times_t *cbt)
cbt->liveness.num_recent_circs =
circuit_build_times_recent_circuit_count(NULL);
cbt->liveness.timeouts_after_firsthop =
- tor_calloc(sizeof(int8_t), cbt->liveness.num_recent_circs);
+ tor_calloc(cbt->liveness.num_recent_circs, sizeof(int8_t));
} else {
cbt->liveness.num_recent_circs = 0;
cbt->liveness.timeouts_after_firsthop = NULL;
@@ -873,7 +873,7 @@ circuit_build_times_parse_state(circuit_build_times_t *cbt,
}
/* build_time_t 0 means uninitialized */
- loaded_times = tor_calloc(sizeof(build_time_t), state->TotalBuildTimes);
+ loaded_times = tor_calloc(state->TotalBuildTimes, sizeof(build_time_t));
for (line = state->BuildtimeHistogram; line; line = line->next) {
smartlist_t *args = smartlist_new();
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 441a8fcbb5..ad4a3a546d 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -200,7 +200,7 @@ circuit_is_better(const origin_circuit_t *oa, const origin_circuit_t *ob,
return 1;
} else {
if (a->timestamp_dirty ||
- timercmp(&a->timestamp_began, &b->timestamp_began, >))
+ timercmp(&a->timestamp_began, &b->timestamp_began, OP_GT))
return 1;
if (ob->build_state->is_internal)
/* XXX023 what the heck is this internal thing doing here. I
@@ -514,7 +514,7 @@ circuit_expire_building(void)
if (TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out)
cutoff = hs_extremely_old_cutoff;
- if (timercmp(&victim->timestamp_began, &cutoff, >))
+ if (timercmp(&victim->timestamp_began, &cutoff, OP_GT))
continue; /* it's still young, leave it alone */
/* We need to double-check the opened state here because
@@ -524,7 +524,7 @@ circuit_expire_building(void)
* aren't either. */
if (!any_opened_circs && victim->state != CIRCUIT_STATE_OPEN) {
/* It's still young enough that we wouldn't close it, right? */
- if (timercmp(&victim->timestamp_began, &close_cutoff, >)) {
+ if (timercmp(&victim->timestamp_began, &close_cutoff, OP_GT)) {
if (!TO_ORIGIN_CIRCUIT(victim)->relaxed_timeout) {
int first_hop_succeeded = TO_ORIGIN_CIRCUIT(victim)->cpath->state
== CPATH_STATE_OPEN;
@@ -672,7 +672,7 @@ circuit_expire_building(void)
* it off at, we probably had a suspend event along this codepath,
* and we should discard the value.
*/
- if (timercmp(&victim->timestamp_began, &extremely_old_cutoff, <)) {
+ if (timercmp(&victim->timestamp_began, &extremely_old_cutoff, OP_LT)) {
log_notice(LD_CIRC,
"Extremely large value for circuit build timeout: %lds. "
"Assuming clock jump. Purpose %d (%s)",
@@ -1255,7 +1255,7 @@ circuit_expire_old_circuits_clientside(void)
if (circ->purpose != CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) {
- if (timercmp(&circ->timestamp_began, &cutoff, <)) {
+ if (timercmp(&circ->timestamp_began, &cutoff, OP_LT)) {
if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL ||
circ->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT ||
circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO ||
@@ -2324,7 +2324,7 @@ connection_ap_handshake_attach_circuit(entry_connection_t *conn)
tor_assert(rendcirc);
/* one is already established, attach */
log_info(LD_REND,
- "rend joined circ %d already here. attaching. "
+ "rend joined circ %u already here. attaching. "
"(stream %d sec old)",
(unsigned)rendcirc->base_.n_circ_id, conn_age);
/* Mark rendezvous circuits as 'newly dirty' every time you use
diff --git a/src/or/config.c b/src/or/config.c
index 3e7a73f612..a413aa4a40 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -43,6 +43,7 @@
#include "util.h"
#include "routerlist.h"
#include "routerset.h"
+#include "scheduler.h"
#include "statefile.h"
#include "transports.h"
#include "ext_orport.h"
@@ -262,6 +263,7 @@ static config_var_t option_vars_[] = {
V(HashedControlPassword, LINELIST, NULL),
V(HidServDirectoryV2, BOOL, "1"),
VAR("HiddenServiceDir", LINELIST_S, RendConfigLines, NULL),
+ VAR("HiddenServiceDirGroupReadable", LINELIST_S, RendConfigLines, NULL),
VAR("HiddenServiceOptions",LINELIST_V, RendConfigLines, NULL),
VAR("HiddenServicePort", LINELIST_S, RendConfigLines, NULL),
VAR("HiddenServiceVersion",LINELIST_S, RendConfigLines, NULL),
@@ -367,6 +369,9 @@ static config_var_t option_vars_[] = {
V(ServerDNSSearchDomains, BOOL, "0"),
V(ServerDNSTestAddresses, CSV,
"www.google.com,www.mit.edu,www.yahoo.com,www.slashdot.org"),
+ V(SchedulerLowWaterMark__, MEMUNIT, "100 MB"),
+ V(SchedulerHighWaterMark__, MEMUNIT, "101 MB"),
+ V(SchedulerMaxFlushCells__, UINT, "1000"),
V(ShutdownWaitLength, INTERVAL, "30 seconds"),
V(SocksListenAddress, LINELIST, NULL),
V(SocksPolicy, LINELIST, NULL),
@@ -376,7 +381,7 @@ static config_var_t option_vars_[] = {
OBSOLETE("StrictEntryNodes"),
OBSOLETE("StrictExitNodes"),
V(StrictNodes, BOOL, "0"),
- V(Support022HiddenServices, AUTOBOOL, "auto"),
+ OBSOLETE("Support022HiddenServices"),
V(TestSocks, BOOL, "0"),
V(TokenBucketRefillInterval, MSEC_INTERVAL, "100 msec"),
V(Tor2webMode, BOOL, "0"),
@@ -510,12 +515,6 @@ static int options_transition_affects_workers(
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 parse_client_transport_line(const or_options_t *options,
- const char *line, int validate_only);
-
-static int parse_server_transport_line(const or_options_t *options,
- const char *line, int validate_only);
static char *get_bindaddr_from_transport_listen_line(const char *line,
const char *transport);
static int parse_dir_authority_line(const char *line,
@@ -829,22 +828,22 @@ add_default_trusted_dir_authorities(dirinfo_type_t type)
"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 "
+ "tor26 orport=443 "
+ "v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
"86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
- "dizum orport=443 v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
+ "dizum orport=443 "
+ "v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
"194.109.206.212:80 7EA6 EAD6 FD83 083C 538F 4403 8BBF A077 587D D755",
- "Tonga orport=443 bridge 82.94.251.203:80 "
- "4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
- "turtles orport=9090 "
- "v3ident=27B6B5996C426270A5C95488AA5BCEB6BCC86956 "
- "76.73.17.194:9030 F397 038A DC51 3361 35E7 B80B D99C A384 4360 292B",
+ "Tonga orport=443 bridge "
+ "82.94.251.203:80 4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
"gabelmoo orport=443 "
"v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
"131.188.40.189:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
"dannenberg orport=443 "
"v3ident=585769C78764D58426B8B52B6651A5A71137189A "
"193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
- "urras orport=80 v3ident=80550987E1D626E3EBA5E5E75A458DE0626D088C "
+ "urras orport=80 "
+ "v3ident=80550987E1D626E3EBA5E5E75A458DE0626D088C "
"208.83.223.34:443 0AD3 FA88 4D18 F89E EA2D 89C0 1937 9E0E 7FD9 4417",
"maatuska orport=80 "
"v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
@@ -852,6 +851,9 @@ add_default_trusted_dir_authorities(dirinfo_type_t type)
"Faravahar orport=443 "
"v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
"154.35.32.5:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
+ "longclaw orport=443 "
+ "v3ident=23D15D965BC35114467363C165C4F724B64B4F66 "
+ "199.254.238.52:80 74A9 1064 6BCE EFBC D2E8 74FC 1DC9 9743 0F96 8145",
NULL
};
for (i=0; authorities[i]; i++) {
@@ -1047,6 +1049,14 @@ options_act_reversible(const or_options_t *old_options, char **msg)
if (running_tor && !libevent_initialized) {
init_libevent(options);
libevent_initialized = 1;
+
+ /*
+ * Initialize the scheduler - this has to come after
+ * options_init_from_torrc() sets up libevent - why yes, that seems
+ * completely sensible to hide the libevent setup in the option parsing
+ * code! It also needs to happen before init_keys(), so it needs to
+ * happen here too. How yucky. */
+ scheduler_init();
}
/* Adjust the port configuration so we can launch listeners. */
@@ -1076,6 +1086,8 @@ options_act_reversible(const or_options_t *old_options, char **msg)
"non-control network connections. Shutting down all existing "
"connections.");
connection_mark_all_noncontrol_connections();
+ /* We can't complete circuits until the network is re-enabled. */
+ note_that_we_maybe_cant_complete_circuits();
}
}
@@ -1413,7 +1425,7 @@ options_act(const or_options_t *old_options)
if (!options->DisableNetwork) {
if (options->ClientTransportPlugin) {
for (cl = options->ClientTransportPlugin; cl; cl = cl->next) {
- if (parse_client_transport_line(options, cl->value, 0)<0) {
+ if (parse_transport_line(options, cl->value, 0, 0) < 0) {
log_warn(LD_BUG,
"Previously validated ClientTransportPlugin line "
"could not be added!");
@@ -1424,7 +1436,7 @@ options_act(const or_options_t *old_options)
if (options->ServerTransportPlugin && server_mode(options)) {
for (cl = options->ServerTransportPlugin; cl; cl = cl->next) {
- if (parse_server_transport_line(options, cl->value, 0)<0) {
+ if (parse_transport_line(options, cl->value, 0, 1) < 0) {
log_warn(LD_BUG,
"Previously validated ServerTransportPlugin line "
"could not be added!");
@@ -1526,6 +1538,12 @@ options_act(const or_options_t *old_options)
return -1;
}
+ /* Set up scheduler thresholds */
+ scheduler_set_watermarks((uint32_t)options->SchedulerLowWaterMark__,
+ (uint32_t)options->SchedulerHighWaterMark__,
+ (options->SchedulerMaxFlushCells__ > 0) ?
+ options->SchedulerMaxFlushCells__ : 1000);
+
/* Set up accounting */
if (accounting_parse_options(options, 0)<0) {
log_warn(LD_CONFIG,"Error in accounting options");
@@ -1673,7 +1691,7 @@ options_act(const or_options_t *old_options)
if (server_mode(options) && !server_mode(old_options)) {
ip_address_changed(0);
- if (can_complete_circuit || !any_predicted_circuits(time(NULL)))
+ if (have_completed_a_circuit() || !any_predicted_circuits(time(NULL)))
inform_testing_reachability();
}
cpuworkers_rotate();
@@ -2269,8 +2287,8 @@ resolve_my_address(int warn_severity, const or_options_t *options,
/** Return true iff <b>addr</b> is judged to be on the same network as us, or
* on a private network.
*/
-int
-is_local_addr(const tor_addr_t *addr)
+MOCK_IMPL(int,
+is_local_addr, (const tor_addr_t *addr))
{
if (tor_addr_is_internal(addr, 0))
return 1;
@@ -2623,6 +2641,17 @@ options_validate(or_options_t *old_options, or_options_t *options,
routerset_union(options->ExcludeExitNodesUnion_,options->ExcludeNodes);
}
+ if (options->SchedulerLowWaterMark__ == 0 ||
+ options->SchedulerLowWaterMark__ > UINT32_MAX) {
+ log_warn(LD_GENERAL, "Bad SchedulerLowWaterMark__ option");
+ return -1;
+ } else if (options->SchedulerHighWaterMark__ <=
+ options->SchedulerLowWaterMark__ ||
+ options->SchedulerHighWaterMark__ > UINT32_MAX) {
+ log_warn(LD_GENERAL, "Bad SchedulerHighWaterMark option");
+ return -1;
+ }
+
if (options->NodeFamilies) {
options->NodeFamilySets = smartlist_new();
for (cl = options->NodeFamilies; cl; cl = cl->next) {
@@ -3299,12 +3328,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
for (cl = options->ClientTransportPlugin; cl; cl = cl->next) {
- if (parse_client_transport_line(options, cl->value, 1)<0)
+ if (parse_transport_line(options, cl->value, 1, 0) < 0)
REJECT("Invalid client transport line. See logs for details.");
}
for (cl = options->ServerTransportPlugin; cl; cl = cl->next) {
- if (parse_server_transport_line(options, cl->value, 1)<0)
+ if (parse_transport_line(options, cl->value, 1, 1) < 0)
REJECT("Invalid server transport line. See logs for details.");
}
@@ -4768,46 +4797,52 @@ parse_bridge_line(const char *line)
return bridge_line;
}
-/** Read the contents of a ClientTransportPlugin line from
- * <b>line</b>. Return 0 if the line is well-formed, and -1 if it
- * isn't.
+/** Read the contents of a ClientTransportPlugin or ServerTransportPlugin
+ * line from <b>line</b>, depending on the value of <b>server</b>. Return 0
+ * if the line is well-formed, and -1 if it isn't.
*
- * If <b>validate_only</b> is 0, the line is well-formed, and the
- * transport is needed by some bridge:
+ * If <b>validate_only</b> is 0, the line is well-formed, and the transport is
+ * needed by some bridge:
* - If it's an external proxy line, add the transport described in the line to
* our internal transport list.
- * - If it's a managed proxy line, launch the managed proxy. */
-static int
-parse_client_transport_line(const or_options_t *options,
- const char *line, int validate_only)
+ * - If it's a managed proxy line, launch the managed proxy.
+ */
+
+STATIC int
+parse_transport_line(const or_options_t *options,
+ const char *line, int validate_only,
+ int server)
{
+
smartlist_t *items = NULL;
int r;
- char *field2=NULL;
-
- const char *transports=NULL;
- smartlist_t *transport_list=NULL;
- char *addrport=NULL;
+ const char *transports = NULL;
+ smartlist_t *transport_list = NULL;
+ char *type = NULL;
+ char *addrport = NULL;
tor_addr_t addr;
uint16_t port = 0;
- int socks_ver=PROXY_NONE;
+ int socks_ver = PROXY_NONE;
/* managed proxy options */
- int is_managed=0;
- char **proxy_argv=NULL;
- char **tmp=NULL;
+ int is_managed = 0;
+ char **proxy_argv = NULL;
+ char **tmp = NULL;
int proxy_argc, i;
- int is_useless_proxy=1;
+ int is_useless_proxy = 1;
int line_length;
+ /* Split the line into space-separated tokens */
items = smartlist_new();
smartlist_split_string(items, line, NULL,
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1);
+ line_length = smartlist_len(items);
- line_length = smartlist_len(items);
if (line_length < 3) {
- log_warn(LD_CONFIG, "Too few arguments on ClientTransportPlugin line.");
+ log_warn(LD_CONFIG,
+ "Too few arguments on %sTransportPlugin line.",
+ server ? "Server" : "Client");
goto err;
}
@@ -4831,71 +4866,97 @@ parse_client_transport_line(const or_options_t *options,
is_useless_proxy = 0;
} SMARTLIST_FOREACH_END(transport_name);
- /* field2 is either a SOCKS version or "exec" */
- field2 = smartlist_get(items, 1);
-
- if (!strcmp(field2,"socks4")) {
+ type = smartlist_get(items, 1);
+ if (!strcmp(type, "exec")) {
+ is_managed = 1;
+ } else if (server && !strcmp(type, "proxy")) {
+ /* 'proxy' syntax only with ServerTransportPlugin */
+ is_managed = 0;
+ } else if (!server && !strcmp(type, "socks4")) {
+ /* 'socks4' syntax only with ClientTransportPlugin */
+ is_managed = 0;
socks_ver = PROXY_SOCKS4;
- } else if (!strcmp(field2,"socks5")) {
+ } else if (!server && !strcmp(type, "socks5")) {
+ /* 'socks5' syntax only with ClientTransportPlugin */
+ is_managed = 0;
socks_ver = PROXY_SOCKS5;
- } else if (!strcmp(field2,"exec")) {
- is_managed=1;
} else {
- log_warn(LD_CONFIG, "Strange ClientTransportPlugin field '%s'.",
- field2);
+ log_warn(LD_CONFIG,
+ "Strange %sTransportPlugin type '%s'",
+ server ? "Server" : "Client", type);
goto err;
}
if (is_managed && options->Sandbox) {
- log_warn(LD_CONFIG, "Managed proxies are not compatible with Sandbox mode."
- "(ClientTransportPlugin line was %s)", escaped(line));
+ log_warn(LD_CONFIG,
+ "Managed proxies are not compatible with Sandbox mode."
+ "(%sTransportPlugin line was %s)",
+ server ? "Server" : "Client", escaped(line));
goto err;
}
- if (is_managed) { /* managed */
- if (!validate_only && is_useless_proxy) {
- log_info(LD_GENERAL, "Pluggable transport proxy (%s) does not provide "
- "any needed transports and will not be launched.", line);
+ if (is_managed) {
+ /* managed */
+
+ if (!server && !validate_only && is_useless_proxy) {
+ log_info(LD_GENERAL,
+ "Pluggable transport proxy (%s) does not provide "
+ "any needed transports and will not be launched.",
+ line);
}
- /* If we are not just validating, use the rest of the line as the
- argv of the proxy to be launched. Also, make sure that we are
- only launching proxies that contribute useful transports. */
- if (!validate_only && !is_useless_proxy) {
- proxy_argc = line_length-2;
+ /*
+ * If we are not just validating, use the rest of the line as the
+ * argv of the proxy to be launched. Also, make sure that we are
+ * only launching proxies that contribute useful transports.
+ */
+
+ if (!validate_only && (server || !is_useless_proxy)) {
+ proxy_argc = line_length - 2;
tor_assert(proxy_argc > 0);
- proxy_argv = tor_calloc(sizeof(char *), (proxy_argc + 1));
+ proxy_argv = tor_calloc((proxy_argc + 1), sizeof(char *));
tmp = proxy_argv;
- for (i=0;i<proxy_argc;i++) { /* store arguments */
+
+ for (i = 0; i < proxy_argc; i++) {
+ /* store arguments */
*tmp++ = smartlist_get(items, 2);
smartlist_del_keeporder(items, 2);
}
- *tmp = NULL; /*terminated with NULL, just like execve() likes it*/
+ *tmp = NULL; /* terminated with NULL, just like execve() likes it */
/* kickstart the thing */
- pt_kickstart_client_proxy(transport_list, proxy_argv);
+ if (server) {
+ pt_kickstart_server_proxy(transport_list, proxy_argv);
+ } else {
+ pt_kickstart_client_proxy(transport_list, proxy_argv);
+ }
}
- } else { /* external */
+ } else {
+ /* external */
+
/* ClientTransportPlugins connecting through a proxy is managed only. */
- if (options->Socks4Proxy || options->Socks5Proxy || options->HTTPSProxy) {
+ if (!server && (options->Socks4Proxy || options->Socks5Proxy ||
+ options->HTTPSProxy)) {
log_warn(LD_CONFIG, "You have configured an external proxy with another "
"proxy type. (Socks4Proxy|Socks5Proxy|HTTPSProxy)");
goto err;
}
if (smartlist_len(transport_list) != 1) {
- log_warn(LD_CONFIG, "You can't have an external proxy with "
- "more than one transports.");
+ log_warn(LD_CONFIG,
+ "You can't have an external proxy with more than "
+ "one transport.");
goto err;
}
addrport = smartlist_get(items, 2);
- if (tor_addr_port_lookup(addrport, &addr, &port)<0) {
- log_warn(LD_CONFIG, "Error parsing transport "
- "address '%s'", addrport);
+ if (tor_addr_port_lookup(addrport, &addr, &port) < 0) {
+ log_warn(LD_CONFIG,
+ "Error parsing transport address '%s'", addrport);
goto err;
}
+
if (!port) {
log_warn(LD_CONFIG,
"Transport address '%s' has no port.", addrport);
@@ -4903,11 +4964,15 @@ parse_client_transport_line(const or_options_t *options,
}
if (!validate_only) {
- transport_add_from_config(&addr, port, smartlist_get(transport_list, 0),
- socks_ver);
-
- log_info(LD_DIR, "Transport '%s' found at %s",
+ log_info(LD_DIR, "%s '%s' at %s.",
+ server ? "Server transport" : "Transport",
transports, fmt_addrport(&addr, port));
+
+ if (!server) {
+ transport_add_from_config(&addr, port,
+ smartlist_get(transport_list, 0),
+ socks_ver);
+ }
}
}
@@ -5079,133 +5144,6 @@ get_options_for_server_transport(const char *transport)
return NULL;
}
-/** Read the contents of a ServerTransportPlugin line from
- * <b>line</b>. Return 0 if the line is well-formed, and -1 if it
- * isn't.
- * If <b>validate_only</b> is 0, the line is well-formed, and it's a
- * managed proxy line, launch the managed proxy. */
-static int
-parse_server_transport_line(const or_options_t *options,
- const char *line, int validate_only)
-{
- smartlist_t *items = NULL;
- int r;
- const char *transports=NULL;
- smartlist_t *transport_list=NULL;
- char *type=NULL;
- char *addrport=NULL;
- tor_addr_t addr;
- uint16_t port = 0;
-
- /* managed proxy options */
- int is_managed=0;
- char **proxy_argv=NULL;
- char **tmp=NULL;
- int proxy_argc,i;
-
- int line_length;
-
- items = smartlist_new();
- smartlist_split_string(items, line, NULL,
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1);
-
- line_length = smartlist_len(items);
- if (line_length < 3) {
- log_warn(LD_CONFIG, "Too few arguments on ServerTransportPlugin line.");
- goto err;
- }
-
- /* Get the first line element, split it to commas into
- transport_list (in case it's multiple transports) and validate
- the transport names. */
- transports = smartlist_get(items, 0);
- transport_list = smartlist_new();
- smartlist_split_string(transport_list, transports, ",",
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- SMARTLIST_FOREACH_BEGIN(transport_list, const char *, transport_name) {
- if (!string_is_C_identifier(transport_name)) {
- log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).",
- transport_name);
- goto err;
- }
- } SMARTLIST_FOREACH_END(transport_name);
-
- type = smartlist_get(items, 1);
-
- if (!strcmp(type, "exec")) {
- is_managed=1;
- } else if (!strcmp(type, "proxy")) {
- is_managed=0;
- } else {
- log_warn(LD_CONFIG, "Strange ServerTransportPlugin type '%s'", type);
- goto err;
- }
-
- if (is_managed && options->Sandbox) {
- log_warn(LD_CONFIG, "Managed proxies are not compatible with Sandbox mode."
- "(ServerTransportPlugin line was %s)", escaped(line));
- goto err;
- }
-
- if (is_managed) { /* managed */
- if (!validate_only) {
- proxy_argc = line_length-2;
- tor_assert(proxy_argc > 0);
- proxy_argv = tor_calloc(sizeof(char *), (proxy_argc + 1));
- tmp = proxy_argv;
-
- for (i=0;i<proxy_argc;i++) { /* store arguments */
- *tmp++ = smartlist_get(items, 2);
- smartlist_del_keeporder(items, 2);
- }
- *tmp = NULL; /*terminated with NULL, just like execve() likes it*/
-
- /* kickstart the thing */
- pt_kickstart_server_proxy(transport_list, proxy_argv);
- }
- } else { /* external */
- if (smartlist_len(transport_list) != 1) {
- log_warn(LD_CONFIG, "You can't have an external proxy with "
- "more than one transports.");
- goto err;
- }
-
- addrport = smartlist_get(items, 2);
-
- if (tor_addr_port_lookup(addrport, &addr, &port)<0) {
- log_warn(LD_CONFIG, "Error parsing transport "
- "address '%s'", addrport);
- goto err;
- }
- if (!port) {
- log_warn(LD_CONFIG,
- "Transport address '%s' has no port.", addrport);
- goto err;
- }
-
- if (!validate_only) {
- log_info(LD_DIR, "Server transport '%s' at %s.",
- transports, fmt_addrport(&addr, port));
- }
- }
-
- r = 0;
- goto done;
-
- err:
- r = -1;
-
- done:
- SMARTLIST_FOREACH(items, char*, s, tor_free(s));
- smartlist_free(items);
- if (transport_list) {
- SMARTLIST_FOREACH(transport_list, char*, s, tor_free(s));
- smartlist_free(transport_list);
- }
-
- return r;
-}
-
/** Read the contents of a DirAuthority line from <b>line</b>. If
* <b>validate_only</b> is 0, and the line is well-formed, and it
* shares any bits with <b>required_type</b> or <b>required_type</b>
diff --git a/src/or/config.h b/src/or/config.h
index bd26123d62..133b472eb2 100644
--- a/src/or/config.h
+++ b/src/or/config.h
@@ -33,7 +33,7 @@ void reset_last_resolved_addr(void);
int resolve_my_address(int warn_severity, const or_options_t *options,
uint32_t *addr_out,
const char **method_out, char **hostname_out);
-int is_local_addr(const tor_addr_t *addr);
+MOCK_DECL(int, is_local_addr, (const tor_addr_t *addr));
void options_init(or_options_t *options);
#define OPTIONS_DUMP_MINIMAL 1
@@ -141,6 +141,9 @@ STATIC int options_validate(or_options_t *old_options,
or_options_t *options,
or_options_t *default_options,
int from_setconf, char **msg);
+STATIC int parse_transport_line(const or_options_t *options,
+ const char *line, int validate_only,
+ int server);
#endif
#endif
diff --git a/src/or/connection.c b/src/or/connection.c
index c9c371c001..ce3fda89c1 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -3839,6 +3839,8 @@ connection_handle_write_impl(connection_t *conn, int force)
tor_tls_get_n_raw_bytes(or_conn->tls, &n_read, &n_written);
log_debug(LD_GENERAL, "After TLS write of %d: %ld read, %ld written",
result, (long)n_read, (long)n_written);
+ or_conn->bytes_xmitted += result;
+ or_conn->bytes_xmitted_by_tls += n_written;
/* So we notice bytes were written even on error */
/* XXXX024 This cast is safe since we can never write INT_MAX bytes in a
* single set of TLS operations. But it looks kinda ugly. If we refactor
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 14b391180e..9859cc26ea 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -744,8 +744,17 @@ connection_ap_fail_onehop(const char *failed_digest,
/* we don't know the digest; have to compare addr:port */
tor_addr_t addr;
if (!build_state || !build_state->chosen_exit ||
- !entry_conn->socks_request || !entry_conn->socks_request->address)
+ !entry_conn->socks_request) {
+ /* clang thinks that an array midway through a structure
+ * will never have a NULL address, under either:
+ * -Wpointer-bool-conversion if using !, or
+ * -Wtautological-pointer-compare if using == or !=
+ * It's probably right (unless pointers overflow and wrap),
+ * so we just skip this check
+ || !entry_conn->socks_request->address
+ */
continue;
+ }
if (tor_addr_parse(&addr, entry_conn->socks_request->address)<0 ||
!tor_addr_eq(&build_state->chosen_exit->addr, &addr) ||
build_state->chosen_exit->port != entry_conn->socks_request->port)
@@ -2461,7 +2470,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
relay_header_unpack(&rh, cell->payload);
if (rh.length > RELAY_PAYLOAD_SIZE)
- return -1;
+ return -END_CIRC_REASON_TORPROTOCOL;
/* Note: we have to use relay_send_command_from_edge here, not
* connection_edge_end or connection_edge_send_command, since those require
@@ -2479,7 +2488,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
r = begin_cell_parse(cell, &bcell, &end_reason);
if (r < -1) {
- return -1;
+ return -END_CIRC_REASON_TORPROTOCOL;
} else if (r == -1) {
tor_free(bcell.address);
relay_send_end_cell_from_edge(rh.stream_id, circ, end_reason, NULL);
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 29b88041b7..f228450723 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -38,6 +38,8 @@
#include "router.h"
#include "routerlist.h"
#include "ext_orport.h"
+#include "scheduler.h"
+
#ifdef USE_BUFFEREVENTS
#include <event2/bufferevent_ssl.h>
#endif
@@ -574,48 +576,51 @@ connection_or_process_inbuf(or_connection_t *conn)
return ret;
}
-/** When adding cells to an OR connection's outbuf, keep adding until the
- * outbuf is at least this long, or we run out of cells. */
-#define OR_CONN_HIGHWATER (32*1024)
-
-/** Add cells to an OR connection's outbuf whenever the outbuf's data length
- * drops below this size. */
-#define OR_CONN_LOWWATER (16*1024)
-
/** Called whenever we have flushed some data on an or_conn: add more data
* from active circuits. */
int
connection_or_flushed_some(or_connection_t *conn)
{
- size_t datalen, temp;
- ssize_t n, flushed;
- size_t cell_network_size = get_cell_network_size(conn->wide_circ_ids);
+ size_t datalen;
+
+ /* The channel will want to update its estimated queue size */
+ channel_update_xmit_queue_size(TLS_CHAN_TO_BASE(conn->chan));
/* If we're under the low water mark, add cells until we're just over the
* high water mark. */
datalen = connection_get_outbuf_len(TO_CONN(conn));
if (datalen < OR_CONN_LOWWATER) {
- while ((conn->chan) && channel_tls_more_to_flush(conn->chan)) {
- /* Compute how many more cells we want at most */
- n = CEIL_DIV(OR_CONN_HIGHWATER - datalen, cell_network_size);
- /* Bail out if we don't want any more */
- if (n <= 0) break;
- /* We're still here; try to flush some more cells */
- flushed = channel_tls_flush_some_cells(conn->chan, n);
- /* Bail out if it says it didn't flush anything */
- if (flushed <= 0) break;
- /* How much in the outbuf now? */
- temp = connection_get_outbuf_len(TO_CONN(conn));
- /* Bail out if we didn't actually increase the outbuf size */
- if (temp <= datalen) break;
- /* Update datalen for the next iteration */
- datalen = temp;
- }
+ /* Let the scheduler know */
+ scheduler_channel_wants_writes(TLS_CHAN_TO_BASE(conn->chan));
}
return 0;
}
+/** This is for channeltls.c to ask how many cells we could accept if
+ * they were available. */
+ssize_t
+connection_or_num_cells_writeable(or_connection_t *conn)
+{
+ size_t datalen, cell_network_size;
+ ssize_t n = 0;
+
+ tor_assert(conn);
+
+ /*
+ * If we're under the high water mark, we're potentially
+ * writeable; note this is different from the calculation above
+ * used to trigger when to start writing after we've stopped.
+ */
+ datalen = connection_get_outbuf_len(TO_CONN(conn));
+ if (datalen < OR_CONN_HIGHWATER) {
+ cell_network_size = get_cell_network_size(conn->wide_circ_ids);
+ n = CEIL_DIV(OR_CONN_HIGHWATER - datalen, cell_network_size);
+ }
+
+ return n;
+}
+
/** Connection <b>conn</b> has finished writing and has no bytes left on
* its outbuf.
*
@@ -1169,10 +1174,10 @@ connection_or_notify_error(or_connection_t *conn,
*
* Return the launched conn, or NULL if it failed.
*/
-or_connection_t *
-connection_or_connect(const tor_addr_t *_addr, uint16_t port,
- const char *id_digest,
- channel_tls_t *chan)
+
+MOCK_IMPL(or_connection_t *,
+connection_or_connect, (const tor_addr_t *_addr, uint16_t port,
+ const char *id_digest, channel_tls_t *chan))
{
or_connection_t *conn;
const or_options_t *options = get_options();
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index 1ceabdaa4b..b82896e26d 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -24,6 +24,7 @@ void connection_or_set_bad_connections(const char *digest, int force);
void connection_or_block_renegotiation(or_connection_t *conn);
int connection_or_reached_eof(or_connection_t *conn);
int connection_or_process_inbuf(or_connection_t *conn);
+ssize_t connection_or_num_cells_writeable(or_connection_t *conn);
int connection_or_flushed_some(or_connection_t *conn);
int connection_or_finished_flushing(or_connection_t *conn);
int connection_or_finished_connecting(or_connection_t *conn);
@@ -36,9 +37,10 @@ void connection_or_connect_failed(or_connection_t *conn,
int reason, const char *msg);
void connection_or_notify_error(or_connection_t *conn,
int reason, const char *msg);
-or_connection_t *connection_or_connect(const tor_addr_t *addr, uint16_t port,
- const char *id_digest,
- channel_tls_t *chan);
+MOCK_DECL(or_connection_t *,
+ connection_or_connect,
+ (const tor_addr_t *addr, uint16_t port,
+ const char *id_digest, channel_tls_t *chan));
void connection_or_close_normally(or_connection_t *orconn, int flush);
void connection_or_close_for_error(or_connection_t *orconn, int flush);
diff --git a/src/or/control.c b/src/or/control.c
index e3f913177b..dc67588d6a 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1263,6 +1263,7 @@ static const struct signal_t signal_table[] = {
{ SIGTERM, "INT" },
{ SIGNEWNYM, "NEWNYM" },
{ SIGCLEARDNSCACHE, "CLEARDNSCACHE"},
+ { SIGHEARTBEAT, "HEARTBEAT"},
{ 0, NULL },
};
@@ -2015,7 +2016,7 @@ getinfo_helper_events(control_connection_t *control_conn,
/* Note that status/ is not a catch-all for events; there's only supposed
* to be a status GETINFO if there's a corresponding STATUS event. */
if (!strcmp(question, "status/circuit-established")) {
- *answer = tor_strdup(can_complete_circuit ? "1" : "0");
+ *answer = tor_strdup(have_completed_a_circuit() ? "1" : "0");
} else if (!strcmp(question, "status/enough-dir-info")) {
*answer = tor_strdup(router_have_minimum_dir_info() ? "1" : "0");
} else if (!strcmp(question, "status/good-server-descriptor") ||
@@ -4454,6 +4455,9 @@ control_event_signal(uintptr_t signal)
case SIGCLEARDNSCACHE:
signal_string = "CLEARDNSCACHE";
break;
+ case SIGHEARTBEAT:
+ signal_string = "HEARTBEAT";
+ break;
default:
log_warn(LD_BUG, "Unrecognized signal %lu in control_event_signal",
(unsigned long)signal);
@@ -5096,20 +5100,30 @@ control_event_hs_descriptor_requested(const rend_data_t *rend_query,
void
control_event_hs_descriptor_receive_end(const char *action,
const rend_data_t *rend_query,
- const char *id_digest)
+ const char *id_digest,
+ const char *reason)
{
+ char *reason_field = NULL;
+
if (!action || !rend_query || !id_digest) {
log_warn(LD_BUG, "Called with action==%p, rend_query==%p, "
"id_digest==%p", action, rend_query, id_digest);
return;
}
+ if (reason) {
+ tor_asprintf(&reason_field, " REASON=%s", reason);
+ }
+
send_control_event(EVENT_HS_DESC, ALL_FORMATS,
- "650 HS_DESC %s %s %s %s\r\n",
+ "650 HS_DESC %s %s %s %s%s\r\n",
action,
rend_query->onion_address,
rend_auth_type_to_string(rend_query->auth_type),
- node_describe_longname_by_id(id_digest));
+ node_describe_longname_by_id(id_digest),
+ reason_field ? reason_field : "");
+
+ tor_free(reason_field);
}
/** send HS_DESC RECEIVED event
@@ -5125,23 +5139,27 @@ control_event_hs_descriptor_received(const rend_data_t *rend_query,
rend_query, id_digest);
return;
}
- control_event_hs_descriptor_receive_end("RECEIVED", rend_query, id_digest);
+ control_event_hs_descriptor_receive_end("RECEIVED", rend_query,
+ id_digest, NULL);
}
-/** send HS_DESC FAILED event
- *
- * called when request for hidden service descriptor returned failure.
+/** 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.
*/
void
control_event_hs_descriptor_failed(const rend_data_t *rend_query,
- const char *id_digest)
+ const char *id_digest,
+ const char *reason)
{
if (!rend_query || !id_digest) {
log_warn(LD_BUG, "Called with rend_query==%p, id_digest==%p",
rend_query, id_digest);
return;
}
- control_event_hs_descriptor_receive_end("FAILED", rend_query, id_digest);
+ control_event_hs_descriptor_receive_end("FAILED", rend_query,
+ id_digest, reason);
}
/** Free any leftover allocated memory of the control.c subsystem. */
diff --git a/src/or/control.h b/src/or/control.h
index 0c92d5503d..f62084b931 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -108,11 +108,13 @@ void control_event_hs_descriptor_requested(const rend_data_t *rend_query,
const char *hs_dir);
void control_event_hs_descriptor_receive_end(const char *action,
const rend_data_t *rend_query,
- const char *hs_dir);
+ const char *hs_dir,
+ const char *reason);
void control_event_hs_descriptor_received(const rend_data_t *rend_query,
const char *hs_dir);
void control_event_hs_descriptor_failed(const rend_data_t *rend_query,
- const char *hs_dir);
+ const char *hs_dir,
+ const char *reason);
void control_free_all(void);
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 1fe472d18c..568d9e42d8 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -510,7 +510,7 @@ spawn_cpuworker(void)
connection_t *conn;
int err;
- fdarray = tor_calloc(sizeof(tor_socket_t), 2);
+ fdarray = tor_calloc(2, sizeof(tor_socket_t));
if ((err = tor_socketpair(AF_UNIX, SOCK_STREAM, 0, fdarray)) < 0) {
log_warn(LD_NET, "Couldn't construct socketpair for cpuworker: %s",
tor_socket_strerror(-err));
diff --git a/src/or/directory.c b/src/or/directory.c
index 35f8cbbd8a..cca4b54e24 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -2073,23 +2073,25 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
}
if (conn->base_.purpose == DIR_PURPOSE_FETCH_RENDDESC_V2) {
- #define SEND_HS_DESC_FAILED_EVENT() ( \
+ #define SEND_HS_DESC_FAILED_EVENT(reason) ( \
control_event_hs_descriptor_failed(conn->rend_data, \
- conn->identity_digest) )
+ conn->identity_digest, \
+ reason) )
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:
- switch (rend_cache_store_v2_desc_as_client(body, conn->rend_data)) {
+ switch (rend_cache_store_v2_desc_as_client(body,
+ conn->requested_resource, conn->rend_data)) {
case RCS_BADDESC:
case RCS_NOTDIR: /* Impossible */
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();
+ SEND_HS_DESC_FAILED_EVENT("BAD_DESC");
break;
case RCS_OKAY:
default:
@@ -2108,14 +2110,14 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
* 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();
+ SEND_HS_DESC_FAILED_EVENT("NOT_FOUND");
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();
+ SEND_HS_DESC_FAILED_EVENT("QUERY_REJECTED");
break;
default:
log_warn(LD_REND, "Fetching v2 rendezvous descriptor failed: "
@@ -2124,7 +2126,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
"Retrying at another directory.",
status_code, escaped(reason), conn->base_.address,
conn->base_.port);
- SEND_HS_DESC_FAILED_EVENT();
+ SEND_HS_DESC_FAILED_EVENT("UNEXPECTED");
break;
}
}
@@ -2208,8 +2210,10 @@ connection_dir_process_inbuf(dir_connection_t *conn)
}
if (connection_get_inbuf_len(TO_CONN(conn)) > MAX_DIRECTORY_OBJECT_SIZE) {
- log_warn(LD_HTTP, "Too much data received from directory connection: "
- "denial of service attempt, or you need to upgrade?");
+ log_warn(LD_HTTP,
+ "Too much data received from directory connection (%s): "
+ "denial of service attempt, or you need to upgrade?",
+ conn->base_.address);
connection_mark_for_close(TO_CONN(conn));
return -1;
}
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index ec9af07ecb..d31bb72361 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -512,7 +512,7 @@ dirserv_add_multiple_descriptors(const char *desc, uint8_t purpose,
if (!n_parsed) {
*msg = "No descriptors found in your POST.";
if (WRA_WAS_ADDED(r))
- r = ROUTER_WAS_NOT_NEW;
+ r = ROUTER_IS_ALREADY_KNOWN;
} else {
*msg = "(no message)";
}
@@ -574,7 +574,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
ri->cache_info.signed_descriptor_body,
ri->cache_info.signed_descriptor_len, *msg);
routerinfo_free(ri);
- return ROUTER_WAS_NOT_NEW;
+ return ROUTER_IS_ALREADY_KNOWN;
}
/* Make a copy of desc, since router_add_to_routerlist might free
@@ -646,7 +646,7 @@ dirserv_add_extrainfo(extrainfo_t *ei, const char **msg)
if ((r = routerinfo_incompatible_with_extrainfo(ri, ei, NULL, msg))) {
extrainfo_free(ei);
- return r < 0 ? ROUTER_WAS_NOT_NEW : ROUTER_BAD_EI;
+ return r < 0 ? ROUTER_IS_ALREADY_KNOWN : ROUTER_BAD_EI;
}
router_add_extrainfo_to_routerlist(ei, msg, 0, 0);
return ROUTER_ADDED_SUCCESSFULLY;
@@ -1369,18 +1369,18 @@ dirserv_compute_performance_thresholds(routerlist_t *rl,
* sort them and use that to compute thresholds. */
n_active = n_active_nonexit = 0;
/* Uptime for every active router. */
- uptimes = tor_calloc(sizeof(uint32_t), smartlist_len(rl->routers));
+ uptimes = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t));
/* Bandwidth for every active router. */
- bandwidths_kb = tor_calloc(sizeof(uint32_t), smartlist_len(rl->routers));
+ bandwidths_kb = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t));
/* Bandwidth for every active non-exit router. */
bandwidths_excluding_exits_kb =
- tor_calloc(sizeof(uint32_t), smartlist_len(rl->routers));
+ tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t));
/* Weighted mean time between failure for each active router. */
- mtbfs = tor_calloc(sizeof(double), smartlist_len(rl->routers));
+ mtbfs = tor_calloc(smartlist_len(rl->routers), sizeof(double));
/* Time-known for each active router. */
- tks = tor_calloc(sizeof(long), smartlist_len(rl->routers));
+ tks = tor_calloc(smartlist_len(rl->routers), sizeof(long));
/* Weighted fractional uptime for each active router. */
- wfus = tor_calloc(sizeof(double), smartlist_len(rl->routers));
+ wfus = tor_calloc(smartlist_len(rl->routers), sizeof(double));
nodelist_assert_ok();
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 76dce6c6be..39505a4f9e 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -611,7 +611,7 @@ dirvote_compute_params(smartlist_t *votes, int method, int total_authorities)
between INT32_MIN and INT32_MAX inclusive. This should be guaranteed by
the parsing code. */
- vals = tor_calloc(sizeof(int), n_votes);
+ vals = tor_calloc(n_votes, sizeof(int));
SMARTLIST_FOREACH_BEGIN(votes, networkstatus_t *, v) {
if (!v->net_params)
@@ -1258,10 +1258,10 @@ networkstatus_compute_consensus(smartlist_t *votes,
smartlist_t *chosen_flags = smartlist_new();
smartlist_t *versions = smartlist_new();
smartlist_t *exitsummaries = smartlist_new();
- uint32_t *bandwidths_kb = tor_calloc(sizeof(uint32_t),
- smartlist_len(votes));
- uint32_t *measured_bws_kb = tor_calloc(sizeof(uint32_t),
- smartlist_len(votes));
+ uint32_t *bandwidths_kb = tor_calloc(smartlist_len(votes),
+ sizeof(uint32_t));
+ uint32_t *measured_bws_kb = tor_calloc(smartlist_len(votes),
+ sizeof(uint32_t));
int num_bandwidths;
int num_mbws;
@@ -1281,13 +1281,13 @@ networkstatus_compute_consensus(smartlist_t *votes,
memset(conflict, 0, sizeof(conflict));
memset(unknown, 0xff, sizeof(conflict));
- index = tor_calloc(sizeof(int), smartlist_len(votes));
- size = tor_calloc(sizeof(int), smartlist_len(votes));
- n_voter_flags = tor_calloc(sizeof(int), smartlist_len(votes));
- n_flag_voters = tor_calloc(sizeof(int), smartlist_len(flags));
- flag_map = tor_calloc(sizeof(int *), smartlist_len(votes));
- named_flag = tor_calloc(sizeof(int), smartlist_len(votes));
- unnamed_flag = tor_calloc(sizeof(int), smartlist_len(votes));
+ index = tor_calloc(smartlist_len(votes), sizeof(int));
+ size = tor_calloc(smartlist_len(votes), sizeof(int));
+ n_voter_flags = tor_calloc(smartlist_len(votes), sizeof(int));
+ n_flag_voters = tor_calloc(smartlist_len(flags), sizeof(int));
+ flag_map = tor_calloc(smartlist_len(votes), sizeof(int *));
+ named_flag = tor_calloc(smartlist_len(votes), sizeof(int));
+ unnamed_flag = tor_calloc(smartlist_len(votes), sizeof(int));
for (i = 0; i < smartlist_len(votes); ++i)
unnamed_flag[i] = named_flag[i] = -1;
@@ -1298,8 +1298,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
* that they're actually set before doing U64_LITERAL(1) << index with
* them.*/
SMARTLIST_FOREACH_BEGIN(votes, networkstatus_t *, v) {
- flag_map[v_sl_idx] = tor_calloc(sizeof(int),
- smartlist_len(v->known_flags));
+ flag_map[v_sl_idx] = tor_calloc(smartlist_len(v->known_flags),
+ sizeof(int));
if (smartlist_len(v->known_flags) > MAX_KNOWN_FLAGS_IN_VOTE) {
log_warn(LD_BUG, "Somehow, a vote has %d entries in known_flags",
smartlist_len(v->known_flags));
@@ -1379,7 +1379,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
);
/* Now go through all the votes */
- flag_counts = tor_calloc(sizeof(int), smartlist_len(flags));
+ flag_counts = tor_calloc(smartlist_len(flags), sizeof(int));
while (1) {
vote_routerstatus_t *rs;
routerstatus_t rs_out;
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index 5bd0268dfd..b18aabe1f4 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -1919,8 +1919,8 @@ bridge_resolve_conflicts(const tor_addr_t *addr, uint16_t port,
/** Return True if we have a bridge that uses a transport with name
* <b>transport_name</b>. */
-int
-transport_is_needed(const char *transport_name)
+MOCK_IMPL(int,
+transport_is_needed, (const char *transport_name))
{
if (!bridge_list)
return 0;
diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h
index 80ac5e4a1c..5416398430 100644
--- a/src/or/entrynodes.h
+++ b/src/or/entrynodes.h
@@ -154,7 +154,7 @@ struct transport_t;
int get_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
const struct transport_t **transport);
-int transport_is_needed(const char *transport_name);
+MOCK_DECL(int, transport_is_needed, (const char *transport_name));
int validate_pluggable_transports_config(void);
double pathbias_get_close_success_count(entry_guard_t *guard);
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 75b26212d0..c02343d489 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -963,7 +963,7 @@ geoip_get_dirreq_history(dirreq_type_t type)
/* We may have rounded 'completed' up. Here we want to use the
* real value. */
complete = smartlist_len(dirreq_completed);
- dltimes = tor_calloc(sizeof(uint32_t), complete);
+ dltimes = tor_calloc(complete, sizeof(uint32_t));
SMARTLIST_FOREACH_BEGIN(dirreq_completed, dirreq_map_entry_t *, ent) {
uint32_t bytes_per_second;
uint32_t time_diff = (uint32_t) tv_mdiff(&ent->request_time,
@@ -1033,7 +1033,7 @@ geoip_get_client_history(geoip_client_action_t action,
if (!geoip_is_loaded(AF_INET) && !geoip_is_loaded(AF_INET6))
return -1;
- counts = tor_calloc(sizeof(unsigned), n_countries);
+ counts = tor_calloc(n_countries, sizeof(unsigned));
HT_FOREACH(ent, clientmap, &client_history) {
int country;
if ((*ent)->action != (int)action)
diff --git a/src/or/include.am b/src/or/include.am
index 0f53f007f0..643f7ce001 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -74,6 +74,7 @@ LIBTOR_A_SOURCES = \
src/or/routerlist.c \
src/or/routerparse.c \
src/or/routerset.c \
+ src/or/scheduler.c \
src/or/statefile.c \
src/or/status.c \
src/or/onion_ntor.c \
@@ -179,6 +180,7 @@ ORHEADERS = \
src/or/routerlist.h \
src/or/routerset.h \
src/or/routerparse.h \
+ src/or/scheduler.h \
src/or/statefile.h \
src/or/status.h
diff --git a/src/or/main.c b/src/or/main.c
index 5a4e0a3e2d..e78e9bf6a6 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -53,6 +53,7 @@
#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
+#include "scheduler.h"
#include "statefile.h"
#include "status.h"
#include "util_process.h"
@@ -150,7 +151,7 @@ static int called_loop_once = 0;
* any longer (a big time jump happened, when we notice our directory is
* heinously out-of-date, etc.
*/
-int can_complete_circuit=0;
+static int can_complete_circuits = 0;
/** How often do we check for router descriptors that we should download
* when we have too little directory info? */
@@ -171,11 +172,11 @@ int quiet_level = 0;
/********* END VARIABLES ************/
/****************************************************************************
-*
-* This section contains accessors and other methods on the connection_array
-* variables (which are global within this file and unavailable outside it).
-*
-****************************************************************************/
+ *
+ * This section contains accessors and other methods on the connection_array
+ * variables (which are global within this file and unavailable outside it).
+ *
+ ****************************************************************************/
#if 0 && defined(USE_BUFFEREVENTS)
static void
@@ -223,6 +224,31 @@ set_buffer_lengths_to_zero(tor_socket_t s)
}
#endif
+/** Return 1 if we have successfully built a circuit, and nothing has changed
+ * to make us think that maybe we can't.
+ */
+int
+have_completed_a_circuit(void)
+{
+ return can_complete_circuits;
+}
+
+/** Note that we have successfully built a circuit, so that reachability
+ * testing and introduction points and so on may be attempted. */
+void
+note_that_we_completed_a_circuit(void)
+{
+ can_complete_circuits = 1;
+}
+
+/** Note that something has happened (like a clock jump, or DisableNetwork) to
+ * make us think that maybe we can't complete circuits. */
+void
+note_that_we_maybe_cant_complete_circuits(void)
+{
+ can_complete_circuits = 0;
+}
+
/** Add <b>conn</b> to the array of connections that we can poll on. The
* connection's socket must be set; the connection starts out
* non-reading and non-writing.
@@ -999,7 +1025,7 @@ directory_info_has_arrived(time_t now, int from_cache)
}
if (server_mode(options) && !net_is_disabled() && !from_cache &&
- (can_complete_circuit || !any_predicted_circuits(now)))
+ (have_completed_a_circuit() || !any_predicted_circuits(now)))
consider_testing_reachability(1, 1);
}
@@ -1436,7 +1462,7 @@ run_scheduled_events(time_t now)
/* also, check religiously for reachability, if it's within the first
* 20 minutes of our uptime. */
if (is_server &&
- (can_complete_circuit || !any_predicted_circuits(now)) &&
+ (have_completed_a_circuit() || !any_predicted_circuits(now)) &&
!we_are_hibernating()) {
if (stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) {
consider_testing_reachability(1, dirport_reachability_count==0);
@@ -1549,7 +1575,7 @@ run_scheduled_events(time_t now)
circuit_close_all_marked();
/* 7. And upload service descriptors if necessary. */
- if (can_complete_circuit && !net_is_disabled()) {
+ if (have_completed_a_circuit() && !net_is_disabled()) {
rend_consider_services_upload(now);
rend_consider_descriptor_republication();
}
@@ -1680,7 +1706,7 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg)
if (server_mode(options) &&
!net_is_disabled() &&
seconds_elapsed > 0 &&
- can_complete_circuit &&
+ have_completed_a_circuit() &&
stats_n_seconds_working / TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT !=
(stats_n_seconds_working+seconds_elapsed) /
TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) {
@@ -2137,6 +2163,10 @@ process_signal(uintptr_t sig)
addressmap_clear_transient();
control_event_signal(sig);
break;
+ case SIGHEARTBEAT:
+ log_heartbeat(time(NULL));
+ control_event_signal(sig);
+ break;
}
}
@@ -2553,6 +2583,7 @@ tor_free_all(int postfork)
channel_tls_free_all();
channel_free_all();
connection_free_all();
+ scheduler_free_all();
buf_shrink_freelists(1);
memarea_clear_freelist();
nodelist_free_all();
diff --git a/src/or/main.h b/src/or/main.h
index e918517b82..7d98983100 100644
--- a/src/or/main.h
+++ b/src/or/main.h
@@ -12,7 +12,9 @@
#ifndef TOR_MAIN_H
#define TOR_MAIN_H
-extern int can_complete_circuit;
+int have_completed_a_circuit(void);
+void note_that_we_completed_a_circuit(void);
+void note_that_we_maybe_cant_complete_circuits(void);
int connection_add_impl(connection_t *conn, int is_connecting);
#define connection_add(conn) connection_add_impl((conn), 0)
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index e8c11a90c2..7b826008b5 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -163,19 +163,18 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
md->last_listed = listed_at);
}
if (requested_digests256) {
- digestmap_t *requested; /* XXXX actually we should just use a
- digest256map */
- requested = digestmap_new();
+ digest256map_t *requested;
+ requested = digest256map_new();
/* Set requested[d] to DIGEST_REQUESTED for every md we requested. */
- SMARTLIST_FOREACH(requested_digests256, const char *, cp,
- digestmap_set(requested, cp, DIGEST_REQUESTED));
+ SMARTLIST_FOREACH(requested_digests256, const uint8_t *, cp,
+ digest256map_set(requested, cp, DIGEST_REQUESTED));
/* Set requested[d] to DIGEST_INVALID for every md we requested which we
* will never be able to parse. Remove the ones we didn't request from
* invalid_digests.
*/
- SMARTLIST_FOREACH_BEGIN(invalid_digests, char *, cp) {
- if (digestmap_get(requested, cp)) {
- digestmap_set(requested, cp, DIGEST_INVALID);
+ SMARTLIST_FOREACH_BEGIN(invalid_digests, uint8_t *, cp) {
+ if (digest256map_get(requested, cp)) {
+ digest256map_set(requested, cp, DIGEST_INVALID);
} else {
tor_free(cp);
SMARTLIST_DEL_CURRENT(invalid_digests, cp);
@@ -185,8 +184,9 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
* ones we never requested from the 'descriptors' smartlist.
*/
SMARTLIST_FOREACH_BEGIN(descriptors, microdesc_t *, md) {
- if (digestmap_get(requested, md->digest)) {
- digestmap_set(requested, md->digest, DIGEST_RECEIVED);
+ if (digest256map_get(requested, (const uint8_t*)md->digest)) {
+ digest256map_set(requested, (const uint8_t*)md->digest,
+ DIGEST_RECEIVED);
} else {
log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Received non-requested microdesc");
microdesc_free(md);
@@ -195,14 +195,14 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
} SMARTLIST_FOREACH_END(md);
/* Remove the ones we got or the invalid ones from requested_digests256.
*/
- SMARTLIST_FOREACH_BEGIN(requested_digests256, char *, cp) {
- void *status = digestmap_get(requested, cp);
+ SMARTLIST_FOREACH_BEGIN(requested_digests256, uint8_t *, cp) {
+ void *status = digest256map_get(requested, cp);
if (status == DIGEST_RECEIVED || status == DIGEST_INVALID) {
tor_free(cp);
SMARTLIST_DEL_CURRENT(requested_digests256, cp);
}
} SMARTLIST_FOREACH_END(cp);
- digestmap_free(requested, NULL);
+ digest256map_free(requested, NULL);
}
/* For every requested microdescriptor that was unparseable, mark it
@@ -794,7 +794,7 @@ microdesc_average_size(microdesc_cache_t *cache)
* smartlist. Omit all microdescriptors whose digest appear in <b>skip</b>. */
smartlist_t *
microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache,
- int downloadable_only, digestmap_t *skip)
+ int downloadable_only, digest256map_t *skip)
{
smartlist_t *result = smartlist_new();
time_t now = time(NULL);
@@ -806,7 +806,7 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache,
!download_status_is_ready(&rs->dl_status, now,
get_options()->TestingMicrodescMaxDownloadTries))
continue;
- if (skip && digestmap_get(skip, rs->descriptor_digest))
+ if (skip && digest256map_get(skip, (const uint8_t*)rs->descriptor_digest))
continue;
if (tor_mem_is_zero(rs->descriptor_digest, DIGEST256_LEN))
continue;
@@ -831,7 +831,7 @@ update_microdesc_downloads(time_t now)
const or_options_t *options = get_options();
networkstatus_t *consensus;
smartlist_t *missing;
- digestmap_t *pending;
+ digest256map_t *pending;
if (should_delay_dir_fetches(options, NULL))
return;
@@ -845,14 +845,14 @@ update_microdesc_downloads(time_t now)
if (!we_fetch_microdescriptors(options))
return;
- pending = digestmap_new();
+ pending = digest256map_new();
list_pending_microdesc_downloads(pending);
missing = microdesc_list_missing_digest256(consensus,
get_microdesc_cache(),
1,
pending);
- digestmap_free(pending, NULL);
+ digest256map_free(pending, NULL);
launch_descriptor_downloads(DIR_PURPOSE_FETCH_MICRODESC,
missing, NULL, now);
diff --git a/src/or/microdesc.h b/src/or/microdesc.h
index f858d9ffd7..fdfe8922ab 100644
--- a/src/or/microdesc.h
+++ b/src/or/microdesc.h
@@ -37,7 +37,7 @@ 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,
- digestmap_t *skip);
+ digest256map_t *skip);
void microdesc_free_(microdesc_t *md, const char *fname, int line);
#define microdesc_free(md) \
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 351b20c3af..21efdd129d 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1123,7 +1123,7 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c,
rs_new->last_dir_503_at = rs_old->last_dir_503_at;
if (tor_memeq(rs_old->descriptor_digest, rs_new->descriptor_digest,
- DIGEST_LEN)) { /* XXXX Change this to digest256_len */
+ DIGEST256_LEN)) {
/* And the same descriptor too! */
memcpy(&rs_new->dl_status, &rs_old->dl_status,sizeof(download_status_t));
}
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 53abc820f5..e0e01ec190 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1562,7 +1562,7 @@ update_router_have_minimum_dir_info(void)
* is back up and usable, and b) disable some activities that Tor
* should only do while circuits are working, like reachability tests
* and fetching bridge descriptors only over circuits. */
- can_complete_circuit = 0;
+ note_that_we_maybe_cant_complete_circuits();
control_event_client_status(LOG_NOTICE, "NOT_ENOUGH_DIR_INFO");
}
diff --git a/src/or/or.h b/src/or/or.h
index 6170c2119c..0de37452bd 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -119,6 +119,7 @@
* conflict with system-defined signals. */
#define SIGNEWNYM 129
#define SIGCLEARDNSCACHE 130
+#define SIGHEARTBEAT 131
#if (SIZEOF_CELL_T != 0)
/* On Irix, stdlib.h defines a cell_t type, so we need to make sure
@@ -676,6 +677,10 @@ typedef enum {
/* Negative reasons are internal: we never send them in a DESTROY or TRUNCATE
* call; they only go to the controller for tracking */
+
+/* Closing introduction point that were opened in parallel. */
+#define END_CIRC_REASON_IP_NOW_REDUNDANT -4
+
/** Our post-timeout circuit time measurement period expired.
* We must give up now */
#define END_CIRC_REASON_MEASUREMENT_EXPIRED -3
@@ -1426,6 +1431,18 @@ typedef struct or_handshake_state_t {
/** Length of Extended ORPort connection identifier. */
#define EXT_OR_CONN_ID_LEN DIGEST_LEN /* 20 */
+/*
+ * OR_CONN_HIGHWATER and OR_CONN_LOWWATER moved from connection_or.c so
+ * channeltls.c can see them too.
+ */
+
+/** When adding cells to an OR connection's outbuf, keep adding until the
+ * outbuf is at least this long, or we run out of cells. */
+#define OR_CONN_HIGHWATER (32*1024)
+
+/** Add cells to an OR connection's outbuf whenever the outbuf's data length
+ * drops below this size. */
+#define OR_CONN_LOWWATER (16*1024)
/** Subtype of connection_t for an "OR connection" -- that is, one that speaks
* cells over TLS. */
@@ -1517,6 +1534,12 @@ typedef struct or_connection_t {
/** Last emptied write token bucket in msec since midnight; only used if
* TB_EMPTY events are enabled. */
uint32_t write_emptied_time;
+
+ /*
+ * Count the number of bytes flushed out on this orconn, and the number of
+ * bytes TLS actually sent - used for overhead estimation for scheduling.
+ */
+ uint64_t bytes_xmitted, bytes_xmitted_by_tls;
} or_connection_t;
/** Subtype of connection_t for an "edge connection" -- that is, an entry (ap)
@@ -4225,8 +4248,18 @@ typedef struct {
/** How long (seconds) do we keep a guard before picking a new one? */
int GuardLifetime;
- /** Should we send the timestamps that pre-023 hidden services want? */
- int Support022HiddenServices;
+ /** Low-water mark for global scheduler - start sending when estimated
+ * queued size falls below this threshold.
+ */
+ uint64_t SchedulerLowWaterMark__;
+ /** High-water mark for global scheduler - stop sending when estimated
+ * queued size exceeds this threshold.
+ */
+ uint64_t SchedulerHighWaterMark__;
+ /** Flush size for global scheduler - flush this many cells at a time
+ * when sending.
+ */
+ int SchedulerMaxFlushCells__;
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
@@ -4998,15 +5031,31 @@ typedef enum {
/** Return value for router_add_to_routerlist() and dirserv_add_descriptor() */
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. */
ROUTER_BAD_EI = -1,
- ROUTER_WAS_NOT_NEW = -2,
+ /* Router descriptor was rejected because it is already known. */
+ ROUTER_IS_ALREADY_KNOWN = -2,
+ /* General purpose router was rejected, because it was not listed
+ * in consensus. */
ROUTER_NOT_IN_CONSENSUS = -3,
+ /* Router was neither in directory consensus nor in any of
+ * networkstatus documents. Caching it to access later.
+ * (Applies to fetched descriptors only.) */
ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS = -4,
+ /* Router was rejected by directory authority. */
ROUTER_AUTHDIR_REJECTS = -5,
+ /* Bridge descriptor was rejected because such bridge was not one
+ * of the bridges we have listed in our configuration. */
ROUTER_WAS_NOT_WANTED = -6,
- ROUTER_WAS_TOO_OLD = -7,
+ /* Router descriptor was rejected because it was older than
+ * OLD_ROUTER_DESC_MAX_AGE. */
+ ROUTER_WAS_TOO_OLD = -7, /* note contrast with 'NOT_NEW' */
} was_router_added_t;
/********************************* routerparse.c ************************/
diff --git a/src/or/relay.c b/src/or/relay.c
index 05c7b3c955..b95e5841e7 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -39,6 +39,7 @@
#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
+#include "scheduler.h"
static edge_connection_t *relay_lookup_conn(circuit_t *circ, cell_t *cell,
cell_direction_t cell_direction,
@@ -2591,8 +2592,8 @@ packed_cell_get_circid(const packed_cell_t *cell, int wide_circ_ids)
* queue of the first active circuit on <b>chan</b>, and write them to
* <b>chan</b>-&gt;outbuf. Return the number of cells written. Advance
* the active circuit pointer to the next active circuit in the ring. */
-int
-channel_flush_from_first_active_circuit(channel_t *chan, int max)
+MOCK_IMPL(int,
+channel_flush_from_first_active_circuit, (channel_t *chan, int max))
{
circuitmux_t *cmux = NULL;
int n_flushed = 0;
@@ -2868,14 +2869,8 @@ append_cell_to_circuit_queue(circuit_t *circ, channel_t *chan,
log_debug(LD_GENERAL, "Made a circuit active.");
}
- if (!channel_has_queued_writes(chan)) {
- /* There is no data at all waiting to be sent on the outbuf. Add a
- * cell, so that we can notice when it gets flushed, flushed_some can
- * get called, and we can start putting more data onto the buffer then.
- */
- log_debug(LD_GENERAL, "Primed a buffer.");
- channel_flush_from_first_active_circuit(chan, 1);
- }
+ /* New way: mark this as having waiting cells for the scheduler */
+ scheduler_channel_has_waiting_cells(chan);
}
/** Append an encoded value of <b>addr</b> to <b>payload_out</b>, which must
diff --git a/src/or/relay.h b/src/or/relay.h
index 73c399154d..351516aada 100644
--- a/src/or/relay.h
+++ b/src/or/relay.h
@@ -64,7 +64,8 @@ void append_cell_to_circuit_queue(circuit_t *circ, channel_t *chan,
cell_t *cell, cell_direction_t direction,
streamid_t fromstream);
void channel_unlink_all_circuits(channel_t *chan, smartlist_t *detached_out);
-int channel_flush_from_first_active_circuit(channel_t *chan, int max);
+MOCK_DECL(int, channel_flush_from_first_active_circuit,
+ (channel_t *chan, int max));
void assert_circuit_mux_okay(channel_t *chan);
void update_circuit_on_cmux_(circuit_t *circ, cell_direction_t direction,
const char *file, int lineno);
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 10d13a37bb..f351ae7161 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -130,16 +130,6 @@ rend_client_reextend_intro_circuit(origin_circuit_t *circ)
return result;
}
-/** Return true iff we should send timestamps in our INTRODUCE1 cells */
-static int
-rend_client_should_send_timestamp(void)
-{
- if (get_options()->Support022HiddenServices >= 0)
- return get_options()->Support022HiddenServices;
-
- return networkstatus_get_param(NULL, "Support022HiddenServices", 1, 0, 1);
-}
-
/** Called when we're trying to connect an ap conn; sends an INTRODUCE1 cell
* down introcirc if possible.
*/
@@ -251,14 +241,8 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
REND_DESC_COOKIE_LEN);
v3_shift += 2+REND_DESC_COOKIE_LEN;
}
- if (rend_client_should_send_timestamp()) {
- uint32_t now = (uint32_t)time(NULL);
- now += 300;
- now -= now % 600;
- set_uint32(tmp+v3_shift+1, htonl(now));
- } else {
- set_uint32(tmp+v3_shift+1, 0);
- }
+ /* Once this held a timestamp. */
+ set_uint32(tmp+v3_shift+1, 0);
v3_shift += 4;
} /* if version 2 only write version number */
else if (entry->parsed->protocols & (1<<2)) {
@@ -370,8 +354,7 @@ rend_client_rendcirc_has_opened(origin_circuit_t *circ)
}
/**
- * Called to close other intro circuits we launched in parallel
- * due to timeout.
+ * Called to close other intro circuits we launched in parallel.
*/
static void
rend_client_close_other_intros(const char *onion_address)
@@ -388,7 +371,7 @@ rend_client_close_other_intros(const char *onion_address)
log_info(LD_REND|LD_CIRC, "Closing introduction circuit %d that we "
"built in parallel (Purpose %d).", oc->global_identifier,
c->purpose);
- circuit_mark_for_close(c, END_CIRC_REASON_TIMEOUT);
+ circuit_mark_for_close(c, END_CIRC_REASON_IP_NOW_REDUNDANT);
}
}
}
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 18f1b43d08..df74b745a2 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -1034,10 +1034,14 @@ rend_cache_store_v2_desc_as_dir(const char *desc)
* If the descriptor's service ID does not match
* <b>rend_query</b>-\>onion_address, reject it.
*
+ * If the descriptor's descriptor ID doesn't match <b>desc_id_base32</b>,
+ * reject it.
+ *
* Return an appropriate rend_cache_store_status_t.
*/
rend_cache_store_status_t
rend_cache_store_v2_desc_as_client(const char *desc,
+ const char *desc_id_base32,
const rend_data_t *rend_query)
{
/*XXXX this seems to have a bit of duplicate code with
@@ -1064,10 +1068,19 @@ rend_cache_store_v2_desc_as_client(const char *desc,
time_t now = time(NULL);
char key[REND_SERVICE_ID_LEN_BASE32+2];
char service_id[REND_SERVICE_ID_LEN_BASE32+1];
+ char want_desc_id[DIGEST_LEN];
rend_cache_entry_t *e;
rend_cache_store_status_t retval = RCS_BADDESC;
tor_assert(rend_cache);
tor_assert(desc);
+ tor_assert(desc_id_base32);
+ memset(want_desc_id, 0, sizeof(want_desc_id));
+ if (base32_decode(want_desc_id, sizeof(want_desc_id),
+ desc_id_base32, strlen(desc_id_base32)) != 0) {
+ log_warn(LD_BUG, "Couldn't decode base32 %s for descriptor id.",
+ escaped_safe_str_client(desc_id_base32));
+ goto err;
+ }
/* Parse the descriptor. */
if (rend_parse_v2_service_descriptor(&parsed, desc_id, &intro_content,
&intro_size, &encoded_size,
@@ -1086,6 +1099,12 @@ rend_cache_store_v2_desc_as_client(const char *desc,
service_id, safe_str(rend_query->onion_address));
goto err;
}
+ if (tor_memneq(desc_id, want_desc_id, DIGEST_LEN)) {
+ log_warn(LD_REND, "Received service descriptor for %s with incorrect "
+ "descriptor ID.", service_id);
+ goto err;
+ }
+
/* Decode/decrypt introduction points. */
if (intro_content) {
int n_intro_points;
diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h
index abbb8b0849..186326a0c1 100644
--- a/src/or/rendcommon.h
+++ b/src/or/rendcommon.h
@@ -49,6 +49,7 @@ typedef enum {
rend_cache_store_status_t rend_cache_store_v2_desc_as_dir(const char *desc);
rend_cache_store_status_t rend_cache_store_v2_desc_as_client(const char *desc,
+ const char *desc_id_base32,
const rend_data_t *rend_query);
int rend_encode_v2_descriptors(smartlist_t *descs_out,
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 392f393317..196145e210 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -16,6 +16,7 @@
#include "circuituse.h"
#include "config.h"
#include "directory.h"
+#include "main.h"
#include "networkstatus.h"
#include "nodelist.h"
#include "rendclient.h"
@@ -95,6 +96,8 @@ typedef struct rend_service_port_config_t {
typedef struct rend_service_t {
/* Fields specified in config file */
char *directory; /**< where in the filesystem it stores it */
+ int dir_group_readable; /**< if 1, allow group read
+ permissions on directory */
smartlist_t *ports; /**< List of rend_service_port_config_t */
rend_auth_type_t auth_type; /**< Client authorization type or 0 if no client
* authorization is performed. */
@@ -359,6 +362,7 @@ rend_config_services(const or_options_t *options, int validate_only)
rend_service_t *service = NULL;
rend_service_port_config_t *portcfg;
smartlist_t *old_service_list = NULL;
+ int ok = 0;
if (!validate_only) {
old_service_list = rend_service_list;
@@ -369,87 +373,101 @@ rend_config_services(const or_options_t *options, int validate_only)
if (!strcasecmp(line->key, "HiddenServiceDir")) {
if (service) { /* register the one we just finished parsing */
if (validate_only)
- rend_service_free(service);
- else
- rend_add_service(service);
- }
- service = tor_malloc_zero(sizeof(rend_service_t));
- service->directory = tor_strdup(line->value);
- service->ports = smartlist_new();
- service->intro_period_started = time(NULL);
- service->n_intro_points_wanted = NUM_INTRO_POINTS_DEFAULT;
- continue;
- }
- if (!service) {
- log_warn(LD_CONFIG, "%s with no preceding HiddenServiceDir directive",
- line->key);
- rend_service_free(service);
- return -1;
- }
- if (!strcasecmp(line->key, "HiddenServicePort")) {
- portcfg = parse_port_config(line->value);
- if (!portcfg) {
- rend_service_free(service);
- return -1;
- }
- smartlist_add(service->ports, portcfg);
- } else if (!strcasecmp(line->key, "HiddenServiceAuthorizeClient")) {
- /* Parse auth type and comma-separated list of client names and add a
- * rend_authorized_client_t for each client to the service's list
- * of authorized clients. */
- smartlist_t *type_names_split, *clients;
- const char *authname;
- int num_clients;
- if (service->auth_type != REND_NO_AUTH) {
- log_warn(LD_CONFIG, "Got multiple HiddenServiceAuthorizeClient "
- "lines for a single service.");
- rend_service_free(service);
- return -1;
- }
- type_names_split = smartlist_new();
- smartlist_split_string(type_names_split, line->value, " ", 0, 2);
- if (smartlist_len(type_names_split) < 1) {
- log_warn(LD_BUG, "HiddenServiceAuthorizeClient has no value. This "
- "should have been prevented when parsing the "
- "configuration.");
- smartlist_free(type_names_split);
- rend_service_free(service);
- return -1;
- }
- authname = smartlist_get(type_names_split, 0);
- if (!strcasecmp(authname, "basic")) {
- service->auth_type = REND_BASIC_AUTH;
- } else if (!strcasecmp(authname, "stealth")) {
- service->auth_type = REND_STEALTH_AUTH;
- } else {
- log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains "
- "unrecognized auth-type '%s'. Only 'basic' or 'stealth' "
- "are recognized.",
- (char *) smartlist_get(type_names_split, 0));
- SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
- smartlist_free(type_names_split);
- rend_service_free(service);
- return -1;
- }
- service->clients = smartlist_new();
- if (smartlist_len(type_names_split) < 2) {
- log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains "
- "auth-type '%s', but no client names.",
- service->auth_type == REND_BASIC_AUTH ? "basic" : "stealth");
- SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
- smartlist_free(type_names_split);
- continue;
- }
- clients = smartlist_new();
- smartlist_split_string(clients, smartlist_get(type_names_split, 1),
- ",", SPLIT_SKIP_SPACE, 0);
- SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
- smartlist_free(type_names_split);
- /* Remove duplicate client names. */
- num_clients = smartlist_len(clients);
- smartlist_sort_strings(clients);
- smartlist_uniq_strings(clients);
- if (smartlist_len(clients) < num_clients) {
+ rend_service_free(service);
+ else
+ rend_add_service(service);
+ }
+ service = tor_malloc_zero(sizeof(rend_service_t));
+ service->directory = tor_strdup(line->value);
+ service->ports = smartlist_new();
+ service->intro_period_started = time(NULL);
+ service->n_intro_points_wanted = NUM_INTRO_POINTS_DEFAULT;
+ continue;
+ }
+ if (!service) {
+ log_warn(LD_CONFIG, "%s with no preceding HiddenServiceDir directive",
+ line->key);
+ rend_service_free(service);
+ return -1;
+ }
+ if (!strcasecmp(line->key, "HiddenServicePort")) {
+ portcfg = parse_port_config(line->value);
+ if (!portcfg) {
+ rend_service_free(service);
+ return -1;
+ }
+ smartlist_add(service->ports, portcfg);
+ } else if (!strcasecmp(line->key,
+ "HiddenServiceDirGroupReadable")) {
+ service->dir_group_readable = (int)tor_parse_long(line->value,
+ 10, 0, 1, &ok, NULL);
+ if (!ok) {
+ log_warn(LD_CONFIG,
+ "HiddenServiceDirGroupReadable should be 0 or 1, not %s",
+ line->value);
+ rend_service_free(service);
+ return -1;
+ }
+ log_info(LD_CONFIG,
+ "HiddenServiceDirGroupReadable=%d for %s",
+ service->dir_group_readable, service->directory);
+ } else if (!strcasecmp(line->key, "HiddenServiceAuthorizeClient")) {
+ /* Parse auth type and comma-separated list of client names and add a
+ * rend_authorized_client_t for each client to the service's list
+ * of authorized clients. */
+ smartlist_t *type_names_split, *clients;
+ const char *authname;
+ int num_clients;
+ if (service->auth_type != REND_NO_AUTH) {
+ log_warn(LD_CONFIG, "Got multiple HiddenServiceAuthorizeClient "
+ "lines for a single service.");
+ rend_service_free(service);
+ return -1;
+ }
+ type_names_split = smartlist_new();
+ smartlist_split_string(type_names_split, line->value, " ", 0, 2);
+ if (smartlist_len(type_names_split) < 1) {
+ log_warn(LD_BUG, "HiddenServiceAuthorizeClient has no value. This "
+ "should have been prevented when parsing the "
+ "configuration.");
+ smartlist_free(type_names_split);
+ rend_service_free(service);
+ return -1;
+ }
+ authname = smartlist_get(type_names_split, 0);
+ if (!strcasecmp(authname, "basic")) {
+ service->auth_type = REND_BASIC_AUTH;
+ } else if (!strcasecmp(authname, "stealth")) {
+ service->auth_type = REND_STEALTH_AUTH;
+ } else {
+ log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains "
+ "unrecognized auth-type '%s'. Only 'basic' or 'stealth' "
+ "are recognized.",
+ (char *) smartlist_get(type_names_split, 0));
+ SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
+ smartlist_free(type_names_split);
+ rend_service_free(service);
+ return -1;
+ }
+ service->clients = smartlist_new();
+ if (smartlist_len(type_names_split) < 2) {
+ log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains "
+ "auth-type '%s', but no client names.",
+ service->auth_type == REND_BASIC_AUTH ? "basic" : "stealth");
+ SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
+ smartlist_free(type_names_split);
+ continue;
+ }
+ clients = smartlist_new();
+ smartlist_split_string(clients, smartlist_get(type_names_split, 1),
+ ",", SPLIT_SKIP_SPACE, 0);
+ SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
+ smartlist_free(type_names_split);
+ /* Remove duplicate client names. */
+ num_clients = smartlist_len(clients);
+ smartlist_sort_strings(clients);
+ smartlist_uniq_strings(clients);
+ if (smartlist_len(clients) < num_clients) {
log_info(LD_CONFIG, "HiddenServiceAuthorizeClient contains %d "
"duplicate client name(s); removing.",
num_clients - smartlist_len(clients));
@@ -513,10 +531,21 @@ rend_config_services(const or_options_t *options, int validate_only)
}
}
if (service) {
- if (validate_only)
+ cpd_check_t check_opts = CPD_CHECK_MODE_ONLY;
+ if (service->dir_group_readable) {
+ check_opts |= CPD_GROUP_READ;
+ }
+
+ if (check_private_dir(service->directory, check_opts, options->User) < 0) {
rend_service_free(service);
- else
+ return -1;
+ }
+
+ if (validate_only) {
+ rend_service_free(service);
+ } else {
rend_add_service(service);
+ }
}
/* If this is a reload and there were hidden services configured before,
@@ -693,10 +722,23 @@ rend_service_load_keys(rend_service_t *s)
{
char fname[512];
char buf[128];
+ cpd_check_t check_opts = CPD_CREATE;
+ if (s->dir_group_readable) {
+ check_opts |= CPD_GROUP_READ;
+ }
/* Check/create directory */
- if (check_private_dir(s->directory, CPD_CREATE, get_options()->User) < 0)
+ if (check_private_dir(s->directory, check_opts, get_options()->User) < 0) {
return -1;
+ }
+#ifndef _WIN32
+ if (s->dir_group_readable) {
+ /* Only new dirs created get new opts, also enforce group read. */
+ if (chmod(s->directory, 0750)) {
+ log_warn(LD_FS,"Unable to make %s group-readable.", s->directory);
+ }
+ }
+#endif
/* Load key */
if (strlcpy(fname,s->directory,sizeof(fname)) >= sizeof(fname) ||
@@ -706,7 +748,7 @@ rend_service_load_keys(rend_service_t *s)
s->directory);
return -1;
}
- s->private_key = init_key_from_file(fname, 1, LOG_ERR);
+ s->private_key = init_key_from_file(fname, 1, LOG_ERR, 0);
if (!s->private_key)
return -1;
@@ -733,6 +775,15 @@ rend_service_load_keys(rend_service_t *s)
memwipe(buf, 0, sizeof(buf));
return -1;
}
+#ifndef _WIN32
+ if (s->dir_group_readable) {
+ /* Also verify hostname file created with group read. */
+ if (chmod(fname, 0640))
+ log_warn(LD_FS,"Unable to make hidden hostname file %s group-readable.",
+ fname);
+ }
+#endif
+
memwipe(buf, 0, sizeof(buf));
/* If client authorization is configured, load or generate keys. */
@@ -3028,15 +3079,20 @@ rend_services_introduce(void)
int intro_point_set_changed, prev_intro_nodes;
unsigned int n_intro_points_unexpired;
unsigned int n_intro_points_to_open;
- smartlist_t *intro_nodes;
time_t now;
const or_options_t *options = get_options();
+ /* List of nodes we need to _exclude_ when choosing a new node to establish
+ * an intro point to. */
+ smartlist_t *exclude_nodes;
+
+ if (!have_completed_a_circuit())
+ return;
- intro_nodes = smartlist_new();
+ exclude_nodes = smartlist_new();
now = time(NULL);
for (i=0; i < smartlist_len(rend_service_list); ++i) {
- smartlist_clear(intro_nodes);
+ smartlist_clear(exclude_nodes);
service = smartlist_get(rend_service_list, i);
tor_assert(service);
@@ -3135,8 +3191,10 @@ rend_services_introduce(void)
if (intro != NULL && intro->time_expiring == -1)
++n_intro_points_unexpired;
+ /* Add the valid node to the exclusion list so we don't try to establish
+ * an introduction point to it again. */
if (node)
- smartlist_add(intro_nodes, (void*)node);
+ smartlist_add(exclude_nodes, (void*)node);
} SMARTLIST_FOREACH_END(intro);
if (!intro_point_set_changed &&
@@ -3172,7 +3230,7 @@ rend_services_introduce(void)
router_crn_flags_t flags = CRN_NEED_UPTIME|CRN_NEED_DESC;
if (get_options()->AllowInvalid_ & ALLOW_INVALID_INTRODUCTION)
flags |= CRN_ALLOW_INVALID;
- node = router_choose_random_node(intro_nodes,
+ node = router_choose_random_node(exclude_nodes,
options->ExcludeNodes, flags);
if (!node) {
log_warn(LD_REND,
@@ -3183,7 +3241,9 @@ rend_services_introduce(void)
break;
}
intro_point_set_changed = 1;
- smartlist_add(intro_nodes, (void*)node);
+ /* Add the choosen node to the exclusion list in order to avoid to pick
+ * it again in the next iteration. */
+ smartlist_add(exclude_nodes, (void*)node);
intro = tor_malloc_zero(sizeof(rend_intro_point_t));
intro->extend_info = extend_info_from_node(node, 0);
intro->intro_key = crypto_pk_new();
@@ -3212,7 +3272,7 @@ rend_services_introduce(void)
}
}
}
- smartlist_free(intro_nodes);
+ smartlist_free(exclude_nodes);
}
/** Regenerate and upload rendezvous service descriptors for all
diff --git a/src/or/router.c b/src/or/router.c
index 94ae2e78c4..f0317aa549 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -391,13 +391,15 @@ log_new_relay_greeting(void)
already_logged = 1;
}
-/** Try to read an RSA key from <b>fname</b>. If <b>fname</b> doesn't exist,
- * or is empty, and <b>generate</b> is true, create a new RSA key and save it
- * in <b>fname</b>. Return the read/created key, or NULL on error. Log all
- * errors at level <b>severity</b>.
+/** Try to read an RSA key from <b>fname</b>. If <b>fname</b> doesn't exist
+ * and <b>generate</b> is true, create a new RSA key and save it in
+ * <b>fname</b>. Return the read/created key, or NULL on error. Log all
+ * errors at level <b>severity</b>. If <b>log_greeting</b> is non-zero and a
+ * new key was created, log_new_relay_greeting() is called.
*/
crypto_pk_t *
-init_key_from_file(const char *fname, int generate, int severity)
+init_key_from_file(const char *fname, int generate, int severity,
+ int log_greeting)
{
crypto_pk_t *prkey = NULL;
@@ -439,7 +441,9 @@ init_key_from_file(const char *fname, int generate, int severity)
goto error;
}
log_info(LD_GENERAL, "Generated key seems valid");
- log_new_relay_greeting();
+ if (log_greeting) {
+ log_new_relay_greeting();
+ }
if (crypto_pk_write_private_key_to_filename(prkey, fname)) {
tor_log(severity, LD_FS,
"Couldn't write generated key to \"%s\".", fname);
@@ -554,7 +558,7 @@ load_authority_keyset(int legacy, crypto_pk_t **key_out,
fname = get_datadir_fname2("keys",
legacy ? "legacy_signing_key" : "authority_signing_key");
- signing_key = init_key_from_file(fname, 0, LOG_INFO);
+ signing_key = init_key_from_file(fname, 0, LOG_INFO, 0);
if (!signing_key) {
log_warn(LD_DIR, "No version 3 directory key found in %s", fname);
goto done;
@@ -837,7 +841,7 @@ init_keys(void)
/* 1b. Read identity key. Make it if none is found. */
keydir = get_datadir_fname2("keys", "secret_id_key");
log_info(LD_GENERAL,"Reading/making identity key \"%s\"...",keydir);
- prkey = init_key_from_file(keydir, 1, LOG_ERR);
+ prkey = init_key_from_file(keydir, 1, LOG_ERR, 1);
tor_free(keydir);
if (!prkey) return -1;
set_server_identity_key(prkey);
@@ -860,7 +864,7 @@ init_keys(void)
/* 2. Read onion key. Make it if none is found. */
keydir = get_datadir_fname2("keys", "secret_onion_key");
log_info(LD_GENERAL,"Reading/making onion key \"%s\"...",keydir);
- prkey = init_key_from_file(keydir, 1, LOG_ERR);
+ prkey = init_key_from_file(keydir, 1, LOG_ERR, 1);
tor_free(keydir);
if (!prkey) return -1;
set_onion_key(prkey);
@@ -887,7 +891,7 @@ init_keys(void)
if (!lastonionkey && file_status(keydir) == FN_FILE) {
/* Load keys from non-empty files only.
* Missing old keys won't be replaced with freshly generated keys. */
- prkey = init_key_from_file(keydir, 0, LOG_ERR);
+ prkey = init_key_from_file(keydir, 0, LOG_ERR, 0);
if (prkey)
lastonionkey = prkey;
}
diff --git a/src/or/router.h b/src/or/router.h
index 16d3845be1..b5d7f11053 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -29,7 +29,7 @@ crypto_pk_t *get_my_v3_legacy_signing_key(void);
void dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last);
void rotate_onion_key(void);
crypto_pk_t *init_key_from_file(const char *fname, int generate,
- int severity);
+ int severity, int log_greeting);
void v3_authority_check_key_expiry(void);
di_digest256_map_t *construct_ntor_key_map(void);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 5c08f5990f..c9d2f8ad28 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -79,6 +79,7 @@ static const char *signed_descriptor_get_body_impl(
const signed_descriptor_t *desc,
int with_annotations);
static void list_pending_downloads(digestmap_t *result,
+ digest256map_t *result256,
int purpose, const char *prefix);
static void list_pending_fpsk_downloads(fp_pair_map_t *result);
static void launch_dummy_descriptor_download_as_needed(time_t now,
@@ -717,7 +718,8 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
* First, we get the lists of already pending downloads so we don't
* duplicate effort.
*/
- list_pending_downloads(pending_id, DIR_PURPOSE_FETCH_CERTIFICATE, "fp/");
+ list_pending_downloads(pending_id, NULL,
+ DIR_PURPOSE_FETCH_CERTIFICATE, "fp/");
list_pending_fpsk_downloads(pending_cert);
/*
@@ -1535,7 +1537,7 @@ dirserver_choose_by_weight(const smartlist_t *servers, double authority_weight)
u64_dbl_t *weights;
const dir_server_t *ds;
- weights = tor_calloc(sizeof(u64_dbl_t), n);
+ weights = tor_calloc(n, sizeof(u64_dbl_t));
for (i = 0; i < n; ++i) {
ds = smartlist_get(servers, i);
weights[i].dbl = ds->weight;
@@ -2029,9 +2031,10 @@ compute_weighted_bandwidths(const smartlist_t *sl,
if (Wg < 0 || Wm < 0 || We < 0 || Wd < 0 || Wgb < 0 || Wmb < 0 || Wdb < 0
|| Web < 0) {
log_debug(LD_CIRC,
- "Got negative bandwidth weights. Defaulting to old selection"
+ "Got negative bandwidth weights. Defaulting to naive selection"
" algorithm.");
- return -1; // Use old algorithm.
+ Wg = Wm = We = Wd = weight_scale;
+ Wgb = Wmb = Web = Wdb = weight_scale;
}
Wg /= weight_scale;
@@ -2044,9 +2047,10 @@ compute_weighted_bandwidths(const smartlist_t *sl,
Web /= weight_scale;
Wdb /= weight_scale;
- bandwidths = tor_calloc(sizeof(u64_dbl_t), smartlist_len(sl));
+ bandwidths = tor_calloc(smartlist_len(sl), sizeof(u64_dbl_t));
// Cycle through smartlist and total the bandwidth.
+ static int warned_missing_bw = 0;
SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0;
double weight = 1;
@@ -2055,15 +2059,18 @@ compute_weighted_bandwidths(const smartlist_t *sl,
is_dir = node_is_dir(node);
if (node->rs) {
if (!node->rs->has_bandwidth) {
- tor_free(bandwidths);
/* This should never happen, unless all the authorites downgrade
* to 0.2.0 or rogue routerstatuses get inserted into our consensus. */
- log_warn(LD_BUG,
- "Consensus is not listing bandwidths. Defaulting back to "
- "old router selection algorithm.");
- return -1;
+ if (! warned_missing_bw) {
+ log_warn(LD_BUG,
+ "Consensus is missing some bandwidths. Using a naive "
+ "router selection algorithm");
+ warned_missing_bw = 1;
+ }
+ this_bw = 30000; /* Chosen arbitrarily */
+ } else {
+ this_bw = kb_to_bytes(node->rs->bandwidth_kb);
}
- this_bw = kb_to_bytes(node->rs->bandwidth_kb);
} else if (node->ri) {
/* bridge or other descriptor not in our consensus */
this_bw = bridge_get_advertised_bandwidth_bounded(node->ri);
@@ -2140,226 +2147,13 @@ frac_nodes_with_descriptors(const smartlist_t *sl,
return present / total;
}
-/** Helper function:
- * choose a random node_t element of smartlist <b>sl</b>, weighted by
- * the advertised bandwidth of each element.
- *
- * If <b>rule</b>==WEIGHT_FOR_EXIT. we're picking an exit node: consider all
- * nodes' bandwidth equally regardless of their Exit status, since there may
- * be some in the list because they exit to obscure ports. If
- * <b>rule</b>==NO_WEIGHTING, we're picking a non-exit node: weight
- * exit-node's bandwidth less depending on the smallness of the fraction of
- * Exit-to-total bandwidth. If <b>rule</b>==WEIGHT_FOR_GUARD, we're picking a
- * guard node: consider all guard's bandwidth equally. Otherwise, weight
- * guards proportionally less.
- */
-static const node_t *
-smartlist_choose_node_by_bandwidth(const smartlist_t *sl,
- bandwidth_weight_rule_t rule)
-{
- unsigned int i;
- u64_dbl_t *bandwidths;
- int is_exit;
- int is_guard;
- int is_fast;
- double total_nonexit_bw = 0, total_exit_bw = 0;
- double total_nonguard_bw = 0, total_guard_bw = 0;
- double exit_weight;
- double guard_weight;
- int n_unknown = 0;
- bitarray_t *fast_bits;
- bitarray_t *exit_bits;
- bitarray_t *guard_bits;
-
- // This function does not support WEIGHT_FOR_DIR
- // or WEIGHT_FOR_MID
- if (rule == WEIGHT_FOR_DIR || rule == WEIGHT_FOR_MID) {
- rule = NO_WEIGHTING;
- }
-
- /* Can't choose exit and guard at same time */
- tor_assert(rule == NO_WEIGHTING ||
- rule == WEIGHT_FOR_EXIT ||
- rule == WEIGHT_FOR_GUARD);
-
- if (smartlist_len(sl) == 0) {
- log_info(LD_CIRC,
- "Empty routerlist passed in to old node selection for rule %s",
- bandwidth_weight_rule_to_string(rule));
- return NULL;
- }
-
- /* First count the total bandwidth weight, and make a list
- * of each value. We use UINT64_MAX to indicate "unknown". */
- bandwidths = tor_calloc(sizeof(u64_dbl_t), smartlist_len(sl));
- fast_bits = bitarray_init_zero(smartlist_len(sl));
- exit_bits = bitarray_init_zero(smartlist_len(sl));
- guard_bits = bitarray_init_zero(smartlist_len(sl));
-
- /* Iterate over all the routerinfo_t or routerstatus_t, and */
- SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
- /* first, learn what bandwidth we think i has */
- int is_known = 1;
- uint32_t this_bw = 0;
- i = node_sl_idx;
-
- is_exit = node_is_good_exit(node);
- is_guard = node->is_possible_guard;
- if (node->rs) {
- if (node->rs->has_bandwidth) {
- this_bw = kb_to_bytes(node->rs->bandwidth_kb);
- } else { /* guess */
- is_known = 0;
- }
- } else if (node->ri) {
- /* Must be a bridge if we're willing to use it */
- this_bw = bridge_get_advertised_bandwidth_bounded(node->ri);
- }
-
- if (is_exit)
- bitarray_set(exit_bits, i);
- if (is_guard)
- bitarray_set(guard_bits, i);
- if (node->is_fast)
- bitarray_set(fast_bits, i);
-
- if (is_known) {
- bandwidths[i].dbl = this_bw;
- if (is_guard)
- total_guard_bw += this_bw;
- else
- total_nonguard_bw += this_bw;
- if (is_exit)
- total_exit_bw += this_bw;
- else
- total_nonexit_bw += this_bw;
- } else {
- ++n_unknown;
- bandwidths[i].dbl = -1.0;
- }
- } SMARTLIST_FOREACH_END(node);
-
-#define EPSILON .1
-
- /* Now, fill in the unknown values. */
- if (n_unknown) {
- int32_t avg_fast, avg_slow;
- if (total_exit_bw+total_nonexit_bw < EPSILON) {
- /* if there's some bandwidth, there's at least one known router,
- * so no worries about div by 0 here */
- int n_known = smartlist_len(sl)-n_unknown;
- avg_fast = avg_slow = (int32_t)
- ((total_exit_bw+total_nonexit_bw)/((uint64_t) n_known));
- } else {
- avg_fast = 40000;
- avg_slow = 20000;
- }
- for (i=0; i<(unsigned)smartlist_len(sl); ++i) {
- if (bandwidths[i].dbl >= 0.0)
- continue;
- is_fast = bitarray_is_set(fast_bits, i);
- is_exit = bitarray_is_set(exit_bits, i);
- is_guard = bitarray_is_set(guard_bits, i);
- bandwidths[i].dbl = is_fast ? avg_fast : avg_slow;
- if (is_exit)
- total_exit_bw += bandwidths[i].dbl;
- else
- total_nonexit_bw += bandwidths[i].dbl;
- if (is_guard)
- total_guard_bw += bandwidths[i].dbl;
- else
- total_nonguard_bw += bandwidths[i].dbl;
- }
- }
-
- /* If there's no bandwidth at all, pick at random. */
- if (total_exit_bw+total_nonexit_bw < EPSILON) {
- tor_free(bandwidths);
- tor_free(fast_bits);
- tor_free(exit_bits);
- tor_free(guard_bits);
- return smartlist_choose(sl);
- }
-
- /* Figure out how to weight exits and guards */
- {
- double all_bw = U64_TO_DBL(total_exit_bw+total_nonexit_bw);
- double exit_bw = U64_TO_DBL(total_exit_bw);
- double guard_bw = U64_TO_DBL(total_guard_bw);
- /*
- * For detailed derivation of this formula, see
- * http://archives.seul.org/or/dev/Jul-2007/msg00056.html
- */
- if (rule == WEIGHT_FOR_EXIT || total_exit_bw<EPSILON)
- exit_weight = 1.0;
- else
- exit_weight = 1.0 - all_bw/(3.0*exit_bw);
-
- if (rule == WEIGHT_FOR_GUARD || total_guard_bw<EPSILON)
- guard_weight = 1.0;
- else
- guard_weight = 1.0 - all_bw/(3.0*guard_bw);
-
- if (exit_weight <= 0.0)
- exit_weight = 0.0;
-
- if (guard_weight <= 0.0)
- guard_weight = 0.0;
-
- for (i=0; i < (unsigned)smartlist_len(sl); i++) {
- tor_assert(bandwidths[i].dbl >= 0.0);
-
- is_exit = bitarray_is_set(exit_bits, i);
- is_guard = bitarray_is_set(guard_bits, i);
- if (is_exit && is_guard)
- bandwidths[i].dbl *= exit_weight * guard_weight;
- else if (is_guard)
- bandwidths[i].dbl *= guard_weight;
- else if (is_exit)
- bandwidths[i].dbl *= exit_weight;
- }
- }
-
-#if 0
- log_debug(LD_CIRC, "Total weighted bw = "U64_FORMAT
- ", exit bw = "U64_FORMAT
- ", nonexit bw = "U64_FORMAT", exit weight = %f "
- "(for exit == %d)"
- ", guard bw = "U64_FORMAT
- ", nonguard bw = "U64_FORMAT", guard weight = %f "
- "(for guard == %d)",
- U64_PRINTF_ARG(total_bw),
- U64_PRINTF_ARG(total_exit_bw), U64_PRINTF_ARG(total_nonexit_bw),
- exit_weight, (int)(rule == WEIGHT_FOR_EXIT),
- U64_PRINTF_ARG(total_guard_bw), U64_PRINTF_ARG(total_nonguard_bw),
- guard_weight, (int)(rule == WEIGHT_FOR_GUARD));
-#endif
-
- scale_array_elements_to_u64(bandwidths, smartlist_len(sl), NULL);
-
- {
- int idx = choose_array_element_by_weight(bandwidths,
- smartlist_len(sl));
- tor_free(bandwidths);
- tor_free(fast_bits);
- tor_free(exit_bits);
- tor_free(guard_bits);
- return idx < 0 ? NULL : smartlist_get(sl, idx);
- }
-}
-
/** Choose a random element of status list <b>sl</b>, weighted by
* the advertised bandwidth of each node */
const node_t *
node_sl_choose_by_bandwidth(const smartlist_t *sl,
bandwidth_weight_rule_t rule)
{ /*XXXX MOVE */
- const node_t *ret;
- if ((ret = smartlist_choose_node_by_bandwidth_weights(sl, rule))) {
- return ret;
- } else {
- return smartlist_choose_node_by_bandwidth(sl, rule);
- }
+ return smartlist_choose_node_by_bandwidth_weights(sl, rule);
}
/** Return a random running node from the nodelist. Never
@@ -2944,6 +2738,7 @@ MOCK_IMPL(STATIC was_router_added_t,
extrainfo_insert,(routerlist_t *rl, extrainfo_t *ei))
{
was_router_added_t r;
+ const char *compatibility_error_msg;
routerinfo_t *ri = rimap_get(rl->identity_map,
ei->cache_info.identity_digest);
signed_descriptor_t *sd =
@@ -2960,9 +2755,14 @@ extrainfo_insert,(routerlist_t *rl, extrainfo_t *ei))
r = ROUTER_NOT_IN_CONSENSUS;
goto done;
}
- if (routerinfo_incompatible_with_extrainfo(ri, ei, sd, NULL)) {
+ if (routerinfo_incompatible_with_extrainfo(ri, ei, sd,
+ &compatibility_error_msg)) {
r = (ri->cache_info.extrainfo_is_bogus) ?
ROUTER_BAD_EI : ROUTER_NOT_IN_CONSENSUS;
+
+ log_warn(LD_DIR,"router info incompatible with extra info (reason: %s)",
+ compatibility_error_msg);
+
goto done;
}
@@ -3375,7 +3175,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
router_describe(router));
*msg = "Router descriptor was not new.";
routerinfo_free(router);
- return ROUTER_WAS_NOT_NEW;
+ return ROUTER_IS_ALREADY_KNOWN;
}
}
@@ -3460,7 +3260,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
&routerlist->desc_store);
routerlist_insert_old(routerlist, router);
*msg = "Router descriptor was not new.";
- return ROUTER_WAS_NOT_NEW;
+ return ROUTER_IS_ALREADY_KNOWN;
} else {
/* Same key, and either new, or listed in the consensus. */
log_debug(LD_DIR, "Replacing entry for router %s",
@@ -3583,9 +3383,9 @@ routerlist_remove_old_cached_routers_with_id(time_t now,
n_extra = n - mdpr;
}
- lifespans = tor_calloc(sizeof(struct duration_idx_t), n);
- rmv = tor_calloc(sizeof(uint8_t), n);
- must_keep = tor_calloc(sizeof(uint8_t), n);
+ lifespans = tor_calloc(n, sizeof(struct duration_idx_t));
+ rmv = tor_calloc(n, sizeof(uint8_t));
+ must_keep = tor_calloc(n, sizeof(uint8_t));
/* Set lifespans to contain the lifespan and index of each server. */
/* Set rmv[i-lo]=1 if we're going to remove a server for being too old. */
for (i = lo; i <= hi; ++i) {
@@ -4269,7 +4069,7 @@ clear_dir_servers(void)
* corresponding elements of <b>result</b> to a nonzero value.
*/
static void
-list_pending_downloads(digestmap_t *result,
+list_pending_downloads(digestmap_t *result, digest256map_t *result256,
int purpose, const char *prefix)
{
const size_t p_len = strlen(prefix);
@@ -4279,7 +4079,7 @@ list_pending_downloads(digestmap_t *result,
if (purpose == DIR_PURPOSE_FETCH_MICRODESC)
flags = DSR_DIGEST256|DSR_BASE64;
- tor_assert(result);
+ tor_assert(result || result256);
SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) {
if (conn->type == CONN_TYPE_DIR &&
@@ -4292,11 +4092,19 @@ list_pending_downloads(digestmap_t *result,
}
} SMARTLIST_FOREACH_END(conn);
- SMARTLIST_FOREACH(tmp, char *, d,
+ if (result) {
+ SMARTLIST_FOREACH(tmp, char *, d,
{
digestmap_set(result, d, (void*)1);
tor_free(d);
});
+ } else if (result256) {
+ SMARTLIST_FOREACH(tmp, uint8_t *, d,
+ {
+ digest256map_set(result256, d, (void*)1);
+ tor_free(d);
+ });
+ }
smartlist_free(tmp);
}
@@ -4308,20 +4116,16 @@ list_pending_descriptor_downloads(digestmap_t *result, int extrainfo)
{
int purpose =
extrainfo ? DIR_PURPOSE_FETCH_EXTRAINFO : DIR_PURPOSE_FETCH_SERVERDESC;
- list_pending_downloads(result, purpose, "d/");
+ list_pending_downloads(result, NULL, purpose, "d/");
}
/** For every microdescriptor we are currently downloading by descriptor
- * digest, set result[d] to (void*)1. (Note that microdescriptor digests
- * are 256-bit, and digestmap_t only holds 160-bit digests, so we're only
- * getting the first 20 bytes of each digest here.)
- *
- * XXXX Let there be a digestmap256_t, and use that instead.
+ * digest, set result[d] to (void*)1.
*/
void
-list_pending_microdesc_downloads(digestmap_t *result)
+list_pending_microdesc_downloads(digest256map_t *result)
{
- list_pending_downloads(result, DIR_PURPOSE_FETCH_MICRODESC, "d/");
+ list_pending_downloads(NULL, result, DIR_PURPOSE_FETCH_MICRODESC, "d/");
}
/** For every certificate we are currently downloading by (identity digest,
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index ac6f95b3ef..e73e69b63a 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -118,7 +118,7 @@ WRA_WAS_ADDED(was_router_added_t s) {
static INLINE int WRA_WAS_OUTDATED(was_router_added_t s)
{
return (s == ROUTER_WAS_TOO_OLD ||
- s == ROUTER_WAS_NOT_NEW ||
+ s == ROUTER_IS_ALREADY_KNOWN ||
s == ROUTER_NOT_IN_CONSENSUS ||
s == ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS);
}
@@ -196,7 +196,7 @@ int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
int hid_serv_acting_as_directory(void);
int hid_serv_responsible_for_desc_id(const char *id);
-void list_pending_microdesc_downloads(digestmap_t *result);
+void list_pending_microdesc_downloads(digest256map_t *result);
void launch_descriptor_downloads(int purpose,
smartlist_t *downloadable,
const routerstatus_t *source,
diff --git a/src/or/scheduler.c b/src/or/scheduler.c
new file mode 100644
index 0000000000..d1a15aacb2
--- /dev/null
+++ b/src/or/scheduler.c
@@ -0,0 +1,709 @@
+/* * Copyright (c) 2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file scheduler.c
+ * \brief Relay scheduling system
+ **/
+
+#include "or.h"
+
+#define TOR_CHANNEL_INTERNAL_ /* For channel_flush_some_cells() */
+#include "channel.h"
+
+#include "compat_libevent.h"
+#define SCHEDULER_PRIVATE_
+#include "scheduler.h"
+
+#ifdef HAVE_EVENT2_EVENT_H
+#include <event2/event.h>
+#else
+#include <event.h>
+#endif
+
+/*
+ * Scheduler high/low watermarks
+ */
+
+static uint32_t sched_q_low_water = 16384;
+static uint32_t sched_q_high_water = 32768;
+
+/*
+ * Maximum cells to flush in a single call to channel_flush_some_cells();
+ * setting this low means more calls, but too high and we could overshoot
+ * sched_q_high_water.
+ */
+
+static uint32_t sched_max_flush_cells = 16;
+
+/*
+ * Write scheduling works by keeping track of which channels can
+ * accept cells, and have cells to write. From the scheduler's perspective,
+ * a channel can be in four possible states:
+ *
+ * 1.) Not open for writes, no cells to send
+ * - Not much to do here, and the channel will have scheduler_state ==
+ * SCHED_CHAN_IDLE
+ * - Transitions from:
+ * - Open for writes/has cells by simultaneously draining all circuit
+ * queues and filling the output buffer.
+ * - Transitions to:
+ * - Not open for writes/has cells by arrival of cells on an attached
+ * circuit (this would be driven from append_cell_to_circuit_queue())
+ * - Open for writes/no cells by a channel type specific path;
+ * driven from connection_or_flushed_some() for channel_tls_t.
+ *
+ * 2.) Open for writes, no cells to send
+ * - Not much here either; this will be the state an idle but open channel
+ * can be expected to settle in. It will have scheduler_state ==
+ * SCHED_CHAN_WAITING_FOR_CELLS
+ * - Transitions from:
+ * - Not open for writes/no cells by flushing some of the output
+ * buffer.
+ * - Open for writes/has cells by the scheduler moving cells from
+ * circuit queues to channel output queue, but not having enough
+ * to fill the output queue.
+ * - Transitions to:
+ * - Open for writes/has cells by arrival of new cells on an attached
+ * circuit, in append_cell_to_circuit_queue()
+ *
+ * 3.) Not open for writes, cells to send
+ * - This is the state of a busy circuit limited by output bandwidth;
+ * cells have piled up in the circuit queues waiting to be relayed.
+ * The channel will have scheduler_state == SCHED_CHAN_WAITING_TO_WRITE.
+ * - Transitions from:
+ * - Not open for writes/no cells by arrival of cells on an attached
+ * circuit
+ * - Open for writes/has cells by filling an output buffer without
+ * draining all cells from attached circuits
+ * - Transitions to:
+ * - Opens for writes/has cells by draining some of the output buffer
+ * via the connection_or_flushed_some() path (for channel_tls_t).
+ *
+ * 4.) Open for writes, cells to send
+ * - This connection is ready to relay some cells and waiting for
+ * the scheduler to choose it. The channel will have scheduler_state ==
+ * SCHED_CHAN_PENDING.
+ * - Transitions from:
+ * - Not open for writes/has cells by the connection_or_flushed_some()
+ * path
+ * - Open for writes/no cells by the append_cell_to_circuit_queue()
+ * path
+ * - Transitions to:
+ * - Not open for writes/no cells by draining all circuit queues and
+ * simultaneously filling the output buffer.
+ * - Not open for writes/has cells by writing enough cells to fill the
+ * output buffer
+ * - Open for writes/no cells by draining all attached circuit queues
+ * without also filling the output buffer
+ *
+ * Other event-driven parts of the code move channels between these scheduling
+ * states by calling scheduler functions; the scheduler only runs on open-for-
+ * writes/has-cells channels and is the only path for those to transition to
+ * other states. The scheduler_run() function gives us the opportunity to do
+ * scheduling work, and is called from other scheduler functions whenever a
+ * state transition occurs, and periodically from the main event loop.
+ */
+
+/* Scheduler global data structures */
+
+/*
+ * We keep a list of channels that are pending - i.e, have cells to write
+ * and can accept them to send. The enum scheduler_state in channel_t
+ * is reserved for our use.
+ */
+
+/* Pqueue of channels that can write and have cells (pending work) */
+STATIC smartlist_t *channels_pending = NULL;
+
+/*
+ * This event runs the scheduler from its callback, and is manually
+ * activated whenever a channel enters open for writes/cells to send.
+ */
+
+STATIC struct event *run_sched_ev = NULL;
+
+/*
+ * Queue heuristic; this is not the queue size, but an 'effective queuesize'
+ * that ages out contributions from stalled channels.
+ */
+
+STATIC uint64_t queue_heuristic = 0;
+
+/*
+ * Timestamp for last queue heuristic update
+ */
+
+STATIC time_t queue_heuristic_timestamp = 0;
+
+/* Scheduler static function declarations */
+
+static void scheduler_evt_callback(evutil_socket_t fd,
+ short events, void *arg);
+static int scheduler_more_work(void);
+static void scheduler_retrigger(void);
+#if 0
+static void scheduler_trigger(void);
+#endif
+
+/* Scheduler function implementations */
+
+/** Free everything and shut down the scheduling system */
+
+void
+scheduler_free_all(void)
+{
+ log_debug(LD_SCHED, "Shutting down scheduler");
+
+ if (run_sched_ev) {
+ event_del(run_sched_ev);
+ tor_event_free(run_sched_ev);
+ run_sched_ev = NULL;
+ }
+
+ if (channels_pending) {
+ smartlist_free(channels_pending);
+ channels_pending = NULL;
+ }
+}
+
+/**
+ * Comparison function to use when sorting pending channels
+ */
+
+MOCK_IMPL(STATIC int,
+scheduler_compare_channels, (const void *c1_v, const void *c2_v))
+{
+ channel_t *c1 = NULL, *c2 = NULL;
+ /* These are a workaround for -Wbad-function-cast throwing a fit */
+ const circuitmux_policy_t *p1, *p2;
+ uintptr_t p1_i, p2_i;
+
+ tor_assert(c1_v);
+ tor_assert(c2_v);
+
+ c1 = (channel_t *)(c1_v);
+ c2 = (channel_t *)(c2_v);
+
+ tor_assert(c1);
+ tor_assert(c2);
+
+ if (c1 != c2) {
+ if (circuitmux_get_policy(c1->cmux) ==
+ circuitmux_get_policy(c2->cmux)) {
+ /* Same cmux policy, so use the mux comparison */
+ return circuitmux_compare_muxes(c1->cmux, c2->cmux);
+ } else {
+ /*
+ * Different policies; not important to get this edge case perfect
+ * because the current code never actually gives different channels
+ * different cmux policies anyway. Just use this arbitrary but
+ * definite choice.
+ */
+ p1 = circuitmux_get_policy(c1->cmux);
+ p2 = circuitmux_get_policy(c2->cmux);
+ p1_i = (uintptr_t)p1;
+ p2_i = (uintptr_t)p2;
+
+ return (p1_i < p2_i) ? -1 : 1;
+ }
+ } else {
+ /* c1 == c2, so always equal */
+ return 0;
+ }
+}
+
+/*
+ * Scheduler event callback; this should get triggered once per event loop
+ * if any scheduling work was created during the event loop.
+ */
+
+static void
+scheduler_evt_callback(evutil_socket_t fd, short events, void *arg)
+{
+ (void)fd;
+ (void)events;
+ (void)arg;
+ log_debug(LD_SCHED, "Scheduler event callback called");
+
+ tor_assert(run_sched_ev);
+
+ /* Run the scheduler */
+ scheduler_run();
+
+ /* Do we have more work to do? */
+ if (scheduler_more_work()) scheduler_retrigger();
+}
+
+/** Mark a channel as no longer ready to accept writes */
+
+MOCK_IMPL(void,
+scheduler_channel_doesnt_want_writes,(channel_t *chan))
+{
+ tor_assert(chan);
+
+ tor_assert(channels_pending);
+
+ /* If it's already in pending, we can put it in waiting_to_write */
+ if (chan->scheduler_state == SCHED_CHAN_PENDING) {
+ /*
+ * It's in channels_pending, so it shouldn't be in any of
+ * the other lists. It can't write any more, so it goes to
+ * channels_waiting_to_write.
+ */
+ smartlist_pqueue_remove(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ chan->scheduler_state = SCHED_CHAN_WAITING_TO_WRITE;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p went from pending "
+ "to waiting_to_write",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ } else {
+ /*
+ * It's not in pending, so it can't become waiting_to_write; it's
+ * either not in any of the lists (nothing to do) or it's already in
+ * waiting_for_cells (remove it, can't write any more).
+ */
+ if (chan->scheduler_state == SCHED_CHAN_WAITING_FOR_CELLS) {
+ chan->scheduler_state = SCHED_CHAN_IDLE;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p left waiting_for_cells",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ }
+ }
+}
+
+/** Mark a channel as having waiting cells */
+
+MOCK_IMPL(void,
+scheduler_channel_has_waiting_cells,(channel_t *chan))
+{
+ int became_pending = 0;
+
+ tor_assert(chan);
+ tor_assert(channels_pending);
+
+ /* First, check if this one also writeable */
+ if (chan->scheduler_state == SCHED_CHAN_WAITING_FOR_CELLS) {
+ /*
+ * It's in channels_waiting_for_cells, so it shouldn't be in any of
+ * the other lists. It has waiting cells now, so it goes to
+ * channels_pending.
+ */
+ chan->scheduler_state = SCHED_CHAN_PENDING;
+ smartlist_pqueue_add(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p went from waiting_for_cells "
+ "to pending",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ became_pending = 1;
+ } else {
+ /*
+ * It's not in waiting_for_cells, so it can't become pending; it's
+ * either not in any of the lists (we add it to waiting_to_write)
+ * or it's already in waiting_to_write or pending (we do nothing)
+ */
+ if (!(chan->scheduler_state == SCHED_CHAN_WAITING_TO_WRITE ||
+ chan->scheduler_state == SCHED_CHAN_PENDING)) {
+ chan->scheduler_state = SCHED_CHAN_WAITING_TO_WRITE;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p entered waiting_to_write",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ }
+ }
+
+ /*
+ * If we made a channel pending, we potentially have scheduling work
+ * to do.
+ */
+ if (became_pending) scheduler_retrigger();
+}
+
+/** Set up the scheduling system */
+
+void
+scheduler_init(void)
+{
+ log_debug(LD_SCHED, "Initting scheduler");
+
+ tor_assert(!run_sched_ev);
+ run_sched_ev = tor_event_new(tor_libevent_get_base(), -1,
+ 0, scheduler_evt_callback, NULL);
+
+ channels_pending = smartlist_new();
+ queue_heuristic = 0;
+ queue_heuristic_timestamp = approx_time();
+}
+
+/** Check if there's more scheduling work */
+
+static int
+scheduler_more_work(void)
+{
+ tor_assert(channels_pending);
+
+ return ((scheduler_get_queue_heuristic() < sched_q_low_water) &&
+ ((smartlist_len(channels_pending) > 0))) ? 1 : 0;
+}
+
+/** Retrigger the scheduler in a way safe to use from the callback */
+
+static void
+scheduler_retrigger(void)
+{
+ tor_assert(run_sched_ev);
+ event_active(run_sched_ev, EV_TIMEOUT, 1);
+}
+
+/** Notify the scheduler of a channel being closed */
+
+MOCK_IMPL(void,
+scheduler_release_channel,(channel_t *chan))
+{
+ tor_assert(chan);
+ tor_assert(channels_pending);
+
+ if (chan->scheduler_state == SCHED_CHAN_PENDING) {
+ smartlist_pqueue_remove(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ }
+
+ chan->scheduler_state = SCHED_CHAN_IDLE;
+}
+
+/** Run the scheduling algorithm if necessary */
+
+MOCK_IMPL(void,
+scheduler_run, (void))
+{
+ int n_cells, n_chans_before, n_chans_after;
+ uint64_t q_len_before, q_heur_before, q_len_after, q_heur_after;
+ ssize_t flushed, flushed_this_time;
+ smartlist_t *to_readd = NULL;
+ channel_t *chan = NULL;
+
+ log_debug(LD_SCHED, "We have a chance to run the scheduler");
+
+ if (scheduler_get_queue_heuristic() < sched_q_low_water) {
+ n_chans_before = smartlist_len(channels_pending);
+ q_len_before = channel_get_global_queue_estimate();
+ q_heur_before = scheduler_get_queue_heuristic();
+
+ while (scheduler_get_queue_heuristic() <= sched_q_high_water &&
+ smartlist_len(channels_pending) > 0) {
+ /* Pop off a channel */
+ chan = smartlist_pqueue_pop(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx));
+ tor_assert(chan);
+
+ /* Figure out how many cells we can write */
+ n_cells = channel_num_cells_writeable(chan);
+ if (n_cells > 0) {
+ log_debug(LD_SCHED,
+ "Scheduler saw pending channel " U64_FORMAT " at %p with "
+ "%d cells writeable",
+ U64_PRINTF_ARG(chan->global_identifier), chan, n_cells);
+
+ flushed = 0;
+ while (flushed < n_cells &&
+ scheduler_get_queue_heuristic() <= sched_q_high_water) {
+ flushed_this_time =
+ channel_flush_some_cells(chan,
+ MIN(sched_max_flush_cells,
+ (size_t) n_cells - flushed));
+ if (flushed_this_time <= 0) break;
+ flushed += flushed_this_time;
+ }
+
+ if (flushed < n_cells) {
+ /* We ran out of cells to flush */
+ chan->scheduler_state = SCHED_CHAN_WAITING_FOR_CELLS;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p "
+ "entered waiting_for_cells from pending",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ } else {
+ /* The channel may still have some cells */
+ if (channel_more_to_flush(chan)) {
+ /* The channel goes to either pending or waiting_to_write */
+ if (channel_num_cells_writeable(chan) > 0) {
+ /* Add it back to pending later */
+ if (!to_readd) to_readd = smartlist_new();
+ smartlist_add(to_readd, chan);
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p "
+ "is still pending",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ } else {
+ /* It's waiting to be able to write more */
+ chan->scheduler_state = SCHED_CHAN_WAITING_TO_WRITE;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p "
+ "entered waiting_to_write from pending",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ }
+ } else {
+ /* No cells left; it can go to idle or waiting_for_cells */
+ if (channel_num_cells_writeable(chan) > 0) {
+ /*
+ * It can still accept writes, so it goes to
+ * waiting_for_cells
+ */
+ chan->scheduler_state = SCHED_CHAN_WAITING_FOR_CELLS;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p "
+ "entered waiting_for_cells from pending",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ } else {
+ /*
+ * We exactly filled up the output queue with all available
+ * cells; go to idle.
+ */
+ chan->scheduler_state = SCHED_CHAN_IDLE;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p "
+ "become idle from pending",
+ U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ }
+ }
+ }
+
+ log_debug(LD_SCHED,
+ "Scheduler flushed %d cells onto pending channel "
+ U64_FORMAT " at %p",
+ (int)flushed, U64_PRINTF_ARG(chan->global_identifier),
+ chan);
+ } else {
+ log_info(LD_SCHED,
+ "Scheduler saw pending channel " U64_FORMAT " at %p with "
+ "no cells writeable",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ /* Put it back to WAITING_TO_WRITE */
+ chan->scheduler_state = SCHED_CHAN_WAITING_TO_WRITE;
+ }
+ }
+
+ /* Readd any channels we need to */
+ if (to_readd) {
+ SMARTLIST_FOREACH_BEGIN(to_readd, channel_t *, chan) {
+ chan->scheduler_state = SCHED_CHAN_PENDING;
+ smartlist_pqueue_add(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ } SMARTLIST_FOREACH_END(chan);
+ smartlist_free(to_readd);
+ }
+
+ n_chans_after = smartlist_len(channels_pending);
+ q_len_after = channel_get_global_queue_estimate();
+ q_heur_after = scheduler_get_queue_heuristic();
+ log_debug(LD_SCHED,
+ "Scheduler handled %d of %d pending channels, queue size from "
+ U64_FORMAT " to " U64_FORMAT ", queue heuristic from "
+ U64_FORMAT " to " U64_FORMAT,
+ n_chans_before - n_chans_after, n_chans_before,
+ U64_PRINTF_ARG(q_len_before), U64_PRINTF_ARG(q_len_after),
+ U64_PRINTF_ARG(q_heur_before), U64_PRINTF_ARG(q_heur_after));
+ }
+}
+
+/** Trigger the scheduling event so we run the scheduler later */
+
+#if 0
+static void
+scheduler_trigger(void)
+{
+ log_debug(LD_SCHED, "Triggering scheduler event");
+
+ tor_assert(run_sched_ev);
+
+ event_add(run_sched_ev, EV_TIMEOUT, 1);
+}
+#endif
+
+/** Mark a channel as ready to accept writes */
+
+void
+scheduler_channel_wants_writes(channel_t *chan)
+{
+ int became_pending = 0;
+
+ tor_assert(chan);
+ tor_assert(channels_pending);
+
+ /* If it's already in waiting_to_write, we can put it in pending */
+ if (chan->scheduler_state == SCHED_CHAN_WAITING_TO_WRITE) {
+ /*
+ * It can write now, so it goes to channels_pending.
+ */
+ smartlist_pqueue_add(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ chan->scheduler_state = SCHED_CHAN_PENDING;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p went from waiting_to_write "
+ "to pending",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ became_pending = 1;
+ } else {
+ /*
+ * It's not in SCHED_CHAN_WAITING_TO_WRITE, so it can't become pending;
+ * it's either idle and goes to WAITING_FOR_CELLS, or it's a no-op.
+ */
+ if (!(chan->scheduler_state == SCHED_CHAN_WAITING_FOR_CELLS ||
+ chan->scheduler_state == SCHED_CHAN_PENDING)) {
+ chan->scheduler_state = SCHED_CHAN_WAITING_FOR_CELLS;
+ log_debug(LD_SCHED,
+ "Channel " U64_FORMAT " at %p entered waiting_for_cells",
+ U64_PRINTF_ARG(chan->global_identifier), chan);
+ }
+ }
+
+ /*
+ * If we made a channel pending, we potentially have scheduling work
+ * to do.
+ */
+ if (became_pending) scheduler_retrigger();
+}
+
+/**
+ * Notify the scheduler that a channel's position in the pqueue may have
+ * changed
+ */
+
+void
+scheduler_touch_channel(channel_t *chan)
+{
+ tor_assert(chan);
+
+ if (chan->scheduler_state == SCHED_CHAN_PENDING) {
+ /* Remove and re-add it */
+ smartlist_pqueue_remove(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ smartlist_pqueue_add(channels_pending,
+ scheduler_compare_channels,
+ STRUCT_OFFSET(channel_t, sched_heap_idx),
+ chan);
+ }
+ /* else no-op, since it isn't in the queue */
+}
+
+/**
+ * Notify the scheduler of a queue size adjustment, to recalculate the
+ * queue heuristic.
+ */
+
+void
+scheduler_adjust_queue_size(channel_t *chan, char dir, uint64_t adj)
+{
+ time_t now = approx_time();
+
+ log_debug(LD_SCHED,
+ "Queue size adjustment by %s" U64_FORMAT " for channel "
+ U64_FORMAT,
+ (dir >= 0) ? "+" : "-",
+ U64_PRINTF_ARG(adj),
+ U64_PRINTF_ARG(chan->global_identifier));
+
+ /* Get the queue heuristic up to date */
+ scheduler_update_queue_heuristic(now);
+
+ /* Adjust as appropriate */
+ if (dir >= 0) {
+ /* Increasing it */
+ queue_heuristic += adj;
+ } else {
+ /* Decreasing it */
+ if (queue_heuristic > adj) queue_heuristic -= adj;
+ else queue_heuristic = 0;
+ }
+
+ log_debug(LD_SCHED,
+ "Queue heuristic is now " U64_FORMAT,
+ U64_PRINTF_ARG(queue_heuristic));
+}
+
+/**
+ * Query the current value of the queue heuristic
+ */
+
+STATIC uint64_t
+scheduler_get_queue_heuristic(void)
+{
+ time_t now = approx_time();
+
+ scheduler_update_queue_heuristic(now);
+
+ return queue_heuristic;
+}
+
+/**
+ * Adjust the queue heuristic value to the present time
+ */
+
+STATIC void
+scheduler_update_queue_heuristic(time_t now)
+{
+ time_t diff;
+
+ if (queue_heuristic_timestamp == 0) {
+ /*
+ * Nothing we can sensibly do; must not have been initted properly.
+ * Oh well.
+ */
+ queue_heuristic_timestamp = now;
+ } else if (queue_heuristic_timestamp < now) {
+ diff = now - queue_heuristic_timestamp;
+ /*
+ * This is a simple exponential age-out; the other proposed alternative
+ * was a linear age-out using the bandwidth history in rephist.c; I'm
+ * going with this out of concern that if an adversary can jam the
+ * scheduler long enough, it would cause the bandwidth to drop to
+ * zero and render the aging mechanism ineffective thereafter.
+ */
+ if (0 <= diff && diff < 64) queue_heuristic >>= diff;
+ else queue_heuristic = 0;
+
+ queue_heuristic_timestamp = now;
+
+ log_debug(LD_SCHED,
+ "Queue heuristic is now " U64_FORMAT,
+ U64_PRINTF_ARG(queue_heuristic));
+ }
+ /* else no update needed, or time went backward */
+}
+
+/**
+ * Set scheduler watermarks and flush size
+ */
+
+void
+scheduler_set_watermarks(uint32_t lo, uint32_t hi, uint32_t max_flush)
+{
+ /* Sanity assertions - caller should ensure these are true */
+ tor_assert(lo > 0);
+ tor_assert(hi > lo);
+ tor_assert(max_flush > 0);
+
+ sched_q_low_water = lo;
+ sched_q_high_water = hi;
+ sched_max_flush_cells = max_flush;
+}
+
diff --git a/src/or/scheduler.h b/src/or/scheduler.h
new file mode 100644
index 0000000000..404776b18b
--- /dev/null
+++ b/src/or/scheduler.h
@@ -0,0 +1,50 @@
+/* * Copyright (c) 2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file scheduler.h
+ * \brief Header file for scheduler.c
+ **/
+
+#ifndef TOR_SCHEDULER_H
+#define TOR_SCHEDULER_H
+
+#include "or.h"
+#include "channel.h"
+#include "testsupport.h"
+
+/* Global-visibility scheduler functions */
+
+/* Set up and shut down the scheduler from main.c */
+void scheduler_free_all(void);
+void scheduler_init(void);
+MOCK_DECL(void, scheduler_run, (void));
+
+/* Mark channels as having cells or wanting/not wanting writes */
+MOCK_DECL(void,scheduler_channel_doesnt_want_writes,(channel_t *chan));
+MOCK_DECL(void,scheduler_channel_has_waiting_cells,(channel_t *chan));
+void scheduler_channel_wants_writes(channel_t *chan);
+
+/* Notify the scheduler of a channel being closed */
+MOCK_DECL(void,scheduler_release_channel,(channel_t *chan));
+
+/* Notify scheduler of queue size adjustments */
+void scheduler_adjust_queue_size(channel_t *chan, char dir, uint64_t adj);
+
+/* Notify scheduler that a channel's queue position may have changed */
+void scheduler_touch_channel(channel_t *chan);
+
+/* Adjust the watermarks from config file*/
+void scheduler_set_watermarks(uint32_t lo, uint32_t hi, uint32_t max_flush);
+
+/* Things only scheduler.c and its test suite should see */
+
+#ifdef SCHEDULER_PRIVATE_
+MOCK_DECL(STATIC int, scheduler_compare_channels,
+ (const void *c1_v, const void *c2_v));
+STATIC uint64_t scheduler_get_queue_heuristic(void);
+STATIC void scheduler_update_queue_heuristic(time_t now);
+#endif
+
+#endif /* !defined(TOR_SCHEDULER_H) */
+
diff --git a/src/or/transports.c b/src/or/transports.c
index 584454feb1..2623f807d0 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -326,9 +326,9 @@ transport_add(transport_t *t)
/** Remember a new pluggable transport proxy at <b>addr</b>:<b>port</b>.
* <b>name</b> is set to the name of the protocol this proxy uses.
* <b>socks_ver</b> is set to the SOCKS version of the proxy. */
-int
-transport_add_from_config(const tor_addr_t *addr, uint16_t port,
- const char *name, int socks_ver)
+MOCK_IMPL(int,
+transport_add_from_config, (const tor_addr_t *addr, uint16_t port,
+ const char *name, int socks_ver))
{
transport_t *t = transport_new(addr, port, name, socks_ver, NULL);
@@ -1456,9 +1456,9 @@ managed_proxy_create(const smartlist_t *transport_list,
* Requires that proxy_argv be a NULL-terminated array of command-line
* elements, containing at least one element.
**/
-void
-pt_kickstart_proxy(const smartlist_t *transport_list,
- char **proxy_argv, int is_server)
+MOCK_IMPL(void,
+pt_kickstart_proxy, (const smartlist_t *transport_list,
+ char **proxy_argv, int is_server))
{
managed_proxy_t *mp=NULL;
transport_t *old_transport = NULL;
diff --git a/src/or/transports.h b/src/or/transports.h
index 6393a4e172..2958d5e187 100644
--- a/src/or/transports.h
+++ b/src/or/transports.h
@@ -32,14 +32,16 @@ typedef struct transport_t {
void mark_transport_list(void);
void sweep_transport_list(void);
-int transport_add_from_config(const tor_addr_t *addr, uint16_t port,
- const char *name, int socks_ver);
+MOCK_DECL(int, transport_add_from_config,
+ (const tor_addr_t *addr, uint16_t port,
+ const char *name, int socks_ver));
void transport_free(transport_t *transport);
transport_t *transport_get_by_name(const char *name);
-void pt_kickstart_proxy(const smartlist_t *transport_list, char **proxy_argv,
- int is_server);
+MOCK_DECL(void, pt_kickstart_proxy,
+ (const smartlist_t *transport_list, char **proxy_argv,
+ int is_server));
#define pt_kickstart_client_proxy(tl, pa) \
pt_kickstart_proxy(tl, pa, 0)
diff --git a/src/test/Makefile.nmake b/src/test/Makefile.nmake
index 822431f3b8..0435617683 100644
--- a/src/test/Makefile.nmake
+++ b/src/test/Makefile.nmake
@@ -11,11 +11,12 @@ LIBS = ..\..\..\build-alpha\lib\libevent.lib \
ws2_32.lib advapi32.lib shell32.lib \
crypt32.lib gdi32.lib user32.lib
-TEST_OBJECTS = test.obj test_addr.obj test_containers.obj \
- test_controller_events.ogj test_crypto.obj test_data.obj test_dir.obj \
- test_microdesc.obj test_pt.obj test_util.obj test_config.obj \
- test_cell_formats.obj test_replay.obj test_introduce.obj tinytest.obj \
- test_hs.obj
+TEST_OBJECTS = test.obj test_addr.obj test_channel.obj test_channeltls.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_cell_formats.obj test_relay.obj test_replay.obj \
+ test_scheduler.obj test_introduce.obj test_hs.obj tinytest.obj
tinytest.obj: ..\ext\tinytest.c
$(CC) $(CFLAGS) /D snprintf=_snprintf /c ..\ext\tinytest.c
diff --git a/src/test/fakechans.h b/src/test/fakechans.h
new file mode 100644
index 0000000000..b129ab49a5
--- /dev/null
+++ b/src/test/fakechans.h
@@ -0,0 +1,25 @@
+ /* Copyright (c) 2014, The Tor Project, Inc. */
+ /* See LICENSE for licensing information */
+
+#ifndef TOR_FAKECHANS_H
+#define TOR_FAKECHANS_H
+
+/**
+ * \file fakechans.h
+ * \brief Declarations for fake channels for test suite use
+ */
+
+void make_fake_cell(cell_t *c);
+void make_fake_var_cell(var_cell_t *c);
+channel_t * new_fake_channel(void);
+
+/* Also exposes some a mock used by both test_channel.c and test_relay.c */
+void scheduler_channel_has_waiting_cells_mock(channel_t *ch);
+void scheduler_release_channel_mock(channel_t *ch);
+
+/* Query some counters used by the exposed mocks */
+int get_mock_scheduler_has_waiting_cells_count(void);
+int get_mock_scheduler_release_channel_count(void);
+
+#endif /* !defined(TOR_FAKECHANS_H) */
+
diff --git a/src/test/include.am b/src/test/include.am
index d0f3224dc5..d7a647940b 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -20,6 +20,8 @@ src_test_test_SOURCES = \
src/test/test_addr.c \
src/test/test_buffers.c \
src/test/test_cell_formats.c \
+ src/test/test_channel.c \
+ src/test/test_channeltls.c \
src/test/test_circuitlist.c \
src/test/test_circuitmux.c \
src/test/test_containers.c \
@@ -28,6 +30,7 @@ src_test_test_SOURCES = \
src/test/test_cell_queue.c \
src/test/test_data.c \
src/test/test_dir.c \
+ src/test/test_checkdir.c \
src/test/test_entrynodes.c \
src/test/test_extorport.c \
src/test/test_introduce.c \
@@ -38,8 +41,10 @@ src_test_test_SOURCES = \
src/test/test_options.c \
src/test/test_pt.c \
src/test/test_relaycell.c \
+ src/test/test_relay.c \
src/test/test_replay.c \
src/test/test_routerkeys.c \
+ src/test/test_scheduler.c \
src/test/test_socks.c \
src/test/test_util.c \
src/test/test_config.c \
@@ -74,6 +79,7 @@ src_test_bench_LDADD = src/or/libtor.a src/common/libor.a \
@TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@
noinst_HEADERS+= \
+ src/test/fakechans.h \
src/test/test.h \
src/test/test_descriptors.inc \
src/test/example_extrainfo.inc \
diff --git a/src/test/test.c b/src/test/test.c
index 0511eb4054..fbe5625300 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -123,6 +123,10 @@ setup_directory(void)
tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d_%s",
(int) getpid(), rnd32);
r = mkdir(temp_dir, 0700);
+ if (!r) {
+ /* undo sticky bit so tests don't get confused. */
+ r = chown(temp_dir, getuid(), getgid());
+ }
#endif
if (r) {
fprintf(stderr, "Can't create directory %s:", temp_dir);
@@ -273,9 +277,9 @@ test_onion_handshake(void *arg)
memset(c_keys, 0, 40);
tt_assert(! onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40));
- tt_mem_op(c_keys,==, s_keys, 40);
+ tt_mem_op(c_keys,OP_EQ, s_keys, 40);
memset(s_buf, 0, 40);
- tt_mem_op(c_keys,!=, s_buf, 40);
+ tt_mem_op(c_keys,OP_NE, s_buf, 40);
}
done:
crypto_dh_free(c_dh);
@@ -307,7 +311,7 @@ test_bad_onion_handshake(void *arg)
memset(junk_buf, 0, sizeof(junk_buf));
crypto_pk_public_hybrid_encrypt(pk, junk_buf2, TAP_ONIONSKIN_CHALLENGE_LEN,
junk_buf, DH_KEY_LEN, PK_PKCS1_OAEP_PADDING, 1);
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_server_handshake(junk_buf2, pk, NULL,
s_buf, s_keys, 40));
@@ -316,7 +320,7 @@ test_bad_onion_handshake(void *arg)
memset(junk_buf2, 0, sizeof(junk_buf2));
crypto_pk_public_encrypt(pk, junk_buf2, sizeof(junk_buf2),
junk_buf, 48, PK_PKCS1_OAEP_PADDING);
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_server_handshake(junk_buf2, pk, NULL,
s_buf, s_keys, 40));
@@ -325,36 +329,36 @@ test_bad_onion_handshake(void *arg)
tt_assert(! onion_skin_TAP_create(pk, &c_dh, c_buf));
/* Server: Case 3: we just don't have the right key. */
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_server_handshake(c_buf, pk2, NULL,
s_buf, s_keys, 40));
/* Server: Case 4: The RSA-encrypted portion is corrupt. */
c_buf[64] ^= 33;
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_server_handshake(c_buf, pk, NULL,
s_buf, s_keys, 40));
c_buf[64] ^= 33;
/* (Let the server procede) */
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
onion_skin_TAP_server_handshake(c_buf, pk, NULL,
s_buf, s_keys, 40));
/* Client: Case 1: The server sent back junk. */
s_buf[64] ^= 33;
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40));
s_buf[64] ^= 33;
/* Let the client finish; make sure it can. */
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40));
- tt_mem_op(s_keys,==, c_keys, 40);
+ tt_mem_op(s_keys,OP_EQ, c_keys, 40);
/* Client: Case 2: The server sent back a degenerate DH. */
memset(s_buf, 0, sizeof(s_buf));
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40));
done:
@@ -391,24 +395,24 @@ test_ntor_handshake(void *arg)
/* client handshake 1. */
memset(c_buf, 0, NTOR_ONIONSKIN_LEN);
- tt_int_op(0, ==, onion_skin_ntor_create(node_id, server_pubkey,
+ tt_int_op(0, OP_EQ, onion_skin_ntor_create(node_id, server_pubkey,
&c_state, c_buf));
/* server handshake */
memset(s_buf, 0, NTOR_REPLY_LEN);
memset(s_keys, 0, 40);
- tt_int_op(0, ==, onion_skin_ntor_server_handshake(c_buf, s_keymap, NULL,
+ tt_int_op(0, OP_EQ, onion_skin_ntor_server_handshake(c_buf, s_keymap, NULL,
node_id,
s_buf, s_keys, 400));
/* client handshake 2 */
memset(c_keys, 0, 40);
- tt_int_op(0, ==, onion_skin_ntor_client_handshake(c_state, s_buf,
+ tt_int_op(0, OP_EQ, onion_skin_ntor_client_handshake(c_state, s_buf,
c_keys, 400));
- tt_mem_op(c_keys,==, s_keys, 400);
+ tt_mem_op(c_keys,OP_EQ, s_keys, 400);
memset(s_buf, 0, 40);
- tt_mem_op(c_keys,!=, s_buf, 40);
+ tt_mem_op(c_keys,OP_NE, s_buf, 40);
done:
ntor_handshake_state_free(c_state);
@@ -436,24 +440,24 @@ test_onion_queues(void *arg)
create_cell_init(create2, CELL_CREATE, ONION_HANDSHAKE_TYPE_NTOR,
NTOR_ONIONSKIN_LEN, buf2);
- tt_int_op(0,==, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
- tt_int_op(0,==, onion_pending_add(circ1, create1));
+ tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+ tt_int_op(0,OP_EQ, onion_pending_add(circ1, create1));
create1 = NULL;
- tt_int_op(1,==, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+ tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
- tt_int_op(0,==, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
- tt_int_op(0,==, onion_pending_add(circ2, create2));
+ tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+ tt_int_op(0,OP_EQ, onion_pending_add(circ2, create2));
create2 = NULL;
- tt_int_op(1,==, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+ tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
- tt_ptr_op(circ2,==, onion_next_task(&onionskin));
- tt_int_op(1,==, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
- tt_int_op(0,==, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
- tt_ptr_op(onionskin, ==, create2_ptr);
+ tt_ptr_op(circ2,OP_EQ, onion_next_task(&onionskin));
+ tt_int_op(1,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+ tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+ tt_ptr_op(onionskin, OP_EQ, create2_ptr);
clear_pending_onions();
- tt_int_op(0,==, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
- tt_int_op(0,==, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
+ tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP));
+ tt_int_op(0,OP_EQ, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR));
done:
circuit_free(TO_CIRCUIT(circ1));
@@ -644,13 +648,13 @@ test_rend_fns(void *arg)
(void)arg;
tt_assert(BAD_HOSTNAME == parse_extended_hostname(address1));
tt_assert(ONION_HOSTNAME == parse_extended_hostname(address2));
- tt_str_op(address2,==, "aaaaaaaaaaaaaaaa");
+ tt_str_op(address2,OP_EQ, "aaaaaaaaaaaaaaaa");
tt_assert(EXIT_HOSTNAME == parse_extended_hostname(address3));
tt_assert(NORMAL_HOSTNAME == parse_extended_hostname(address4));
tt_assert(ONION_HOSTNAME == parse_extended_hostname(address5));
- tt_str_op(address5,==, "abcdefghijklmnop");
+ tt_str_op(address5,OP_EQ, "abcdefghijklmnop");
tt_assert(ONION_HOSTNAME == parse_extended_hostname(address6));
- tt_str_op(address6,==, "abcdefghijklmnop");
+ tt_str_op(address6,OP_EQ, "abcdefghijklmnop");
tt_assert(BAD_HOSTNAME == parse_extended_hostname(address7));
pk1 = pk_generate(0);
@@ -689,7 +693,7 @@ test_rend_fns(void *arg)
tt_assert(rend_compute_v2_desc_id(computed_desc_id, service_id_base32,
NULL, now, 0) == 0);
tt_mem_op(((rend_encoded_v2_service_descriptor_t *)
- smartlist_get(descs, 0))->desc_id, ==,
+ smartlist_get(descs, 0))->desc_id, OP_EQ,
computed_desc_id, DIGEST_LEN);
tt_assert(rend_parse_v2_service_descriptor(&parsed, parsed_desc_id,
&intro_points_encrypted,
@@ -700,25 +704,25 @@ test_rend_fns(void *arg)
smartlist_get(descs, 0))->desc_str) == 0);
tt_assert(parsed);
tt_mem_op(((rend_encoded_v2_service_descriptor_t *)
- smartlist_get(descs, 0))->desc_id,==, parsed_desc_id, DIGEST_LEN);
+ smartlist_get(descs, 0))->desc_id,OP_EQ, parsed_desc_id, DIGEST_LEN);
tt_int_op(rend_parse_introduction_points(parsed, intro_points_encrypted,
- intro_points_size),==, 3);
+ intro_points_size),OP_EQ, 3);
tt_assert(!crypto_pk_cmp_keys(generated->pk, parsed->pk));
- tt_int_op(parsed->timestamp,==, now);
- tt_int_op(parsed->version,==, 2);
- tt_int_op(parsed->protocols,==, 42);
- tt_int_op(smartlist_len(parsed->intro_nodes),==, 3);
+ tt_int_op(parsed->timestamp,OP_EQ, now);
+ tt_int_op(parsed->version,OP_EQ, 2);
+ tt_int_op(parsed->protocols,OP_EQ, 42);
+ tt_int_op(smartlist_len(parsed->intro_nodes),OP_EQ, 3);
for (i = 0; i < smartlist_len(parsed->intro_nodes); i++) {
rend_intro_point_t *par_intro = smartlist_get(parsed->intro_nodes, i),
*gen_intro = smartlist_get(generated->intro_nodes, i);
extend_info_t *par_info = par_intro->extend_info;
extend_info_t *gen_info = gen_intro->extend_info;
tt_assert(!crypto_pk_cmp_keys(gen_info->onion_key, par_info->onion_key));
- tt_mem_op(gen_info->identity_digest,==, par_info->identity_digest,
+ tt_mem_op(gen_info->identity_digest,OP_EQ, par_info->identity_digest,
DIGEST_LEN);
- tt_str_op(gen_info->nickname,==, par_info->nickname);
+ tt_str_op(gen_info->nickname,OP_EQ, par_info->nickname);
tt_assert(tor_addr_eq(&gen_info->addr, &par_info->addr));
- tt_int_op(gen_info->port,==, par_info->port);
+ tt_int_op(gen_info->port,OP_EQ, par_info->port);
}
rend_service_descriptor_free(parsed);
@@ -762,11 +766,11 @@ test_rend_fns(void *arg)
} while (0)
#define CHECK_COUNTRY(country, val) do { \
/* test ipv4 country lookup */ \
- tt_str_op(country, ==, \
+ tt_str_op(country, OP_EQ, \
geoip_get_country_name(geoip_get_country_by_ipv4(val))); \
/* test ipv6 country lookup */ \
SET_TEST_IPV6(val); \
- tt_str_op(country, ==, \
+ tt_str_op(country, OP_EQ, \
geoip_get_country_name(geoip_get_country_by_ipv6(&in6))); \
} while (0)
@@ -827,23 +831,23 @@ test_geoip(void *arg)
* 'sort' step. These aren't very good IP addresses, but they're perfectly
* fine uint32_t values. */
(void)arg;
- tt_int_op(0,==, geoip_parse_entry("10,50,AB", AF_INET));
- tt_int_op(0,==, geoip_parse_entry("52,90,XY", AF_INET));
- tt_int_op(0,==, geoip_parse_entry("95,100,AB", AF_INET));
- tt_int_op(0,==, geoip_parse_entry("\"105\",\"140\",\"ZZ\"", AF_INET));
- tt_int_op(0,==, geoip_parse_entry("\"150\",\"190\",\"XY\"", AF_INET));
- tt_int_op(0,==, geoip_parse_entry("\"200\",\"250\",\"AB\"", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("10,50,AB", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("52,90,XY", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("95,100,AB", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("\"105\",\"140\",\"ZZ\"", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("\"150\",\"190\",\"XY\"", AF_INET));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("\"200\",\"250\",\"AB\"", AF_INET));
/* Populate the IPv6 DB equivalently with fake IPs in the same range */
- tt_int_op(0,==, geoip_parse_entry("::a,::32,AB", AF_INET6));
- tt_int_op(0,==, geoip_parse_entry("::34,::5a,XY", AF_INET6));
- tt_int_op(0,==, geoip_parse_entry("::5f,::64,AB", AF_INET6));
- tt_int_op(0,==, geoip_parse_entry("::69,::8c,ZZ", AF_INET6));
- tt_int_op(0,==, geoip_parse_entry("::96,::be,XY", AF_INET6));
- tt_int_op(0,==, geoip_parse_entry("::c8,::fa,AB", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::a,::32,AB", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::34,::5a,XY", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::5f,::64,AB", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::69,::8c,ZZ", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::96,::be,XY", AF_INET6));
+ tt_int_op(0,OP_EQ, geoip_parse_entry("::c8,::fa,AB", AF_INET6));
/* We should have 4 countries: ??, ab, xy, zz. */
- tt_int_op(4,==, geoip_get_n_countries());
+ tt_int_op(4,OP_EQ, geoip_get_n_countries());
memset(&in6, 0, sizeof(in6));
CHECK_COUNTRY("??", 3);
@@ -854,9 +858,9 @@ test_geoip(void *arg)
CHECK_COUNTRY("xy", 190);
CHECK_COUNTRY("??", 2000);
- tt_int_op(0,==, geoip_get_country_by_ipv4(3));
+ tt_int_op(0,OP_EQ, geoip_get_country_by_ipv4(3));
SET_TEST_IPV6(3);
- tt_int_op(0,==, geoip_get_country_by_ipv6(&in6));
+ tt_int_op(0,OP_EQ, geoip_get_country_by_ipv6(&in6));
get_options_mutable()->BridgeRelay = 1;
get_options_mutable()->BridgeRecordUsageByCountry = 1;
@@ -881,8 +885,8 @@ test_geoip(void *arg)
geoip_get_client_history(GEOIP_CLIENT_CONNECT, &s, &v);
tt_assert(s);
tt_assert(v);
- tt_str_op("zz=24,ab=16,xy=8",==, s);
- tt_str_op("v4=16,v6=16",==, v);
+ tt_str_op("zz=24,ab=16,xy=8",OP_EQ, s);
+ tt_str_op("v4=16,v6=16",OP_EQ, v);
tor_free(s);
tor_free(v);
@@ -891,8 +895,8 @@ test_geoip(void *arg)
geoip_get_client_history(GEOIP_CLIENT_CONNECT, &s, &v);
tt_assert(s);
tt_assert(v);
- tt_str_op("zz=24,xy=8",==, s);
- tt_str_op("v4=16,v6=16",==, v);
+ tt_str_op("zz=24,xy=8",OP_EQ, s);
+ tt_str_op("v4=16,v6=16",OP_EQ, v);
tor_free(s);
tor_free(v);
@@ -906,7 +910,7 @@ test_geoip(void *arg)
geoip_bridge_stats_init(now);
s = geoip_format_bridge_stats(now + 86400);
tt_assert(s);
- tt_str_op(bridge_stats_1,==, s);
+ tt_str_op(bridge_stats_1,OP_EQ, s);
tor_free(s);
/* Stop collecting bridge stats and make sure we don't write a history
@@ -935,7 +939,7 @@ test_geoip(void *arg)
SET_TEST_ADDRESS(100);
geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now);
s = geoip_format_dirreq_stats(now + 86400);
- tt_str_op(dirreq_stats_1,==, s);
+ tt_str_op(dirreq_stats_1,OP_EQ, s);
tor_free(s);
/* Stop collecting stats, add another connecting client, and ensure we
@@ -953,20 +957,20 @@ test_geoip(void *arg)
geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now);
geoip_reset_dirreq_stats(now);
s = geoip_format_dirreq_stats(now + 86400);
- tt_str_op(dirreq_stats_2,==, s);
+ tt_str_op(dirreq_stats_2,OP_EQ, s);
tor_free(s);
/* Note a successful network status response and make sure that it
* appears in the history string. */
geoip_note_ns_response(GEOIP_SUCCESS);
s = geoip_format_dirreq_stats(now + 86400);
- tt_str_op(dirreq_stats_3,==, s);
+ tt_str_op(dirreq_stats_3,OP_EQ, s);
tor_free(s);
/* Start a tunneled directory request. */
geoip_start_dirreq((uint64_t) 1, 1024, DIRREQ_TUNNELED);
s = geoip_format_dirreq_stats(now + 86400);
- tt_str_op(dirreq_stats_4,==, s);
+ tt_str_op(dirreq_stats_4,OP_EQ, s);
tor_free(s);
/* Stop collecting directory request statistics and start gathering
@@ -988,7 +992,7 @@ test_geoip(void *arg)
SET_TEST_ADDRESS(100);
geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now);
s = geoip_format_entry_stats(now + 86400);
- tt_str_op(entry_stats_1,==, s);
+ tt_str_op(entry_stats_1,OP_EQ, s);
tor_free(s);
/* Stop collecting stats, add another connecting client, and ensure we
@@ -1006,7 +1010,7 @@ test_geoip(void *arg)
geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now);
geoip_reset_entry_stats(now);
s = geoip_format_entry_stats(now + 86400);
- tt_str_op(entry_stats_2,==, s);
+ tt_str_op(entry_stats_2,OP_EQ, s);
tor_free(s);
/* Stop collecting entry statistics. */
@@ -1079,7 +1083,7 @@ test_geoip_with_pt(void *arg)
/* Test the transport history string. */
s = geoip_get_transport_history();
tor_assert(s);
- tt_str_op(s,==, "<OR>=8,alpha=16,beta=8,charlie=16,ddr=136,"
+ tt_str_op(s,OP_EQ, "<OR>=8,alpha=16,beta=8,charlie=16,ddr=136,"
"entropy=8,fire=8,google=8");
/* Stop collecting entry statistics. */
@@ -1122,7 +1126,7 @@ test_stats(void *arg)
tt_str_op("exit-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"exit-kibibytes-written 80=1,443=1,other=0\n"
"exit-kibibytes-read 80=10,443=20,other=0\n"
- "exit-streams-opened 80=4,443=4,other=0\n",==, s);
+ "exit-streams-opened 80=4,443=4,other=0\n",OP_EQ, s);
tor_free(s);
/* Add a few bytes on 10 more ports and ensure that only the top 10
@@ -1138,7 +1142,7 @@ test_stats(void *arg)
"exit-kibibytes-read 52=1,53=1,54=1,55=1,56=1,57=1,58=1,"
"59=1,80=10,443=20,other=1\n"
"exit-streams-opened 52=4,53=4,54=4,55=4,56=4,57=4,58=4,"
- "59=4,80=4,443=4,other=4\n",==, s);
+ "59=4,80=4,443=4,other=4\n",OP_EQ, s);
tor_free(s);
/* Stop collecting stats, add some bytes, and ensure we don't generate
@@ -1158,7 +1162,7 @@ test_stats(void *arg)
tt_str_op("exit-stats-end 2010-08-12 13:27:30 (86400 s)\n"
"exit-kibibytes-written other=0\n"
"exit-kibibytes-read other=0\n"
- "exit-streams-opened other=0\n",==, s);
+ "exit-streams-opened other=0\n",OP_EQ, s);
tor_free(s);
/* Continue with testing connection statistics; we shouldn't collect
@@ -1174,7 +1178,7 @@ test_stats(void *arg)
rep_hist_note_or_conn_bytes(2, 400000, 30000, now + 10);
rep_hist_note_or_conn_bytes(2, 400000, 30000, now + 15);
s = rep_hist_format_conn_stats(now + 86400);
- tt_str_op("conn-bi-direct 2010-08-12 13:27:30 (86400 s) 0,0,1,0\n",==, s);
+ tt_str_op("conn-bi-direct 2010-08-12 13:27:30 (86400 s) 0,0,1,0\n",OP_EQ, s);
tor_free(s);
/* Stop collecting stats, add some bytes, and ensure we don't generate
@@ -1193,7 +1197,7 @@ test_stats(void *arg)
rep_hist_note_or_conn_bytes(2, 400000, 30000, now + 15);
rep_hist_reset_conn_stats(now);
s = rep_hist_format_conn_stats(now + 86400);
- tt_str_op("conn-bi-direct 2010-08-12 13:27:30 (86400 s) 0,0,0,0\n",==, s);
+ tt_str_op("conn-bi-direct 2010-08-12 13:27:30 (86400 s) 0,0,0,0\n",OP_EQ, s);
tor_free(s);
/* Continue with testing buffer statistics; we shouldn't collect buffer
@@ -1212,7 +1216,7 @@ test_stats(void *arg)
"cell-queued-cells 2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,"
"0.00,0.00\n"
"cell-time-in-queue 2,0,0,0,0,0,0,0,0,0\n"
- "cell-circuits-per-decile 1\n",==, s);
+ "cell-circuits-per-decile 1\n",OP_EQ, s);
tor_free(s);
/* Add nineteen more circuit statistics to the one that's already in the
@@ -1227,7 +1231,7 @@ test_stats(void *arg)
"cell-queued-cells 2.75,2.75,2.75,2.75,2.75,2.75,2.75,2.75,"
"2.75,2.75\n"
"cell-time-in-queue 3,3,3,3,3,3,3,3,3,3\n"
- "cell-circuits-per-decile 2\n",==, s);
+ "cell-circuits-per-decile 2\n",OP_EQ, s);
tor_free(s);
/* Stop collecting stats, add statistics for one circuit, and ensure we
@@ -1248,7 +1252,7 @@ test_stats(void *arg)
"cell-queued-cells 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,"
"0.00,0.00\n"
"cell-time-in-queue 0,0,0,0,0,0,0,0,0,0\n"
- "cell-circuits-per-decile 0\n",==, s);
+ "cell-circuits-per-decile 0\n",OP_EQ, s);
done:
tor_free(s);
@@ -1279,6 +1283,7 @@ extern struct testcase_t crypto_tests[];
extern struct testcase_t container_tests[];
extern struct testcase_t util_tests[];
extern struct testcase_t dir_tests[];
+extern struct testcase_t checkdir_tests[];
extern struct testcase_t microdesc_tests[];
extern struct testcase_t pt_tests[];
extern struct testcase_t config_tests[];
@@ -1303,6 +1308,11 @@ extern struct testcase_t accounting_tests[];
extern struct testcase_t policy_tests[];
extern struct testcase_t status_tests[];
extern struct testcase_t routerset_tests[];
+extern struct testcase_t router_tests[];
+extern struct testcase_t channel_tests[];
+extern struct testcase_t channeltls_tests[];
+extern struct testcase_t relay_tests[];
+extern struct testcase_t scheduler_tests[];
static struct testgroup_t testgroups[] = {
{ "", test_array },
@@ -1316,6 +1326,7 @@ static struct testgroup_t testgroups[] = {
{ "cellfmt/", cell_format_tests },
{ "cellqueue/", cell_queue_tests },
{ "dir/", dir_tests },
+ { "checkdir/", checkdir_tests },
{ "dir/md/", microdesc_tests },
{ "pt/", pt_tests },
{ "config/", config_tests },
@@ -1336,6 +1347,10 @@ static struct testgroup_t testgroups[] = {
{ "policy/" , policy_tests },
{ "status/" , status_tests },
{ "routerset/" , routerset_tests },
+ { "channel/", channel_tests },
+ { "channeltls/", channeltls_tests },
+ { "relay/" , relay_tests },
+ { "scheduler/", scheduler_tests },
END_OF_GROUPS
};
diff --git a/src/test/test.h b/src/test/test.h
index db07e4b706..5518ca3f60 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -34,7 +34,7 @@
tt_mem_op(expr1, op, mem_op_hex_tmp, length/2); \
STMT_END
-#define test_memeq_hex(expr1, hex) test_mem_op_hex(expr1, ==, hex)
+#define test_memeq_hex(expr1, hex) test_mem_op_hex(expr1, OP_EQ, hex)
#define tt_double_op(a,op,b) \
tt_assert_test_type(a,b,#a" "#op" "#b,double,(val1_ op val2_),"%f", \
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index e9fe3038b8..c9c47bdaee 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -20,40 +20,40 @@ test_addr_basic(void *arg)
(void)arg;
cp = NULL; u32 = 3; u16 = 3;
tt_assert(!addr_port_lookup(LOG_WARN, "1.2.3.4", &cp, &u32, &u16));
- tt_str_op(cp,==, "1.2.3.4");
- tt_int_op(u32,==, 0x01020304u);
- tt_int_op(u16,==, 0);
+ tt_str_op(cp,OP_EQ, "1.2.3.4");
+ tt_int_op(u32,OP_EQ, 0x01020304u);
+ tt_int_op(u16,OP_EQ, 0);
tor_free(cp);
tt_assert(!addr_port_lookup(LOG_WARN, "4.3.2.1:99", &cp, &u32, &u16));
- tt_str_op(cp,==, "4.3.2.1");
- tt_int_op(u32,==, 0x04030201u);
- tt_int_op(u16,==, 99);
+ tt_str_op(cp,OP_EQ, "4.3.2.1");
+ tt_int_op(u32,OP_EQ, 0x04030201u);
+ tt_int_op(u16,OP_EQ, 99);
tor_free(cp);
tt_assert(!addr_port_lookup(LOG_WARN, "nonexistent.address:4040",
&cp, NULL, &u16));
- tt_str_op(cp,==, "nonexistent.address");
- tt_int_op(u16,==, 4040);
+ tt_str_op(cp,OP_EQ, "nonexistent.address");
+ tt_int_op(u16,OP_EQ, 4040);
tor_free(cp);
tt_assert(!addr_port_lookup(LOG_WARN, "localhost:9999", &cp, &u32, &u16));
- tt_str_op(cp,==, "localhost");
- tt_int_op(u32,==, 0x7f000001u);
- tt_int_op(u16,==, 9999);
+ tt_str_op(cp,OP_EQ, "localhost");
+ tt_int_op(u32,OP_EQ, 0x7f000001u);
+ tt_int_op(u16,OP_EQ, 9999);
tor_free(cp);
u32 = 3;
tt_assert(!addr_port_lookup(LOG_WARN, "localhost", NULL, &u32, &u16));
- tt_ptr_op(cp,==, NULL);
- tt_int_op(u32,==, 0x7f000001u);
- tt_int_op(u16,==, 0);
+ tt_ptr_op(cp,OP_EQ, NULL);
+ tt_int_op(u32,OP_EQ, 0x7f000001u);
+ tt_int_op(u16,OP_EQ, 0);
tor_free(cp);
tt_assert(addr_port_lookup(LOG_WARN, "localhost:3", &cp, &u32, NULL));
tor_free(cp);
- tt_int_op(0,==, addr_mask_get_bits(0x0u));
- tt_int_op(32,==, addr_mask_get_bits(0xFFFFFFFFu));
- tt_int_op(16,==, addr_mask_get_bits(0xFFFF0000u));
- tt_int_op(31,==, addr_mask_get_bits(0xFFFFFFFEu));
- tt_int_op(1,==, addr_mask_get_bits(0x80000000u));
+ tt_int_op(0,OP_EQ, addr_mask_get_bits(0x0u));
+ tt_int_op(32,OP_EQ, addr_mask_get_bits(0xFFFFFFFFu));
+ tt_int_op(16,OP_EQ, addr_mask_get_bits(0xFFFF0000u));
+ tt_int_op(31,OP_EQ, addr_mask_get_bits(0xFFFFFFFEu));
+ tt_int_op(1,OP_EQ, addr_mask_get_bits(0x80000000u));
/* Test inet_ntop */
{
@@ -62,15 +62,16 @@ test_addr_basic(void *arg)
struct in_addr in;
/* good round trip */
- tt_int_op(tor_inet_pton(AF_INET, ip, &in),==, 1);
- tt_ptr_op(tor_inet_ntop(AF_INET, &in, tmpbuf, sizeof(tmpbuf)),==, &tmpbuf);
- tt_str_op(tmpbuf,==, ip);
+ tt_int_op(tor_inet_pton(AF_INET, ip, &in), OP_EQ, 1);
+ tt_ptr_op(tor_inet_ntop(AF_INET, &in, tmpbuf, sizeof(tmpbuf)),
+ OP_EQ, &tmpbuf);
+ tt_str_op(tmpbuf,OP_EQ, ip);
/* just enough buffer length */
- tt_str_op(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip) + 1),==, ip);
+ tt_str_op(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip) + 1), OP_EQ, ip);
/* too short buffer */
- tt_ptr_op(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip)),==, NULL);
+ tt_ptr_op(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip)),OP_EQ, NULL);
}
done:
@@ -98,30 +99,30 @@ test_addr_basic(void *arg)
/** Helper: Assert that two strings both decode as IPv6 addresses with
* tor_inet_pton(), and both decode to the same address. */
#define test_pton6_same(a,b) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &a1), ==, 1); \
- tt_int_op(tor_inet_pton(AF_INET6, b, &a2), ==, 1); \
- test_op_ip6_(&a1,==,&a2,#a,#b); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &a1), OP_EQ, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, b, &a2), OP_EQ, 1); \
+ test_op_ip6_(&a1,OP_EQ,&a2,#a,#b); \
STMT_END
/** Helper: Assert that <b>a</b> is recognized as a bad IPv6 address by
* tor_inet_pton(). */
#define test_pton6_bad(a) \
- tt_int_op(0, ==, tor_inet_pton(AF_INET6, a, &a1))
+ tt_int_op(0, OP_EQ, tor_inet_pton(AF_INET6, a, &a1))
/** Helper: assert that <b>a</b>, when parsed by tor_inet_pton() and displayed
* with tor_inet_ntop(), yields <b>b</b>. Also assert that <b>b</b> parses to
* the same value as <b>a</b>. */
#define test_ntop6_reduces(a,b) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &a1), ==, 1); \
- tt_str_op(tor_inet_ntop(AF_INET6, &a1, buf, sizeof(buf)), ==, b); \
- tt_int_op(tor_inet_pton(AF_INET6, b, &a2), ==, 1); \
- test_op_ip6_(&a1, ==, &a2, a, b); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &a1), OP_EQ, 1); \
+ tt_str_op(tor_inet_ntop(AF_INET6, &a1, buf, sizeof(buf)), OP_EQ, b); \
+ tt_int_op(tor_inet_pton(AF_INET6, b, &a2), OP_EQ, 1); \
+ test_op_ip6_(&a1, OP_EQ, &a2, a, b); \
STMT_END
/** Helper: assert that <b>a</b> parses by tor_inet_pton() into a address that
* passes tor_addr_is_internal() with <b>for_listening</b>. */
#define test_internal_ip(a,for_listening) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), ==, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), OP_EQ, 1); \
t1.family = AF_INET6; \
if (!tor_addr_is_internal(&t1, for_listening)) \
TT_DIE(("%s was not internal", a)); \
@@ -130,7 +131,7 @@ test_addr_basic(void *arg)
/** Helper: assert that <b>a</b> parses by tor_inet_pton() into a address that
* does not pass tor_addr_is_internal() with <b>for_listening</b>. */
#define test_external_ip(a,for_listening) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), ==, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), OP_EQ, 1); \
t1.family = AF_INET6; \
if (tor_addr_is_internal(&t1, for_listening)) \
TT_DIE(("%s was not internal", a)); \
@@ -140,8 +141,8 @@ test_addr_basic(void *arg)
* tor_inet_pton(), give addresses that compare in the order defined by
* <b>op</b> with tor_addr_compare(). */
#define test_addr_compare(a, op, b) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), ==, 1); \
- tt_int_op(tor_inet_pton(AF_INET6, b, &t2.addr.in6_addr), ==, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), OP_EQ, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, b, &t2.addr.in6_addr), OP_EQ, 1); \
t1.family = t2.family = AF_INET6; \
r = tor_addr_compare(&t1,&t2,CMP_SEMANTIC); \
if (!(r op 0)) \
@@ -152,8 +153,8 @@ test_addr_basic(void *arg)
* tor_inet_pton(), give addresses that compare in the order defined by
* <b>op</b> with tor_addr_compare_masked() with <b>m</b> masked. */
#define test_addr_compare_masked(a, op, b, m) STMT_BEGIN \
- tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), ==, 1); \
- tt_int_op(tor_inet_pton(AF_INET6, b, &t2.addr.in6_addr), ==, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), OP_EQ, 1); \
+ tt_int_op(tor_inet_pton(AF_INET6, b, &t2.addr.in6_addr), OP_EQ, 1); \
t1.family = t2.family = AF_INET6; \
r = tor_addr_compare_masked(&t1,&t2,m,CMP_SEMANTIC); \
if (!(r op 0)) \
@@ -168,15 +169,15 @@ test_addr_basic(void *arg)
#define test_addr_mask_ports_parse(xx, f, ip1, ip2, ip3, ip4, mm, pt1, pt2) \
STMT_BEGIN \
tt_int_op(tor_addr_parse_mask_ports(xx, 0, &t1, &mask, &port1, &port2), \
- ==, f); \
+ OP_EQ, f); \
p1=tor_inet_ntop(AF_INET6, &t1.addr.in6_addr, bug, sizeof(bug)); \
- tt_int_op(htonl(ip1), ==, tor_addr_to_in6_addr32(&t1)[0]); \
- tt_int_op(htonl(ip2), ==, tor_addr_to_in6_addr32(&t1)[1]); \
- tt_int_op(htonl(ip3), ==, tor_addr_to_in6_addr32(&t1)[2]); \
- tt_int_op(htonl(ip4), ==, tor_addr_to_in6_addr32(&t1)[3]); \
- tt_int_op(mask, ==, mm); \
- tt_uint_op(port1, ==, pt1); \
- tt_uint_op(port2, ==, pt2); \
+ tt_int_op(htonl(ip1), OP_EQ, tor_addr_to_in6_addr32(&t1)[0]); \
+ tt_int_op(htonl(ip2), OP_EQ, tor_addr_to_in6_addr32(&t1)[1]); \
+ tt_int_op(htonl(ip3), OP_EQ, tor_addr_to_in6_addr32(&t1)[2]); \
+ tt_int_op(htonl(ip4), OP_EQ, tor_addr_to_in6_addr32(&t1)[3]); \
+ tt_int_op(mask, OP_EQ, mm); \
+ tt_uint_op(port1, OP_EQ, pt1); \
+ tt_uint_op(port2, OP_EQ, pt2); \
STMT_END
/** Run unit tests for IPv6 encoding/decoding/manipulation functions. */
@@ -202,23 +203,23 @@ test_addr_ip6_helpers(void *arg)
const char *ip_ffff = "::ffff:192.168.1.2";
/* good round trip */
- tt_int_op(tor_inet_pton(AF_INET6, ip, &a1),==, 1);
- tt_ptr_op(tor_inet_ntop(AF_INET6, &a1, buf, sizeof(buf)),==, &buf);
- tt_str_op(buf,==, ip);
+ tt_int_op(tor_inet_pton(AF_INET6, ip, &a1),OP_EQ, 1);
+ tt_ptr_op(tor_inet_ntop(AF_INET6, &a1, buf, sizeof(buf)),OP_EQ, &buf);
+ tt_str_op(buf,OP_EQ, ip);
/* good round trip - ::ffff:0:0 style */
- tt_int_op(tor_inet_pton(AF_INET6, ip_ffff, &a2),==, 1);
- tt_ptr_op(tor_inet_ntop(AF_INET6, &a2, buf, sizeof(buf)),==, &buf);
- tt_str_op(buf,==, ip_ffff);
+ tt_int_op(tor_inet_pton(AF_INET6, ip_ffff, &a2),OP_EQ, 1);
+ tt_ptr_op(tor_inet_ntop(AF_INET6, &a2, buf, sizeof(buf)),OP_EQ, &buf);
+ tt_str_op(buf,OP_EQ, ip_ffff);
/* just long enough buffer (remember \0) */
- tt_str_op(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)+1),==, ip);
- tt_str_op(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)+1),==,
+ tt_str_op(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)+1),OP_EQ, ip);
+ tt_str_op(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)+1),OP_EQ,
ip_ffff);
/* too short buffer (remember \0) */
- tt_ptr_op(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)),==, NULL);
- tt_ptr_op(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)),==, NULL);
+ tt_ptr_op(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)),OP_EQ, NULL);
+ tt_ptr_op(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)),OP_EQ, NULL);
}
/* ==== Converting to and from sockaddr_t. */
@@ -227,16 +228,16 @@ test_addr_ip6_helpers(void *arg)
sin->sin_port = htons(9090);
sin->sin_addr.s_addr = htonl(0x7f7f0102); /*127.127.1.2*/
tor_addr_from_sockaddr(&t1, (struct sockaddr *)sin, &port1);
- tt_int_op(tor_addr_family(&t1),==, AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==, 0x7f7f0102);
- tt_int_op(port1, ==, 9090);
+ tt_int_op(tor_addr_family(&t1),OP_EQ, AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ, 0x7f7f0102);
+ tt_int_op(port1, OP_EQ, 9090);
memset(&sa_storage, 0, sizeof(sa_storage));
- tt_int_op(sizeof(struct sockaddr_in),==,
+ tt_int_op(sizeof(struct sockaddr_in),OP_EQ,
tor_addr_to_sockaddr(&t1, 1234, (struct sockaddr *)&sa_storage,
sizeof(sa_storage)));
- tt_int_op(1234,==, ntohs(sin->sin_port));
- tt_int_op(0x7f7f0102,==, ntohl(sin->sin_addr.s_addr));
+ tt_int_op(1234,OP_EQ, ntohs(sin->sin_port));
+ tt_int_op(0x7f7f0102,OP_EQ, ntohl(sin->sin_addr.s_addr));
memset(&sa_storage, 0, sizeof(sa_storage));
sin6 = (struct sockaddr_in6 *)&sa_storage;
@@ -244,37 +245,37 @@ test_addr_ip6_helpers(void *arg)
sin6->sin6_port = htons(7070);
sin6->sin6_addr.s6_addr[0] = 128;
tor_addr_from_sockaddr(&t1, (struct sockaddr *)sin6, &port1);
- tt_int_op(tor_addr_family(&t1),==, AF_INET6);
- tt_int_op(port1, ==, 7070);
+ tt_int_op(tor_addr_family(&t1),OP_EQ, AF_INET6);
+ tt_int_op(port1, OP_EQ, 7070);
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 0);
- tt_str_op(p1,==, "8000::");
+ tt_str_op(p1,OP_EQ, "8000::");
memset(&sa_storage, 0, sizeof(sa_storage));
- tt_int_op(sizeof(struct sockaddr_in6),==,
+ tt_int_op(sizeof(struct sockaddr_in6),OP_EQ,
tor_addr_to_sockaddr(&t1, 9999, (struct sockaddr *)&sa_storage,
sizeof(sa_storage)));
- tt_int_op(AF_INET6,==, sin6->sin6_family);
- tt_int_op(9999,==, ntohs(sin6->sin6_port));
- tt_int_op(0x80000000,==, ntohl(S6_ADDR32(sin6->sin6_addr)[0]));
+ tt_int_op(AF_INET6,OP_EQ, sin6->sin6_family);
+ tt_int_op(9999,OP_EQ, ntohs(sin6->sin6_port));
+ tt_int_op(0x80000000,OP_EQ, ntohl(S6_ADDR32(sin6->sin6_addr)[0]));
/* ==== tor_addr_lookup: static cases. (Can't test dns without knowing we
* have a good resolver. */
- tt_int_op(0,==, tor_addr_lookup("127.128.129.130", AF_UNSPEC, &t1));
- tt_int_op(AF_INET,==, tor_addr_family(&t1));
- tt_int_op(tor_addr_to_ipv4h(&t1),==, 0x7f808182);
+ tt_int_op(0,OP_EQ, tor_addr_lookup("127.128.129.130", AF_UNSPEC, &t1));
+ tt_int_op(AF_INET,OP_EQ, tor_addr_family(&t1));
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ, 0x7f808182);
- tt_int_op(0,==, tor_addr_lookup("9000::5", AF_UNSPEC, &t1));
- tt_int_op(AF_INET6,==, tor_addr_family(&t1));
- tt_int_op(0x90,==, tor_addr_to_in6_addr8(&t1)[0]);
+ tt_int_op(0,OP_EQ, tor_addr_lookup("9000::5", AF_UNSPEC, &t1));
+ tt_int_op(AF_INET6,OP_EQ, tor_addr_family(&t1));
+ tt_int_op(0x90,OP_EQ, tor_addr_to_in6_addr8(&t1)[0]);
tt_assert(tor_mem_is_zero((char*)tor_addr_to_in6_addr8(&t1)+1, 14));
- tt_int_op(0x05,==, tor_addr_to_in6_addr8(&t1)[15]);
+ tt_int_op(0x05,OP_EQ, tor_addr_to_in6_addr8(&t1)[15]);
/* === Test pton: valid af_inet6 */
/* Simple, valid parsing. */
r = tor_inet_pton(AF_INET6,
"0102:0304:0506:0708:090A:0B0C:0D0E:0F10", &a1);
- tt_int_op(r, ==, 1);
- for (i=0;i<16;++i) { tt_int_op(i+1,==, (int)a1.s6_addr[i]); }
+ tt_int_op(r, OP_EQ, 1);
+ for (i=0;i<16;++i) { tt_int_op(i+1,OP_EQ, (int)a1.s6_addr[i]); }
/* ipv4 ending. */
test_pton6_same("0102:0304:0506:0708:090A:0B0C:0D0E:0F10",
"0102:0304:0506:0708:090A:0B0C:13.14.15.16");
@@ -314,7 +315,7 @@ test_addr_ip6_helpers(void *arg)
"1000:1:0:7::");
/* Bad af param */
- tt_int_op(tor_inet_pton(AF_UNSPEC, 0, 0),==, -1);
+ tt_int_op(tor_inet_pton(AF_UNSPEC, 0, 0),OP_EQ, -1);
/* === Test pton: invalid in6. */
test_pton6_bad("foobar.");
@@ -410,11 +411,12 @@ test_addr_ip6_helpers(void *arg)
test_external_ip("::ffff:169.255.0.0", 0);
/* tor_addr_compare(tor_addr_t x2) */
- test_addr_compare("ffff::", ==, "ffff::0");
- test_addr_compare("0::3:2:1", <, "0::ffff:0.3.2.1");
- test_addr_compare("0::2:2:1", <, "0::ffff:0.3.2.1");
- test_addr_compare("0::ffff:0.3.2.1", >, "0::0:0:0");
- test_addr_compare("0::ffff:5.2.2.1", <, "::ffff:6.0.0.0"); /* XXXX wrong. */
+ test_addr_compare("ffff::", OP_EQ, "ffff::0");
+ test_addr_compare("0::3:2:1", OP_LT, "0::ffff:0.3.2.1");
+ test_addr_compare("0::2:2:1", OP_LT, "0::ffff:0.3.2.1");
+ test_addr_compare("0::ffff:0.3.2.1", OP_GT, "0::0:0:0");
+ test_addr_compare("0::ffff:5.2.2.1", OP_LT,
+ "::ffff:6.0.0.0"); /* XXXX wrong. */
tor_addr_parse_mask_ports("[::ffff:2.3.4.5]", 0, &t1, NULL, NULL, NULL);
tor_addr_parse_mask_ports("2.3.4.5", 0, &t2, NULL, NULL, NULL);
tt_assert(tor_addr_compare(&t1, &t2, CMP_SEMANTIC) == 0);
@@ -423,119 +425,120 @@ test_addr_ip6_helpers(void *arg)
tt_assert(tor_addr_compare(&t1, &t2, CMP_SEMANTIC) < 0);
/* test compare_masked */
- test_addr_compare_masked("ffff::", ==, "ffff::0", 128);
- test_addr_compare_masked("ffff::", ==, "ffff::0", 64);
- test_addr_compare_masked("0::2:2:1", <, "0::8000:2:1", 81);
- test_addr_compare_masked("0::2:2:1", ==, "0::8000:2:1", 80);
+ test_addr_compare_masked("ffff::", OP_EQ, "ffff::0", 128);
+ test_addr_compare_masked("ffff::", OP_EQ, "ffff::0", 64);
+ test_addr_compare_masked("0::2:2:1", OP_LT, "0::8000:2:1", 81);
+ test_addr_compare_masked("0::2:2:1", OP_EQ, "0::8000:2:1", 80);
/* Test undecorated tor_addr_to_str */
- tt_int_op(AF_INET6,==, tor_addr_parse(&t1, "[123:45:6789::5005:11]"));
+ tt_int_op(AF_INET6,OP_EQ, tor_addr_parse(&t1, "[123:45:6789::5005:11]"));
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 0);
- tt_str_op(p1,==, "123:45:6789::5005:11");
- tt_int_op(AF_INET,==, tor_addr_parse(&t1, "18.0.0.1"));
+ tt_str_op(p1,OP_EQ, "123:45:6789::5005:11");
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&t1, "18.0.0.1"));
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 0);
- tt_str_op(p1,==, "18.0.0.1");
+ tt_str_op(p1,OP_EQ, "18.0.0.1");
/* Test decorated tor_addr_to_str */
- tt_int_op(AF_INET6,==, tor_addr_parse(&t1, "[123:45:6789::5005:11]"));
+ tt_int_op(AF_INET6,OP_EQ, tor_addr_parse(&t1, "[123:45:6789::5005:11]"));
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 1);
- tt_str_op(p1,==, "[123:45:6789::5005:11]");
- tt_int_op(AF_INET,==, tor_addr_parse(&t1, "18.0.0.1"));
+ tt_str_op(p1,OP_EQ, "[123:45:6789::5005:11]");
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&t1, "18.0.0.1"));
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 1);
- tt_str_op(p1,==, "18.0.0.1");
+ tt_str_op(p1,OP_EQ, "18.0.0.1");
/* Test buffer bounds checking of tor_addr_to_str */
- tt_int_op(AF_INET6,==, tor_addr_parse(&t1, "::")); /* 2 + \0 */
- tt_ptr_op(tor_addr_to_str(buf, &t1, 2, 0),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 3, 0),==, "::");
- tt_ptr_op(tor_addr_to_str(buf, &t1, 4, 1),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 5, 1),==, "[::]");
-
- tt_int_op(AF_INET6,==, tor_addr_parse(&t1, "2000::1337")); /* 10 + \0 */
- tt_ptr_op(tor_addr_to_str(buf, &t1, 10, 0),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 11, 0),==, "2000::1337");
- tt_ptr_op(tor_addr_to_str(buf, &t1, 12, 1),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 13, 1),==, "[2000::1337]");
-
- tt_int_op(AF_INET,==, tor_addr_parse(&t1, "1.2.3.4")); /* 7 + \0 */
- tt_ptr_op(tor_addr_to_str(buf, &t1, 7, 0),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 8, 0),==, "1.2.3.4");
-
- tt_int_op(AF_INET,==, tor_addr_parse(&t1, "255.255.255.255")); /* 15 + \0 */
- tt_ptr_op(tor_addr_to_str(buf, &t1, 15, 0),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 16, 0),==, "255.255.255.255");
- tt_ptr_op(tor_addr_to_str(buf, &t1, 15, 1),==, NULL); /* too short buf */
- tt_str_op(tor_addr_to_str(buf, &t1, 16, 1),==, "255.255.255.255");
+ tt_int_op(AF_INET6,OP_EQ, tor_addr_parse(&t1, "::")); /* 2 + \0 */
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 2, 0),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 3, 0),OP_EQ, "::");
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 4, 1),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 5, 1),OP_EQ, "[::]");
+
+ tt_int_op(AF_INET6,OP_EQ, tor_addr_parse(&t1, "2000::1337")); /* 10 + \0 */
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 10, 0),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 11, 0),OP_EQ, "2000::1337");
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 12, 1),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 13, 1),OP_EQ, "[2000::1337]");
+
+ tt_int_op(AF_INET,OP_EQ, tor_addr_parse(&t1, "1.2.3.4")); /* 7 + \0 */
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 7, 0),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 8, 0),OP_EQ, "1.2.3.4");
+
+ tt_int_op(AF_INET, OP_EQ,
+ tor_addr_parse(&t1, "255.255.255.255")); /* 15 + \0 */
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 15, 0),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 16, 0),OP_EQ, "255.255.255.255");
+ tt_ptr_op(tor_addr_to_str(buf, &t1, 15, 1),OP_EQ, NULL); /* too short buf */
+ tt_str_op(tor_addr_to_str(buf, &t1, 16, 1),OP_EQ, "255.255.255.255");
t1.family = AF_UNSPEC;
- tt_ptr_op(tor_addr_to_str(buf, &t1, sizeof(buf), 0),==, NULL);
+ tt_ptr_op(tor_addr_to_str(buf, &t1, sizeof(buf), 0),OP_EQ, NULL);
/* Test tor_addr_parse_PTR_name */
i = tor_addr_parse_PTR_name(&t1, "Foobar.baz", AF_UNSPEC, 0);
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
i = tor_addr_parse_PTR_name(&t1, "Foobar.baz", AF_UNSPEC, 1);
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
i = tor_addr_parse_PTR_name(&t1, "9999999999999999999999999999.in-addr.arpa",
AF_UNSPEC, 1);
- tt_int_op(-1,==, i);
+ tt_int_op(-1,OP_EQ, i);
i = tor_addr_parse_PTR_name(&t1, "1.0.168.192.in-addr.arpa",
AF_UNSPEC, 1);
- tt_int_op(1,==, i);
- tt_int_op(tor_addr_family(&t1),==, AF_INET);
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(tor_addr_family(&t1),OP_EQ, AF_INET);
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 1);
- tt_str_op(p1,==, "192.168.0.1");
+ tt_str_op(p1,OP_EQ, "192.168.0.1");
i = tor_addr_parse_PTR_name(&t1, "192.168.0.99", AF_UNSPEC, 0);
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
i = tor_addr_parse_PTR_name(&t1, "192.168.0.99", AF_UNSPEC, 1);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 1);
- tt_str_op(p1,==, "192.168.0.99");
+ tt_str_op(p1,OP_EQ, "192.168.0.99");
memset(&t1, 0, sizeof(t1));
i = tor_addr_parse_PTR_name(&t1,
"0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.f."
"f.e.e.b.1.e.b.e.e.f.f.e.e.e.d.9."
"ip6.ARPA",
AF_UNSPEC, 0);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
p1 = tor_addr_to_str(buf, &t1, sizeof(buf), 1);
- tt_str_op(p1,==, "[9dee:effe:ebe1:beef:fedc:ba98:7654:3210]");
+ tt_str_op(p1,OP_EQ, "[9dee:effe:ebe1:beef:fedc:ba98:7654:3210]");
/* Failing cases. */
i = tor_addr_parse_PTR_name(&t1,
"6.7.8.9.a.b.c.d.e.f."
"f.e.e.b.1.e.b.e.e.f.f.e.e.e.d.9."
"ip6.ARPA",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1,
"6.7.8.9.a.b.c.d.e.f.a.b.c.d.e.f.0."
"f.e.e.b.1.e.b.e.e.f.f.e.e.e.d.9."
"ip6.ARPA",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1,
"6.7.8.9.a.b.c.d.e.f.X.0.0.0.0.9."
"f.e.e.b.1.e.b.e.e.f.f.e.e.e.d.9."
"ip6.ARPA",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1, "32.1.1.in-addr.arpa",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1, ".in-addr.arpa",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1, "1.2.3.4.5.in-addr.arpa",
AF_UNSPEC, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1, "1.2.3.4.5.in-addr.arpa",
AF_INET6, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
i = tor_addr_parse_PTR_name(&t1,
"6.7.8.9.a.b.c.d.e.f.a.b.c.d.e.0."
"f.e.e.b.1.e.b.e.e.f.f.e.e.e.d.9."
"ip6.ARPA",
AF_INET, 0);
- tt_int_op(i,==, -1);
+ tt_int_op(i,OP_EQ, -1);
/* === Test tor_addr_to_PTR_name */
@@ -547,19 +550,19 @@ test_addr_ip6_helpers(void *arg)
tor_addr_from_sockaddr(&t1, (struct sockaddr *)sin, NULL);
/* Check IPv4 PTR - too short buffer */
- tt_int_op(tor_addr_to_PTR_name(rbuf, 1, &t1),==, -1);
+ tt_int_op(tor_addr_to_PTR_name(rbuf, 1, &t1),OP_EQ, -1);
tt_int_op(tor_addr_to_PTR_name(rbuf,
strlen("3.2.1.127.in-addr.arpa") - 1,
- &t1),==, -1);
+ &t1),OP_EQ, -1);
/* Check IPv4 PTR - valid addr */
- tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),==,
+ tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),OP_EQ,
strlen("3.2.1.127.in-addr.arpa"));
- tt_str_op(rbuf,==, "3.2.1.127.in-addr.arpa");
+ tt_str_op(rbuf,OP_EQ, "3.2.1.127.in-addr.arpa");
/* Invalid addr family */
t1.family = AF_UNSPEC;
- tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),==, -1);
+ tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),OP_EQ, -1);
/* Stage IPv6 addr */
memset(&sa_storage, 0, sizeof(sa_storage));
@@ -576,82 +579,82 @@ test_addr_ip6_helpers(void *arg)
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.ip6.arpa";
/* Check IPv6 PTR - too short buffer */
- tt_int_op(tor_addr_to_PTR_name(rbuf, 0, &t1),==, -1);
- tt_int_op(tor_addr_to_PTR_name(rbuf, strlen(addr_PTR) - 1, &t1),==, -1);
+ tt_int_op(tor_addr_to_PTR_name(rbuf, 0, &t1),OP_EQ, -1);
+ tt_int_op(tor_addr_to_PTR_name(rbuf, strlen(addr_PTR) - 1, &t1),OP_EQ, -1);
/* Check IPv6 PTR - valid addr */
- tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),==,
+ tt_int_op(tor_addr_to_PTR_name(rbuf, sizeof(rbuf), &t1),OP_EQ,
strlen(addr_PTR));
- tt_str_op(rbuf,==, addr_PTR);
+ tt_str_op(rbuf,OP_EQ, addr_PTR);
}
/* XXXX turn this into a separate function; it's not all IPv6. */
/* test tor_addr_parse_mask_ports */
test_addr_mask_ports_parse("[::f]/17:47-95", AF_INET6,
0, 0, 0, 0x0000000f, 17, 47, 95);
- tt_str_op(p1,==, "::f");
+ tt_str_op(p1,OP_EQ, "::f");
//test_addr_parse("[::fefe:4.1.1.7/120]:999-1000");
//test_addr_parse_check("::fefe:401:107", 120, 999, 1000);
test_addr_mask_ports_parse("[::ffff:4.1.1.7]/120:443", AF_INET6,
0, 0, 0x0000ffff, 0x04010107, 120, 443, 443);
- tt_str_op(p1,==, "::ffff:4.1.1.7");
+ tt_str_op(p1,OP_EQ, "::ffff:4.1.1.7");
test_addr_mask_ports_parse("[abcd:2::44a:0]:2-65000", AF_INET6,
0xabcd0002, 0, 0, 0x044a0000, 128, 2, 65000);
- tt_str_op(p1,==, "abcd:2::44a:0");
+ tt_str_op(p1,OP_EQ, "abcd:2::44a:0");
/* Try some long addresses. */
r=tor_addr_parse_mask_ports("[ffff:1111:1111:1111:1111:1111:1111:1111]",
0, &t1, NULL, NULL, NULL);
tt_assert(r == AF_INET6);
r=tor_addr_parse_mask_ports("[ffff:1111:1111:1111:1111:1111:1111:11111]",
0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[ffff:1111:1111:1111:1111:1111:1111:1111:1]",
0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports(
"[ffff:1111:1111:1111:1111:1111:1111:ffff:"
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:"
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:"
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]",
0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Try some failing cases. */
r=tor_addr_parse_mask_ports("[fefef::]/112", 0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[fefe::/112", 0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[fefe::", 0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[fefe::X]", 0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("efef::/112", 0, &t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[f:f:f:f:f:f:f:f::]",0,&t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[::f:f:f:f:f:f:f:f]",0,&t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[f:f:f:f:f:f:f:f:f]",0,&t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[f:f:f:f:f::]/fred",0,&t1,&mask, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("[f:f:f:f:f::]/255.255.0.0",
0,&t1, NULL, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* This one will get rejected because it isn't a pure prefix. */
r=tor_addr_parse_mask_ports("1.1.2.3/255.255.64.0",0,&t1, &mask,NULL,NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Test for V4-mapped address with mask < 96. (arguably not valid) */
r=tor_addr_parse_mask_ports("[::ffff:1.1.2.2/33]",0,&t1, &mask, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("1.1.2.2/33",0,&t1, &mask, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Try extended wildcard addresses with out TAPMP_EXTENDED_STAR*/
r=tor_addr_parse_mask_ports("*4",0,&t1, &mask, NULL, NULL);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r=tor_addr_parse_mask_ports("*6",0,&t1, &mask, NULL, NULL);
- tt_int_op(r, ==, -1);
-#if 0
+ tt_int_op(r, OP_EQ, -1);
+ tt_assert(r == -1);
/* Try a mask with a wildcard. */
r=tor_addr_parse_mask_ports("*/16",0,&t1, &mask, NULL, NULL);
tt_assert(r == -1);
@@ -661,61 +664,60 @@ test_addr_ip6_helpers(void *arg)
r=tor_addr_parse_mask_ports("*6/30",TAPMP_EXTENDED_STAR,
&t1, &mask, NULL, NULL);
tt_assert(r == -1);
-#endif
/* Basic mask tests*/
r=tor_addr_parse_mask_ports("1.1.2.2/31",0,&t1, &mask, NULL, NULL);
tt_assert(r == AF_INET);
- tt_int_op(mask,==,31);
- tt_int_op(tor_addr_family(&t1),==,AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==,0x01010202);
+ tt_int_op(mask,OP_EQ,31);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ,0x01010202);
r=tor_addr_parse_mask_ports("3.4.16.032:1-2",0,&t1, &mask, &port1, &port2);
tt_assert(r == AF_INET);
- tt_int_op(mask,==,32);
- tt_int_op(tor_addr_family(&t1),==,AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==,0x03041020);
+ tt_int_op(mask,OP_EQ,32);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ,0x03041020);
tt_assert(port1 == 1);
tt_assert(port2 == 2);
r=tor_addr_parse_mask_ports("1.1.2.3/255.255.128.0",0,&t1, &mask,NULL,NULL);
tt_assert(r == AF_INET);
- tt_int_op(mask,==,17);
- tt_int_op(tor_addr_family(&t1),==,AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==,0x01010203);
+ tt_int_op(mask,OP_EQ,17);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ,0x01010203);
r=tor_addr_parse_mask_ports("[efef::]/112",0,&t1, &mask, &port1, &port2);
tt_assert(r == AF_INET6);
tt_assert(port1 == 1);
tt_assert(port2 == 65535);
/* Try regular wildcard behavior without TAPMP_EXTENDED_STAR */
r=tor_addr_parse_mask_ports("*:80-443",0,&t1,&mask,&port1,&port2);
- tt_int_op(r,==,AF_INET); /* Old users of this always get inet */
- tt_int_op(tor_addr_family(&t1),==,AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==,0);
- tt_int_op(mask,==,0);
- tt_int_op(port1,==,80);
- tt_int_op(port2,==,443);
+ tt_int_op(r,OP_EQ,AF_INET); /* Old users of this always get inet */
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ,0);
+ tt_int_op(mask,OP_EQ,0);
+ tt_int_op(port1,OP_EQ,80);
+ tt_int_op(port2,OP_EQ,443);
/* Now try wildcards *with* TAPMP_EXTENDED_STAR */
r=tor_addr_parse_mask_ports("*:8000-9000",TAPMP_EXTENDED_STAR,
&t1,&mask,&port1,&port2);
- tt_int_op(r,==,AF_UNSPEC);
- tt_int_op(tor_addr_family(&t1),==,AF_UNSPEC);
- tt_int_op(mask,==,0);
- tt_int_op(port1,==,8000);
- tt_int_op(port2,==,9000);
+ tt_int_op(r,OP_EQ,AF_UNSPEC);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_UNSPEC);
+ tt_int_op(mask,OP_EQ,0);
+ tt_int_op(port1,OP_EQ,8000);
+ tt_int_op(port2,OP_EQ,9000);
r=tor_addr_parse_mask_ports("*4:6667",TAPMP_EXTENDED_STAR,
&t1,&mask,&port1,&port2);
- tt_int_op(r,==,AF_INET);
- tt_int_op(tor_addr_family(&t1),==,AF_INET);
- tt_int_op(tor_addr_to_ipv4h(&t1),==,0);
- tt_int_op(mask,==,0);
- tt_int_op(port1,==,6667);
- tt_int_op(port2,==,6667);
+ tt_int_op(r,OP_EQ,AF_INET);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET);
+ tt_int_op(tor_addr_to_ipv4h(&t1),OP_EQ,0);
+ tt_int_op(mask,OP_EQ,0);
+ tt_int_op(port1,OP_EQ,6667);
+ tt_int_op(port2,OP_EQ,6667);
r=tor_addr_parse_mask_ports("*6",TAPMP_EXTENDED_STAR,
&t1,&mask,&port1,&port2);
- tt_int_op(r,==,AF_INET6);
- tt_int_op(tor_addr_family(&t1),==,AF_INET6);
+ tt_int_op(r,OP_EQ,AF_INET6);
+ tt_int_op(tor_addr_family(&t1),OP_EQ,AF_INET6);
tt_assert(tor_mem_is_zero((const char*)tor_addr_to_in6_addr32(&t1), 16));
- tt_int_op(mask,==,0);
- tt_int_op(port1,==,1);
- tt_int_op(port2,==,65535);
+ tt_int_op(mask,OP_EQ,0);
+ tt_int_op(port1,OP_EQ,1);
+ tt_int_op(port2,OP_EQ,65535);
/* make sure inet address lengths >= max */
tt_assert(INET_NTOA_BUF_LEN >= sizeof("255.255.255.255"));
@@ -751,87 +753,87 @@ test_addr_parse(void *arg)
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.1:1234",
&addr, &port, -1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
tor_addr_to_str(buf, &addr, sizeof(buf), 0);
- tt_str_op(buf,==, "192.0.2.1");
- tt_int_op(port,==, 1234);
+ tt_str_op(buf,OP_EQ, "192.0.2.1");
+ tt_int_op(port,OP_EQ, 1234);
r= tor_addr_port_parse(LOG_DEBUG,
"[::1]:1234",
&addr, &port, -1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
tor_addr_to_str(buf, &addr, sizeof(buf), 0);
- tt_str_op(buf,==, "::1");
- tt_int_op(port,==, 1234);
+ tt_str_op(buf,OP_EQ, "::1");
+ tt_int_op(port,OP_EQ, 1234);
/* Domain name. */
r= tor_addr_port_parse(LOG_DEBUG,
"torproject.org:1234",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Only IP. */
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.2",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.2",
&addr, &port, 200);
- tt_int_op(r, ==, 0);
- tt_int_op(port,==,200);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(port,OP_EQ,200);
r= tor_addr_port_parse(LOG_DEBUG,
"[::1]",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r= tor_addr_port_parse(LOG_DEBUG,
"[::1]",
&addr, &port, 400);
- tt_int_op(r, ==, 0);
- tt_int_op(port,==,400);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(port,OP_EQ,400);
/* Bad port. */
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.2:66666",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.2:66666",
&addr, &port, 200);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Only domain name */
r= tor_addr_port_parse(LOG_DEBUG,
"torproject.org",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
r= tor_addr_port_parse(LOG_DEBUG,
"torproject.org",
&addr, &port, 200);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Bad IP address */
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2:1234",
&addr, &port, -1);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Make sure that the default port has lower priority than the real
one */
r= tor_addr_port_parse(LOG_DEBUG,
"192.0.2.2:1337",
&addr, &port, 200);
- tt_int_op(r, ==, 0);
- tt_int_op(port,==,1337);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(port,OP_EQ,1337);
r= tor_addr_port_parse(LOG_DEBUG,
"[::1]:1369",
&addr, &port, 200);
- tt_int_op(r, ==, 0);
- tt_int_op(port,==,1369);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(port,OP_EQ,1369);
done:
;
@@ -886,7 +888,7 @@ test_virtaddrmap(void *data)
get_random_virtual_addr(&cfg[ipv6], &a);
//printf("%s\n", fmt_addr(&a));
/* Make sure that the first b bits match the configured network */
- tt_int_op(0, ==, tor_addr_compare_masked(&a, &cfg[ipv6].addr,
+ tt_int_op(0, OP_EQ, tor_addr_compare_masked(&a, &cfg[ipv6].addr,
bits, CMP_EXACT));
/* And track which bits have been different between pairs of
@@ -930,7 +932,7 @@ test_addr_dup_ip(void *arg)
(void)arg;
#define CHECK(ip, s) do { \
v = tor_dup_ip(ip); \
- tt_str_op(v,==,(s)); \
+ tt_str_op(v,OP_EQ,(s)); \
tor_free(v); \
} while (0)
@@ -956,7 +958,7 @@ test_addr_sockaddr_to_str(void *arg)
#endif
#define CHECK(sa, s) do { \
v = tor_sockaddr_to_str((const struct sockaddr*) &(sa)); \
- tt_str_op(v,==,(s)); \
+ tt_str_op(v,OP_EQ,(s)); \
tor_free(v); \
} while (0)
(void)arg;
@@ -1013,12 +1015,13 @@ test_addr_is_loopback(void *data)
(void)data;
for (i=0; loopback_items[i].name; ++i) {
- tt_int_op(tor_addr_parse(&addr, loopback_items[i].name), >=, 0);
- tt_int_op(tor_addr_is_loopback(&addr), ==, loopback_items[i].is_loopback);
+ tt_int_op(tor_addr_parse(&addr, loopback_items[i].name), OP_GE, 0);
+ tt_int_op(tor_addr_is_loopback(&addr), OP_EQ,
+ loopback_items[i].is_loopback);
}
tor_addr_make_unspec(&addr);
- tt_int_op(tor_addr_is_loopback(&addr), ==, 0);
+ tt_int_op(tor_addr_is_loopback(&addr), OP_EQ, 0);
done:
;
@@ -1033,18 +1036,18 @@ test_addr_make_null(void *data)
(void) data;
/* Ensure that before tor_addr_make_null, addr != 0's */
memset(addr, 1, sizeof(*addr));
- tt_int_op(memcmp(addr, zeros, sizeof(*addr)), !=, 0);
+ tt_int_op(memcmp(addr, zeros, sizeof(*addr)), OP_NE, 0);
/* Test with AF == AF_INET */
zeros->family = AF_INET;
tor_addr_make_null(addr, AF_INET);
- tt_int_op(memcmp(addr, zeros, sizeof(*addr)), ==, 0);
- tt_str_op(tor_addr_to_str(buf, addr, sizeof(buf), 0), ==, "0.0.0.0");
+ tt_int_op(memcmp(addr, zeros, sizeof(*addr)), OP_EQ, 0);
+ tt_str_op(tor_addr_to_str(buf, addr, sizeof(buf), 0), OP_EQ, "0.0.0.0");
/* Test with AF == AF_INET6 */
memset(addr, 1, sizeof(*addr));
zeros->family = AF_INET6;
tor_addr_make_null(addr, AF_INET6);
- tt_int_op(memcmp(addr, zeros, sizeof(*addr)), ==, 0);
- tt_str_op(tor_addr_to_str(buf, addr, sizeof(buf), 0), ==, "::");
+ tt_int_op(memcmp(addr, zeros, sizeof(*addr)), OP_EQ, 0);
+ tt_str_op(tor_addr_to_str(buf, addr, sizeof(buf), 0), OP_EQ, "::");
done:
tor_free(addr);
tor_free(zeros);
diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c
index cea719077c..cb29ab0a9e 100644
--- a/src/test/test_buffers.c
+++ b/src/test/test_buffers.c
@@ -30,7 +30,7 @@ test_buffers_basic(void *arg)
TT_DIE(("Assertion failed."));
//test_eq(buf_capacity(buf), 4096);
- tt_int_op(buf_datalen(buf),==, 0);
+ tt_int_op(buf_datalen(buf),OP_EQ, 0);
/****
* General pointer frobbing
@@ -40,16 +40,16 @@ test_buffers_basic(void *arg)
}
write_to_buf(str, 256, buf);
write_to_buf(str, 256, buf);
- tt_int_op(buf_datalen(buf),==, 512);
+ tt_int_op(buf_datalen(buf),OP_EQ, 512);
fetch_from_buf(str2, 200, buf);
- tt_mem_op(str,==, str2, 200);
- tt_int_op(buf_datalen(buf),==, 312);
+ tt_mem_op(str,OP_EQ, str2, 200);
+ tt_int_op(buf_datalen(buf),OP_EQ, 312);
memset(str2, 0, sizeof(str2));
fetch_from_buf(str2, 256, buf);
- tt_mem_op(str+200,==, str2, 56);
- tt_mem_op(str,==, str2+56, 200);
- tt_int_op(buf_datalen(buf),==, 56);
+ tt_mem_op(str+200,OP_EQ, str2, 56);
+ tt_mem_op(str,OP_EQ, str2+56, 200);
+ tt_int_op(buf_datalen(buf),OP_EQ, 56);
memset(str2, 0, sizeof(str2));
/* Okay, now we should be 512 bytes into the 4096-byte buffer. If we add
* another 3584 bytes, we hit the end. */
@@ -57,16 +57,16 @@ test_buffers_basic(void *arg)
write_to_buf(str, 256, buf);
}
assert_buf_ok(buf);
- tt_int_op(buf_datalen(buf),==, 3896);
+ tt_int_op(buf_datalen(buf),OP_EQ, 3896);
fetch_from_buf(str2, 56, buf);
- tt_int_op(buf_datalen(buf),==, 3840);
- tt_mem_op(str+200,==, str2, 56);
+ tt_int_op(buf_datalen(buf),OP_EQ, 3840);
+ tt_mem_op(str+200,OP_EQ, str2, 56);
for (j=0;j<15;++j) {
memset(str2, 0, sizeof(str2));
fetch_from_buf(str2, 256, buf);
- tt_mem_op(str,==, str2, 256);
+ tt_mem_op(str,OP_EQ, str2, 256);
}
- tt_int_op(buf_datalen(buf),==, 0);
+ tt_int_op(buf_datalen(buf),OP_EQ, 0);
buf_free(buf);
buf = NULL;
@@ -76,7 +76,7 @@ test_buffers_basic(void *arg)
write_to_buf(str+1, 255, buf);
//test_eq(buf_capacity(buf), 256);
fetch_from_buf(str2, 254, buf);
- tt_mem_op(str+1,==, str2, 254);
+ tt_mem_op(str+1,OP_EQ, str2, 254);
//test_eq(buf_capacity(buf), 256);
assert_buf_ok(buf);
write_to_buf(str, 32, buf);
@@ -85,15 +85,15 @@ test_buffers_basic(void *arg)
write_to_buf(str, 256, buf);
assert_buf_ok(buf);
//test_eq(buf_capacity(buf), 512);
- tt_int_op(buf_datalen(buf),==, 33+256);
+ tt_int_op(buf_datalen(buf),OP_EQ, 33+256);
fetch_from_buf(str2, 33, buf);
- tt_int_op(*str2,==, str[255]);
+ tt_int_op(*str2,OP_EQ, str[255]);
- tt_mem_op(str2+1,==, str, 32);
+ tt_mem_op(str2+1,OP_EQ, str, 32);
//test_eq(buf_capacity(buf), 512);
- tt_int_op(buf_datalen(buf),==, 256);
+ tt_int_op(buf_datalen(buf),OP_EQ, 256);
fetch_from_buf(str2, 256, buf);
- tt_mem_op(str,==, str2, 256);
+ tt_mem_op(str,OP_EQ, str2, 256);
/* now try shrinking: case 1. */
buf_free(buf);
@@ -102,10 +102,10 @@ test_buffers_basic(void *arg)
write_to_buf(str,255, buf);
}
//test_eq(buf_capacity(buf), 33668);
- tt_int_op(buf_datalen(buf),==, 17085);
+ tt_int_op(buf_datalen(buf),OP_EQ, 17085);
for (j=0; j < 40; ++j) {
fetch_from_buf(str2, 255,buf);
- tt_mem_op(str2,==, str, 255);
+ tt_mem_op(str2,OP_EQ, str, 255);
}
/* now try shrinking: case 2. */
@@ -116,7 +116,7 @@ test_buffers_basic(void *arg)
}
for (j=0; j < 20; ++j) {
fetch_from_buf(str2, 255,buf);
- tt_mem_op(str2,==, str, 255);
+ tt_mem_op(str2,OP_EQ, str, 255);
}
for (j=0;j<80;++j) {
write_to_buf(str,255, buf);
@@ -124,7 +124,7 @@ test_buffers_basic(void *arg)
//test_eq(buf_capacity(buf),33668);
for (j=0; j < 120; ++j) {
fetch_from_buf(str2, 255,buf);
- tt_mem_op(str2,==, str, 255);
+ tt_mem_op(str2,OP_EQ, str, 255);
}
/* Move from buf to buf. */
@@ -133,27 +133,27 @@ test_buffers_basic(void *arg)
buf2 = buf_new_with_capacity(4096);
for (j=0;j<100;++j)
write_to_buf(str, 255, buf);
- tt_int_op(buf_datalen(buf),==, 25500);
+ tt_int_op(buf_datalen(buf),OP_EQ, 25500);
for (j=0;j<100;++j) {
r = 10;
move_buf_to_buf(buf2, buf, &r);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
}
- tt_int_op(buf_datalen(buf),==, 24500);
- tt_int_op(buf_datalen(buf2),==, 1000);
+ tt_int_op(buf_datalen(buf),OP_EQ, 24500);
+ tt_int_op(buf_datalen(buf2),OP_EQ, 1000);
for (j=0;j<3;++j) {
fetch_from_buf(str2, 255, buf2);
- tt_mem_op(str2,==, str, 255);
+ tt_mem_op(str2,OP_EQ, str, 255);
}
r = 8192; /*big move*/
move_buf_to_buf(buf2, buf, &r);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = 30000; /* incomplete move */
move_buf_to_buf(buf2, buf, &r);
- tt_int_op(r,==, 13692);
+ tt_int_op(r,OP_EQ, 13692);
for (j=0;j<97;++j) {
fetch_from_buf(str2, 255, buf2);
- tt_mem_op(str2,==, str, 255);
+ tt_mem_op(str2,OP_EQ, str, 255);
}
buf_free(buf);
buf_free(buf2);
@@ -163,16 +163,16 @@ test_buffers_basic(void *arg)
cp = "Testing. This is a moderately long Testing string.";
for (j = 0; cp[j]; j++)
write_to_buf(cp+j, 1, buf);
- tt_int_op(0,==, buf_find_string_offset(buf, "Testing", 7));
- tt_int_op(1,==, buf_find_string_offset(buf, "esting", 6));
- tt_int_op(1,==, buf_find_string_offset(buf, "est", 3));
- tt_int_op(39,==, buf_find_string_offset(buf, "ing str", 7));
- tt_int_op(35,==, buf_find_string_offset(buf, "Testing str", 11));
- tt_int_op(32,==, buf_find_string_offset(buf, "ng ", 3));
- tt_int_op(43,==, buf_find_string_offset(buf, "string.", 7));
- tt_int_op(-1,==, buf_find_string_offset(buf, "shrdlu", 6));
- tt_int_op(-1,==, buf_find_string_offset(buf, "Testing thing", 13));
- tt_int_op(-1,==, buf_find_string_offset(buf, "ngx", 3));
+ tt_int_op(0,OP_EQ, buf_find_string_offset(buf, "Testing", 7));
+ tt_int_op(1,OP_EQ, buf_find_string_offset(buf, "esting", 6));
+ tt_int_op(1,OP_EQ, buf_find_string_offset(buf, "est", 3));
+ tt_int_op(39,OP_EQ, buf_find_string_offset(buf, "ing str", 7));
+ tt_int_op(35,OP_EQ, buf_find_string_offset(buf, "Testing str", 11));
+ tt_int_op(32,OP_EQ, buf_find_string_offset(buf, "ng ", 3));
+ tt_int_op(43,OP_EQ, buf_find_string_offset(buf, "string.", 7));
+ tt_int_op(-1,OP_EQ, buf_find_string_offset(buf, "shrdlu", 6));
+ tt_int_op(-1,OP_EQ, buf_find_string_offset(buf, "Testing thing", 13));
+ tt_int_op(-1,OP_EQ, buf_find_string_offset(buf, "ngx", 3));
buf_free(buf);
buf = NULL;
@@ -183,7 +183,7 @@ test_buffers_basic(void *arg)
write_to_buf(cp, 65536, buf);
tor_free(cp);
- tt_int_op(buf_datalen(buf), ==, 65536);
+ tt_int_op(buf_datalen(buf), OP_EQ, 65536);
buf_free(buf);
buf = NULL;
}
@@ -213,19 +213,19 @@ test_buffer_pullup(void *arg)
buf = buf_new_with_capacity(3000); /* rounds up to next power of 2. */
tt_assert(buf);
- tt_int_op(buf_get_default_chunk_size(buf), ==, 4096);
+ tt_int_op(buf_get_default_chunk_size(buf), OP_EQ, 4096);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
/* There are a bunch of cases for pullup. One is the trivial case. Let's
mess around with an empty buffer. */
buf_pullup(buf, 16, 1);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, ==, NULL);
- tt_uint_op(sz, ==, 0);
+ tt_ptr_op(cp, OP_EQ, NULL);
+ tt_uint_op(sz, OP_EQ, 0);
/* Let's make sure nothing got allocated */
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
/* Case 1: everything puts into the first chunk with some moving. */
@@ -234,22 +234,22 @@ test_buffer_pullup(void *arg)
write_to_buf(stuff, 3000, buf);
write_to_buf(stuff+3000, 3000, buf);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, !=, NULL);
- tt_int_op(sz, <=, 4096);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_int_op(sz, OP_LE, 4096);
/* Make room for 3000 bytes in the first chunk, so that the pullup-move code
* can get tested. */
- tt_int_op(fetch_from_buf(tmp, 3000, buf), ==, 3000);
- tt_mem_op(tmp,==, stuff, 3000);
+ tt_int_op(fetch_from_buf(tmp, 3000, buf), OP_EQ, 3000);
+ tt_mem_op(tmp,OP_EQ, stuff, 3000);
buf_pullup(buf, 2048, 0);
assert_buf_ok(buf);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, !=, NULL);
- tt_int_op(sz, >=, 2048);
- tt_mem_op(cp,==, stuff+3000, 2048);
- tt_int_op(3000, ==, buf_datalen(buf));
- tt_int_op(fetch_from_buf(tmp, 3000, buf), ==, 0);
- tt_mem_op(tmp,==, stuff+3000, 2048);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_int_op(sz, OP_GE, 2048);
+ tt_mem_op(cp,OP_EQ, stuff+3000, 2048);
+ tt_int_op(3000, OP_EQ, buf_datalen(buf));
+ tt_int_op(fetch_from_buf(tmp, 3000, buf), OP_EQ, 0);
+ tt_mem_op(tmp,OP_EQ, stuff+3000, 2048);
buf_free(buf);
@@ -259,26 +259,26 @@ test_buffer_pullup(void *arg)
write_to_buf(stuff+4000, 4000, buf);
write_to_buf(stuff+8000, 4000, buf);
write_to_buf(stuff+12000, 4000, buf);
- tt_int_op(buf_datalen(buf), ==, 16000);
+ tt_int_op(buf_datalen(buf), OP_EQ, 16000);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, !=, NULL);
- tt_int_op(sz, <=, 4096);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_int_op(sz, OP_LE, 4096);
buf_pullup(buf, 12500, 0);
assert_buf_ok(buf);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, !=, NULL);
- tt_int_op(sz, >=, 12500);
- tt_mem_op(cp,==, stuff, 12500);
- tt_int_op(buf_datalen(buf), ==, 16000);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_int_op(sz, OP_GE, 12500);
+ tt_mem_op(cp,OP_EQ, stuff, 12500);
+ tt_int_op(buf_datalen(buf), OP_EQ, 16000);
fetch_from_buf(tmp, 12400, buf);
- tt_mem_op(tmp,==, stuff, 12400);
- tt_int_op(buf_datalen(buf), ==, 3600);
+ tt_mem_op(tmp,OP_EQ, stuff, 12400);
+ tt_int_op(buf_datalen(buf), OP_EQ, 3600);
fetch_from_buf(tmp, 3500, buf);
- tt_mem_op(tmp,==, stuff+12400, 3500);
+ tt_mem_op(tmp,OP_EQ, stuff+12400, 3500);
fetch_from_buf(tmp, 100, buf);
- tt_mem_op(tmp,==, stuff+15900, 10);
+ tt_mem_op(tmp,OP_EQ, stuff+15900, 10);
buf_free(buf);
@@ -290,16 +290,16 @@ test_buffer_pullup(void *arg)
buf_pullup(buf, 16000, 0); /* Way too much. */
assert_buf_ok(buf);
buf_get_first_chunk_data(buf, &cp, &sz);
- tt_ptr_op(cp, !=, NULL);
- tt_int_op(sz, ==, 7900);
- tt_mem_op(cp,==, stuff+100, 7900);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_int_op(sz, OP_EQ, 7900);
+ tt_mem_op(cp,OP_EQ, stuff+100, 7900);
buf_free(buf);
buf = NULL;
buf_shrink_freelists(1);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
done:
buf_free(buf);
buf_shrink_freelists(1);
@@ -321,31 +321,31 @@ test_buffer_copy(void *arg)
tt_assert(buf);
/* Copy an empty buffer. */
- tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf));
+ tt_int_op(0, OP_EQ, generic_buffer_set_to_copy(&buf2, buf));
tt_assert(buf2);
- tt_int_op(0, ==, generic_buffer_len(buf2));
+ tt_int_op(0, OP_EQ, generic_buffer_len(buf2));
/* Now try with a short buffer. */
s = "And now comes an act of enormous enormance!";
len = strlen(s);
generic_buffer_add(buf, s, len);
- tt_int_op(len, ==, generic_buffer_len(buf));
+ tt_int_op(len, OP_EQ, generic_buffer_len(buf));
/* Add junk to buf2 so we can test replacing.*/
generic_buffer_add(buf2, "BLARG", 5);
- tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf));
- tt_int_op(len, ==, generic_buffer_len(buf2));
+ tt_int_op(0, OP_EQ, generic_buffer_set_to_copy(&buf2, buf));
+ tt_int_op(len, OP_EQ, generic_buffer_len(buf2));
generic_buffer_get(buf2, b, len);
- tt_mem_op(b, ==, s, len);
+ tt_mem_op(b, OP_EQ, s, len);
/* Now free buf2 and retry so we can test allocating */
generic_buffer_free(buf2);
buf2 = NULL;
- tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf));
- tt_int_op(len, ==, generic_buffer_len(buf2));
+ tt_int_op(0, OP_EQ, generic_buffer_set_to_copy(&buf2, buf));
+ tt_int_op(len, OP_EQ, generic_buffer_len(buf2));
generic_buffer_get(buf2, b, len);
- tt_mem_op(b, ==, s, len);
+ tt_mem_op(b, OP_EQ, s, len);
/* Clear buf for next test */
generic_buffer_get(buf, b, len);
- tt_int_op(generic_buffer_len(buf),==,0);
+ tt_int_op(generic_buffer_len(buf),OP_EQ,0);
/* Okay, now let's try a bigger buffer. */
s = "Quis autem vel eum iure reprehenderit qui in ea voluptate velit "
@@ -357,12 +357,12 @@ test_buffer_copy(void *arg)
generic_buffer_add(buf, b, 1);
generic_buffer_add(buf, s, len);
}
- tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf));
- tt_int_op(generic_buffer_len(buf2), ==, generic_buffer_len(buf));
+ tt_int_op(0, OP_EQ, generic_buffer_set_to_copy(&buf2, buf));
+ tt_int_op(generic_buffer_len(buf2), OP_EQ, generic_buffer_len(buf));
for (i = 0; i < 256; ++i) {
generic_buffer_get(buf2, b, len+1);
- tt_int_op((unsigned char)b[0],==,i);
- tt_mem_op(b+1, ==, s, len);
+ tt_int_op((unsigned char)b[0],OP_EQ,i);
+ tt_mem_op(b+1, OP_EQ, s, len);
}
done:
@@ -382,62 +382,62 @@ test_buffer_ext_or_cmd(void *arg)
(void) arg;
/* Empty -- should give "not there. */
- tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, ==, cmd);
+ tt_int_op(0, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_EQ, cmd);
/* Three bytes: shouldn't work. */
generic_buffer_add(buf, "\x00\x20\x00", 3);
- tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, ==, cmd);
- tt_int_op(3, ==, generic_buffer_len(buf));
+ tt_int_op(0, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_EQ, cmd);
+ tt_int_op(3, OP_EQ, generic_buffer_len(buf));
/* 0020 0000: That's a nil command. It should work. */
generic_buffer_add(buf, "\x00", 1);
- tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, !=, cmd);
- tt_int_op(0x20, ==, cmd->cmd);
- tt_int_op(0, ==, cmd->len);
- tt_int_op(0, ==, generic_buffer_len(buf));
+ tt_int_op(1, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_NE, cmd);
+ tt_int_op(0x20, OP_EQ, cmd->cmd);
+ tt_int_op(0, OP_EQ, cmd->len);
+ tt_int_op(0, OP_EQ, generic_buffer_len(buf));
ext_or_cmd_free(cmd);
cmd = NULL;
/* Now try a length-6 command with one byte missing. */
generic_buffer_add(buf, "\x10\x21\x00\x06""abcde", 9);
- tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, ==, cmd);
+ tt_int_op(0, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_EQ, cmd);
generic_buffer_add(buf, "f", 1);
- tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, !=, cmd);
- tt_int_op(0x1021, ==, cmd->cmd);
- tt_int_op(6, ==, cmd->len);
- tt_mem_op("abcdef", ==, cmd->body, 6);
- tt_int_op(0, ==, generic_buffer_len(buf));
+ tt_int_op(1, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_NE, cmd);
+ tt_int_op(0x1021, OP_EQ, cmd->cmd);
+ tt_int_op(6, OP_EQ, cmd->len);
+ tt_mem_op("abcdef", OP_EQ, cmd->body, 6);
+ tt_int_op(0, OP_EQ, generic_buffer_len(buf));
ext_or_cmd_free(cmd);
cmd = NULL;
/* Now try a length-10 command with 4 extra bytes. */
generic_buffer_add(buf, "\xff\xff\x00\x0a"
"loremipsum\x10\x00\xff\xff", 18);
- tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, !=, cmd);
- tt_int_op(0xffff, ==, cmd->cmd);
- tt_int_op(10, ==, cmd->len);
- tt_mem_op("loremipsum", ==, cmd->body, 10);
- tt_int_op(4, ==, generic_buffer_len(buf));
+ tt_int_op(1, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_NE, cmd);
+ tt_int_op(0xffff, OP_EQ, cmd->cmd);
+ tt_int_op(10, OP_EQ, cmd->len);
+ tt_mem_op("loremipsum", OP_EQ, cmd->body, 10);
+ tt_int_op(4, OP_EQ, generic_buffer_len(buf));
ext_or_cmd_free(cmd);
cmd = NULL;
/* Finally, let's try a maximum-length command. We already have the header
* waiting. */
- tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_int_op(0, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
tmp = tor_malloc_zero(65535);
generic_buffer_add(buf, tmp, 65535);
- tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
- tt_ptr_op(NULL, !=, cmd);
- tt_int_op(0x1000, ==, cmd->cmd);
- tt_int_op(0xffff, ==, cmd->len);
- tt_mem_op(tmp, ==, cmd->body, 65535);
- tt_int_op(0, ==, generic_buffer_len(buf));
+ tt_int_op(1, OP_EQ, generic_buffer_fetch_ext_or_cmd(buf, &cmd));
+ tt_ptr_op(NULL, OP_NE, cmd);
+ tt_int_op(0x1000, OP_EQ, cmd->cmd);
+ tt_int_op(0xffff, OP_EQ, cmd->len);
+ tt_mem_op(tmp, OP_EQ, cmd->body, 65535);
+ tt_int_op(0, OP_EQ, generic_buffer_len(buf));
ext_or_cmd_free(cmd);
cmd = NULL;
@@ -458,65 +458,66 @@ test_buffer_allocation_tracking(void *arg)
(void)arg;
crypto_rand(junk, 16384);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
buf1 = buf_new();
tt_assert(buf1);
buf2 = buf_new();
tt_assert(buf2);
- tt_int_op(buf_allocation(buf1), ==, 0);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_allocation(buf1), OP_EQ, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
write_to_buf(junk, 4000, buf1);
write_to_buf(junk, 4000, buf1);
write_to_buf(junk, 4000, buf1);
write_to_buf(junk, 4000, buf1);
- tt_int_op(buf_allocation(buf1), ==, 16384);
+ tt_int_op(buf_allocation(buf1), OP_EQ, 16384);
fetch_from_buf(junk, 100, buf1);
- tt_int_op(buf_allocation(buf1), ==, 16384); /* still 4 4k chunks */
+ tt_int_op(buf_allocation(buf1), OP_EQ, 16384); /* still 4 4k chunks */
- tt_int_op(buf_get_total_allocation(), ==, 16384);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 16384);
fetch_from_buf(junk, 4096, buf1); /* drop a 1k chunk... */
- tt_int_op(buf_allocation(buf1), ==, 3*4096); /* now 3 4k chunks */
+ tt_int_op(buf_allocation(buf1), OP_EQ, 3*4096); /* now 3 4k chunks */
#ifdef ENABLE_BUF_FREELISTS
- tt_int_op(buf_get_total_allocation(), ==, 16384); /* that chunk went onto
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 16384); /* that chunk went onto
the freelist. */
#else
- tt_int_op(buf_get_total_allocation(), ==, 12288); /* that chunk was really
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 12288); /* that chunk was really
freed. */
#endif
write_to_buf(junk, 4000, buf2);
- tt_int_op(buf_allocation(buf2), ==, 4096); /* another 4k chunk. */
+ tt_int_op(buf_allocation(buf2), OP_EQ, 4096); /* another 4k chunk. */
/*
* If we're using freelists, size stays at 16384 because we just pulled a
* chunk from the freelist. If we aren't, we bounce back up to 16384 by
* allocating a new chunk.
*/
- tt_int_op(buf_get_total_allocation(), ==, 16384);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 16384);
write_to_buf(junk, 4000, buf2);
- tt_int_op(buf_allocation(buf2), ==, 8192); /* another 4k chunk. */
- tt_int_op(buf_get_total_allocation(), ==, 5*4096); /* that chunk was new. */
+ tt_int_op(buf_allocation(buf2), OP_EQ, 8192); /* another 4k chunk. */
+ tt_int_op(buf_get_total_allocation(),
+ OP_EQ, 5*4096); /* that chunk was new. */
/* Make a really huge buffer */
for (i = 0; i < 1000; ++i) {
write_to_buf(junk, 4000, buf2);
}
- tt_int_op(buf_allocation(buf2), >=, 4008000);
- tt_int_op(buf_get_total_allocation(), >=, 4008000);
+ tt_int_op(buf_allocation(buf2), OP_GE, 4008000);
+ tt_int_op(buf_get_total_allocation(), OP_GE, 4008000);
buf_free(buf2);
buf2 = NULL;
- tt_int_op(buf_get_total_allocation(), <, 4008000);
+ tt_int_op(buf_get_total_allocation(), OP_LT, 4008000);
buf_shrink_freelists(1);
- tt_int_op(buf_get_total_allocation(), ==, buf_allocation(buf1));
+ tt_int_op(buf_get_total_allocation(), OP_EQ, buf_allocation(buf1));
buf_free(buf1);
buf1 = NULL;
buf_shrink_freelists(1);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
done:
buf_free(buf1);
@@ -545,37 +546,38 @@ test_buffer_time_tracking(void *arg)
tt_assert(buf);
/* Empty buffer means the timestamp is 0. */
- tt_int_op(0, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC));
- tt_int_op(0, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
+ tt_int_op(0, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC));
+ tt_int_op(0, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
tor_gettimeofday_cache_set(&tv0);
write_to_buf("ABCDEFG", 7, buf);
- tt_int_op(1000, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
+ tt_int_op(1000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
buf2 = buf_copy(buf);
tt_assert(buf2);
- tt_int_op(1234, ==, buf_get_oldest_chunk_timestamp(buf2, START_MSEC+1234));
+ tt_int_op(1234, OP_EQ,
+ buf_get_oldest_chunk_timestamp(buf2, START_MSEC+1234));
/* Now add more bytes; enough to overflow the first chunk. */
tv0.tv_usec += 123 * 1000;
tor_gettimeofday_cache_set(&tv0);
for (i = 0; i < 600; ++i)
write_to_buf("ABCDEFG", 7, buf);
- tt_int_op(4207, ==, buf_datalen(buf));
+ tt_int_op(4207, OP_EQ, buf_datalen(buf));
/* The oldest bytes are still in the front. */
- tt_int_op(2000, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2000));
+ tt_int_op(2000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2000));
/* Once those bytes are dropped, the chunk is still on the first
* timestamp. */
fetch_from_buf(tmp, 100, buf);
- tt_int_op(2000, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2000));
+ tt_int_op(2000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2000));
/* But once we discard the whole first chunk, we get the data in the second
* chunk. */
fetch_from_buf(tmp, 4000, buf);
- tt_int_op(107, ==, buf_datalen(buf));
- tt_int_op(2000, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2123));
+ tt_int_op(107, OP_EQ, buf_datalen(buf));
+ tt_int_op(2000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2123));
/* This time we'll be grabbing a chunk from the freelist, and making sure
its time gets updated */
@@ -584,13 +586,13 @@ test_buffer_time_tracking(void *arg)
tor_gettimeofday_cache_set(&tv0);
for (i = 0; i < 600; ++i)
write_to_buf("ABCDEFG", 7, buf);
- tt_int_op(4307, ==, buf_datalen(buf));
+ tt_int_op(4307, OP_EQ, buf_datalen(buf));
- tt_int_op(2000, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2123));
+ tt_int_op(2000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+2123));
fetch_from_buf(tmp, 4000, buf);
fetch_from_buf(tmp, 306, buf);
- tt_int_op(0, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+5617));
- tt_int_op(383, ==, buf_get_oldest_chunk_timestamp(buf, START_MSEC+6000));
+ tt_int_op(0, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+5617));
+ tt_int_op(383, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+6000));
done:
buf_free(buf);
@@ -613,31 +615,31 @@ test_buffers_zlib_impl(int finalize_with_nil)
msg = tor_malloc(512);
crypto_rand(msg, 512);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg, 128, 0), ==, 0);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg+128, 128, 0), ==, 0);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, msg+256, 256, 0), ==, 0);
+ 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), ==, 0);
+ 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), ==, 0);
+ tt_int_op(write_to_buf_zlib(buf, zlib_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), ==, 0);
+ tt_int_op(fetch_from_buf(contents, in_len, buf), OP_EQ, 0);
- tt_int_op(0, ==, tor_gzip_uncompress(&expanded, &out_len,
+ tt_int_op(0, OP_EQ, tor_gzip_uncompress(&expanded, &out_len,
contents, in_len,
ZLIB_METHOD, 1,
LOG_WARN));
- tt_int_op(out_len, >=, 128);
- tt_mem_op(msg, ==, expanded, 128);
- tt_int_op(out_len, >=, 512);
- tt_mem_op(msg, ==, expanded, 512);
- tt_int_op(out_len, ==, 512+9);
- tt_mem_op("all done", ==, expanded+512, 9);
+ 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);
@@ -680,28 +682,28 @@ test_buffers_zlib_fin_at_chunk_end(void *arg)
tt_assert(buf->head);
/* Fill up the chunk so the zlib stuff won't fit in one chunk. */
- tt_uint_op(buf->head->memlen, <, sz);
+ 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, ==, headerjunk);
- tt_uint_op(buf_datalen(buf), ==, headerjunk);
+ 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);
- tt_int_op(write_to_buf_zlib(buf, zlib_state, "", 0, 1), ==, 0);
+ tt_int_op(write_to_buf_zlib(buf, zlib_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), ==, 0);
+ tt_int_op(fetch_from_buf(contents, in_len, buf), OP_EQ, 0);
- tt_uint_op(in_len, >, headerjunk);
+ tt_uint_op(in_len, OP_GT, headerjunk);
- tt_int_op(0, ==, tor_gzip_uncompress(&expanded, &out_len,
+ 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(out_len, ==, 0);
+ tt_int_op(out_len, OP_EQ, 0);
tt_assert(expanded);
done:
diff --git a/src/test/test_cell_formats.c b/src/test/test_cell_formats.c
index 19ecedc8ac..e1f6bd71f7 100644
--- a/src/test/test_cell_formats.c
+++ b/src/test/test_cell_formats.c
@@ -30,16 +30,16 @@ test_cfmt_relay_header(void *arg)
uint8_t hdr_out[RELAY_HEADER_SIZE];
(void)arg;
- tt_int_op(sizeof(hdr_1), ==, RELAY_HEADER_SIZE);
+ tt_int_op(sizeof(hdr_1), OP_EQ, RELAY_HEADER_SIZE);
relay_header_unpack(&rh, hdr_1);
- tt_int_op(rh.command, ==, 3);
- tt_int_op(rh.recognized, ==, 0);
- tt_int_op(rh.stream_id, ==, 0x2122);
- tt_mem_op(rh.integrity, ==, "ABCD", 4);
- tt_int_op(rh.length, ==, 0x103);
+ tt_int_op(rh.command, OP_EQ, 3);
+ tt_int_op(rh.recognized, OP_EQ, 0);
+ tt_int_op(rh.stream_id, OP_EQ, 0x2122);
+ tt_mem_op(rh.integrity, OP_EQ, "ABCD", 4);
+ tt_int_op(rh.length, OP_EQ, 0x103);
relay_header_pack(hdr_out, &rh);
- tt_mem_op(hdr_out, ==, hdr_1, RELAY_HEADER_SIZE);
+ tt_mem_op(hdr_out, OP_EQ, hdr_1, RELAY_HEADER_SIZE);
done:
;
@@ -74,32 +74,32 @@ test_cfmt_begin_cells(void *arg)
/* Try begindir. */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN_DIR, "", 0);
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_ptr_op(NULL, ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(0, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(1, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_ptr_op(NULL, OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(0, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(1, OP_EQ, bcell.is_begindir);
/* A Begindir with extra stuff. */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN_DIR, "12345", 5);
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_ptr_op(NULL, ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(0, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(1, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_ptr_op(NULL, OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(0, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(1, OP_EQ, bcell.is_begindir);
/* A short but valid begin cell */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b:9", 6);
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("a.b", ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(9, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("a.b", OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(9, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* A significantly loner begin cell */
@@ -108,35 +108,35 @@ test_cfmt_begin_cells(void *arg)
const char c[] = "here-is-a-nice-long.hostname.com:65535";
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, c, strlen(c)+1);
}
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("here-is-a-nice-long.hostname.com", ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(65535, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("here-is-a-nice-long.hostname.com", OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(65535, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* An IPv4 begin cell. */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "18.9.22.169:80", 15);
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("18.9.22.169", ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(80, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("18.9.22.169", OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(80, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* An IPv6 begin cell. Let's make sure we handle colons*/
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN,
"[2620::6b0:b:1a1a:0:26e5:480e]:80", 34);
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("[2620::6b0:b:1a1a:0:26e5:480e]", ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(80, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("[2620::6b0:b:1a1a:0:26e5:480e]", OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(80, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* a begin cell with extra junk but not enough for flags. */
@@ -145,12 +145,12 @@ test_cfmt_begin_cells(void *arg)
const char c[] = "another.example.com:80\x00\x01\x02";
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, c, sizeof(c)-1);
}
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("another.example.com", ==, bcell.address);
- tt_int_op(0, ==, bcell.flags);
- tt_int_op(80, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("another.example.com", OP_EQ, bcell.address);
+ tt_int_op(0, OP_EQ, bcell.flags);
+ tt_int_op(80, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* a begin cell with flags. */
@@ -159,12 +159,12 @@ test_cfmt_begin_cells(void *arg)
const char c[] = "another.example.com:443\x00\x01\x02\x03\x04";
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, c, sizeof(c)-1);
}
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("another.example.com", ==, bcell.address);
- tt_int_op(0x1020304, ==, bcell.flags);
- tt_int_op(443, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("another.example.com", OP_EQ, bcell.address);
+ tt_int_op(0x1020304, OP_EQ, bcell.flags);
+ tt_int_op(443, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* a begin cell with flags and even more cruft after that. */
@@ -173,12 +173,12 @@ test_cfmt_begin_cells(void *arg)
const char c[] = "a-further.example.com:22\x00\xee\xaa\x00\xffHi mom";
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, c, sizeof(c)-1);
}
- tt_int_op(0, ==, begin_cell_parse(&cell, &bcell, &end_reason));
- tt_str_op("a-further.example.com", ==, bcell.address);
- tt_int_op(0xeeaa00ff, ==, bcell.flags);
- tt_int_op(22, ==, bcell.port);
- tt_int_op(5, ==, bcell.stream_id);
- tt_int_op(0, ==, bcell.is_begindir);
+ tt_int_op(0, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_str_op("a-further.example.com", OP_EQ, bcell.address);
+ tt_int_op(0xeeaa00ff, OP_EQ, bcell.flags);
+ tt_int_op(22, OP_EQ, bcell.port);
+ tt_int_op(5, OP_EQ, bcell.stream_id);
+ tt_int_op(0, OP_EQ, bcell.is_begindir);
tor_free(bcell.address);
/* bad begin cell: impossible length. */
@@ -189,42 +189,42 @@ test_cfmt_begin_cells(void *arg)
{
relay_header_t rh;
relay_header_unpack(&rh, cell.payload);
- tt_int_op(rh.length, ==, 510);
+ tt_int_op(rh.length, OP_EQ, 510);
}
- tt_int_op(-2, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-2, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* Bad begin cell: no body. */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "", 0);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* bad begin cell: no body. */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "", 0);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* bad begin cell: no colon */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b", 4);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* bad begin cell: no ports */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b:", 5);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* bad begin cell: bad port */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b:xyz", 8);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b:100000", 11);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
/* bad begin cell: no nul */
memset(&bcell, 0x7f, sizeof(bcell));
make_relay_cell(&cell, RELAY_COMMAND_BEGIN, "a.b:80", 6);
- tt_int_op(-1, ==, begin_cell_parse(&cell, &bcell, &end_reason));
+ tt_int_op(-1, OP_EQ, begin_cell_parse(&cell, &bcell, &end_reason));
done:
tor_free(bcell.address);
@@ -244,47 +244,47 @@ test_cfmt_connected_cells(void *arg)
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED, "", 0);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_UNSPEC);
- tt_int_op(ttl, ==, -1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_UNSPEC);
+ tt_int_op(ttl, OP_EQ, -1);
/* A slightly less oldschool one: only an IPv4 address */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED, "\x20\x30\x40\x50", 4);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET);
- tt_str_op(fmt_addr(&addr), ==, "32.48.64.80");
- tt_int_op(ttl, ==, -1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "32.48.64.80");
+ tt_int_op(ttl, OP_EQ, -1);
/* Bogus but understandable: truncated TTL */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED, "\x11\x12\x13\x14\x15", 5);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET);
- tt_str_op(fmt_addr(&addr), ==, "17.18.19.20");
- tt_int_op(ttl, ==, -1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "17.18.19.20");
+ tt_int_op(ttl, OP_EQ, -1);
/* Regular IPv4 one: address and TTL */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
"\x02\x03\x04\x05\x00\x00\x0e\x10", 8);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET);
- tt_str_op(fmt_addr(&addr), ==, "2.3.4.5");
- tt_int_op(ttl, ==, 3600);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "2.3.4.5");
+ tt_int_op(ttl, OP_EQ, 3600);
/* IPv4 with too-big TTL */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
"\x02\x03\x04\x05\xf0\x00\x00\x00", 8);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET);
- tt_str_op(fmt_addr(&addr), ==, "2.3.4.5");
- tt_int_op(ttl, ==, -1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "2.3.4.5");
+ tt_int_op(ttl, OP_EQ, -1);
/* IPv6 (ttl is mandatory) */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
@@ -294,10 +294,10 @@ test_cfmt_connected_cells(void *arg)
"\x00\x00\x02\x58", 25);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET6);
- tt_str_op(fmt_addr(&addr), ==, "2607:f8b0:400c:c02::68");
- tt_int_op(ttl, ==, 600);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET6);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "2607:f8b0:400c:c02::68");
+ tt_int_op(ttl, OP_EQ, 600);
/* IPv6 (ttl too big) */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
@@ -307,17 +307,17 @@ test_cfmt_connected_cells(void *arg)
"\x90\x00\x02\x58", 25);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET6);
- tt_str_op(fmt_addr(&addr), ==, "2607:f8b0:400c:c02::68");
- tt_int_op(ttl, ==, -1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET6);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "2607:f8b0:400c:c02::68");
+ tt_int_op(ttl, OP_EQ, -1);
/* Bogus size: 3. */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
"\x00\x01\x02", 3);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Bogus family: 7. */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
@@ -327,7 +327,7 @@ test_cfmt_connected_cells(void *arg)
"\x90\x00\x02\x58", 25);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Truncated IPv6. */
make_relay_cell(&cell, RELAY_COMMAND_CONNECTED,
@@ -337,7 +337,7 @@ test_cfmt_connected_cells(void *arg)
"\x00\x00\x02", 24);
relay_header_unpack(&rh, cell.payload);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
/* Now make sure we can generate connected cells correctly. */
/* Try an IPv4 address */
@@ -346,16 +346,16 @@ test_cfmt_connected_cells(void *arg)
tor_addr_parse(&addr, "30.40.50.60");
rh.length = connected_cell_format_payload(cell.payload+RELAY_HEADER_SIZE,
&addr, 128);
- tt_int_op(rh.length, ==, 8);
+ tt_int_op(rh.length, OP_EQ, 8);
test_memeq_hex(cell.payload+RELAY_HEADER_SIZE, "1e28323c" "00000080");
/* Try parsing it. */
tor_addr_make_unspec(&addr);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET);
- tt_str_op(fmt_addr(&addr), ==, "30.40.50.60");
- tt_int_op(ttl, ==, 128);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "30.40.50.60");
+ tt_int_op(ttl, OP_EQ, 128);
/* Try an IPv6 address */
memset(&rh, 0, sizeof(rh));
@@ -363,7 +363,7 @@ test_cfmt_connected_cells(void *arg)
tor_addr_parse(&addr, "2620::6b0:b:1a1a:0:26e5:480e");
rh.length = connected_cell_format_payload(cell.payload+RELAY_HEADER_SIZE,
&addr, 3600);
- tt_int_op(rh.length, ==, 25);
+ tt_int_op(rh.length, OP_EQ, 25);
test_memeq_hex(cell.payload + RELAY_HEADER_SIZE,
"00000000" "06"
"2620000006b0000b1a1a000026e5480e" "00000e10");
@@ -371,10 +371,10 @@ test_cfmt_connected_cells(void *arg)
/* Try parsing it. */
tor_addr_make_unspec(&addr);
r = connected_cell_parse(&rh, &cell, &addr, &ttl);
- tt_int_op(r, ==, 0);
- tt_int_op(tor_addr_family(&addr), ==, AF_INET6);
- tt_str_op(fmt_addr(&addr), ==, "2620:0:6b0:b:1a1a:0:26e5:480e");
- tt_int_op(ttl, ==, 3600);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(tor_addr_family(&addr), OP_EQ, AF_INET6);
+ tt_str_op(fmt_addr(&addr), OP_EQ, "2620:0:6b0:b:1a1a:0:26e5:480e");
+ tt_int_op(ttl, OP_EQ, 3600);
done:
tor_free(mem_op_hex_tmp);
@@ -398,14 +398,14 @@ test_cfmt_create_cells(void *arg)
crypto_rand((char*)b, TAP_ONIONSKIN_CHALLENGE_LEN);
cell.command = CELL_CREATE;
memcpy(cell.payload, b, TAP_ONIONSKIN_CHALLENGE_LEN);
- tt_int_op(0, ==, create_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATE, ==, cc.cell_type);
- tt_int_op(ONION_HANDSHAKE_TYPE_TAP, ==, cc.handshake_type);
- tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.onionskin,==, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
- tt_int_op(0, ==, create_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE, OP_EQ, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_TAP, OP_EQ, cc.handshake_type);
+ tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.onionskin,OP_EQ, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
+ tt_int_op(0, OP_EQ, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A valid create_fast cell. */
memset(&cell, 0, sizeof(cell));
@@ -413,14 +413,14 @@ test_cfmt_create_cells(void *arg)
crypto_rand((char*)b, CREATE_FAST_LEN);
cell.command = CELL_CREATE_FAST;
memcpy(cell.payload, b, CREATE_FAST_LEN);
- tt_int_op(0, ==, create_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATE_FAST, ==, cc.cell_type);
- tt_int_op(ONION_HANDSHAKE_TYPE_FAST, ==, cc.handshake_type);
- tt_int_op(CREATE_FAST_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.onionskin,==, b, CREATE_FAST_LEN + 10);
- tt_int_op(0, ==, create_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE_FAST, OP_EQ, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_FAST, OP_EQ, cc.handshake_type);
+ tt_int_op(CREATE_FAST_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.onionskin,OP_EQ, b, CREATE_FAST_LEN + 10);
+ tt_int_op(0, OP_EQ, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A valid create2 cell with a TAP payload */
memset(&cell, 0, sizeof(cell));
@@ -429,14 +429,14 @@ test_cfmt_create_cells(void *arg)
cell.command = CELL_CREATE2;
memcpy(cell.payload, "\x00\x00\x00\xBA", 4); /* TAP, 186 bytes long */
memcpy(cell.payload+4, b, TAP_ONIONSKIN_CHALLENGE_LEN);
- tt_int_op(0, ==, create_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATE2, ==, cc.cell_type);
- tt_int_op(ONION_HANDSHAKE_TYPE_TAP, ==, cc.handshake_type);
- tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.onionskin,==, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
- tt_int_op(0, ==, create_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE2, OP_EQ, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_TAP, OP_EQ, cc.handshake_type);
+ tt_int_op(TAP_ONIONSKIN_CHALLENGE_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.onionskin,OP_EQ, b, TAP_ONIONSKIN_CHALLENGE_LEN + 10);
+ tt_int_op(0, OP_EQ, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A valid create2 cell with an ntor payload */
memset(&cell, 0, sizeof(cell));
@@ -445,14 +445,14 @@ test_cfmt_create_cells(void *arg)
cell.command = CELL_CREATE2;
memcpy(cell.payload, "\x00\x02\x00\x54", 4); /* ntor, 84 bytes long */
memcpy(cell.payload+4, b, NTOR_ONIONSKIN_LEN);
- tt_int_op(0, ==, create_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATE2, ==, cc.cell_type);
- tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, ==, cc.handshake_type);
- tt_int_op(NTOR_ONIONSKIN_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.onionskin,==, b, NTOR_ONIONSKIN_LEN + 10);
- tt_int_op(0, ==, create_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE2, OP_EQ, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, OP_EQ, cc.handshake_type);
+ tt_int_op(NTOR_ONIONSKIN_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.onionskin,OP_EQ, b, NTOR_ONIONSKIN_LEN + 10);
+ tt_int_op(0, OP_EQ, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A valid create cell with an ntor payload, in legacy format. */
memset(&cell, 0, sizeof(cell));
@@ -461,38 +461,38 @@ test_cfmt_create_cells(void *arg)
cell.command = CELL_CREATE;
memcpy(cell.payload, "ntorNTORntorNTOR", 16);
memcpy(cell.payload+16, b, NTOR_ONIONSKIN_LEN);
- tt_int_op(0, ==, create_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATE, ==, cc.cell_type);
- tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, ==, cc.handshake_type);
- tt_int_op(NTOR_ONIONSKIN_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.onionskin,==, b, NTOR_ONIONSKIN_LEN + 10);
- tt_int_op(0, ==, create_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATE, OP_EQ, cc.cell_type);
+ tt_int_op(ONION_HANDSHAKE_TYPE_NTOR, OP_EQ, cc.handshake_type);
+ tt_int_op(NTOR_ONIONSKIN_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.onionskin,OP_EQ, b, NTOR_ONIONSKIN_LEN + 10);
+ tt_int_op(0, OP_EQ, create_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* == Okay, now let's try to parse some impossible stuff. */
/* It has to be some kind of a create cell! */
cell.command = CELL_CREATED;
- tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(-1, OP_EQ, create_cell_parse(&cc, &cell));
/* You can't acutally make an unparseable CREATE or CREATE_FAST cell. */
/* Try some CREATE2 cells. First with a bad type. */
cell.command = CELL_CREATE2;
memcpy(cell.payload, "\x00\x50\x00\x99", 4); /* Type 0x50???? */
- tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(-1, OP_EQ, create_cell_parse(&cc, &cell));
/* Now a good type with an incorrect length. */
memcpy(cell.payload, "\x00\x00\x00\xBC", 4); /* TAP, 187 bytes.*/
- tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(-1, OP_EQ, create_cell_parse(&cc, &cell));
/* Now a good type with a ridiculous length. */
memcpy(cell.payload, "\x00\x00\x02\x00", 4); /* TAP, 512 bytes.*/
- tt_int_op(-1, ==, create_cell_parse(&cc, &cell));
+ tt_int_op(-1, OP_EQ, create_cell_parse(&cc, &cell));
/* == Time to try formatting bad cells. The important thing is that
we reject big lengths, so just check that for now. */
cc.handshake_len = 512;
- tt_int_op(-1, ==, create_cell_format(&cell2, &cc));
+ tt_int_op(-1, OP_EQ, create_cell_format(&cell2, &cc));
/* == Try formatting a create2 cell we don't understand. XXXX */
@@ -516,13 +516,13 @@ test_cfmt_created_cells(void *arg)
crypto_rand((char*)b, TAP_ONIONSKIN_REPLY_LEN);
cell.command = CELL_CREATED;
memcpy(cell.payload, b, TAP_ONIONSKIN_REPLY_LEN);
- tt_int_op(0, ==, created_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATED, ==, cc.cell_type);
- tt_int_op(TAP_ONIONSKIN_REPLY_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.reply,==, b, TAP_ONIONSKIN_REPLY_LEN + 10);
- tt_int_op(0, ==, created_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED, OP_EQ, cc.cell_type);
+ tt_int_op(TAP_ONIONSKIN_REPLY_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.reply,OP_EQ, b, TAP_ONIONSKIN_REPLY_LEN + 10);
+ tt_int_op(0, OP_EQ, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A good CREATED_FAST cell */
memset(&cell, 0, sizeof(cell));
@@ -530,13 +530,13 @@ test_cfmt_created_cells(void *arg)
crypto_rand((char*)b, CREATED_FAST_LEN);
cell.command = CELL_CREATED_FAST;
memcpy(cell.payload, b, CREATED_FAST_LEN);
- tt_int_op(0, ==, created_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATED_FAST, ==, cc.cell_type);
- tt_int_op(CREATED_FAST_LEN, ==, cc.handshake_len);
- tt_mem_op(cc.reply,==, b, CREATED_FAST_LEN + 10);
- tt_int_op(0, ==, created_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED_FAST, OP_EQ, cc.cell_type);
+ tt_int_op(CREATED_FAST_LEN, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.reply,OP_EQ, b, CREATED_FAST_LEN + 10);
+ tt_int_op(0, OP_EQ, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A good CREATED2 cell with short reply */
memset(&cell, 0, sizeof(cell));
@@ -545,13 +545,13 @@ test_cfmt_created_cells(void *arg)
cell.command = CELL_CREATED2;
memcpy(cell.payload, "\x00\x40", 2);
memcpy(cell.payload+2, b, 64);
- tt_int_op(0, ==, created_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATED2, ==, cc.cell_type);
- tt_int_op(64, ==, cc.handshake_len);
- tt_mem_op(cc.reply,==, b, 80);
- tt_int_op(0, ==, created_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED2, OP_EQ, cc.cell_type);
+ tt_int_op(64, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.reply,OP_EQ, b, 80);
+ tt_int_op(0, OP_EQ, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* A good CREATED2 cell with maximal reply */
memset(&cell, 0, sizeof(cell));
@@ -560,13 +560,13 @@ test_cfmt_created_cells(void *arg)
cell.command = CELL_CREATED2;
memcpy(cell.payload, "\x01\xF0", 2);
memcpy(cell.payload+2, b, 496);
- tt_int_op(0, ==, created_cell_parse(&cc, &cell));
- tt_int_op(CELL_CREATED2, ==, cc.cell_type);
- tt_int_op(496, ==, cc.handshake_len);
- tt_mem_op(cc.reply,==, b, 496);
- tt_int_op(0, ==, created_cell_format(&cell2, &cc));
- tt_int_op(cell.command, ==, cell2.command);
- tt_mem_op(cell.payload,==, cell2.payload, CELL_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, created_cell_parse(&cc, &cell));
+ tt_int_op(CELL_CREATED2, OP_EQ, cc.cell_type);
+ tt_int_op(496, OP_EQ, cc.handshake_len);
+ tt_mem_op(cc.reply,OP_EQ, b, 496);
+ tt_int_op(0, OP_EQ, created_cell_format(&cell2, &cc));
+ tt_int_op(cell.command, OP_EQ, cell2.command);
+ tt_mem_op(cell.payload,OP_EQ, cell2.payload, CELL_PAYLOAD_SIZE);
/* Bogus CREATED2 cell: too long! */
memset(&cell, 0, sizeof(cell));
@@ -574,11 +574,11 @@ test_cfmt_created_cells(void *arg)
crypto_rand((char*)b, 496);
cell.command = CELL_CREATED2;
memcpy(cell.payload, "\x01\xF1", 2);
- tt_int_op(-1, ==, created_cell_parse(&cc, &cell));
+ tt_int_op(-1, OP_EQ, created_cell_parse(&cc, &cell));
/* Unformattable CREATED2 cell: too long! */
cc.handshake_len = 497;
- tt_int_op(-1, ==, created_cell_format(&cell2, &cc));
+ tt_int_op(-1, OP_EQ, created_cell_format(&cell2, &cc));
done:
;
@@ -606,21 +606,21 @@ test_cfmt_extend_cells(void *arg)
memcpy(p, "\x12\xf4\x00\x01\x01\x02", 6); /* 18 244 0 1 : 258 */
memcpy(p+6,b,TAP_ONIONSKIN_CHALLENGE_LEN);
memcpy(p+6+TAP_ONIONSKIN_CHALLENGE_LEN, "electroencephalogram", 20);
- tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
+ tt_int_op(0, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
p, 26+TAP_ONIONSKIN_CHALLENGE_LEN));
- tt_int_op(RELAY_COMMAND_EXTEND, ==, ec.cell_type);
- tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
- tt_int_op(258, ==, ec.orport_ipv4.port);
- tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
- tt_mem_op(ec.node_id,==, "electroencephalogram", 20);
- tt_int_op(cc->cell_type, ==, CELL_CREATE);
- tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_TAP);
- tt_int_op(cc->handshake_len, ==, TAP_ONIONSKIN_CHALLENGE_LEN);
- tt_mem_op(cc->onionskin,==, b, TAP_ONIONSKIN_CHALLENGE_LEN+20);
- tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND);
- tt_int_op(p2_len, ==, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
- tt_mem_op(p2,==, p, RELAY_PAYLOAD_SIZE);
+ tt_int_op(RELAY_COMMAND_EXTEND, OP_EQ, ec.cell_type);
+ tt_str_op("18.244.0.1", OP_EQ, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(258, OP_EQ, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, OP_EQ, tor_addr_family(&ec.orport_ipv6.addr));
+ tt_mem_op(ec.node_id,OP_EQ, "electroencephalogram", 20);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATE);
+ tt_int_op(cc->handshake_type, OP_EQ, ONION_HANDSHAKE_TYPE_TAP);
+ tt_int_op(cc->handshake_len, OP_EQ, TAP_ONIONSKIN_CHALLENGE_LEN);
+ tt_mem_op(cc->onionskin,OP_EQ, b, TAP_ONIONSKIN_CHALLENGE_LEN+20);
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, OP_EQ, RELAY_COMMAND_EXTEND);
+ tt_int_op(p2_len, OP_EQ, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
+ tt_mem_op(p2,OP_EQ, p, RELAY_PAYLOAD_SIZE);
/* Let's do an ntor stuffed in a legacy EXTEND cell */
memset(p, 0, sizeof(p));
@@ -630,22 +630,22 @@ test_cfmt_extend_cells(void *arg)
memcpy(p+6,"ntorNTORntorNTOR", 16);
memcpy(p+22, b, NTOR_ONIONSKIN_LEN);
memcpy(p+6+TAP_ONIONSKIN_CHALLENGE_LEN, "electroencephalogram", 20);
- tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
+ tt_int_op(0, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND,
p, 26+TAP_ONIONSKIN_CHALLENGE_LEN));
- tt_int_op(RELAY_COMMAND_EXTEND, ==, ec.cell_type);
- tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
- tt_int_op(258, ==, ec.orport_ipv4.port);
- tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
- tt_mem_op(ec.node_id,==, "electroencephalogram", 20);
- tt_int_op(cc->cell_type, ==, CELL_CREATE2);
- tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_NTOR);
- tt_int_op(cc->handshake_len, ==, NTOR_ONIONSKIN_LEN);
- tt_mem_op(cc->onionskin,==, b, NTOR_ONIONSKIN_LEN+20);
- tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND);
- tt_int_op(p2_len, ==, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
- tt_mem_op(p2,==, p, RELAY_PAYLOAD_SIZE);
- tt_int_op(0, ==, create_cell_format_relayed(&cell, cc));
+ tt_int_op(RELAY_COMMAND_EXTEND, OP_EQ, ec.cell_type);
+ tt_str_op("18.244.0.1", OP_EQ, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(258, OP_EQ, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, OP_EQ, tor_addr_family(&ec.orport_ipv6.addr));
+ tt_mem_op(ec.node_id,OP_EQ, "electroencephalogram", 20);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, OP_EQ, ONION_HANDSHAKE_TYPE_NTOR);
+ tt_int_op(cc->handshake_len, OP_EQ, NTOR_ONIONSKIN_LEN);
+ tt_mem_op(cc->onionskin,OP_EQ, b, NTOR_ONIONSKIN_LEN+20);
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, OP_EQ, RELAY_COMMAND_EXTEND);
+ tt_int_op(p2_len, OP_EQ, 26+TAP_ONIONSKIN_CHALLENGE_LEN);
+ tt_mem_op(p2,OP_EQ, p, RELAY_PAYLOAD_SIZE);
+ tt_int_op(0, OP_EQ, create_cell_format_relayed(&cell, cc));
/* Now let's do a minimal ntor EXTEND2 cell. */
memset(&ec, 0xff, sizeof(ec));
@@ -659,21 +659,21 @@ test_cfmt_extend_cells(void *arg)
/* Prep for the handshake: type and length */
memcpy(p+31, "\x00\x02\x00\x54", 4);
memcpy(p+35, b, NTOR_ONIONSKIN_LEN);
- tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(0, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, 35+NTOR_ONIONSKIN_LEN));
- tt_int_op(RELAY_COMMAND_EXTEND2, ==, ec.cell_type);
- tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
- tt_int_op(61681, ==, ec.orport_ipv4.port);
- tt_int_op(AF_UNSPEC, ==, tor_addr_family(&ec.orport_ipv6.addr));
- tt_mem_op(ec.node_id,==, "anarchoindividualist", 20);
- tt_int_op(cc->cell_type, ==, CELL_CREATE2);
- tt_int_op(cc->handshake_type, ==, ONION_HANDSHAKE_TYPE_NTOR);
- tt_int_op(cc->handshake_len, ==, NTOR_ONIONSKIN_LEN);
- tt_mem_op(cc->onionskin,==, b, NTOR_ONIONSKIN_LEN+20);
- tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND2);
- tt_int_op(p2_len, ==, 35+NTOR_ONIONSKIN_LEN);
- tt_mem_op(p2,==, p, RELAY_PAYLOAD_SIZE);
+ tt_int_op(RELAY_COMMAND_EXTEND2, OP_EQ, ec.cell_type);
+ tt_str_op("18.244.0.1", OP_EQ, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(61681, OP_EQ, ec.orport_ipv4.port);
+ tt_int_op(AF_UNSPEC, OP_EQ, tor_addr_family(&ec.orport_ipv6.addr));
+ tt_mem_op(ec.node_id,OP_EQ, "anarchoindividualist", 20);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, OP_EQ, ONION_HANDSHAKE_TYPE_NTOR);
+ tt_int_op(cc->handshake_len, OP_EQ, NTOR_ONIONSKIN_LEN);
+ tt_mem_op(cc->onionskin,OP_EQ, b, NTOR_ONIONSKIN_LEN+20);
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, OP_EQ, RELAY_COMMAND_EXTEND2);
+ tt_int_op(p2_len, OP_EQ, 35+NTOR_ONIONSKIN_LEN);
+ tt_mem_op(p2,OP_EQ, p, RELAY_PAYLOAD_SIZE);
/* Now let's do a fanciful EXTEND2 cell. */
memset(&ec, 0xff, sizeof(ec));
@@ -692,21 +692,21 @@ test_cfmt_extend_cells(void *arg)
/* Prep for the handshake: weird type and length */
memcpy(p+85, "\x01\x05\x00\x63", 4);
memcpy(p+89, b, 99);
- tt_int_op(0, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2, p, 89+99));
- tt_int_op(RELAY_COMMAND_EXTEND2, ==, ec.cell_type);
- tt_str_op("18.244.0.1", ==, fmt_addr(&ec.orport_ipv4.addr));
- tt_int_op(61681, ==, ec.orport_ipv4.port);
- tt_str_op("2002::f0:c51e", ==, fmt_addr(&ec.orport_ipv6.addr));
- tt_int_op(4370, ==, ec.orport_ipv6.port);
- tt_mem_op(ec.node_id,==, "anthropomorphization", 20);
- tt_int_op(cc->cell_type, ==, CELL_CREATE2);
- tt_int_op(cc->handshake_type, ==, 0x105);
- tt_int_op(cc->handshake_len, ==, 99);
- tt_mem_op(cc->onionskin,==, b, 99+20);
- tt_int_op(0, ==, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(p2_cmd, ==, RELAY_COMMAND_EXTEND2);
+ tt_int_op(0, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2, p, 89+99));
+ tt_int_op(RELAY_COMMAND_EXTEND2, OP_EQ, ec.cell_type);
+ tt_str_op("18.244.0.1", OP_EQ, fmt_addr(&ec.orport_ipv4.addr));
+ tt_int_op(61681, OP_EQ, ec.orport_ipv4.port);
+ tt_str_op("2002::f0:c51e", OP_EQ, fmt_addr(&ec.orport_ipv6.addr));
+ tt_int_op(4370, OP_EQ, ec.orport_ipv6.port);
+ tt_mem_op(ec.node_id,OP_EQ, "anthropomorphization", 20);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATE2);
+ tt_int_op(cc->handshake_type, OP_EQ, 0x105);
+ tt_int_op(cc->handshake_len, OP_EQ, 99);
+ tt_mem_op(cc->onionskin,OP_EQ, b, 99+20);
+ tt_int_op(0, OP_EQ, extend_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(p2_cmd, OP_EQ, RELAY_COMMAND_EXTEND2);
/* We'll generate it minus the IPv6 address and minus the konami code */
- tt_int_op(p2_len, ==, 89+99-34-20);
+ tt_int_op(p2_len, OP_EQ, 89+99-34-20);
test_memeq_hex(p2,
/* Two items: one that same darn IP address. */
"02000612F40001F0F1"
@@ -714,8 +714,8 @@ test_cfmt_extend_cells(void *arg)
"0214616e7468726f706f6d6f727068697a6174696f6e"
/* Now the handshake prologue */
"01050063");
- tt_mem_op(p2+1+8+22+4,==, b, 99+20);
- tt_int_op(0, ==, create_cell_format_relayed(&cell, cc));
+ tt_mem_op(p2+1+8+22+4,OP_EQ, b, 99+20);
+ tt_int_op(0, OP_EQ, create_cell_format_relayed(&cell, cc));
/* == Now try parsing some junk */
@@ -724,7 +724,7 @@ test_cfmt_extend_cells(void *arg)
memcpy(p, "\x02\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+31, "\xff\xff\x01\xd0", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* Try two identities. */
@@ -733,14 +733,14 @@ test_cfmt_extend_cells(void *arg)
memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+31, "\x02\x14" "autodepolymerization", 22);
memcpy(p+53, "\xff\xff\x00\x10", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* No identities. */
memset(p, 0, sizeof(p));
memcpy(p, "\x01\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
memcpy(p+53, "\xff\xff\x00\x10", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* Try a bad IPv4 address (too long, too short)*/
@@ -748,13 +748,13 @@ test_cfmt_extend_cells(void *arg)
memcpy(p, "\x02\x00\x07\x12\xf4\x00\x01\xf0\xf1\xff", 10);
memcpy(p+10, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+32, "\xff\xff\x00\x10", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
memset(p, 0, sizeof(p));
memcpy(p, "\x02\x00\x05\x12\xf4\x00\x01\xf0", 8);
memcpy(p+8, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+30, "\xff\xff\x00\x10", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* IPv6 address (too long, too short, no IPv4)*/
@@ -763,28 +763,28 @@ test_cfmt_extend_cells(void *arg)
memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+31, "\x01\x13" "xxxxxxxxxxxxxxxxYYZ", 19);
memcpy(p+50, "\xff\xff\x00\x20", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
memset(p, 0, sizeof(p));
memcpy(p, "\x03\x00\x06\x12\xf4\x00\x01\xf0\xf1", 9);
memcpy(p+9, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+31, "\x01\x11" "xxxxxxxxxxxxxxxxY", 17);
memcpy(p+48, "\xff\xff\x00\x20", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
memset(p, 0, sizeof(p));
memcpy(p, "\x02", 1);
memcpy(p+1, "\x02\x14" "anarchoindividualist", 22);
memcpy(p+23, "\x01\x12" "xxxxxxxxxxxxxxxxYY", 18);
memcpy(p+41, "\xff\xff\x00\x20", 4);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* Running out of space in specifiers */
memset(p,0,sizeof(p));
memcpy(p, "\x05\x0a\xff", 3);
memcpy(p+3+255, "\x0a\xff", 2);
- tt_int_op(-1, ==, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
+ tt_int_op(-1, OP_EQ, extend_cell_parse(&ec, RELAY_COMMAND_EXTEND2,
p, sizeof(p)));
/* Fuzz, because why not. */
@@ -823,16 +823,16 @@ test_cfmt_extended_cells(void *arg)
memset(b, 0, sizeof(b));
crypto_rand((char*)b, TAP_ONIONSKIN_REPLY_LEN);
memcpy(p,b,TAP_ONIONSKIN_REPLY_LEN);
- tt_int_op(0, ==, extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED, p,
+ tt_int_op(0, OP_EQ, extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED, p,
TAP_ONIONSKIN_REPLY_LEN));
- tt_int_op(RELAY_COMMAND_EXTENDED, ==, ec.cell_type);
- tt_int_op(cc->cell_type, ==, CELL_CREATED);
- tt_int_op(cc->handshake_len, ==, TAP_ONIONSKIN_REPLY_LEN);
- tt_mem_op(cc->reply,==, b, TAP_ONIONSKIN_REPLY_LEN);
- tt_int_op(0, ==, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(RELAY_COMMAND_EXTENDED, ==, p2_cmd);
- tt_int_op(TAP_ONIONSKIN_REPLY_LEN, ==, p2_len);
- tt_mem_op(p2,==, p, sizeof(p2));
+ tt_int_op(RELAY_COMMAND_EXTENDED, OP_EQ, ec.cell_type);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATED);
+ tt_int_op(cc->handshake_len, OP_EQ, TAP_ONIONSKIN_REPLY_LEN);
+ tt_mem_op(cc->reply,OP_EQ, b, TAP_ONIONSKIN_REPLY_LEN);
+ tt_int_op(0, OP_EQ, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(RELAY_COMMAND_EXTENDED, OP_EQ, p2_cmd);
+ tt_int_op(TAP_ONIONSKIN_REPLY_LEN, OP_EQ, p2_len);
+ tt_mem_op(p2,OP_EQ, p, sizeof(p2));
/* Try an EXTENDED2 cell */
memset(&ec, 0xff, sizeof(ec));
@@ -841,25 +841,26 @@ test_cfmt_extended_cells(void *arg)
crypto_rand((char*)b, 42);
memcpy(p,"\x00\x2a",2);
memcpy(p+2,b,42);
- tt_int_op(0, ==, extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, 2+42));
- tt_int_op(RELAY_COMMAND_EXTENDED2, ==, ec.cell_type);
- tt_int_op(cc->cell_type, ==, CELL_CREATED2);
- tt_int_op(cc->handshake_len, ==, 42);
- tt_mem_op(cc->reply,==, b, 42+10);
- tt_int_op(0, ==, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
- tt_int_op(RELAY_COMMAND_EXTENDED2, ==, p2_cmd);
- tt_int_op(2+42, ==, p2_len);
- tt_mem_op(p2,==, p, sizeof(p2));
+ tt_int_op(0, OP_EQ,
+ extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, 2+42));
+ tt_int_op(RELAY_COMMAND_EXTENDED2, OP_EQ, ec.cell_type);
+ tt_int_op(cc->cell_type, OP_EQ, CELL_CREATED2);
+ tt_int_op(cc->handshake_len, OP_EQ, 42);
+ tt_mem_op(cc->reply,OP_EQ, b, 42+10);
+ tt_int_op(0, OP_EQ, extended_cell_format(&p2_cmd, &p2_len, p2, &ec));
+ tt_int_op(RELAY_COMMAND_EXTENDED2, OP_EQ, p2_cmd);
+ tt_int_op(2+42, OP_EQ, p2_len);
+ tt_mem_op(p2,OP_EQ, p, sizeof(p2));
/* Try an almost-too-long EXTENDED2 cell */
memcpy(p, "\x01\xf0", 2);
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, sizeof(p)));
/* Now try a too-long extended2 cell. That's the only misparse I can think
* of. */
memcpy(p, "\x01\xf1", 2);
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
extended_cell_parse(&ec, RELAY_COMMAND_EXTENDED2, p, sizeof(p)));
done:
@@ -903,22 +904,22 @@ test_cfmt_resolved_cells(void *arg)
/* Let's try an empty cell */
SET_CELL("");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
CLEAR_ADDRS(); /* redundant but let's be consistent */
/* Cell with one ipv4 addr */
SET_CELL("\x04\x04" "\x7f\x00\x02\x0a" "\x00\00\x01\x00");
- tt_int_op(rh.length, ==, 10);
+ tt_int_op(rh.length, OP_EQ, 10);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 1);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 1);
a = smartlist_get(addrs, 0);
- tt_str_op(fmt_addr(&a->addr), ==, "127.0.2.10");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 256);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "127.0.2.10");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 256);
CLEAR_ADDRS();
/* Cell with one ipv6 addr */
@@ -926,30 +927,30 @@ test_cfmt_resolved_cells(void *arg)
"\x20\x02\x90\x90\x00\x00\x00\x00"
"\x00\x00\x00\x00\xf0\xf0\xab\xcd"
"\x02\00\x00\x01");
- tt_int_op(rh.length, ==, 22);
+ tt_int_op(rh.length, OP_EQ, 22);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 1);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 1);
a = smartlist_get(addrs, 0);
- tt_str_op(fmt_addr(&a->addr), ==, "2002:9090::f0f0:abcd");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 0x2000001);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "2002:9090::f0f0:abcd");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 0x2000001);
CLEAR_ADDRS();
/* Cell with one hostname */
SET_CELL("\x00\x11"
"motherbrain.zebes"
"\x00\00\x00\x00");
- tt_int_op(rh.length, ==, 23);
+ tt_int_op(rh.length, OP_EQ, 23);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 1);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 1);
a = smartlist_get(addrs, 0);
tt_assert(tor_addr_is_null(&a->addr));
- tt_str_op(a->hostname, ==, "motherbrain.zebes");
- tt_int_op(a->ttl, ==, 0);
+ tt_str_op(a->hostname, OP_EQ, "motherbrain.zebes");
+ tt_int_op(a->ttl, OP_EQ, 0);
CLEAR_ADDRS();
#define LONG_NAME \
@@ -958,51 +959,51 @@ test_cfmt_resolved_cells(void *arg)
"function-is-already-very-full.of-copy-and-pasted-stuff.having-this-app" \
"ear-more-than-once-would-bother-me-somehow.is"
- tt_int_op(strlen(LONG_NAME), ==, 255);
+ tt_int_op(strlen(LONG_NAME), OP_EQ, 255);
SET_CELL("\x00\xff"
LONG_NAME
"\x00\01\x00\x00");
- tt_int_op(rh.length, ==, 261);
+ tt_int_op(rh.length, OP_EQ, 261);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 1);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 1);
a = smartlist_get(addrs, 0);
tt_assert(tor_addr_is_null(&a->addr));
- tt_str_op(a->hostname, ==, LONG_NAME);
- tt_int_op(a->ttl, ==, 65536);
+ tt_str_op(a->hostname, OP_EQ, LONG_NAME);
+ tt_int_op(a->ttl, OP_EQ, 65536);
CLEAR_ADDRS();
/* Cells with an error */
SET_CELL("\xf0\x2b"
"I'm sorry, Dave. I'm afraid I can't do that"
"\x00\x11\x22\x33");
- tt_int_op(rh.length, ==, 49);
+ tt_int_op(rh.length, OP_EQ, 49);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, RESOLVED_TYPE_ERROR_TRANSIENT);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, RESOLVED_TYPE_ERROR_TRANSIENT);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
CLEAR_ADDRS();
SET_CELL("\xf1\x40"
"This hostname is too important for me to allow you to resolve it"
"\x00\x00\x00\x00");
- tt_int_op(rh.length, ==, 70);
+ tt_int_op(rh.length, OP_EQ, 70);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, RESOLVED_TYPE_ERROR);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, RESOLVED_TYPE_ERROR);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
CLEAR_ADDRS();
/* Cell with an unrecognized type */
SET_CELL("\xee\x16"
"fault in the AE35 unit"
"\x09\x09\x01\x01");
- tt_int_op(rh.length, ==, 28);
+ tt_int_op(rh.length, OP_EQ, 28);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
CLEAR_ADDRS();
/* Cell with one of each */
@@ -1027,21 +1028,21 @@ test_cfmt_resolved_cells(void *arg)
"\x00\00\x00\x00"
);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0); /* no error reported; we got answers */
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 3);
+ tt_int_op(errcode, OP_EQ, 0); /* no error reported; we got answers */
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 3);
a = smartlist_get(addrs, 0);
- tt_str_op(fmt_addr(&a->addr), ==, "2002:9090::f0f0:abcd");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 0x2000001);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "2002:9090::f0f0:abcd");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 0x2000001);
a = smartlist_get(addrs, 1);
- tt_str_op(fmt_addr(&a->addr), ==, "127.0.2.10");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 256);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "127.0.2.10");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 256);
a = smartlist_get(addrs, 2);
tt_assert(tor_addr_is_null(&a->addr));
- tt_str_op(a->hostname, ==, "motherbrain.zebes");
- tt_int_op(a->ttl, ==, 0);
+ tt_str_op(a->hostname, OP_EQ, "motherbrain.zebes");
+ tt_int_op(a->ttl, OP_EQ, 0);
CLEAR_ADDRS();
/* Cell with several of similar type */
@@ -1059,29 +1060,29 @@ test_cfmt_resolved_cells(void *arg)
"\x00\x00\x00\x00\x00\xfa\xca\xde"
"\x00\00\x00\x03");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 5);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 5);
a = smartlist_get(addrs, 0);
- tt_str_op(fmt_addr(&a->addr), ==, "127.0.2.10");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 256);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "127.0.2.10");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 256);
a = smartlist_get(addrs, 1);
- tt_str_op(fmt_addr(&a->addr), ==, "8.8.8.8");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 261);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "8.8.8.8");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 261);
a = smartlist_get(addrs, 2);
- tt_str_op(fmt_addr(&a->addr), ==, "127.176.2.176");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 131071);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "127.176.2.176");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 131071);
a = smartlist_get(addrs, 3);
- tt_str_op(fmt_addr(&a->addr), ==, "2002:9000::cafe:f00d");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 1);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "2002:9000::cafe:f00d");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 1);
a = smartlist_get(addrs, 4);
- tt_str_op(fmt_addr(&a->addr), ==, "2002:9001::fa:cade");
- tt_ptr_op(a->hostname, ==, NULL);
- tt_int_op(a->ttl, ==, 3);
+ tt_str_op(fmt_addr(&a->addr), OP_EQ, "2002:9001::fa:cade");
+ tt_ptr_op(a->hostname, OP_EQ, NULL);
+ tt_int_op(a->ttl, OP_EQ, 3);
CLEAR_ADDRS();
/* Full cell */
@@ -1091,22 +1092,22 @@ test_cfmt_resolved_cells(void *arg)
"g-case.to-avoid-off-by-one-errors.where-full-things-are-misreported-as" \
".overflowing-by-one.z"
- tt_int_op(strlen(LONG_NAME2), ==, 231);
+ tt_int_op(strlen(LONG_NAME2), OP_EQ, 231);
SET_CELL("\x00\xff"
LONG_NAME
"\x00\01\x00\x00"
"\x00\xe7"
LONG_NAME2
"\x00\01\x00\x00");
- tt_int_op(rh.length, ==, RELAY_PAYLOAD_SIZE);
+ tt_int_op(rh.length, OP_EQ, RELAY_PAYLOAD_SIZE);
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(addrs), ==, 2);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 2);
a = smartlist_get(addrs, 0);
- tt_str_op(a->hostname, ==, LONG_NAME);
+ tt_str_op(a->hostname, OP_EQ, LONG_NAME);
a = smartlist_get(addrs, 1);
- tt_str_op(a->hostname, ==, LONG_NAME2);
+ tt_str_op(a->hostname, OP_EQ, LONG_NAME2);
CLEAR_ADDRS();
/* BAD CELLS */
@@ -1114,49 +1115,49 @@ test_cfmt_resolved_cells(void *arg)
/* Invalid length on an IPv4 */
SET_CELL("\x04\x03zzz1234");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\x04\x04" "\x7f\x00\x02\x0a" "\x00\00\x01\x00"
"\x04\x05zzzzz1234");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
/* Invalid length on an IPv6 */
SET_CELL("\x06\x03zzz1234");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\x04\x04" "\x7f\x00\x02\x0a" "\x00\00\x01\x00"
"\x06\x17wwwwwwwwwwwwwwwww1234");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\x04\x04" "\x7f\x00\x02\x0a" "\x00\00\x01\x00"
"\x06\x10xxxx");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
/* Empty hostname */
SET_CELL("\x00\x00xxxx");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
/* rh.length out of range */
CLEAR_CELL();
rh.length = 499;
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(errcode, ==, 0);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(errcode, OP_EQ, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
/* Item length extends beyond rh.length */
CLEAR_CELL();
@@ -1165,18 +1166,18 @@ test_cfmt_resolved_cells(void *arg)
"\x00\01\x00\x00");
rh.length -= 1;
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
rh.length -= 5;
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\x04\x04" "\x7f\x00\x02\x0a" "\x00\00\x01\x00");
rh.length -= 1;
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\xee\x10"
"\x20\x02\x90\x01\x00\x00\x00\x00"
@@ -1184,19 +1185,19 @@ test_cfmt_resolved_cells(void *arg)
"\x00\00\x00\x03");
rh.length -= 1;
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
/* Truncated item after first character */
SET_CELL("\x04");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
SET_CELL("\xee");
r = resolved_cell_parse(&cell, &rh, addrs, &errcode);
- tt_int_op(r, ==, -1);
- tt_int_op(smartlist_len(addrs), ==, 0);
+ tt_int_op(r, OP_EQ, -1);
+ tt_int_op(smartlist_len(addrs), OP_EQ, 0);
done:
CLEAR_ADDRS();
@@ -1224,19 +1225,19 @@ test_cfmt_is_destroy(void *arg)
cell_pack(&packed, &cell, 0);
chan->wide_circ_ids = 0;
tt_assert(! packed_cell_is_destroy(chan, &packed, &circid));
- tt_int_op(circid, ==, 0);
+ tt_int_op(circid, OP_EQ, 0);
cell_pack(&packed, &cell, 1);
chan->wide_circ_ids = 1;
tt_assert(! packed_cell_is_destroy(chan, &packed, &circid));
- tt_int_op(circid, ==, 0);
+ tt_int_op(circid, OP_EQ, 0);
cell.command = CELL_DESTROY;
cell_pack(&packed, &cell, 0);
chan->wide_circ_ids = 0;
tt_assert(packed_cell_is_destroy(chan, &packed, &circid));
- tt_int_op(circid, ==, 3003);
+ tt_int_op(circid, OP_EQ, 3003);
circid = 0;
cell_pack(&packed, &cell, 1);
diff --git a/src/test/test_cell_queue.c b/src/test/test_cell_queue.c
index e43c100f17..e2fc95ccd6 100644
--- a/src/test/test_cell_queue.c
+++ b/src/test/test_cell_queue.c
@@ -21,7 +21,7 @@ test_cq_manip(void *arg)
#endif /* ENABLE_MEMPOOLS */
cell_queue_init(&cq);
- tt_int_op(cq.n, ==, 0);
+ tt_int_op(cq.n, OP_EQ, 0);
pc1 = packed_cell_new();
pc2 = packed_cell_new();
@@ -29,26 +29,26 @@ test_cq_manip(void *arg)
pc4 = packed_cell_new();
tt_assert(pc1 && pc2 && pc3 && pc4);
- tt_ptr_op(NULL, ==, cell_queue_pop(&cq));
+ tt_ptr_op(NULL, OP_EQ, cell_queue_pop(&cq));
/* Add and remove a singleton. */
cell_queue_append(&cq, pc1);
- tt_int_op(cq.n, ==, 1);
- tt_ptr_op(pc1, ==, cell_queue_pop(&cq));
- tt_int_op(cq.n, ==, 0);
+ tt_int_op(cq.n, OP_EQ, 1);
+ tt_ptr_op(pc1, OP_EQ, cell_queue_pop(&cq));
+ tt_int_op(cq.n, OP_EQ, 0);
/* Add and remove four items */
cell_queue_append(&cq, pc4);
cell_queue_append(&cq, pc3);
cell_queue_append(&cq, pc2);
cell_queue_append(&cq, pc1);
- tt_int_op(cq.n, ==, 4);
- tt_ptr_op(pc4, ==, cell_queue_pop(&cq));
- tt_ptr_op(pc3, ==, cell_queue_pop(&cq));
- tt_ptr_op(pc2, ==, cell_queue_pop(&cq));
- tt_ptr_op(pc1, ==, cell_queue_pop(&cq));
- tt_int_op(cq.n, ==, 0);
- tt_ptr_op(NULL, ==, cell_queue_pop(&cq));
+ tt_int_op(cq.n, OP_EQ, 4);
+ tt_ptr_op(pc4, OP_EQ, cell_queue_pop(&cq));
+ tt_ptr_op(pc3, OP_EQ, cell_queue_pop(&cq));
+ tt_ptr_op(pc2, OP_EQ, cell_queue_pop(&cq));
+ tt_ptr_op(pc1, OP_EQ, cell_queue_pop(&cq));
+ tt_int_op(cq.n, OP_EQ, 0);
+ tt_ptr_op(NULL, OP_EQ, cell_queue_pop(&cq));
/* Try a packed copy (wide, then narrow, which is a bit of a cheat, since a
* real cell queue has only one type.) */
@@ -64,32 +64,32 @@ test_cq_manip(void *arg)
cell.circ_id = 0x2013;
cell_queue_append_packed_copy(NULL /*circ*/, &cq, 0 /*exitward*/, &cell,
0 /*wide*/, 0 /*stats*/);
- tt_int_op(cq.n, ==, 2);
+ tt_int_op(cq.n, OP_EQ, 2);
pc_tmp = cell_queue_pop(&cq);
- tt_int_op(cq.n, ==, 1);
- tt_ptr_op(pc_tmp, !=, NULL);
- tt_mem_op(pc_tmp->body, ==, "\x12\x34\x56\x78\x0a", 5);
- tt_mem_op(pc_tmp->body+5, ==, cell.payload, sizeof(cell.payload));
+ tt_int_op(cq.n, OP_EQ, 1);
+ tt_ptr_op(pc_tmp, OP_NE, NULL);
+ tt_mem_op(pc_tmp->body, OP_EQ, "\x12\x34\x56\x78\x0a", 5);
+ tt_mem_op(pc_tmp->body+5, OP_EQ, cell.payload, sizeof(cell.payload));
packed_cell_free(pc_tmp);
pc_tmp = cell_queue_pop(&cq);
- tt_int_op(cq.n, ==, 0);
- tt_ptr_op(pc_tmp, !=, NULL);
- tt_mem_op(pc_tmp->body, ==, "\x20\x13\x0a", 3);
- tt_mem_op(pc_tmp->body+3, ==, cell.payload, sizeof(cell.payload));
+ tt_int_op(cq.n, OP_EQ, 0);
+ tt_ptr_op(pc_tmp, OP_NE, NULL);
+ tt_mem_op(pc_tmp->body, OP_EQ, "\x20\x13\x0a", 3);
+ tt_mem_op(pc_tmp->body+3, OP_EQ, cell.payload, sizeof(cell.payload));
packed_cell_free(pc_tmp);
pc_tmp = NULL;
- tt_ptr_op(NULL, ==, cell_queue_pop(&cq));
+ tt_ptr_op(NULL, OP_EQ, cell_queue_pop(&cq));
/* Now make sure cell_queue_clear works. */
cell_queue_append(&cq, pc2);
cell_queue_append(&cq, pc1);
- tt_int_op(cq.n, ==, 2);
+ tt_int_op(cq.n, OP_EQ, 2);
cell_queue_clear(&cq);
pc2 = pc1 = NULL; /* prevent double-free */
- tt_int_op(cq.n, ==, 0);
+ tt_int_op(cq.n, OP_EQ, 0);
done:
packed_cell_free(pc1);
@@ -129,17 +129,17 @@ test_circuit_n_cells(void *arg)
origin_c = origin_circuit_new();
origin_c->base_.purpose = CIRCUIT_PURPOSE_C_GENERAL;
- tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), ==, 0);
+ tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), OP_EQ, 0);
cell_queue_append(&or_c->p_chan_cells, pc1);
- tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), ==, 1);
+ tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), OP_EQ, 1);
cell_queue_append(&or_c->base_.n_chan_cells, pc2);
cell_queue_append(&or_c->base_.n_chan_cells, pc3);
- tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), ==, 3);
+ tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(or_c)), OP_EQ, 3);
- tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(origin_c)), ==, 0);
+ tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(origin_c)), OP_EQ, 0);
cell_queue_append(&origin_c->base_.n_chan_cells, pc4);
cell_queue_append(&origin_c->base_.n_chan_cells, pc5);
- tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(origin_c)), ==, 2);
+ tt_int_op(n_cells_in_circ_queues(TO_CIRCUIT(origin_c)), OP_EQ, 2);
done:
circuit_free(TO_CIRCUIT(or_c));
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
new file mode 100644
index 0000000000..f882b99906
--- /dev/null
+++ b/src/test/test_channel.c
@@ -0,0 +1,1669 @@
+/* Copyright (c) 2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#define TOR_CHANNEL_INTERNAL_
+#define CHANNEL_PRIVATE_
+#include "or.h"
+#include "channel.h"
+/* For channel_note_destroy_not_pending */
+#include "circuitlist.h"
+#include "circuitmux.h"
+/* For var_cell_free */
+#include "connection_or.h"
+/* For packed_cell stuff */
+#define RELAY_PRIVATE
+#include "relay.h"
+/* For init/free stuff */
+#include "scheduler.h"
+
+/* Test suite stuff */
+#include "test.h"
+#include "fakechans.h"
+
+/* This comes from channel.c */
+extern uint64_t estimated_total_queue_size;
+
+static int test_chan_accept_cells = 0;
+static int test_chan_fixed_cells_recved = 0;
+static int test_chan_var_cells_recved = 0;
+static int test_cells_written = 0;
+static int test_destroy_not_pending_calls = 0;
+static int test_doesnt_want_writes_count = 0;
+static int test_dumpstats_calls = 0;
+static int test_has_waiting_cells_count = 0;
+static double test_overhead_estimate = 1.0f;
+static int test_releases_count = 0;
+static circuitmux_t *test_target_cmux = NULL;
+static unsigned int test_cmux_cells = 0;
+static channel_t *dump_statistics_mock_target = NULL;
+static int dump_statistics_mock_matches = 0;
+
+static void chan_test_channel_dump_statistics_mock(
+ channel_t *chan, int severity);
+static int chan_test_channel_flush_from_first_active_circuit_mock(
+ channel_t *chan, int max);
+static unsigned int chan_test_circuitmux_num_cells_mock(circuitmux_t *cmux);
+static void channel_note_destroy_not_pending_mock(channel_t *ch,
+ circid_t circid);
+static void chan_test_cell_handler(channel_t *ch,
+ cell_t *cell);
+static const char * chan_test_describe_transport(channel_t *ch);
+static void chan_test_dumpstats(channel_t *ch, int severity);
+static void chan_test_var_cell_handler(channel_t *ch,
+ var_cell_t *var_cell);
+static void chan_test_close(channel_t *ch);
+static void chan_test_error(channel_t *ch);
+static void chan_test_finish_close(channel_t *ch);
+static const char * chan_test_get_remote_descr(channel_t *ch, int flags);
+static int chan_test_is_canonical(channel_t *ch, int req);
+static size_t chan_test_num_bytes_queued(channel_t *ch);
+static int chan_test_num_cells_writeable(channel_t *ch);
+static int chan_test_write_cell(channel_t *ch, cell_t *cell);
+static int chan_test_write_packed_cell(channel_t *ch,
+ packed_cell_t *packed_cell);
+static int chan_test_write_var_cell(channel_t *ch, var_cell_t *var_cell);
+static void scheduler_channel_doesnt_want_writes_mock(channel_t *ch);
+
+static void test_channel_dumpstats(void *arg);
+static void test_channel_flush(void *arg);
+static void test_channel_flushmux(void *arg);
+static void test_channel_incoming(void *arg);
+static void test_channel_lifecycle(void *arg);
+static void test_channel_multi(void *arg);
+static void test_channel_queue_size(void *arg);
+static void test_channel_write(void *arg);
+
+static void
+channel_note_destroy_not_pending_mock(channel_t *ch,
+ circid_t circid)
+{
+ (void)ch;
+ (void)circid;
+
+ ++test_destroy_not_pending_calls;
+}
+
+static const char *
+chan_test_describe_transport(channel_t *ch)
+{
+ tt_assert(ch != NULL);
+
+ done:
+ return "Fake channel for unit tests";
+}
+
+/**
+ * Mock for channel_dump_statistics(); if the channel matches the
+ * target, bump a counter - otherwise ignore.
+ */
+
+static void
+chan_test_channel_dump_statistics_mock(channel_t *chan, int severity)
+{
+ tt_assert(chan != NULL);
+
+ (void)severity;
+
+ if (chan != NULL && chan == dump_statistics_mock_target) {
+ ++dump_statistics_mock_matches;
+ }
+
+ done:
+ return;
+}
+
+/**
+ * If the target cmux is the cmux for chan, make fake cells up to the
+ * target number of cells and write them to chan. Otherwise, invoke
+ * the real channel_flush_from_first_active_circuit().
+ */
+
+static int
+chan_test_channel_flush_from_first_active_circuit_mock(channel_t *chan,
+ int max)
+{
+ int result = 0, c = 0;
+ packed_cell_t *cell = NULL;
+
+ tt_assert(chan != NULL);
+ if (test_target_cmux != NULL &&
+ test_target_cmux == chan->cmux) {
+ while (c <= max && test_cmux_cells > 0) {
+ cell = packed_cell_new();
+ channel_write_packed_cell(chan, cell);
+ ++c;
+ --test_cmux_cells;
+ }
+ result = c;
+ } else {
+ result = channel_flush_from_first_active_circuit__real(chan, max);
+ }
+
+ done:
+ return result;
+}
+
+/**
+ * If we have a target cmux set and this matches it, lie about how
+ * many cells we have according to the number indicated; otherwise
+ * pass to the real circuitmux_num_cells().
+ */
+
+static unsigned int
+chan_test_circuitmux_num_cells_mock(circuitmux_t *cmux)
+{
+ unsigned int result = 0;
+
+ tt_assert(cmux != NULL);
+ if (cmux != NULL) {
+ if (cmux == test_target_cmux) {
+ result = test_cmux_cells;
+ } else {
+ result = circuitmux_num_cells__real(cmux);
+ }
+ }
+
+ done:
+
+ return result;
+}
+
+/*
+ * Handle an incoming fixed-size cell for unit tests
+ */
+
+static void
+chan_test_cell_handler(channel_t *ch,
+ cell_t *cell)
+{
+ tt_assert(ch);
+ tt_assert(cell);
+
+ tor_free(cell);
+ ++test_chan_fixed_cells_recved;
+
+ done:
+ return;
+}
+
+/*
+ * Fake transport-specific stats call
+ */
+
+static void
+chan_test_dumpstats(channel_t *ch, int severity)
+{
+ tt_assert(ch != NULL);
+
+ (void)severity;
+
+ ++test_dumpstats_calls;
+
+ done:
+ return;
+}
+
+/*
+ * Handle an incoming variable-size cell for unit tests
+ */
+
+static void
+chan_test_var_cell_handler(channel_t *ch,
+ var_cell_t *var_cell)
+{
+ tt_assert(ch);
+ tt_assert(var_cell);
+
+ tor_free(var_cell);
+ ++test_chan_var_cells_recved;
+
+ done:
+ return;
+}
+
+static void
+chan_test_close(channel_t *ch)
+{
+ tt_assert(ch);
+
+ done:
+ return;
+}
+
+/*
+ * Close a channel through the error path
+ */
+
+static void
+chan_test_error(channel_t *ch)
+{
+ tt_assert(ch);
+ tt_assert(!(ch->state == CHANNEL_STATE_CLOSING ||
+ ch->state == CHANNEL_STATE_ERROR ||
+ ch->state == CHANNEL_STATE_CLOSED));
+
+ channel_close_for_error(ch);
+
+ done:
+ return;
+}
+
+/*
+ * Finish closing a channel from CHANNEL_STATE_CLOSING
+ */
+
+static void
+chan_test_finish_close(channel_t *ch)
+{
+ tt_assert(ch);
+ tt_assert(ch->state == CHANNEL_STATE_CLOSING);
+
+ channel_closed(ch);
+
+ done:
+ return;
+}
+
+static const char *
+chan_test_get_remote_descr(channel_t *ch, int flags)
+{
+ tt_assert(ch);
+ tt_int_op(flags & ~(GRD_FLAG_ORIGINAL | GRD_FLAG_ADDR_ONLY), ==, 0);
+
+ done:
+ return "Fake channel for unit tests; no real endpoint";
+}
+
+static double
+chan_test_get_overhead_estimate(channel_t *ch)
+{
+ tt_assert(ch);
+
+ done:
+ return test_overhead_estimate;
+}
+
+static int
+chan_test_is_canonical(channel_t *ch, int req)
+{
+ tt_assert(ch != NULL);
+ tt_assert(req == 0 || req == 1);
+
+ done:
+ /* Fake channels are always canonical */
+ return 1;
+}
+
+static size_t
+chan_test_num_bytes_queued(channel_t *ch)
+{
+ tt_assert(ch);
+
+ done:
+ return 0;
+}
+
+static int
+chan_test_num_cells_writeable(channel_t *ch)
+{
+ tt_assert(ch);
+
+ done:
+ return 32;
+}
+
+static int
+chan_test_write_cell(channel_t *ch, cell_t *cell)
+{
+ int rv = 0;
+
+ tt_assert(ch);
+ tt_assert(cell);
+
+ if (test_chan_accept_cells) {
+ /* Free the cell and bump the counter */
+ tor_free(cell);
+ ++test_cells_written;
+ rv = 1;
+ }
+ /* else return 0, we didn't accept it */
+
+ done:
+ return rv;
+}
+
+static int
+chan_test_write_packed_cell(channel_t *ch,
+ packed_cell_t *packed_cell)
+{
+ int rv = 0;
+
+ tt_assert(ch);
+ tt_assert(packed_cell);
+
+ if (test_chan_accept_cells) {
+ /* Free the cell and bump the counter */
+ packed_cell_free(packed_cell);
+ ++test_cells_written;
+ rv = 1;
+ }
+ /* else return 0, we didn't accept it */
+
+ done:
+ return rv;
+}
+
+static int
+chan_test_write_var_cell(channel_t *ch, var_cell_t *var_cell)
+{
+ int rv = 0;
+
+ tt_assert(ch);
+ tt_assert(var_cell);
+
+ if (test_chan_accept_cells) {
+ /* Free the cell and bump the counter */
+ var_cell_free(var_cell);
+ ++test_cells_written;
+ rv = 1;
+ }
+ /* else return 0, we didn't accept it */
+
+ done:
+ return rv;
+}
+
+/**
+ * Fill out c with a new fake cell for test suite use
+ */
+
+void
+make_fake_cell(cell_t *c)
+{
+ tt_assert(c != NULL);
+
+ c->circ_id = 1;
+ c->command = CELL_RELAY;
+ memset(c->payload, 0, CELL_PAYLOAD_SIZE);
+
+ done:
+ return;
+}
+
+/**
+ * Fill out c with a new fake var_cell for test suite use
+ */
+
+void
+make_fake_var_cell(var_cell_t *c)
+{
+ tt_assert(c != NULL);
+
+ c->circ_id = 1;
+ c->command = CELL_VERSIONS;
+ c->payload_len = CELL_PAYLOAD_SIZE / 2;
+ memset(c->payload, 0, c->payload_len);
+
+ done:
+ return;
+}
+
+/**
+ * Set up a new fake channel for the test suite
+ */
+
+channel_t *
+new_fake_channel(void)
+{
+ channel_t *chan = tor_malloc_zero(sizeof(channel_t));
+ channel_init(chan);
+
+ chan->close = chan_test_close;
+ chan->get_overhead_estimate = chan_test_get_overhead_estimate;
+ chan->num_bytes_queued = chan_test_num_bytes_queued;
+ chan->num_cells_writeable = chan_test_num_cells_writeable;
+ chan->write_cell = chan_test_write_cell;
+ chan->write_packed_cell = chan_test_write_packed_cell;
+ chan->write_var_cell = chan_test_write_var_cell;
+ chan->state = CHANNEL_STATE_OPEN;
+
+ return chan;
+}
+
+/**
+ * Counter query for scheduler_channel_has_waiting_cells_mock()
+ */
+
+int
+get_mock_scheduler_has_waiting_cells_count(void)
+{
+ return test_has_waiting_cells_count;
+}
+
+/**
+ * Mock for scheduler_channel_has_waiting_cells()
+ */
+
+void
+scheduler_channel_has_waiting_cells_mock(channel_t *ch)
+{
+ (void)ch;
+
+ /* Increment counter */
+ ++test_has_waiting_cells_count;
+
+ return;
+}
+
+static void
+scheduler_channel_doesnt_want_writes_mock(channel_t *ch)
+{
+ (void)ch;
+
+ /* Increment counter */
+ ++test_doesnt_want_writes_count;
+
+ return;
+}
+
+/**
+ * Counter query for scheduler_release_channel_mock()
+ */
+
+int
+get_mock_scheduler_release_channel_count(void)
+{
+ return test_releases_count;
+}
+
+/**
+ * Mock for scheduler_release_channel()
+ */
+
+void
+scheduler_release_channel_mock(channel_t *ch)
+{
+ (void)ch;
+
+ /* Increment counter */
+ ++test_releases_count;
+
+ return;
+}
+
+/**
+ * Test for channel_dumpstats() and limited test for
+ * channel_dump_statistics()
+ */
+
+static void
+test_channel_dumpstats(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = NULL;
+ int old_count;
+
+ (void)arg;
+
+ /* Mock these for duration of the test */
+ MOCK(scheduler_channel_doesnt_want_writes,
+ scheduler_channel_doesnt_want_writes_mock);
+ MOCK(scheduler_release_channel,
+ scheduler_release_channel_mock);
+
+ /* Set up a new fake channel */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->cmux = circuitmux_alloc();
+
+ /* Try to register it */
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Set up mock */
+ dump_statistics_mock_target = ch;
+ dump_statistics_mock_matches = 0;
+ MOCK(channel_dump_statistics,
+ chan_test_channel_dump_statistics_mock);
+
+ /* Call channel_dumpstats() */
+ channel_dumpstats(LOG_DEBUG);
+
+ /* Assert that we hit the mock */
+ tt_int_op(dump_statistics_mock_matches, ==, 1);
+
+ /* Close the channel */
+ channel_mark_for_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+
+ /* Try again and hit the finished channel */
+ channel_dumpstats(LOG_DEBUG);
+ tt_int_op(dump_statistics_mock_matches, ==, 2);
+
+ channel_run_cleanup();
+ ch = NULL;
+
+ /* Now we should hit nothing */
+ channel_dumpstats(LOG_DEBUG);
+ tt_int_op(dump_statistics_mock_matches, ==, 2);
+
+ /* Unmock */
+ UNMOCK(channel_dump_statistics);
+ dump_statistics_mock_target = NULL;
+ dump_statistics_mock_matches = 0;
+
+ /* Now make another channel */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->cmux = circuitmux_alloc();
+ channel_register(ch);
+ tt_assert(ch->registered);
+ /* Lie about its age so dumpstats gets coverage for rate calculations */
+ ch->timestamp_created = time(NULL) - 30;
+ tt_assert(ch->timestamp_created > 0);
+ tt_assert(time(NULL) > ch->timestamp_created);
+
+ /* Put cells through it both ways to make the counters non-zero */
+ cell = tor_malloc_zero(sizeof(*cell));
+ make_fake_cell(cell);
+ test_chan_accept_cells = 1;
+ old_count = test_cells_written;
+ channel_write_cell(ch, cell);
+ cell = NULL;
+ tt_int_op(test_cells_written, ==, old_count + 1);
+ tt_assert(ch->n_bytes_xmitted > 0);
+ tt_assert(ch->n_cells_xmitted > 0);
+
+ /* Receive path */
+ channel_set_cell_handlers(ch,
+ chan_test_cell_handler,
+ chan_test_var_cell_handler);
+ tt_ptr_op(channel_get_cell_handler(ch), ==, chan_test_cell_handler);
+ tt_ptr_op(channel_get_var_cell_handler(ch), ==, chan_test_var_cell_handler);
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ old_count = test_chan_fixed_cells_recved;
+ channel_queue_cell(ch, cell);
+ cell = NULL;
+ tt_int_op(test_chan_fixed_cells_recved, ==, old_count + 1);
+ tt_assert(ch->n_bytes_recved > 0);
+ tt_assert(ch->n_cells_recved > 0);
+
+ /* Test channel_dump_statistics */
+ ch->describe_transport = chan_test_describe_transport;
+ ch->dumpstats = chan_test_dumpstats;
+ ch->get_remote_descr = chan_test_get_remote_descr;
+ ch->is_canonical = chan_test_is_canonical;
+ old_count = test_dumpstats_calls;
+ channel_dump_statistics(ch, LOG_DEBUG);
+ tt_int_op(test_dumpstats_calls, ==, old_count + 1);
+
+ /* Close the channel */
+ channel_mark_for_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+ channel_run_cleanup();
+ ch = NULL;
+
+ done:
+ tor_free(cell);
+ tor_free(ch);
+
+ UNMOCK(scheduler_channel_doesnt_want_writes);
+ UNMOCK(scheduler_release_channel);
+
+ return;
+}
+
+static void
+test_channel_flush(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = NULL;
+ packed_cell_t *p_cell = NULL;
+ var_cell_t *v_cell = NULL;
+ int init_count;
+
+ (void)arg;
+
+#ifdef ENABLE_MEMPOOLS
+ init_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+
+ /* Cache the original count */
+ init_count = test_cells_written;
+
+ /* Stop accepting so we can queue some */
+ test_chan_accept_cells = 0;
+
+ /* Queue a regular cell */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch, cell);
+ /* It should be queued, so assert that we didn't write it */
+ tt_int_op(test_cells_written, ==, init_count);
+
+ /* Queue a var cell */
+ v_cell = tor_malloc_zero(sizeof(var_cell_t) + CELL_PAYLOAD_SIZE);
+ make_fake_var_cell(v_cell);
+ channel_write_var_cell(ch, v_cell);
+ /* It should be queued, so assert that we didn't write it */
+ tt_int_op(test_cells_written, ==, init_count);
+
+ /* Try a packed cell now */
+ p_cell = packed_cell_new();
+ tt_assert(p_cell);
+ channel_write_packed_cell(ch, p_cell);
+ /* It should be queued, so assert that we didn't write it */
+ tt_int_op(test_cells_written, ==, init_count);
+
+ /* Now allow writes through again */
+ test_chan_accept_cells = 1;
+
+ /* ...and flush */
+ channel_flush_cells(ch);
+
+ /* All three should have gone through */
+ tt_int_op(test_cells_written, ==, init_count + 3);
+
+ done:
+ tor_free(ch);
+#ifdef ENABLE_MEMPOOLS
+ free_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ return;
+}
+
+/**
+ * Channel flush tests that require cmux mocking
+ */
+
+static void
+test_channel_flushmux(void *arg)
+{
+ channel_t *ch = NULL;
+ int old_count, q_len_before, q_len_after;
+ ssize_t result;
+
+ (void)arg;
+
+#ifdef ENABLE_MEMPOOLS
+ init_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ /* Install mocks we need for this test */
+ MOCK(channel_flush_from_first_active_circuit,
+ chan_test_channel_flush_from_first_active_circuit_mock);
+ MOCK(circuitmux_num_cells,
+ chan_test_circuitmux_num_cells_mock);
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->cmux = circuitmux_alloc();
+
+ old_count = test_cells_written;
+
+ test_target_cmux = ch->cmux;
+ test_cmux_cells = 1;
+
+ /* Enable cell acceptance */
+ test_chan_accept_cells = 1;
+
+ result = channel_flush_some_cells(ch, 1);
+
+ tt_int_op(result, ==, 1);
+ tt_int_op(test_cells_written, ==, old_count + 1);
+ tt_int_op(test_cmux_cells, ==, 0);
+
+ /* Now try it without accepting to force them into the queue */
+ test_chan_accept_cells = 0;
+ test_cmux_cells = 1;
+ q_len_before = chan_cell_queue_len(&(ch->outgoing_queue));
+
+ result = channel_flush_some_cells(ch, 1);
+
+ /* We should not have actually flushed any */
+ tt_int_op(result, ==, 0);
+ tt_int_op(test_cells_written, ==, old_count + 1);
+ /* But we should have gotten to the fake cellgen loop */
+ tt_int_op(test_cmux_cells, ==, 0);
+ /* ...and we should have a queued cell */
+ q_len_after = chan_cell_queue_len(&(ch->outgoing_queue));
+ tt_int_op(q_len_after, ==, q_len_before + 1);
+
+ /* Now accept cells again and drain the queue */
+ test_chan_accept_cells = 1;
+ channel_flush_cells(ch);
+ tt_int_op(test_cells_written, ==, old_count + 2);
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ test_target_cmux = NULL;
+ test_cmux_cells = 0;
+
+ done:
+ tor_free(ch);
+
+ UNMOCK(channel_flush_from_first_active_circuit);
+ UNMOCK(circuitmux_num_cells);
+
+ test_chan_accept_cells = 0;
+
+#ifdef ENABLE_MEMPOOLS
+ free_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ return;
+}
+
+static void
+test_channel_incoming(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = NULL;
+ var_cell_t *var_cell = NULL;
+ int old_count;
+
+ (void)arg;
+
+ /* Mock these for duration of the test */
+ MOCK(scheduler_channel_doesnt_want_writes,
+ scheduler_channel_doesnt_want_writes_mock);
+ MOCK(scheduler_release_channel,
+ scheduler_release_channel_mock);
+
+ /* Accept cells to lower layer */
+ test_chan_accept_cells = 1;
+ /* Use default overhead factor */
+ test_overhead_estimate = 1.0f;
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+ /* Start it off in OPENING */
+ ch->state = CHANNEL_STATE_OPENING;
+ /* We'll need a cmux */
+ ch->cmux = circuitmux_alloc();
+
+ /* Install incoming cell handlers */
+ channel_set_cell_handlers(ch,
+ chan_test_cell_handler,
+ chan_test_var_cell_handler);
+ /* Test cell handler getters */
+ tt_ptr_op(channel_get_cell_handler(ch), ==, chan_test_cell_handler);
+ tt_ptr_op(channel_get_var_cell_handler(ch), ==, chan_test_var_cell_handler);
+
+ /* Try to register it */
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Open it */
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN);
+
+ /* Receive a fixed cell */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ old_count = test_chan_fixed_cells_recved;
+ channel_queue_cell(ch, cell);
+ cell = NULL;
+ tt_int_op(test_chan_fixed_cells_recved, ==, old_count + 1);
+
+ /* Receive a variable-size cell */
+ var_cell = tor_malloc_zero(sizeof(var_cell_t) + CELL_PAYLOAD_SIZE);
+ make_fake_var_cell(var_cell);
+ old_count = test_chan_var_cells_recved;
+ channel_queue_var_cell(ch, var_cell);
+ var_cell = NULL;
+ tt_int_op(test_chan_var_cells_recved, ==, old_count + 1);
+
+ /* Close it */
+ channel_mark_for_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+ channel_run_cleanup();
+ ch = NULL;
+
+ done:
+ tor_free(ch);
+ tor_free(cell);
+ tor_free(var_cell);
+
+ UNMOCK(scheduler_channel_doesnt_want_writes);
+ UNMOCK(scheduler_release_channel);
+
+ return;
+}
+
+/**
+ * Normal channel lifecycle test:
+ *
+ * OPENING->OPEN->MAINT->OPEN->CLOSING->CLOSED
+ */
+
+static void
+test_channel_lifecycle(void *arg)
+{
+ channel_t *ch1 = NULL, *ch2 = NULL;
+ cell_t *cell = NULL;
+ int old_count, init_doesnt_want_writes_count;
+ int init_releases_count;
+
+ (void)arg;
+
+ /* Mock these for the whole lifecycle test */
+ MOCK(scheduler_channel_doesnt_want_writes,
+ scheduler_channel_doesnt_want_writes_mock);
+ MOCK(scheduler_release_channel,
+ scheduler_release_channel_mock);
+
+ /* Cache some initial counter values */
+ init_doesnt_want_writes_count = test_doesnt_want_writes_count;
+ init_releases_count = test_releases_count;
+
+ /* Accept cells to lower layer */
+ test_chan_accept_cells = 1;
+ /* Use default overhead factor */
+ test_overhead_estimate = 1.0f;
+
+ ch1 = new_fake_channel();
+ tt_assert(ch1);
+ /* Start it off in OPENING */
+ ch1->state = CHANNEL_STATE_OPENING;
+ /* We'll need a cmux */
+ ch1->cmux = circuitmux_alloc();
+
+ /* Try to register it */
+ channel_register(ch1);
+ tt_assert(ch1->registered);
+
+ /* Try to write a cell through (should queue) */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ old_count = test_cells_written;
+ channel_write_cell(ch1, cell);
+ tt_int_op(old_count, ==, test_cells_written);
+
+ /* Move it to OPEN and flush */
+ channel_change_state(ch1, CHANNEL_STATE_OPEN);
+
+ /* Queue should drain */
+ tt_int_op(old_count + 1, ==, test_cells_written);
+
+ /* Get another one */
+ ch2 = new_fake_channel();
+ tt_assert(ch2);
+ ch2->state = CHANNEL_STATE_OPENING;
+ ch2->cmux = circuitmux_alloc();
+
+ /* Register */
+ channel_register(ch2);
+ tt_assert(ch2->registered);
+
+ /* Check counters */
+ tt_int_op(test_doesnt_want_writes_count, ==, init_doesnt_want_writes_count);
+ tt_int_op(test_releases_count, ==, init_releases_count);
+
+ /* Move ch1 to MAINT */
+ channel_change_state(ch1, CHANNEL_STATE_MAINT);
+ tt_int_op(test_doesnt_want_writes_count, ==,
+ init_doesnt_want_writes_count + 1);
+ tt_int_op(test_releases_count, ==, init_releases_count);
+
+ /* Move ch2 to OPEN */
+ channel_change_state(ch2, CHANNEL_STATE_OPEN);
+ tt_int_op(test_doesnt_want_writes_count, ==,
+ init_doesnt_want_writes_count + 1);
+ tt_int_op(test_releases_count, ==, init_releases_count);
+
+ /* Move ch1 back to OPEN */
+ channel_change_state(ch1, CHANNEL_STATE_OPEN);
+ tt_int_op(test_doesnt_want_writes_count, ==,
+ init_doesnt_want_writes_count + 1);
+ tt_int_op(test_releases_count, ==, init_releases_count);
+
+ /* Mark ch2 for close */
+ channel_mark_for_close(ch2);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_CLOSING);
+ tt_int_op(test_doesnt_want_writes_count, ==,
+ init_doesnt_want_writes_count + 1);
+ tt_int_op(test_releases_count, ==, init_releases_count + 1);
+
+ /* Shut down channels */
+ channel_free_all();
+ ch1 = ch2 = NULL;
+ tt_int_op(test_doesnt_want_writes_count, ==,
+ init_doesnt_want_writes_count + 1);
+ /* channel_free() calls scheduler_release_channel() */
+ tt_int_op(test_releases_count, ==, init_releases_count + 4);
+
+ done:
+ tor_free(ch1);
+ tor_free(ch2);
+
+ UNMOCK(scheduler_channel_doesnt_want_writes);
+ UNMOCK(scheduler_release_channel);
+
+ return;
+}
+
+/**
+ * Weird channel lifecycle test:
+ *
+ * OPENING->CLOSING->CLOSED
+ * OPENING->OPEN->CLOSING->ERROR
+ * OPENING->OPEN->MAINT->CLOSING->CLOSED
+ * OPENING->OPEN->MAINT->CLOSING->ERROR
+ */
+
+static void
+test_channel_lifecycle_2(void *arg)
+{
+ channel_t *ch = NULL;
+
+ (void)arg;
+
+ /* Mock these for the whole lifecycle test */
+ MOCK(scheduler_channel_doesnt_want_writes,
+ scheduler_channel_doesnt_want_writes_mock);
+ MOCK(scheduler_release_channel,
+ scheduler_release_channel_mock);
+
+ /* Accept cells to lower layer */
+ test_chan_accept_cells = 1;
+ /* Use default overhead factor */
+ test_overhead_estimate = 1.0f;
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+ /* Start it off in OPENING */
+ ch->state = CHANNEL_STATE_OPENING;
+ /* The full lifecycle test needs a cmux */
+ ch->cmux = circuitmux_alloc();
+
+ /* Try to register it */
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Try to close it */
+ channel_mark_for_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+
+ /* Finish closing it */
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+ channel_run_cleanup();
+ ch = NULL;
+
+ /* Now try OPENING->OPEN->CLOSING->ERROR */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->state = CHANNEL_STATE_OPENING;
+ ch->cmux = circuitmux_alloc();
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Finish opening it */
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+
+ /* Error exit from lower layer */
+ chan_test_error(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_ERROR);
+ channel_run_cleanup();
+ ch = NULL;
+
+ /* OPENING->OPEN->MAINT->CLOSING->CLOSED close from maintenance state */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->state = CHANNEL_STATE_OPENING;
+ ch->cmux = circuitmux_alloc();
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Finish opening it */
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN);
+
+ /* Go to maintenance state */
+ channel_change_state(ch, CHANNEL_STATE_MAINT);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_MAINT);
+
+ /* Lower layer close */
+ channel_mark_for_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+
+ /* Finish */
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+ channel_run_cleanup();
+ ch = NULL;
+
+ /*
+ * OPENING->OPEN->MAINT->CLOSING->CLOSED lower-layer close during
+ * maintenance state
+ */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->state = CHANNEL_STATE_OPENING;
+ ch->cmux = circuitmux_alloc();
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Finish opening it */
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN);
+
+ /* Go to maintenance state */
+ channel_change_state(ch, CHANNEL_STATE_MAINT);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_MAINT);
+
+ /* Lower layer close */
+ channel_close_from_lower_layer(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+
+ /* Finish */
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSED);
+ channel_run_cleanup();
+ ch = NULL;
+
+ /* OPENING->OPEN->MAINT->CLOSING->ERROR */
+ ch = new_fake_channel();
+ tt_assert(ch);
+ ch->state = CHANNEL_STATE_OPENING;
+ ch->cmux = circuitmux_alloc();
+ channel_register(ch);
+ tt_assert(ch->registered);
+
+ /* Finish opening it */
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN);
+
+ /* Go to maintenance state */
+ channel_change_state(ch, CHANNEL_STATE_MAINT);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_MAINT);
+
+ /* Lower layer close */
+ chan_test_error(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_CLOSING);
+
+ /* Finish */
+ chan_test_finish_close(ch);
+ tt_int_op(ch->state, ==, CHANNEL_STATE_ERROR);
+ channel_run_cleanup();
+ ch = NULL;
+
+ /* Shut down channels */
+ channel_free_all();
+
+ done:
+ tor_free(ch);
+
+ UNMOCK(scheduler_channel_doesnt_want_writes);
+ UNMOCK(scheduler_release_channel);
+
+ return;
+}
+
+static void
+test_channel_multi(void *arg)
+{
+ channel_t *ch1 = NULL, *ch2 = NULL;
+ uint64_t global_queue_estimate;
+ cell_t *cell = NULL;
+
+ (void)arg;
+
+ /* Accept cells to lower layer */
+ test_chan_accept_cells = 1;
+ /* Use default overhead factor */
+ test_overhead_estimate = 1.0f;
+
+ ch1 = new_fake_channel();
+ tt_assert(ch1);
+ ch2 = new_fake_channel();
+ tt_assert(ch2);
+
+ /* Initial queue size update */
+ channel_update_xmit_queue_size(ch1);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 0);
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Queue some cells, check queue estimates */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch1, cell);
+
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch2, cell);
+
+ channel_update_xmit_queue_size(ch1);
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 0);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Stop accepting cells at lower layer */
+ test_chan_accept_cells = 0;
+
+ /* Queue some cells and check queue estimates */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch1, cell);
+
+ channel_update_xmit_queue_size(ch1);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 512);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 512);
+
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch2, cell);
+
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 512);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 1024);
+
+ /* Allow cells through again */
+ test_chan_accept_cells = 1;
+
+ /* Flush chan 2 */
+ channel_flush_cells(ch2);
+
+ /* Update and check queue sizes */
+ channel_update_xmit_queue_size(ch1);
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 512);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 512);
+
+ /* Flush chan 1 */
+ channel_flush_cells(ch1);
+
+ /* Update and check queue sizes */
+ channel_update_xmit_queue_size(ch1);
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 0);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Now block again */
+ test_chan_accept_cells = 0;
+
+ /* Queue some cells */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch1, cell);
+
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch2, cell);
+
+ /* Check the estimates */
+ channel_update_xmit_queue_size(ch1);
+ channel_update_xmit_queue_size(ch2);
+ tt_u64_op(ch1->bytes_queued_for_xmit, ==, 512);
+ tt_u64_op(ch2->bytes_queued_for_xmit, ==, 512);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 1024);
+
+ /* Now close channel 2; it should be subtracted from the global queue */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_mark_for_close(ch2);
+ UNMOCK(scheduler_release_channel);
+
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 512);
+
+ /*
+ * Since the fake channels aren't registered, channel_free_all() can't
+ * see them properly.
+ */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_mark_for_close(ch1);
+ UNMOCK(scheduler_release_channel);
+
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Now free everything */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_free_all();
+ UNMOCK(scheduler_release_channel);
+
+ done:
+ tor_free(ch1);
+ tor_free(ch2);
+
+ return;
+}
+
+/**
+ * Check some hopefully-impossible edge cases in the channel queue we
+ * can only trigger by doing evil things to the queue directly.
+ */
+
+static void
+test_channel_queue_impossible(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = NULL;
+ packed_cell_t *packed_cell = NULL;
+ var_cell_t *var_cell = NULL;
+ int old_count;
+ cell_queue_entry_t *q = NULL;
+ uint64_t global_queue_estimate;
+
+ /* Cache the global queue size (see below) */
+ global_queue_estimate = channel_get_global_queue_estimate();
+
+ (void)arg;
+
+#ifdef ENABLE_MEMPOOLS
+ init_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ packed_cell = packed_cell_new();
+ tt_assert(packed_cell);
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+
+ /* We test queueing here; tell it not to accept cells */
+ test_chan_accept_cells = 0;
+ /* ...and keep it from trying to flush the queue */
+ ch->state = CHANNEL_STATE_MAINT;
+
+ /* Cache the cell written count */
+ old_count = test_cells_written;
+
+ /* Assert that the queue is initially empty */
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ /* Get a fresh cell and write it to the channel*/
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch, cell);
+
+ /* Now it should be queued */
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 1);
+ q = TOR_SIMPLEQ_FIRST(&(ch->outgoing_queue));
+ tt_assert(q);
+ if (q) {
+ tt_int_op(q->type, ==, CELL_QUEUE_FIXED);
+ tt_ptr_op(q->u.fixed.cell, ==, cell);
+ }
+ /* Do perverse things to it */
+ tor_free(q->u.fixed.cell);
+ q->u.fixed.cell = NULL;
+
+ /*
+ * Now change back to open with channel_change_state() and assert that it
+ * gets thrown away properly.
+ */
+ test_chan_accept_cells = 1;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_assert(test_cells_written == old_count);
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ /* Same thing but for a var_cell */
+
+ test_chan_accept_cells = 0;
+ ch->state = CHANNEL_STATE_MAINT;
+ var_cell = tor_malloc_zero(sizeof(var_cell_t) + CELL_PAYLOAD_SIZE);
+ make_fake_var_cell(var_cell);
+ channel_write_var_cell(ch, var_cell);
+
+ /* Check that it's queued */
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 1);
+ q = TOR_SIMPLEQ_FIRST(&(ch->outgoing_queue));
+ tt_assert(q);
+ if (q) {
+ tt_int_op(q->type, ==, CELL_QUEUE_VAR);
+ tt_ptr_op(q->u.var.var_cell, ==, var_cell);
+ }
+
+ /* Remove the cell from the queue entry */
+ tor_free(q->u.var.var_cell);
+ q->u.var.var_cell = NULL;
+
+ /* Let it drain and check that the bad entry is discarded */
+ test_chan_accept_cells = 1;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_assert(test_cells_written == old_count);
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ /* Same thing with a packed_cell */
+
+ test_chan_accept_cells = 0;
+ ch->state = CHANNEL_STATE_MAINT;
+ packed_cell = packed_cell_new();
+ tt_assert(packed_cell);
+ channel_write_packed_cell(ch, packed_cell);
+
+ /* Check that it's queued */
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 1);
+ q = TOR_SIMPLEQ_FIRST(&(ch->outgoing_queue));
+ tt_assert(q);
+ if (q) {
+ tt_int_op(q->type, ==, CELL_QUEUE_PACKED);
+ tt_ptr_op(q->u.packed.packed_cell, ==, packed_cell);
+ }
+
+ /* Remove the cell from the queue entry */
+ packed_cell_free(q->u.packed.packed_cell);
+ q->u.packed.packed_cell = NULL;
+
+ /* Let it drain and check that the bad entry is discarded */
+ test_chan_accept_cells = 1;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_assert(test_cells_written == old_count);
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ /* Unknown cell type case */
+ test_chan_accept_cells = 0;
+ ch->state = CHANNEL_STATE_MAINT;
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch, cell);
+
+ /* Check that it's queued */
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 1);
+ q = TOR_SIMPLEQ_FIRST(&(ch->outgoing_queue));
+ tt_assert(q);
+ if (q) {
+ tt_int_op(q->type, ==, CELL_QUEUE_FIXED);
+ tt_ptr_op(q->u.fixed.cell, ==, cell);
+ }
+ /* Clobber it, including the queue entry type */
+ tor_free(q->u.fixed.cell);
+ q->u.fixed.cell = NULL;
+ q->type = CELL_QUEUE_PACKED + 1;
+
+ /* Let it drain and check that the bad entry is discarded */
+ test_chan_accept_cells = 1;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_assert(test_cells_written == old_count);
+ tt_int_op(chan_cell_queue_len(&(ch->outgoing_queue)), ==, 0);
+
+ done:
+ tor_free(ch);
+#ifdef ENABLE_MEMPOOLS
+ free_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ /*
+ * Doing that meant that we couldn't correctly adjust the queue size
+ * for the var cell, so manually reset the global queue size estimate
+ * so the next test doesn't break if we run with --no-fork.
+ */
+ estimated_total_queue_size = global_queue_estimate;
+
+ return;
+}
+
+static void
+test_channel_queue_size(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = NULL;
+ int n, old_count;
+ uint64_t global_queue_estimate;
+
+ (void)arg;
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+
+ /* Initial queue size update */
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Test the call-through to our fake lower layer */
+ n = channel_num_cells_writeable(ch);
+ /* chan_test_num_cells_writeable() always returns 32 */
+ tt_int_op(n, ==, 32);
+
+ /*
+ * Now we queue some cells and check that channel_num_cells_writeable()
+ * adjusts properly
+ */
+
+ /* tell it not to accept cells */
+ test_chan_accept_cells = 0;
+ /* ...and keep it from trying to flush the queue */
+ ch->state = CHANNEL_STATE_MAINT;
+
+ /* Get a fresh cell */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+
+ old_count = test_cells_written;
+ channel_write_cell(ch, cell);
+ /* Assert that it got queued, not written through, correctly */
+ tt_int_op(test_cells_written, ==, old_count);
+
+ /* Now check chan_test_num_cells_writeable() again */
+ n = channel_num_cells_writeable(ch);
+ tt_int_op(n, ==, 0); /* Should return 0 since we're in CHANNEL_STATE_MAINT */
+
+ /* Update queue size estimates */
+ channel_update_xmit_queue_size(ch);
+ /* One cell, times an overhead factor of 1.0 */
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
+ /* Try a different overhead factor */
+ test_overhead_estimate = 0.5f;
+ /* This one should be ignored since it's below 1.0 */
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
+ /* Now try a larger one */
+ test_overhead_estimate = 2.0f;
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 1024);
+ /* Go back to 1.0 */
+ test_overhead_estimate = 1.0f;
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
+ /* Check the global estimate too */
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 512);
+
+ /* Go to open */
+ old_count = test_cells_written;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+
+ /*
+ * It should try to write, but we aren't accepting cells right now, so
+ * it'll requeue
+ */
+ tt_int_op(test_cells_written, ==, old_count);
+
+ /* Check the queue size again */
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 512);
+
+ /*
+ * Now the cell is in the queue, and we're open, so we should get 31
+ * writeable cells.
+ */
+ n = channel_num_cells_writeable(ch);
+ tt_int_op(n, ==, 31);
+
+ /* Accept cells again */
+ test_chan_accept_cells = 1;
+ /* ...and re-process the queue */
+ old_count = test_cells_written;
+ channel_flush_cells(ch);
+ tt_int_op(test_cells_written, ==, old_count + 1);
+
+ /* Should have 32 writeable now */
+ n = channel_num_cells_writeable(ch);
+ tt_int_op(n, ==, 32);
+
+ /* Should have queue size estimate of zero */
+ channel_update_xmit_queue_size(ch);
+ tt_u64_op(ch->bytes_queued_for_xmit, ==, 0);
+ global_queue_estimate = channel_get_global_queue_estimate();
+ tt_u64_op(global_queue_estimate, ==, 0);
+
+ /* Okay, now we're done with this one */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_mark_for_close(ch);
+ UNMOCK(scheduler_release_channel);
+
+ done:
+ tor_free(ch);
+
+ return;
+}
+
+static void
+test_channel_write(void *arg)
+{
+ channel_t *ch = NULL;
+ cell_t *cell = tor_malloc_zero(sizeof(cell_t));
+ packed_cell_t *packed_cell = NULL;
+ var_cell_t *var_cell =
+ tor_malloc_zero(sizeof(var_cell_t) + CELL_PAYLOAD_SIZE);
+ int old_count;
+
+ (void)arg;
+
+#ifdef ENABLE_MEMPOOLS
+ init_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ packed_cell = packed_cell_new();
+ tt_assert(packed_cell);
+
+ ch = new_fake_channel();
+ tt_assert(ch);
+ make_fake_cell(cell);
+ make_fake_var_cell(var_cell);
+
+ /* Tell it to accept cells */
+ test_chan_accept_cells = 1;
+
+ old_count = test_cells_written;
+ channel_write_cell(ch, cell);
+ tt_assert(test_cells_written == old_count + 1);
+
+ channel_write_var_cell(ch, var_cell);
+ tt_assert(test_cells_written == old_count + 2);
+
+ channel_write_packed_cell(ch, packed_cell);
+ tt_assert(test_cells_written == old_count + 3);
+
+ /* Now we test queueing; tell it not to accept cells */
+ test_chan_accept_cells = 0;
+ /* ...and keep it from trying to flush the queue */
+ ch->state = CHANNEL_STATE_MAINT;
+
+ /* Get a fresh cell */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+
+ old_count = test_cells_written;
+ channel_write_cell(ch, cell);
+ tt_assert(test_cells_written == old_count);
+
+ /*
+ * Now change back to open with channel_change_state() and assert that it
+ * gets drained from the queue.
+ */
+ test_chan_accept_cells = 1;
+ channel_change_state(ch, CHANNEL_STATE_OPEN);
+ tt_assert(test_cells_written == old_count + 1);
+
+ /*
+ * Check the note destroy case
+ */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ cell->command = CELL_DESTROY;
+
+ /* Set up the mock */
+ MOCK(channel_note_destroy_not_pending,
+ channel_note_destroy_not_pending_mock);
+
+ old_count = test_destroy_not_pending_calls;
+ channel_write_cell(ch, cell);
+ tt_assert(test_destroy_not_pending_calls == old_count + 1);
+
+ /* Now send a non-destroy and check we don't call it */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch, cell);
+ tt_assert(test_destroy_not_pending_calls == old_count + 1);
+
+ UNMOCK(channel_note_destroy_not_pending);
+
+ /*
+ * Now switch it to CLOSING so we can test the discard-cells case
+ * in the channel_write_*() functions.
+ */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_mark_for_close(ch);
+ UNMOCK(scheduler_release_channel);
+
+ /* Send cells that will drop in the closing state */
+ old_count = test_cells_written;
+
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+ channel_write_cell(ch, cell);
+ tt_assert(test_cells_written == old_count);
+
+ var_cell = tor_malloc_zero(sizeof(var_cell_t) + CELL_PAYLOAD_SIZE);
+ make_fake_var_cell(var_cell);
+ channel_write_var_cell(ch, var_cell);
+ tt_assert(test_cells_written == old_count);
+
+ packed_cell = packed_cell_new();
+ channel_write_packed_cell(ch, packed_cell);
+ tt_assert(test_cells_written == old_count);
+
+#ifdef ENABLE_MEMPOOLS
+ free_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ done:
+ tor_free(ch);
+
+ return;
+}
+
+struct testcase_t channel_tests[] = {
+ { "dumpstats", test_channel_dumpstats, TT_FORK, NULL, NULL },
+ { "flush", test_channel_flush, TT_FORK, NULL, NULL },
+ { "flushmux", test_channel_flushmux, TT_FORK, NULL, NULL },
+ { "incoming", test_channel_incoming, TT_FORK, NULL, NULL },
+ { "lifecycle", test_channel_lifecycle, TT_FORK, NULL, NULL },
+ { "lifecycle_2", test_channel_lifecycle_2, TT_FORK, NULL, NULL },
+ { "multi", test_channel_multi, TT_FORK, NULL, NULL },
+ { "queue_impossible", test_channel_queue_impossible, TT_FORK, NULL, NULL },
+ { "queue_size", test_channel_queue_size, TT_FORK, NULL, NULL },
+ { "write", test_channel_write, TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_channeltls.c b/src/test/test_channeltls.c
new file mode 100644
index 0000000000..45e24dfbec
--- /dev/null
+++ b/src/test/test_channeltls.c
@@ -0,0 +1,332 @@
+/* Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include <math.h>
+
+#define TOR_CHANNEL_INTERNAL_
+#include "or.h"
+#include "address.h"
+#include "buffers.h"
+#include "channel.h"
+#include "channeltls.h"
+#include "connection_or.h"
+#include "config.h"
+/* For init/free stuff */
+#include "scheduler.h"
+#include "tortls.h"
+
+/* Test suite stuff */
+#include "test.h"
+#include "fakechans.h"
+
+/* The channeltls unit tests */
+static void test_channeltls_create(void *arg);
+static void test_channeltls_num_bytes_queued(void *arg);
+static void test_channeltls_overhead_estimate(void *arg);
+
+/* Mocks used by channeltls unit tests */
+static size_t tlschan_buf_datalen_mock(const buf_t *buf);
+static or_connection_t * tlschan_connection_or_connect_mock(
+ const tor_addr_t *addr,
+ uint16_t port,
+ const char *digest,
+ channel_tls_t *tlschan);
+static int tlschan_is_local_addr_mock(const tor_addr_t *addr);
+
+/* Fake close method */
+static void tlschan_fake_close_method(channel_t *chan);
+
+/* Flags controlling behavior of channeltls unit test mocks */
+static int tlschan_local = 0;
+static const buf_t * tlschan_buf_datalen_mock_target = NULL;
+static size_t tlschan_buf_datalen_mock_size = 0;
+
+/* Thing to cast to fake tor_tls_t * to appease assert_connection_ok() */
+static int fake_tortls = 0; /* Bleh... */
+
+static void
+test_channeltls_create(void *arg)
+{
+ tor_addr_t test_addr;
+ channel_t *ch = NULL;
+ const char test_digest[DIGEST_LEN] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14 };
+
+ (void)arg;
+
+ /* Set up a fake address to fake-connect to */
+ test_addr.family = AF_INET;
+ test_addr.addr.in_addr.s_addr = htonl(0x01020304);
+
+ /* For this test we always want the address to be treated as non-local */
+ tlschan_local = 0;
+ /* Install is_local_addr() mock */
+ MOCK(is_local_addr, tlschan_is_local_addr_mock);
+
+ /* Install mock for connection_or_connect() */
+ MOCK(connection_or_connect, tlschan_connection_or_connect_mock);
+
+ /* Try connecting */
+ ch = channel_tls_connect(&test_addr, 567, test_digest);
+ tt_assert(ch != NULL);
+
+ done:
+ if (ch) {
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ /*
+ * Use fake close method that doesn't try to do too much to fake
+ * orconn
+ */
+ ch->close = tlschan_fake_close_method;
+ channel_mark_for_close(ch);
+ tor_free(ch);
+ UNMOCK(scheduler_release_channel);
+ }
+
+ UNMOCK(connection_or_connect);
+ UNMOCK(is_local_addr);
+
+ return;
+}
+
+static void
+test_channeltls_num_bytes_queued(void *arg)
+{
+ tor_addr_t test_addr;
+ channel_t *ch = NULL;
+ const char test_digest[DIGEST_LEN] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14 };
+ channel_tls_t *tlschan = NULL;
+ size_t len;
+ int fake_outbuf = 0, n;
+
+ (void)arg;
+
+ /* Set up a fake address to fake-connect to */
+ test_addr.family = AF_INET;
+ test_addr.addr.in_addr.s_addr = htonl(0x01020304);
+
+ /* For this test we always want the address to be treated as non-local */
+ tlschan_local = 0;
+ /* Install is_local_addr() mock */
+ MOCK(is_local_addr, tlschan_is_local_addr_mock);
+
+ /* Install mock for connection_or_connect() */
+ MOCK(connection_or_connect, tlschan_connection_or_connect_mock);
+
+ /* Try connecting */
+ ch = channel_tls_connect(&test_addr, 567, test_digest);
+ tt_assert(ch != NULL);
+
+ /*
+ * Next, we have to test ch->num_bytes_queued, which is
+ * channel_tls_num_bytes_queued_method. We can't mock
+ * connection_get_outbuf_len() directly because it's static INLINE
+ * in connection.h, but we can mock buf_datalen(). Note that
+ * if bufferevents ever work, this will break with them enabled.
+ */
+
+ tt_assert(ch->num_bytes_queued != NULL);
+ tlschan = BASE_CHAN_TO_TLS(ch);
+ tt_assert(tlschan != NULL);
+ if (TO_CONN(tlschan->conn)->outbuf == NULL) {
+ /* We need an outbuf to make sure buf_datalen() gets called */
+ fake_outbuf = 1;
+ TO_CONN(tlschan->conn)->outbuf = buf_new();
+ }
+ tlschan_buf_datalen_mock_target = TO_CONN(tlschan->conn)->outbuf;
+ tlschan_buf_datalen_mock_size = 1024;
+ MOCK(buf_datalen, tlschan_buf_datalen_mock);
+ len = ch->num_bytes_queued(ch);
+ tt_int_op(len, ==, tlschan_buf_datalen_mock_size);
+ /*
+ * We also cover num_cells_writeable here; since wide_circ_ids = 0 on
+ * the fake tlschans, cell_network_size returns 512, and so with
+ * tlschan_buf_datalen_mock_size == 1024, we should be able to write
+ * ceil((OR_CONN_HIGHWATER - 1024) / 512) = ceil(OR_CONN_HIGHWATER / 512)
+ * - 2 cells.
+ */
+ n = ch->num_cells_writeable(ch);
+ tt_int_op(n, ==, CEIL_DIV(OR_CONN_HIGHWATER, 512) - 2);
+ UNMOCK(buf_datalen);
+ tlschan_buf_datalen_mock_target = NULL;
+ tlschan_buf_datalen_mock_size = 0;
+ if (fake_outbuf) {
+ buf_free(TO_CONN(tlschan->conn)->outbuf);
+ TO_CONN(tlschan->conn)->outbuf = NULL;
+ }
+
+ done:
+ if (ch) {
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ /*
+ * Use fake close method that doesn't try to do too much to fake
+ * orconn
+ */
+ ch->close = tlschan_fake_close_method;
+ channel_mark_for_close(ch);
+ tor_free(ch);
+ UNMOCK(scheduler_release_channel);
+ }
+
+ UNMOCK(connection_or_connect);
+ UNMOCK(is_local_addr);
+
+ return;
+}
+
+static void
+test_channeltls_overhead_estimate(void *arg)
+{
+ tor_addr_t test_addr;
+ channel_t *ch = NULL;
+ const char test_digest[DIGEST_LEN] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14 };
+ float r;
+ channel_tls_t *tlschan = NULL;
+
+ (void)arg;
+
+ /* Set up a fake address to fake-connect to */
+ test_addr.family = AF_INET;
+ test_addr.addr.in_addr.s_addr = htonl(0x01020304);
+
+ /* For this test we always want the address to be treated as non-local */
+ tlschan_local = 0;
+ /* Install is_local_addr() mock */
+ MOCK(is_local_addr, tlschan_is_local_addr_mock);
+
+ /* Install mock for connection_or_connect() */
+ MOCK(connection_or_connect, tlschan_connection_or_connect_mock);
+
+ /* Try connecting */
+ ch = channel_tls_connect(&test_addr, 567, test_digest);
+ tt_assert(ch != NULL);
+
+ /* First case: silly low ratios should get clamped to 1.0f */
+ tlschan = BASE_CHAN_TO_TLS(ch);
+ tt_assert(tlschan != NULL);
+ tlschan->conn->bytes_xmitted = 128;
+ tlschan->conn->bytes_xmitted_by_tls = 64;
+ r = ch->get_overhead_estimate(ch);
+ tt_assert(fabsf(r - 1.0f) < 1E-12);
+
+ tlschan->conn->bytes_xmitted_by_tls = 127;
+ r = ch->get_overhead_estimate(ch);
+ tt_assert(fabsf(r - 1.0f) < 1E-12);
+
+ /* Now middle of the range */
+ tlschan->conn->bytes_xmitted_by_tls = 192;
+ r = ch->get_overhead_estimate(ch);
+ tt_assert(fabsf(r - 1.5f) < 1E-12);
+
+ /* Now above the 2.0f clamp */
+ tlschan->conn->bytes_xmitted_by_tls = 257;
+ r = ch->get_overhead_estimate(ch);
+ tt_assert(fabsf(r - 2.0f) < 1E-12);
+
+ tlschan->conn->bytes_xmitted_by_tls = 512;
+ r = ch->get_overhead_estimate(ch);
+ tt_assert(fabsf(r - 2.0f) < 1E-12);
+
+ done:
+ if (ch) {
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ /*
+ * Use fake close method that doesn't try to do too much to fake
+ * orconn
+ */
+ ch->close = tlschan_fake_close_method;
+ channel_mark_for_close(ch);
+ tor_free(ch);
+ UNMOCK(scheduler_release_channel);
+ }
+
+ UNMOCK(connection_or_connect);
+ UNMOCK(is_local_addr);
+
+ return;
+}
+
+static size_t
+tlschan_buf_datalen_mock(const buf_t *buf)
+{
+ if (buf != NULL && buf == tlschan_buf_datalen_mock_target) {
+ return tlschan_buf_datalen_mock_size;
+ } else {
+ return buf_datalen__real(buf);
+ }
+}
+
+static or_connection_t *
+tlschan_connection_or_connect_mock(const tor_addr_t *addr,
+ uint16_t port,
+ const char *digest,
+ channel_tls_t *tlschan)
+{
+ or_connection_t *result = NULL;
+
+ tt_assert(addr != NULL);
+ tt_assert(port != 0);
+ tt_assert(digest != NULL);
+ tt_assert(tlschan != NULL);
+
+ /* Make a fake orconn */
+ result = tor_malloc_zero(sizeof(*result));
+ result->base_.magic = OR_CONNECTION_MAGIC;
+ result->base_.state = OR_CONN_STATE_OPEN;
+ result->base_.type = CONN_TYPE_OR;
+ result->base_.socket_family = addr->family;
+ result->base_.address = tor_strdup("<fake>");
+ memcpy(&(result->base_.addr), addr, sizeof(tor_addr_t));
+ result->base_.port = port;
+ memcpy(result->identity_digest, digest, DIGEST_LEN);
+ result->chan = tlschan;
+ memcpy(&(result->real_addr), addr, sizeof(tor_addr_t));
+ result->tls = (tor_tls_t *)((void *)(&fake_tortls));
+
+ done:
+ return result;
+}
+
+static void
+tlschan_fake_close_method(channel_t *chan)
+{
+ channel_tls_t *tlschan = NULL;
+
+ tt_assert(chan != NULL);
+ tt_int_op(chan->magic, ==, TLS_CHAN_MAGIC);
+
+ tlschan = BASE_CHAN_TO_TLS(chan);
+ tt_assert(tlschan != NULL);
+
+ /* Just free the fake orconn */
+ tor_free(tlschan->conn);
+
+ channel_closed(chan);
+
+ done:
+ return;
+}
+
+static int
+tlschan_is_local_addr_mock(const tor_addr_t *addr)
+{
+ tt_assert(addr != NULL);
+
+ done:
+ return tlschan_local;
+}
+
+struct testcase_t channeltls_tests[] = {
+ { "create", test_channeltls_create, TT_FORK, NULL, NULL },
+ { "num_bytes_queued", test_channeltls_num_bytes_queued,
+ TT_FORK, NULL, NULL },
+ { "overhead_estimate", test_channeltls_overhead_estimate,
+ TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_checkdir.c b/src/test/test_checkdir.c
new file mode 100644
index 0000000000..6c520656e0
--- /dev/null
+++ b/src/test/test_checkdir.c
@@ -0,0 +1,140 @@
+/* Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#include "or.h"
+#include <dirent.h>
+#include "config.h"
+#include "test.h"
+#include "util.h"
+
+#ifdef _WIN32
+#define mkdir(a,b) mkdir(a)
+#define tt_int_op_nowin(a,op,b) do { (void)(a); (void)(b); } while (0)
+#else
+#define tt_int_op_nowin(a,op,b) tt_int_op((a),op,(b))
+#endif
+
+/** Run unit tests for private dir permission enforcement logic. */
+static void
+test_checkdir_perms(void *testdata)
+{
+ (void)testdata;
+ or_options_t *options = get_options_mutable();
+ const char *subdir = "test_checkdir";
+ char *testdir = NULL;
+ cpd_check_t cpd_chkopts;
+ cpd_check_t unix_create_opts;
+ cpd_check_t unix_verify_optsmask;
+ struct stat st;
+
+ /* setup data directory before tests. */
+ tor_free(options->DataDirectory);
+ options->DataDirectory = tor_strdup(get_fname(subdir));
+ tt_int_op(mkdir(options->DataDirectory, 0750), OP_EQ, 0);
+
+ /* test: create new dir, no flags. */
+ testdir = get_datadir_fname("checkdir_new_none");
+ cpd_chkopts = CPD_CREATE;
+ unix_verify_optsmask = 0077;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: create new dir, CPD_GROUP_OK option set. */
+ testdir = get_datadir_fname("checkdir_new_groupok");
+ cpd_chkopts = CPD_CREATE|CPD_GROUP_OK;
+ unix_verify_optsmask = 0077;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: should get an error on existing dir with
+ wrong perms */
+ testdir = get_datadir_fname("checkdir_new_groupok_err");
+ tt_int_op(0, OP_EQ, mkdir(testdir, 027));
+ cpd_chkopts = CPD_CHECK_MODE_ONLY|CPD_CREATE|CPD_GROUP_OK;
+ tt_int_op_nowin(-1, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tor_free(testdir);
+
+ /* test: create new dir, CPD_GROUP_READ option set. */
+ testdir = get_datadir_fname("checkdir_new_groupread");
+ cpd_chkopts = CPD_CREATE|CPD_GROUP_READ;
+ unix_verify_optsmask = 0027;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: check existing dir created with defaults,
+ and verify with CPD_CREATE only. */
+ testdir = get_datadir_fname("checkdir_exists_none");
+ cpd_chkopts = CPD_CREATE;
+ unix_create_opts = 0700;
+ (void)unix_create_opts;
+ unix_verify_optsmask = 0077;
+ tt_int_op(0, OP_EQ, mkdir(testdir, unix_create_opts));
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: check existing dir created with defaults,
+ and verify with CPD_GROUP_OK option set. */
+ testdir = get_datadir_fname("checkdir_exists_groupok");
+ cpd_chkopts = CPD_CREATE;
+ unix_verify_optsmask = 0077;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ cpd_chkopts = CPD_GROUP_OK;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: check existing dir created with defaults,
+ and verify with CPD_GROUP_READ option set. */
+ testdir = get_datadir_fname("checkdir_exists_groupread");
+ cpd_chkopts = CPD_CREATE;
+ unix_verify_optsmask = 0027;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ cpd_chkopts = CPD_GROUP_READ;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: check existing dir created with CPD_GROUP_READ,
+ and verify with CPD_GROUP_OK option set. */
+ testdir = get_datadir_fname("checkdir_existsread_groupok");
+ cpd_chkopts = CPD_CREATE|CPD_GROUP_READ;
+ unix_verify_optsmask = 0027;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ cpd_chkopts = CPD_GROUP_OK;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+ tor_free(testdir);
+
+ /* test: check existing dir created with CPD_GROUP_READ,
+ and verify with CPD_GROUP_READ option set. */
+ testdir = get_datadir_fname("checkdir_existsread_groupread");
+ cpd_chkopts = CPD_CREATE|CPD_GROUP_READ;
+ unix_verify_optsmask = 0027;
+ tt_int_op(0, OP_EQ, check_private_dir(testdir, cpd_chkopts, NULL));
+ tt_int_op(0, OP_EQ, stat(testdir, &st));
+ tt_int_op_nowin(0, OP_EQ, (st.st_mode & unix_verify_optsmask));
+
+ done:
+ tor_free(testdir);
+}
+
+#define CHECKDIR(name,flags) \
+ { #name, test_checkdir_##name, (flags), NULL, NULL }
+
+struct testcase_t checkdir_tests[] = {
+ CHECKDIR(perms, 0),
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_circuitlist.c b/src/test/test_circuitlist.c
index fb5488b627..181aec20a9 100644
--- a/src/test/test_circuitlist.c
+++ b/src/test/test_circuitlist.c
@@ -50,17 +50,17 @@ circuitmux_detach_mock(circuitmux_t *cmux, circuit_t *circ)
}
#define GOT_CMUX_ATTACH(mux_, circ_, dir_) do { \
- tt_int_op(cam.ncalls, ==, 1); \
- tt_ptr_op(cam.cmux, ==, (mux_)); \
- tt_ptr_op(cam.circ, ==, (circ_)); \
- tt_int_op(cam.dir, ==, (dir_)); \
+ tt_int_op(cam.ncalls, OP_EQ, 1); \
+ tt_ptr_op(cam.cmux, OP_EQ, (mux_)); \
+ tt_ptr_op(cam.circ, OP_EQ, (circ_)); \
+ tt_int_op(cam.dir, OP_EQ, (dir_)); \
memset(&cam, 0, sizeof(cam)); \
} while (0)
#define GOT_CMUX_DETACH(mux_, circ_) do { \
- tt_int_op(cdm.ncalls, ==, 1); \
- tt_ptr_op(cdm.cmux, ==, (mux_)); \
- tt_ptr_op(cdm.circ, ==, (circ_)); \
+ tt_int_op(cdm.ncalls, OP_EQ, 1); \
+ tt_ptr_op(cdm.cmux, OP_EQ, (mux_)); \
+ tt_ptr_op(cdm.circ, OP_EQ, (circ_)); \
memset(&cdm, 0, sizeof(cdm)); \
} while (0)
@@ -90,14 +90,14 @@ test_clist_maps(void *arg)
or_c1 = or_circuit_new(100, ch2);
tt_assert(or_c1);
GOT_CMUX_ATTACH(ch2->cmux, or_c1, CELL_DIRECTION_IN);
- tt_int_op(or_c1->p_circ_id, ==, 100);
- tt_ptr_op(or_c1->p_chan, ==, ch2);
+ tt_int_op(or_c1->p_circ_id, OP_EQ, 100);
+ tt_ptr_op(or_c1->p_chan, OP_EQ, ch2);
or_c2 = or_circuit_new(100, ch1);
tt_assert(or_c2);
GOT_CMUX_ATTACH(ch1->cmux, or_c2, CELL_DIRECTION_IN);
- tt_int_op(or_c2->p_circ_id, ==, 100);
- tt_ptr_op(or_c2->p_chan, ==, ch1);
+ tt_int_op(or_c2->p_circ_id, OP_EQ, 100);
+ tt_ptr_op(or_c2->p_chan, OP_EQ, ch1);
circuit_set_n_circid_chan(TO_CIRCUIT(or_c1), 200, ch1);
GOT_CMUX_ATTACH(ch1->cmux, or_c1, CELL_DIRECTION_OUT);
@@ -105,11 +105,11 @@ test_clist_maps(void *arg)
circuit_set_n_circid_chan(TO_CIRCUIT(or_c2), 200, ch2);
GOT_CMUX_ATTACH(ch2->cmux, or_c2, CELL_DIRECTION_OUT);
- tt_ptr_op(circuit_get_by_circid_channel(200, ch1), ==, TO_CIRCUIT(or_c1));
- tt_ptr_op(circuit_get_by_circid_channel(200, ch2), ==, TO_CIRCUIT(or_c2));
- tt_ptr_op(circuit_get_by_circid_channel(100, ch2), ==, TO_CIRCUIT(or_c1));
+ tt_ptr_op(circuit_get_by_circid_channel(200, ch1), OP_EQ, TO_CIRCUIT(or_c1));
+ tt_ptr_op(circuit_get_by_circid_channel(200, ch2), OP_EQ, TO_CIRCUIT(or_c2));
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch2), OP_EQ, TO_CIRCUIT(or_c1));
/* Try the same thing again, to test the "fast" path. */
- tt_ptr_op(circuit_get_by_circid_channel(100, ch2), ==, TO_CIRCUIT(or_c1));
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch2), OP_EQ, TO_CIRCUIT(or_c1));
tt_assert(circuit_id_in_use_on_channel(100, ch2));
tt_assert(! circuit_id_in_use_on_channel(101, ch2));
@@ -117,9 +117,9 @@ test_clist_maps(void *arg)
circuit_set_p_circid_chan(or_c1, 500, ch3);
GOT_CMUX_DETACH(ch2->cmux, TO_CIRCUIT(or_c1));
GOT_CMUX_ATTACH(ch3->cmux, TO_CIRCUIT(or_c1), CELL_DIRECTION_IN);
- tt_ptr_op(circuit_get_by_circid_channel(100, ch2), ==, NULL);
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch2), OP_EQ, NULL);
tt_assert(! circuit_id_in_use_on_channel(100, ch2));
- tt_ptr_op(circuit_get_by_circid_channel(500, ch3), ==, TO_CIRCUIT(or_c1));
+ tt_ptr_op(circuit_get_by_circid_channel(500, ch3), OP_EQ, TO_CIRCUIT(or_c1));
/* Now let's see about destroy handling. */
tt_assert(! circuit_id_in_use_on_channel(205, ch2));
@@ -132,26 +132,26 @@ test_clist_maps(void *arg)
tt_assert(circuit_id_in_use_on_channel(100, ch1));
tt_assert(TO_CIRCUIT(or_c2)->n_delete_pending != 0);
- tt_ptr_op(circuit_get_by_circid_channel(200, ch2), ==, TO_CIRCUIT(or_c2));
- tt_ptr_op(circuit_get_by_circid_channel(100, ch1), ==, TO_CIRCUIT(or_c2));
+ tt_ptr_op(circuit_get_by_circid_channel(200, ch2), OP_EQ, TO_CIRCUIT(or_c2));
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch1), OP_EQ, TO_CIRCUIT(or_c2));
/* Okay, now free ch2 and make sure that the circuit ID is STILL not
* usable, because we haven't declared the destroy to be nonpending */
- tt_int_op(cdm.ncalls, ==, 0);
+ tt_int_op(cdm.ncalls, OP_EQ, 0);
circuit_free(TO_CIRCUIT(or_c2));
or_c2 = NULL; /* prevent free */
- tt_int_op(cdm.ncalls, ==, 2);
+ tt_int_op(cdm.ncalls, OP_EQ, 2);
memset(&cdm, 0, sizeof(cdm));
tt_assert(circuit_id_in_use_on_channel(200, ch2));
tt_assert(circuit_id_in_use_on_channel(100, ch1));
- tt_ptr_op(circuit_get_by_circid_channel(200, ch2), ==, NULL);
- tt_ptr_op(circuit_get_by_circid_channel(100, ch1), ==, NULL);
+ tt_ptr_op(circuit_get_by_circid_channel(200, ch2), OP_EQ, NULL);
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch1), OP_EQ, NULL);
/* Now say that the destroy is nonpending */
channel_note_destroy_not_pending(ch2, 200);
- tt_ptr_op(circuit_get_by_circid_channel(200, ch2), ==, NULL);
+ tt_ptr_op(circuit_get_by_circid_channel(200, ch2), OP_EQ, NULL);
channel_note_destroy_not_pending(ch1, 100);
- tt_ptr_op(circuit_get_by_circid_channel(100, ch1), ==, NULL);
+ tt_ptr_op(circuit_get_by_circid_channel(100, ch1), OP_EQ, NULL);
tt_assert(! circuit_id_in_use_on_channel(200, ch2));
tt_assert(! circuit_id_in_use_on_channel(100, ch1));
@@ -190,73 +190,73 @@ test_rend_token_maps(void *arg)
c4 = or_circuit_new(0, NULL);
/* Make sure we really filled up the tok* variables */
- tt_int_op(tok1[REND_TOKEN_LEN-1], ==, 'y');
- tt_int_op(tok2[REND_TOKEN_LEN-1], ==, ' ');
- tt_int_op(tok3[REND_TOKEN_LEN-1], ==, '.');
+ tt_int_op(tok1[REND_TOKEN_LEN-1], OP_EQ, 'y');
+ tt_int_op(tok2[REND_TOKEN_LEN-1], OP_EQ, ' ');
+ tt_int_op(tok3[REND_TOKEN_LEN-1], OP_EQ, '.');
/* No maps; nothing there. */
- tt_ptr_op(NULL, ==, circuit_get_rendezvous(tok1));
- tt_ptr_op(NULL, ==, circuit_get_intro_point(tok1));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(tok1));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(tok1));
circuit_set_rendezvous_cookie(c1, tok1);
circuit_set_intro_point_digest(c2, tok2);
- tt_ptr_op(NULL, ==, circuit_get_rendezvous(tok3));
- tt_ptr_op(NULL, ==, circuit_get_intro_point(tok3));
- tt_ptr_op(NULL, ==, circuit_get_rendezvous(tok2));
- tt_ptr_op(NULL, ==, circuit_get_intro_point(tok1));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(tok3));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(tok3));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(tok2));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(tok1));
/* Without purpose set, we don't get the circuits */
- tt_ptr_op(NULL, ==, circuit_get_rendezvous(tok1));
- tt_ptr_op(NULL, ==, circuit_get_intro_point(tok2));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(tok1));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(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, ==, circuit_get_rendezvous(tok1));
- tt_ptr_op(c2, ==, circuit_get_intro_point(tok2));
+ tt_ptr_op(c1, OP_EQ, circuit_get_rendezvous(tok1));
+ tt_ptr_op(c2, OP_EQ, circuit_get_intro_point(tok2));
/* Two items at the same place with the same token. */
c3->base_.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
circuit_set_rendezvous_cookie(c3, tok2);
- tt_ptr_op(c2, ==, circuit_get_intro_point(tok2));
- tt_ptr_op(c3, ==, circuit_get_rendezvous(tok2));
+ tt_ptr_op(c2, OP_EQ, circuit_get_intro_point(tok2));
+ tt_ptr_op(c3, OP_EQ, circuit_get_rendezvous(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, ==, circuit_get_rendezvous(tok1));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(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, ==, circuit_get_intro_point(tok2));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(tok2));
/* c3 -- are you still there? */
- tt_ptr_op(c3, ==, circuit_get_rendezvous(tok2));
+ tt_ptr_op(c3, OP_EQ, circuit_get_rendezvous(tok2));
/* Change its cookie. This never happens in Tor per se, but hey. */
c3->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
circuit_set_intro_point_digest(c3, tok3);
- tt_ptr_op(NULL, ==, circuit_get_rendezvous(tok2));
- tt_ptr_op(c3, ==, circuit_get_intro_point(tok3));
+ tt_ptr_op(NULL, OP_EQ, circuit_get_rendezvous(tok2));
+ tt_ptr_op(c3, OP_EQ, circuit_get_intro_point(tok3));
/* Now replace c3 with c4. */
c4->base_.purpose = CIRCUIT_PURPOSE_INTRO_POINT;
circuit_set_intro_point_digest(c4, tok3);
- tt_ptr_op(c4, ==, circuit_get_intro_point(tok3));
+ tt_ptr_op(c4, OP_EQ, circuit_get_intro_point(tok3));
- tt_ptr_op(c3->rendinfo, ==, NULL);
- tt_ptr_op(c4->rendinfo, !=, NULL);
- tt_mem_op(c4->rendinfo, ==, tok3, REND_TOKEN_LEN);
+ tt_ptr_op(c3->rendinfo, OP_EQ, NULL);
+ tt_ptr_op(c4->rendinfo, OP_NE, NULL);
+ tt_mem_op(c4->rendinfo, OP_EQ, tok3, REND_TOKEN_LEN);
/* Now clear c4's cookie. */
circuit_set_intro_point_digest(c4, NULL);
- tt_ptr_op(c4->rendinfo, ==, NULL);
- tt_ptr_op(NULL, ==, circuit_get_intro_point(tok3));
+ tt_ptr_op(c4->rendinfo, OP_EQ, NULL);
+ tt_ptr_op(NULL, OP_EQ, circuit_get_intro_point(tok3));
done:
if (c1)
@@ -283,32 +283,32 @@ test_pick_circid(void *arg)
chan2->wide_circ_ids = 1;
chan1->circ_id_type = CIRC_ID_TYPE_NEITHER;
- tt_int_op(0, ==, get_unique_circ_id_by_chan(chan1));
+ tt_int_op(0, OP_EQ, get_unique_circ_id_by_chan(chan1));
/* Basic tests, with no collisions */
chan1->circ_id_type = CIRC_ID_TYPE_LOWER;
for (i = 0; i < 50; ++i) {
circid = get_unique_circ_id_by_chan(chan1);
- tt_uint_op(0, <, circid);
- tt_uint_op(circid, <, (1<<15));
+ tt_uint_op(0, OP_LT, circid);
+ tt_uint_op(circid, OP_LT, (1<<15));
}
chan1->circ_id_type = CIRC_ID_TYPE_HIGHER;
for (i = 0; i < 50; ++i) {
circid = get_unique_circ_id_by_chan(chan1);
- tt_uint_op((1<<15), <, circid);
- tt_uint_op(circid, <, (1<<16));
+ tt_uint_op((1<<15), OP_LT, circid);
+ tt_uint_op(circid, OP_LT, (1<<16));
}
chan2->circ_id_type = CIRC_ID_TYPE_LOWER;
for (i = 0; i < 50; ++i) {
circid = get_unique_circ_id_by_chan(chan2);
- tt_uint_op(0, <, circid);
- tt_uint_op(circid, <, (1u<<31));
+ tt_uint_op(0, OP_LT, circid);
+ tt_uint_op(circid, OP_LT, (1u<<31));
}
chan2->circ_id_type = CIRC_ID_TYPE_HIGHER;
for (i = 0; i < 50; ++i) {
circid = get_unique_circ_id_by_chan(chan2);
- tt_uint_op((1u<<31), <, circid);
+ tt_uint_op((1u<<31), OP_LT, circid);
}
/* Now make sure that we can behave well when we are full up on circuits */
@@ -319,20 +319,20 @@ test_pick_circid(void *arg)
for (i = 0; i < (1<<15); ++i) {
circid = get_unique_circ_id_by_chan(chan1);
if (circid == 0) {
- tt_int_op(i, >, (1<<14));
+ tt_int_op(i, OP_GT, (1<<14));
break;
}
- tt_uint_op(circid, <, (1<<15));
+ tt_uint_op(circid, OP_LT, (1<<15));
tt_assert(! bitarray_is_set(ba, circid));
bitarray_set(ba, circid);
channel_mark_circid_unusable(chan1, circid);
}
- tt_int_op(i, <, (1<<15));
+ tt_int_op(i, OP_LT, (1<<15));
/* Make sure that being full on chan1 does not interfere with chan2 */
for (i = 0; i < 100; ++i) {
circid = get_unique_circ_id_by_chan(chan2);
- tt_uint_op(circid, >, 0);
- tt_uint_op(circid, <, (1<<15));
+ tt_uint_op(circid, OP_GT, 0);
+ tt_uint_op(circid, OP_LT, (1<<15));
channel_mark_circid_unusable(chan2, circid);
}
diff --git a/src/test/test_circuitmux.c b/src/test/test_circuitmux.c
index 446fc88b3c..20c106ab9d 100644
--- a/src/test/test_circuitmux.c
+++ b/src/test/test_circuitmux.c
@@ -8,6 +8,7 @@
#include "channel.h"
#include "circuitmux.h"
#include "relay.h"
+#include "scheduler.h"
#include "test.h"
/* XXXX duplicated function from test_circuitlist.c */
@@ -35,6 +36,12 @@ test_cmux_destroy_cell_queue(void *arg)
circuit_t *circ = NULL;
cell_queue_t *cq = NULL;
packed_cell_t *pc = NULL;
+ tor_libevent_cfg cfg;
+
+ memset(&cfg, 0, sizeof(cfg));
+
+ tor_libevent_initialize(&cfg);
+ scheduler_init();
#ifdef ENABLE_MEMPOOLS
init_cell_pool();
@@ -55,21 +62,21 @@ test_cmux_destroy_cell_queue(void *arg)
circuitmux_append_destroy_cell(ch, cmux, 190, 6);
circuitmux_append_destroy_cell(ch, cmux, 30, 1);
- tt_int_op(circuitmux_num_cells(cmux), ==, 3);
+ tt_int_op(circuitmux_num_cells(cmux), OP_EQ, 3);
circ = circuitmux_get_first_active_circuit(cmux, &cq);
tt_assert(!circ);
tt_assert(cq);
- tt_int_op(cq->n, ==, 3);
+ tt_int_op(cq->n, OP_EQ, 3);
pc = cell_queue_pop(cq);
tt_assert(pc);
- tt_mem_op(pc->body, ==, "\x00\x00\x00\x64\x04\x0a\x00\x00\x00", 9);
+ tt_mem_op(pc->body, OP_EQ, "\x00\x00\x00\x64\x04\x0a\x00\x00\x00", 9);
packed_cell_free(pc);
pc = NULL;
- tt_int_op(circuitmux_num_cells(cmux), ==, 2);
+ tt_int_op(circuitmux_num_cells(cmux), OP_EQ, 2);
done:
circuitmux_free(cmux);
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 823d067abf..dcb4e92c56 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -14,6 +14,8 @@
#include "test.h"
#include "util.h"
#include "address.h"
+#include "entrynodes.h"
+#include "transports.h"
static void
test_config_addressmap(void *arg)
@@ -63,22 +65,22 @@ test_config_addressmap(void *arg)
/* MapAddress .google.com .torserver.exit */
strlcpy(address, "reader.google.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "reader.torserver.exit");
+ tt_str_op(address,OP_EQ, "reader.torserver.exit");
/* MapAddress *.yahoo.com *.google.com.torserver.exit */
strlcpy(address, "reader.yahoo.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "reader.google.com.torserver.exit");
+ tt_str_op(address,OP_EQ, "reader.google.com.torserver.exit");
/*MapAddress *.cnn.com www.cnn.com */
strlcpy(address, "cnn.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "www.cnn.com");
+ tt_str_op(address,OP_EQ, "www.cnn.com");
/* MapAddress .cn.com www.cnn.com */
strlcpy(address, "www.cn.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "www.cnn.com");
+ tt_str_op(address,OP_EQ, "www.cnn.com");
/* MapAddress ex.com www.cnn.com - no match */
strlcpy(address, "www.ex.com", sizeof(address));
@@ -91,19 +93,19 @@ test_config_addressmap(void *arg)
/* Where mapping for FQDN match on FQDN */
strlcpy(address, "www.google.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "3.3.3.3");
+ tt_str_op(address,OP_EQ, "3.3.3.3");
strlcpy(address, "www.torproject.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "1.1.1.1");
+ tt_str_op(address,OP_EQ, "1.1.1.1");
strlcpy(address, "other.torproject.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "this.torproject.org.otherserver.exit");
+ tt_str_op(address,OP_EQ, "this.torproject.org.otherserver.exit");
strlcpy(address, "test.torproject.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "2.2.2.2");
+ tt_str_op(address,OP_EQ, "2.2.2.2");
/* Test a chain of address mappings and the order in which they were added:
"MapAddress www.example.org 4.4.4.4"
@@ -112,12 +114,12 @@ test_config_addressmap(void *arg)
*/
strlcpy(address, "www.example.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "5.5.5.5");
+ tt_str_op(address,OP_EQ, "5.5.5.5");
/* Test infinite address mapping results in no change */
strlcpy(address, "www.infiniteloop.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "www.infiniteloop.org");
+ tt_str_op(address,OP_EQ, "www.infiniteloop.org");
/* Test we don't find false positives */
strlcpy(address, "www.example.com", sizeof(address));
@@ -135,23 +137,23 @@ test_config_addressmap(void *arg)
strlcpy(address, "www.abc.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "www.abc.torserver.exit");
+ tt_str_op(address,OP_EQ, "www.abc.torserver.exit");
strlcpy(address, "www.def.com", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "www.def.torserver.exit");
+ tt_str_op(address,OP_EQ, "www.def.torserver.exit");
strlcpy(address, "www.torproject.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "1.1.1.1");
+ tt_str_op(address,OP_EQ, "1.1.1.1");
strlcpy(address, "test.torproject.org", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "1.1.1.1");
+ tt_str_op(address,OP_EQ, "1.1.1.1");
strlcpy(address, "torproject.net", sizeof(address));
tt_assert(addressmap_rewrite(address, sizeof(address), &expires, NULL));
- tt_str_op(address,==, "2.2.2.2");
+ tt_str_op(address,OP_EQ, "2.2.2.2");
/* We don't support '*' as a mapping directive */
config_free_lines(get_options_mutable()->AddressMap);
@@ -211,9 +213,9 @@ test_config_check_or_create_data_subdir(void *arg)
subpath = get_datadir_fname(subdir);
#if defined (_WIN32)
- tt_int_op(mkdir(options->DataDirectory), ==, 0);
+ tt_int_op(mkdir(options->DataDirectory), OP_EQ, 0);
#else
- tt_int_op(mkdir(options->DataDirectory, 0700), ==, 0);
+ tt_int_op(mkdir(options->DataDirectory, 0700), OP_EQ, 0);
#endif
r = stat(subpath, &st);
@@ -285,9 +287,9 @@ test_config_write_to_data_subdir(void *arg)
filepath = get_datadir_fname2(subdir, fname);
#if defined (_WIN32)
- tt_int_op(mkdir(options->DataDirectory), ==, 0);
+ tt_int_op(mkdir(options->DataDirectory), OP_EQ, 0);
#else
- tt_int_op(mkdir(options->DataDirectory, 0700), ==, 0);
+ tt_int_op(mkdir(options->DataDirectory, 0700), OP_EQ, 0);
#endif
// Write attempt shoudl fail, if subdirectory doesn't exist.
@@ -298,13 +300,13 @@ test_config_write_to_data_subdir(void *arg)
// equal to the original string.
tt_assert(!write_to_data_subdir(subdir, fname, str, NULL));
cp = read_file_to_str(filepath, 0, NULL);
- tt_str_op(cp,==, str);
+ tt_str_op(cp,OP_EQ, str);
tor_free(cp);
// A second write operation should overwrite the old content.
tt_assert(!write_to_data_subdir(subdir, fname, str, NULL));
cp = read_file_to_str(filepath, 0, NULL);
- tt_str_op(cp,==, str);
+ tt_str_op(cp,OP_EQ, str);
tor_free(cp);
done:
@@ -329,7 +331,7 @@ good_bridge_line_test(const char *string, const char *test_addrport,
/* test addrport */
tmp = tor_strdup(fmt_addrport(&bridge_line->addr, bridge_line->port));
- tt_str_op(test_addrport,==, tmp);
+ tt_str_op(test_addrport,OP_EQ, tmp);
tor_free(tmp);
/* If we were asked to validate a digest, but we did not get a
@@ -347,7 +349,7 @@ good_bridge_line_test(const char *string, const char *test_addrport,
if (test_digest) {
tmp = tor_strdup(hex_str(bridge_line->digest, DIGEST_LEN));
tor_strlower(tmp);
- tt_str_op(test_digest,==, tmp);
+ tt_str_op(test_digest,OP_EQ, tmp);
tor_free(tmp);
}
@@ -358,7 +360,7 @@ good_bridge_line_test(const char *string, const char *test_addrport,
if (!test_transport && bridge_line->transport_name)
tt_assert(0);
if (test_transport)
- tt_str_op(test_transport,==, bridge_line->transport_name);
+ tt_str_op(test_transport,OP_EQ, bridge_line->transport_name);
/* Validate the SOCKS argument smartlist. */
if (test_socks_args && !bridge_line->socks_args)
@@ -552,6 +554,267 @@ test_config_parse_transport_options_line(void *arg)
}
}
+/* Mocks needed for the transport plugin line test */
+
+static void pt_kickstart_proxy_mock(const smartlist_t *transport_list,
+ char **proxy_argv, int is_server);
+static int transport_add_from_config_mock(const tor_addr_t *addr,
+ uint16_t port, const char *name,
+ int socks_ver);
+static int transport_is_needed_mock(const char *transport_name);
+
+static int pt_kickstart_proxy_mock_call_count = 0;
+static int transport_add_from_config_mock_call_count = 0;
+static int transport_is_needed_mock_call_count = 0;
+static int transport_is_needed_mock_return = 0;
+
+static void
+pt_kickstart_proxy_mock(const smartlist_t *transport_list,
+ char **proxy_argv, int is_server)
+{
+ (void) transport_list;
+ (void) proxy_argv;
+ (void) is_server;
+ /* XXXX check that args are as expected. */
+
+ ++pt_kickstart_proxy_mock_call_count;
+}
+
+static int
+transport_add_from_config_mock(const tor_addr_t *addr,
+ uint16_t port, const char *name,
+ int socks_ver)
+{
+ (void) addr;
+ (void) port;
+ (void) name;
+ (void) socks_ver;
+ /* XXXX check that args are as expected. */
+
+ ++transport_add_from_config_mock_call_count;
+
+ return 0;
+}
+
+static int
+transport_is_needed_mock(const char *transport_name)
+{
+ (void) transport_name;
+ /* XXXX check that arg is as expected. */
+
+ ++transport_is_needed_mock_call_count;
+
+ return transport_is_needed_mock_return;
+}
+
+/**
+ * Test parsing for the ClientTransportPlugin and ServerTransportPlugin config
+ * options.
+ */
+
+static void
+test_config_parse_transport_plugin_line(void *arg)
+{
+ (void)arg;
+
+ or_options_t *options = get_options_mutable();
+ int r, tmp;
+ int old_pt_kickstart_proxy_mock_call_count;
+ int old_transport_add_from_config_mock_call_count;
+ int old_transport_is_needed_mock_call_count;
+
+ /* Bad transport lines - too short */
+ r = parse_transport_line(options, "bad", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options, "bad", 1, 1);
+ tt_assert(r < 0);
+ r = parse_transport_line(options, "bad bad", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options, "bad bad", 1, 1);
+ tt_assert(r < 0);
+
+ /* Test transport list parsing */
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 1, 0);
+ tt_assert(r == 0);
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 1, 1);
+ tt_assert(r == 0);
+ r = parse_transport_line(options,
+ "transport_1,transport_2 exec /usr/bin/fake-transport", 1, 0);
+ tt_assert(r == 0);
+ r = parse_transport_line(options,
+ "transport_1,transport_2 exec /usr/bin/fake-transport", 1, 1);
+ tt_assert(r == 0);
+ /* Bad transport identifiers */
+ r = parse_transport_line(options,
+ "transport_* exec /usr/bin/fake-transport", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_* exec /usr/bin/fake-transport", 1, 1);
+ tt_assert(r < 0);
+
+ /* Check SOCKS cases for client transport */
+ r = parse_transport_line(options,
+ "transport_1 socks4 1.2.3.4:567", 1, 0);
+ tt_assert(r == 0);
+ r = parse_transport_line(options,
+ "transport_1 socks5 1.2.3.4:567", 1, 0);
+ tt_assert(r == 0);
+ /* Proxy case for server transport */
+ r = parse_transport_line(options,
+ "transport_1 proxy 1.2.3.4:567", 1, 1);
+ tt_assert(r == 0);
+ /* Multiple-transport error exit */
+ r = parse_transport_line(options,
+ "transport_1,transport_2 socks5 1.2.3.4:567", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_1,transport_2 proxy 1.2.3.4:567", 1, 1);
+ /* No port error exit */
+ r = parse_transport_line(options,
+ "transport_1 socks5 1.2.3.4", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_1 proxy 1.2.3.4", 1, 1);
+ tt_assert(r < 0);
+ /* Unparsable address error exit */
+ r = parse_transport_line(options,
+ "transport_1 socks5 1.2.3:6x7", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_1 proxy 1.2.3:6x7", 1, 1);
+ tt_assert(r < 0);
+
+ /* "Strange {Client|Server}TransportPlugin field" error exit */
+ r = parse_transport_line(options,
+ "transport_1 foo bar", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_1 foo bar", 1, 1);
+ tt_assert(r < 0);
+
+ /* No sandbox mode error exit */
+ tmp = options->Sandbox;
+ options->Sandbox = 1;
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 1, 0);
+ tt_assert(r < 0);
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 1, 1);
+ tt_assert(r < 0);
+ options->Sandbox = tmp;
+
+ /*
+ * These final test cases cover code paths that only activate without
+ * validate_only, so they need mocks in place.
+ */
+ MOCK(pt_kickstart_proxy, pt_kickstart_proxy_mock);
+ old_pt_kickstart_proxy_mock_call_count =
+ pt_kickstart_proxy_mock_call_count;
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 0, 1);
+ tt_assert(r == 0);
+ tt_assert(pt_kickstart_proxy_mock_call_count ==
+ old_pt_kickstart_proxy_mock_call_count + 1);
+ UNMOCK(pt_kickstart_proxy);
+
+ /* This one hits a log line in the !validate_only case only */
+ r = parse_transport_line(options,
+ "transport_1 proxy 1.2.3.4:567", 0, 1);
+ tt_assert(r == 0);
+
+ /* Check mocked client transport cases */
+ MOCK(pt_kickstart_proxy, pt_kickstart_proxy_mock);
+ MOCK(transport_add_from_config, transport_add_from_config_mock);
+ MOCK(transport_is_needed, transport_is_needed_mock);
+
+ /* Unnecessary transport case */
+ transport_is_needed_mock_return = 0;
+ old_pt_kickstart_proxy_mock_call_count =
+ pt_kickstart_proxy_mock_call_count;
+ old_transport_add_from_config_mock_call_count =
+ transport_add_from_config_mock_call_count;
+ old_transport_is_needed_mock_call_count =
+ transport_is_needed_mock_call_count;
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 0, 0);
+ /* Should have succeeded */
+ tt_assert(r == 0);
+ /* transport_is_needed() should have been called */
+ tt_assert(transport_is_needed_mock_call_count ==
+ old_transport_is_needed_mock_call_count + 1);
+ /*
+ * pt_kickstart_proxy() and transport_add_from_config() should
+ * not have been called.
+ */
+ tt_assert(pt_kickstart_proxy_mock_call_count ==
+ old_pt_kickstart_proxy_mock_call_count);
+ tt_assert(transport_add_from_config_mock_call_count ==
+ old_transport_add_from_config_mock_call_count);
+
+ /* Necessary transport case */
+ transport_is_needed_mock_return = 1;
+ old_pt_kickstart_proxy_mock_call_count =
+ pt_kickstart_proxy_mock_call_count;
+ old_transport_add_from_config_mock_call_count =
+ transport_add_from_config_mock_call_count;
+ old_transport_is_needed_mock_call_count =
+ transport_is_needed_mock_call_count;
+ r = parse_transport_line(options,
+ "transport_1 exec /usr/bin/fake-transport", 0, 0);
+ /* Should have succeeded */
+ tt_assert(r == 0);
+ /*
+ * transport_is_needed() and pt_kickstart_proxy() should have been
+ * called.
+ */
+ tt_assert(pt_kickstart_proxy_mock_call_count ==
+ old_pt_kickstart_proxy_mock_call_count + 1);
+ tt_assert(transport_is_needed_mock_call_count ==
+ old_transport_is_needed_mock_call_count + 1);
+ /* transport_add_from_config() should not have been called. */
+ tt_assert(transport_add_from_config_mock_call_count ==
+ old_transport_add_from_config_mock_call_count);
+
+ /* proxy case */
+ transport_is_needed_mock_return = 1;
+ old_pt_kickstart_proxy_mock_call_count =
+ pt_kickstart_proxy_mock_call_count;
+ old_transport_add_from_config_mock_call_count =
+ transport_add_from_config_mock_call_count;
+ old_transport_is_needed_mock_call_count =
+ transport_is_needed_mock_call_count;
+ r = parse_transport_line(options,
+ "transport_1 socks5 1.2.3.4:567", 0, 0);
+ /* Should have succeeded */
+ tt_assert(r == 0);
+ /*
+ * transport_is_needed() and transport_add_from_config() should have
+ * been called.
+ */
+ tt_assert(transport_add_from_config_mock_call_count ==
+ old_transport_add_from_config_mock_call_count + 1);
+ tt_assert(transport_is_needed_mock_call_count ==
+ old_transport_is_needed_mock_call_count + 1);
+ /* pt_kickstart_proxy() should not have been called. */
+ tt_assert(pt_kickstart_proxy_mock_call_count ==
+ old_pt_kickstart_proxy_mock_call_count);
+
+ /* Done with mocked client transport cases */
+ UNMOCK(transport_is_needed);
+ UNMOCK(transport_add_from_config);
+ UNMOCK(pt_kickstart_proxy);
+
+ done:
+ /* Make sure we undo all mocks */
+ UNMOCK(pt_kickstart_proxy);
+ UNMOCK(transport_add_from_config);
+ UNMOCK(transport_is_needed);
+
+ return;
+}
+
// Tests if an options with MyFamily fingerprints missing '$' normalises
// them correctly and also ensure it also works with multiple fingerprints
static void
@@ -576,7 +839,8 @@ test_config_fix_my_family(void *arg)
TT_FAIL(("options_validate failed: %s", err));
}
- tt_str_op(options->MyFamily,==, "$1111111111111111111111111111111111111111, "
+ tt_str_op(options->MyFamily,OP_EQ,
+ "$1111111111111111111111111111111111111111, "
"$1111111111111111111111111111111111111112, "
"$1111111111111111111111111111111111111113");
@@ -596,6 +860,7 @@ struct testcase_t config_tests[] = {
CONFIG_TEST(addressmap, 0),
CONFIG_TEST(parse_bridge_line, 0),
CONFIG_TEST(parse_transport_options_line, 0),
+ CONFIG_TEST(parse_transport_plugin_line, TT_FORK),
CONFIG_TEST(check_or_create_data_subdir, TT_FORK),
CONFIG_TEST(write_to_data_subdir, TT_FORK),
CONFIG_TEST(fix_my_family, 0),
diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index d0972dd126..1eb8c15fd5 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -62,18 +62,18 @@ test_container_smartlist_basic(void *arg)
smartlist_insert(sl, 1, v22);
smartlist_insert(sl, 0, v0);
smartlist_insert(sl, 5, v555);
- tt_ptr_op(v0,==, smartlist_get(sl,0));
- tt_ptr_op(v1,==, smartlist_get(sl,1));
- tt_ptr_op(v22,==, smartlist_get(sl,2));
- tt_ptr_op(v3,==, smartlist_get(sl,3));
- tt_ptr_op(v4,==, smartlist_get(sl,4));
- tt_ptr_op(v555,==, smartlist_get(sl,5));
+ tt_ptr_op(v0,OP_EQ, smartlist_get(sl,0));
+ tt_ptr_op(v1,OP_EQ, smartlist_get(sl,1));
+ tt_ptr_op(v22,OP_EQ, smartlist_get(sl,2));
+ tt_ptr_op(v3,OP_EQ, smartlist_get(sl,3));
+ tt_ptr_op(v4,OP_EQ, smartlist_get(sl,4));
+ tt_ptr_op(v555,OP_EQ, smartlist_get(sl,5));
/* Try deleting in the middle. */
smartlist_del(sl, 1);
- tt_ptr_op(v555,==, smartlist_get(sl, 1));
+ tt_ptr_op(v555,OP_EQ, smartlist_get(sl, 1));
/* Try deleting at the end. */
smartlist_del(sl, 4);
- tt_int_op(4,==, smartlist_len(sl));
+ tt_int_op(4,OP_EQ, smartlist_len(sl));
/* test isin. */
tt_assert(smartlist_contains(sl, v3));
@@ -101,119 +101,119 @@ test_container_smartlist_strings(void *arg)
/* Test split and join */
(void)arg;
- tt_int_op(0,==, smartlist_len(sl));
+ tt_int_op(0,OP_EQ, smartlist_len(sl));
smartlist_split_string(sl, "abc", ":", 0, 0);
- tt_int_op(1,==, smartlist_len(sl));
- tt_str_op("abc",==, smartlist_get(sl, 0));
+ tt_int_op(1,OP_EQ, smartlist_len(sl));
+ tt_str_op("abc",OP_EQ, smartlist_get(sl, 0));
smartlist_split_string(sl, "a::bc::", "::", 0, 0);
- tt_int_op(4,==, smartlist_len(sl));
- tt_str_op("a",==, smartlist_get(sl, 1));
- tt_str_op("bc",==, smartlist_get(sl, 2));
- tt_str_op("",==, smartlist_get(sl, 3));
+ tt_int_op(4,OP_EQ, smartlist_len(sl));
+ tt_str_op("a",OP_EQ, smartlist_get(sl, 1));
+ tt_str_op("bc",OP_EQ, smartlist_get(sl, 2));
+ tt_str_op("",OP_EQ, smartlist_get(sl, 3));
cp_alloc = smartlist_join_strings(sl, "", 0, NULL);
- tt_str_op(cp_alloc,==, "abcabc");
+ tt_str_op(cp_alloc,OP_EQ, "abcabc");
tor_free(cp_alloc);
cp_alloc = smartlist_join_strings(sl, "!", 0, NULL);
- tt_str_op(cp_alloc,==, "abc!a!bc!");
+ tt_str_op(cp_alloc,OP_EQ, "abc!a!bc!");
tor_free(cp_alloc);
cp_alloc = smartlist_join_strings(sl, "XY", 0, NULL);
- tt_str_op(cp_alloc,==, "abcXYaXYbcXY");
+ tt_str_op(cp_alloc,OP_EQ, "abcXYaXYbcXY");
tor_free(cp_alloc);
cp_alloc = smartlist_join_strings(sl, "XY", 1, NULL);
- tt_str_op(cp_alloc,==, "abcXYaXYbcXYXY");
+ tt_str_op(cp_alloc,OP_EQ, "abcXYaXYbcXYXY");
tor_free(cp_alloc);
cp_alloc = smartlist_join_strings(sl, "", 1, NULL);
- tt_str_op(cp_alloc,==, "abcabc");
+ tt_str_op(cp_alloc,OP_EQ, "abcabc");
tor_free(cp_alloc);
smartlist_split_string(sl, "/def/ /ghijk", "/", 0, 0);
- tt_int_op(8,==, smartlist_len(sl));
- tt_str_op("",==, smartlist_get(sl, 4));
- tt_str_op("def",==, smartlist_get(sl, 5));
- tt_str_op(" ",==, smartlist_get(sl, 6));
- tt_str_op("ghijk",==, smartlist_get(sl, 7));
+ tt_int_op(8,OP_EQ, smartlist_len(sl));
+ tt_str_op("",OP_EQ, smartlist_get(sl, 4));
+ tt_str_op("def",OP_EQ, smartlist_get(sl, 5));
+ tt_str_op(" ",OP_EQ, smartlist_get(sl, 6));
+ tt_str_op("ghijk",OP_EQ, smartlist_get(sl, 7));
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
smartlist_split_string(sl, "a,bbd,cdef", ",", SPLIT_SKIP_SPACE, 0);
- tt_int_op(3,==, smartlist_len(sl));
- tt_str_op("a",==, smartlist_get(sl,0));
- tt_str_op("bbd",==, smartlist_get(sl,1));
- tt_str_op("cdef",==, smartlist_get(sl,2));
+ tt_int_op(3,OP_EQ, smartlist_len(sl));
+ tt_str_op("a",OP_EQ, smartlist_get(sl,0));
+ tt_str_op("bbd",OP_EQ, smartlist_get(sl,1));
+ tt_str_op("cdef",OP_EQ, smartlist_get(sl,2));
smartlist_split_string(sl, " z <> zhasd <> <> bnud<> ", "<>",
SPLIT_SKIP_SPACE, 0);
- tt_int_op(8,==, smartlist_len(sl));
- tt_str_op("z",==, smartlist_get(sl,3));
- tt_str_op("zhasd",==, smartlist_get(sl,4));
- tt_str_op("",==, smartlist_get(sl,5));
- tt_str_op("bnud",==, smartlist_get(sl,6));
- tt_str_op("",==, smartlist_get(sl,7));
+ tt_int_op(8,OP_EQ, smartlist_len(sl));
+ tt_str_op("z",OP_EQ, smartlist_get(sl,3));
+ tt_str_op("zhasd",OP_EQ, smartlist_get(sl,4));
+ tt_str_op("",OP_EQ, smartlist_get(sl,5));
+ tt_str_op("bnud",OP_EQ, smartlist_get(sl,6));
+ tt_str_op("",OP_EQ, smartlist_get(sl,7));
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
smartlist_split_string(sl, " ab\tc \td ef ", NULL,
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- tt_int_op(4,==, smartlist_len(sl));
- tt_str_op("ab",==, smartlist_get(sl,0));
- tt_str_op("c",==, smartlist_get(sl,1));
- tt_str_op("d",==, smartlist_get(sl,2));
- tt_str_op("ef",==, smartlist_get(sl,3));
+ tt_int_op(4,OP_EQ, smartlist_len(sl));
+ tt_str_op("ab",OP_EQ, smartlist_get(sl,0));
+ tt_str_op("c",OP_EQ, smartlist_get(sl,1));
+ tt_str_op("d",OP_EQ, smartlist_get(sl,2));
+ tt_str_op("ef",OP_EQ, smartlist_get(sl,3));
smartlist_split_string(sl, "ghi\tj", NULL,
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- tt_int_op(6,==, smartlist_len(sl));
- tt_str_op("ghi",==, smartlist_get(sl,4));
- tt_str_op("j",==, smartlist_get(sl,5));
+ tt_int_op(6,OP_EQ, smartlist_len(sl));
+ tt_str_op("ghi",OP_EQ, smartlist_get(sl,4));
+ tt_str_op("j",OP_EQ, smartlist_get(sl,5));
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
cp_alloc = smartlist_join_strings(sl, "XY", 0, NULL);
- tt_str_op(cp_alloc,==, "");
+ tt_str_op(cp_alloc,OP_EQ, "");
tor_free(cp_alloc);
cp_alloc = smartlist_join_strings(sl, "XY", 1, NULL);
- tt_str_op(cp_alloc,==, "XY");
+ tt_str_op(cp_alloc,OP_EQ, "XY");
tor_free(cp_alloc);
smartlist_split_string(sl, " z <> zhasd <> <> bnud<> ", "<>",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- tt_int_op(3,==, smartlist_len(sl));
- tt_str_op("z",==, smartlist_get(sl, 0));
- tt_str_op("zhasd",==, smartlist_get(sl, 1));
- tt_str_op("bnud",==, smartlist_get(sl, 2));
+ tt_int_op(3,OP_EQ, smartlist_len(sl));
+ tt_str_op("z",OP_EQ, smartlist_get(sl, 0));
+ tt_str_op("zhasd",OP_EQ, smartlist_get(sl, 1));
+ tt_str_op("bnud",OP_EQ, smartlist_get(sl, 2));
smartlist_split_string(sl, " z <> zhasd <> <> bnud<> ", "<>",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 2);
- tt_int_op(5,==, smartlist_len(sl));
- tt_str_op("z",==, smartlist_get(sl, 3));
- tt_str_op("zhasd <> <> bnud<>",==, smartlist_get(sl, 4));
+ tt_int_op(5,OP_EQ, smartlist_len(sl));
+ tt_str_op("z",OP_EQ, smartlist_get(sl, 3));
+ tt_str_op("zhasd <> <> bnud<>",OP_EQ, smartlist_get(sl, 4));
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
smartlist_split_string(sl, "abcd\n", "\n",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- tt_int_op(1,==, smartlist_len(sl));
- tt_str_op("abcd",==, smartlist_get(sl, 0));
+ tt_int_op(1,OP_EQ, smartlist_len(sl));
+ tt_str_op("abcd",OP_EQ, smartlist_get(sl, 0));
smartlist_split_string(sl, "efgh", "\n",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
- tt_int_op(2,==, smartlist_len(sl));
- tt_str_op("efgh",==, smartlist_get(sl, 1));
+ tt_int_op(2,OP_EQ, smartlist_len(sl));
+ tt_str_op("efgh",OP_EQ, smartlist_get(sl, 1));
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Test swapping, shuffling, and sorting. */
smartlist_split_string(sl, "the,onion,router,by,arma,and,nickm", ",", 0, 0);
- tt_int_op(7,==, smartlist_len(sl));
+ tt_int_op(7,OP_EQ, smartlist_len(sl));
smartlist_sort(sl, compare_strs_);
cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
- tt_str_op(cp_alloc,==, "and,arma,by,nickm,onion,router,the");
+ tt_str_op(cp_alloc,OP_EQ, "and,arma,by,nickm,onion,router,the");
tor_free(cp_alloc);
smartlist_swap(sl, 1, 5);
cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
- tt_str_op(cp_alloc,==, "and,router,by,nickm,onion,arma,the");
+ tt_str_op(cp_alloc,OP_EQ, "and,router,by,nickm,onion,arma,the");
tor_free(cp_alloc);
smartlist_shuffle(sl);
- tt_int_op(7,==, smartlist_len(sl));
+ tt_int_op(7,OP_EQ, smartlist_len(sl));
tt_assert(smartlist_contains_string(sl, "and"));
tt_assert(smartlist_contains_string(sl, "router"));
tt_assert(smartlist_contains_string(sl, "by"));
@@ -224,69 +224,72 @@ test_container_smartlist_strings(void *arg)
/* Test bsearch. */
smartlist_sort(sl, compare_strs_);
- tt_str_op("nickm",==, smartlist_bsearch(sl, "zNicKM",
+ tt_str_op("nickm",OP_EQ, smartlist_bsearch(sl, "zNicKM",
cmp_without_first_));
- tt_str_op("and",==,
+ tt_str_op("and",OP_EQ,
smartlist_bsearch(sl, " AND", cmp_without_first_));
- tt_ptr_op(NULL,==, smartlist_bsearch(sl, " ANz", cmp_without_first_));
+ tt_ptr_op(NULL,OP_EQ, smartlist_bsearch(sl, " ANz", cmp_without_first_));
/* Test bsearch_idx */
{
int f;
smartlist_t *tmp = NULL;
- tt_int_op(0,==,smartlist_bsearch_idx(sl," aaa",cmp_without_first_,&f));
- tt_int_op(f,==, 0);
- tt_int_op(0,==, smartlist_bsearch_idx(sl," and",cmp_without_first_,&f));
- tt_int_op(f,==, 1);
- tt_int_op(1,==, smartlist_bsearch_idx(sl," arm",cmp_without_first_,&f));
- tt_int_op(f,==, 0);
- tt_int_op(1,==, smartlist_bsearch_idx(sl," arma",cmp_without_first_,&f));
- tt_int_op(f,==, 1);
- tt_int_op(2,==, smartlist_bsearch_idx(sl," armb",cmp_without_first_,&f));
- tt_int_op(f,==, 0);
- tt_int_op(7,==, smartlist_bsearch_idx(sl," zzzz",cmp_without_first_,&f));
- tt_int_op(f,==, 0);
+ tt_int_op(0,OP_EQ,smartlist_bsearch_idx(sl," aaa",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 0);
+ tt_int_op(0,OP_EQ, smartlist_bsearch_idx(sl," and",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 1);
+ tt_int_op(1,OP_EQ, smartlist_bsearch_idx(sl," arm",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 0);
+ tt_int_op(1,OP_EQ,
+ smartlist_bsearch_idx(sl," arma",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 1);
+ tt_int_op(2,OP_EQ,
+ smartlist_bsearch_idx(sl," armb",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 0);
+ tt_int_op(7,OP_EQ,
+ smartlist_bsearch_idx(sl," zzzz",cmp_without_first_,&f));
+ tt_int_op(f,OP_EQ, 0);
/* Test trivial cases for list of length 0 or 1 */
tmp = smartlist_new();
- tt_int_op(0,==, smartlist_bsearch_idx(tmp, "foo",
+ tt_int_op(0,OP_EQ, smartlist_bsearch_idx(tmp, "foo",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 0);
+ tt_int_op(f,OP_EQ, 0);
smartlist_insert(tmp, 0, (void *)("bar"));
- tt_int_op(1,==, smartlist_bsearch_idx(tmp, "foo",
+ tt_int_op(1,OP_EQ, smartlist_bsearch_idx(tmp, "foo",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 0);
- tt_int_op(0,==, smartlist_bsearch_idx(tmp, "aaa",
+ tt_int_op(f,OP_EQ, 0);
+ tt_int_op(0,OP_EQ, smartlist_bsearch_idx(tmp, "aaa",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 0);
- tt_int_op(0,==, smartlist_bsearch_idx(tmp, "bar",
+ tt_int_op(f,OP_EQ, 0);
+ tt_int_op(0,OP_EQ, smartlist_bsearch_idx(tmp, "bar",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 1);
+ tt_int_op(f,OP_EQ, 1);
/* ... and one for length 2 */
smartlist_insert(tmp, 1, (void *)("foo"));
- tt_int_op(1,==, smartlist_bsearch_idx(tmp, "foo",
+ tt_int_op(1,OP_EQ, smartlist_bsearch_idx(tmp, "foo",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 1);
- tt_int_op(2,==, smartlist_bsearch_idx(tmp, "goo",
+ tt_int_op(f,OP_EQ, 1);
+ tt_int_op(2,OP_EQ, smartlist_bsearch_idx(tmp, "goo",
compare_strs_for_bsearch_, &f));
- tt_int_op(f,==, 0);
+ tt_int_op(f,OP_EQ, 0);
smartlist_free(tmp);
}
/* Test reverse() and pop_last() */
smartlist_reverse(sl);
cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
- tt_str_op(cp_alloc,==, "the,router,onion,nickm,by,arma,and");
+ tt_str_op(cp_alloc,OP_EQ, "the,router,onion,nickm,by,arma,and");
tor_free(cp_alloc);
cp_alloc = smartlist_pop_last(sl);
- tt_str_op(cp_alloc,==, "and");
+ tt_str_op(cp_alloc,OP_EQ, "and");
tor_free(cp_alloc);
- tt_int_op(smartlist_len(sl),==, 6);
+ tt_int_op(smartlist_len(sl),OP_EQ, 6);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
cp_alloc = smartlist_pop_last(sl);
- tt_ptr_op(cp_alloc,==, NULL);
+ tt_ptr_op(cp_alloc,OP_EQ, NULL);
/* Test uniq() */
smartlist_split_string(sl,
@@ -295,7 +298,7 @@ test_container_smartlist_strings(void *arg)
smartlist_sort(sl, compare_strs_);
smartlist_uniq(sl, compare_strs_, tor_free_);
cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
- tt_str_op(cp_alloc,==, "50,a,canal,man,noon,panama,plan,radar");
+ tt_str_op(cp_alloc,OP_EQ, "50,a,canal,man,noon,panama,plan,radar");
tor_free(cp_alloc);
/* Test contains_string, contains_string_case and contains_int_as_string */
@@ -331,17 +334,17 @@ test_container_smartlist_strings(void *arg)
"Some say the Earth will end in ice and some in fire",
" ", 0, 0);
cp = smartlist_get(sl, 4);
- tt_str_op(cp,==, "will");
+ tt_str_op(cp,OP_EQ, "will");
smartlist_add(sl, cp);
smartlist_remove(sl, cp);
tor_free(cp);
cp_alloc = smartlist_join_strings(sl, ",", 0, NULL);
- tt_str_op(cp_alloc,==, "Some,say,the,Earth,fire,end,in,ice,and,some,in");
+ tt_str_op(cp_alloc,OP_EQ, "Some,say,the,Earth,fire,end,in,ice,and,some,in");
tor_free(cp_alloc);
smartlist_string_remove(sl, "in");
cp_alloc = smartlist_join_strings2(sl, "+XX", 1, 0, &sz);
- tt_str_op(cp_alloc,==, "Some+say+the+Earth+fire+end+some+ice+and");
- tt_int_op((int)sz,==, 40);
+ tt_str_op(cp_alloc,OP_EQ, "Some+say+the+Earth+fire+end+some+ice+and");
+ tt_int_op((int)sz,OP_EQ, 40);
done:
@@ -369,7 +372,7 @@ test_container_smartlist_overlap(void *arg)
/* add_all */
smartlist_add_all(ints, odds);
smartlist_add_all(ints, evens);
- tt_int_op(smartlist_len(ints),==, 10);
+ tt_int_op(smartlist_len(ints),OP_EQ, 10);
smartlist_add(primes, (void*)2);
smartlist_add(primes, (void*)3);
@@ -385,7 +388,7 @@ test_container_smartlist_overlap(void *arg)
/* intersect */
smartlist_add_all(sl, odds);
smartlist_intersect(sl, primes);
- tt_int_op(smartlist_len(sl),==, 3);
+ tt_int_op(smartlist_len(sl),OP_EQ, 3);
tt_assert(smartlist_contains(sl, (void*)3));
tt_assert(smartlist_contains(sl, (void*)5));
tt_assert(smartlist_contains(sl, (void*)7));
@@ -393,7 +396,7 @@ test_container_smartlist_overlap(void *arg)
/* subtract */
smartlist_add_all(sl, primes);
smartlist_subtract(sl, odds);
- tt_int_op(smartlist_len(sl),==, 1);
+ tt_int_op(smartlist_len(sl),OP_EQ, 1);
tt_assert(smartlist_contains(sl, (void*)2));
done:
@@ -415,23 +418,23 @@ test_container_smartlist_digests(void *arg)
smartlist_add(sl, tor_memdup("AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN));
smartlist_add(sl, tor_memdup("\00090AAB2AAAAaasdAAAAA", DIGEST_LEN));
smartlist_add(sl, tor_memdup("\00090AAB2AAAAaasdAAAAA", DIGEST_LEN));
- tt_int_op(0,==, smartlist_contains_digest(NULL, "AAAAAAAAAAAAAAAAAAAA"));
+ tt_int_op(0,OP_EQ, smartlist_contains_digest(NULL, "AAAAAAAAAAAAAAAAAAAA"));
tt_assert(smartlist_contains_digest(sl, "AAAAAAAAAAAAAAAAAAAA"));
tt_assert(smartlist_contains_digest(sl, "\00090AAB2AAAAaasdAAAAA"));
- tt_int_op(0,==, smartlist_contains_digest(sl, "\00090AAB2AAABaasdAAAAA"));
+ tt_int_op(0,OP_EQ, smartlist_contains_digest(sl, "\00090AAB2AAABaasdAAAAA"));
/* sort digests */
smartlist_sort_digests(sl);
- tt_mem_op(smartlist_get(sl, 0),==, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
- tt_mem_op(smartlist_get(sl, 1),==, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
- tt_mem_op(smartlist_get(sl, 2),==, "AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN);
- tt_int_op(3,==, smartlist_len(sl));
+ tt_mem_op(smartlist_get(sl, 0),OP_EQ, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
+ tt_mem_op(smartlist_get(sl, 1),OP_EQ, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
+ tt_mem_op(smartlist_get(sl, 2),OP_EQ, "AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN);
+ tt_int_op(3,OP_EQ, smartlist_len(sl));
/* uniq_digests */
smartlist_uniq_digests(sl);
- tt_int_op(2,==, smartlist_len(sl));
- tt_mem_op(smartlist_get(sl, 0),==, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
- tt_mem_op(smartlist_get(sl, 1),==, "AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN);
+ tt_int_op(2,OP_EQ, smartlist_len(sl));
+ tt_mem_op(smartlist_get(sl, 0),OP_EQ, "\00090AAB2AAAAaasdAAAAA", DIGEST_LEN);
+ tt_mem_op(smartlist_get(sl, 1),OP_EQ, "AAAAAAAAAAAAAAAAAAAA", DIGEST_LEN);
done:
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
@@ -463,7 +466,7 @@ test_container_smartlist_join(void *arg)
sl2, char *, cp2,
strcmp(cp1,cp2),
smartlist_add(sl3, cp2)) {
- tt_str_op(cp1,==, cp2);
+ tt_str_op(cp1,OP_EQ, cp2);
smartlist_add(sl4, cp1);
} SMARTLIST_FOREACH_JOIN_END(cp1, cp2);
@@ -474,10 +477,11 @@ test_container_smartlist_join(void *arg)
tt_assert(smartlist_contains(sl, cp) &&
smartlist_contains_string(sl2, cp)));
joined = smartlist_join_strings(sl3, ",", 0, NULL);
- tt_str_op(joined,==, "Anemias,Anemias,Crossbowmen,Work");
+ tt_str_op(joined,OP_EQ, "Anemias,Anemias,Crossbowmen,Work");
tor_free(joined);
joined = smartlist_join_strings(sl4, ",", 0, NULL);
- tt_str_op(joined,==, "Ambush,Anchorman,Anchorman,Bacon,Inhumane,Insurance,"
+ tt_str_op(joined,OP_EQ,
+ "Ambush,Anchorman,Anchorman,Bacon,Inhumane,Insurance,"
"Knish,Know,Manners,Manners,Maraschinos,Wombats,Wombats");
tor_free(joined);
@@ -612,7 +616,7 @@ test_container_digestset(void *arg)
if (digestset_contains(set, d))
++false_positives;
}
- tt_int_op(50, >, false_positives); /* Should be far lower. */
+ tt_int_op(50, OP_GT, false_positives); /* Should be far lower. */
done:
if (set)
@@ -675,31 +679,31 @@ test_container_pqueue(void *arg)
OK();
- tt_int_op(smartlist_len(sl),==, 11);
- tt_ptr_op(smartlist_get(sl, 0),==, &apples);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &apples);
- tt_int_op(smartlist_len(sl),==, 10);
+ tt_int_op(smartlist_len(sl),OP_EQ, 11);
+ tt_ptr_op(smartlist_get(sl, 0),OP_EQ, &apples);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &apples);
+ tt_int_op(smartlist_len(sl),OP_EQ, 10);
OK();
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &cows);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &daschunds);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &cows);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &daschunds);
smartlist_pqueue_add(sl, cmp, offset, &chinchillas);
OK();
smartlist_pqueue_add(sl, cmp, offset, &fireflies);
OK();
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &chinchillas);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &eggplants);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &fireflies);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &chinchillas);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &eggplants);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &fireflies);
OK();
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &fish);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &frogs);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &lobsters);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &roquefort);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &fish);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &frogs);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &lobsters);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &roquefort);
OK();
- tt_int_op(smartlist_len(sl),==, 3);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &squid);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &weissbier);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &zebras);
- tt_int_op(smartlist_len(sl),==, 0);
+ tt_int_op(smartlist_len(sl),OP_EQ, 3);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &squid);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &weissbier);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &zebras);
+ tt_int_op(smartlist_len(sl),OP_EQ, 0);
OK();
/* Now test remove. */
@@ -709,21 +713,21 @@ test_container_pqueue(void *arg)
smartlist_pqueue_add(sl, cmp, offset, &apples);
smartlist_pqueue_add(sl, cmp, offset, &squid);
smartlist_pqueue_add(sl, cmp, offset, &zebras);
- tt_int_op(smartlist_len(sl),==, 6);
+ tt_int_op(smartlist_len(sl),OP_EQ, 6);
OK();
smartlist_pqueue_remove(sl, cmp, offset, &zebras);
- tt_int_op(smartlist_len(sl),==, 5);
+ tt_int_op(smartlist_len(sl),OP_EQ, 5);
OK();
smartlist_pqueue_remove(sl, cmp, offset, &cows);
- tt_int_op(smartlist_len(sl),==, 4);
+ tt_int_op(smartlist_len(sl),OP_EQ, 4);
OK();
smartlist_pqueue_remove(sl, cmp, offset, &apples);
- tt_int_op(smartlist_len(sl),==, 3);
+ tt_int_op(smartlist_len(sl),OP_EQ, 3);
OK();
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &fish);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &frogs);
- tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),==, &squid);
- tt_int_op(smartlist_len(sl),==, 0);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &fish);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &frogs);
+ tt_ptr_op(smartlist_pqueue_pop(sl, cmp, offset),OP_EQ, &squid);
+ tt_int_op(smartlist_len(sl),OP_EQ, 0);
OK();
#undef OK
@@ -755,30 +759,30 @@ test_container_strmap(void *arg)
(void)arg;
map = strmap_new();
tt_assert(map);
- tt_int_op(strmap_size(map),==, 0);
+ tt_int_op(strmap_size(map),OP_EQ, 0);
tt_assert(strmap_isempty(map));
v = strmap_set(map, "K1", v99);
- tt_ptr_op(v,==, NULL);
+ tt_ptr_op(v,OP_EQ, NULL);
tt_assert(!strmap_isempty(map));
v = strmap_set(map, "K2", v101);
- tt_ptr_op(v,==, NULL);
+ tt_ptr_op(v,OP_EQ, NULL);
v = strmap_set(map, "K1", v100);
- tt_ptr_op(v,==, v99);
- tt_ptr_op(strmap_get(map,"K1"),==, v100);
- tt_ptr_op(strmap_get(map,"K2"),==, v101);
- tt_ptr_op(strmap_get(map,"K-not-there"),==, NULL);
+ tt_ptr_op(v,OP_EQ, v99);
+ tt_ptr_op(strmap_get(map,"K1"),OP_EQ, v100);
+ tt_ptr_op(strmap_get(map,"K2"),OP_EQ, v101);
+ tt_ptr_op(strmap_get(map,"K-not-there"),OP_EQ, NULL);
strmap_assert_ok(map);
v = strmap_remove(map,"K2");
strmap_assert_ok(map);
- tt_ptr_op(v,==, v101);
- tt_ptr_op(strmap_get(map,"K2"),==, NULL);
- tt_ptr_op(strmap_remove(map,"K2"),==, NULL);
+ tt_ptr_op(v,OP_EQ, v101);
+ tt_ptr_op(strmap_get(map,"K2"),OP_EQ, NULL);
+ tt_ptr_op(strmap_remove(map,"K2"),OP_EQ, NULL);
strmap_set(map, "K2", v101);
strmap_set(map, "K3", v102);
strmap_set(map, "K4", v103);
- tt_int_op(strmap_size(map),==, 4);
+ tt_int_op(strmap_size(map),OP_EQ, 4);
strmap_assert_ok(map);
strmap_set(map, "K5", v104);
strmap_set(map, "K6", v105);
@@ -790,7 +794,7 @@ test_container_strmap(void *arg)
while (!strmap_iter_done(iter)) {
strmap_iter_get(iter,&k,&v);
smartlist_add(found_keys, tor_strdup(k));
- tt_ptr_op(v,==, strmap_get(map, k));
+ tt_ptr_op(v,OP_EQ, strmap_get(map, k));
if (!strcmp(k, "K2")) {
iter = strmap_iter_next_rmv(map,iter);
@@ -800,12 +804,12 @@ test_container_strmap(void *arg)
}
/* Make sure we removed K2, but not the others. */
- tt_ptr_op(strmap_get(map, "K2"),==, NULL);
- tt_ptr_op(strmap_get(map, "K5"),==, v104);
+ tt_ptr_op(strmap_get(map, "K2"),OP_EQ, NULL);
+ tt_ptr_op(strmap_get(map, "K5"),OP_EQ, v104);
/* Make sure we visited everyone once */
smartlist_sort_strings(found_keys);
visited = smartlist_join_strings(found_keys, ":", 0, NULL);
- tt_str_op(visited,==, "K1:K2:K3:K4:K5:K6");
+ tt_str_op(visited,OP_EQ, "K1:K2:K3:K4:K5:K6");
strmap_assert_ok(map);
/* Clean up after ourselves. */
@@ -815,13 +819,13 @@ test_container_strmap(void *arg)
/* Now try some lc functions. */
map = strmap_new();
strmap_set_lc(map,"Ab.C", v1);
- tt_ptr_op(strmap_get(map,"ab.c"),==, v1);
+ tt_ptr_op(strmap_get(map,"ab.c"),OP_EQ, v1);
strmap_assert_ok(map);
- tt_ptr_op(strmap_get_lc(map,"AB.C"),==, v1);
- tt_ptr_op(strmap_get(map,"AB.C"),==, NULL);
- tt_ptr_op(strmap_remove_lc(map,"aB.C"),==, v1);
+ tt_ptr_op(strmap_get_lc(map,"AB.C"),OP_EQ, v1);
+ tt_ptr_op(strmap_get(map,"AB.C"),OP_EQ, NULL);
+ tt_ptr_op(strmap_remove_lc(map,"aB.C"),OP_EQ, v1);
strmap_assert_ok(map);
- tt_ptr_op(strmap_get_lc(map,"AB.C"),==, NULL);
+ tt_ptr_op(strmap_get_lc(map,"AB.C"),OP_EQ, NULL);
done:
if (map)
@@ -853,41 +857,42 @@ test_container_order_functions(void *arg)
(void)arg;
lst[n++] = 12;
- tt_int_op(12,==, median()); /* 12 */
+ tt_int_op(12,OP_EQ, median()); /* 12 */
lst[n++] = 77;
//smartlist_shuffle(sl);
- tt_int_op(12,==, median()); /* 12, 77 */
+ tt_int_op(12,OP_EQ, median()); /* 12, 77 */
lst[n++] = 77;
//smartlist_shuffle(sl);
- tt_int_op(77,==, median()); /* 12, 77, 77 */
+ tt_int_op(77,OP_EQ, median()); /* 12, 77, 77 */
lst[n++] = 24;
- tt_int_op(24,==, median()); /* 12,24,77,77 */
+ tt_int_op(24,OP_EQ, median()); /* 12,24,77,77 */
lst[n++] = 60;
lst[n++] = 12;
lst[n++] = 25;
//smartlist_shuffle(sl);
- tt_int_op(25,==, median()); /* 12,12,24,25,60,77,77 */
+ tt_int_op(25,OP_EQ, median()); /* 12,12,24,25,60,77,77 */
#undef median
#define third_quartile() third_quartile_uint32(lst2, n)
n = 0;
lst2[n++] = 1;
- tt_int_op(1,==, third_quartile()); /* ~1~ */
+ tt_int_op(1,OP_EQ, third_quartile()); /* ~1~ */
lst2[n++] = 2;
- tt_int_op(2,==, third_quartile()); /* 1, ~2~ */
+ tt_int_op(2,OP_EQ, third_quartile()); /* 1, ~2~ */
lst2[n++] = 3;
lst2[n++] = 4;
lst2[n++] = 5;
- tt_int_op(4,==, third_quartile()); /* 1, 2, 3, ~4~, 5 */
+ tt_int_op(4,OP_EQ, third_quartile()); /* 1, 2, 3, ~4~, 5 */
lst2[n++] = 6;
lst2[n++] = 7;
lst2[n++] = 8;
lst2[n++] = 9;
- tt_int_op(7,==, third_quartile()); /* 1, 2, 3, 4, 5, 6, ~7~, 8, 9 */
+ tt_int_op(7,OP_EQ, third_quartile()); /* 1, 2, 3, 4, 5, 6, ~7~, 8, 9 */
lst2[n++] = 10;
lst2[n++] = 11;
- tt_int_op(9,==, third_quartile()); /* 1, 2, 3, 4, 5, 6, 7, 8, ~9~, 10, 11 */
+ /* 1, 2, 3, 4, 5, 6, 7, 8, ~9~, 10, 11 */
+ tt_int_op(9,OP_EQ, third_quartile());
#undef third_quartile
@@ -911,26 +916,26 @@ test_container_di_map(void *arg)
(void)arg;
/* Try searching on an empty map. */
- tt_ptr_op(NULL, ==, dimap_search(map, key1, NULL));
- tt_ptr_op(NULL, ==, dimap_search(map, key2, NULL));
- tt_ptr_op(v3, ==, dimap_search(map, key2, v3));
+ tt_ptr_op(NULL, OP_EQ, dimap_search(map, key1, NULL));
+ tt_ptr_op(NULL, OP_EQ, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, OP_EQ, dimap_search(map, key2, v3));
dimap_free(map, NULL);
map = NULL;
/* Add a single entry. */
dimap_add_entry(&map, key1, v1);
- tt_ptr_op(NULL, ==, dimap_search(map, key2, NULL));
- tt_ptr_op(v3, ==, dimap_search(map, key2, v3));
- tt_ptr_op(v1, ==, dimap_search(map, key1, NULL));
+ tt_ptr_op(NULL, OP_EQ, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, OP_EQ, dimap_search(map, key2, v3));
+ tt_ptr_op(v1, OP_EQ, dimap_search(map, key1, NULL));
/* Now try it with three entries in the map. */
dimap_add_entry(&map, key2, v2);
dimap_add_entry(&map, key3, v3);
- tt_ptr_op(v1, ==, dimap_search(map, key1, NULL));
- tt_ptr_op(v2, ==, dimap_search(map, key2, NULL));
- tt_ptr_op(v3, ==, dimap_search(map, key3, NULL));
- tt_ptr_op(NULL, ==, dimap_search(map, key4, NULL));
- tt_ptr_op(v1, ==, dimap_search(map, key4, v1));
+ tt_ptr_op(v1, OP_EQ, dimap_search(map, key1, NULL));
+ tt_ptr_op(v2, OP_EQ, dimap_search(map, key2, NULL));
+ tt_ptr_op(v3, OP_EQ, dimap_search(map, key3, NULL));
+ tt_ptr_op(NULL, OP_EQ, dimap_search(map, key4, NULL));
+ tt_ptr_op(v1, OP_EQ, dimap_search(map, key4, v1));
done:
tor_free(v1);
@@ -959,7 +964,7 @@ test_container_fp_pair_map(void *arg)
(void)arg;
map = fp_pair_map_new();
tt_assert(map);
- tt_int_op(fp_pair_map_size(map),==, 0);
+ tt_int_op(fp_pair_map_size(map),OP_EQ, 0);
tt_assert(fp_pair_map_isempty(map));
memset(fp1.first, 0x11, DIGEST_LEN);
@@ -976,27 +981,27 @@ test_container_fp_pair_map(void *arg)
memset(fp6.second, 0x62, DIGEST_LEN);
v = fp_pair_map_set(map, &fp1, v99);
- tt_ptr_op(v, ==, NULL);
+ tt_ptr_op(v, OP_EQ, NULL);
tt_assert(!fp_pair_map_isempty(map));
v = fp_pair_map_set(map, &fp2, v101);
- tt_ptr_op(v, ==, NULL);
+ tt_ptr_op(v, OP_EQ, NULL);
v = fp_pair_map_set(map, &fp1, v100);
- tt_ptr_op(v, ==, v99);
- tt_ptr_op(fp_pair_map_get(map, &fp1),==, v100);
- tt_ptr_op(fp_pair_map_get(map, &fp2),==, v101);
- tt_ptr_op(fp_pair_map_get(map, &fp3),==, NULL);
+ tt_ptr_op(v, OP_EQ, v99);
+ tt_ptr_op(fp_pair_map_get(map, &fp1),OP_EQ, v100);
+ tt_ptr_op(fp_pair_map_get(map, &fp2),OP_EQ, v101);
+ tt_ptr_op(fp_pair_map_get(map, &fp3),OP_EQ, NULL);
fp_pair_map_assert_ok(map);
v = fp_pair_map_remove(map, &fp2);
fp_pair_map_assert_ok(map);
- tt_ptr_op(v,==, v101);
- tt_ptr_op(fp_pair_map_get(map, &fp2),==, NULL);
- tt_ptr_op(fp_pair_map_remove(map, &fp2),==, NULL);
+ tt_ptr_op(v,OP_EQ, v101);
+ tt_ptr_op(fp_pair_map_get(map, &fp2),OP_EQ, NULL);
+ tt_ptr_op(fp_pair_map_remove(map, &fp2),OP_EQ, NULL);
fp_pair_map_set(map, &fp2, v101);
fp_pair_map_set(map, &fp3, v102);
fp_pair_map_set(map, &fp4, v103);
- tt_int_op(fp_pair_map_size(map),==, 4);
+ tt_int_op(fp_pair_map_size(map),OP_EQ, 4);
fp_pair_map_assert_ok(map);
fp_pair_map_set(map, &fp5, v104);
fp_pair_map_set(map, &fp6, v105);
@@ -1006,7 +1011,7 @@ test_container_fp_pair_map(void *arg)
iter = fp_pair_map_iter_init(map);
while (!fp_pair_map_iter_done(iter)) {
fp_pair_map_iter_get(iter, &k, &v);
- tt_ptr_op(v,==, fp_pair_map_get(map, &k));
+ tt_ptr_op(v,OP_EQ, fp_pair_map_get(map, &k));
if (tor_memeq(&fp2, &k, sizeof(fp2))) {
iter = fp_pair_map_iter_next_rmv(map, iter);
@@ -1016,8 +1021,8 @@ test_container_fp_pair_map(void *arg)
}
/* Make sure we removed fp2, but not the others. */
- tt_ptr_op(fp_pair_map_get(map, &fp2),==, NULL);
- tt_ptr_op(fp_pair_map_get(map, &fp5),==, v104);
+ tt_ptr_op(fp_pair_map_get(map, &fp2),OP_EQ, NULL);
+ tt_ptr_op(fp_pair_map_get(map, &fp5),OP_EQ, v104);
fp_pair_map_assert_ok(map);
/* Clean up after ourselves. */
diff --git a/src/test/test_controller_events.c b/src/test/test_controller_events.c
index 4d6077b641..dd9d590ec7 100644
--- a/src/test/test_controller_events.c
+++ b/src/test/test_controller_events.c
@@ -22,7 +22,7 @@ help_test_bucket_note_empty(uint32_t expected_msec_since_midnight,
tvnow.tv_usec = (msec_since_epoch % 1000) * 1000;
connection_buckets_note_empty_ts(&timestamp_var, tokens_before,
tokens_removed, &tvnow);
- tt_int_op(expected_msec_since_midnight, ==, timestamp_var);
+ tt_int_op(expected_msec_since_midnight, OP_EQ, timestamp_var);
done:
;
@@ -57,20 +57,20 @@ test_cntev_bucket_millis_empty(void *arg)
tvnow.tv_usec = 200000;
/* Bucket has not been refilled. */
- tt_int_op(0, ==, bucket_millis_empty(0, 42120, 0, 100, &tvnow));
- tt_int_op(0, ==, bucket_millis_empty(-10, 42120, -10, 100, &tvnow));
+ tt_int_op(0, OP_EQ, bucket_millis_empty(0, 42120, 0, 100, &tvnow));
+ tt_int_op(0, OP_EQ, bucket_millis_empty(-10, 42120, -10, 100, &tvnow));
/* Bucket was not empty. */
- tt_int_op(0, ==, bucket_millis_empty(10, 42120, 20, 100, &tvnow));
+ tt_int_op(0, OP_EQ, bucket_millis_empty(10, 42120, 20, 100, &tvnow));
/* Bucket has been emptied 80 msec ago and has just been refilled. */
- tt_int_op(80, ==, bucket_millis_empty(-20, 42120, -10, 100, &tvnow));
- tt_int_op(80, ==, bucket_millis_empty(-10, 42120, 0, 100, &tvnow));
- tt_int_op(80, ==, bucket_millis_empty(0, 42120, 10, 100, &tvnow));
+ tt_int_op(80, OP_EQ, bucket_millis_empty(-20, 42120, -10, 100, &tvnow));
+ tt_int_op(80, OP_EQ, bucket_millis_empty(-10, 42120, 0, 100, &tvnow));
+ tt_int_op(80, OP_EQ, bucket_millis_empty(0, 42120, 10, 100, &tvnow));
/* Bucket has been emptied 180 msec ago, last refill was 100 msec ago
* which was insufficient to make it positive, so cap msec at 100. */
- tt_int_op(100, ==, bucket_millis_empty(0, 42020, 1, 100, &tvnow));
+ tt_int_op(100, OP_EQ, bucket_millis_empty(0, 42020, 1, 100, &tvnow));
/* 1970-01-02 00:00:00:050000 */
tvnow.tv_sec = 86400;
@@ -78,7 +78,7 @@ test_cntev_bucket_millis_empty(void *arg)
/* Last emptied 30 msec before midnight, tvnow is 50 msec after
* midnight, that's 80 msec in total. */
- tt_int_op(80, ==, bucket_millis_empty(0, 86400000 - 30, 1, 100, &tvnow));
+ tt_int_op(80, OP_EQ, bucket_millis_empty(0, 86400000 - 30, 1, 100, &tvnow));
done:
;
@@ -118,26 +118,26 @@ test_cntev_sum_up_cell_stats(void *arg)
cell_stats = tor_malloc_zero(sizeof(cell_stats_t));
add_testing_cell_stats_entry(circ, CELL_RELAY, 0, 0, 0);
sum_up_cell_stats_by_command(circ, cell_stats);
- tt_u64_op(1, ==, cell_stats->added_cells_appward[CELL_RELAY]);
+ tt_u64_op(1, OP_EQ, cell_stats->added_cells_appward[CELL_RELAY]);
/* A single RELAY cell was added to the exitward queue. */
add_testing_cell_stats_entry(circ, CELL_RELAY, 0, 0, 1);
sum_up_cell_stats_by_command(circ, cell_stats);
- tt_u64_op(1, ==, cell_stats->added_cells_exitward[CELL_RELAY]);
+ tt_u64_op(1, OP_EQ, cell_stats->added_cells_exitward[CELL_RELAY]);
/* A single RELAY cell was removed from the appward queue where it spent
* 20 msec. */
add_testing_cell_stats_entry(circ, CELL_RELAY, 2, 1, 0);
sum_up_cell_stats_by_command(circ, cell_stats);
- tt_u64_op(20, ==, cell_stats->total_time_appward[CELL_RELAY]);
- tt_u64_op(1, ==, cell_stats->removed_cells_appward[CELL_RELAY]);
+ tt_u64_op(20, OP_EQ, cell_stats->total_time_appward[CELL_RELAY]);
+ tt_u64_op(1, OP_EQ, cell_stats->removed_cells_appward[CELL_RELAY]);
/* A single RELAY cell was removed from the exitward queue where it
* spent 30 msec. */
add_testing_cell_stats_entry(circ, CELL_RELAY, 3, 1, 1);
sum_up_cell_stats_by_command(circ, cell_stats);
- tt_u64_op(30, ==, cell_stats->total_time_exitward[CELL_RELAY]);
- tt_u64_op(1, ==, cell_stats->removed_cells_exitward[CELL_RELAY]);
+ tt_u64_op(30, OP_EQ, cell_stats->total_time_exitward[CELL_RELAY]);
+ tt_u64_op(1, OP_EQ, cell_stats->removed_cells_exitward[CELL_RELAY]);
done:
tor_free(cell_stats);
@@ -164,7 +164,7 @@ test_cntev_append_cell_stats(void *arg)
append_cell_stats_by_command(event_parts, key,
include_if_non_zero,
number_to_include);
- tt_int_op(0, ==, smartlist_len(event_parts));
+ tt_int_op(0, OP_EQ, smartlist_len(event_parts));
/* There's a RELAY cell to include, but the corresponding field in
* include_if_non_zero is still zero. */
@@ -172,7 +172,7 @@ test_cntev_append_cell_stats(void *arg)
append_cell_stats_by_command(event_parts, key,
include_if_non_zero,
number_to_include);
- tt_int_op(0, ==, smartlist_len(event_parts));
+ tt_int_op(0, OP_EQ, smartlist_len(event_parts));
/* Now include single RELAY cell. */
include_if_non_zero[CELL_RELAY] = 2;
@@ -180,7 +180,7 @@ test_cntev_append_cell_stats(void *arg)
include_if_non_zero,
number_to_include);
cp = smartlist_pop_last(event_parts);
- tt_str_op("Z=relay:1", ==, cp);
+ tt_str_op("Z=relay:1", OP_EQ, cp);
tor_free(cp);
/* Add four CREATE cells. */
@@ -190,7 +190,7 @@ test_cntev_append_cell_stats(void *arg)
include_if_non_zero,
number_to_include);
cp = smartlist_pop_last(event_parts);
- tt_str_op("Z=create:4,relay:1", ==, cp);
+ tt_str_op("Z=create:4,relay:1", OP_EQ, cp);
done:
tor_free(cp);
@@ -220,14 +220,14 @@ test_cntev_format_cell_stats(void *arg)
/* Origin circuit was completely idle. */
cell_stats = tor_malloc_zero(sizeof(cell_stats_t));
format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats);
- tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1", ==, event_string);
+ tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1", OP_EQ, event_string);
tor_free(event_string);
/* Origin circuit had 4 RELAY cells added to its exitward queue. */
cell_stats->added_cells_exitward[CELL_RELAY] = 4;
format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats);
tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4",
- ==, event_string);
+ OP_EQ, event_string);
tor_free(event_string);
/* Origin circuit also had 5 CREATE2 cells added to its exitward
@@ -235,7 +235,7 @@ test_cntev_format_cell_stats(void *arg)
cell_stats->added_cells_exitward[CELL_CREATE2] = 5;
format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats);
tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4,"
- "create2:5", ==, event_string);
+ "create2:5", OP_EQ, event_string);
tor_free(event_string);
/* Origin circuit also had 7 RELAY cells removed from its exitward queue
@@ -245,7 +245,7 @@ test_cntev_format_cell_stats(void *arg)
format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats);
tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4,"
"create2:5 OutboundRemoved=relay:7 OutboundTime=relay:6",
- ==, event_string);
+ OP_EQ, event_string);
tor_free(event_string);
p_chan = tor_malloc_zero(sizeof(channel_tls_t));
@@ -265,14 +265,14 @@ test_cntev_format_cell_stats(void *arg)
cell_stats = tor_malloc_zero(sizeof(cell_stats_t));
format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats);
tt_str_op("InboundQueue=8 InboundConn=2 OutboundQueue=9 OutboundConn=1",
- ==, event_string);
+ OP_EQ, event_string);
tor_free(event_string);
/* OR circuit had 3 RELAY cells added to its appward queue. */
cell_stats->added_cells_appward[CELL_RELAY] = 3;
format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats);
tt_str_op("InboundQueue=8 InboundConn=2 InboundAdded=relay:3 "
- "OutboundQueue=9 OutboundConn=1", ==, event_string);
+ "OutboundQueue=9 OutboundConn=1", OP_EQ, event_string);
tor_free(event_string);
/* OR circuit had 7 RELAY cells removed from its appward queue which
@@ -282,7 +282,7 @@ test_cntev_format_cell_stats(void *arg)
format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats);
tt_str_op("InboundQueue=8 InboundConn=2 InboundAdded=relay:3 "
"InboundRemoved=relay:7 InboundTime=relay:6 "
- "OutboundQueue=9 OutboundConn=1", ==, event_string);
+ "OutboundQueue=9 OutboundConn=1", OP_EQ, event_string);
done:
tor_free(cell_stats);
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index 4416134ac4..5352b9fdb4 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -34,24 +34,24 @@ test_crypto_dh(void *arg)
ssize_t s1len, s2len;
(void)arg;
- tt_int_op(crypto_dh_get_bytes(dh1),==, DH_BYTES);
- tt_int_op(crypto_dh_get_bytes(dh2),==, DH_BYTES);
+ tt_int_op(crypto_dh_get_bytes(dh1),OP_EQ, DH_BYTES);
+ tt_int_op(crypto_dh_get_bytes(dh2),OP_EQ, DH_BYTES);
memset(p1, 0, DH_BYTES);
memset(p2, 0, DH_BYTES);
- tt_mem_op(p1,==, p2, DH_BYTES);
+ tt_mem_op(p1,OP_EQ, p2, DH_BYTES);
tt_assert(! crypto_dh_get_public(dh1, p1, DH_BYTES));
- tt_mem_op(p1,!=, p2, DH_BYTES);
+ tt_mem_op(p1,OP_NE, p2, DH_BYTES);
tt_assert(! crypto_dh_get_public(dh2, p2, DH_BYTES));
- tt_mem_op(p1,!=, p2, DH_BYTES);
+ tt_mem_op(p1,OP_NE, p2, DH_BYTES);
memset(s1, 0, DH_BYTES);
memset(s2, 0xFF, DH_BYTES);
s1len = crypto_dh_compute_secret(LOG_WARN, dh1, p2, DH_BYTES, s1, 50);
s2len = crypto_dh_compute_secret(LOG_WARN, dh2, p1, DH_BYTES, s2, 50);
tt_assert(s1len > 0);
- tt_int_op(s1len,==, s2len);
- tt_mem_op(s1,==, s2, s1len);
+ tt_int_op(s1len,OP_EQ, s2len);
+ tt_mem_op(s1,OP_EQ, s2, s1len);
{
/* XXXX Now fabricate some bad values and make sure they get caught,
@@ -78,7 +78,7 @@ test_crypto_rng(void *arg)
tt_assert(! crypto_seed_rng(0));
crypto_rand(data1, 100);
crypto_rand(data2, 100);
- tt_mem_op(data1,!=, data2,100);
+ tt_mem_op(data1,OP_NE, data2,100);
allok = 1;
for (i = 0; i < 100; ++i) {
uint64_t big;
@@ -133,15 +133,15 @@ test_crypto_aes(void *arg)
memset(data2, 0, 1024);
memset(data3, 0, 1024);
env1 = crypto_cipher_new(NULL);
- tt_ptr_op(env1, !=, NULL);
+ tt_ptr_op(env1, OP_NE, NULL);
env2 = crypto_cipher_new(crypto_cipher_get_key(env1));
- tt_ptr_op(env2, !=, NULL);
+ tt_ptr_op(env2, OP_NE, NULL);
/* Try encrypting 512 chars. */
crypto_cipher_encrypt(env1, data2, data1, 512);
crypto_cipher_decrypt(env2, data3, data2, 512);
- tt_mem_op(data1,==, data3, 512);
- tt_mem_op(data1,!=, data2, 512);
+ tt_mem_op(data1,OP_EQ, data3, 512);
+ tt_mem_op(data1,OP_NE, data2, 512);
/* Now encrypt 1 at a time, and get 1 at a time. */
for (j = 512; j < 560; ++j) {
@@ -150,7 +150,7 @@ test_crypto_aes(void *arg)
for (j = 512; j < 560; ++j) {
crypto_cipher_decrypt(env2, data3+j, data2+j, 1);
}
- tt_mem_op(data1,==, data3, 560);
+ tt_mem_op(data1,OP_EQ, data3, 560);
/* Now encrypt 3 at a time, and get 5 at a time. */
for (j = 560; j < 1024-5; j += 3) {
crypto_cipher_encrypt(env1, data2+j, data1+j, 3);
@@ -158,7 +158,7 @@ test_crypto_aes(void *arg)
for (j = 560; j < 1024-5; j += 5) {
crypto_cipher_decrypt(env2, data3+j, data2+j, 5);
}
- tt_mem_op(data1,==, data3, 1024-5);
+ tt_mem_op(data1,OP_EQ, data3, 1024-5);
/* Now make sure that when we encrypt with different chunk sizes, we get
the same results. */
crypto_cipher_free(env2);
@@ -166,7 +166,7 @@ test_crypto_aes(void *arg)
memset(data3, 0, 1024);
env2 = crypto_cipher_new(crypto_cipher_get_key(env1));
- tt_ptr_op(env2, !=, NULL);
+ tt_ptr_op(env2, OP_NE, NULL);
for (j = 0; j < 1024-16; j += 17) {
crypto_cipher_encrypt(env2, data3+j, data1+j, 17);
}
@@ -175,7 +175,7 @@ test_crypto_aes(void *arg)
printf("%d: %d\t%d\n", j, (int) data2[j], (int) data3[j]);
}
}
- tt_mem_op(data2,==, data3, 1024-16);
+ tt_mem_op(data2,OP_EQ, data3, 1024-16);
crypto_cipher_free(env1);
env1 = NULL;
crypto_cipher_free(env2);
@@ -271,25 +271,25 @@ test_crypto_sha(void *arg)
(void)arg;
i = crypto_digest(data, "abc", 3);
test_memeq_hex(data, "A9993E364706816ABA3E25717850C26C9CD0D89D");
- tt_int_op(i, ==, 0);
+ tt_int_op(i, OP_EQ, 0);
/* Test SHA-256 with a test vector from the specification. */
i = crypto_digest256(data, "abc", 3, DIGEST_SHA256);
test_memeq_hex(data, "BA7816BF8F01CFEA414140DE5DAE2223B00361A3"
"96177A9CB410FF61F20015AD");
- tt_int_op(i, ==, 0);
+ tt_int_op(i, OP_EQ, 0);
/* Test HMAC-SHA256 with test cases from wikipedia and RFC 4231 */
/* Case empty (wikipedia) */
crypto_hmac_sha256(digest, "", 0, "", 0);
- tt_str_op(hex_str(digest, 32),==,
+ tt_str_op(hex_str(digest, 32),OP_EQ,
"B613679A0814D9EC772F95D778C35FC5FF1697C493715653C6C712144292C5AD");
/* Case quick-brown (wikipedia) */
crypto_hmac_sha256(digest, "key", 3,
"The quick brown fox jumps over the lazy dog", 43);
- tt_str_op(hex_str(digest, 32),==,
+ tt_str_op(hex_str(digest, 32),OP_EQ,
"F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8");
/* "Test Case 1" from RFC 4231 */
@@ -357,15 +357,15 @@ test_crypto_sha(void *arg)
crypto_digest_add_bytes(d2, "ghijkl", 6);
crypto_digest_get_digest(d2, d_out1, sizeof(d_out1));
crypto_digest(d_out2, "abcdefghijkl", 12);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
crypto_digest_assign(d2, d1);
crypto_digest_add_bytes(d2, "mno", 3);
crypto_digest_get_digest(d2, d_out1, sizeof(d_out1));
crypto_digest(d_out2, "abcdefmno", 9);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
crypto_digest_get_digest(d1, d_out1, sizeof(d_out1));
crypto_digest(d_out2, "abcdef", 6);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
crypto_digest_free(d1);
crypto_digest_free(d2);
@@ -378,15 +378,15 @@ test_crypto_sha(void *arg)
crypto_digest_add_bytes(d2, "ghijkl", 6);
crypto_digest_get_digest(d2, d_out1, sizeof(d_out1));
crypto_digest256(d_out2, "abcdefghijkl", 12, DIGEST_SHA256);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
crypto_digest_assign(d2, d1);
crypto_digest_add_bytes(d2, "mno", 3);
crypto_digest_get_digest(d2, d_out1, sizeof(d_out1));
crypto_digest256(d_out2, "abcdefmno", 9, DIGEST_SHA256);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
crypto_digest_get_digest(d1, d_out1, sizeof(d_out1));
crypto_digest256(d_out2, "abcdef", 6, DIGEST_SHA256);
- tt_mem_op(d_out1,==, d_out2, DIGEST_LEN);
+ tt_mem_op(d_out1,OP_EQ, d_out2, DIGEST_LEN);
done:
if (d1)
@@ -413,42 +413,42 @@ test_crypto_pk(void *arg)
tt_assert(pk1 && pk2);
tt_assert(! crypto_pk_write_public_key_to_string(pk1, &encoded, &size));
tt_assert(! crypto_pk_read_public_key_from_string(pk2, encoded, size));
- tt_int_op(0,==, crypto_pk_cmp_keys(pk1, pk2));
+ tt_int_op(0,OP_EQ, crypto_pk_cmp_keys(pk1, pk2));
/* comparison between keys and NULL */
- tt_int_op(crypto_pk_cmp_keys(NULL, pk1), <, 0);
- tt_int_op(crypto_pk_cmp_keys(NULL, NULL), ==, 0);
- tt_int_op(crypto_pk_cmp_keys(pk1, NULL), >, 0);
+ tt_int_op(crypto_pk_cmp_keys(NULL, pk1), OP_LT, 0);
+ tt_int_op(crypto_pk_cmp_keys(NULL, NULL), OP_EQ, 0);
+ tt_int_op(crypto_pk_cmp_keys(pk1, NULL), OP_GT, 0);
- tt_int_op(128,==, crypto_pk_keysize(pk1));
- tt_int_op(1024,==, crypto_pk_num_bits(pk1));
- tt_int_op(128,==, crypto_pk_keysize(pk2));
- tt_int_op(1024,==, crypto_pk_num_bits(pk2));
+ tt_int_op(128,OP_EQ, crypto_pk_keysize(pk1));
+ tt_int_op(1024,OP_EQ, crypto_pk_num_bits(pk1));
+ tt_int_op(128,OP_EQ, crypto_pk_keysize(pk2));
+ tt_int_op(1024,OP_EQ, crypto_pk_num_bits(pk2));
- tt_int_op(128,==, crypto_pk_public_encrypt(pk2, data1, sizeof(data1),
+ tt_int_op(128,OP_EQ, crypto_pk_public_encrypt(pk2, data1, sizeof(data1),
"Hello whirled.", 15,
PK_PKCS1_OAEP_PADDING));
- tt_int_op(128,==, crypto_pk_public_encrypt(pk1, data2, sizeof(data1),
+ tt_int_op(128,OP_EQ, crypto_pk_public_encrypt(pk1, data2, sizeof(data1),
"Hello whirled.", 15,
PK_PKCS1_OAEP_PADDING));
/* oaep padding should make encryption not match */
- tt_mem_op(data1,!=, data2, 128);
- tt_int_op(15,==,
+ tt_mem_op(data1,OP_NE, data2, 128);
+ tt_int_op(15,OP_EQ,
crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data1, 128,
PK_PKCS1_OAEP_PADDING,1));
- tt_str_op(data3,==, "Hello whirled.");
+ tt_str_op(data3,OP_EQ, "Hello whirled.");
memset(data3, 0, 1024);
- tt_int_op(15,==,
+ tt_int_op(15,OP_EQ,
crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
- tt_str_op(data3,==, "Hello whirled.");
+ tt_str_op(data3,OP_EQ, "Hello whirled.");
/* Can't decrypt with public key. */
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
/* Try again with bad padding */
memcpy(data2+1, "XYZZY", 5); /* This has fails ~ once-in-2^40 */
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
@@ -464,25 +464,25 @@ test_crypto_pk(void *arg)
get_fname("xyzzy")) < 0);
tt_assert(! crypto_pk_read_private_key_from_filename(pk2,
get_fname("pkey1")));
- tt_int_op(15,==,
+ tt_int_op(15,OP_EQ,
crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data1, 128,
PK_PKCS1_OAEP_PADDING,1));
/* Now try signing. */
strlcpy(data1, "Ossifrage", 1024);
- tt_int_op(128,==,
+ tt_int_op(128,OP_EQ,
crypto_pk_private_sign(pk1, data2, sizeof(data2), data1, 10));
- tt_int_op(10,==,
+ tt_int_op(10,OP_EQ,
crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128));
- tt_str_op(data3,==, "Ossifrage");
+ tt_str_op(data3,OP_EQ, "Ossifrage");
/* Try signing digests. */
- tt_int_op(128,==, crypto_pk_private_sign_digest(pk1, data2, sizeof(data2),
+ tt_int_op(128,OP_EQ, crypto_pk_private_sign_digest(pk1, data2, sizeof(data2),
data1, 10));
- tt_int_op(20,==,
+ tt_int_op(20,OP_EQ,
crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128));
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
crypto_pk_public_checksig_digest(pk1, data1, 10, data2, 128));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
crypto_pk_public_checksig_digest(pk1, data1, 11, data2, 128));
/*XXXX test failed signing*/
@@ -491,7 +491,7 @@ test_crypto_pk(void *arg)
crypto_pk_free(pk2);
pk2 = NULL;
i = crypto_pk_asn1_encode(pk1, data1, 1024);
- tt_int_op(i, >, 0);
+ tt_int_op(i, OP_GT, 0);
pk2 = crypto_pk_asn1_decode(data1, i);
tt_assert(crypto_pk_cmp_keys(pk1,pk2) == 0);
@@ -502,18 +502,18 @@ test_crypto_pk(void *arg)
memset(data3,0,1024);
len = crypto_pk_public_hybrid_encrypt(pk1,data2,sizeof(data2),
data1,i,PK_PKCS1_OAEP_PADDING,0);
- tt_int_op(len, >=, 0);
+ tt_int_op(len, OP_GE, 0);
len = crypto_pk_private_hybrid_decrypt(pk1,data3,sizeof(data3),
data2,len,PK_PKCS1_OAEP_PADDING,1);
- tt_int_op(len,==, i);
- tt_mem_op(data1,==, data3,i);
+ tt_int_op(len,OP_EQ, i);
+ tt_mem_op(data1,OP_EQ, data3,i);
}
/* Try copy_full */
crypto_pk_free(pk2);
pk2 = crypto_pk_copy_full(pk1);
tt_assert(pk2 != NULL);
- tt_ptr_op(pk1, !=, pk2);
+ tt_ptr_op(pk1, OP_NE, pk2);
tt_assert(crypto_pk_cmp_keys(pk1,pk2) == 0);
done:
@@ -540,33 +540,33 @@ test_crypto_pk_fingerprints(void *arg)
pk = pk_generate(1);
tt_assert(pk);
n = crypto_pk_asn1_encode(pk, encoded, sizeof(encoded));
- tt_int_op(n, >, 0);
- tt_int_op(n, >, 128);
- tt_int_op(n, <, 256);
+ tt_int_op(n, OP_GT, 0);
+ tt_int_op(n, OP_GT, 128);
+ tt_int_op(n, OP_LT, 256);
/* Is digest as expected? */
crypto_digest(d, encoded, n);
- tt_int_op(0, ==, crypto_pk_get_digest(pk, d2));
- tt_mem_op(d,==, d2, DIGEST_LEN);
+ tt_int_op(0, OP_EQ, crypto_pk_get_digest(pk, d2));
+ tt_mem_op(d,OP_EQ, d2, DIGEST_LEN);
/* Is fingerprint right? */
- tt_int_op(0, ==, crypto_pk_get_fingerprint(pk, fingerprint, 0));
- tt_int_op(strlen(fingerprint), ==, DIGEST_LEN * 2);
+ tt_int_op(0, OP_EQ, crypto_pk_get_fingerprint(pk, fingerprint, 0));
+ tt_int_op(strlen(fingerprint), OP_EQ, DIGEST_LEN * 2);
test_memeq_hex(d, fingerprint);
/* Are spaces right? */
- tt_int_op(0, ==, crypto_pk_get_fingerprint(pk, fingerprint, 1));
+ tt_int_op(0, OP_EQ, crypto_pk_get_fingerprint(pk, fingerprint, 1));
for (i = 4; i < strlen(fingerprint); i += 5) {
- tt_int_op(fingerprint[i], ==, ' ');
+ tt_int_op(fingerprint[i], OP_EQ, ' ');
}
tor_strstrip(fingerprint, " ");
- tt_int_op(strlen(fingerprint), ==, DIGEST_LEN * 2);
+ tt_int_op(strlen(fingerprint), OP_EQ, DIGEST_LEN * 2);
test_memeq_hex(d, fingerprint);
/* Now hash again and check crypto_pk_get_hashed_fingerprint. */
crypto_digest(d2, d, sizeof(d));
- tt_int_op(0, ==, crypto_pk_get_hashed_fingerprint(pk, fingerprint));
- tt_int_op(strlen(fingerprint), ==, DIGEST_LEN * 2);
+ tt_int_op(0, OP_EQ, crypto_pk_get_hashed_fingerprint(pk, fingerprint));
+ tt_int_op(strlen(fingerprint), OP_EQ, DIGEST_LEN * 2);
test_memeq_hex(d2, fingerprint);
done:
@@ -591,14 +591,14 @@ test_crypto_digests(void *arg)
r = crypto_pk_get_digest(k, digest);
tt_assert(r == 0);
- tt_mem_op(hex_str(digest, DIGEST_LEN),==,
+ tt_mem_op(hex_str(digest, DIGEST_LEN),OP_EQ,
AUTHORITY_SIGNKEY_A_DIGEST, HEX_DIGEST_LEN);
r = crypto_pk_get_all_digests(k, &pkey_digests);
- tt_mem_op(hex_str(pkey_digests.d[DIGEST_SHA1], DIGEST_LEN),==,
+ tt_mem_op(hex_str(pkey_digests.d[DIGEST_SHA1], DIGEST_LEN),OP_EQ,
AUTHORITY_SIGNKEY_A_DIGEST, HEX_DIGEST_LEN);
- tt_mem_op(hex_str(pkey_digests.d[DIGEST_SHA256], DIGEST256_LEN),==,
+ tt_mem_op(hex_str(pkey_digests.d[DIGEST_SHA256], DIGEST256_LEN),OP_EQ,
AUTHORITY_SIGNKEY_A_DIGEST256, HEX_DIGEST256_LEN);
done:
crypto_pk_free(k);
@@ -622,31 +622,31 @@ test_crypto_formats(void *arg)
memset(data1, 6, 1024);
for (idx = 0; idx < 10; ++idx) {
i = base64_encode(data2, 1024, data1, idx);
- tt_int_op(i, >=, 0);
+ tt_int_op(i, OP_GE, 0);
j = base64_decode(data3, 1024, data2, i);
- tt_int_op(j,==, idx);
- tt_mem_op(data3,==, data1, idx);
+ tt_int_op(j,OP_EQ, idx);
+ tt_mem_op(data3,OP_EQ, data1, idx);
}
strlcpy(data1, "Test string that contains 35 chars.", 1024);
strlcat(data1, " 2nd string that contains 35 chars.", 1024);
i = base64_encode(data2, 1024, data1, 71);
- tt_int_op(i, >=, 0);
+ tt_int_op(i, OP_GE, 0);
j = base64_decode(data3, 1024, data2, i);
- tt_int_op(j,==, 71);
- tt_str_op(data3,==, data1);
- tt_int_op(data2[i], ==, '\0');
+ tt_int_op(j,OP_EQ, 71);
+ tt_str_op(data3,OP_EQ, data1);
+ tt_int_op(data2[i], OP_EQ, '\0');
crypto_rand(data1, DIGEST_LEN);
memset(data2, 100, 1024);
digest_to_base64(data2, data1);
- tt_int_op(BASE64_DIGEST_LEN,==, strlen(data2));
- tt_int_op(100,==, data2[BASE64_DIGEST_LEN+2]);
+ tt_int_op(BASE64_DIGEST_LEN,OP_EQ, strlen(data2));
+ tt_int_op(100,OP_EQ, data2[BASE64_DIGEST_LEN+2]);
memset(data3, 99, 1024);
- tt_int_op(digest_from_base64(data3, data2),==, 0);
- tt_mem_op(data1,==, data3, DIGEST_LEN);
- tt_int_op(99,==, data3[DIGEST_LEN+1]);
+ tt_int_op(digest_from_base64(data3, data2),OP_EQ, 0);
+ tt_mem_op(data1,OP_EQ, data3, DIGEST_LEN);
+ tt_int_op(99,OP_EQ, data3[DIGEST_LEN+1]);
tt_assert(digest_from_base64(data3, "###") < 0);
@@ -654,12 +654,12 @@ test_crypto_formats(void *arg)
crypto_rand(data2, DIGEST256_LEN);
memset(data2, 100, 1024);
digest256_to_base64(data2, data1);
- tt_int_op(BASE64_DIGEST256_LEN,==, strlen(data2));
- tt_int_op(100,==, data2[BASE64_DIGEST256_LEN+2]);
+ tt_int_op(BASE64_DIGEST256_LEN,OP_EQ, strlen(data2));
+ tt_int_op(100,OP_EQ, data2[BASE64_DIGEST256_LEN+2]);
memset(data3, 99, 1024);
- tt_int_op(digest256_from_base64(data3, data2),==, 0);
- tt_mem_op(data1,==, data3, DIGEST256_LEN);
- tt_int_op(99,==, data3[DIGEST256_LEN+1]);
+ tt_int_op(digest256_from_base64(data3, data2),OP_EQ, 0);
+ tt_mem_op(data1,OP_EQ, data3, DIGEST256_LEN);
+ tt_int_op(99,OP_EQ, data3[DIGEST256_LEN+1]);
/* Base32 tests */
strlcpy(data1, "5chrs", 1024);
@@ -668,27 +668,27 @@ test_crypto_formats(void *arg)
* By 5s: [00110 10101 10001 10110 10000 11100 10011 10011]
*/
base32_encode(data2, 9, data1, 5);
- tt_str_op(data2,==, "gvrwq4tt");
+ tt_str_op(data2,OP_EQ, "gvrwq4tt");
strlcpy(data1, "\xFF\xF5\x6D\x44\xAE\x0D\x5C\xC9\x62\xC4", 1024);
base32_encode(data2, 30, data1, 10);
- tt_str_op(data2,==, "772w2rfobvomsywe");
+ tt_str_op(data2,OP_EQ, "772w2rfobvomsywe");
/* Base16 tests */
strlcpy(data1, "6chrs\xff", 1024);
base16_encode(data2, 13, data1, 6);
- tt_str_op(data2,==, "3663687273FF");
+ tt_str_op(data2,OP_EQ, "3663687273FF");
strlcpy(data1, "f0d678affc000100", 1024);
i = base16_decode(data2, 8, data1, 16);
- tt_int_op(i,==, 0);
- tt_mem_op(data2,==, "\xf0\xd6\x78\xaf\xfc\x00\x01\x00",8);
+ tt_int_op(i,OP_EQ, 0);
+ tt_mem_op(data2,OP_EQ, "\xf0\xd6\x78\xaf\xfc\x00\x01\x00",8);
/* now try some failing base16 decodes */
- tt_int_op(-1,==, base16_decode(data2, 8, data1, 15)); /* odd input len */
- tt_int_op(-1,==, base16_decode(data2, 7, data1, 16)); /* dest too short */
+ tt_int_op(-1,OP_EQ, base16_decode(data2, 8, data1, 15)); /* odd input len */
+ tt_int_op(-1,OP_EQ, base16_decode(data2, 7, data1, 16)); /* dest too short */
strlcpy(data1, "f0dz!8affc000100", 1024);
- tt_int_op(-1,==, base16_decode(data2, 8, data1, 16));
+ tt_int_op(-1,OP_EQ, base16_decode(data2, 8, data1, 16));
tor_free(data1);
tor_free(data2);
@@ -697,10 +697,11 @@ test_crypto_formats(void *arg)
/* Add spaces to fingerprint */
{
data1 = tor_strdup("ABCD1234ABCD56780000ABCD1234ABCD56780000");
- tt_int_op(strlen(data1),==, 40);
+ tt_int_op(strlen(data1),OP_EQ, 40);
data2 = tor_malloc(FINGERPRINT_LEN+1);
crypto_add_spaces_to_fp(data2, FINGERPRINT_LEN+1, data1);
- tt_str_op(data2,==, "ABCD 1234 ABCD 5678 0000 ABCD 1234 ABCD 5678 0000");
+ tt_str_op(data2, OP_EQ,
+ "ABCD 1234 ABCD 5678 0000 ABCD 1234 ABCD 5678 0000");
tor_free(data1);
tor_free(data2);
}
@@ -728,7 +729,7 @@ test_crypto_s2k_rfc2440(void *arg)
secret_to_key_rfc2440(buf+9, 20, "", 0, buf);
crypto_digest(buf2+9, buf3, 1024);
- tt_mem_op(buf,==, buf2, 29);
+ tt_mem_op(buf,OP_EQ, buf2, 29);
memcpy(buf,"vrbacrda",8);
memcpy(buf2,"vrbacrda",8);
@@ -739,7 +740,7 @@ test_crypto_s2k_rfc2440(void *arg)
memcpy(buf3+i, "vrbacrda12345678", 16);
}
crypto_digest(buf2+9, buf3, 65536);
- tt_mem_op(buf,==, buf2, 29);
+ tt_mem_op(buf,OP_EQ, buf2, 29);
done:
tor_free(buf3);
@@ -757,10 +758,10 @@ run_s2k_tests(const unsigned flags, const unsigned type,
r = secret_to_key_new(buf, sizeof(buf), &sz,
pw1, strlen(pw1), flags);
- tt_int_op(r, ==, S2K_OKAY);
- tt_int_op(buf[0], ==, type);
+ tt_int_op(r, OP_EQ, S2K_OKAY);
+ tt_int_op(buf[0], OP_EQ, type);
- tt_int_op(sz, ==, keylen + speclen);
+ tt_int_op(sz, OP_EQ, keylen + speclen);
if (legacy) {
memmove(buf, buf+1, sz-1);
@@ -768,10 +769,10 @@ run_s2k_tests(const unsigned flags, const unsigned type,
--speclen;
}
- tt_int_op(S2K_OKAY, ==,
+ tt_int_op(S2K_OKAY, OP_EQ,
secret_to_key_check(buf, sz, pw1, strlen(pw1)));
- tt_int_op(S2K_BAD_SECRET, ==,
+ tt_int_op(S2K_BAD_SECRET, OP_EQ,
secret_to_key_check(buf, sz, pw2, strlen(pw2)));
/* Move key to buf2, and clear it. */
@@ -780,24 +781,24 @@ run_s2k_tests(const unsigned flags, const unsigned type,
memset(buf+speclen, 0, sz - speclen);
/* Derivekey should produce the same results. */
- tt_int_op(S2K_OKAY, ==,
+ tt_int_op(S2K_OKAY, OP_EQ,
secret_to_key_derivekey(buf3, keylen, buf, speclen, pw1, strlen(pw1)));
- tt_mem_op(buf2, ==, buf3, keylen);
+ tt_mem_op(buf2, OP_EQ, buf3, keylen);
/* Derivekey with a longer output should fill the output. */
memset(buf2, 0, sizeof(buf2));
- tt_int_op(S2K_OKAY, ==,
+ tt_int_op(S2K_OKAY, OP_EQ,
secret_to_key_derivekey(buf2, sizeof(buf2), buf, speclen,
pw1, strlen(pw1)));
- tt_mem_op(buf2, !=, buf3, sizeof(buf2));
+ tt_mem_op(buf2, OP_NE, buf3, sizeof(buf2));
memset(buf3, 0, sizeof(buf3));
- tt_int_op(S2K_OKAY, ==,
+ tt_int_op(S2K_OKAY, OP_EQ,
secret_to_key_derivekey(buf3, sizeof(buf3), buf, speclen,
pw1, strlen(pw1)));
- tt_mem_op(buf2, ==, buf3, sizeof(buf3));
+ tt_mem_op(buf2, OP_EQ, buf3, sizeof(buf3));
tt_assert(!tor_mem_is_zero((char*)buf2+keylen, sizeof(buf2)-keylen));
done:
@@ -833,50 +834,50 @@ test_crypto_s2k_errors(void *arg)
(void)arg;
/* Bogus specifiers: simple */
- tt_int_op(S2K_BAD_LEN, ==,
+ tt_int_op(S2K_BAD_LEN, OP_EQ,
secret_to_key_derivekey(buf, sizeof(buf),
(const uint8_t*)"", 0, "ABC", 3));
- tt_int_op(S2K_BAD_ALGORITHM, ==,
+ tt_int_op(S2K_BAD_ALGORITHM, OP_EQ,
secret_to_key_derivekey(buf, sizeof(buf),
(const uint8_t*)"\x10", 1, "ABC", 3));
- tt_int_op(S2K_BAD_LEN, ==,
+ tt_int_op(S2K_BAD_LEN, OP_EQ,
secret_to_key_derivekey(buf, sizeof(buf),
(const uint8_t*)"\x01\x02", 2, "ABC", 3));
- tt_int_op(S2K_BAD_LEN, ==,
+ tt_int_op(S2K_BAD_LEN, OP_EQ,
secret_to_key_check((const uint8_t*)"", 0, "ABC", 3));
- tt_int_op(S2K_BAD_ALGORITHM, ==,
+ tt_int_op(S2K_BAD_ALGORITHM, OP_EQ,
secret_to_key_check((const uint8_t*)"\x10", 1, "ABC", 3));
- tt_int_op(S2K_BAD_LEN, ==,
+ tt_int_op(S2K_BAD_LEN, OP_EQ,
secret_to_key_check((const uint8_t*)"\x01\x02", 2, "ABC", 3));
/* too long gets "BAD_LEN" too */
memset(buf, 0, sizeof(buf));
buf[0] = 2;
- tt_int_op(S2K_BAD_LEN, ==,
+ tt_int_op(S2K_BAD_LEN, OP_EQ,
secret_to_key_derivekey(buf2, sizeof(buf2),
buf, sizeof(buf), "ABC", 3));
/* Truncated output */
#ifdef HAVE_LIBSCRYPT_H
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_new(buf, 50, &sz,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_new(buf, 50, &sz,
"ABC", 3, 0));
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_new(buf, 50, &sz,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_new(buf, 50, &sz,
"ABC", 3, S2K_FLAG_LOW_MEM));
#endif
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_new(buf, 37, &sz,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_new(buf, 37, &sz,
"ABC", 3, S2K_FLAG_USE_PBKDF2));
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_new(buf, 29, &sz,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_new(buf, 29, &sz,
"ABC", 3, S2K_FLAG_NO_SCRYPT));
#ifdef HAVE_LIBSCRYPT_H
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_make_specifier(buf, 18, 0));
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_make_specifier(buf, 18,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_make_specifier(buf, 18, 0));
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_make_specifier(buf, 18,
S2K_FLAG_LOW_MEM));
#endif
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_make_specifier(buf, 17,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_make_specifier(buf, 17,
S2K_FLAG_USE_PBKDF2));
- tt_int_op(S2K_TRUNCATED, ==, secret_to_key_make_specifier(buf, 9,
+ tt_int_op(S2K_TRUNCATED, OP_EQ, secret_to_key_make_specifier(buf, 9,
S2K_FLAG_NO_SCRYPT));
/* Now try using type-specific bogus specifiers. */
@@ -886,7 +887,7 @@ test_crypto_s2k_errors(void *arg)
memset(buf, 0, sizeof(buf));
buf[0] = 1; /* pbkdf2 */
buf[17] = 100; /* 1<<100 is much bigger than INT32_MAX */
- tt_int_op(S2K_BAD_PARAMS, ==,
+ tt_int_op(S2K_BAD_PARAMS, OP_EQ,
secret_to_key_derivekey(buf2, sizeof(buf2),
buf, 18, "ABC", 3));
@@ -895,7 +896,7 @@ test_crypto_s2k_errors(void *arg)
memset(buf, 0, sizeof(buf));
buf[0] = 2; /* scrypt */
buf[17] = 100; /* 1<<100 is much bigger than UINT64_MAX */
- tt_int_op(S2K_BAD_PARAMS, ==,
+ tt_int_op(S2K_BAD_PARAMS, OP_EQ,
secret_to_key_derivekey(buf2, sizeof(buf2),
buf, 19, "ABC", 3));
#endif
@@ -926,7 +927,7 @@ test_crypto_scrypt_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"0400", 4);
memset(out, 0x00, sizeof(out));
- tt_int_op(64, ==,
+ tt_int_op(64, OP_EQ,
secret_to_key_compute_key(out, 64, spec, 2, "", 0, 2));
test_memeq_hex(out,
"77d6576238657b203b19ca42c18a0497"
@@ -937,7 +938,7 @@ test_crypto_scrypt_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"4e61436c" "0A34", 12);
memset(out, 0x00, sizeof(out));
- tt_int_op(64, ==,
+ tt_int_op(64, OP_EQ,
secret_to_key_compute_key(out, 64, spec, 6, "password", 8, 2));
test_memeq_hex(out,
"fdbabe1c9d3472007856e7190d01e9fe"
@@ -948,7 +949,7 @@ test_crypto_scrypt_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"536f6469756d43686c6f72696465" "0e30", 32);
memset(out, 0x00, sizeof(out));
- tt_int_op(64, ==,
+ tt_int_op(64, OP_EQ,
secret_to_key_compute_key(out, 64, spec, 16,
"pleaseletmein", 13, 2));
test_memeq_hex(out,
@@ -960,7 +961,7 @@ test_crypto_scrypt_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"536f6469756d43686c6f72696465" "1430", 32);
memset(out, 0x00, sizeof(out));
- tt_int_op(64, ==,
+ tt_int_op(64, OP_EQ,
secret_to_key_compute_key(out, 64, spec, 16,
"pleaseletmein", 13, 2));
test_memeq_hex(out,
@@ -984,28 +985,28 @@ test_crypto_pbkdf2_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"73616c74" "00" , 10);
memset(out, 0x00, sizeof(out));
- tt_int_op(20, ==,
+ tt_int_op(20, OP_EQ,
secret_to_key_compute_key(out, 20, spec, 5, "password", 8, 1));
test_memeq_hex(out, "0c60c80f961f0e71f3a9b524af6012062fe037a6");
base16_decode((char*)spec, sizeof(spec),
"73616c74" "01" , 10);
memset(out, 0x00, sizeof(out));
- tt_int_op(20, ==,
+ tt_int_op(20, OP_EQ,
secret_to_key_compute_key(out, 20, spec, 5, "password", 8, 1));
test_memeq_hex(out, "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957");
base16_decode((char*)spec, sizeof(spec),
"73616c74" "0C" , 10);
memset(out, 0x00, sizeof(out));
- tt_int_op(20, ==,
+ tt_int_op(20, OP_EQ,
secret_to_key_compute_key(out, 20, spec, 5, "password", 8, 1));
test_memeq_hex(out, "4b007901b765489abead49d926f721d065a429c1");
base16_decode((char*)spec, sizeof(spec),
"73616c74" "18" , 10);
memset(out, 0x00, sizeof(out));
- tt_int_op(20, ==,
+ tt_int_op(20, OP_EQ,
secret_to_key_compute_key(out, 20, spec, 5, "password", 8, 1));
test_memeq_hex(out, "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984");
@@ -1013,7 +1014,7 @@ test_crypto_pbkdf2_vectors(void *arg)
"73616c7453414c5473616c7453414c5473616c745"
"3414c5473616c7453414c5473616c74" "0C" , 74);
memset(out, 0x00, sizeof(out));
- tt_int_op(25, ==,
+ tt_int_op(25, OP_EQ,
secret_to_key_compute_key(out, 25, spec, 37,
"passwordPASSWORDpassword", 24, 1));
test_memeq_hex(out, "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038");
@@ -1021,7 +1022,7 @@ test_crypto_pbkdf2_vectors(void *arg)
base16_decode((char*)spec, sizeof(spec),
"7361006c74" "0c" , 12);
memset(out, 0x00, sizeof(out));
- tt_int_op(16, ==,
+ tt_int_op(16, OP_EQ,
secret_to_key_compute_key(out, 16, spec, 6, "pass\0word", 9, 1));
test_memeq_hex(out, "56fa6aa75548099dcc37d7f03425e0c3");
@@ -1049,30 +1050,30 @@ test_crypto_pwbox(void *arg)
(void)arg;
for (i = 0; i < ARRAY_LENGTH(flags); ++i) {
- tt_int_op(0, ==, crypto_pwbox(&boxed, &len,
+ tt_int_op(0, OP_EQ, crypto_pwbox(&boxed, &len,
(const uint8_t*)msg, strlen(msg),
pw, strlen(pw), flags[i]));
tt_assert(boxed);
tt_assert(len > 128+32);
- tt_int_op(0, ==, crypto_unpwbox(&decoded, &dlen, boxed, len,
+ tt_int_op(0, OP_EQ, crypto_unpwbox(&decoded, &dlen, boxed, len,
pw, strlen(pw)));
tt_assert(decoded);
- tt_uint_op(dlen, ==, strlen(msg));
- tt_mem_op(decoded, ==, msg, dlen);
+ tt_uint_op(dlen, OP_EQ, strlen(msg));
+ tt_mem_op(decoded, OP_EQ, msg, dlen);
tor_free(decoded);
- tt_int_op(UNPWBOX_BAD_SECRET, ==, crypto_unpwbox(&decoded, &dlen,
+ tt_int_op(UNPWBOX_BAD_SECRET, OP_EQ, crypto_unpwbox(&decoded, &dlen,
boxed, len,
pw, strlen(pw)-1));
boxed[len-1] ^= 1;
- tt_int_op(UNPWBOX_BAD_SECRET, ==, crypto_unpwbox(&decoded, &dlen,
+ tt_int_op(UNPWBOX_BAD_SECRET, OP_EQ, crypto_unpwbox(&decoded, &dlen,
boxed, len,
pw, strlen(pw)));
boxed[0] = 255;
- tt_int_op(UNPWBOX_CORRUPTED, ==, crypto_unpwbox(&decoded, &dlen,
+ tt_int_op(UNPWBOX_CORRUPTED, OP_EQ, crypto_unpwbox(&decoded, &dlen,
boxed, len,
pw, strlen(pw)));
@@ -1114,79 +1115,79 @@ test_crypto_aes_iv(void *arg)
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted1, 16 + 4095,
plain, 4095);
- tt_int_op(encrypted_size,==, 16 + 4095);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 4095);
tt_assert(encrypted_size > 0); /* This is obviously true, since 4111 is
* greater than 0, but its truth is not
* obvious to all analysis tools. */
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 4095,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 4095);
+ tt_int_op(decrypted_size,OP_EQ, 4095);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain,==, decrypted1, 4095);
+ tt_mem_op(plain,OP_EQ, decrypted1, 4095);
/* Encrypt a second time (with a new random initialization vector). */
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted2, 16 + 4095,
plain, 4095);
- tt_int_op(encrypted_size,==, 16 + 4095);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 4095);
tt_assert(encrypted_size > 0);
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted2, 4095,
encrypted2, encrypted_size);
- tt_int_op(decrypted_size,==, 4095);
+ tt_int_op(decrypted_size,OP_EQ, 4095);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain,==, decrypted2, 4095);
- tt_mem_op(encrypted1,!=, encrypted2, encrypted_size);
+ tt_mem_op(plain,OP_EQ, decrypted2, 4095);
+ tt_mem_op(encrypted1,OP_NE, encrypted2, encrypted_size);
/* Decrypt with the wrong key. */
decrypted_size = crypto_cipher_decrypt_with_iv(key2, decrypted2, 4095,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 4095);
- tt_mem_op(plain,!=, decrypted2, decrypted_size);
+ tt_int_op(decrypted_size,OP_EQ, 4095);
+ tt_mem_op(plain,OP_NE, decrypted2, decrypted_size);
/* Alter the initialization vector. */
encrypted1[0] += 42;
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 4095,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 4095);
- tt_mem_op(plain,!=, decrypted2, 4095);
+ tt_int_op(decrypted_size,OP_EQ, 4095);
+ tt_mem_op(plain,OP_NE, decrypted2, 4095);
/* Special length case: 1. */
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted1, 16 + 1,
plain_1, 1);
- tt_int_op(encrypted_size,==, 16 + 1);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 1);
tt_assert(encrypted_size > 0);
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 1,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 1);
+ tt_int_op(decrypted_size,OP_EQ, 1);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain_1,==, decrypted1, 1);
+ tt_mem_op(plain_1,OP_EQ, decrypted1, 1);
/* Special length case: 15. */
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted1, 16 + 15,
plain_15, 15);
- tt_int_op(encrypted_size,==, 16 + 15);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 15);
tt_assert(encrypted_size > 0);
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 15,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 15);
+ tt_int_op(decrypted_size,OP_EQ, 15);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain_15,==, decrypted1, 15);
+ tt_mem_op(plain_15,OP_EQ, decrypted1, 15);
/* Special length case: 16. */
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted1, 16 + 16,
plain_16, 16);
- tt_int_op(encrypted_size,==, 16 + 16);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 16);
tt_assert(encrypted_size > 0);
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 16,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 16);
+ tt_int_op(decrypted_size,OP_EQ, 16);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain_16,==, decrypted1, 16);
+ tt_mem_op(plain_16,OP_EQ, decrypted1, 16);
/* Special length case: 17. */
encrypted_size = crypto_cipher_encrypt_with_iv(key1, encrypted1, 16 + 17,
plain_17, 17);
- tt_int_op(encrypted_size,==, 16 + 17);
+ tt_int_op(encrypted_size,OP_EQ, 16 + 17);
tt_assert(encrypted_size > 0);
decrypted_size = crypto_cipher_decrypt_with_iv(key1, decrypted1, 17,
encrypted1, encrypted_size);
- tt_int_op(decrypted_size,==, 17);
+ tt_int_op(decrypted_size,OP_EQ, 17);
tt_assert(decrypted_size > 0);
- tt_mem_op(plain_17,==, decrypted1, 17);
+ tt_mem_op(plain_17,OP_EQ, decrypted1, 17);
done:
/* Free memory. */
@@ -1208,26 +1209,26 @@ test_crypto_base32_decode(void *arg)
/* Encode and decode a random string. */
base32_encode(encoded, 96 + 1, plain, 60);
res = base32_decode(decoded, 60, encoded, 96);
- tt_int_op(res,==, 0);
- tt_mem_op(plain,==, decoded, 60);
+ tt_int_op(res,OP_EQ, 0);
+ tt_mem_op(plain,OP_EQ, decoded, 60);
/* Encode, uppercase, and decode a random string. */
base32_encode(encoded, 96 + 1, plain, 60);
tor_strupper(encoded);
res = base32_decode(decoded, 60, encoded, 96);
- tt_int_op(res,==, 0);
- tt_mem_op(plain,==, decoded, 60);
+ tt_int_op(res,OP_EQ, 0);
+ tt_mem_op(plain,OP_EQ, decoded, 60);
/* Change encoded string and decode. */
if (encoded[0] == 'A' || encoded[0] == 'a')
encoded[0] = 'B';
else
encoded[0] = 'A';
res = base32_decode(decoded, 60, encoded, 96);
- tt_int_op(res,==, 0);
- tt_mem_op(plain,!=, decoded, 60);
+ tt_int_op(res,OP_EQ, 0);
+ tt_mem_op(plain,OP_NE, decoded, 60);
/* Bad encodings. */
encoded[0] = '!';
res = base32_decode(decoded, 60, encoded, 96);
- tt_int_op(0, >, res);
+ tt_int_op(0, OP_GT, res);
done:
;
@@ -1250,7 +1251,7 @@ test_crypto_kdf_TAP(void *arg)
* your own. */
memset(key_material, 0, sizeof(key_material));
EXPAND("");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"5ba93c9db0cff93f52b521d7420e43f6eda2784fbf8b4530d8"
"d246dd74ac53a13471bba17941dff7c4ea21bb365bbeeaf5f2"
@@ -1258,7 +1259,7 @@ test_crypto_kdf_TAP(void *arg)
"f07b01e13da42c6cf1de3abfdea9b95f34687cbbe92b9a7383");
EXPAND("Tor");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"776c6214fc647aaa5f683c737ee66ec44f03d0372e1cce6922"
"7950f236ddf1e329a7ce7c227903303f525a8c6662426e8034"
@@ -1266,7 +1267,7 @@ test_crypto_kdf_TAP(void *arg)
"3f45dfda1a80bdc8b80de01b23e3e0ffae099b3e4ccf28dc28");
EXPAND("AN ALARMING ITEM TO FIND ON A MONTHLY AUTO-DEBIT NOTICE");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"a340b5d126086c3ab29c2af4179196dbf95e1c72431419d331"
"4844bf8f6afb6098db952b95581fb6c33625709d6f4400b8e7"
@@ -1302,7 +1303,7 @@ test_crypto_hkdf_sha256(void *arg)
/* Test vectors generated with ntor_ref.py */
memset(key_material, 0, sizeof(key_material));
EXPAND("");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"d3490ed48b12a48f9547861583573fe3f19aafe3f81dc7fc75"
"eeed96d741b3290f941576c1f9f0b2d463d1ec7ab2c6bf71cd"
@@ -1310,7 +1311,7 @@ test_crypto_hkdf_sha256(void *arg)
"dcf6abe0d20c77cf363e8ffe358927817a3d3e73712cee28d8");
EXPAND("Tor");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"5521492a85139a8d9107a2d5c0d9c91610d0f95989975ebee6"
"c02a4f8d622a6cfdf9b7c7edd3832e2760ded1eac309b76f8d"
@@ -1318,7 +1319,7 @@ test_crypto_hkdf_sha256(void *arg)
"961be9fdb9f93197ea8e5977180801926d3321fa21513e59ac");
EXPAND("AN ALARMING ITEM TO FIND ON YOUR CREDIT-RATING STATEMENT");
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
test_memeq_hex(key_material,
"a2aa9b50da7e481d30463adb8f233ff06e9571a0ca6ab6df0f"
"b206fa34e5bc78d063fc291501beec53b36e5a0e434561200c"
@@ -1381,7 +1382,7 @@ test_crypto_curve25519_impl(void *arg)
e2k[31] |= (byte & 0x80);
}
curve25519_impl(e1e2k,e1,e2k);
- tt_mem_op(e1e2k,==, e2e1k, 32);
+ tt_mem_op(e1e2k,OP_EQ, e2e1k, 32);
if (loop == loop_max-1) {
break;
}
@@ -1417,7 +1418,7 @@ test_crypto_curve25519_wrappers(void *arg)
tt_assert(curve25519_public_key_is_ok(&pubkey2));
curve25519_handshake(output1, &seckey1, &pubkey2);
curve25519_handshake(output2, &seckey2, &pubkey1);
- tt_mem_op(output1,==, output2, sizeof(output1));
+ tt_mem_op(output1,OP_EQ, output2, sizeof(output1));
done:
;
@@ -1434,26 +1435,26 @@ test_crypto_curve25519_encode(void *arg)
curve25519_secret_key_generate(&seckey, 0);
curve25519_public_key_generate(&key1, &seckey);
- tt_int_op(0, ==, curve25519_public_to_base64(buf, &key1));
- tt_int_op(CURVE25519_BASE64_PADDED_LEN, ==, strlen(buf));
+ tt_int_op(0, OP_EQ, curve25519_public_to_base64(buf, &key1));
+ tt_int_op(CURVE25519_BASE64_PADDED_LEN, OP_EQ, strlen(buf));
- tt_int_op(0, ==, curve25519_public_from_base64(&key2, buf));
- tt_mem_op(key1.public_key,==, key2.public_key, CURVE25519_PUBKEY_LEN);
+ tt_int_op(0, OP_EQ, curve25519_public_from_base64(&key2, buf));
+ tt_mem_op(key1.public_key,OP_EQ, key2.public_key, CURVE25519_PUBKEY_LEN);
buf[CURVE25519_BASE64_PADDED_LEN - 1] = '\0';
- tt_int_op(CURVE25519_BASE64_PADDED_LEN-1, ==, strlen(buf));
- tt_int_op(0, ==, curve25519_public_from_base64(&key3, buf));
- tt_mem_op(key1.public_key,==, key3.public_key, CURVE25519_PUBKEY_LEN);
+ tt_int_op(CURVE25519_BASE64_PADDED_LEN-1, OP_EQ, strlen(buf));
+ tt_int_op(0, OP_EQ, curve25519_public_from_base64(&key3, buf));
+ tt_mem_op(key1.public_key,OP_EQ, key3.public_key, CURVE25519_PUBKEY_LEN);
/* Now try bogus parses. */
strlcpy(buf, "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$=", sizeof(buf));
- tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+ tt_int_op(-1, OP_EQ, curve25519_public_from_base64(&key3, buf));
strlcpy(buf, "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", sizeof(buf));
- tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+ tt_int_op(-1, OP_EQ, curve25519_public_from_base64(&key3, buf));
strlcpy(buf, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", sizeof(buf));
- tt_int_op(-1, ==, curve25519_public_from_base64(&key3, buf));
+ tt_int_op(-1, OP_EQ, curve25519_public_from_base64(&key3, buf));
done:
;
@@ -1472,45 +1473,49 @@ test_crypto_curve25519_persist(void *arg)
(void)arg;
- tt_int_op(0,==,curve25519_keypair_generate(&keypair, 0));
+ tt_int_op(0,OP_EQ,curve25519_keypair_generate(&keypair, 0));
- tt_int_op(0,==,curve25519_keypair_write_to_file(&keypair, fname, "testing"));
- tt_int_op(0,==,curve25519_keypair_read_from_file(&keypair2, &tag, fname));
- tt_str_op(tag,==,"testing");
+ tt_int_op(0,OP_EQ,
+ curve25519_keypair_write_to_file(&keypair, fname, "testing"));
+ tt_int_op(0,OP_EQ,curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+ tt_str_op(tag,OP_EQ,"testing");
tor_free(tag);
- tt_mem_op(keypair.pubkey.public_key,==,
+ tt_mem_op(keypair.pubkey.public_key,OP_EQ,
keypair2.pubkey.public_key,
CURVE25519_PUBKEY_LEN);
- tt_mem_op(keypair.seckey.secret_key,==,
+ tt_mem_op(keypair.seckey.secret_key,OP_EQ,
keypair2.seckey.secret_key,
CURVE25519_SECKEY_LEN);
content = read_file_to_str(fname, RFTS_BIN, &st);
tt_assert(content);
taglen = strlen("== c25519v1: testing ==");
- tt_u64_op((uint64_t)st.st_size, ==,
+ tt_u64_op((uint64_t)st.st_size, OP_EQ,
32+CURVE25519_PUBKEY_LEN+CURVE25519_SECKEY_LEN);
tt_assert(fast_memeq(content, "== c25519v1: testing ==", taglen));
tt_assert(tor_mem_is_zero(content+taglen, 32-taglen));
cp = content + 32;
- tt_mem_op(keypair.seckey.secret_key,==,
+ tt_mem_op(keypair.seckey.secret_key,OP_EQ,
cp,
CURVE25519_SECKEY_LEN);
cp += CURVE25519_SECKEY_LEN;
- tt_mem_op(keypair.pubkey.public_key,==,
+ tt_mem_op(keypair.pubkey.public_key,OP_EQ,
cp,
CURVE25519_SECKEY_LEN);
tor_free(fname);
fname = tor_strdup(get_fname("bogus_keypair"));
- tt_int_op(-1, ==, curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+ tt_int_op(-1, OP_EQ,
+ curve25519_keypair_read_from_file(&keypair2, &tag, fname));
tor_free(tag);
content[69] ^= 0xff;
- tt_int_op(0, ==, write_bytes_to_file(fname, content, (size_t)st.st_size, 1));
- tt_int_op(-1, ==, curve25519_keypair_read_from_file(&keypair2, &tag, fname));
+ tt_int_op(0, OP_EQ,
+ write_bytes_to_file(fname, content, (size_t)st.st_size, 1));
+ tt_int_op(-1, OP_EQ,
+ curve25519_keypair_read_from_file(&keypair2, &tag, fname));
done:
tor_free(fname);
@@ -1536,41 +1541,41 @@ test_crypto_ed25519_simple(void *arg)
(void)arg;
- tt_int_op(0, ==, ed25519_secret_key_generate(&sec1, 0));
- tt_int_op(0, ==, ed25519_secret_key_generate(&sec2, 1));
+ tt_int_op(0, OP_EQ, ed25519_secret_key_generate(&sec1, 0));
+ tt_int_op(0, OP_EQ, ed25519_secret_key_generate(&sec2, 1));
- tt_int_op(0, ==, ed25519_public_key_generate(&pub1, &sec1));
- tt_int_op(0, ==, ed25519_public_key_generate(&pub2, &sec1));
+ tt_int_op(0, OP_EQ, ed25519_public_key_generate(&pub1, &sec1));
+ tt_int_op(0, OP_EQ, ed25519_public_key_generate(&pub2, &sec1));
- tt_mem_op(pub1.pubkey, ==, pub2.pubkey, sizeof(pub1.pubkey));
+ tt_mem_op(pub1.pubkey, OP_EQ, pub2.pubkey, sizeof(pub1.pubkey));
memcpy(&kp1.pubkey, &pub1, sizeof(pub1));
memcpy(&kp1.seckey, &sec1, sizeof(sec1));
- tt_int_op(0, ==, ed25519_sign(&sig1, msg, msg_len, &kp1));
- tt_int_op(0, ==, ed25519_sign(&sig2, msg, msg_len, &kp1));
+ tt_int_op(0, OP_EQ, ed25519_sign(&sig1, msg, msg_len, &kp1));
+ tt_int_op(0, OP_EQ, ed25519_sign(&sig2, msg, msg_len, &kp1));
/* Ed25519 signatures are deterministic */
- tt_mem_op(sig1.sig, ==, sig2.sig, sizeof(sig1.sig));
+ tt_mem_op(sig1.sig, OP_EQ, sig2.sig, sizeof(sig1.sig));
/* Basic signature is valid. */
- tt_int_op(0, ==, ed25519_checksig(&sig1, msg, msg_len, &pub1));
+ tt_int_op(0, OP_EQ, ed25519_checksig(&sig1, msg, msg_len, &pub1));
/* Altered signature doesn't work. */
sig1.sig[0] ^= 3;
- tt_int_op(-1, ==, ed25519_checksig(&sig1, msg, msg_len, &pub1));
+ tt_int_op(-1, OP_EQ, ed25519_checksig(&sig1, msg, msg_len, &pub1));
/* Wrong public key doesn't work. */
- tt_int_op(0, ==, ed25519_public_key_generate(&pub2, &sec2));
- tt_int_op(-1, ==, ed25519_checksig(&sig2, msg, msg_len, &pub2));
+ tt_int_op(0, OP_EQ, ed25519_public_key_generate(&pub2, &sec2));
+ tt_int_op(-1, OP_EQ, ed25519_checksig(&sig2, msg, msg_len, &pub2));
/* Wrong message doesn't work. */
- tt_int_op(0, ==, ed25519_checksig(&sig2, msg, msg_len, &pub1));
- tt_int_op(-1, ==, ed25519_checksig(&sig2, msg, msg_len-1, &pub1));
- tt_int_op(-1, ==, ed25519_checksig(&sig2, msg2, msg2_len, &pub1));
+ tt_int_op(0, OP_EQ, ed25519_checksig(&sig2, msg, msg_len, &pub1));
+ tt_int_op(-1, OP_EQ, ed25519_checksig(&sig2, msg, msg_len-1, &pub1));
+ tt_int_op(-1, OP_EQ, ed25519_checksig(&sig2, msg2, msg2_len, &pub1));
/* Batch signature checking works with some bad. */
- tt_int_op(0, ==, ed25519_keypair_generate(&kp2, 0));
- tt_int_op(0, ==, ed25519_sign(&sig1, msg, msg_len, &kp2));
+ tt_int_op(0, OP_EQ, ed25519_keypair_generate(&kp2, 0));
+ tt_int_op(0, OP_EQ, ed25519_sign(&sig1, msg, msg_len, &kp2));
{
ed25519_checkable_t ch[] = {
{ &pub1, sig2, msg, msg_len }, /*ok*/
@@ -1579,12 +1584,12 @@ test_crypto_ed25519_simple(void *arg)
{ &kp2.pubkey, sig1, msg, msg_len }, /*ok*/
};
int okay[4];
- tt_int_op(-2, ==, ed25519_checksig_batch(okay, ch, 4));
- tt_int_op(okay[0], ==, 1);
- tt_int_op(okay[1], ==, 0);
- tt_int_op(okay[2], ==, 0);
- tt_int_op(okay[3], ==, 1);
- tt_int_op(-2, ==, ed25519_checksig_batch(NULL, ch, 4));
+ tt_int_op(-2, OP_EQ, ed25519_checksig_batch(okay, ch, 4));
+ tt_int_op(okay[0], OP_EQ, 1);
+ tt_int_op(okay[1], OP_EQ, 0);
+ tt_int_op(okay[2], OP_EQ, 0);
+ tt_int_op(okay[3], OP_EQ, 1);
+ tt_int_op(-2, OP_EQ, ed25519_checksig_batch(NULL, ch, 4));
}
/* Batch signature checking works with all good. */
@@ -1594,10 +1599,10 @@ test_crypto_ed25519_simple(void *arg)
{ &kp2.pubkey, sig1, msg, msg_len }, /*ok*/
};
int okay[2];
- tt_int_op(0, ==, ed25519_checksig_batch(okay, ch, 2));
- tt_int_op(okay[0], ==, 1);
- tt_int_op(okay[1], ==, 1);
- tt_int_op(0, ==, ed25519_checksig_batch(NULL, ch, 2));
+ tt_int_op(0, OP_EQ, ed25519_checksig_batch(okay, ch, 2));
+ tt_int_op(okay[0], OP_EQ, 1);
+ tt_int_op(okay[1], OP_EQ, 1);
+ tt_int_op(0, OP_EQ, ed25519_checksig_batch(NULL, ch, 2));
}
done:
@@ -1680,14 +1685,14 @@ test_crypto_ed25519_test_vectors(void *arg)
base16_decode((char*)sk_seed, sizeof(sk_seed),
items[i].sk, 64);
ed25519_secret_key_from_seed(&kp.seckey, sk_seed);
- tt_int_op(0, ==, ed25519_public_key_generate(&kp.pubkey, &kp.seckey));
+ tt_int_op(0, OP_EQ, ed25519_public_key_generate(&kp.pubkey, &kp.seckey));
test_memeq_hex(kp.pubkey.pubkey, items[i].pk);
msg_len = strlen(items[i].msg) / 2;
msg = tor_malloc(msg_len);
base16_decode((char*)msg, msg_len, items[i].msg, strlen(items[i].msg));
- tt_int_op(0, ==, ed25519_sign(&sig, msg, msg_len, &kp));
+ tt_int_op(0, OP_EQ, ed25519_sign(&sig, msg, msg_len, &kp));
test_memeq_hex(sig.sig, items[i].sig);
tor_free(msg);
@@ -1707,14 +1712,14 @@ test_crypto_ed25519_encode(void *arg)
(void) arg;
/* Test roundtrip. */
- tt_int_op(0, ==, ed25519_keypair_generate(&kp, 0));
- tt_int_op(0, ==, ed25519_public_to_base64(buf, &kp.pubkey));
- tt_int_op(ED25519_BASE64_LEN, ==, strlen(buf));
- tt_int_op(0, ==, ed25519_public_from_base64(&pk, buf));
- tt_mem_op(kp.pubkey.pubkey, ==, pk.pubkey, ED25519_PUBKEY_LEN);
+ tt_int_op(0, OP_EQ, ed25519_keypair_generate(&kp, 0));
+ tt_int_op(0, OP_EQ, ed25519_public_to_base64(buf, &kp.pubkey));
+ tt_int_op(ED25519_BASE64_LEN, OP_EQ, strlen(buf));
+ tt_int_op(0, OP_EQ, ed25519_public_from_base64(&pk, buf));
+ tt_mem_op(kp.pubkey.pubkey, OP_EQ, pk.pubkey, ED25519_PUBKEY_LEN);
/* Test known value. */
- tt_int_op(0, ==, ed25519_public_from_base64(&pk,
+ tt_int_op(0, OP_EQ, ed25519_public_from_base64(&pk,
"lVIuIctLjbGZGU5wKMNXxXlSE3cW4kaqkqm04u6pxvM"));
test_memeq_hex(pk.pubkey,
"95522e21cb4b8db199194e7028c357c57952137716e246aa92a9b4e2eea9c6f3");
@@ -1740,21 +1745,21 @@ test_crypto_ed25519_convert(void *arg)
int bit=0;
ed25519_signature_t sig;
- tt_int_op(0,==,curve25519_keypair_generate(&curve25519_keypair, i&1));
- tt_int_op(0,==,ed25519_keypair_from_curve25519_keypair(
+ tt_int_op(0,OP_EQ,curve25519_keypair_generate(&curve25519_keypair, i&1));
+ tt_int_op(0,OP_EQ,ed25519_keypair_from_curve25519_keypair(
&ed25519_keypair, &bit, &curve25519_keypair));
- tt_int_op(0,==,ed25519_public_key_from_curve25519_public_key(
+ tt_int_op(0,OP_EQ,ed25519_public_key_from_curve25519_public_key(
&ed25519_pubkey, &curve25519_keypair.pubkey, bit));
- tt_mem_op(ed25519_pubkey.pubkey, ==, ed25519_keypair.pubkey.pubkey, 32);
+ tt_mem_op(ed25519_pubkey.pubkey, OP_EQ, ed25519_keypair.pubkey.pubkey, 32);
- tt_int_op(0,==,ed25519_sign(&sig, msg, sizeof(msg), &ed25519_keypair));
- tt_int_op(0,==,ed25519_checksig(&sig, msg, sizeof(msg),
+ tt_int_op(0,OP_EQ,ed25519_sign(&sig, msg, sizeof(msg), &ed25519_keypair));
+ tt_int_op(0,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg),
&ed25519_pubkey));
- tt_int_op(-1,==,ed25519_checksig(&sig, msg, sizeof(msg)-1,
+ tt_int_op(-1,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg)-1,
&ed25519_pubkey));
sig.sig[0] ^= 15;
- tt_int_op(-1,==,ed25519_checksig(&sig, msg, sizeof(msg),
+ tt_int_op(-1,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg),
&ed25519_pubkey));
}
@@ -1782,26 +1787,26 @@ test_crypto_ed25519_blinding(void *arg)
crypto_rand((char*) blinding, sizeof(blinding));
- tt_int_op(0,==,ed25519_keypair_generate(&ed25519_keypair, 0));
- tt_int_op(0,==,ed25519_keypair_blind(&ed25519_keypair_blinded,
+ tt_int_op(0,OP_EQ,ed25519_keypair_generate(&ed25519_keypair, 0));
+ tt_int_op(0,OP_EQ,ed25519_keypair_blind(&ed25519_keypair_blinded,
&ed25519_keypair, blinding));
- tt_int_op(0,==,ed25519_public_blind(&ed25519_pubkey_blinded,
+ tt_int_op(0,OP_EQ,ed25519_public_blind(&ed25519_pubkey_blinded,
&ed25519_keypair.pubkey, blinding));
- tt_mem_op(ed25519_pubkey_blinded.pubkey, ==,
+ tt_mem_op(ed25519_pubkey_blinded.pubkey, OP_EQ,
ed25519_keypair_blinded.pubkey.pubkey, 32);
- tt_int_op(0,==,ed25519_sign(&sig, msg, sizeof(msg),
+ tt_int_op(0,OP_EQ,ed25519_sign(&sig, msg, sizeof(msg),
&ed25519_keypair_blinded));
- tt_int_op(0,==,ed25519_checksig(&sig, msg, sizeof(msg),
+ tt_int_op(0,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg),
&ed25519_pubkey_blinded));
- tt_int_op(-1,==,ed25519_checksig(&sig, msg, sizeof(msg)-1,
+ tt_int_op(-1,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg)-1,
&ed25519_pubkey_blinded));
sig.sig[0] ^= 15;
- tt_int_op(-1,==,ed25519_checksig(&sig, msg, sizeof(msg),
+ tt_int_op(-1,OP_EQ,ed25519_checksig(&sig, msg, sizeof(msg),
&ed25519_pubkey_blinded));
}
@@ -1829,43 +1834,43 @@ test_crypto_ed25519_testvectors(void *arg)
#define DECODE(p,s) base16_decode((char*)(p),sizeof(p),(s),strlen(s))
#define EQ(a,h) test_memeq_hex((const char*)(a), (h))
- tt_int_op(0, ==, DECODE(sk, ED25519_SECRET_KEYS[i]));
- tt_int_op(0, ==, DECODE(blinding_param, ED25519_BLINDING_PARAMS[i]));
+ tt_int_op(0, OP_EQ, DECODE(sk, ED25519_SECRET_KEYS[i]));
+ tt_int_op(0, OP_EQ, DECODE(blinding_param, ED25519_BLINDING_PARAMS[i]));
- tt_int_op(0, ==, ed25519_secret_key_from_seed(&esk, sk));
+ tt_int_op(0, OP_EQ, ed25519_secret_key_from_seed(&esk, sk));
EQ(esk.seckey, ED25519_EXPANDED_SECRET_KEYS[i]);
- tt_int_op(0, ==, ed25519_public_key_generate(&pk, &esk));
+ tt_int_op(0, OP_EQ, ed25519_public_key_generate(&pk, &esk));
EQ(pk.pubkey, ED25519_PUBLIC_KEYS[i]);
memcpy(&curvekp.seckey.secret_key, esk.seckey, 32);
curve25519_public_key_generate(&curvekp.pubkey, &curvekp.seckey);
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
ed25519_keypair_from_curve25519_keypair(&keypair, &sign, &curvekp));
- tt_int_op(0, ==, ed25519_public_key_from_curve25519_public_key(
+ tt_int_op(0, OP_EQ, ed25519_public_key_from_curve25519_public_key(
&pkfromcurve, &curvekp.pubkey, sign));
- tt_mem_op(keypair.pubkey.pubkey, ==, pkfromcurve.pubkey, 32);
+ tt_mem_op(keypair.pubkey.pubkey, OP_EQ, pkfromcurve.pubkey, 32);
EQ(curvekp.pubkey.public_key, ED25519_CURVE25519_PUBLIC_KEYS[i]);
/* Self-signing */
memcpy(&keypair.seckey, &esk, sizeof(esk));
memcpy(&keypair.pubkey, &pk, sizeof(pk));
- tt_int_op(0, ==, ed25519_sign(&sig, pk.pubkey, 32, &keypair));
+ tt_int_op(0, OP_EQ, ed25519_sign(&sig, pk.pubkey, 32, &keypair));
EQ(sig.sig, ED25519_SELF_SIGNATURES[i]);
/* Blinding */
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
ed25519_keypair_blind(&blind_keypair, &keypair, blinding_param));
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
ed25519_public_blind(&blind_pk, &pk, blinding_param));
EQ(blind_keypair.seckey.seckey, ED25519_BLINDED_SECRET_KEYS[i]);
EQ(blind_pk.pubkey, ED25519_BLINDED_PUBLIC_KEYS[i]);
- tt_mem_op(blind_pk.pubkey, ==, blind_keypair.pubkey.pubkey, 32);
+ tt_mem_op(blind_pk.pubkey, OP_EQ, blind_keypair.pubkey.pubkey, 32);
#undef DECODE
#undef EQ
@@ -1962,7 +1967,7 @@ test_crypto_siphash(void *arg)
for (i = 0; i < 64; ++i) {
uint64_t r = siphash24(input, i, &K);
for (j = 0; j < 8; ++j) {
- tt_int_op( (r >> (j*8)) & 0xff, ==, VECTORS[i][j]);
+ tt_int_op( (r >> (j*8)) & 0xff, OP_EQ, VECTORS[i][j]);
}
}
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index c7e22d8cec..e5328fed56 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -180,7 +180,7 @@ test_dir_formats(void *arg)
buf[strlen(buf2)] = '\0'; /* Don't compare the sig; it's never the same
* twice */
- tt_str_op(buf,==, buf2);
+ tt_str_op(buf,OP_EQ, buf2);
tor_free(buf);
buf = router_dump_router_to_string(r1, pk2);
@@ -188,12 +188,12 @@ test_dir_formats(void *arg)
cp = buf;
rp1 = router_parse_entry_from_string((const char*)cp,NULL,1,0,NULL,NULL);
tt_assert(rp1);
- tt_int_op(rp1->addr,==, r1->addr);
- tt_int_op(rp1->or_port,==, r1->or_port);
+ tt_int_op(rp1->addr,OP_EQ, r1->addr);
+ tt_int_op(rp1->or_port,OP_EQ, r1->or_port);
//test_eq(rp1->dir_port, r1->dir_port);
- tt_int_op(rp1->bandwidthrate,==, r1->bandwidthrate);
- tt_int_op(rp1->bandwidthburst,==, r1->bandwidthburst);
- tt_int_op(rp1->bandwidthcapacity,==, r1->bandwidthcapacity);
+ tt_int_op(rp1->bandwidthrate,OP_EQ, r1->bandwidthrate);
+ tt_int_op(rp1->bandwidthburst,OP_EQ, r1->bandwidthburst);
+ tt_int_op(rp1->bandwidthcapacity,OP_EQ, r1->bandwidthcapacity);
tt_assert(crypto_pk_cmp_keys(rp1->onion_pkey, pk1) == 0);
tt_assert(crypto_pk_cmp_keys(rp1->identity_pkey, pk2) == 0);
//tt_assert(rp1->exit_policy == NULL);
@@ -224,40 +224,40 @@ test_dir_formats(void *arg)
buf = router_dump_router_to_string(r2, pk1);
buf[strlen(buf2)] = '\0'; /* Don't compare the sig; it's never the same
* twice */
- tt_str_op(buf,==, buf2);
+ tt_str_op(buf,OP_EQ, buf2);
tor_free(buf);
buf = router_dump_router_to_string(r2, pk1);
cp = buf;
rp2 = router_parse_entry_from_string((const char*)cp,NULL,1,0,NULL,NULL);
tt_assert(rp2);
- tt_int_op(rp2->addr,==, r2->addr);
- tt_int_op(rp2->or_port,==, r2->or_port);
- tt_int_op(rp2->dir_port,==, r2->dir_port);
- tt_int_op(rp2->bandwidthrate,==, r2->bandwidthrate);
- tt_int_op(rp2->bandwidthburst,==, r2->bandwidthburst);
- tt_int_op(rp2->bandwidthcapacity,==, r2->bandwidthcapacity);
- tt_mem_op(rp2->onion_curve25519_pkey->public_key,==,
+ tt_int_op(rp2->addr,OP_EQ, r2->addr);
+ tt_int_op(rp2->or_port,OP_EQ, r2->or_port);
+ tt_int_op(rp2->dir_port,OP_EQ, r2->dir_port);
+ tt_int_op(rp2->bandwidthrate,OP_EQ, r2->bandwidthrate);
+ tt_int_op(rp2->bandwidthburst,OP_EQ, r2->bandwidthburst);
+ tt_int_op(rp2->bandwidthcapacity,OP_EQ, r2->bandwidthcapacity);
+ tt_mem_op(rp2->onion_curve25519_pkey->public_key,OP_EQ,
r2->onion_curve25519_pkey->public_key,
CURVE25519_PUBKEY_LEN);
tt_assert(crypto_pk_cmp_keys(rp2->onion_pkey, pk2) == 0);
tt_assert(crypto_pk_cmp_keys(rp2->identity_pkey, pk1) == 0);
- tt_int_op(smartlist_len(rp2->exit_policy),==, 2);
+ tt_int_op(smartlist_len(rp2->exit_policy),OP_EQ, 2);
p = smartlist_get(rp2->exit_policy, 0);
- tt_int_op(p->policy_type,==, ADDR_POLICY_ACCEPT);
+ tt_int_op(p->policy_type,OP_EQ, ADDR_POLICY_ACCEPT);
tt_assert(tor_addr_is_null(&p->addr));
- tt_int_op(p->maskbits,==, 0);
- tt_int_op(p->prt_min,==, 80);
- tt_int_op(p->prt_max,==, 80);
+ tt_int_op(p->maskbits,OP_EQ, 0);
+ tt_int_op(p->prt_min,OP_EQ, 80);
+ tt_int_op(p->prt_max,OP_EQ, 80);
p = smartlist_get(rp2->exit_policy, 1);
- tt_int_op(p->policy_type,==, ADDR_POLICY_REJECT);
+ tt_int_op(p->policy_type,OP_EQ, ADDR_POLICY_REJECT);
tt_assert(tor_addr_eq(&p->addr, &ex2->addr));
- tt_int_op(p->maskbits,==, 8);
- tt_int_op(p->prt_min,==, 24);
- tt_int_op(p->prt_max,==, 24);
+ tt_int_op(p->maskbits,OP_EQ, 8);
+ tt_int_op(p->prt_min,OP_EQ, 24);
+ tt_int_op(p->prt_max,OP_EQ, 24);
#if 0
/* Okay, now for the directories. */
@@ -312,7 +312,7 @@ test_dir_routerparse_bad(void *arg)
again = 999; \
ri = router_parse_entry_from_string((s), NULL, 0, 0, NULL, &again); \
tt_assert(ri == NULL); \
- tt_int_op(again, ==, (againval)); \
+ tt_int_op(again, OP_EQ, (againval)); \
} while (0)
CHECK_OK(EX_RI_MINIMAL);
@@ -404,7 +404,7 @@ test_dir_extrainfo_parsing(void *arg)
again = 999; \
ei = extrainfo_parse_entry_from_string((s), NULL, 0, map, &again); \
tt_assert(ei == NULL); \
- tt_int_op(again, ==, (againval)); \
+ tt_int_op(again, OP_EQ, (againval)); \
} while (0)
#define ADD(name) \
do { \
@@ -412,7 +412,7 @@ test_dir_extrainfo_parsing(void *arg)
crypto_pk_t *pk = ri->identity_pkey = crypto_pk_new(); \
tt_assert(! crypto_pk_read_public_key_from_string(pk, \
name##_KEY, strlen(name##_KEY))); \
- tt_int_op(0,==,base16_decode(d, 20, name##_FP, strlen(name##_FP))); \
+ tt_int_op(0,OP_EQ,base16_decode(d, 20, name##_FP, strlen(name##_FP))); \
digestmap_set((digestmap_t*)map, d, ri); \
ri = NULL; \
} while (0)
@@ -490,20 +490,20 @@ test_dir_parse_router_list(void *arg)
/* First, parse the routers. */
cp = list;
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
router_parse_list_from_string(&cp, NULL, dest, SAVED_NOWHERE,
0, 0, NULL, invalid));
- tt_int_op(2, ==, smartlist_len(dest));
- tt_ptr_op(cp, ==, list + strlen(list));
+ tt_int_op(2, OP_EQ, smartlist_len(dest));
+ tt_ptr_op(cp, OP_EQ, list + strlen(list));
routerinfo_t *r = smartlist_get(dest, 0);
- tt_mem_op(r->cache_info.signed_descriptor_body, ==,
+ tt_mem_op(r->cache_info.signed_descriptor_body, OP_EQ,
EX_RI_MINIMAL, strlen(EX_RI_MINIMAL));
r = smartlist_get(dest, 1);
- tt_mem_op(r->cache_info.signed_descriptor_body, ==,
+ tt_mem_op(r->cache_info.signed_descriptor_body, OP_EQ,
EX_RI_MAXIMAL, strlen(EX_RI_MAXIMAL));
- tt_int_op(2, ==, smartlist_len(invalid));
+ tt_int_op(2, OP_EQ, smartlist_len(invalid));
test_memeq_hex(smartlist_get(invalid, 0),
"ab9eeaa95e7d45740185b4e519c76ead756277a9");
test_memeq_hex(smartlist_get(invalid, 1),
@@ -523,18 +523,18 @@ test_dir_parse_router_list(void *arg)
ADD(EX_EI_BAD_NICKNAME);
ADD(EX_EI_BAD_PUBLISHED);
cp = list;
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
router_parse_list_from_string(&cp, NULL, dest, SAVED_NOWHERE,
1, 0, NULL, invalid));
- tt_int_op(2, ==, smartlist_len(dest));
+ tt_int_op(2, OP_EQ, smartlist_len(dest));
extrainfo_t *e = smartlist_get(dest, 0);
- tt_mem_op(e->cache_info.signed_descriptor_body, ==,
+ tt_mem_op(e->cache_info.signed_descriptor_body, OP_EQ,
EX_EI_MAXIMAL, strlen(EX_EI_MAXIMAL));
e = smartlist_get(dest, 1);
- tt_mem_op(e->cache_info.signed_descriptor_body, ==,
+ tt_mem_op(e->cache_info.signed_descriptor_body, OP_EQ,
EX_EI_MINIMAL, strlen(EX_EI_MINIMAL));
- tt_int_op(2, ==, smartlist_len(invalid));
+ tt_int_op(2, OP_EQ, smartlist_len(invalid));
test_memeq_hex(smartlist_get(invalid, 0),
"d5df4aa62ee9ffc9543d41150c9864908e0390af");
test_memeq_hex(smartlist_get(invalid, 1),
@@ -608,7 +608,7 @@ test_dir_load_routers(void *arg)
#define ADD(str) \
do { \
- tt_int_op(0,==,router_get_router_hash(str, strlen(str), buf)); \
+ tt_int_op(0,OP_EQ,router_get_router_hash(str, strlen(str), buf)); \
smartlist_add(wanted, tor_strdup(hex_str(buf, DIGEST_LEN))); \
} while (0)
@@ -631,34 +631,34 @@ test_dir_load_routers(void *arg)
ADD(EX_RI_BAD_TOKENS);
char *list = smartlist_join_strings(chunks, "", 0, NULL);
- tt_int_op(1, ==,
+ tt_int_op(1, OP_EQ,
router_load_routers_from_string(list, NULL, SAVED_IN_JOURNAL,
wanted, 1, NULL));
/* The "maximal" router was added. */
/* "minimal" was not. */
- tt_int_op(smartlist_len(router_get_routerlist()->routers),==,1);
+ tt_int_op(smartlist_len(router_get_routerlist()->routers),OP_EQ,1);
routerinfo_t *r = smartlist_get(router_get_routerlist()->routers, 0);
test_memeq_hex(r->cache_info.signed_descriptor_digest,
"581D8A368A0FA854ECDBFAB841D88B3F1B004038");
- tt_int_op(dls_minimal.n_download_failures, ==, 0);
- tt_int_op(dls_maximal.n_download_failures, ==, 0);
+ tt_int_op(dls_minimal.n_download_failures, OP_EQ, 0);
+ tt_int_op(dls_maximal.n_download_failures, OP_EQ, 0);
/* "Bad fingerprint" and "Bad tokens" should have gotten marked
* non-retriable. */
- tt_want_int_op(mock_router_get_dl_status_calls, ==, 2);
- tt_want_int_op(mock_router_get_dl_status_unrecognized, ==, 0);
- tt_int_op(dls_bad_fingerprint.n_download_failures, ==, 255);
- tt_int_op(dls_bad_tokens.n_download_failures, ==, 255);
+ tt_want_int_op(mock_router_get_dl_status_calls, OP_EQ, 2);
+ tt_want_int_op(mock_router_get_dl_status_unrecognized, OP_EQ, 0);
+ tt_int_op(dls_bad_fingerprint.n_download_failures, OP_EQ, 255);
+ tt_int_op(dls_bad_tokens.n_download_failures, OP_EQ, 255);
/* bad_sig2 and bad ports" are retriable -- one since only the signature
* was bad, and one because we didn't ask for it. */
- tt_int_op(dls_bad_sig2.n_download_failures, ==, 0);
- tt_int_op(dls_bad_ports.n_download_failures, ==, 0);
+ tt_int_op(dls_bad_sig2.n_download_failures, OP_EQ, 0);
+ tt_int_op(dls_bad_ports.n_download_failures, OP_EQ, 0);
/* Wanted still contains "BAD_SIG2" */
- tt_int_op(smartlist_len(wanted), ==, 1);
- tt_str_op(smartlist_get(wanted, 0), ==,
+ tt_int_op(smartlist_len(wanted), OP_EQ, 1);
+ tt_str_op(smartlist_get(wanted, 0), OP_EQ,
"E0A3753CEFD54128EAB239F294954121DB23D2EF");
#undef ADD
@@ -725,7 +725,7 @@ test_dir_load_extrainfo(void *arg)
#define ADD(str) \
do { \
- tt_int_op(0,==,router_get_extrainfo_hash(str, strlen(str), buf)); \
+ tt_int_op(0,OP_EQ,router_get_extrainfo_hash(str, strlen(str), buf)); \
smartlist_add(wanted, tor_strdup(hex_str(buf, DIGEST_LEN))); \
} while (0)
@@ -752,7 +752,7 @@ test_dir_load_extrainfo(void *arg)
/* The "maximal" router was added. */
/* "minimal" was also added, even though we didn't ask for it, since
* that's what we do with extrainfos. */
- tt_int_op(smartlist_len(mock_ei_insert_list),==,2);
+ tt_int_op(smartlist_len(mock_ei_insert_list),OP_EQ,2);
extrainfo_t *e = smartlist_get(mock_ei_insert_list, 0);
test_memeq_hex(e->cache_info.signed_descriptor_digest,
@@ -761,22 +761,22 @@ test_dir_load_extrainfo(void *arg)
e = smartlist_get(mock_ei_insert_list, 1);
test_memeq_hex(e->cache_info.signed_descriptor_digest,
"47803B02A0E70E9E8BDA226CB1D74DE354D67DFF");
- tt_int_op(dls_minimal.n_download_failures, ==, 0);
- tt_int_op(dls_maximal.n_download_failures, ==, 0);
+ tt_int_op(dls_minimal.n_download_failures, OP_EQ, 0);
+ tt_int_op(dls_maximal.n_download_failures, OP_EQ, 0);
/* "Bad nickname" and "Bad tokens" should have gotten marked
* non-retriable. */
- tt_want_int_op(mock_get_by_ei_dd_calls, ==, 2);
- tt_want_int_op(mock_get_by_ei_dd_unrecognized, ==, 0);
- tt_int_op(sd_ei_bad_nickname.ei_dl_status.n_download_failures, ==, 255);
- tt_int_op(sd_ei_bad_tokens.ei_dl_status.n_download_failures, ==, 255);
+ tt_want_int_op(mock_get_by_ei_dd_calls, OP_EQ, 2);
+ tt_want_int_op(mock_get_by_ei_dd_unrecognized, OP_EQ, 0);
+ tt_int_op(sd_ei_bad_nickname.ei_dl_status.n_download_failures, OP_EQ, 255);
+ tt_int_op(sd_ei_bad_tokens.ei_dl_status.n_download_failures, OP_EQ, 255);
/* bad_ports is retriable -- because we didn't ask for it. */
- tt_int_op(dls_bad_ports.n_download_failures, ==, 0);
+ tt_int_op(dls_bad_ports.n_download_failures, OP_EQ, 0);
/* Wanted still contains "BAD_SIG2" */
- tt_int_op(smartlist_len(wanted), ==, 1);
- tt_str_op(smartlist_get(wanted, 0), ==,
+ tt_int_op(smartlist_len(wanted), OP_EQ, 1);
+ tt_str_op(smartlist_get(wanted, 0), OP_EQ,
"16D387D3A58F7DB3CF46638F8D0B90C45C7D769C");
#undef ADD
@@ -797,50 +797,50 @@ test_dir_versions(void *arg)
/* Try out version parsing functionality */
(void)arg;
- tt_int_op(0,==, tor_version_parse("0.3.4pre2-cvs", &ver1));
- tt_int_op(0,==, ver1.major);
- tt_int_op(3,==, ver1.minor);
- tt_int_op(4,==, ver1.micro);
- tt_int_op(VER_PRE,==, ver1.status);
- tt_int_op(2,==, ver1.patchlevel);
- tt_int_op(0,==, tor_version_parse("0.3.4rc1", &ver1));
- tt_int_op(0,==, ver1.major);
- tt_int_op(3,==, ver1.minor);
- tt_int_op(4,==, ver1.micro);
- tt_int_op(VER_RC,==, ver1.status);
- tt_int_op(1,==, ver1.patchlevel);
- tt_int_op(0,==, tor_version_parse("1.3.4", &ver1));
- tt_int_op(1,==, ver1.major);
- tt_int_op(3,==, ver1.minor);
- tt_int_op(4,==, ver1.micro);
- tt_int_op(VER_RELEASE,==, ver1.status);
- tt_int_op(0,==, ver1.patchlevel);
- tt_int_op(0,==, tor_version_parse("1.3.4.999", &ver1));
- tt_int_op(1,==, ver1.major);
- tt_int_op(3,==, ver1.minor);
- tt_int_op(4,==, ver1.micro);
- tt_int_op(VER_RELEASE,==, ver1.status);
- tt_int_op(999,==, ver1.patchlevel);
- tt_int_op(0,==, tor_version_parse("0.1.2.4-alpha", &ver1));
- tt_int_op(0,==, ver1.major);
- tt_int_op(1,==, ver1.minor);
- tt_int_op(2,==, ver1.micro);
- tt_int_op(4,==, ver1.patchlevel);
- tt_int_op(VER_RELEASE,==, ver1.status);
- tt_str_op("alpha",==, ver1.status_tag);
- tt_int_op(0,==, tor_version_parse("0.1.2.4", &ver1));
- tt_int_op(0,==, ver1.major);
- tt_int_op(1,==, ver1.minor);
- tt_int_op(2,==, ver1.micro);
- tt_int_op(4,==, ver1.patchlevel);
- tt_int_op(VER_RELEASE,==, ver1.status);
- tt_str_op("",==, ver1.status_tag);
+ tt_int_op(0,OP_EQ, tor_version_parse("0.3.4pre2-cvs", &ver1));
+ tt_int_op(0,OP_EQ, ver1.major);
+ tt_int_op(3,OP_EQ, ver1.minor);
+ tt_int_op(4,OP_EQ, ver1.micro);
+ tt_int_op(VER_PRE,OP_EQ, ver1.status);
+ tt_int_op(2,OP_EQ, ver1.patchlevel);
+ tt_int_op(0,OP_EQ, tor_version_parse("0.3.4rc1", &ver1));
+ tt_int_op(0,OP_EQ, ver1.major);
+ tt_int_op(3,OP_EQ, ver1.minor);
+ tt_int_op(4,OP_EQ, ver1.micro);
+ tt_int_op(VER_RC,OP_EQ, ver1.status);
+ tt_int_op(1,OP_EQ, ver1.patchlevel);
+ tt_int_op(0,OP_EQ, tor_version_parse("1.3.4", &ver1));
+ tt_int_op(1,OP_EQ, ver1.major);
+ tt_int_op(3,OP_EQ, ver1.minor);
+ tt_int_op(4,OP_EQ, ver1.micro);
+ tt_int_op(VER_RELEASE,OP_EQ, ver1.status);
+ tt_int_op(0,OP_EQ, ver1.patchlevel);
+ tt_int_op(0,OP_EQ, tor_version_parse("1.3.4.999", &ver1));
+ tt_int_op(1,OP_EQ, ver1.major);
+ tt_int_op(3,OP_EQ, ver1.minor);
+ tt_int_op(4,OP_EQ, ver1.micro);
+ tt_int_op(VER_RELEASE,OP_EQ, ver1.status);
+ tt_int_op(999,OP_EQ, ver1.patchlevel);
+ tt_int_op(0,OP_EQ, tor_version_parse("0.1.2.4-alpha", &ver1));
+ tt_int_op(0,OP_EQ, ver1.major);
+ tt_int_op(1,OP_EQ, ver1.minor);
+ tt_int_op(2,OP_EQ, ver1.micro);
+ tt_int_op(4,OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE,OP_EQ, ver1.status);
+ tt_str_op("alpha",OP_EQ, ver1.status_tag);
+ tt_int_op(0,OP_EQ, tor_version_parse("0.1.2.4", &ver1));
+ tt_int_op(0,OP_EQ, ver1.major);
+ tt_int_op(1,OP_EQ, ver1.minor);
+ tt_int_op(2,OP_EQ, ver1.micro);
+ tt_int_op(4,OP_EQ, ver1.patchlevel);
+ tt_int_op(VER_RELEASE,OP_EQ, ver1.status);
+ tt_str_op("",OP_EQ, ver1.status_tag);
#define tt_versionstatus_op(vs1, op, vs2) \
tt_assert_test_type(vs1,vs2,#vs1" "#op" "#vs2,version_status_t, \
(val1_ op val2_),"%d",TT_EXIT_TEST_FUNCTION)
#define test_v_i_o(val, ver, lst) \
- tt_versionstatus_op(val, ==, tor_version_is_obsolete(ver, lst))
+ tt_versionstatus_op(val, OP_EQ, tor_version_is_obsolete(ver, lst))
/* make sure tor_version_is_obsolete() works */
test_v_i_o(VS_OLD, "0.0.1", "Tor 0.0.2");
@@ -867,42 +867,43 @@ test_dir_versions(void *arg)
/* On list, not newer than any on same series. */
test_v_i_o(VS_UNRECOMMENDED,
"0.1.0.1", "Tor 0.1.0.2,Tor 0.0.9.5,Tor 0.1.1.0");
- tt_int_op(0,==, tor_version_as_new_as("Tor 0.0.5", "0.0.9pre1-cvs"));
- tt_int_op(1,==, tor_version_as_new_as(
+ tt_int_op(0,OP_EQ, tor_version_as_new_as("Tor 0.0.5", "0.0.9pre1-cvs"));
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
"Tor 0.0.8 on Darwin 64-121-192-100.c3-0."
"sfpo-ubr1.sfrn-sfpo.ca.cable.rcn.com Power Macintosh",
"0.0.8rc2"));
- tt_int_op(0,==, tor_version_as_new_as(
+ tt_int_op(0,OP_EQ, tor_version_as_new_as(
"Tor 0.0.8 on Darwin 64-121-192-100.c3-0."
"sfpo-ubr1.sfrn-sfpo.ca.cable.rcn.com Power Macintosh", "0.0.8.2"));
/* Now try svn revisions. */
- tt_int_op(1,==, tor_version_as_new_as("Tor 0.2.1.0-dev (r100)",
+ tt_int_op(1,OP_EQ, tor_version_as_new_as("Tor 0.2.1.0-dev (r100)",
"Tor 0.2.1.0-dev (r99)"));
- tt_int_op(1,==, tor_version_as_new_as("Tor 0.2.1.0-dev (r100) on Banana Jr",
+ tt_int_op(1,OP_EQ, tor_version_as_new_as(
+ "Tor 0.2.1.0-dev (r100) on Banana Jr",
"Tor 0.2.1.0-dev (r99) on Hal 9000"));
- tt_int_op(1,==, tor_version_as_new_as("Tor 0.2.1.0-dev (r100)",
+ tt_int_op(1,OP_EQ, tor_version_as_new_as("Tor 0.2.1.0-dev (r100)",
"Tor 0.2.1.0-dev on Colossus"));
- tt_int_op(0,==, tor_version_as_new_as("Tor 0.2.1.0-dev (r99)",
+ tt_int_op(0,OP_EQ, tor_version_as_new_as("Tor 0.2.1.0-dev (r99)",
"Tor 0.2.1.0-dev (r100)"));
- tt_int_op(0,==, tor_version_as_new_as("Tor 0.2.1.0-dev (r99) on MCP",
+ tt_int_op(0,OP_EQ, tor_version_as_new_as("Tor 0.2.1.0-dev (r99) on MCP",
"Tor 0.2.1.0-dev (r100) on AM"));
- tt_int_op(0,==, tor_version_as_new_as("Tor 0.2.1.0-dev",
+ tt_int_op(0,OP_EQ, tor_version_as_new_as("Tor 0.2.1.0-dev",
"Tor 0.2.1.0-dev (r99)"));
- tt_int_op(1,==, tor_version_as_new_as("Tor 0.2.1.1",
+ tt_int_op(1,OP_EQ, tor_version_as_new_as("Tor 0.2.1.1",
"Tor 0.2.1.0-dev (r99)"));
/* Now try git revisions */
- tt_int_op(0,==, tor_version_parse("0.5.6.7 (git-ff00ff)", &ver1));
- tt_int_op(0,==, ver1.major);
- tt_int_op(5,==, ver1.minor);
- tt_int_op(6,==, ver1.micro);
- tt_int_op(7,==, ver1.patchlevel);
- tt_int_op(3,==, ver1.git_tag_len);
- tt_mem_op(ver1.git_tag,==, "\xff\x00\xff", 3);
- tt_int_op(-1,==, tor_version_parse("0.5.6.7 (git-ff00xx)", &ver1));
- tt_int_op(-1,==, tor_version_parse("0.5.6.7 (git-ff00fff)", &ver1));
- tt_int_op(0,==, tor_version_parse("0.5.6.7 (git ff00fff)", &ver1));
+ tt_int_op(0,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00ff)", &ver1));
+ tt_int_op(0,OP_EQ, ver1.major);
+ tt_int_op(5,OP_EQ, ver1.minor);
+ tt_int_op(6,OP_EQ, ver1.micro);
+ 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);
+ tt_int_op(-1,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00xx)", &ver1));
+ tt_int_op(-1,OP_EQ, tor_version_parse("0.5.6.7 (git-ff00fff)", &ver1));
+ tt_int_op(0,OP_EQ, tor_version_parse("0.5.6.7 (git ff00fff)", &ver1));
done:
;
}
@@ -924,13 +925,14 @@ test_dir_fp_pairs(void *arg)
"48657861646563696d616c2069736e277420736f-"
"676f6f6420666f7220686964696e6720796f7572.z", sl);
- tt_int_op(smartlist_len(sl),==, 2);
+ tt_int_op(smartlist_len(sl),OP_EQ, 2);
pair = smartlist_get(sl, 0);
- tt_mem_op(pair->first,==, "Hexadecimal isn't so", DIGEST_LEN);
- tt_mem_op(pair->second,==, "good for hiding your", DIGEST_LEN);
+ tt_mem_op(pair->first,OP_EQ, "Hexadecimal isn't so", DIGEST_LEN);
+ tt_mem_op(pair->second,OP_EQ, "good for hiding your", DIGEST_LEN);
pair = smartlist_get(sl, 1);
- tt_mem_op(pair->first,==, "secret data.\0\0\0\0\0\xff\xff\xff", DIGEST_LEN);
- tt_mem_op(pair->second,==, "Use AES-256 instead.", DIGEST_LEN);
+ tt_mem_op(pair->first,OP_EQ, "secret data.\0\0\0\0\0\xff\xff\xff",
+ DIGEST_LEN);
+ tt_mem_op(pair->second,OP_EQ, "Use AES-256 instead.", DIGEST_LEN);
done:
SMARTLIST_FOREACH(sl, fp_pair_t *, pair, tor_free(pair));
@@ -961,56 +963,56 @@ test_dir_split_fps(void *testdata)
/* no flags set */
dir_split_resource_into_fingerprints("A+C+B", sl, NULL, 0);
- tt_int_op(smartlist_len(sl), ==, 3);
- tt_str_op(smartlist_get(sl, 0), ==, "A");
- tt_str_op(smartlist_get(sl, 1), ==, "C");
- tt_str_op(smartlist_get(sl, 2), ==, "B");
+ tt_int_op(smartlist_len(sl), OP_EQ, 3);
+ tt_str_op(smartlist_get(sl, 0), OP_EQ, "A");
+ tt_str_op(smartlist_get(sl, 1), OP_EQ, "C");
+ tt_str_op(smartlist_get(sl, 2), OP_EQ, "B");
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* uniq strings. */
dir_split_resource_into_fingerprints("A+C+B+A+B+B", sl, NULL, DSR_SORT_UNIQ);
- tt_int_op(smartlist_len(sl), ==, 3);
- tt_str_op(smartlist_get(sl, 0), ==, "A");
- tt_str_op(smartlist_get(sl, 1), ==, "B");
- tt_str_op(smartlist_get(sl, 2), ==, "C");
+ tt_int_op(smartlist_len(sl), OP_EQ, 3);
+ tt_str_op(smartlist_get(sl, 0), OP_EQ, "A");
+ tt_str_op(smartlist_get(sl, 1), OP_EQ, "B");
+ tt_str_op(smartlist_get(sl, 2), OP_EQ, "C");
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Decode hex. */
dir_split_resource_into_fingerprints(HEX1"+"HEX2, sl, NULL, DSR_HEX);
- tt_int_op(smartlist_len(sl), ==, 2);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX1);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX2);
+ tt_int_op(smartlist_len(sl), OP_EQ, 2);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX1);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX2);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* decode hex and drop weirdness. */
dir_split_resource_into_fingerprints(HEX1"+bogus+"HEX2"+"HEX256_1,
sl, NULL, DSR_HEX);
- tt_int_op(smartlist_len(sl), ==, 2);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX1);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX2);
+ tt_int_op(smartlist_len(sl), OP_EQ, 2);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX1);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX2);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Decode long hex */
dir_split_resource_into_fingerprints(HEX256_1"+"HEX256_2"+"HEX2"+"HEX256_3,
sl, NULL, DSR_HEX|DSR_DIGEST256);
- tt_int_op(smartlist_len(sl), ==, 3);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX256_1);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX256_2);
- test_mem_op_hex(smartlist_get(sl, 2), ==, HEX256_3);
+ tt_int_op(smartlist_len(sl), OP_EQ, 3);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX256_1);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX256_2);
+ test_mem_op_hex(smartlist_get(sl, 2), OP_EQ, HEX256_3);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Decode hex and sort. */
dir_split_resource_into_fingerprints(HEX1"+"HEX2"+"HEX3"+"HEX2,
sl, NULL, DSR_HEX|DSR_SORT_UNIQ);
- tt_int_op(smartlist_len(sl), ==, 3);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX3);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX2);
- test_mem_op_hex(smartlist_get(sl, 2), ==, HEX1);
+ tt_int_op(smartlist_len(sl), OP_EQ, 3);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX3);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX2);
+ test_mem_op_hex(smartlist_get(sl, 2), OP_EQ, HEX1);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
@@ -1019,34 +1021,34 @@ test_dir_split_fps(void *testdata)
"+"HEX256_1,
sl, NULL,
DSR_HEX|DSR_DIGEST256|DSR_SORT_UNIQ);
- tt_int_op(smartlist_len(sl), ==, 3);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX256_3);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX256_2);
- test_mem_op_hex(smartlist_get(sl, 2), ==, HEX256_1);
+ tt_int_op(smartlist_len(sl), OP_EQ, 3);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX256_3);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX256_2);
+ test_mem_op_hex(smartlist_get(sl, 2), OP_EQ, HEX256_1);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Decode base64 */
dir_split_resource_into_fingerprints(B64_1"-"B64_2, sl, NULL, DSR_BASE64);
- tt_int_op(smartlist_len(sl), ==, 2);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX1);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX2);
+ tt_int_op(smartlist_len(sl), OP_EQ, 2);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX1);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX2);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
/* Decode long base64 */
dir_split_resource_into_fingerprints(B64_256_1"-"B64_256_2,
sl, NULL, DSR_BASE64|DSR_DIGEST256);
- tt_int_op(smartlist_len(sl), ==, 2);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX256_1);
- test_mem_op_hex(smartlist_get(sl, 1), ==, HEX256_2);
+ tt_int_op(smartlist_len(sl), OP_EQ, 2);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX256_1);
+ test_mem_op_hex(smartlist_get(sl, 1), OP_EQ, HEX256_2);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
dir_split_resource_into_fingerprints(B64_256_1,
sl, NULL, DSR_BASE64|DSR_DIGEST256);
- tt_int_op(smartlist_len(sl), ==, 1);
- test_mem_op_hex(smartlist_get(sl, 0), ==, HEX256_1);
+ tt_int_op(smartlist_len(sl), OP_EQ, 1);
+ test_mem_op_hex(smartlist_get(sl, 0), OP_EQ, HEX256_1);
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
smartlist_clear(sl);
@@ -1140,7 +1142,7 @@ test_dir_measured_bw_kb_cache(void *arg)
/* First, clear the cache and assert that it's empty */
(void)arg;
dirserv_clear_measured_bw_cache();
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 0);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 0);
/*
* Set up test mbwls; none of the dirserv_cache_*() functions care about
* the node_hex field.
@@ -1153,49 +1155,49 @@ test_dir_measured_bw_kb_cache(void *arg)
mbwl[2].bw_kb = 80;
/* Try caching something */
dirserv_cache_measured_bw(&(mbwl[0]), curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 1);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 1);
/* Okay, let's see if we can retrieve it */
tt_assert(dirserv_query_measured_bw_cache_kb(mbwl[0].node_id,&bw, &as_of));
- tt_int_op(bw,==, 20);
- tt_int_op(as_of,==, MBWC_INIT_TIME);
+ tt_int_op(bw,OP_EQ, 20);
+ tt_int_op(as_of,OP_EQ, MBWC_INIT_TIME);
/* Try retrieving it without some outputs */
tt_assert(dirserv_query_measured_bw_cache_kb(mbwl[0].node_id,NULL, NULL));
tt_assert(dirserv_query_measured_bw_cache_kb(mbwl[0].node_id,&bw, NULL));
- tt_int_op(bw,==, 20);
+ tt_int_op(bw,OP_EQ, 20);
tt_assert(dirserv_query_measured_bw_cache_kb(mbwl[0].node_id,NULL,&as_of));
- tt_int_op(as_of,==, MBWC_INIT_TIME);
+ tt_int_op(as_of,OP_EQ, MBWC_INIT_TIME);
/* Now expire it */
curr += MAX_MEASUREMENT_AGE + 1;
dirserv_expire_measured_bw_cache(curr);
/* Check that the cache is empty */
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 0);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 0);
/* Check that we can't retrieve it */
tt_assert(!dirserv_query_measured_bw_cache_kb(mbwl[0].node_id, NULL,NULL));
/* Try caching a few things now */
dirserv_cache_measured_bw(&(mbwl[0]), curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 1);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 1);
curr += MAX_MEASUREMENT_AGE / 4;
dirserv_cache_measured_bw(&(mbwl[1]), curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 2);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 2);
curr += MAX_MEASUREMENT_AGE / 4;
dirserv_cache_measured_bw(&(mbwl[2]), curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 3);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 3);
curr += MAX_MEASUREMENT_AGE / 4 + 1;
/* Do an expire that's too soon to get any of them */
dirserv_expire_measured_bw_cache(curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 3);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 3);
/* Push the oldest one off the cliff */
curr += MAX_MEASUREMENT_AGE / 4;
dirserv_expire_measured_bw_cache(curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 2);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 2);
/* And another... */
curr += MAX_MEASUREMENT_AGE / 4;
dirserv_expire_measured_bw_cache(curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 1);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 1);
/* This should empty it out again */
curr += MAX_MEASUREMENT_AGE / 4;
dirserv_expire_measured_bw_cache(curr);
- tt_int_op(dirserv_get_measured_bw_cache_size(),==, 0);
+ tt_int_op(dirserv_get_measured_bw_cache_size(),OP_EQ, 0);
done:
return;
@@ -1228,11 +1230,11 @@ test_dir_param_voting(void *arg)
"abcd=20 c=60 cw=500 x-yz=-9 zzzzz=101", NULL, 0, 0);
smartlist_split_string(vote4.net_params,
"ab=900 abcd=200 c=1 cw=51 x-yz=100", NULL, 0, 0);
- tt_int_op(100,==, networkstatus_get_param(&vote4, "x-yz", 50, 0, 300));
- tt_int_op(222,==, networkstatus_get_param(&vote4, "foobar", 222, 0, 300));
- tt_int_op(80,==, networkstatus_get_param(&vote4, "ab", 12, 0, 80));
- tt_int_op(-8,==, networkstatus_get_param(&vote4, "ab", -12, -100, -8));
- tt_int_op(0,==, networkstatus_get_param(&vote4, "foobar", 0, -100, 8));
+ tt_int_op(100,OP_EQ, networkstatus_get_param(&vote4, "x-yz", 50, 0, 300));
+ tt_int_op(222,OP_EQ, networkstatus_get_param(&vote4, "foobar", 222, 0, 300));
+ tt_int_op(80,OP_EQ, networkstatus_get_param(&vote4, "ab", 12, 0, 80));
+ tt_int_op(-8,OP_EQ, networkstatus_get_param(&vote4, "ab", -12, -100, -8));
+ tt_int_op(0,OP_EQ, networkstatus_get_param(&vote4, "foobar", 0, -100, 8));
smartlist_add(votes, &vote1);
@@ -1240,59 +1242,59 @@ test_dir_param_voting(void *arg)
* networks without many dirauths. */
res = dirvote_compute_params(votes, 12, 2);
- tt_str_op(res,==, "");
+ tt_str_op(res,OP_EQ, "");
tor_free(res);
res = dirvote_compute_params(votes, 12, 1);
- tt_str_op(res,==, "ab=90 abcd=20 cw=50 x-yz=-99");
+ tt_str_op(res,OP_EQ, "ab=90 abcd=20 cw=50 x-yz=-99");
tor_free(res);
smartlist_add(votes, &vote2);
res = dirvote_compute_params(votes, 12, 2);
- tt_str_op(res,==, "ab=27 cw=5 x-yz=-99");
+ tt_str_op(res,OP_EQ, "ab=27 cw=5 x-yz=-99");
tor_free(res);
res = dirvote_compute_params(votes, 12, 3);
- tt_str_op(res,==, "ab=27 cw=5 x-yz=-99");
+ tt_str_op(res,OP_EQ, "ab=27 cw=5 x-yz=-99");
tor_free(res);
res = dirvote_compute_params(votes, 12, 6);
- tt_str_op(res,==, "");
+ tt_str_op(res,OP_EQ, "");
tor_free(res);
smartlist_add(votes, &vote3);
res = dirvote_compute_params(votes, 12, 3);
- tt_str_op(res,==, "ab=27 abcd=20 cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "ab=27 abcd=20 cw=50 x-yz=-9");
tor_free(res);
res = dirvote_compute_params(votes, 12, 5);
- tt_str_op(res,==, "cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "cw=50 x-yz=-9");
tor_free(res);
res = dirvote_compute_params(votes, 12, 9);
- tt_str_op(res,==, "cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "cw=50 x-yz=-9");
tor_free(res);
smartlist_add(votes, &vote4);
res = dirvote_compute_params(votes, 12, 4);
- tt_str_op(res,==, "ab=90 abcd=20 cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "ab=90 abcd=20 cw=50 x-yz=-9");
tor_free(res);
res = dirvote_compute_params(votes, 12, 5);
- tt_str_op(res,==, "ab=90 abcd=20 cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "ab=90 abcd=20 cw=50 x-yz=-9");
tor_free(res);
/* Test that the special-cased "at least three dirauths voted for
* this param" logic works as expected. */
res = dirvote_compute_params(votes, 12, 6);
- tt_str_op(res,==, "ab=90 abcd=20 cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "ab=90 abcd=20 cw=50 x-yz=-9");
tor_free(res);
res = dirvote_compute_params(votes, 12, 10);
- tt_str_op(res,==, "ab=90 abcd=20 cw=50 x-yz=-9");
+ tt_str_op(res,OP_EQ, "ab=90 abcd=20 cw=50 x-yz=-9");
tor_free(res);
done:
@@ -1324,14 +1326,14 @@ static void
test_same_voter(networkstatus_voter_info_t *v1,
networkstatus_voter_info_t *v2)
{
- tt_str_op(v1->nickname,==, v2->nickname);
- tt_mem_op(v1->identity_digest,==, v2->identity_digest, DIGEST_LEN);
- tt_str_op(v1->address,==, v2->address);
- tt_int_op(v1->addr,==, v2->addr);
- tt_int_op(v1->dir_port,==, v2->dir_port);
- tt_int_op(v1->or_port,==, v2->or_port);
- tt_str_op(v1->contact,==, v2->contact);
- tt_mem_op(v1->vote_digest,==, v2->vote_digest, DIGEST_LEN);
+ tt_str_op(v1->nickname,OP_EQ, v2->nickname);
+ tt_mem_op(v1->identity_digest,OP_EQ, v2->identity_digest, DIGEST_LEN);
+ tt_str_op(v1->address,OP_EQ, v2->address);
+ tt_int_op(v1->addr,OP_EQ, v2->addr);
+ tt_int_op(v1->dir_port,OP_EQ, v2->dir_port);
+ tt_int_op(v1->or_port,OP_EQ, v2->or_port);
+ tt_str_op(v1->contact,OP_EQ, v2->contact);
+ tt_mem_op(v1->vote_digest,OP_EQ, v2->vote_digest, DIGEST_LEN);
done:
;
}
@@ -1541,48 +1543,48 @@ test_vrs_for_v3ns(vote_routerstatus_t *vrs, int voter, time_t now)
DIGEST_LEN) &&
(voter == 1)) {
/* Check the first routerstatus. */
- tt_str_op(vrs->version,==, "0.1.2.14");
- tt_int_op(rs->published_on,==, now-1500);
- tt_str_op(rs->nickname,==, "router2");
- tt_mem_op(rs->identity_digest,==,
+ tt_str_op(vrs->version,OP_EQ, "0.1.2.14");
+ tt_int_op(rs->published_on,OP_EQ, now-1500);
+ tt_str_op(rs->nickname,OP_EQ, "router2");
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3"
"\x3\x3\x3\x3",
DIGEST_LEN);
- tt_mem_op(rs->descriptor_digest,==, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
- tt_int_op(rs->addr,==, 0x99008801);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 8000);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
+ tt_int_op(rs->addr,OP_EQ, 0x99008801);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 8000);
/* no flags except "running" (16) and "v2dir" (64) */
- tt_u64_op(vrs->flags, ==, U64_LITERAL(80));
+ tt_u64_op(vrs->flags, OP_EQ, U64_LITERAL(80));
} else if (tor_memeq(rs->identity_digest,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5",
DIGEST_LEN) &&
(voter == 1 || voter == 2)) {
- tt_mem_op(rs->identity_digest,==,
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5",
DIGEST_LEN);
if (voter == 1) {
/* Check the second routerstatus. */
- tt_str_op(vrs->version,==, "0.2.0.5");
- tt_int_op(rs->published_on,==, now-1000);
- tt_str_op(rs->nickname,==, "router1");
+ tt_str_op(vrs->version,OP_EQ, "0.2.0.5");
+ tt_int_op(rs->published_on,OP_EQ, now-1000);
+ tt_str_op(rs->nickname,OP_EQ, "router1");
}
- tt_mem_op(rs->descriptor_digest,==, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
- tt_int_op(rs->addr,==, 0x99009901);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 0);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
+ tt_int_op(rs->addr,OP_EQ, 0x99009901);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 0);
tor_addr_parse(&addr_ipv6, "[1:2:3::4]");
tt_assert(tor_addr_eq(&rs->ipv6_addr, &addr_ipv6));
- tt_int_op(rs->ipv6_orport,==, 4711);
+ tt_int_op(rs->ipv6_orport,OP_EQ, 4711);
if (voter == 1) {
/* all except "authority" (1) and "v2dir" (64) */
- tt_u64_op(vrs->flags, ==, U64_LITERAL(190));
+ tt_u64_op(vrs->flags, OP_EQ, U64_LITERAL(190));
} else {
/* 1023 - authority(1) - madeofcheese(16) - madeoftin(32) - v2dir(256) */
- tt_u64_op(vrs->flags, ==, U64_LITERAL(718));
+ tt_u64_op(vrs->flags, OP_EQ, U64_LITERAL(718));
}
} else if (tor_memeq(rs->identity_digest,
"\x33\x33\x33\x33\x33\x33\x33\x33\x33\x33"
@@ -1614,7 +1616,7 @@ test_consensus_for_v3ns(networkstatus_t *con, time_t now)
tt_assert(con);
tt_assert(!con->cert);
- tt_int_op(2,==, smartlist_len(con->routerstatus_list));
+ tt_int_op(2,OP_EQ, smartlist_len(con->routerstatus_list));
/* There should be two listed routers: one with identity 3, one with
* identity 5. */
@@ -1639,10 +1641,10 @@ test_routerstatus_for_v3ns(routerstatus_t *rs, time_t now)
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3"
"\x3\x3",
DIGEST_LEN)) {
- tt_mem_op(rs->identity_digest,==,
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3",
DIGEST_LEN);
- tt_mem_op(rs->descriptor_digest,==, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
tt_assert(!rs->is_authority);
tt_assert(!rs->is_exit);
tt_assert(!rs->is_fast);
@@ -1658,18 +1660,18 @@ test_routerstatus_for_v3ns(routerstatus_t *rs, time_t now)
"\x5\x5\x5\x5",
DIGEST_LEN)) {
/* This one showed up in 3 digests. Twice with ID 'M', once with 'Z'. */
- tt_mem_op(rs->identity_digest,==,
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5",
DIGEST_LEN);
- tt_str_op(rs->nickname,==, "router1");
- tt_mem_op(rs->descriptor_digest,==, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
- tt_int_op(rs->published_on,==, now-1000);
- tt_int_op(rs->addr,==, 0x99009901);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 0);
+ tt_str_op(rs->nickname,OP_EQ, "router1");
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
+ tt_int_op(rs->published_on,OP_EQ, now-1000);
+ tt_int_op(rs->addr,OP_EQ, 0x99009901);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 0);
tor_addr_parse(&addr_ipv6, "[1:2:3::4]");
tt_assert(tor_addr_eq(&rs->ipv6_addr, &addr_ipv6));
- tt_int_op(rs->ipv6_orport,==, 4711);
+ tt_int_op(rs->ipv6_orport,OP_EQ, 4711);
tt_assert(!rs->is_authority);
tt_assert(rs->is_exit);
tt_assert(rs->is_fast);
@@ -1809,29 +1811,29 @@ test_a_networkstatus(
tt_assert(v1);
/* Make sure the parsed thing was right. */
- tt_int_op(v1->type,==, NS_TYPE_VOTE);
- tt_int_op(v1->published,==, vote->published);
- tt_int_op(v1->valid_after,==, vote->valid_after);
- tt_int_op(v1->fresh_until,==, vote->fresh_until);
- tt_int_op(v1->valid_until,==, vote->valid_until);
- tt_int_op(v1->vote_seconds,==, vote->vote_seconds);
- tt_int_op(v1->dist_seconds,==, vote->dist_seconds);
- tt_str_op(v1->client_versions,==, vote->client_versions);
- tt_str_op(v1->server_versions,==, vote->server_versions);
+ tt_int_op(v1->type,OP_EQ, NS_TYPE_VOTE);
+ tt_int_op(v1->published,OP_EQ, vote->published);
+ tt_int_op(v1->valid_after,OP_EQ, vote->valid_after);
+ tt_int_op(v1->fresh_until,OP_EQ, vote->fresh_until);
+ tt_int_op(v1->valid_until,OP_EQ, vote->valid_until);
+ tt_int_op(v1->vote_seconds,OP_EQ, vote->vote_seconds);
+ tt_int_op(v1->dist_seconds,OP_EQ, vote->dist_seconds);
+ tt_str_op(v1->client_versions,OP_EQ, vote->client_versions);
+ tt_str_op(v1->server_versions,OP_EQ, vote->server_versions);
tt_assert(v1->voters && smartlist_len(v1->voters));
voter = smartlist_get(v1->voters, 0);
- tt_str_op(voter->nickname,==, "Voter1");
- tt_str_op(voter->address,==, "1.2.3.4");
- tt_int_op(voter->addr,==, 0x01020304);
- tt_int_op(voter->dir_port,==, 80);
- tt_int_op(voter->or_port,==, 9000);
- tt_str_op(voter->contact,==, "voter@example.com");
+ tt_str_op(voter->nickname,OP_EQ, "Voter1");
+ tt_str_op(voter->address,OP_EQ, "1.2.3.4");
+ tt_int_op(voter->addr,OP_EQ, 0x01020304);
+ tt_int_op(voter->dir_port,OP_EQ, 80);
+ tt_int_op(voter->or_port,OP_EQ, 9000);
+ tt_str_op(voter->contact,OP_EQ, "voter@example.com");
tt_assert(v1->cert);
tt_assert(!crypto_pk_cmp_keys(sign_skey_1, v1->cert->signing_key));
cp = smartlist_join_strings(v1->known_flags, ":", 0, NULL);
- tt_str_op(cp,==, "Authority:Exit:Fast:Guard:Running:Stable:V2Dir:Valid");
+ tt_str_op(cp,OP_EQ, "Authority:Exit:Fast:Guard:Running:Stable:V2Dir:Valid");
tor_free(cp);
- tt_int_op(smartlist_len(v1->routerstatus_list),==, n_vrs);
+ tt_int_op(smartlist_len(v1->routerstatus_list),OP_EQ, n_vrs);
if (vote_tweaks) params_tweaked += vote_tweaks(v1, 1, now);
@@ -1876,7 +1878,7 @@ test_a_networkstatus(
/* Check that flags come out right.*/
cp = smartlist_join_strings(v2->known_flags, ":", 0, NULL);
- tt_str_op(cp,==, "Authority:Exit:Fast:Guard:MadeOfCheese:MadeOfTin:"
+ tt_str_op(cp,OP_EQ, "Authority:Exit:Fast:Guard:MadeOfCheese:MadeOfTin:"
"Running:Stable:V2Dir:Valid");
tor_free(cp);
@@ -1945,30 +1947,30 @@ test_a_networkstatus(
con_md = networkstatus_parse_vote_from_string(consensus_text_md, NULL,
NS_TYPE_CONSENSUS);
tt_assert(con_md);
- tt_int_op(con_md->flavor,==, FLAV_MICRODESC);
+ tt_int_op(con_md->flavor,OP_EQ, FLAV_MICRODESC);
/* Check consensus contents. */
tt_assert(con->type == NS_TYPE_CONSENSUS);
- tt_int_op(con->published,==, 0); /* this field only appears in votes. */
- tt_int_op(con->valid_after,==, now+1000);
- tt_int_op(con->fresh_until,==, now+2003); /* median */
- tt_int_op(con->valid_until,==, now+3000);
- tt_int_op(con->vote_seconds,==, 100);
- tt_int_op(con->dist_seconds,==, 250); /* median */
- tt_str_op(con->client_versions,==, "0.1.2.14");
- tt_str_op(con->server_versions,==, "0.1.2.15,0.1.2.16");
+ tt_int_op(con->published,OP_EQ, 0); /* this field only appears in votes. */
+ tt_int_op(con->valid_after,OP_EQ, now+1000);
+ tt_int_op(con->fresh_until,OP_EQ, now+2003); /* median */
+ tt_int_op(con->valid_until,OP_EQ, now+3000);
+ tt_int_op(con->vote_seconds,OP_EQ, 100);
+ tt_int_op(con->dist_seconds,OP_EQ, 250); /* median */
+ tt_str_op(con->client_versions,OP_EQ, "0.1.2.14");
+ tt_str_op(con->server_versions,OP_EQ, "0.1.2.15,0.1.2.16");
cp = smartlist_join_strings(v2->known_flags, ":", 0, NULL);
- tt_str_op(cp,==, "Authority:Exit:Fast:Guard:MadeOfCheese:MadeOfTin:"
+ tt_str_op(cp,OP_EQ, "Authority:Exit:Fast:Guard:MadeOfCheese:MadeOfTin:"
"Running:Stable:V2Dir:Valid");
tor_free(cp);
if (!params_tweaked) {
/* Skip this one if vote_tweaks() messed with the param lists */
cp = smartlist_join_strings(con->net_params, ":", 0, NULL);
- tt_str_op(cp,==, "circuitwindow=80:foo=660");
+ tt_str_op(cp,OP_EQ, "circuitwindow=80:foo=660");
tor_free(cp);
}
- tt_int_op(4,==, smartlist_len(con->voters)); /*3 voters, 1 legacy key.*/
+ tt_int_op(4,OP_EQ, smartlist_len(con->voters)); /*3 voters, 1 legacy key.*/
/* The voter id digests should be in this order. */
tt_assert(memcmp(cert2->cache_info.identity_digest,
cert1->cache_info.identity_digest,DIGEST_LEN)<0);
@@ -1994,10 +1996,10 @@ test_a_networkstatus(
/* Check signatures. the first voter is a pseudo-entry with a legacy key.
* The second one hasn't signed. The fourth one has signed: validate it. */
voter = smartlist_get(con->voters, 1);
- tt_int_op(smartlist_len(voter->sigs),==, 0);
+ tt_int_op(smartlist_len(voter->sigs),OP_EQ, 0);
voter = smartlist_get(con->voters, 3);
- tt_int_op(smartlist_len(voter->sigs),==, 1);
+ tt_int_op(smartlist_len(voter->sigs),OP_EQ, 1);
sig = smartlist_get(voter->sigs, 0);
tt_assert(sig->signature);
tt_assert(!sig->good_signature);
@@ -2047,11 +2049,11 @@ test_a_networkstatus(
tt_assert(con_md3);
/* All three should have the same digest. */
- tt_mem_op(&con->digests,==, &con2->digests, sizeof(digests_t));
- tt_mem_op(&con->digests,==, &con3->digests, sizeof(digests_t));
+ tt_mem_op(&con->digests,OP_EQ, &con2->digests, sizeof(digests_t));
+ tt_mem_op(&con->digests,OP_EQ, &con3->digests, sizeof(digests_t));
- tt_mem_op(&con_md->digests,==, &con_md2->digests, sizeof(digests_t));
- tt_mem_op(&con_md->digests,==, &con_md3->digests, sizeof(digests_t));
+ tt_mem_op(&con_md->digests,OP_EQ, &con_md2->digests, sizeof(digests_t));
+ tt_mem_op(&con_md->digests,OP_EQ, &con_md3->digests, sizeof(digests_t));
/* Extract a detached signature from con3. */
detached_text1 = get_detached_sigs(con3, con_md3);
@@ -2061,44 +2063,44 @@ test_a_networkstatus(
tt_assert(dsig1);
/* Are parsed values as expected? */
- tt_int_op(dsig1->valid_after,==, con3->valid_after);
- tt_int_op(dsig1->fresh_until,==, con3->fresh_until);
- tt_int_op(dsig1->valid_until,==, con3->valid_until);
+ tt_int_op(dsig1->valid_after,OP_EQ, con3->valid_after);
+ tt_int_op(dsig1->fresh_until,OP_EQ, con3->fresh_until);
+ tt_int_op(dsig1->valid_until,OP_EQ, con3->valid_until);
{
digests_t *dsig_digests = strmap_get(dsig1->digests, "ns");
tt_assert(dsig_digests);
- tt_mem_op(dsig_digests->d[DIGEST_SHA1],==, con3->digests.d[DIGEST_SHA1],
- DIGEST_LEN);
+ tt_mem_op(dsig_digests->d[DIGEST_SHA1], OP_EQ,
+ con3->digests.d[DIGEST_SHA1], DIGEST_LEN);
dsig_digests = strmap_get(dsig1->digests, "microdesc");
tt_assert(dsig_digests);
- tt_mem_op(dsig_digests->d[DIGEST_SHA256],==,
+ tt_mem_op(dsig_digests->d[DIGEST_SHA256],OP_EQ,
con_md3->digests.d[DIGEST_SHA256],
DIGEST256_LEN);
}
{
smartlist_t *dsig_signatures = strmap_get(dsig1->signatures, "ns");
tt_assert(dsig_signatures);
- tt_int_op(1,==, smartlist_len(dsig_signatures));
+ tt_int_op(1,OP_EQ, smartlist_len(dsig_signatures));
sig = smartlist_get(dsig_signatures, 0);
- tt_mem_op(sig->identity_digest,==, cert1->cache_info.identity_digest,
+ tt_mem_op(sig->identity_digest,OP_EQ, cert1->cache_info.identity_digest,
DIGEST_LEN);
- tt_int_op(sig->alg,==, DIGEST_SHA1);
+ tt_int_op(sig->alg,OP_EQ, DIGEST_SHA1);
dsig_signatures = strmap_get(dsig1->signatures, "microdesc");
tt_assert(dsig_signatures);
- tt_int_op(1,==, smartlist_len(dsig_signatures));
+ tt_int_op(1,OP_EQ, smartlist_len(dsig_signatures));
sig = smartlist_get(dsig_signatures, 0);
- tt_mem_op(sig->identity_digest,==, cert1->cache_info.identity_digest,
+ tt_mem_op(sig->identity_digest,OP_EQ, cert1->cache_info.identity_digest,
DIGEST_LEN);
- tt_int_op(sig->alg,==, DIGEST_SHA256);
+ tt_int_op(sig->alg,OP_EQ, DIGEST_SHA256);
}
/* Try adding it to con2. */
detached_text2 = get_detached_sigs(con2,con_md2);
- tt_int_op(1,==, networkstatus_add_detached_signatures(con2, dsig1, "test",
- LOG_INFO, &msg));
+ tt_int_op(1,OP_EQ, networkstatus_add_detached_signatures(con2, dsig1,
+ "test", LOG_INFO, &msg));
tor_free(detached_text2);
- tt_int_op(1,==,
+ tt_int_op(1,OP_EQ,
networkstatus_add_detached_signatures(con_md2, dsig1, "test",
LOG_INFO, &msg));
tor_free(detached_text2);
@@ -2114,19 +2116,19 @@ test_a_networkstatus(
printf("%s\n", hd);
});
*/
- tt_int_op(2,==,
+ tt_int_op(2,OP_EQ,
smartlist_len((smartlist_t*)strmap_get(dsig2->signatures, "ns")));
- tt_int_op(2,==,
+ tt_int_op(2,OP_EQ,
smartlist_len((smartlist_t*)strmap_get(dsig2->signatures,
"microdesc")));
/* Try adding to con2 twice; verify that nothing changes. */
- tt_int_op(0,==, networkstatus_add_detached_signatures(con2, dsig1, "test",
- LOG_INFO, &msg));
+ tt_int_op(0,OP_EQ, networkstatus_add_detached_signatures(con2, dsig1,
+ "test", LOG_INFO, &msg));
/* Add to con. */
- tt_int_op(2,==, networkstatus_add_detached_signatures(con, dsig2, "test",
- LOG_INFO, &msg));
+ tt_int_op(2,OP_EQ, networkstatus_add_detached_signatures(con, dsig2,
+ "test", LOG_INFO, &msg));
/* Check signatures */
voter = smartlist_get(con->voters, 1);
sig = smartlist_get(voter->sigs, 0);
@@ -2229,7 +2231,7 @@ test_dir_scale_bw(void *testdata)
scale_array_elements_to_u64(vals, 8, &total);
- tt_int_op((int)total, ==, 48);
+ tt_int_op((int)total, OP_EQ, 48);
total = 0;
for (i=0; i<8; ++i) {
total += vals[i].u64;
@@ -2240,7 +2242,7 @@ test_dir_scale_bw(void *testdata)
for (i=0; i<8; ++i) {
/* vals[2].u64 is the scaled value of 1.0 */
double ratio = ((double)vals[i].u64) / vals[2].u64;
- tt_double_op(fabs(ratio - v[i]), <, .00001);
+ tt_double_op(fabs(ratio - v[i]), OP_LT, .00001);
}
/* test handling of no entries */
@@ -2291,11 +2293,11 @@ test_dir_random_weighted(void *testdata)
inp[i].u64 = vals[i];
total += vals[i];
}
- tt_u64_op(total, ==, 45);
+ tt_u64_op(total, OP_EQ, 45);
for (i=0; i<n; ++i) {
choice = choose_array_element_by_weight(inp, 10);
- tt_int_op(choice, >=, 0);
- tt_int_op(choice, <, 10);
+ tt_int_op(choice, OP_GE, 0);
+ tt_int_op(choice, OP_LT, 10);
histogram[choice]++;
}
@@ -2308,7 +2310,7 @@ test_dir_random_weighted(void *testdata)
if (expected)
frac_diff = (histogram[i] - expected) / ((double)expected);
else
- tt_int_op(histogram[i], ==, 0);
+ tt_int_op(histogram[i], OP_EQ, 0);
sq = frac_diff * frac_diff;
if (sq > max_sq_error)
@@ -2316,12 +2318,12 @@ test_dir_random_weighted(void *testdata)
}
/* It should almost always be much much less than this. If you want to
* figure out the odds, please feel free. */
- tt_double_op(max_sq_error, <, .05);
+ tt_double_op(max_sq_error, OP_LT, .05);
/* Now try a singleton; do we choose it? */
for (i = 0; i < 100; ++i) {
choice = choose_array_element_by_weight(inp, 1);
- tt_int_op(choice, ==, 0);
+ tt_int_op(choice, OP_EQ, 0);
}
/* Now try an array of zeros. We should choose randomly. */
@@ -2330,8 +2332,8 @@ test_dir_random_weighted(void *testdata)
inp[i].u64 = 0;
for (i = 0; i < n; ++i) {
choice = choose_array_element_by_weight(inp, 5);
- tt_int_op(choice, >=, 0);
- tt_int_op(choice, <, 5);
+ tt_int_op(choice, OP_GE, 0);
+ tt_int_op(choice, OP_LT, 5);
histogram[choice]++;
}
/* Now see if we chose things about frequently enough. */
@@ -2347,7 +2349,7 @@ test_dir_random_weighted(void *testdata)
}
/* It should almost always be much much less than this. If you want to
* figure out the odds, please feel free. */
- tt_double_op(max_sq_error, <, .05);
+ tt_double_op(max_sq_error, OP_LT, .05);
done:
;
}
@@ -2546,21 +2548,21 @@ test_vrs_for_umbw(vote_routerstatus_t *vrs, int voter, time_t now)
* Check the first routerstatus - measured bandwidth below the clip
* cutoff.
*/
- tt_str_op(vrs->version,==, "0.1.2.14");
- tt_int_op(rs->published_on,==, now-1500);
- tt_str_op(rs->nickname,==, "router2");
- tt_mem_op(rs->identity_digest,==,
+ tt_str_op(vrs->version,OP_EQ, "0.1.2.14");
+ tt_int_op(rs->published_on,OP_EQ, now-1500);
+ tt_str_op(rs->nickname,OP_EQ, "router2");
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3"
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3",
DIGEST_LEN);
- tt_mem_op(rs->descriptor_digest,==, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
- tt_int_op(rs->addr,==, 0x99008801);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 8000);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
+ tt_int_op(rs->addr,OP_EQ, 0x99008801);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 8000);
tt_assert(rs->has_bandwidth);
tt_assert(vrs->has_measured_bw);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb / 2);
- tt_int_op(vrs->measured_bw_kb,==, max_unmeasured_bw_kb / 2);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb / 2);
+ tt_int_op(vrs->measured_bw_kb,OP_EQ, max_unmeasured_bw_kb / 2);
} else if (tor_memeq(rs->identity_digest,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5",
@@ -2570,24 +2572,24 @@ test_vrs_for_umbw(vote_routerstatus_t *vrs, int voter, time_t now)
* Check the second routerstatus - measured bandwidth above the clip
* cutoff.
*/
- tt_str_op(vrs->version,==, "0.2.0.5");
- tt_int_op(rs->published_on,==, now-1000);
- tt_str_op(rs->nickname,==, "router1");
- tt_mem_op(rs->identity_digest,==,
+ tt_str_op(vrs->version,OP_EQ, "0.2.0.5");
+ tt_int_op(rs->published_on,OP_EQ, now-1000);
+ tt_str_op(rs->nickname,OP_EQ, "router1");
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5",
DIGEST_LEN);
- tt_mem_op(rs->descriptor_digest,==, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
- tt_int_op(rs->addr,==, 0x99009901);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 0);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
+ tt_int_op(rs->addr,OP_EQ, 0x99009901);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 0);
tor_addr_parse(&addr_ipv6, "[1:2:3::4]");
tt_assert(tor_addr_eq(&rs->ipv6_addr, &addr_ipv6));
- tt_int_op(rs->ipv6_orport,==, 4711);
+ tt_int_op(rs->ipv6_orport,OP_EQ, 4711);
tt_assert(rs->has_bandwidth);
tt_assert(vrs->has_measured_bw);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb * 2);
- tt_int_op(vrs->measured_bw_kb,==, max_unmeasured_bw_kb * 2);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb * 2);
+ tt_int_op(vrs->measured_bw_kb,OP_EQ, max_unmeasured_bw_kb * 2);
} else if (tor_memeq(rs->identity_digest,
"\x33\x33\x33\x33\x33\x33\x33\x33\x33\x33"
"\x33\x33\x33\x33\x33\x33\x33\x33\x33\x33",
@@ -2599,8 +2601,8 @@ test_vrs_for_umbw(vote_routerstatus_t *vrs, int voter, time_t now)
*/
tt_assert(rs->has_bandwidth);
tt_assert(!(vrs->has_measured_bw));
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb * 2);
- tt_int_op(vrs->measured_bw_kb,==, 0);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb * 2);
+ tt_int_op(vrs->measured_bw_kb,OP_EQ, 0);
} else if (tor_memeq(rs->identity_digest,
"\x34\x34\x34\x34\x34\x34\x34\x34\x34\x34"
"\x34\x34\x34\x34\x34\x34\x34\x34\x34\x34",
@@ -2611,8 +2613,8 @@ test_vrs_for_umbw(vote_routerstatus_t *vrs, int voter, time_t now)
*/
tt_assert(rs->has_bandwidth);
tt_assert(!(vrs->has_measured_bw));
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb / 2);
- tt_int_op(vrs->measured_bw_kb,==, 0);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb / 2);
+ tt_int_op(vrs->measured_bw_kb,OP_EQ, 0);
} else {
tt_assert(0);
}
@@ -2633,7 +2635,7 @@ test_consensus_for_umbw(networkstatus_t *con, time_t now)
tt_assert(!con->cert);
// tt_assert(con->consensus_method >= MIN_METHOD_TO_CLIP_UNMEASURED_BW_KB);
tt_assert(con->consensus_method >= 16);
- tt_int_op(4,==, smartlist_len(con->routerstatus_list));
+ tt_int_op(4,OP_EQ, smartlist_len(con->routerstatus_list));
/* There should be four listed routers; all voters saw the same in this */
done:
@@ -2657,11 +2659,11 @@ test_routerstatus_for_umbw(routerstatus_t *rs, time_t now)
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3"
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3",
DIGEST_LEN)) {
- tt_mem_op(rs->identity_digest,==,
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3"
"\x3\x3\x3\x3\x3\x3\x3\x3\x3\x3",
DIGEST_LEN);
- tt_mem_op(rs->descriptor_digest,==, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "NNNNNNNNNNNNNNNNNNNN", DIGEST_LEN);
tt_assert(!rs->is_authority);
tt_assert(!rs->is_exit);
tt_assert(!rs->is_fast);
@@ -2673,26 +2675,26 @@ test_routerstatus_for_umbw(routerstatus_t *rs, time_t now)
tt_assert(!rs->is_named);
/* This one should have measured bandwidth below the clip cutoff */
tt_assert(rs->has_bandwidth);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb / 2);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb / 2);
tt_assert(!(rs->bw_is_unmeasured));
} else if (tor_memeq(rs->identity_digest,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5",
DIGEST_LEN)) {
/* This one showed up in 3 digests. Twice with ID 'M', once with 'Z'. */
- tt_mem_op(rs->identity_digest,==,
+ tt_mem_op(rs->identity_digest,OP_EQ,
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5"
"\x5\x5\x5\x5\x5\x5\x5\x5\x5\x5",
DIGEST_LEN);
- tt_str_op(rs->nickname,==, "router1");
- tt_mem_op(rs->descriptor_digest,==, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
- tt_int_op(rs->published_on,==, now-1000);
- tt_int_op(rs->addr,==, 0x99009901);
- tt_int_op(rs->or_port,==, 443);
- tt_int_op(rs->dir_port,==, 0);
+ tt_str_op(rs->nickname,OP_EQ, "router1");
+ tt_mem_op(rs->descriptor_digest,OP_EQ, "MMMMMMMMMMMMMMMMMMMM", DIGEST_LEN);
+ tt_int_op(rs->published_on,OP_EQ, now-1000);
+ tt_int_op(rs->addr,OP_EQ, 0x99009901);
+ tt_int_op(rs->or_port,OP_EQ, 443);
+ tt_int_op(rs->dir_port,OP_EQ, 0);
tor_addr_parse(&addr_ipv6, "[1:2:3::4]");
tt_assert(tor_addr_eq(&rs->ipv6_addr, &addr_ipv6));
- tt_int_op(rs->ipv6_orport,==, 4711);
+ tt_int_op(rs->ipv6_orport,OP_EQ, 4711);
tt_assert(!rs->is_authority);
tt_assert(rs->is_exit);
tt_assert(rs->is_fast);
@@ -2703,7 +2705,7 @@ test_routerstatus_for_umbw(routerstatus_t *rs, time_t now)
tt_assert(!rs->is_named);
/* This one should have measured bandwidth above the clip cutoff */
tt_assert(rs->has_bandwidth);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb * 2);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb * 2);
tt_assert(!(rs->bw_is_unmeasured));
} else if (tor_memeq(rs->identity_digest,
"\x33\x33\x33\x33\x33\x33\x33\x33\x33\x33"
@@ -2714,7 +2716,7 @@ test_routerstatus_for_umbw(routerstatus_t *rs, time_t now)
* and so should be clipped
*/
tt_assert(rs->has_bandwidth);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb);
tt_assert(rs->bw_is_unmeasured);
} else if (tor_memeq(rs->identity_digest,
"\x34\x34\x34\x34\x34\x34\x34\x34\x34\x34"
@@ -2725,7 +2727,7 @@ test_routerstatus_for_umbw(routerstatus_t *rs, time_t now)
* and so should not be clipped
*/
tt_assert(rs->has_bandwidth);
- tt_int_op(rs->bandwidth_kb,==, max_unmeasured_bw_kb / 2);
+ tt_int_op(rs->bandwidth_kb,OP_EQ, max_unmeasured_bw_kb / 2);
tt_assert(rs->bw_is_unmeasured);
} else {
/* Weren't expecting this... */
@@ -2801,7 +2803,7 @@ test_dir_fmt_control_ns(void *arg)
s = networkstatus_getinfo_helper_single(&rs);
tt_assert(s);
- tt_str_op(s, ==,
+ tt_str_op(s, OP_EQ,
"r TetsuoMilk U3RhdGVseSwgcGx1bXAgQnVjayA "
"TXVsbGlnYW4gY2FtZSB1cCBmcm8 2013-04-02 17:53:18 "
"32.48.64.80 9001 9002\n"
@@ -2824,16 +2826,17 @@ test_dir_http_handling(void *args)
"Host: example.com\r\n"
"User-Agent: Mozilla/5.0 (Windows;"
" U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n",
- &url),==, 0);
- tt_str_op(url,==, "/tor/a/b/c.txt");
+ &url),OP_EQ, 0);
+ tt_str_op(url,OP_EQ, "/tor/a/b/c.txt");
tor_free(url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.0\r\n", &url),==, 0);
- tt_str_op(url,==, "/tor/a/b/c.txt");
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.0\r\n", &url),OP_EQ, 0);
+ tt_str_op(url,OP_EQ, "/tor/a/b/c.txt");
tor_free(url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.600\r\n", &url),==, 0);
- tt_str_op(url,==, "/tor/a/b/c.txt");
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.600\r\n", &url),
+ OP_EQ, 0);
+ tt_str_op(url,OP_EQ, "/tor/a/b/c.txt");
tor_free(url);
/* Should prepend '/tor/' to url if required */
@@ -2841,8 +2844,8 @@ test_dir_http_handling(void *args)
"Host: example.com\r\n"
"User-Agent: Mozilla/5.0 (Windows;"
" U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n",
- &url),==, 0);
- tt_str_op(url,==, "/tor/a/b/c.txt");
+ &url),OP_EQ, 0);
+ tt_str_op(url,OP_EQ, "/tor/a/b/c.txt");
tor_free(url);
/* Bad headers -- no HTTP/1.x*/
@@ -2850,7 +2853,7 @@ test_dir_http_handling(void *args)
"Host: example.com\r\n"
"User-Agent: Mozilla/5.0 (Windows;"
" U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n",
- &url),==, -1);
+ &url),OP_EQ, -1);
tt_assert(!url);
/* Bad headers */
@@ -2858,22 +2861,23 @@ test_dir_http_handling(void *args)
"Host: example.com\r\n"
"User-Agent: Mozilla/5.0 (Windows;"
" U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n",
- &url),==, -1);
+ &url),OP_EQ, -1);
tt_assert(!url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt", &url),==, -1);
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt", &url),OP_EQ, -1);
tt_assert(!url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1", &url),==, -1);
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1", &url),OP_EQ, -1);
tt_assert(!url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1x\r\n", &url),==, -1);
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1x\r\n", &url),
+ OP_EQ, -1);
tt_assert(!url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.", &url),==, -1);
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.", &url),OP_EQ, -1);
tt_assert(!url);
- tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.\r", &url),==, -1);
+ tt_int_op(parse_http_url("GET /tor/a/b/c.txt HTTP/1.\r", &url),OP_EQ, -1);
tt_assert(!url);
done:
diff --git a/src/test/test_entrynodes.c b/src/test/test_entrynodes.c
index bddc0f11e0..5bf2985d2f 100644
--- a/src/test/test_entrynodes.c
+++ b/src/test/test_entrynodes.c
@@ -71,15 +71,16 @@ setup_fake_routerlist(void)
retval = router_load_routers_from_string(TEST_DESCRIPTORS,
NULL, SAVED_IN_JOURNAL,
NULL, 0, NULL);
- tt_int_op(retval, ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(retval, OP_EQ, NUMBER_OF_DESCRIPTORS);
/* Sanity checking of routerlist and nodelist. */
our_routerlist = router_get_routerlist();
- tt_int_op(smartlist_len(our_routerlist->routers), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(our_routerlist->routers), OP_EQ,
+ NUMBER_OF_DESCRIPTORS);
routerlist_assert_ok(our_routerlist);
our_nodelist = nodelist_get_list();
- tt_int_op(smartlist_len(our_nodelist), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(our_nodelist), OP_EQ, NUMBER_OF_DESCRIPTORS);
/* Mark all routers as non-guards but up and running! */
SMARTLIST_FOREACH_BEGIN(our_nodelist, node_t *, node) {
@@ -163,7 +164,7 @@ test_choose_random_entry_one_possible_guard(void *arg)
/* Pick an entry. Make sure we pick the node we marked as guard. */
chosen_entry = choose_random_entry(NULL);
- tt_ptr_op(chosen_entry, ==, the_guard);
+ tt_ptr_op(chosen_entry, OP_EQ, the_guard);
done:
;
@@ -189,14 +190,14 @@ populate_live_entry_guards_test_helper(int num_needed)
/* Set NumEntryGuards to the provided number. */
options->NumEntryGuards = num_needed;
- tt_int_op(num_needed, ==, decide_num_guards(options, 0));
+ tt_int_op(num_needed, OP_EQ, decide_num_guards(options, 0));
/* The global entry guards smartlist should be empty now. */
- tt_int_op(smartlist_len(all_entry_guards), ==, 0);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 0);
/* Walk the nodelist and add all nodes as entry guards. */
our_nodelist = nodelist_get_list();
- tt_int_op(smartlist_len(our_nodelist), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(our_nodelist), OP_EQ, NUMBER_OF_DESCRIPTORS);
SMARTLIST_FOREACH_BEGIN(our_nodelist, const node_t *, node) {
const node_t *node_tmp;
@@ -205,20 +206,20 @@ populate_live_entry_guards_test_helper(int num_needed)
} SMARTLIST_FOREACH_END(node);
/* Make sure the nodes were added as entry guards. */
- tt_int_op(smartlist_len(all_entry_guards), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, NUMBER_OF_DESCRIPTORS);
/* Ensure that all the possible entry guards are enough to satisfy us. */
- tt_int_op(smartlist_len(all_entry_guards), >=, num_needed);
+ tt_int_op(smartlist_len(all_entry_guards), OP_GE, num_needed);
/* Walk the entry guard list for some sanity checking */
SMARTLIST_FOREACH_BEGIN(all_entry_guards, const entry_guard_t *, entry) {
/* Since we called add_an_entry_guard() with 'for_discovery' being
False, all guards should have made_contact enabled. */
- tt_int_op(entry->made_contact, ==, 1);
+ tt_int_op(entry->made_contact, OP_EQ, 1);
/* Since we don't have a routerstatus, all of the entry guards are
not directory servers. */
- tt_int_op(entry->is_dir_cache, ==, 0);
+ tt_int_op(entry->is_dir_cache, OP_EQ, 0);
} SMARTLIST_FOREACH_END(entry);
/* First, try to get some fast guards. This should fail. */
@@ -228,8 +229,8 @@ populate_live_entry_guards_test_helper(int num_needed)
NO_DIRINFO, /* Don't care about DIRINFO*/
0, 0,
1); /* We want fast guard! */
- tt_int_op(retval, ==, 0);
- tt_int_op(smartlist_len(live_entry_guards), ==, 0);
+ tt_int_op(retval, OP_EQ, 0);
+ tt_int_op(smartlist_len(live_entry_guards), OP_EQ, 0);
/* Now try to get some stable guards. This should fail too. */
retval = populate_live_entry_guards(live_entry_guards,
@@ -239,8 +240,8 @@ populate_live_entry_guards_test_helper(int num_needed)
0,
1, /* We want stable guard! */
0);
- tt_int_op(retval, ==, 0);
- tt_int_op(smartlist_len(live_entry_guards), ==, 0);
+ tt_int_op(retval, OP_EQ, 0);
+ tt_int_op(smartlist_len(live_entry_guards), OP_EQ, 0);
/* Now try to get any guard we can find. This should succeed. */
retval = populate_live_entry_guards(live_entry_guards,
@@ -253,8 +254,8 @@ populate_live_entry_guards_test_helper(int num_needed)
should have added 'num_needed' of them to live_entry_guards.
'retval' should be 1 since we now have enough live entry guards
to pick one. */
- tt_int_op(retval, ==, 1);
- tt_int_op(smartlist_len(live_entry_guards), ==, num_needed);
+ tt_int_op(retval, OP_EQ, 1);
+ tt_int_op(smartlist_len(live_entry_guards), OP_EQ, num_needed);
done:
smartlist_free(live_entry_guards);
@@ -361,7 +362,7 @@ test_entry_guards_parse_state_simple(void *arg)
(void) arg;
/* The global entry guards smartlist should be empty now. */
- tt_int_op(smartlist_len(all_entry_guards), ==, 0);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 0);
{ /* Prepare the state entry */
@@ -387,34 +388,34 @@ test_entry_guards_parse_state_simple(void *arg)
/* Parse state */
retval = entry_guards_parse_state(state, 1, &msg);
- tt_int_op(retval, >=, 0);
+ tt_int_op(retval, OP_GE, 0);
/* Test that the guard was registered.
We need to re-get the entry guard list since its pointer was
overwritten in entry_guards_parse_state(). */
all_entry_guards = get_entry_guards();
- tt_int_op(smartlist_len(all_entry_guards), ==, 1);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 1);
{ /* Test the entry guard structure */
char hex_digest[1024];
char str_time[1024];
const entry_guard_t *e = smartlist_get(all_entry_guards, 0);
- tt_str_op(e->nickname, ==, nickname); /* Verify nickname */
+ tt_str_op(e->nickname, OP_EQ, nickname); /* Verify nickname */
base16_encode(hex_digest, sizeof(hex_digest),
e->identity, DIGEST_LEN);
- tt_str_op(hex_digest, ==, fpr); /* Verify fingerprint */
+ tt_str_op(hex_digest, OP_EQ, fpr); /* Verify fingerprint */
tt_assert(e->is_dir_cache); /* Verify dirness */
- tt_str_op(e->chosen_by_version, ==, tor_version); /* Verify tor version */
+ tt_str_op(e->chosen_by_version, OP_EQ, tor_version); /* Verify version */
tt_assert(e->made_contact); /* All saved guards have been contacted */
tt_assert(e->bad_since); /* Verify bad_since timestamp */
format_iso_time(str_time, e->bad_since);
- tt_str_op(str_time, ==, unlisted_since);
+ tt_str_op(str_time, OP_EQ, unlisted_since);
/* The rest should be unset */
tt_assert(!e->unreachable_since);
@@ -456,7 +457,7 @@ test_entry_guards_parse_state_pathbias(void *arg)
(void) arg;
/* The global entry guards smartlist should be empty now. */
- tt_int_op(smartlist_len(all_entry_guards), ==, 0);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 0);
{ /* Prepare the state entry */
@@ -492,11 +493,11 @@ test_entry_guards_parse_state_pathbias(void *arg)
/* Parse state */
retval = entry_guards_parse_state(state, 1, &msg);
- tt_int_op(retval, >=, 0);
+ tt_int_op(retval, OP_GE, 0);
/* Test that the guard was registered */
all_entry_guards = get_entry_guards();
- tt_int_op(smartlist_len(all_entry_guards), ==, 1);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 1);
{ /* Test the path bias of this guard */
const entry_guard_t *e = smartlist_get(all_entry_guards, 0);
@@ -505,12 +506,13 @@ test_entry_guards_parse_state_pathbias(void *arg)
tt_assert(!e->can_retry);
/* XXX tt_double_op doesn't support equality. Cast to int for now. */
- tt_int_op((int)e->circ_attempts, ==, (int)circ_attempts);
- tt_int_op((int)e->circ_successes, ==, (int)circ_successes);
- tt_int_op((int)e->successful_circuits_closed, ==, (int)successful_closed);
- tt_int_op((int)e->timeouts, ==, (int)timeouts);
- tt_int_op((int)e->collapsed_circuits, ==, (int)collapsed);
- tt_int_op((int)e->unusable_circuits, ==, (int)unusable);
+ tt_int_op((int)e->circ_attempts, OP_EQ, (int)circ_attempts);
+ tt_int_op((int)e->circ_successes, OP_EQ, (int)circ_successes);
+ tt_int_op((int)e->successful_circuits_closed, OP_EQ,
+ (int)successful_closed);
+ tt_int_op((int)e->timeouts, OP_EQ, (int)timeouts);
+ tt_int_op((int)e->collapsed_circuits, OP_EQ, (int)collapsed);
+ tt_int_op((int)e->unusable_circuits, OP_EQ, (int)unusable);
}
done:
@@ -537,17 +539,17 @@ test_entry_guards_set_from_config(void *arg)
retval = routerset_parse(options->EntryNodes,
entrynodes_str,
"test_entrynodes");
- tt_int_op(retval, >=, 0);
+ tt_int_op(retval, OP_GE, 0);
/* Read nodes from EntryNodes */
entry_guards_set_from_config(options);
/* Test that only one guard was added. */
- tt_int_op(smartlist_len(all_entry_guards), ==, 1);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 1);
/* Make sure it was the guard we specified. */
chosen_entry = choose_random_entry(NULL);
- tt_str_op(chosen_entry->ri->nickname, ==, entrynodes_str);
+ tt_str_op(chosen_entry->ri->nickname, OP_EQ, entrynodes_str);
done:
routerset_free(options->EntryNodes);
@@ -569,59 +571,59 @@ test_entry_is_time_to_retry(void *arg)
test_guard->unreachable_since = now - 1;
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->unreachable_since = now - (6*60*60 - 1);
test_guard->last_attempted = now - (60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->last_attempted = now - (60*60 - 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,0);
+ tt_int_op(retval,OP_EQ,0);
test_guard->unreachable_since = now - (6*60*60 + 1);
test_guard->last_attempted = now - (4*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->unreachable_since = now - (3*24*60*60 - 1);
test_guard->last_attempted = now - (4*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->unreachable_since = now - (3*24*60*60 + 1);
test_guard->last_attempted = now - (18*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->unreachable_since = now - (7*24*60*60 - 1);
test_guard->last_attempted = now - (18*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->last_attempted = now - (18*60*60 - 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,0);
+ tt_int_op(retval,OP_EQ,0);
test_guard->unreachable_since = now - (7*24*60*60 + 1);
test_guard->last_attempted = now - (36*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
test_guard->unreachable_since = now - (7*24*60*60 + 1);
test_guard->last_attempted = now - (36*60*60 + 1);
retval = entry_is_time_to_retry(test_guard,now);
- tt_int_op(retval,==,1);
+ tt_int_op(retval,OP_EQ,1);
done:
tor_free(test_guard);
@@ -641,23 +643,23 @@ test_entry_is_live(void *arg)
(void) arg;
/* The global entry guards smartlist should be empty now. */
- tt_int_op(smartlist_len(all_entry_guards), ==, 0);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, 0);
/* Walk the nodelist and add all nodes as entry guards. */
our_nodelist = nodelist_get_list();
- tt_int_op(smartlist_len(our_nodelist), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(our_nodelist), OP_EQ, NUMBER_OF_DESCRIPTORS);
SMARTLIST_FOREACH_BEGIN(our_nodelist, const node_t *, node) {
const node_t *node_tmp;
node_tmp = add_an_entry_guard(node, 0, 1, 0, 0);
tt_assert(node_tmp);
- tt_int_op(node->is_stable, ==, 0);
- tt_int_op(node->is_fast, ==, 0);
+ tt_int_op(node->is_stable, OP_EQ, 0);
+ tt_int_op(node->is_fast, OP_EQ, 0);
} SMARTLIST_FOREACH_END(node);
/* Make sure the nodes were added as entry guards. */
- tt_int_op(smartlist_len(all_entry_guards), ==, NUMBER_OF_DESCRIPTORS);
+ tt_int_op(smartlist_len(all_entry_guards), OP_EQ, NUMBER_OF_DESCRIPTORS);
/* Now get a random test entry that we will use for this unit test. */
which_node = 3; /* (chosen by fair dice roll) */
@@ -681,12 +683,12 @@ test_entry_is_live(void *arg)
/* Don't impose any restrictions on the node. Should succeed. */
test_node = entry_is_live(test_entry, 0, &msg);
tt_assert(test_node);
- tt_ptr_op(test_node, ==, node_get_by_id(test_entry->identity));
+ tt_ptr_op(test_node, OP_EQ, node_get_by_id(test_entry->identity));
/* Require descriptor for this node. It has one so it should succeed. */
test_node = entry_is_live(test_entry, ENTRY_NEED_DESCRIPTOR, &msg);
tt_assert(test_node);
- tt_ptr_op(test_node, ==, node_get_by_id(test_entry->identity));
+ tt_ptr_op(test_node, OP_EQ, node_get_by_id(test_entry->identity));
done:
; /* XXX */
diff --git a/src/test/test_extorport.c b/src/test/test_extorport.c
index 4049d6d5e0..d99961dd4a 100644
--- a/src/test/test_extorport.c
+++ b/src/test/test_extorport.c
@@ -24,35 +24,37 @@ test_ext_or_id_map(void *arg)
(void)arg;
/* pre-initialization */
- tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx"));
+ tt_ptr_op(NULL, OP_EQ,
+ connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx"));
c1 = or_connection_new(CONN_TYPE_EXT_OR, AF_INET);
c2 = or_connection_new(CONN_TYPE_EXT_OR, AF_INET);
c3 = or_connection_new(CONN_TYPE_OR, AF_INET);
- tt_ptr_op(c1->ext_or_conn_id, !=, NULL);
- tt_ptr_op(c2->ext_or_conn_id, !=, NULL);
- tt_ptr_op(c3->ext_or_conn_id, ==, NULL);
+ tt_ptr_op(c1->ext_or_conn_id, OP_NE, NULL);
+ tt_ptr_op(c2->ext_or_conn_id, OP_NE, NULL);
+ tt_ptr_op(c3->ext_or_conn_id, OP_EQ, NULL);
- tt_ptr_op(c1, ==, connection_or_get_by_ext_or_id(c1->ext_or_conn_id));
- tt_ptr_op(c2, ==, connection_or_get_by_ext_or_id(c2->ext_or_conn_id));
- tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx"));
+ tt_ptr_op(c1, OP_EQ, connection_or_get_by_ext_or_id(c1->ext_or_conn_id));
+ tt_ptr_op(c2, OP_EQ, connection_or_get_by_ext_or_id(c2->ext_or_conn_id));
+ tt_ptr_op(NULL, OP_EQ,
+ connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx"));
idp = tor_memdup(c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN);
/* Give c2 a new ID. */
connection_or_set_ext_or_identifier(c2);
- tt_mem_op(idp, !=, c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN);
+ tt_mem_op(idp, OP_NE, c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN);
idp2 = tor_memdup(c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN);
tt_assert(!tor_digest_is_zero(idp2));
- tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp));
- tt_ptr_op(c2, ==, connection_or_get_by_ext_or_id(idp2));
+ tt_ptr_op(NULL, OP_EQ, connection_or_get_by_ext_or_id(idp));
+ tt_ptr_op(c2, OP_EQ, connection_or_get_by_ext_or_id(idp2));
/* Now remove it. */
connection_or_remove_from_ext_or_id_map(c2);
- tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp));
- tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp2));
+ tt_ptr_op(NULL, OP_EQ, connection_or_get_by_ext_or_id(idp));
+ tt_ptr_op(NULL, OP_EQ, connection_or_get_by_ext_or_id(idp2));
done:
if (c1)
@@ -112,33 +114,33 @@ test_ext_or_write_command(void *arg)
/* Length too long */
tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 100, "X", 100000),
- <, 0);
+ OP_LT, 0);
/* Empty command */
tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0x99, NULL, 0),
- ==, 0);
+ OP_EQ, 0);
cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz);
- tt_int_op(sz, ==, 4);
- tt_mem_op(cp, ==, "\x00\x99\x00\x00", 4);
+ tt_int_op(sz, OP_EQ, 4);
+ tt_mem_op(cp, OP_EQ, "\x00\x99\x00\x00", 4);
tor_free(cp);
/* Medium command. */
tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0x99,
- "Wai\0Hello", 9), ==, 0);
+ "Wai\0Hello", 9), OP_EQ, 0);
cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz);
- tt_int_op(sz, ==, 13);
- tt_mem_op(cp, ==, "\x00\x99\x00\x09Wai\x00Hello", 13);
+ tt_int_op(sz, OP_EQ, 13);
+ tt_mem_op(cp, OP_EQ, "\x00\x99\x00\x09Wai\x00Hello", 13);
tor_free(cp);
/* Long command */
buf = tor_malloc(65535);
memset(buf, 'x', 65535);
tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0xf00d,
- buf, 65535), ==, 0);
+ buf, 65535), OP_EQ, 0);
cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz);
- tt_int_op(sz, ==, 65539);
- tt_mem_op(cp, ==, "\xf0\x0d\xff\xff", 4);
- tt_mem_op(cp+4, ==, buf, 65535);
+ tt_int_op(sz, OP_EQ, 65539);
+ tt_mem_op(cp, OP_EQ, "\xf0\x0d\xff\xff", 4);
+ tt_mem_op(cp+4, OP_EQ, buf, 65535);
tor_free(cp);
done:
@@ -175,7 +177,7 @@ test_ext_or_init_auth(void *arg)
tor_free(options->DataDirectory);
options->DataDirectory = tor_strdup("foo");
cp = get_ext_or_auth_cookie_file_name();
- tt_str_op(cp, ==, "foo"PATH_SEPARATOR"extended_orport_auth_cookie");
+ tt_str_op(cp, OP_EQ, "foo"PATH_SEPARATOR"extended_orport_auth_cookie");
tor_free(cp);
/* Shouldn't be initialized already, or our tests will be a bit
@@ -187,30 +189,30 @@ test_ext_or_init_auth(void *arg)
fn = get_fname("ext_cookie_file");
options->ExtORPortCookieAuthFile = tor_strdup(fn);
cp = get_ext_or_auth_cookie_file_name();
- tt_str_op(cp, ==, fn);
+ tt_str_op(cp, OP_EQ, fn);
tor_free(cp);
/* Test the initialization function with a broken
write_bytes_to_file(). See if the problem is handled properly. */
MOCK(write_bytes_to_file, write_bytes_to_file_fail);
- tt_int_op(-1, ==, init_ext_or_cookie_authentication(1));
- tt_int_op(ext_or_auth_cookie_is_set, ==, 0);
+ tt_int_op(-1, OP_EQ, init_ext_or_cookie_authentication(1));
+ tt_int_op(ext_or_auth_cookie_is_set, OP_EQ, 0);
UNMOCK(write_bytes_to_file);
/* Now do the actual initialization. */
- tt_int_op(0, ==, init_ext_or_cookie_authentication(1));
- tt_int_op(ext_or_auth_cookie_is_set, ==, 1);
+ tt_int_op(0, OP_EQ, init_ext_or_cookie_authentication(1));
+ tt_int_op(ext_or_auth_cookie_is_set, OP_EQ, 1);
cp = read_file_to_str(fn, RFTS_BIN, &st);
- tt_ptr_op(cp, !=, NULL);
- tt_u64_op((uint64_t)st.st_size, ==, 64);
- tt_mem_op(cp,==, "! Extended ORPort Auth Cookie !\x0a", 32);
- tt_mem_op(cp+32,==, ext_or_auth_cookie, 32);
+ tt_ptr_op(cp, OP_NE, NULL);
+ tt_u64_op((uint64_t)st.st_size, OP_EQ, 64);
+ tt_mem_op(cp,OP_EQ, "! Extended ORPort Auth Cookie !\x0a", 32);
+ tt_mem_op(cp+32,OP_EQ, ext_or_auth_cookie, 32);
memcpy(cookie0, ext_or_auth_cookie, 32);
tt_assert(!tor_mem_is_zero((char*)ext_or_auth_cookie, 32));
/* Operation should be idempotent. */
- tt_int_op(0, ==, init_ext_or_cookie_authentication(1));
- tt_mem_op(cookie0,==, ext_or_auth_cookie, 32);
+ tt_int_op(0, OP_EQ, init_ext_or_cookie_authentication(1));
+ tt_mem_op(cookie0,OP_EQ, ext_or_auth_cookie, 32);
done:
tor_free(cp);
@@ -237,8 +239,8 @@ test_ext_or_cookie_auth(void *arg)
(void)arg;
- tt_int_op(strlen(client_hash_input), ==, 46+32+32);
- tt_int_op(strlen(server_hash_input), ==, 46+32+32);
+ tt_int_op(strlen(client_hash_input), OP_EQ, 46+32+32);
+ tt_int_op(strlen(server_hash_input), OP_EQ, 46+32+32);
ext_or_auth_cookie = tor_malloc_zero(32);
memcpy(ext_or_auth_cookie, "s beside you? When I count, ther", 32);
@@ -258,20 +260,20 @@ test_ext_or_cookie_auth(void *arg)
*/
/* Wrong length */
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
handle_client_auth_nonce(client_nonce, 33, &client_hash, &reply,
&reply_len));
- tt_int_op(-1, ==,
+ tt_int_op(-1, OP_EQ,
handle_client_auth_nonce(client_nonce, 31, &client_hash, &reply,
&reply_len));
/* Now let's try this for real! */
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
handle_client_auth_nonce(client_nonce, 32, &client_hash, &reply,
&reply_len));
- tt_int_op(reply_len, ==, 64);
- tt_ptr_op(reply, !=, NULL);
- tt_ptr_op(client_hash, !=, NULL);
+ tt_int_op(reply_len, OP_EQ, 64);
+ tt_ptr_op(reply, OP_NE, NULL);
+ tt_ptr_op(client_hash, OP_NE, NULL);
/* Fill in the server nonce into the hash inputs... */
memcpy(server_hash_input+46+32, reply+32, 32);
memcpy(client_hash_input+46+32, reply+32, 32);
@@ -280,15 +282,15 @@ test_ext_or_cookie_auth(void *arg)
46+32+32);
crypto_hmac_sha256(hmac2, (char*)ext_or_auth_cookie, 32, client_hash_input,
46+32+32);
- tt_mem_op(hmac1,==, reply, 32);
- tt_mem_op(hmac2,==, client_hash, 32);
+ tt_mem_op(hmac1,OP_EQ, reply, 32);
+ tt_mem_op(hmac2,OP_EQ, client_hash, 32);
/* Now do it again and make sure that the results are *different* */
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
handle_client_auth_nonce(client_nonce, 32, &client_hash2, &reply2,
&reply_len));
- tt_mem_op(reply2,!=, reply, reply_len);
- tt_mem_op(client_hash2,!=, client_hash, 32);
+ tt_mem_op(reply2,OP_NE, reply, reply_len);
+ tt_mem_op(client_hash2,OP_NE, client_hash, 32);
/* But that this one checks out too. */
memcpy(server_hash_input+46+32, reply2+32, 32);
memcpy(client_hash_input+46+32, reply2+32, 32);
@@ -297,8 +299,8 @@ test_ext_or_cookie_auth(void *arg)
46+32+32);
crypto_hmac_sha256(hmac2, (char*)ext_or_auth_cookie, 32, client_hash_input,
46+32+32);
- tt_mem_op(hmac1,==, reply2, 32);
- tt_mem_op(hmac2,==, client_hash2, 32);
+ tt_mem_op(hmac1,OP_EQ, reply2, 32);
+ tt_mem_op(hmac2,OP_EQ, client_hash2, 32);
done:
tor_free(reply);
@@ -334,12 +336,12 @@ test_ext_or_cookie_auth_testvec(void *arg)
MOCK(crypto_rand, crypto_rand_return_tse_str);
- tt_int_op(0, ==,
+ tt_int_op(0, OP_EQ,
handle_client_auth_nonce(client_nonce, 32, &client_hash, &reply,
&reply_len));
- tt_ptr_op(reply, !=, NULL );
- tt_uint_op(reply_len, ==, 64);
- tt_mem_op(reply+32,==, "te road There is always another ", 32);
+ tt_ptr_op(reply, OP_NE, NULL );
+ tt_uint_op(reply_len, OP_EQ, 64);
+ tt_mem_op(reply+32,OP_EQ, "te road There is always another ", 32);
/* HMACSHA256("Gliding wrapt in a brown mantle,"
* "ExtORPort authentication server-to-client hash"
* "But when I look ahead up the write road There is always another ");
@@ -402,11 +404,11 @@ handshake_start(or_connection_t *conn, int receiving)
} while (0)
#define CONTAINS(s,n) \
do { \
- tt_int_op((n), <=, sizeof(b)); \
- tt_int_op(buf_datalen(TO_CONN(conn)->outbuf), ==, (n)); \
+ tt_int_op((n), OP_LE, sizeof(b)); \
+ tt_int_op(buf_datalen(TO_CONN(conn)->outbuf), OP_EQ, (n)); \
if ((n)) { \
fetch_from_buf(b, (n), TO_CONN(conn)->outbuf); \
- tt_mem_op(b, ==, (s), (n)); \
+ tt_mem_op(b, OP_EQ, (s), (n)); \
} \
} while (0)
@@ -416,14 +418,15 @@ do_ext_or_handshake(or_connection_t *conn)
{
char b[256];
- tt_int_op(0, ==, connection_ext_or_start_auth(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_start_auth(conn));
CONTAINS("\x01\x00", 2);
WRITE("\x01", 1);
WRITE("But when I look ahead up the whi", 32);
MOCK(crypto_rand, crypto_rand_return_tse_str);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
UNMOCK(crypto_rand);
- tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH);
+ tt_int_op(TO_CONN(conn)->state, OP_EQ,
+ EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH);
CONTAINS("\xec\x80\xed\x6e\x54\x6d\x3b\x36\xfd\xfc\x22\xfe\x13\x15\x41\x6b"
"\x02\x9f\x1a\xde\x76\x10\xd9\x10\x87\x8b\x62\xee\xb7\x40\x38\x21"
"te road There is always another ", 64);
@@ -431,10 +434,10 @@ do_ext_or_handshake(or_connection_t *conn)
WRITE("\xab\x39\x17\x32\xdd\x2e\xd9\x68\xcd\x40\xc0\x87\xd1\xb1\xf2\x5b"
"\x33\xb3\xcd\x77\xff\x79\xbd\x80\xc2\x07\x4b\xbf\x43\x81\x19\xa2",
32);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("\x01", 1);
tt_assert(! TO_CONN(conn)->marked_for_close);
- tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_OPEN);
+ tt_int_op(TO_CONN(conn)->state, OP_EQ, EXT_OR_CONN_STATE_OPEN);
done: ;
}
@@ -456,14 +459,14 @@ test_ext_or_handshake(void *arg)
init_connection_lists();
conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET);
- tt_int_op(0, ==, connection_ext_or_start_auth(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_start_auth(conn));
/* The server starts by telling us about the one supported authtype. */
CONTAINS("\x01\x00", 2);
/* Say the client hasn't responded yet. */
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
/* Let's say the client replies badly. */
WRITE("\x99", 1);
- tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(-1, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
tt_assert(TO_CONN(conn)->marked_for_close);
close_closeable_connections();
@@ -471,23 +474,23 @@ test_ext_or_handshake(void *arg)
/* Okay, try again. */
conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET);
- tt_int_op(0, ==, connection_ext_or_start_auth(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_start_auth(conn));
CONTAINS("\x01\x00", 2);
/* Let's say the client replies sensibly this time. "Yes, AUTHTYPE_COOKIE
* sounds delicious. Let's have some of that!" */
WRITE("\x01", 1);
/* Let's say that the client also sends part of a nonce. */
WRITE("But when I look ", 16);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
- tt_int_op(TO_CONN(conn)->state, ==,
+ tt_int_op(TO_CONN(conn)->state, OP_EQ,
EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE);
/* Pump it again. Nothing should happen. */
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
/* send the rest of the nonce. */
WRITE("ahead up the whi", 16);
MOCK(crypto_rand, crypto_rand_return_tse_str);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
UNMOCK(crypto_rand);
/* We should get the right reply from the server. */
CONTAINS("\xec\x80\xed\x6e\x54\x6d\x3b\x36\xfd\xfc\x22\xfe\x13\x15\x41\x6b"
@@ -496,7 +499,7 @@ test_ext_or_handshake(void *arg)
/* Send the wrong response. */
WRITE("not with a bang but a whimper...", 32);
MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem);
- tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(-1, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("\x00", 1);
tt_assert(TO_CONN(conn)->marked_for_close);
/* XXXX Hold-open-until-flushed. */
@@ -515,32 +518,32 @@ test_ext_or_handshake(void *arg)
/* Now let's run through some messages. */
/* First let's send some junk and make sure it's ignored. */
WRITE("\xff\xf0\x00\x03""ABC", 7);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
/* Now let's send a USERADDR command. */
WRITE("\x00\x01\x00\x0c""1.2.3.4:5678", 16);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
- tt_int_op(TO_CONN(conn)->port, ==, 5678);
- tt_int_op(tor_addr_to_ipv4h(&TO_CONN(conn)->addr), ==, 0x01020304);
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
+ tt_int_op(TO_CONN(conn)->port, OP_EQ, 5678);
+ tt_int_op(tor_addr_to_ipv4h(&TO_CONN(conn)->addr), OP_EQ, 0x01020304);
/* Now let's send a TRANSPORT command. */
WRITE("\x00\x02\x00\x07""rfc1149", 11);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
- tt_ptr_op(NULL, !=, conn->ext_or_transport);
- tt_str_op("rfc1149", ==, conn->ext_or_transport);
- tt_int_op(is_reading,==,1);
- tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_OPEN);
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
+ tt_ptr_op(NULL, OP_NE, conn->ext_or_transport);
+ tt_str_op("rfc1149", OP_EQ, conn->ext_or_transport);
+ tt_int_op(is_reading,OP_EQ,1);
+ tt_int_op(TO_CONN(conn)->state, OP_EQ, EXT_OR_CONN_STATE_OPEN);
/* DONE */
WRITE("\x00\x00\x00\x00", 4);
- tt_int_op(0, ==, connection_ext_or_process_inbuf(conn));
- tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_FLUSHING);
- tt_int_op(is_reading,==,0);
+ tt_int_op(0, OP_EQ, connection_ext_or_process_inbuf(conn));
+ tt_int_op(TO_CONN(conn)->state, OP_EQ, EXT_OR_CONN_STATE_FLUSHING);
+ tt_int_op(is_reading,OP_EQ,0);
CONTAINS("\x10\x00\x00\x00", 4);
- tt_int_op(handshake_start_called,==,0);
- tt_int_op(0, ==, connection_ext_or_finished_flushing(conn));
- tt_int_op(is_reading,==,1);
- tt_int_op(handshake_start_called,==,1);
- tt_int_op(TO_CONN(conn)->type, ==, CONN_TYPE_OR);
- tt_int_op(TO_CONN(conn)->state, ==, 0);
+ tt_int_op(handshake_start_called,OP_EQ,0);
+ tt_int_op(0, OP_EQ, connection_ext_or_finished_flushing(conn));
+ tt_int_op(is_reading,OP_EQ,1);
+ tt_int_op(handshake_start_called,OP_EQ,1);
+ tt_int_op(TO_CONN(conn)->type, OP_EQ, CONN_TYPE_OR);
+ tt_int_op(TO_CONN(conn)->state, OP_EQ, 0);
close_closeable_connections();
conn = NULL;
@@ -551,7 +554,7 @@ test_ext_or_handshake(void *arg)
/* USERADDR command with an extra NUL byte */
WRITE("\x00\x01\x00\x0d""1.2.3.4:5678\x00", 17);
MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem);
- tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(-1, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
tt_assert(TO_CONN(conn)->marked_for_close);
close_closeable_connections();
@@ -564,7 +567,7 @@ test_ext_or_handshake(void *arg)
/* TRANSPORT command with an extra NUL byte */
WRITE("\x00\x02\x00\x08""rfc1149\x00", 12);
MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem);
- tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(-1, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
tt_assert(TO_CONN(conn)->marked_for_close);
close_closeable_connections();
@@ -578,7 +581,7 @@ test_ext_or_handshake(void *arg)
C-identifier) */
WRITE("\x00\x02\x00\x07""rf*1149", 11);
MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem);
- tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn));
+ tt_int_op(-1, OP_EQ, connection_ext_or_process_inbuf(conn));
CONTAINS("", 0);
tt_assert(TO_CONN(conn)->marked_for_close);
close_closeable_connections();
diff --git a/src/test/test_hs.c b/src/test/test_hs.c
index c4820014c7..a5cd841a55 100644
--- a/src/test/test_hs.c
+++ b/src/test/test_hs.c
@@ -85,7 +85,7 @@ test_hs_desc_event(void *arg)
expected_msg = "650 HS_DESC REQUESTED "STR_HS_ADDR" NO_AUTH "\
STR_HSDIR_EXIST_LONGNAME" "STR_HS_ID"\r\n";
tt_assert(received_msg);
- tt_str_op(received_msg,==, expected_msg);
+ tt_str_op(received_msg,OP_EQ, expected_msg);
tor_free(received_msg);
/* test received event */
@@ -94,25 +94,27 @@ test_hs_desc_event(void *arg)
expected_msg = "650 HS_DESC RECEIVED "STR_HS_ADDR" BASIC_AUTH "\
STR_HSDIR_EXIST_LONGNAME"\r\n";
tt_assert(received_msg);
- tt_str_op(received_msg,==, expected_msg);
+ tt_str_op(received_msg,OP_EQ, expected_msg);
tor_free(received_msg);
/* test failed event */
rend_query.auth_type = 2;
- control_event_hs_descriptor_failed(&rend_query, HSDIR_NONE_EXIST_ID);
+ control_event_hs_descriptor_failed(&rend_query, HSDIR_NONE_EXIST_ID,
+ "QUERY_REJECTED");
expected_msg = "650 HS_DESC FAILED "STR_HS_ADDR" STEALTH_AUTH "\
- STR_HSDIR_NONE_EXIST_LONGNAME"\r\n";
+ STR_HSDIR_NONE_EXIST_LONGNAME" REASON=QUERY_REJECTED\r\n";
tt_assert(received_msg);
- tt_str_op(received_msg,==, expected_msg);
+ tt_str_op(received_msg,OP_EQ, expected_msg);
tor_free(received_msg);
/* test invalid auth type */
rend_query.auth_type = 999;
- control_event_hs_descriptor_failed(&rend_query, HSDIR_EXIST_ID);
+ control_event_hs_descriptor_failed(&rend_query, HSDIR_EXIST_ID,
+ "QUERY_REJECTED");
expected_msg = "650 HS_DESC FAILED "STR_HS_ADDR" UNKNOWN "\
- STR_HSDIR_EXIST_LONGNAME"\r\n";
+ STR_HSDIR_EXIST_LONGNAME" REASON=QUERY_REJECTED\r\n";
tt_assert(received_msg);
- tt_str_op(received_msg,==, expected_msg);
+ tt_str_op(received_msg,OP_EQ, expected_msg);
tor_free(received_msg);
done:
diff --git a/src/test/test_introduce.c b/src/test/test_introduce.c
index 0febd59276..fe8ffbfa4b 100644
--- a/src/test/test_introduce.c
+++ b/src/test/test_introduce.c
@@ -310,7 +310,7 @@ do_parse_test(uint8_t *plaintext, size_t plaintext_len, int phase)
parsed_req = rend_service_begin_parse_intro(cell, cell_len, 2, &err_msg);
tt_assert(parsed_req);
tt_assert(!err_msg);
- tt_mem_op(parsed_req->pk,==, digest, DIGEST_LEN);
+ tt_mem_op(parsed_req->pk,OP_EQ, digest, DIGEST_LEN);
tt_assert(parsed_req->ciphertext);
tt_assert(parsed_req->ciphertext_len > 0);
diff --git a/src/test/test_logging.c b/src/test/test_logging.c
index 9d9cbae6a8..17f1ed566c 100644
--- a/src/test/test_logging.c
+++ b/src/test/test_logging.c
@@ -22,8 +22,8 @@ test_get_sigsafe_err_fds(void *arg)
init_logging(1);
n = tor_log_get_sigsafe_err_fds(&fds);
- tt_int_op(n, ==, 1);
- tt_int_op(fds[0], ==, STDERR_FILENO);
+ tt_int_op(n, OP_EQ, 1);
+ tt_int_op(fds[0], OP_EQ, STDERR_FILENO);
set_log_severity_config(LOG_WARN, LOG_ERR, &include_bug);
set_log_severity_config(LOG_WARN, LOG_ERR, &no_bug);
@@ -40,26 +40,26 @@ test_get_sigsafe_err_fds(void *arg)
tor_log_update_sigsafe_err_fds();
n = tor_log_get_sigsafe_err_fds(&fds);
- tt_int_op(n, ==, 2);
- tt_int_op(fds[0], ==, STDERR_FILENO);
- tt_int_op(fds[1], ==, 3);
+ tt_int_op(n, OP_EQ, 2);
+ tt_int_op(fds[0], OP_EQ, STDERR_FILENO);
+ tt_int_op(fds[1], OP_EQ, 3);
/* Allow STDOUT to replace STDERR. */
add_stream_log(&include_bug, "dummy-4", STDOUT_FILENO);
tor_log_update_sigsafe_err_fds();
n = tor_log_get_sigsafe_err_fds(&fds);
- tt_int_op(n, ==, 2);
- tt_int_op(fds[0], ==, 3);
- tt_int_op(fds[1], ==, STDOUT_FILENO);
+ tt_int_op(n, OP_EQ, 2);
+ tt_int_op(fds[0], OP_EQ, 3);
+ tt_int_op(fds[1], OP_EQ, STDOUT_FILENO);
/* But don't allow it to replace explicit STDERR. */
add_stream_log(&include_bug, "dummy-5", STDERR_FILENO);
tor_log_update_sigsafe_err_fds();
n = tor_log_get_sigsafe_err_fds(&fds);
- tt_int_op(n, ==, 3);
- tt_int_op(fds[0], ==, STDERR_FILENO);
- tt_int_op(fds[1], ==, STDOUT_FILENO);
- tt_int_op(fds[2], ==, 3);
+ tt_int_op(n, OP_EQ, 3);
+ tt_int_op(fds[0], OP_EQ, STDERR_FILENO);
+ tt_int_op(fds[1], OP_EQ, STDOUT_FILENO);
+ tt_int_op(fds[2], OP_EQ, 3);
/* Don't overflow the array. */
{
@@ -70,7 +70,7 @@ test_get_sigsafe_err_fds(void *arg)
}
tor_log_update_sigsafe_err_fds();
n = tor_log_get_sigsafe_err_fds(&fds);
- tt_int_op(n, ==, 8);
+ tt_int_op(n, OP_EQ, 8);
done:
;
@@ -109,7 +109,7 @@ test_sigsafe_err(void *arg)
tt_assert(content != NULL);
tor_split_lines(lines, content, (int)strlen(content));
- tt_int_op(smartlist_len(lines), >=, 5);
+ tt_int_op(smartlist_len(lines), OP_GE, 5);
if (strstr(smartlist_get(lines, 0), "opening new log file"))
smartlist_del_keeporder(lines, 0);
@@ -119,7 +119,7 @@ test_sigsafe_err(void *arg)
tt_assert(!strcmpstart(smartlist_get(lines, 2), "Minimal."));
/* Next line is blank. */
tt_assert(!strcmpstart(smartlist_get(lines, 3), "=============="));
- tt_str_op(smartlist_get(lines, 4), ==,
+ tt_str_op(smartlist_get(lines, 4), OP_EQ,
"Testing any attempt to manually log from a signal.");
done:
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
index aa4bdf2ae8..4a7c29b747 100644
--- a/src/test/test_microdesc.c
+++ b/src/test/test_microdesc.c
@@ -75,9 +75,9 @@ test_md_cache(void *data)
tor_free(options->DataDirectory);
options->DataDirectory = tor_strdup(get_fname("md_datadir_test"));
#ifdef _WIN32
- tt_int_op(0, ==, mkdir(options->DataDirectory));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory));
#else
- tt_int_op(0, ==, mkdir(options->DataDirectory, 0700));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory, 0700));
#endif
tt_assert(!strcmpstart(test_md3_noannotation, "onion-key"));
@@ -91,7 +91,7 @@ test_md_cache(void *data)
added = microdescs_add_to_cache(mc, test_md1, NULL, SAVED_NOWHERE, 0,
time1, NULL);
- tt_int_op(1, ==, smartlist_len(added));
+ tt_int_op(1, OP_EQ, smartlist_len(added));
md1 = smartlist_get(added, 0);
smartlist_free(added);
added = NULL;
@@ -100,7 +100,7 @@ test_md_cache(void *data)
added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0,
time2, wanted);
/* Should fail, since we didn't list test_md2's digest in wanted */
- tt_int_op(0, ==, smartlist_len(added));
+ tt_int_op(0, OP_EQ, smartlist_len(added));
smartlist_free(added);
added = NULL;
@@ -109,75 +109,75 @@ test_md_cache(void *data)
added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0,
time2, wanted);
/* Now it can work. md2 should have been added */
- tt_int_op(1, ==, smartlist_len(added));
+ tt_int_op(1, OP_EQ, smartlist_len(added));
md2 = smartlist_get(added, 0);
/* And it should have gotten removed from 'wanted' */
- tt_int_op(smartlist_len(wanted), ==, 1);
- tt_mem_op(smartlist_get(wanted, 0), ==, d3, DIGEST256_LEN);
+ tt_int_op(smartlist_len(wanted), OP_EQ, 1);
+ tt_mem_op(smartlist_get(wanted, 0), OP_EQ, d3, DIGEST256_LEN);
smartlist_free(added);
added = NULL;
added = microdescs_add_to_cache(mc, test_md3, NULL,
SAVED_NOWHERE, 0, -1, NULL);
/* Must fail, since SAVED_NOWHERE precludes annotations */
- tt_int_op(0, ==, smartlist_len(added));
+ tt_int_op(0, OP_EQ, smartlist_len(added));
smartlist_free(added);
added = NULL;
added = microdescs_add_to_cache(mc, test_md3_noannotation, NULL,
SAVED_NOWHERE, 0, time3, NULL);
/* Now it can work */
- tt_int_op(1, ==, smartlist_len(added));
+ tt_int_op(1, OP_EQ, smartlist_len(added));
md3 = smartlist_get(added, 0);
smartlist_free(added);
added = NULL;
/* Okay. We added 1...3. Let's poke them to see how they look, and make
* sure they're really in the journal. */
- tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
- tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
- tt_ptr_op(md3, ==, microdesc_cache_lookup_by_digest256(mc, d3));
-
- tt_int_op(md1->last_listed, ==, time1);
- tt_int_op(md2->last_listed, ==, time2);
- tt_int_op(md3->last_listed, ==, time3);
-
- tt_int_op(md1->saved_location, ==, SAVED_IN_JOURNAL);
- tt_int_op(md2->saved_location, ==, SAVED_IN_JOURNAL);
- tt_int_op(md3->saved_location, ==, SAVED_IN_JOURNAL);
-
- tt_int_op(md1->bodylen, ==, strlen(test_md1));
- tt_int_op(md2->bodylen, ==, strlen(test_md2));
- tt_int_op(md3->bodylen, ==, strlen(test_md3_noannotation));
- tt_mem_op(md1->body, ==, test_md1, strlen(test_md1));
- tt_mem_op(md2->body, ==, test_md2, strlen(test_md2));
- tt_mem_op(md3->body, ==, test_md3_noannotation,
+ tt_ptr_op(md1, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(md3, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d3));
+
+ tt_int_op(md1->last_listed, OP_EQ, time1);
+ tt_int_op(md2->last_listed, OP_EQ, time2);
+ tt_int_op(md3->last_listed, OP_EQ, time3);
+
+ tt_int_op(md1->saved_location, OP_EQ, SAVED_IN_JOURNAL);
+ tt_int_op(md2->saved_location, OP_EQ, SAVED_IN_JOURNAL);
+ tt_int_op(md3->saved_location, OP_EQ, SAVED_IN_JOURNAL);
+
+ tt_int_op(md1->bodylen, OP_EQ, strlen(test_md1));
+ tt_int_op(md2->bodylen, OP_EQ, strlen(test_md2));
+ tt_int_op(md3->bodylen, OP_EQ, strlen(test_md3_noannotation));
+ tt_mem_op(md1->body, OP_EQ, test_md1, strlen(test_md1));
+ tt_mem_op(md2->body, OP_EQ, test_md2, strlen(test_md2));
+ tt_mem_op(md3->body, OP_EQ, test_md3_noannotation,
strlen(test_md3_noannotation));
tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs.new",
options->DataDirectory);
s = read_file_to_str(fn, RFTS_BIN, NULL);
tt_assert(s);
- tt_mem_op(md1->body, ==, s + md1->off, md1->bodylen);
- tt_mem_op(md2->body, ==, s + md2->off, md2->bodylen);
- tt_mem_op(md3->body, ==, s + md3->off, md3->bodylen);
+ tt_mem_op(md1->body, OP_EQ, s + md1->off, md1->bodylen);
+ tt_mem_op(md2->body, OP_EQ, s + md2->off, md2->bodylen);
+ tt_mem_op(md3->body, OP_EQ, s + md3->off, md3->bodylen);
- tt_ptr_op(md1->family, ==, NULL);
- tt_ptr_op(md3->family, !=, NULL);
- tt_int_op(smartlist_len(md3->family), ==, 3);
- tt_str_op(smartlist_get(md3->family, 0), ==, "nodeX");
+ tt_ptr_op(md1->family, OP_EQ, NULL);
+ tt_ptr_op(md3->family, OP_NE, NULL);
+ tt_int_op(smartlist_len(md3->family), OP_EQ, 3);
+ tt_str_op(smartlist_get(md3->family, 0), OP_EQ, "nodeX");
/* Now rebuild the cache! */
- tt_int_op(microdesc_cache_rebuild(mc, 1), ==, 0);
+ tt_int_op(microdesc_cache_rebuild(mc, 1), OP_EQ, 0);
- tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE);
- tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE);
- tt_int_op(md3->saved_location, ==, SAVED_IN_CACHE);
+ tt_int_op(md1->saved_location, OP_EQ, SAVED_IN_CACHE);
+ tt_int_op(md2->saved_location, OP_EQ, SAVED_IN_CACHE);
+ tt_int_op(md3->saved_location, OP_EQ, SAVED_IN_CACHE);
/* The journal should be empty now */
tor_free(s);
s = read_file_to_str(fn, RFTS_BIN, NULL);
- tt_str_op(s, ==, "");
+ tt_str_op(s, OP_EQ, "");
tor_free(s);
tor_free(fn);
@@ -185,9 +185,9 @@ test_md_cache(void *data)
tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs",
options->DataDirectory);
s = read_file_to_str(fn, RFTS_BIN, NULL);
- tt_mem_op(md1->body, ==, s + md1->off, strlen(test_md1));
- tt_mem_op(md2->body, ==, s + md2->off, strlen(test_md2));
- tt_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation));
+ tt_mem_op(md1->body, OP_EQ, s + md1->off, strlen(test_md1));
+ tt_mem_op(md2->body, OP_EQ, s + md2->off, strlen(test_md2));
+ tt_mem_op(md3->body, OP_EQ, s + md3->off, strlen(test_md3_noannotation));
/* Okay, now we are going to forget about the cache entirely, and reload it
* from the disk. */
@@ -199,41 +199,41 @@ test_md_cache(void *data)
tt_assert(md1);
tt_assert(md2);
tt_assert(md3);
- tt_mem_op(md1->body, ==, s + md1->off, strlen(test_md1));
- tt_mem_op(md2->body, ==, s + md2->off, strlen(test_md2));
- tt_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation));
+ tt_mem_op(md1->body, OP_EQ, s + md1->off, strlen(test_md1));
+ tt_mem_op(md2->body, OP_EQ, s + md2->off, strlen(test_md2));
+ tt_mem_op(md3->body, OP_EQ, s + md3->off, strlen(test_md3_noannotation));
- tt_int_op(md1->last_listed, ==, time1);
- tt_int_op(md2->last_listed, ==, time2);
- tt_int_op(md3->last_listed, ==, time3);
+ tt_int_op(md1->last_listed, OP_EQ, time1);
+ tt_int_op(md2->last_listed, OP_EQ, time2);
+ tt_int_op(md3->last_listed, OP_EQ, time3);
/* Okay, now we are going to clear out everything older than a week old.
* In practice, that means md3 */
microdesc_cache_clean(mc, time(NULL)-7*24*60*60, 1/*force*/);
- tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
- tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
- tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3));
+ tt_ptr_op(md1, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(NULL, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d3));
md3 = NULL; /* it's history now! */
/* rebuild again, make sure it stays gone. */
- tt_int_op(microdesc_cache_rebuild(mc, 1), ==, 0);
- tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
- tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
- tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3));
+ tt_int_op(microdesc_cache_rebuild(mc, 1), OP_EQ, 0);
+ tt_ptr_op(md1, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d1));
+ tt_ptr_op(md2, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d2));
+ tt_ptr_op(NULL, OP_EQ, microdesc_cache_lookup_by_digest256(mc, d3));
/* Re-add md3, and make sure we can rebuild the cache. */
added = microdescs_add_to_cache(mc, test_md3_noannotation, NULL,
SAVED_NOWHERE, 0, time3, NULL);
- tt_int_op(1, ==, smartlist_len(added));
+ tt_int_op(1, OP_EQ, smartlist_len(added));
md3 = smartlist_get(added, 0);
smartlist_free(added);
added = NULL;
- tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE);
- tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE);
- tt_int_op(md3->saved_location, ==, SAVED_IN_JOURNAL);
+ tt_int_op(md1->saved_location, OP_EQ, SAVED_IN_CACHE);
+ tt_int_op(md2->saved_location, OP_EQ, SAVED_IN_CACHE);
+ tt_int_op(md3->saved_location, OP_EQ, SAVED_IN_JOURNAL);
- tt_int_op(microdesc_cache_rebuild(mc, 1), ==, 0);
- tt_int_op(md3->saved_location, ==, SAVED_IN_CACHE);
+ tt_int_op(microdesc_cache_rebuild(mc, 1), OP_EQ, 0);
+ tt_int_op(md3->saved_location, OP_EQ, SAVED_IN_CACHE);
done:
if (options)
@@ -273,9 +273,9 @@ test_md_cache_broken(void *data)
options->DataDirectory = tor_strdup(get_fname("md_datadir_test2"));
#ifdef _WIN32
- tt_int_op(0, ==, mkdir(options->DataDirectory));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory));
#else
- tt_int_op(0, ==, mkdir(options->DataDirectory, 0700));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory, 0700));
#endif
tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs",
@@ -375,7 +375,7 @@ test_md_generate(void *arg)
ri = router_parse_entry_from_string(test_ri, NULL, 0, 0, NULL, NULL);
tt_assert(ri);
md = dirvote_create_microdescriptor(ri, 8);
- tt_str_op(md->body, ==, test_md_8);
+ tt_str_op(md->body, OP_EQ, test_md_8);
/* XXXX test family lines. */
/* XXXX test method 14 for A lines. */
@@ -384,12 +384,12 @@ test_md_generate(void *arg)
microdesc_free(md);
md = NULL;
md = dirvote_create_microdescriptor(ri, 16);
- tt_str_op(md->body, ==, test_md_16);
+ tt_str_op(md->body, OP_EQ, test_md_16);
microdesc_free(md);
md = NULL;
md = dirvote_create_microdescriptor(ri, 18);
- tt_str_op(md->body, ==, test_md_18);
+ tt_str_op(md->body, OP_EQ, test_md_18);
done:
microdesc_free(md);
@@ -564,8 +564,8 @@ test_md_parse(void *arg)
smartlist_t *mds = microdescs_parse_from_string(MD_PARSE_TEST_DATA,
NULL, 1, SAVED_NOWHERE,
invalid);
- tt_int_op(smartlist_len(mds), ==, 11);
- tt_int_op(smartlist_len(invalid), ==, 4);
+ tt_int_op(smartlist_len(mds), OP_EQ, 11);
+ tt_int_op(smartlist_len(invalid), OP_EQ, 4);
test_memeq_hex(smartlist_get(invalid,0),
"5d76bf1c6614e885614a1e0ad074e1ab"
@@ -585,11 +585,11 @@ test_md_parse(void *arg)
test_memeq_hex(md->digest,
"54bb6d733ddeb375d2456c79ae103961"
"da0cae29620375ac4cf13d54da4d92b3");
- tt_int_op(md->last_listed, ==, 0);
- tt_int_op(md->saved_location, ==, SAVED_NOWHERE);
- tt_int_op(md->no_save, ==, 0);
- tt_uint_op(md->held_in_map, ==, 0);
- tt_uint_op(md->held_by_nodes, ==, 0);
+ tt_int_op(md->last_listed, OP_EQ, 0);
+ tt_int_op(md->saved_location, OP_EQ, SAVED_NOWHERE);
+ tt_int_op(md->no_save, OP_EQ, 0);
+ tt_uint_op(md->held_in_map, OP_EQ, 0);
+ tt_uint_op(md->held_by_nodes, OP_EQ, 0);
tt_assert(md->onion_curve25519_pkey);
md = smartlist_get(mds, 6);
@@ -609,7 +609,7 @@ test_md_parse(void *arg)
"409ebd87d23925a2732bd467a92813c9"
"21ca378fcb9ca193d354c51550b6d5e9");
tt_assert(tor_addr_family(&md->ipv6_addr) == AF_INET6);
- tt_int_op(md->ipv6_orport, ==, 9090);
+ tt_int_op(md->ipv6_orport, OP_EQ, 9090);
done:
SMARTLIST_FOREACH(mds, microdesc_t *, md, microdesc_free(md));
@@ -667,9 +667,9 @@ test_md_reject_cache(void *arg)
mock_ns_val->flavor = FLAV_MICRODESC;
#ifdef _WIN32
- tt_int_op(0, ==, mkdir(options->DataDirectory));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory));
#else
- tt_int_op(0, ==, mkdir(options->DataDirectory, 0700));
+ tt_int_op(0, OP_EQ, mkdir(options->DataDirectory, 0700));
#endif
MOCK(router_get_mutable_consensus_status_by_descriptor_digest,
@@ -679,7 +679,7 @@ test_md_reject_cache(void *arg)
mc = get_microdesc_cache();
#define ADD(hex) \
do { \
- tt_int_op(0,==,base16_decode(buf,sizeof(buf),hex,strlen(hex))); \
+ tt_int_op(0,OP_EQ,base16_decode(buf,sizeof(buf),hex,strlen(hex))); \
smartlist_add(wanted, tor_memdup(buf, DIGEST256_LEN)); \
} while (0)
@@ -695,10 +695,10 @@ test_md_reject_cache(void *arg)
added = microdescs_add_to_cache(mc, MD_PARSE_TEST_DATA, NULL,
SAVED_NOWHERE, 0, time(NULL), wanted);
- tt_int_op(smartlist_len(added), ==, 2);
- tt_int_op(mock_rgsbd_called, ==, 2);
- tt_int_op(mock_rgsbd_val_a->dl_status.n_download_failures, ==, 255);
- tt_int_op(mock_rgsbd_val_b->dl_status.n_download_failures, ==, 255);
+ tt_int_op(smartlist_len(added), OP_EQ, 2);
+ tt_int_op(mock_rgsbd_called, OP_EQ, 2);
+ tt_int_op(mock_rgsbd_val_a->dl_status.n_download_failures, OP_EQ, 255);
+ tt_int_op(mock_rgsbd_val_b->dl_status.n_download_failures, OP_EQ, 255);
done:
UNMOCK(networkstatus_get_latest_consensus_by_flavor);
diff --git a/src/test/test_nodelist.c b/src/test/test_nodelist.c
index 7c94084a02..2fba3da7e0 100644
--- a/src/test/test_nodelist.c
+++ b/src/test/test_nodelist.c
@@ -25,7 +25,7 @@ test_nodelist_node_get_verbose_nickname_by_id_null_node(void *arg)
/* make sure node_get_by_id returns NULL */
tt_assert(!node_get_by_id(ID));
node_get_verbose_nickname_by_id(ID, vname);
- tt_str_op(vname,==, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
+ tt_str_op(vname,OP_EQ, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
done:
return;
}
@@ -54,7 +54,7 @@ test_nodelist_node_get_verbose_nickname_not_named(void *arg)
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA",
DIGEST_LEN);
node_get_verbose_nickname(&mock_node, vname);
- tt_str_op(vname,==, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~TestOR");
+ tt_str_op(vname,OP_EQ, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~TestOR");
done:
return;
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index 2726056b80..1f21f65c60 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -151,9 +151,9 @@ test_oom_circbuf(void *arg)
options->MaxMemInQueues = 256*packed_cell_mem_cost();
options->CellStatistics = 0;
- tt_int_op(cell_queues_check_size(), ==, 0); /* We don't start out OOM. */
- tt_int_op(cell_queues_get_total_allocation(), ==, 0);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We don't start out OOM. */
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
/* Now we're going to fake up some circuits and get them added to the global
circuit list. */
@@ -165,21 +165,21 @@ test_oom_circbuf(void *arg)
c2 = dummy_or_circuit_new(20, 20);
#ifdef ENABLE_MEMPOOLS
- tt_int_op(packed_cell_mem_cost(), ==,
+ tt_int_op(packed_cell_mem_cost(), OP_EQ,
sizeof(packed_cell_t) + MP_POOL_ITEM_OVERHEAD);
#else
- tt_int_op(packed_cell_mem_cost(), ==,
+ tt_int_op(packed_cell_mem_cost(), OP_EQ,
sizeof(packed_cell_t));
#endif /* ENABLE_MEMPOOLS */
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 70);
- tt_int_op(cell_queues_check_size(), ==, 0); /* We are still not OOM */
+ tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We are still not OOM */
tv.tv_usec = 20*1000;
tor_gettimeofday_cache_set(&tv);
c3 = dummy_or_circuit_new(100, 85);
- tt_int_op(cell_queues_check_size(), ==, 0); /* We are still not OOM */
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We are still not OOM */
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 255);
tv.tv_usec = 30*1000;
@@ -187,17 +187,17 @@ test_oom_circbuf(void *arg)
/* Adding this cell will trigger our OOM handler. */
c4 = dummy_or_circuit_new(2, 0);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 257);
- tt_int_op(cell_queues_check_size(), ==, 1); /* We are now OOM */
+ tt_int_op(cell_queues_check_size(), OP_EQ, 1); /* We are now OOM */
tt_assert(c1->marked_for_close);
tt_assert(! c2->marked_for_close);
tt_assert(! c3->marked_for_close);
tt_assert(! c4->marked_for_close);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * (257 - 30));
circuit_free(c1);
@@ -208,14 +208,14 @@ test_oom_circbuf(void *arg)
tv.tv_usec = 40*1000; /* go back to the future */
tor_gettimeofday_cache_set(&tv);
- tt_int_op(cell_queues_check_size(), ==, 1); /* We are now OOM */
+ tt_int_op(cell_queues_check_size(), OP_EQ, 1); /* We are now OOM */
tt_assert(c1->marked_for_close);
tt_assert(! c2->marked_for_close);
tt_assert(! c3->marked_for_close);
tt_assert(! c4->marked_for_close);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * (257 - 30));
done:
@@ -250,9 +250,9 @@ test_oom_streambuf(void *arg)
options->MaxMemInQueues = 81*packed_cell_mem_cost() + 4096 * 34;
options->CellStatistics = 0;
- tt_int_op(cell_queues_check_size(), ==, 0); /* We don't start out OOM. */
- tt_int_op(cell_queues_get_total_allocation(), ==, 0);
- tt_int_op(buf_get_total_allocation(), ==, 0);
+ tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We don't start out OOM. */
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ, 0);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
/* Start all circuits with a bit of data queued in cells */
tv.tv_usec = 500*1000; /* go halfway into the second. */
@@ -267,7 +267,7 @@ test_oom_streambuf(void *arg)
tv.tv_usec = 530*1000;
tor_gettimeofday_cache_set(&tv);
c4 = dummy_or_circuit_new(0,0);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 80);
tv.tv_usec = 600*1000;
@@ -303,24 +303,24 @@ test_oom_streambuf(void *arg)
tv.tv_usec = 0;
tvms = (uint32_t) tv_to_msec(&tv);
- tt_int_op(circuit_max_queued_cell_age(c1, tvms), ==, 500);
- tt_int_op(circuit_max_queued_cell_age(c2, tvms), ==, 490);
- tt_int_op(circuit_max_queued_cell_age(c3, tvms), ==, 480);
- tt_int_op(circuit_max_queued_cell_age(c4, tvms), ==, 0);
+ tt_int_op(circuit_max_queued_cell_age(c1, tvms), OP_EQ, 500);
+ tt_int_op(circuit_max_queued_cell_age(c2, tvms), OP_EQ, 490);
+ tt_int_op(circuit_max_queued_cell_age(c3, tvms), OP_EQ, 480);
+ tt_int_op(circuit_max_queued_cell_age(c4, tvms), OP_EQ, 0);
- tt_int_op(circuit_max_queued_data_age(c1, tvms), ==, 390);
- tt_int_op(circuit_max_queued_data_age(c2, tvms), ==, 380);
- tt_int_op(circuit_max_queued_data_age(c3, tvms), ==, 0);
- tt_int_op(circuit_max_queued_data_age(c4, tvms), ==, 370);
+ tt_int_op(circuit_max_queued_data_age(c1, tvms), OP_EQ, 390);
+ tt_int_op(circuit_max_queued_data_age(c2, tvms), OP_EQ, 380);
+ tt_int_op(circuit_max_queued_data_age(c3, tvms), OP_EQ, 0);
+ tt_int_op(circuit_max_queued_data_age(c4, tvms), OP_EQ, 370);
- tt_int_op(circuit_max_queued_item_age(c1, tvms), ==, 500);
- tt_int_op(circuit_max_queued_item_age(c2, tvms), ==, 490);
- tt_int_op(circuit_max_queued_item_age(c3, tvms), ==, 480);
- tt_int_op(circuit_max_queued_item_age(c4, tvms), ==, 370);
+ tt_int_op(circuit_max_queued_item_age(c1, tvms), OP_EQ, 500);
+ tt_int_op(circuit_max_queued_item_age(c2, tvms), OP_EQ, 490);
+ tt_int_op(circuit_max_queued_item_age(c3, tvms), OP_EQ, 480);
+ tt_int_op(circuit_max_queued_item_age(c4, tvms), OP_EQ, 370);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 80);
- tt_int_op(buf_get_total_allocation(), ==, 4096*16*2);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 4096*16*2);
/* Now give c4 a very old buffer of modest size */
{
@@ -332,21 +332,21 @@ test_oom_streambuf(void *arg)
tt_assert(ec);
smartlist_add(edgeconns, ec);
}
- tt_int_op(buf_get_total_allocation(), ==, 4096*17*2);
- tt_int_op(circuit_max_queued_item_age(c4, tvms), ==, 1000);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 4096*17*2);
+ tt_int_op(circuit_max_queued_item_age(c4, tvms), OP_EQ, 1000);
- tt_int_op(cell_queues_check_size(), ==, 0);
+ tt_int_op(cell_queues_check_size(), OP_EQ, 0);
/* And run over the limit. */
tv.tv_usec = 800*1000;
tor_gettimeofday_cache_set(&tv);
c5 = dummy_or_circuit_new(0,5);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 85);
- tt_int_op(buf_get_total_allocation(), ==, 4096*17*2);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 4096*17*2);
- tt_int_op(cell_queues_check_size(), ==, 1); /* We are now OOM */
+ tt_int_op(cell_queues_check_size(), OP_EQ, 1); /* We are now OOM */
/* C4 should have died. */
tt_assert(! c1->marked_for_close);
@@ -355,9 +355,9 @@ test_oom_streambuf(void *arg)
tt_assert(c4->marked_for_close);
tt_assert(! c5->marked_for_close);
- tt_int_op(cell_queues_get_total_allocation(), ==,
+ tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 85);
- tt_int_op(buf_get_total_allocation(), ==, 4096*8*2);
+ tt_int_op(buf_get_total_allocation(), OP_EQ, 4096*8*2);
done:
circuit_free(c1);
diff --git a/src/test/test_options.c b/src/test/test_options.c
index 57ab38c027..44349b3800 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -87,10 +87,10 @@ test_options_validate_impl(const char *configuration,
clear_log_messages();
r = config_get_lines(configuration, &cl, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
r = config_assign(&options_format, opt, cl, 0, 0, &msg);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
r = options_validate(NULL, opt, dflt, 0, &msg);
if (expect_errmsg && !msg) {
@@ -103,7 +103,7 @@ test_options_validate_impl(const char *configuration,
TT_DIE(("Expected no error message from <%s> but got <%s>.",
configuration, msg));
}
- tt_int_op((r == 0), ==, (msg == NULL));
+ tt_int_op((r == 0), OP_EQ, (msg == NULL));
if (expect_log) {
int found = 0;
diff --git a/src/test/test_policy.c b/src/test/test_policy.c
index c043ac6e3a..e77e16c99e 100644
--- a/src/test/test_policy.c
+++ b/src/test/test_policy.c
@@ -22,7 +22,7 @@ test_short_policy_parse(const char *input,
short_policy = parse_short_policy(input);
tt_assert(short_policy);
out = write_short_policy(short_policy);
- tt_str_op(out, ==, expected);
+ tt_str_op(out, OP_EQ, expected);
done:
tor_free(out);
@@ -50,17 +50,17 @@ test_policy_summary_helper(const char *policy_str,
r = policies_parse_exit_policy(&line, &policy,
EXIT_POLICY_IPV6_ENABLED |
EXIT_POLICY_ADD_DEFAULT ,0);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
summary = policy_summarize(policy, AF_INET);
tt_assert(summary != NULL);
- tt_str_op(summary,==, expected_summary);
+ tt_str_op(summary,OP_EQ, expected_summary);
short_policy = parse_short_policy(summary);
tt_assert(short_policy);
summary_after = write_short_policy(short_policy);
- tt_str_op(summary,==, summary_after);
+ tt_str_op(summary,OP_EQ, summary_after);
done:
tor_free(summary_after);
@@ -90,12 +90,12 @@ test_policies_general(void *arg)
p = router_parse_addr_policy_item_from_string("reject 192.168.0.0/16:*",-1);
tt_assert(p != NULL);
- tt_int_op(ADDR_POLICY_REJECT,==, p->policy_type);
+ tt_int_op(ADDR_POLICY_REJECT,OP_EQ, p->policy_type);
tor_addr_from_ipv4h(&tar, 0xc0a80000u);
- tt_int_op(0,==, tor_addr_compare(&p->addr, &tar, CMP_EXACT));
- tt_int_op(16,==, p->maskbits);
- tt_int_op(1,==, p->prt_min);
- tt_int_op(65535,==, p->prt_max);
+ tt_int_op(0,OP_EQ, tor_addr_compare(&p->addr, &tar, CMP_EXACT));
+ tt_int_op(16,OP_EQ, p->maskbits);
+ tt_int_op(1,OP_EQ, p->prt_min);
+ tt_int_op(65535,OP_EQ, p->prt_max);
smartlist_add(policy, p);
@@ -109,7 +109,7 @@ test_policies_general(void *arg)
tt_assert(ADDR_POLICY_REJECTED ==
compare_tor_addr_to_addr_policy(&tar, 2, policy));
- tt_int_op(0, ==, policies_parse_exit_policy(NULL, &policy2,
+ tt_int_op(0, OP_EQ, policies_parse_exit_policy(NULL, &policy2,
EXIT_POLICY_IPV6_ENABLED |
EXIT_POLICY_REJECT_PRIVATE |
EXIT_POLICY_ADD_DEFAULT, 0));
@@ -200,14 +200,14 @@ test_policies_general(void *arg)
line.key = (char*)"foo";
line.value = (char*)"accept *:80,reject private:*,reject *:*";
line.next = NULL;
- tt_int_op(0, ==, policies_parse_exit_policy(&line,&policy,
+ tt_int_op(0, OP_EQ, policies_parse_exit_policy(&line,&policy,
EXIT_POLICY_IPV6_ENABLED |
EXIT_POLICY_ADD_DEFAULT,0));
tt_assert(policy);
//test_streq(policy->string, "accept *:80");
//test_streq(policy->next->string, "reject *:*");
- tt_int_op(smartlist_len(policy),==, 4);
+ tt_int_op(smartlist_len(policy),OP_EQ, 4);
/* test policy summaries */
/* check if we properly ignore private IP addresses */
@@ -281,7 +281,7 @@ test_policies_general(void *arg)
/* Try parsing various broken short policies */
#define TT_BAD_SHORT_POLICY(s) \
do { \
- tt_ptr_op(NULL, ==, (short_parsed = parse_short_policy((s)))); \
+ tt_ptr_op(NULL, OP_EQ, (short_parsed = parse_short_policy((s)))); \
} while (0)
TT_BAD_SHORT_POLICY("accept 200-199");
TT_BAD_SHORT_POLICY("");
@@ -311,7 +311,7 @@ test_policies_general(void *arg)
smartlist_free(chunks);
short_parsed = parse_short_policy(policy);/* shouldn't be accepted */
tor_free(policy);
- tt_ptr_op(NULL, ==, short_parsed);
+ tt_ptr_op(NULL, OP_EQ, short_parsed);
}
/* truncation ports */
@@ -369,7 +369,7 @@ test_dump_exit_policy_to_string(void *arg)
ri->exit_policy = NULL; // expecting "reject *:*"
ep = router_dump_exit_policy_to_string(ri,1,1);
- tt_str_op("reject *:*",==, ep);
+ tt_str_op("reject *:*",OP_EQ, ep);
tor_free(ep);
@@ -382,7 +382,7 @@ test_dump_exit_policy_to_string(void *arg)
ep = router_dump_exit_policy_to_string(ri,1,1);
- tt_str_op("accept *:*",==, ep);
+ tt_str_op("accept *:*",OP_EQ, ep);
tor_free(ep);
@@ -392,7 +392,7 @@ test_dump_exit_policy_to_string(void *arg)
ep = router_dump_exit_policy_to_string(ri,1,1);
- tt_str_op("accept *:*\nreject *:25",==, ep);
+ tt_str_op("accept *:*\nreject *:25",OP_EQ, ep);
tor_free(ep);
@@ -403,7 +403,7 @@ test_dump_exit_policy_to_string(void *arg)
ep = router_dump_exit_policy_to_string(ri,1,1);
- tt_str_op("accept *:*\nreject *:25\nreject 8.8.8.8:*",==, ep);
+ tt_str_op("accept *:*\nreject *:25\nreject 8.8.8.8:*",OP_EQ, ep);
tor_free(ep);
policy_entry =
@@ -414,7 +414,7 @@ test_dump_exit_policy_to_string(void *arg)
ep = router_dump_exit_policy_to_string(ri,1,1);
tt_str_op("accept *:*\nreject *:25\nreject 8.8.8.8:*\n"
- "reject6 [fc00::]/7:*",==, ep);
+ "reject6 [fc00::]/7:*",OP_EQ, ep);
tor_free(ep);
policy_entry =
@@ -425,7 +425,7 @@ test_dump_exit_policy_to_string(void *arg)
ep = router_dump_exit_policy_to_string(ri,1,1);
tt_str_op("accept *:*\nreject *:25\nreject 8.8.8.8:*\n"
- "reject6 [fc00::]/7:*\naccept6 [c000::]/3:*",==, ep);
+ "reject6 [fc00::]/7:*\naccept6 [c000::]/3:*",OP_EQ, ep);
done:
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index 4ca2e32b7b..dba880ee19 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -69,7 +69,7 @@ test_pt_parsing(void *arg)
/* test registered SOCKS version of transport */
tt_assert(transport->socks_version == PROXY_SOCKS5);
/* test registered name of transport */
- tt_str_op(transport->name,==, "trebuchet");
+ tt_str_op(transport->name,OP_EQ, "trebuchet");
reset_mp(mp);
@@ -96,7 +96,7 @@ test_pt_parsing(void *arg)
/* test registered port of transport */
tt_assert(transport->port == 2999);
/* test registered name of transport */
- tt_str_op(transport->name,==, "trebuchy");
+ tt_str_op(transport->name,OP_EQ, "trebuchy");
reset_mp(mp);
@@ -105,14 +105,14 @@ test_pt_parsing(void *arg)
"ARGS:counterweight=3,sling=snappy",
sizeof(line));
tt_assert(parse_smethod_line(line, mp) == 0);
- tt_int_op(1, ==, smartlist_len(mp->transports));
+ tt_int_op(1, OP_EQ, smartlist_len(mp->transports));
{
const transport_t *transport = smartlist_get(mp->transports, 0);
tt_assert(transport);
- tt_str_op(transport->name, ==, "trebuchet");
- tt_int_op(transport->port, ==, 9999);
- tt_str_op(fmt_addr(&transport->addr), ==, "127.0.0.1");
- tt_str_op(transport->extra_info_args, ==,
+ tt_str_op(transport->name, OP_EQ, "trebuchet");
+ tt_int_op(transport->port, OP_EQ, 9999);
+ tt_str_op(fmt_addr(&transport->addr), OP_EQ, "127.0.0.1");
+ tt_str_op(transport->extra_info_args, OP_EQ,
"counterweight=3,sling=snappy");
}
reset_mp(mp);
@@ -151,9 +151,9 @@ test_pt_get_transport_options(void *arg)
execve_args[1] = NULL;
mp = managed_proxy_create(transport_list, execve_args, 1);
- tt_ptr_op(mp, !=, NULL);
+ tt_ptr_op(mp, OP_NE, NULL);
opt_str = get_transport_options_for_server_proxy(mp);
- tt_ptr_op(opt_str, ==, NULL);
+ tt_ptr_op(opt_str, OP_EQ, NULL);
smartlist_add(mp->transports_to_launch, tor_strdup("gruyere"));
smartlist_add(mp->transports_to_launch, tor_strdup("roquefort"));
@@ -176,7 +176,7 @@ test_pt_get_transport_options(void *arg)
options->ServerTransportOptions = cl;
opt_str = get_transport_options_for_server_proxy(mp);
- tt_str_op(opt_str, ==,
+ tt_str_op(opt_str, OP_EQ,
"gruyere:melty=10;gruyere:hardness=se\\;ven;"
"stnectaire:melty=4;stnectaire:hardness=three");
@@ -196,7 +196,7 @@ test_pt_protocol(void *arg)
(void)arg;
mp->conf_state = PT_PROTO_LAUNCHED;
mp->transports = smartlist_new();
- mp->argv = tor_calloc(sizeof(char *), 2);
+ mp->argv = tor_calloc(2, sizeof(char *));
mp->argv[0] = tor_strdup("<testcase>");
/* various wrong protocol runs: */
@@ -262,17 +262,17 @@ test_pt_get_extrainfo_string(void *arg)
mp2 = managed_proxy_create(t2, argv2, 1);
r = parse_smethod_line("SMETHOD hagbard 127.0.0.1:5555", mp1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
r = parse_smethod_line("SMETHOD celine 127.0.0.1:1723 ARGS:card=no-enemy",
mp2);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
/* Force these proxies to look "completed" or they won't generate output. */
mp1->conf_state = mp2->conf_state = PT_PROTO_COMPLETED;
s = pt_get_extra_info_descriptor_string();
tt_assert(s);
- tt_str_op(s, ==,
+ tt_str_op(s, OP_EQ,
"transport hagbard 127.0.0.1:5555\n"
"transport celine 127.0.0.1:1723 card=no-enemy\n");
@@ -380,7 +380,7 @@ test_pt_configure_proxy(void *arg)
for (i = 0 ; i < 5 ; i++) {
retval = configure_proxy(mp);
/* retval should be zero because proxy hasn't finished configuring yet */
- tt_int_op(retval, ==, 0);
+ tt_int_op(retval, OP_EQ, 0);
/* check the number of registered transports */
tt_assert(smartlist_len(mp->transports) == i+1);
/* check that the mp is still waiting for transports */
@@ -390,23 +390,23 @@ test_pt_configure_proxy(void *arg)
/* this last configure_proxy() should finalize the proxy configuration. */
retval = configure_proxy(mp);
/* retval should be 1 since the proxy finished configuring */
- tt_int_op(retval, ==, 1);
+ tt_int_op(retval, OP_EQ, 1);
/* check the mp state */
tt_assert(mp->conf_state == PT_PROTO_COMPLETED);
- tt_int_op(controlevent_n, ==, 5);
- tt_int_op(controlevent_event, ==, EVENT_TRANSPORT_LAUNCHED);
- tt_int_op(smartlist_len(controlevent_msgs), ==, 5);
+ tt_int_op(controlevent_n, OP_EQ, 5);
+ tt_int_op(controlevent_event, OP_EQ, EVENT_TRANSPORT_LAUNCHED);
+ tt_int_op(smartlist_len(controlevent_msgs), OP_EQ, 5);
smartlist_sort_strings(controlevent_msgs);
- tt_str_op(smartlist_get(controlevent_msgs, 0), ==,
+ tt_str_op(smartlist_get(controlevent_msgs, 0), OP_EQ,
"650 TRANSPORT_LAUNCHED server mock1 127.0.0.1 5551\r\n");
- tt_str_op(smartlist_get(controlevent_msgs, 1), ==,
+ tt_str_op(smartlist_get(controlevent_msgs, 1), OP_EQ,
"650 TRANSPORT_LAUNCHED server mock2 127.0.0.1 5552\r\n");
- tt_str_op(smartlist_get(controlevent_msgs, 2), ==,
+ tt_str_op(smartlist_get(controlevent_msgs, 2), OP_EQ,
"650 TRANSPORT_LAUNCHED server mock3 127.0.0.1 5553\r\n");
- tt_str_op(smartlist_get(controlevent_msgs, 3), ==,
+ tt_str_op(smartlist_get(controlevent_msgs, 3), OP_EQ,
"650 TRANSPORT_LAUNCHED server mock4 127.0.0.1 5554\r\n");
- tt_str_op(smartlist_get(controlevent_msgs, 4), ==,
+ tt_str_op(smartlist_get(controlevent_msgs, 4), OP_EQ,
"650 TRANSPORT_LAUNCHED server mock5 127.0.0.1 5555\r\n");
{ /* check that the transport info were saved properly in the tor state */
@@ -423,8 +423,8 @@ test_pt_configure_proxy(void *arg)
NULL, 0, 0);
name_of_transport = smartlist_get(transport_info_sl, 0);
bindaddr = smartlist_get(transport_info_sl, 1);
- tt_str_op(name_of_transport, ==, "mock1");
- tt_str_op(bindaddr, ==, "127.0.0.1:5551");
+ tt_str_op(name_of_transport, OP_EQ, "mock1");
+ tt_str_op(bindaddr, OP_EQ, "127.0.0.1:5551");
SMARTLIST_FOREACH(transport_info_sl, char *, cp, tor_free(cp));
smartlist_free(transport_info_sl);
@@ -470,9 +470,9 @@ test_get_pt_proxy_uri(void *arg)
ret = tor_addr_port_lookup(options->Socks4Proxy,
&options->Socks4ProxyAddr,
&options->Socks4ProxyPort);
- tt_int_op(ret, ==, 0);
+ tt_int_op(ret, OP_EQ, 0);
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "socks4a://192.0.2.1:1080");
+ tt_str_op(uri, OP_EQ, "socks4a://192.0.2.1:1080");
tor_free(uri);
tor_free(options->Socks4Proxy);
@@ -481,16 +481,16 @@ test_get_pt_proxy_uri(void *arg)
ret = tor_addr_port_lookup(options->Socks5Proxy,
&options->Socks5ProxyAddr,
&options->Socks5ProxyPort);
- tt_int_op(ret, ==, 0);
+ tt_int_op(ret, OP_EQ, 0);
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "socks5://192.0.2.1:1080");
+ tt_str_op(uri, OP_EQ, "socks5://192.0.2.1:1080");
tor_free(uri);
/* Test with a SOCKS5 proxy, with username/password. */
options->Socks5ProxyUsername = tor_strdup("hwest");
options->Socks5ProxyPassword = tor_strdup("r34n1m470r");
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "socks5://hwest:r34n1m470r@192.0.2.1:1080");
+ tt_str_op(uri, OP_EQ, "socks5://hwest:r34n1m470r@192.0.2.1:1080");
tor_free(uri);
tor_free(options->Socks5Proxy);
tor_free(options->Socks5ProxyUsername);
@@ -501,15 +501,15 @@ test_get_pt_proxy_uri(void *arg)
ret = tor_addr_port_lookup(options->HTTPSProxy,
&options->HTTPSProxyAddr,
&options->HTTPSProxyPort);
- tt_int_op(ret, ==, 0);
+ tt_int_op(ret, OP_EQ, 0);
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "http://192.0.2.1:80");
+ tt_str_op(uri, OP_EQ, "http://192.0.2.1:80");
tor_free(uri);
/* Test with a HTTPS proxy, with authenticator. */
options->HTTPSProxyAuthenticator = tor_strdup("hwest:r34n1m470r");
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "http://hwest:r34n1m470r@192.0.2.1:80");
+ tt_str_op(uri, OP_EQ, "http://hwest:r34n1m470r@192.0.2.1:80");
tor_free(uri);
tor_free(options->HTTPSProxy);
tor_free(options->HTTPSProxyAuthenticator);
@@ -519,9 +519,9 @@ test_get_pt_proxy_uri(void *arg)
ret = tor_addr_port_lookup(options->Socks4Proxy,
&options->Socks4ProxyAddr,
&options->Socks4ProxyPort);
- tt_int_op(ret, ==, 0);
+ tt_int_op(ret, OP_EQ, 0);
uri = get_pt_proxy_uri();
- tt_str_op(uri, ==, "socks4a://[2001:db8::1]:1080");
+ tt_str_op(uri, OP_EQ, "socks4a://[2001:db8::1]:1080");
tor_free(uri);
tor_free(options->Socks4Proxy);
diff --git a/src/test/test_relay.c b/src/test/test_relay.c
new file mode 100644
index 0000000000..6907597705
--- /dev/null
+++ b/src/test/test_relay.c
@@ -0,0 +1,134 @@
+/* Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "or.h"
+#define CIRCUITBUILD_PRIVATE
+#include "circuitbuild.h"
+#define RELAY_PRIVATE
+#include "relay.h"
+/* For init/free stuff */
+#include "scheduler.h"
+
+/* Test suite stuff */
+#include "test.h"
+#include "fakechans.h"
+
+static or_circuit_t * new_fake_orcirc(channel_t *nchan, channel_t *pchan);
+
+static void test_relay_append_cell_to_circuit_queue(void *arg);
+
+static or_circuit_t *
+new_fake_orcirc(channel_t *nchan, channel_t *pchan)
+{
+ or_circuit_t *orcirc = NULL;
+ circuit_t *circ = NULL;
+
+ orcirc = tor_malloc_zero(sizeof(*orcirc));
+ circ = &(orcirc->base_);
+ circ->magic = OR_CIRCUIT_MAGIC;
+
+ circ->n_chan = nchan;
+ circ->n_circ_id = get_unique_circ_id_by_chan(nchan);
+ circ->n_mux = NULL; /* ?? */
+ cell_queue_init(&(circ->n_chan_cells));
+ circ->n_hop = NULL;
+ circ->streams_blocked_on_n_chan = 0;
+ circ->streams_blocked_on_p_chan = 0;
+ circ->n_delete_pending = 0;
+ circ->p_delete_pending = 0;
+ circ->received_destroy = 0;
+ circ->state = CIRCUIT_STATE_OPEN;
+ circ->purpose = CIRCUIT_PURPOSE_OR;
+ circ->package_window = CIRCWINDOW_START_MAX;
+ circ->deliver_window = CIRCWINDOW_START_MAX;
+ circ->n_chan_create_cell = NULL;
+
+ orcirc->p_chan = pchan;
+ orcirc->p_circ_id = get_unique_circ_id_by_chan(pchan);
+ cell_queue_init(&(orcirc->p_chan_cells));
+
+ return orcirc;
+}
+
+static void
+test_relay_append_cell_to_circuit_queue(void *arg)
+{
+ channel_t *nchan = NULL, *pchan = NULL;
+ or_circuit_t *orcirc = NULL;
+ cell_t *cell = NULL;
+ int old_count, new_count;
+
+ (void)arg;
+
+ /* We'll need the cell pool for append_cell_to_circuit_queue() to work */
+#ifdef ENABLE_MEMPOOLS
+ init_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ /* Make fake channels to be nchan and pchan for the circuit */
+ nchan = new_fake_channel();
+ tt_assert(nchan);
+
+ pchan = new_fake_channel();
+ tt_assert(pchan);
+
+ /* We'll need chans with working cmuxes */
+ nchan->cmux = circuitmux_alloc();
+ pchan->cmux = circuitmux_alloc();
+
+ /* Make a fake orcirc */
+ orcirc = new_fake_orcirc(nchan, pchan);
+ tt_assert(orcirc);
+
+ /* Make a cell */
+ cell = tor_malloc_zero(sizeof(cell_t));
+ make_fake_cell(cell);
+
+ MOCK(scheduler_channel_has_waiting_cells,
+ scheduler_channel_has_waiting_cells_mock);
+
+ /* Append it */
+ old_count = get_mock_scheduler_has_waiting_cells_count();
+ append_cell_to_circuit_queue(TO_CIRCUIT(orcirc), nchan, cell,
+ CELL_DIRECTION_OUT, 0);
+ new_count = get_mock_scheduler_has_waiting_cells_count();
+ tt_int_op(new_count, ==, old_count + 1);
+
+ /* Now try the reverse direction */
+ old_count = get_mock_scheduler_has_waiting_cells_count();
+ append_cell_to_circuit_queue(TO_CIRCUIT(orcirc), pchan, cell,
+ CELL_DIRECTION_IN, 0);
+ new_count = get_mock_scheduler_has_waiting_cells_count();
+ tt_int_op(new_count, ==, old_count + 1);
+
+ UNMOCK(scheduler_channel_has_waiting_cells);
+
+ /* Get rid of the fake channels */
+ MOCK(scheduler_release_channel, scheduler_release_channel_mock);
+ channel_mark_for_close(nchan);
+ channel_mark_for_close(pchan);
+ UNMOCK(scheduler_release_channel);
+
+ /* Shut down channels */
+ channel_free_all();
+ nchan = pchan = NULL;
+
+ done:
+ tor_free(orcirc);
+ if (nchan && nchan->cmux) circuitmux_free(nchan->cmux);
+ tor_free(nchan);
+ if (pchan && pchan->cmux) circuitmux_free(pchan->cmux);
+ tor_free(pchan);
+#ifdef ENABLE_MEMPOOLS
+ free_cell_pool();
+#endif /* ENABLE_MEMPOOLS */
+
+ return;
+}
+
+struct testcase_t relay_tests[] = {
+ { "append_cell_to_circuit_queue", test_relay_append_cell_to_circuit_queue,
+ TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_relaycell.c b/src/test/test_relaycell.c
index 5deb36260f..834dfeface 100644
--- a/src/test/test_relaycell.c
+++ b/src/test/test_relaycell.c
@@ -87,24 +87,24 @@ test_relaycell_resolved(void *arg)
srm_ncalls = mum_ncalls = 0; \
} while (0)
#define ASSERT_MARK_CALLED(reason) do { \
- tt_int_op(mum_ncalls, ==, 1); \
- tt_ptr_op(mum_conn, ==, entryconn); \
- tt_int_op(mum_endreason, ==, (reason)); \
+ tt_int_op(mum_ncalls, OP_EQ, 1); \
+ tt_ptr_op(mum_conn, OP_EQ, entryconn); \
+ tt_int_op(mum_endreason, OP_EQ, (reason)); \
} while (0)
#define ASSERT_RESOLVED_CALLED(atype, answer, ttl, expires) do { \
- tt_int_op(srm_ncalls, ==, 1); \
- tt_ptr_op(srm_conn, ==, entryconn); \
- tt_int_op(srm_atype, ==, (atype)); \
+ tt_int_op(srm_ncalls, OP_EQ, 1); \
+ tt_ptr_op(srm_conn, OP_EQ, entryconn); \
+ tt_int_op(srm_atype, OP_EQ, (atype)); \
if (answer) { \
- tt_int_op(srm_alen, ==, sizeof(answer)-1); \
- tt_int_op(srm_alen, <, 512); \
- tt_int_op(srm_answer_is_set, ==, 1); \
- tt_mem_op(srm_answer, ==, answer, sizeof(answer)-1); \
+ tt_int_op(srm_alen, OP_EQ, sizeof(answer)-1); \
+ tt_int_op(srm_alen, OP_LT, 512); \
+ tt_int_op(srm_answer_is_set, OP_EQ, 1); \
+ tt_mem_op(srm_answer, OP_EQ, answer, sizeof(answer)-1); \
} else { \
- tt_int_op(srm_answer_is_set, ==, 0); \
+ tt_int_op(srm_answer_is_set, OP_EQ, 0); \
} \
- tt_int_op(srm_ttl, ==, ttl); \
- tt_int_op(srm_expires, ==, expires); \
+ tt_int_op(srm_ttl, OP_EQ, ttl); \
+ tt_int_op(srm_expires, OP_EQ, expires); \
} while (0)
(void)arg;
@@ -130,9 +130,9 @@ test_relaycell_resolved(void *arg)
/* Try with connection in non-RESOLVE_WAIT state: cell gets ignored */
MOCK_RESET();
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
- tt_int_op(srm_ncalls, ==, 0);
- tt_int_op(mum_ncalls, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(srm_ncalls, OP_EQ, 0);
+ tt_int_op(mum_ncalls, OP_EQ, 0);
/* Now put it in the right state. */
ENTRY_TO_CONN(entryconn)->state = AP_CONN_STATE_RESOLVE_WAIT;
@@ -144,7 +144,7 @@ test_relaycell_resolved(void *arg)
/* We prefer ipv4, so we should get the first ipv4 answer */
MOCK_RESET();
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_IPV4, "\x7f\x00\x01\x02", 256, -1);
@@ -153,7 +153,7 @@ test_relaycell_resolved(void *arg)
MOCK_RESET();
options->ClientDNSRejectInternalAddresses = 1;
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_IPV4, "\x12\x00\x00\x01", 512, -1);
@@ -162,7 +162,7 @@ test_relaycell_resolved(void *arg)
entryconn->prefer_ipv6_traffic = 1;
MOCK_RESET();
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_IPV6,
@@ -174,7 +174,7 @@ test_relaycell_resolved(void *arg)
MOCK_RESET();
SET_CELL("\x04\x04\x12\x00\x00\x01\x00\x00\x02\x00");
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_IPV4, "\x12\x00\x00\x01", 512, -1);
@@ -184,7 +184,7 @@ test_relaycell_resolved(void *arg)
MOCK_RESET();
entryconn->ipv4_traffic_ok = 0;
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_ERROR, NULL, -1, -1);
@@ -194,7 +194,7 @@ test_relaycell_resolved(void *arg)
entryconn->ipv4_traffic_ok = 1;
entryconn->socks_request->command = SOCKS_COMMAND_RESOLVE_PTR;
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_ERROR, NULL, -1, -1);
@@ -203,7 +203,7 @@ test_relaycell_resolved(void *arg)
MOCK_RESET();
SET_CELL("\x00\x0fwww.example.com\x00\x01\x00\x00");
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_HOSTNAME, "www.example.com", 65536, -1);
@@ -213,9 +213,9 @@ test_relaycell_resolved(void *arg)
entryconn->socks_request->command = SOCKS_COMMAND_RESOLVE;
SET_CELL("\x04\x04\x01\x02\x03\x04"); /* no ttl */
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_TORPROTOCOL);
- tt_int_op(srm_ncalls, ==, 0);
+ tt_int_op(srm_ncalls, OP_EQ, 0);
/* error on all addresses private */
MOCK_RESET();
@@ -224,7 +224,7 @@ test_relaycell_resolved(void *arg)
/* IPv4: 192.168.1.1, ttl 256 */
"\x04\x04\xc0\xa8\x01\x01\x00\x00\x01\x00");
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_TORPROTOCOL);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_ERROR_TRANSIENT, NULL, 0, TIME_MAX);
@@ -232,7 +232,7 @@ test_relaycell_resolved(void *arg)
MOCK_RESET();
SET_CELL("\xf0\x15" "quiet and meaningless" "\x00\x00\x0f\xff");
r = connection_edge_process_resolved_cell(edgeconn, &cell, &rh);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
ASSERT_MARK_CALLED(END_STREAM_REASON_DONE|
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
ASSERT_RESOLVED_CALLED(RESOLVED_TYPE_ERROR_TRANSIENT, NULL, -1, -1);
diff --git a/src/test/test_replay.c b/src/test/test_replay.c
index bb8017d261..b1f637a43b 100644
--- a/src/test/test_replay.c
+++ b/src/test/test_replay.c
@@ -44,7 +44,7 @@ test_replaycache_badalloc(void *arg)
/* Negative interval should get adjusted to zero */
r = replaycache_new(600, -300);
tt_assert(r != NULL);
- tt_int_op(r->scrub_interval,==, 0);
+ tt_int_op(r->scrub_interval,OP_EQ, 0);
replaycache_free(r);
/* Negative horizon and negative interval should still fail */
r = replaycache_new(-600, -300);
@@ -81,13 +81,13 @@ test_replaycache_miss(void *arg)
result =
replaycache_add_and_test_internal(1200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
/* poke the bad-parameter error case too */
result =
replaycache_add_and_test_internal(1200, NULL, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
done:
if (r) replaycache_free(r);
@@ -108,12 +108,12 @@ test_replaycache_hit(void *arg)
result =
replaycache_add_and_test_internal(1200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
result =
replaycache_add_and_test_internal(1300, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
done:
if (r) replaycache_free(r);
@@ -134,17 +134,17 @@ test_replaycache_age(void *arg)
result =
replaycache_add_and_test_internal(1200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
result =
replaycache_add_and_test_internal(1300, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
result =
replaycache_add_and_test_internal(3000, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
done:
if (r) replaycache_free(r);
@@ -166,13 +166,13 @@ test_replaycache_elapsed(void *arg)
result =
replaycache_add_and_test_internal(1200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
result =
replaycache_add_and_test_internal(1300, r, test_buffer,
strlen(test_buffer), &elapsed);
- tt_int_op(result,==, 1);
- tt_int_op(elapsed,==, 100);
+ tt_int_op(result,OP_EQ, 1);
+ tt_int_op(elapsed,OP_EQ, 100);
done:
if (r) replaycache_free(r);
@@ -193,17 +193,17 @@ test_replaycache_noexpire(void *arg)
result =
replaycache_add_and_test_internal(1200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
result =
replaycache_add_and_test_internal(1300, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
result =
replaycache_add_and_test_internal(3000, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
done:
if (r) replaycache_free(r);
@@ -225,12 +225,12 @@ test_replaycache_scrub(void *arg)
result =
replaycache_add_and_test_internal(100, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
result =
replaycache_add_and_test_internal(200, r, test_buffer,
strlen(test_buffer), NULL);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
/*
* Poke a few replaycache_scrub_if_needed_internal() error cases that
@@ -245,7 +245,7 @@ test_replaycache_scrub(void *arg)
/* Make sure we hit the aging-out case too */
replaycache_scrub_if_needed_internal(1500, r);
/* Assert that we aged it */
- tt_int_op(digestmap_size(r->digests_seen),==, 0);
+ tt_int_op(digestmap_size(r->digests_seen),OP_EQ, 0);
done:
if (r) replaycache_free(r);
@@ -268,16 +268,16 @@ test_replaycache_future(void *arg)
result =
replaycache_add_and_test_internal(100, r, test_buffer,
strlen(test_buffer), &elapsed);
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
/* elapsed should still be 0, since it wasn't written */
- tt_int_op(elapsed,==, 0);
+ tt_int_op(elapsed,OP_EQ, 0);
result =
replaycache_add_and_test_internal(200, r, test_buffer,
strlen(test_buffer), &elapsed);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
/* elapsed should be the time since the last hit */
- tt_int_op(elapsed,==, 100);
+ tt_int_op(elapsed,OP_EQ, 100);
/*
* Now let's turn the clock back to get coverage on the cache entry from the
@@ -287,9 +287,9 @@ test_replaycache_future(void *arg)
replaycache_add_and_test_internal(150, r, test_buffer,
strlen(test_buffer), &elapsed);
/* We should still get a hit */
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
/* ...but it shouldn't let us see a negative elapsed time */
- tt_int_op(elapsed,==, 0);
+ tt_int_op(elapsed,OP_EQ, 0);
done:
if (r) replaycache_free(r);
@@ -316,18 +316,18 @@ test_replaycache_realtime(void *arg)
/* This should miss */
result =
replaycache_add_and_test(r, test_buffer, strlen(test_buffer));
- tt_int_op(result,==, 0);
+ tt_int_op(result,OP_EQ, 0);
/* This should hit */
result =
replaycache_add_and_test(r, test_buffer, strlen(test_buffer));
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
/* This should hit and return a small elapsed time */
result =
replaycache_add_test_and_elapsed(r, test_buffer,
strlen(test_buffer), &elapsed);
- tt_int_op(result,==, 1);
+ tt_int_op(result,OP_EQ, 1);
tt_assert(elapsed >= 0);
tt_assert(elapsed <= 5);
diff --git a/src/test/test_routerkeys.c b/src/test/test_routerkeys.c
index 652d7d6c52..d8ad59a58b 100644
--- a/src/test/test_routerkeys.c
+++ b/src/test/test_routerkeys.c
@@ -33,38 +33,38 @@ test_routerkeys_write_fingerprint(void *arg)
set_server_identity_key(key);
set_client_identity_key(crypto_pk_dup_key(key));
- tt_int_op(0, ==, check_private_dir(ddir, CPD_CREATE, NULL));
- tt_int_op(crypto_pk_cmp_keys(get_server_identity_key(),key),==,0);
+ tt_int_op(0, OP_EQ, check_private_dir(ddir, CPD_CREATE, NULL));
+ tt_int_op(crypto_pk_cmp_keys(get_server_identity_key(),key),OP_EQ,0);
/* Write fingerprint file */
- tt_int_op(0, ==, router_write_fingerprint(0));
+ tt_int_op(0, OP_EQ, router_write_fingerprint(0));
cp = read_file_to_str(get_fname("write_fingerprint/fingerprint"),
0, NULL);
crypto_pk_get_fingerprint(key, fp, 0);
tor_asprintf(&cp2, "haflinger %s\n", fp);
- tt_str_op(cp, ==, cp2);
+ tt_str_op(cp, OP_EQ, cp2);
tor_free(cp);
tor_free(cp2);
/* Write hashed-fingerprint file */
- tt_int_op(0, ==, router_write_fingerprint(1));
+ tt_int_op(0, OP_EQ, router_write_fingerprint(1));
cp = read_file_to_str(get_fname("write_fingerprint/hashed-fingerprint"),
0, NULL);
crypto_pk_get_hashed_fingerprint(key, fp);
tor_asprintf(&cp2, "haflinger %s\n", fp);
- tt_str_op(cp, ==, cp2);
+ tt_str_op(cp, OP_EQ, cp2);
tor_free(cp);
tor_free(cp2);
/* Replace outdated file */
write_str_to_file(get_fname("write_fingerprint/hashed-fingerprint"),
"junk goes here", 0);
- tt_int_op(0, ==, router_write_fingerprint(1));
+ tt_int_op(0, OP_EQ, router_write_fingerprint(1));
cp = read_file_to_str(get_fname("write_fingerprint/hashed-fingerprint"),
0, NULL);
crypto_pk_get_hashed_fingerprint(key, fp);
tor_asprintf(&cp2, "haflinger %s\n", fp);
- tt_str_op(cp, ==, cp2);
+ tt_str_op(cp, OP_EQ, cp2);
tor_free(cp);
tor_free(cp2);
diff --git a/src/test/test_routerset.c b/src/test/test_routerset.c
index 81e4dbb1eb..9bd0c125c3 100644
--- a/src/test/test_routerset.c
+++ b/src/test/test_routerset.c
@@ -25,12 +25,12 @@ NS(test_main)(void *arg)
rs = routerset_new();
- tt_ptr_op(rs, !=, NULL);
- tt_ptr_op(rs->list, !=, NULL);
- tt_ptr_op(rs->names, !=, NULL);
- tt_ptr_op(rs->digests, !=, NULL);
- tt_ptr_op(rs->policies, !=, NULL);
- tt_ptr_op(rs->country_names, !=, NULL);
+ tt_ptr_op(rs, OP_NE, NULL);
+ tt_ptr_op(rs->list, OP_NE, NULL);
+ tt_ptr_op(rs->names, OP_NE, NULL);
+ tt_ptr_op(rs->digests, OP_NE, NULL);
+ tt_ptr_op(rs->policies, OP_NE, NULL);
+ tt_ptr_op(rs->country_names, OP_NE, NULL);
done:
routerset_free(rs);
@@ -53,30 +53,30 @@ NS(test_main)(void *arg)
/* strlen(c) < 4 */
input = "xxx";
name = routerset_get_countryname(input);
- tt_ptr_op(name, ==, NULL);
+ tt_ptr_op(name, OP_EQ, NULL);
tor_free(name);
/* c[0] != '{' */
input = "xxx}";
name = routerset_get_countryname(input);
- tt_ptr_op(name, ==, NULL);
+ tt_ptr_op(name, OP_EQ, NULL);
tor_free(name);
/* c[3] != '}' */
input = "{xxx";
name = routerset_get_countryname(input);
- tt_ptr_op(name, ==, NULL);
+ tt_ptr_op(name, OP_EQ, NULL);
tor_free(name);
/* tor_strlower */
input = "{XX}";
name = routerset_get_countryname(input);
- tt_str_op(name, ==, "xx");
+ tt_str_op(name, OP_EQ, "xx");
tor_free(name);
input = "{xx}";
name = routerset_get_countryname(input);
- tt_str_op(name, ==, "xx");
+ tt_str_op(name, OP_EQ, "xx");
done:
tor_free(name);
}
@@ -103,10 +103,10 @@ NS(test_main)(void *arg)
routerset_refresh_countries(set);
- tt_ptr_op(set->countries, ==, NULL);
- tt_int_op(set->n_countries, ==, 0);
- tt_int_op(CALLED(geoip_is_loaded), ==, 1);
- tt_int_op(CALLED(geoip_get_n_countries), ==, 0);
+ tt_ptr_op(set->countries, OP_EQ, NULL);
+ tt_int_op(set->n_countries, OP_EQ, 0);
+ tt_int_op(CALLED(geoip_is_loaded), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_n_countries), OP_EQ, 0);
done:
NS_UNMOCK(geoip_is_loaded);
@@ -154,12 +154,12 @@ NS(test_main)(void *arg)
routerset_refresh_countries(set);
- tt_ptr_op(set->countries, !=, NULL);
- tt_int_op(set->n_countries, ==, 1);
- tt_int_op((unsigned int)(*set->countries), ==, 0);
- tt_int_op(CALLED(geoip_is_loaded), ==, 1);
- tt_int_op(CALLED(geoip_get_n_countries), ==, 1);
- tt_int_op(CALLED(geoip_get_country), ==, 0);
+ tt_ptr_op(set->countries, OP_NE, NULL);
+ tt_int_op(set->n_countries, OP_EQ, 1);
+ tt_int_op((unsigned int)(*set->countries), OP_EQ, 0);
+ tt_int_op(CALLED(geoip_is_loaded), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_n_countries), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_country), OP_EQ, 0);
done:
NS_UNMOCK(geoip_is_loaded);
@@ -218,12 +218,12 @@ NS(test_main)(void *arg)
routerset_refresh_countries(set);
- tt_ptr_op(set->countries, !=, NULL);
- tt_int_op(set->n_countries, ==, 2);
- tt_int_op(CALLED(geoip_is_loaded), ==, 1);
- tt_int_op(CALLED(geoip_get_n_countries), ==, 1);
- tt_int_op(CALLED(geoip_get_country), ==, 1);
- tt_int_op((unsigned int)(*set->countries), !=, 0);
+ tt_ptr_op(set->countries, OP_NE, NULL);
+ tt_int_op(set->n_countries, OP_EQ, 2);
+ tt_int_op(CALLED(geoip_is_loaded), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_n_countries), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_country), OP_EQ, 1);
+ tt_int_op((unsigned int)(*set->countries), OP_NE, 0);
done:
NS_UNMOCK(geoip_is_loaded);
@@ -283,12 +283,12 @@ NS(test_main)(void *arg)
routerset_refresh_countries(set);
- tt_ptr_op(set->countries, !=, NULL);
- tt_int_op(set->n_countries, ==, 2);
- tt_int_op(CALLED(geoip_is_loaded), ==, 1);
- tt_int_op(CALLED(geoip_get_n_countries), ==, 1);
- tt_int_op(CALLED(geoip_get_country), ==, 1);
- tt_int_op((unsigned int)(*set->countries), ==, 0);
+ tt_ptr_op(set->countries, OP_NE, NULL);
+ tt_int_op(set->n_countries, OP_EQ, 2);
+ tt_int_op(CALLED(geoip_is_loaded), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_n_countries), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_country), OP_EQ, 1);
+ tt_int_op((unsigned int)(*set->countries), OP_EQ, 0);
done:
NS_UNMOCK(geoip_is_loaded);
@@ -340,7 +340,7 @@ NS(test_main)(void *arg)
r = routerset_parse(set, s, "");
- tt_int_op(r, ==, -1);
+ tt_int_op(r, OP_EQ, -1);
done:
routerset_free(set);
@@ -365,8 +365,8 @@ NS(test_main)(void *arg)
set = routerset_new();
s = "$0000000000000000000000000000000000000000";
r = routerset_parse(set, s, "");
- tt_int_op(r, ==, 0);
- tt_int_op(digestmap_isempty(set->digests), !=, 1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(digestmap_isempty(set->digests), OP_NE, 1);
done:
routerset_free(set);
@@ -390,8 +390,8 @@ NS(test_main)(void *arg)
set = routerset_new();
s = "fred";
r = routerset_parse(set, s, "");
- tt_int_op(r, ==, 0);
- tt_int_op(strmap_isempty(set->names), !=, 1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(strmap_isempty(set->names), OP_NE, 1);
done:
routerset_free(set);
@@ -415,8 +415,8 @@ NS(test_main)(void *arg)
set = routerset_new();
s = "{cc}";
r = routerset_parse(set, s, "");
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(set->country_names), !=, 0);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(set->country_names), OP_NE, 0);
done:
routerset_free(set);
@@ -448,9 +448,9 @@ NS(test_main)(void *arg)
set = routerset_new();
s = "*";
r = routerset_parse(set, s, "");
- tt_int_op(r, ==, 0);
- tt_int_op(smartlist_len(set->policies), !=, 0);
- tt_int_op(CALLED(router_parse_addr_policy_item_from_string), ==, 1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(smartlist_len(set->policies), OP_NE, 0);
+ tt_int_op(CALLED(router_parse_addr_policy_item_from_string), OP_EQ, 1);
done:
routerset_free(set);
@@ -489,10 +489,10 @@ NS(test_main)(void *arg)
NS_MOCK(smartlist_new);
routerset_union(set, NULL);
- tt_int_op(CALLED(smartlist_new), ==, 0);
+ tt_int_op(CALLED(smartlist_new), OP_EQ, 0);
routerset_union(set, bad_set);
- tt_int_op(CALLED(smartlist_new), ==, 0);
+ tt_int_op(CALLED(smartlist_new), OP_EQ, 0);
done:
NS_UNMOCK(smartlist_new);
@@ -529,7 +529,7 @@ NS(test_main)(void *arg)
smartlist_add(src->list, tor_strdup("{xx}"));
routerset_union(tgt, src);
- tt_int_op(smartlist_len(tgt->list), !=, 0);
+ tt_int_op(smartlist_len(tgt->list), OP_NE, 0);
done:
routerset_free(src);
@@ -556,7 +556,7 @@ NS(test_main)(void *arg)
is_list = routerset_is_list(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_list, !=, 0);
+ tt_int_op(is_list, OP_NE, 0);
/* len(set->country_names) != 0, len(set->policies) == 0 */
set = routerset_new();
@@ -564,7 +564,7 @@ NS(test_main)(void *arg)
is_list = routerset_is_list(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_list, ==, 0);
+ tt_int_op(is_list, OP_EQ, 0);
/* len(set->country_names) == 0, len(set->policies) != 0 */
set = routerset_new();
@@ -573,7 +573,7 @@ NS(test_main)(void *arg)
is_list = routerset_is_list(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_list, ==, 0);
+ tt_int_op(is_list, OP_EQ, 0);
/* len(set->country_names) != 0, len(set->policies) != 0 */
set = routerset_new();
@@ -583,7 +583,7 @@ NS(test_main)(void *arg)
is_list = routerset_is_list(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_list, ==, 0);
+ tt_int_op(is_list, OP_EQ, 0);
done:
;
@@ -605,12 +605,12 @@ NS(test_main)(void *arg)
set = NULL;
needs_geoip = routerset_needs_geoip(set);
- tt_int_op(needs_geoip, ==, 0);
+ tt_int_op(needs_geoip, OP_EQ, 0);
set = routerset_new();
needs_geoip = routerset_needs_geoip(set);
routerset_free((routerset_t *)set);
- tt_int_op(needs_geoip, ==, 0);
+ tt_int_op(needs_geoip, OP_EQ, 0);
set = NULL;
set = routerset_new();
@@ -618,7 +618,7 @@ NS(test_main)(void *arg)
needs_geoip = routerset_needs_geoip(set);
routerset_free((routerset_t *)set);
set = NULL;
- tt_int_op(needs_geoip, !=, 0);
+ tt_int_op(needs_geoip, OP_NE, 0);
done:
;
@@ -639,20 +639,20 @@ NS(test_main)(void *arg)
(void)arg;
is_empty = routerset_is_empty(set);
- tt_int_op(is_empty, !=, 0);
+ tt_int_op(is_empty, OP_NE, 0);
set = routerset_new();
is_empty = routerset_is_empty(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_empty, !=, 0);
+ tt_int_op(is_empty, OP_NE, 0);
set = routerset_new();
smartlist_add(set->list, tor_strdup("{xx}"));
is_empty = routerset_is_empty(set);
routerset_free(set);
set = NULL;
- tt_int_op(is_empty, ==, 0);
+ tt_int_op(is_empty, OP_EQ, 0);
done:
;
@@ -675,13 +675,13 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, NULL, NULL, 0);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
set = tor_malloc_zero(sizeof(routerset_t));
set->list = NULL;
contains = routerset_contains(set, NULL, 0, NULL, NULL, 0);
tor_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
@@ -706,7 +706,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, nickname, NULL, 0);
routerset_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
@@ -733,7 +733,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, nickname, NULL, 0);
routerset_free(set);
- tt_int_op(contains, ==, 4);
+ tt_int_op(contains, OP_EQ, 4);
done:
;
}
@@ -757,7 +757,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, "foo", NULL, 0);
routerset_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
}
@@ -782,7 +782,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, NULL, (const char*)foo, 0);
routerset_free(set);
- tt_int_op(contains, ==, 4);
+ tt_int_op(contains, OP_EQ, 4);
done:
;
}
@@ -808,7 +808,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, NULL, (const char*)foo, 0);
routerset_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
}
@@ -833,7 +833,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
}
@@ -865,8 +865,8 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, addr, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(CALLED(compare_tor_addr_to_addr_policy), ==, 1);
- tt_int_op(contains, ==, 3);
+ tt_int_op(CALLED(compare_tor_addr_to_addr_policy), OP_EQ, 1);
+ tt_int_op(contains, OP_EQ, 3);
done:
;
@@ -879,7 +879,7 @@ NS(compare_tor_addr_to_addr_policy)(const tor_addr_t *addr, uint16_t port,
(void)port;
(void)policy;
CALLED(compare_tor_addr_to_addr_policy)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_REJECTED;
done:
@@ -910,8 +910,8 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, addr, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(CALLED(compare_tor_addr_to_addr_policy), ==, 1);
- tt_int_op(contains, ==, 0);
+ tt_int_op(CALLED(compare_tor_addr_to_addr_policy), OP_EQ, 1);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
@@ -924,7 +924,7 @@ NS(compare_tor_addr_to_addr_policy)(const tor_addr_t *addr, uint16_t port,
(void)port;
(void)policy;
CALLED(compare_tor_addr_to_addr_policy)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_ACCEPTED;
@@ -955,7 +955,7 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, NULL, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(contains, ==, 0);
+ tt_int_op(contains, OP_EQ, 0);
done:
;
@@ -968,7 +968,7 @@ NS(compare_tor_addr_to_addr_policy)(const tor_addr_t *addr, uint16_t port,
(void)port;
(void)policy;
CALLED(compare_tor_addr_to_addr_policy)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_ACCEPTED;
@@ -1003,9 +1003,9 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, MOCK_TOR_ADDR_PTR, 0, NULL, NULL, -1);
routerset_free(set);
- tt_int_op(contains, ==, 0);
- tt_int_op(CALLED(compare_tor_addr_to_addr_policy), ==, 1);
- tt_int_op(CALLED(geoip_get_country_by_addr), ==, 1);
+ tt_int_op(contains, OP_EQ, 0);
+ tt_int_op(CALLED(compare_tor_addr_to_addr_policy), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_country_by_addr), OP_EQ, 1);
done:
;
@@ -1018,7 +1018,7 @@ NS(compare_tor_addr_to_addr_policy)(const tor_addr_t *addr, uint16_t port,
(void)port;
(void)policy;
CALLED(compare_tor_addr_to_addr_policy)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
return ADDR_POLICY_ACCEPTED;
@@ -1028,7 +1028,7 @@ int
NS(geoip_get_country_by_addr)(const tor_addr_t *addr)
{
CALLED(geoip_get_country_by_addr)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
return -1;
@@ -1062,9 +1062,9 @@ NS(test_main)(void *arg)
contains = routerset_contains(set, MOCK_TOR_ADDR_PTR, 0, NULL, NULL, -1);
routerset_free(set);
- tt_int_op(contains, ==, 2);
- tt_int_op(CALLED(compare_tor_addr_to_addr_policy), ==, 1);
- tt_int_op(CALLED(geoip_get_country_by_addr), ==, 1);
+ tt_int_op(contains, OP_EQ, 2);
+ tt_int_op(CALLED(compare_tor_addr_to_addr_policy), OP_EQ, 1);
+ tt_int_op(CALLED(geoip_get_country_by_addr), OP_EQ, 1);
done:
;
@@ -1077,7 +1077,7 @@ NS(compare_tor_addr_to_addr_policy)(const tor_addr_t *addr, uint16_t port,
(void)port;
(void)policy;
CALLED(compare_tor_addr_to_addr_policy)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
return ADDR_POLICY_ACCEPTED;
@@ -1087,7 +1087,7 @@ int
NS(geoip_get_country_by_addr)(const tor_addr_t *addr)
{
CALLED(geoip_get_country_by_addr)++;
- tt_ptr_op(addr, ==, MOCK_TOR_ADDR_PTR);
+ tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
return 1;
@@ -1111,7 +1111,7 @@ NS(test_main)(void *arg)
r = routerset_add_unknown_ccs(setp, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
done:
routerset_free(set);
@@ -1140,8 +1140,8 @@ NS(test_main)(void *arg)
r = routerset_add_unknown_ccs(setp, 0);
- tt_ptr_op(*setp, !=, NULL);
- tt_int_op(r, ==, 0);
+ tt_ptr_op(*setp, OP_NE, NULL);
+ tt_int_op(r, OP_EQ, 0);
done:
if (set != NULL)
@@ -1181,9 +1181,9 @@ NS(test_main)(void *arg)
r = routerset_add_unknown_ccs(setp, 0);
- tt_int_op(r, ==, 1);
- tt_int_op(smartlist_contains_string(set->country_names, "??"), ==, 1);
- tt_int_op(smartlist_contains_string(set->list, "{??}"), ==, 1);
+ tt_int_op(r, OP_EQ, 1);
+ tt_int_op(smartlist_contains_string(set->country_names, "??"), OP_EQ, 1);
+ tt_int_op(smartlist_contains_string(set->list, "{??}"), OP_EQ, 1);
done:
if (set != NULL)
@@ -1200,7 +1200,7 @@ NS(geoip_get_country)(const char *country)
arg_is_qq = !strcmp(country, "??");
arg_is_a1 = !strcmp(country, "A1");
- tt_int_op(arg_is_qq || arg_is_a1, ==, 1);
+ tt_int_op(arg_is_qq || arg_is_a1, OP_EQ, 1);
if (arg_is_qq)
return 1;
@@ -1214,7 +1214,7 @@ NS(geoip_is_loaded)(sa_family_t family)
{
CALLED(geoip_is_loaded)++;
- tt_int_op(family, ==, AF_INET);
+ tt_int_op(family, OP_EQ, AF_INET);
done:
return 0;
@@ -1244,9 +1244,9 @@ NS(test_main)(void *arg)
r = routerset_add_unknown_ccs(setp, 0);
- tt_int_op(r, ==, 1);
- tt_int_op(smartlist_contains_string(set->country_names, "a1"), ==, 1);
- tt_int_op(smartlist_contains_string(set->list, "{a1}"), ==, 1);
+ tt_int_op(r, OP_EQ, 1);
+ tt_int_op(smartlist_contains_string(set->country_names, "a1"), OP_EQ, 1);
+ tt_int_op(smartlist_contains_string(set->list, "{a1}"), OP_EQ, 1);
done:
if (set != NULL)
@@ -1263,7 +1263,7 @@ NS(geoip_get_country)(const char *country)
arg_is_qq = !strcmp(country, "??");
arg_is_a1 = !strcmp(country, "A1");
- tt_int_op(arg_is_qq || arg_is_a1, ==, 1);
+ tt_int_op(arg_is_qq || arg_is_a1, OP_EQ, 1);
if (arg_is_a1)
return 1;
@@ -1277,7 +1277,7 @@ NS(geoip_is_loaded)(sa_family_t family)
{
CALLED(geoip_is_loaded)++;
- tt_int_op(family, ==, AF_INET);
+ tt_int_op(family, OP_EQ, AF_INET);
done:
return 0;
@@ -1306,7 +1306,7 @@ NS(test_main)(void *arg)
r = routerset_contains_extendinfo(set, &ei);
- tt_int_op(r, ==, 4);
+ tt_int_op(r, OP_EQ, 4);
done:
routerset_free(set);
}
@@ -1334,7 +1334,7 @@ NS(test_main)(void *arg)
r = routerset_contains_router(set, &ri, country);
- tt_int_op(r, ==, 4);
+ tt_int_op(r, OP_EQ, 4);
done:
routerset_free(set);
}
@@ -1367,7 +1367,7 @@ NS(test_main)(void *arg)
r = routerset_contains_routerstatus(set, &rs, country);
- tt_int_op(r, ==, 4);
+ tt_int_op(r, OP_EQ, 4);
done:
routerset_free(set);
}
@@ -1393,7 +1393,7 @@ NS(test_main)(void *arg)
NS(mock_node).rs = NULL;
r = routerset_contains_node(set, &NS(mock_node));
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
done:
routerset_free(set);
@@ -1427,7 +1427,7 @@ NS(test_main)(void *arg)
r = routerset_contains_node(set, &NS(mock_node));
- tt_int_op(r, ==, 4);
+ tt_int_op(r, OP_EQ, 4);
done:
routerset_free(set);
}
@@ -1458,7 +1458,7 @@ NS(test_main)(void *arg)
r = routerset_contains_node(set, &mock_node);
- tt_int_op(r, ==, 4);
+ tt_int_op(r, OP_EQ, 4);
done:
routerset_free(set);
}
@@ -1478,15 +1478,15 @@ NS(test_main)(void *arg)
routerset_t *set = NULL;
(void)arg;
- tt_int_op(smartlist_len(out), ==, 0);
+ tt_int_op(smartlist_len(out), OP_EQ, 0);
routerset_get_all_nodes(out, NULL, NULL, 0);
- tt_int_op(smartlist_len(out), ==, 0);
+ tt_int_op(smartlist_len(out), OP_EQ, 0);
set = routerset_new();
smartlist_free(set->list);
routerset_get_all_nodes(out, NULL, NULL, 0);
- tt_int_op(smartlist_len(out), ==, 0);
+ tt_int_op(smartlist_len(out), OP_EQ, 0);
/* Just recreate list, so we can simply use routerset_free. */
set->list = smartlist_new();
@@ -1527,8 +1527,8 @@ NS(test_main)(void *arg)
smartlist_free(out);
routerset_free(set);
- tt_int_op(out_len, ==, 0);
- tt_int_op(CALLED(node_get_by_nickname), ==, 1);
+ tt_int_op(out_len, OP_EQ, 0);
+ tt_int_op(CALLED(node_get_by_nickname), OP_EQ, 1);
done:
;
@@ -1538,8 +1538,8 @@ const node_t *
NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
{
CALLED(node_get_by_nickname)++;
- tt_str_op(nickname, ==, NS(mock_nickname));
- tt_int_op(warn_if_unused, ==, 1);
+ tt_str_op(nickname, OP_EQ, NS(mock_nickname));
+ tt_int_op(warn_if_unused, OP_EQ, 1);
done:
return NULL;
@@ -1578,8 +1578,8 @@ NS(test_main)(void *arg)
smartlist_free(out);
routerset_free(set);
- tt_int_op(out_len, ==, 0);
- tt_int_op(CALLED(node_get_by_nickname), ==, 1);
+ tt_int_op(out_len, OP_EQ, 0);
+ tt_int_op(CALLED(node_get_by_nickname), OP_EQ, 1);
done:
;
@@ -1589,8 +1589,8 @@ const node_t *
NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
{
CALLED(node_get_by_nickname)++;
- tt_str_op(nickname, ==, NS(mock_nickname));
- tt_int_op(warn_if_unused, ==, 1);
+ tt_str_op(nickname, OP_EQ, NS(mock_nickname));
+ tt_int_op(warn_if_unused, OP_EQ, 1);
done:
return &NS(mock_node);
@@ -1629,9 +1629,9 @@ NS(test_main)(void *arg)
smartlist_free(out);
routerset_free(set);
- tt_int_op(out_len, ==, 1);
- tt_ptr_op(ent, ==, &NS(mock_node));
- tt_int_op(CALLED(node_get_by_nickname), ==, 1);
+ tt_int_op(out_len, OP_EQ, 1);
+ tt_ptr_op(ent, OP_EQ, &NS(mock_node));
+ tt_int_op(CALLED(node_get_by_nickname), OP_EQ, 1);
done:
;
@@ -1641,8 +1641,8 @@ const node_t *
NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
{
CALLED(node_get_by_nickname)++;
- tt_str_op(nickname, ==, NS(mock_nickname));
- tt_int_op(warn_if_unused, ==, 1);
+ tt_str_op(nickname, OP_EQ, NS(mock_nickname));
+ tt_int_op(warn_if_unused, OP_EQ, 1);
done:
return &NS(mock_node);
@@ -1678,8 +1678,8 @@ NS(test_main)(void *arg)
smartlist_free(out);
smartlist_free(NS(mock_smartlist));
- tt_int_op(r, ==, 0);
- tt_int_op(CALLED(nodelist_get_list), ==, 1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(CALLED(nodelist_get_list), OP_EQ, 1);
done:
;
@@ -1727,8 +1727,8 @@ NS(test_main)(void *arg)
smartlist_free(out);
smartlist_free(NS(mock_smartlist));
- tt_int_op(r, ==, 0);
- tt_int_op(CALLED(nodelist_get_list), ==, 1);
+ tt_int_op(r, OP_EQ, 0);
+ tt_int_op(CALLED(nodelist_get_list), OP_EQ, 1);
done:
;
@@ -1766,10 +1766,10 @@ NS(test_main)(void *arg)
mock_node.ri = &ri;
smartlist_add(list, (void *)&mock_node);
- tt_int_op(smartlist_len(list), !=, 0);
+ tt_int_op(smartlist_len(list), OP_NE, 0);
routerset_subtract_nodes(list, set);
- tt_int_op(smartlist_len(list), ==, 0);
+ tt_int_op(smartlist_len(list), OP_EQ, 0);
done:
routerset_free(set);
smartlist_free(list);
@@ -1796,10 +1796,10 @@ NS(test_main)(void *arg)
mock_node.ri = &ri;
smartlist_add(list, (void *)&mock_node);
- tt_int_op(smartlist_len(list), !=, 0);
+ tt_int_op(smartlist_len(list), OP_NE, 0);
routerset_subtract_nodes(list, set);
- tt_int_op(smartlist_len(list), !=, 0);
+ tt_int_op(smartlist_len(list), OP_NE, 0);
done:
routerset_free(set);
smartlist_free(list);
@@ -1821,19 +1821,19 @@ NS(test_main)(void *arg)
set = NULL;
s = routerset_to_string(set);
- tt_str_op(s, ==, "");
+ tt_str_op(s, OP_EQ, "");
tor_free(s);
set = routerset_new();
s = routerset_to_string(set);
- tt_str_op(s, ==, "");
+ tt_str_op(s, OP_EQ, "");
tor_free(s);
routerset_free(set); set = NULL;
set = routerset_new();
smartlist_add(set->list, tor_strndup("a", 1));
s = routerset_to_string(set);
- tt_str_op(s, ==, "a");
+ tt_str_op(s, OP_EQ, "a");
tor_free(s);
routerset_free(set); set = NULL;
@@ -1841,7 +1841,7 @@ NS(test_main)(void *arg)
smartlist_add(set->list, tor_strndup("a", 1));
smartlist_add(set->list, tor_strndup("b", 1));
s = routerset_to_string(set);
- tt_str_op(s, ==, "a,b");
+ tt_str_op(s, OP_EQ, "a,b");
tor_free(s);
routerset_free(set); set = NULL;
@@ -1868,7 +1868,7 @@ NS(test_main)(void *arg)
routerset_free(a);
routerset_free(b);
- tt_int_op(r, ==, 1);
+ tt_int_op(r, OP_EQ, 1);
done:
;
@@ -1893,7 +1893,7 @@ NS(test_main)(void *arg)
routerset_free(a);
routerset_free(b);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
done:
;
}
@@ -1920,7 +1920,7 @@ NS(test_main)(void *arg)
routerset_free(a);
routerset_free(b);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
done:
;
}
@@ -1946,7 +1946,7 @@ NS(test_main)(void *arg)
routerset_free(a);
routerset_free(b);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
done:
;
}
@@ -1972,7 +1972,7 @@ NS(test_main)(void *arg)
routerset_free(a);
routerset_free(b);
- tt_int_op(r, ==, 1);
+ tt_int_op(r, OP_EQ, 1);
done:
;
}
@@ -1995,7 +1995,7 @@ NS(test_main)(void *arg)
routerset_free(NULL);
- tt_int_op(CALLED(smartlist_free), ==, 0);
+ tt_int_op(CALLED(smartlist_free), OP_EQ, 0);
done:
;
@@ -2031,9 +2031,9 @@ NS(test_main)(void *arg)
routerset_free(routerset);
- tt_int_op(CALLED(smartlist_free), !=, 0);
- tt_int_op(CALLED(strmap_free), !=, 0);
- tt_int_op(CALLED(digestmap_free), !=, 0);
+ tt_int_op(CALLED(smartlist_free), OP_NE, 0);
+ tt_int_op(CALLED(strmap_free), OP_NE, 0);
+ tt_int_op(CALLED(digestmap_free), OP_NE, 0);
done:
;
diff --git a/src/test/test_scheduler.c b/src/test/test_scheduler.c
new file mode 100644
index 0000000000..a7a1acc83e
--- /dev/null
+++ b/src/test/test_scheduler.c
@@ -0,0 +1,763 @@
+/* Copyright (c) 2014, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include <math.h>
+
+#include "orconfig.h"
+
+/* Libevent stuff */
+#ifdef HAVE_EVENT2_EVENT_H
+#include <event2/event.h>
+#else
+#include <event.h>
+#endif
+
+#define TOR_CHANNEL_INTERNAL_
+#define CHANNEL_PRIVATE_
+#include "or.h"
+#include "compat_libevent.h"
+#include "channel.h"
+#define SCHEDULER_PRIVATE_
+#include "scheduler.h"
+
+/* Test suite stuff */
+#include "test.h"
+#include "fakechans.h"
+
+/* Statics in scheduler.c exposed to the test suite */
+extern smartlist_t *channels_pending;
+extern struct event *run_sched_ev;
+extern uint64_t queue_heuristic;
+extern time_t queue_heuristic_timestamp;
+
+/* Event base for scheduelr tests */
+static struct event_base *mock_event_base = NULL;
+
+/* Statics controlling mocks */
+static circuitmux_t *mock_ccm_tgt_1 = NULL;
+static circuitmux_t *mock_ccm_tgt_2 = NULL;
+
+static circuitmux_t *mock_cgp_tgt_1 = NULL;
+static const circuitmux_policy_t *mock_cgp_val_1 = NULL;
+static circuitmux_t *mock_cgp_tgt_2 = NULL;
+static const circuitmux_policy_t *mock_cgp_val_2 = NULL;
+static int scheduler_compare_channels_mock_ctr = 0;
+static int scheduler_run_mock_ctr = 0;
+
+static void channel_flush_some_cells_mock_free_all(void);
+static void channel_flush_some_cells_mock_set(channel_t *chan,
+ ssize_t num_cells);
+
+/* Setup for mock event stuff */
+static void mock_event_free_all(void);
+static void mock_event_init(void);
+
+/* Mocks used by scheduler tests */
+static ssize_t channel_flush_some_cells_mock(channel_t *chan,
+ ssize_t num_cells);
+static int circuitmux_compare_muxes_mock(circuitmux_t *cmux_1,
+ circuitmux_t *cmux_2);
+static const circuitmux_policy_t * circuitmux_get_policy_mock(
+ circuitmux_t *cmux);
+static int scheduler_compare_channels_mock(const void *c1_v,
+ const void *c2_v);
+static void scheduler_run_noop_mock(void);
+static struct event_base * tor_libevent_get_base_mock(void);
+
+/* Scheduler test cases */
+static void test_scheduler_channel_states(void *arg);
+static void test_scheduler_compare_channels(void *arg);
+static void test_scheduler_initfree(void *arg);
+static void test_scheduler_loop(void *arg);
+static void test_scheduler_queue_heuristic(void *arg);
+
+/* Mock event init/free */
+
+/* Shamelessly stolen from compat_libevent.c */
+#define V(major, minor, patch) \
+ (((major) << 24) | ((minor) << 16) | ((patch) << 8))
+
+static void
+mock_event_free_all(void)
+{
+ tt_assert(mock_event_base != NULL);
+
+ if (mock_event_base) {
+ event_base_free(mock_event_base);
+ mock_event_base = NULL;
+ }
+
+ tt_ptr_op(mock_event_base, ==, NULL);
+
+ done:
+ return;
+}
+
+static void
+mock_event_init(void)
+{
+#ifdef HAVE_EVENT2_EVENT_H
+ struct event_config *cfg = NULL;
+#endif
+
+ tt_ptr_op(mock_event_base, ==, NULL);
+
+ /*
+ * Really cut down from tor_libevent_initialize of
+ * src/common/compat_libevent.c to kill config dependencies
+ */
+
+ if (!mock_event_base) {
+#ifdef HAVE_EVENT2_EVENT_H
+ cfg = event_config_new();
+#if LIBEVENT_VERSION_NUMBER >= V(2,0,9)
+ /* We can enable changelist support with epoll, since we don't give
+ * Libevent any dup'd fds. This lets us avoid some syscalls. */
+ event_config_set_flag(cfg, EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST);
+#endif
+ mock_event_base = event_base_new_with_config(cfg);
+ event_config_free(cfg);
+#else
+ mock_event_base = event_init();
+#endif
+ }
+
+ tt_assert(mock_event_base != NULL);
+
+ done:
+ return;
+}
+
+/* Mocks */
+
+typedef struct {
+ const channel_t *chan;
+ ssize_t cells;
+} flush_mock_channel_t;
+
+static smartlist_t *chans_for_flush_mock = NULL;
+
+static void
+channel_flush_some_cells_mock_free_all(void)
+{
+ if (chans_for_flush_mock) {
+ SMARTLIST_FOREACH_BEGIN(chans_for_flush_mock,
+ flush_mock_channel_t *,
+ flush_mock_ch) {
+ SMARTLIST_DEL_CURRENT(chans_for_flush_mock, flush_mock_ch);
+ tor_free(flush_mock_ch);
+ } SMARTLIST_FOREACH_END(flush_mock_ch);
+
+ smartlist_free(chans_for_flush_mock);
+ chans_for_flush_mock = NULL;
+ }
+}
+
+static void
+channel_flush_some_cells_mock_set(channel_t *chan, ssize_t num_cells)
+{
+ flush_mock_channel_t *flush_mock_ch = NULL;
+
+ if (!chan) return;
+ if (num_cells <= 0) return;
+
+ if (!chans_for_flush_mock) {
+ chans_for_flush_mock = smartlist_new();
+ }
+
+ SMARTLIST_FOREACH_BEGIN(chans_for_flush_mock,
+ flush_mock_channel_t *,
+ flush_mock_ch) {
+ if (flush_mock_ch != NULL && flush_mock_ch->chan != NULL) {
+ if (flush_mock_ch->chan == chan) {
+ /* Found it */
+ flush_mock_ch->cells = num_cells;
+ break;
+ }
+ } else {
+ /* That shouldn't be there... */
+ SMARTLIST_DEL_CURRENT(chans_for_flush_mock, flush_mock_ch);
+ tor_free(flush_mock_ch);
+ }
+ } SMARTLIST_FOREACH_END(flush_mock_ch);
+
+ if (!flush_mock_ch) {
+ /* The loop didn't find it */
+ flush_mock_ch = tor_malloc_zero(sizeof(*flush_mock_ch));
+ flush_mock_ch->chan = chan;
+ flush_mock_ch->cells = num_cells;
+ smartlist_add(chans_for_flush_mock, flush_mock_ch);
+ }
+}
+
+static ssize_t
+channel_flush_some_cells_mock(channel_t *chan, ssize_t num_cells)
+{
+ ssize_t flushed = 0, max;
+ char unlimited = 0;
+ flush_mock_channel_t *found = NULL;
+
+ tt_assert(chan != NULL);
+ if (chan) {
+ if (num_cells < 0) {
+ num_cells = 0;
+ unlimited = 1;
+ }
+
+ /* Check if we have it */
+ if (chans_for_flush_mock != NULL) {
+ SMARTLIST_FOREACH_BEGIN(chans_for_flush_mock,
+ flush_mock_channel_t *,
+ flush_mock_ch) {
+ if (flush_mock_ch != NULL && flush_mock_ch->chan != NULL) {
+ if (flush_mock_ch->chan == chan) {
+ /* Found it */
+ found = flush_mock_ch;
+ break;
+ }
+ } else {
+ /* That shouldn't be there... */
+ SMARTLIST_DEL_CURRENT(chans_for_flush_mock, flush_mock_ch);
+ tor_free(flush_mock_ch);
+ }
+ } SMARTLIST_FOREACH_END(flush_mock_ch);
+
+ if (found) {
+ /* We found one */
+ if (found->cells < 0) found->cells = 0;
+
+ if (unlimited) max = found->cells;
+ else max = MIN(found->cells, num_cells);
+
+ flushed += max;
+ found->cells -= max;
+
+ if (found->cells <= 0) {
+ smartlist_remove(chans_for_flush_mock, found);
+ tor_free(found);
+ }
+ }
+ }
+ }
+
+ done:
+ return flushed;
+}
+
+static int
+circuitmux_compare_muxes_mock(circuitmux_t *cmux_1,
+ circuitmux_t *cmux_2)
+{
+ int result = 0;
+
+ tt_assert(cmux_1 != NULL);
+ tt_assert(cmux_2 != NULL);
+
+ if (cmux_1 != cmux_2) {
+ if (cmux_1 == mock_ccm_tgt_1 && cmux_2 == mock_ccm_tgt_2) result = -1;
+ else if (cmux_1 == mock_ccm_tgt_2 && cmux_2 == mock_ccm_tgt_1) {
+ result = 1;
+ } else {
+ if (cmux_1 == mock_ccm_tgt_1 || cmux_1 == mock_ccm_tgt_2) result = -1;
+ else if (cmux_2 == mock_ccm_tgt_1 || cmux_2 == mock_ccm_tgt_2) {
+ result = 1;
+ } else {
+ result = circuitmux_compare_muxes__real(cmux_1, cmux_2);
+ }
+ }
+ }
+ /* else result = 0 always */
+
+ done:
+ return result;
+}
+
+static const circuitmux_policy_t *
+circuitmux_get_policy_mock(circuitmux_t *cmux)
+{
+ const circuitmux_policy_t *result = NULL;
+
+ tt_assert(cmux != NULL);
+ if (cmux) {
+ if (cmux == mock_cgp_tgt_1) result = mock_cgp_val_1;
+ else if (cmux == mock_cgp_tgt_2) result = mock_cgp_val_2;
+ else result = circuitmux_get_policy__real(cmux);
+ }
+
+ done:
+ return result;
+}
+
+static int
+scheduler_compare_channels_mock(const void *c1_v,
+ const void *c2_v)
+{
+ uintptr_t p1, p2;
+
+ p1 = (uintptr_t)(c1_v);
+ p2 = (uintptr_t)(c2_v);
+
+ ++scheduler_compare_channels_mock_ctr;
+
+ if (p1 == p2) return 0;
+ else if (p1 < p2) return 1;
+ else return -1;
+}
+
+static void
+scheduler_run_noop_mock(void)
+{
+ ++scheduler_run_mock_ctr;
+}
+
+static struct event_base *
+tor_libevent_get_base_mock(void)
+{
+ return mock_event_base;
+}
+
+/* Test cases */
+
+static void
+test_scheduler_channel_states(void *arg)
+{
+ channel_t *ch1 = NULL, *ch2 = NULL;
+ int old_count;
+
+ (void)arg;
+
+ /* Set up libevent and scheduler */
+
+ mock_event_init();
+ MOCK(tor_libevent_get_base, tor_libevent_get_base_mock);
+ scheduler_init();
+ /*
+ * Install the compare channels mock so we can test
+ * scheduler_touch_channel().
+ */
+ MOCK(scheduler_compare_channels, scheduler_compare_channels_mock);
+ /*
+ * Disable scheduler_run so we can just check the state transitions
+ * without having to make everything it might call work too.
+ */
+ MOCK(scheduler_run, scheduler_run_noop_mock);
+
+ tt_int_op(smartlist_len(channels_pending), ==, 0);
+
+ /* Set up a fake channel */
+ ch1 = new_fake_channel();
+ tt_assert(ch1);
+
+ /* Start it off in OPENING */
+ ch1->state = CHANNEL_STATE_OPENING;
+ /* We'll need a cmux */
+ ch1->cmux = circuitmux_alloc();
+ /* Try to register it */
+ channel_register(ch1);
+ tt_assert(ch1->registered);
+
+ /* It should start off in SCHED_CHAN_IDLE */
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_IDLE);
+
+ /* Now get another one */
+ ch2 = new_fake_channel();
+ tt_assert(ch2);
+ ch2->state = CHANNEL_STATE_OPENING;
+ ch2->cmux = circuitmux_alloc();
+ channel_register(ch2);
+ tt_assert(ch2->registered);
+
+ /* Send it to SCHED_CHAN_WAITING_TO_WRITE */
+ scheduler_channel_has_waiting_cells(ch1);
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_WAITING_TO_WRITE);
+
+ /* This should send it to SCHED_CHAN_PENDING */
+ scheduler_channel_wants_writes(ch1);
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 1);
+
+ /* Now send ch2 to SCHED_CHAN_WAITING_FOR_CELLS */
+ scheduler_channel_wants_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+
+ /* Drop ch2 back to idle */
+ scheduler_channel_doesnt_want_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_IDLE);
+
+ /* ...and back to SCHED_CHAN_WAITING_FOR_CELLS */
+ scheduler_channel_wants_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+
+ /* ...and this should kick ch2 into SCHED_CHAN_PENDING */
+ scheduler_channel_has_waiting_cells(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 2);
+
+ /* This should send ch2 to SCHED_CHAN_WAITING_TO_WRITE */
+ scheduler_channel_doesnt_want_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_TO_WRITE);
+ tt_int_op(smartlist_len(channels_pending), ==, 1);
+
+ /* ...and back to SCHED_CHAN_PENDING */
+ scheduler_channel_wants_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 2);
+
+ /* Now we exercise scheduler_touch_channel */
+ old_count = scheduler_compare_channels_mock_ctr;
+ scheduler_touch_channel(ch1);
+ tt_assert(scheduler_compare_channels_mock_ctr > old_count);
+
+ /* Close */
+ channel_mark_for_close(ch1);
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_CLOSING);
+ channel_mark_for_close(ch2);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_CLOSING);
+ channel_closed(ch1);
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_CLOSED);
+ ch1 = NULL;
+ channel_closed(ch2);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_CLOSED);
+ ch2 = NULL;
+
+ /* Shut things down */
+
+ channel_free_all();
+ scheduler_free_all();
+ mock_event_free_all();
+
+ done:
+ tor_free(ch1);
+ tor_free(ch2);
+
+ UNMOCK(scheduler_compare_channels);
+ UNMOCK(scheduler_run);
+ UNMOCK(tor_libevent_get_base);
+
+ return;
+}
+
+static void
+test_scheduler_compare_channels(void *arg)
+{
+ /* We don't actually need whole fake channels... */
+ channel_t c1, c2;
+ /* ...and some dummy circuitmuxes too */
+ circuitmux_t *cm1 = NULL, *cm2 = NULL;
+ int result;
+
+ (void)arg;
+
+ /* We can't actually see sizeof(circuitmux_t) from here */
+ cm1 = tor_malloc_zero(sizeof(void *));
+ cm2 = tor_malloc_zero(sizeof(void *));
+
+ c1.cmux = cm1;
+ c2.cmux = cm2;
+
+ /* Configure circuitmux_get_policy() mock */
+ mock_cgp_tgt_1 = cm1;
+ /*
+ * This is to test the different-policies case, which uses the policy
+ * cast to an intptr_t as an arbitrary but definite thing to compare.
+ */
+ mock_cgp_val_1 = (const circuitmux_policy_t *)(1);
+ mock_cgp_tgt_2 = cm2;
+ mock_cgp_val_2 = (const circuitmux_policy_t *)(2);
+
+ MOCK(circuitmux_get_policy, circuitmux_get_policy_mock);
+
+ /* Now set up circuitmux_compare_muxes() mock using cm1/cm2 */
+ mock_ccm_tgt_1 = cm1;
+ mock_ccm_tgt_2 = cm2;
+ MOCK(circuitmux_compare_muxes, circuitmux_compare_muxes_mock);
+
+ /* Equal-channel case */
+ result = scheduler_compare_channels(&c1, &c1);
+ tt_int_op(result, ==, 0);
+
+ /* Distinct channels, distinct policies */
+ result = scheduler_compare_channels(&c1, &c2);
+ tt_int_op(result, ==, -1);
+ result = scheduler_compare_channels(&c2, &c1);
+ tt_int_op(result, ==, 1);
+
+ /* Distinct channels, same policy */
+ mock_cgp_val_2 = mock_cgp_val_1;
+ result = scheduler_compare_channels(&c1, &c2);
+ tt_int_op(result, ==, -1);
+ result = scheduler_compare_channels(&c2, &c1);
+ tt_int_op(result, ==, 1);
+
+ done:
+
+ UNMOCK(circuitmux_compare_muxes);
+ mock_ccm_tgt_1 = NULL;
+ mock_ccm_tgt_2 = NULL;
+
+ UNMOCK(circuitmux_get_policy);
+ mock_cgp_tgt_1 = NULL;
+ mock_cgp_val_1 = NULL;
+ mock_cgp_tgt_2 = NULL;
+ mock_cgp_val_2 = NULL;
+
+ tor_free(cm1);
+ tor_free(cm2);
+
+ return;
+}
+
+static void
+test_scheduler_initfree(void *arg)
+{
+ (void)arg;
+
+ tt_ptr_op(channels_pending, ==, NULL);
+ tt_ptr_op(run_sched_ev, ==, NULL);
+
+ mock_event_init();
+ MOCK(tor_libevent_get_base, tor_libevent_get_base_mock);
+
+ scheduler_init();
+
+ tt_assert(channels_pending != NULL);
+ tt_assert(run_sched_ev != NULL);
+
+ scheduler_free_all();
+
+ UNMOCK(tor_libevent_get_base);
+ mock_event_free_all();
+
+ tt_ptr_op(channels_pending, ==, NULL);
+ tt_ptr_op(run_sched_ev, ==, NULL);
+
+ done:
+ return;
+}
+
+static void
+test_scheduler_loop(void *arg)
+{
+ channel_t *ch1 = NULL, *ch2 = NULL;
+
+ (void)arg;
+
+ /* Set up libevent and scheduler */
+
+ mock_event_init();
+ MOCK(tor_libevent_get_base, tor_libevent_get_base_mock);
+ scheduler_init();
+ /*
+ * Install the compare channels mock so we can test
+ * scheduler_touch_channel().
+ */
+ MOCK(scheduler_compare_channels, scheduler_compare_channels_mock);
+ /*
+ * Disable scheduler_run so we can just check the state transitions
+ * without having to make everything it might call work too.
+ */
+ MOCK(scheduler_run, scheduler_run_noop_mock);
+
+ tt_int_op(smartlist_len(channels_pending), ==, 0);
+
+ /* Set up a fake channel */
+ ch1 = new_fake_channel();
+ tt_assert(ch1);
+
+ /* Start it off in OPENING */
+ ch1->state = CHANNEL_STATE_OPENING;
+ /* We'll need a cmux */
+ ch1->cmux = circuitmux_alloc();
+ /* Try to register it */
+ channel_register(ch1);
+ tt_assert(ch1->registered);
+ /* Finish opening it */
+ channel_change_state(ch1, CHANNEL_STATE_OPEN);
+
+ /* It should start off in SCHED_CHAN_IDLE */
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_IDLE);
+
+ /* Now get another one */
+ ch2 = new_fake_channel();
+ tt_assert(ch2);
+ ch2->state = CHANNEL_STATE_OPENING;
+ ch2->cmux = circuitmux_alloc();
+ channel_register(ch2);
+ tt_assert(ch2->registered);
+ /*
+ * Don't open ch2; then channel_num_cells_writeable() will return
+ * zero and we'll get coverage of that exception case in scheduler_run()
+ */
+
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_OPEN);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_OPENING);
+
+ /* Send it to SCHED_CHAN_WAITING_TO_WRITE */
+ scheduler_channel_has_waiting_cells(ch1);
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_WAITING_TO_WRITE);
+
+ /* This should send it to SCHED_CHAN_PENDING */
+ scheduler_channel_wants_writes(ch1);
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 1);
+
+ /* Now send ch2 to SCHED_CHAN_WAITING_FOR_CELLS */
+ scheduler_channel_wants_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+
+ /* Drop ch2 back to idle */
+ scheduler_channel_doesnt_want_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_IDLE);
+
+ /* ...and back to SCHED_CHAN_WAITING_FOR_CELLS */
+ scheduler_channel_wants_writes(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+
+ /* ...and this should kick ch2 into SCHED_CHAN_PENDING */
+ scheduler_channel_has_waiting_cells(ch2);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 2);
+
+ /*
+ * Now we've got two pending channels and need to fire off
+ * scheduler_run(); first, unmock it.
+ */
+
+ UNMOCK(scheduler_run);
+
+ scheduler_run();
+
+ /* Now re-mock it */
+ MOCK(scheduler_run, scheduler_run_noop_mock);
+
+ /*
+ * Assert that they're still in the states we left and aren't still
+ * pending
+ */
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_OPEN);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_OPENING);
+ tt_assert(ch1->scheduler_state != SCHED_CHAN_PENDING);
+ tt_assert(ch2->scheduler_state != SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 0);
+
+ /* Now, finish opening ch2, and get both back to pending */
+ channel_change_state(ch2, CHANNEL_STATE_OPEN);
+ scheduler_channel_wants_writes(ch1);
+ scheduler_channel_wants_writes(ch2);
+ scheduler_channel_has_waiting_cells(ch1);
+ scheduler_channel_has_waiting_cells(ch2);
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_OPEN);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_OPEN);
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_PENDING);
+ tt_int_op(smartlist_len(channels_pending), ==, 2);
+
+ /* Now, set up the channel_flush_some_cells() mock */
+ MOCK(channel_flush_some_cells, channel_flush_some_cells_mock);
+ /*
+ * 16 cells on ch1 means it'll completely drain into the 32 cells
+ * fakechan's num_cells_writeable() returns.
+ */
+ channel_flush_some_cells_mock_set(ch1, 16);
+ /*
+ * This one should get sent back to pending, since num_cells_writeable()
+ * will still return non-zero.
+ */
+ channel_flush_some_cells_mock_set(ch2, 48);
+
+ /*
+ * And re-run the scheduler_run() loop with non-zero returns from
+ * channel_flush_some_cells() this time.
+ */
+ UNMOCK(scheduler_run);
+
+ scheduler_run();
+
+ /* Now re-mock it */
+ MOCK(scheduler_run, scheduler_run_noop_mock);
+
+ /*
+ * ch1 should have gone to SCHED_CHAN_WAITING_FOR_CELLS, with 16 flushed
+ * and 32 writeable.
+ */
+ tt_int_op(ch1->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+ /*
+ * ...ch2 should also have gone to SCHED_CHAN_WAITING_FOR_CELLS, with
+ * channel_more_to_flush() returning false and channel_num_cells_writeable()
+ * > 0/
+ */
+ tt_int_op(ch2->scheduler_state, ==, SCHED_CHAN_WAITING_FOR_CELLS);
+
+ /* Close */
+ channel_mark_for_close(ch1);
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_CLOSING);
+ channel_mark_for_close(ch2);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_CLOSING);
+ channel_closed(ch1);
+ tt_int_op(ch1->state, ==, CHANNEL_STATE_CLOSED);
+ ch1 = NULL;
+ channel_closed(ch2);
+ tt_int_op(ch2->state, ==, CHANNEL_STATE_CLOSED);
+ ch2 = NULL;
+
+ /* Shut things down */
+ channel_flush_some_cells_mock_free_all();
+ channel_free_all();
+ scheduler_free_all();
+ mock_event_free_all();
+
+ done:
+ tor_free(ch1);
+ tor_free(ch2);
+
+ UNMOCK(channel_flush_some_cells);
+ UNMOCK(scheduler_compare_channels);
+ UNMOCK(scheduler_run);
+ UNMOCK(tor_libevent_get_base);
+}
+
+static void
+test_scheduler_queue_heuristic(void *arg)
+{
+ time_t now = approx_time();
+ uint64_t qh;
+
+ (void)arg;
+
+ queue_heuristic = 0;
+ queue_heuristic_timestamp = 0;
+
+ /* Not yet inited case */
+ scheduler_update_queue_heuristic(now - 180);
+ tt_u64_op(queue_heuristic, ==, 0);
+ tt_int_op(queue_heuristic_timestamp, ==, now - 180);
+
+ queue_heuristic = 1000000000L;
+ queue_heuristic_timestamp = now - 120;
+
+ scheduler_update_queue_heuristic(now - 119);
+ tt_u64_op(queue_heuristic, ==, 500000000L);
+ tt_int_op(queue_heuristic_timestamp, ==, now - 119);
+
+ scheduler_update_queue_heuristic(now - 116);
+ tt_u64_op(queue_heuristic, ==, 62500000L);
+ tt_int_op(queue_heuristic_timestamp, ==, now - 116);
+
+ qh = scheduler_get_queue_heuristic();
+ tt_u64_op(qh, ==, 0);
+
+ done:
+ return;
+}
+
+struct testcase_t scheduler_tests[] = {
+ { "channel_states", test_scheduler_channel_states, TT_FORK, NULL, NULL },
+ { "compare_channels", test_scheduler_compare_channels,
+ TT_FORK, NULL, NULL },
+ { "initfree", test_scheduler_initfree, TT_FORK, NULL, NULL },
+ { "loop", test_scheduler_loop, TT_FORK, NULL, NULL },
+ { "queue_heuristic", test_scheduler_queue_heuristic,
+ TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
diff --git a/src/test/test_socks.c b/src/test/test_socks.c
index 5cc09e2006..fbb8b25980 100644
--- a/src/test/test_socks.c
+++ b/src/test/test_socks.c
@@ -63,8 +63,8 @@ test_socks_4_unsupported_commands(void *ptr)
ADD_DATA(buf, "\x04\x02\x11\x11\x02\x02\x02\x02\x00");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == -1);
- tt_int_op(4,==, socks->socks_version);
- tt_int_op(0,==, socks->replylen); /* XXX: shouldn't tor reply? */
+ tt_int_op(4,OP_EQ, socks->socks_version);
+ tt_int_op(0,OP_EQ, socks->replylen); /* XXX: shouldn't tor reply? */
done:
;
@@ -76,49 +76,49 @@ test_socks_4_supported_commands(void *ptr)
{
SOCKS_TEST_INIT();
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
/* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4370 */
ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x03\x00");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(4,==, socks->socks_version);
- tt_int_op(0,==, socks->replylen); /* XXX: shouldn't tor reply? */
- tt_int_op(SOCKS_COMMAND_CONNECT,==, socks->command);
- tt_str_op("2.2.2.3",==, socks->address);
- tt_int_op(4370,==, socks->port);
+ tt_int_op(4,OP_EQ, socks->socks_version);
+ tt_int_op(0,OP_EQ, socks->replylen); /* XXX: shouldn't tor reply? */
+ tt_int_op(SOCKS_COMMAND_CONNECT,OP_EQ, socks->command);
+ tt_str_op("2.2.2.3",OP_EQ, socks->address);
+ tt_int_op(4370,OP_EQ, socks->port);
tt_assert(socks->got_auth == 0);
tt_assert(! socks->username);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
socks_request_clear(socks);
/* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4369 with userid*/
ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x04me\x00");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(4,==, socks->socks_version);
- tt_int_op(0,==, socks->replylen); /* XXX: shouldn't tor reply? */
- tt_int_op(SOCKS_COMMAND_CONNECT,==, socks->command);
- tt_str_op("2.2.2.4",==, socks->address);
- tt_int_op(4370,==, socks->port);
+ tt_int_op(4,OP_EQ, socks->socks_version);
+ tt_int_op(0,OP_EQ, socks->replylen); /* XXX: shouldn't tor reply? */
+ tt_int_op(SOCKS_COMMAND_CONNECT,OP_EQ, socks->command);
+ tt_str_op("2.2.2.4",OP_EQ, socks->address);
+ tt_int_op(4370,OP_EQ, socks->port);
tt_assert(socks->got_auth == 1);
tt_assert(socks->username);
- tt_int_op(2,==, socks->usernamelen);
- tt_mem_op("me",==, socks->username, 2);
+ tt_int_op(2,OP_EQ, socks->usernamelen);
+ tt_mem_op("me",OP_EQ, socks->username, 2);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
socks_request_clear(socks);
/* SOCKS 4a Send RESOLVE [F0] request for torproject.org */
ADD_DATA(buf, "\x04\xF0\x01\x01\x00\x00\x00\x02me\x00torproject.org\x00");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(4,==, socks->socks_version);
- tt_int_op(0,==, socks->replylen); /* XXX: shouldn't tor reply? */
- tt_str_op("torproject.org",==, socks->address);
+ tt_int_op(4,OP_EQ, socks->socks_version);
+ tt_int_op(0,OP_EQ, socks->replylen); /* XXX: shouldn't tor reply? */
+ tt_str_op("torproject.org",OP_EQ, socks->address);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
done:
;
@@ -134,21 +134,21 @@ test_socks_5_unsupported_commands(void *ptr)
ADD_DATA(buf, "\x05\x02\x00\x01");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, 0);
- tt_int_op(0,==, buf_datalen(buf));
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ get_options()->SafeSocks),OP_EQ, 0);
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
ADD_DATA(buf, "\x05\x02\x00\x01\x02\x02\x02\x01\x01\x01");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, -1);
+ get_options()->SafeSocks),OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_COMMAND_NOT_SUPPORTED,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_COMMAND_NOT_SUPPORTED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
buf_clear(buf);
socks_request_clear(socks);
@@ -156,20 +156,20 @@ test_socks_5_unsupported_commands(void *ptr)
/* SOCKS 5 Send unsupported UDP_ASSOCIATE [03] command */
ADD_DATA(buf, "\x05\x02\x00\x01");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, 0);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ get_options()->SafeSocks),OP_EQ, 0);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
ADD_DATA(buf, "\x05\x03\x00\x01\x02\x02\x02\x01\x01\x01");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, -1);
+ get_options()->SafeSocks),OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_COMMAND_NOT_SUPPORTED,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_COMMAND_NOT_SUPPORTED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
done:
;
@@ -184,35 +184,35 @@ test_socks_5_supported_commands(void *ptr)
/* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */
ADD_DATA(buf, "\x05\x01\x00");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, 0);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ get_options()->SafeSocks),OP_EQ, 0);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
ADD_DATA(buf, "\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, 1);
- tt_str_op("2.2.2.2",==, socks->address);
- tt_int_op(4369,==, socks->port);
+ get_options()->SafeSocks),OP_EQ, 1);
+ tt_str_op("2.2.2.2",OP_EQ, socks->address);
+ tt_int_op(4369,OP_EQ, socks->port);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
socks_request_clear(socks);
/* SOCKS 5 Send CONNECT [01] to FQDN torproject.org:4369 */
ADD_DATA(buf, "\x05\x01\x00");
ADD_DATA(buf, "\x05\x01\x00\x03\x0Etorproject.org\x11\x11");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, 1);
+ get_options()->SafeSocks),OP_EQ, 1);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
- tt_str_op("torproject.org",==, socks->address);
- tt_int_op(4369,==, socks->port);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
+ tt_str_op("torproject.org",OP_EQ, socks->address);
+ tt_int_op(4369,OP_EQ, socks->port);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
socks_request_clear(socks);
/* SOCKS 5 Send RESOLVE [F0] request for torproject.org:4369 */
@@ -220,13 +220,49 @@ test_socks_5_supported_commands(void *ptr)
ADD_DATA(buf, "\x05\xF0\x00\x03\x0Etorproject.org\x01\x02");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
- tt_str_op("torproject.org",==, socks->address);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
+ tt_str_op("torproject.org",OP_EQ, socks->address);
+
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
+ socks_request_clear(socks);
+
+ /* SOCKS 5 Should reject RESOLVE [F0] request for IPv4 address
+ * string if SafeSocks is enabled. */
+
+ ADD_DATA(buf, "\x05\x01\x00");
+ ADD_DATA(buf, "\x05\xF0\x00\x03\x07");
+ ADD_DATA(buf, "8.8.8.8");
+ ADD_DATA(buf, "\x01\x02");
+ tt_assert(fetch_from_buf_socks(buf,socks,get_options()->TestSocks,1)
+ == -1);
+
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_NOT_ALLOWED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
+
+ socks_request_clear(socks);
+
+ /* SOCKS 5 should reject RESOLVE [F0] reject for IPv6 address
+ * string if SafeSocks is enabled. */
+
+ ADD_DATA(buf, "\x05\x01\x00");
+ ADD_DATA(buf, "\x05\xF0\x00\x03\x27");
+ ADD_DATA(buf, "2001:0db8:85a3:0000:0000:8a2e:0370:7334");
+ ADD_DATA(buf, "\x01\x02");
+ tt_assert(fetch_from_buf_socks(buf,socks,get_options()->TestSocks,1)
+ == -1);
+
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_NOT_ALLOWED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
- tt_int_op(0,==, buf_datalen(buf));
socks_request_clear(socks);
/* SOCKS 5 Send RESOLVE_PTR [F1] for IP address 2.2.2.5 */
@@ -234,13 +270,13 @@ test_socks_5_supported_commands(void *ptr)
ADD_DATA(buf, "\x05\xF1\x00\x01\x02\x02\x02\x05\x01\x03");
tt_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
- tt_str_op("2.2.2.5",==, socks->address);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
+ tt_str_op("2.2.2.5",OP_EQ, socks->address);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
done:
;
@@ -257,27 +293,27 @@ test_socks_5_no_authenticate(void *ptr)
tt_assert(!fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks));
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(SOCKS_NO_AUTH,==, socks->reply[1]);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(SOCKS_NO_AUTH,OP_EQ, socks->reply[1]);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
/*SOCKS 5 Send username/password anyway - pretend to be broken */
ADD_DATA(buf,"\x01\x02\x01\x01\x02\x01\x01");
tt_assert(!fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks));
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(1,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(1,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
- tt_int_op(2,==, socks->usernamelen);
- tt_int_op(2,==, socks->passwordlen);
+ tt_int_op(2,OP_EQ, socks->usernamelen);
+ tt_int_op(2,OP_EQ, socks->passwordlen);
- tt_mem_op("\x01\x01",==, socks->username, 2);
- tt_mem_op("\x01\x01",==, socks->password, 2);
+ tt_mem_op("\x01\x01",OP_EQ, socks->username, 2);
+ tt_mem_op("\x01\x01",OP_EQ, socks->password, 2);
done:
;
@@ -295,28 +331,28 @@ test_socks_5_authenticate(void *ptr)
tt_assert(!fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks));
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(SOCKS_USER_PASS,==, socks->reply[1]);
- tt_int_op(5,==, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(SOCKS_USER_PASS,OP_EQ, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
/* SOCKS 5 Send username/password */
ADD_DATA(buf, "\x01\x02me\x08mypasswd");
tt_assert(!fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks));
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(1,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(1,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
- tt_int_op(2,==, socks->usernamelen);
- tt_int_op(8,==, socks->passwordlen);
+ tt_int_op(2,OP_EQ, socks->usernamelen);
+ tt_int_op(8,OP_EQ, socks->passwordlen);
- tt_mem_op("me",==, socks->username, 2);
- tt_mem_op("mypasswd",==, socks->password, 8);
+ tt_mem_op("me",OP_EQ, socks->username, 2);
+ tt_mem_op("mypasswd",OP_EQ, socks->password, 8);
done:
;
@@ -334,12 +370,12 @@ test_socks_5_authenticate_with_data(void *ptr)
tt_assert(!fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks));
- tt_int_op(2,==, socks->replylen);
- tt_int_op(5,==, socks->reply[0]);
- tt_int_op(SOCKS_USER_PASS,==, socks->reply[1]);
- tt_int_op(5,==, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(SOCKS_USER_PASS,OP_EQ, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
- tt_int_op(0,==, buf_datalen(buf));
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
/* SOCKS 5 Send username/password */
/* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */
@@ -347,18 +383,18 @@ test_socks_5_authenticate_with_data(void *ptr)
tt_assert(fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks) == 1);
- tt_int_op(5,==, socks->socks_version);
- tt_int_op(2,==, socks->replylen);
- tt_int_op(1,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(1,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
- tt_str_op("2.2.2.2",==, socks->address);
- tt_int_op(4369,==, socks->port);
+ tt_str_op("2.2.2.2",OP_EQ, socks->address);
+ tt_int_op(4369,OP_EQ, socks->port);
- tt_int_op(2,==, socks->usernamelen);
- tt_int_op(3,==, socks->passwordlen);
- tt_mem_op("me",==, socks->username, 2);
- tt_mem_op("you",==, socks->password, 3);
+ tt_int_op(2,OP_EQ, socks->usernamelen);
+ tt_int_op(3,OP_EQ, socks->passwordlen);
+ tt_mem_op("me",OP_EQ, socks->username, 2);
+ tt_mem_op("you",OP_EQ, socks->password, 3);
done:
;
@@ -375,10 +411,10 @@ test_socks_5_auth_before_negotiation(void *ptr)
tt_assert(fetch_from_buf_socks(buf, socks,
get_options()->TestSocks,
get_options()->SafeSocks) == -1);
- tt_int_op(0,==, socks->socks_version);
- tt_int_op(0,==, socks->replylen);
- tt_int_op(0,==, socks->reply[0]);
- tt_int_op(0,==, socks->reply[1]);
+ tt_int_op(0,OP_EQ, socks->socks_version);
+ tt_int_op(0,OP_EQ, socks->replylen);
+ tt_int_op(0,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
done:
;
@@ -396,14 +432,14 @@ test_socks_5_malformed_commands(void *ptr)
*/
ADD_DATA(buf, "\x05\x01\x00");
ADD_DATA(buf, "\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11");
- tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, 1),==,
- -1);
+ tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, 1),
+ OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_NOT_ALLOWED,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_NOT_ALLOWED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
buf_clear(buf);
socks_request_clear(socks);
@@ -412,13 +448,13 @@ test_socks_5_malformed_commands(void *ptr)
ADD_DATA(buf, "\x05\x01\x00");
ADD_DATA(buf, "\x05\xF1\x00\x03\x0Etorproject.org\x11\x11");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, -1);
+ get_options()->SafeSocks),OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
buf_clear(buf);
socks_request_clear(socks);
@@ -429,13 +465,13 @@ test_socks_5_malformed_commands(void *ptr)
ADD_DATA(buf, "\x05\x01\x00");
ADD_DATA(buf, "\x05\x01\x00\x03\x09\"\"\"\"\".com\x11\x11");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, -1);
+ get_options()->SafeSocks),OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_GENERAL_ERROR,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_GENERAL_ERROR,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
buf_clear(buf);
socks_request_clear(socks);
@@ -444,13 +480,13 @@ test_socks_5_malformed_commands(void *ptr)
ADD_DATA(buf, "\x05\x01\x00");
ADD_DATA(buf, "\x05\x01\x00\x23\x02\x02\x02\x02\x11\x11");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
- get_options()->SafeSocks),==, -1);
+ get_options()->SafeSocks),OP_EQ, -1);
- tt_int_op(5,==,socks->socks_version);
- tt_int_op(10,==,socks->replylen);
- tt_int_op(5,==,socks->reply[0]);
- tt_int_op(SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED,==,socks->reply[1]);
- tt_int_op(1,==,socks->reply[3]);
+ tt_int_op(5,OP_EQ,socks->socks_version);
+ tt_int_op(10,OP_EQ,socks->replylen);
+ tt_int_op(5,OP_EQ,socks->reply[0]);
+ tt_int_op(SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED,OP_EQ,socks->reply[1]);
+ tt_int_op(1,OP_EQ,socks->reply[3]);
done:
;
diff --git a/src/test/test_status.c b/src/test/test_status.c
index 8bc0152ffb..aa71aa6a9b 100644
--- a/src/test/test_status.c
+++ b/src/test/test_status.c
@@ -86,62 +86,62 @@ NS(test_main)(void *arg)
expected = "0:00 hours";
actual = secs_to_uptime(0);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "0:00 hours";
actual = secs_to_uptime(1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "0:01 hours";
actual = secs_to_uptime(60);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "0:59 hours";
actual = secs_to_uptime(60 * 59);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1:00 hours";
actual = secs_to_uptime(60 * 60);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "23:59 hours";
actual = secs_to_uptime(60 * 60 * 23 + 60 * 59);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1 day 0:00 hours";
actual = secs_to_uptime(60 * 60 * 23 + 60 * 60);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1 day 0:00 hours";
actual = secs_to_uptime(86400 + 1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1 day 0:01 hours";
actual = secs_to_uptime(86400 + 60);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "10 days 0:00 hours";
actual = secs_to_uptime(86400 * 10);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "10 days 0:00 hours";
actual = secs_to_uptime(864000 + 1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "10 days 0:01 hours";
actual = secs_to_uptime(864000 + 60);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
done:
@@ -167,62 +167,62 @@ NS(test_main)(void *arg)
expected = "0 kB";
actual = bytes_to_usage(0);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "0 kB";
actual = bytes_to_usage(1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1 kB";
actual = bytes_to_usage(1024);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1023 kB";
actual = bytes_to_usage((1 << 20) - 1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.00 MB";
actual = bytes_to_usage((1 << 20));
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.00 MB";
actual = bytes_to_usage((1 << 20) + 5242);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.01 MB";
actual = bytes_to_usage((1 << 20) + 5243);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1024.00 MB";
actual = bytes_to_usage((1 << 30) - 1);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.00 GB";
actual = bytes_to_usage((1 << 30));
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.00 GB";
actual = bytes_to_usage((1 << 30) + 5368709);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "1.01 GB";
actual = bytes_to_usage((1 << 30) + 5368710);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
expected = "10.00 GB";
actual = bytes_to_usage((U64_LITERAL(1) << 30) * 10L);
- tt_str_op(actual, ==, expected);
+ tt_str_op(actual, OP_EQ, expected);
tor_free(actual);
done:
@@ -259,7 +259,7 @@ NS(test_main)(void *arg)
expected = -1;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
+ tt_int_op(actual, OP_EQ, expected);
done:
NS_UNMOCK(tls_get_write_overhead_ratio);
@@ -347,8 +347,8 @@ NS(test_main)(void *arg)
expected = 0;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
- tt_int_op(CALLED(logv), ==, 3);
+ tt_int_op(actual, OP_EQ, expected);
+ tt_int_op(CALLED(logv), OP_EQ, 3);
done:
NS_UNMOCK(tls_get_write_overhead_ratio);
@@ -411,39 +411,39 @@ NS(logv)(int severity, log_domain_mask_t domain,
switch (CALLED(logv))
{
case 0:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: It seems like we are not in the cached consensus.");
break;
case 1:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Tor's uptime is %s, with %d circuits open. "
"I've sent %s and received %s.%s");
- tt_str_op(va_arg(ap, char *), ==, "0:00 hours"); /* uptime */
- tt_int_op(va_arg(ap, int), ==, 0); /* count_circuits() */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_rcvd */
- tt_str_op(va_arg(ap, char *), ==, ""); /* hibernating */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:00 hours"); /* uptime */
+ tt_int_op(va_arg(ap, int), OP_EQ, 0); /* count_circuits() */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, ""); /* hibernating */
break;
case 2:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(
- strstr(funcname, "rep_hist_log_circuit_handshake_stats"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "rep_hist_log_circuit_handshake_stats"),
+ OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Circuit handshake stats since last time: %d/%d TAP, %d/%d NTor.");
- tt_int_op(va_arg(ap, int), ==, 1); /* handshakes assigned (TAP) */
- tt_int_op(va_arg(ap, int), ==, 1); /* handshakes requested (TAP) */
- tt_int_op(va_arg(ap, int), ==, 1); /* handshakes assigned (NTOR) */
- tt_int_op(va_arg(ap, int), ==, 1); /* handshakes requested (NTOR) */
+ tt_int_op(va_arg(ap, int), OP_EQ, 1); /* handshakes assigned (TAP) */
+ tt_int_op(va_arg(ap, int), OP_EQ, 1); /* handshakes requested (TAP) */
+ tt_int_op(va_arg(ap, int), OP_EQ, 1); /* handshakes assigned (NTOR) */
+ tt_int_op(va_arg(ap, int), OP_EQ, 1); /* handshakes requested (NTOR) */
break;
default:
tt_abort_msg("unexpected call to logv()"); // TODO: prettyprint args
@@ -502,7 +502,7 @@ NS(test_main)(void *arg)
expected = 0;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
+ tt_int_op(actual, OP_EQ, expected);
done:
NS_UNMOCK(tls_get_write_overhead_ratio);
@@ -564,18 +564,18 @@ static void
NS(logv)(int severity, log_domain_mask_t domain, const char *funcname,
const char *suffix, const char *format, va_list ap)
{
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Tor's uptime is %s, with %d circuits open. "
"I've sent %s and received %s.%s");
- tt_str_op(va_arg(ap, char *), ==, "0:00 hours"); /* uptime */
- tt_int_op(va_arg(ap, int), ==, 0); /* count_circuits() */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_rcvd */
- tt_str_op(va_arg(ap, char *), ==, " We are currently hibernating.");
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:00 hours"); /* uptime */
+ tt_int_op(va_arg(ap, int), OP_EQ, 0); /* count_circuits() */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, " We are currently hibernating.");
done:
;
@@ -638,8 +638,8 @@ NS(test_main)(void *arg)
expected = 0;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
- tt_int_op(CALLED(logv), ==, 2);
+ tt_int_op(actual, OP_EQ, expected);
+ tt_int_op(CALLED(logv), OP_EQ, 2);
done:
NS_UNMOCK(tls_get_write_overhead_ratio);
@@ -711,34 +711,35 @@ NS(logv)(int severity, log_domain_mask_t domain,
switch (CALLED(logv))
{
case 0:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Tor's uptime is %s, with %d circuits open. "
"I've sent %s and received %s.%s");
- tt_str_op(va_arg(ap, char *), ==, "0:00 hours"); /* uptime */
- tt_int_op(va_arg(ap, int), ==, 0); /* count_circuits() */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_rcvd */
- tt_str_op(va_arg(ap, char *), ==, ""); /* hibernating */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:00 hours"); /* uptime */
+ tt_int_op(va_arg(ap, int), OP_EQ, 0); /* count_circuits() */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, ""); /* hibernating */
break;
case 1:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_accounting"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_accounting"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Accounting enabled. Sent: %s / %s, Received: %s / %s. "
"The current accounting interval ends on %s, in %s.");
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* acc_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* acc_max */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* acc_rcvd */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* acc_max */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* acc_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* acc_max */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* acc_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* acc_max */
/* format_local_iso_time uses local tz, just check mins and secs. */
- tt_ptr_op(strstr(va_arg(ap, char *), ":01:00"), !=, NULL); /* end_buf */
- tt_str_op(va_arg(ap, char *), ==, "0:01 hours"); /* remaining */
+ tt_ptr_op(strstr(va_arg(ap, char *), ":01:00"),
+ OP_NE, NULL); /* end_buf */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:01 hours"); /* remaining */
break;
default:
tt_abort_msg("unexpected call to logv()"); // TODO: prettyprint args
@@ -824,8 +825,8 @@ NS(test_main)(void *arg)
expected = 0;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
- tt_int_op(CALLED(logv), ==, 2);
+ tt_int_op(actual, OP_EQ, expected);
+ tt_int_op(CALLED(logv), OP_EQ, 2);
done:
stats_n_data_bytes_packaged = 0;
@@ -893,27 +894,27 @@ NS(logv)(int severity, log_domain_mask_t domain, const char *funcname,
switch (CALLED(logv))
{
case 0:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Tor's uptime is %s, with %d circuits open. "
"I've sent %s and received %s.%s");
- tt_str_op(va_arg(ap, char *), ==, "0:00 hours"); /* uptime */
- tt_int_op(va_arg(ap, int), ==, 0); /* count_circuits() */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_rcvd */
- tt_str_op(va_arg(ap, char *), ==, ""); /* hibernating */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:00 hours"); /* uptime */
+ tt_int_op(va_arg(ap, int), OP_EQ, 0); /* count_circuits() */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, ""); /* hibernating */
break;
case 1:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Average packaged cell fullness: %2.3f%%");
- tt_int_op(fabs(va_arg(ap, double) - 100.0) <= DBL_EPSILON, ==, 1);
+ tt_int_op(fabs(va_arg(ap, double) - 100.0) <= DBL_EPSILON, OP_EQ, 1);
break;
default:
tt_abort_msg("unexpected call to logv()"); // TODO: prettyprint args
@@ -982,8 +983,8 @@ NS(test_main)(void *arg)
expected = 0;
actual = log_heartbeat(0);
- tt_int_op(actual, ==, expected);
- tt_int_op(CALLED(logv), ==, 2);
+ tt_int_op(actual, OP_EQ, expected);
+ tt_int_op(CALLED(logv), OP_EQ, 2);
done:
NS_UNMOCK(tls_get_write_overhead_ratio);
@@ -1049,26 +1050,26 @@ NS(logv)(int severity, log_domain_mask_t domain,
switch (CALLED(logv))
{
case 0:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==,
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ,
"Heartbeat: Tor's uptime is %s, with %d circuits open. "
"I've sent %s and received %s.%s");
- tt_str_op(va_arg(ap, char *), ==, "0:00 hours"); /* uptime */
- tt_int_op(va_arg(ap, int), ==, 0); /* count_circuits() */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_sent */
- tt_str_op(va_arg(ap, char *), ==, "0 kB"); /* bw_rcvd */
- tt_str_op(va_arg(ap, char *), ==, ""); /* hibernating */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0:00 hours"); /* uptime */
+ tt_int_op(va_arg(ap, int), OP_EQ, 0); /* count_circuits() */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_sent */
+ tt_str_op(va_arg(ap, char *), OP_EQ, "0 kB"); /* bw_rcvd */
+ tt_str_op(va_arg(ap, char *), OP_EQ, ""); /* hibernating */
break;
case 1:
- tt_int_op(severity, ==, LOG_NOTICE);
- tt_int_op(domain, ==, LD_HEARTBEAT);
- tt_ptr_op(strstr(funcname, "log_heartbeat"), !=, NULL);
- tt_ptr_op(suffix, ==, NULL);
- tt_str_op(format, ==, "TLS write overhead: %.f%%");
- tt_int_op(fabs(va_arg(ap, double) - 100.0) <= DBL_EPSILON, ==, 1);
+ tt_int_op(severity, OP_EQ, LOG_NOTICE);
+ tt_int_op(domain, OP_EQ, LD_HEARTBEAT);
+ tt_ptr_op(strstr(funcname, "log_heartbeat"), OP_NE, NULL);
+ tt_ptr_op(suffix, OP_EQ, NULL);
+ tt_str_op(format, OP_EQ, "TLS write overhead: %.f%%");
+ tt_int_op(fabs(va_arg(ap, double) - 100.0) <= DBL_EPSILON, OP_EQ, 1);
break;
default:
tt_abort_msg("unexpected call to logv()"); // TODO: prettyprint args
diff --git a/src/test/test_util.c b/src/test/test_util.c
index a37d7a4aa4..b952bb2596 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -53,20 +53,20 @@ test_util_read_until_eof_impl(const char *fname, size_t file_len,
crypto_rand(test_str, file_len);
r = write_bytes_to_file(fifo_name, test_str, file_len, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
fd = open(fifo_name, O_RDONLY|O_BINARY);
- tt_int_op(fd, >=, 0);
+ tt_int_op(fd, OP_GE, 0);
str = read_file_to_str_until_eof(fd, read_limit, &sz);
tt_assert(str != NULL);
if (read_limit < file_len)
- tt_int_op(sz, ==, read_limit);
+ tt_int_op(sz, OP_EQ, read_limit);
else
- tt_int_op(sz, ==, file_len);
+ tt_int_op(sz, OP_EQ, file_len);
- tt_mem_op(test_str, ==, str, sz);
- tt_int_op(str[sz], ==, '\0');
+ tt_mem_op(test_str, OP_EQ, str, sz);
+ tt_int_op(str[sz], OP_EQ, '\0');
done:
unlink(fifo_name);
@@ -168,17 +168,17 @@ test_util_write_chunks_to_file(void *arg)
// write a known string to a file where the tempfile will be
r = write_bytes_to_file(tempname, temp_str, temp_str_len, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
// call write_chunks_to_file
r = write_chunks_to_file(fname, chunks, 1, 0);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
// assert the file has been written (expected size)
str = read_file_to_str(fname, RFTS_BIN, &st);
tt_assert(str != NULL);
- tt_u64_op((uint64_t)st.st_size, ==, data_str_len);
- tt_mem_op(data_str, ==, str, data_str_len);
+ tt_u64_op((uint64_t)st.st_size, OP_EQ, data_str_len);
+ tt_mem_op(data_str, OP_EQ, str, data_str_len);
tor_free(str);
// assert that the tempfile is removed (should not leave artifacts)
@@ -187,7 +187,7 @@ test_util_write_chunks_to_file(void *arg)
// Remove old testfile for second test
r = unlink(fname);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
tor_free(fname);
tor_free(tempname);
@@ -199,24 +199,24 @@ test_util_write_chunks_to_file(void *arg)
// write a known string to a file where the tempfile will be
r = write_bytes_to_file(tempname, temp_str, temp_str_len, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
// call write_chunks_to_file with no_tempfile = true
r = write_chunks_to_file(fname, chunks, 1, 1);
- tt_int_op(r, ==, 0);
+ tt_int_op(r, OP_EQ, 0);
// assert the file has been written (expected size)
str = read_file_to_str(fname, RFTS_BIN, &st);
tt_assert(str != NULL);
- tt_u64_op((uint64_t)st.st_size, ==, data_str_len);
- tt_mem_op(data_str, ==, str, data_str_len);
+ tt_u64_op((uint64_t)st.st_size, OP_EQ, data_str_len);
+ tt_mem_op(data_str, OP_EQ, str, data_str_len);
tor_free(str);
// assert the tempfile still contains the known string
str = read_file_to_str(tempname, RFTS_BIN, &st);
tt_assert(str != NULL);
- tt_u64_op((uint64_t)st.st_size, ==, temp_str_len);
- tt_mem_op(temp_str, ==, str, temp_str_len);
+ tt_u64_op((uint64_t)st.st_size, OP_EQ, temp_str_len);
+ tt_mem_op(temp_str, OP_EQ, str, temp_str_len);
done:
unlink(fname);
@@ -229,7 +229,7 @@ test_util_write_chunks_to_file(void *arg)
tor_free(temp_str);
}
-#define _TFE(a, b, f) tt_int_op((a).f, ==, (b).f)
+#define _TFE(a, b, f) tt_int_op((a).f, OP_EQ, (b).f)
/** test the minimum set of struct tm fields needed for a unique epoch value
* this is also the set we use to test tor_timegm */
#define TM_EQUAL(a, b) \
@@ -261,23 +261,23 @@ test_util_time(void *arg)
end.tv_sec = 5;
end.tv_usec = 5000;
- tt_int_op(0L,==, tv_udiff(&start, &end));
+ tt_int_op(0L,OP_EQ, tv_udiff(&start, &end));
end.tv_usec = 7000;
- tt_int_op(2000L,==, tv_udiff(&start, &end));
+ tt_int_op(2000L,OP_EQ, tv_udiff(&start, &end));
end.tv_sec = 6;
- tt_int_op(1002000L,==, tv_udiff(&start, &end));
+ tt_int_op(1002000L,OP_EQ, tv_udiff(&start, &end));
end.tv_usec = 0;
- tt_int_op(995000L,==, tv_udiff(&start, &end));
+ tt_int_op(995000L,OP_EQ, tv_udiff(&start, &end));
end.tv_sec = 4;
- tt_int_op(-1005000L,==, tv_udiff(&start, &end));
+ tt_int_op(-1005000L,OP_EQ, tv_udiff(&start, &end));
/* Test tor_timegm & tor_gmtime_r */
@@ -299,26 +299,26 @@ test_util_time(void *arg)
a_time.tm_min = 14;
a_time.tm_sec = 55;
t_res = 1062224095UL;
- tt_int_op(t_res, ==, tor_timegm(&a_time));
+ tt_int_op(t_res, OP_EQ, tor_timegm(&a_time));
tor_gmtime_r(&t_res, &b_time);
TM_EQUAL(a_time, b_time);
a_time.tm_year = 2004-1900; /* Try a leap year, after feb. */
t_res = 1093846495UL;
- tt_int_op(t_res, ==, tor_timegm(&a_time));
+ tt_int_op(t_res, OP_EQ, tor_timegm(&a_time));
tor_gmtime_r(&t_res, &b_time);
TM_EQUAL(a_time, b_time);
a_time.tm_mon = 1; /* Try a leap year, in feb. */
a_time.tm_mday = 10;
t_res = 1076393695UL;
- tt_int_op(t_res, ==, tor_timegm(&a_time));
+ tt_int_op(t_res, OP_EQ, tor_timegm(&a_time));
tor_gmtime_r(&t_res, &b_time);
TM_EQUAL(a_time, b_time);
a_time.tm_mon = 0;
t_res = 1073715295UL;
- tt_int_op(t_res, ==, tor_timegm(&a_time));
+ tt_int_op(t_res, OP_EQ, tor_timegm(&a_time));
tor_gmtime_r(&t_res, &b_time);
TM_EQUAL(a_time, b_time);
@@ -328,27 +328,27 @@ test_util_time(void *arg)
/* Wrong year < 1970 */
a_time.tm_year = 1969-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = -1-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
#if SIZEOF_INT == 4 || SIZEOF_INT == 8
a_time.tm_year = -1*(1 << 16);
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* one of the smallest tm_year values my 64 bit system supports:
* t_res = -9223372036854775LL without clamping */
a_time.tm_year = -292275055-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = INT32_MIN;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
#endif
#if SIZEOF_INT == 8
a_time.tm_year = -1*(1 << 48);
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* while unlikely, the system's gmtime(_r) could return
* a "correct" retrospective gregorian negative year value,
@@ -356,25 +356,25 @@ test_util_time(void *arg)
* -1*(2^63)/60/60/24*2000/730485 + 1970 = -292277022657
* 730485 is the number of days in two millenia, including leap days */
a_time.tm_year = -292277022657-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = INT64_MIN;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
#endif
/* Wrong year >= INT32_MAX - 1900 */
#if SIZEOF_INT == 4 || SIZEOF_INT == 8
a_time.tm_year = INT32_MAX-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = INT32_MAX;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
#endif
#if SIZEOF_INT == 8
/* one of the largest tm_year values my 64 bit system supports */
a_time.tm_year = 292278994-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* while unlikely, the system's gmtime(_r) could return
* a "correct" proleptic gregorian year value,
@@ -382,72 +382,72 @@ test_util_time(void *arg)
* (2^63-1)/60/60/24*2000/730485 + 1970 = 292277026596
* 730485 is the number of days in two millenia, including leap days */
a_time.tm_year = 292277026596-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = INT64_MAX-1900;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = INT64_MAX;
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
#endif
/* month */
a_time.tm_year = 2007-1900; /* restore valid year */
a_time.tm_mon = 12; /* Wrong month, it's 0-based */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_mon = -1; /* Wrong month */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* day */
a_time.tm_mon = 6; /* Try July */
a_time.tm_mday = 32; /* Wrong day */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_mon = 5; /* Try June */
a_time.tm_mday = 31; /* Wrong day */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = 2008-1900; /* Try a leap year */
a_time.tm_mon = 1; /* in feb. */
a_time.tm_mday = 30; /* Wrong day */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_year = 2011-1900; /* Try a non-leap year */
a_time.tm_mon = 1; /* in feb. */
a_time.tm_mday = 29; /* Wrong day */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_mday = 0; /* Wrong day, it's 1-based (to be different) */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* hour */
a_time.tm_mday = 3; /* restore valid month day */
a_time.tm_hour = 24; /* Wrong hour, it's 0-based */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_hour = -1; /* Wrong hour */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* minute */
a_time.tm_hour = 22; /* restore valid hour */
a_time.tm_min = 60; /* Wrong minute, it's 0-based */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_min = -1; /* Wrong minute */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* second */
a_time.tm_min = 37; /* restore valid minute */
a_time.tm_sec = 61; /* Wrong second: 0-based with leap seconds */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
a_time.tm_sec = -1; /* Wrong second */
- tt_int_op((time_t) -1,==, tor_timegm(&a_time));
+ tt_int_op((time_t) -1,OP_EQ, tor_timegm(&a_time));
/* Test tor_gmtime_r out of range */
@@ -534,69 +534,70 @@ test_util_time(void *arg)
/* Test {format,parse}_rfc1123_time */
format_rfc1123_time(timestr, 0);
- tt_str_op("Thu, 01 Jan 1970 00:00:00 GMT",==, timestr);
+ tt_str_op("Thu, 01 Jan 1970 00:00:00 GMT",OP_EQ, timestr);
format_rfc1123_time(timestr, (time_t)1091580502UL);
- tt_str_op("Wed, 04 Aug 2004 00:48:22 GMT",==, timestr);
+ tt_str_op("Wed, 04 Aug 2004 00:48:22 GMT",OP_EQ, timestr);
t_res = 0;
i = parse_rfc1123_time(timestr, &t_res);
- tt_int_op(0,==, i);
- tt_int_op(t_res,==, (time_t)1091580502UL);
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(t_res,OP_EQ, (time_t)1091580502UL);
/* The timezone doesn't matter */
t_res = 0;
- tt_int_op(0,==, parse_rfc1123_time("Wed, 04 Aug 2004 00:48:22 ZUL", &t_res));
- tt_int_op(t_res,==, (time_t)1091580502UL);
- tt_int_op(-1,==,
+ tt_int_op(0,OP_EQ,
+ parse_rfc1123_time("Wed, 04 Aug 2004 00:48:22 ZUL", &t_res));
+ tt_int_op(t_res,OP_EQ, (time_t)1091580502UL);
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, zz Aug 2004 99-99x99 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 32 Mar 2011 00:00:00 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 2011 24:00:00 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 2011 23:60:00 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 2011 23:59:62 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 1969 23:59:59 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Ene 2011 23:59:59 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 2011 23:59:59 GM", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 29 Feb 2011 16:00:00 GMT", &t_res));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_rfc1123_time("Wed, 30 Mar 2011 23:59:61 GMT", &t_res));
/* Test parse_iso_time */
t_res = 0;
i = parse_iso_time("", &t_res);
- tt_int_op(-1,==, i);
+ tt_int_op(-1,OP_EQ, i);
t_res = 0;
i = parse_iso_time("2004-08-32 00:48:22", &t_res);
- tt_int_op(-1,==, i);
+ tt_int_op(-1,OP_EQ, i);
t_res = 0;
i = parse_iso_time("1969-08-03 00:48:22", &t_res);
- tt_int_op(-1,==, i);
+ tt_int_op(-1,OP_EQ, i);
t_res = 0;
i = parse_iso_time("2004-08-04 00:48:22", &t_res);
- tt_int_op(0,==, i);
- tt_int_op(t_res,==, (time_t)1091580502UL);
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(t_res,OP_EQ, (time_t)1091580502UL);
t_res = 0;
i = parse_iso_time("2004-8-4 0:48:22", &t_res);
- tt_int_op(0,==, i);
- tt_int_op(t_res,==, (time_t)1091580502UL);
- tt_int_op(-1,==, parse_iso_time("2004-08-zz 99-99x99 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-03-32 00:00:00 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-03-30 24:00:00 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-03-30 23:60:00 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-03-30 23:59:62 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("1969-03-30 23:59:59 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-00-30 23:59:59 GMT", &t_res));
- tt_int_op(-1,==, parse_iso_time("2147483647-08-29 14:00:00", &t_res));
- tt_int_op(-1,==, parse_iso_time("2011-03-30 23:59", &t_res));
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(t_res,OP_EQ, (time_t)1091580502UL);
+ tt_int_op(-1,OP_EQ, parse_iso_time("2004-08-zz 99-99x99 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-03-32 00:00:00 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-03-30 24:00:00 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-03-30 23:60:00 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-03-30 23:59:62 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("1969-03-30 23:59:59 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-00-30 23:59:59 GMT", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2147483647-08-29 14:00:00", &t_res));
+ tt_int_op(-1,OP_EQ, parse_iso_time("2011-03-30 23:59", &t_res));
/* Test tor_gettimeofday */
@@ -609,14 +610,14 @@ test_util_time(void *arg)
/* now make sure time works. */
tor_gettimeofday(&end);
/* We might've timewarped a little. */
- tt_int_op(tv_udiff(&start, &end), >=, -5000);
+ tt_int_op(tv_udiff(&start, &end), OP_GE, -5000);
/* Test format_iso_time */
tv.tv_sec = (time_t)1326296338;
tv.tv_usec = 3060;
format_iso_time(timestr, (time_t)tv.tv_sec);
- tt_str_op("2012-01-11 15:38:58",==, timestr);
+ tt_str_op("2012-01-11 15:38:58",OP_EQ, timestr);
/* The output of format_local_iso_time will vary by timezone, and setting
our timezone for testing purposes would be a nontrivial flaky pain.
Skip this test for now.
@@ -624,11 +625,11 @@ test_util_time(void *arg)
test_streq("2012-01-11 10:38:58", timestr);
*/
format_iso_time_nospace(timestr, (time_t)tv.tv_sec);
- tt_str_op("2012-01-11T15:38:58",==, timestr);
- tt_int_op(strlen(timestr),==, ISO_TIME_LEN);
+ tt_str_op("2012-01-11T15:38:58",OP_EQ, timestr);
+ tt_int_op(strlen(timestr),OP_EQ, ISO_TIME_LEN);
format_iso_time_nospace_usec(timestr, &tv);
- tt_str_op("2012-01-11T15:38:58.003060",==, timestr);
- tt_int_op(strlen(timestr),==, ISO_TIME_USEC_LEN);
+ tt_str_op("2012-01-11T15:38:58.003060",OP_EQ, timestr);
+ tt_int_op(strlen(timestr),OP_EQ, ISO_TIME_USEC_LEN);
done:
;
@@ -643,72 +644,74 @@ test_util_parse_http_time(void *arg)
#define T(s) do { \
format_iso_time(b, tor_timegm(&a_time)); \
- tt_str_op(b, ==, (s)); \
+ tt_str_op(b, OP_EQ, (s)); \
b[0]='\0'; \
} while (0)
/* Test parse_http_time */
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Sunday, 32 Aug 2004 00:48:22 GMT", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Sunday, 3 Aug 1869 00:48:22 GMT", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Sunday, 32-Aug-94 00:48:22 GMT", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Sunday, 3-Ago-04 00:48:22", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Sunday, August the third", &a_time));
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ,
parse_http_time("Wednesday,,04 Aug 1994 00:48:22 GMT", &a_time));
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
parse_http_time("Wednesday, 04 Aug 1994 00:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
parse_http_time("Wednesday, 4 Aug 1994 0:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
parse_http_time("Miercoles, 4 Aug 1994 0:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
parse_http_time("Wednesday, 04-Aug-94 00:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Wednesday, 4-Aug-94 0:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ,
+ parse_http_time("Wednesday, 4-Aug-94 0:48:22 GMT", &a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Miercoles, 4-Aug-94 0:48:22 GMT", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ,
+ parse_http_time("Miercoles, 4-Aug-94 0:48:22 GMT", &a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Wed Aug 04 00:48:22 1994", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ, parse_http_time("Wed Aug 04 00:48:22 1994", &a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Wed Aug 4 0:48:22 1994", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ, parse_http_time("Wed Aug 4 0:48:22 1994", &a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Mie Aug 4 0:48:22 1994", &a_time));
- tt_int_op((time_t)775961302UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ, parse_http_time("Mie Aug 4 0:48:22 1994", &a_time));
+ tt_int_op((time_t)775961302UL,OP_EQ, tor_timegm(&a_time));
T("1994-08-04 00:48:22");
- tt_int_op(0,==, parse_http_time("Sun, 1 Jan 2012 00:00:00 GMT", &a_time));
- tt_int_op((time_t)1325376000UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ,parse_http_time("Sun, 1 Jan 2012 00:00:00 GMT", &a_time));
+ tt_int_op((time_t)1325376000UL,OP_EQ, tor_timegm(&a_time));
T("2012-01-01 00:00:00");
- tt_int_op(0,==, parse_http_time("Mon, 31 Dec 2012 00:00:00 GMT", &a_time));
- tt_int_op((time_t)1356912000UL,==, tor_timegm(&a_time));
+ tt_int_op(0,OP_EQ,parse_http_time("Mon, 31 Dec 2012 00:00:00 GMT", &a_time));
+ tt_int_op((time_t)1356912000UL,OP_EQ, tor_timegm(&a_time));
T("2012-12-31 00:00:00");
- tt_int_op(-1,==, parse_http_time("2004-08-zz 99-99x99 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-03-32 00:00:00 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-03-30 24:00:00 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-03-30 23:60:00 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-03-30 23:59:62 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("1969-03-30 23:59:59 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-00-30 23:59:59 GMT", &a_time));
- tt_int_op(-1,==, parse_http_time("2011-03-30 23:59", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2004-08-zz 99-99x99 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-03-32 00:00:00 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-03-30 24:00:00 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-03-30 23:60:00 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-03-30 23:59:62 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("1969-03-30 23:59:59 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-00-30 23:59:59 GMT", &a_time));
+ tt_int_op(-1,OP_EQ, parse_http_time("2011-03-30 23:59", &a_time));
#undef T
done:
@@ -743,110 +746,110 @@ test_util_config_line(void *arg)
str = buf;
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k");
- tt_str_op(v,==, "v");
+ tt_str_op(k,OP_EQ, "k");
+ tt_str_op(v,OP_EQ, "v");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "key value with"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "key");
- tt_str_op(v,==, "value with spaces");
+ tt_str_op(k,OP_EQ, "key");
+ tt_str_op(v,OP_EQ, "value with spaces");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "keykey"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "keykey");
- tt_str_op(v,==, "val");
+ tt_str_op(k,OP_EQ, "keykey");
+ tt_str_op(v,OP_EQ, "val");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "k2\n"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k2");
- tt_str_op(v,==, "");
+ tt_str_op(k,OP_EQ, "k2");
+ tt_str_op(v,OP_EQ, "");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "k3 \n"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k3");
- tt_str_op(v,==, "");
+ tt_str_op(k,OP_EQ, "k3");
+ tt_str_op(v,OP_EQ, "");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "#comment"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k4");
- tt_str_op(v,==, "");
+ tt_str_op(k,OP_EQ, "k4");
+ tt_str_op(v,OP_EQ, "");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "k5#abc"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k5");
- tt_str_op(v,==, "");
+ tt_str_op(k,OP_EQ, "k5");
+ tt_str_op(v,OP_EQ, "");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "k6"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k6");
- tt_str_op(v,==, "val");
+ tt_str_op(k,OP_EQ, "k6");
+ tt_str_op(v,OP_EQ, "val");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "kseven"));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "kseven");
- tt_str_op(v,==, "a quoted \'string");
+ tt_str_op(k,OP_EQ, "kseven");
+ tt_str_op(v,OP_EQ, "a quoted \'string");
tor_free(k); tor_free(v);
tt_assert(!strcmpstart(str, "k8 "));
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k8");
- tt_str_op(v,==, "a quoted\n\"str\\ing\t\x01\x01\x01\"");
+ tt_str_op(k,OP_EQ, "k8");
+ tt_str_op(v,OP_EQ, "a quoted\n\"str\\ing\t\x01\x01\x01\"");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k9");
- tt_str_op(v,==, "a line that spans two lines.");
+ tt_str_op(k,OP_EQ, "k9");
+ tt_str_op(v,OP_EQ, "a line that spans two lines.");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k10");
- tt_str_op(v,==, "more than one continuation");
+ tt_str_op(k,OP_EQ, "k10");
+ tt_str_op(v,OP_EQ, "more than one continuation");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k11");
- tt_str_op(v,==, "continuation at the start");
+ tt_str_op(k,OP_EQ, "k11");
+ tt_str_op(v,OP_EQ, "continuation at the start");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k12");
- tt_str_op(v,==, "line with a embedded");
+ tt_str_op(k,OP_EQ, "k12");
+ tt_str_op(v,OP_EQ, "line with a embedded");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k13");
- tt_str_op(v,==, "continuation at the very start");
+ tt_str_op(k,OP_EQ, "k13");
+ tt_str_op(v,OP_EQ, "continuation at the very start");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k14");
- tt_str_op(v,==, "a line that has a comment and" );
+ tt_str_op(k,OP_EQ, "k14");
+ tt_str_op(v,OP_EQ, "a line that has a comment and" );
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k15");
- tt_str_op(v,==, "this should be the next new line");
+ tt_str_op(k,OP_EQ, "k15");
+ tt_str_op(v,OP_EQ, "this should be the next new line");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k16");
- tt_str_op(v,==, "a line that has a comment and" );
+ tt_str_op(k,OP_EQ, "k16");
+ tt_str_op(v,OP_EQ, "a line that has a comment and" );
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k17");
- tt_str_op(v,==, "this should be the next new line");
+ tt_str_op(k,OP_EQ, "k17");
+ tt_str_op(v,OP_EQ, "this should be the next new line");
tor_free(k); tor_free(v);
- tt_str_op(str,==, "");
+ tt_str_op(str,OP_EQ, "");
done:
tor_free(k);
@@ -877,30 +880,30 @@ test_util_config_line_quotes(void *arg)
str = buf1;
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "kTrailingSpace");
- tt_str_op(v,==, "quoted value");
+ tt_str_op(k,OP_EQ, "kTrailingSpace");
+ tt_str_op(v,OP_EQ, "quoted value");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
str = buf2;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
str = buf3;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
str = buf4;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
done:
@@ -924,16 +927,16 @@ test_util_config_line_comment_character(void *arg)
str = buf;
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k1");
- tt_str_op(v,==, "# in quotes");
+ tt_str_op(k,OP_EQ, "k1");
+ tt_str_op(v,OP_EQ, "# in quotes");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "k2");
- tt_str_op(v,==, "some value");
+ tt_str_op(k,OP_EQ, "k2");
+ tt_str_op(v,OP_EQ, "some value");
tor_free(k); tor_free(v);
- tt_str_op(str,==, "k3 /home/user/myTorNetwork#2\n");
+ tt_str_op(str,OP_EQ, "k3 /home/user/myTorNetwork#2\n");
#if 0
str = parse_config_line_from_str(str, &k, &v);
@@ -994,91 +997,91 @@ test_util_config_line_escaped_content(void *arg)
str = buf1;
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "HexadecimalLower");
- tt_str_op(v,==, "*");
+ tt_str_op(k,OP_EQ, "HexadecimalLower");
+ tt_str_op(v,OP_EQ, "*");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "HexadecimalUpper");
- tt_str_op(v,==, "*");
+ tt_str_op(k,OP_EQ, "HexadecimalUpper");
+ tt_str_op(v,OP_EQ, "*");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "HexadecimalUpperX");
- tt_str_op(v,==, "*");
+ tt_str_op(k,OP_EQ, "HexadecimalUpperX");
+ tt_str_op(v,OP_EQ, "*");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "Octal");
- tt_str_op(v,==, "*");
+ tt_str_op(k,OP_EQ, "Octal");
+ tt_str_op(v,OP_EQ, "*");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "Newline");
- tt_str_op(v,==, "\n");
+ tt_str_op(k,OP_EQ, "Newline");
+ tt_str_op(v,OP_EQ, "\n");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "Tab");
- tt_str_op(v,==, "\t");
+ tt_str_op(k,OP_EQ, "Tab");
+ tt_str_op(v,OP_EQ, "\t");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "CarriageReturn");
- tt_str_op(v,==, "\r");
+ tt_str_op(k,OP_EQ, "CarriageReturn");
+ tt_str_op(v,OP_EQ, "\r");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "DoubleQuote");
- tt_str_op(v,==, "\"");
+ tt_str_op(k,OP_EQ, "DoubleQuote");
+ tt_str_op(v,OP_EQ, "\"");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "SimpleQuote");
- tt_str_op(v,==, "'");
+ tt_str_op(k,OP_EQ, "SimpleQuote");
+ tt_str_op(v,OP_EQ, "'");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "Backslash");
- tt_str_op(v,==, "\\");
+ tt_str_op(k,OP_EQ, "Backslash");
+ tt_str_op(v,OP_EQ, "\\");
tor_free(k); tor_free(v);
str = parse_config_line_from_str(str, &k, &v);
- tt_str_op(k,==, "Mix");
- tt_str_op(v,==, "This is a \"star\":\t'*'\nAnd second line");
+ tt_str_op(k,OP_EQ, "Mix");
+ tt_str_op(v,OP_EQ, "This is a \"star\":\t'*'\nAnd second line");
tor_free(k); tor_free(v);
- tt_str_op(str,==, "");
+ tt_str_op(str,OP_EQ, "");
str = buf2;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
str = buf3;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
str = buf4;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
#if 0
str = buf5;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str, ==, NULL);
+ tt_ptr_op(str, OP_EQ, NULL);
tor_free(k); tor_free(v);
#endif
str = buf6;
str = parse_config_line_from_str(str, &k, &v);
- tt_ptr_op(str,==, NULL);
+ tt_ptr_op(str,OP_EQ, NULL);
tor_free(k); tor_free(v);
done:
@@ -1096,39 +1099,39 @@ test_util_expand_filename(void *arg)
setenv("HOME", "/home/itv", 1); /* For "internal test value" */
str = expand_filename("");
- tt_str_op("",==, str);
+ tt_str_op("",OP_EQ, str);
tor_free(str);
str = expand_filename("/normal/path");
- tt_str_op("/normal/path",==, str);
+ tt_str_op("/normal/path",OP_EQ, str);
tor_free(str);
str = expand_filename("/normal/trailing/path/");
- tt_str_op("/normal/trailing/path/",==, str);
+ tt_str_op("/normal/trailing/path/",OP_EQ, str);
tor_free(str);
str = expand_filename("~");
- tt_str_op("/home/itv/",==, str);
+ tt_str_op("/home/itv/",OP_EQ, str);
tor_free(str);
str = expand_filename("$HOME/nodice");
- tt_str_op("$HOME/nodice",==, str);
+ tt_str_op("$HOME/nodice",OP_EQ, str);
tor_free(str);
str = expand_filename("~/");
- tt_str_op("/home/itv/",==, str);
+ tt_str_op("/home/itv/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/foobarqux");
- tt_str_op("/home/itv/foobarqux",==, str);
+ tt_str_op("/home/itv/foobarqux",OP_EQ, str);
tor_free(str);
str = expand_filename("~/../../etc/passwd");
- tt_str_op("/home/itv/../../etc/passwd",==, str);
+ tt_str_op("/home/itv/../../etc/passwd",OP_EQ, str);
tor_free(str);
str = expand_filename("~/trailing/");
- tt_str_op("/home/itv/trailing/",==, str);
+ tt_str_op("/home/itv/trailing/",OP_EQ, str);
tor_free(str);
/* Ideally we'd test ~anotheruser, but that's shady to test (we'd
have to somehow inject/fake the get_user_homedir call) */
@@ -1137,15 +1140,15 @@ test_util_expand_filename(void *arg)
setenv("HOME", "/home/itv/", 1);
str = expand_filename("~");
- tt_str_op("/home/itv/",==, str);
+ tt_str_op("/home/itv/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/");
- tt_str_op("/home/itv/",==, str);
+ tt_str_op("/home/itv/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/foo");
- tt_str_op("/home/itv/foo",==, str);
+ tt_str_op("/home/itv/foo",OP_EQ, str);
tor_free(str);
/* Try with empty $HOME */
@@ -1153,15 +1156,15 @@ test_util_expand_filename(void *arg)
setenv("HOME", "", 1);
str = expand_filename("~");
- tt_str_op("/",==, str);
+ tt_str_op("/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/");
- tt_str_op("/",==, str);
+ tt_str_op("/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/foobar");
- tt_str_op("/foobar",==, str);
+ tt_str_op("/foobar",OP_EQ, str);
tor_free(str);
/* Try with $HOME unset */
@@ -1169,15 +1172,15 @@ test_util_expand_filename(void *arg)
unsetenv("HOME");
str = expand_filename("~");
- tt_str_op("/",==, str);
+ tt_str_op("/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/");
- tt_str_op("/",==, str);
+ tt_str_op("/",OP_EQ, str);
tor_free(str);
str = expand_filename("~/foobar");
- tt_str_op("/foobar",==, str);
+ tt_str_op("/foobar",OP_EQ, str);
tor_free(str);
done:
@@ -1195,30 +1198,30 @@ test_util_escape_string_socks(void *arg)
(void)arg;
escaped_string = tor_escape_str_for_pt_args("This is a backslash: \\",";\\");
tt_assert(escaped_string);
- tt_str_op(escaped_string,==, "This is a backslash: \\\\");
+ tt_str_op(escaped_string,OP_EQ, "This is a backslash: \\\\");
tor_free(escaped_string);
/** Simple semicolon escape. */
escaped_string = tor_escape_str_for_pt_args("First rule:Do not use ;",";\\");
tt_assert(escaped_string);
- tt_str_op(escaped_string,==, "First rule:Do not use \\;");
+ tt_str_op(escaped_string,OP_EQ, "First rule:Do not use \\;");
tor_free(escaped_string);
/** Empty string. */
escaped_string = tor_escape_str_for_pt_args("", ";\\");
tt_assert(escaped_string);
- tt_str_op(escaped_string,==, "");
+ tt_str_op(escaped_string,OP_EQ, "");
tor_free(escaped_string);
/** Escape all characters. */
escaped_string = tor_escape_str_for_pt_args(";\\;\\", ";\\");
tt_assert(escaped_string);
- tt_str_op(escaped_string,==, "\\;\\\\\\;\\\\");
+ tt_str_op(escaped_string,OP_EQ, "\\;\\\\\\;\\\\");
tor_free(escaped_string);
escaped_string = tor_escape_str_for_pt_args(";", ";\\");
tt_assert(escaped_string);
- tt_str_op(escaped_string,==, "\\;");
+ tt_str_op(escaped_string,OP_EQ, "\\;");
tor_free(escaped_string);
done:
@@ -1254,152 +1257,153 @@ test_util_strmisc(void *arg)
/* Test strl operations */
(void)arg;
- tt_int_op(5,==, strlcpy(buf, "Hello", 0));
- tt_int_op(5,==, strlcpy(buf, "Hello", 10));
- tt_str_op(buf,==, "Hello");
- tt_int_op(5,==, strlcpy(buf, "Hello", 6));
- tt_str_op(buf,==, "Hello");
- tt_int_op(5,==, strlcpy(buf, "Hello", 5));
- tt_str_op(buf,==, "Hell");
+ tt_int_op(5,OP_EQ, strlcpy(buf, "Hello", 0));
+ tt_int_op(5,OP_EQ, strlcpy(buf, "Hello", 10));
+ tt_str_op(buf,OP_EQ, "Hello");
+ tt_int_op(5,OP_EQ, strlcpy(buf, "Hello", 6));
+ tt_str_op(buf,OP_EQ, "Hello");
+ tt_int_op(5,OP_EQ, strlcpy(buf, "Hello", 5));
+ tt_str_op(buf,OP_EQ, "Hell");
strlcpy(buf, "Hello", sizeof(buf));
- tt_int_op(10,==, strlcat(buf, "Hello", 5));
+ tt_int_op(10,OP_EQ, strlcat(buf, "Hello", 5));
/* Test strstrip() */
strlcpy(buf, "Testing 1 2 3", sizeof(buf));
tor_strstrip(buf, ",!");
- tt_str_op(buf,==, "Testing 1 2 3");
+ tt_str_op(buf,OP_EQ, "Testing 1 2 3");
strlcpy(buf, "!Testing 1 2 3?", sizeof(buf));
tor_strstrip(buf, "!? ");
- tt_str_op(buf,==, "Testing123");
+ tt_str_op(buf,OP_EQ, "Testing123");
strlcpy(buf, "!!!Testing 1 2 3??", sizeof(buf));
tor_strstrip(buf, "!? ");
- tt_str_op(buf,==, "Testing123");
+ tt_str_op(buf,OP_EQ, "Testing123");
/* Test parse_long */
/* Empty/zero input */
- tt_int_op(0L,==, tor_parse_long("",10,0,100,&i,NULL));
- tt_int_op(0,==, i);
- tt_int_op(0L,==, tor_parse_long("0",10,0,100,&i,NULL));
- tt_int_op(1,==, i);
+ tt_int_op(0L,OP_EQ, tor_parse_long("",10,0,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(0L,OP_EQ, tor_parse_long("0",10,0,100,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
/* Normal cases */
- tt_int_op(10L,==, tor_parse_long("10",10,0,100,&i,NULL));
- tt_int_op(1,==, i);
- tt_int_op(10L,==, tor_parse_long("10",10,0,10,&i,NULL));
- tt_int_op(1,==, i);
- tt_int_op(10L,==, tor_parse_long("10",10,10,100,&i,NULL));
- tt_int_op(1,==, i);
- tt_int_op(-50L,==, tor_parse_long("-50",10,-100,100,&i,NULL));
- tt_int_op(1,==, i);
- tt_int_op(-50L,==, tor_parse_long("-50",10,-100,0,&i,NULL));
- tt_int_op(1,==, i);
- tt_int_op(-50L,==, tor_parse_long("-50",10,-50,0,&i,NULL));
- tt_int_op(1,==, i);
+ tt_int_op(10L,OP_EQ, tor_parse_long("10",10,0,100,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(10L,OP_EQ, tor_parse_long("10",10,0,10,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(10L,OP_EQ, tor_parse_long("10",10,10,100,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(-50L,OP_EQ, tor_parse_long("-50",10,-100,100,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(-50L,OP_EQ, tor_parse_long("-50",10,-100,0,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(-50L,OP_EQ, tor_parse_long("-50",10,-50,0,&i,NULL));
+ tt_int_op(1,OP_EQ, i);
/* Extra garbage */
- tt_int_op(0L,==, tor_parse_long("10m",10,0,100,&i,NULL));
- tt_int_op(0,==, i);
- tt_int_op(0L,==, tor_parse_long("-50 plus garbage",10,-100,100,&i,NULL));
- tt_int_op(0,==, i);
- tt_int_op(10L,==, tor_parse_long("10m",10,0,100,&i,&cp));
- tt_int_op(1,==, i);
- tt_str_op(cp,==, "m");
- tt_int_op(-50L,==, tor_parse_long("-50 plus garbage",10,-100,100,&i,&cp));
- tt_int_op(1,==, i);
- tt_str_op(cp,==, " plus garbage");
+ tt_int_op(0L,OP_EQ, tor_parse_long("10m",10,0,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(0L,OP_EQ, tor_parse_long("-50 plus garbage",10,-100,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(10L,OP_EQ, tor_parse_long("10m",10,0,100,&i,&cp));
+ tt_int_op(1,OP_EQ, i);
+ tt_str_op(cp,OP_EQ, "m");
+ tt_int_op(-50L,OP_EQ, tor_parse_long("-50 plus garbage",10,-100,100,&i,&cp));
+ tt_int_op(1,OP_EQ, i);
+ tt_str_op(cp,OP_EQ, " plus garbage");
/* Out of bounds */
- tt_int_op(0L,==, tor_parse_long("10",10,50,100,&i,NULL));
- tt_int_op(0,==, i);
- tt_int_op(0L,==, tor_parse_long("-50",10,0,100,&i,NULL));
- tt_int_op(0,==, i);
+ tt_int_op(0L,OP_EQ, tor_parse_long("10",10,50,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
+ tt_int_op(0L,OP_EQ, tor_parse_long("-50",10,0,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
/* Base different than 10 */
- tt_int_op(2L,==, tor_parse_long("10",2,0,100,NULL,NULL));
- tt_int_op(0L,==, tor_parse_long("2",2,0,100,NULL,NULL));
- tt_int_op(0L,==, tor_parse_long("10",-2,0,100,NULL,NULL));
- tt_int_op(68284L,==, tor_parse_long("10abc",16,0,70000,NULL,NULL));
- tt_int_op(68284L,==, tor_parse_long("10ABC",16,0,70000,NULL,NULL));
- tt_int_op(0,==, tor_parse_long("10ABC",-1,0,70000,&i,NULL));
- tt_int_op(i,==, 0);
+ tt_int_op(2L,OP_EQ, tor_parse_long("10",2,0,100,NULL,NULL));
+ tt_int_op(0L,OP_EQ, tor_parse_long("2",2,0,100,NULL,NULL));
+ tt_int_op(0L,OP_EQ, tor_parse_long("10",-2,0,100,NULL,NULL));
+ tt_int_op(68284L,OP_EQ, tor_parse_long("10abc",16,0,70000,NULL,NULL));
+ tt_int_op(68284L,OP_EQ, tor_parse_long("10ABC",16,0,70000,NULL,NULL));
+ tt_int_op(0,OP_EQ, tor_parse_long("10ABC",-1,0,70000,&i,NULL));
+ tt_int_op(i,OP_EQ, 0);
/* Test parse_ulong */
- tt_int_op(0UL,==, tor_parse_ulong("",10,0,100,NULL,NULL));
- tt_int_op(0UL,==, tor_parse_ulong("0",10,0,100,NULL,NULL));
- tt_int_op(10UL,==, tor_parse_ulong("10",10,0,100,NULL,NULL));
- tt_int_op(0UL,==, tor_parse_ulong("10",10,50,100,NULL,NULL));
- tt_int_op(10UL,==, tor_parse_ulong("10",10,0,10,NULL,NULL));
- tt_int_op(10UL,==, tor_parse_ulong("10",10,10,100,NULL,NULL));
- tt_int_op(0UL,==, tor_parse_ulong("8",8,0,100,NULL,NULL));
- tt_int_op(50UL,==, tor_parse_ulong("50",10,50,100,NULL,NULL));
- tt_int_op(0UL,==, tor_parse_ulong("-50",10,-100,100,NULL,NULL));
- tt_int_op(0UL,==, tor_parse_ulong("50",-1,50,100,&i,NULL));
- tt_int_op(0,==, i);
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("",10,0,100,NULL,NULL));
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("0",10,0,100,NULL,NULL));
+ tt_int_op(10UL,OP_EQ, tor_parse_ulong("10",10,0,100,NULL,NULL));
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("10",10,50,100,NULL,NULL));
+ tt_int_op(10UL,OP_EQ, tor_parse_ulong("10",10,0,10,NULL,NULL));
+ tt_int_op(10UL,OP_EQ, tor_parse_ulong("10",10,10,100,NULL,NULL));
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("8",8,0,100,NULL,NULL));
+ tt_int_op(50UL,OP_EQ, tor_parse_ulong("50",10,50,100,NULL,NULL));
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("-50",10,-100,100,NULL,NULL));
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong("50",-1,50,100,&i,NULL));
+ tt_int_op(0,OP_EQ, i);
/* Test parse_uint64 */
tt_assert(U64_LITERAL(10) == tor_parse_uint64("10 x",10,0,100, &i, &cp));
- tt_int_op(1,==, i);
- tt_str_op(cp,==, " x");
+ tt_int_op(1,OP_EQ, i);
+ tt_str_op(cp,OP_EQ, " x");
tt_assert(U64_LITERAL(12345678901) ==
tor_parse_uint64("12345678901",10,0,UINT64_MAX, &i, &cp));
- tt_int_op(1,==, i);
- tt_str_op(cp,==, "");
+ tt_int_op(1,OP_EQ, i);
+ tt_str_op(cp,OP_EQ, "");
tt_assert(U64_LITERAL(0) ==
tor_parse_uint64("12345678901",10,500,INT32_MAX, &i, &cp));
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
tt_assert(U64_LITERAL(0) ==
tor_parse_uint64("123",-1,0,INT32_MAX, &i, &cp));
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
{
/* Test parse_double */
double d = tor_parse_double("10", 0, UINT64_MAX,&i,NULL);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
tt_assert(DBL_TO_U64(d) == 10);
d = tor_parse_double("0", 0, UINT64_MAX,&i,NULL);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
tt_assert(DBL_TO_U64(d) == 0);
d = tor_parse_double(" ", 0, UINT64_MAX,&i,NULL);
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
d = tor_parse_double(".0a", 0, UINT64_MAX,&i,NULL);
- tt_int_op(0,==, i);
+ tt_int_op(0,OP_EQ, i);
d = tor_parse_double(".0a", 0, UINT64_MAX,&i,&cp);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
d = tor_parse_double("-.0", 0, UINT64_MAX,&i,NULL);
- tt_int_op(1,==, i);
+ tt_int_op(1,OP_EQ, i);
tt_assert(DBL_TO_U64(d) == 0);
d = tor_parse_double("-10", -100.0, 100.0,&i,NULL);
- tt_int_op(1,==, i);
- tt_int_op(-10.0,==, d);
+ tt_int_op(1,OP_EQ, i);
+ tt_int_op(-10.0,OP_EQ, d);
}
{
/* Test tor_parse_* where we overflow/underflow the underlying type. */
/* This string should overflow 64-bit ints. */
#define TOOBIG "100000000000000000000000000"
- tt_int_op(0L,==, tor_parse_long(TOOBIG, 10, LONG_MIN, LONG_MAX, &i, NULL));
- tt_int_op(i,==, 0);
- tt_int_op(0L,==,
+ tt_int_op(0L, OP_EQ,
+ tor_parse_long(TOOBIG, 10, LONG_MIN, LONG_MAX, &i, NULL));
+ tt_int_op(i,OP_EQ, 0);
+ tt_int_op(0L,OP_EQ,
tor_parse_long("-"TOOBIG, 10, LONG_MIN, LONG_MAX, &i, NULL));
- tt_int_op(i,==, 0);
- tt_int_op(0UL,==, tor_parse_ulong(TOOBIG, 10, 0, ULONG_MAX, &i, NULL));
- tt_int_op(i,==, 0);
- tt_u64_op(U64_LITERAL(0), ==, tor_parse_uint64(TOOBIG, 10,
+ tt_int_op(i,OP_EQ, 0);
+ tt_int_op(0UL,OP_EQ, tor_parse_ulong(TOOBIG, 10, 0, ULONG_MAX, &i, NULL));
+ tt_int_op(i,OP_EQ, 0);
+ tt_u64_op(U64_LITERAL(0), OP_EQ, tor_parse_uint64(TOOBIG, 10,
0, UINT64_MAX, &i, NULL));
- tt_int_op(i,==, 0);
+ tt_int_op(i,OP_EQ, 0);
}
/* Test snprintf */
/* Returning -1 when there's not enough room in the output buffer */
- tt_int_op(-1,==, tor_snprintf(buf, 0, "Foo"));
- tt_int_op(-1,==, tor_snprintf(buf, 2, "Foo"));
- tt_int_op(-1,==, tor_snprintf(buf, 3, "Foo"));
- tt_int_op(-1,!=, tor_snprintf(buf, 4, "Foo"));
+ tt_int_op(-1,OP_EQ, tor_snprintf(buf, 0, "Foo"));
+ tt_int_op(-1,OP_EQ, tor_snprintf(buf, 2, "Foo"));
+ tt_int_op(-1,OP_EQ, tor_snprintf(buf, 3, "Foo"));
+ tt_int_op(-1,OP_NE, tor_snprintf(buf, 4, "Foo"));
/* Always NUL-terminate the output */
tor_snprintf(buf, 5, "abcdef");
- tt_int_op(0,==, buf[4]);
+ tt_int_op(0,OP_EQ, buf[4]);
tor_snprintf(buf, 10, "abcdef");
- tt_int_op(0,==, buf[6]);
+ tt_int_op(0,OP_EQ, buf[6]);
/* uint64 */
tor_snprintf(buf, sizeof(buf), "x!"U64_FORMAT"!x",
U64_PRINTF_ARG(U64_LITERAL(12345678901)));
- tt_str_op("x!12345678901!x",==, buf);
+ tt_str_op("x!12345678901!x",OP_EQ, buf);
/* Test str{,case}cmpstart */
tt_assert(strcmpstart("abcdef", "abcdef")==0);
@@ -1450,31 +1454,31 @@ test_util_strmisc(void *arg)
/* Test 'escaped' */
tt_assert(NULL == escaped(NULL));
- tt_str_op("\"\"",==, escaped(""));
- tt_str_op("\"abcd\"",==, escaped("abcd"));
- tt_str_op("\"\\\\ \\n\\r\\t\\\"\\'\"",==, escaped("\\ \n\r\t\"'"));
- tt_str_op("\"unnecessary \\'backslashes\\'\"",==,
+ tt_str_op("\"\"",OP_EQ, escaped(""));
+ tt_str_op("\"abcd\"",OP_EQ, escaped("abcd"));
+ tt_str_op("\"\\\\ \\n\\r\\t\\\"\\'\"",OP_EQ, escaped("\\ \n\r\t\"'"));
+ tt_str_op("\"unnecessary \\'backslashes\\'\"",OP_EQ,
escaped("unnecessary \'backslashes\'"));
/* Non-printable characters appear as octal */
- tt_str_op("\"z\\001abc\\277d\"",==, escaped("z\001abc\277d"));
- tt_str_op("\"z\\336\\255 ;foo\"",==, escaped("z\xde\xad\x20;foo"));
+ tt_str_op("\"z\\001abc\\277d\"",OP_EQ, escaped("z\001abc\277d"));
+ tt_str_op("\"z\\336\\255 ;foo\"",OP_EQ, escaped("z\xde\xad\x20;foo"));
/* Test strndup and memdup */
{
const char *s = "abcdefghijklmnopqrstuvwxyz";
cp_tmp = tor_strndup(s, 30);
- tt_str_op(cp_tmp,==, s); /* same string, */
- tt_ptr_op(cp_tmp,!=,s); /* but different pointers. */
+ tt_str_op(cp_tmp,OP_EQ, s); /* same string, */
+ tt_ptr_op(cp_tmp,OP_NE,s); /* but different pointers. */
tor_free(cp_tmp);
cp_tmp = tor_strndup(s, 5);
- tt_str_op(cp_tmp,==, "abcde");
+ tt_str_op(cp_tmp,OP_EQ, "abcde");
tor_free(cp_tmp);
s = "a\0b\0c\0d\0e\0";
cp_tmp = tor_memdup(s,10);
- tt_mem_op(cp_tmp,==, s, 10); /* same ram, */
- tt_ptr_op(cp_tmp,!=,s); /* but different pointers. */
+ tt_mem_op(cp_tmp,OP_EQ, s, 10); /* same ram, */
+ tt_ptr_op(cp_tmp,OP_NE,s); /* but different pointers. */
tor_free(cp_tmp);
}
@@ -1484,9 +1488,9 @@ test_util_strmisc(void *arg)
cp_tmp[3] = 'D';
tt_assert(!tor_strisnonupper(cp_tmp));
tor_strupper(cp_tmp);
- tt_str_op(cp_tmp,==, "ABCDEF");
+ tt_str_op(cp_tmp,OP_EQ, "ABCDEF");
tor_strlower(cp_tmp);
- tt_str_op(cp_tmp,==, "abcdef");
+ tt_str_op(cp_tmp,OP_EQ, "abcdef");
tt_assert(tor_strisnonupper(cp_tmp));
tt_assert(tor_strisprint(cp_tmp));
cp_tmp[3] = 3;
@@ -1497,18 +1501,18 @@ test_util_strmisc(void *arg)
{
const char *haystack = "abcde";
tt_assert(!tor_memmem(haystack, 5, "ef", 2));
- tt_ptr_op(tor_memmem(haystack, 5, "cd", 2),==, haystack + 2);
- tt_ptr_op(tor_memmem(haystack, 5, "cde", 3),==, haystack + 2);
+ tt_ptr_op(tor_memmem(haystack, 5, "cd", 2),OP_EQ, haystack + 2);
+ tt_ptr_op(tor_memmem(haystack, 5, "cde", 3),OP_EQ, haystack + 2);
tt_assert(!tor_memmem(haystack, 4, "cde", 3));
haystack = "ababcad";
- tt_ptr_op(tor_memmem(haystack, 7, "abc", 3),==, haystack + 2);
- tt_ptr_op(tor_memmem(haystack, 7, "ad", 2),==, haystack + 5);
- tt_ptr_op(tor_memmem(haystack, 7, "cad", 3),==, haystack + 4);
+ tt_ptr_op(tor_memmem(haystack, 7, "abc", 3),OP_EQ, haystack + 2);
+ tt_ptr_op(tor_memmem(haystack, 7, "ad", 2),OP_EQ, haystack + 5);
+ tt_ptr_op(tor_memmem(haystack, 7, "cad", 3),OP_EQ, haystack + 4);
tt_assert(!tor_memmem(haystack, 7, "dadad", 5));
tt_assert(!tor_memmem(haystack, 7, "abcdefghij", 10));
/* memstr */
- tt_ptr_op(tor_memstr(haystack, 7, "abc"),==, haystack + 2);
- tt_ptr_op(tor_memstr(haystack, 7, "cad"),==, haystack + 4);
+ tt_ptr_op(tor_memstr(haystack, 7, "abc"),OP_EQ, haystack + 2);
+ tt_ptr_op(tor_memstr(haystack, 7, "cad"),OP_EQ, haystack + 4);
tt_assert(!tor_memstr(haystack, 6, "cad"));
tt_assert(!tor_memstr(haystack, 7, "cadd"));
tt_assert(!tor_memstr(haystack, 7, "fe"));
@@ -1521,42 +1525,42 @@ test_util_strmisc(void *arg)
size_t i;
for (i = 0; i < sizeof(binary_data); ++i)
binary_data[i] = i;
- tt_str_op(hex_str(binary_data, 0),==, "");
- tt_str_op(hex_str(binary_data, 1),==, "00");
- tt_str_op(hex_str(binary_data, 17),==,
+ tt_str_op(hex_str(binary_data, 0),OP_EQ, "");
+ tt_str_op(hex_str(binary_data, 1),OP_EQ, "00");
+ tt_str_op(hex_str(binary_data, 17),OP_EQ,
"000102030405060708090A0B0C0D0E0F10");
- tt_str_op(hex_str(binary_data, 32),==,
+ tt_str_op(hex_str(binary_data, 32),OP_EQ,
"000102030405060708090A0B0C0D0E0F"
"101112131415161718191A1B1C1D1E1F");
- tt_str_op(hex_str(binary_data, 34),==,
+ tt_str_op(hex_str(binary_data, 34),OP_EQ,
"000102030405060708090A0B0C0D0E0F"
"101112131415161718191A1B1C1D1E1F");
/* Repeat these tests for shorter strings after longer strings
have been tried, to make sure we're correctly terminating strings */
- tt_str_op(hex_str(binary_data, 1),==, "00");
- tt_str_op(hex_str(binary_data, 0),==, "");
+ tt_str_op(hex_str(binary_data, 1),OP_EQ, "00");
+ tt_str_op(hex_str(binary_data, 0),OP_EQ, "");
}
/* Test strcmp_opt */
- tt_int_op(strcmp_opt("", "foo"), <, 0);
- tt_int_op(strcmp_opt("", ""), ==, 0);
- tt_int_op(strcmp_opt("foo", ""), >, 0);
+ tt_int_op(strcmp_opt("", "foo"), OP_LT, 0);
+ tt_int_op(strcmp_opt("", ""), OP_EQ, 0);
+ tt_int_op(strcmp_opt("foo", ""), OP_GT, 0);
- tt_int_op(strcmp_opt(NULL, ""), <, 0);
- tt_int_op(strcmp_opt(NULL, NULL), ==, 0);
- tt_int_op(strcmp_opt("", NULL), >, 0);
+ tt_int_op(strcmp_opt(NULL, ""), OP_LT, 0);
+ tt_int_op(strcmp_opt(NULL, NULL), OP_EQ, 0);
+ tt_int_op(strcmp_opt("", NULL), OP_GT, 0);
- tt_int_op(strcmp_opt(NULL, "foo"), <, 0);
- tt_int_op(strcmp_opt("foo", NULL), >, 0);
+ tt_int_op(strcmp_opt(NULL, "foo"), OP_LT, 0);
+ tt_int_op(strcmp_opt("foo", NULL), OP_GT, 0);
/* Test strcmp_len */
- tt_int_op(strcmp_len("foo", "bar", 3), >, 0);
- tt_int_op(strcmp_len("foo", "bar", 2), <, 0); /* First len, then lexical */
- tt_int_op(strcmp_len("foo2", "foo1", 4), >, 0);
- tt_int_op(strcmp_len("foo2", "foo1", 3), <, 0); /* Really stop at len */
- tt_int_op(strcmp_len("foo2", "foo", 3), ==, 0); /* Really stop at len */
- tt_int_op(strcmp_len("blah", "", 4), >, 0);
- tt_int_op(strcmp_len("blah", "", 0), ==, 0);
+ tt_int_op(strcmp_len("foo", "bar", 3), OP_GT, 0);
+ tt_int_op(strcmp_len("foo", "bar", 2), OP_LT, 0);
+ tt_int_op(strcmp_len("foo2", "foo1", 4), OP_GT, 0);
+ tt_int_op(strcmp_len("foo2", "foo1", 3), OP_LT, 0); /* Really stop at len */
+ tt_int_op(strcmp_len("foo2", "foo", 3), OP_EQ, 0); /* Really stop at len */
+ tt_int_op(strcmp_len("blah", "", 4), OP_GT, 0);
+ tt_int_op(strcmp_len("blah", "", 0), OP_EQ, 0);
done:
tor_free(cp_tmp);
@@ -1567,34 +1571,35 @@ test_util_pow2(void *arg)
{
/* Test tor_log2(). */
(void)arg;
- tt_int_op(tor_log2(64),==, 6);
- tt_int_op(tor_log2(65),==, 6);
- tt_int_op(tor_log2(63),==, 5);
- tt_int_op(tor_log2(0),==, 0);/* incorrect mathematically, but as specified */
- tt_int_op(tor_log2(1),==, 0);
- tt_int_op(tor_log2(2),==, 1);
- tt_int_op(tor_log2(3),==, 1);
- tt_int_op(tor_log2(4),==, 2);
- tt_int_op(tor_log2(5),==, 2);
- tt_int_op(tor_log2(U64_LITERAL(40000000000000000)),==, 55);
- tt_int_op(tor_log2(UINT64_MAX),==, 63);
+ tt_int_op(tor_log2(64),OP_EQ, 6);
+ tt_int_op(tor_log2(65),OP_EQ, 6);
+ tt_int_op(tor_log2(63),OP_EQ, 5);
+ /* incorrect mathematically, but as specified: */
+ tt_int_op(tor_log2(0),OP_EQ, 0);
+ tt_int_op(tor_log2(1),OP_EQ, 0);
+ tt_int_op(tor_log2(2),OP_EQ, 1);
+ tt_int_op(tor_log2(3),OP_EQ, 1);
+ tt_int_op(tor_log2(4),OP_EQ, 2);
+ tt_int_op(tor_log2(5),OP_EQ, 2);
+ tt_int_op(tor_log2(U64_LITERAL(40000000000000000)),OP_EQ, 55);
+ tt_int_op(tor_log2(UINT64_MAX),OP_EQ, 63);
/* Test round_to_power_of_2 */
- tt_u64_op(round_to_power_of_2(120), ==, 128);
- tt_u64_op(round_to_power_of_2(128), ==, 128);
- tt_u64_op(round_to_power_of_2(130), ==, 128);
- tt_u64_op(round_to_power_of_2(U64_LITERAL(40000000000000000)), ==,
+ tt_u64_op(round_to_power_of_2(120), OP_EQ, 128);
+ tt_u64_op(round_to_power_of_2(128), OP_EQ, 128);
+ tt_u64_op(round_to_power_of_2(130), OP_EQ, 128);
+ tt_u64_op(round_to_power_of_2(U64_LITERAL(40000000000000000)), OP_EQ,
U64_LITERAL(1)<<55);
- tt_u64_op(round_to_power_of_2(U64_LITERAL(0xffffffffffffffff)), ==,
+ tt_u64_op(round_to_power_of_2(U64_LITERAL(0xffffffffffffffff)), OP_EQ,
U64_LITERAL(1)<<63);
- tt_u64_op(round_to_power_of_2(0), ==, 1);
- tt_u64_op(round_to_power_of_2(1), ==, 1);
- tt_u64_op(round_to_power_of_2(2), ==, 2);
- tt_u64_op(round_to_power_of_2(3), ==, 2);
- tt_u64_op(round_to_power_of_2(4), ==, 4);
- tt_u64_op(round_to_power_of_2(5), ==, 4);
- tt_u64_op(round_to_power_of_2(6), ==, 4);
- tt_u64_op(round_to_power_of_2(7), ==, 8);
+ tt_u64_op(round_to_power_of_2(0), OP_EQ, 1);
+ tt_u64_op(round_to_power_of_2(1), OP_EQ, 1);
+ tt_u64_op(round_to_power_of_2(2), OP_EQ, 2);
+ tt_u64_op(round_to_power_of_2(3), OP_EQ, 2);
+ tt_u64_op(round_to_power_of_2(4), OP_EQ, 4);
+ tt_u64_op(round_to_power_of_2(5), OP_EQ, 4);
+ tt_u64_op(round_to_power_of_2(6), OP_EQ, 4);
+ tt_u64_op(round_to_power_of_2(7), OP_EQ, 8);
done:
;
@@ -1758,8 +1763,8 @@ test_util_gzip(void *arg)
tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1,
GZIP_METHOD, 1, LOG_INFO));
tt_assert(buf3);
- tt_int_op(strlen(buf1) + 1,==, len2);
- tt_str_op(buf1,==, buf3);
+ tt_int_op(strlen(buf1) + 1,OP_EQ, len2);
+ tt_str_op(buf1,OP_EQ, buf3);
tor_free(buf2);
tor_free(buf3);
@@ -1773,8 +1778,8 @@ test_util_gzip(void *arg)
tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1,
ZLIB_METHOD, 1, LOG_INFO));
tt_assert(buf3);
- tt_int_op(strlen(buf1) + 1,==, len2);
- tt_str_op(buf1,==, buf3);
+ tt_int_op(strlen(buf1) + 1,OP_EQ, len2);
+ tt_str_op(buf1,OP_EQ, buf3);
/* Check whether we can uncompress concatenated, compressed strings. */
tor_free(buf3);
@@ -1782,8 +1787,8 @@ test_util_gzip(void *arg)
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,==, len2);
- tt_mem_op(buf3,==,
+ tt_int_op((strlen(buf1)+1)*2,OP_EQ, len2);
+ tt_mem_op(buf3,OP_EQ,
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ\0"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAZ\0",
(strlen(buf1)+1)*2);
@@ -1823,20 +1828,21 @@ test_util_gzip(void *arg)
len2 = 21;
tt_assert(tor_zlib_process(state, &cp1, &len1, &ccp2, &len2, 0)
== TOR_ZLIB_OK);
- tt_int_op(0,==, len2); /* Make sure we compressed it all. */
+ 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,==, len2);
+ tt_int_op(0,OP_EQ, len2);
tt_assert(cp1 > cp2); /* Make sure we really added something. */
tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1,
ZLIB_METHOD, 1, LOG_WARN));
- tt_str_op(buf3,==,"ABCDEFGHIJABCDEFGHIJ"); /*Make sure it compressed right.*/
- tt_int_op(21,==, len2);
+ /* Make sure it compressed right. */
+ tt_str_op(buf3, OP_EQ, "ABCDEFGHIJABCDEFGHIJ");
+ tt_int_op(21,OP_EQ, len2);
done:
if (state)
@@ -1867,25 +1873,25 @@ test_util_mmap(void *arg)
mapping = tor_mmap_file(fname1);
tt_assert(mapping);
- tt_int_op(mapping->size,==, strlen("Short file."));
- tt_str_op(mapping->data,==, "Short file.");
+ tt_int_op(mapping->size,OP_EQ, strlen("Short file."));
+ tt_str_op(mapping->data,OP_EQ, "Short file.");
#ifdef _WIN32
- tt_int_op(0, ==, tor_munmap_file(mapping));
+ tt_int_op(0, OP_EQ, tor_munmap_file(mapping));
mapping = NULL;
tt_assert(unlink(fname1) == 0);
#else
/* make sure we can unlink. */
tt_assert(unlink(fname1) == 0);
- tt_str_op(mapping->data,==, "Short file.");
- tt_int_op(0, ==, tor_munmap_file(mapping));
+ tt_str_op(mapping->data,OP_EQ, "Short file.");
+ tt_int_op(0, OP_EQ, tor_munmap_file(mapping));
mapping = NULL;
#endif
/* Now a zero-length file. */
write_str_to_file(fname1, "", 1);
mapping = tor_mmap_file(fname1);
- tt_ptr_op(mapping,==, NULL);
- tt_int_op(ERANGE,==, errno);
+ tt_ptr_op(mapping,OP_EQ, NULL);
+ tt_int_op(ERANGE,OP_EQ, errno);
unlink(fname1);
/* Make sure that we fail to map a no-longer-existent file. */
@@ -1896,18 +1902,18 @@ test_util_mmap(void *arg)
write_bytes_to_file(fname2, buf, buflen, 1);
mapping = tor_mmap_file(fname2);
tt_assert(mapping);
- tt_int_op(mapping->size,==, buflen);
- tt_mem_op(mapping->data,==, buf, buflen);
- tt_int_op(0, ==, tor_munmap_file(mapping));
+ tt_int_op(mapping->size,OP_EQ, buflen);
+ tt_mem_op(mapping->data,OP_EQ, buf, buflen);
+ tt_int_op(0, OP_EQ, tor_munmap_file(mapping));
mapping = NULL;
/* Now try a big aligned file. */
write_bytes_to_file(fname3, buf, 16384, 1);
mapping = tor_mmap_file(fname3);
tt_assert(mapping);
- tt_int_op(mapping->size,==, 16384);
- tt_mem_op(mapping->data,==, buf, 16384);
- tt_int_op(0, ==, tor_munmap_file(mapping));
+ tt_int_op(mapping->size,OP_EQ, 16384);
+ tt_mem_op(mapping->data,OP_EQ, buf, 16384);
+ tt_int_op(0, OP_EQ, tor_munmap_file(mapping));
mapping = NULL;
done:
@@ -1934,9 +1940,9 @@ test_util_control_formats(void *arg)
(void)arg;
sz = read_escaped_data(inp, strlen(inp), &out);
- tt_str_op(out,==,
+ tt_str_op(out,OP_EQ,
".This is a test\nof the emergency \n.system.\n\rZ.\n");
- tt_int_op(sz,==, strlen(out));
+ tt_int_op(sz,OP_EQ, strlen(out));
done:
tor_free(out);
@@ -1968,334 +1974,335 @@ test_util_sscanf(void *arg)
/* Simple tests (malformed patterns, literal matching, ...) */
(void)arg;
- tt_int_op(-1,==, tor_sscanf("123", "%i", &r)); /* %i is not supported */
- tt_int_op(-1,==,
+ tt_int_op(-1,OP_EQ, tor_sscanf("123", "%i", &r)); /* %i is not supported */
+ tt_int_op(-1,OP_EQ,
tor_sscanf("wrong", "%5c", s1)); /* %c cannot have a number. */
- tt_int_op(-1,==, tor_sscanf("hello", "%s", s1)); /* %s needs a number. */
- tt_int_op(-1,==, tor_sscanf("prettylongstring", "%999999s", s1));
+ tt_int_op(-1,OP_EQ, tor_sscanf("hello", "%s", s1)); /* %s needs a number. */
+ tt_int_op(-1,OP_EQ, tor_sscanf("prettylongstring", "%999999s", s1));
#if 0
/* GCC thinks these two are illegal. */
test_eq(-1, tor_sscanf("prettylongstring", "%0s", s1));
test_eq(0, tor_sscanf("prettylongstring", "%10s", NULL));
#endif
/* No '%'-strings: always "success" */
- tt_int_op(0,==, tor_sscanf("hello world", "hello world"));
- tt_int_op(0,==, tor_sscanf("hello world", "good bye"));
+ tt_int_op(0,OP_EQ, tor_sscanf("hello world", "hello world"));
+ tt_int_op(0,OP_EQ, tor_sscanf("hello world", "good bye"));
/* Excess data */
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
tor_sscanf("hello 3", "%u", &u1)); /* have to match the start */
- tt_int_op(0,==, tor_sscanf(" 3 hello", "%u", &u1));
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ, tor_sscanf(" 3 hello", "%u", &u1));
+ tt_int_op(0,OP_EQ,
tor_sscanf(" 3 hello", "%2u", &u1)); /* not even in this case */
- tt_int_op(1,==,
+ tt_int_op(1,OP_EQ,
tor_sscanf("3 hello", "%u", &u1)); /* but trailing is alright */
/* Numbers (ie. %u) */
- tt_int_op(0,==,
+ tt_int_op(0,OP_EQ,
tor_sscanf("hello world 3", "hello worlb %u", &u1)); /* d vs b */
- tt_int_op(1,==, tor_sscanf("12345", "%u", &u1));
- tt_int_op(12345u,==, u1);
- tt_int_op(1,==, tor_sscanf("12346 ", "%u", &u1));
- tt_int_op(12346u,==, u1);
- tt_int_op(0,==, tor_sscanf(" 12347", "%u", &u1));
- tt_int_op(1,==, tor_sscanf(" 12348", " %u", &u1));
- tt_int_op(12348u,==, u1);
- tt_int_op(1,==, tor_sscanf("0", "%u", &u1));
- tt_int_op(0u,==, u1);
- tt_int_op(1,==, tor_sscanf("0000", "%u", &u2));
- tt_int_op(0u,==, u2);
- tt_int_op(0,==, tor_sscanf("", "%u", &u1)); /* absent number */
- tt_int_op(0,==, tor_sscanf("A", "%u", &u1)); /* bogus number */
- tt_int_op(0,==, tor_sscanf("-1", "%u", &u1)); /* negative number */
+ tt_int_op(1,OP_EQ, tor_sscanf("12345", "%u", &u1));
+ tt_int_op(12345u,OP_EQ, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("12346 ", "%u", &u1));
+ tt_int_op(12346u,OP_EQ, u1);
+ tt_int_op(0,OP_EQ, tor_sscanf(" 12347", "%u", &u1));
+ tt_int_op(1,OP_EQ, tor_sscanf(" 12348", " %u", &u1));
+ tt_int_op(12348u,OP_EQ, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("0", "%u", &u1));
+ tt_int_op(0u,OP_EQ, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("0000", "%u", &u2));
+ tt_int_op(0u,OP_EQ, u2);
+ tt_int_op(0,OP_EQ, tor_sscanf("", "%u", &u1)); /* absent number */
+ tt_int_op(0,OP_EQ, tor_sscanf("A", "%u", &u1)); /* bogus number */
+ tt_int_op(0,OP_EQ, tor_sscanf("-1", "%u", &u1)); /* negative number */
/* Numbers with size (eg. %2u) */
- tt_int_op(0,==, tor_sscanf("-1", "%2u", &u1));
- tt_int_op(2,==, tor_sscanf("123456", "%2u%u", &u1, &u2));
- tt_int_op(12u,==, u1);
- tt_int_op(3456u,==, u2);
- tt_int_op(1,==, tor_sscanf("123456", "%8u", &u1));
- tt_int_op(123456u,==, u1);
- tt_int_op(1,==, tor_sscanf("123457 ", "%8u", &u1));
- tt_int_op(123457u,==, u1);
- tt_int_op(0,==, tor_sscanf(" 123456", "%8u", &u1));
- tt_int_op(3,==, tor_sscanf("!12:3:456", "!%2u:%2u:%3u", &u1, &u2, &u3));
- tt_int_op(12u,==, u1);
- tt_int_op(3u,==, u2);
- tt_int_op(456u,==, u3);
- tt_int_op(3,==,
+ tt_int_op(0,OP_EQ, tor_sscanf("-1", "%2u", &u1));
+ tt_int_op(2,OP_EQ, tor_sscanf("123456", "%2u%u", &u1, &u2));
+ tt_int_op(12u,OP_EQ, u1);
+ tt_int_op(3456u,OP_EQ, u2);
+ tt_int_op(1,OP_EQ, tor_sscanf("123456", "%8u", &u1));
+ tt_int_op(123456u,OP_EQ, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("123457 ", "%8u", &u1));
+ tt_int_op(123457u,OP_EQ, u1);
+ tt_int_op(0,OP_EQ, tor_sscanf(" 123456", "%8u", &u1));
+ tt_int_op(3,OP_EQ, tor_sscanf("!12:3:456", "!%2u:%2u:%3u", &u1, &u2, &u3));
+ tt_int_op(12u,OP_EQ, u1);
+ tt_int_op(3u,OP_EQ, u2);
+ tt_int_op(456u,OP_EQ, u3);
+ tt_int_op(3,OP_EQ,
tor_sscanf("67:8:099", "%2u:%2u:%3u", &u1, &u2, &u3)); /* 0s */
- tt_int_op(67u,==, u1);
- tt_int_op(8u,==, u2);
- tt_int_op(99u,==, u3);
+ tt_int_op(67u,OP_EQ, u1);
+ tt_int_op(8u,OP_EQ, u2);
+ tt_int_op(99u,OP_EQ, u3);
/* %u does not match space.*/
- tt_int_op(2,==, tor_sscanf("12:3: 45", "%2u:%2u:%3u", &u1, &u2, &u3));
- tt_int_op(12u,==, u1);
- tt_int_op(3u,==, u2);
+ tt_int_op(2,OP_EQ, tor_sscanf("12:3: 45", "%2u:%2u:%3u", &u1, &u2, &u3));
+ tt_int_op(12u,OP_EQ, u1);
+ tt_int_op(3u,OP_EQ, u2);
/* %u does not match negative numbers. */
- tt_int_op(2,==, tor_sscanf("67:8:-9", "%2u:%2u:%3u", &u1, &u2, &u3));
- tt_int_op(67u,==, u1);
- tt_int_op(8u,==, u2);
+ tt_int_op(2,OP_EQ, tor_sscanf("67:8:-9", "%2u:%2u:%3u", &u1, &u2, &u3));
+ tt_int_op(67u,OP_EQ, u1);
+ tt_int_op(8u,OP_EQ, u2);
/* Arbitrary amounts of 0-padding are okay */
- tt_int_op(3,==, tor_sscanf("12:03:000000000000000099", "%2u:%2u:%u",
+ tt_int_op(3,OP_EQ, tor_sscanf("12:03:000000000000000099", "%2u:%2u:%u",
&u1, &u2, &u3));
- tt_int_op(12u,==, u1);
- tt_int_op(3u,==, u2);
- tt_int_op(99u,==, u3);
+ tt_int_op(12u,OP_EQ, u1);
+ tt_int_op(3u,OP_EQ, u2);
+ tt_int_op(99u,OP_EQ, u3);
/* Hex (ie. %x) */
- tt_int_op(3,==, tor_sscanf("1234 02aBcdEf ff", "%x %x %x", &u1, &u2, &u3));
- tt_int_op(0x1234,==, u1);
- tt_int_op(0x2ABCDEF,==, u2);
- tt_int_op(0xFF,==, u3);
+ tt_int_op(3,OP_EQ,
+ tor_sscanf("1234 02aBcdEf ff", "%x %x %x", &u1, &u2, &u3));
+ tt_int_op(0x1234,OP_EQ, u1);
+ tt_int_op(0x2ABCDEF,OP_EQ, u2);
+ tt_int_op(0xFF,OP_EQ, u3);
/* Width works on %x */
- tt_int_op(3,==, tor_sscanf("f00dcafe444", "%4x%4x%u", &u1, &u2, &u3));
- tt_int_op(0xf00d,==, u1);
- tt_int_op(0xcafe,==, u2);
- tt_int_op(444,==, u3);
+ tt_int_op(3,OP_EQ, tor_sscanf("f00dcafe444", "%4x%4x%u", &u1, &u2, &u3));
+ tt_int_op(0xf00d,OP_EQ, u1);
+ tt_int_op(0xcafe,OP_EQ, u2);
+ tt_int_op(444,OP_EQ, u3);
/* Literal '%' (ie. '%%') */
- tt_int_op(1,==, tor_sscanf("99% fresh", "%3u%% fresh", &u1));
- tt_int_op(99,==, u1);
- tt_int_op(0,==, tor_sscanf("99 fresh", "%% %3u %s", &u1, s1));
- tt_int_op(1,==, tor_sscanf("99 fresh", "%3u%% %s", &u1, s1));
- tt_int_op(2,==, tor_sscanf("99 fresh", "%3u %5s %%", &u1, s1));
- tt_int_op(99,==, u1);
- tt_str_op(s1,==, "fresh");
- tt_int_op(1,==, tor_sscanf("% boo", "%% %3s", s1));
- tt_str_op("boo",==, s1);
+ tt_int_op(1,OP_EQ, tor_sscanf("99% fresh", "%3u%% fresh", &u1));
+ tt_int_op(99,OP_EQ, u1);
+ tt_int_op(0,OP_EQ, tor_sscanf("99 fresh", "%% %3u %s", &u1, s1));
+ tt_int_op(1,OP_EQ, tor_sscanf("99 fresh", "%3u%% %s", &u1, s1));
+ tt_int_op(2,OP_EQ, tor_sscanf("99 fresh", "%3u %5s %%", &u1, s1));
+ tt_int_op(99,OP_EQ, u1);
+ tt_str_op(s1,OP_EQ, "fresh");
+ tt_int_op(1,OP_EQ, tor_sscanf("% boo", "%% %3s", s1));
+ tt_str_op("boo",OP_EQ, s1);
/* Strings (ie. %s) */
- tt_int_op(2,==, tor_sscanf("hello", "%3s%7s", s1, s2));
- tt_str_op(s1,==, "hel");
- tt_str_op(s2,==, "lo");
- tt_int_op(2,==, tor_sscanf("WD40", "%2s%u", s3, &u1)); /* %s%u */
- tt_str_op(s3,==, "WD");
- tt_int_op(40,==, u1);
- tt_int_op(2,==, tor_sscanf("WD40", "%3s%u", s3, &u1)); /* %s%u */
- tt_str_op(s3,==, "WD4");
- tt_int_op(0,==, u1);
- tt_int_op(2,==, tor_sscanf("76trombones", "%6u%9s", &u1, s1)); /* %u%s */
- tt_int_op(76,==, u1);
- tt_str_op(s1,==, "trombones");
- tt_int_op(1,==, tor_sscanf("prettylongstring", "%999s", s1));
- tt_str_op(s1,==, "prettylongstring");
+ tt_int_op(2,OP_EQ, tor_sscanf("hello", "%3s%7s", s1, s2));
+ tt_str_op(s1,OP_EQ, "hel");
+ tt_str_op(s2,OP_EQ, "lo");
+ tt_int_op(2,OP_EQ, tor_sscanf("WD40", "%2s%u", s3, &u1)); /* %s%u */
+ tt_str_op(s3,OP_EQ, "WD");
+ tt_int_op(40,OP_EQ, u1);
+ tt_int_op(2,OP_EQ, tor_sscanf("WD40", "%3s%u", s3, &u1)); /* %s%u */
+ tt_str_op(s3,OP_EQ, "WD4");
+ tt_int_op(0,OP_EQ, u1);
+ tt_int_op(2,OP_EQ, tor_sscanf("76trombones", "%6u%9s", &u1, s1)); /* %u%s */
+ tt_int_op(76,OP_EQ, u1);
+ tt_str_op(s1,OP_EQ, "trombones");
+ tt_int_op(1,OP_EQ, tor_sscanf("prettylongstring", "%999s", s1));
+ tt_str_op(s1,OP_EQ, "prettylongstring");
/* %s doesn't eat spaces */
- tt_int_op(2,==, tor_sscanf("hello world", "%9s %9s", s1, s2));
- tt_str_op(s1,==, "hello");
- tt_str_op(s2,==, "world");
- tt_int_op(2,==, tor_sscanf("bye world?", "%9s %9s", s1, s2));
- tt_str_op(s1,==, "bye");
- tt_str_op(s2,==, "");
- tt_int_op(3,==,
+ tt_int_op(2,OP_EQ, tor_sscanf("hello world", "%9s %9s", s1, s2));
+ tt_str_op(s1,OP_EQ, "hello");
+ tt_str_op(s2,OP_EQ, "world");
+ tt_int_op(2,OP_EQ, tor_sscanf("bye world?", "%9s %9s", s1, s2));
+ tt_str_op(s1,OP_EQ, "bye");
+ tt_str_op(s2,OP_EQ, "");
+ tt_int_op(3,OP_EQ,
tor_sscanf("hi", "%9s%9s%3s", s1, s2, s3)); /* %s can be empty. */
- tt_str_op(s1,==, "hi");
- tt_str_op(s2,==, "");
- tt_str_op(s3,==, "");
+ tt_str_op(s1,OP_EQ, "hi");
+ tt_str_op(s2,OP_EQ, "");
+ tt_str_op(s3,OP_EQ, "");
- tt_int_op(3,==, tor_sscanf("1.2.3", "%u.%u.%u%c", &u1, &u2, &u3, &ch));
- tt_int_op(4,==,
+ tt_int_op(3,OP_EQ, tor_sscanf("1.2.3", "%u.%u.%u%c", &u1, &u2, &u3, &ch));
+ tt_int_op(4,OP_EQ,
tor_sscanf("1.2.3 foobar", "%u.%u.%u%c", &u1, &u2, &u3, &ch));
- tt_int_op(' ',==, ch);
+ tt_int_op(' ',OP_EQ, ch);
r = tor_sscanf("12345 -67890 -1", "%d %ld %d", &int1, &lng1, &int2);
- tt_int_op(r,==, 3);
- tt_int_op(int1,==, 12345);
- tt_int_op(lng1,==, -67890);
- tt_int_op(int2,==, -1);
+ tt_int_op(r,OP_EQ, 3);
+ tt_int_op(int1,OP_EQ, 12345);
+ tt_int_op(lng1,OP_EQ, -67890);
+ tt_int_op(int2,OP_EQ, -1);
#if SIZEOF_INT == 4
/* %u */
/* UINT32_MAX should work */
- tt_int_op(1,==, tor_sscanf("4294967295", "%u", &u1));
- tt_int_op(4294967295U,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("4294967295", "%u", &u1));
+ tt_int_op(4294967295U,OP_EQ, u1);
/* But UINT32_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("4294967296", "%u", &u1));
+ tt_int_op(0,OP_EQ, tor_sscanf("4294967296", "%u", &u1));
/* but parsing only 9... */
- tt_int_op(1,==, tor_sscanf("4294967296", "%9u", &u1));
- tt_int_op(429496729U,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("4294967296", "%9u", &u1));
+ tt_int_op(429496729U,OP_EQ, u1);
/* %x */
/* UINT32_MAX should work */
- tt_int_op(1,==, tor_sscanf("FFFFFFFF", "%x", &u1));
- tt_int_op(0xFFFFFFFF,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("FFFFFFFF", "%x", &u1));
+ tt_int_op(0xFFFFFFFF,OP_EQ, u1);
/* But UINT32_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("100000000", "%x", &u1));
+ tt_int_op(0,OP_EQ, tor_sscanf("100000000", "%x", &u1));
/* %d */
/* INT32_MIN and INT32_MAX should work */
r = tor_sscanf("-2147483648. 2147483647.", "%d. %d.", &int1, &int2);
- tt_int_op(r,==, 2);
- tt_int_op(int1,==, -2147483647 - 1);
- tt_int_op(int2,==, 2147483647);
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(int1,OP_EQ, -2147483647 - 1);
+ tt_int_op(int2,OP_EQ, 2147483647);
/* But INT32_MIN - 1 and INT32_MAX + 1 shouldn't work */
r = tor_sscanf("-2147483649.", "%d.", &int1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("2147483648.", "%d.", &int1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
/* and the first failure stops further processing */
r = tor_sscanf("-2147483648. 2147483648.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 1);
+ tt_int_op(r,OP_EQ, 1);
r = tor_sscanf("-2147483649. 2147483647.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("2147483648. -2147483649.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
#elif SIZEOF_INT == 8
/* %u */
/* UINT64_MAX should work */
- tt_int_op(1,==, tor_sscanf("18446744073709551615", "%u", &u1));
- tt_int_op(18446744073709551615U,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("18446744073709551615", "%u", &u1));
+ tt_int_op(18446744073709551615U,OP_EQ, u1);
/* But UINT64_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("18446744073709551616", "%u", &u1));
+ tt_int_op(0,OP_EQ, tor_sscanf("18446744073709551616", "%u", &u1));
/* but parsing only 19... */
- tt_int_op(1,==, tor_sscanf("18446744073709551616", "%19u", &u1));
- tt_int_op(1844674407370955161U,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("18446744073709551616", "%19u", &u1));
+ tt_int_op(1844674407370955161U,OP_EQ, u1);
/* %x */
/* UINT64_MAX should work */
- tt_int_op(1,==, tor_sscanf("FFFFFFFFFFFFFFFF", "%x", &u1));
- tt_int_op(0xFFFFFFFFFFFFFFFF,==, u1);
+ tt_int_op(1,OP_EQ, tor_sscanf("FFFFFFFFFFFFFFFF", "%x", &u1));
+ tt_int_op(0xFFFFFFFFFFFFFFFF,OP_EQ, u1);
/* But UINT64_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("10000000000000000", "%x", &u1));
+ tt_int_op(0,OP_EQ, tor_sscanf("10000000000000000", "%x", &u1));
/* %d */
/* INT64_MIN and INT64_MAX should work */
r = tor_sscanf("-9223372036854775808. 9223372036854775807.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 2);
- tt_int_op(int1,==, -9223372036854775807 - 1);
- tt_int_op(int2,==, 9223372036854775807);
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(int1,OP_EQ, -9223372036854775807 - 1);
+ tt_int_op(int2,OP_EQ, 9223372036854775807);
/* But INT64_MIN - 1 and INT64_MAX + 1 shouldn't work */
r = tor_sscanf("-9223372036854775809.", "%d.", &int1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("9223372036854775808.", "%d.", &int1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
/* and the first failure stops further processing */
r = tor_sscanf("-9223372036854775808. 9223372036854775808.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 1);
+ tt_int_op(r,OP_EQ, 1);
r = tor_sscanf("-9223372036854775809. 9223372036854775807.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("9223372036854775808. -9223372036854775809.",
"%d. %d.", &int1, &int2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
#endif
#if SIZEOF_LONG == 4
/* %lu */
/* UINT32_MAX should work */
- tt_int_op(1,==, tor_sscanf("4294967295", "%lu", &ulng));
- tt_int_op(4294967295UL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("4294967295", "%lu", &ulng));
+ tt_int_op(4294967295UL,OP_EQ, ulng);
/* But UINT32_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("4294967296", "%lu", &ulng));
+ tt_int_op(0,OP_EQ, tor_sscanf("4294967296", "%lu", &ulng));
/* but parsing only 9... */
- tt_int_op(1,==, tor_sscanf("4294967296", "%9lu", &ulng));
- tt_int_op(429496729UL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("4294967296", "%9lu", &ulng));
+ tt_int_op(429496729UL,OP_EQ, ulng);
/* %lx */
/* UINT32_MAX should work */
- tt_int_op(1,==, tor_sscanf("FFFFFFFF", "%lx", &ulng));
- tt_int_op(0xFFFFFFFFUL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("FFFFFFFF", "%lx", &ulng));
+ tt_int_op(0xFFFFFFFFUL,OP_EQ, ulng);
/* But UINT32_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("100000000", "%lx", &ulng));
+ tt_int_op(0,OP_EQ, tor_sscanf("100000000", "%lx", &ulng));
/* %ld */
/* INT32_MIN and INT32_MAX should work */
r = tor_sscanf("-2147483648. 2147483647.", "%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 2);
- tt_int_op(lng1,==, -2147483647L - 1L);
- tt_int_op(lng2,==, 2147483647L);
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(lng1,OP_EQ, -2147483647L - 1L);
+ tt_int_op(lng2,OP_EQ, 2147483647L);
/* But INT32_MIN - 1 and INT32_MAX + 1 shouldn't work */
r = tor_sscanf("-2147483649.", "%ld.", &lng1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("2147483648.", "%ld.", &lng1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
/* and the first failure stops further processing */
r = tor_sscanf("-2147483648. 2147483648.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 1);
+ tt_int_op(r,OP_EQ, 1);
r = tor_sscanf("-2147483649. 2147483647.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("2147483648. -2147483649.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
#elif SIZEOF_LONG == 8
/* %lu */
/* UINT64_MAX should work */
- tt_int_op(1,==, tor_sscanf("18446744073709551615", "%lu", &ulng));
- tt_int_op(18446744073709551615UL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("18446744073709551615", "%lu", &ulng));
+ tt_int_op(18446744073709551615UL,OP_EQ, ulng);
/* But UINT64_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("18446744073709551616", "%lu", &ulng));
+ tt_int_op(0,OP_EQ, tor_sscanf("18446744073709551616", "%lu", &ulng));
/* but parsing only 19... */
- tt_int_op(1,==, tor_sscanf("18446744073709551616", "%19lu", &ulng));
- tt_int_op(1844674407370955161UL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("18446744073709551616", "%19lu", &ulng));
+ tt_int_op(1844674407370955161UL,OP_EQ, ulng);
/* %lx */
/* UINT64_MAX should work */
- tt_int_op(1,==, tor_sscanf("FFFFFFFFFFFFFFFF", "%lx", &ulng));
- tt_int_op(0xFFFFFFFFFFFFFFFFUL,==, ulng);
+ tt_int_op(1,OP_EQ, tor_sscanf("FFFFFFFFFFFFFFFF", "%lx", &ulng));
+ tt_int_op(0xFFFFFFFFFFFFFFFFUL,OP_EQ, ulng);
/* But UINT64_MAX + 1 shouldn't work */
- tt_int_op(0,==, tor_sscanf("10000000000000000", "%lx", &ulng));
+ tt_int_op(0,OP_EQ, tor_sscanf("10000000000000000", "%lx", &ulng));
/* %ld */
/* INT64_MIN and INT64_MAX should work */
r = tor_sscanf("-9223372036854775808. 9223372036854775807.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 2);
- tt_int_op(lng1,==, -9223372036854775807L - 1L);
- tt_int_op(lng2,==, 9223372036854775807L);
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(lng1,OP_EQ, -9223372036854775807L - 1L);
+ tt_int_op(lng2,OP_EQ, 9223372036854775807L);
/* But INT64_MIN - 1 and INT64_MAX + 1 shouldn't work */
r = tor_sscanf("-9223372036854775809.", "%ld.", &lng1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("9223372036854775808.", "%ld.", &lng1);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
/* and the first failure stops further processing */
r = tor_sscanf("-9223372036854775808. 9223372036854775808.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 1);
+ tt_int_op(r,OP_EQ, 1);
r = tor_sscanf("-9223372036854775809. 9223372036854775807.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
r = tor_sscanf("9223372036854775808. -9223372036854775809.",
"%ld. %ld.", &lng1, &lng2);
- tt_int_op(r,==, 0);
+ tt_int_op(r,OP_EQ, 0);
#endif
r = tor_sscanf("123.456 .000007 -900123123.2000787 00003.2",
"%lf %lf %lf %lf", &d1,&d2,&d3,&d4);
- tt_int_op(r,==, 4);
+ tt_int_op(r,OP_EQ, 4);
test_feq(d1, 123.456);
test_feq(d2, .000007);
test_feq(d3, -900123123.2000787);
@@ -2350,234 +2357,234 @@ test_util_format_time_interval(void *arg)
/* ignore exact spelling of "second(s)"*/
format_time_interval(dbuf, sizeof(dbuf), 0);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 0);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 0);
format_time_interval(dbuf, sizeof(dbuf), 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 1);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 1);
format_time_interval(dbuf, sizeof(dbuf), 10);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 10);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 10);
format_time_interval(dbuf, sizeof(dbuf), 59);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 59);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 59);
/* negative seconds are reported as their absolute value */
format_time_interval(dbuf, sizeof(dbuf), -4);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 4);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 4);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
format_time_interval(dbuf, sizeof(dbuf), -32);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &sec, label_s);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(sec,==, 32);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(sec,OP_EQ, 32);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
/* minutes: 1:00, 1:01, 1:59, 2:00, 2:01, 59:59 */
/* ignore trailing "0 second(s)", if present */
format_time_interval(dbuf, sizeof(dbuf), 60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &min, label_m);
- tt_int_op(r,==, 2);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(min,==, 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(r,OP_EQ, 2);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(min,OP_EQ, 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
/* ignore exact spelling of "minute(s)," and "second(s)" */
format_time_interval(dbuf, sizeof(dbuf), 60 + 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 1);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 1);
- tt_ci_char_op(label_s[0],==, 's');
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 1);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 1);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
format_time_interval(dbuf, sizeof(dbuf), 60*2 - 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 1);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 59);
- tt_ci_char_op(label_s[0],==, 's');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 1);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 59);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
/* ignore trailing "0 second(s)", if present */
format_time_interval(dbuf, sizeof(dbuf), 60*2);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &min, label_m);
- tt_int_op(r,==, 2);
- tt_int_op(min,==, 2);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(min,OP_EQ, 2);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* ignore exact spelling of "minute(s)," and "second(s)" */
format_time_interval(dbuf, sizeof(dbuf), 60*2 + 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 2);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 1);
- tt_ci_char_op(label_s[0],==, 's');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 2);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 1);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
format_time_interval(dbuf, sizeof(dbuf), 60*60 - 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 59);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 59);
- tt_ci_char_op(label_s[0],==, 's');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 59);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 59);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
/* negative minutes are reported as their absolute value */
/* ignore trailing "0 second(s)", if present */
format_time_interval(dbuf, sizeof(dbuf), -3*60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &min, label_m);
- tt_int_op(r,==, 2);
- tt_int_op(min,==, 3);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(min,OP_EQ, 3);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* ignore exact spelling of "minute(s)," and "second(s)" */
format_time_interval(dbuf, sizeof(dbuf), -96);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 1);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 36);
- tt_ci_char_op(label_s[0],==, 's');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 1);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 36);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
format_time_interval(dbuf, sizeof(dbuf), -2815);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&min, label_m, &sec, label_s);
- tt_int_op(r,==, 4);
- tt_int_op(min,==, 46);
- tt_ci_char_op(label_m[0],==, 'm');
- tt_int_op(sec,==, 55);
- tt_ci_char_op(label_s[0],==, 's');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(min,OP_EQ, 46);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
+ tt_int_op(sec,OP_EQ, 55);
+ tt_ci_char_op(label_s[0],OP_EQ, 's');
/* hours: 1:00, 1:00:01, 1:01, 23:59, 23:59:59 */
/* always ignore trailing seconds, if present */
/* ignore trailing "0 minute(s)" etc., if present */
format_time_interval(dbuf, sizeof(dbuf), 60*60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &hour, label_h);
- tt_int_op(r,==, 2);
- tt_int_op(hour,==, 1);
- tt_ci_char_op(label_h[0],==, 'h');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(hour,OP_EQ, 1);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
format_time_interval(dbuf, sizeof(dbuf), 60*60 + 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &hour, label_h);
- tt_int_op(r,==, 2);
- tt_int_op(hour,==, 1);
- tt_ci_char_op(label_h[0],==, 'h');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(hour,OP_EQ, 1);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
/* ignore exact spelling of "hour(s)," etc. */
format_time_interval(dbuf, sizeof(dbuf), 60*60 + 60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&hour, label_h, &min, label_m);
- tt_int_op(r,==, 4);
- tt_int_op(hour,==, 1);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 1);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(hour,OP_EQ, 1);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 1);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
format_time_interval(dbuf, sizeof(dbuf), 24*60*60 - 60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&hour, label_h, &min, label_m);
- tt_int_op(r,==, 4);
- tt_int_op(hour,==, 23);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 59);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(hour,OP_EQ, 23);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 59);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
format_time_interval(dbuf, sizeof(dbuf), 24*60*60 - 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&hour, label_h, &min, label_m);
- tt_int_op(r,==, 4);
- tt_int_op(hour,==, 23);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 59);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(hour,OP_EQ, 23);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 59);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* negative hours are reported as their absolute value */
/* ignore exact spelling of "hour(s)," etc., if present */
format_time_interval(dbuf, sizeof(dbuf), -2*60*60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &hour, label_h);
- tt_int_op(r,==, 2);
- tt_int_op(hour,==, 2);
- tt_ci_char_op(label_h[0],==, 'h');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(hour,OP_EQ, 2);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
format_time_interval(dbuf, sizeof(dbuf), -75804);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&hour, label_h, &min, label_m);
- tt_int_op(r,==, 4);
- tt_int_op(hour,==, 21);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 3);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(hour,OP_EQ, 21);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 3);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* days: 1:00, 1:00:00:01, 1:00:01, 1:01 */
/* always ignore trailing seconds, if present */
/* ignore trailing "0 hours(s)" etc., if present */
format_time_interval(dbuf, sizeof(dbuf), 24*60*60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &day, label_d);
- tt_int_op(r,==, 2);
- tt_int_op(day,==, 1);
- tt_ci_char_op(label_d[0],==, 'd');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(day,OP_EQ, 1);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
format_time_interval(dbuf, sizeof(dbuf), 24*60*60 + 1);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_, &day, label_d);
- tt_int_op(r,==, 2);
- tt_int_op(day,==, 1);
- tt_ci_char_op(label_d[0],==, 'd');
+ tt_int_op(r,OP_EQ, 2);
+ tt_int_op(day,OP_EQ, 1);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
/* ignore exact spelling of "days(s)," etc. */
format_time_interval(dbuf, sizeof(dbuf), 24*60*60 + 60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
if (r == -1) {
@@ -2586,68 +2593,68 @@ test_util_format_time_interval(void *arg)
&day, label_d, &min, label_m);
}
tt_assert(r == 4 || r == 6);
- tt_int_op(day,==, 1);
- tt_ci_char_op(label_d[0],==, 'd');
+ tt_int_op(day,OP_EQ, 1);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
if (r == 6) {
- tt_int_op(hour,==, 0);
- tt_ci_char_op(label_h[0],==, 'h');
+ tt_int_op(hour,OP_EQ, 0);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
}
- tt_int_op(min,==, 1);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(min,OP_EQ, 1);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* ignore trailing "0 minutes(s)" etc., if present */
format_time_interval(dbuf, sizeof(dbuf), 24*60*60 + 60*60);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_,
&day, label_d, &hour, label_h);
- tt_int_op(r,==, 4);
- tt_int_op(day,==, 1);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 1);
- tt_ci_char_op(label_h[0],==, 'h');
+ tt_int_op(r,OP_EQ, 4);
+ tt_int_op(day,OP_EQ, 1);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 1);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
/* negative days are reported as their absolute value */
format_time_interval(dbuf, sizeof(dbuf), -21936184);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 253);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 21);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 23);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 253);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 21);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 23);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* periods > 1 year are reported in days (warn?) */
/* ignore exact spelling of "days(s)," etc., if present */
format_time_interval(dbuf, sizeof(dbuf), 758635154);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 8780);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 11);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 59);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 8780);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 11);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 59);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* negative periods > 1 year are reported in days (warn?) */
format_time_interval(dbuf, sizeof(dbuf), -1427014922);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 16516);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 9);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 2);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 16516);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 9);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 2);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
#if SIZEOF_LONG == 4 || SIZEOF_LONG == 8
@@ -2656,32 +2663,32 @@ test_util_format_time_interval(void *arg)
/* INT32_MAX */
format_time_interval(dbuf, sizeof(dbuf), 2147483647);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 24855);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 3);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 14);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 24855);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 3);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 14);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* and 7 seconds - ignored */
/* INT32_MIN: check that we get the absolute value of interval,
* which doesn't actually fit in int32_t.
* We expect INT32_MAX or INT32_MAX + 1 with 64 bit longs */
format_time_interval(dbuf, sizeof(dbuf), -2147483647L - 1L);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 24855);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 3);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 14);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 24855);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 3);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 14);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* and 7 or 8 seconds - ignored */
#endif
@@ -2693,16 +2700,16 @@ test_util_format_time_interval(void *arg)
/* INT64_MAX */
format_time_interval(dbuf, sizeof(dbuf), 9223372036854775807L);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 106751991167300L);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 15);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 30);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 106751991167300L);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 15);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 30);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* and 7 seconds - ignored */
/* INT64_MIN: check that we get the absolute value of interval,
@@ -2710,16 +2717,16 @@ test_util_format_time_interval(void *arg)
* We expect INT64_MAX */
format_time_interval(dbuf, sizeof(dbuf),
-9223372036854775807L - 1L);
- tt_int_op(strnlen(dbuf, DBUF_SIZE),<=, DBUF_SIZE - 1);
+ tt_int_op(strnlen(dbuf, DBUF_SIZE),OP_LE, DBUF_SIZE - 1);
r = tor_sscanf(dbuf, TL_ " " TL_ " " TL_,
&day, label_d, &hour, label_h, &min, label_m);
- tt_int_op(r,==, 6);
- tt_int_op(day,==, 106751991167300L);
- tt_ci_char_op(label_d[0],==, 'd');
- tt_int_op(hour,==, 15);
- tt_ci_char_op(label_h[0],==, 'h');
- tt_int_op(min,==, 30);
- tt_ci_char_op(label_m[0],==, 'm');
+ tt_int_op(r,OP_EQ, 6);
+ tt_int_op(day,OP_EQ, 106751991167300L);
+ tt_ci_char_op(label_d[0],OP_EQ, 'd');
+ tt_int_op(hour,OP_EQ, 15);
+ tt_ci_char_op(label_h[0],OP_EQ, 'h');
+ tt_int_op(min,OP_EQ, 30);
+ tt_ci_char_op(label_m[0],OP_EQ, 'm');
/* and 7 or 8 seconds - ignored */
#endif
@@ -2741,30 +2748,30 @@ test_util_path_is_relative(void *arg)
{
/* OS-independent tests */
(void)arg;
- tt_int_op(1,==, path_is_relative(""));
- tt_int_op(1,==, path_is_relative("dir"));
- tt_int_op(1,==, path_is_relative("dir/"));
- tt_int_op(1,==, path_is_relative("./dir"));
- tt_int_op(1,==, path_is_relative("../dir"));
+ tt_int_op(1,OP_EQ, path_is_relative(""));
+ tt_int_op(1,OP_EQ, path_is_relative("dir"));
+ tt_int_op(1,OP_EQ, path_is_relative("dir/"));
+ tt_int_op(1,OP_EQ, path_is_relative("./dir"));
+ tt_int_op(1,OP_EQ, path_is_relative("../dir"));
- tt_int_op(0,==, path_is_relative("/"));
- tt_int_op(0,==, path_is_relative("/dir"));
- tt_int_op(0,==, path_is_relative("/dir/"));
+ tt_int_op(0,OP_EQ, path_is_relative("/"));
+ tt_int_op(0,OP_EQ, path_is_relative("/dir"));
+ tt_int_op(0,OP_EQ, path_is_relative("/dir/"));
/* Windows */
#ifdef _WIN32
/* I don't have Windows so I can't test this, hence the "#ifdef
0". These are tests that look useful, so please try to get them
running and uncomment if it all works as it should */
- tt_int_op(1,==, path_is_relative("dir"));
- tt_int_op(1,==, path_is_relative("dir\\"));
- tt_int_op(1,==, path_is_relative("dir\\a:"));
- tt_int_op(1,==, path_is_relative("dir\\a:\\"));
- tt_int_op(1,==, path_is_relative("http:\\dir"));
-
- tt_int_op(0,==, path_is_relative("\\dir"));
- tt_int_op(0,==, path_is_relative("a:\\dir"));
- tt_int_op(0,==, path_is_relative("z:\\dir"));
+ tt_int_op(1,OP_EQ, path_is_relative("dir"));
+ tt_int_op(1,OP_EQ, path_is_relative("dir\\"));
+ tt_int_op(1,OP_EQ, path_is_relative("dir\\a:"));
+ tt_int_op(1,OP_EQ, path_is_relative("dir\\a:\\"));
+ tt_int_op(1,OP_EQ, path_is_relative("http:\\dir"));
+
+ tt_int_op(0,OP_EQ, path_is_relative("\\dir"));
+ tt_int_op(0,OP_EQ, path_is_relative("a:\\dir"));
+ tt_int_op(0,OP_EQ, path_is_relative("z:\\dir"));
#endif
done:
@@ -2793,7 +2800,7 @@ test_util_mempool(void *arg)
tt_assert(pool);
tt_assert(pool->new_chunk_capacity >= 10);
tt_assert(pool->item_alloc_size >= sizeof(void*)+241);
- tt_int_op(pool->item_alloc_size & 0x03,==, 0);
+ tt_int_op(pool->item_alloc_size & 0x03,OP_EQ, 0);
tt_assert(pool->new_chunk_capacity < 60);
allocated = smartlist_new();
@@ -2857,16 +2864,16 @@ test_util_memarea(void *arg)
tt_assert(p1+64 <= p2);
tt_assert(p2+52 <= p3);
/* Make sure we aligned. */
- tt_int_op(((uintptr_t)p1) % sizeof(void*),==, 0);
- tt_int_op(((uintptr_t)p2) % sizeof(void*),==, 0);
- tt_int_op(((uintptr_t)p3) % sizeof(void*),==, 0);
+ tt_int_op(((uintptr_t)p1) % sizeof(void*),OP_EQ, 0);
+ tt_int_op(((uintptr_t)p2) % sizeof(void*),OP_EQ, 0);
+ tt_int_op(((uintptr_t)p3) % sizeof(void*),OP_EQ, 0);
tt_assert(!memarea_owns_ptr(area, p3+8192));
tt_assert(!memarea_owns_ptr(area, p3+30));
tt_assert(tor_mem_is_zero(p2, 52));
/* Make sure we don't overalign. */
p1 = memarea_alloc(area, 1);
p2 = memarea_alloc(area, 1);
- tt_ptr_op(p1+sizeof(void*),==, p2);
+ tt_ptr_op(p1+sizeof(void*),OP_EQ, p2);
{
malloced_ptr = tor_malloc(64);
tt_assert(!memarea_owns_ptr(area, malloced_ptr));
@@ -2879,7 +2886,7 @@ test_util_memarea(void *arg)
crypto_rand((char*)malloced_ptr, 64);
p1 = memarea_memdup(area, malloced_ptr, 64);
tt_assert(p1 != malloced_ptr);
- tt_mem_op(p1,==, malloced_ptr, 64);
+ tt_mem_op(p1,OP_EQ, malloced_ptr, 64);
tor_free(malloced_ptr);
}
@@ -2888,8 +2895,8 @@ test_util_memarea(void *arg)
p2 = memarea_strdup(area, "abcd");
tt_assert(p1);
tt_assert(p2);
- tt_str_op(p1,==, "");
- tt_str_op(p2,==, "abcd");
+ tt_str_op(p1,OP_EQ, "");
+ tt_str_op(p2,OP_EQ, "abcd");
/* memarea_strndup. */
{
@@ -2898,20 +2905,20 @@ test_util_memarea(void *arg)
size_t len = strlen(s);
p1 = memarea_strndup(area, s, 1000);
p2 = memarea_strndup(area, s, 10);
- tt_str_op(p1,==, s);
+ tt_str_op(p1,OP_EQ, s);
tt_assert(p2 >= p1 + len + 1);
- tt_mem_op(s,==, p2, 10);
- tt_int_op(p2[10],==, '\0');
+ tt_mem_op(s,OP_EQ, p2, 10);
+ tt_int_op(p2[10],OP_EQ, '\0');
p3 = memarea_strndup(area, s, len);
- tt_str_op(p3,==, s);
+ tt_str_op(p3,OP_EQ, s);
p3 = memarea_strndup(area, s, len-1);
- tt_mem_op(s,==, p3, len-1);
- tt_int_op(p3[len-1],==, '\0');
+ tt_mem_op(s,OP_EQ, p3, len-1);
+ tt_int_op(p3[len-1],OP_EQ, '\0');
}
memarea_clear(area);
p1 = memarea_alloc(area, 1);
- tt_ptr_op(p1,==, p1_orig);
+ tt_ptr_op(p1,OP_EQ, p1_orig);
memarea_clear(area);
/* Check for running over an area's size. */
@@ -2944,22 +2951,22 @@ test_util_datadir(void *arg)
temp_dir = get_datadir_fname(NULL);
f = get_datadir_fname("state");
tor_snprintf(buf, sizeof(buf), "%s"PATH_SEPARATOR"state", temp_dir);
- tt_str_op(f,==, buf);
+ tt_str_op(f,OP_EQ, buf);
tor_free(f);
f = get_datadir_fname2("cache", "thingy");
tor_snprintf(buf, sizeof(buf),
"%s"PATH_SEPARATOR"cache"PATH_SEPARATOR"thingy", temp_dir);
- tt_str_op(f,==, buf);
+ tt_str_op(f,OP_EQ, buf);
tor_free(f);
f = get_datadir_fname2_suffix("cache", "thingy", ".foo");
tor_snprintf(buf, sizeof(buf),
"%s"PATH_SEPARATOR"cache"PATH_SEPARATOR"thingy.foo", temp_dir);
- tt_str_op(f,==, buf);
+ tt_str_op(f,OP_EQ, buf);
tor_free(f);
f = get_datadir_fname_suffix("cache", ".foo");
tor_snprintf(buf, sizeof(buf), "%s"PATH_SEPARATOR"cache.foo",
temp_dir);
- tt_str_op(f,==, buf);
+ tt_str_op(f,OP_EQ, buf);
done:
tor_free(f);
@@ -3000,43 +3007,43 @@ test_util_strtok(void *arg)
"%sthey.seemed;;their!.own;most.perfect;monument%s",pad2,pad2);
/* -- "Year's End", Richard Wilbur */
- tt_str_op("Graved",==, tor_strtok_r_impl(buf, " ", &cp1));
- tt_str_op("they",==, tor_strtok_r_impl(buf2, ".!..;!", &cp2));
+ tt_str_op("Graved",OP_EQ, tor_strtok_r_impl(buf, " ", &cp1));
+ tt_str_op("they",OP_EQ, tor_strtok_r_impl(buf2, ".!..;!", &cp2));
#define S1() tor_strtok_r_impl(NULL, " ", &cp1)
#define S2() tor_strtok_r_impl(NULL, ".!..;!", &cp2)
- tt_str_op("on",==, S1());
- tt_str_op("the",==, S1());
- tt_str_op("dark",==, S1());
- tt_str_op("seemed",==, S2());
- tt_str_op("their",==, S2());
- tt_str_op("own",==, S2());
- tt_str_op("in",==, S1());
- tt_str_op("gestures",==, S1());
- tt_str_op("of",==, S1());
- tt_str_op("most",==, S2());
- tt_str_op("perfect",==, S2());
- tt_str_op("descent",==, S1());
- tt_str_op("monument",==, S2());
- tt_ptr_op(NULL,==, S1());
- tt_ptr_op(NULL,==, S2());
+ tt_str_op("on",OP_EQ, S1());
+ tt_str_op("the",OP_EQ, S1());
+ tt_str_op("dark",OP_EQ, S1());
+ tt_str_op("seemed",OP_EQ, S2());
+ tt_str_op("their",OP_EQ, S2());
+ tt_str_op("own",OP_EQ, S2());
+ tt_str_op("in",OP_EQ, S1());
+ tt_str_op("gestures",OP_EQ, S1());
+ tt_str_op("of",OP_EQ, S1());
+ tt_str_op("most",OP_EQ, S2());
+ tt_str_op("perfect",OP_EQ, S2());
+ tt_str_op("descent",OP_EQ, S1());
+ tt_str_op("monument",OP_EQ, S2());
+ tt_ptr_op(NULL,OP_EQ, S1());
+ tt_ptr_op(NULL,OP_EQ, S2());
}
buf[0] = 0;
- tt_ptr_op(NULL,==, tor_strtok_r_impl(buf, " ", &cp1));
- tt_ptr_op(NULL,==, tor_strtok_r_impl(buf, "!", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(buf, " ", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(buf, "!", &cp1));
strlcpy(buf, "Howdy!", sizeof(buf));
- tt_str_op("Howdy",==, tor_strtok_r_impl(buf, "!", &cp1));
- tt_ptr_op(NULL,==, tor_strtok_r_impl(NULL, "!", &cp1));
+ tt_str_op("Howdy",OP_EQ, tor_strtok_r_impl(buf, "!", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(NULL, "!", &cp1));
strlcpy(buf, " ", sizeof(buf));
- tt_ptr_op(NULL,==, tor_strtok_r_impl(buf, " ", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(buf, " ", &cp1));
strlcpy(buf, " ", sizeof(buf));
- tt_ptr_op(NULL,==, tor_strtok_r_impl(buf, " ", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(buf, " ", &cp1));
strlcpy(buf, "something ", sizeof(buf));
- tt_str_op("something",==, tor_strtok_r_impl(buf, " ", &cp1));
- tt_ptr_op(NULL,==, tor_strtok_r_impl(NULL, ";", &cp1));
+ tt_str_op("something",OP_EQ, tor_strtok_r_impl(buf, " ", &cp1));
+ tt_ptr_op(NULL,OP_EQ, tor_strtok_r_impl(NULL, ";", &cp1));
done:
;
}
@@ -3056,24 +3063,26 @@ test_util_find_str_at_start_of_line(void *ptr)
(void)ptr;
- tt_ptr_op(long_string,==, find_str_at_start_of_line(long_string, ""));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(short_string, "nonsense"));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(long_string, "nonsense"));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(long_string, "\n"));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(long_string, "how "));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(long_string, "kitty"));
- tt_ptr_op(long_string,==, find_str_at_start_of_line(long_string, "h"));
- tt_ptr_op(long_string,==, find_str_at_start_of_line(long_string, "how"));
- tt_ptr_op(line2,==, find_str_at_start_of_line(long_string, "he"));
- tt_ptr_op(line2,==, find_str_at_start_of_line(long_string, "hell"));
- tt_ptr_op(line2,==, find_str_at_start_of_line(long_string, "hello k"));
- tt_ptr_op(line2,==, find_str_at_start_of_line(long_string, "hello kitty\n"));
- tt_ptr_op(line2,==,
+ tt_ptr_op(long_string,OP_EQ, find_str_at_start_of_line(long_string, ""));
+ tt_ptr_op(NULL,OP_EQ, find_str_at_start_of_line(short_string, "nonsense"));
+ tt_ptr_op(NULL,OP_EQ, find_str_at_start_of_line(long_string, "nonsense"));
+ tt_ptr_op(NULL,OP_EQ, find_str_at_start_of_line(long_string, "\n"));
+ tt_ptr_op(NULL,OP_EQ, find_str_at_start_of_line(long_string, "how "));
+ tt_ptr_op(NULL,OP_EQ, find_str_at_start_of_line(long_string, "kitty"));
+ tt_ptr_op(long_string,OP_EQ, find_str_at_start_of_line(long_string, "h"));
+ tt_ptr_op(long_string,OP_EQ, find_str_at_start_of_line(long_string, "how"));
+ tt_ptr_op(line2,OP_EQ, find_str_at_start_of_line(long_string, "he"));
+ tt_ptr_op(line2,OP_EQ, find_str_at_start_of_line(long_string, "hell"));
+ tt_ptr_op(line2,OP_EQ, find_str_at_start_of_line(long_string, "hello k"));
+ tt_ptr_op(line2,OP_EQ,
+ find_str_at_start_of_line(long_string, "hello kitty\n"));
+ tt_ptr_op(line2,OP_EQ,
find_str_at_start_of_line(long_string, "hello kitty\nt"));
- tt_ptr_op(line3,==, find_str_at_start_of_line(long_string, "third"));
- tt_ptr_op(line3,==, find_str_at_start_of_line(long_string, "third line"));
- tt_ptr_op(NULL,==, find_str_at_start_of_line(long_string, "third line\n"));
- tt_ptr_op(short_line2,==, find_str_at_start_of_line(short_string,
+ tt_ptr_op(line3,OP_EQ, find_str_at_start_of_line(long_string, "third"));
+ tt_ptr_op(line3,OP_EQ, find_str_at_start_of_line(long_string, "third line"));
+ tt_ptr_op(NULL, OP_EQ,
+ find_str_at_start_of_line(long_string, "third line\n"));
+ tt_ptr_op(short_line2,OP_EQ, find_str_at_start_of_line(short_string,
"second line\n"));
done:
;
@@ -3084,25 +3093,25 @@ test_util_string_is_C_identifier(void *ptr)
{
(void)ptr;
- tt_int_op(1,==, string_is_C_identifier("string_is_C_identifier"));
- tt_int_op(1,==, string_is_C_identifier("_string_is_C_identifier"));
- tt_int_op(1,==, string_is_C_identifier("_"));
- tt_int_op(1,==, string_is_C_identifier("i"));
- tt_int_op(1,==, string_is_C_identifier("_____"));
- tt_int_op(1,==, string_is_C_identifier("__00__"));
- tt_int_op(1,==, string_is_C_identifier("__init__"));
- tt_int_op(1,==, string_is_C_identifier("_0"));
- tt_int_op(1,==, string_is_C_identifier("_0string_is_C_identifier"));
- tt_int_op(1,==, string_is_C_identifier("_0"));
-
- tt_int_op(0,==, string_is_C_identifier("0_string_is_C_identifier"));
- tt_int_op(0,==, string_is_C_identifier("0"));
- tt_int_op(0,==, string_is_C_identifier(""));
- tt_int_op(0,==, string_is_C_identifier(";"));
- tt_int_op(0,==, string_is_C_identifier("i;"));
- tt_int_op(0,==, string_is_C_identifier("_;"));
- tt_int_op(0,==, string_is_C_identifier("í"));
- tt_int_op(0,==, string_is_C_identifier("ñ"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("string_is_C_identifier"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_string_is_C_identifier"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("i"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_____"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("__00__"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("__init__"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_0"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_0string_is_C_identifier"));
+ tt_int_op(1,OP_EQ, string_is_C_identifier("_0"));
+
+ tt_int_op(0,OP_EQ, string_is_C_identifier("0_string_is_C_identifier"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier("0"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier(""));
+ tt_int_op(0,OP_EQ, string_is_C_identifier(";"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier("i;"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier("_;"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier("í"));
+ tt_int_op(0,OP_EQ, string_is_C_identifier("ñ"));
done:
;
@@ -3120,29 +3129,29 @@ test_util_asprintf(void *ptr)
/* simple string */
r = tor_asprintf(&cp, "simple string 100%% safe");
tt_assert(cp);
- tt_str_op("simple string 100% safe",==, cp);
- tt_int_op(strlen(cp),==, r);
+ tt_str_op("simple string 100% safe",OP_EQ, cp);
+ tt_int_op(strlen(cp),OP_EQ, r);
tor_free(cp);
/* empty string */
r = tor_asprintf(&cp, "%s", "");
tt_assert(cp);
- tt_str_op("",==, cp);
- tt_int_op(strlen(cp),==, r);
+ tt_str_op("",OP_EQ, cp);
+ tt_int_op(strlen(cp),OP_EQ, r);
tor_free(cp);
/* numbers (%i) */
r = tor_asprintf(&cp, "I like numbers-%2i, %i, etc.", -1, 2);
tt_assert(cp);
- tt_str_op("I like numbers--1, 2, etc.",==, cp);
- tt_int_op(strlen(cp),==, r);
+ tt_str_op("I like numbers--1, 2, etc.",OP_EQ, cp);
+ tt_int_op(strlen(cp),OP_EQ, r);
/* don't free cp; next test uses it. */
/* numbers (%d) */
r = tor_asprintf(&cp2, "First=%d, Second=%d", 101, 202);
tt_assert(cp2);
- tt_int_op(strlen(cp2),==, r);
- tt_str_op("First=101, Second=202",==, cp2);
+ tt_int_op(strlen(cp2),OP_EQ, r);
+ tt_str_op("First=101, Second=202",OP_EQ, cp2);
tt_assert(cp != cp2);
tor_free(cp);
tor_free(cp2);
@@ -3150,17 +3159,17 @@ test_util_asprintf(void *ptr)
/* Glass-box test: a string exactly 128 characters long. */
r = tor_asprintf(&cp, "Lorem1: %sLorem2: %s", LOREMIPSUM, LOREMIPSUM);
tt_assert(cp);
- tt_int_op(128,==, r);
- tt_int_op(cp[128], ==, '\0');
- tt_str_op("Lorem1: "LOREMIPSUM"Lorem2: "LOREMIPSUM,==, cp);
+ tt_int_op(128,OP_EQ, r);
+ tt_int_op(cp[128], OP_EQ, '\0');
+ tt_str_op("Lorem1: "LOREMIPSUM"Lorem2: "LOREMIPSUM,OP_EQ, cp);
tor_free(cp);
/* String longer than 128 characters */
r = tor_asprintf(&cp, "1: %s 2: %s 3: %s",
LOREMIPSUM, LOREMIPSUM, LOREMIPSUM);
tt_assert(cp);
- tt_int_op(strlen(cp),==, r);
- tt_str_op("1: "LOREMIPSUM" 2: "LOREMIPSUM" 3: "LOREMIPSUM,==, cp);
+ tt_int_op(strlen(cp),OP_EQ, r);
+ tt_str_op("1: "LOREMIPSUM" 2: "LOREMIPSUM" 3: "LOREMIPSUM,OP_EQ, cp);
done:
tor_free(cp);
@@ -3181,9 +3190,9 @@ test_util_listdir(void *ptr)
dir1 = tor_strdup(get_fname("some-directory"));
dirname = tor_strdup(get_fname(NULL));
- tt_int_op(0,==, write_str_to_file(fname1, "X\n", 0));
- tt_int_op(0,==, write_str_to_file(fname2, "Y\n", 0));
- tt_int_op(0,==, write_str_to_file(fname3, "Z\n", 0));
+ tt_int_op(0,OP_EQ, write_str_to_file(fname1, "X\n", 0));
+ tt_int_op(0,OP_EQ, write_str_to_file(fname2, "Y\n", 0));
+ tt_int_op(0,OP_EQ, write_str_to_file(fname3, "Z\n", 0));
#ifdef _WIN32
r = mkdir(dir1);
#else
@@ -3229,9 +3238,9 @@ test_util_parent_dir(void *ptr)
int ok; \
cp = tor_strdup(input); \
ok = get_parent_directory(cp); \
- tt_int_op(expect_ok, ==, ok); \
+ tt_int_op(expect_ok, OP_EQ, ok); \
if (ok==0) \
- tt_str_op(output, ==, cp); \
+ tt_str_op(output, OP_EQ, cp); \
tor_free(cp); \
} while (0);
@@ -3280,32 +3289,32 @@ test_util_ftruncate(void *ptr)
fname = get_fname("ftruncate");
fd = tor_open_cloexec(fname, O_WRONLY|O_CREAT, 0600);
- tt_int_op(fd, >=, 0);
+ tt_int_op(fd, OP_GE, 0);
/* Make the file be there. */
- tt_int_op(strlen(message), ==, write_all(fd, message, strlen(message), 0));
- tt_int_op((int)tor_fd_getpos(fd), ==, strlen(message));
- tt_int_op(0, ==, fstat(fd, &st));
- tt_int_op((int)st.st_size, ==, strlen(message));
+ tt_int_op(strlen(message), OP_EQ, write_all(fd, message, strlen(message),0));
+ tt_int_op((int)tor_fd_getpos(fd), OP_EQ, strlen(message));
+ tt_int_op(0, OP_EQ, fstat(fd, &st));
+ tt_int_op((int)st.st_size, OP_EQ, strlen(message));
/* Truncate and see if it got truncated */
- tt_int_op(0, ==, tor_ftruncate(fd));
- tt_int_op((int)tor_fd_getpos(fd), ==, 0);
- tt_int_op(0, ==, fstat(fd, &st));
- tt_int_op((int)st.st_size, ==, 0);
+ tt_int_op(0, OP_EQ, tor_ftruncate(fd));
+ tt_int_op((int)tor_fd_getpos(fd), OP_EQ, 0);
+ tt_int_op(0, OP_EQ, fstat(fd, &st));
+ tt_int_op((int)st.st_size, OP_EQ, 0);
/* Replace, and see if it got replaced */
- tt_int_op(strlen(message2), ==,
+ tt_int_op(strlen(message2), OP_EQ,
write_all(fd, message2, strlen(message2), 0));
- tt_int_op((int)tor_fd_getpos(fd), ==, strlen(message2));
- tt_int_op(0, ==, fstat(fd, &st));
- tt_int_op((int)st.st_size, ==, strlen(message2));
+ tt_int_op((int)tor_fd_getpos(fd), OP_EQ, strlen(message2));
+ tt_int_op(0, OP_EQ, fstat(fd, &st));
+ tt_int_op((int)st.st_size, OP_EQ, strlen(message2));
close(fd);
fd = -1;
buf = read_file_to_str(fname, 0, NULL);
- tt_str_op(message2, ==, buf);
+ tt_str_op(message2, OP_EQ, buf);
done:
if (fd >= 0)
@@ -3344,53 +3353,53 @@ test_util_exit_status(void *ptr)
(void)ptr;
clear_hex_errno(hex_errno);
- tt_str_op("",==, hex_errno);
+ tt_str_op("",OP_EQ, hex_errno);
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0, 0, hex_errno);
- tt_str_op("0/0\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
+ tt_str_op("0/0\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
#if SIZEOF_INT == 4
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0, 0x7FFFFFFF, hex_errno);
- tt_str_op("0/7FFFFFFF\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
+ tt_str_op("0/7FFFFFFF\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0xFF, -0x80000000, hex_errno);
- tt_str_op("FF/-80000000\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
- tt_int_op(n,==, HEX_ERRNO_SIZE);
+ tt_str_op("FF/-80000000\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
+ tt_int_op(n,OP_EQ, HEX_ERRNO_SIZE);
#elif SIZEOF_INT == 8
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0, 0x7FFFFFFFFFFFFFFF, hex_errno);
- tt_str_op("0/7FFFFFFFFFFFFFFF\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
+ tt_str_op("0/7FFFFFFFFFFFFFFF\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0xFF, -0x8000000000000000, hex_errno);
- tt_str_op("FF/-8000000000000000\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
- tt_int_op(n,==, HEX_ERRNO_SIZE);
+ tt_str_op("FF/-8000000000000000\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
+ tt_int_op(n,OP_EQ, HEX_ERRNO_SIZE);
#endif
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0x7F, 0, hex_errno);
- tt_str_op("7F/0\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
+ tt_str_op("7F/0\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
clear_hex_errno(hex_errno);
n = format_helper_exit_status(0x08, -0x242, hex_errno);
- tt_str_op("8/-242\n",==, hex_errno);
- tt_int_op(n,==, strlen(hex_errno));
+ tt_str_op("8/-242\n",OP_EQ, hex_errno);
+ tt_int_op(n,OP_EQ, strlen(hex_errno));
clear_hex_errno(hex_errno);
- tt_str_op("",==, hex_errno);
+ tt_str_op("",OP_EQ, hex_errno);
done:
;
@@ -3417,83 +3426,83 @@ test_util_fgets_eagain(void *ptr)
/* Set up a pipe to test on */
retval = pipe(test_pipe);
- tt_int_op(retval, ==, 0);
+ 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, ==, 0);
+ tt_int_op(retval, OP_EQ, 0);
/* Open it as a stdio stream */
test_stream = fdopen(test_pipe[0], "r");
- tt_ptr_op(test_stream, !=, NULL);
+ tt_ptr_op(test_stream, OP_NE, NULL);
/* Send in a partial line */
retlen = write(test_pipe[1], "A", 1);
- tt_int_op(retlen, ==, 1);
+ tt_int_op(retlen, OP_EQ, 1);
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, EAGAIN);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "A");
+ tt_int_op(errno, OP_EQ, EAGAIN);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "A");
errno = 0;
/* Send in the rest */
retlen = write(test_pipe[1], "B\n", 2);
- tt_int_op(retlen, ==, 2);
+ tt_int_op(retlen, OP_EQ, 2);
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, 0);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "B\n");
+ tt_int_op(errno, OP_EQ, 0);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "B\n");
errno = 0;
/* Send in a full line */
retlen = write(test_pipe[1], "CD\n", 3);
- tt_int_op(retlen, ==, 3);
+ tt_int_op(retlen, OP_EQ, 3);
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, 0);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "CD\n");
+ tt_int_op(errno, OP_EQ, 0);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "CD\n");
errno = 0;
/* Send in a partial line */
retlen = write(test_pipe[1], "E", 1);
- tt_int_op(retlen, ==, 1);
+ tt_int_op(retlen, OP_EQ, 1);
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, EAGAIN);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "E");
+ tt_int_op(errno, OP_EQ, EAGAIN);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "E");
errno = 0;
/* Send in the rest */
retlen = write(test_pipe[1], "F\n", 2);
- tt_int_op(retlen, ==, 2);
+ tt_int_op(retlen, OP_EQ, 2);
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, 0);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "F\n");
+ tt_int_op(errno, OP_EQ, 0);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "F\n");
errno = 0;
/* Send in a full line and close */
retlen = write(test_pipe[1], "GH", 2);
- tt_int_op(retlen, ==, 2);
+ tt_int_op(retlen, OP_EQ, 2);
retval = close(test_pipe[1]);
- tt_int_op(retval, ==, 0);
+ tt_int_op(retval, OP_EQ, 0);
test_pipe[1] = -1;
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, 0);
- tt_ptr_op(retptr, ==, buf);
- tt_str_op(buf, ==, "GH");
+ tt_int_op(errno, OP_EQ, 0);
+ tt_ptr_op(retptr, OP_EQ, buf);
+ tt_str_op(buf, OP_EQ, "GH");
errno = 0;
/* Check for EOF */
retptr = fgets(buf, sizeof(buf), test_stream);
- tt_int_op(errno, ==, 0);
- tt_ptr_op(retptr, ==, NULL);
+ tt_int_op(errno, OP_EQ, 0);
+ tt_ptr_op(retptr, OP_EQ, NULL);
retval = feof(test_stream);
- tt_int_op(retval, !=, 0);
+ tt_int_op(retval, OP_NE, 0);
errno = 0;
/* Check that buf is unchanged according to C99 and C11 */
- tt_str_op(buf, ==, "GH");
+ tt_str_op(buf, OP_EQ, "GH");
done:
if (test_stream != NULL)
@@ -3568,7 +3577,7 @@ run_util_spawn_background(const char *argv[], const char *expected_out,
* but we still need to handle PROCESS_STATUS_RUNNING_OR_NOTRUNNING */
tt_assert(MATCH_PROCESS_STATUS(expected_status, status));
if (status == PROCESS_STATUS_ERROR) {
- tt_ptr_op(process_handle, ==, NULL);
+ tt_ptr_op(process_handle, OP_EQ, NULL);
return;
}
@@ -3611,20 +3620,20 @@ run_util_spawn_background(const char *argv[], const char *expected_out,
sizeof(stdout_buf) - 1);
tt_assert(pos >= 0);
stdout_buf[pos] = '\0';
- tt_int_op(strlen(expected_out),==, pos);
- tt_str_op(expected_out,==, stdout_buf);
+ tt_int_op(strlen(expected_out),OP_EQ, pos);
+ tt_str_op(expected_out,OP_EQ, stdout_buf);
notify_pending_waitpid_callbacks();
/* Check it terminated correctly */
retval = tor_get_exit_code(process_handle, 1, &exit_code);
- tt_int_op(PROCESS_EXIT_EXITED,==, retval);
- tt_int_op(expected_exit,==, exit_code);
+ tt_int_op(PROCESS_EXIT_EXITED,OP_EQ, retval);
+ tt_int_op(expected_exit,OP_EQ, exit_code);
// TODO: Make test-child exit with something other than 0
#ifndef _WIN32
notify_pending_waitpid_callbacks();
- tt_ptr_op(process_handle->waitpid_cb, ==, NULL);
+ tt_ptr_op(process_handle->waitpid_cb, OP_EQ, NULL);
#endif
/* Check stderr */
@@ -3632,8 +3641,8 @@ run_util_spawn_background(const char *argv[], const char *expected_out,
sizeof(stderr_buf) - 1);
tt_assert(pos >= 0);
stderr_buf[pos] = '\0';
- tt_str_op(expected_err,==, stderr_buf);
- tt_int_op(strlen(expected_err),==, pos);
+ tt_str_op(expected_err,OP_EQ, stderr_buf);
+ tt_int_op(strlen(expected_err),OP_EQ, pos);
notify_pending_waitpid_callbacks();
@@ -3722,9 +3731,9 @@ test_util_spawn_background_partial_read_impl(int exit_early)
#else
status = tor_spawn_background(argv[0], argv, NULL, &process_handle);
#endif
- tt_int_op(expected_status,==, status);
+ tt_int_op(expected_status,OP_EQ, status);
tt_assert(process_handle);
- tt_int_op(expected_status,==, process_handle->status);
+ tt_int_op(expected_status,OP_EQ, process_handle->status);
/* Check stdout */
for (expected_out_ctr = 0; expected_out[expected_out_ctr] != NULL;) {
@@ -3745,8 +3754,8 @@ test_util_spawn_background_partial_read_impl(int exit_early)
tt_assert(pos > 0);
stdout_buf[pos] = '\0';
- tt_str_op(expected_out[expected_out_ctr],==, stdout_buf);
- tt_int_op(strlen(expected_out[expected_out_ctr]),==, pos);
+ tt_str_op(expected_out[expected_out_ctr],OP_EQ, stdout_buf);
+ tt_int_op(strlen(expected_out[expected_out_ctr]),OP_EQ, pos);
expected_out_ctr++;
}
@@ -3761,14 +3770,14 @@ test_util_spawn_background_partial_read_impl(int exit_early)
pos = tor_read_all_handle(process_handle->stdout_pipe, stdout_buf,
sizeof(stdout_buf) - 1,
process_handle);
- tt_int_op(0,==, pos);
+ tt_int_op(0,OP_EQ, pos);
#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,
sizeof(stdout_buf) - 1,
process_handle, &eof);
- tt_int_op(0,==, pos);
+ tt_int_op(0,OP_EQ, pos);
tt_assert(eof);
}
/* Otherwise, we got the EOF on the last read */
@@ -3776,8 +3785,8 @@ test_util_spawn_background_partial_read_impl(int exit_early)
/* Check it terminated correctly */
retval = tor_get_exit_code(process_handle, 1, &exit_code);
- tt_int_op(PROCESS_EXIT_EXITED,==, retval);
- tt_int_op(expected_exit,==, exit_code);
+ tt_int_op(PROCESS_EXIT_EXITED,OP_EQ, retval);
+ tt_int_op(expected_exit,OP_EQ, exit_code);
// TODO: Make test-child exit with something other than 0
@@ -3786,8 +3795,8 @@ test_util_spawn_background_partial_read_impl(int exit_early)
sizeof(stderr_buf) - 1);
tt_assert(pos >= 0);
stderr_buf[pos] = '\0';
- tt_str_op(expected_err,==, stderr_buf);
- tt_int_op(strlen(expected_err),==, pos);
+ tt_str_op(expected_err,OP_EQ, stderr_buf);
+ tt_int_op(strlen(expected_err),OP_EQ, pos);
done:
tor_process_handle_destroy(process_handle, 1);
@@ -3825,8 +3834,8 @@ test_util_spawn_background_waitpid_notify(void *arg)
status = tor_spawn_background(argv[0], argv, NULL, &process_handle);
#endif
- tt_int_op(status, ==, PROCESS_STATUS_RUNNING);
- tt_ptr_op(process_handle, !=, NULL);
+ tt_int_op(status, OP_EQ, PROCESS_STATUS_RUNNING);
+ tt_ptr_op(process_handle, OP_NE, NULL);
/* We're not going to look at the stdout/stderr output this time. Instead,
* we're testing whether notify_pending_waitpid_calbacks() can report the
@@ -3835,14 +3844,14 @@ test_util_spawn_background_waitpid_notify(void *arg)
#ifndef _WIN32
ms_timer = 30*1000;
- tt_ptr_op(process_handle->waitpid_cb, !=, NULL);
+ tt_ptr_op(process_handle->waitpid_cb, OP_NE, NULL);
while (process_handle->waitpid_cb && ms_timer > 0) {
tor_sleep_msec(100);
ms_timer -= 100;
notify_pending_waitpid_callbacks();
}
- tt_int_op(ms_timer, >, 0);
- tt_ptr_op(process_handle->waitpid_cb, ==, NULL);
+ tt_int_op(ms_timer, OP_GT, 0);
+ tt_ptr_op(process_handle->waitpid_cb, OP_EQ, NULL);
#endif
ms_timer = 30*1000;
@@ -3851,9 +3860,9 @@ test_util_spawn_background_waitpid_notify(void *arg)
tor_sleep_msec(100);
ms_timer -= 100;
}
- tt_int_op(ms_timer, >, 0);
+ tt_int_op(ms_timer, OP_GT, 0);
- tt_int_op(retval, ==, PROCESS_EXIT_EXITED);
+ tt_int_op(retval, OP_EQ, PROCESS_EXIT_EXITED);
done:
tor_process_handle_destroy(process_handle, 1);
@@ -3899,15 +3908,15 @@ test_util_format_hex_number(void *ptr)
for (i = 0; test_data[i].str != NULL; ++i) {
len = format_hex_number_sigsafe(test_data[i].x, buf, sizeof(buf));
- tt_int_op(len,!=, 0);
- tt_int_op(len,==, strlen(buf));
- tt_str_op(buf,==, test_data[i].str);
+ tt_int_op(len,OP_NE, 0);
+ tt_int_op(len,OP_EQ, strlen(buf));
+ tt_str_op(buf,OP_EQ, test_data[i].str);
}
- tt_int_op(4,==, format_hex_number_sigsafe(0xffff, buf, 5));
- tt_str_op(buf,==, "FFFF");
- tt_int_op(0,==, format_hex_number_sigsafe(0xffff, buf, 4));
- tt_int_op(0,==, format_hex_number_sigsafe(0, buf, 1));
+ tt_int_op(4,OP_EQ, format_hex_number_sigsafe(0xffff, buf, 5));
+ tt_str_op(buf,OP_EQ, "FFFF");
+ tt_int_op(0,OP_EQ, format_hex_number_sigsafe(0xffff, buf, 4));
+ tt_int_op(0,OP_EQ, format_hex_number_sigsafe(0, buf, 1));
done:
return;
@@ -3943,21 +3952,21 @@ test_util_format_dec_number(void *ptr)
for (i = 0; test_data[i].str != NULL; ++i) {
len = format_dec_number_sigsafe(test_data[i].x, buf, sizeof(buf));
- tt_int_op(len,!=, 0);
- tt_int_op(len,==, strlen(buf));
- tt_str_op(buf,==, test_data[i].str);
+ tt_int_op(len,OP_NE, 0);
+ tt_int_op(len,OP_EQ, strlen(buf));
+ tt_str_op(buf,OP_EQ, test_data[i].str);
len = format_dec_number_sigsafe(test_data[i].x, buf,
(int)(strlen(test_data[i].str) + 1));
- tt_int_op(len,==, strlen(buf));
- tt_str_op(buf,==, test_data[i].str);
+ tt_int_op(len,OP_EQ, strlen(buf));
+ tt_str_op(buf,OP_EQ, test_data[i].str);
}
- tt_int_op(4,==, format_dec_number_sigsafe(7331, buf, 5));
- tt_str_op(buf,==, "7331");
- tt_int_op(0,==, format_dec_number_sigsafe(7331, buf, 4));
- tt_int_op(1,==, format_dec_number_sigsafe(0, buf, 2));
- tt_int_op(0,==, format_dec_number_sigsafe(0, buf, 1));
+ tt_int_op(4,OP_EQ, format_dec_number_sigsafe(7331, buf, 5));
+ tt_str_op(buf,OP_EQ, "7331");
+ tt_int_op(0,OP_EQ, format_dec_number_sigsafe(7331, buf, 4));
+ tt_int_op(1,OP_EQ, format_dec_number_sigsafe(0, buf, 2));
+ tt_int_op(0,OP_EQ, format_dec_number_sigsafe(0, buf, 1));
done:
return;
@@ -4006,7 +4015,7 @@ test_util_join_win_cmdline(void *ptr)
for (i=0; cmdlines[i]!=NULL; i++) {
log_info(LD_GENERAL, "Joining argvs[%d], expecting <%s>", i, cmdlines[i]);
joined_argv = tor_join_win_cmdline(argvs[i]);
- tt_str_op(cmdlines[i],==, joined_argv);
+ tt_str_op(cmdlines[i],OP_EQ, joined_argv);
tor_free(joined_argv);
}
@@ -4061,17 +4070,17 @@ test_util_split_lines(void *ptr)
i, tests[i].orig_length);
SMARTLIST_FOREACH_BEGIN(sl, const char *, line) {
/* Check we have not got too many lines */
- tt_int_op(MAX_SPLIT_LINE_COUNT, >, j);
+ tt_int_op(MAX_SPLIT_LINE_COUNT, OP_GT, j);
/* Check that there actually should be a line here */
tt_assert(tests[i].split_line[j] != NULL);
log_info(LD_GENERAL, "Line %d of test %d, should be <%s>",
j, i, tests[i].split_line[j]);
/* Check that the line is as expected */
- tt_str_op(line,==, tests[i].split_line[j]);
+ tt_str_op(line,OP_EQ, tests[i].split_line[j]);
j++;
} SMARTLIST_FOREACH_END(line);
/* Check that we didn't miss some lines */
- tt_ptr_op(NULL,==, tests[i].split_line[j]);
+ tt_ptr_op(NULL,OP_EQ, tests[i].split_line[j]);
tor_free(orig_line);
smartlist_free(sl);
sl = NULL;
@@ -4107,7 +4116,7 @@ test_util_di_ops(void *arg)
for (i = 0; examples[i].a; ++i) {
size_t len = strlen(examples[i].a);
int eq1, eq2, neq1, neq2, cmp1, cmp2;
- tt_int_op(len,==, strlen(examples[i].b));
+ tt_int_op(len,OP_EQ, strlen(examples[i].b));
/* We do all of the operations, with operands in both orders. */
eq1 = tor_memeq(examples[i].a, examples[i].b, len);
eq2 = tor_memeq(examples[i].b, examples[i].a, len);
@@ -4125,11 +4134,11 @@ test_util_di_ops(void *arg)
TT_DIE(("Assertion failed."));
/* Check for consistency of everything else with cmp1 */
- tt_int_op(eq1,==, eq2);
- tt_int_op(neq1,==, neq2);
- tt_int_op(cmp1,==, -cmp2);
- tt_int_op(eq1,==, cmp1 == 0);
- tt_int_op(neq1,==, !eq1);
+ tt_int_op(eq1,OP_EQ, eq2);
+ tt_int_op(neq1,OP_EQ, neq2);
+ tt_int_op(cmp1,OP_EQ, -cmp2);
+ tt_int_op(eq1,OP_EQ, cmp1 == 0);
+ tt_int_op(neq1,OP_EQ, !eq1);
}
{
@@ -4144,22 +4153,24 @@ test_util_di_ops(void *arg)
for (i = 0; i < 256; i++) {
ii = (uint8_t)i;
zz = (uint8_t)z;
- tt_int_op(tor_memeq(&zz, &ii, 1),==, zz == ii);
- tt_int_op(tor_memcmp(&zz, &ii, 1) > 0 ? GT : EQ,==, zz > ii ? GT : EQ);
- tt_int_op(tor_memcmp(&ii, &zz, 1) < 0 ? LT : EQ,==, ii < zz ? LT : EQ);
+ tt_int_op(tor_memeq(&zz, &ii, 1),OP_EQ, zz == ii);
+ tt_int_op(tor_memcmp(&zz, &ii, 1) > 0 ? GT : EQ,OP_EQ,
+ zz > ii ? GT : EQ);
+ tt_int_op(tor_memcmp(&ii, &zz, 1) < 0 ? LT : EQ,OP_EQ,
+ ii < zz ? LT : EQ);
}
}
}
- tt_int_op(1, ==, safe_mem_is_zero("", 0));
- tt_int_op(1, ==, safe_mem_is_zero("", 1));
- tt_int_op(0, ==, safe_mem_is_zero("a", 1));
- tt_int_op(0, ==, safe_mem_is_zero("a", 2));
- tt_int_op(0, ==, safe_mem_is_zero("\0a", 2));
- tt_int_op(1, ==, safe_mem_is_zero("\0\0a", 2));
- tt_int_op(1, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0", 8));
- tt_int_op(1, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 8));
- tt_int_op(0, ==, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 9));
+ tt_int_op(1, OP_EQ, safe_mem_is_zero("", 0));
+ tt_int_op(1, OP_EQ, safe_mem_is_zero("", 1));
+ tt_int_op(0, OP_EQ, safe_mem_is_zero("a", 1));
+ tt_int_op(0, OP_EQ, safe_mem_is_zero("a", 2));
+ tt_int_op(0, OP_EQ, safe_mem_is_zero("\0a", 2));
+ tt_int_op(1, OP_EQ, safe_mem_is_zero("\0\0a", 2));
+ tt_int_op(1, OP_EQ, safe_mem_is_zero("\0\0\0\0\0\0\0\0", 8));
+ tt_int_op(1, OP_EQ, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 8));
+ tt_int_op(0, OP_EQ, safe_mem_is_zero("\0\0\0\0\0\0\0\0a", 9));
done:
;
@@ -4172,12 +4183,12 @@ static void
test_util_n_bits_set(void *ptr)
{
(void)ptr;
- tt_int_op(0,==, n_bits_set_u8(0));
- tt_int_op(1,==, n_bits_set_u8(1));
- tt_int_op(3,==, n_bits_set_u8(7));
- tt_int_op(1,==, n_bits_set_u8(8));
- tt_int_op(2,==, n_bits_set_u8(129));
- tt_int_op(8,==, n_bits_set_u8(255));
+ tt_int_op(0,OP_EQ, n_bits_set_u8(0));
+ tt_int_op(1,OP_EQ, n_bits_set_u8(1));
+ tt_int_op(3,OP_EQ, n_bits_set_u8(7));
+ tt_int_op(1,OP_EQ, n_bits_set_u8(8));
+ tt_int_op(2,OP_EQ, n_bits_set_u8(129));
+ tt_int_op(8,OP_EQ, n_bits_set_u8(255));
done:
;
}
@@ -4198,78 +4209,82 @@ test_util_eat_whitespace(void *ptr)
strlcpy(str, "fuubaar", sizeof(str));
for (i = 0; i < sizeof(ws); ++i) {
str[0] = ws[i];
- tt_ptr_op(str + 1,==, eat_whitespace(str));
- tt_ptr_op(str + 1,==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + 1,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str + 1,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
}
str[0] = '\n';
- tt_ptr_op(str + 1,==, eat_whitespace(str));
- tt_ptr_op(str + 1,==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Empty string */
strlcpy(str, "", sizeof(str));
- tt_ptr_op(str,==, eat_whitespace(str));
- tt_ptr_op(str,==, eat_whitespace_eos(str, str));
- tt_ptr_op(str,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str,==, eat_whitespace_eos_no_nl(str, str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_eos(str, str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_eos_no_nl(str, str));
/* Only ws */
strlcpy(str, " \t\r\n", sizeof(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + strlen(str) - 1,==,
+ tt_ptr_op(str + strlen(str),OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + strlen(str),OP_EQ,
+ eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str + strlen(str) - 1,OP_EQ,
eat_whitespace_no_nl(str));
- tt_ptr_op(str + strlen(str) - 1,==,
+ tt_ptr_op(str + strlen(str) - 1,OP_EQ,
eat_whitespace_eos_no_nl(str, str + strlen(str)));
strlcpy(str, " \t\r ", sizeof(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace(str));
- tt_ptr_op(str + strlen(str),==,
+ tt_ptr_op(str + strlen(str),OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + strlen(str),OP_EQ,
eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + strlen(str),==, eat_whitespace_no_nl(str));
- tt_ptr_op(str + strlen(str),==,
+ tt_ptr_op(str + strlen(str),OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str + strlen(str),OP_EQ,
eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Multiple ws */
strlcpy(str, "fuubaar", sizeof(str));
for (i = 0; i < sizeof(ws); ++i)
str[i] = ws[i];
- tt_ptr_op(str + sizeof(ws),==, eat_whitespace(str));
- tt_ptr_op(str + sizeof(ws),==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + sizeof(ws),==, eat_whitespace_no_nl(str));
- tt_ptr_op(str + sizeof(ws),==,
+ tt_ptr_op(str + sizeof(ws),OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + sizeof(ws),OP_EQ,
+ eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str + sizeof(ws),OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str + sizeof(ws),OP_EQ,
eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Eat comment */
strlcpy(str, "# Comment \n No Comment", sizeof(str));
- tt_str_op("No Comment",==, eat_whitespace(str));
- tt_str_op("No Comment",==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_str_op("No Comment",OP_EQ, eat_whitespace(str));
+ tt_str_op("No Comment",OP_EQ, eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Eat comment & ws mix */
strlcpy(str, " # \t Comment \n\t\nNo Comment", sizeof(str));
- tt_str_op("No Comment",==, eat_whitespace(str));
- tt_str_op("No Comment",==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + 1,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str + 1,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_str_op("No Comment",OP_EQ, eat_whitespace(str));
+ tt_str_op("No Comment",OP_EQ, eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str + 1,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Eat entire comment */
strlcpy(str, "#Comment", sizeof(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_ptr_op(str + strlen(str),OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + strlen(str),OP_EQ,
+ eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
/* Blank line, then comment */
strlcpy(str, " \t\n # Comment", sizeof(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace(str));
- tt_ptr_op(str + strlen(str),==, eat_whitespace_eos(str, str + strlen(str)));
- tt_ptr_op(str + 2,==, eat_whitespace_no_nl(str));
- tt_ptr_op(str + 2,==, eat_whitespace_eos_no_nl(str, str + strlen(str)));
+ tt_ptr_op(str + strlen(str),OP_EQ, eat_whitespace(str));
+ tt_ptr_op(str + strlen(str),OP_EQ,
+ eat_whitespace_eos(str, str + strlen(str)));
+ tt_ptr_op(str + 2,OP_EQ, eat_whitespace_no_nl(str));
+ tt_ptr_op(str + 2,OP_EQ, eat_whitespace_eos_no_nl(str, str + strlen(str)));
done:
;
@@ -4308,11 +4323,11 @@ test_util_sl_new_from_text_lines(void *ptr)
smartlist_t *sl = smartlist_new_from_text_lines("foo\nbar\nbaz\n");
int sl_len = smartlist_len(sl);
- tt_want_int_op(sl_len, ==, 3);
+ tt_want_int_op(sl_len, OP_EQ, 3);
- if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), ==, "foo");
- if (sl_len > 1) tt_want_str_op(smartlist_get(sl, 1), ==, "bar");
- if (sl_len > 2) tt_want_str_op(smartlist_get(sl, 2), ==, "baz");
+ if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), OP_EQ, "foo");
+ if (sl_len > 1) tt_want_str_op(smartlist_get(sl, 1), OP_EQ, "bar");
+ if (sl_len > 2) tt_want_str_op(smartlist_get(sl, 2), OP_EQ, "baz");
SMARTLIST_FOREACH(sl, void *, x, tor_free(x));
smartlist_free(sl);
@@ -4322,11 +4337,11 @@ test_util_sl_new_from_text_lines(void *ptr)
smartlist_t *sl = smartlist_new_from_text_lines("foo\nbar\nbaz");
int sl_len = smartlist_len(sl);
- tt_want_int_op(sl_len, ==, 3);
+ tt_want_int_op(sl_len, OP_EQ, 3);
- if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), ==, "foo");
- if (sl_len > 1) tt_want_str_op(smartlist_get(sl, 1), ==, "bar");
- if (sl_len > 2) tt_want_str_op(smartlist_get(sl, 2), ==, "baz");
+ if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), OP_EQ, "foo");
+ if (sl_len > 1) tt_want_str_op(smartlist_get(sl, 1), OP_EQ, "bar");
+ if (sl_len > 2) tt_want_str_op(smartlist_get(sl, 2), OP_EQ, "baz");
SMARTLIST_FOREACH(sl, void *, x, tor_free(x));
smartlist_free(sl);
@@ -4336,9 +4351,9 @@ test_util_sl_new_from_text_lines(void *ptr)
smartlist_t *sl = smartlist_new_from_text_lines("foo");
int sl_len = smartlist_len(sl);
- tt_want_int_op(sl_len, ==, 1);
+ tt_want_int_op(sl_len, OP_EQ, 1);
- if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), ==, "foo");
+ if (sl_len > 0) tt_want_str_op(smartlist_get(sl, 0), OP_EQ, "foo");
SMARTLIST_FOREACH(sl, void *, x, tor_free(x));
smartlist_free(sl);
@@ -4348,7 +4363,7 @@ test_util_sl_new_from_text_lines(void *ptr)
smartlist_t *sl = smartlist_new_from_text_lines("");
int sl_len = smartlist_len(sl);
- tt_want_int_op(sl_len, ==, 0);
+ tt_want_int_op(sl_len, OP_EQ, 0);
SMARTLIST_FOREACH(sl, void *, x, tor_free(x));
smartlist_free(sl);
@@ -4431,7 +4446,7 @@ test_util_make_environment(void *ptr)
smartlist_sort_strings(env_vars_sorted);
smartlist_sort_strings(env_vars_in_unixoid_env_block_sorted);
- tt_want_int_op(smartlist_len(env_vars_sorted), ==,
+ tt_want_int_op(smartlist_len(env_vars_sorted), OP_EQ,
smartlist_len(env_vars_in_unixoid_env_block_sorted));
{
int len = smartlist_len(env_vars_sorted);
@@ -4442,7 +4457,7 @@ test_util_make_environment(void *ptr)
}
for (i = 0; i < len; ++i) {
- tt_want_str_op(smartlist_get(env_vars_sorted, i), ==,
+ tt_want_str_op(smartlist_get(env_vars_sorted, i), OP_EQ,
smartlist_get(env_vars_in_unixoid_env_block_sorted, i));
}
}
@@ -4524,7 +4539,7 @@ test_util_set_env_var_in_sl(void *ptr)
smartlist_sort_strings(merged_env_vars);
smartlist_sort_strings(expected_resulting_env_vars);
- tt_want_int_op(smartlist_len(merged_env_vars), ==,
+ tt_want_int_op(smartlist_len(merged_env_vars), OP_EQ,
smartlist_len(expected_resulting_env_vars));
{
int len = smartlist_len(merged_env_vars);
@@ -4535,7 +4550,7 @@ test_util_set_env_var_in_sl(void *ptr)
}
for (i = 0; i < len; ++i) {
- tt_want_str_op(smartlist_get(merged_env_vars, i), ==,
+ tt_want_str_op(smartlist_get(merged_env_vars, i), OP_EQ,
smartlist_get(expected_resulting_env_vars, i));
}
}
@@ -4562,8 +4577,8 @@ test_util_weak_random(void *arg)
for (i = 1; i <= 256; ++i) {
for (j=0;j<100;++j) {
int r = tor_weak_random_range(&rng, i);
- tt_int_op(0, <=, r);
- tt_int_op(r, <, i);
+ tt_int_op(0, OP_LE, r);
+ tt_int_op(r, OP_LT, i);
}
}
@@ -4573,7 +4588,7 @@ test_util_weak_random(void *arg)
}
for (i=0;i<16;++i)
- tt_int_op(n[i], >, 0);
+ tt_int_op(n[i], OP_GT, 0);
done:
;
}
@@ -4585,9 +4600,9 @@ test_util_mathlog(void *arg)
(void) arg;
d = tor_mathlog(2.718281828);
- tt_double_op(fabs(d - 1.0), <, .000001);
+ tt_double_op(fabs(d - 1.0), OP_LT, .000001);
d = tor_mathlog(10);
- tt_double_op(fabs(d - 2.30258509), <, .000001);
+ tt_double_op(fabs(d - 2.30258509), OP_LT, .000001);
done:
;
}
@@ -4671,36 +4686,36 @@ test_util_socket(void *arg)
fd2 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 0, 1);
tt_assert(SOCKET_OK(fd1));
tt_assert(SOCKET_OK(fd2));
- tt_int_op(get_n_open_sockets(), ==, n + 2);
+ tt_int_op(get_n_open_sockets(), OP_EQ, n + 2);
//fd3 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 1, 0);
//fd4 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 1, 1);
fd3 = tor_open_socket(AF_INET, SOCK_STREAM, 0);
fd4 = tor_open_socket_nonblocking(AF_INET, SOCK_STREAM, 0);
tt_assert(SOCKET_OK(fd3));
tt_assert(SOCKET_OK(fd4));
- tt_int_op(get_n_open_sockets(), ==, n + 4);
+ tt_int_op(get_n_open_sockets(), OP_EQ, n + 4);
#ifdef CAN_CHECK_CLOEXEC
- tt_int_op(fd_is_cloexec(fd1), ==, 0);
- tt_int_op(fd_is_cloexec(fd2), ==, 0);
- tt_int_op(fd_is_cloexec(fd3), ==, 1);
- tt_int_op(fd_is_cloexec(fd4), ==, 1);
+ tt_int_op(fd_is_cloexec(fd1), OP_EQ, 0);
+ tt_int_op(fd_is_cloexec(fd2), OP_EQ, 0);
+ tt_int_op(fd_is_cloexec(fd3), OP_EQ, 1);
+ tt_int_op(fd_is_cloexec(fd4), OP_EQ, 1);
#endif
#ifdef CAN_CHECK_NONBLOCK
- tt_int_op(fd_is_nonblocking(fd1), ==, 0);
- tt_int_op(fd_is_nonblocking(fd2), ==, 1);
- tt_int_op(fd_is_nonblocking(fd3), ==, 0);
- tt_int_op(fd_is_nonblocking(fd4), ==, 1);
+ tt_int_op(fd_is_nonblocking(fd1), OP_EQ, 0);
+ tt_int_op(fd_is_nonblocking(fd2), OP_EQ, 1);
+ tt_int_op(fd_is_nonblocking(fd3), OP_EQ, 0);
+ tt_int_op(fd_is_nonblocking(fd4), OP_EQ, 1);
#endif
tor_close_socket(fd1);
tor_close_socket(fd2);
fd1 = fd2 = TOR_INVALID_SOCKET;
- tt_int_op(get_n_open_sockets(), ==, n + 2);
+ tt_int_op(get_n_open_sockets(), OP_EQ, n + 2);
tor_close_socket(fd3);
tor_close_socket(fd4);
fd3 = fd4 = TOR_INVALID_SOCKET;
- tt_int_op(get_n_open_sockets(), ==, n);
+ tt_int_op(get_n_open_sockets(), OP_EQ, n);
done:
if (SOCKET_OK(fd1))
@@ -4742,17 +4757,17 @@ test_util_socketpair(void *arg)
tor_socket_t fds[2] = {TOR_INVALID_SOCKET, TOR_INVALID_SOCKET};
const int family = AF_UNIX;
- tt_int_op(0, ==, tor_socketpair_fn(family, SOCK_STREAM, 0, fds));
+ tt_int_op(0, OP_EQ, tor_socketpair_fn(family, SOCK_STREAM, 0, fds));
tt_assert(SOCKET_OK(fds[0]));
tt_assert(SOCKET_OK(fds[1]));
- tt_int_op(get_n_open_sockets(), ==, n + 2);
+ tt_int_op(get_n_open_sockets(), OP_EQ, n + 2);
#ifdef CAN_CHECK_CLOEXEC
- tt_int_op(fd_is_cloexec(fds[0]), ==, 1);
- tt_int_op(fd_is_cloexec(fds[1]), ==, 1);
+ tt_int_op(fd_is_cloexec(fds[0]), OP_EQ, 1);
+ tt_int_op(fd_is_cloexec(fds[1]), OP_EQ, 1);
#endif
#ifdef CAN_CHECK_NONBLOCK
- tt_int_op(fd_is_nonblocking(fds[0]), ==, 0);
- tt_int_op(fd_is_nonblocking(fds[1]), ==, 0);
+ tt_int_op(fd_is_nonblocking(fds[0]), OP_EQ, 0);
+ tt_int_op(fd_is_nonblocking(fds[1]), OP_EQ, 0);
#endif
done:
@@ -4771,18 +4786,18 @@ test_util_max_mem(void *arg)
r = get_total_system_memory(&memory1);
r2 = get_total_system_memory(&memory2);
- tt_int_op(r, ==, r2);
- tt_uint_op(memory2, ==, memory1);
+ tt_int_op(r, OP_EQ, r2);
+ tt_uint_op(memory2, OP_EQ, memory1);
TT_BLATHER(("System memory: "U64_FORMAT, U64_PRINTF_ARG(memory1)));
if (r==0) {
/* You have at least a megabyte. */
- tt_uint_op(memory1, >, (1<<20));
+ tt_uint_op(memory1, OP_GT, (1<<20));
} else {
/* You do not have a petabyte. */
#if SIZEOF_SIZE_T == SIZEOF_UINT64_T
- tt_uint_op(memory1, <, (U64_LITERAL(1)<<50));
+ tt_uint_op(memory1, OP_LT, (U64_LITERAL(1)<<50));
#endif
}
@@ -4790,6 +4805,52 @@ test_util_max_mem(void *arg)
;
}
+static void
+test_util_hostname_validation(void *arg)
+{
+ (void)arg;
+
+ // Lets try valid hostnames first.
+ tt_assert(string_is_valid_hostname("torproject.org"));
+ tt_assert(string_is_valid_hostname("ocw.mit.edu"));
+ tt_assert(string_is_valid_hostname("i.4cdn.org"));
+ tt_assert(string_is_valid_hostname("stanford.edu"));
+ tt_assert(string_is_valid_hostname("multiple-words-with-hypens.jp"));
+
+ // Subdomain name cannot start with '-'.
+ tt_assert(!string_is_valid_hostname("-torproject.org"));
+ tt_assert(!string_is_valid_hostname("subdomain.-domain.org"));
+ tt_assert(!string_is_valid_hostname("-subdomain.domain.org"));
+
+ // Hostnames cannot contain non-alphanumeric characters.
+ tt_assert(!string_is_valid_hostname("%%domain.\\org."));
+ tt_assert(!string_is_valid_hostname("***x.net"));
+ tt_assert(!string_is_valid_hostname("___abc.org"));
+ tt_assert(!string_is_valid_hostname("\xff\xffxyz.org"));
+ tt_assert(!string_is_valid_hostname("word1 word2.net"));
+
+ // XXX: do we allow single-label DNS names?
+
+ done:
+ return;
+}
+
+static void
+test_util_ipv4_validation(void *arg)
+{
+ (void)arg;
+
+ tt_assert(string_is_valid_ipv4_address("192.168.0.1"));
+ tt_assert(string_is_valid_ipv4_address("8.8.8.8"));
+
+ tt_assert(!string_is_valid_ipv4_address("abcd"));
+ tt_assert(!string_is_valid_ipv4_address("300.300.300.300"));
+ tt_assert(!string_is_valid_ipv4_address("8.8."));
+
+ done:
+ return;
+}
+
struct testcase_t util_tests[] = {
UTIL_LEGACY(time),
UTIL_TEST(parse_http_time, 0),
@@ -4863,6 +4924,8 @@ struct testcase_t util_tests[] = {
{ "socketpair_ersatz", test_util_socketpair, TT_FORK,
&socketpair_setup, (void*)"1" },
UTIL_TEST(max_mem, 0),
+ UTIL_TEST(hostname_validation, 0),
+ UTIL_TEST(ipv4_validation, 0),
END_OF_TESTCASES
};