[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [snowflake/master] Implemented geoip lookups for the snowflake broker. This heavily based off of how tor maps IP addresses to country codes, and relies on the provided ipv4 and ipv6 files.
commit 171c55a9b1aa34a0ec6d4413eb4e4b14954450d1
Author: Cecylia Bocovich <cohosh@xxxxxxxxxxxxxx>
Date: Wed Mar 13 13:51:38 2019 -0400
Implemented geoip lookups for the snowflake broker. This heavily based off of how tor maps IP addresses to country codes, and relies on the provided ipv4 and ipv6 files.
---
broker/broker.go | 54 +-
broker/geoip.go | 239 ++++++++
broker/metrics.go | 106 +++-
broker/snowflake-broker_test.go | 103 ++++
broker/test_geoip | 1236 +++++++++++++++++++++++++++++++++++++++
broker/test_geoip6 | 693 ++++++++++++++++++++++
6 files changed, 2428 insertions(+), 3 deletions(-)
diff --git a/broker/broker.go b/broker/broker.go
index a41aadb..faa6f4a 100644
--- a/broker/broker.go
+++ b/broker/broker.go
@@ -12,8 +12,12 @@ import (
"fmt"
"io/ioutil"
"log"
+ "net"
"net/http"
+ "os"
+ "os/signal"
"strings"
+ "syscall"
"time"
"golang.org/x/crypto/acme/autocert"
@@ -36,11 +40,21 @@ type BrokerContext struct {
func NewBrokerContext() *BrokerContext {
snowflakes := new(SnowflakeHeap)
heap.Init(snowflakes)
+ metrics, err := NewMetrics()
+
+ if err != nil {
+ panic(err.Error())
+ }
+
+ if metrics == nil {
+ panic("Failed to create metrics")
+ }
+
return &BrokerContext{
snowflakes: snowflakes,
idToSnowflake: make(map[string]*Snowflake),
proxyPolls: make(chan *ProxyPoll),
- metrics: new(Metrics),
+ metrics: metrics,
}
}
@@ -203,6 +217,16 @@ func proxyAnswers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusBadRequest)
return
}
+
+ // Get proxy country stats
+ remoteIP, _, err := net.SplitHostPort(r.RemoteAddr)
+ if err != nil {
+ log.Println("Error processing proxy IP: ", err.Error())
+ } else {
+
+ ctx.metrics.UpdateCountryStats(remoteIP)
+ }
+
log.Println("Received answer: ", body)
snowflake.answerChannel <- body
}
@@ -213,6 +237,7 @@ func debugHandler(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) {
s += fmt.Sprintf("\nsnowflake %d: %s", snowflake.index, snowflake.id)
}
s += fmt.Sprintf("\n\nroundtrip avg: %d", ctx.metrics.clientRoundtripEstimate)
+ s += fmt.Sprintf("\n\nsnowflake country stats: %s", ctx.metrics.countryStats.Display())
w.Write([]byte(s))
}
@@ -225,18 +250,31 @@ func main() {
var acmeEmail string
var acmeHostnamesCommas string
var addr string
+ var geoipDatabase string
+ var geoip6Database string
var disableTLS bool
+ var disableGeoip bool
flag.StringVar(&acmeEmail, "acme-email", "", "optional contact email for Let's Encrypt notifications")
flag.StringVar(&acmeHostnamesCommas, "acme-hostnames", "", "comma-separated hostnames for TLS certificate")
flag.StringVar(&addr, "addr", ":443", "address to listen on")
+ flag.StringVar(&geoipDatabase, "geoipdb", "/usr/share/tor/geoip", "path to correctly formatted geoip database mapping IPv4 address ranges to country codes")
+ flag.StringVar(&geoip6Database, "geoip6db", "/usr/share/tor/geoip6", "path to correctly formatted geoip database mapping IPv6 address ranges to country codes")
flag.BoolVar(&disableTLS, "disable-tls", false, "don't use HTTPS")
+ flag.BoolVar(&disableGeoip, "disable-geoip", false, "don't use geoip for stats collection")
flag.Parse()
log.SetFlags(log.LstdFlags | log.LUTC)
ctx := NewBrokerContext()
+ if !disableGeoip {
+ err := ctx.metrics.LoadGeoipDatabases(geoipDatabase, geoip6Database)
+ if err != nil {
+ log.Fatal(err.Error())
+ }
+ }
+
go ctx.Broker()
http.HandleFunc("/robots.txt", robotsTxtHandler)
@@ -251,6 +289,20 @@ func main() {
Addr: addr,
}
+ sigChan := make(chan os.Signal, 1)
+ signal.Notify(sigChan, syscall.SIGHUP)
+
+ // go routine to handle a SIGHUP signal to allow the broker operator to send
+ // a SIGHUP signal when the geoip database files are updated, without requiring
+ // a restart of the broker
+ go func() {
+ for {
+ signal := <-sigChan
+ log.Println("Received signal:", signal, ". Reloading geoip databases.")
+ ctx.metrics.LoadGeoipDatabases(geoipDatabase, geoip6Database)
+ }
+ }()
+
if acmeHostnamesCommas != "" {
acmeHostnames := strings.Split(acmeHostnamesCommas, ",")
log.Printf("ACME hostnames: %q", acmeHostnames)
diff --git a/broker/geoip.go b/broker/geoip.go
new file mode 100644
index 0000000..27a87fd
--- /dev/null
+++ b/broker/geoip.go
@@ -0,0 +1,239 @@
+/*
+This code is for loading database data that maps ip addresses to countries
+for collecting and presenting statistics on snowflake use that might alert us
+to censorship events.
+
+The functions here are heavily based off of how tor maintains and searches their
+geoip database
+
+The tables used for geoip data must be structured as follows:
+
+Recognized line format for IPv4 is:
+ INTIPLOW,INTIPHIGH,CC
+ where INTIPLOW and INTIPHIGH are IPv4 addresses encoded as big-endian 4-byte unsigned
+ integers, and CC is a country code.
+
+Note that the IPv4 line format
+ "INTIPLOW","INTIPHIGH","CC","CC3","COUNTRY NAME"
+is not currently supported.
+
+Recognized line format for IPv6 is:
+ IPV6LOW,IPV6HIGH,CC
+ where IPV6LOW and IPV6HIGH are IPv6 addresses and CC is a country code.
+
+It also recognizes, and skips over, blank lines and lines that start
+with '#' (comments).
+
+*/
+package main
+
+import (
+ "bufio"
+ "bytes"
+ "crypto/sha1"
+ "encoding/hex"
+ "fmt"
+ "io"
+ "log"
+ "net"
+ "os"
+ "sort"
+ "strconv"
+ "strings"
+ "sync"
+)
+
+type GeoIPTable interface {
+ parseEntry(string) (*GeoIPEntry, error)
+ Len() int
+ Append(GeoIPEntry)
+ ElementAt(int) GeoIPEntry
+ Lock()
+ Unlock()
+}
+
+type GeoIPEntry struct {
+ ipLow net.IP
+ ipHigh net.IP
+ country string
+}
+
+type GeoIPv4Table struct {
+ table []GeoIPEntry
+
+ lock sync.Mutex // synchronization for geoip table accesses and reloads
+}
+
+type GeoIPv6Table struct {
+ table []GeoIPEntry
+
+ lock sync.Mutex // synchronization for geoip table accesses and reloads
+}
+
+func (table GeoIPv4Table) Len() int { return len(table.table) }
+func (table GeoIPv6Table) Len() int { return len(table.table) }
+
+func (table *GeoIPv4Table) Append(entry GeoIPEntry) {
+ (*table).table = append(table.table, entry)
+}
+func (table *GeoIPv6Table) Append(entry GeoIPEntry) {
+ (*table).table = append(table.table, entry)
+}
+
+func (table GeoIPv4Table) ElementAt(i int) GeoIPEntry { return table.table[i] }
+func (table GeoIPv6Table) ElementAt(i int) GeoIPEntry { return table.table[i] }
+
+func (table *GeoIPv4Table) Lock() { (*table).lock.Lock() }
+func (table *GeoIPv6Table) Lock() { (*table).lock.Lock() }
+
+func (table *GeoIPv4Table) Unlock() { (*table).lock.Unlock() }
+func (table *GeoIPv6Table) Unlock() { (*table).lock.Unlock() }
+
+// Convert a geoip IP address represented as a big-endian unsigned integer to net.IP
+func geoipStringToIP(ipStr string) (net.IP, error) {
+ ip, err := strconv.ParseUint(ipStr, 10, 32)
+ if err != nil {
+ return net.IPv4(0, 0, 0, 0), fmt.Errorf("Error parsing IP %s", ipStr)
+ }
+ var bytes [4]byte
+ bytes[0] = byte(ip & 0xFF)
+ bytes[1] = byte((ip >> 8) & 0xFF)
+ bytes[2] = byte((ip >> 16) & 0xFF)
+ bytes[3] = byte((ip >> 24) & 0xFF)
+
+ return net.IPv4(bytes[3], bytes[2], bytes[1], bytes[0]), nil
+}
+
+//Parses a line in the provided geoip file that corresponds
+//to an address range and a two character country code
+func (table *GeoIPv4Table) parseEntry(candidate string) (*GeoIPEntry, error) {
+
+ if candidate[0] == '#' {
+ return nil, nil
+ }
+
+ parsedCandidate := strings.Split(candidate, ",")
+
+ if len(parsedCandidate) != 3 {
+ return nil, fmt.Errorf("Provided geoip file is incorrectly formatted. Could not parse line:\n%s", parsedCandidate)
+ }
+
+ low, err := geoipStringToIP(parsedCandidate[0])
+ if err != nil {
+ return nil, err
+ }
+ high, err := geoipStringToIP(parsedCandidate[1])
+ if err != nil {
+ return nil, err
+ }
+
+ geoipEntry := &GeoIPEntry{
+ ipLow: low,
+ ipHigh: high,
+ country: parsedCandidate[2],
+ }
+
+ return geoipEntry, nil
+}
+
+//Parses a line in the provided geoip file that corresponds
+//to an address range and a two character country code
+func (table *GeoIPv6Table) parseEntry(candidate string) (*GeoIPEntry, error) {
+
+ if candidate[0] == '#' {
+ return nil, nil
+ }
+
+ parsedCandidate := strings.Split(candidate, ",")
+
+ if len(parsedCandidate) != 3 {
+ return nil, fmt.Errorf("")
+ }
+
+ low := net.ParseIP(parsedCandidate[0])
+ if low == nil {
+ return nil, fmt.Errorf("")
+ }
+ high := net.ParseIP(parsedCandidate[1])
+ if high == nil {
+ return nil, fmt.Errorf("")
+ }
+
+ geoipEntry := &GeoIPEntry{
+ ipLow: low,
+ ipHigh: high,
+ country: parsedCandidate[2],
+ }
+
+ return geoipEntry, nil
+}
+
+//Loads provided geoip file into our tables
+//Entries are stored in a table
+func GeoIPLoadFile(table GeoIPTable, pathname string) error {
+ //open file
+ geoipFile, err := os.Open(pathname)
+ if err != nil {
+ return err
+ }
+ defer geoipFile.Close()
+
+ hash := sha1.New()
+
+ table.Lock()
+ defer table.Unlock()
+
+ hashedFile := io.TeeReader(geoipFile, hash)
+
+ //read in strings and call parse function
+ scanner := bufio.NewScanner(hashedFile)
+ for scanner.Scan() {
+ entry, err := table.parseEntry(scanner.Text())
+ if err != nil {
+ return fmt.Errorf("Provided geoip file is incorrectly formatted. Line is: %+q", scanner.Text())
+ }
+
+ if entry != nil {
+ table.Append(*entry)
+ }
+
+ }
+ if err := scanner.Err(); err != nil {
+ return err
+ }
+
+ sha1Hash := hex.EncodeToString(hash.Sum(nil))
+ log.Println("Using geoip file ", pathname, " with checksum", sha1Hash)
+ log.Println("Loaded ", table.Len(), " entries into table")
+
+ return nil
+}
+
+//Returns the country location of an IPv4 or IPv6 address.
+func GetCountryByAddr(table GeoIPTable, ip net.IP) (string, bool) {
+
+ table.Lock()
+ defer table.Unlock()
+
+ //look IP up in database
+ index := sort.Search(table.Len(), func(i int) bool {
+ entry := table.ElementAt(i)
+ return (bytes.Compare(ip.To16(), entry.ipHigh.To16()) <= 0)
+ })
+
+ if index == table.Len() {
+ return "", false
+ }
+
+ // check to see if addr is in the range specified by the returned index
+ // search on IPs in invalid ranges (e.g., 127.0.0.0/8) will return the
+ //country code of the next highest range
+ entry := table.ElementAt(index)
+ if !(bytes.Compare(ip.To16(), entry.ipLow.To16()) >= 0 &&
+ bytes.Compare(ip.To16(), entry.ipHigh.To16()) <= 0) {
+ return "", false
+ }
+
+ return table.ElementAt(index).country, true
+
+}
diff --git a/broker/metrics.go b/broker/metrics.go
index 002fdfe..9eabe57 100644
--- a/broker/metrics.go
+++ b/broker/metrics.go
@@ -2,16 +2,118 @@ package main
import (
// "golang.org/x/net/internal/timeseries"
+ "fmt"
+ "log"
+ "net"
+ "os"
+ "sync"
"time"
)
+var (
+ once sync.Once
+)
+
+type CountryStats struct {
+ counts map[string]int
+}
+
// Implements Observable
type Metrics struct {
+ tablev4 *GeoIPv4Table
+ tablev6 *GeoIPv6Table
+ countryStats CountryStats
// snowflakes timeseries.Float
clientRoundtripEstimate time.Duration
}
-func NewMetrics() *Metrics {
+func (s CountryStats) Display() string {
+ return fmt.Sprintln(s.counts)
+}
+
+func (m *Metrics) UpdateCountryStats(addr string) {
+
+ var country string
+ var ok bool
+
+ ip := net.ParseIP(addr)
+ if ip.To4() != nil {
+ //This is an IPv4 address
+ if m.tablev4 == nil {
+ return
+ }
+ country, ok = GetCountryByAddr(m.tablev4, ip)
+ } else {
+ if m.tablev6 == nil {
+ return
+ }
+ country, ok = GetCountryByAddr(m.tablev6, ip)
+ }
+
+ if !ok {
+ country = "??"
+ log.Println("Unknown geoip")
+ }
+
+ //update map of countries and counts
+ if country != "" {
+ m.countryStats.counts[country]++
+ }
+
+ return
+}
+
+func (m *Metrics) LoadGeoipDatabases(geoipDB string, geoip6DB string) error {
+
+ // Load geoip databases
+ log.Println("Loading geoip databases")
+ tablev4 := new(GeoIPv4Table)
+ err := GeoIPLoadFile(tablev4, geoipDB)
+ if err != nil {
+ m.tablev4 = nil
+ return err
+ } else {
+ m.tablev4 = tablev4
+ }
+
+ tablev6 := new(GeoIPv6Table)
+ err = GeoIPLoadFile(tablev6, geoip6DB)
+ if err != nil {
+ m.tablev6 = nil
+ return err
+ } else {
+ m.tablev6 = tablev6
+ }
+
+ return nil
+}
+
+func NewMetrics() (*Metrics, error) {
m := new(Metrics)
- return m
+
+ f, err := os.OpenFile("metrics.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+
+ if err != nil {
+ return nil, err
+ }
+
+ metricsLogger := log.New(f, "", log.LstdFlags|log.LUTC)
+
+ m.countryStats = CountryStats{
+ counts: make(map[string]int),
+ }
+
+ // Write to log file every hour with updated metrics
+ go once.Do(func() {
+ heartbeat := time.Tick(time.Hour)
+ for range heartbeat {
+ metricsLogger.Println("Country stats: ", m.countryStats.Display())
+
+ //restore all metrics to original values
+ m.countryStats.counts = make(map[string]int)
+
+ }
+ })
+
+ return m, nil
}
diff --git a/broker/snowflake-broker_test.go b/broker/snowflake-broker_test.go
index 109d7df..463c5e7 100644
--- a/broker/snowflake-broker_test.go
+++ b/broker/snowflake-broker_test.go
@@ -4,6 +4,7 @@ import (
"bytes"
"container/heap"
. "github.com/smartystreets/goconvey/convey"
+ "net"
"net/http"
"net/http/httptest"
"testing"
@@ -268,3 +269,105 @@ func TestSnowflakeHeap(t *testing.T) {
So(r.index, ShouldEqual, -1)
})
}
+
+func TestGeoip(t *testing.T) {
+ Convey("Geoip", t, func() {
+ tv4 := new(GeoIPv4Table)
+ err := GeoIPLoadFile(tv4, "test_geoip")
+ So(err, ShouldEqual, nil)
+ tv6 := new(GeoIPv6Table)
+ err = GeoIPLoadFile(tv6, "test_geoip6")
+ So(err, ShouldEqual, nil)
+
+ Convey("IPv4 Country Mapping Tests", func() {
+ for _, test := range []struct {
+ addr, cc string
+ ok bool
+ }{
+ {
+ "129.97.208.23", //uwaterloo
+ "CA",
+ true,
+ },
+ {
+ "127.0.0.1",
+ "",
+ false,
+ },
+ {
+ "255.255.255.255",
+ "",
+ false,
+ },
+ {
+ "0.0.0.0",
+ "",
+ false,
+ },
+ {
+ "223.252.127.255", //test high end of range
+ "JP",
+ true,
+ },
+ {
+ "223.252.127.255", //test low end of range
+ "JP",
+ true,
+ },
+ } {
+ country, ok := GetCountryByAddr(tv4, net.ParseIP(test.addr))
+ So(country, ShouldEqual, test.cc)
+ So(ok, ShouldResemble, test.ok)
+ }
+ })
+
+ Convey("IPv6 Country Mapping Tests", func() {
+ for _, test := range []struct {
+ addr, cc string
+ ok bool
+ }{
+ {
+ "2620:101:f000:0:250:56ff:fe80:168e", //uwaterloo
+ "CA",
+ true,
+ },
+ {
+ "fd00:0:0:0:0:0:0:1",
+ "",
+ false,
+ },
+ {
+ "0:0:0:0:0:0:0:0",
+ "",
+ false,
+ },
+ {
+ "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
+ "",
+ false,
+ },
+ {
+ "2a07:2e47:ffff:ffff:ffff:ffff:ffff:ffff", //test high end of range
+ "FR",
+ true,
+ },
+ {
+ "2a07:2e40::", //test low end of range
+ "FR",
+ true,
+ },
+ } {
+ country, ok := GetCountryByAddr(tv6, net.ParseIP(test.addr))
+ So(country, ShouldEqual, test.cc)
+ So(ok, ShouldResemble, test.ok)
+ }
+ })
+
+ // Make sure things behave properly if geoip file fails to load
+ ctx := NewBrokerContext()
+ ctx.metrics.LoadGeoipDatabases("invalid_filename", "invalid_filename6")
+ ctx.metrics.UpdateCountryStats("127.0.0.1")
+ So(ctx.metrics.tablev4, ShouldEqual, nil)
+
+ })
+}
diff --git a/broker/test_geoip b/broker/test_geoip
new file mode 100644
index 0000000..885c8ab
--- /dev/null
+++ b/broker/test_geoip
@@ -0,0 +1,1236 @@
+# Last updated based on February 7 2018 Maxmind GeoLite2 Country
+# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
+# gunzip GeoLite2-Country.mmdb.gz
+# python mmdb-convert.py GeoLite2-Country.mmdb
+16777216,16777471,AU
+16777472,16778239,CN
+16778240,16779263,AU
+16779264,16781311,CN
+16781312,16785407,JP
+16785408,16793599,CN
+16793600,16809983,JP
+16809984,16842751,TH
+16842752,16843007,CN
+16843008,16843263,AU
+16843264,16859135,CN
+16859136,16875519,JP
+16875520,16908287,TH
+16908288,16909055,CN
+16909056,16909311,US
+16909312,16941055,CN
+16941056,16973823,TH
+16973824,17039359,CN
+17039360,17039615,AU
+2111307776,2111832063,CN
+2111832064,2112487423,TW
+2112487424,2112618495,VN
+2112618496,2112880639,NZ
+2112880640,2113560063,KR
+2113560064,2113560319,SG
+2113560320,2113683455,KR
+2113683456,2113684607,JP
+2113684608,2113684671,TW
+2113684672,2113685663,JP
+2113685664,2113685695,SG
+2113685696,2113687999,JP
+2113688000,2113688031,AU
+2113688032,2113688959,JP
+2113688960,2113688991,SG
+2113688992,2113691135,JP
+2113691136,2113691391,SG
+2113691392,2113692415,JP
+2113692416,2113692671,HK
+2113692672,2113693599,JP
+2113693600,2113693615,HK
+2113693616,2113693879,JP
+2113693880,2113693887,AU
+2113693888,2113693951,JP
+2113693952,2113694207,HK
+2113694208,2113695279,JP
+2113695280,2113695287,SG
+2113695288,2113716223,JP
+2113716224,2113724927,SG
+2113724928,2113725183,IN
+2113725184,2113728511,SG
+2113728512,2113732607,JP
+2113732608,2113761279,AU
+2113761280,2113765375,VN
+2113765376,2113798143,HK
+2113798144,2113811455,AU
+2113811456,2113812479,GB
+2113812480,2113813503,JP
+2113813504,2113830911,AU
+2113830912,2113863679,CN
+2113863680,2113929215,AU
+2113929216,2130706431,JP
+2147483648,2147483903,NL
+2147483904,2147484671,RO
+2147484672,2147485695,TR
+2147485696,2147487743,DK
+2147487744,2147489791,NO
+2147489792,2147491839,RU
+2147491840,2147494911,DE
+2147494912,2147495167,RO
+2147495168,2147495423,DE
+2147495424,2147496959,RO
+2147496960,2147497215,ES
+2147497216,2147497471,RO
+2147497472,2147497727,PL
+2147497728,2147498239,DE
+2147498240,2147498495,RO
+2147498496,2147500031,DE
+2147500032,2147501055,NL
+2147501056,2147501311,SK
+2147501312,2147501567,NL
+2147501568,2147501823,GL
+2147501824,2147502079,US
+2147502080,2147504127,DK
+2147504128,2147508223,RU
+2147508224,2147510271,DE
+2147510272,2147510783,UA
+2147510784,2147511039,RU
+2147511040,2147512319,CY
+2147512320,2147514879,DE
+2147514880,2147516415,IT
+2147516416,2147520511,RU
+2147520512,2147524607,DE
+2147524608,2147526655,RU
+2147526656,2147528703,UA
+2147528704,2147532799,CZ
+2147532800,2147534847,DE
+2147534848,2147549183,CY
+2147549184,2147557375,US
+2147557376,2147557631,TW
+2147557632,2147557887,SG
+2147557888,2147558143,DE
+2147558144,2147558399,TH
+2147558400,2147558655,KR
+2147558656,2147558911,TW
+2147558912,2147559167,SG
+2147559168,2147559423,TH
+2147559424,2147559679,SG
+2147559680,2147559935,US
+2147559936,2147560191,DE
+2147560192,2147560447,RU
+2147560448,2147560703,TH
+2147560704,2147560959,TW
+2147560960,2147562239,US
+2147562240,2147562495,RU
+2147562496,2147563263,US
+2147563264,2147563519,RU
+2147563520,2147564287,US
+2147564288,2147564543,AE
+2147564544,2147564799,US
+2147564800,2147565055,SG
+2147565056,2147565311,HK
+2147565312,2147565999,TW
+2147566000,2147566047,JP
+2147566048,2147566079,TW
+2147566080,2147569407,US
+2147569408,2147569663,TH
+2147569664,2147570431,US
+2147570432,2147570687,JP
+2147570688,2147571455,US
+2147571456,2147571711,SG
+2147571712,2147573503,US
+2147573504,2147573759,SG
+2147573760,2147575039,US
+2147575040,2147575551,TW
+2147575552,2147575807,SG
+2147575808,2147576575,US
+2147576576,2147576831,TW
+2147576832,2147577087,TH
+2147577088,2147577599,ID
+2147577600,2147579647,US
+2147579648,2147579903,ID
+2147579904,2147580927,US
+2147580928,2147581183,ID
+2147581184,2147581439,TH
+2147581440,2147592703,US
+2147592704,2147592959,HK
+2147592960,2147600127,US
+2147600128,2147600383,SG
+2147600384,2147603711,US
+2147603712,2147603967,IN
+2147603968,2147942399,US
+2147942400,2148007935,DE
+2148007936,2148220515,US
+2148220516,2148220535,AU
+2148220536,2148229151,US
+2148229152,2148229183,CA
+2148229184,2148459007,US
+2148459008,2148459519,TW
+2148459520,2148532223,US
+2148532224,2148597759,GB
+2148597760,2148925439,US
+2148925440,2148990975,JP
+2148990976,2149253119,US
+2149253120,2149384191,JP
+2149384192,2150039551,US
+2150039552,2150105087,NO
+2150105088,2150203391,GB
+2150203392,2150236159,AF
+2150236160,2150301695,US
+2150301696,2150367231,CA
+2150367232,2150432767,US
+2150432768,2150498303,IT
+2150498304,2150957055,US
+2150957056,2151022591,JP
+2151022592,2151743487,US
+2151743488,2151759871,BY
+2151759872,2151768063,US
+2151768064,2151770111,GB
+2151770112,2151772159,BA
+2151772160,2151776255,IT
+2151776256,2151778303,AT
+2151778304,2151780351,RU
+2151780352,2151782399,DE
+2151782400,2151784447,ES
+2151784448,2151792639,IR
+2151792640,2151794687,CH
+2151794688,2151796735,IT
+2151796736,2151800831,DE
+2151800832,2151809023,PT
+2151809024,2151940095,IT
+2151940096,2152464383,RU
+2152464384,2152529919,DK
+2152529920,2152562687,NO
+2152562688,2152595455,DK
+2152595456,2152726527,FR
+2152726528,2153119743,US
+2153119744,2153185279,GB
+2153185280,2153250815,SE
+2153250816,2153381887,US
+2153381888,2153382143,JP
+2153382144,2153383679,US
+2153383680,2153383935,HK
+2153383936,2153384447,US
+2153384448,2153385471,GB
+2153385472,2153385599,AT
+2153385600,2153385663,CZ
+2153385664,2153385727,FI
+2153385728,2153385791,PL
+2153385792,2153385855,PT
+2153385856,2153385919,TR
+2153385920,2153385983,US
+2153385984,2153387007,GB
+2153387008,2153387263,CH
+2153387264,2153387519,IS
+2153387520,2153387775,IE
+2153387776,2153388031,CH
+2153388032,2153388287,ES
+2153388288,2153388543,PL
+2153388544,2153391615,US
+2153391616,2153391871,HK
+2153391872,2153394431,US
+2153394432,2153394943,SG
+2153394944,2153395455,US
+2153395456,2153395711,VN
+2153395712,2153396991,US
+2153396992,2153397247,IL
+2153397248,2153397503,IN
+2153397504,2153397759,SA
+2153397760,2153398015,QA
+2153398016,2153398271,BH
+2153398272,2153398783,JP
+2153398784,2153399551,US
+2153399552,2153399807,KR
+2153399808,2153400319,HK
+2153400320,2153401087,TW
+2153401088,2153401599,MO
+2153401600,2153402111,VN
+2153402112,2153402367,PH
+2153402368,2153403135,KR
+2153403136,2153406463,US
+2153406464,2153407487,JP
+2153407488,2153407743,HK
+2153407744,2153407999,AE
+2153408000,2153408511,BR
+2153408512,2153408767,AU
+2153408768,2153409023,PA
+2153409024,2153409279,AR
+2153409280,2153409535,CR
+2153409536,2153409791,CO
+2153409792,2153410047,MX
+2153410048,2153410303,CA
+2153410304,2153410559,TW
+2153410560,2153410815,PA
+2153410816,2153411071,AR
+2153411072,2153411327,CR
+2153411328,2153411583,CO
+2153411584,2153411839,MX
+2153411840,2153412095,SV
+2153412096,2153412351,TW
+2153412352,2153412607,UY
+2153412608,2153413119,AU
+2153413120,2153413631,BR
+2153413632,2153578495,US
+2153578496,2153644031,FR
+2153644032,2153906175,US
+2153906176,2153971711,GB
+2153971712,2154037247,US
+2154037248,2154102783,CA
+2154102784,2154430463,US
+2154430464,2154495999,SG
+2154496000,2154561535,US
+2154561536,2154627071,CN
+2154627072,2155610111,US
+2155610112,2155675647,UA
+2155675648,2155806719,US
+2155806720,2155808767,IT
+2155810816,2155812863,FR
+2155812864,2155814911,GB
+2155814912,2155819007,NL
+2155819008,2155819519,DE
+2155819520,2155821055,CH
+2155821056,2155823103,IT
+2155823104,2155825151,DE
+2155825152,2155827199,AE
+2155827200,2155831295,PL
+2155831296,2155833343,RU
+2155833344,2155833855,SE
+2155833856,2155834623,NL
+2155834624,2155834879,LU
+2155834880,2155835391,NL
+2155835392,2155839487,RO
+2155839488,2155843583,FR
+2155843584,2155845631,RU
+2155845632,2155847679,DE
+2155847680,2155849727,ES
+2155849728,2155851775,TR
+2155853824,2155855871,SE
+2155855872,2155872255,SA
+2155872256,2156003327,US
+2156003328,2156134399,AT
+2156134400,2156265471,US
+2156265472,2156331007,KR
+2156331008,2156593151,US
+2156593152,2156658687,IL
+2156658688,2156691455,IR
+2156691456,2156697599,FR
+2156697600,2156699647,GR
+2156699648,2156703743,RU
+2156703744,2156707839,BG
+2156707840,2156709887,RU
+2156709888,2156711935,ES
+2156711936,2156713983,DE
+2156713984,2156716031,NL
+2156716032,2156718079,RO
+2156718080,2156720127,IS
+2156720128,2156724223,BY
+2156724224,2156855295,CH
+2156855296,2156920831,US
+2156920832,2156986367,CA
+2156986368,2159017983,US
+2159017984,2159083519,DE
+2159083520,2159149055,US
+2159149056,2159280127,CH
+2159280128,2159542271,US
+2159542272,2159607807,AU
+2159607808,2159673343,IN
+2159673344,2159869951,US
+2159869952,2159935487,CA
+2159935488,2160525311,US
+2160525312,2160533503,SG
+2160533504,2160541695,NL
+2160541696,2160590847,SG
+2160590848,2160656383,US
+2160656384,2160657407,BR
+2160657408,2160658431,HN
+2160658432,2160661503,BR
+2160661504,2160662527,AR
+2160662528,2160664575,BR
+2160664576,2160666623,CL
+2160666624,2160676863,BR
+2160676864,2160677887,AR
+2160677888,2160678911,BR
+2160678912,2160679935,GF
+2160679936,2160684031,BR
+2160684032,2160685055,AR
+2160685056,2160686079,DO
+2160686080,2160687103,CL
+2160687104,2160690175,BR
+2160690176,2160691199,AR
+2160691200,2160693247,BR
+2160693248,2160694271,CR
+2160694272,2160697343,BR
+2160697344,2160698367,EC
+2160698368,2160699391,BR
+2160699392,2160700415,AR
+2160700416,2160713727,BR
+2160713728,2160714751,CL
+2160714752,2160716799,BR
+2160716800,2160717823,AR
+2160717824,2160721919,BR
+2160721920,2160852991,US
+2160852992,2160885759,RU
+2160885760,2160893951,AT
+2160893952,2160902143,RU
+2160902144,2160906239,NL
+2160906240,2160908287,FR
+2160908288,2160910335,PL
+2160910336,2160914431,NL
+2160914432,2160918527,SA
+2160918528,2161508351,US
+2161508352,2161573887,FI
+2161573888,2162687999,US
+2162688000,2162753535,GB
+2162753536,2162819071,CA
+2162819072,2162884607,SA
+2162884608,2163212287,US
+2163212288,2163277823,GB
+2163277824,2163408895,US
+2163408896,2163474431,GB
+2163474432,2163605503,US
+2163605504,2163638271,DE
+2163638272,2163638527,US
+2163638528,2163671039,DE
+2163671040,2163867647,US
+2163867648,2163933183,AU
+2163933184,2164260863,US
+2164260864,2164326399,CM
+2164326400,2164981759,US
+2164981760,2165112831,GB
+2165112832,2165178367,DE
+2165178368,2165309439,US
+2165309440,2165374975,SE
+2165374976,2165440511,US
+2165440512,2165506047,NG
+2165506048,2165571583,US
+2165571584,2165637119,FR
+2165637120,2165964799,US
+2165964800,2166030335,DE
+2166030336,2166095871,AT
+2166095872,2166161407,CN
+2166161408,2166292479,US
+2166292480,2166358015,GB
+2166358016,2166562559,US
+2166562560,2166562815,FI
+2166562816,2166571007,US
+2166571008,2166575103,GB
+2166575104,2166594559,US
+2166594560,2166594815,PL
+2166594816,2166729471,US
+2166729472,2166729727,CA
+2166729728,2167209983,US
+2167209984,2167242751,DZ
+2167242752,2167275519,BF
+2167275520,2167930879,US
+2167930880,2167996415,NG
+2167996416,2168193023,US
+2168193024,2168258559,JP
+2168258560,2168651775,US
+2168651776,2168717311,GB
+2168717312,2168782847,US
+2168782848,2168913919,DE
+2168913920,2169372671,US
+2169372672,2169438207,AU
+2169438208,2170028031,US
+2170028032,2170093567,FR
+2170093568,2170159103,US
+2170159104,2170224639,VE
+2170224640,2170421247,US
+2170421248,2170486783,AU
+2170486784,2170552319,US
+2170552320,2170617855,AU
+2170617856,2170683391,CA
+2170683392,2170814463,US
+2170814464,2170879999,CA
+2170880000,2170945535,US
+2170945536,2171011071,FR
+3652593408,3652593471,ES
+3652593472,3652593511,FR
+3652593512,3652593519,ES
+3652593520,3652593631,FR
+3652593632,3652593663,PT
+3652593664,3652593943,FR
+3652593944,3652593951,ES
+3652593952,3652595007,FR
+3652595008,3652595071,DE
+3652595072,3652595167,FR
+3652595168,3652595183,ES
+3652595184,3652595871,FR
+3652595872,3652595935,PL
+3652595936,3652596351,FR
+3652596352,3652596415,IT
+3652596416,3652596479,FR
+3652596480,3652596543,ES
+3652596544,3652596799,FR
+3652596800,3652596831,CZ
+3652596832,3652597183,FR
+3652597184,3652597247,DE
+3652597248,3652597375,FR
+3652597376,3652597383,ES
+3652597384,3652597407,FR
+3652597408,3652597439,PL
+3652597440,3652597887,FR
+3652597888,3652597903,GB
+3652597904,3652599569,FR
+3652599570,3652599570,PT
+3652599571,3652599679,FR
+3652599680,3652599743,IT
+3652599744,3652601855,FR
+3652601856,3652603903,PL
+3652603904,3652608191,FR
+3652608192,3652608223,PT
+3652608224,3652608255,FR
+3652608256,3652608511,GB
+3652608512,3652608639,FR
+3652608640,3652608767,GB
+3652608768,3652609023,FR
+3652609024,3652609279,GB
+3652609280,3652609503,FR
+3652609504,3652609535,FI
+3652609536,3652609727,FR
+3652609728,3652609759,PL
+3652609760,3652609791,CZ
+3652609792,3652609823,FR
+3652609824,3652609855,CZ
+3652609856,3652609919,FR
+3652609920,3652609983,ES
+3652609984,3652610047,BE
+3652610048,3652611135,FR
+3652611136,3652611199,ES
+3652611200,3652611231,FR
+3652611232,3652611263,PT
+3652611264,3652611679,FR
+3652611680,3652611711,PT
+3652611712,3652611775,NL
+3652611776,3652612223,FR
+3652612224,3652612287,ES
+3652612288,3652612351,FR
+3652612352,3652612479,GB
+3652612480,3652612543,IE
+3652612544,3652612607,NL
+3652612608,3652613335,FR
+3652613336,3652613343,ES
+3652613344,3652613375,FR
+3652613376,3652613407,FI
+3652613408,3652613615,FR
+3652613616,3652613623,ES
+3652613624,3652613679,FR
+3652613680,3652613695,LT
+3652613696,3652614015,FR
+3652614016,3652614079,BE
+3652614080,3652615871,FR
+3652615872,3652615935,DE
+3652615936,3652620639,FR
+3652620640,3652620671,CZ
+3652620672,3652620735,PT
+3652620736,3652620799,FR
+3652620800,3652620831,PT
+3652620832,3652621247,FR
+3652621248,3652621311,DE
+3652621312,3652621375,FR
+3652621376,3652621439,ES
+3652621440,3652621503,FR
+3652621504,3652621567,IT
+3652621568,3652621631,FR
+3652621632,3652621663,PT
+3652621664,3652621823,FR
+3652621824,3652621951,IE
+3652621952,3652622271,FR
+3652622272,3652622335,GB
+3652622336,3652622879,FR
+3652622880,3652622911,CZ
+3652622912,3652623679,FR
+3652623680,3652623807,NL
+3652623808,3652624191,FR
+3652624192,3652624319,IT
+3652624320,3652628479,FR
+3652628480,3652628543,IT
+3652628544,3652628607,FR
+3652628608,3652628639,PL
+3652628640,3652628855,FR
+3652628856,3652628863,ES
+3652628864,3652629743,FR
+3652629744,3652629759,ES
+3652629760,3652630015,FR
+3652630016,3652630031,ES
+3652630032,3652630079,FR
+3652630080,3652630111,PL
+3652630112,3652631295,FR
+3652631296,3652631359,BE
+3652631360,3652631391,FR
+3652631392,3652631407,CH
+3652631408,3652631423,FR
+3652631424,3652631455,PL
+3652631456,3652631551,FR
+3652631552,3652631583,CZ
+3652631584,3652631807,FR
+3652631808,3652631823,GB
+3652631824,3652632031,FR
+3652632032,3652632063,PT
+3652632064,3652632303,FR
+3652632304,3652632311,ES
+3652632312,3652633599,FR
+3652633600,3652634623,DE
+3652634624,3652635647,PL
+3652635648,3652638655,FR
+3652638656,3652638719,ES
+3652638720,3652638815,FR
+3652638816,3652638847,FI
+3652638848,3652638975,GB
+3652638976,3652639359,FR
+3652639360,3652639423,DE
+3652639424,3652639679,FR
+3652639680,3652639807,NL
+3652639808,3652640575,FR
+3652640576,3652640703,GB
+3652640704,3652640711,FR
+3652640712,3652640719,ES
+3652640720,3652640767,FR
+3652640768,3652640831,ES
+3652640832,3652641727,FR
+3652641728,3652641791,GB
+3652641792,3652642111,FR
+3652642112,3652642175,IE
+3652642176,3652642239,FR
+3652642240,3652642303,DE
+3652642304,3652642367,FR
+3652642368,3652642431,GB
+3652642432,3652642719,FR
+3652642720,3652642751,PT
+3652642752,3652642975,FR
+3652642976,3652643007,IE
+3652643008,3652643375,FR
+3652643376,3652643379,ES
+3652643380,3652643519,FR
+3652643520,3652643583,NL
+3652643584,3652643647,ES
+3652643648,3652644031,FR
+3652644032,3652644063,BE
+3652644064,3652644199,FR
+3652644200,3652644215,ES
+3652644216,3652644223,FR
+3652644224,3652644239,NL
+3652644240,3652644247,FR
+3652644248,3652644255,ES
+3652644256,3652644351,FR
+3652644352,3652644383,FI
+3652644384,3652644415,PL
+3652644416,3652644575,FR
+3652644576,3652644607,DE
+3652644608,3652645119,FR
+3652645120,3652645503,GB
+3652645504,3652645663,FR
+3652645664,3652645695,FI
+3652645696,3652645887,FR
+3652645888,3652646015,NL
+3652646016,3652646079,ES
+3652646080,3652646111,FR
+3652646112,3652646143,CZ
+3652646144,3652646271,NL
+3652646272,3652646655,FR
+3652646656,3652646719,ES
+3652646720,3652646799,FR
+3652646800,3652646815,PL
+3652646816,3652646847,FR
+3652646848,3652646863,FI
+3652646864,3652648847,FR
+3652648848,3652648863,LT
+3652648864,3652648895,FI
+3652648896,3652648959,DE
+3652648960,3652714495,IE
+3652714496,3653238783,DE
+3653238784,3653369855,CH
+3653369856,3653373951,IT
+3653373952,3653378047,NL
+3653378048,3653382143,DE
+3653382144,3653386239,CH
+3653386240,3653390335,DE
+3653390336,3653394431,FR
+3653394432,3653402623,NL
+3653402624,3653406557,GB
+3653406558,3653406558,GN
+3653406559,3653406617,GB
+3653406618,3653406618,GN
+3653406619,3653407103,GB
+3653407104,3653407111,UG
+3653407112,3653408071,GB
+3653408072,3653408079,NG
+3653408080,3653408231,GB
+3653408232,3653408239,KE
+3653408240,3653410815,GB
+3653410816,3653414911,CZ
+3653414912,3653419007,IT
+3653419008,3653423103,IL
+3653423104,3653427199,GB
+3653427200,3653431295,DE
+3653431296,3653435391,RU
+3653435392,3653439487,DE
+3653439488,3653443583,FR
+3653443584,3653447679,DE
+3653447680,3653451775,LV
+3653451776,3653464063,RU
+3653464064,3653468159,NL
+3653468160,3653472255,GR
+3653476352,3653480447,CZ
+3653480448,3653484543,DK
+3653484544,3653488639,TR
+3653488640,3653492735,RU
+3653492736,3653500927,NL
+3653500928,3653505023,GB
+3653505024,3653509119,KZ
+3653509120,3653513215,NL
+3653513216,3653517311,NO
+3653517312,3653525503,AT
+3653525504,3653529599,RU
+3653529600,3653533695,CZ
+3653533696,3653537791,IT
+3653537792,3653541887,AT
+3653541888,3653545983,UA
+3653545984,3653550079,CH
+3653550080,3653554175,MK
+3653554176,3653558271,CZ
+3653558272,3653566463,GB
+3653566464,3653570559,RU
+3653570560,3653574655,ES
+3653574656,3653578751,CZ
+3653578752,3653582847,SE
+3653582848,3653586943,PL
+3653586944,3653591039,DE
+3653591040,3653595135,LU
+3653595136,3653599231,RU
+3653599232,3653601279,CH
+3653601280,3653603327,BA
+3653603328,3653607423,CZ
+3653611520,3653615615,HU
+3653615616,3653619711,RU
+3653619712,3653623807,CH
+3653623808,3653636095,RU
+3653636096,3653640191,NL
+3653640192,3653648383,GB
+3653648384,3653652479,SE
+3653652480,3653656575,RU
+3653656576,3653660671,GB
+3653660672,3653664767,CZ
+3653664768,3653668863,DE
+3653668864,3653672959,SE
+3653672960,3653681151,RU
+3653681152,3653685247,ES
+3653685248,3653689343,DK
+3653689344,3653693439,LV
+3653693440,3653697535,DE
+3653697536,3653705727,IT
+3653705728,3653708331,NO
+3653708332,3653708332,FI
+3653708333,3653713919,NO
+3653713920,3653718015,DE
+3653718016,3653722111,AT
+3653722112,3653730303,LV
+3653730304,3653734399,BA
+3653734400,3653738495,KE
+3653738496,3653746687,GB
+3653746688,3653750783,DE
+3653750784,3653754879,RU
+3653754880,3653758975,UA
+3653758976,3653763071,RU
+3653763072,3654025215,IT
+3654025216,3654287359,GB
+3654287360,3654608404,SE
+3654608405,3654608405,NO
+3654608406,3654608895,SE
+3654608896,3654609919,NO
+3654609920,3654610431,SE
+3654610432,3654610943,FR
+3654610944,3654610951,SE
+3654610952,3654610959,DE
+3654610960,3654612231,SE
+3654612232,3654612239,AT
+3654612240,3654612271,SE
+3654612272,3654612287,AT
+3654612288,3654614047,SE
+3654614048,3654614063,GB
+3654614064,3654614079,SE
+3654614080,3654614271,FI
+3654614272,3654811647,SE
+3654811648,3654942719,ES
+3654942720,3655073791,IR
+3655073792,3655335935,IT
+3655335936,3657433087,DE
+3657433088,3659415455,CN
+3659415456,3659415487,SG
+3659415488,3659530239,CN
+3659530240,3659595775,TW
+3659595776,3659628543,ID
+3659628544,3659661311,JP
+3659661312,3659792383,TW
+3659792384,3660054527,KR
+3660054528,3660578815,JP
+3660578816,3661103103,KR
+3661103104,3663986687,CN
+3663986688,3663987711,AU
+3663987712,3663987967,ID
+3663987968,3663989247,JP
+3663989248,3663989503,VN
+3663989504,3663989759,ID
+3663989760,3663990271,AU
+3663990272,3663990527,VN
+3663990528,3663990783,JP
+3663990784,3663991295,HK
+3663991296,3663991551,MY
+3663991552,3663991807,AU
+3663992064,3663992319,NZ
+3663992320,3663992575,MY
+3663992576,3663993599,NZ
+3663993600,3663996159,ID
+3663996160,3663996415,AU
+3663996416,3663996671,TH
+3663996672,3663997183,AU
+3663997184,3663997439,ID
+3663997440,3663997695,JP
+3663997696,3663997951,AU
+3663997952,3663998207,MY
+3663998208,3663998463,JP
+3663998464,3663998975,TH
+3663998976,3663999487,IN
+3663999488,3663999743,AU
+3664000000,3664000767,AU
+3664000768,3664001023,ID
+3664001024,3664001279,NZ
+3664001280,3664001535,LK
+3664001536,3664001791,MY
+3664002048,3664002303,VN
+3664002304,3664002559,LK
+3664002560,3664003327,ID
+3664003328,3664003583,NZ
+3664003584,3664003839,TH
+3664003840,3664004095,JP
+3664004352,3664004607,MY
+3664004864,3664005119,KH
+3664005120,3664005887,ID
+3664005888,3664006143,MY
+3664006144,3664006399,AU
+3664006400,3664006655,PF
+3664006656,3664006911,AU
+3664007168,3664008191,AU
+3664008192,3664008447,MN
+3664008448,3664008703,PK
+3664008960,3664010239,AU
+3664010240,3664052223,CN
+3664052224,3664084991,NZ
+3664084992,3664117759,KR
+3664117760,3664248831,HK
+3664248832,3664642047,CN
+3664642048,3664707583,JP
+3664707584,3664773119,MY
+3664773120,3666870271,JP
+3666870272,3666960455,KR
+3666960456,3666960456,US
+3666960457,3667918847,KR
+3667918848,3668967423,TW
+3668967424,3669491711,JP
+3669491712,3669557247,TW
+3669557248,3669590015,AU
+3669590016,3669606399,JP
+3669606400,3669614591,CN
+3669614592,3669616639,NZ
+3669616640,3669618687,AU
+3669618688,3669620735,CN
+3669620736,3669622783,IN
+3669622784,3669688319,SG
+3669688320,3669753855,TW
+3669753856,3670015999,HK
+3670016000,3671064575,CN
+3671064576,3671130111,MY
+3671130112,3671195647,KR
+3671195648,3671326719,TW
+3671326720,3671392255,SG
+3671392256,3671457791,HK
+3671457792,3671588863,AU
+3671588864,3672637439,JP
+3672637440,3673161727,KR
+3673161728,3673686015,CN
+3673686016,3673751551,IN
+3673751552,3673817087,CN
+3673817088,3673882623,HK
+3673882624,3673948159,JP
+3673948160,3674210303,HK
+3674210304,3678404607,JP
+3678404608,3678535679,IN
+3678535680,3678666751,JP
+3678666752,3678928895,TW
+3678928896,3678994431,CN
+3678994432,3679027199,HK
+3679027200,3679059967,JP
+3679059968,3679158271,SG
+3679158272,3679191039,JP
+3679191040,3679453183,HK
+3679453184,3679584255,TW
+3679584256,3679649791,CN
+3679649792,3679682559,ID
+3679682560,3679715327,CN
+3679715328,3679977471,TW
+3679977472,3680108543,NZ
+3680108544,3680124927,TW
+3680124928,3680125951,IN
+3680125952,3680129023,CN
+3680129024,3680133119,PH
+3680133120,3680137215,IN
+3680137216,3680141311,HK
+3680141312,3680174079,AU
+3680174080,3680206847,TW
+3680206848,3680239615,IN
+3680239616,3680403455,MY
+3680403456,3680436223,JP
+3680436224,3680501759,MY
+3680501760,3682598911,JP
+3682598912,3684575268,CN
+3684575269,3684575269,HK
+3684575270,3684696063,CN
+3684696064,3688366079,JP
+3688366080,3689938943,CN
+3689938944,3690070015,KR
+3690070016,3690463231,CN
+3690463232,3690987519,KR
+3690987520,3695181823,JP
+3695181824,3697278975,KR
+3697278976,3697573887,JP
+3697573888,3697582079,GB
+3697582080,3697586175,SG
+3697586176,3697606655,JP
+3697606656,3697655807,AU
+3697655808,3697672191,CN
+3697672192,3697737727,JP
+3697737728,3697803263,KR
+3697803264,3698327551,JP
+3698327552,3698589695,CN
+3698589696,3699376127,KR
+3699376128,3700424703,TW
+3700424704,3700752383,JP
+3700752384,3700817919,KR
+3700817920,3700981759,JP
+3700981760,3701014527,CN
+3701014528,3701080063,JP
+3701080064,3701211135,CN
+3701211136,3701252095,JP
+3701252096,3701256191,NC
+3701256192,3701258239,SG
+3701258240,3701260287,IN
+3701260288,3701293055,JP
+3701293056,3701301247,AU
+3701301248,3701305343,ID
+3701305344,3701309439,TW
+3701309440,3701374975,JP
+3701374976,3701375999,IN
+3701376000,3701377023,HK
+3701377024,3701380095,IN
+3701380096,3701381119,KH
+3701381120,3701390335,IN
+3701390336,3701391359,AU
+3701391360,3701392383,IN
+3701392384,3701393407,HK
+3701393408,3701394431,MY
+3701394432,3701395455,BD
+3701395456,3701396479,MY
+3701396480,3701397247,NZ
+3701397248,3701397503,AU
+3701397504,3701398527,JP
+3701398528,3701399551,MV
+3701399552,3701400575,HK
+3701400576,3701401599,TW
+3701401600,3701402623,BD
+3701402624,3701403647,BT
+3701403648,3701404671,CN
+3701404672,3701405695,HK
+3701405696,3701406719,JP
+3701406720,3701407743,HK
+3701407744,3701473279,JP
+3701473280,3704619007,CN
+3704619008,3705667583,JP
+3705667584,3705929727,IN
+3705929728,3706060799,TW
+3706060800,3706126335,KR
+3706126336,3706142719,CN
+3706142720,3706159103,VN
+3706159104,3706191871,CN
+3706191872,3706207107,SG
+3706207108,3706207108,US
+3706207109,3706208255,SG
+3706208256,3706224639,CN
+3706224640,3706225663,HK
+3706225664,3706226687,JP
+3706226688,3706231807,HK
+3706231808,3706232831,JP
+3706232832,3706233343,HK
+3706233344,3706234367,JP
+3706234368,3706237951,HK
+3706237952,3706238975,JP
+3706238976,3706244095,HK
+3706244096,3706244863,JP
+3706244864,3706245887,HK
+3706245888,3706246143,JP
+3706246144,3706253823,HK
+3706253824,3706254335,JP
+3706254336,3706256895,HK
+3706256896,3706257151,JP
+3706257152,3706257407,HK
+3706257408,3706322943,AU
+3706322944,3706388479,CN
+3706388480,3706781695,AU
+3706781696,3706847231,HK
+3706847232,3706978303,CN
+3706978304,3707109375,AU
+3707109376,3707174911,HK
+3707174912,3707207679,JP
+3707207680,3707208703,BD
+3707208704,3707209727,NZ
+3707209728,3707211775,CN
+3707211776,3707215871,NP
+3707215872,3707217919,BD
+3707217920,3707219967,ID
+3707219968,3707222015,AU
+3707222016,3707224063,JP
+3707224064,3707240447,LK
+3707240448,3707568127,CN
+3707568128,3707633663,AU
+3707633664,3707699199,JP
+3707699200,3707764735,SG
+3707764736,3708600319,CN
+3708600320,3708616703,JP
+3708616704,3708813311,CN
+3708813312,3715629055,JP
+3715629056,3715653631,TW
+3715653632,3715655679,BD
+3715655680,3715657727,IN
+3715657728,3715661823,SG
+3715661824,3715670015,AU
+3715670016,3715671039,KH
+3715671040,3715672063,AU
+3715672064,3715674111,JP
+3715674112,3715678207,HK
+3715678208,3715694591,PK
+3715694592,3715710975,VN
+3715710976,3715719167,AU
+3715719168,3715727359,PH
+3715727360,3715729151,AU
+3715729152,3715729407,NZ
+3715729408,3715735551,AU
+3715735552,3715741695,JP
+3715741696,3715743743,PH
+3715743744,3715760127,JP
+3715760128,3715891199,CN
+3715891200,3716153343,HK
+3716153344,3716170239,SG
+3716170240,3716170494,TH
+3716170495,3716171519,SG
+3716171520,3716171775,JP
+3716171776,3716172031,SG
+3716172032,3716172287,JP
+3716172288,3716173055,SG
+3716173056,3716173311,JP
+3716173312,3716173567,SG
+3716173568,3716173823,JP
+3716173824,3716174079,SG
+3716174080,3716174083,TH
+3716174084,3716174335,JP
+3716174336,3716175615,SG
+3716175616,3716176895,JP
+3716176896,3716178175,SG
+3716178176,3716178943,JP
+3716178944,3716179967,SG
+3716179968,3716181759,JP
+3716181760,3716182783,SG
+3716182784,3716183295,JP
+3716183296,3716183551,SG
+3716183552,3716184063,JP
+3716184064,3716184319,SG
+3716184320,3716184575,JP
+3716184576,3716184831,SG
+3716184832,3716185087,JP
+3716185088,3716186111,SG
+3716186112,3716415487,CN
+3716415488,3716431871,VN
+3716431872,3716440063,KR
+3716440064,3716444159,JP
+3716444160,3716446207,PK
+3716446208,3716464639,JP
+3716464640,3716481023,ID
+3716481024,3716489215,VN
+3716489216,3716493311,MY
+3716493312,3716497407,KR
+3716497408,3716513791,JP
+3716513792,3716530175,KR
+3716530176,3716538367,AU
+3716538368,3716546559,CN
+3716546560,3716677631,IN
+3716677632,3716808703,CN
+3716808704,3718840319,KR
+3718840320,3718905855,TW
+3718905856,3719036927,JP
+3719036928,3719823359,CN
+3719823360,3720347647,JP
+3720347648,3720859647,CN
+3720859648,3720863743,AU
+3720863744,3723493375,CN
+3723493376,3725590527,JP
+3725590528,3730833407,CN
+3730833408,3732602879,KR
+3732602880,3732668415,TH
+3732668416,3732733951,ID
+3732733952,3732799487,CN
+3732799488,3732832255,PH
+3732832256,3732865023,CN
+3732865024,3732930559,PH
+3732930560,3733979135,CN
+3733979136,3734503423,JP
+3734503424,3734765567,NZ
+3734765568,3734896639,TW
+3734896640,3735027711,JP
+3735027712,3735289855,CN
+3735289856,3735388159,SG
+3735388160,3735404543,LK
+3735404544,3735420927,ID
+3735420928,3735551999,HK
+3735552000,3739222015,CN
+3739222016,3739570175,JP
+3739570176,3739572223,ID
+3739572224,3739574271,AU
+3739574272,3739680767,JP
+3739680768,3739697151,KR
+3739697152,3739746303,JP
+3739746304,3740270591,KR
+3740270592,3740925951,CN
+3740925952,3741024255,TW
+3741024256,3741057023,KR
+3741057024,3741319167,VN
+3741319168,3742367743,CN
+3742367744,3742629887,HK
+3742629888,3742760959,CN
+3742760960,3742892031,TW
+3742892032,3742957567,TH
+3742957568,3742973951,PH
+3742973952,3742982143,SG
+3742982144,3742986239,ID
+3742986240,3742988287,AU
+3742988288,3742990335,VU
+3742990336,3743006719,JP
+3743006720,3743014911,TH
+3743014912,3743016959,AU
+3743016960,3743019007,SG
+3743019008,3743022079,MY
+3743022080,3743023103,BD
+3743023104,3743027199,TW
+3743027200,3743028223,IN
+3743028224,3743029247,AF
+3743029248,3743030271,NZ
+3743030272,3743035391,IN
+3743035392,3743039487,HK
+3743039488,3743055871,TW
+3743055872,3743088639,KR
+3743088640,3743093647,AU
+3743093648,3743093648,NZ
+3743093649,3743096831,AU
+3743096832,3743105023,TW
+3743105024,3743106047,AU
+3743106048,3743109119,JP
+3743109120,3743113215,BD
+3743113216,3743115263,AU
+3743115264,3743117311,VN
+3743117312,3743118335,BD
+3743118336,3743119359,JP
+3743119360,3743120383,IN
+3743120384,3743121407,JP
+3743121408,3743125503,MY
+3743125504,3743129599,ID
+3743129600,3743130623,HK
+3743130624,3743130879,SG
+3743130880,3743131135,HK
+3743131136,3743133695,SG
+3743133696,3743134719,AU
+3743134720,3743135743,JP
+3743135744,3743136767,CN
+3743136768,3743137791,MY
+3743137792,3743154175,TH
+3743154176,3743186943,MY
+3743186944,3743219711,KR
+3743219712,3743252479,JP
+3743252480,3743264767,NC
+3743264768,3743268863,JP
+3743268864,3743272959,IN
+3743272960,3743273983,CN
+3743273984,3743275007,BD
+3743275008,3743276031,HK
+3743276032,3743277055,IN
+3743277056,3743281151,PK
+3743281152,3743282175,AU
+3743282176,3743283199,JP
+3743283200,3743284223,HK
+3743284224,3743285247,CN
+3743285248,3743416319,IN
+3743416320,3745513471,KR
+3745513472,3749052415,CN
+3749052416,3749183487,HK
+3749183488,3749838847,CN
+3749838848,3749839871,SG
+3749839872,3749840895,IN
+3749840896,3749841919,CN
+3749841920,3749842943,AU
+3749842944,3749843967,PH
+3749843968,3749844991,ID
+3749844992,3749846015,AU
+3749846016,3749847039,IN
+3749847040,3749855231,HK
+3749855232,3749969919,KR
+3749969920,3750232063,JP
+3750232064,3750756351,TW
+3750756352,3752067071,CN
+3752067072,3752132607,ID
+3752132608,3752133631,BD
+3752133632,3752134655,ID
+3752134656,3752136703,TW
+3752136704,3752137727,NZ
+3752137728,3752138751,JP
+3752138752,3752140799,IN
+3752140800,3752148991,JP
+3752148992,3752153087,NZ
+3752153088,3752157183,JP
+3752157184,3752165375,AU
+3752165376,3752198143,KR
+3752198144,3752329215,CN
+3752329216,3752853503,KR
+3752853504,3753902079,IN
+3753902080,3754033151,CN
+3754033152,3754164223,KR
+3754164224,3754229759,IN
+3754229760,3754295295,HK
+3754295296,3754426367,CN
+3754426368,3754491903,TW
+3754491904,3754688511,CN
+3754688512,3754950655,TH
+3754950656,3755474943,CN
+3755474944,3755737087,JP
+3755737088,3755868159,CN
+3755868160,3755933695,KR
+3755933696,3755966463,JP
+3755966464,3755974655,IN
+3755974656,3755976703,JP
+3755976704,3755978751,KH
+3755978752,3755986943,CN
+3755986944,3755988991,JP
+3755988992,3755990015,HK
+3755990016,3755991039,SG
+3755991040,3755999231,JP
+3755999232,3757047807,IN
+3757047808,3757834239,CN
+3757834240,3757850623,AU
+3757850624,3757858815,JP
+3757858816,3757862911,AU
+3757862912,3757867007,JP
+3757867008,3757875519,CN
+3757875520,3757875583,HK
+3757875584,3757899775,CN
+3757899776,3757965311,KR
+3757965312,3758063615,CN
+3758063616,3758079999,HK
+3758080000,3758088191,KR
+3758088192,3758090239,ID
+3758090240,3758091263,AU
+3758091264,3758092287,CN
+3758092288,3758093311,HK
+3758093312,3758094335,IN
+3758094336,3758095359,HK
+3758095360,3758095871,CN
+3758095872,3758096127,SG
+3758096128,3758096383,AU
diff --git a/broker/test_geoip6 b/broker/test_geoip6
new file mode 100644
index 0000000..80279f3
--- /dev/null
+++ b/broker/test_geoip6
@@ -0,0 +1,693 @@
+# Last updated based on February 7 2018 Maxmind GeoLite2 Country
+# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
+# gunzip GeoLite2-Country.mmdb.gz
+# python mmdb-convert.py GeoLite2-Country.mmdb
+600:8801:9400:5a1:948b:ab15:dde3:61a3,600:8801:9400:5a1:948b:ab15:dde3:61a3,US
+2001:200::,2001:200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2001:208::,2001:208:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2001:218::,2001:218:ffff:ffff:ffff:ffff:ffff:ffff,JP
+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
+2001:240::,2001:240:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2620:21:2000::,2620:21:2000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:4000::,2620:21:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:6000::,2620:21:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:21:8000::,2620:21:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:a000::,2620:21:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:21:c000::,2620:21:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:21:e000::,2620:21:e000:ffff:ffff:ffff:ffff:ffff,US
+2620:22::,2620:22::ffff:ffff:ffff:ffff:ffff,US
+2620:22:2000::,2620:22:2000:ffff:ffff:ffff:ffff:ffff,US
+2620:22:4000::,2620:22:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:22:6000::,2620:22:6000:ffff:ffff:ffff:ffff:ffff,US
+2620:c2:8000::,2620:c2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c2:c000::,2620:c2:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c3::,2620:c3::ffff:ffff:ffff:ffff:ffff,US
+2620:c3:4000::,2620:c3:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c3:8000::,2620:c3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c3:c000::,2620:c3:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:c4::,2620:c4::ffff:ffff:ffff:ffff:ffff,US
+2620:c4:4000::,2620:c4:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c4:8000::,2620:c4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c4:c000::,2620:c4:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:c5::,2620:c5::ffff:ffff:ffff:ffff:ffff,US
+2620:c5:4000::,2620:c5:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c5:c000::,2620:c5:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c6::,2620:c6::ffff:ffff:ffff:ffff:ffff,US
+2620:c6:4000::,2620:c6:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c6:8000::,2620:c6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c6:c000::,2620:c6:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c7::,2620:c7::ffff:ffff:ffff:ffff:ffff,US
+2620:c7:4000::,2620:c7:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c7:8000::,2620:c7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c7:c000::,2620:c7:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:c8::,2620:c8::ffff:ffff:ffff:ffff:ffff,US
+2620:c8:4000::,2620:c8:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c8:c000::,2620:c8:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:c9::,2620:c9::ffff:ffff:ffff:ffff:ffff,US
+2620:c9:4000::,2620:c9:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:c9:8000::,2620:c9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:c9:c000::,2620:c9:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ca::,2620:ca::ffff:ffff:ffff:ffff:ffff,US
+2620:ca:4000::,2620:ca:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ca:8000::,2620:ca:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ca:c000::,2620:ca:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:cb::,2620:cb:f:ffff:ffff:ffff:ffff:ffff,US
+2620:cb:4000::,2620:cb:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:cb:8000::,2620:cb:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cb:c000::,2620:cb:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:cc::,2620:cc::ffff:ffff:ffff:ffff:ffff,US
+2620:cc:4000::,2620:cc:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:cc:8000::,2620:cc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cc:c000::,2620:cc:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:cd::,2620:cd::ffff:ffff:ffff:ffff:ffff,US
+2620:cd:4000::,2620:cd:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:cd:8000::,2620:cd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cd:c000::,2620:cd:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ce::,2620:ce::ffff:ffff:ffff:ffff:ffff,US
+2620:ce:4000::,2620:ce:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ce:8000::,2620:ce:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ce:c000::,2620:ce:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:cf:4000::,2620:cf:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:cf:8000::,2620:cf:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cf:c000::,2620:cf:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:d0::,2620:d0::ffff:ffff:ffff:ffff:ffff,US
+2620:d0:4000::,2620:d0:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d0:8000::,2620:d0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d0:c000::,2620:d0:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d1::,2620:d1::ffff:ffff:ffff:ffff:ffff,US
+2620:d1:4000::,2620:d1:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d1:8000::,2620:d1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d1:c000::,2620:d1:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d2::,2620:d2::ffff:ffff:ffff:ffff:ffff,US
+2620:d2:4000::,2620:d2:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d2:8000::,2620:d2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d2:c000::,2620:d2:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:d3:4000::,2620:d3:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d3:8000::,2620:d3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d3:c000::,2620:d3:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d4::,2620:d4::ffff:ffff:ffff:ffff:ffff,US
+2620:d4:4000::,2620:d4:4000: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:4000::,2620:d5:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d5:8000::,2620:d5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d5:c000::,2620:d5:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d6::,2620:d6::ffff:ffff:ffff:ffff:ffff,US
+2620:d6:4000::,2620:d6:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d6:8000::,2620:d6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d6:c000::,2620:d6:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d7::,2620:d7::ffff:ffff:ffff:ffff:ffff,US
+2620:d7:4000::,2620:d7:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:d7:8000::,2620:d7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d7:c000::,2620:d7:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d8::,2620:d8::ffff:ffff:ffff:ffff:ffff,US
+2620:d8:4000::,2620:d8:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d8:8000::,2620:d8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d8:c000::,2620:d8:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:d9::,2620:d9::ffff:ffff:ffff:ffff:ffff,US
+2620:d9:4000::,2620:d9:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:d9:8000::,2620:d9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:d9:c000::,2620:d9:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:da::,2620:da::ffff:ffff:ffff:ffff:ffff,US
+2620:da:4000::,2620:da:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:da:c000::,2620:da:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:db::,2620:db::ffff:ffff:ffff:ffff:ffff,US
+2620:db:4000::,2620:db:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:db:8000::,2620:db:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:db:c000::,2620:db:c000: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:4000::,2620:dc:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:dc:8000::,2620:dc:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:dc:c000::,2620:dc:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:dd::,2620:dd::ffff:ffff:ffff:ffff:ffff,CA
+2620:dd:4000::,2620:dd:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:dd:8000::,2620:dd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:dd:c000::,2620:dd:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:de::,2620:de::ffff:ffff:ffff:ffff:ffff,US
+2620:de:4000::,2620:de:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:de:8000::,2620:de:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:de:c000::,2620:de:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:df::,2620:df::ffff:ffff:ffff:ffff:ffff,US
+2620:df:4000::,2620:df:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:df:8000::,2620:df:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:df:c000::,2620:df:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e0::,2620:e0::ffff:ffff:ffff:ffff:ffff,US
+2620:e0:4000::,2620:e0:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e0:8000::,2620:e0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e0:c000::,2620:e0:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e1::,2620:e1::ffff:ffff:ffff:ffff:ffff,US
+2620:e1:4000::,2620:e1:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e1:8000::,2620:e1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e1:c000::,2620:e1:c000:ffff:ffff:ffff:ffff:ffff,VG
+2620:e2::,2620:e2::ffff:ffff:ffff:ffff:ffff,US
+2620:e2:4000::,2620:e2:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e2:8000::,2620:e2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e2:c000::,2620:e2:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e3::,2620:e3::ffff:ffff:ffff:ffff:ffff,US
+2620:e3:4000::,2620:e3:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e3:8000::,2620:e3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e3:c000::,2620:e3:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e4::,2620:e4::ffff:ffff:ffff:ffff:ffff,US
+2620:e4:4000::,2620:e4:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e4:8000::,2620:e4:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e4:c000::,2620:e4:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e5::,2620:e5::ffff:ffff:ffff:ffff:ffff,US
+2620:e5:4000::,2620:e5:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e5:8000::,2620:e5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e5:c000::,2620:e5:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e6::,2620:e6::ffff:ffff:ffff:ffff:ffff,US
+2620:e6:4000::,2620:e6:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e6:8000::,2620:e6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e6:c000::,2620:e6:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e7::,2620:e7::ffff:ffff:ffff:ffff:ffff,US
+2620:e7:4000::,2620:e7:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e7:8000::,2620:e7:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:e7:c000::,2620:e7:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e8::,2620:e8::ffff:ffff:ffff:ffff:ffff,US
+2620:e8:4000::,2620:e8:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e8:8000::,2620:e8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e8:c000::,2620:e8:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:e9::,2620:e9::ffff:ffff:ffff:ffff:ffff,US
+2620:e9:4000::,2620:e9:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:e9:8000::,2620:e9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:e9:c000::,2620:e9:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ea::,2620:ea:f:ffff:ffff:ffff:ffff:ffff,US
+2620:ea:4000::,2620:ea:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ea:8000::,2620:ea:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:eb::,2620:eb::ffff:ffff:ffff:ffff:ffff,US
+2620:eb:4000::,2620:eb:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:eb:8000::,2620:eb:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:eb:c000::,2620:eb:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ec::,2620:ec::ffff:ffff:ffff:ffff:ffff,US
+2620:ec:4000::,2620:ec:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ec:8000::,2620:ec:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ec:c000::,2620:ec:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ed::,2620:ed::ffff:ffff:ffff:ffff:ffff,US
+2620:ed:4000::,2620:ed:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:ed:8000::,2620:ed:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ed:c000::,2620:ed:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ee::,2620:ee::ffff:ffff:ffff:ffff:ffff,US
+2620:ee:4000::,2620:ee:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ee:8000::,2620:ee:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ee:c000::,2620:ee:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:ef:4000::,2620:ef:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ef:8000::,2620:ef:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ef:c000::,2620:ef:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f0::,2620:f0::ffff:ffff:ffff:ffff:ffff,US
+2620:f0:4000::,2620:f0:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:8000::,2620:f0:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:c000::,2620:f0:c002:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:c003::,2620:f0:c003:ffff:ffff:ffff:ffff:ffff,NL
+2620:f0:c004::,2620:f0:c004:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:c005::,2620:f0:c005:ffff:ffff:ffff:ffff:ffff,SG
+2620:f0:c006::,2620:f0:c009:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:c00a::,2620:f0:c00a:ffff:ffff:ffff:ffff:ffff,CA
+2620:f0:c00b::,2620:f0:c00f:ffff:ffff:ffff:ffff:ffff,US
+2620:f1:4000::,2620:f1:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:f1:8000::,2620:f1:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f1:c000::,2620:f1:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f2::,2620:f2::ffff:ffff:ffff:ffff:ffff,CA
+2620:f2:4000::,2620:f2:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f2:8000::,2620:f2:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f2:c000::,2620:f2:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f3::,2620:f3::ffff:ffff:ffff:ffff:ffff,US
+2620:f3:4000::,2620:f3:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f3:8000::,2620:f3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f3:c000::,2620:f3:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f4::,2620:f4::ffff:ffff:ffff:ffff:ffff,US
+2620:f4:4000::,2620:f4:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:f4:8000::,2620:f4:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:f4:c000::,2620:f4:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f5::,2620:f5::ffff:ffff:ffff:ffff:ffff,US
+2620:f5:4000::,2620:f5:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f5:8000::,2620:f5:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f5:c000::,2620:f5:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f6::,2620:f6::ffff:ffff:ffff:ffff:ffff,CA
+2620:f6:4000::,2620:f6:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:f6:8000::,2620:f6:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f6:c000::,2620:f6:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:f7::,2620:f7::ffff:ffff:ffff:ffff:ffff,US
+2620:f7:4000::,2620:f7:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f7:8000::,2620:f7:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f7:c000::,2620:f7:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f8::,2620:f8::ffff:ffff:ffff:ffff:ffff,US
+2620:f8:4000::,2620:f8:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f8:8000::,2620:f8:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f8:c000::,2620:f8:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:f9::,2620:f9:f:ffff:ffff:ffff:ffff:ffff,US
+2620:f9:4000::,2620:f9:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:f9:8000::,2620:f9:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:f9:c000::,2620:f9:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:fa::,2620:fa::ffff:ffff:ffff:ffff:ffff,US
+2620:fa:4000::,2620:fa:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:fa:8000::,2620:fa:8000:ffff:ffff:ffff:ffff:ffff,CA
+2620:fa:c000::,2620:fa:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:fb::,2620:fb::ffff:ffff:ffff:ffff:ffff,US
+2620:fb:4000::,2620:fb:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:fb:8000::,2620:fb:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fc::,2620:fc::ffff:ffff:ffff:ffff:ffff,CA
+2620:fc:4000::,2620:fc:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:fc:8000::,2620:fc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fc:c000::,2620:fc:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:fd::,2620:fd::ffff:ffff:ffff:ffff:ffff,CA
+2620:fd:4000::,2620:fd:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:fd:8000::,2620:fd:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fd:c000::,2620:fd:c000:ffff:ffff:ffff:ffff:ffff,CA
+2620:fe::,2620:fe::ffff:ffff:ffff:ffff:ffff,US
+2620:fe:2040::,2620:fe:2040:ffff:ffff:ffff:ffff:ffff,US
+2620:fe:8000::,2620:fe:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:fe:c000::,2620:fe:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:ff::,2620:ff::ffff:ffff:ffff:ffff:ffff,US
+2620:ff:4000::,2620:ff:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:ff:8000::,2620:ff:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:ff:c000::,2620:ff:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:100::,2620:100:f: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
+2620:100:5000::,2620:100:5007:ffff:ffff:ffff:ffff:ffff,US
+2620:100:6000::,2620:100:60ff:ffff:ffff:ffff:ffff:ffff,US
+2620:100:7000::,2620:100:700f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:8000::,2620:100:8003:ffff:ffff:ffff:ffff:ffff,US
+2620:100:9000::,2620:100:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:a000::,2620:100:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:c000::,2620:100:c03f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:d000::,2620:100:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:e000::,2620:100:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:100:f000::,2620:100:f00f:ffff:ffff:ffff:ffff:ffff,US
+2620:101::,2620:101:3:ffff:ffff:ffff:ffff:ffff,US
+2620:101:1000::,2620:101:103f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:2000::,2620:101:201f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:3000::,2620:101:303f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:4000::,2620:101:403f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:5000::,2620:101:503f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:6000::,2620:101:6001:ffff:ffff:ffff:ffff:ffff,US
+2620:101:7000::,2620:101:7001:ffff:ffff:ffff:ffff:ffff,US
+2620:101:8000::,2620:101:80f1:ffff:ffff:ffff:ffff:ffff,US
+2620:101:80f2::,2620:101:80f2:7fff:ffff:ffff:ffff:ffff,CA
+2620:101:80f2:8000::,2620:101:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:101:9000::,2620:101:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:b000::,2620:101:b07f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:c000::,2620:101:c0ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:101:d000::,2620:101:d007:ffff:ffff:ffff:ffff:ffff,US
+2620:101:e000::,2620:101:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:101:f000::,2620:101:f001:ffff:ffff:ffff:ffff:ffff,CA
+2620:102::,2620:102:f:ffff:ffff:ffff:ffff:ffff,US
+2620:102:2000::,2620:102:200f:ffff:ffff:ffff:ffff:ffff,US
+2620:102:3000::,2620:102:300f:ffff:ffff:ffff:ffff:ffff,US
+2620:102:4000::,2620:102:403f:ffff:ffff:ffff:ffff:ffff,US
+2a07:14c0::,2a07:14c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:1500::,2a07:1507:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:1540::,2a07:1547:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:1580::,2a07:1587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:15c0::,2a07:15c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:1600::,2a07:1607:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:1640::,2a07:1647:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:1680::,2a07:1687:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:16c0::,2a07:16c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:1700::,2a07:1707:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:1740::,2a07:1747:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1780::,2a07:1787:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:17c0::,2a07:17c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:1800::,2a07:1807:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1840::,2a07:1847:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:1880::,2a07:1887:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:18c0::,2a07:18c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:1900::,2a07:1907:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:1940::,2a07:1947:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:1980::,2a07:1987:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a07:19c0::,2a07:19c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:1a00::,2a07:1a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:1a40::,2a07:1a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:1a80::,2a07:1a80:6fff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:1a80:7000::,2a07:1a80:70ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1a80:7100::,2a07:1a87:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:1ac0::,2a07:1ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1b00::,2a07:1b07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:1b40::,2a07:1b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:1b80::,2a07:1b87:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1bc0::,2a07:1bc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:1c00::,2a07:1c07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c40::,2a07:1c44:3ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:400::,2a07:1c44:4ff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c44:500::,2a07:1c44:609:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:60a::,2a07:1c44:60a:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c44:60b::,2a07:1c44:619:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:61a::,2a07:1c44:61a:ffff:ffff:ffff:ffff:ffff,KR
+2a07:1c44:61b::,2a07:1c44:67f:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:680::,2a07:1c44:6bf:ffff:ffff:ffff:ffff:ffff,KR
+2a07:1c44:6c0::,2a07:1c44:6ff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c44:700::,2a07:1c44:70f:ffff:ffff:ffff:ffff:ffff,US
+2a07:1c44:710::,2a07:1c44:1800:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:1801::,2a07:1c44:1802:ffff:ffff:ffff:ffff:ffff,US
+2a07:1c44:1803::,2a07:1c44:35ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:3600::,2a07:1c44:36ff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:1c44:3700::,2a07:1c44:3fff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:4000::,2a07:1c44:40ff:ffff:ffff:ffff:ffff:ffff,US
+2a07:1c44:4100::,2a07:1c44:42ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:4300::,2a07:1c44:43ff:ffff:ffff:ffff:ffff:ffff,HR
+2a07:1c44:4400::,2a07:1c44:4fff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:5000::,2a07:1c44:51ff:ffff:ffff:ffff:ffff:ffff,US
+2a07:1c44:5200::,2a07:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c80::,2a07:1c87:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:1cc0::,2a07:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:1d00::,2a07:1d07:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:1d40::,2a07:1d47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:1d80::,2a07:1d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:1dc0::,2a07:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:1e00::,2a07:1e07:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a07:1e40::,2a07:1e47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:1e80::,2a07:1e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:1ec0::,2a07:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:1f00::,2a07:1f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:1f40::,2a07:1f47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:1f80::,2a07:1f87:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a07:1fc0::,2a07:1fc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2000::,2a07:2007:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a07:2040::,2a07:2047:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:2080::,2a07:2087:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:20c0::,2a07:20c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:2100::,2a07:2107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2140::,2a07:2147:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:2180::,2a07:2187:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:21c0::,2a07:21c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:2200::,2a07:2207:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:2240::,2a07:2247:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:2280::,2a07:2287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:2300::,2a07:2307:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:2340::,2a07:2347:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:2380::,2a07:2387:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:23c0::,2a07:23c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:2400::,2a07:2407:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2440::,2a07:2447:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:2480::,2a07:2487:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:24c0::,2a07:24c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:2500::,2a07:2507:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:2540::,2a07:2547:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2580::,2a07:2587:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:25c0::,2a07:25c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:2600::,2a07:2607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2640::,2a07:2647:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:2680::,2a07:2687:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:26c0::,2a07:26c7:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a07:2700::,2a07:2707:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:2740::,2a07:2747:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2780::,2a07:2787:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:27c0::,2a07:27c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2800::,2a07:2807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2840::,2a07:2847:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:2880::,2a07:2887:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:28c0::,2a07:28c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2900::,2a07:291f:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:2a00::,2a07:2a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:2a40::,2a07:2a47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2a80::,2a07:2a87:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:2ac0::,2a07:2ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2b00::,2a07:2b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2b40::,2a07:2b47:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:2b80::,2a07:2b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2bc0::,2a07:2bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:2c00::,2a07:2c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:2c40::,2a07:2c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2c80::,2a07:2c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2cc0::,2a07:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:2d00::,2a07:2d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2d40::,2a07:2d47:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:2d80::,2a07:2d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2dc0::,2a07:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a07:2e00::,2a07:2e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:2e40::,2a07:2e47:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:2e80::,2a07:2e87:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:2ec0::,2a07:2ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2f00::,2a07:2f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:2f40::,2a07:2f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:2f80::,2a07:2f87:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:2fc0::,2a07:2fc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3000::,2a07:3007:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:3040::,2a07:3047:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:3080::,2a07:3087:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:30c0::,2a07:30c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:3100::,2a07:3107:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:3140::,2a07:3147:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a07:3180::,2a07:3187:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:31c0::,2a07:31c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3200::,2a07:3207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3240::,2a07:3247:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:3280::,2a07:3287:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:32c0::,2a07:32c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:3300::,2a07:3307:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:3340::,2a07:3347:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:3380::,2a07:3387:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:33c0::,2a07:33c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:3400::,2a07:3407:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:3440::,2a07:3447:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3480::,2a07:3487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3500::,2a07:3507:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3540::,2a07:3547:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:3580::,2a07:3587:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:35c0::,2a07:35c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:3600::,2a07:3607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:3640::,2a07:3647:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3680::,2a07:3687:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a07:36c0::,2a07:36c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3700::,2a07:3707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3740::,2a07:3747:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:3780::,2a07:3787:ffff:ffff:ffff:ffff:ffff:ffff,IS
+2a07:37c0::,2a07:37c7:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a07:3800::,2a07:3807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:3840::,2a07:3847:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a07:3880::,2a07:3887:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:38c0::,2a07:38c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:3900::,2a07:3907:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:3940::,2a07:3947:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:3980::,2a07:3987:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:39c0::,2a07:39c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:3a00::,2a07:3a07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:3a80::,2a07:3a87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:3ac0::,2a07:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:3b00::,2a07:3b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:3b40::,2a07:3b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3b80::,2a07:3b87:ffff:ffff:ffff:ffff:ffff:ffff,GI
+2a07:3bc0::,2a07:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3c00::,2a07:3c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3c40::,2a07:3c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:3c80::,2a07:3c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3d00::,2a07:3d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:3d80::,2a07:3d87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:3dc0::,2a07:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:3e00::,2a07:3e07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:3e40::,2a07:3e47:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:3e80::,2a07:3e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:3ec0::,2a07:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:3f00::,2a07:3f07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:3f40::,2a07:3f47:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:3f80::,2a07:3f87:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a07:3fc0::,2a07:3fc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:4000::,2a07:4007:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:4040::,2a07:4047:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:4080::,2a07:4087:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:40c0::,2a07:40c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a07:4100::,2a07:4107:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:4140::,2a07:4147:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a07:4180::,2a07:4187:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:41c0::,2a07:41c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:4200::,2a07:4207:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:4240::,2a07:4247:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:4280::,2a07:4287:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:42c0::,2a07:42c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:4340::,2a07:4347:ffff:ffff:ffff:ffff:ffff:ffff,AE
+2a0c:af80::,2a0c:af87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2c0f:f950::,2c0f:f950:ffff:ffff:ffff:ffff:ffff:ffff,SS
+2c0f:f958::,2c0f:f958:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f960::,2c0f:f960:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:f968::,2c0f:f968:ffff:ffff:ffff:ffff:ffff:ffff,MZ
+2c0f:f970::,2c0f:f970:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f978::,2c0f:f978:ffff:ffff:ffff:ffff:ffff:ffff,CD
+2c0f:f980::,2c0f:f980:ffff:ffff:ffff:ffff:ffff:ffff,NA
+2c0f:f988::,2c0f:f988:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f990::,2c0f:f990:ffff:ffff:ffff:ffff:ffff:ffff,GN
+2c0f:f998::,2c0f:f998:ffff:ffff:ffff:ffff:ffff:ffff,MR
+2c0f:f9a0::,2c0f:f9a0:ffff:ffff:ffff:ffff:ffff:ffff,MW
+2c0f:f9a8::,2c0f:f9a8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f9b0::,2c0f:f9b0:ffff:ffff:ffff:ffff:ffff:ffff,GA
+2c0f:f9b8::,2c0f:f9b8:1:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:f9b8:2::,2c0f:f9b8:2:ffff:ffff:ffff:ffff:ffff,US
+2c0f:f9b8:3::,2c0f:f9b8:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:f9c0::,2c0f:f9c0:ffff:ffff:ffff:ffff:ffff:ffff,BW
+2c0f:f9c8::,2c0f:f9c8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f9d0::,2c0f:f9d0:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:f9d8::,2c0f:f9d8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f9e0::,2c0f:f9e0:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:f9e8::,2c0f:f9e8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f9f0::,2c0f:f9f0:ffff:ffff:ffff:ffff:ffff:ffff,MG
+2c0f:f9f8::,2c0f:f9f8:ffff:ffff:ffff:ffff:ffff:ffff,BJ
+2c0f:fa00::,2c0f:fa00:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:fa08::,2c0f:fa08:ffff:ffff:ffff:ffff:ffff:ffff,CD
+2c0f:fa10::,2c0f:fa10:fffc:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fa10:fffd::,2c0f:fa10:fffd:7fff:ffff:ffff:ffff:ffff,ZM
+2c0f:fa10:fffd:8000::,2c0f:fa10:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fa18::,2c0f:fa18:ffff:ffff:ffff:ffff:ffff:ffff,MA
+2c0f:fa20::,2c0f:fa20:ffff:ffff:ffff:ffff:ffff:ffff,SS
+2c0f:fa28::,2c0f:fa28:ffff:ffff:ffff:ffff:ffff:ffff,MG
+2c0f:fa38::,2c0f:fa38:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fa40::,2c0f:fa40:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fa48::,2c0f:fa48:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fa58::,2c0f:fa58:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fa60::,2c0f:fa60:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fa68::,2c0f:fa68:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:fa70::,2c0f:fa70:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fa78::,2c0f:fa78:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fa80::,2c0f:fa80:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fa88::,2c0f:fa88:ffff:ffff:ffff:ffff:ffff:ffff,ST
+2c0f:fa90::,2c0f:fa90:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fa98::,2c0f:fa98:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:faa0::,2c0f:faa7:ffff:ffff:ffff:ffff:ffff:ffff,SD
+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:fad8::,2c0f:fad8:ffff:ffff:ffff:ffff:ffff:ffff,CM
+2c0f:fae0::,2c0f:fae0:ffff:ffff:ffff:ffff:ffff:ffff,CM
+2c0f:fae8::,2c0f:fae8:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:faf0::,2c0f:faf0:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:faf8::,2c0f:faf8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb00::,2c0f:fb00:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fb08::,2c0f:fb08:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb10::,2c0f:fb10:ffff:ffff:ffff:ffff:ffff:ffff,LY
+2c0f:fb18::,2c0f:fb18:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb20::,2c0f:fb20:ffff:ffff:ffff:ffff:ffff:ffff,MA
+2c0f:fb30::,2c0f:fb30:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb38::,2c0f:fb38:ffff:ffff:ffff:ffff:ffff:ffff,SO
+2c0f:fb40::,2c0f:fb40:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb48::,2c0f:fb48:ffff:ffff:ffff:ffff:ffff:ffff,MZ
+2c0f:fb50::,2c0f:fb50:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fb58::,2c0f:fb58:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fb60::,2c0f:fb60:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fb68::,2c0f:fb68:ffff:ffff:ffff:ffff:ffff:ffff,LS
+2c0f:fb70::,2c0f:fb70:ffff:ffff:ffff:ffff:ffff:ffff,AO
+2c0f:fb78::,2c0f:fb78:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fb80::,2c0f:fb80:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fb88::,2c0f:fb88:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fb90::,2c0f:fb90:ffff:ffff:ffff:ffff:ffff:ffff,MZ
+2c0f:fb98::,2c0f:fb98:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fba0::,2c0f:fba0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fba8::,2c0f:fba8:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fbb0::,2c0f:fbb0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fbb8::,2c0f:fbb8:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fbc0::,2c0f:fbc0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fbc8::,2c0f:fbc8:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fbd0::,2c0f:fbd0:ffff:ffff:ffff:ffff:ffff:ffff,GN
+2c0f:fbd8::,2c0f:fbd8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fbe0::,2c0f:fc1f:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fc40::,2c0f:fc40:ffff:ffff:ffff:ffff:ffff:ffff,EG
+2c0f:fc48::,2c0f:fc48:ffff:ffff:ffff:ffff:ffff:ffff,MW
+2c0f:fc58::,2c0f:fc58:ffff:ffff:ffff:ffff:ffff:ffff,MW
+2c0f:fc60::,2c0f:fc61:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fc68::,2c0f:fc68:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fc70::,2c0f:fc70:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fc80::,2c0f:fc80:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fc88::,2c0f:fc89:ffff:ffff:ffff:ffff:ffff:ffff,EG
+2c0f:fc90::,2c0f:fc90:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fc98::,2c0f:fc98:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fca0::,2c0f:fca0:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:fca8::,2c0f:fca8:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:fcb0::,2c0f:fcb0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fcb8::,2c0f:fcb8:ffff:ffff:ffff:ffff:ffff:ffff,GM
+2c0f:fcc8::,2c0f:fcc8:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fcd0::,2c0f:fcd0:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fcd8::,2c0f:fcd8:ffff:ffff:ffff:ffff:ffff:ffff,SO
+2c0f:fce0::,2c0f:fce0:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fce8::,2c0f:fce8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fcf0::,2c0f:fcf0:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fcf8::,2c0f:fcf8:ffff:ffff:ffff:ffff:ffff:ffff,GH
+2c0f:fd00::,2c0f:fd00:ffff:ffff:ffff:ffff:ffff:ffff,LS
+2c0f:fd08::,2c0f:fd08:ffff:ffff:ffff:ffff:ffff:ffff,GM
+2c0f:fd10::,2c0f:fd10:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fd18::,2c0f:fd18:ffff:ffff:ffff:ffff:ffff:ffff,SC
+2c0f:fd20::,2c0f:fd20:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fd28::,2c0f:fd28:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fd30::,2c0f:fd30:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fd38::,2c0f:fd38:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fd40::,2c0f:fd40:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fd48::,2c0f:fd48:ffff:ffff:ffff:ffff:ffff:ffff,ZW
+2c0f:fd50::,2c0f:fd50:ffff:ffff:ffff:ffff:ffff:ffff,MW
+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: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
+2c0f:fd90::,2c0f:fd90:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fd98::,2c0f:fd98:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fda0::,2c0f:fda0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fda8::,2c0f:fda8:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fdb0::,2c0f:fdb0:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fdb8::,2c0f:fdb8:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fdc0::,2c0f:fdc0:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fdc8::,2c0f:fdc8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fdd0::,2c0f:fdd0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fdd8::,2c0f:fdd8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fde8::,2c0f:fde8:ffff:ffff:ffff:ffff:ffff:ffff,MW
+2c0f:fdf0::,2c0f:fdf0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fdf8::,2c0f:fdf8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe08::,2c0f:fe08:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fe10::,2c0f:fe10:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fe18::,2c0f:fe18:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe20::,2c0f:fe20:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe28::,2c0f:fe28:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe30::,2c0f:fe30:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fe38::,2c0f:fe38:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fe40::,2c0f:fe40:8001:f:ffff:ffff:ffff:ffff,MU
+2c0f:fe40:8001:10::,2c0f:fe40:8001:10:ffff:ffff:ffff:ffff,KE
+2c0f:fe40:8001:11::,2c0f:fe40:80fe:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fe40:80ff::,2c0f:fe40:80ff:7fff:ffff:ffff:ffff:ffff,KE
+2c0f:fe40:80ff:8000::,2c0f:fe40:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fe50::,2c0f:fe50:ffff:ffff:ffff:ffff:ffff:ffff,DZ
+2c0f:fe58::,2c0f:fe58:ffff:ffff:ffff:ffff:ffff:ffff,LS
+2c0f:fe60::,2c0f:fe60:ffff:ffff:ffff:ffff:ffff:ffff,RW
+2c0f:fe68::,2c0f:fe68:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:fe70::,2c0f:fe70:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fe78::,2c0f:fe78:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe88::,2c0f:fe88:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:fe90::,2c0f:fe90:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fe98::,2c0f:fe98:ffff:ffff:ffff:ffff:ffff:ffff,TZ
+2c0f:fea0::,2c0f:fea0:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fea8::,2c0f:fea8:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:feb0::,2c0f:feb0:16:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:feb0:17::,2c0f:feb0:17:7fff:ffff:ffff:ffff:ffff,KE
+2c0f:feb0:17:8000::,2c0f:feb0:1e:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:feb0:1f::,2c0f:feb0:1f:7fff:ffff:ffff:ffff:ffff,ZA
+2c0f:feb0:1f:8000::,2c0f:feb0:1f:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:feb0:20::,2c0f:feb0:20:7fff:ffff:ffff:ffff:ffff,ZA
+2c0f:feb0:20:8000::,2c0f:feb0:2f:7fff:ffff:ffff:ffff:ffff,MU
+2c0f:feb0:2f:8000::,2c0f:feb0:2f:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:feb0:30::,2c0f:feb1:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:feb8::,2c0f:feb8:ffff:ffff:ffff:ffff:ffff:ffff,ZM
+2c0f:fec0::,2c0f:fec0:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:fec8::,2c0f:fec8:ffff:ffff:ffff:ffff:ffff:ffff,SD
+2c0f:fed8::,2c0f:fed8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:fee0::,2c0f:fee0:ffff:ffff:ffff:ffff:ffff:ffff,EG
+2c0f:fef0::,2c0f:fef0:ffff:ffff:ffff:ffff:ffff:ffff,SC
+2c0f:fef8::,2c0f:fef8:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:ff00::,2c0f:ff00:ffff:ffff:ffff:ffff:ffff:ffff,BW
+2c0f:ff08::,2c0f:ff08:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ff10::,2c0f:ff10:ffff:ffff:ffff:ffff:ffff:ffff,CD
+2c0f:ff18::,2c0f:ff18:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:ff20::,2c0f:ff20:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:ff28::,2c0f:ff28:ffff:ffff:ffff:ffff:ffff:ffff,SD
+2c0f:ff30::,2c0f:ff30:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ff40::,2c0f:ff80:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ff88::,2c0f:ff88:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:ff90::,2c0f:ff90:ffff:ffff:ffff:ffff:ffff:ffff,KE
+2c0f:ff98::,2c0f:ff98:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:ffa0::,2c0f:ffa0:ffff:ffff:ffff:ffff:ffff:ffff,UG
+2c0f:ffa8::,2c0f:ffa8:ffff:ffff:ffff:ffff:ffff:ffff,LS
+2c0f:ffb0::,2c0f:ffb0:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:ffb8::,2c0f:ffb8:ffff:ffff:ffff:ffff:ffff:ffff,SD
+2c0f:ffc0::,2c0f:ffc0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ffc8::,2c0f:ffc8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ffd0::,2c0f:ffd0:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ffd8::,2c0f:ffd8:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ffe8::,2c0f:ffe8:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:fff0::,2c0f:fff0:ffff:ffff:ffff:ffff:ffff:ffff,NG
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits