From b50cf84e0a81a168d2f848251f34f17d65c33997 Mon Sep 17 00:00:00 2001 From: Hans Viken Duedal Date: Fri, 12 Jul 2019 21:48:08 +0200 Subject: [PATCH] Initial version --- .golangci.yaml | 42 + README.md | 25 + cloudbuild.yaml | 13 + e164.go | 644 ++++++++++ e212.go | 2912 ++++++++++++++++++++++++++++++++++++++++++ gen/e164.py | 37 + gen/e212.py | 58 + gen/requirements.txt | 1 + go.mod | 5 + go.sum | 6 + lookup.go | 62 + lookup_test.go | 167 +++ 12 files changed, 3972 insertions(+) create mode 100644 .golangci.yaml create mode 100644 README.md create mode 100644 cloudbuild.yaml create mode 100644 e164.go create mode 100644 e212.go create mode 100644 gen/e164.py create mode 100644 gen/e212.py create mode 100644 gen/requirements.txt create mode 100644 go.mod create mode 100644 go.sum create mode 100644 lookup.go create mode 100644 lookup_test.go diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..ee191da --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,42 @@ +linters: + enable-all: true + disable: + - maligned + - prealloc + - gochecknoglobals + - gochecknoinits + +linters-settings: + govet: + check-shadowing: true + golint: + min-confidence: 0 + gocyclo: + min-complexity: 20 + maligned: + suggest-new: true + dupl: + threshold: 100 + goconst: + min-len: 2 + min-occurrences: 2 + misspell: + locale: US + lll: + line-length: 140 + goimports: + local-prefixes: github.com/golangci/golangci-lint + gocritic: + enabled-tags: + - performance + - style + - experimental + disabled-checks: + - wrapperFunc + - unnamedResult + +issues: + exclude-rules: + - text: "Binds to all network interfaces" + linters: + - gosec diff --git a/README.md b/README.md new file mode 100644 index 0000000..60cf5c1 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# phone-iso3166 + +Maps an E.164 (international) phone number to the ISO-3166-1 alpha 2 (two letter) country code, associated with that number. + +Also provides mapping for E.212 (mobile network codes, mcc+mnc) to the country. + +It's based on it's python namesake [onlinecity/phone-iso3166](https://github.com/onlinecity/phone-iso3166) - but uses a [radix](https://github.com/hashicorp/go-immutable-radix) as it's datastructure. + +### Performance + +phone-iso3166 is reasonable fast + +``` +goos: darwin +goarch: amd64 +pkg: github.com/onlinecity/go-phone-iso3166 +BenchmarkE164Lookup-8 20000000 102 ns/op 16 B/op 1 allocs/op +BenchmarkE164LookupPrealloc-8 20000000 74.3 ns/op 0 B/op 0 allocs/op +BenchmarkE164LookupBuffer-8 20000000 105 ns/op 16 B/op 1 allocs/op +BenchmarkE164LookupString-8 20000000 61.5 ns/op 0 B/op 0 allocs/op +BenchmarkE164LookupBytes-8 30000000 53.8 ns/op 0 B/op 0 allocs/op +BenchmarkE164LookupNoExist-8 10000000 151 ns/op 16 B/op 1 allocs/op +BenchmarkE212Lookup-8 10000000 163 ns/op 3 B/op 1 allocs/op +``` + diff --git a/cloudbuild.yaml b/cloudbuild.yaml new file mode 100644 index 0000000..7554c8d --- /dev/null +++ b/cloudbuild.yaml @@ -0,0 +1,13 @@ +steps: +- name: 'golang:1.12-stretch' + entrypoint: 'bash' + args: + - '-c' + - >- + go build ./...; + wget -q -O - https://github.com/golangci/golangci-lint/releases/download/v$$GOLANGCI_VERSION/golangci-lint-$$GOLANGCI_VERSION-linux-amd64.tar.gz | + tar xzf -; + golangci-lint-$$GOLANGCI_VERSION-linux-amd64/golangci-lint run; + go test -v -bench=. -benchmem ./... + env: + - 'GOLANGCI_VERSION=1.17.1' diff --git a/e164.go b/e164.go new file mode 100644 index 0000000..c6c44a6 --- /dev/null +++ b/e164.go @@ -0,0 +1,644 @@ +// Code generated by gen/gen.py DO NOT EDIT. +// https://blog.golang.org/generate +package phoneiso3166 + +import iradix "github.com/hashicorp/go-immutable-radix" + +func getE164() *iradix.Tree { + r := iradix.New() + t := r.Txn() + t.Insert([]byte("1201"), "US") + t.Insert([]byte("1202"), "US") + t.Insert([]byte("1203"), "US") + t.Insert([]byte("1204"), "CA") + t.Insert([]byte("1205"), "US") + t.Insert([]byte("1206"), "US") + t.Insert([]byte("1207"), "US") + t.Insert([]byte("1208"), "US") + t.Insert([]byte("1209"), "US") + t.Insert([]byte("1210"), "US") + t.Insert([]byte("1212"), "US") + t.Insert([]byte("1213"), "US") + t.Insert([]byte("1214"), "US") + t.Insert([]byte("1215"), "US") + t.Insert([]byte("1216"), "US") + t.Insert([]byte("1217"), "US") + t.Insert([]byte("1218"), "US") + t.Insert([]byte("1219"), "US") + t.Insert([]byte("1220"), "US") + t.Insert([]byte("1223"), "US") + t.Insert([]byte("1224"), "US") + t.Insert([]byte("1225"), "US") + t.Insert([]byte("1226"), "CA") + t.Insert([]byte("1227"), "US") + t.Insert([]byte("1228"), "US") + t.Insert([]byte("1229"), "US") + t.Insert([]byte("1231"), "US") + t.Insert([]byte("1234"), "US") + t.Insert([]byte("1236"), "CA") + t.Insert([]byte("1239"), "US") + t.Insert([]byte("1240"), "US") + t.Insert([]byte("1242"), "BS") + t.Insert([]byte("1246"), "BB") + t.Insert([]byte("1248"), "US") + t.Insert([]byte("1249"), "CA") + t.Insert([]byte("1250"), "CA") + t.Insert([]byte("1251"), "US") + t.Insert([]byte("1252"), "US") + t.Insert([]byte("1253"), "US") + t.Insert([]byte("1254"), "US") + t.Insert([]byte("1256"), "US") + t.Insert([]byte("1257"), "CA") + t.Insert([]byte("1260"), "US") + t.Insert([]byte("1262"), "US") + t.Insert([]byte("1263"), "CA") + t.Insert([]byte("1264"), "AI") + t.Insert([]byte("1267"), "US") + t.Insert([]byte("1268"), "AG") + t.Insert([]byte("1269"), "US") + t.Insert([]byte("1270"), "US") + t.Insert([]byte("1272"), "US") + t.Insert([]byte("1273"), "CA") + t.Insert([]byte("1274"), "US") + t.Insert([]byte("1276"), "US") + t.Insert([]byte("1281"), "US") + t.Insert([]byte("1283"), "US") + t.Insert([]byte("1284"), "VG") + t.Insert([]byte("1289"), "CA") + t.Insert([]byte("1301"), "US") + t.Insert([]byte("1302"), "US") + t.Insert([]byte("1303"), "US") + t.Insert([]byte("1304"), "US") + t.Insert([]byte("1305"), "US") + t.Insert([]byte("1306"), "CA") + t.Insert([]byte("1307"), "US") + t.Insert([]byte("1308"), "US") + t.Insert([]byte("1309"), "US") + t.Insert([]byte("1310"), "US") + t.Insert([]byte("1312"), "US") + t.Insert([]byte("1313"), "US") + t.Insert([]byte("1314"), "US") + t.Insert([]byte("1315"), "US") + t.Insert([]byte("1316"), "US") + t.Insert([]byte("1317"), "US") + t.Insert([]byte("1318"), "US") + t.Insert([]byte("1319"), "US") + t.Insert([]byte("1320"), "US") + t.Insert([]byte("1321"), "US") + t.Insert([]byte("1323"), "US") + t.Insert([]byte("1325"), "US") + t.Insert([]byte("1327"), "US") + t.Insert([]byte("1330"), "US") + t.Insert([]byte("1331"), "US") + t.Insert([]byte("1332"), "US") + t.Insert([]byte("1334"), "US") + t.Insert([]byte("1336"), "US") + t.Insert([]byte("1337"), "US") + t.Insert([]byte("1339"), "US") + t.Insert([]byte("1340"), "VI") + t.Insert([]byte("1341"), "US") + t.Insert([]byte("1343"), "CA") + t.Insert([]byte("1345"), "KY") + t.Insert([]byte("1346"), "US") + t.Insert([]byte("1347"), "US") + t.Insert([]byte("1351"), "US") + t.Insert([]byte("1352"), "US") + t.Insert([]byte("1353"), "US") + t.Insert([]byte("1354"), "CA") + t.Insert([]byte("1360"), "US") + t.Insert([]byte("1361"), "US") + t.Insert([]byte("1364"), "US") + t.Insert([]byte("1365"), "CA") + t.Insert([]byte("1367"), "CA") + t.Insert([]byte("1368"), "CA") + t.Insert([]byte("1369"), "US") + t.Insert([]byte("1380"), "US") + t.Insert([]byte("1382"), "CA") + t.Insert([]byte("1385"), "US") + t.Insert([]byte("1386"), "US") + t.Insert([]byte("1387"), "CA") + t.Insert([]byte("1401"), "US") + t.Insert([]byte("1402"), "US") + t.Insert([]byte("1403"), "CA") + t.Insert([]byte("1404"), "US") + t.Insert([]byte("1405"), "US") + t.Insert([]byte("1406"), "US") + t.Insert([]byte("1407"), "US") + t.Insert([]byte("1408"), "US") + t.Insert([]byte("1409"), "US") + t.Insert([]byte("1410"), "US") + t.Insert([]byte("1412"), "US") + t.Insert([]byte("1413"), "US") + t.Insert([]byte("1414"), "US") + t.Insert([]byte("1415"), "US") + t.Insert([]byte("1416"), "CA") + t.Insert([]byte("1417"), "US") + t.Insert([]byte("1418"), "CA") + t.Insert([]byte("1419"), "US") + t.Insert([]byte("1423"), "US") + t.Insert([]byte("1424"), "US") + t.Insert([]byte("1425"), "US") + t.Insert([]byte("1428"), "CA") + t.Insert([]byte("1430"), "US") + t.Insert([]byte("1431"), "CA") + t.Insert([]byte("1432"), "US") + t.Insert([]byte("1434"), "US") + t.Insert([]byte("1435"), "US") + t.Insert([]byte("1437"), "CA") + t.Insert([]byte("1438"), "CA") + t.Insert([]byte("1440"), "US") + t.Insert([]byte("1441"), "BM") + t.Insert([]byte("1442"), "US") + t.Insert([]byte("1443"), "US") + t.Insert([]byte("1447"), "US") + t.Insert([]byte("1450"), "CA") + t.Insert([]byte("1458"), "US") + t.Insert([]byte("1460"), "CA") + t.Insert([]byte("1463"), "US") + t.Insert([]byte("1464"), "US") + t.Insert([]byte("1468"), "CA") + t.Insert([]byte("1469"), "US") + t.Insert([]byte("1470"), "US") + t.Insert([]byte("1473"), "GD") + t.Insert([]byte("1474"), "CA") + t.Insert([]byte("1475"), "US") + t.Insert([]byte("1478"), "US") + t.Insert([]byte("1479"), "US") + t.Insert([]byte("1480"), "US") + t.Insert([]byte("1484"), "US") + t.Insert([]byte("1487"), "CA") + t.Insert([]byte("1501"), "US") + t.Insert([]byte("1502"), "US") + t.Insert([]byte("1503"), "US") + t.Insert([]byte("1504"), "US") + t.Insert([]byte("1505"), "US") + t.Insert([]byte("1506"), "CA") + t.Insert([]byte("1507"), "US") + t.Insert([]byte("1508"), "US") + t.Insert([]byte("1509"), "US") + t.Insert([]byte("1510"), "US") + t.Insert([]byte("1512"), "US") + t.Insert([]byte("1513"), "US") + t.Insert([]byte("1514"), "CA") + t.Insert([]byte("1515"), "US") + t.Insert([]byte("1516"), "US") + t.Insert([]byte("1517"), "US") + t.Insert([]byte("1518"), "US") + t.Insert([]byte("1519"), "CA") + t.Insert([]byte("1520"), "US") + t.Insert([]byte("1530"), "US") + t.Insert([]byte("1531"), "US") + t.Insert([]byte("1534"), "US") + t.Insert([]byte("1537"), "CA") + t.Insert([]byte("1539"), "US") + t.Insert([]byte("1540"), "US") + t.Insert([]byte("1541"), "US") + t.Insert([]byte("1548"), "CA") + t.Insert([]byte("1551"), "US") + t.Insert([]byte("1557"), "US") + t.Insert([]byte("1559"), "US") + t.Insert([]byte("1561"), "US") + t.Insert([]byte("1562"), "US") + t.Insert([]byte("1563"), "US") + t.Insert([]byte("1564"), "US") + t.Insert([]byte("1567"), "US") + t.Insert([]byte("1568"), "CA") + t.Insert([]byte("1570"), "US") + t.Insert([]byte("1571"), "US") + t.Insert([]byte("1573"), "US") + t.Insert([]byte("1574"), "US") + t.Insert([]byte("1575"), "US") + t.Insert([]byte("1579"), "CA") + t.Insert([]byte("1580"), "US") + t.Insert([]byte("1581"), "CA") + t.Insert([]byte("1582"), "US") + t.Insert([]byte("1584"), "CA") + t.Insert([]byte("1585"), "US") + t.Insert([]byte("1586"), "US") + t.Insert([]byte("1587"), "CA") + t.Insert([]byte("1600"), "CA") + t.Insert([]byte("1601"), "US") + t.Insert([]byte("1602"), "US") + t.Insert([]byte("1603"), "US") + t.Insert([]byte("1604"), "CA") + t.Insert([]byte("1605"), "US") + t.Insert([]byte("1606"), "US") + t.Insert([]byte("1607"), "US") + t.Insert([]byte("1608"), "US") + t.Insert([]byte("1609"), "US") + t.Insert([]byte("1610"), "US") + t.Insert([]byte("1612"), "US") + t.Insert([]byte("1613"), "CA") + t.Insert([]byte("1614"), "US") + t.Insert([]byte("1615"), "US") + t.Insert([]byte("1616"), "US") + t.Insert([]byte("1617"), "US") + t.Insert([]byte("1618"), "US") + t.Insert([]byte("1619"), "US") + t.Insert([]byte("1620"), "US") + t.Insert([]byte("1622"), "CA") + t.Insert([]byte("1623"), "US") + t.Insert([]byte("1626"), "US") + t.Insert([]byte("1627"), "US") + t.Insert([]byte("1628"), "US") + t.Insert([]byte("1629"), "US") + t.Insert([]byte("1630"), "US") + t.Insert([]byte("1631"), "US") + t.Insert([]byte("1636"), "US") + t.Insert([]byte("1639"), "CA") + t.Insert([]byte("1641"), "US") + t.Insert([]byte("1646"), "US") + t.Insert([]byte("1647"), "CA") + t.Insert([]byte("1649"), "TC") + t.Insert([]byte("1650"), "US") + t.Insert([]byte("1651"), "US") + t.Insert([]byte("1657"), "US") + t.Insert([]byte("1658"), "JM") + t.Insert([]byte("1659"), "US") + t.Insert([]byte("1660"), "US") + t.Insert([]byte("1661"), "US") + t.Insert([]byte("1662"), "US") + t.Insert([]byte("1664"), "MS") + t.Insert([]byte("1667"), "US") + t.Insert([]byte("1669"), "US") + t.Insert([]byte("1670"), "MP") + t.Insert([]byte("1671"), "US") + t.Insert([]byte("1672"), "CA") + t.Insert([]byte("1678"), "US") + t.Insert([]byte("1679"), "US") + t.Insert([]byte("1680"), "US") + t.Insert([]byte("1681"), "US") + t.Insert([]byte("1682"), "US") + t.Insert([]byte("1683"), "CA") + t.Insert([]byte("1684"), "US") + t.Insert([]byte("1689"), "US") + t.Insert([]byte("1701"), "US") + t.Insert([]byte("1702"), "US") + t.Insert([]byte("1703"), "US") + t.Insert([]byte("1704"), "US") + t.Insert([]byte("1705"), "CA") + t.Insert([]byte("1706"), "US") + t.Insert([]byte("1707"), "US") + t.Insert([]byte("1708"), "US") + t.Insert([]byte("1709"), "CA") + t.Insert([]byte("1710"), "US") + t.Insert([]byte("1712"), "US") + t.Insert([]byte("1713"), "US") + t.Insert([]byte("1714"), "US") + t.Insert([]byte("1715"), "US") + t.Insert([]byte("1716"), "US") + t.Insert([]byte("1717"), "US") + t.Insert([]byte("1718"), "US") + t.Insert([]byte("1719"), "US") + t.Insert([]byte("1720"), "US") + t.Insert([]byte("1721"), "SX") + t.Insert([]byte("1724"), "US") + t.Insert([]byte("1725"), "US") + t.Insert([]byte("1726"), "US") + t.Insert([]byte("1727"), "US") + t.Insert([]byte("1730"), "US") + t.Insert([]byte("1731"), "US") + t.Insert([]byte("1732"), "US") + t.Insert([]byte("1734"), "US") + t.Insert([]byte("1737"), "US") + t.Insert([]byte("1740"), "US") + t.Insert([]byte("1742"), "CA") + t.Insert([]byte("1743"), "US") + t.Insert([]byte("1747"), "US") + t.Insert([]byte("1753"), "CA") + t.Insert([]byte("1754"), "US") + t.Insert([]byte("1757"), "US") + t.Insert([]byte("1758"), "LC") + t.Insert([]byte("1760"), "US") + t.Insert([]byte("1762"), "US") + t.Insert([]byte("1763"), "US") + t.Insert([]byte("1764"), "US") + t.Insert([]byte("1765"), "US") + t.Insert([]byte("1767"), "DM") + t.Insert([]byte("1769"), "US") + t.Insert([]byte("1770"), "US") + t.Insert([]byte("1772"), "US") + t.Insert([]byte("1773"), "US") + t.Insert([]byte("1774"), "US") + t.Insert([]byte("1775"), "US") + t.Insert([]byte("1778"), "CA") + t.Insert([]byte("1779"), "US") + t.Insert([]byte("1780"), "CA") + t.Insert([]byte("1781"), "US") + t.Insert([]byte("1782"), "CA") + t.Insert([]byte("1784"), "VC") + t.Insert([]byte("1785"), "US") + t.Insert([]byte("1786"), "US") + t.Insert([]byte("1787"), "PR") + t.Insert([]byte("1801"), "US") + t.Insert([]byte("1802"), "US") + t.Insert([]byte("1803"), "US") + t.Insert([]byte("1804"), "US") + t.Insert([]byte("1805"), "US") + t.Insert([]byte("1806"), "US") + t.Insert([]byte("1807"), "CA") + t.Insert([]byte("1808"), "US") + t.Insert([]byte("1809"), "DO") + t.Insert([]byte("1810"), "US") + t.Insert([]byte("1812"), "US") + t.Insert([]byte("1813"), "US") + t.Insert([]byte("1814"), "US") + t.Insert([]byte("1815"), "US") + t.Insert([]byte("1816"), "US") + t.Insert([]byte("1817"), "US") + t.Insert([]byte("1818"), "US") + t.Insert([]byte("1819"), "CA") + t.Insert([]byte("1825"), "CA") + t.Insert([]byte("1828"), "US") + t.Insert([]byte("1829"), "DO") + t.Insert([]byte("1830"), "US") + t.Insert([]byte("1831"), "US") + t.Insert([]byte("1832"), "US") + t.Insert([]byte("1835"), "US") + t.Insert([]byte("1838"), "US") + t.Insert([]byte("1843"), "US") + t.Insert([]byte("1845"), "US") + t.Insert([]byte("1847"), "US") + t.Insert([]byte("1848"), "US") + t.Insert([]byte("1849"), "DO") + t.Insert([]byte("1850"), "US") + t.Insert([]byte("1851"), "CA") + t.Insert([]byte("1854"), "US") + t.Insert([]byte("1856"), "US") + t.Insert([]byte("1857"), "US") + t.Insert([]byte("1858"), "US") + t.Insert([]byte("1859"), "US") + t.Insert([]byte("1860"), "US") + t.Insert([]byte("1862"), "US") + t.Insert([]byte("1863"), "US") + t.Insert([]byte("1864"), "US") + t.Insert([]byte("1865"), "US") + t.Insert([]byte("1867"), "CA") + t.Insert([]byte("1868"), "TT") + t.Insert([]byte("1869"), "KN") + t.Insert([]byte("1870"), "US") + t.Insert([]byte("1871"), "CA") + t.Insert([]byte("1872"), "US") + t.Insert([]byte("1873"), "CA") + t.Insert([]byte("1876"), "JM") + t.Insert([]byte("1878"), "US") + t.Insert([]byte("1879"), "CA") + t.Insert([]byte("1901"), "US") + t.Insert([]byte("1902"), "CA") + t.Insert([]byte("1903"), "US") + t.Insert([]byte("1904"), "US") + t.Insert([]byte("1905"), "CA") + t.Insert([]byte("1906"), "US") + t.Insert([]byte("1907"), "US") + t.Insert([]byte("1908"), "US") + t.Insert([]byte("1909"), "US") + t.Insert([]byte("1910"), "US") + t.Insert([]byte("1912"), "US") + t.Insert([]byte("1913"), "US") + t.Insert([]byte("1914"), "US") + t.Insert([]byte("1915"), "US") + t.Insert([]byte("1916"), "US") + t.Insert([]byte("1917"), "US") + t.Insert([]byte("1918"), "US") + t.Insert([]byte("1919"), "US") + t.Insert([]byte("1920"), "US") + t.Insert([]byte("1925"), "US") + t.Insert([]byte("1928"), "US") + t.Insert([]byte("1929"), "US") + t.Insert([]byte("1930"), "US") + t.Insert([]byte("1931"), "US") + t.Insert([]byte("1934"), "US") + t.Insert([]byte("1935"), "US") + t.Insert([]byte("1936"), "US") + t.Insert([]byte("1937"), "US") + t.Insert([]byte("1938"), "US") + t.Insert([]byte("1939"), "PR") + t.Insert([]byte("1940"), "US") + t.Insert([]byte("1941"), "US") + t.Insert([]byte("1942"), "CA") + t.Insert([]byte("1947"), "US") + t.Insert([]byte("1949"), "US") + t.Insert([]byte("1951"), "US") + t.Insert([]byte("1952"), "US") + t.Insert([]byte("1954"), "US") + t.Insert([]byte("1956"), "US") + t.Insert([]byte("1959"), "US") + t.Insert([]byte("1970"), "US") + t.Insert([]byte("1971"), "US") + t.Insert([]byte("1972"), "US") + t.Insert([]byte("1973"), "US") + t.Insert([]byte("1975"), "US") + t.Insert([]byte("1978"), "US") + t.Insert([]byte("1979"), "US") + t.Insert([]byte("1980"), "US") + t.Insert([]byte("1984"), "US") + t.Insert([]byte("1985"), "US") + t.Insert([]byte("1986"), "US") + t.Insert([]byte("1989"), "US") + t.Insert([]byte("20"), "EG") + t.Insert([]byte("211"), "SS") + t.Insert([]byte("212"), "MA") + t.Insert([]byte("213"), "DZ") + t.Insert([]byte("216"), "TN") + t.Insert([]byte("218"), "LY") + t.Insert([]byte("220"), "GM") + t.Insert([]byte("221"), "SN") + t.Insert([]byte("222"), "MR") + t.Insert([]byte("223"), "ML") + t.Insert([]byte("224"), "GN") + t.Insert([]byte("225"), "CI") + t.Insert([]byte("226"), "BF") + t.Insert([]byte("227"), "NE") + t.Insert([]byte("228"), "TG") + t.Insert([]byte("229"), "BJ") + t.Insert([]byte("230"), "MU") + t.Insert([]byte("231"), "LR") + t.Insert([]byte("232"), "SL") + t.Insert([]byte("233"), "GH") + t.Insert([]byte("234"), "NG") + t.Insert([]byte("235"), "TD") + t.Insert([]byte("236"), "CF") + t.Insert([]byte("237"), "CM") + t.Insert([]byte("238"), "CV") + t.Insert([]byte("239"), "ST") + t.Insert([]byte("240"), "GQ") + t.Insert([]byte("241"), "GA") + t.Insert([]byte("242"), "CG") + t.Insert([]byte("243"), "CD") + t.Insert([]byte("244"), "AO") + t.Insert([]byte("245"), "GW") + t.Insert([]byte("246"), "DG") + t.Insert([]byte("247"), "SH") + t.Insert([]byte("248"), "SC") + t.Insert([]byte("249"), "SD") + t.Insert([]byte("250"), "RW") + t.Insert([]byte("251"), "ET") + t.Insert([]byte("252"), "SO") + t.Insert([]byte("253"), "DJ") + t.Insert([]byte("254"), "KE") + t.Insert([]byte("255"), "TZ") + t.Insert([]byte("256"), "UG") + t.Insert([]byte("257"), "BI") + t.Insert([]byte("258"), "MZ") + t.Insert([]byte("260"), "ZM") + t.Insert([]byte("261"), "MG") + t.Insert([]byte("262"), "RE") + t.Insert([]byte("263"), "ZW") + t.Insert([]byte("264"), "NA") + t.Insert([]byte("265"), "MW") + t.Insert([]byte("266"), "LS") + t.Insert([]byte("267"), "BW") + t.Insert([]byte("268"), "SZ") + t.Insert([]byte("269"), "KM") + t.Insert([]byte("27"), "ZA") + t.Insert([]byte("290"), "SH") + t.Insert([]byte("291"), "ER") + t.Insert([]byte("297"), "AW") + t.Insert([]byte("298"), "FO") + t.Insert([]byte("299"), "GL") + t.Insert([]byte("30"), "GR") + t.Insert([]byte("31"), "NL") + t.Insert([]byte("32"), "BE") + t.Insert([]byte("33"), "FR") + t.Insert([]byte("34"), "ES") + t.Insert([]byte("350"), "GI") + t.Insert([]byte("351"), "PT") + t.Insert([]byte("352"), "LU") + t.Insert([]byte("353"), "IE") + t.Insert([]byte("354"), "IS") + t.Insert([]byte("355"), "AL") + t.Insert([]byte("356"), "MT") + t.Insert([]byte("357"), "CY") + t.Insert([]byte("358"), "FI") + t.Insert([]byte("359"), "BG") + t.Insert([]byte("36"), "HU") + t.Insert([]byte("370"), "LT") + t.Insert([]byte("371"), "LV") + t.Insert([]byte("372"), "EE") + t.Insert([]byte("373"), "MD") + t.Insert([]byte("374"), "AM") + t.Insert([]byte("375"), "BY") + t.Insert([]byte("376"), "AD") + t.Insert([]byte("377"), "MC") + t.Insert([]byte("378"), "SM") + t.Insert([]byte("379"), "VA") + t.Insert([]byte("380"), "UA") + t.Insert([]byte("381"), "RS") + t.Insert([]byte("382"), "ME") + t.Insert([]byte("383"), "XK") + t.Insert([]byte("385"), "HR") + t.Insert([]byte("386"), "SI") + t.Insert([]byte("387"), "BA") + t.Insert([]byte("389"), "MK") + t.Insert([]byte("39"), "IT") + t.Insert([]byte("40"), "RO") + t.Insert([]byte("41"), "CH") + t.Insert([]byte("420"), "CZ") + t.Insert([]byte("421"), "SK") + t.Insert([]byte("423"), "LI") + t.Insert([]byte("43"), "AT") + t.Insert([]byte("44"), "GB") + t.Insert([]byte("45"), "DK") + t.Insert([]byte("46"), "SE") + t.Insert([]byte("47"), "NO") + t.Insert([]byte("48"), "PL") + t.Insert([]byte("49"), "DE") + t.Insert([]byte("500"), "FK") + t.Insert([]byte("501"), "BZ") + t.Insert([]byte("502"), "GT") + t.Insert([]byte("503"), "SV") + t.Insert([]byte("504"), "HN") + t.Insert([]byte("505"), "NI") + t.Insert([]byte("506"), "CR") + t.Insert([]byte("507"), "PA") + t.Insert([]byte("508"), "PM") + t.Insert([]byte("509"), "HT") + t.Insert([]byte("51"), "PE") + t.Insert([]byte("52"), "MX") + t.Insert([]byte("53"), "CU") + t.Insert([]byte("54"), "AR") + t.Insert([]byte("55"), "BR") + t.Insert([]byte("56"), "CL") + t.Insert([]byte("57"), "CO") + t.Insert([]byte("58"), "VE") + t.Insert([]byte("590"), "GP") + t.Insert([]byte("591"), "BO") + t.Insert([]byte("592"), "GY") + t.Insert([]byte("593"), "EC") + t.Insert([]byte("594"), "GF") + t.Insert([]byte("595"), "PY") + t.Insert([]byte("596"), "MQ") + t.Insert([]byte("597"), "SR") + t.Insert([]byte("598"), "UY") + t.Insert([]byte("599"), "CW") + t.Insert([]byte("60"), "MY") + t.Insert([]byte("61"), "AU") + t.Insert([]byte("62"), "ID") + t.Insert([]byte("63"), "PH") + t.Insert([]byte("64"), "NZ") + t.Insert([]byte("65"), "SG") + t.Insert([]byte("66"), "TH") + t.Insert([]byte("670"), "TL") + t.Insert([]byte("672"), "AQ") + t.Insert([]byte("673"), "BN") + t.Insert([]byte("674"), "NR") + t.Insert([]byte("675"), "PG") + t.Insert([]byte("676"), "TO") + t.Insert([]byte("677"), "SB") + t.Insert([]byte("678"), "VU") + t.Insert([]byte("679"), "FJ") + t.Insert([]byte("680"), "PW") + t.Insert([]byte("681"), "WF") + t.Insert([]byte("682"), "CK") + t.Insert([]byte("683"), "NU") + t.Insert([]byte("685"), "WS") + t.Insert([]byte("686"), "KI") + t.Insert([]byte("687"), "NC") + t.Insert([]byte("688"), "TV") + t.Insert([]byte("689"), "PF") + t.Insert([]byte("690"), "TK") + t.Insert([]byte("691"), "FM") + t.Insert([]byte("692"), "MH") + t.Insert([]byte("7"), "RU") + t.Insert([]byte("81"), "JP") + t.Insert([]byte("82"), "KR") + t.Insert([]byte("84"), "VN") + t.Insert([]byte("850"), "KP") + t.Insert([]byte("852"), "HK") + t.Insert([]byte("853"), "MO") + t.Insert([]byte("855"), "KH") + t.Insert([]byte("856"), "LA") + t.Insert([]byte("86"), "CN") + t.Insert([]byte("880"), "BD") + t.Insert([]byte("886"), "TW") + t.Insert([]byte("90"), "TR") + t.Insert([]byte("91"), "IN") + t.Insert([]byte("92"), "PK") + t.Insert([]byte("93"), "AF") + t.Insert([]byte("94"), "LK") + t.Insert([]byte("95"), "MM") + t.Insert([]byte("960"), "MV") + t.Insert([]byte("961"), "LB") + t.Insert([]byte("962"), "JO") + t.Insert([]byte("963"), "SY") + t.Insert([]byte("964"), "IQ") + t.Insert([]byte("965"), "KW") + t.Insert([]byte("966"), "SA") + t.Insert([]byte("967"), "YE") + t.Insert([]byte("968"), "OM") + t.Insert([]byte("971"), "AE") + t.Insert([]byte("972"), "IL") + t.Insert([]byte("973"), "BH") + t.Insert([]byte("974"), "QA") + t.Insert([]byte("975"), "BT") + t.Insert([]byte("976"), "MN") + t.Insert([]byte("977"), "NP") + t.Insert([]byte("98"), "IR") + t.Insert([]byte("992"), "TJ") + t.Insert([]byte("993"), "TM") + t.Insert([]byte("994"), "AZ") + t.Insert([]byte("995"), "GE") + t.Insert([]byte("996"), "KG") + t.Insert([]byte("998"), "UZ") + return t.Commit() +} diff --git a/e212.go b/e212.go new file mode 100644 index 0000000..694b696 --- /dev/null +++ b/e212.go @@ -0,0 +1,2912 @@ +// Code generated by gen/gen.py DO NOT EDIT. +package phoneiso3166 + +import iradix "github.com/hashicorp/go-immutable-radix" + +type Operator struct { + Country string + Name string +} + +type MncMap map[uint16]Operator +type MccMap map[uint16]MncMap + + +func getE212() *iradix.Tree { + r := iradix.New() + t := r.Txn() + t.Insert([]byte("202"), "GR") + t.Insert([]byte("204"), "NL") + t.Insert([]byte("206"), "BE") + t.Insert([]byte("2081"), "MC") + t.Insert([]byte("2082"), "FR") + t.Insert([]byte("2083"), "FR") + t.Insert([]byte("2084"), "FR") + t.Insert([]byte("2085"), "FR") + t.Insert([]byte("2086"), "FR") + t.Insert([]byte("2087"), "FR") + t.Insert([]byte("2088"), "FR") + t.Insert([]byte("2089"), "FR") + t.Insert([]byte("20810"), "MC") + t.Insert([]byte("20811"), "FR") + t.Insert([]byte("20812"), "FR") + t.Insert([]byte("20813"), "FR") + t.Insert([]byte("20814"), "FR") + t.Insert([]byte("20815"), "FR") + t.Insert([]byte("20816"), "FR") + t.Insert([]byte("20817"), "FR") + t.Insert([]byte("20818"), "FR") + t.Insert([]byte("20820"), "MC") + t.Insert([]byte("20821"), "FR") + t.Insert([]byte("20822"), "FR") + t.Insert([]byte("20823"), "FR") + t.Insert([]byte("20824"), "FR") + t.Insert([]byte("20825"), "FR") + t.Insert([]byte("20826"), "FR") + t.Insert([]byte("20827"), "FR") + t.Insert([]byte("20828"), "FR") + t.Insert([]byte("20830"), "FR") + t.Insert([]byte("20831"), "FR") + t.Insert([]byte("20888"), "FR") + t.Insert([]byte("20890"), "FR") + t.Insert([]byte("20891"), "FR") + t.Insert([]byte("20892"), "FR") + t.Insert([]byte("20894"), "FR") + t.Insert([]byte("212"), "MC") + t.Insert([]byte("213"), "AD") + t.Insert([]byte("214"), "ES") + t.Insert([]byte("216"), "HU") + t.Insert([]byte("218"), "BA") + t.Insert([]byte("219"), "HR") + t.Insert([]byte("220"), "RS") + t.Insert([]byte("221"), "XK") + t.Insert([]byte("222"), "IT") + t.Insert([]byte("225"), "VA") + t.Insert([]byte("226"), "RO") + t.Insert([]byte("228"), "CH") + t.Insert([]byte("230"), "CZ") + t.Insert([]byte("231"), "SK") + t.Insert([]byte("232"), "AT") + t.Insert([]byte("234"), "GB") + t.Insert([]byte("235"), "GB") + t.Insert([]byte("238"), "DK") + t.Insert([]byte("240"), "SE") + t.Insert([]byte("242"), "NO") + t.Insert([]byte("244"), "FI") + t.Insert([]byte("246"), "LT") + t.Insert([]byte("247"), "LV") + t.Insert([]byte("248"), "EE") + t.Insert([]byte("250"), "RU") + t.Insert([]byte("255"), "UA") + t.Insert([]byte("257"), "BY") + t.Insert([]byte("259"), "MD") + t.Insert([]byte("260"), "PL") + t.Insert([]byte("262"), "DE") + t.Insert([]byte("266"), "GI") + t.Insert([]byte("268"), "PT") + t.Insert([]byte("270"), "LU") + t.Insert([]byte("272"), "IE") + t.Insert([]byte("274"), "IS") + t.Insert([]byte("276"), "AL") + t.Insert([]byte("278"), "MT") + t.Insert([]byte("280"), "CY") + t.Insert([]byte("282"), "GE") + t.Insert([]byte("283"), "AM") + t.Insert([]byte("284"), "BG") + t.Insert([]byte("286"), "TR") + t.Insert([]byte("288"), "FO") + t.Insert([]byte("290"), "GL") + t.Insert([]byte("292"), "SM") + t.Insert([]byte("293"), "SI") + t.Insert([]byte("294"), "MK") + t.Insert([]byte("295"), "LI") + t.Insert([]byte("297"), "ME") + t.Insert([]byte("302"), "CA") + t.Insert([]byte("308"), "PM") + t.Insert([]byte("310"), "US") + t.Insert([]byte("311"), "US") + t.Insert([]byte("312"), "US") + t.Insert([]byte("313"), "US") + t.Insert([]byte("314"), "US") + t.Insert([]byte("315"), "US") + t.Insert([]byte("316"), "US") + t.Insert([]byte("330"), "PR") + t.Insert([]byte("332"), "VI") + t.Insert([]byte("334"), "MX") + t.Insert([]byte("338"), "JM") + t.Insert([]byte("3401"), "GP") + t.Insert([]byte("3402"), "GP") + t.Insert([]byte("3403"), "GP") + t.Insert([]byte("3408"), "GP") + t.Insert([]byte("34010"), "GP") + t.Insert([]byte("34011"), "GF") + t.Insert([]byte("34012"), "MQ") + t.Insert([]byte("34020"), "GP") + t.Insert([]byte("342"), "BB") + t.Insert([]byte("344"), "AG") + t.Insert([]byte("346"), "KY") + t.Insert([]byte("348"), "VG") + t.Insert([]byte("350"), "BM") + t.Insert([]byte("352"), "GD") + t.Insert([]byte("354"), "MS") + t.Insert([]byte("356"), "KN") + t.Insert([]byte("358"), "LC") + t.Insert([]byte("360"), "VC") + t.Insert([]byte("362"), "CW") + t.Insert([]byte("363"), "AW") + t.Insert([]byte("364"), "BS") + t.Insert([]byte("365"), "AI") + t.Insert([]byte("366"), "DM") + t.Insert([]byte("368"), "CU") + t.Insert([]byte("370"), "DO") + t.Insert([]byte("372"), "HT") + t.Insert([]byte("374"), "TT") + t.Insert([]byte("376"), "TC") + t.Insert([]byte("400"), "AZ") + t.Insert([]byte("401"), "KZ") + t.Insert([]byte("402"), "BT") + t.Insert([]byte("404"), "IN") + t.Insert([]byte("405"), "IN") + t.Insert([]byte("406"), "IN") + t.Insert([]byte("410"), "PK") + t.Insert([]byte("412"), "AF") + t.Insert([]byte("413"), "LK") + t.Insert([]byte("414"), "MM") + t.Insert([]byte("415"), "LB") + t.Insert([]byte("416"), "JO") + t.Insert([]byte("417"), "SY") + t.Insert([]byte("418"), "IQ") + t.Insert([]byte("419"), "KW") + t.Insert([]byte("420"), "SA") + t.Insert([]byte("421"), "YE") + t.Insert([]byte("422"), "OM") + t.Insert([]byte("424"), "AE") + t.Insert([]byte("425"), "IL") + t.Insert([]byte("426"), "BH") + t.Insert([]byte("427"), "QA") + t.Insert([]byte("428"), "MN") + t.Insert([]byte("429"), "NP") + t.Insert([]byte("430"), "AE") + t.Insert([]byte("431"), "AE") + t.Insert([]byte("432"), "IR") + t.Insert([]byte("434"), "UZ") + t.Insert([]byte("436"), "TJ") + t.Insert([]byte("437"), "KG") + t.Insert([]byte("438"), "TM") + t.Insert([]byte("440"), "JP") + t.Insert([]byte("441"), "JP") + t.Insert([]byte("450"), "KR") + t.Insert([]byte("452"), "VN") + t.Insert([]byte("454"), "HK") + t.Insert([]byte("455"), "MO") + t.Insert([]byte("456"), "KH") + t.Insert([]byte("457"), "LA") + t.Insert([]byte("460"), "CN") + t.Insert([]byte("461"), "CN") + t.Insert([]byte("466"), "TW") + t.Insert([]byte("467"), "KR") + t.Insert([]byte("470"), "BD") + t.Insert([]byte("472"), "MV") + t.Insert([]byte("502"), "MY") + t.Insert([]byte("505"), "AU") + t.Insert([]byte("510"), "ID") + t.Insert([]byte("514"), "TL") + t.Insert([]byte("515"), "PH") + t.Insert([]byte("520"), "TH") + t.Insert([]byte("525"), "SG") + t.Insert([]byte("528"), "BN") + t.Insert([]byte("530"), "NZ") + t.Insert([]byte("536"), "NR") + t.Insert([]byte("537"), "PG") + t.Insert([]byte("539"), "TO") + t.Insert([]byte("540"), "SB") + t.Insert([]byte("541"), "VU") + t.Insert([]byte("5421"), "FJ") + t.Insert([]byte("5422"), "NR") + t.Insert([]byte("5423"), "FJ") + t.Insert([]byte("543"), "WF") + t.Insert([]byte("544"), "AS") + t.Insert([]byte("545"), "KI") + t.Insert([]byte("546"), "NC") + t.Insert([]byte("547"), "PF") + t.Insert([]byte("548"), "CK") + t.Insert([]byte("549"), "WS") + t.Insert([]byte("550"), "FM") + t.Insert([]byte("551"), "MH") + t.Insert([]byte("552"), "PW") + t.Insert([]byte("553"), "TV") + t.Insert([]byte("554"), "TK") + t.Insert([]byte("555"), "NU") + t.Insert([]byte("602"), "EG") + t.Insert([]byte("603"), "DZ") + t.Insert([]byte("604"), "MA") + t.Insert([]byte("605"), "TN") + t.Insert([]byte("606"), "LY") + t.Insert([]byte("607"), "GM") + t.Insert([]byte("608"), "SN") + t.Insert([]byte("609"), "MR") + t.Insert([]byte("610"), "ML") + t.Insert([]byte("611"), "GN") + t.Insert([]byte("612"), "CI") + t.Insert([]byte("613"), "BF") + t.Insert([]byte("614"), "NE") + t.Insert([]byte("615"), "TG") + t.Insert([]byte("616"), "BJ") + t.Insert([]byte("617"), "MU") + t.Insert([]byte("618"), "LR") + t.Insert([]byte("619"), "SL") + t.Insert([]byte("620"), "GH") + t.Insert([]byte("621"), "NG") + t.Insert([]byte("622"), "TD") + t.Insert([]byte("623"), "CF") + t.Insert([]byte("624"), "CM") + t.Insert([]byte("625"), "CV") + t.Insert([]byte("626"), "ST") + t.Insert([]byte("627"), "GQ") + t.Insert([]byte("628"), "GA") + t.Insert([]byte("629"), "CG") + t.Insert([]byte("630"), "CD") + t.Insert([]byte("631"), "AO") + t.Insert([]byte("632"), "GW") + t.Insert([]byte("633"), "SC") + t.Insert([]byte("634"), "SD") + t.Insert([]byte("635"), "RW") + t.Insert([]byte("636"), "ET") + t.Insert([]byte("637"), "SO") + t.Insert([]byte("638"), "DJ") + t.Insert([]byte("639"), "KE") + t.Insert([]byte("640"), "TZ") + t.Insert([]byte("641"), "UG") + t.Insert([]byte("642"), "BI") + t.Insert([]byte("643"), "MZ") + t.Insert([]byte("645"), "ZM") + t.Insert([]byte("646"), "MG") + t.Insert([]byte("647"), "RE") + t.Insert([]byte("648"), "ZW") + t.Insert([]byte("649"), "NA") + t.Insert([]byte("650"), "MW") + t.Insert([]byte("651"), "LS") + t.Insert([]byte("652"), "BW") + t.Insert([]byte("653"), "SZ") + t.Insert([]byte("654"), "KM") + t.Insert([]byte("655"), "ZA") + t.Insert([]byte("657"), "ER") + t.Insert([]byte("658"), "SH") + t.Insert([]byte("659"), "SS") + t.Insert([]byte("702"), "BZ") + t.Insert([]byte("704"), "GT") + t.Insert([]byte("706"), "SV") + t.Insert([]byte("708"), "HN") + t.Insert([]byte("710"), "NI") + t.Insert([]byte("712"), "CR") + t.Insert([]byte("714"), "PA") + t.Insert([]byte("716"), "PE") + t.Insert([]byte("722"), "AR") + t.Insert([]byte("724"), "BR") + t.Insert([]byte("730"), "CL") + t.Insert([]byte("732"), "CO") + t.Insert([]byte("734"), "VE") + t.Insert([]byte("736"), "BO") + t.Insert([]byte("738"), "GY") + t.Insert([]byte("740"), "EC") + t.Insert([]byte("742"), "GF") + t.Insert([]byte("744"), "PY") + t.Insert([]byte("746"), "SR") + t.Insert([]byte("748"), "UY") + t.Insert([]byte("750"), "FK") + return t.Commit() +} + +var OperatorMap = MccMap{ + 202: MncMap{ + 1: {"GR", "COSMOTE - Mobile Telecommunications S.A."}, + 2: {"GR", "COSMOTE - Mobile Telecommunications S.A."}, + 3: {"GR", "OTE"}, + 4: {"GR", "OSE"}, + 5: {"GR", "Vodafone Greece"}, + 7: {"GR", "AMD Telecom"}, + 9: {"GR", "Wind Hellas Telecommunications S.A."}, + 10: {"GR", "Wind Hellas Telecommunications S.A."}, + 11: {"GR", "interConnect"}, + 12: {"GR", "Yuboto"}, + 13: {"GR", "Compatel Limited"}, + 14: {"GR", "CYTA"}, + 15: {"GR", "BWS"}, + 16: {"GR", "Inter Telecom"}, + }, + 204: MncMap{ + 1: {"NL", "RadioAccess Network Services"}, + 2: {"NL", "Tele2 Nederland B.V."}, + 3: {"NL", "Voiceworks B.V."}, + 4: {"NL", "Vodafone Libertel B.V."}, + 5: {"NL", "Elephant Talk Communications Premium Rate Services"}, + 6: {"NL", "Mundio Mobile (Netherlands) Ltd"}, + 7: {"NL", "Teleena (MVNE)"}, + 8: {"NL", "KPN Mobile The Netherlands B.V."}, + 9: {"NL", "Lycamobile Netherlands Limited"}, + 10: {"NL", "KPN B.V."}, + 11: {"NL", "VoipIT B.V."}, + 12: {"NL", "KPN Mobile The Netherlands B.V."}, + 13: {"NL", "Unica Installatietechniek B.V."}, + 14: {"NL", "6GMOBILE B.V."}, + 15: {"NL", "Ziggo B.V."}, + 16: {"NL", "T-Mobile Netherlands B.V"}, + 17: {"NL", "Intercity Mobile Communications B.V."}, + 18: {"NL", "UPC Nederland B.V."}, + 19: {"NL", "Mixe Communication Solutions B.V."}, + 20: {"NL", "T-Mobile Netherlands B.V"}, + 21: {"NL", "ProRail B.V."}, + 22: {"NL", "Ministerie van Defensie"}, + 23: {"NL", "Wyless Nederland B.V."}, + 24: {"NL", "Private Mobility Nederland B.V."}, + 25: {"NL", "CapX B.V."}, + 26: {"NL", "SpeakUp B.V."}, + 27: {"NL", "Breezz Nederland B.V."}, + 28: {"NL", "Lancelot B.V."}, + 29: {"NL", "Private Mobile Ltd"}, + 60: {"NL", "Nextgen Mobile Ltd"}, + 61: {"NL", "BodyTrace Netherlands B.V."}, + 62: {"NL", "Voxbone mobile"}, + 64: {"NL", "Zetacom B.V."}, + 65: {"NL", "AGMS Netherlands B.V."}, + 66: {"NL", "Utility Connect B.V."}, + 67: {"NL", "Koning en Hartman B.V."}, + 68: {"NL", "Roamware (Netherlands) B.V."}, + 69: {"NL", "KPN Mobile The Netherlands B.V."}, + }, + 206: MncMap{ + 1: {"BE", "Belgacom Mobile"}, + 2: {"BE", "Infrabel"}, + 5: {"BE", "Telenet"}, + 6: {"BE", "Lycamobile sprl"}, + 7: {"BE", "Mundio Mobile Belgium nv"}, + 8: {"BE", "Nethys"}, + 10: {"BE", "Orange S.A."}, + 20: {"BE", "Telenet"}, + 25: {"BE", "Voyacom SPRL"}, + 28: {"BE", "BICS"}, + 30: {"BE", "Unleashed NV"}, + 33: {"BE", "Ericsson NV"}, + 40: {"BE", "JOIN Experience (Belgium)"}, + 50: {"BE", "IP Nexia"}, + }, + 208: MncMap{ + 1: {"MC", "Orange S.A."}, + 2: {"FR", "Orange S.A."}, + 3: {"FR", "MobiquiThings"}, + 4: {"FR", "Societe d'ingenierie systeme telecom et reseaux"}, + 5: {"FR", "Globalstar Europe"}, + 6: {"FR", "Globalstar Europe"}, + 7: {"FR", "Globalstar Europe"}, + 8: {"FR", "Altice"}, + 9: {"FR", "Altice"}, + 10: {"MC", "Altice"}, + 11: {"FR", "Altice"}, + 13: {"FR", "Altice"}, + 14: {"FR", "SNCF Réseau"}, + 15: {"FR", "Iliad"}, + 16: {"FR", "Iliad"}, + 17: {"FR", "Local Exchange Global Operation Services"}, + 20: {"MC", "Bouygues Telecom"}, + 21: {"FR", "Bouygues Telecom"}, + 22: {"FR", "Transatel"}, + 24: {"FR", "MobiquiThings"}, + 25: {"FR", "LycaMobile"}, + 26: {"FR", "Euro-Information Telecom SAS"}, + 27: {"FR", "Coriolis Telecom"}, + 28: {"FR", "Airbus Defence and Space SAS"}, + 30: {"FR", "Syma Mobile"}, + 31: {"FR", "Mundio Mobile"}, + 88: {"FR", "Bouygues Telecom"}, + 91: {"FR", "Orange S.A."}, + 94: {"FR", "Halys"}, + }, + 212: MncMap{ + 10: {"MC", "Monaco Telecom"}, + }, + 213: MncMap{ + 3: {"AD", "Servei De Tele. DAndorra"}, + }, + 214: MncMap{ + 1: {"ES", "Vodafone Spain"}, + 2: {"ES", "Alta Tecnologia en Comunicacions SL"}, + 3: {"ES", "Orange Espagne S.A.U"}, + 4: {"ES", "Xfera Moviles SA"}, + 5: {"ES", "Telefónica Móviles España"}, + 6: {"ES", "Vodafone Spain"}, + 7: {"ES", "Telefónica Móviles España"}, + 8: {"ES", ""}, + 9: {"ES", "Orange Espagne S.A.U"}, + 10: {"ES", "ZINNIA TELECOMUNICACIONES, S.L.U."}, + 11: {"ES", "TELECOM CASTILLA-LA MANCHA, S.A."}, + 12: {"ES", "SAC CONVERGENT AGGREGATION SERVICES, S.L.U."}, + 16: {"ES", "Telecable de Asturias S.A.U."}, + 17: {"ES", "R Cable y Telecomunicaciones Galicia S.A."}, + 19: {"ES", "Orange España Virtual Sl."}, + 21: {"ES", "Orange Espagne S.A.U"}, + 22: {"ES", "Best Spain Telecom"}, + 23: {"ES", "Barablu Móvil España"}, + 24: {"ES", "Eroski Móvil España"}, + 25: {"ES", "LycaMobile S.L."}, + 26: {"ES", "Lleida Networks Serveis Telemátics, SL"}, + 27: {"ES", "SCN Truphone, S.L."}, + 28: {"ES", "Consorcio de Telecomunicaciones Avanzadas, S.A."}, + 29: {"ES", "NEO-SKY 2002, S.A."}, + 30: {"ES", "Compatel Limited"}, + 31: {"ES", "Red Digital De Telecomunicaciones de las Islas Baleares, S.L."}, + 32: {"ES", "Telefónica Móviles España"}, + 33: {"ES", "EURONA WIRELESS TELECOM, S.A."}, + 34: {"ES", "Aire Networks del Mediterráneo, S.L.U."}, + 35: {"ES", "INGENIUM OUTSOURCING SERVICES, S.L."}, + 36: {"ES", "OPEN CABLE TELECOMUNICACIONES, S.L."}, + 37: {"ES", "Vodafone Spain"}, + 51: {"ES", "Administrador de Infraestructuras Ferroviarias"}, + }, + 216: MncMap{ + 1: {"HU", "Telenor Magyarország Zrt."}, + 2: {"HU", "MVM Net Ltd."}, + 4: {"HU", "Invitech Solutions"}, + 30: {"HU", "Magyar Telekom Plc"}, + 70: {"HU", "Vodafone Magyarország Zrt."}, + 71: {"HU", "UPC Hungary Ltd."}, + 99: {"HU", "Magyar Államvasutak"}, + }, + 218: MncMap{ + 3: {"BA", "Public Enterprise Croatian Telecom Ltd."}, + 5: {"BA", "RS Telecommunications JSC Banja Luka"}, + 90: {"BA", "BH Telecom"}, + }, + 219: MncMap{ + 1: {"HR", "T-Hrvatski Telekom"}, + 2: {"HR", "Tele2"}, + 10: {"HR", "Vipnet"}, + 12: {"HR", "TELE FOCUS d.o.o."}, + }, + 220: MncMap{ + 1: {"RS", "Telenor Serbia"}, + 3: {"RS", "Telekom Srbija"}, + 5: {"RS", "VIP Mobile"}, + 7: {"RS", "Orion Telekom"}, + 9: {"RS", "MUNDIO MOBILE d.o.o."}, + 11: {"RS", "GLOBALTEL d.o.o."}, + }, + 221: MncMap{ + 1: {"XK", "Telecom of Kosovo J.S.C."}, + 2: {"XK", "IPKO"}, + 6: {"XK", "Dardaphone.Net LLC"}, + }, + 222: MncMap{ + 1: {"IT", "Telecom Italia S.p.A"}, + 4: {"IT", ""}, + 5: {"IT", ""}, + 6: {"IT", "Vodafone Italia S.p.A."}, + 8: {"IT", "Fastweb S.p.A."}, + 10: {"IT", "Vodafone Italia S.p.A."}, + 30: {"IT", "Rete Ferroviaria Italiana"}, + 33: {"IT", "Poste Mobile S.p.A."}, + 34: {"IT", "BT Italia"}, + 35: {"IT", "Lycamobile"}, + 36: {"IT", "Digi Italy S.r.l."}, + 37: {"IT", "Wind Tre"}, + 38: {"IT", "Linkem S.p.A."}, + 39: {"IT", "SMS Italia S.r.l."}, + 43: {"IT", "Telecom Italia S.p.A."}, + 47: {"IT", "Tiscali S.p.A."}, + 48: {"IT", "Telecom Italia S.p.A."}, + 50: {"IT", "Iliad Italia"}, + 88: {"IT", "Wind Tre"}, + 99: {"IT", "Wind Tre"}, + }, + 226: MncMap{ + 1: {"RO", "Vodafone România"}, + 3: {"RO", "Telekom Romania"}, + 5: {"RO", "RCS&RDS"}, + 6: {"RO", "Telekom Romania"}, + 10: {"RO", "Orange România"}, + 11: {"RO", "Enigma-System"}, + 15: {"RO", "Idilis"}, + 16: {"RO", "Lycamobile Romania"}, + }, + 228: MncMap{ + 1: {"CH", "Swisscom AG"}, + 2: {"CH", "Sunrise Communications AG"}, + 3: {"CH", "Salt Mobile SA"}, + 6: {"CH", "SBB AG"}, + 8: {"CH", "TelCommunication Services AG"}, + 9: {"CH", "Comfone AG"}, + 10: {"CH", "Stadt Polizei Zürich"}, + 11: {"CH", "Swisscom Broadcast AG"}, + 51: {"CH", "relario AG"}, + 53: {"CH", "UPC Schweiz GmbH"}, + 54: {"CH", "Lycamobile AG"}, + 55: {"CH", "WeMobile SA"}, + 57: {"CH", "Mitto AG"}, + 58: {"CH", "Beeone Communications SA"}, + 60: {"CH", "Sunrise Communications AG"}, + 61: {"CH", "Compatel Ltd."}, + 99: {"CH", "Swisscom Broadcast AG"}, + }, + 230: MncMap{ + 1: {"CZ", "T-Mobile Czech Republic"}, + 2: {"CZ", "O2 Czech Republic"}, + 3: {"CZ", "Vodafone Czech Republic"}, + 4: {"CZ", "Nordic Telecom s.r.o."}, + 5: {"CZ", "PODA a.s."}, + 8: {"CZ", "Compatel s.r.o."}, + 9: {"CZ", "Mundio Distribution Czech Republic s.r.o."}, + 98: {"CZ", "Správa železniční dopravní cesty, s.o."}, + 99: {"CZ", "Vodafone Czech Republic"}, + }, + 231: MncMap{ + 1: {"SK", "Orange Slovensko"}, + 2: {"SK", "Slovak Telekom"}, + 3: {"SK", "SWAN Mobile, a.s."}, + 4: {"SK", "Slovak Telekom"}, + 5: {"SK", "Orange Slovensko"}, + 6: {"SK", "Telefónica O2 Slovakia"}, + 7: {"SK", "Towercom, a. s."}, + 8: {"SK", "IPfon, s.r.o."}, + 99: {"SK", "Železnice Slovenskej Republiky"}, + }, + 232: MncMap{ + 1: {"AT", "A1 Telekom Austria"}, + 2: {"AT", "A1 Telekom Austria"}, + 3: {"AT", "T-Mobile Austria"}, + 4: {"AT", "T-Mobile Austria Gmbh"}, + 5: {"AT", "Hutchison Drei Austria"}, + 7: {"AT", "T-Mobile Austria"}, + 8: {"AT", "Lycamobile Austria"}, + 9: {"AT", "A1 Telekom Austria"}, + 10: {"AT", "Hutchison Drei Austria"}, + 11: {"AT", "A1 Telekom Austria"}, + 12: {"AT", "A1 Telekom Austria"}, + 13: {"AT", "UPC Austria"}, + 14: {"AT", "Hutchison Drei Austria"}, + 15: {"AT", "Mundio Mobile Austria"}, + 16: {"AT", "Hutchison Drei Austria"}, + 17: {"AT", "MASS Response Service GmbH"}, + 18: {"AT", "smartspace GmbH"}, + 19: {"AT", "Tele2 Telecommunication GmbH"}, + 20: {"AT", "MTEL Austrija GmbH"}, + 21: {"AT", "Salzburg AG für Energie, Verkehr und Telekommunikation"}, + 22: {"AT", "Plintron Austria Limited"}, + 23: {"AT", "T-Mobile Austria GmbH"}, + 91: {"AT", "ÖBB"}, + 92: {"AT", "ArgoNET GmbH"}, + }, + 234: MncMap{ + 0: {"GB", "BT Group"}, + 1: {"GB", "Mundio Mobile Limited"}, + 2: {"GB", "Telefónica Europe"}, + 3: {"GB", "Jersey Airtel Ltd"}, + 4: {"GB", "FMS Solutions Ltd"}, + 8: {"GB", "BT OnePhone (UK) Ltd"}, + 9: {"GB", "Tismi BV"}, + 10: {"GB", "Telefónica Europe"}, + 11: {"GB", "Telefónica Europe"}, + 12: {"GB", "Network Rail Infrastructure Ltd"}, + 13: {"GB", "Network Rail Infrastructure Ltd"}, + 14: {"GB", "Hay Systems Ltd"}, + 15: {"GB", "Vodafone"}, + 16: {"GB", "TalkTalk Communications Limited"}, + 17: {"GB", "FleXtel Limited"}, + 18: {"GB", "Cloud9"}, + 19: {"GB", "Teleware plc"}, + 20: {"GB", "Hutchison 3G UK Ltd"}, + 22: {"GB", "Telesign Mobile Limited"}, + 23: {"GB", "Icron Network Limited"}, + 24: {"GB", "Stour Marine Limited"}, + 25: {"GB", "Truphone"}, + 26: {"GB", "Lycamobile UK Limited"}, + 27: {"GB", "Teleena UK Limited"}, + 28: {"GB", "Marathon Telecom Limited"}, + 29: {"GB", "(aq) Limited"}, + 30: {"GB", "EE"}, + 31: {"GB", "EE"}, + 32: {"GB", "EE"}, + 33: {"GB", "EE"}, + 34: {"GB", "EE"}, + 36: {"GB", "Sure Isle of Man Ltd."}, + 37: {"GB", "Synectiv Ltd"}, + 38: {"GB", "Virgin Media"}, + 39: {"GB", "Gamma Telecom Holdings Ltd."}, + 50: {"GB", "JT Group Limited"}, + 51: {"GB", "UK Broadband Limited"}, + 52: {"GB", "Shyam Telecom UK Ltd"}, + 53: {"GB", "Limitless Mobile Ltd"}, + 54: {"GB", "The Carphone Warehouse Limited"}, + 55: {"GB", "Sure (Guernsey) Limited"}, + 56: {"GB", "CESG"}, + 57: {"GB", "Sky UK Limited"}, + 58: {"GB", "Manx Telecom"}, + 59: {"GB", "Limitless Mobile Ltd"}, + 70: {"GB", "AMSUK Ltd."}, + 71: {"GB", "Home Office"}, + 72: {"GB", "Hanhaa Limited"}, + 76: {"GB", "BT Group"}, + 78: {"GB", "Airwave Solutions Ltd"}, + 86: {"GB", "EE"}, + }, + 235: MncMap{ + 0: {"GB", "Mundio Mobile Limited"}, + 1: {"GB", "EE"}, + 2: {"GB", "EE"}, + 3: {"GB", "UK Broadband Limited"}, + 77: {"GB", "BT Group"}, + 88: {"GB", "Telet Research (N.I.) Limited"}, + 91: {"GB", "Vodafone United Kingdom"}, + 94: {"GB", "Hutchison 3G UK Ltd"}, + 95: {"GB", "Network Rail Infrastructure Limited"}, + }, + 238: MncMap{ + 1: {"DK", "TDC A/S"}, + 2: {"DK", "Telenor Denmark"}, + 3: {"DK", "Syniverse Technologies"}, + 4: {"DK", "NextGen Mobile Ltd T/A CardBoardFish"}, + 5: {"DK", "Dansk Beredskabskommunikation A/S"}, + 6: {"DK", "Hi3G Denmark ApS"}, + 8: {"DK", "Voxbone mobile"}, + 9: {"DK", "Dansk Beredskabskommunikation A/S"}, + 10: {"DK", "TDC A/S"}, + 11: {"DK", "Dansk Beredskabskommunikation A/S"}, + 12: {"DK", "Lycamobile Denmark Ltd"}, + 13: {"DK", "Compatel Limited"}, + 14: {"DK", "Monty UK Global Limited"}, + 15: {"DK", "Ice Danmark ApS"}, + 16: {"DK", "Tismi B.V."}, + 18: {"DK", "Cubic Telecom"}, + 20: {"DK", "Telia"}, + 23: {"DK", "Banedanmark"}, + 25: {"DK", "SMS Provider Corp."}, + 28: {"DK", "LINK Mobile A/S"}, + 30: {"DK", "Interactive digital media GmbH"}, + 42: {"DK", "Greenwave Mobile IoT ApS"}, + 66: {"DK", "TT-Netværket P/S"}, + 73: {"DK", "Onomondo ApS"}, + 77: {"DK", "Telenor Denmark"}, + }, + 240: MncMap{ + 1: {"SE", "TeliaSonera Sverige AB"}, + 2: {"SE", "HI3G Access AB"}, + 3: {"SE", "Netett Sverige AB"}, + 4: {"SE", "3G Infrastructure Services AB"}, + 5: {"SE", "Svenska UMTS-Nät AB"}, + 6: {"SE", "Telenor Sverige AB"}, + 7: {"SE", "Tele2 Sverige AB"}, + 9: {"SE", "Communication for Devices in Sweden AB"}, + 10: {"SE", "Tele2 Sverige AB"}, + 11: {"SE", "ComHem AB"}, + 12: {"SE", "Lycamobile Sweden Limited"}, + 13: {"SE", "Alltele Företag Sverige AB"}, + 14: {"SE", "Tele2 Business AB"}, + 15: {"SE", "Wireless Maingate Nordic AB"}, + 16: {"SE", "42 Telecom AB"}, + 17: {"SE", "Götalandsnätet AB"}, + 18: {"SE", "Generic Mobile Systems Sweden AB"}, + 19: {"SE", "Mundio Mobile (Sweden) Limited"}, + 20: {"SE", "Wireless Maingate Messaging Services AB"}, + 21: {"SE", "Trafikverket ICT"}, + 22: {"SE", "EuTel AB"}, + 24: {"SE", "Net4Mobility HB"}, + 25: {"SE", "Monty UK Global Ltd"}, + 26: {"SE", "Twilio Sweden AB"}, + 27: {"SE", "GlobeTouch AB"}, + 28: {"SE", "LINK Mobile A/S"}, + 29: {"SE", "Mercury International Carrier Services"}, + 30: {"SE", "NextGen Mobile Ltd."}, + 31: {"SE", "RebTel Network AB"}, + 32: {"SE", "Compatel Limited"}, + 33: {"SE", "Mobile Arts AB"}, + 35: {"SE", "42 Telecom LTD"}, + 36: {"SE", "interactive digital media GmbH"}, + 37: {"SE", "CLX Networks AB"}, + 38: {"SE", "Voxbone mobile"}, + 39: {"SE", "Borderlight AB"}, + 40: {"SE", "North net connect AB"}, + 41: {"SE", "Shyam Telecom UK Ltd."}, + 42: {"SE", "Telenor Connexion AB"}, + 43: {"SE", "MobiWeb Ltd."}, + 44: {"SE", "Telenabler AB"}, + 45: {"SE", "Spirius AB"}, + 46: {"SE", "SMS Provider Corp."}, + 47: {"SE", "Viatel Sweden AB"}, + 60: {"SE", "Telefonaktiebolaget LM Ericsson"}, + 61: {"SE", "MessageBird B.V."}, + }, + 242: MncMap{ + 1: {"NO", "Telenor Norge AS"}, + 2: {"NO", "TeliaSonera Norge AS"}, + 6: {"NO", "ICE Norge AS"}, + 8: {"NO", "TDC Mobil AS"}, + 9: {"NO", "Com4 AS"}, + 10: {"NO", "Norwegian Communications Authority"}, + 11: {"NO", "SystemNet AS"}, + 12: {"NO", "Telenor Norge AS"}, + 14: {"NO", "ICE Communication Norge AS"}, + 20: {"NO", "Jernbaneverket AS"}, + 21: {"NO", "Jernbaneverket AS"}, + 22: {"NO", "Altibox AS"}, + 23: {"NO", "Lyca Mobile Ltd"}, + 25: {"NO", "Forsvarets kompetansesenter KKIS"}, + 90: {"NO", "Nokia Solutions and Networks Norge AS"}, + 99: {"NO", "TampNet AS"}, + }, + 244: MncMap{ + 3: {"FI", "DNA Oy"}, + 4: {"FI", "DNA Oy"}, + 5: {"FI", "Elisa Oyj"}, + 7: {"FI", "Nokia Solutions and Networks Oy"}, + 8: {"FI", "Nokia Solutions and Networks Oy"}, + 9: {"FI", "Nokia Solutions and Networks Oy"}, + 10: {"FI", "Viestintävirasto"}, + 11: {"FI", "Viestintävirasto"}, + 12: {"FI", "DNA Oy"}, + 14: {"FI", "Ålands Telekommunikation Ab"}, + 17: {"FI", "Liikennevirasto"}, + 21: {"FI", "Elisa Oyj"}, + 26: {"FI", "Compatel Ltd"}, + 27: {"FI", "Teknologian tutkimuskeskus VTT Oy"}, + 28: {"FI", "Teknologian tutkimuskeskus VTT Oy"}, + 32: {"FI", "Voxbone SA"}, + 33: {"FI", "Virve Tuotteet ja Palvelut Oy"}, + 34: {"FI", "Bittium Wireless Oy"}, + 35: {"FI", "Ukkoverkot Oy"}, + 36: {"FI", "TeliaSonera Finland Oyj / Suomen Yhteisverkko Oy"}, + 37: {"FI", "Tismi BV"}, + 38: {"FI", "Nokia Solutions and Networks Oy"}, + 39: {"FI", "Nokia Solutions and Networks Oy"}, + 40: {"FI", "Nokia Solutions and Networks Oy"}, + 41: {"FI", "Nokia Solutions and Networks Oy"}, + 42: {"FI", "SMS Provider Corp."}, + 43: {"FI", "Telavox AB / Telavox Oy"}, + 44: {"FI", "Turun ammattikorkeakoulu Oy"}, + 91: {"FI", "TeliaSonera Finland Oyj"}, + }, + 246: MncMap{ + 1: {"LT", "Telia Lietuva"}, + 2: {"LT", "UAB Bitė Lietuva"}, + 3: {"LT", "UAB Tele2 (Tele2 AB, Sweden)"}, + 4: {"LT", "LR vidaus reikalų ministerija (Ministry of the Interior)"}, + 5: {"LT", "Lietuvos geležinkeliai (Lithuanian Railways)"}, + 6: {"LT", "UAB Mediafon"}, + 7: {"LT", "Compatel Ltd."}, + 8: {"LT", "Lietuvos radijo ir televizijos centras"}, + 9: {"LT", "Interactive Digital Media GmbH"}, + }, + 247: MncMap{ + 1: {"LV", "Latvian Mobile Telephone"}, + 2: {"LV", "Tele2"}, + 3: {"LV", "Telekom Baltija"}, + 5: {"LV", "Bite Latvija"}, + 7: {"LV", "SIA \"MEGATEL\""}, + 9: {"LV", "Camel Mobile"}, + }, + 248: MncMap{ + 1: {"EE", "Estonian Mobile Telecom"}, + 2: {"EE", "Elisa Eesti"}, + 3: {"EE", "Tele2 Eesti"}, + 4: {"EE", "OY Top Connect"}, + 11: {"EE", "UAB Raystorm Eesti filiaal"}, + 71: {"EE", "Siseministeerium (Ministry of Interior)"}, + }, + 250: MncMap{ + 1: {"RU", "Mobile TeleSystems"}, + 2: {"RU", "MegaFon PJSC"}, + 3: {"RU", "Nizhegorodskaya Cellular Communications"}, + 5: {"RU", "Yeniseytelecom"}, + 6: {"RU", "CJSC Saratov System of Cellular Communications"}, + 7: {"RU", "Zao SMARTS"}, + 8: {"RU", "CS \"VainahTelecom\""}, + 9: {"RU", "Khabarovsky Cellular Phone"}, + 11: {"RU", "Scartel"}, + 12: {"RU", ""}, + 15: {"RU", "SMARTS Ufa, SMARTS Uljanovsk"}, + 16: {"RU", "New Telephone Company"}, + 17: {"RU", "JSC Uralsvyazinform"}, + 20: {"RU", "Tele2"}, + 21: {"RU", "JSC \"GlobalTel\""}, + 22: {"RU", "Vainakh Telecom"}, + 23: {"RU", "GTNT"}, + 29: {"RU", "Iridium Communications"}, + 32: {"RU", "K-Telecom"}, + 33: {"RU", "Sevtelekom"}, + 34: {"RU", "Krymtelekom"}, + 35: {"RU", "EKATERINBURG-2000"}, + 38: {"RU", "Central Telecommunication Company"}, + 50: {"RU", "Bezlimitno.ru"}, + 54: {"RU", "Tattelecom"}, + 60: {"RU", "KTK Telecom"}, + 62: {"RU", "Tinkoff Mobile"}, + 99: {"RU", "OJSC Vimpel-Communications"}, + }, + 255: MncMap{ + 0: {"UA", "Interdnestrcom"}, + 1: {"UA", "PRJSC VF Ukraine"}, + 3: {"UA", "Kyivstar JSC"}, + 4: {"UA", "Intertelecom LLC"}, + 6: {"UA", "Turkcell"}, + 7: {"UA", "Trymob LLC"}, + 21: {"UA", "Telesystems of Ukraine"}, + 25: {"UA", "CST Invest"}, + }, + 257: MncMap{ + 1: {"BY", ""}, + 2: {"BY", "Mobile TeleSystems"}, + 4: {"BY", "Belarusian Telecommunications Network"}, + 6: {"BY", "Belorussian Cloud Technologies"}, + }, + 259: MncMap{ + 1: {"MD", "Orange Moldova"}, + 2: {"MD", ""}, + 3: {"MD", "Moldtelecom"}, + 5: {"MD", "Moldtelecom"}, + 15: {"MD", "Interdnestrcom"}, + 99: {"MD", "Moldtelecom"}, + }, + 260: MncMap{ + 1: {"PL", "Polkomtel Sp. z o.o."}, + 2: {"PL", "T-Mobile Polska S.A."}, + 3: {"PL", "Polska Telefonia Komórkowa Centertel Sp. z o.o."}, + 6: {"PL", "P4 Sp. z o.o."}, + 7: {"PL", "Netia S.A."}, + 9: {"PL", "Lycamobile Sp. z o.o."}, + 10: {"PL", "T-Mobile Polska S.A."}, + 11: {"PL", "Nordisk Polska Sp. z o.o."}, + 12: {"PL", "Cyfrowy Polsat S.A."}, + 13: {"PL", "Move Telecom S.A."}, + 15: {"PL", "Aero 2 Sp. z o.o."}, + 16: {"PL", "Aero 2 Sp. z o.o."}, + 17: {"PL", "Aero 2 Sp. z o.o."}, + 18: {"PL", "AMD Telecom S.A."}, + 22: {"PL", "Arcomm Sp. z o.o."}, + 24: {"PL", "IT Partners Telco Sp. z o.o."}, + 32: {"PL", "Compatel Limited"}, + 33: {"PL", "Truphone Poland Sp. z o.o."}, + 34: {"PL", "T-Mobile Polska S.A."}, + 35: {"PL", "PKP Polskie Linie Kolejowe S.A."}, + 37: {"PL", "NEXTGEN MOBILE LTD"}, + 38: {"PL", "CALLFREEDOM Sp. z o.o."}, + 39: {"PL", "VOXBONE SA"}, + 40: {"PL", "Interactive Digital Media GmbH"}, + 41: {"PL", "EZ PHONE MOBILE Sp. z o.o."}, + 42: {"PL", "MobiWeb Telecom Limited"}, + 43: {"PL", "Smart Idea International Sp. z o.o."}, + 44: {"PL", "Rebtel Poland Sp. z o.o."}, + 45: {"PL", "Virgin Mobile Polska Sp. z o.o."}, + 46: {"PL", "Terra Telekom Sp. z o.o."}, + 47: {"PL", "SMShighway Limited"}, + 48: {"PL", "AGILE TELECOM S.P.A."}, + 49: {"PL", "Messagebird B.V."}, + }, + 262: MncMap{ + 1: {"DE", "Telekom Deutschland GmbH"}, + 2: {"DE", "Vodafone D2 GmbH"}, + 3: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 4: {"DE", "Vodafone D2 GmbH"}, + 5: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 6: {"DE", "Telekom Deutschland GmbH"}, + 8: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 9: {"DE", "Vodafone D2 GmbH"}, + 10: {"DE", "DB Netz AG"}, + 11: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 12: {"DE", "sipgate GmbH"}, + 15: {"DE", ""}, + 17: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 18: {"DE", "NetCologne"}, + 19: {"DE", "Inquam Deutschland"}, + 20: {"DE", "Voiceworks GmbH"}, + 21: {"DE", "Multiconnect GmbH"}, + 22: {"DE", "sipgate Wireless GmbH"}, + 23: {"DE", "Drillisch Online AG"}, + 33: {"DE", "sipgate GmbH"}, + 42: {"DE", "Chaos Computer Club"}, + 43: {"DE", "Lycamobile"}, + 60: {"DE", "DB Telematik"}, + 72: {"DE", "Ericsson GmbH"}, + 73: {"DE", "Xantaro Deutschland GmbH"}, + 74: {"DE", "Qualcomm CDMA Technologies GmbH"}, + 75: {"DE", "Core Network Dynamics GmbH"}, + 77: {"DE", "Telefónica Germany GmbH & Co. oHG"}, + 78: {"DE", "Telekom Deutschland GmbH"}, + 92: {"DE", "Nash Technologies"}, + }, + 266: MncMap{ + 1: {"GI", "Gibtelecom"}, + 9: {"GI", "Eazitelecom"}, + }, + 268: MncMap{ + 1: {"PT", "Vodafone Portugal"}, + 2: {"PT", "Telecomunicações Móveis Nacionais"}, + 3: {"PT", "NOS Comunicações"}, + 4: {"PT", "LycaMobile"}, + 6: {"PT", "Telecomunicações Móveis Nacionais"}, + 7: {"PT", "Mundio Mobile (Portugal) Limited"}, + 11: {"PT", "Compatel, Limited"}, + 12: {"PT", "Infraestruturas de Portugal, S.A."}, + 13: {"PT", "G9Telecom, S.A."}, + 80: {"PT", "Telecomunicações Móveis Nacionais"}, + }, + 270: MncMap{ + 1: {"LU", "POST Luxembourg"}, + 2: {"LU", "MTX Connect S.a.r.l."}, + 7: {"LU", "Bouygues Telecom S.A."}, + 10: {"LU", "Blue Communications"}, + 77: {"LU", "Tango SA"}, + 78: {"LU", "Interactive digital media GmbH"}, + 79: {"LU", "Mitto A.G."}, + 80: {"LU", "Syniverse Technologies S.à r.l."}, + 81: {"LU", "E-Lux Mobile Telecommunication S.A."}, + 99: {"LU", "Orange S.A."}, + }, + 272: MncMap{ + 1: {"IE", "Vodafone Ireland"}, + 2: {"IE", "Hutchison 3G Ireland limited"}, + 3: {"IE", "Eir Group plc"}, + 4: {"IE", "Access Telecom"}, + 5: {"IE", "Hutchison 3G Ireland limited"}, + 7: {"IE", "Eir Group plc"}, + 8: {"IE", "Eir Group plc"}, + 11: {"IE", "Liffey Telecom"}, + 13: {"IE", "Lycamobile"}, + 15: {"IE", "UPC"}, + 16: {"IE", "Carphone Warehouse"}, + 17: {"IE", "Hutchison 3G Ireland limited"}, + }, + 274: MncMap{ + 1: {"IS", "Iceland Telecom"}, + 2: {"IS", "Og fjarskipti hf"}, + 3: {"IS", "Og fjarskipti hf"}, + 4: {"IS", "IMC Island ehf"}, + 8: {"IS", "Iceland Telecom"}, + 11: {"IS", "Nova ehf"}, + 12: {"IS", "IP fjarskipti"}, + 16: {"IS", "Tismi BV"}, + 22: {"IS", "Landhelgisgæslan (Icelandic Coast Guard)"}, + 31: {"IS", "Iceland Telecom"}, + }, + 276: MncMap{ + 1: {"AL", "Telekom Albania"}, + 2: {"AL", "Vodafone Albania"}, + 3: {"AL", "Albtelecom"}, + 4: {"AL", "Plus Communication"}, + }, + 278: MncMap{ + 1: {"MT", "Vodafone Malta"}, + 11: {"MT", "YOM Ltd."}, + 21: {"MT", "Mobile Communications Limited"}, + 30: {"MT", "Mobile Communications Limited"}, + 77: {"MT", "Melita"}, + }, + 280: MncMap{ + 1: {"CY", "Cyprus Telecommunications Authority"}, + 10: {"CY", "MTN Group"}, + 20: {"CY", "PrimeTel PLC"}, + 22: {"CY", "Lemontel Ltd"}, + 23: {"CY", "Mundio Mobile Cyprus Ltd."}, + }, + 282: MncMap{ + 1: {"GE", "Geocell Limited"}, + 2: {"GE", "Magticom GSM"}, + 3: {"GE", "Magtifix"}, + 4: {"GE", "Mobitel LLC"}, + 5: {"GE", "JSC Silknet"}, + 6: {"GE", "JSC Compatel"}, + 7: {"GE", "GlobalCell Ltd"}, + 8: {"GE", "JSC Silknet"}, + 9: {"GE", "Gmobile Ltd"}, + 10: {"GE", "Premium Net International SRL Ltd"}, + 11: {"GE", "Mobilive Ltd"}, + }, + 283: MncMap{ + 1: {"AM", "ArmenTel"}, + 4: {"AM", "Karabakh Telecom"}, + 5: {"AM", "K Telecom CJSC"}, + 10: {"AM", "Ucom LLC"}, + }, + 284: MncMap{ + 1: {"BG", "A1 Bulgaria"}, + 3: {"BG", "BTC"}, + 5: {"BG", "Telenor (Bulgaria)"}, + 7: {"BG", "НАЦИОНАЛНА КОМПАНИЯ ЖЕЛЕЗОПЪТНА ИНФРАСТРУКТУРА"}, + 11: {"BG", "Bulsatcom"}, + 13: {"BG", "Max Telecom LTD"}, + }, + 286: MncMap{ + 1: {"TR", "Turkcell Iletisim Hizmetleri A.S."}, + 2: {"TR", "Vodafone Turkey"}, + 3: {"TR", "Türk Telekom"}, + }, + 288: MncMap{ + 1: {"FO", "Faroese Telecom"}, + 2: {"FO", "Vodafone Faroe Islands"}, + }, + 290: MncMap{ + 1: {"GL", "TELE Greenland A/S"}, + 2: {"GL", "inu:it a/s"}, + }, + 292: MncMap{ + 1: {"SM", "San Marino Telecom"}, + }, + 293: MncMap{ + 10: {"SI", "SŽ - Infrastruktura, d.o.o."}, + 20: {"SI", "COMPATEL Ltd"}, + 40: {"SI", "A1 Slovenija"}, + 41: {"SI", "Telekom Slovenije"}, + 64: {"SI", "T-2 d.o.o."}, + 70: {"SI", "Tušmobil d.o.o."}, + }, + 294: MncMap{ + 1: {"MK", "Makedonski Telekom"}, + 2: {"MK", "ONE.VIP DOO"}, + 3: {"MK", "ONE.VIP DOO"}, + 4: {"MK", "Lycamobile LLC"}, + 11: {"MK", "MOBIK TELEKOMUNIKACII DOOEL Skopje"}, + }, + 295: MncMap{ + 1: {"LI", "Swisscom Schweiz AG"}, + 2: {"LI", "Salt Liechtenstein AG"}, + 5: {"LI", "Telecom Liechtenstein AG"}, + 6: {"LI", "Cubic Telecom AG"}, + 7: {"LI", "First Mobile AG"}, + 9: {"LI", "EMnify GmbH"}, + 10: {"LI", "Soracom LI Ltd."}, + }, + 297: MncMap{ + 1: {"ME", "Telenor Montenegro"}, + 2: {"ME", "T-Mobile Montenegro LLC"}, + 3: {"ME", "MTEL CG"}, + }, + 302: MncMap{ + 130: {"CA", "Xplornet Communications"}, + 131: {"CA", "Xplornet Communications"}, + 220: {"CA", "Telus Mobility"}, + 221: {"CA", "Telus Mobility"}, + 222: {"CA", "Telus Mobility"}, + 250: {"CA", "ALO Mobile Inc."}, + 270: {"CA", "Bragg Communications"}, + 290: {"CA", "Airtel Wireless"}, + 300: {"CA", "ECOTEL Inc."}, + 320: {"CA", "Rogers Communications"}, + 340: {"CA", "Execulink"}, + 370: {"CA", "Fido Solutions (Rogers Wireless)"}, + 380: {"CA", "Keewaytinook Okimakanak Mobile"}, + 420: {"CA", "A.B.C. Allen Business Communications Ltd."}, + 480: {"CA", "SSi Connexions"}, + 490: {"CA", "Shaw Communications"}, + 491: {"CA", "Shaw Communications"}, + 500: {"CA", "Videotron"}, + 510: {"CA", "Videotron"}, + 520: {"CA", "Videotron"}, + 530: {"CA", "Keewaytinook Okimakanak Mobile"}, + 540: {"CA", "Rovvr Communications Inc."}, + 560: {"CA", "Lynx Mobility"}, + 570: {"CA", "LightSquared"}, + 590: {"CA", "Quadro Communications Co-op"}, + 610: {"CA", "Bell Mobility"}, + 620: {"CA", "ICE Wireless"}, + 630: {"CA", "Bell Aliant"}, + 650: {"CA", "Thunder Bay Telephone"}, + 655: {"CA", "MTS Mobility"}, + 660: {"CA", "Bell MTS"}, + 670: {"CA", "CityWest"}, + 680: {"CA", "SaskTel Mobility"}, + 690: {"CA", "Bell Mobility"}, + 701: {"CA", "MB Tel Mobility"}, + 710: {"CA", ""}, + 720: {"CA", "Rogers Communications"}, + 730: {"CA", "TerreStar Networks"}, + 750: {"CA", "SaskTel Mobility"}, + 760: {"CA", "Telus Mobility"}, + 770: {"CA", "TNW Wireless Inc."}, + 780: {"CA", "SaskTel Mobility"}, + 790: {"CA", "NetSet Communications"}, + 820: {"CA", "Rogers Communications"}, + 860: {"CA", "Telus Mobility"}, + 880: {"CA", "Shared Telus, Bell, and SaskTel"}, + 940: {"CA", "Wightman Telecom"}, + 990: {"CA", ""}, + }, + 308: MncMap{ + 1: {"PM", "St. Pierre-et-Miquelon Télécom"}, + 2: {"PM", "GLOBALTEL"}, + }, + 310: MncMap{ + 4: {"US", "Verizon Wireless"}, + 5: {"US", "Verizon Wireless"}, + 6: {"US", "Verizon Wireless"}, + 12: {"US", "Verizon Wireless"}, + 13: {"US", "Verizon Wireless"}, + 14: {"US", ""}, + 15: {"US", "Southern Communications"}, + 20: {"US", "Union Telephone Company"}, + 30: {"US", "AT&T Mobility"}, + 32: {"US", "IT&E Overseas, Inc"}, + 33: {"US", "Guam Telephone Authority"}, + 34: {"US", "Airpeak"}, + 35: {"US", "ETEX Communications, LP"}, + 50: {"US", "Alaska Communications"}, + 53: {"US", "Sprint"}, + 54: {"US", "Alltel US"}, + 59: {"US", ""}, + 60: {"US", "Consolidated Telcom"}, + 66: {"US", "U.S. Cellular"}, + 70: {"US", "AT&T Mobility"}, + 80: {"US", "AT&T Mobility"}, + 90: {"US", "AT&T Mobility"}, + 100: {"US", "New Mexico RSA 4 East LP"}, + 110: {"US", "PTI Pacifica Inc."}, + 120: {"US", "Sprint Corporation"}, + 130: {"US", "Carolina West Wireless"}, + 140: {"US", "Teleguam Holdings, LLC"}, + 150: {"US", "AT&T Mobility"}, + 160: {"US", "T-Mobile US"}, + 170: {"US", "AT&T Mobility"}, + 180: {"US", "West Central Wireless"}, + 190: {"US", "Alaska Wireless Communications, LLC"}, + 260: {"US", "T-Mobile USA"}, + 320: {"US", "Smith Bagley, Inc."}, + 330: {"US", "Wireless Partners, LLC"}, + 340: {"US", "Limitless Mobile, LLC"}, + 360: {"US", "Cellular Network Partnership"}, + 370: {"US", "NTT Docomo Pacific"}, + 390: {"US", "TX-11 Acquisition, LLC"}, + 400: {"US", "Wave Runner LLC"}, + 410: {"US", "AT&T Mobility"}, + 430: {"US", "GCI Communications Corp."}, + 440: {"US", "Numerex"}, + 450: {"US", "Viaero Wireless"}, + 460: {"US", "NewCore Wireless LLC"}, + 470: {"US", "Shenandoah Telecommunications Company"}, + 480: {"US", "Wave Runner LLC"}, + 490: {"US", "T-Mobile"}, + 500: {"US", "Public Service Cellular Inc."}, + 510: {"US", "Nsighttel Wireless LLC"}, + 520: {"US", "Transaction Network Services"}, + 530: {"US", "Iowa Wireless Services LLC"}, + 540: {"US", "Hilliary Communications"}, + 550: {"US", "Syniverse Technologies"}, + 570: {"US", "TX-10, LLC and Central Louisiana Cellular, LLC (MTPCS)"}, + 580: {"US", "Inland Cellular Telephone Company"}, + 590: {"US", "Verizon Wireless"}, + 600: {"US", "New-Cell Inc."}, + 620: {"US", "Nsighttel Wireless LLC"}, + 640: {"US", "Numerex"}, + 650: {"US", "Jasper Technologies"}, + 670: {"US", "AT&T Mobility"}, + 680: {"US", "AT&T Mobility"}, + 690: {"US", "Limitless Mobile, LLC"}, + 700: {"US", "Cross Valiant Cellular Partnership"}, + 710: {"US", "Arctic Slope Telephone Association Cooperative"}, + 720: {"US", "Syniverse Technologies"}, + 730: {"US", "U.S. Cellular"}, + 740: {"US", "Viaero Wireless"}, + 750: {"US", "East Kentucky Network, LLC"}, + 770: {"US", "Iowa Wireless Services"}, + 780: {"US", "D. D. Inc."}, + 790: {"US", "PinPoint Communications Inc."}, + 820: {"US", "Verizon Wireless"}, + 840: {"US", "Telecom North America Mobile, Inc."}, + 850: {"US", "Aeris Communications, Inc."}, + 860: {"US", "TX RSA 15B2, LP"}, + 880: {"US", "Advantage Cellular Systems, Inc."}, + 890: {"US", "Verizon Wireless"}, + 900: {"US", "Cable & Communications Corporation"}, + 910: {"US", "Verizon Wireless"}, + 920: {"US", "James Valley Wireless, LLC"}, + 930: {"US", "Copper Valley Wireless"}, + 940: {"US", "Tyntec Inc."}, + 950: {"US", "AT&T Mobility"}, + 960: {"US", "UBET Wireless"}, + 970: {"US", "Globalstar"}, + 990: {"US", "Worldcall Interconnect Inc."}, + }, + 311: MncMap{ + 0: {"US", "Mid-Tex Cellular Ltd."}, + 10: {"US", "Chariton Valley Communications"}, + 12: {"US", "Verizon Wireless"}, + 20: {"US", "Missouri RSA 5 Partnership"}, + 30: {"US", "Americell PA 3 Partnership"}, + 40: {"US", "Commnet Wireless"}, + 50: {"US", "Thumb Cellular LP"}, + 60: {"US", "Space Data Corporation"}, + 70: {"US", "AT&T Mobility"}, + 80: {"US", "Pine Telephone Company"}, + 90: {"US", "AT&T Mobility"}, + 100: {"US", "Nex-Tech Wireless"}, + 110: {"US", "Verizon Wireless"}, + 120: {"US", "Wave Runner LLC"}, + 140: {"US", "Cross Telephone Company"}, + 150: {"US", "Wilkes Cellular"}, + 170: {"US", "Broadpoint Inc."}, + 190: {"US", "AT&T Mobility"}, + 210: {"US", "Telnyx LLC"}, + 220: {"US", "U.S. Cellular"}, + 230: {"US", "Cellular South Inc."}, + 240: {"US", "Cordova Wireless"}, + 250: {"US", "Wave Runner LLC"}, + 270: {"US", "Verizon Wireless"}, + 271: {"US", "Verizon Wireless"}, + 272: {"US", "Verizon Wireless"}, + 273: {"US", "Verizon Wireless"}, + 274: {"US", "Verizon Wireless"}, + 275: {"US", "Verizon Wireless"}, + 276: {"US", "Verizon Wireless"}, + 277: {"US", "Verizon Wireless"}, + 278: {"US", "Verizon Wireless"}, + 279: {"US", "Verizon Wireless"}, + 280: {"US", "Verizon Wireless"}, + 281: {"US", "Verizon Wireless"}, + 282: {"US", "Verizon Wireless"}, + 283: {"US", "Verizon Wireless"}, + 284: {"US", "Verizon Wireless"}, + 285: {"US", "Verizon Wireless"}, + 286: {"US", "Verizon Wireless"}, + 287: {"US", "Verizon Wireless"}, + 288: {"US", "Verizon Wireless"}, + 289: {"US", "Verizon Wireless"}, + 290: {"US", "PinPoint Communications Inc."}, + 320: {"US", "Commnet Wireless"}, + 330: {"US", "Bug Tussel Wireless LLC"}, + 340: {"US", "Illinois Valley Cellular "}, + 350: {"US", "Sagebrush Cellular, Inc."}, + 370: {"US", "General Communication Inc."}, + 380: {"US", "New Dimension Wireless Ltd."}, + 390: {"US", "Verizon Wireless"}, + 400: {"US", ""}, + 410: {"US", "Iowa RSA No. 2 LP"}, + 420: {"US", "Northwest Missouri Cellular LP"}, + 430: {"US", "RSA 1 LP"}, + 440: {"US", "Bluegrass Cellular LLC"}, + 450: {"US", "Panhandle Telecommunication Systems Inc."}, + 460: {"US", "Electric Imp Inc."}, + 470: {"US", "Vitelcom Cellular Inc."}, + 480: {"US", "Verizon Wireless"}, + 490: {"US", "Sprint Corporation"}, + 530: {"US", "NewCore Wireless LLC"}, + 550: {"US", "Commnet Midwest LLC"}, + 560: {"US", "OTZ Communications, Inc."}, + 580: {"US", "U.S. Cellular"}, + 590: {"US", "Verizon Wireless"}, + 600: {"US", "Limitless Mobile, LLC"}, + 630: {"US", "Cellular South Inc."}, + 640: {"US", "Standing Rock Telecommunications"}, + 650: {"US", "United Wireless"}, + 660: {"US", "MetroPCS Wireless Inc."}, + 670: {"US", "Pine Belt Cellular Inc."}, + 680: {"US", "GreenFly LLC"}, + 690: {"US", "TeleBEEPER of New Mexico"}, + 700: {"US", "Midwest Network Solutions Hub LLC"}, + 710: {"US", "Northeast Wireless Networks LLC"}, + 730: {"US", "Proximiti Mobility Inc."}, + 740: {"US", "Telalaska Cellular"}, + 750: {"US", "Flat Wireless LLC"}, + 770: {"US", "Altiostar Networks, Inc."}, + 790: {"US", "Coleman County Telephone Cooperative, Inc."}, + 800: {"US", "Bluegrass Cellular LLC"}, + 810: {"US", "Bluegrass Cellular LLC"}, + 820: {"US", "Sonus Networks"}, + 830: {"US", "Thumb Cellular LP"}, + 840: {"US", "Nsight Spectrum LLC"}, + 850: {"US", "Nsight Spectrum LLC"}, + 860: {"US", "Uintah Basin Electronic Telecommunications "}, + 870: {"US", "Sprint Corporation"}, + 880: {"US", "Sprint Corporation"}, + 890: {"US", "Globecomm Network Services Corporation "}, + 900: {"US", "GigSky"}, + 910: {"US", "SI Wireless LLC"}, + 920: {"US", "Missouri RSA 5 Partnership"}, + 950: {"US", "Enhanced Telecommmunications Corp."}, + 960: {"US", "Lycamobile USA Inc."}, + 970: {"US", "Big River Broadband, LLC"}, + 980: {"US", "LigTel Communications"}, + 990: {"US", "VTel Wireless"}, + }, + 312: MncMap{ + 10: {"US", "Chariton Valley Communication Corporation, Inc"}, + 20: {"US", "Infrastructure Networks, LLC"}, + 30: {"US", "Cross Wireless"}, + 40: {"US", "Custer Telephone Co-op (CTCI)"}, + 60: {"US", "CoverageCo"}, + 70: {"US", "Adams Networks Inc"}, + 80: {"US", "South Georgia Regional Information Technology Authority"}, + 90: {"US", "AT&T Mobility"}, + 100: {"US", "ClearSky Technologies, Inc."}, + 120: {"US", "East Kentucky Network, LLC"}, + 130: {"US", "East Kentucky Network, LLC"}, + 150: {"US", "Northwest Missouri Cellular LP"}, + 160: {"US", "RSA1 Limited Partnership"}, + 170: {"US", "Iowa RSA No. 2 LP"}, + 180: {"US", "Limiteless Mobile LLC"}, + 190: {"US", "Sprint Corporation"}, + 210: {"US", "Aspenta International, Inc."}, + 220: {"US", "Chariton Valley Communication Corporation, Inc."}, + 240: {"US", "Sprint Corporation"}, + 250: {"US", "Sprint Corporation"}, + 260: {"US", "Central LTE Holdings"}, + 270: {"US", "Cellular Network Partnership"}, + 280: {"US", "Cellular Network Partnership"}, + 290: {"US", "Uintah Basin Electronic Telecommunications "}, + 300: {"US", "Telecom North America Mobile, Inc."}, + 310: {"US", "Clear Stream Communications, LLC"}, + 320: {"US", "RTC Communications LLC"}, + 330: {"US", "Nemont Communications, Inc."}, + 340: {"US", "Matanuska Telephone Association, Inc."}, + 350: {"US", "Triangle Communication System Inc."}, + 360: {"US", "Wes-Tex Telecommunications, Ltd."}, + 370: {"US", "Commnet Wireless"}, + 380: {"US", "Copper Valley Wireless"}, + 390: {"US", "FTC Communications LLC"}, + 400: {"US", "Mid-Rivers Telephone Cooperative"}, + 410: {"US", "Eltopia Communications, LLC"}, + 420: {"US", "Nex-Tech Wireless"}, + 430: {"US", "Silver Star Communications"}, + 440: {"US", "Consolidated Telcom"}, + 450: {"US", "Cable & Communications Corporation"}, + 460: {"US", "Ketchikan Public Utilities (KPU)"}, + 470: {"US", "Carolina West Wireless"}, + 480: {"US", "Sagebrush Cellular, Inc."}, + 490: {"US", "TrustComm, Inc."}, + 510: {"US", "WUE Inc."}, + 530: {"US", "Sprint Corporation"}, + 550: {"US", "Great Plains Communications, Inc."}, + 570: {"US", "Buffalo-Lake Erie Wireless Systems Co., LLC"}, + 580: {"US", "Morgan, Lewis & Bockius LLP"}, + 590: {"US", "Northern Michigan University"}, + 600: {"US", "Sagebrush Cellular, Inc."}, + 620: {"US", "GlobeTouch Inc."}, + 630: {"US", "NetGenuity, Inc."}, + 650: {"US", "365 Wireless LLC"}, + 670: {"US", "AT&T Mobility"}, + 680: {"US", "AT&T Mobility"}, + 690: {"US", "TGS, LLC"}, + 700: {"US", "Wireless Partners, LLC"}, + 710: {"US", "Great North Woods Wireless LLC"}, + 720: {"US", "Southern Communications Services"}, + 730: {"US", "Triangle Communication System Inc."}, + 740: {"US", "KDDI America, Inc."}, + 750: {"US", "Artemis Networks LLC"}, + 760: {"US", "Arctic Slope Telephone Association Cooperative"}, + 770: {"US", "Verizon Wireless"}, + 780: {"US", "Redzone Wireless"}, + 790: {"US", "Gila Electronics"}, + 800: {"US", "Cirrus Core Networks"}, + 810: {"US", "Bristol Bay Telephone Cooperative"}, + 820: {"US", "Santel Communications Cooperative, Inc."}, + 830: {"US", "Kings County Office of Education"}, + 840: {"US", "South Georgia Regional Information Technology Authority"}, + 850: {"US", "Onvoy Spectrum, LLC"}, + 860: {"US", "Flat Wireless, LLC"}, + 870: {"US", "GigSky Mobile, LLC"}, + 880: {"US", "Albemarle County Public Schools"}, + 890: {"US", "Circle Gx"}, + 900: {"US", "Flat West Wireless, LLC"}, + 910: {"US", "East Kentucky Network, LLC"}, + 920: {"US", "Northeast Wireless Networks LLC"}, + 930: {"US", "Hewlett-Packard Communication Services, LLC"}, + 940: {"US", "Webformix"}, + 950: {"US", "Custer Telephone Co-op (CTCI)"}, + 960: {"US", "M&A Technology, Inc."}, + 970: {"US", "IOSAZ Intellectual Property LLC"}, + 980: {"US", "Mark Twain Communications Company"}, + 990: {"US", "Premier Holdings LLC"}, + }, + 313: MncMap{ + 0: {"US", "Tennessee Wireless "}, + 10: {"US", "Cross Wireless LLC"}, + 20: {"US", "Cambridge Telephone Company Inc."}, + 30: {"US", "Eagle Telephone System Inc."}, + 40: {"US", "Nucla-Naturita Telephone Company"}, + 60: {"US", "Country Wireless"}, + 70: {"US", "Midwest Network Solutions Hub LLC"}, + 80: {"US", "Speedwavz LLP"}, + 90: {"US", "Vivint Wireless, Inc."}, + 100: {"US", "700 MHz Public Safety Broadband"}, + 200: {"US", "Mercury Network Corporation"}, + 210: {"US", "AT&T Mobility"}, + 220: {"US", "Custer Telephone Co-op (CTCI)"}, + 230: {"US", "Velocity Communications Inc."}, + 240: {"US", "Fundamental Holdings, Corp."}, + 250: {"US", "Imperial County Office of Education"}, + 260: {"US", "Expeto Wireless Inc."}, + 270: {"US", "Blackstar Management"}, + 280: {"US", "King Street Wireless, LP"}, + 290: {"US", "Gulf Coast Broadband LLC"}, + 300: {"US", "Cambio WiFi of Delmarva, LLC"}, + 310: {"US", "CAL.NET, Inc."}, + 320: {"US", "Paladin Wireless"}, + 330: {"US", "CenturyTel Broadband Services LLC"}, + 340: {"US", "Dish Network"}, + 350: {"US", "Dish Network"}, + 360: {"US", "Dish Network"}, + 370: {"US", "Red Truck Wireless, LLC"}, + 380: {"US", "OptimERA Inc."}, + 390: {"US", "Altice USA Wireless, Inc."}, + 400: {"US", "Texoma Communications, LLC"}, + 410: {"US", "pdvWireless"}, + }, + 316: MncMap{ + 11: {"US", "Southern Communications Services"}, + }, + 330: MncMap{ + 0: {"PR", "PR Wireless"}, + 110: {"PR", "América Móvil"}, + 120: {"PR", "PR Wireless"}, + }, + 334: MncMap{ + 1: {"MX", "Comunicaciones Digitales Del Norte, S.A. de C.V."}, + 10: {"MX", "AT&T Mexico"}, + 20: {"MX", "América Móvil"}, + 30: {"MX", "Telefónica"}, + 50: {"MX", "AT&T Mexico"}, + 60: {"MX", "Servicios de Acceso Inalambrico, S.A. de C.V."}, + 66: {"MX", "Telefonos de México, S.A.B. de C.V."}, + 70: {"MX", "AT&T Mexico"}, + 80: {"MX", "AT&T Mexico"}, + 90: {"MX", "AT&T Mexico"}, + 140: {"MX", "Altán Redes S.A.P.I. de C.V."}, + }, + 338: MncMap{ + 40: {"JM", "Symbiote Investment Limited"}, + 50: {"JM", "Digicel (Turks & Caicos) Limited"}, + 110: {"JM", "Cable & Wireless Communications"}, + 180: {"JM", "Cable & Wireless Communications"}, + }, + 340: MncMap{ + 1: {"GP", "Orange Caraïbe Mobiles"}, + 2: {"GP", "Outremer Telecom"}, + 3: {"GP", "UTS Caraïbe"}, + 8: {"GP", "Dauphin Telecom"}, + 20: {"GP", "DIGICEL Antilles Française Guyane"}, + }, + 342: MncMap{ + 600: {"BB", "LIME (formerly known as Cable & Wireless)"}, + 750: {"BB", "Digicel (Barbados) Limited"}, + 800: {"BB", "Ozone Wireless Inc."}, + }, + 344: MncMap{ + 30: {"AG", "Antigua Public Utilities Authority"}, + 50: {"AG", "Antigua Wireless Ventures Limited"}, + 920: {"AG", "Cable & Wireless Caribbean Cellular (Antigua) Limited"}, + 930: {"AG", "AT&T Wireless"}, + }, + 346: MncMap{ + 50: {"KY", "Digicel Cayman Ltd."}, + 140: {"KY", "Cable & Wireless (Cayman Islands) Limited"}, + }, + 348: MncMap{ + 170: {"VG", "Cable & Wireless"}, + 370: {"VG", "BVI Cable TV Ltd"}, + 570: {"VG", "Caribbean Cellular Telephone"}, + 770: {"VG", "Digicel (BVI) Limited"}, + }, + 350: MncMap{ + 0: {"BM", "Bermuda Digital Communications Ltd."}, + 1: {"BM", "Telecommunications (Bermuda & West Indies) Ltd"}, + 2: {"BM", "M3 Wireless"}, + 5: {"BM", "Telecom Networks"}, + 11: {"BM", "Deltronics"}, + }, + 352: MncMap{ + 30: {"GD", "Digicel Grenada Ltd."}, + 110: {"GD", "Cable & Wireless Grenada Ltd."}, + }, + 354: MncMap{ + 860: {"MS", "Cable & Wireless"}, + }, + 356: MncMap{ + 50: {"KN", "Wireless Ventures (St Kitts-Nevis) Limited"}, + 70: {"KN", "UTS"}, + 110: {"KN", "Cable & Wireless St. Kitts & Nevis Ltd"}, + }, + 358: MncMap{ + 110: {"LC", "Cable & Wireless"}, + }, + 360: MncMap{ + 50: {"VC", "Digicel (St. Vincent and the Grenadines) Limited"}, + 100: {"VC", ""}, + 110: {"VC", "Cable & Wireless (St. Vincent & the Grenadines) Ltd"}, + }, + 362: MncMap{ + 31: {"CW", "Eutel N.V."}, + 33: {"CW", "WICC N.V."}, + 51: {"CW", "Telcell N.V."}, + 54: {"CW", "East Caribbean Cellular"}, + 59: {"CW", "United Telecommunication Service N.V. (UTS)"}, + 60: {"CW", "United Telecommunication Service N.V. (UTS)"}, + 63: {"CW", "CSC N.V."}, + 68: {"CW", "Curaçao Telecom N.V."}, + 69: {"CW", "Curaçao Telecom N.V."}, + 74: {"CW", "PCS N.V."}, + 76: {"CW", "Antiliano Por N.V."}, + 78: {"CW", "Telefonia Bonairiano N.V."}, + 91: {"CW", "United Telecommunication Service N.V. (UTS)"}, + 94: {"CW", "Bòbò Frus N.V."}, + }, + 363: MncMap{ + 1: {"AW", "Servicio di Telecomunicacion di Aruba"}, + 2: {"AW", "Digicel Aruba"}, + }, + 364: MncMap{ + 39: {"BS", "The Bahamas Telecommunications Company Ltd (BaTelCo)"}, + 49: {"BS", "Cable Bahamas Ltd"}, + }, + 365: MncMap{ + 10: {"AI", "Weblinks Limited"}, + 840: {"AI", "Cable & Wireless"}, + }, + 366: MncMap{ + 20: {"DM", "Digicel Group Limited"}, + 110: {"DM", "Cable & Wireless"}, + }, + 368: MncMap{ + 1: {"CU", "Empresa de Telecomunicaciones de Cuba, SA"}, + }, + 370: MncMap{ + 1: {"DO", "Altice Group"}, + 2: {"DO", "Compañía Dominicana de Teléfonos"}, + 3: {"DO", "Altice Group"}, + 4: {"DO", "Trilogy Dominicana, S.A."}, + 5: {"DO", "WIND Telecom, S.A"}, + }, + 372: MncMap{ + 2: {"HT", "Unigestion Holding S.A."}, + 3: {"HT", "NATCOM S.A."}, + }, + 374: MncMap{ + 12: {"TT", "TSTT"}, + 130: {"TT", "Digicel (Trinidad & Tobago) Limited"}, + }, + 376: MncMap{ + 350: {"TC", "Cable & Wireless West Indies Ltd (Turks & Caicos)"}, + 352: {"TC", "Cable & Wireless West Indies Ltd (Turks & Caicos)"}, + 360: {"TC", "Cable & Wireless West Indies Ltd (Turks & Caicos)"}, + }, + 400: MncMap{ + 1: {"AZ", ""}, + 2: {"AZ", ""}, + 3: {"AZ", "CATEL"}, + 4: {"AZ", "Azerfon"}, + 5: {"AZ", "Special State Protection Service of the Republic of Azerbaijan"}, + 6: {"AZ", "Nakhtel LLC"}, + }, + 401: MncMap{ + 1: {"KZ", "KaR-Tel LLP"}, + 2: {"KZ", "Kcell JSC"}, + 7: {"KZ", "Altel"}, + 8: {"KZ", ""}, + 77: {"KZ", "MTS"}, + }, + 402: MncMap{ + 11: {"BT", "B-Mobile / Bhutan Telecom Ltd."}, + 77: {"BT", "Tashi InfoComm Limited"}, + }, + 404: MncMap{ + 1: {"IN", "Haryana"}, + 2: {"IN", "Punjab"}, + 3: {"IN", "Himachal Pradesh"}, + 4: {"IN", "Delhi & NCR"}, + 5: {"IN", "Gujarat"}, + 7: {"IN", "Andhra Pradesh and Telangana"}, + 9: {"IN", "Assam"}, + 10: {"IN", "Delhi & NCR"}, + 11: {"IN", "Delhi & NCR"}, + 12: {"IN", "Haryana"}, + 13: {"IN", "Andhra Pradesh and Telangana"}, + 14: {"IN", "Punjab"}, + 15: {"IN", "Uttar Pradesh (East)"}, + 16: {"IN", "North East"}, + 17: {"IN", "West Bengal"}, + 18: {"IN", "Himachal Pradesh"}, + 19: {"IN", "Kerala"}, + 20: {"IN", "Mumbai"}, + 21: {"IN", "Mumbai"}, + 22: {"IN", "Maharashtra & Goa"}, + 24: {"IN", "Gujarat"}, + 25: {"IN", "Bihar"}, + 27: {"IN", "Maharashtra & Goa"}, + 28: {"IN", "Orissa"}, + 29: {"IN", "Assam"}, + 30: {"IN", "Kolkata"}, + 31: {"IN", "Kolkata"}, + 34: {"IN", "Haryana"}, + 35: {"IN", "Himachal Pradesh"}, + 36: {"IN", "Bihar & Jharkhand"}, + 37: {"IN", "Jammu & Kashmir"}, + 38: {"IN", "Assam"}, + 40: {"IN", "Chennai"}, + 41: {"IN", "Chennai"}, + 42: {"IN", "Tamil Nadu"}, + 43: {"IN", "Tamil Nadu"}, + 44: {"IN", "Karnataka"}, + 45: {"IN", "Karnataka"}, + 46: {"IN", "Kerala"}, + 48: {"IN", "Unknown"}, + 49: {"IN", "Andhra Pradesh and Telangana"}, + 50: {"IN", "North East"}, + 51: {"IN", "Himachal Pradesh"}, + 52: {"IN", "Orissa"}, + 53: {"IN", "Punjab"}, + 54: {"IN", "Uttar Pradesh (West)"}, + 55: {"IN", "Uttar Pradesh (East)"}, + 56: {"IN", "Uttar Pradesh (West)"}, + 57: {"IN", "Gujarat"}, + 58: {"IN", "Madhya Pradesh & Chhattisgarh"}, + 59: {"IN", "Rajasthan"}, + 60: {"IN", "Rajasthan"}, + 62: {"IN", "Jammu & Kashmir"}, + 64: {"IN", "Chennai"}, + 66: {"IN", "Maharashtra & Goa"}, + 67: {"IN", "Madhya Pradesh & Chhattisgarh"}, + 68: {"IN", "Delhi & NCR"}, + 69: {"IN", "Mumbai"}, + 70: {"IN", "Rajasthan"}, + 71: {"IN", "Karnataka (Bangalore)"}, + 72: {"IN", "Kerala"}, + 73: {"IN", "Andhra Pradesh and Telangana"}, + 74: {"IN", "West Bengal"}, + 75: {"IN", "Bihar"}, + 76: {"IN", "Orissa"}, + 77: {"IN", "North East"}, + 78: {"IN", "Madhya Pradesh & Chattishgarh"}, + 79: {"IN", "Andaman Nicobar"}, + 80: {"IN", "Tamil Nadu"}, + 81: {"IN", "Kolkata"}, + 82: {"IN", "Himachal Pradesh"}, + 83: {"IN", "Kolkata"}, + 84: {"IN", "Chennai"}, + 85: {"IN", "West Bengal"}, + 86: {"IN", "Karnataka"}, + 87: {"IN", "Rajasthan"}, + 88: {"IN", "Vodafone Punjab"}, + 89: {"IN", "Uttar Pradesh (East)"}, + 90: {"IN", "Maharashtra"}, + 91: {"IN", "Kolkata"}, + 92: {"IN", "Mumbai"}, + 93: {"IN", "Madhya Pradesh"}, + 94: {"IN", "Tamil Nadu"}, + 95: {"IN", "Kerala"}, + 96: {"IN", "Haryana"}, + 97: {"IN", "Uttar Pradesh (West)"}, + 98: {"IN", "Gujarat"}, + }, + 405: MncMap{ + 1: {"IN", "Andhra Pradesh and Telangana"}, + 3: {"IN", "Bihar"}, + 4: {"IN", "Chennai"}, + 5: {"IN", "Delhi & NCR"}, + 6: {"IN", "Gujarat"}, + 7: {"IN", "Haryana"}, + 8: {"IN", "Himachal Pradesh"}, + 9: {"IN", "Jammu & Kashmir"}, + 10: {"IN", "Karnataka"}, + 11: {"IN", "Kerala"}, + 12: {"IN", "Kolkata"}, + 13: {"IN", "Maharashtra & Goa"}, + 14: {"IN", "Madhya Pradesh"}, + 15: {"IN", "Mumbai"}, + 17: {"IN", "Orissa"}, + 18: {"IN", "Punjab"}, + 19: {"IN", "Rajasthan"}, + 20: {"IN", "Tamil Nadu"}, + 21: {"IN", "Uttar Pradesh (East)"}, + 22: {"IN", "Uttar Pradesh (West)"}, + 23: {"IN", "West Bengal"}, + 25: {"IN", "Andhra Pradesh and Telangana"}, + 26: {"IN", "Assam"}, + 27: {"IN", "Bihar/Jharkhand"}, + 28: {"IN", "Chennai"}, + 29: {"IN", "Delhi"}, + 30: {"IN", "Gujarat"}, + 31: {"IN", "Haryana"}, + 32: {"IN", "Himachal Pradesh"}, + 33: {"IN", "Jammu & Kashmir"}, + 34: {"IN", "Karnataka"}, + 35: {"IN", "Kerala"}, + 36: {"IN", "Kolkata"}, + 37: {"IN", "Maharashtra & Goa"}, + 38: {"IN", "Madhya Pradesh"}, + 39: {"IN", "Mumbai"}, + 41: {"IN", "Orissa"}, + 42: {"IN", "Punjab"}, + 43: {"IN", "Rajasthan"}, + 44: {"IN", "Tamil Nadu including Chennai"}, + 45: {"IN", "Uttar Pradesh (E)"}, + 46: {"IN", "Uttar Pradesh (W) & Uttarakhand"}, + 47: {"IN", "West Bengal"}, + 51: {"IN", "West Bengal"}, + 52: {"IN", "Bihar & Jharkhand"}, + 53: {"IN", "Orissa"}, + 54: {"IN", "Uttar Pradesh (East)"}, + 55: {"IN", "Jammu & Kashmir"}, + 56: {"IN", "Assam"}, + 66: {"IN", "Uttar Pradesh (West)"}, + 67: {"IN", "West Bengal"}, + 70: {"IN", "Bihar & Jharkhand"}, + 750: {"IN", "Jammu & Kashmir"}, + 751: {"IN", "Assam"}, + 752: {"IN", "Bihar & Jharkhand"}, + 753: {"IN", "Orissa"}, + 754: {"IN", "Himachal Pradesh"}, + 755: {"IN", "North East"}, + 756: {"IN", "Madhya Pradesh & Chhattisgarh"}, + 799: {"IN", "Mumbai"}, + 800: {"IN", "Delhi & NCR"}, + 801: {"IN", "Andhra Pradesh and Telangana"}, + 803: {"IN", "Karnataka"}, + 804: {"IN", "Maharashtra & Goa"}, + 805: {"IN", "Mumbai"}, + 806: {"IN", "Rajasthan"}, + 809: {"IN", "Kerala"}, + 810: {"IN", "Uttar Pradesh (East)"}, + 811: {"IN", "Uttar Pradesh (West)"}, + 818: {"IN", "Uttar Pradesh (West)"}, + 819: {"IN", "Andhra Pradesh and Telangana"}, + 820: {"IN", "Karnataka"}, + 821: {"IN", "Kerala"}, + 822: {"IN", "Kolkata"}, + 824: {"IN", "Assam"}, + 827: {"IN", "Gujarat"}, + 834: {"IN", "Madhya Pradesh"}, + 840: {"IN", "West Bengal"}, + 845: {"IN", "Assam"}, + 846: {"IN", "Jammu & Kashmir"}, + 847: {"IN", "Karnataka"}, + 848: {"IN", "Kolkata"}, + 849: {"IN", "North East"}, + 850: {"IN", "Orissa"}, + 851: {"IN", "Punjab"}, + 852: {"IN", "Tamil Nadu"}, + 853: {"IN", "West Bengal"}, + 854: {"IN", "Andhra Pradesh"}, + 855: {"IN", "Assam"}, + 856: {"IN", "Bihar"}, + 857: {"IN", "Gujarat"}, + 858: {"IN", "Haryana"}, + 859: {"IN", "Himachal Pradesh"}, + 860: {"IN", "Jammu & Kashmir"}, + 861: {"IN", "Karnataka"}, + 862: {"IN", "Kerala"}, + 863: {"IN", "Madhya Pradesh"}, + 864: {"IN", "Maharashtra"}, + 865: {"IN", "North East"}, + 866: {"IN", "Orissa"}, + 867: {"IN", "Punjab"}, + 868: {"IN", "Rajasthan"}, + 869: {"IN", "Tamil Nadu (incl. Chennai)"}, + 870: {"IN", "Uttar Pradesh (West)"}, + 871: {"IN", "Uttar Pradesh (East)"}, + 872: {"IN", "Delhi"}, + 873: {"IN", "Kolkata"}, + 874: {"IN", "Mumbai"}, + 875: {"IN", "Assam"}, + 880: {"IN", "West Bengal"}, + 881: {"IN", "Assam"}, + 908: {"IN", "Andhra Pradesh and Telangana"}, + 909: {"IN", "Delhi"}, + 910: {"IN", "Haryana"}, + 911: {"IN", "Maharashtra"}, + 927: {"IN", "Gujarat"}, + 929: {"IN", "Maharashtra"}, + }, + 410: MncMap{ + 1: {"PK", "Mobilink-PMCL"}, + 2: {"PK", "PTCL"}, + 3: {"PK", "Pakistan Telecommunication Mobile Ltd"}, + 4: {"PK", "China Mobile"}, + 5: {"PK", "SCO Mobile Ltd"}, + 6: {"PK", "Telenor Pakistan"}, + 7: {"PK", "WaridTel"}, + 8: {"PK", "SCO Mobile Ltd"}, + }, + 412: MncMap{ + 1: {"AF", "Afghan Wireless Communication Company"}, + 20: {"AF", "Telecom Development Company Afghanistan Ltd."}, + 40: {"AF", "MTN Group Afghanistan"}, + 50: {"AF", "Etisalat Afghanistan"}, + 55: {"AF", "WASEL Afghanistan"}, + 80: {"AF", "Afghan Telecom"}, + 88: {"AF", "Afghan Telecom"}, + }, + 413: MncMap{ + 1: {"LK", "Mobitel (Pvt) Ltd"}, + 2: {"LK", "Dialog Axiata PLC"}, + 3: {"LK", "Etisalat Lanka (Pvt) Ltd"}, + 4: {"LK", "Lanka Bell Ltd"}, + 5: {"LK", "Bharti Airtel Lanka (Pvt) Ltd"}, + 8: {"LK", "Hutchison Telecommunications Lanka (Pvt) Ltd"}, + 11: {"LK", "Dialog Broadband Networks (Pvt) Ltd"}, + 12: {"LK", "Sri Lanka Telecom PLC"}, + 13: {"LK", "Lanka Bell Ltd"}, + }, + 414: MncMap{ + 0: {"MM", "Myanmar Posts and Telecommunications"}, + 1: {"MM", "Myanmar Posts and Telecommunications"}, + 2: {"MM", "Myanmar Posts and Telecommunications"}, + 3: {"MM", "Myanmar Economic Corporation"}, + 4: {"MM", "Myanmar Posts and Telecommunications"}, + 5: {"MM", "Ooredoo Myanmar"}, + 6: {"MM", "Telenor Myanmar"}, + 9: {"MM", "Myanmar National Tele & Communication Co., Ltd"}, + 20: {"MM", "Amara Communication Co.,Ltd"}, + 21: {"MM", "Amara Communication Co.,Ltd"}, + }, + 415: MncMap{ + 1: {"LB", "MIC 1"}, + 3: {"LB", "MIC 2"}, + }, + 416: MncMap{ + 1: {"JO", "Jordan Mobile Telephone Services"}, + 3: {"JO", "Umniah Mobile Company"}, + 77: {"JO", "Petra Jordanian Mobile Telecommunications Company (MobileCom)"}, + }, + 417: MncMap{ + 1: {"SY", "Syriatel Mobile Telecom"}, + 2: {"SY", "MTN Syria"}, + 9: {"SY", "Syrian Telecom"}, + }, + 418: MncMap{ + 0: {"IQ", "Asia Cell Telecommunications Company"}, + 5: {"IQ", "Asia Cell Telecommunications Company"}, + 8: {"IQ", ""}, + 20: {"IQ", "Zain Iraq"}, + 30: {"IQ", "Zain Iraq"}, + 40: {"IQ", "Telecom Ltd"}, + 45: {"IQ", "Mobitel Co. Ltd."}, + 62: {"IQ", "Itisaluna Wireless CO."}, + 92: {"IQ", "Omnnea Wireless"}, + }, + 419: MncMap{ + 2: {"KW", "Zain Kuwait"}, + 3: {"KW", "National Mobile Telecommunications"}, + 4: {"KW", "Kuwait Telecommunication Company"}, + }, + 420: MncMap{ + 1: {"SA", "Saudi Telecom Company"}, + 3: {"SA", "Etihad Etisalat Company"}, + 4: {"SA", "Zain Saudi Arabia"}, + 5: {"SA", "Virgin Mobile Saudi Arabia"}, + 21: {"SA", "Saudi Railways GSM"}, + }, + 421: MncMap{ + 1: {"YE", ""}, + 2: {"YE", "Spacetel Yemen"}, + 3: {"YE", "Yemen Mobile"}, + 4: {"YE", "Y"}, + }, + 422: MncMap{ + 2: {"OM", "Oman Telecommunications Company"}, + 3: {"OM", "Omani Qatari Telecommunications Company SAOC"}, + 4: {"OM", "Oman Telecommunications Company"}, + }, + 424: MncMap{ + 2: {"AE", "Emirates Telecom Corp"}, + 3: {"AE", "Emirates Integrated Telecommunications Company"}, + }, + 425: MncMap{ + 1: {"IL", "Partner Communications Company Ltd."}, + 2: {"IL", "Cellcom Israel Ltd."}, + 3: {"IL", "Pelephone Communications Ltd."}, + 4: {"IL", "Globalsim Ltd"}, + 5: {"IL", "Palestine Cellular Communications, Ltd."}, + 6: {"IL", "Wataniya Palestine Mobile Telecommunications Company"}, + 7: {"IL", "Hot Mobile Ltd."}, + 8: {"IL", "Golan Telecom Ltd"}, + 9: {"IL", "Marathon 018 Xphone Ltd."}, + 11: {"IL", "365 Telecom"}, + 12: {"IL", "Free Telecom"}, + 13: {"IL", "Ituran Cellular Communications"}, + 14: {"IL", "Alon Cellular Ltd."}, + 15: {"IL", "Home Cellular"}, + 16: {"IL", "Rami Levy Communications Ltd."}, + 17: {"IL", "Gale Phone"}, + 18: {"IL", "Cellact Communications Ltd."}, + 19: {"IL", "Azi Communications Ltd."}, + 20: {"IL", "Bezeq The Israeli Telecommunication Corp Ltd."}, + 21: {"IL", "B.I.P. Communications Ltd."}, + 23: {"IL", "Beezz Communication Solutions Ltd."}, + 24: {"IL", "Partner Communications Company Ltd."}, + 26: {"IL", "LB Annatel Ltd."}, + 28: {"IL", "PHI Networks"}, + 29: {"IL", "CG Networks"}, + }, + 426: MncMap{ + 1: {"BH", "Bahrain Telecommunications Company"}, + 2: {"BH", "Zain Bahrain"}, + 3: {"BH", "Civil Aviation Authority"}, + 4: {"BH", "Viva Bahrain"}, + 5: {"BH", "Bahrain Telecommunications Company"}, + }, + 427: MncMap{ + 1: {"QA", "ooredoo"}, + 2: {"QA", "Vodafone Qatar"}, + 5: {"QA", "Ministry of Interior"}, + 6: {"QA", "Ministry of Interior"}, + }, + 428: MncMap{ + 88: {"MN", "Unitel LLC"}, + 91: {"MN", "Skytel LLC"}, + 98: {"MN", "G-Mobile LLC"}, + 99: {"MN", "Mobicom Corporation"}, + }, + 429: MncMap{ + 1: {"NP", "Nepal Telecom (NDCL)"}, + 2: {"NP", "Ncell Pvt. Ltd."}, + 3: {"NP", "United Telecom Limited"}, + 4: {"NP", "Smart Telecom Pvt. Ltd. (STPL)"}, + }, + 432: MncMap{ + 1: {"IR", "Ertebatat Iran"}, + 2: {"IR", "Azartel Mobile"}, + 8: {"IR", "Shatel Mobile"}, + 10: {"IR", "Samantel Mobile"}, + 11: {"IR", "Mobile Communications Company of Iran (MCI)"}, + 12: {"IR", "Dadeh Dostar asr Novin p.j.s. co & Information Technology Company of Iran"}, + 14: {"IR", "Telecommunication Kish Company"}, + 19: {"IR", "Mobile Telecommunications Company of Esfahan"}, + 20: {"IR", "Social Security Investment Co."}, + 21: {"IR", "Social Security Investment Co."}, + 32: {"IR", "TCI of Iran and Iran Mobin"}, + 35: {"IR", "MTN Irancell Telecommunications Services Company"}, + 40: {"IR", "Ertebatat Mobinnet"}, + 50: {"IR", "Arya Resaneh Tadbir"}, + 70: {"IR", "Telephone Communications Company of Iran"}, + 71: {"IR", "Telephone Communications Company of Iran"}, + 90: {"IR", "IRAPHONE GHESHM of Iran"}, + 93: {"IR", "Iraphone"}, + 99: {"IR", "TCI of Iran and Rightel"}, + }, + 434: MncMap{ + 3: {"UZ", "Uzbektelekom"}, + 4: {"UZ", "Unitel LLC"}, + 5: {"UZ", "Coscom"}, + 6: {"UZ", "RUBICON WIRELESS COMMUNICATION"}, + 7: {"UZ", "Universal Mobile Systems"}, + 8: {"UZ", "Uzbektelekom"}, + }, + 436: MncMap{ + 1: {"TJ", "JV Somoncom"}, + 2: {"TJ", "Indigo Tajikistan"}, + 3: {"TJ", "TT Mobile"}, + 4: {"TJ", "Babilon-Mobile"}, + 5: {"TJ", "Tacom"}, + 10: {"TJ", "Babilon-T"}, + 12: {"TJ", "Indigo"}, + }, + 437: MncMap{ + 1: {"KG", "Sky Mobile LLC"}, + 3: {"KG", "7 Mobile"}, + 5: {"KG", "Alfa Telecom CJSC"}, + 9: {"KG", "NurTelecom LLC"}, + 10: {"KG", "Saima Telecom"}, + 11: {"KG", "iTel"}, + }, + 438: MncMap{ + 1: {"TM", "MTS Turkmenistan"}, + 2: {"TM", "Altyn Asyr"}, + 3: {"TM", "AŞTU"}, + }, + 440: MncMap{ + 0: {"JP", "SoftBank Corp."}, + 1: {"JP", "UQ Communications Inc."}, + 2: {"JP", "Hanshin Cable Engineering Co., Ltd."}, + 3: {"JP", "Internet Initiative Japan Inc."}, + 4: {"JP", "Japan Radio Company, Ltd."}, + 5: {"JP", "Wireless City Planning Inc."}, + 6: {"JP", "SAKURA Internet Inc."}, + 7: {"JP", "LTE-X, Inc."}, + 10: {"JP", "NTT DoCoMo, Inc."}, + 20: {"JP", "SoftBank Corp."}, + 21: {"JP", "SoftBank Corp."}, + 50: {"JP", "KDDI Corporation"}, + 51: {"JP", "KDDI Corporation"}, + 52: {"JP", "KDDI Corporation"}, + 53: {"JP", "KDDI Corporation"}, + 54: {"JP", "KDDI Corporation"}, + 70: {"JP", "KDDI Corporation"}, + 71: {"JP", "KDDI Corporation"}, + 72: {"JP", "KDDI Corporation"}, + 73: {"JP", "KDDI Corporation"}, + 74: {"JP", "KDDI Corporation"}, + 75: {"JP", "KDDI Corporation"}, + 76: {"JP", "KDDI Corporation"}, + 78: {"JP", "Okinawa Cellular Telephone"}, + 91: {"JP", "Tokyo Organising Committee of the Olympic and Paralympic Games"}, + }, + 441: MncMap{ + 0: {"JP", "Wireless City Planning Inc."}, + 1: {"JP", "SoftBank Corp."}, + 10: {"JP", "UQ Communications Inc."}, + }, + 450: MncMap{ + 1: {"KR", "Globalstar Asia Pacific"}, + 2: {"KR", "KT"}, + 4: {"KR", "KT"}, + 5: {"KR", "SK Telecom"}, + 6: {"KR", "LG Telecom"}, + 7: {"KR", "KT"}, + 8: {"KR", "KT"}, + 11: {"KR", "Korea Cable Telecom"}, + 12: {"KR", "SK Telecom"}, + }, + 452: MncMap{ + 1: {"VN", "Vietnam Mobile Telecom Services Company"}, + 2: {"VN", "Vietnam Telecom Services Company"}, + 4: {"VN", "Viettel Telecom"}, + 5: {"VN", "Hanoi Telecom"}, + 7: {"VN", "GTEL Mobile JSC"}, + }, + 454: MncMap{ + 0: {"HK", "CSL Limited"}, + 1: {"HK", "CITIC Telecom 1616"}, + 2: {"HK", "CSL Limited"}, + 3: {"HK", "Hutchison Telecom"}, + 4: {"HK", "Hutchison Telecom"}, + 6: {"HK", "SmarTone Mobile Communications Limited"}, + 7: {"HK", "China Unicom (Hong Kong) Limited"}, + 8: {"HK", "Truphone Limited"}, + 9: {"HK", "China Motion Telecom"}, + 11: {"HK", "China-Hong Kong Telecom"}, + 12: {"HK", "China Mobile Hong Kong Company Limited"}, + 13: {"HK", "China Mobile Hong Kong Company Limited"}, + 14: {"HK", "Hutchison Telecom"}, + 15: {"HK", "SmarTone Mobile Communications Limited"}, + 16: {"HK", "PCCW"}, + 17: {"HK", "SmarTone Mobile Communications Limited"}, + 19: {"HK", "PCCW-HKT"}, + 20: {"HK", "PCCW-HKT"}, + 21: {"HK", "21Vianet Mobile Ltd."}, + 22: {"HK", "263 Mobile Communications (HongKong) Limited"}, + 24: {"HK", "Multibyte Info Technology Ltd"}, + 25: {"HK", "Hong Kong Government"}, + 26: {"HK", "Hong Kong Government"}, + 29: {"HK", "PCCW-HKT"}, + 30: {"HK", "China Data Enterprises Ltd"}, + 31: {"HK", "China Telecom Global Limited"}, + 32: {"HK", "Hong Kong Broadband Network Ltd"}, + 35: {"HK", "Webbing Hong Kong Ltd"}, + }, + 455: MncMap{ + 0: {"MO", "Smartone – Comunicações Móveis, S.A."}, + 1: {"MO", "Companhia de Telecomunicações de Macau, S.A.R.L."}, + 2: {"MO", "China Telecom (Macau) Company Limited"}, + 3: {"MO", "Hutchison Telephone (Macau), Limitada"}, + 4: {"MO", "Companhia de Telecomunicações de Macau, S.A.R.L."}, + 5: {"MO", "Hutchison Telephone (Macau), Limitada"}, + 6: {"MO", "Smartone – Comunicações Móveis, S.A."}, + 7: {"MO", "China Telecom (Macau) Limitada"}, + }, + 456: MncMap{ + 1: {"KH", "CamGSM / The Royal Group"}, + 2: {"KH", "Smart Axiata Co. Ltd"}, + 3: {"KH", "Cambodia Advance Communications Co. Ltd"}, + 4: {"KH", "Cambodia Advance Communications Co. Ltd"}, + 5: {"KH", "Smart Axiata Co. Ltd"}, + 6: {"KH", "Smart Axiata Co. Ltd"}, + 8: {"KH", "Viettel"}, + 9: {"KH", "Viettel"}, + 11: {"KH", "SEATEL Cambodia"}, + 18: {"KH", "The Royal Group"}, + }, + 457: MncMap{ + 1: {"LA", "Lao Telecom"}, + 2: {"LA", "Enterprise of Telecommunications Lao"}, + 3: {"LA", "Star Telecom Co., Ltd"}, + 8: {"LA", "VimpelCom Lao Ltd"}, + }, + 460: MncMap{ + 0: {"CN", "China Mobile"}, + 1: {"CN", "China Unicom"}, + 3: {"CN", "China Telecom"}, + 4: {"CN", "Global Star Satellite"}, + 8: {"CN", "China Mobile"}, + 9: {"CN", "China Unicom"}, + 11: {"CN", "China Telecom"}, + 20: {"CN", "China Tietong"}, + }, + 466: MncMap{ + 1: {"TW", "Far EasTone Telecommunications Co Ltd"}, + 2: {"TW", "Far EasTone Telecommunications Co Ltd"}, + 3: {"TW", "Far EasTone Telecommunications Co Ltd"}, + 5: {"TW", "Asia Pacific Telecom"}, + 6: {"TW", "Far EasTone Telecommunications Co Ltd"}, + 9: {"TW", "Vmax Telecom"}, + 10: {"TW", "Global Mobile Corp."}, + 11: {"TW", "LDTA/Chunghwa Telecom"}, + 12: {"TW", "Ambit Microsystems"}, + 88: {"TW", "Far EasTone Telecommunications Co Ltd"}, + 89: {"TW", "Taiwan Star Telecom"}, + 90: {"TW", "Taiwan Star Telecom"}, + 92: {"TW", "Chunghwa Telecom"}, + 97: {"TW", "Taiwan Mobile Co. Ltd"}, + }, + 467: MncMap{ + 5: {"KR", "Cheo Technology Jv Company"}, + 6: {"KR", "Cheo Technology Jv Company"}, + }, + 470: MncMap{ + 1: {"BD", "Grameenphone Ltd."}, + 2: {"BD", "Axiata Bangladesh Ltd."}, + 3: {"BD", "Banglalink Digital Communications Ltd."}, + 4: {"BD", "Teletalk Bangladesh Limited"}, + 5: {"BD", "Pacific Bangladesh Telecom Limited"}, + 7: {"BD", "Bharti Airtel Bangladesh Ltd."}, + 9: {"BD", "Bangladesh Internet Exchange Limited (BIEL)"}, + 10: {"BD", "Banglalion Communications Ltd."}, + }, + 472: MncMap{ + 1: {"MV", "Dhivehi Raajjeyge Gulhun"}, + 2: {"MV", "Wataniya Telecom Maldives"}, + }, + 502: MncMap{ + 10: {"MY", "Maxis, DiGi, Celcom, XOX"}, + 11: {"MY", "Telekom Malaysia Bhd"}, + 12: {"MY", "Maxis Communications Berhad"}, + 13: {"MY", "Celcom Axiata Berhad"}, + 14: {"MY", "Telekom Malaysia Berhad for PSTN SMS"}, + 16: {"MY", "DiGi Telecommunications"}, + 17: {"MY", "Maxis Communications Berhad"}, + 18: {"MY", "U Mobile Sdn Bhd"}, + 19: {"MY", "Celcom Axiata Berhad"}, + 20: {"MY", "Electcoms Berhad"}, + 150: {"MY", "Tune Talk Sdn Bhd"}, + 152: {"MY", "YTL Communications Sdn Bhd"}, + 153: {"MY", "Webe Digital Sdn Bhd"}, + 154: {"MY", "Talk Focus Sdn Bhd"}, + 156: {"MY", "Altel Communications Sdn Bhd"}, + 157: {"MY", "Telekomunikasi Indonesia International (M) Sdn Bhd"}, + }, + 505: MncMap{ + 1: {"AU", "Telstra Corporation Limited"}, + 2: {"AU", "Singtel Optus Proprietary Limited"}, + 3: {"AU", "Vodafone Hutchison Australia Proprietary Limited"}, + 4: {"AU", "Department of Defence"}, + 7: {"AU", "Vodafone Network Pty. Ltd."}, + 10: {"AU", "Norfolk Telecom"}, + 11: {"AU", "Telstra Corporation Ltd."}, + 13: {"AU", "Railcorp, Transport for New South Wales"}, + 14: {"AU", "TPG Telecom"}, + 16: {"AU", "Victorian Rail Track"}, + 17: {"AU", "Optus"}, + 18: {"AU", "Pactel International Pty Ltd"}, + 19: {"AU", "Lycamobile Pty Ltd"}, + 20: {"AU", "Ausgrid Corporation"}, + 21: {"AU", "Queensland Rail Limited"}, + 22: {"AU", "iiNet Ltd"}, + 23: {"AU", "Challenge Networks Pty. Ltd."}, + 24: {"AU", "Advanced Communications Technologies Pty. Ltd."}, + 25: {"AU", "Pilbara Iron Company Services Pty Ltd"}, + 26: {"AU", "Dialogue Communications Pty. Ltd."}, + 27: {"AU", "Nexium Telecommunications"}, + 28: {"AU", "RCOM International Pty Ltd"}, + 30: {"AU", "Compatel Limited"}, + 31: {"AU", "BHP Billiton"}, + 32: {"AU", "Thales Australia"}, + 33: {"AU", "CLX Networks Pty Ltd"}, + 34: {"AU", "Santos Limited"}, + 35: {"AU", "MessageBird Pty Ltd"}, + 36: {"AU", "Optus Mobile Pty. Ltd."}, + 37: {"AU", "Yancoal Australia Ltd"}, + 38: {"AU", "Truphone Pty Ltd"}, + 39: {"AU", "Telstra Corporation Ltd."}, + 40: {"AU", "CITIC Pacific Mining"}, + 41: {"AU", "Aqura Technologies Pty"}, + 42: {"AU", "Groote Eylandt Mining Company Pty Ltd"}, + 43: {"AU", "Arrow Energy Pty Ltd"}, + 44: {"AU", "Roy Hill Iron Ore Pty Ltd"}, + 50: {"AU", "Pivotel Group Pty Limited"}, + 61: {"AU", "Commtel Network Solutions Pty Ltd"}, + 62: {"AU", "National Broadband Network Co."}, + 68: {"AU", "National Broadband Network Co."}, + 71: {"AU", "Telstra Corporation Limited"}, + 72: {"AU", "Telstra Corporation Limited"}, + 88: {"AU", "Pivotel Group Pty Limited"}, + 90: {"AU", "Singtel Optus Proprietary Limited"}, + }, + 510: MncMap{ + 0: {"ID", "PT Pasifik Satelit Nusantara (ACeS)"}, + 1: {"ID", "PT Indonesian Satellite Corporation Tbk (INDOSAT)"}, + 9: {"ID", "PT Smartfren Telecom"}, + 10: {"ID", "PT Telekomunikasi Selular"}, + 11: {"ID", "PT XL Axiata Tbk"}, + 27: {"ID", "PT Sampoerna Telekomunikasi Indonesia"}, + 28: {"ID", "PT Mobile-8 Telecom"}, + 88: {"ID", "PT Internux"}, + 89: {"ID", "PT Hutchison CP Telecommunications"}, + 99: {"ID", "PT Bakrie Telecom"}, + }, + 514: MncMap{ + 1: {"TL", "PT Telekomunikasi Indonesia International"}, + 2: {"TL", "Timor Telecom"}, + 3: {"TL", "Viettel Timor-Leste"}, + }, + 515: MncMap{ + 2: {"PH", "Globe Telecom"}, + 3: {"PH", "PLDT via Smart Communications"}, + 5: {"PH", "Digital Telecommunications Philippines"}, + 11: {"PH", "PLDT via ACeS Philippines"}, + 24: {"PH", "ABS-CBN Convergence with Globe Telecom"}, + 88: {"PH", "Next Mobile Inc."}, + }, + 520: MncMap{ + 0: {"TH", "CAT Telecom"}, + 3: {"TH", "Advanced Wireless Network Company Ltd."}, + 4: {"TH", "True Move H Universal Communication Company Ltd."}, + 5: {"TH", "DTAC TriNet Company Ltd."}, + 9: {"TH", "Royal Thai Police"}, + 15: {"TH", "TOT Public Company Limited"}, + 18: {"TH", "Total Access Communications Public Company Ltd."}, + 20: {"TH", "ACeS"}, + 47: {"TH", "TOT Public Company Limited"}, + }, + 525: MncMap{ + 1: {"SG", "Singapore Telecom"}, + 3: {"SG", "M1 Limited"}, + 5: {"SG", "StarHub Mobile"}, + 6: {"SG", "StarHub Mobile"}, + 7: {"SG", "Singapore Telecom"}, + 8: {"SG", "StarHub Mobile"}, + 9: {"SG", "Liberty Wireless Pte Ltd"}, + 10: {"SG", "TPG Telecom Pte Ltd"}, + 12: {"SG", "GRID Communications Pte Ltd."}, + }, + 528: MncMap{ + 1: {"BN", "Jabatan Telekom Brunei"}, + 2: {"BN", "B-Mobile Communications Sdn Bhd"}, + 11: {"BN", "Data Stream Technology"}, + }, + 530: MncMap{ + 1: {"NZ", "Vodafone New Zealand"}, + 3: {"NZ", "Woosh Wireless"}, + 5: {"NZ", "Spark New Zealand"}, + 6: {"NZ", "Spark New Zealand"}, + 7: {"NZ", "Bluereach Limited"}, + 24: {"NZ", "2degrees"}, + }, + 536: MncMap{ + 2: {"NR", "Digicel (Nauru) Corporation"}, + }, + 537: MncMap{ + 1: {"PG", "Bemobile Limited"}, + 2: {"PG", "Telikom PNG Ltd."}, + 3: {"PG", "Digicel PNG"}, + }, + 539: MncMap{ + 1: {"TO", "Tonga Communications Corporation"}, + 43: {"TO", "Shoreline Communication"}, + 88: {"TO", "Digicel (Tonga) Limited"}, + }, + 540: MncMap{ + 1: {"SB", "Our Telekom"}, + 2: {"SB", "BMobile (SI) Ltd"}, + }, + 541: MncMap{ + 0: {"VU", "ACeS International (AIL)"}, + 1: {"VU", "Telecom Vanuatu Ltd"}, + 5: {"VU", "Digicel Vanuatu Ltd"}, + 7: {"VU", "WanTok Vanuatu Ltd"}, + }, + 542: MncMap{ + 1: {"FJ", "Vodafone Fiji"}, + 2: {"NR", "Digicel Fiji"}, + 3: {"FJ", "Telecom Fiji Ltd"}, + }, + 543: MncMap{ + 1: {"WF", "Service des Postes et Télécommunications des Îles Wallis et Futuna (SPT)"}, + }, + 544: MncMap{ + 11: {"AS", "Bluesky"}, + }, + 545: MncMap{ + 1: {"KI", "Telecom Services Kiribati Ltd"}, + 2: {"KI", "OceanLink"}, + 9: {"KI", "Telecom Services Kiribati Ltd"}, + }, + 546: MncMap{ + 1: {"NC", "OPT New Caledonia"}, + }, + 547: MncMap{ + 5: {"PF", "VITI"}, + 15: {"PF", "Pacific Mobile Telecom"}, + 20: {"PF", "Tikiphone SA"}, + }, + 548: MncMap{ + 1: {"CK", "Telecom Cook Islands"}, + }, + 549: MncMap{ + 0: {"WS", "Digicel Pacific Ltd."}, + 1: {"WS", "Digicel Pacific Ltd."}, + 27: {"WS", "Bluesky Samoa Ltd"}, + }, + 550: MncMap{ + 1: {"FM", "FSMTC"}, + }, + 551: MncMap{ + 1: {"MH", "Marshall Islands National Telecommunications Authority (MINTA)"}, + }, + 552: MncMap{ + 1: {"PW", "Palau National Communications Corp."}, + 2: {"PW", "Palau Equipment Company Inc."}, + }, + 553: MncMap{ + 1: {"TV", "Tuvalu Telecom"}, + }, + 554: MncMap{ + 1: {"TK", "Teletok"}, + }, + 555: MncMap{ + 1: {"NU", "Telecom Niue"}, + }, + 602: MncMap{ + 1: {"EG", "Orange Egypt"}, + 2: {"EG", "Vodafone Egypt"}, + 3: {"EG", "Etisalat Egypt"}, + 4: {"EG", "Telecom Egypt"}, + }, + 603: MncMap{ + 1: {"DZ", "Algérie Télécom"}, + 2: {"DZ", "Optimum Telecom Algérie Spa"}, + 3: {"DZ", "Wataniya Telecom Algérie"}, + 7: {"DZ", "Algérie Télécom"}, + 9: {"DZ", "Algérie Télécom"}, + 21: {"DZ", "Anesrif"}, + }, + 604: MncMap{ + 0: {"MA", "Médi Télécom"}, + 1: {"MA", "Ittissalat Al-Maghrib (Maroc Telecom)"}, + 2: {"MA", "Wana Corporate"}, + 4: {"MA", "Al Houria Telecom"}, + 5: {"MA", "Wana Corporate"}, + 6: {"MA", "Ittissalat Al-Maghrib (Maroc Telecom)"}, + 99: {"MA", "Al Houria Telecom"}, + }, + 605: MncMap{ + 1: {"TN", "Orange Tunisie"}, + 2: {"TN", "Tunisie Telecom"}, + 3: {"TN", "ooredoo Tunisiana"}, + }, + 606: MncMap{ + 0: {"LY", "Libyana"}, + 1: {"LY", "Al-Madar Al-Jadeed"}, + 2: {"LY", "Al-Jeel Al-Jadeed"}, + 3: {"LY", "Libya Telecom & Technology (LTT)"}, + 6: {"LY", "Hatef Libya"}, + }, + 607: MncMap{ + 1: {"GM", "Gamcel"}, + 2: {"GM", "Africell"}, + 3: {"GM", "Comium"}, + 4: {"GM", "QCell Gambia"}, + 5: {"GM", "GAMTEL-Ecowan"}, + 6: {"GM", "NETPAGE"}, + }, + 608: MncMap{ + 1: {"SN", "Sonatel"}, + 2: {"SN", "Millicom International Cellular S.A."}, + 3: {"SN", "Sudatel"}, + 4: {"SN", "CSU-SA"}, + }, + 609: MncMap{ + 1: {"MR", "Mattel"}, + 2: {"MR", "Chinguitel"}, + 10: {"MR", "Mauritel Mobiles"}, + }, + 610: MncMap{ + 1: {"ML", "Malitel SA"}, + 2: {"ML", "Orange Mali SA"}, + 3: {"ML", "Alpha Telecommunication Mali S.A."}, + }, + 611: MncMap{ + 1: {"GN", "Orange S.A."}, + 2: {"GN", "Sotelgui Lagui"}, + 3: {"GN", "INTERCEL Guinée"}, + 4: {"GN", "Areeba Guinea"}, + 5: {"GN", "Cellcom"}, + }, + 612: MncMap{ + 2: {"CI", "Atlantique Cellulaire"}, + 3: {"CI", "Orange"}, + 4: {"CI", "Comium Ivory Coast Inc"}, + 5: {"CI", "Loteny Telecom"}, + 6: {"CI", "Oricel"}, + 7: {"CI", "Aircomm"}, + 18: {"CI", "YooMee"}, + }, + 613: MncMap{ + 1: {"BF", "Onatel"}, + 2: {"BF", "Orange Burkina Faso"}, + 3: {"BF", "Telecel Faso SA"}, + }, + 614: MncMap{ + 1: {"NE", "La Société Sahélienne de Télécommunications (SahelCom)"}, + 2: {"NE", "Bharti Airtel Limited"}, + 3: {"NE", "Atlantique Telecom (subsidiary of Etisalat)"}, + 4: {"NE", "Orange Niger"}, + }, + 615: MncMap{ + 1: {"TG", "Togo Telecom"}, + 3: {"TG", "Moov Togo"}, + }, + 616: MncMap{ + 1: {"BJ", "Benin Telecoms Mobile"}, + 2: {"BJ", "Telecel Benin"}, + 3: {"BJ", "Spacetel Benin"}, + 4: {"BJ", "Bell Benin Communications"}, + 5: {"BJ", "Glo Communication Benin"}, + }, + 617: MncMap{ + 1: {"MU", "Cellplus Mobile Communications Ltd."}, + 2: {"MU", "Mahanagar Telephone Mauritius Limited (MTML)"}, + 3: {"MU", "Mahanagar Telephone Mauritius Limited (MTML)"}, + 10: {"MU", "Emtel Ltd."}, + }, + 618: MncMap{ + 1: {"LR", "Lonestar Communications Corporation"}, + 4: {"LR", "Novafone Inc."}, + 7: {"LR", "Orange Liberia"}, + 20: {"LR", "Liberia Telecommunications Corporation"}, + }, + 619: MncMap{ + 1: {"SL", "Orange SL Limited"}, + 2: {"SL", "Lintel Sierra Leone Limited"}, + 3: {"SL", "Lintel Sierra Leone Limited"}, + 5: {"SL", "Lintel Sierra Leone Limited"}, + 6: {"SL", "Sierra Leone Telephony"}, + 7: {"SL", "Qcell Sierra Leone"}, + 9: {"SL", "InterGroup Telecom SL"}, + 25: {"SL", "Mobitel"}, + 40: {"SL", "Datatel (SL) Ltd."}, + 50: {"SL", "Datatel (SL) Ltd."}, + }, + 620: MncMap{ + 1: {"GH", "MTN Group"}, + 2: {"GH", "Vodafone Group"}, + 3: {"GH", "Millicom Ghana"}, + 4: {"GH", "Kasapa / Hutchison Telecom"}, + 6: {"GH", "Airtel"}, + 7: {"GH", "Globacom Group"}, + 8: {"GH", "Surfline Communications Ltd"}, + 10: {"GH", "Blu Telecommunications"}, + 11: {"GH", "Netafrique Dot Com Ltd"}, + }, + 621: MncMap{ + 20: {"NG", "Bharti Airtel Limited"}, + 22: {"NG", "InterC Network Ltd."}, + 24: {"NG", "Spectranet"}, + 26: {"NG", "Swift"}, + 27: {"NG", "Smile Communications Nigeria"}, + 30: {"NG", "MTN Nigeria Communications Limited"}, + 40: {"NG", "Nigerian Mobile Telecommunications Limited"}, + 50: {"NG", "Globacom Ltd"}, + 60: {"NG", ""}, + }, + 622: MncMap{ + 1: {"TD", "Bharti Airtel SA"}, + 2: {"TD", "SotelTchad"}, + 3: {"TD", "Millicom"}, + 7: {"TD", "SotelTchad"}, + }, + 623: MncMap{ + 1: {"CF", "Centrafrique Telecom Plus"}, + 2: {"CF", "Telecel Centrafrique"}, + 3: {"CF", "Orange RCA"}, + 4: {"CF", "Nationlink Telecom RCA"}, + }, + 624: MncMap{ + 1: {"CM", "Mobile Telephone Network Cameroon Ltd"}, + 2: {"CM", "Orange Cameroun S.A."}, + 4: {"CM", "Viettel Cameroun"}, + }, + 625: MncMap{ + 1: {"CV", "CVMóvel, S.A."}, + 2: {"CV", "UNITEL T+ TELECOMUNICACÕES, S.A."}, + }, + 626: MncMap{ + 1: {"ST", "Companhia Santomese de Telecomunicaçôe"}, + 2: {"ST", "Unitel Sao Tome and Principe"}, + }, + 627: MncMap{ + 1: {"GQ", "GETESA"}, + 3: {"GQ", "HiTs EG.SA"}, + }, + 628: MncMap{ + 1: {"GA", "Gabon Telecom & Libertis S.A."}, + 2: {"GA", "Atlantique Télécom (Etisalat Group) Gabon S.A."}, + 3: {"GA", "Airtel Gabon S.A."}, + 4: {"GA", "USAN Gabon S.A."}, + 5: {"GA", "Réseau de l’Administration Gabonaise"}, + }, + 629: MncMap{ + 1: {"CG", "Celtel Congo"}, + 7: {"CG", "Warid Telecom"}, + 10: {"CG", "MTN CONGO S.A"}, + }, + 630: MncMap{ + 1: {"CD", "Vodacom Congo RDC sprl"}, + 2: {"CD", "Airtel sprl"}, + 4: {"CD", "Cellco"}, + 5: {"CD", "Supercell SPRL"}, + 10: {"CD", ""}, + 86: {"CD", "Orange RDC sarl"}, + 89: {"CD", "OASIS sprl"}, + 90: {"CD", "Africell RDC sprl"}, + }, + 631: MncMap{ + 2: {"AO", "UNITEL S.a.r.l."}, + 4: {"AO", "MOVICEL Telecommunications S.A."}, + }, + 632: MncMap{ + 1: {"GW", "Guinétel S.A."}, + 2: {"GW", "Spacetel Guiné-Bissau S.A."}, + 3: {"GW", ""}, + 7: {"GW", "Guinétel S.A."}, + }, + 633: MncMap{ + 1: {"SC", "Cable & Wireless Seychelles"}, + 10: {"SC", "Telecom Seychelles Ltd"}, + }, + 634: MncMap{ + 1: {"SD", "Zain Group - Sudan"}, + 2: {"SD", "MTN Sudan"}, + 3: {"SD", "MTN Sudan"}, + 5: {"SD", "Canar Telecom"}, + 7: {"SD", "Sudatel Group"}, + 9: {"SD", "NEC"}, + }, + 635: MncMap{ + 10: {"RW", "MTN Rwandacell SARL"}, + 13: {"RW", "TIGO RWANDA S.A"}, + 14: {"RW", "Airtel RWANDA"}, + 17: {"RW", "Olleh Rwanda Networks"}, + }, + 636: MncMap{ + 1: {"ET", "Ethio Telecom"}, + }, + 637: MncMap{ + 1: {"SO", "Telesom"}, + 4: {"SO", "Somafone FZLLC"}, + 10: {"SO", "NationLink Telecom"}, + 20: {"SO", "SOMNET"}, + 30: {"SO", "Golis Telecom Somalia"}, + 50: {"SO", "Hormuud Telecom Somalia Inc"}, + 57: {"SO", "UNITEL S.a.r.l."}, + 60: {"SO", "Nationlink Telecom"}, + 67: {"SO", "HTG Group Somalia"}, + 71: {"SO", "Somtel"}, + 82: {"SO", "Telcom Somalia"}, + }, + 638: MncMap{ + 1: {"DJ", "Djibouti Telecom SA"}, + }, + 639: MncMap{ + 1: {"KE", "Safaricom Limited"}, + 2: {"KE", "Safaricom Limited"}, + 3: {"KE", "Bharti Airtel"}, + 4: {"KE", "Mobile Pay Kenya Limited"}, + 6: {"KE", "Finserve Africa Limited"}, + 7: {"KE", "Telkom Kenya"}, + 8: {"KE", "Sema Mobile Services Limited"}, + 9: {"KE", "Homeland Media Group Limited"}, + 10: {"KE", "Jamii Telecommunications Limited"}, + 11: {"KE", "WiAfrica Kenya Limited"}, + }, + 640: MncMap{ + 2: {"TZ", "MIC Tanzania Limited"}, + 3: {"TZ", "Zanzibar Telecom Ltd"}, + 4: {"TZ", "Vodacom Tanzania Limited"}, + 5: {"TZ", "Bharti Airtel"}, + 7: {"TZ", "Tanzania Telecommunication Company LTD (TTCL)"}, + 8: {"TZ", "Benson Informatics Limited"}, + 9: {"TZ", "Viettel Tanzania Limited"}, + 11: {"TZ", "Smile Telecoms Holdings Ltd. "}, + 13: {"TZ", "Wiafrica Tanzania Limited"}, + }, + 641: MncMap{ + 1: {"UG", "Bharti Airtel"}, + 4: {"UG", "Tangerine Uganda Limited"}, + 6: {"UG", "Afrimax Uganda"}, + 10: {"UG", "MTN Uganda"}, + 11: {"UG", "Uganda Telecom Ltd."}, + 14: {"UG", "Africell Uganda"}, + 16: {"UG", "SimbaNET Uganda Limited"}, + 18: {"UG", "Suretelecom Uganda Ltd."}, + 22: {"UG", "Bharti Airtel"}, + 26: {"UG", "Lycamobile Network Services Uganda Limited"}, + 33: {"UG", "Smile Communications Uganda Limited"}, + 40: {"UG", "Civil Aviation Authority (CAA)"}, + 44: {"UG", "K2 Telecom Ltd"}, + }, + 642: MncMap{ + 1: {"BI", "Econet Wireless Burundi PLC"}, + 3: {"BI", "Onatel"}, + 7: {"BI", "LACELL SU"}, + 8: {"BI", "Viettel Burundi"}, + 82: {"BI", "Econet Wireless Burundi PLC"}, + }, + 643: MncMap{ + 1: {"MZ", "Mocambique Celular S.A."}, + 3: {"MZ", "Movitel, SA"}, + 4: {"MZ", "Vodacom Mozambique, S.A."}, + }, + 645: MncMap{ + 1: {"ZM", "Bharti Airtel"}, + 2: {"ZM", "MTN Group"}, + 3: {"ZM", "Zambia Telecommunications Company Ltd"}, + }, + 646: MncMap{ + 1: {"MG", "Bharti Airtel"}, + 2: {"MG", "Orange Madagascar S.A."}, + 4: {"MG", "Telma Mobile S.A."}, + }, + 647: MncMap{ + 0: {"RE", "Orange La Réunion"}, + 1: {"RE", "BJT Partners"}, + 2: {"RE", "Telco OI"}, + 3: {"RE", "Telco OI"}, + 4: {"RE", "Zeop mobile"}, + 10: {"RE", "Société Réunionnaise du Radiotéléphone"}, + }, + 648: MncMap{ + 1: {"ZW", "Net*One Cellular (Pvt) Ltd"}, + 3: {"ZW", "Telecel Zimbabwe (PVT) Ltd"}, + 4: {"ZW", "Econet Wireless"}, + }, + 649: MncMap{ + 1: {"NA", "MTC Namibia"}, + 2: {"NA", "Telecom Namibia"}, + 3: {"NA", "Telecom Namibia"}, + 4: {"NA", "Paratus Telecommunications (Pty)"}, + 5: {"NA", "Demshi Investments CC"}, + 6: {"NA", "MTN Namibia"}, + }, + 650: MncMap{ + 1: {"MW", "Telecom Network Malawi"}, + 2: {"MW", "Access Communications Ltd"}, + 10: {"MW", "Bharti Airtel Limited"}, + }, + 651: MncMap{ + 1: {"LS", "Vodacom Lesotho (Pty) Ltd"}, + 2: {"LS", "Econet Ezi-cel"}, + }, + 652: MncMap{ + 1: {"BW", "Mascom Wireless (Pty) Limited"}, + 2: {"BW", "Orange (Botswana) Pty Limited"}, + 4: {"BW", "Botswana Telecommunications Corporation"}, + }, + 653: MncMap{ + 1: {"SZ", "SPTC"}, + 2: {"SZ", "Swazi Mobile Limited"}, + 10: {"SZ", "Swazi MTN Limited"}, + }, + 654: MncMap{ + 1: {"KM", "Comoros Telecom"}, + 2: {"KM", "Telecom Malagasy (Telma)"}, + }, + 655: MncMap{ + 1: {"ZA", "Vodacom"}, + 2: {"ZA", "Telkom SA SOC Ltd"}, + 4: {"ZA", "Sasol (Pty) Ltd."}, + 5: {"ZA", "Telkom SA Ltd"}, + 6: {"ZA", "Sentech (Pty) Ltd"}, + 7: {"ZA", "Cell C (Pty) Ltd"}, + 10: {"ZA", "MTN Group"}, + 11: {"ZA", "South African Police Service Gauteng"}, + 12: {"ZA", "MTN Group"}, + 13: {"ZA", "Neotel Pty Ltd"}, + 14: {"ZA", "Neotel Pty Ltd"}, + 17: {"ZA", "Sishen Iron Ore Company (Ltd) Pty"}, + 19: {"ZA", "Wireless Business Solutions (Pty) Ltd"}, + 21: {"ZA", "Cape Town Metropolitan Council"}, + 24: {"ZA", "SMSPortal (Pty) Ltd."}, + 25: {"ZA", "Wirels Connect"}, + 27: {"ZA", "A to Z Vaal Industrial Supplies Pty Ltd"}, + 28: {"ZA", "Hymax Talking Solutions (Pty) Ltd"}, + 30: {"ZA", "Bokamoso Consortium"}, + 31: {"ZA", "Karabo Telecoms (Pty) Ltd."}, + 32: {"ZA", "Ilizwi Telecommunications"}, + 33: {"ZA", "Thinta Thinta Telecommunications Pty Ltd"}, + 34: {"ZA", "Bokone Telecoms Pty Ltd"}, + 35: {"ZA", "Kingdom Communications Pty Ltd"}, + 36: {"ZA", "Amatole Telecommunications Pty Ltd"}, + 38: {"ZA", "Wireless Business Solutions (Pty) Ltd"}, + 41: {"ZA", "South African Police Service"}, + 46: {"ZA", "SMS Cellular Services (Pty) Ltd"}, + 50: {"ZA", "Ericsson South Africa (Pty) Ltd"}, + 51: {"ZA", "Integrat (Pty) Ltd"}, + 53: {"ZA", "Lycamobile (Pty) Ltd"}, + 73: {"ZA", "Wireless Business Solutions (Pty) Ltd"}, + 74: {"ZA", "Wireless Business Solutions (Pty) Ltd"}, + 75: {"ZA", "Airports Company South Africa"}, + }, + 657: MncMap{ + 1: {"ER", "Eritrea Telecommunications Services Corporation"}, + }, + 658: MncMap{ + 1: {"SH", "Sure South Atlantic Ltd."}, + }, + 659: MncMap{ + 2: {"SS", "MTN South Sudan"}, + 3: {"SS", "Gemtel"}, + 4: {"SS", "Network of the World (NOW)"}, + 6: {"SS", "Zain South Sudan"}, + 7: {"SS", "Sudani"}, + }, + 702: MncMap{ + 67: {"BZ", "Belize Telemedia Limited (BTL)"}, + 69: {"BZ", "Speednet Communications Limited"}, + 99: {"BZ", "Speednet Communications Limited"}, + }, + 704: MncMap{ + 1: {"GT", "Telecomunicaciones de Guatemala, S.A."}, + 2: {"GT", "Millicom / Local partners"}, + 3: {"GT", "Telefónica Móviles Guatemala (Telefónica)"}, + }, + 706: MncMap{ + 1: {"SV", "CTE Telecom Personal, S.A. de C.V."}, + 2: {"SV", "Digicel, S.A. de C.V."}, + 3: {"SV", "Telemovil El Salvador S.A."}, + 4: {"SV", "Telefónica Móviles El Salvador"}, + 5: {"SV", "INTELFON, S.A. de C.V."}, + }, + 708: MncMap{ + 1: {"HN", "Servicios de Comunicaciones de Honduras S.A. de C.V."}, + 2: {"HN", "Celtel"}, + 30: {"HN", "Empresa Hondureña de Telecomunicaciones"}, + 40: {"HN", "Digicel de Honduras"}, + }, + 710: MncMap{ + 21: {"NI", "Empresa Nicaragüense de Telecomunicaciones, S.A. (ENITEL) (América Móvil)"}, + 30: {"NI", "Telefonía Celular de Nicaragua, S.A. (Telefónica, S.A.)"}, + 73: {"NI", "Servicios de Comunicaciones S.A."}, + }, + 712: MncMap{ + 1: {"CR", "Instituto Costarricense de Electricidad"}, + 2: {"CR", "Instituto Costarricense de Electricidad"}, + 3: {"CR", "Claro CR Telecomunicaciones (Aló)"}, + 4: {"CR", "Telefónica Móviles Costa Rica"}, + 20: {"CR", "Virtualis S.A."}, + }, + 714: MncMap{ + 1: {"PA", "Cable & Wireless Panama S.A."}, + 2: {"PA", "Telefónica Moviles Panama S.A, Bell South Corp. (BSC)"}, + 3: {"PA", "América Móvil"}, + 4: {"PA", "Digicel Group"}, + 20: {"PA", "Telefónica Móviles de Panama S.A"}, + }, + 716: MncMap{ + 6: {"PE", "Telefónica del Perú S.A.A."}, + 7: {"PE", "Entel Perú S.A."}, + 10: {"PE", "América Móvil Perú"}, + 15: {"PE", "Viettel Peru S.A.C."}, + 17: {"PE", "Entel Perú S.A."}, + }, + 722: MncMap{ + 10: {"AR", "Telefónica Móviles Argentina S.A."}, + 20: {"AR", "NII Holdings"}, + 34: {"AR", "Telecom Personal S.A."}, + 40: {"AR", "TE.SA.M Argentina S.A."}, + 70: {"AR", "Telefónica Móviles Argentina S.A."}, + 310: {"AR", "AMX Argentina S.A."}, + 320: {"AR", "AMX Argentina S.A."}, + 330: {"AR", "AMX Argentina S.A."}, + 341: {"AR", "Telecom Personal S.A."}, + }, + 724: MncMap{ + 0: {"BR", "NII Holdings, Inc."}, + 1: {"BR", "SISTEER DO BRASIL TELECOMUNICAÇÔES"}, + 2: {"BR", "Telecom Italia Mobile"}, + 3: {"BR", "Telecom Italia Mobile"}, + 4: {"BR", "Telecom Italia Mobile"}, + 5: {"BR", "Claro"}, + 6: {"BR", "Vivo S.A."}, + 10: {"BR", "Vivo S.A."}, + 11: {"BR", "Vivo S.A."}, + 15: {"BR", "Sercomtel Celular"}, + 17: {"BR", "Correios Celular"}, + 18: {"BR", "Datora (Vodafone)"}, + 23: {"BR", "Vivo S.A."}, + 24: {"BR", "Amazonia Celular"}, + 28: {"BR", ""}, + 30: {"BR", "TNL PCS Oi"}, + 31: {"BR", "TNL PCS Oi"}, + 32: {"BR", "Algar Telecom S.A."}, + 33: {"BR", "Algar Telecom S.A."}, + 34: {"BR", "Algar Telecom S.A."}, + 35: {"BR", "Telcom Telecomunicações"}, + 36: {"BR", "Options Telecomunicações"}, + 38: {"BR", "Claro"}, + 39: {"BR", "NII Holdings, Inc."}, + 54: {"BR", "PORTO SEGURO TELECOMUNICAÇÔES"}, + 99: {"BR", ""}, + }, + 730: MncMap{ + 1: {"CL", "Entel Telefonía Móvil S.A."}, + 2: {"CL", "Telefónica Móvil de Chile"}, + 3: {"CL", "Claro Chile S.A."}, + 4: {"CL", "Novator Partners"}, + 5: {"CL", "Multikom S.A."}, + 6: {"CL", "Blue Two Chile S.A."}, + 7: {"CL", "Telefónica Móvil de Chile"}, + 8: {"CL", "VTR S.A."}, + 9: {"CL", "Novator Partners"}, + 10: {"CL", "Entel Telefonía Móvil S.A."}, + 11: {"CL", "Celupago S.A."}, + 12: {"CL", "Telestar Móvil S.A."}, + 13: {"CL", "Tribe Mobile Chile SPA"}, + 14: {"CL", "Netline Telefónica Móvil Ltda"}, + 15: {"CL", "Cibeles Telecom S.A."}, + 16: {"CL", "Nomade Telecomunicaciones S.A."}, + 17: {"CL", "COMPATEL Chile Limitada"}, + 18: {"CL", "Empresas Bunker S.A."}, + 19: {"CL", "Sociedad Falabella Móvil SPA"}, + 20: {"CL", "Inversiones Santa Fe Limitada"}, + 22: {"CL", "Cellplus SpA"}, + 23: {"CL", "Claro Servicios Empresariales S. A."}, + 99: {"CL", "WILL Telefonía"}, + }, + 732: MncMap{ + 1: {"CO", "Colombia Telecomunicaciones S.A. ESP"}, + 2: {"CO", "Edatel S.A. ESP"}, + 3: {"CO", "LLEIDA S.A.S."}, + 4: {"CO", "COMPATEL COLOMBIA SAS"}, + 20: {"CO", "Une EPM Telecomunicaciones S.A. E.S.P."}, + 99: {"CO", "Empresas Municipales de Cali"}, + 101: {"CO", "COMCEL S.A."}, + 103: {"CO", "Colombia Móvil S.A. ESP"}, + 111: {"CO", "Colombia Móvil S.A. ESP"}, + 123: {"CO", "Colombia Telecomunicaciones S.A. ESP"}, + 130: {"CO", "Avantel S.A.S"}, + 142: {"CO", "Une EPM Telecomunicaciones S.A. E.S.P."}, + 154: {"CO", "Virgin Mobile Colombia S.A.S."}, + 165: {"CO", "Colombia Móvil S.A. ESP"}, + 176: {"CO", "DirecTV Colombia Ltda"}, + 187: {"CO", "Empresa de Telecomunicaciones de Bogotá S.A. ESP"}, + 199: {"CO", "SUMA Movil SAS"}, + 208: {"CO", "UFF Movil SAS"}, + }, + 734: MncMap{ + 2: {"VE", "Corporacion Digitel C.A."}, + 3: {"VE", "Galaxy Entertainment de Venezuela C.A."}, + 4: {"VE", "Telefónica Móviles Venezuela"}, + 6: {"VE", "Telecomunicaciones Movilnet"}, + }, + 736: MncMap{ + 1: {"BO", "Nuevatel PCS De Bolivia SA"}, + 2: {"BO", "Entel SA"}, + 3: {"BO", "Telefónica Celular De Bolivia S.A"}, + }, + 738: MncMap{ + 1: {"GY", "U-Mobile (Cellular) Inc."}, + 2: {"GY", "Guyana Telephone & Telegraph Co."}, + 3: {"GY", "Quark Communications Inc."}, + 5: {"GY", "eGovernment Unit, Ministry of the Presidency"}, + }, + 740: MncMap{ + 0: {"EC", "Otecel S.A."}, + 1: {"EC", "CONECEL S.A."}, + 2: {"EC", "Corporación Nacional de Telecomunicaciones (CNT EP)"}, + 3: {"EC", "Otecel S.A."}, + }, + 744: MncMap{ + 1: {"PY", "Hola Paraguay S.A"}, + 2: {"PY", "AMX Paraguay S.A."}, + 3: {"PY", "Compañia Privada de Comunicaciones S.A."}, + 4: {"PY", "Telefónica Celular Del Paraguay S.A. (Telecel)"}, + 5: {"PY", "Núcleo S.A(TIM)"}, + 6: {"PY", "Copaco S.A."}, + }, + 746: MncMap{ + 2: {"SR", "Telecommunications Company Suriname (Telesur)"}, + 3: {"SR", "Digicel Group Limited"}, + 5: {"SR", "Telecommunications Company Suriname (Telesur)"}, + }, + 748: MncMap{ + 0: {"UY", "Administración Nacional de Telecomunicaciones"}, + 1: {"UY", "Administración Nacional de Telecomunicaciones"}, + 3: {"UY", "Administración Nacional de Telecomunicaciones"}, + 7: {"UY", "Telefónica Móviles Uruguay"}, + 10: {"UY", "AM Wireless Uruguay S.A."}, + }, + 750: MncMap{ + 1: {"FK", "Sure South Atlantic Ltd."}, + }, +} diff --git a/gen/e164.py b/gen/e164.py new file mode 100644 index 0000000..a02b631 --- /dev/null +++ b/gen/e164.py @@ -0,0 +1,37 @@ +import phone_iso3166.e164 +import io +import os +import sys + +def generate(filename): + def transverse(node, path): + if isinstance(node, dict): + for k, v in node.items(): + for i in transverse(v, path + str(k)): + yield i + else: + yield path, node + + head = """// Code generated by gen/gen.py DO NOT EDIT. +// https://blog.golang.org/generate +package $GOPACKAGE + +import iradix "github.com/hashicorp/go-immutable-radix" + +func getE164() *iradix.Tree { + r := iradix.New() + t := r.Txn() +""" + head = head.replace(' ', "\t") + head = head.replace('$GOPACKAGE', os.environ['GOPACKAGE']) + + with open(filename, 'w') as out: + out.write(head) + for prefix, country in transverse(phone_iso3166.e164.mapping, ''): + out.write(f"\tt.Insert([]byte(\"{prefix}\"), \"{country}\")\n") + out.write("\treturn t.Commit()\n") + out.write("}\n") + + +if __name__ == "__main__": + generate(sys.argv[1]) diff --git a/gen/e212.py b/gen/e212.py new file mode 100644 index 0000000..d8bf42a --- /dev/null +++ b/gen/e212.py @@ -0,0 +1,58 @@ +import phone_iso3166.e212 +import phone_iso3166.e212_names +import io +import os +import sys + +def generate(filename): + def transverse(node, path): + if isinstance(node, dict): + for k, v in node.items(): + for i in transverse(v, path + str(k)): + yield i + else: + yield path, node + + filehead = """// Code generated by gen/gen.py DO NOT EDIT. +package $GOPACKAGE + +import iradix "github.com/hashicorp/go-immutable-radix" + +type Operator struct { + Country string + Name string +} + +type MncMap map[uint16]Operator +type MccMap map[uint16]MncMap + +""" + filehead = filehead.replace(' ', "\t") + filehead = filehead.replace('$GOPACKAGE', os.environ['GOPACKAGE']) + + with open(filename, 'w') as out: + out.write(filehead) + e212 = """ +func getE212() *iradix.Tree { + r := iradix.New() + t := r.Txn() +""" + out.write(e212.replace(' ', "\t")) + for prefix, country in transverse(phone_iso3166.e212.networks, ''): + out.write(f"\tt.Insert([]byte(\"{prefix}\"), \"{country}\")\n") + out.write("\treturn t.Commit()\n") + out.write("}\n\n") + + out.write("var OperatorMap = MccMap{\n") + for mcc, mncmap in phone_iso3166.e212_names.operators.items(): + out.write(f"\t{mcc}: MncMap{{\n") + for mnc, oper in mncmap.items(): + cc, name = oper + name = name.replace('"', '\\"') + out.write(f"\t\t{mnc}: {{\"{cc}\", \"{name}\"}},\n") + out.write(f"\t}},\n") + out.write("}\n") + + +if __name__ == "__main__": + generate(sys.argv[1]) diff --git a/gen/requirements.txt b/gen/requirements.txt new file mode 100644 index 0000000..d7c483b --- /dev/null +++ b/gen/requirements.txt @@ -0,0 +1 @@ +phone-iso3166 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..b4bfa6c --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/onlinecity/go-phone-iso3166 + +go 1.12 + +require github.com/hashicorp/go-immutable-radix v1.1.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..1a21d60 --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc= +github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= diff --git a/lookup.go b/lookup.go new file mode 100644 index 0000000..9739329 --- /dev/null +++ b/lookup.go @@ -0,0 +1,62 @@ +package phoneiso3166 + +import ( + "strconv" + + iradix "github.com/hashicorp/go-immutable-radix" +) + +//go:generate python3 gen/e164.py e164.go +//go:generate python3 gen/e212.py e212.go + +type CountryRadix struct { + *iradix.Tree +} +type OperatorRadix struct { + *iradix.Tree +} + +var E164 *CountryRadix +var E212 *OperatorRadix + +func init() { + E164 = &CountryRadix{ + getE164(), + } + E212 = &OperatorRadix{ + getE212(), + } +} + +func (r *CountryRadix) Lookup(msisdn uint64) string { + return r.LookupByteString([]byte(strconv.FormatUint(msisdn, 10))) +} + +func (r *CountryRadix) LookupString(msisdn string) string { + return r.LookupByteString([]byte(msisdn)) +} + +func (r *CountryRadix) LookupByteString(msisdn []byte) string { + _, country, _ := r.Root().LongestPrefix(msisdn) + if country == nil { + return "" + } + return country.(string) +} + +func (r *OperatorRadix) Lookup(mcc, mnc uint16) string { + c := strconv.FormatUint(uint64(mcc), 10) + n := strconv.FormatUint(uint64(mnc), 10) + _, country, _ := r.Root().LongestPrefix([]byte(c + n)) + if country == nil { + return "" + } + return country.(string) +} + +func NetworkName(mcc, mnc uint16) string { + if op, ok := OperatorMap[mcc][mnc]; ok { + return op.Name + } + return "" +} diff --git a/lookup_test.go b/lookup_test.go new file mode 100644 index 0000000..05234b2 --- /dev/null +++ b/lookup_test.go @@ -0,0 +1,167 @@ +package phoneiso3166 + +import ( + "bytes" + "strconv" + "testing" +) + +func TestCountry(t *testing.T) { + tests := []struct { + msisdn uint64 + expect string + }{ + {45, "DK"}, + {4566118311, "DK"}, + {38640118311, "SI"}, + {38340118311, "XK"}, + {37740118311, "MC"}, + {1204, "CA"}, + {12024561111, "US"}, // White house comment line + {14412921234, "BM"}, // Bermuda city hall + {0, ""}, + } + for _, tt := range tests { + m := tt.msisdn + name := strconv.FormatUint(tt.msisdn, 10) + ex := tt.expect + t.Run(name, func(t *testing.T) { + res := E164.Lookup(m) + if res != ex { + t.Errorf( + "lookup(%d) returned %q, but expected %q", + m, res, ex, + ) + } + }) + } +} + +const testNum uint64 = 4566118311 +const testString = "4566118311" + +func TestPrealloc(t *testing.T) { + var buf = make([]byte, 0, 16) + { + b := strconv.AppendUint(buf, testNum, 10) + if !bytes.Equal(b, []byte(testString)) { + t.Error("pre alloc fail") + t.Log(string(b)) + } + } + { + b := strconv.AppendUint(buf, 4512345678, 10) + if !bytes.Equal(b, []byte("4512345678")) { + t.Error("pre alloc fail") + t.Log(string(b)) + } + } +} + +func BenchmarkE164Lookup(b *testing.B) { + for n := 0; n < b.N; n++ { + E164.Lookup(testNum) + } +} + +// This option is interesting if you plan to lookup a lot of numbers +func BenchmarkE164LookupPrealloc(b *testing.B) { + var buf = make([]byte, 0, 16) + for n := 0; n < b.N; n++ { + E164.LookupByteString( + strconv.AppendUint(buf, testNum, 10), + ) + } +} + +func BenchmarkE164LookupBuffer(b *testing.B) { + var buf bytes.Buffer + for n := 0; n < b.N; n++ { + buf.Reset() + E164.LookupByteString( + strconv.AppendUint(buf.Bytes(), testNum, 10), + ) + } +} + +func BenchmarkE164LookupString(b *testing.B) { + for n := 0; n < b.N; n++ { + E164.LookupString(testString) + } +} + +func BenchmarkE164LookupBytes(b *testing.B) { + m := []byte(testString) + for n := 0; n < b.N; n++ { + E164.LookupByteString(m) + } +} + +func BenchmarkE164LookupNoExist(b *testing.B) { + for n := 0; n < b.N; n++ { + E164.Lookup(19820000000000) + } +} + +func TestOperator(t *testing.T) { + tests := []struct { + mcc uint16 + mnc uint16 + expect string + }{ + {238, 0, "DK"}, + {340, 1, "GP"}, + {340, 12, "MQ"}, + {0, 0, ""}, + } + for _, tt := range tests { + mcc := tt.mcc + mnc := tt.mnc + ex := tt.expect + m := strconv.FormatUint(uint64(tt.mcc), 10) + n := strconv.FormatUint(uint64(tt.mnc), 10) + t.Run(m+n, func(t *testing.T) { + res := E212.Lookup(mcc, mnc) + if res != ex { + t.Errorf( + "lookup(%d, %d) returned %q, but expected %q", + mcc, mnc, res, ex, + ) + } + }) + } +} + +func BenchmarkE212Lookup(b *testing.B) { + for n := 0; n < b.N; n++ { + E212.Lookup(340, 12) + } +} + +func TestOperatorName(t *testing.T) { + tests := []struct { + mcc uint16 + mnc uint16 + expect string + }{ + {238, 1, "TDC A/S"}, + {238, 0, ""}, + {0, 0, ""}, + } + for _, tt := range tests { + mcc := tt.mcc + mnc := tt.mnc + ex := tt.expect + m := strconv.FormatUint(uint64(tt.mcc), 10) + n := strconv.FormatUint(uint64(tt.mnc), 10) + t.Run(m+n, func(t *testing.T) { + res := NetworkName(mcc, mnc) + if res != ex { + t.Errorf( + "lookup(%d, %d) returned %q, but expected %q", + mcc, mnc, res, ex, + ) + } + }) + } +}