From efa70f1ece9f30bf7e6a8600534bbb37e751c53e Mon Sep 17 00:00:00 2001
From: Gustavo Valverde
Date: Tue, 18 Feb 2020 14:18:39 -0400
Subject: [PATCH 001/296] Change DGII endpoint to new one
The old endpoint has been deprecated.
Closes https://github.com/arthurdejong/python-stdnum/pull/190
---
stdnum/do/ncf.py | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/stdnum/do/ncf.py b/stdnum/do/ncf.py
index b9bb3d91..d4994de9 100644
--- a/stdnum/do/ncf.py
+++ b/stdnum/do/ncf.py
@@ -133,10 +133,13 @@ def _convert_result(result): # pragma: no cover
'MENSAJE_VALIDACION': 'validation_message',
'RNC': 'rnc',
'NCF': 'ncf',
+ u'RNC / Cédula': 'rnc',
u'RNC/Cédula': 'rnc',
+ u'Nombre / Razón Social': 'name',
u'Nombre/Razón Social': 'name',
'Estado': 'status',
'Tipo de comprobante': 'type',
+ u'Válido hasta': 'valid_until',
}
return dict(
(translation.get(key, key), value)
@@ -168,13 +171,14 @@ def check_dgii(rnc, ncf, timeout=30): # pragma: no cover
from stdnum.do.rnc import compact as rnc_compact
rnc = rnc_compact(rnc)
ncf = compact(ncf)
- url = 'https://www.dgii.gov.do/app/WebApps/ConsultasWeb/consultas/ncf.aspx'
- headers = {
+ url = 'https://dgii.gov.do/app/WebApps/ConsultasWeb2/ConsultasWeb/consultas/ncf.aspx'
+ session = requests.Session()
+ session.headers.update({
'User-Agent': 'Mozilla/5.0 (python-stdnum)',
- }
+ })
# Get the page to pick up needed form parameters
document = lxml.html.fromstring(
- requests.get(url, headers=headers, timeout=timeout).text)
+ session.get(url, timeout=timeout).text)
validation = document.find('.//input[@name="__EVENTVALIDATION"]').get('value')
viewstate = document.find('.//input[@name="__VIEWSTATE"]').get('value')
data = {
@@ -186,13 +190,13 @@ def check_dgii(rnc, ncf, timeout=30): # pragma: no cover
}
# Do the actual request
document = lxml.html.fromstring(
- requests.post(url, headers=headers, data=data, timeout=timeout).text)
- result = document.find('.//div[@id="ctl00_cphMain_pResultado"]')
+ session.post(url, data=data, timeout=timeout).text)
+ result = document.find('.//div[@id="cphMain_pResultado"]')
if result is not None:
data = {
- 'validation_message': document.findtext('.//*[@id="ctl00_cphMain_lblInformacion"]').strip(),
+ 'validation_message': document.findtext('.//*[@id="cphMain_lblInformacion"]').strip(),
}
data.update(zip(
- [x.text.strip().rstrip(':') for x in result.findall('.//strong')],
- [x.text.strip() for x in result.findall('.//span')]))
+ [x.text.strip() for x in result.findall('.//th')],
+ [x.text.strip() for x in result.findall('.//td/span')]))
return _convert_result(data)
From 353db92b2da365381d590dbc535e1b2b68db0732 Mon Sep 17 00:00:00 2001
From: Aleksi Hoffman
Date: Mon, 24 Feb 2020 08:54:15 +0200
Subject: [PATCH 002/296] Support validating temporary Finnish personal
identity codes
This adds an optional allow_temporary parameter, which defaults to
False, to the validate() function.
Closes https://github.com/arthurdejong/python-stdnum/pull/191
---
stdnum/fi/hetu.py | 14 +++++++++-----
tests/test_fi_hetu.doctest | 11 +++++++++--
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/stdnum/fi/hetu.py b/stdnum/fi/hetu.py
index 3fda6a9f..334985f1 100644
--- a/stdnum/fi/hetu.py
+++ b/stdnum/fi/hetu.py
@@ -3,6 +3,7 @@
#
# Copyright (C) 2011 Jussi Judin
# Copyright (C) 2012, 2013 Arthur de Jong
+# Copyright (C) 2020 Aleksi Hoffman
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -71,9 +72,12 @@ def _calc_checksum(number):
return '0123456789ABCDEFHJKLMNPRSTUVWXY'[int(number) % 31]
-def validate(number):
+def validate(number, allow_temporary=False):
"""Check if the number is a valid HETU. It checks the format, whether a
- valid date is given and whether the check digit is correct."""
+ valid date is given and whether the check digit is correct. Allows
+ temporary identifier range for individuals (900-999) if allow_temporary
+ is True.
+ """
number = compact(number)
match = _hetu_re.search(number)
if not match:
@@ -92,7 +96,7 @@ def validate(number):
if individual < 2:
raise InvalidComponent()
# this range is for temporary identifiers
- if 900 <= individual <= 999:
+ if 900 <= individual <= 999 and not allow_temporary:
raise InvalidComponent()
checkable_number = '%02d%02d%02d%03d' % (day, month, year, individual)
if match.group('control') != _calc_checksum(checkable_number):
@@ -100,10 +104,10 @@ def validate(number):
return number
-def is_valid(number):
+def is_valid(number, allow_temporary=False):
"""Check if the number is a valid HETU."""
try:
- return bool(validate(number))
+ return bool(validate(number, allow_temporary))
except ValidationError:
return False
diff --git a/tests/test_fi_hetu.doctest b/tests/test_fi_hetu.doctest
index b5b3f871..96701fd6 100644
--- a/tests/test_fi_hetu.doctest
+++ b/tests/test_fi_hetu.doctest
@@ -2,6 +2,7 @@ test_fi_hetu.doctest - more detailed doctests for stdnum.fi.hetu module
Copyright (C) 2011 Jussi Judin
Copyright (C) 2013 Arthur de Jong
+Copyright (C) 2020 Aleksi Hoffman
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -78,8 +79,10 @@ Traceback (most recent call last):
InvalidFormat: ...
-Invalid individual number: (for historical reasons individual IDs start from
-002 and the range from 900 to 999 is used as temporary identifiers)
+Test for invalid individual numbers. For historical reasons individual IDs
+start from 002. The range from 900 to 999 is used as temporary identifiers
+(which should only be allowed when `allow_temporary` parameter is explicitly
+set to True).
>>> hetu.validate('131052-000V')
Traceback (most recent call last):
@@ -89,9 +92,13 @@ InvalidComponent: ...
Traceback (most recent call last):
...
InvalidComponent: ...
+>>> hetu.validate('131052-9993', allow_temporary=True)
+'131052-9993'
compact() and format() don't do much special:
>>> hetu.compact('131052a308t')
'131052A308T'
+>>> hetu.format('131052a308t')
+'131052A308T'
From 8437b8e485f123811f2e432cb3ded5c94d315971 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 1 Mar 2020 19:42:16 +0100
Subject: [PATCH 003/296] Use bionic for pypy3 tests on Travis
This switches the pypy3 tests to bionic which has Python 3.6.9. There
were installation issues with 3.5.3 on trusty and coverage issues with
3.6.1 of xenial (now the default on Travis).
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index fb26bd79..436ddfb2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,7 +14,7 @@ matrix:
- python: 2.6
dist: trusty
- python: pypy3
- dist: trusty
+ dist: bionic
- python: 3.6
env: TOXENV=flake8
- python: 3.6
From f5e04567fd4196ef1f559f6d570baca618186662 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leon=20Sand=C3=B8y?=
Date: Fri, 31 Jan 2020 16:00:37 +0100
Subject: [PATCH 004/296] Fix misleading docstring in se.personnummer
get_birth_date()
The docstring for get_birth_date() in the Swedish personnummer.py warned
that the datetime might be 100 years off because of the lack of
precision in the personnummer.
This was accurate when the docstring was written, but this is no longer
accurate after the - and + signs were correctly handled.
Fixes 5441ffa
---
stdnum/se/personnummer.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/stdnum/se/personnummer.py b/stdnum/se/personnummer.py
index 95d6180b..8829ef78 100644
--- a/stdnum/se/personnummer.py
+++ b/stdnum/se/personnummer.py
@@ -3,6 +3,7 @@
#
# Copyright (C) 2018 Ilya Vihtinsky
# Copyright (C) 2018-2020 Arthur de Jong
+# Copyright (C) 2020 Leon Sandøy
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -61,10 +62,13 @@ def compact(number):
def get_birth_date(number):
- """Guess the birth date from the number.
+ """Determine the birth date from the number.
- Note that it may be 100 years off because the number has only the last
- two digits of the year."""
+ For people aged 100 and up, the minus/dash in the personnummer is changed to a plus
+ on New Year's Eve the year they turn 100.
+
+ See Folkbokföringslagen (1991:481), §18.
+ """
number = compact(number)
if len(number) == 13:
year = int(number[0:4])
From 4500881cf6aad1ddd1ad8b3bcc1495f5a48c45cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leon=20Sand=C3=B8y?=
Date: Fri, 31 Jan 2020 17:55:09 +0100
Subject: [PATCH 005/296] Improve birth date validation for dk.cpr
This adds a check to validate that the birth date information in a
personnummer is not set in the future, resolving a TODO from this file.
It also improves exception messages for certain validation fail
conditions.
---
stdnum/dk/cpr.py | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/stdnum/dk/cpr.py b/stdnum/dk/cpr.py
index b6d636b3..97eaf2b6 100644
--- a/stdnum/dk/cpr.py
+++ b/stdnum/dk/cpr.py
@@ -1,6 +1,8 @@
# cpr.py - functions for handling Danish CPR numbers
+# coding: utf-8
#
# Copyright (C) 2012-2019 Arthur de Jong
+# Copyright (C) 2020 Leon Sandøy
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -44,10 +46,12 @@
Traceback (most recent call last):
...
InvalidComponent: ...
+>>> validate('2110525629')
+Traceback (most recent call last):
+ ...
+InvalidComponent: The birth date information is valid, but this person has not been born yet.
>>> get_birth_date('2110620629')
datetime.date(1962, 10, 21)
->>> get_birth_date('2110525629')
-datetime.date(2052, 10, 21)
>>> format('2110625629')
'211062-5629'
"""
@@ -86,7 +90,7 @@ def get_birth_date(number):
try:
return datetime.date(year, month, day)
except ValueError:
- raise InvalidComponent()
+ raise InvalidComponent('The number does not contain valid birth date information.')
def validate(number):
@@ -97,9 +101,9 @@ def validate(number):
raise InvalidFormat()
if len(number) != 10:
raise InvalidLength()
- # check if birth date is valid
- get_birth_date(number)
- # TODO: check that the birth date is not in the future
+ if get_birth_date(number) > datetime.date.today():
+ raise InvalidComponent(
+ 'The birth date information is valid, but this person has not been born yet.')
return number
From df9f9222f97ad2cccb3dd93499ae9e7768584565 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leon=20Sand=C3=B8y?=
Date: Fri, 31 Jan 2020 17:32:00 +0100
Subject: [PATCH 006/296] Implement get_birth_date() for no.fodselsnummer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This adds a function that allows you to determine a persons birth date
from a Norwegian fødselsnummer.
This also accounts for D-numbers, H-numbers, and FH-numbers, which
contain special exceptions and modifications to the birthdate portion of
the number.
Most of the information this is based on was found here:
https://no.wikipedia.org/wiki/F%C3%B8dselsnummer#H-nummer
It also updates the list of valid fødselsnummer in the tests, since this
list contained many numbers that are not valid by this new validation
that now accounts for dates.
Additionally, this updates all tests that were failing under the new
validation, and adds a few new tests to bring the coverage to 100%.
Closes https://github.com/arthurdejong/python-stdnum/pull/187
---
stdnum/no/fodselsnummer.py | 56 ++++++++++++++---
tests/test_no_fodselsnummer.doctest | 97 ++++++++++++++++-------------
2 files changed, 101 insertions(+), 52 deletions(-)
diff --git a/stdnum/no/fodselsnummer.py b/stdnum/no/fodselsnummer.py
index ce1ef133..50d27b6b 100644
--- a/stdnum/no/fodselsnummer.py
+++ b/stdnum/no/fodselsnummer.py
@@ -3,6 +3,7 @@
#
# Copyright (C) 2018 Ilya Vihtinsky
# Copyright (C) 2018 Arthur de Jong
+# Copyright (C) 2020 Leon Sandøy
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -29,18 +30,20 @@
* https://no.wikipedia.org/wiki/F%C3%B8dselsnummer
* https://en.wikipedia.org/wiki/National_identification_number#Norway
->>> validate('684131 52112')
-'68413152112'
->>> get_gender('684131 52112')
-'M'
->>> validate('684131 52123')
+>>> validate('151086 95088')
+'15108695088'
+>>> get_gender('151086-95088')
+'F'
+>>> validate('15108695077')
Traceback (most recent call last):
...
InvalidChecksum: ...
->>> format('68413152112')
-'684131 52112'
+>>> format('15108695077')
+'151086 95077'
"""
+import datetime
+
from stdnum.exceptions import *
from stdnum.util import clean, isdigits
@@ -72,6 +75,42 @@ def get_gender(number):
return 'F'
+def get_birth_date(number):
+ """Determine and return the birth date."""
+ number = compact(number)
+ day = int(number[0:2])
+ month = int(number[2:4])
+ year = int(number[4:6])
+ individual_digits = int(number[6:9])
+ # Raise a more useful exception for FH numbers
+ if day >= 80:
+ raise InvalidComponent(
+ 'This number is an FH-number, and does not contain birth date information by design.')
+ # Correct the birth day for D-numbers. These have a modified first digit.
+ # https://no.wikipedia.org/wiki/F%C3%B8dselsnummer#D-nummer
+ if day > 40:
+ day -= 40
+ # Correct the birth month for H-numbers. These have a modified third digit.
+ # https://no.wikipedia.org/wiki/F%C3%B8dselsnummer#H-nummer
+ if month > 40:
+ month -= 40
+ if individual_digits < 500:
+ year += 1900
+ elif 500 <= individual_digits < 750 and year >= 54:
+ year += 1800
+ elif 500 <= individual_digits < 1000 and year < 40:
+ year += 2000
+ elif 900 <= individual_digits < 1000 and year >= 40:
+ year += 1900
+ else:
+ # The birth century falls outside all defined ranges.
+ raise InvalidComponent('The birthdate century cannot be determined')
+ try:
+ return datetime.date(year, month, day)
+ except ValueError:
+ raise InvalidComponent('The number does not contain valid birth date information.')
+
+
def validate(number):
"""Check if the number is a valid birth number."""
number = compact(number)
@@ -83,6 +122,9 @@ def validate(number):
raise InvalidChecksum()
if number[-1] != calc_check_digit2(number):
raise InvalidChecksum()
+ if get_birth_date(number) > datetime.date.today():
+ raise InvalidComponent(
+ 'The birth date information is valid, but this person has not been born yet.')
return number
diff --git a/tests/test_no_fodselsnummer.doctest b/tests/test_no_fodselsnummer.doctest
index abec35ef..bca21cf8 100644
--- a/tests/test_no_fodselsnummer.doctest
+++ b/tests/test_no_fodselsnummer.doctest
@@ -2,6 +2,7 @@ test_no_fodselsnummer.doctest - more detailed doctests for stdnum.no.fodselsnumm
Copyright (C) 2018 Ilya Vihtinsky
Copyright (C) 2018 Arthur de Jong
+Copyright (C) 2020 Leon Sandøy
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -40,13 +41,13 @@ These numbers should be detected as male or female.
The last two check digits are validated independently of each other.
->>> fodselsnummer.is_valid('42485176432')
+>>> fodselsnummer.is_valid('26111593816')
True
->>> fodselsnummer.is_valid('42485176431') # only change last digit
+>>> fodselsnummer.is_valid('26111593817') # only change last digit
False
->>> fodselsnummer.is_valid('42485176412') # only change first digit
+>>> fodselsnummer.is_valid('26111593826') # only change first digit
False
->>> fodselsnummer.is_valid('42485176416') # change first, correct second
+>>> fodselsnummer.is_valid('26111593875') # change first, correct second
False
@@ -62,50 +63,56 @@ Traceback (most recent call last):
InvalidFormat: ...
-These have been found online and should all be valid numbers.
+The birth date can be extracted from the number:
+
+>>> fodselsnummer.get_birth_date('11111598403')
+datetime.date(2015, 11, 11)
+>>> fodselsnummer.get_birth_date('151086-95088')
+datetime.date(1986, 10, 15)
+>>> fodselsnummer.get_birth_date('180615 92527')
+datetime.date(2015, 6, 18)
+>>> fodselsnummer.get_birth_date('10 04 87 44 732')
+datetime.date(1987, 4, 10)
+>>> fodselsnummer.get_birth_date('13-04-99-58441')
+datetime.date(1899, 4, 13)
+
+
+Invalid dates are rejected:
+
+>>> fodselsnummer.validate('19575770838')
+Traceback (most recent call last):
+ ...
+InvalidComponent: The number does not contain valid birth date information.
+>>> fodselsnummer.get_birth_date('45014054018')
+Traceback (most recent call last):
+ ...
+InvalidComponent: The birthdate century cannot be determined
+>>> fodselsnummer.get_birth_date('82314251342')
+Traceback (most recent call last):
+ ...
+InvalidComponent: This number is an FH-number, and does not contain birth date information by design.
+>>> fodselsnummer.validate('19102270846')
+Traceback (most recent call last):
+ ...
+InvalidComponent: The birth date information is valid, but this person has not been born yet.
+
+
+These should all be valid numbers.
>>> numbers = '''
...
-... 11027794191
-... 11051996811
-... 19575770838
-... 21918484865
-... 24396859900
-... 27213364885
-... 27389446152
-... 30383131118
-... 30777674125
-... 31042639152
-... 34831582121
-... 39043009846
-... 40070897972
-... 40673759612
-... 42115114470
-... 42485176432
-... 42957044500
-... 44207789809
-... 45014054018
-... 46929323343
-... 50067834221
-... 56403643756
-... 56653047547
-... 63282310041
-... 68413152112
-... 70031073454
-... 70341666064
-... 70624830529
-... 71494457037
-... 71946503120
-... 75442702381
-... 79189404641
-... 79318270827
-... 82938389280
-... 83814827871
-... 89829529360
-... 92782833709
-... 95700625908
-... 96517753502
-... 98576936818
+... 100487 45526
+... 10048744732
+... 10048745364
+... 111115984-03
+... 151086-95088
+... 18-06-15-92527
+... 231140-38547
+... 23114048690
+... 26 11 15 940 14
+... 26111593816
+... 26111594286
+... 26111594448
...
... '''
>>> [x for x in numbers.splitlines() if x and not fodselsnummer.is_valid(x)]
From 69d22e9e7ff574d4f510269e589dafa45132047f Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:21:32 +0100
Subject: [PATCH 007/296] Add missing vat alias for Brazil
---
stdnum/br/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/br/__init__.py b/stdnum/br/__init__.py
index 4b9e6474..3b2d22fa 100644
--- a/stdnum/br/__init__.py
+++ b/stdnum/br/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Brazilian numbers."""
+from stdnum.br import cnpj as vat # noqa: F401
From 9be7deeaf400858dc00118d274b4cf4d19c60858 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:22:12 +0100
Subject: [PATCH 008/296] Add missing vat alias for Costa Rica
---
stdnum/cr/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/cr/__init__.py b/stdnum/cr/__init__.py
index 5718342a..d9b149a8 100644
--- a/stdnum/cr/__init__.py
+++ b/stdnum/cr/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Costa Rican numbers."""
+from stdnum.cr import cpj as vat # noqa: F401
From fcbe159119e105af796674f4a2ddd37489031ccb Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:22:32 +0100
Subject: [PATCH 009/296] Add missing vat alias for Peru
---
stdnum/pe/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/pe/__init__.py b/stdnum/pe/__init__.py
index 4d92e64b..80bbd529 100644
--- a/stdnum/pe/__init__.py
+++ b/stdnum/pe/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Peruvian numbers."""
+from stdnum.pe import ruc as vat # noqa: F401
From 84ee720fd2d8403de5f49c54fc41bfcb67a78f78 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:22:47 +0100
Subject: [PATCH 010/296] Add missing vat alias for Turkey
---
stdnum/tr/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/tr/__init__.py b/stdnum/tr/__init__.py
index c5fa2f81..ebb92d35 100644
--- a/stdnum/tr/__init__.py
+++ b/stdnum/tr/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Turkish numbers."""
+from stdnum.tr import vkn as vat # noqa: F401
From 642908032012baf200ab227803982730c6d4b083 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:23:04 +0100
Subject: [PATCH 011/296] Add missing vat alias for Canada
---
stdnum/ca/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/ca/__init__.py b/stdnum/ca/__init__.py
index bb4db362..5d44d1e4 100644
--- a/stdnum/ca/__init__.py
+++ b/stdnum/ca/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Canadian numbers."""
+from stdnum.ca import bn as vat # noqa: F401
From ebe7e1012ddc1286d61de5c5a565aff9cd4faedf Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 15:23:16 +0100
Subject: [PATCH 012/296] Add missing vat alias for Japan
---
stdnum/jp/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/stdnum/jp/__init__.py b/stdnum/jp/__init__.py
index 12751aa0..9b99e0e9 100644
--- a/stdnum/jp/__init__.py
+++ b/stdnum/jp/__init__.py
@@ -19,3 +19,4 @@
# 02110-1301 USA
"""Collection of Japanese numbers."""
+from stdnum.jp import cn as vat # noqa: F401
From 60139a8f862f8a40bed2ed746c4402366f238aff Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 7 Mar 2020 23:07:25 +0100
Subject: [PATCH 013/296] =?UTF-8?q?Add=20Bellarus=20=D0=A3=D0=9D=D0=9F=20n?=
=?UTF-8?q?umber?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This also adds a function to do an online lookup of the number.
Closes https://github.com/arthurdejong/python-stdnum/issues/196
---
stdnum/by/__init__.py | 24 ++++++
stdnum/by/portal.nalog.gov.by.crt | 47 +++++++++++
stdnum/by/unp.py | 129 ++++++++++++++++++++++++++++++
tests/test_by_unp.doctest | 97 ++++++++++++++++++++++
tests/test_by_unp.py | 63 +++++++++++++++
5 files changed, 360 insertions(+)
create mode 100644 stdnum/by/__init__.py
create mode 100644 stdnum/by/portal.nalog.gov.by.crt
create mode 100644 stdnum/by/unp.py
create mode 100644 tests/test_by_unp.doctest
create mode 100644 tests/test_by_unp.py
diff --git a/stdnum/by/__init__.py b/stdnum/by/__init__.py
new file mode 100644
index 00000000..893f3864
--- /dev/null
+++ b/stdnum/by/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of Belarusian numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of Belarusian numbers."""
+
+# provide aliases
+from stdnum.by import unp as vat # noqa: F401
diff --git a/stdnum/by/portal.nalog.gov.by.crt b/stdnum/by/portal.nalog.gov.by.crt
new file mode 100644
index 00000000..edb4954e
--- /dev/null
+++ b/stdnum/by/portal.nalog.gov.by.crt
@@ -0,0 +1,47 @@
+-----BEGIN CERTIFICATE-----
+MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
+SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
+GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
+q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
+SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
+Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
+a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
+/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
+AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
+CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
+bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
+c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
+VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
+ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
+MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
+Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
+AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
+uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
+wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
+X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
+PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
+KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
+PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
+Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
+rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
+OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
+xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
+7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
+aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
+SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
+ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
+AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
+R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
+JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
+Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
+-----END CERTIFICATE-----
diff --git a/stdnum/by/unp.py b/stdnum/by/unp.py
new file mode 100644
index 00000000..f7f144a9
--- /dev/null
+++ b/stdnum/by/unp.py
@@ -0,0 +1,129 @@
+# unp.py - functions for handling Belarusian UNP numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""УНП, UNP (Учетный номер плательщика, the Bellarus VAT number).
+
+The УНП (UNP) or Учетный номер плательщика (Uchetniy nomer platel'shika,
+Payer account number) is issued to organisations and individuals for tax
+purposes. The number consists of 9 digits (numeric for organisations,
+alphanumeric for individuals) and contains a region identifier, a serial per
+region and a check digit.
+
+More information:
+
+* https://be.wikipedia.org/wiki/Уліковы_нумар_плацельшчыка
+* http://pravo.levonevsky.org/bazaby09/sbor37/text37892/index3.htm
+
+>>> validate('200988541')
+'200988541'
+>>> validate('УНП MA1953684')
+'MA1953684'
+>>> validate('200988542')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits, to_unicode
+
+
+# Mapping of Cyrillic letters to Latin letters
+_cyrillic_to_latin = dict(zip(
+ u'АВЕКМНОРСТ',
+ u'ABEKMHOPCT',
+))
+
+
+def compact(number):
+ """Convert the number to the minimal representation. This strips the
+ number of any valid separators and removes surrounding whitespace."""
+ number = clean(number, ' ').upper().strip()
+ for prefix in ('УНП', u'УНП', 'UNP', u'UNP'):
+ if type(number) == type(prefix) and number.startswith(prefix):
+ number = number[len(prefix):]
+ # Replace Cyrillic letters with Latin letters
+ cleaned = ''.join(_cyrillic_to_latin.get(x, x) for x in to_unicode(number))
+ if type(cleaned) != type(number): # pragma: no cover (Python2 only)
+ cleaned = cleaned.encode('utf-8')
+ return cleaned
+
+
+def calc_check_digit(number):
+ """Calculate the check digit for the number."""
+ number = compact(number)
+ alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ weights = (29, 23, 19, 17, 13, 7, 5, 3)
+ if not isdigits(number):
+ number = number[0] + str('ABCEHKMOPT'.index(number[1])) + number[2:]
+ c = sum(w * alphabet.index(n) for w, n in zip(weights, number)) % 11
+ if c > 9:
+ raise InvalidChecksum()
+ return str(c)
+
+
+def validate(number):
+ """Check if the number is a valid number. This checks the length,
+ formatting and check digit."""
+ number = compact(number)
+ if len(number) != 9:
+ raise InvalidLength()
+ if not isdigits(number[2:]):
+ raise InvalidFormat()
+ if not isdigits(number[:2]) and not all(x in 'ABCEHKMOPT' for x in number[:2]):
+ raise InvalidFormat()
+ if number[0] not in '1234567ABCEHKM':
+ raise InvalidComponent()
+ if number[-1] != calc_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def check_nalog(number, timeout=30): # pragma: no cover (not part of normal test suite)
+ """Retrieve registration information from the portal.nalog.gov.by web site.
+
+ This basically returns the JSON response from the web service as a dict.
+ Will return ``None`` if the number is invalid or unknown.
+ """
+ # this function isn't automatically tested because it would require
+ # network access for the tests and unnecessarily load the web service
+ import requests
+ from pkg_resources import resource_filename
+ # Since the nalog.gov.by web site currently provides an incomplete
+ # certificate chain, we provide our own.
+ certificate = resource_filename(__name__, 'portal.nalog.gov.by.crt')
+ response = requests.get(
+ 'https://www.portal.nalog.gov.by/grp/getData',
+ params={
+ 'unp': compact(number),
+ 'charset': 'UTF-8',
+ 'type': 'json'},
+ timeout=timeout,
+ verify=certificate)
+ if response.ok:
+ return response.json()['ROW']
diff --git a/tests/test_by_unp.doctest b/tests/test_by_unp.doctest
new file mode 100644
index 00000000..6c2b8a45
--- /dev/null
+++ b/tests/test_by_unp.doctest
@@ -0,0 +1,97 @@
+test_by_unp.doctest - more detailed doctests for stdnum.by.unp module
+
+Copyright (C) 2020 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.by.unp. It
+tries to cover more corner cases and detailed functionality that is not
+really useful as module documentation.
+
+>>> from stdnum.by import unp
+>>> from stdnum.exceptions import *
+
+
+Tests for some corner cases.
+
+>>> unp.validate('591705582')
+'591705582'
+>>> unp.validate('УНП 591705582')
+'591705582'
+>>> str(unp.validate(u'\u0423\u041d\u041f 591705582'))
+'591705582'
+>>> unp.validate('UNP 591705582')
+'591705582'
+>>> unp.validate('5917DDD82') # letters in wrong places
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> unp.validate('991705588') # first digit is unknown region
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> unp.validate('M01953684') # if first digit is letter, so should the second
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> unp.validate('7A1953689') # if second digit is letter, so should the first
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> unp.validate('МА1953684') # Cyrillic letters will be translated to Latin
+'MA1953684'
+
+
+The check digit cannot be 10:
+
+>>> unp.calc_check_digit('711953681')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 100217336
+... 100693551
+... 100864035
+... 101288529
+... 101541947
+... 190658169
+... 190960352
+... 191453533
+... 191682495
+... 191767445
+... 191827058
+... 192035780
+... 192345153
+... 192988109
+... 200019773
+... 290380347
+... 400051902
+... 490127567
+... 500037201
+... 591705582
+... 690314863
+... 691631805
+... 791022114
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not unp.is_valid(x)]
+[]
diff --git a/tests/test_by_unp.py b/tests/test_by_unp.py
new file mode 100644
index 00000000..229b0344
--- /dev/null
+++ b/tests/test_by_unp.py
@@ -0,0 +1,63 @@
+# test_by_unp.py - online validation tests
+# coding: utf-8
+#
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+# This is a separate test file because it should not be run regularly
+# because it could negatively impact the online service.
+
+"""Extra tests for the stdnum.by.unp module."""
+
+import os
+import unittest
+
+from stdnum.by import unp
+
+
+@unittest.skipIf(
+ not os.environ.get('ONLINE_TESTS'),
+ 'Do not overload online services')
+class TestNalog(unittest.TestCase):
+ """Test the web services provided by the portal.nalog.gov.by web site."""
+
+ def test_check_nalog(self):
+ """Test stdnum.by.unp.check_nalog()"""
+ # Test a normal valid number
+ result = unp.check_nalog('191682495')
+ self.assertDictEqual(
+ result,
+ {
+ 'CKODSOST': '1',
+ 'DLIKV': None,
+ 'DREG': '08.07.2011',
+ 'NMNS': '104',
+ 'VKODS': 'Действующий',
+ 'VLIKV': None,
+ 'VMNS': 'Инспекция МНС по Московскому району г.Минска ',
+ 'VNAIMK': 'Частное предприятие "КРИОС ГРУПП"',
+ 'VNAIMP': 'Частное производственное унитарное предприятие "КРИОС ГРУПП"',
+ 'VPADRES': 'г. Минск,ул. Уманская, д.54, пом. 152',
+ 'VUNP': '191682495',
+ })
+ # Check that result has at least these keys
+ keys = ['VUNP', 'VNAIMP', 'VNAIMK', 'DREG', 'CKODSOST', 'VKODS']
+ self.assertEqual([key for key in keys if key in result], keys)
+ self.assertEqual(result['VUNP'], '191682495')
+ # Test invalid number
+ result = unp.check_nalog('771681495')
+ self.assertIsNone(result)
From d09ed521f68c60c7a28948c5fcbf9faa4fcc073e Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 8 Mar 2020 18:40:25 +0100
Subject: [PATCH 014/296] Use zip() for applying weights in check algorithms
---
stdnum/lv/pvn.py | 2 +-
stdnum/ru/inn.py | 9 +++------
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/stdnum/lv/pvn.py b/stdnum/lv/pvn.py
index 03db0f4a..006b5c0c 100644
--- a/stdnum/lv/pvn.py
+++ b/stdnum/lv/pvn.py
@@ -70,7 +70,7 @@ def calc_check_digit_pers(number):
should not have the check digit included."""
# note that this algorithm has not been confirmed by an independent source
weights = (10, 5, 8, 4, 2, 1, 6, 3, 7, 9)
- check = 1 + sum(weights[i] * int(n) for i, n in enumerate(number))
+ check = 1 + sum(w * int(n) for w, n in zip(weights, number))
return str(check % 11 % 10)
diff --git a/stdnum/ru/inn.py b/stdnum/ru/inn.py
index db30806a..58cc2167 100644
--- a/stdnum/ru/inn.py
+++ b/stdnum/ru/inn.py
@@ -51,18 +51,15 @@ def compact(number):
def calc_company_check_digit(number):
"""Calculate the check digit for the 10-digit ИНН for organisations."""
weights = (2, 4, 10, 3, 5, 9, 4, 6, 8)
- return str(sum(weights[i] * int(n)
- for i, n in enumerate(number[:9])) % 11 % 10)
+ return str(sum(w * int(n) for w, n in zip(weights, number)) % 11 % 10)
def calc_personal_check_digits(number):
"""Calculate the check digits for the 12-digit personal ИНН."""
weights = (7, 2, 4, 10, 3, 5, 9, 4, 6, 8)
- d1 = str(sum(weights[i] * int(n)
- for i, n in enumerate(number[:10])) % 11 % 10)
+ d1 = str(sum(w * int(n) for w, n in zip(weights, number)) % 11 % 10)
weights = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8)
- d2 = str(sum(weights[i] * int(n)
- for i, n in enumerate(number[:10] + d1)) % 11 % 10)
+ d2 = str(sum(w * int(n) for w, n in zip(weights, number[:10] + d1)) % 11 % 10)
return d1 + d2
From f7b968c986ad6163f92e1c72da20050f961f8954 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Mon, 9 Mar 2020 21:05:59 +0100
Subject: [PATCH 015/296] Fix typo
Thanks @unho
---
stdnum/by/unp.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/stdnum/by/unp.py b/stdnum/by/unp.py
index f7f144a9..14b7a0ec 100644
--- a/stdnum/by/unp.py
+++ b/stdnum/by/unp.py
@@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
-"""УНП, UNP (Учетный номер плательщика, the Bellarus VAT number).
+"""УНП, UNP (Учетный номер плательщика, the Belarus VAT number).
The УНП (UNP) or Учетный номер плательщика (Uchetniy nomer platel'shika,
Payer account number) is issued to organisations and individuals for tax
From 843382165bc81471b7b037521be9712455412fb3 Mon Sep 17 00:00:00 2001
From: FabrizioMontanari
Date: Tue, 3 Mar 2020 18:16:45 +0100
Subject: [PATCH 016/296] Add Italian AIC codes
Closes https://github.com/arthurdejong/python-stdnum/pull/193
---
stdnum/it/aic.py | 132 ++++++++++++++++++++++++++++++++++++++
tests/test_it_aic.doctest | 128 ++++++++++++++++++++++++++++++++++++
2 files changed, 260 insertions(+)
create mode 100644 stdnum/it/aic.py
create mode 100644 tests/test_it_aic.doctest
diff --git a/stdnum/it/aic.py b/stdnum/it/aic.py
new file mode 100644
index 00000000..4c6afc76
--- /dev/null
+++ b/stdnum/it/aic.py
@@ -0,0 +1,132 @@
+# aic.py - functions for handling Italian AIC codes
+# coding: utf-8
+#
+# This file is based on pyAIC Python library.
+# https://github.com/FabrizioMontanari/pyAIC
+#
+# Copyright (C) 2020 Fabrizio Montanari
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""AIC (Italian code for identification of drugs).
+
+AIC codes are used to identify drugs allowed to be sold in Italy. Codes are
+issued by the Italian Drugs Agency (AIFA, Agenzia Italiana del Farmaco), the
+government authority responsible for drugs regulation in Italy.
+
+The number consists of 9 digits and includes a check digit.
+
+More information:
+
+* https://www.gazzettaufficiale.it/do/atto/serie_generale/caricaPdf?cdimg=14A0566800100010110001&dgu=2014-07-18&art.dataPubblicazioneGazzetta=2014-07-18&art.codiceRedazionale=14A05668&art.num=1&art.tiposerie=SG
+
+>>> validate('000307052') # BASE10 format
+'000307052'
+>>> validate('009CVD') # BASE32 format is converted
+'000307052'
+>>> validate_base10('000307052')
+'000307052'
+>>> validate_base32('009CVD')
+'000307052'
+>>> to_base32('000307052')
+'009CVD'
+>>> from_base32('009CVD')
+'000307052'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+# the table of AIC BASE32 allowed chars.
+_base32_alphabet = '0123456789BCDFGHJKLMNPQRSTUVWXYZ'
+
+
+def compact(number):
+ """Convert the number to the minimal representation."""
+ return clean(number, ' ').upper().strip()
+
+
+def from_base32(number):
+ """Convert a BASE32 representation of an AIC to a BASE10 one."""
+ number = compact(number)
+ if not all(x in _base32_alphabet for x in number):
+ raise InvalidFormat()
+ s = sum(_base32_alphabet.index(n) * 32 ** i
+ for i, n in enumerate(reversed(number)))
+ return str(s).zfill(9)
+
+
+def to_base32(number):
+ """Convert a BASE10 representation of an AIC to a BASE32 one."""
+ number = compact(number)
+ if not isdigits(number):
+ raise InvalidFormat()
+ res = ''
+ remainder = int(number)
+ while remainder > 31:
+ res = _base32_alphabet[remainder % 32] + res
+ remainder = remainder // 32
+ res = _base32_alphabet[remainder] + res
+ return res.zfill(6)
+
+
+def calc_check_digit(number):
+ """Calculate the check digit for the BASE10 AIC code."""
+ number = compact(number)
+ weights = (1, 2, 1, 2, 1, 2, 1, 2)
+ return str(sum((x // 10) + (x % 10)
+ for x in (w * int(n) for w, n in zip(weights, number))) % 10)
+
+
+def validate_base10(number):
+ """Check if a string is a valid BASE10 representation of an AIC."""
+ number = compact(number)
+ if len(number) != 9:
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ if number[0] != '0':
+ raise InvalidComponent()
+ if calc_check_digit(number) != number[-1]:
+ raise InvalidChecksum()
+ return number
+
+
+def validate_base32(number):
+ """Check if a string is a valid BASE32 representation of an AIC."""
+ number = compact(number)
+ if len(number) != 6:
+ raise InvalidLength()
+ return validate_base10(from_base32(number))
+
+
+def validate(number):
+ """Check if a string is a valid AIC. BASE10 is the canonical form and
+ is 9 chars long, while BASE32 is 6 chars."""
+ number = compact(number)
+ if len(number) == 6:
+ return validate_base32(number)
+ else:
+ return validate_base10(number)
+
+
+def is_valid(number):
+ """Check if the given string is a valid AIC code."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
diff --git a/tests/test_it_aic.doctest b/tests/test_it_aic.doctest
new file mode 100644
index 00000000..b3f13e4e
--- /dev/null
+++ b/tests/test_it_aic.doctest
@@ -0,0 +1,128 @@
+test_it_aic.doctest - tests for the stdnum.it.aic module
+
+Copyright (C) 2020 Fabrizio Montanari
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.it.aic module.
+
+>>> from stdnum.it import aic
+>>> from stdnum.exceptions import *
+
+
+Some valid codes with their BASE10/BASE32 representations.
+
+>>> aic10_valid = ['000307052', '000307037', '001738032', '001738020', '042645046', '045359015']
+>>> aic32_valid = ['009CVD', '009CUX', '01P19J', '01P194', '18PFKQ', '1C87X7']
+>>> [x for x in aic10_valid + aic32_valid if x and not aic.is_valid(x)]
+[]
+>>> [aic.to_base32(x) for x in aic10_valid] == aic32_valid
+True
+>>> [aic.from_base32(x) for x in aic32_valid] == aic10_valid
+True
+
+
+We offer conversion functions between BASE10 and BASE32 formats.
+
+>>> aic.to_base32('000307037')
+'009CUX'
+>>> aic.from_base32('009CUX')
+'000307037'
+>>> aic.to_base32('009CUX')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> aic.from_base32('009CV$')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+
+
+Check digit calculation corner cases.
+
+>>> aic.calc_check_digit('00030705')
+'2'
+>>> aic.calc_check_digit('010307052')
+'4'
+
+
+Tests for various corner cases.
+
+>>> aic.validate('000307052')
+'000307052'
+>>> aic.validate('00030705.')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> aic.validate('00307052')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> aic.validate('000307053')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> aic.validate(307053) # not a string type
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> aic.validate('100307053') # does not start with 0
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> aic.validate('0003070.3')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> aic.validate('009CVD')
+'000307052'
+>>> aic.validate('09CVD')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> aic.validate('2ZP43F') # BASE10 format does not start with 0
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> aic.validate('009CV$')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+
+
+We can also validate BASE10 or BASE32 format explicitly.
+
+>>> aic.validate_base10('009CVD')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> aic.validate_base32('009CVD1')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> aic.validate_base32('009CVL')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> aic.validate_base32('00$CVD')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> aic.validate_base32('100307052')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
From 273dd5494a525039e5c55d99bbf0835dee3388b9 Mon Sep 17 00:00:00 2001
From: grzekru
Date: Thu, 19 Mar 2020 20:00:32 +0100
Subject: [PATCH 017/296] Use HTTPS instead of HTTP fox VIES lookups
Closes https://github.com/arthurdejong/python-stdnum/issues/204
Closes https://github.com/arthurdejong/python-stdnum/pull/205
---
stdnum/eu/vat.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/stdnum/eu/vat.py b/stdnum/eu/vat.py
index c6d9c94c..d7c6026b 100644
--- a/stdnum/eu/vat.py
+++ b/stdnum/eu/vat.py
@@ -53,7 +53,7 @@
_country_modules = dict()
-vies_wsdl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'
+vies_wsdl = 'https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'
"""The WSDL URL of the VAT Information Exchange System (VIES)."""
From 91ca4dac21c66c50b44b9334287ddc4277991867 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Fri, 20 Mar 2020 17:50:39 +0100
Subject: [PATCH 018/296] Use HTTPS in URLs where possible
---
stdnum/cu/ni.py | 2 +-
stdnum/do/ncf.py | 2 +-
stdnum/do/rnc.py | 2 +-
stdnum/es/ccc.py | 2 +-
stdnum/es/referenciacatastral.py | 2 +-
stdnum/eu/eic.py | 2 +-
stdnum/eu/nace.py | 2 +-
stdnum/fi/hetu.py | 4 ++--
stdnum/fr/nir.py | 2 +-
stdnum/gb/nhs.py | 4 ++--
stdnum/gr/amka.py | 2 +-
stdnum/isil.py | 2 +-
stdnum/issn.py | 2 +-
stdnum/kr/rrn.py | 2 +-
stdnum/mu/nid.py | 2 +-
stdnum/mx/curp.py | 2 +-
stdnum/mx/rfc.py | 2 +-
stdnum/pl/regon.py | 3 +--
18 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/stdnum/cu/ni.py b/stdnum/cu/ni.py
index e9d3d5d8..2202e683 100644
--- a/stdnum/cu/ni.py
+++ b/stdnum/cu/ni.py
@@ -26,7 +26,7 @@
More information:
-* http://www.postdata.club/issues/201609/es-usted-unico-en-cuba.html
+* https://www.postdata.club/issues/201609/es-usted-unico-en-cuba.html
>>> validate('91021027775')
'91021027775'
diff --git a/stdnum/do/ncf.py b/stdnum/do/ncf.py
index d4994de9..a85e4c73 100644
--- a/stdnum/do/ncf.py
+++ b/stdnum/do/ncf.py
@@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
-# Development of this functionality was funded by iterativo | http://iterativo.do
+# Development of this functionality was funded by iterativo | https://iterativo.do
"""NCF (Números de Comprobante Fiscal, Dominican Republic receipt number).
diff --git a/stdnum/do/rnc.py b/stdnum/do/rnc.py
index a6d785f9..6bac651b 100644
--- a/stdnum/do/rnc.py
+++ b/stdnum/do/rnc.py
@@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
-# Development of this functionality was funded by iterativo | http://iterativo.do
+# Development of this functionality was funded by iterativo | https://iterativo.do
"""RNC (Registro Nacional del Contribuyente, Dominican Republic tax number).
diff --git a/stdnum/es/ccc.py b/stdnum/es/ccc.py
index b9e1db17..3306c200 100644
--- a/stdnum/es/ccc.py
+++ b/stdnum/es/ccc.py
@@ -40,7 +40,7 @@
More information:
* https://es.wikipedia.org/wiki/Código_cuenta_cliente
-* http://www.bde.es/bde/es/secciones/servicios/Particulares_y_e/Registros_de_Ent/
+* https://www.bde.es/bde/es/secciones/servicios/Particulares_y_e/Registros_de_Ent/
>>> validate('1234-1234-16 1234567890')
'12341234161234567890'
diff --git a/stdnum/es/referenciacatastral.py b/stdnum/es/referenciacatastral.py
index c4d913cc..8d5ee1fb 100644
--- a/stdnum/es/referenciacatastral.py
+++ b/stdnum/es/referenciacatastral.py
@@ -79,7 +79,7 @@ def format(number):
# The check digit implementation is based on the Javascript
# implementation by Vicente Sancho that can be found at
-# http://trellat.es/validar-la-referencia-catastral-en-javascript/
+# https://trellat.es/validar-la-referencia-catastral-en-javascript/
def _check_digit(number):
"""Calculate a single check digit on the provided part of the number."""
diff --git a/stdnum/eu/eic.py b/stdnum/eu/eic.py
index e6d9419b..63425183 100644
--- a/stdnum/eu/eic.py
+++ b/stdnum/eu/eic.py
@@ -30,7 +30,7 @@
More information:
* https://en.wikipedia.org/wiki/Energy_Identification_Code
-* http://www.eiccodes.eu/
+* https://www.entsoe.eu/data/energy-identification-codes-eic/
>>> validate('22XWATTPLUS----G')
'22XWATTPLUS----G'
diff --git a/stdnum/eu/nace.py b/stdnum/eu/nace.py
index 6c1ced44..91fc2a4a 100644
--- a/stdnum/eu/nace.py
+++ b/stdnum/eu/nace.py
@@ -32,7 +32,7 @@
More information:
* https://en.wikipedia.org/wiki/Statistical_Classification_of_Economic_Activities_in_the_European_Community
-* http://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=LST_NOM_DTL&StrNom=NACE_REV2&StrLanguageCode=EN&IntPcKey=&StrLayoutCode=HIERARCHIC
+* https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=LST_NOM_DTL&StrNom=NACE_REV2&StrLanguageCode=EN&IntPcKey=&StrLayoutCode=HIERARCHIC
>>> validate('A')
'A'
diff --git a/stdnum/fi/hetu.py b/stdnum/fi/hetu.py
index 334985f1..26c538f1 100644
--- a/stdnum/fi/hetu.py
+++ b/stdnum/fi/hetu.py
@@ -23,8 +23,8 @@
"""HETU (Henkilötunnus, Finnish personal identity code).
Module for handling Finnish personal identity codes (HETU, Henkilötunnus).
-See http://www.vaestorekisterikeskus.fi/default.aspx?id=45 for checksum
-calculation details and http://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#hetu1
+See https://www.vaestorekisterikeskus.fi/default.aspx?id=45 for checksum
+calculation details and https://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#hetu1
for historical details.
>>> validate('131052-308T')
diff --git a/stdnum/fr/nir.py b/stdnum/fr/nir.py
index bc02fafb..5f8bf44f 100644
--- a/stdnum/fr/nir.py
+++ b/stdnum/fr/nir.py
@@ -37,7 +37,7 @@
* https://en.wikipedia.org/wiki/INSEE_code
* http://resoo.org/docs/_docs/regles-numero-insee.pdf
* https://fr.wikipedia.org/wiki/Numéro_de_sécurité_sociale_en_France
-* http://xml.insee.fr/schema/nir.html
+* https://xml.insee.fr/schema/nir.html
>>> validate('2 95 10 99 126 111 93')
'295109912611193'
diff --git a/stdnum/gb/nhs.py b/stdnum/gb/nhs.py
index 65e07c78..ac6382d6 100644
--- a/stdnum/gb/nhs.py
+++ b/stdnum/gb/nhs.py
@@ -27,9 +27,9 @@
More information:
* https://en.wikipedia.org/wiki/NHS_number
-* http://www.nhs.uk/NHSEngland/thenhs/records/nhs-number/
+* https://www.nhs.uk/using-the-nhs/about-the-nhs/what-is-an-nhs-number/
* https://digital.nhs.uk/article/301/NHS-Number
-* http://www.datadictionary.nhs.uk/data_dictionary/attributes/n/nhs/nhs_number_de.asp
+* https://www.datadictionary.nhs.uk/data_dictionary/attributes/n/nhs/nhs_number_de.asp
>>> validate('943-476-5870')
'9434765870'
diff --git a/stdnum/gr/amka.py b/stdnum/gr/amka.py
index 867ac8ec..e04efeb4 100644
--- a/stdnum/gr/amka.py
+++ b/stdnum/gr/amka.py
@@ -27,7 +27,7 @@
More information:
-* http://www.amka.gr/tieinai_en.html
+* https://www.amka.gr/tieinai_en.html
>>> validate('01013099997')
'01013099997'
diff --git a/stdnum/isil.py b/stdnum/isil.py
index 00bd65a4..d69c5fcc 100644
--- a/stdnum/isil.py
+++ b/stdnum/isil.py
@@ -40,7 +40,7 @@
More information:
* https://en.wikipedia.org/wiki/ISBT_128
-* http://biblstandard.dk/isil/
+* https://biblstandard.dk/isil/
* https://www.iso.org/standard/57332.html
>>> validate('IT-RM0267')
diff --git a/stdnum/issn.py b/stdnum/issn.py
index fcd88193..10c6af94 100644
--- a/stdnum/issn.py
+++ b/stdnum/issn.py
@@ -29,7 +29,7 @@
More information:
* https://en.wikipedia.org/wiki/International_Standard_Serial_Number
-* http://www.issn.org/
+* https://www.issn.org/
>>> validate('0024-9319')
'00249319'
diff --git a/stdnum/kr/rrn.py b/stdnum/kr/rrn.py
index 35fdb992..b67493cf 100644
--- a/stdnum/kr/rrn.py
+++ b/stdnum/kr/rrn.py
@@ -33,7 +33,7 @@
More information:
-* http://www.law.go.kr/lsSc.do?tabMenuId=tab18&p1=&subMenu=1&nwYn=1§ion=&tabNo=&query=%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%20%EB%B3%B4%ED%98%B8%EB%B2%95
+* http://www.law.go.kr/lsSc.do?tabMenuId=tab18&p1=&subMenu=1&nwYn=1§ion=&tabNo=&query=개인정보+보호법
* https://en.wikipedia.org/wiki/Resident_registration_number
* https://techscience.org/a/2015092901/
diff --git a/stdnum/mu/nid.py b/stdnum/mu/nid.py
index 5af67fd5..fef4193e 100644
--- a/stdnum/mu/nid.py
+++ b/stdnum/mu/nid.py
@@ -35,7 +35,7 @@
More information:
-* http://mnis.govmu.org/English/ID%20Card/Pages/default.aspx
+* https://mnis.govmu.org/English/ID%20Card/Pages/default.aspx
"""
import datetime
diff --git a/stdnum/mx/curp.py b/stdnum/mx/curp.py
index c1ddfd1b..0e05b748 100644
--- a/stdnum/mx/curp.py
+++ b/stdnum/mx/curp.py
@@ -27,7 +27,7 @@
More information:
-* http://en.wikipedia.org/wiki/CURP
+* https://en.wikipedia.org/wiki/CURP
* https://www.gob.mx/curp/
>>> validate('BOXW310820HNERXN09')
diff --git a/stdnum/mx/rfc.py b/stdnum/mx/rfc.py
index 80b3de27..2904ed87 100644
--- a/stdnum/mx/rfc.py
+++ b/stdnum/mx/rfc.py
@@ -37,7 +37,7 @@
More information:
-* http://www.sisi.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc
+* https://www.infomex.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc
* https://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
An online validation service is available at:
diff --git a/stdnum/pl/regon.py b/stdnum/pl/regon.py
index 17b5c685..42f3f6a6 100644
--- a/stdnum/pl/regon.py
+++ b/stdnum/pl/regon.py
@@ -27,8 +27,7 @@
More information:
-* http://bip.stat.gov.pl/en/regon/
-* http://www.stat.gov.pl/bip/regon_ENG_HTML.htm
+* https://bip.stat.gov.pl/en/regon/
* https://wyszukiwarkaregon.stat.gov.pl/appBIR/index.aspx
>>> validate('192598184')
From 982322ac7477ef3ab64efb4966f750d9c7d0f0b3 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 18 Apr 2020 13:22:53 +0200
Subject: [PATCH 019/296] Avoid newest Sphinx
Newer versions of Sphinx treat underscores differently when used in
arguments to automodule causing problems in generating documentation for
the stdnum.in_.aadhaar, stdnum.in_.pan, stdnum.is_.kennitala and
stdnum.is_.vsk modules.
---
tox.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tox.ini b/tox.ini
index 645865db..ad60f8bc 100644
--- a/tox.ini
+++ b/tox.ini
@@ -34,5 +34,5 @@ deps = flake8
commands = flake8 stdnum tests update *.py
[testenv:docs]
-deps = Sphinx
+deps = Sphinx<3
commands = sphinx-build -N -b html docs {envtmpdir}/sphinx -W
From ff866189643c8bac6e60e456973d805478b56091 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 18 Apr 2020 13:57:54 +0200
Subject: [PATCH 020/296] Resolve Travis configuration warnings
---
.travis.yml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 436ddfb2..c0f779b0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,7 @@
language: python
+os: linux
+dist: xenial
cache: pip
-sudo: false
python:
- 2.7
- 3.4
@@ -9,7 +10,7 @@ python:
- 3.7
- 3.8
- pypy
-matrix:
+jobs:
include:
- python: 2.6
dist: trusty
From 417b50028255e54097f2a0bf49f8a9f0f7064705 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 19 Apr 2020 15:05:49 +0200
Subject: [PATCH 021/296] Flake 8 fixes
---
setup.cfg | 4 +++
setup.py | 86 ++++++++++++++++++++++++++++---------------------------
tox.ini | 2 +-
3 files changed, 49 insertions(+), 43 deletions(-)
diff --git a/setup.cfg b/setup.cfg
index 010134a6..da1f59ac 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -45,3 +45,7 @@ max-line-length = 120
[isort]
lines_after_imports = 2
multi_line_output = 4
+known_third_party =
+ lxml
+ requests
+ xlrd
diff --git a/setup.py b/setup.py
index c5eff046..f340218a 100755
--- a/setup.py
+++ b/setup.py
@@ -39,45 +39,47 @@
with open(os.path.join(base_dir, 'README'), 'rb') as fp:
long_description = fp.read().decode('utf-8')
-setup(name='python-stdnum',
- version=stdnum.__version__,
- description='Python module to handle standardized numbers and codes',
- long_description=long_description,
- author='Arthur de Jong',
- author_email='arthur@arthurdejong.org',
- url='https://arthurdejong.org/python-stdnum/',
- license='LGPL',
- classifiers=[
- 'Development Status :: 5 - Production/Stable',
- 'Intended Audience :: Developers',
- 'Intended Audience :: Financial and Insurance Industry',
- 'Intended Audience :: Information Technology',
- 'Intended Audience :: Telecommunications Industry',
- 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
- 'Operating System :: OS Independent',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.6',
- 'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.4',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: Implementation :: PyPy',
- 'Topic :: Office/Business :: Financial',
- 'Topic :: Software Development :: Libraries :: Python Modules',
- 'Topic :: Text Processing :: General',
- ],
- packages=find_packages(),
- package_data={'': ['*.dat']},
- extras_require={
- # The SOAP feature is only required for a number of online tests
- # of numbers such as the EU VAT VIES lookup, the Dominican Republic
- # DGII services or the Turkish T.C. Kimlik validation.
- 'SOAP': ['zeep'], # recommended implementation
- 'SOAP-ALT': ['suds'], # but this should also work
- 'SOAP-FALLBACK': ['PySimpleSOAP'], # this is a fallback
- },
- )
+setup(
+ name='python-stdnum',
+ version=stdnum.__version__,
+ description='Python module to handle standardized numbers and codes',
+ long_description=long_description,
+ author='Arthur de Jong',
+ author_email='arthur@arthurdejong.org',
+ url='https://arthurdejong.org/python-stdnum/',
+ license='LGPL',
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: Financial and Insurance Industry',
+ 'Intended Audience :: Information Technology',
+ 'Intended Audience :: Telecommunications Industry',
+ 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 2.6',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: Implementation :: PyPy',
+ 'Topic :: Office/Business :: Financial',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: Text Processing :: General',
+ ],
+ packages=find_packages(),
+ install_requires=[],
+ package_data={'': ['*.dat']},
+ extras_require={
+ # The SOAP feature is only required for a number of online tests
+ # of numbers such as the EU VAT VIES lookup, the Dominican Republic
+ # DGII services or the Turkish T.C. Kimlik validation.
+ 'SOAP': ['zeep'], # recommended implementation
+ 'SOAP-ALT': ['suds'], # but this should also work
+ 'SOAP-FALLBACK': ['PySimpleSOAP'], # this is a fallback
+ },
+)
diff --git a/tox.ini b/tox.ini
index ad60f8bc..98e2735f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -31,7 +31,7 @@ deps = flake8
flake8-tidy-imports
flake8-tuple
pep8-naming
-commands = flake8 stdnum tests update *.py
+commands = flake8 stdnum tests update setup.py
[testenv:docs]
deps = Sphinx<3
From e49e0e9e213b36b4debfcefbf1edcfdb554432ea Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 25 Apr 2020 20:41:19 +0200
Subject: [PATCH 022/296] Document function return behaviour
---
docs/index.rst | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/docs/index.rst b/docs/index.rst
index 020314fa..8eb0ea96 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -16,24 +16,33 @@ Most of the number format modules implement the following functions:
:mod:`an exception <.exceptions>` is raised that indicates the type of
error.
+ :raises ValidationError: When the specified number is invalid
+ :returns: str -- A compact (canonical) representation of the number
+
.. function:: module.is_valid(number)
Return either ``True`` or ``False`` depending on whether the passed number
is in any supported and valid form and passes all embedded checks of the
number. This function should never raise an exception.
+ :returns: bool -- ``True`` if validated, ``False`` otherwise
+
.. function:: module.compact(number)
Return a compact representation of the number or code. This function
generally does not do validation but may raise exceptions for wildly
invalid numbers.
+ :returns: str -- The compacted number
+
.. function:: module.format(number)
Return a formatted version of the number in the preferred format.
This function generally expects to be passed a valid number or code and
may raise exceptions for invalid numbers.
+ :returns: str -- A formatted number
+
The check digit modules generally also provide the following functions:
.. function:: module.checksum(number)
@@ -42,11 +51,15 @@ The check digit modules generally also provide the following functions:
number that can be used to determine whether the provided number is
valid. It depends on the algorithm which checksum is considered valid.
+ :returns: int -- A numeric checksum over the number
+
.. function:: module.calc_check_digit(number)
Calculate the check digit that should be added to the number to make it
valid.
+ :returns: str -- A check digit that can be appended
+
Apart from the above, the modules may add extra parsing, validation or
conversion functions.
From 356a729bf31ad8e971f3049523ddf4498dd999ca Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Tue, 31 Mar 2020 22:15:35 +0200
Subject: [PATCH 023/296] Add Israeli TIN number
Closes https://github.com/arthurdejong/python-stdnum/pull/208
Closes https://github.com/arthurdejong/python-stdnum/issues/107
---
stdnum/il/__init__.py | 3 +
stdnum/il/hp.py | 87 +++++++++++++
tests/test_il_hp.doctest | 257 +++++++++++++++++++++++++++++++++++++++
3 files changed, 347 insertions(+)
create mode 100644 stdnum/il/hp.py
create mode 100644 tests/test_il_hp.doctest
diff --git a/stdnum/il/__init__.py b/stdnum/il/__init__.py
index 91a474ef..b002751c 100644
--- a/stdnum/il/__init__.py
+++ b/stdnum/il/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Israeli numbers."""
+
+# provide aliases
+from stdnum.il import hp as vat # noqa: F401
diff --git a/stdnum/il/hp.py b/stdnum/il/hp.py
new file mode 100644
index 00000000..28386c5e
--- /dev/null
+++ b/stdnum/il/hp.py
@@ -0,0 +1,87 @@
+# hp.py - functions for handling Israeli company numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Company Number (מספר חברה, or short ח.פ. Israeli company number).
+
+It consists of nine digits and includes a check digit. For companies
+the first digit is a 5. The first two digits identify the type of
+company.
+
+More information:
+
+* https://he.wikipedia.org/wiki/תאגיד#מספר_רישום_התאגיד
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Israel-TIN.pdf
+* https://wiki.scn.sap.com/wiki/display/CRM/Israel
+
+>>> validate('516179157')
+'516179157'
+>>> format(' 5161 79157 ')
+'516179157'
+>>> validate('516179150') # invalid check digit
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> validate('490154203237518') # longer than 9 digits
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> validate('416179157')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+"""
+
+from stdnum import luhn
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation. This strips the
+ number of any separators and removes surrounding whitespace."""
+ return clean(number, ' -').strip()
+
+
+def validate(number):
+ """Check if the number provided is a valid ID. This checks the length,
+ formatting and check digit."""
+ number = compact(number)
+ if len(number) != 9:
+ raise InvalidLength()
+ if not isdigits(number) or int(number) <= 0:
+ raise InvalidFormat()
+ if number[0] != '5':
+ raise InvalidComponent()
+ luhn.validate(number)
+ return number
+
+
+def is_valid(number):
+ """Check if the number provided is a valid ID. This checks the length,
+ formatting and check digit."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ return compact(number)
diff --git a/tests/test_il_hp.doctest b/tests/test_il_hp.doctest
new file mode 100644
index 00000000..baaecc39
--- /dev/null
+++ b/tests/test_il_hp.doctest
@@ -0,0 +1,257 @@
+test_il_hp.doctest - more detailed doctests for stdnum.il.hp module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.il.hp module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.il import hp
+
+
+Basic tests
+
+>>> hp.validate('516179157')
+'516179157'
+>>> hp.validate('1234')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> hp.validate('516179XXX')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> hp.validate('416179157')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> hp.validate('516179150')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> hp.format(' 5161 79157 ')
+'516179157'
+
+
+>>> numbers = '''
+...
+... 500107420
+... 500261359
+... 510361371
+... 510771314
+... 510790256
+... 510923402
+... 510952328
+... 510976103
+... 511100554
+... 511193815
+... 511216129
+... 511221947
+... 511237018
+... 511240350
+... 511610966
+... 511622375
+... 511770281
+... 511772840
+... 511773897
+... 511895286
+... 511930828
+... 512053521
+... 512053968
+... 512131228
+... 512244245
+... 512440934
+... 512476789
+... 512506643
+... 512516014
+... 512629254
+... 512662628
+... 512708074
+... 512708363
+... 512740861
+... 512749532
+... 512802174
+... 512872359
+... 512899667
+... 512946948
+... 512947276
+... 512951526
+... 512962010
+... 512976028
+... 513070623
+... 513079582
+... 513107334
+... 513174813
+... 513302588
+... 513374355
+... 513403857
+... 513444224
+... 513466532
+... 513544833
+... 513565473
+... 513606582
+... 513688481
+... 513701169
+... 513704999
+... 513724187
+... 513771519
+... 513795948
+... 513797027
+... 513853085
+... 513879205
+... 513906420
+... 514078138
+... 514125798
+... 514174341
+... 514240761
+... 514295062
+... 514306844
+... 514307107
+... 514350024
+... 514462282
+... 514471127
+... 514486182
+... 514513357
+... 514521996
+... 514536648
+... 514563469
+... 514607290
+... 514643519
+... 514697358
+... 514770494
+... 514776426
+... 514943174
+... 514966993
+... 515049757
+... 515098671
+... 515110047
+... 515124386
+... 515132082
+... 515170546
+... 515177129
+... 515225233
+... 515259430
+... 515262475
+... 515277440
+... 515278380
+... 515434041
+... 515487668
+... 515558096
+... 515560217
+... 515613776
+... 515985232
+... 515986198
+... 516087152
+... 516091998
+... 516092095
+... 516093150
+... 516093549
+... 516093739
+... 516095544
+... 516095742
+... 516096245
+... 516096351
+... 516096393
+... 516097615
+... 516099157
+... 516099611
+... 516102001
+... 516102266
+... 516104148
+... 516104817
+... 516105012
+... 516105111
+... 516105277
+... 516106002
+... 516106937
+... 516106945
+... 516108453
+... 516109626
+... 516110418
+... 516110913
+... 516112745
+... 516113008
+... 516113461
+... 516113693
+... 516113768
+... 516114865
+... 516114972
+... 516115003
+... 516116340
+... 516117900
+... 516119377
+... 516120169
+... 516120235
+... 516120557
+... 516121530
+... 516121761
+... 516122413
+... 516122645
+... 516123668
+... 516125135
+... 516125424
+... 516125499
+... 516126760
+... 516127941
+... 516128204
+... 516128493
+... 516132602
+... 516132867
+... 516133030
+... 516133113
+... 516133709
+... 516133774
+... 516134012
+... 516134277
+... 516134319
+... 516134392
+... 516134715
+... 516134764
+... 516135977
+... 516136041
+... 516136074
+... 516136264
+... 516136918
+... 516137213
+... 516137270
+... 516137536
+... 516137734
+... 516137775
+... 516138179
+... 516138930
+... 516139060
+... 520037359
+... 520037458
+... 530216845
+... 540165982
+... 540167285
+... 540242070
+... 540256468
+... 540279544
+... 540281359
+... 550011498
+... 550211270
+... 550224299
+... 550240824
+... 550242861
+... 550265193
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not hp.is_valid(x)]
+[]
From 54e2e8fda313c1cb47c4cfdc71f42be272fe74e4 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Fri, 10 Apr 2020 18:17:19 +0200
Subject: [PATCH 024/296] Add support for El Salvador TIN number
Closes https://github.com/arthurdejong/python-stdnum/issues/133
Closes https://github.com/arthurdejong/python-stdnum/pull/215
---
stdnum/sv/__init__.py | 24 ++++
stdnum/sv/nit.py | 121 ++++++++++++++++++
tests/test_sv_nit.doctest | 263 ++++++++++++++++++++++++++++++++++++++
3 files changed, 408 insertions(+)
create mode 100644 stdnum/sv/__init__.py
create mode 100644 stdnum/sv/nit.py
create mode 100644 tests/test_sv_nit.doctest
diff --git a/stdnum/sv/__init__.py b/stdnum/sv/__init__.py
new file mode 100644
index 00000000..dd63b082
--- /dev/null
+++ b/stdnum/sv/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of El Salvador numbers
+# coding: utf-8
+#
+# Copyright (C) 2019 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of El Salvador numbers."""
+
+# provide aliases
+from stdnum.sv import nit as vat # noqa: F401
diff --git a/stdnum/sv/nit.py b/stdnum/sv/nit.py
new file mode 100644
index 00000000..ed2f5f9f
--- /dev/null
+++ b/stdnum/sv/nit.py
@@ -0,0 +1,121 @@
+# nit.py - functions for handling El Salvador NIT numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""NIT (Número de Identificación Tributaria, El Salvador tax number).
+
+This number consists of 14 digits, usually separated into four groups
+using hyphens to make it easier to read, like XXXX-XXXXXX-XXX-X.
+
+The first four digits indicate the code for the municipality of birth
+for natural persons or the municipality of stablishment for juridical
+persons. NIT for El Salvador nationals begins with either 0 or 1, and
+for foreigners it begins with 9.
+
+The following six digits indicate the date of birth for the natural
+person, or the stablishment date for the juridical person, using the
+format DDMMYY, where DD is the day, MM is the month, and YY is the
+year. For example XXXX-051180-XXX-X is (November 5 1980)
+
+The next 3 digits are a sequential number.
+
+The last digit is the check digit, which is used to verify the number
+was correctly typed.
+
+More information:
+
+* https://es.wikipedia.org/wiki/Identificaci%C3%B3n_tributaria
+* https://www.listasal.info/articulos/nit-el-salvador.shtml
+* https://tramitesyrequisitos.com/el-salvador/nit/#Estructura_del_NIT
+* https://www.svcommunity.org/forum/programacioacuten/como-calcular-digito-verificador-del-dui-y-nit/msg951882/#msg951882
+
+>>> validate('0614-050707-104-8')
+'06140507071048'
+>>> validate('SV 0614-050707-104-8')
+'06140507071048'
+>>> validate('0614-050707-104-0')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> validate('12345678')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> format('06140507071048')
+'0614-050707-104-8'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace.
+ """
+ number = clean(number, ' -').upper().strip()
+ if number.startswith('SV'):
+ return number[2:]
+ return number
+
+
+def calc_check_digit(number):
+ """Calculate the check digit."""
+ # Old NIT
+ if number[10:13] <= '100':
+ weights = (14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)
+ total = sum(int(n) * w for n, w in zip(number, weights))
+ return str((total % 11) % 10)
+ # New NIT
+ weights = (2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2)
+ total = sum(int(n) * w for n, w in zip(number, weights))
+ return str((-total % 11) % 10)
+
+
+def validate(number):
+ """Check if the number is a valid El Salvador NIT number.
+
+ This checks the length, formatting and check digit.
+ """
+ number = compact(number)
+ if len(number) != 14:
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ if number[0] not in ('0', '1', '9'):
+ raise InvalidComponent()
+ if number[-1] != calc_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid El Salvador NIT number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ number = compact(number)
+ return '-'.join([number[:4], number[4:-4], number[-4:-1], number[-1]])
diff --git a/tests/test_sv_nit.doctest b/tests/test_sv_nit.doctest
new file mode 100644
index 00000000..28161116
--- /dev/null
+++ b/tests/test_sv_nit.doctest
@@ -0,0 +1,263 @@
+test_sv_nit.doctest - more detailed doctests for stdnum.sv.nit module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.sv.nit module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.sv import nit
+
+
+Tests for some corner cases.
+
+>>> nit.validate('06140507071048')
+'06140507071048'
+>>> nit.validate('0614-050707-104-8')
+'06140507071048'
+>>> nit.validate('SV 0614-050707-104-8')
+'06140507071048'
+>>> nit.format('06140507071048')
+'0614-050707-104-8'
+>>> nit.validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> nit.validate('VV345678901234')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> nit.validate('52345678901234')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> nit.validate('0614-050707-104-0')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 0209-200875-101-2
+... 0210-191171-001-6
+... 02101411580016
+... 03150507931017
+... 0404-131259-001-1
+... 0412-270681-101-2
+... 0427-151046-001-8
+... 05012306111015
+... 0511-010611-001-9
+... 0511-021279-102-2
+... 0511-090193-101-0
+... 0511-210590-101-2
+... 0511-231267-101-9
+... 0511-281111-101-6
+... 0511-310300-102-9
+... 05110108740018
+... 0514-160953-001-9
+... 0602-010373-101-4
+... 0602-100972-101-0
+... 0602-221085-101-7
+... 0604-160265-001-0
+... 06040904540018
+... 0614-010294-106-1
+... 0614-010462-002-1
+... 0614-010858-001-7
+... 0614-010890-101-0
+... 0614-010900-102-1
+... 0614-020190-101-2
+... 0614-020202-109-1
+... 0614-020557-009-6
+... 0614-020914-109-2
+... 0614-030593-102-9
+... 0614-031006-106-7
+... 0614-040100-101-6
+... 0614-040393-101-0
+... 0614-041204-103-6
+... 0614-050110-101-8
+... 0614-050205-103-0
+... 0614-050716-104-7
+... 0614-051279-134-2
+... 0614-060154-005-2
+... 0614-070108-106-2
+... 0614-070353-014-0
+... 0614-070590-102-1
+... 0614-070685-142-7
+... 0614-071107-103-0
+... 0614-080202-102-8
+... 0614-080609-105-5
+... 0614-080645-001-2
+... 0614-081193-102-9
+... 0614-090390-102-9
+... 0614-090598-101-1
+... 0614-090684-002-0
+... 0614-100215-103-5
+... 0614-100395-101-9
+... 0614-100856-006-8
+... 0614-110394-103-7
+... 0614-110416-107-8
+... 0614-110785-132-6
+... 0614-111267-001-6
+... 0614-120299-103-8
+... 0614-120563-013-4
+... 0614-120913-104-2
+... 0614-120913-109-3
+... 0614-130499-102-4
+... 0614-131009-102-7
+... 0614-131228-003-9
+... 0614-140700-101-4
+... 0614-140909-104-5
+... 0614-140961-006-0
+... 0614-141292-102-4
+... 0614-150304-102-7
+... 0614-150311-102-5
+... 0614-150397-102-4
+... 0614-150415-110-1
+... 0614-150416-103-4
+... 0614-150965-001-7
+... 0614-160277-001-5
+... 0614-160295-103-5
+... 0614-160407-101-6
+... 0614-160814-102-7
+... 0614-160953-001-0
+... 0614-170860-013-0
+... 0614-170902-101-4
+... 0614-171285-002-9
+... 0614-180901-101-6
+... 0614-181102-101-0
+... 0614-181191-101-6
+... 0614-190377-001-6
+... 0614-190618-110-4
+... 0614-190697-107-5
+... 0614-191190-107-7
+... 0614-191192-106-0
+... 0614-200217-104-0
+... 0614-200302-104-2
+... 0614-200905-102-4
+... 0614-210253-001-4
+... 0614-210297-103-6
+... 0614-210494-104-5
+... 0614-220277-002-3
+... 0614-220310-102-4
+... 0614-220402-101-6
+... 0614-220605-102-8
+... 0614-220610-105-0
+... 0614-220993-101-0
+... 0614-230803-103-0
+... 0614-230817-107-9
+... 0614-230952-002-2
+... 0614-231061-011-4
+... 0614-240209-105-4
+... 0614-240715-105-5
+... 0614-241272-105-6
+... 0614-250582-002-0
+... 0614-250795-012-4
+... 0614-250796-105-4
+... 0614-260406-104-1
+... 0614-260710-106-0
+... 0614-270696-101-2
+... 0614-271008-102-7
+... 0614-280142-002-7
+... 0614-280194-105-3
+... 0614-280268-104-7
+... 0614-280297-188-6
+... 0614-280454-004-4
+... 0614-280470-120-7
+... 0614-280590-147-1
+... 0614-280617-101-9
+... 0614-280815-109-0
+... 0614-291100-103-0
+... 0614-300312-104-3
+... 0614-300380-107-9
+... 0614-300713-103-5
+... 0614-300907-101-3
+... 0614-301002-107-0
+... 0614-310797-109-0
+... 0614-310888-102-7
+... 0614-310898-102-1
+... 06140108140066
+... 06140301081039
+... 06140302891026
+... 06140501350010
+... 06140709041094
+... 06140710770019
+... 06140812901018
+... 06140902941060
+... 06141010971041
+... 06141102081026
+... 06141212961030
+... 06141305941039
+... 06141306780010
+... 06141311011019
+... 06141405881084
+... 06141410021050
+... 06141503041027
+... 06141512001054
+... 06141601921043
+... 06141605771097
+... 06141705901028
+... 06141901001027
+... 06141901831364
+... 06141905061032
+... 06142110700016
+... 06142111001058
+... 06142206981017
+... 06142502781139
+... 06142507001042
+... 06142507891013
+... 06142510021011
+... 06142703771050
+... 06142806761142
+... 06142809931022
+... 06143011931011
+... 06143110860018
+... 06151909680013
+... 0616-061058-003-8
+... 0616-100883-103-9
+... 0619-260185-101-4
+... 0715-231060-003-2
+... 0715-260862-001-6
+... 0802-230151-001-8
+... 0803-130153-001-8
+... 0821-010148-001-1
+... 0821-060256-001-5
+... 0906-040354-001-6
+... 1008-070753-001-8
+... 1010-060176-101-0
+... 1108-250573-101-6
+... 1109-070374-101-1
+... 1121-190563-001-0
+... 1122-060865-001-4
+... 1217-160992-101-8
+... 12171609921018
+... 1319-260280-101-8
+... 1408-160337-001-8
+... 1408-260786-101-2
+... 14162001681012
+... 9450-270760-001-1
+... 9483-140205-101-6
+... 9483-260110-101-0
+... 94833011640013
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not nit.is_valid(x)]
+[]
From f3ce70c60f26c5a7e0c0e05985630e3136b130fa Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 4 Apr 2020 22:06:52 +0200
Subject: [PATCH 025/296] Add support for Chinese TIN number
Closes https://github.com/arthurdejong/python-stdnum/issues/207
Closes https://github.com/arthurdejong/python-stdnum/pull/210
---
stdnum/cn/__init__.py | 3 +
stdnum/cn/uscc.py | 125 ++++++++++++++++++
tests/test_cn_uscc.doctest | 261 +++++++++++++++++++++++++++++++++++++
3 files changed, 389 insertions(+)
create mode 100644 stdnum/cn/uscc.py
create mode 100644 tests/test_cn_uscc.doctest
diff --git a/stdnum/cn/__init__.py b/stdnum/cn/__init__.py
index 78e0bf61..93a6f5e4 100644
--- a/stdnum/cn/__init__.py
+++ b/stdnum/cn/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of China (PRC) numbers."""
+
+# Provide vat as an alias.
+from stdnum.cn import uscc as vat # noqa: F401
diff --git a/stdnum/cn/uscc.py b/stdnum/cn/uscc.py
new file mode 100644
index 00000000..a04a553b
--- /dev/null
+++ b/stdnum/cn/uscc.py
@@ -0,0 +1,125 @@
+# uscc.py - functions for handling Chinese USCC numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""USCC (Unified Social Credit Code, 统一社会信用代码, China tax number).
+
+This number consists of 18 digits or uppercase English letters (excluding the
+letters I, O, Z, S, V). The number is comprised of several parts:
+
+* Digit 1 represents the registering authority,
+* Digit 2 represents the registered entity type,
+* Digits 3 through 8 represent the registering region code,
+* Digits 9 through 17 represent the organisation code,
+* Digit 18 is a check digit (either a number or letter).
+
+The registering authority digit most often is a 9, which represents the State
+Administration for Industry and Commerce (SAIC) as the registering authority.
+
+The registered entity type indicates the type of business (or entity). The
+most common entity types in China are:
+
+* Wholly Foreign-Owned Enterprises (WFOE): 外商独资企业
+* Joint Ventures (JV): 合资
+* Representative Office: 代表处
+* State-Owned Enterprise (SOE): 国有企业
+* Private Enterprise: 民营企业
+* Individually-Owned: 个体户
+
+The registering region code, sometimes referred to as the "administrative
+division code", is a string of six numbers that indicates where the company
+is registered. It roughly follows the organisation of the official Chinese
+regions.
+
+The organisation code comes directly from the China Organization Code
+certificate, an alternative document to the China Business License. It can
+contain letters or digits.
+
+More information:
+
+* https://zh.wikipedia.org/wiki/统一社会信用代码
+* https://zh.wikipedia.org/wiki/校验码
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/China-TIN.pdf
+
+>>> validate('91110000600037341L')
+'91110000600037341L'
+>>> validate('A1110000600037341L')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> format('9 1 110000 600037341L')
+'91110000600037341L'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+_alphabet = '0123456789ABCDEFGHJKLMNPQRTUWXY'
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace.
+ """
+ return clean(number, ' -').upper().strip()
+
+
+def calc_check_digit(number):
+ """Calculate the check digit for the number."""
+ weights = (1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28)
+ number = compact(number)
+ total = sum(_alphabet.index(n) * w for n, w in zip(number, weights))
+ return _alphabet[(31 - total) % 31]
+
+
+def validate(number):
+ """Check if the number is a valid USCC.
+
+ This checks the length, formatting and check digit.
+ """
+ number = compact(number)
+ if len(number) != 18:
+ raise InvalidLength()
+ if not isdigits(number[:8]):
+ raise InvalidFormat()
+ if any(c not in _alphabet for c in number[8:]):
+ raise InvalidFormat()
+ if number[-1] != calc_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid USCC."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ return compact(number)
diff --git a/tests/test_cn_uscc.doctest b/tests/test_cn_uscc.doctest
new file mode 100644
index 00000000..9d34ebb0
--- /dev/null
+++ b/tests/test_cn_uscc.doctest
@@ -0,0 +1,261 @@
+test_cn_uscc.doctest - more detailed doctests for stdnum.cn.uscc module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.cn.uscc module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.cn import uscc
+
+
+Tests for some corner cases.
+
+>>> uscc.validate('91110000600037341L')
+'91110000600037341L'
+>>> uscc.validate('91 110000 600037341L')
+'91110000600037341L'
+>>> uscc.format('91 110000 600037341L')
+'91110000600037341L'
+>>> uscc.validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> uscc.validate('A1110000600037341L')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uscc.validate('9111000060003IOZSV')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uscc.validate('91110000600037341N')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 121200004013590816
+... 911522010783762860
+... 91152201078377449P
+... 9115220107837941X1
+... 91152201078382010M
+... 911522010783917502
+... 91152201078394644D
+... 91152201078395188Q
+... 91310112087994932F
+... 91310115MA1K3BTP2B
+... 91310116052958608G
+... 91310116076409427L
+... 913101203509708598
+... 913205056082348768
+... 91340600MA2PBM9HXD
+... 91340600MA2PBMA74B
+... 91340600MA2PBN188W
+... 91340600MA2PBN831R
+... 91340600MA2PBNE723
+... 91340600MA2PBP2120
+... 91340600MA2PBP6A1W
+... 91340600MA2PENCC7K
+... 91340600MA2PENWF9P
+... 91340600MA2PEP518T
+... 91340600MA2PEP7F5B
+... 91340600MA2PERLJ2D
+... 91340600MA2UJYG49B
+... 91340602MA2UJY3J9W
+... 91340602MA2UJYD90G
+... 91340603MA2UJYN78Q
+... 91340603MA2UJYNU67
+... 91340604MA2PBQBH3P
+... 91340604MA2PEL1X3M
+... 91340621MA2PBPLU08
+... 91340621MA2PEMUHX8
+... 91340621MA2PEN6Q3Y
+... 91340621MA2PEPJB9F
+... 91371082775260043P
+... 914112810713741814
+... 9144030071526726XG
+... 91620100719023721L
+... 91620105224521729E
+... 91620105556273987U
+... 91620105556284969Y
+... 91620105556287545F
+... 91620105571630591E
+... 91620105585923360D
+... 91620105665404165K
+... 9162010567592034XQ
+... 91620105750906995R
+... 91620105750935948X
+... 91620105756580826D
+... 91620105767728304H
+... 91620105784023285J
+... 91620105789620900B
+... 91620105794891756D
+... 91620105L015101280
+... 92340602MA2PBQAH7E
+... 92340602MA2PEL3T3X
+... 92340602MA2PEL605A
+... 92340602MA2UK2TH6F
+... 92340602MA2UK33127
+... 92340603MA2PBMCG0U
+... 92340603MA2PBMD304
+... 92340603MA2PBMQL04
+... 92340603MA2PBMUF7M
+... 92340603MA2PBN17X5
+... 92340603MA2PBN2W0N
+... 92340603MA2PBNK461
+... 92340603MA2PBNLR0R
+... 92340603MA2PBQ7J4K
+... 92340603MA2PBQ7X9E
+... 92340603MA2PBQFT7J
+... 92340603MA2PBQGB6M
+... 92340603MA2PBQHD9N
+... 92340603MA2PBQUC3U
+... 92340603MA2PBQX04X
+... 92340603MA2PBQY862
+... 92340603MA2PEL613K
+... 92340603MA2PELE65C
+... 92340603MA2PELFF5B
+... 92340603MA2PELHL72
+... 92340603MA2PEM480D
+... 92340603MA2PEN9F2E
+... 92340603MA2PENAP06
+... 92340603MA2PENCQ1M
+... 92340603MA2PEP42XF
+... 92340603MA2PEPBN6L
+... 92340603MA2PEPM83M
+... 92340603MA2UJXYJ3P
+... 92340603MA2UJY0W68
+... 92340603MA2UJY2M7F
+... 92340603MA2UJYUM57
+... 92340603MA2UK0KQ72
+... 92340603MA2UK0ME1G
+... 92340603MA2UK0T79E
+... 92340603MA2UK1NC4L
+... 92340603MA2UK1PX9B
+... 92340603MA2UK1TD00
+... 92340603MA2UK1UE56
+... 92340603MA2UK28G4G
+... 92340603MA2UK2P79U
+... 92340603MA2UK2WX6M
+... 92340603MA2UK2XD94
+... 92340603MA2UK31A3N
+... 92340603MA2UK3CP6U
+... 92340603MA2UK3D673
+... 92340603MA2UK3DF0N
+... 92340603MA2UK3DT5H
+... 92340604MA2PBME53K
+... 92340604MA2PBMQK2P
+... 92340604MA2PBMXF6C
+... 92340604MA2PBNDT64
+... 92340604MA2PBNKR4Y
+... 92340604MA2PBNQNXM
+... 92340604MA2PBNR83C
+... 92340604MA2PBNUL9N
+... 92340604MA2PBNWH99
+... 92340604MA2PBNXH5J
+... 92340604MA2PBP1U3Y
+... 92340604MA2PBP7U1T
+... 92340604MA2PBPHC8R
+... 92340604MA2PBPXJ71
+... 92340604MA2PEM4L7X
+... 92340604MA2PEM5Q4E
+... 92340604MA2PENA300
+... 92340604MA2UJYCE59
+... 92340604MA2UJYPN1K
+... 92340604MA2UK03G7D
+... 92340604MA2UK04L4X
+... 92340604MA2UK07529
+... 92340604MA2UK08Y65
+... 92340621MA2PBKRXXG
+... 92340621MA2PBL318W
+... 92340621MA2PBLW63G
+... 92340621MA2PBLWT1Y
+... 92340621MA2PBLX27E
+... 92340621MA2PBM6286
+... 92340621MA2PBMA318
+... 92340621MA2PBMKK45
+... 92340621MA2PBMNMXM
+... 92340621MA2PBMUH3D
+... 92340621MA2PBN0KXX
+... 92340621MA2PBN145R
+... 92340621MA2PBN1962
+... 92340621MA2PBN1H1T
+... 92340621MA2PBN559X
+... 92340621MA2PBNFH07
+... 92340621MA2PBNJ232
+... 92340621MA2PBNTY9Y
+... 92340621MA2PBP431L
+... 92340621MA2PELD34J
+... 92340621MA2PELFR3H
+... 92340621MA2UJRKE7N
+... 92340621MA2UJRL762
+... 92340621MA2UJT9WXP
+... 92340621MA2UJTCK0M
+... 92340621MA2UJTM785
+... 92340621MA2UJTQ22E
+... 92340621MA2UJTTF8R
+... 92340621MA2UJTY74U
+... 92340621MA2UJW4UXQ
+... 92340621MA2UJW690P
+... 92340621MA2UJW703D
+... 92340621MA2UJWA961
+... 92340621MA2UJWCT2H
+... 92340621MA2UJWEE2G
+... 92340621MA2UJWFB49
+... 92340621MA2UJWGB0J
+... 92340621MA2UJWYPX8
+... 92340621MA2UJX6C8T
+... 92340621MA2UJX968M
+... 92340621MA2UJXLD1M
+... 92340621MA2UJY477E
+... 92340621MA2UJYE11E
+... 92340621MA2UJYG57G
+... 92340621MA2UK02XXW
+... 92340621MA2UK08G9K
+... 92340621MA2UK0DA11
+... 92340621MA2UK0G256
+... 92340621MA2UK0J08Q
+... 92340621MA2UK0JX8N
+... 92340621MA2UK0KR5Y
+... 92340621MA2UK1JY92
+... 92340621MA2UK1L38E
+... 92340621MA2UK1MK35
+... 92340621MA2UK1MN8P
+... 92340621MA2UK1PRX7
+... 92340621MA2UK22G6N
+... 92340621MA2UK25H3F
+... 92340621MA2UK2BU8B
+... 92340621MA2UK2CD59
+... 92340621MA2UK2EP62
+... 92340621MA2UK2GJXF
+... 92340621MA2UK2Q24Y
+... 92340621MA2UK2XX21
+... 92340621MA2UK30C35
+... 92340621MA2UK338XJ
+... 92340621MA2UK3C369
+... 92340621MA2UK3CE6L
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not uscc.is_valid(x)]
+[]
From 4eda3f3535d28e2486745f33504c417ba6837c3a Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Wed, 18 Mar 2020 19:57:48 +0100
Subject: [PATCH 026/296] Add missing vat alias for New Zealand
Closes https://github.com/arthurdejong/python-stdnum/pull/202
---
stdnum/nz/__init__.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/stdnum/nz/__init__.py b/stdnum/nz/__init__.py
index f58d20f6..150057ee 100644
--- a/stdnum/nz/__init__.py
+++ b/stdnum/nz/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of New Zealand numbers."""
+
+# provide aliases
+from stdnum.nz import ird as vat # noqa: F401
From 0d5b8b154945cc3cdcea5ddfd0676332b4cf5ad4 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Wed, 18 Mar 2020 20:45:35 +0100
Subject: [PATCH 027/296] Add support for Singapore Unique Entity Number
Closes https://github.com/arthurdejong/python-stdnum/issues/111
Closes https://github.com/arthurdejong/python-stdnum/pull/203
---
stdnum/sg/__init__.py | 24 +++
stdnum/sg/uen.py | 172 ++++++++++++++++++++++
tests/test_sg_uen.doctest | 301 ++++++++++++++++++++++++++++++++++++++
3 files changed, 497 insertions(+)
create mode 100644 stdnum/sg/__init__.py
create mode 100644 stdnum/sg/uen.py
create mode 100644 tests/test_sg_uen.doctest
diff --git a/stdnum/sg/__init__.py b/stdnum/sg/__init__.py
new file mode 100644
index 00000000..1d3e79d3
--- /dev/null
+++ b/stdnum/sg/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of Singapore numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of Singapore numbers."""
+
+# provide aliases
+from stdnum.sg import uen as vat # noqa: F401
diff --git a/stdnum/sg/uen.py b/stdnum/sg/uen.py
new file mode 100644
index 00000000..2b49be1f
--- /dev/null
+++ b/stdnum/sg/uen.py
@@ -0,0 +1,172 @@
+# uen.py - functions for handling Singapore UEN numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""UEN (Singapore's Unique Entity Number).
+
+The Unique Entity Number (UEN) is a 9 or 10 digit identification issued by
+the government of Singapore to businesses that operate with within Singapore.
+
+
+Accounting and Corporate Regulatory Authority (ACRA)
+
+There are three different formats:
+
+* Business (ROB): It consists of 8 digits followed by a check letter.
+* Local Company (ROC): It consists of 9 digits (the 4 leftmost digits
+ represent the year of issuance) followed by a check letter.
+* Others: Consists of 10 characters, begins with either the R letter, or the
+ S letter or the T letter followed by 2 digits representing the last two
+ digits of the issuance year, followed by two letters representing the
+ entity type, 4 digits and finally a check letter.
+
+More information:
+
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Singapore-TIN.pdf
+* https://www.uen.gov.sg/ueninternet/faces/pages/admin/aboutUEN.jspx
+
+>>> validate('00192200M')
+'00192200M'
+>>> validate('197401143C')
+'197401143C'
+>>> validate('S16FC0121D')
+'S16FC0121D'
+>>> validate('T01FC6132D')
+'T01FC6132D'
+>>> validate('123456')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+"""
+
+# There are some references to special 10-digit (or 7-digit) numbers that
+# start with an F for foreign companies but it is unclear whether this is
+# still current and not even examples of these numbers could be found.
+
+from datetime import datetime
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+OTHER_UEN_ENTITY_TYPES = (
+ 'CC', 'CD', 'CH', 'CL', 'CM', 'CP', 'CS', 'CX', 'DP', 'FB', 'FC', 'FM',
+ 'FN', 'GA', 'GB', 'GS', 'HS', 'LL', 'LP', 'MB', 'MC', 'MD', 'MH', 'MM',
+ 'MQ', 'NB', 'NR', 'PA', 'PB', 'PF', 'RF', 'RP', 'SM', 'SS', 'TC', 'TU',
+ 'VH', 'XL',
+)
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This converts to uppercase and removes surrounding whitespace. It
+ also replaces the whitespace in UEN for foreign companies with
+ zeroes.
+ """
+ return clean(number).upper().strip()
+
+
+def calc_business_check_digit(number):
+ """Calculate the check digit for the Business (ROB) number."""
+ number = compact(number)
+ weights = (10, 4, 9, 3, 8, 2, 7, 1)
+ return 'XMKECAWLJDB'[sum(int(n) * w for n, w in zip(number, weights)) % 11]
+
+
+def _validate_business(number):
+ """Perform validation on UEN - Business (ROB) numbers."""
+ if not isdigits(number[:-1]):
+ raise InvalidFormat()
+ if not number[-1].isalpha():
+ raise InvalidFormat()
+ if number[-1] != calc_business_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def calc_local_company_check_digit(number):
+ """Calculate the check digit for the Local Company (ROC) number."""
+ number = compact(number)
+ weights = (10, 8, 6, 4, 9, 7, 5, 3, 1)
+ return 'ZKCMDNERGWH'[sum(int(n) * w for n, w in zip(number, weights)) % 11]
+
+
+def _validate_local_company(number):
+ """Perform validation on UEN - Local Company (ROC) numbers."""
+ if not isdigits(number[:-1]):
+ raise InvalidFormat()
+ current_year = str(datetime.now().year)
+ if number[:4] > current_year:
+ raise InvalidComponent()
+ if number[-1] != calc_local_company_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def calc_other_check_digit(number):
+ """Calculate the check digit for the other entities number."""
+ number = compact(number)
+ alphabet = 'ABCDEFGHJKLMNPQRSTUVWX0123456789'
+ weights = (4, 3, 5, 3, 10, 2, 2, 5, 7)
+ return alphabet[(sum(alphabet.index(n) * w for n, w in zip(number, weights)) - 5) % 11]
+
+
+def _validate_other(number):
+ """Perform validation on other UEN numbers."""
+ if number[0] not in ('R', 'S', 'T'):
+ raise InvalidComponent()
+ if not isdigits(number[1:3]):
+ raise InvalidFormat()
+ current_year = str(datetime.now().year)
+ if number[0] == 'T' and number[1:3] > current_year[2:]:
+ raise InvalidComponent()
+ if number[3:5] not in OTHER_UEN_ENTITY_TYPES:
+ raise InvalidComponent()
+ if not isdigits(number[5:-1]):
+ raise InvalidFormat()
+ if number[-1] != calc_other_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def validate(number):
+ """Check if the number is a valid Singapore UEN number."""
+ number = compact(number)
+ if len(number) not in (9, 10):
+ raise InvalidLength()
+ if len(number) == 9:
+ return _validate_business(number)
+ if isdigits(number[0]):
+ return _validate_local_company(number)
+ return _validate_other(number)
+
+
+def is_valid(number):
+ """Check if the number is a valid Singapore UEN number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ return compact(number)
diff --git a/tests/test_sg_uen.doctest b/tests/test_sg_uen.doctest
new file mode 100644
index 00000000..caa2d0a6
--- /dev/null
+++ b/tests/test_sg_uen.doctest
@@ -0,0 +1,301 @@
+test_sg_uen.doctest - more detailed doctests for stdnum.sg.uen module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.sg.uen module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.sg import uen
+
+
+Tests for some corner cases.
+
+>>> uen.validate('00192200M')
+'00192200M'
+>>> uen.validate('00192200C')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> uen.validate('197401143C')
+'197401143C'
+>>> uen.validate('S16FC0121D')
+'S16FC0121D'
+>>> uen.validate('T01FC6132D')
+'T01FC6132D'
+>>> uen.format(' 00192200M ')
+'00192200M'
+>>> uen.validate('123456')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> uen.validate('R2345678H')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uen.validate('123456789')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uen.validate('1R3456789H')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uen.validate('999956789H')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> uen.validate('1234567890')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> uen.validate('W23LL6789H')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> uen.validate('S2WLL6789H')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uen.validate('T99LL6789H')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> uen.validate('T02WW6789H')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> uen.validate('T02LL6W89H')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> uen.validate('T02LL67890')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 00416700K
+... 01402200A
+... 03122200E
+... 03989700A
+... 05040200E
+... 05328700B
+... 05346600D
+... 05682800D
+... 05796700L
+... 06108900A
+... 06273700K
+... 06540200J
+... 06905300J
+... 07059900M
+... 07088800X
+... 07330000D
+... 07392800C
+... 07609900L
+... 08301600K
+... 09402000X
+... 10080700C
+... 10185500A
+... 10362000A
+... 10415300L
+... 10482100X
+... 10528100W
+... 10655900A
+... 10839500J
+... 198101793G
+... 199201624D
+... 199409389H
+... 199607747H
+... 199903512M
+... 200001838R
+... 200003956G
+... 200311327H
+... 200402245Z
+... 200509725E
+... 200601141M
+... 200612239R
+... 200613692K
+... 200806526H
+... 200923096R
+... 201001206N
+... 201026348Z
+... 201107298M
+... 201118211H
+... 201221002E
+... 201225997K
+... 201227749M
+... 201312700G
+... 201316157E
+... 201405619W
+... 201421015W
+... 201422211Z
+... 201427857E
+... 201430557E
+... 201434292D
+... 201505714C
+... 201506999D
+... 201507276Z
+... 201509563K
+... 201524437R
+... 201528593H
+... 201530032R
+... 201533374C
+... 201538146W
+... 201539125W
+... 201539692G
+... 201541306Z
+... 201605323H
+... 201608874E
+... 201612228W
+... 201613871H
+... 201616811C
+... 201620388N
+... 201621244C
+... 201626104W
+... 201630570C
+... 201630906R
+... 201703509H
+... 201709179W
+... 201723655Z
+... 201728348W
+... 201729145M
+... 201730487Z
+... 201732074H
+... 201801863N
+... 201810763C
+... 201813990E
+... 201814325Z
+... 201819215N
+... 201828636K
+... 201831257M
+... 201831267E
+... 201902616N
+... 201927572K
+... 201931750M
+... 201933247R
+... 53143018M
+... 53321041X
+... 53322268X
+... 53325701L
+... 53327223L
+... 53328294B
+... 53329644K
+... 53329865B
+... 53333269M
+... 53333709K
+... 53334750E
+... 53336671B
+... 53337313A
+... 53337959L
+... 53338455M
+... 53338593L
+... 53339826J
+... 53340108M
+... 53340486W
+... 53341233A
+... 53343978K
+... 53344927L
+... 53346524M
+... 53346603B
+... 53346756W
+... 53351301D
+... 53354912D
+... 53357813B
+... 53358098J
+... 53358936C
+... 53359192M
+... 53359796W
+... 53360148K
+... 53360367J
+... 53360906B
+... 53365157C
+... 53366537W
+... 53366669D
+... 53368090E
+... 53369142K
+... 53371741L
+... 53372084B
+... 53372845B
+... 53372960B
+... 53373278J
+... 53373376J
+... 53374181E
+... 53374421X
+... 53377389W
+... 53377498E
+... 53377824K
+... 53380578C
+... 53382783C
+... 53383991B
+... 53384227A
+... 53393038C
+... 53393390X
+... 53393519M
+... 53394981E
+... 53395684J
+... 53395867M
+... 53397681B
+... 53398169K
+... 53399589B
+... 53399638D
+... 53399659K
+... S16FC0121D
+... S27FC0556D
+... S64FC1644H
+... S65SS0033F
+... S66SS0041B
+... S68FC1890G
+... S85FC3621C
+... S99FC5759D
+... T01FC6132D
+... T07LL0309A
+... T08LL0003B
+... T08LL0005E
+... T08LL0721A
+... T08LL0979J
+... T10LL1392L
+... T10LL1400J
+... T11LL0668C
+... T11LL1149C
+... T11LL1971L
+... T11LL2079G
+... T12LL0781D
+... T12LL2046J
+... T12LL2127H
+... T14FC0094H
+... T14LL1800D
+... T15LL1753J
+... T15LL1855C
+... T15LL1956A
+... T16LL0695L
+... T16LL1853E
+... T17LL0235L
+... T17LL1494G
+... T17LL2098G
+... T18FC0083E
+... T19LL0797J
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not uen.is_valid(x)]
+[]
From 127fff17bf612ba8457ea84424ce4d99abd62306 Mon Sep 17 00:00:00 2001
From: Christopher Ormaza
Date: Sat, 6 Jun 2020 09:36:37 -0500
Subject: [PATCH 028/296] Support 6 as third digit for foreign people in
Ecuador
Closes https://github.com/arthurdejong/python-stdnum/pull/228
---
stdnum/ec/ci.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/stdnum/ec/ci.py b/stdnum/ec/ci.py
index 6e588518..c97c1937 100644
--- a/stdnum/ec/ci.py
+++ b/stdnum/ec/ci.py
@@ -62,7 +62,7 @@ def validate(number):
raise InvalidFormat()
if (number[:2] < '01' or number[:2] > '24') and (number[:2] not in ('30', '50')):
raise InvalidComponent() # invalid province code
- if number[2] > '5':
+ if number[2] > '6':
raise InvalidComponent() # third digit wrong
if _checksum(number) != 0:
raise InvalidChecksum()
From b3891f1eff22c46d0856b1b303781f911c2b2e5a Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 7 Mar 2020 20:56:13 +0100
Subject: [PATCH 029/296] Add support for South Korea Business Registration
Number
Closes https://github.com/arthurdejong/python-stdnum/pull/197
Closes https://github.com/arthurdejong/python-stdnum/issues/101
---
stdnum/kr/__init__.py | 3 +
stdnum/kr/brn.py | 85 +++++++++++
tests/test_kr_brn.doctest | 303 ++++++++++++++++++++++++++++++++++++++
3 files changed, 391 insertions(+)
create mode 100644 stdnum/kr/brn.py
create mode 100644 tests/test_kr_brn.doctest
diff --git a/stdnum/kr/__init__.py b/stdnum/kr/__init__.py
index 03cbe0f2..b8d75f2f 100644
--- a/stdnum/kr/__init__.py
+++ b/stdnum/kr/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of South Korean numbers."""
+
+# provide aliases
+from stdnum.kr import brn as vat # noqa: F401
diff --git a/stdnum/kr/brn.py b/stdnum/kr/brn.py
new file mode 100644
index 00000000..c004aa98
--- /dev/null
+++ b/stdnum/kr/brn.py
@@ -0,0 +1,85 @@
+# brn.py - functions for handling South Korean BRN
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""BRN (사업자 등록 번호, South Korea Business Registration Number).
+
+The Business Registration Number is issued by the district tax office in the
+local jurisdiction for tax purposes. The number consists of 10 digits and
+contain the tax office number (3 digits), the type of business (2 digits), a
+serially assigned value (4 digits) and a single check digit.
+
+More information:
+
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Korea-TIN.pdf
+
+>>> validate('116-82-00276')
+'1168200276'
+>>> validate('1168200276')
+'1168200276'
+>>> validate(' 116 - 82 - 00276 ')
+'1168200276'
+>>> validate('123456789')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> format('1348672683')
+'134-86-72683'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace.
+ """
+ return clean(number, ' -').strip()
+
+
+def validate(number):
+ """Check if the number is a valid South Korea BRN number.
+
+ This checks the length and formatting.
+ """
+ number = compact(number)
+ if len(number) != 10:
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ if number[:3] < '101' or number[3:5] == '00' or number[5:-1] == '0000':
+ raise InvalidComponent()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid South Korea BRN number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ number = compact(number)
+ return '-'.join([number[:3], number[3:5], number[5:]])
diff --git a/tests/test_kr_brn.doctest b/tests/test_kr_brn.doctest
new file mode 100644
index 00000000..668a9751
--- /dev/null
+++ b/tests/test_kr_brn.doctest
@@ -0,0 +1,303 @@
+test_kr_brn.doctest - more detailed doctests for stdnum.kr.brn module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.kr.brn module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.kr import brn
+
+
+Tests for some corner cases.
+
+>>> brn.validate('2098206382')
+'2098206382'
+>>> brn.validate('211-86-08983')
+'2118608983'
+>>> brn.validate('317 - 81 - 11175')
+'3178111175'
+>>> brn.validate('220 88 69974')
+'2208869974'
+>>> brn.format('1304717700')
+'130-47-17700'
+>>> brn.validate('80123456785')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> brn.validate('FF34567890')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> brn.validate('100-86-08983')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> brn.validate('211-00-08983')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> brn.validate('211-86-00003')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 101-82-13065
+... 102-81-03525
+... 102-81-42945
+... 104-81-25258
+... 104-81-36565
+... 104-84-03406
+... 105-17-41513
+... 105-86-61489
+... 106-82-07200
+... 107-82-09351
+... 107-87-13471
+... 107-87-70962
+... 108-19-83613
+... 109-81-33637
+... 109-81-39795
+... 109-81-62393
+... 110-12-39727
+... 110-14-16596
+... 110-81-05034
+... 110-81-07390
+... 110-81-40725
+... 110-84-02173
+... 112-81-30811
+... 113-02-43949
+... 113-81-92367
+... 113-85-26486
+... 113-86-21886
+... 113-86-38602
+... 113-86-46500
+... 113-86-60856
+... 114-81-44645
+... 114-82-62150
+... 114-86-00579
+... 114-86-04968
+... 114-86-61464
+... 116-82-00276
+... 117-81-77714
+... 118-81-09714
+... 119-02-43947
+... 119-19-96781
+... 119-82-08146
+... 119-82-63265
+... 119-86-44529
+... 119-86-79111
+... 119-87-08063
+... 120-81-57465
+... 120-86-39706
+... 1208200052
+... 121-81-25326
+... 121-81-42209
+... 121-81-78347
+... 122-81-62455
+... 124-81-79802
+... 124-86-13144
+... 124-86-65341
+... 124-86-85333
+... 127-11-87351
+... 128-02-41206
+... 128-39-49844
+... 128-81-63302
+... 128-81-77295
+... 129-81-16573
+... 129-81-23356
+... 129-81-30691
+... 129-81-85385
+... 129-86-38970
+... 129-86-39907
+... 130-47-17700
+... 130-81-92528
+... 130-86-35857
+... 130-86-79710
+... 130-86-89294
+... 131-82-00372
+... 131-86-40843
+... 132-81-38608
+... 132-86-04520
+... 133-81-29441
+... 133-81-32077
+... 133-81-40621
+... 134-81-06679
+... 134-86-24634
+... 134-86-44004
+... 134-86-72683
+... 135-09-24640
+... 135-29-80067
+... 135-81-06333
+... 137-86-39058
+... 138-81-03499
+... 138-81-44092
+... 138-81-44277
+... 140-81-67744
+... 141-81-18585
+... 143-81-10463
+... 144-81-25090
+... 148-05-00404
+... 156-23-00883
+... 169-86-00394
+... 183-98-00113
+... 187-82-00055
+... 193-86-00010
+... 201-81-54845
+... 201-81-76228
+... 201-81-99798
+... 201-85-17396
+... 201-86-25781
+... 202-81-04367
+... 202-81-42420
+... 204-06-91556
+... 204-86-46427
+... 205-81-26341
+... 206-18-12345
+... 206-86-50913
+... 208-81-24115
+... 209-82-05326
+... 209-82-06382
+... 211-86-08983
+... 211-86-23306
+... 211-86-39754
+... 211-87-67960
+... 214-11-58465
+... 214-81-04230
+... 214-87-78980
+... 214-87-98889
+... 214-87-99743
+... 214-88-49333
+... 214-88-51159
+... 215-87-86862
+... 217-81-14493
+... 219-01-39810
+... 220 88 69974
+... 220-81-66148
+... 220-81-83676
+... 220-82-05060
+... 220-87-18070
+... 220-87-57205
+... 220-88-75699
+... 220-88-88699
+... 221-81-32210
+... 221-83-01195
+... 222-81-03192
+... 224-81-41168
+... 231-81-02896
+... 275-87-01259
+... 279-81-01263
+... 280-86-01410
+... 301-81-14992
+... 301-81-91475
+... 301-82-62166
+... 301-86-12266
+... 303-12-73313
+... 303-81-44911
+... 303-82-07378
+... 305-81-38564
+... 305-81-70638
+... 305-81-87876
+... 306-81-22629
+... 306-82-00417
+... 308-81-41001
+... 311-81-22413
+... 312-12-25168
+... 312-30-06675
+... 312-81-95317
+... 314-81-25684
+... 314-82-01980
+... 314-86-00956
+... 314-86-42432
+... 314-86-53230
+... 314-86-63209
+... 317 - 81 - 11175
+... 317-81-04543
+... 318-81-02096
+... 321-81-00982
+... 348-13-00692
+... 364-81-00669
+... 374-81-01516
+... 375-10-00859
+... 375-88-00519
+... 383-37-00143
+... 394-92-00410
+... 398-85-00113
+... 402-82-15272
+... 409-86-33769
+... 410-25-53731
+... 410-82-83844
+... 410-86-53770
+... 415-06-83258
+... 415-81-19511
+... 415-82-11025
+... 416-81-48042
+... 417-85-07912
+... 420-87-00883
+... 501-26-78904
+... 503-86-09407
+... 504-81-85233
+... 504-85-11802
+... 506-82-06755
+... 514-81-68599
+... 515-04-62016
+... 515-05-32580
+... 515-07-68272
+... 515-81-10315
+... 515-81-40648
+... 533-85-00526
+... 533-87-01306
+... 568-41-00305
+... 580-21-00836
+... 582-90-00497
+... 602-81-66559
+... 603-81-24270
+... 606-81-54507
+... 606-86-06989
+... 609-81-99124
+... 610-09-84339
+... 610-81-04971
+... 615-82-11718
+... 615-86-09068
+... 616-24-46281
+... 616-25-12643
+... 617-86-11575
+... 621-15-41743
+... 632-11-01006
+... 639-86-00985
+... 649-82-00117
+... 669-81-00996
+... 680-87-00210
+... 682-85-00885
+... 728-86-00316
+... 735-85-00501
+... 760-06-00079
+... 766-88-00563
+... 782-86-00130
+... 809-81-01574
+... 816-81-00840
+... 884-17-01026
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not brn.is_valid(x)]
+[]
From 1b7e985ff7dbf60b7f41d004fe39292c25bd2ae5 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 16 May 2020 16:04:21 +0200
Subject: [PATCH 030/296] Add an online check for the South Korean BRN
---
stdnum/kr/GPKIRootCA1.crt | 21 ++++++++++++++++++
stdnum/kr/brn.py | 17 +++++++++++++++
tests/test_kr_brn.py | 46 +++++++++++++++++++++++++++++++++++++++
3 files changed, 84 insertions(+)
create mode 100644 stdnum/kr/GPKIRootCA1.crt
create mode 100644 tests/test_kr_brn.py
diff --git a/stdnum/kr/GPKIRootCA1.crt b/stdnum/kr/GPKIRootCA1.crt
new file mode 100644
index 00000000..20fc1c78
--- /dev/null
+++ b/stdnum/kr/GPKIRootCA1.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDXTCCAkWgAwIBAgIBATANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJLUjEc
+MBoGA1UECgwTR292ZXJubWVudCBvZiBLb3JlYTENMAsGA1UECwwER1BLSTEUMBIG
+A1UEAwwLR1BLSVJvb3RDQTEwHhcNMTEwODAzMDY1MjMwWhcNMzEwODAzMDY1MjMw
+WjBQMQswCQYDVQQGEwJLUjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBLb3JlYTEN
+MAsGA1UECwwER1BLSTEUMBIGA1UEAwwLR1BLSVJvb3RDQTEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCh/m8EBbDJhGQyN2+g5dTlsgjtaRKqhgj3gkYK
+BgtuXsXkaTVxbf99AvbN3QE8+WCIaPJUd0091UGmLzaBVyW4ct+iUNrX/FXyzjaf
+bNbbl1nfHhaZhkiOTVQhmY5zuj96evEtJMevnxe6iRADOPWnqp+CxT2IzcSFkQCq
+7L2qn8hU2/LpXUvnAYglJZi8t6Ef+r03P1r8dA5OzZ8yV3qhD1R1wsNQtCzMgwcE
+rFRZhFZYuxpfmS5y0fZW0seeTjcdxHiR3whYI5U6AI7DjdWIrT9Cd9ByV4aevkBh
+qkePPIYGmUPXnnqCkdHdnzkMH0WP9TBhD2jTXZKdcFtTyEJrAgMBAAGjQjBAMB0G
+A1UdDgQWBBR4A+sMjKbTVXWkh7Tr0ZpmD0xzizAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEARGJWATwo81x7UEQugNbi
+cL8IWXoV51SZVH3kz49fNUjVoq1n2yzfaMddlblbflDNObp/68DxTlSXCeqFHkgi
+/WvyVHERRECXnF0WeeelI+Q8XdF3IJZLT3u5Ss0VAB2loCuC+4hBWSRQu2WZu2Yk
+s9eBN0x6NmtopRmnf2d6VrcFA+WOgUeTjXiDkG52IaPw0w1uTfmRw5epky5idyY2
+bfJ1JeVUINMJnOWpgLkOH3xxakoD8F1Fbi6C3t7MmKupojUq/toUDms6zTk3DIkc
+wd7PALNWL5U8TxNLoroTHSf/lzaOv3o9KDRa0FQo58bPI7MdbRWE4F3mS/ZIrnv7
+jQ==
+-----END CERTIFICATE-----
diff --git a/stdnum/kr/brn.py b/stdnum/kr/brn.py
index c004aa98..652ecf39 100644
--- a/stdnum/kr/brn.py
+++ b/stdnum/kr/brn.py
@@ -2,6 +2,7 @@
# coding: utf-8
#
# Copyright (C) 2020 Leandro Regueiro
+# Copyright (C) 2020 Arthur de Jong
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -83,3 +84,19 @@ def format(number):
"""Reformat the number to the standard presentation format."""
number = compact(number)
return '-'.join([number[:3], number[3:5], number[5:]])
+
+
+def check_ftc(number, timeout=30): # pragma: no cover
+ """Check the number against the Korea Fair Trade Commission website."""
+ from pkg_resources import resource_filename
+ import lxml.html
+ import requests
+ number = compact(number)
+ url = 'https://www.ftc.go.kr/bizCommPop.do'
+ certificate = resource_filename(__name__, 'GPKIRootCA1.crt')
+ document = lxml.html.fromstring(
+ requests.get(url, params={'wrkr_no': number}, timeout=timeout, verify=certificate).text)
+ data = dict(zip(
+ [(x.text or '').strip() for x in document.findall('.//th')],
+ [(x.text or '').strip() for x in document.findall('.//td')]))
+ return data or None
diff --git a/tests/test_kr_brn.py b/tests/test_kr_brn.py
new file mode 100644
index 00000000..31cd9d6a
--- /dev/null
+++ b/tests/test_kr_brn.py
@@ -0,0 +1,46 @@
+# test_kr_brn.py - functions for testing the online BRN validation
+# coding: utf-8
+#
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+# This is a separate test file because it should not be run regularly
+# because it could negatively impact the online service.
+
+"""Extra tests for the stdnum.kr.brn module."""
+
+import os
+import unittest
+
+from stdnum.kr import brn
+
+
+@unittest.skipIf(
+ not os.environ.get('ONLINE_TESTS'),
+ 'Do not overload online services')
+class TestFTC(unittest.TestCase):
+ """Test the check provided based on the Korea Fair Trade Commission
+ website."""
+
+ def test_check_ftc(self):
+ """Test stdnum.kr.brn.check_ftc()"""
+ # Test a normal valid number
+ result = brn.check_ftc('109-81-39795')
+ self.assertTrue(result)
+ # Test an invalid number
+ result = brn.check_ftc('109-81-39796')
+ self.assertIsNone(result)
From a34a76dc657e6213e5116fdb399cba75bdba67cb Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sat, 18 Apr 2020 18:29:16 +0200
Subject: [PATCH 031/296] Add support for Vietnam TIN number
Closes https://github.com/arthurdejong/python-stdnum/issues/217
Closes https://github.com/arthurdejong/python-stdnum/pull/218
---
stdnum/vn/__init__.py | 24 ++++
stdnum/vn/mst.py | 114 +++++++++++++++++++
tests/test_vn_mst.doctest | 230 ++++++++++++++++++++++++++++++++++++++
3 files changed, 368 insertions(+)
create mode 100644 stdnum/vn/__init__.py
create mode 100644 stdnum/vn/mst.py
create mode 100644 tests/test_vn_mst.doctest
diff --git a/stdnum/vn/__init__.py b/stdnum/vn/__init__.py
new file mode 100644
index 00000000..62552bce
--- /dev/null
+++ b/stdnum/vn/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of Vietnam numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of Vietnam numbers."""
+
+# provide aliases
+from stdnum.vn import mst as vat # noqa: F401
diff --git a/stdnum/vn/mst.py b/stdnum/vn/mst.py
new file mode 100644
index 00000000..a8cc4175
--- /dev/null
+++ b/stdnum/vn/mst.py
@@ -0,0 +1,114 @@
+# nit.py - functions for handling Vietnam MST numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""MST (Mã số thuế, Vietnam tax number).
+
+This number consists of 10 digits. Branches have a 13 digit number,
+where the first ten digits are the same as the parent company's.
+
+The first two digits is the province code where the business was
+established. If an enterprise relocates its head office from one
+province to another, ths MST will remain unchanged.
+
+The following seven digits are a sequential number from 0000001 to
+9999999.
+
+The tenth digit is the check digit for the first nine digits, which is
+used to verify the number was correctly typed.
+
+The last optional three digits are a sequence from 001 to 999
+indicating branches of the enterprise. These digits are usually
+separated from the first ten digits using a dash (-)
+
+More information:
+
+* https://vi.wikipedia.org/wiki/Thuế_Việt_Nam#Mã_số_thuế_(MST)_của_doanh_nghiệp
+* https://easyinvoice.vn/ma-so-thue/
+* https://ub.com.vn/threads/huong-dan-tra-cuu-ma-so-thue-doanh-nghiep-moi-nhat.261393/
+
+>>> validate('0100233488')
+'0100233488'
+>>> validate('0314409058-002')
+'0314409058002'
+>>> validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> validate('0100233480')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> format('01.00.112.437')
+'0100112437'
+>>> format('0312 68 78 78 - 001')
+'0312687878-001'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace.
+ """
+ return clean(number, ' -.').strip()
+
+
+def calc_check_digit(number):
+ """Calculate the check digit."""
+ weights = (31, 29, 23, 19, 17, 13, 7, 5, 3)
+ total = sum(w * int(n) for w, n in zip(weights, number))
+ return str(10 - (total % 11))
+
+
+def validate(number):
+ """Check if the number is a valid Vietnam MST number.
+
+ This checks the length, formatting and check digit.
+ """
+ number = compact(number)
+ if len(number) not in (10, 13):
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ if number[2:9] == '0000000':
+ raise InvalidComponent()
+ if len(number) == 13 and number[-3:] == '000':
+ raise InvalidComponent()
+ if number[9] != calc_check_digit(number):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid Vietnam MST number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ number = compact(number)
+ return number if len(number) == 10 else '-'.join([number[:10], number[10:]])
diff --git a/tests/test_vn_mst.doctest b/tests/test_vn_mst.doctest
new file mode 100644
index 00000000..54789c9b
--- /dev/null
+++ b/tests/test_vn_mst.doctest
@@ -0,0 +1,230 @@
+test_vn_mst.doctest - more detailed doctests for stdnum.vn.mst module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.vn.mst module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.vn import mst
+
+
+Tests for some corner cases.
+
+>>> mst.validate('0100233488')
+'0100233488'
+>>> mst.validate('0314409058-002')
+'0314409058002'
+>>> mst.validate('0312 68 78 78 - 001')
+'0312687878001'
+>>> mst.format('01.00.112.437')
+'0100112437'
+>>> mst.format('0312 68 78 78 - 001')
+'0312687878-001'
+>>> mst.validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> mst.validate('VV34567890')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> mst.validate('0100000008')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> mst.validate('0314409058-000')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> mst.validate('0100233480')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 01.00.112.437
+... 0100112437011
+... 0100233488
+... 0101245486
+... 0102182292
+... 0102278149
+... 0102328512
+... 0102638049
+... 0102641429-066
+... 0102721191-001
+... 0102723382
+... 0103131621
+... 0103326250
+... 0103581701
+... 0105022466
+... 0105330703
+... 0105869220
+... 0105958840
+... 0106142205
+... 0106713191
+... 0106824279
+... 0106897051
+... 0106929352
+... 0107338930
+... 0107371744
+... 0107408553
+... 0107430703
+... 0107526719
+... 0107568451
+... 0107959889
+... 0107984081
+... 0108024302
+... 0108100828
+... 0108200276
+... 0108256430
+... 0108747679
+... 0108880215
+... 0109120150
+... 0109161862
+... 0200747399
+... 0201900138
+... 0201909807
+... 0201910834
+... 0300533351
+... 0301471348
+... 0302082048
+... 0302787672
+... 0302971199
+... 0303025606
+... 0303104343
+... 0303177976
+... 0303217354
+... 0303789707
+... 0304436870
+... 0304475742
+... 0304541339
+... 0305000124
+... 0305060028
+... 0305322160
+... 0305338315
+... 0305592294
+... 0306404183
+... 0308023320
+... 0309485335
+... 0310213840
+... 0310350004
+... 0311 916 028
+... 0311592398
+... 0311693854
+... 0311892472
+... 0311933841
+... 0312 68 78 78 - 001
+... 0312273838
+... 0312386285
+... 0312615305
+... 0312971744
+... 0313322647
+... 0313511637
+... 0313547048
+... 0313752826
+... 0313844499
+... 0313883096
+... 0314179100
+... 0314390745
+... 0314409058-002
+... 0314425155
+... 0314715626
+... 0314797650
+... 0314817730
+... 0315406620
+... 0315427476
+... 0315469356
+... 0315615423
+... 0315641254
+... 0315649013
+... 0315675711
+... 0316079077
+... 0316095304
+... 0316110224
+... 0400129230
+... 0400583250
+... 0401 443 048
+... 0401958914
+... 0700790272
+... 0900283167
+... 1201480559
+... 1300440846-008
+... 1600255033-006
+... 1600699712-004
+... 1601223524
+... 1801314923
+... 2000102580
+... 2000102580-001
+... 2000102580-002
+... 2000102580-003
+... 2000102580-004
+... 2000102580-005
+... 2000730546-015
+... 2000961769-009
+... 2100624710
+... 2300376864
+... 2500291713
+... 2800886119
+... 2901807716
+... 3100104093-009
+... 3200707377
+... 3300273243-005
+... 3301595028
+... 3400416992-007
+... 3500748818
+... 3500865800
+... 3600532315
+... 3602404615
+... 3603277021
+... 3603718156
+... 3700635642
+... 3700751416
+... 3701398754
+... 3702499152
+... 3702642596
+... 3900260711
+... 3900956516
+... 3901166775
+... 3901203321
+... 4000107409
+... 4001100318
+... 4001170925
+... 4200919944
+... 4201783848
+... 4401031161
+... 4900224296
+... 4900813164
+... 5200327611
+... 5200869050
+... 5400478872
+... 5500340437
+... 5701424091
+... 5800199577-002
+... 5900705097
+... 8037630690
+... 8463763902
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not mst.is_valid(x)]
+[]
From 71128746b8215568d1ea15d2577b3408670f4892 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sun, 8 Mar 2020 13:36:16 +0100
Subject: [PATCH 032/296] Add support for Indonesian NPWP
Closes https://github.com/arthurdejong/python-stdnum/issues/106
Closes https://github.com/arthurdejong/python-stdnum/pull/198
---
stdnum/id/__init__.py | 24 ++++++
stdnum/id/npwp.py | 87 ++++++++++++++++++++
tests/test_id_npwp.doctest | 160 +++++++++++++++++++++++++++++++++++++
3 files changed, 271 insertions(+)
create mode 100644 stdnum/id/__init__.py
create mode 100644 stdnum/id/npwp.py
create mode 100644 tests/test_id_npwp.doctest
diff --git a/stdnum/id/__init__.py b/stdnum/id/__init__.py
new file mode 100644
index 00000000..a574bd54
--- /dev/null
+++ b/stdnum/id/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of Indonesian numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of Indonesian numbers."""
+
+# provide aliases
+from stdnum.id import npwp as vat # noqa: F401
diff --git a/stdnum/id/npwp.py b/stdnum/id/npwp.py
new file mode 100644
index 00000000..de14a545
--- /dev/null
+++ b/stdnum/id/npwp.py
@@ -0,0 +1,87 @@
+# npwp.py - functions for handling Indonesian NPWP numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number).
+
+The Nomor Pokok Wajib Pajak (NPWP) is assigned to organisations and
+individuals (families) by the Indonesian Tax Office after registration by the
+tax payers.
+
+The number consists of 15 digits of which the first 2 denote the type of
+entity, 6 digits to identify the tax payer, a check digit over the first 8
+digits followed by 3 digits to identify the local tax office and 3 digits for
+branch code.
+
+More information:
+
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Indonesia-TIN.pdf
+* https://metacpan.org/pod/Business::ID::NPWP
+* https://wiki.scn.sap.com/wiki/display/CRM/Indonesia
+
+>>> validate('01.312.166.0-091.000')
+'013121660091000'
+>>> validate('016090524017000')
+'016090524017000'
+>>> validate('123456789')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> format('013000666091000')
+'01.300.066.6-091.000'
+"""
+
+from stdnum import luhn
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes
+ surrounding whitespace.
+ """
+ return clean(number, ' -.').strip()
+
+
+def validate(number):
+ """Check if the number is a valid Indonesia NPWP number."""
+ number = compact(number)
+ if len(number) != 15:
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ luhn.validate(number[:9])
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid Indonesia NPWP number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ number = compact(number)
+ return '%s.%s.%s.%s-%s.%s' % (
+ number[:2], number[2:5], number[5:8], number[8], number[9:12], number[12:])
diff --git a/tests/test_id_npwp.doctest b/tests/test_id_npwp.doctest
new file mode 100644
index 00000000..13a78d9e
--- /dev/null
+++ b/tests/test_id_npwp.doctest
@@ -0,0 +1,160 @@
+test_id_npwp.doctest - more detailed doctests for stdnum.id.npwp module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.id.npwp module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.id import npwp
+
+
+Tests for some corner cases.
+
+>>> npwp.validate('023869720091000')
+'023869720091000'
+>>> npwp.validate('01.451.869.0-054.000')
+'014518690054000'
+>>> npwp.validate('02 . 433 . 917 . 8 - 011 . 000')
+'024339178011000'
+>>> npwp.format('013319595054000')
+'01.331.959.5-054.000'
+>>> npwp.validate('12345678901234')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> npwp.validate('FF3456789012345')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> npwp.validate('01.451.869.7-054.000')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 01.001.610.3-051.000
+... 01.001.634.3-093.000
+... 01.105.197.6-424.000
+... 01.112.397.3-441.000
+... 01.125.612.0-805.000
+... 01.129.154.9-201.000
+... 01.216.271.5-441.000
+... 01.258.022.1-201.000
+... 01.268.426.2-201.000
+... 01.311.830.2-073.000
+... 01.318.451.0-054.000
+... 01.334.427.0-054.000
+... 01.347.428.3-018.000
+... 01.360.902.9-054.000
+... 01.436.246.1-441.000
+... 01.452.340.1-101.000
+... 01.455.616.1-441.000
+... 01.457.751.4-426.000
+... 01.464.753.1-542.000
+... 01.482.738.0-424.000
+... 01.504.513.1-054.000
+... 01.546.704.6-012.000
+... 01.546.836.6-013.000
+... 01.548.436.3-423.000
+... 01.555.547.7-429.000
+... 01.562.420.8-805.000
+... 01.575.888.1-101.000
+... 01.580.769.6-201.000
+... 01.627.251.0-404.000
+... 01.657.878.3-101.000
+... 01.671.242.4-054.000
+... 01.677.930.8-429.000
+... 01.690.679.4-801.000
+... 01.709.626.4-054.000
+... 01.721.123.6-054.000
+... 01.773.770.1-805.000
+... 01.796.259.8-805.000
+... 01.815.656.2-807.000
+... 01.931.919.3-101.000
+... 01.966.099.2-801.000
+... 01.997.870.9-038.000
+... 010692903641000
+... 017048299643001
+... 02.037.103.5-502.000
+... 02.071.326.9-101.000
+... 02.071.363.2-101.000
+... 02.081.228.5-424.000
+... 02.098.700.4-013.000
+... 02.098.788.9-013.000
+... 02.102.011.0-101.000
+... 02.151.039.1-106.000
+... 02.173.740.8-002.000
+... 02.203.654.5-429.000
+... 02.333.122.6-441.000
+... 02.367.986.3-426.000
+... 02.399.244.9-091.000
+... 02.446.000.8-429.000
+... 02.480.884.2-444.000
+... 02.504.191.4-054.000
+... 02.527.123.0-017.000
+... 02.547.885.0-805.000
+... 02.564.234.9-421.000
+... 02.585.033.0-216.000
+... 02.643.101.5-805.000
+... 02.650.677.4-101.000
+... 02.679.257.2-801.000
+... 02.719.242.6-106.000
+... 02.755.249.6-541.000
+... 02.790.820.1-428.000
+... 02.887.783.5-105.000
+... 02.910.648.1-805.000
+... 02.932.094.2-101.000
+... 02.956.222.0-106.000
+... 02.956.223.8-106.000
+... 02.972.041.4-428.000
+... 02.976.331.5-103.000
+... 02.984.042.8-201.000
+... 03.026.787.6-805.000
+... 03.195.088.4-801.000
+... 03.217.024.3-805.000
+... 21.078.367.6-424.000
+... 31.294.519.9-424.000
+... 31.470.209.3-428.000
+... 31.496.676.3-106.000
+... 31.578.913.1-201.000
+... 31.682.116.4-201.000
+... 31.696.264.6-201.000
+... 31.729.429.6-542.000
+... 66.487.591.1-071.000
+... 70.838.297.3-201.000
+... 71.269.216.9-203.000
+... 75.193.535.4-805.000
+... 755023033513000
+... 762278075077000
+... 764038907023000
+... 811145994124000
+... 813195435017000
+... 83.132.665.7-201.000
+... 84.054.217.9-609.000
+... 846150324629000
+... 90.004.581.6-201.000
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not npwp.is_valid(x)]
+[]
From 291b8311898b103d5d6c0e38fd2ae3dcde48c4c1 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 5 Jul 2020 19:04:49 +0200
Subject: [PATCH 033/296] Avoid newer isort for flake8 tests
Do not install the latest isort because it currently breaks
flake8-isort. This pinning should be removed as soon as
https://github.com/gforcada/flake8-isort/issues/88 is resolved.
---
tox.ini | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tox.ini b/tox.ini
index 98e2735f..120baece 100644
--- a/tox.ini
+++ b/tox.ini
@@ -31,6 +31,9 @@ deps = flake8
flake8-tidy-imports
flake8-tuple
pep8-naming
+ # keep the following until this is fixed:
+ # https://github.com/gforcada/flake8-isort/issues/88
+ isort<5
commands = flake8 stdnum tests update setup.py
[testenv:docs]
From dab926cfd86b6dc85f688de59b398ca98320b577 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sun, 5 Apr 2020 20:30:43 +0200
Subject: [PATCH 034/296] Add support for Taiwan TIN number
Closes https://github.com/arthurdejong/python-stdnum/pull/214
Closes https://github.com/arthurdejong/python-stdnum/issues/209
---
stdnum/tw/__init__.py | 24 +++++
stdnum/tw/ubn.py | 93 +++++++++++++++++
tests/test_tw_ubn.doctest | 208 ++++++++++++++++++++++++++++++++++++++
3 files changed, 325 insertions(+)
create mode 100644 stdnum/tw/__init__.py
create mode 100644 stdnum/tw/ubn.py
create mode 100644 tests/test_tw_ubn.doctest
diff --git a/stdnum/tw/__init__.py b/stdnum/tw/__init__.py
new file mode 100644
index 00000000..d79cc3db
--- /dev/null
+++ b/stdnum/tw/__init__.py
@@ -0,0 +1,24 @@
+# __init__.py - collection of Taiwanese numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""Collection of Taiwanese numbers."""
+
+# provide aliases
+from stdnum.tw import ubn as vat # noqa: F401
diff --git a/stdnum/tw/ubn.py b/stdnum/tw/ubn.py
new file mode 100644
index 00000000..efae7406
--- /dev/null
+++ b/stdnum/tw/ubn.py
@@ -0,0 +1,93 @@
+# ubn.py - functions for handling Taiwanese UBN numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""UBN (Unified Business Number, 統一編號, Taiwanese tax number).
+
+The Unified Business Number (UBN, 統一編號) is the number assigned to businesses
+within Taiwan for tax (VAT) purposes. The number consists of 8 digits, the
+last being a check digit.
+
+More information:
+
+* https://zh.wikipedia.org/wiki/統一編號
+* https://findbiz.nat.gov.tw/fts/query/QueryBar/queryInit.do?request_locale=en
+
+>>> validate('00501503')
+'00501503'
+>>> validate('00501502')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+>>> validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> format(' 0050150 3 ')
+'00501503'
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace.
+ """
+ return clean(number, ' -').strip()
+
+
+def calc_checksum(number):
+ """Calculate the checksum over the number."""
+ # convert to numeric first, then sum individual digits
+ weights = (1, 2, 1, 2, 1, 2, 4, 1)
+ number = ''.join(str(w * int(n)) for w, n in zip(weights, number))
+ return sum(int(n) for n in number) % 10
+
+
+def validate(number):
+ """Check if the number is a valid Taiwan UBN number.
+
+ This checks the length, formatting and check digit.
+ """
+ number = compact(number)
+ if len(number) != 8:
+ raise InvalidLength()
+ if not isdigits(number):
+ raise InvalidFormat()
+ checksum = calc_checksum(number)
+ if not (checksum == 0 or (checksum == 9 and number[6] == '7')):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid Taiwan UBN number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
+
+
+def format(number):
+ """Reformat the number to the standard presentation format."""
+ return compact(number)
diff --git a/tests/test_tw_ubn.doctest b/tests/test_tw_ubn.doctest
new file mode 100644
index 00000000..127f636d
--- /dev/null
+++ b/tests/test_tw_ubn.doctest
@@ -0,0 +1,208 @@
+test_tw_ubn.doctest - more detailed doctests for stdnum.tw.ubn module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.tw.ubn module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.tw import ubn
+
+
+Tests for some corner cases.
+
+>>> ubn.validate('00277104')
+'00277104'
+>>> ubn.validate(' 0027710-4 ')
+'00277104'
+>>> ubn.format(' 0027710-4 ')
+'00277104'
+>>> ubn.validate('12345')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> ubn.validate('FF277104')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> ubn.validate('00277103')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... 00501503
+... 00508203
+... 00520500
+... 00965067
+... 00992156
+... 01006018
+... 01012715
+... 01013257
+... 01031918
+... 01671049
+... 01819129
+... 02255149
+... 02612809
+... 02695934
+... 02810218
+... 02810370
+... 02810478
+... 02811286
+... 02811574
+... 03729709
+... 03731705
+... 03734203
+... 03734246
+... 03734301
+... 03735202
+... 03737200
+... 03753600
+... 03787502
+... 03807654
+... 04173812
+... 05600361
+... 06313774
+... 06476734
+... 08149429
+... 08551977
+... 09561093
+... 11337775
+... 12800766
+... 14293457
+... 21100531
+... 22822281
+... 24718587
+... 24932469
+... 25329369
+... 27940723
+... 28148905
+... 28674499
+... 29116418
+... 29137568
+... 40407602
+... 45000103
+... 45888690
+... 46804706
+... 46804804
+... 50872698
+... 52011008
+... 52020800
+... 52697649
+... 53020997
+... 53084078
+... 53235414
+... 53412564
+... 54381049
+... 54663032
+... 54664996
+... 55508115
+... 57301337
+... 57302906
+... 58815405
+... 59372104
+... 60004108
+... 60004304
+... 61611307
+... 61611405
+... 61611502
+... 64004306
+... 64967512
+... 66018608
+... 66019206
+... 66019304
+... 69115908
+... 69116202
+... 69116408
+... 69116701
+... 71802305
+... 71803607
+... 71804508
+... 73761420
+... 76001900
+... 77495542
+... 78962740
+... 80158777
+... 84846045
+... 86521248
+... 87402608
+... 87814088
+... 88504104
+... 88507003
+... 89398405
+... 91003907
+... 91004005
+... 91605801
+... 91746936
+... 93504202
+... 93504408
+... 95927022
+... 99033073
+... 99326850
+... 99595290
+... 99595989
+... 99596220
+... 99596468
+... 99651948
+... 99653306
+... 99663965
+... 99665979
+... 99667982
+... 99668027
+... 99668336
+... 99669193
+... 99685399
+... 99688662
+... 99696641
+... 99736030
+... 99745468
+... 99749204
+... 99756176
+... 99757338
+... 99786158
+... 99809976
+... 99830984
+... 99833899
+... 99841053
+... 99842031
+... 99848387
+... 99849512
+... 99853521
+... 99855648
+... 99856230
+... 99861923
+... 99879748
+... 99884812
+... 99892600
+... 99894425
+... 99904177
+... 99924856
+... 99931596
+... 99936918
+... 99937037
+... 99940188
+... 99963479
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not ubn.is_valid(x)]
+[]
From feca1fe4e717ff69d6471119082f4435e16adcae Mon Sep 17 00:00:00 2001
From: evaldez89
Date: Fri, 31 Jul 2020 21:48:03 -0400
Subject: [PATCH 035/296] Scape new line character
Closes https://github.com/arthurdejong/python-stdnum/pull/233
Closes https://github.com/arthurdejong/python-stdnum/issues/232
---
stdnum/do/rnc.py | 2 +-
tests/test_do_rnc.py | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/stdnum/do/rnc.py b/stdnum/do/rnc.py
index 6bac651b..ddc6c3b6 100644
--- a/stdnum/do/rnc.py
+++ b/stdnum/do/rnc.py
@@ -112,7 +112,7 @@ def _convert_result(result): # pragma: no cover
}
return dict(
(translation.get(key, key), value)
- for key, value in json.loads(result.replace('\t', '\\t')).items())
+ for key, value in json.loads(result.replace('\n', '\\n').replace('\t', '\\t')).items())
def check_dgii(number, timeout=30): # pragma: no cover
diff --git a/tests/test_do_rnc.py b/tests/test_do_rnc.py
index fd2336a7..9ea06c93 100644
--- a/tests/test_do_rnc.py
+++ b/tests/test_do_rnc.py
@@ -53,6 +53,10 @@ def test_check_dgii(self):
# Test a number on the whitelist
result = rnc.check_dgii('501658167')
self.assertEqual(result['rnc'], '501658167')
+ # Test the output unescaping (\t and \n) of the result so JSON
+ # deserialisation works
+ result = rnc.check_dgii('132070801')
+ self.assertEqual(result['rnc'], '132070801')
def test_search_dgii(self):
"""Test stdnum.do.rnc.search_dgii()"""
From 51a122db946d3a1db04e9001d0de3c9fc38d2633 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 2 Aug 2020 16:56:42 +0200
Subject: [PATCH 036/296] Remove custom CA certificate for www.ftc.go.kr
This certificate is not needed any more because the site now uses a
different certificate that is signed by a known CA.
---
stdnum/kr/GPKIRootCA1.crt | 21 ---------------------
stdnum/kr/brn.py | 4 +---
2 files changed, 1 insertion(+), 24 deletions(-)
delete mode 100644 stdnum/kr/GPKIRootCA1.crt
diff --git a/stdnum/kr/GPKIRootCA1.crt b/stdnum/kr/GPKIRootCA1.crt
deleted file mode 100644
index 20fc1c78..00000000
--- a/stdnum/kr/GPKIRootCA1.crt
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDXTCCAkWgAwIBAgIBATANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJLUjEc
-MBoGA1UECgwTR292ZXJubWVudCBvZiBLb3JlYTENMAsGA1UECwwER1BLSTEUMBIG
-A1UEAwwLR1BLSVJvb3RDQTEwHhcNMTEwODAzMDY1MjMwWhcNMzEwODAzMDY1MjMw
-WjBQMQswCQYDVQQGEwJLUjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBLb3JlYTEN
-MAsGA1UECwwER1BLSTEUMBIGA1UEAwwLR1BLSVJvb3RDQTEwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCh/m8EBbDJhGQyN2+g5dTlsgjtaRKqhgj3gkYK
-BgtuXsXkaTVxbf99AvbN3QE8+WCIaPJUd0091UGmLzaBVyW4ct+iUNrX/FXyzjaf
-bNbbl1nfHhaZhkiOTVQhmY5zuj96evEtJMevnxe6iRADOPWnqp+CxT2IzcSFkQCq
-7L2qn8hU2/LpXUvnAYglJZi8t6Ef+r03P1r8dA5OzZ8yV3qhD1R1wsNQtCzMgwcE
-rFRZhFZYuxpfmS5y0fZW0seeTjcdxHiR3whYI5U6AI7DjdWIrT9Cd9ByV4aevkBh
-qkePPIYGmUPXnnqCkdHdnzkMH0WP9TBhD2jTXZKdcFtTyEJrAgMBAAGjQjBAMB0G
-A1UdDgQWBBR4A+sMjKbTVXWkh7Tr0ZpmD0xzizAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEARGJWATwo81x7UEQugNbi
-cL8IWXoV51SZVH3kz49fNUjVoq1n2yzfaMddlblbflDNObp/68DxTlSXCeqFHkgi
-/WvyVHERRECXnF0WeeelI+Q8XdF3IJZLT3u5Ss0VAB2loCuC+4hBWSRQu2WZu2Yk
-s9eBN0x6NmtopRmnf2d6VrcFA+WOgUeTjXiDkG52IaPw0w1uTfmRw5epky5idyY2
-bfJ1JeVUINMJnOWpgLkOH3xxakoD8F1Fbi6C3t7MmKupojUq/toUDms6zTk3DIkc
-wd7PALNWL5U8TxNLoroTHSf/lzaOv3o9KDRa0FQo58bPI7MdbRWE4F3mS/ZIrnv7
-jQ==
------END CERTIFICATE-----
diff --git a/stdnum/kr/brn.py b/stdnum/kr/brn.py
index 652ecf39..3bdea1d7 100644
--- a/stdnum/kr/brn.py
+++ b/stdnum/kr/brn.py
@@ -88,14 +88,12 @@ def format(number):
def check_ftc(number, timeout=30): # pragma: no cover
"""Check the number against the Korea Fair Trade Commission website."""
- from pkg_resources import resource_filename
import lxml.html
import requests
number = compact(number)
url = 'https://www.ftc.go.kr/bizCommPop.do'
- certificate = resource_filename(__name__, 'GPKIRootCA1.crt')
document = lxml.html.fromstring(
- requests.get(url, params={'wrkr_no': number}, timeout=timeout, verify=certificate).text)
+ requests.get(url, params={'wrkr_no': number}, timeout=timeout).text)
data = dict(zip(
[(x.text or '').strip() for x in document.findall('.//th')],
[(x.text or '').strip() for x in document.findall('.//td')]))
From 505521e2341306700958d698b8f73a608e687191 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 2 Aug 2020 17:30:20 +0200
Subject: [PATCH 037/296] Support foreign residents for Romanian CNP
This supports 7 or 8 as first digits in the CNP which are apparently
used to identify foreign residents.
This also changes the exception for an incorrect first digit from
InvalidFormat to InvalidComponent which is a little clearer.
Closes https://github.com/arthurdejong/python-stdnum/issues/230
---
stdnum/ro/cnp.py | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/stdnum/ro/cnp.py b/stdnum/ro/cnp.py
index e6bf8672..9247c9ab 100644
--- a/stdnum/ro/cnp.py
+++ b/stdnum/ro/cnp.py
@@ -1,7 +1,7 @@
# cnp.py - functions for handling Romanian CNP numbers
# coding: utf-8
#
-# Copyright (C) 2012-2019 Arthur de Jong
+# Copyright (C) 2012-2020 Arthur de Jong
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -23,12 +23,16 @@
The CNP is a 13 digit number that includes information on the person's
gender, birth date and country zone.
+More information:
+
+* https://ro.wikipedia.org/wiki/Cod_numeric_personal
+
>>> validate('1630615123457')
'1630615123457'
->>> validate('8800101221144') # invalid first digit
+>>> validate('0800101221142') # invalid first digit
Traceback (most recent call last):
...
-InvalidFormat: ...
+InvalidComponent: ...
>>> validate('1632215123457') # invalid date
Traceback (most recent call last):
...
@@ -52,8 +56,7 @@ def compact(number):
def calc_check_digit(number):
- """Calculate the check digit for personal codes. The number passed
- should not have the check digit included."""
+ """Calculate the check digit for personal codes."""
# note that this algorithm has not been confirmed by an independent source
weights = (2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9)
check = sum(w * int(n) for w, n in zip(weights, number)) % 11
@@ -79,9 +82,12 @@ def validate(number):
"""Check if the number is a valid VAT number. This checks the length,
formatting and check digit."""
number = compact(number)
- # first digit should be a known one (9=foreigner)
- if not isdigits(number) or number[0] not in '1234569':
+ if not isdigits(number):
raise InvalidFormat()
+ # first digit should be a known one
+ # (7,8=foreign resident, 9=other foreigner but apparently only as NIF)
+ if number[0] not in '123456789':
+ raise InvalidComponent()
if len(number) != 13:
raise InvalidLength()
# check if birth date is valid
From 94e2c6373e191e26beee6153ef2f99adcf31cf45 Mon Sep 17 00:00:00 2001
From: Mohammed Salman
Date: Tue, 2 Jun 2020 15:11:05 +0300
Subject: [PATCH 038/296] Add English Unique Tax Reference
Closes https://github.com/arthurdejong/python-stdnum/pull/227
---
stdnum/gb/utr.py | 72 +++++++++++++++++++++++++++++++++++++++
tests/test_gb_utr.doctest | 46 +++++++++++++++++++++++++
2 files changed, 118 insertions(+)
create mode 100644 stdnum/gb/utr.py
create mode 100644 tests/test_gb_utr.doctest
diff --git a/stdnum/gb/utr.py b/stdnum/gb/utr.py
new file mode 100644
index 00000000..958c7230
--- /dev/null
+++ b/stdnum/gb/utr.py
@@ -0,0 +1,72 @@
+# upn.py - functions for handling English UTRs
+#
+# Copyright (C) 2020 Holvi Payment Services
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""UTR (United Kingdom Unique Taxpayer Reference).
+
+A UTR (unique taxpayer reference) is a 10 digit number used to identify UK
+taxpayers who have to submit a tax return.
+
+More information:
+
+* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/UK-TIN.pdf
+
+>>> validate('1955839661')
+'1955839661'
+>>> validate('2955839661')
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ..
+"""
+
+from stdnum.exceptions import *
+from stdnum.util import clean, isdigits
+
+
+def compact(number):
+ """Convert the number to the minimal representation. This strips the
+ number of any valid separators and removes surrounding whitespace."""
+ return clean(number, ' ').upper().strip().lstrip('K')
+
+
+def calc_check_digit(number):
+ """Calculate the check digit for the number. The passed number should not
+ have the check digit (the first one) included."""
+ weights = (6, 7, 8, 9, 10, 5, 4, 3, 2)
+ return '21987654321'[sum(int(n) * w for n, w in zip(number, weights)) % 11]
+
+
+def validate(number):
+ """Check if the number is a valid UTR."""
+ number = compact(number)
+ if not isdigits(number):
+ raise InvalidFormat()
+ if not len(number) == 10:
+ raise InvalidLength()
+ if number[0] != calc_check_digit(number[1:]):
+ raise InvalidChecksum()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid UTR."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
diff --git a/tests/test_gb_utr.doctest b/tests/test_gb_utr.doctest
new file mode 100644
index 00000000..93637cca
--- /dev/null
+++ b/tests/test_gb_utr.doctest
@@ -0,0 +1,46 @@
+test_gb_utr.doctest - more detailed doctests for stdnum.gb.utr module
+
+Copyright (C) 2020 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.gb.utr module. It
+tries to test more corner cases and detailed functionality that is not really
+useful as module documentation.
+
+>>> from stdnum.gb import utr
+
+
+These numbers have been generated but have been confirmed to be correct using
+a different validator (they have not been confirmed to be assigned).
+
+>>> numbers = '''
+...
+... 1234567895
+... 1478641088
+... 1955839661
+... 2172858530
+... 2234567890
+... 4748949890
+... 5179265754
+... 5816619590
+... 8258106771
+... 9624088948
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not utr.is_valid(x)]
+[]
From c2284f322679e9527794aaa81e8fbb57792c5a21 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 2 Aug 2020 17:45:46 +0200
Subject: [PATCH 039/296] Add Romanian Trade Register identifier
Closes https://github.com/arthurdejong/python-stdnum/issues/229
Closes https://github.com/arthurdejong/python-stdnum/pull/234
---
stdnum/ro/onrc.py | 99 ++++++++++++++
tests/test_ro_onrc.doctest | 274 +++++++++++++++++++++++++++++++++++++
2 files changed, 373 insertions(+)
create mode 100644 stdnum/ro/onrc.py
create mode 100644 tests/test_ro_onrc.doctest
diff --git a/stdnum/ro/onrc.py b/stdnum/ro/onrc.py
new file mode 100644
index 00000000..da153e92
--- /dev/null
+++ b/stdnum/ro/onrc.py
@@ -0,0 +1,99 @@
+# onrc.py - functions for handling Romanian ONRC numbers
+# coding: utf-8
+#
+# Copyright (C) 2020 Dimitrios Josef Moustos
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier).
+
+All businesses in Romania have the to register with the National Trade
+Register Office to receive a registration number. The number contains
+information about the type of company, county, a sequence number and
+registration year.
+
+>>> validate('J52/750/2012')
+'J52/750/2012'
+>>> validate('X52/750/2012')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+"""
+
+import datetime
+import re
+
+from stdnum.exceptions import *
+from stdnum.util import clean
+
+
+# These characters should all be replaced by slashes
+_cleanup_re = re.compile(r'[ /\\-]+')
+
+# This pattern should match numbers that for some reason have a full date
+# as last field
+_onrc_fulldate_re = re.compile(r'^([A-Z][0-9]+/[0-9]+/)\d{2}[.]\d{2}[.](\d{4})$')
+
+# This pattern should match all valid numbers
+_onrc_re = re.compile(r'^[A-Z][0-9]+/[0-9]+/[0-9]+$')
+
+# List of valid counties
+_counties = set(list(range(1, 41)) + [51, 52])
+
+
+def compact(number):
+ """Convert the number to the minimal representation. This strips the
+ number of any valid separators and removes surrounding whitespace."""
+ number = _cleanup_re.sub('/', clean(number).upper().strip())
+ # remove optional slash between first letter and county digits
+ if number[1:2] == '/':
+ number = number[:1] + number[2:]
+ # normalise county number to two digits
+ if number[2:3] == '/':
+ number = number[:1] + '0' + number[1:]
+ # convert trailing full date to year only
+ m = _onrc_fulldate_re.match(number)
+ if m:
+ number = ''.join(m.groups())
+ return number
+
+
+def validate(number):
+ """Check if the number is a valid ONRC."""
+ number = compact(number)
+ if not _onrc_re.match(number):
+ raise InvalidFormat()
+ if number[:1] not in 'JFC':
+ raise InvalidComponent()
+ county, serial, year = number[1:].split('/')
+ if len(serial) > 5:
+ raise InvalidLength()
+ if len(county) not in (1, 2) or int(county) not in _counties:
+ raise InvalidComponent()
+ if len(year) != 4:
+ raise InvalidLength()
+ if int(year) < 1990 or int(year) > datetime.date.today().year:
+ raise InvalidComponent()
+ return number
+
+
+def is_valid(number):
+ """Check if the number is a valid ONRC."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
diff --git a/tests/test_ro_onrc.doctest b/tests/test_ro_onrc.doctest
new file mode 100644
index 00000000..6b47a5fd
--- /dev/null
+++ b/tests/test_ro_onrc.doctest
@@ -0,0 +1,274 @@
+test_ro_onrc.doctest - more detailed doctests for the stdnum.ro.onrc module
+
+Copyright (C) 2020 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.ro.onrc module.
+
+>>> from stdnum.ro import onrc
+>>> from stdnum.exceptions import *
+
+
+Test some corner cases.
+
+>>> onrc.validate('J/52/750/2012')
+'J52/750/2012'
+>>> onrc.validate('J52/750/22.11.2012') # valid, strip date, leave year
+'J52/750/2012'
+>>> onrc.validate('J 52 / 750 / 2012')
+'J52/750/2012'
+>>> onrc.validate('F 26 1132/2007')
+'F26/1132/2007'
+>>> onrc.validate('J22-1515-2007')
+'J22/1515/2007'
+>>> onrc.validate('X52/750/2012') # fist letter invalid
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> onrc.validate('J52/100000/2012') # second number too large
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> onrc.validate('J 52 / 750 / 200') # year too short
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> onrc.validate('J/2/750/2012') # county is normalised to two digits
+'J02/750/2012'
+>>> onrc.validate('J49/750/2012') # invalid county
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> onrc.validate('J002 /123 /2015') # invalid county
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> onrc.validate('J/52/750/2112') # year in the future
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+
+
+These have been found online and should all be valid numbers.
+
+>>> numbers = '''
+...
+... C04/32/2005
+... C22/4/2018
+... C30/2/2009
+... F01 /592 /2013
+... F01/1477/2011
+... F04/876/2004
+... F05/696/2006
+... F06/340/2011
+... F07/176/2010
+... F07/477/2003
+... F08/1095/2005
+... F10/841/2012
+... F11/78/2012
+... F12/617/2011
+... F13/1917/2005
+... F14/217/2013
+... F14/218/2016
+... F18/1032/2011
+... F20/491/2013
+... F30/98/2008
+... F31/786/2011
+... F32/639/2013
+... F36/64/2008
+... F37/832/2013
+... F40/682/2004
+... F5/1055/2013
+... F5/2659/2013
+... F5/550/2012
+... F5/678/2013
+... F6/496/2015
+... F8/1302/2013
+... F8/672/2012
+... J 01/585/2002
+... J 40/1323/2005
+... J01/173/2004
+... J01/568/2015
+... J02/1253/2008
+... J02/143/2011
+... J02/169/01.02.2006
+... J02/238/2012
+... J02/310/2004
+... J03/1336/2007
+... J03/179/2004
+... J03/2299/1992
+... J03/442/2002
+... J03/630/2002
+... J03/803/2009
+... J03/920/2002
+... J04/368/2006
+... J04/822/1994
+... J05/1117/2004
+... J05/1464/2011
+... J05/1729/09.09.1991
+... J05/256/2010
+... J05/5114/1994
+... J05/582/2011
+... J06/1282/1994
+... J06/307/2009
+... J06/330/2003
+... J06/52/2001
+... J06/837/2008
+... J07/147/2001
+... J07/208/1998
+... J08/1233/2005
+... J08/1617/1997
+... J08/1716/1997
+... J08/215/27.02.1998
+... J08/2679/2008
+... J08/2720/2007
+... J08/545/2001
+... J08/61/2010
+... J08/68/2003
+... J08/926/2008
+... J09/2118/1994
+... J1/384/13.05.2015
+... J1/398/2005
+... J1/499/2012
+... J1/628/2016
+... J10/460/2012
+... J12/1103/2003
+... J12/1366/2003
+... J12/1701/16.10.1996
+... J12/1811/2002
+... J12/1816/2007
+... J12/1932/1993
+... J12/2322/2002
+... J12/2553/1992
+... J12/3388/2016
+... J12/3828/16.06.2017
+... J12/4365/2006
+... J12/487/2012
+... J12/573/2010
+... J12/595/1991
+... J12/633/2012
+... J12/850/2014
+... J13/197/2012
+... J13/2949/1991
+... J13/529/2006
+... J13/60/2005
+... J13/674/2016
+... J15/1279/1993
+... J15/680/2005
+... J16/1148/2005
+... J16/1930/2013
+... J16/2036/2011
+... J17/1241/1992
+... J17/2697/1992
+... J17/861/2012
+... J18/583/2015
+... J18/877/2006
+... J19/230/2007
+... J19/55/2002
+... J20/2034/1993
+... J21/512/2016
+... J21/565/1992
+... J22/1249/2012
+... J22/1774/2008
+... J22/3673/1994
+... J22/874/1996
+... J22/930/2016
+... J23/134/27.01.2006
+... J23/1657/14.06.2012
+... J23/461/2009
+... J23/4802/2017
+... J23/864/2017
+... J24/1082/2015
+... J24/246/2005
+... J24/908/2006
+... J26/1077/2008
+... J29/264/2014
+... J30/428/1993
+... J30/477/2014
+... J30/482/2014
+... J30/722/08.08.2016
+... J30/734/2014
+... J30/855/1993
+... J30/99/2009
+... J31 / 248 / 1994
+... J32/2241/1994
+... J32/331/2011
+... J32/631/2013
+... J33/277/2011
+... J33/451/2012
+... J35/1056/2008
+... J35/48/2013
+... J35/625/2003
+... J36/25/2001
+... J36/284/2017
+... J36/369/2015
+... J36/637/2018
+... J36/691/2008
+... J37/384/2009
+... J38/163/23.02.2006
+... J39 /771 /2005
+... J40/10944/2006
+... J40/11566/2011
+... J40/11591/2003
+... J40/11591/2009
+... J40/1293/23.10.2014
+... J40/13920/2003
+... J40/1472/1992
+... J40/1498/2010
+... J40/1667/2010
+... J40/17202/2006
+... J40/19473/2006
+... J40/19754/2007
+... J40/20281/2004
+... J40/23948/14.12.1994
+... J40/24874/1994
+... J40/2810/2017
+... J40/2867/2004
+... J40/3758/2008
+... J40/3905/30.03.2015
+... J40/4206/2008
+... J40/4463/2008
+... J40/4502/2011
+... J40/467/1998
+... J40/5139/1998
+... J40/7613/2003
+... J40/7888/1999
+... J40/8005/1995
+... J40/8577/2006
+... J40/8633/2013
+... J40/8910/2007
+... J40/8998/2010
+... J40/9712/2008
+... J5/1243/2016
+... J5/2916/03.09.1993
+... J51/159/2016
+... J51/229/2011
+... J51/74/2009
+... J52/128/2014
+... J52/474/1994
+... J52/60/2004
+... J6/974/2016
+... J7/2/2005
+... j05/1455/2012
+... j30/61/2010
+... j39/151/2019
+... j40/3674/2002
+...
+... '''
+>>> [x for x in numbers.splitlines() if x and not onrc.is_valid(x)]
+[]
From 180788af207f394e38b458ad14fb68f4853f4a9a Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 8 Aug 2020 15:44:08 +0200
Subject: [PATCH 040/296] Add GS1-128 format
This adds validation, parsing and encoding functions for GS1-128. It is
based on the lists of formats as published by the GS1 organisation.
Based on the implementation provided by Sergi Almacellas Abellana
.
Closes https://github.com/arthurdejong/python-stdnum/pull/144
---
stdnum/gs1_128.py | 269 +++++++++++++++++++++++++++++++++++++
stdnum/gs1_ai.dat | 170 +++++++++++++++++++++++
tests/test_gs1_128.doctest | 148 ++++++++++++++++++++
update/gs1_ai.py | 82 +++++++++++
4 files changed, 669 insertions(+)
create mode 100644 stdnum/gs1_128.py
create mode 100644 stdnum/gs1_ai.dat
create mode 100644 tests/test_gs1_128.doctest
create mode 100755 update/gs1_ai.py
diff --git a/stdnum/gs1_128.py b/stdnum/gs1_128.py
new file mode 100644
index 00000000..aee11d27
--- /dev/null
+++ b/stdnum/gs1_128.py
@@ -0,0 +1,269 @@
+# gs1_128.py - functions for handling GS1-128 codes
+#
+# Copyright (C) 2019 Sergi Almacellas Abellana
+# Copyright (C) 2020 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""GS1-128 (Standard to encode product information in Code 128 barcodes).
+
+The GS1-128 (also called EAN-128, UCC/EAN-128 or UCC-128) is an international
+standard for embedding data such as best before dates, weights, etc. with
+Application Identifiers (AI).
+
+The GS1-128 standard is used as a product identification code on bar codes.
+It embeds data with Application Identifiers (AI) that defines the kind of
+data, the type and length. The standard is also known as UCC/EAN-128, UCC-128
+and EAN-128.
+
+GS1-128 is a subset of Code 128 symbology.
+
+More information:
+
+* https://en.wikipedia.org/wiki/GS1-128
+* https://www.gs1.org/standards/barcodes/application-identifiers
+* https://www.gs1.org/docs/barcodes/GS1_General_Specifications.pdf
+
+>>> compact('(01)38425876095074(17)181119(37)1 ')
+'013842587609507417181119371'
+>>> encode({'01': '38425876095074'})
+'0138425876095074'
+>>> info('0138425876095074')
+{'01': '38425876095074'}
+>>> validate('(17)181119(01)38425876095074(37)1')
+'013842587609507417181119371'
+"""
+
+import datetime
+import decimal
+import re
+
+from stdnum import numdb
+from stdnum.exceptions import *
+from stdnum.util import clean
+
+
+# our open copy of the application identifier database
+_gs1_aidb = numdb.get('gs1_ai')
+
+
+# Extra validation modules based on the application identifier
+_ai_validators = {
+ '01': 'stdnum.ean',
+ '02': 'stdnum.ean',
+ '8007': 'stdnum.iban',
+}
+
+
+def compact(number):
+ """Convert the GS1-128 to the minimal representation.
+
+ This strips the number of any valid separators and removes surrounding
+ whitespace. For a more consistent compact representation use
+ :func:`validate()`.
+ """
+ return clean(number, '()').strip()
+
+
+def _encode_value(fmt, _type, value):
+ """Encode the specified value given the format and type."""
+ if _type == 'decimal':
+ if isinstance(value, (list, tuple)) and fmt.startswith('N3+'):
+ number = _encode_value(fmt[3:], _type, value[1])
+ return number[0] + value[0].rjust(3, '0') + number[1:]
+ value = str(value)
+ if fmt.startswith('N..'):
+ length = int(fmt[3:])
+ value = value[:length + 1]
+ number, digits = (value.split('.') + [''])[:2]
+ digits = digits[:9]
+ return str(len(digits)) + number + digits
+ else:
+ length = int(fmt[1:])
+ value = value[:length + 1]
+ number, digits = (value.split('.') + [''])[:2]
+ digits = digits[:9]
+ return str(len(digits)) + (number + digits).rjust(length, '0')
+ elif _type == 'date':
+ if isinstance(value, (list, tuple)) and fmt == 'N6..12':
+ return '%s%s' % (
+ _encode_value('N6', _type, value[0]),
+ _encode_value('N6', _type, value[1]))
+ elif isinstance(value, datetime.date):
+ if fmt == 'N10':
+ return value.strftime('%y%m%d%H%M')
+ elif fmt == 'N8+N..4':
+ value = datetime.datetime.strftime(value, '%y%m%d%H%M%S')
+ if value.endswith('00'):
+ value = value[:-2]
+ if value.endswith('00'):
+ value = value[:-2]
+ return value
+ return value.strftime('%y%m%d')
+ return str(value)
+
+
+def _max_length(fmt, _type):
+ """Determine the maximum length based on the format ad type."""
+ length = sum(int(re.match(r'^[NXY][0-9]*?[.]*([0-9]+)$', x).group(1)) for x in fmt.split('+'))
+ if _type == 'decimal':
+ length += 1
+ return length
+
+
+def _pad_value(fmt, _type, value):
+ """Pad the value to the maximum length for the format."""
+ if _type in ('decimal', 'int'):
+ return value.rjust(_max_length(fmt, _type), '0')
+ return value.ljust(_max_length(fmt, _type))
+
+
+def _decode_value(fmt, _type, value):
+ """Decode the specified value given the fmt and type."""
+ if _type == 'decimal':
+ if fmt.startswith('N3+'):
+ return (value[1:4], _decode_value(fmt[3:], _type, value[0] + value[4:]))
+ digits = int(value[0])
+ value = value[1:]
+ if digits:
+ value = value[:-digits] + '.' + value[-digits:]
+ return decimal.Decimal(value)
+ elif _type == 'date':
+ if fmt == 'N8+N..4':
+ return datetime.datetime.strptime(value, '%y%m%d%H%M%S'[:len(value)])
+ elif len(value) == 10:
+ return datetime.datetime.strptime(value, '%y%m%d%H%M')
+ elif len(value) == 12:
+ return (_decode_value(fmt, _type, value[:6]), _decode_value(fmt, _type, value[6:]))
+ return datetime.datetime.strptime(value, '%y%m%d').date()
+ elif _type == 'int':
+ return int(value)
+ return value.strip()
+
+
+def info(number, separator=''):
+ """Return a dictionary containing the information from the GS1-128 code.
+
+ The returned dictionary maps application identifiers to values with the
+ appropriate type (`str`, `int`, `Decimal`, `datetime.date` or
+ `datetime.datetime`).
+
+ If a `separator` is provided it will be used as FNC1 to determine the end
+ of variable-sized values.
+ """
+ number = compact(number)
+ data = {}
+ identifier = ''
+ # skip separator
+ if separator and number.startswith(separator):
+ number = number[len(separator):]
+ while number:
+ # extract the application identifier
+ ai, info = _gs1_aidb.info(number)[0]
+ if not info or not number.startswith(ai):
+ raise InvalidComponent()
+ number = number[len(ai):]
+ # figure out the value part
+ value = number[:_max_length(info['format'], info['type'])]
+ if separator and info.get('fnc1', False):
+ idx = number.find(separator)
+ if idx > 0:
+ value = number[:idx]
+ number = number[len(value):]
+ # validate the value if we have a custom module for it
+ if ai in _ai_validators:
+ mod = __import__(_ai_validators[ai], globals(), locals(), ['validate'])
+ mod.validate(value)
+ # convert the number
+ data[ai] = _decode_value(info['format'], info['type'], value)
+ # skip separator
+ if separator and number.startswith(separator):
+ number = number[len(separator):]
+ return data
+
+
+def encode(data, separator='', parentheses=False):
+ """Generate a GS1-128 for the application identifiers supplied.
+
+ The provided dictionary is expected to map application identifiers to
+ values. The supported value types and formats depend on the application
+ identifier.
+
+ If a `separator` is provided it will be used as FNC1 representation,
+ otherwise variable-sized values will be expanded to their maximum size
+ with appropriate padding.
+
+ If `parentheses` is set the application identifiers will be surrounded
+ by parentheses for readability.
+ """
+ ai_fmt = '(%s)' if parentheses else '%s'
+ # we keep items sorted and keep fixed-sized values separate tot output
+ # them first
+ fixed_values = []
+ variable_values = []
+ for inputai, value in sorted(data.items()):
+ ai, info = _gs1_aidb.info(inputai)[0]
+ if not info:
+ raise InvalidComponent()
+ # validate the value if we have a custom module for it
+ if ai in _ai_validators:
+ mod = __import__(_ai_validators[ai], globals(), locals(), ['validate'])
+ mod.validate(value)
+ value = _encode_value(info['format'], info['type'], value)
+ # store variable-sized values separate from fixed-size values
+ if info.get('fnc1', False):
+ variable_values.append((ai_fmt % ai, info['format'], info['type'], value))
+ else:
+ fixed_values.append(ai_fmt % ai + value)
+ # we need the separator for all but the last variable-sized value
+ # (or pad values if we don't have a separator)
+ return ''.join(
+ fixed_values + [
+ ai + (value if separator else _pad_value(fmt, _type, value)) + separator
+ for ai, fmt, _type, value in variable_values[:-1]
+ ] + [
+ ai + value
+ for ai, fmt, _type, value in variable_values[-1:]
+ ])
+
+
+def validate(number, separator=''):
+ """Check if the number provided is a valid GS1-128.
+
+ This checks formatting of the number and values and returns a stable
+ representation.
+
+ If a separator is provided it will be used as FNC1 for both parsing the
+ provided number and for encoding the returned number.
+ """
+ try:
+ return encode(info(number, separator), separator)
+ except ValidationError:
+ raise
+ except Exception:
+ # We wrap all other exceptions to ensure that we only return
+ # exceptions that are a subclass of ValidationError
+ # (the info() and encode() functions expect some semblance of valid
+ # input)
+ raise InvalidFormat()
+
+
+def is_valid(number, separator=''):
+ """Check if the number provided is a valid GS1-128."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
diff --git a/stdnum/gs1_ai.dat b/stdnum/gs1_ai.dat
new file mode 100644
index 00000000..0b1ae6c2
--- /dev/null
+++ b/stdnum/gs1_ai.dat
@@ -0,0 +1,170 @@
+# generated from https://www.gs1.org/standards/barcodes/application-identifiers
+# on 2020-07-12 19:36:00.576283
+00 format="N18" type="str" name="SSCC" description="Serial Shipping Container Code (SSCC)"
+01 format="N14" type="str" name="GTIN" description="Global Trade Item Number (GTIN)"
+02 format="N14" type="str" name="CONTENT" description="GTIN of contained trade items"
+10 format="X..20" type="str" fnc1="1" name="BATCH/LOT" description="Batch or lot number"
+11 format="N6" type="date" name="PROD DATE" description="Production date (YYMMDD)"
+12 format="N6" type="date" name="DUE DATE" description="Due date (YYMMDD)"
+13 format="N6" type="date" name="PACK DATE" description="Packaging date (YYMMDD)"
+15 format="N6" type="date" name="BEST BEFORE or BEST BY" description="Best before date (YYMMDD)"
+16 format="N6" type="date" name="SELL BY" description="Sell by date (YYMMDD)"
+17 format="N6" type="date" name="USE BY OR EXPIRY" description="Expiration date (YYMMDD)"
+20 format="N2" type="str" name="VARIANT" description="Internal product variant"
+21 format="X..20" type="str" fnc1="1" name="SERIAL" description="Serial number"
+22 format="X..20" type="str" fnc1="1" name="CPV" description="Consumer product variant"
+235 format="X..28" type="str" fnc1="1" name="TPX" description="Third Party Controlled, Serialised Extension of GTIN (TPX)"
+240 format="X..30" type="str" fnc1="1" name="ADDITIONAL ID" description="Additional product identification assigned by the manufacturer"
+241 format="X..30" type="str" fnc1="1" name="CUST. PART NO." description="Customer part number"
+242 format="N..6" type="str" fnc1="1" name="MTO VARIANT" description="Made-to-Order variation number"
+243 format="X..20" type="str" fnc1="1" name="PCN" description="Packaging component number"
+250 format="X..30" type="str" fnc1="1" name="SECONDARY SERIAL" description="Secondary serial number"
+251 format="X..30" type="str" fnc1="1" name="REF. TO SOURCE" description="Reference to source entity"
+253 format="N13+X..17" type="str" fnc1="1" name="GDTI" description="Global Document Type Identifier (GDTI)"
+254 format="X..20" type="str" fnc1="1" name="GLN EXTENSION COMPONENT" description="GLN extension component"
+255 format="N13+N..12" type="str" fnc1="1" name="GCN" description="Global Coupon Number (GCN)"
+30 format="N..8" type="int" fnc1="1" name="VAR. COUNT" description="Variable count of items (variable measure trade item)"
+310 format="N6" type="decimal" name="NET WEIGHT (kg)" description="Net weight, kilograms (variable measure trade item)"
+311 format="N6" type="decimal" name="LENGTH (m)" description="Length or first dimension, metres (variable measure trade item)"
+312 format="N6" type="decimal" name="WIDTH (m)" description="Width, diameter, or second dimension, metres (variable measure trade item)"
+313 format="N6" type="decimal" name="HEIGHT (m)" description="Depth, thickness, height, or third dimension, metres (variable measure trade item)"
+314 format="N6" type="decimal" name="AREA (m2 )" description="Area, square metres (variable measure trade item)"
+315 format="N6" type="decimal" name="NET VOLUME (l)" description="Net volume, litres (variable measure trade item)"
+316 format="N6" type="decimal" name="NET VOLUME (m3 )" description="Net volume, cubic metres (variable measure trade item)"
+320 format="N6" type="decimal" name="NET WEIGHT (lb)" description="Net weight, pounds (variable measure trade item)"
+321 format="N6" type="decimal" name="LENGTH (in)" description="Length or first dimension, inches (variable measure trade item)"
+322 format="N6" type="decimal" name="LENGTH (ft)" description="Length or first dimension, feet (variable measure trade item)"
+323 format="N6" type="decimal" name="LENGTH (yd)" description="Length or first dimension, yards (variable measure trade item)"
+324 format="N6" type="decimal" name="WIDTH (in)" description="Width, diameter, or second dimension, inches (variable measure trade item)"
+325 format="N6" type="decimal" name="WIDTH (ft)" description="Width, diameter, or second dimension, feet (variable measure trade item)"
+326 format="N6" type="decimal" name="WIDTH (yd)" description="Width, diameter, or second dimension, yards (variable measure trade item)"
+327 format="N6" type="decimal" name="HEIGHT (in)" description="Depth, thickness, height, or third dimension, inches (variable measure trade item)"
+328 format="N6" type="decimal" name="HEIGHT (ft)" description="Depth, thickness, height, or third dimension, feet (variable measure trade item)"
+329 format="N6" type="decimal" name="HEIGHT (yd)" description="Depth, thickness, height, or third dimension, yards (variable measure trade item)"
+330 format="N6" type="decimal" name="GROSS WEIGHT (kg)" description="Logistic weight, kilograms"
+331 format="N6" type="decimal" name="LENGTH (m), log" description="Length or first dimension, metres"
+332 format="N6" type="decimal" name="WIDTH (m), log" description="Width, diameter, or second dimension, metres"
+333 format="N6" type="decimal" name="HEIGHT (m), log" description="Depth, thickness, height, or third dimension, metres"
+334 format="N6" type="decimal" name="AREA (m2 ), log" description="Area, square metres"
+335 format="N6" type="decimal" name="VOLUME (l), log" description="Logistic volume, litres"
+336 format="N6" type="decimal" name="VOLUME (m3 ), log" description="Logistic volume, cubic metres"
+337 format="N6" type="decimal" name="KG PER m2 " description="Kilograms per square metre"
+340 format="N6" type="decimal" name="GROSS WEIGHT (lb)" description="Logistic weight, pounds"
+341 format="N6" type="decimal" name="LENGTH (in), log" description="Length or first dimension, inches"
+342 format="N6" type="decimal" name="LENGTH (ft), log" description="Length or first dimension, feet"
+343 format="N6" type="decimal" name="LENGTH (yd), log" description="Length or first dimension, yards"
+344 format="N6" type="decimal" name="WIDTH (in), log" description="Width, diameter, or second dimension, inches"
+345 format="N6" type="decimal" name="WIDTH (ft), log" description="Width, diameter, or second dimension, feet"
+346 format="N6" type="decimal" name="WIDTH (yd), log" description="Width, diameter, or second dimension, yard"
+347 format="N6" type="decimal" name="HEIGHT (in), log" description="Depth, thickness, height, or third dimension, inches"
+348 format="N6" type="decimal" name="HEIGHT (ft), log" description="Depth, thickness, height, or third dimension, feet"
+349 format="N6" type="decimal" name="HEIGHT (yd), log" description="Depth, thickness, height, or third dimension, yards"
+350 format="N6" type="decimal" name="AREA (in2 )" description="Area, square inches (variable measure trade item)"
+351 format="N6" type="decimal" name="AREA (ft2 )" description="Area, square feet (variable measure trade item)"
+352 format="N6" type="decimal" name="AREA (yd2 )" description="Area, square yards (variable measure trade item)"
+353 format="N6" type="decimal" name="AREA (in2 ), log" description="Area, square inches"
+354 format="N6" type="decimal" name="AREA (ft2 ), log" description="Area, square feet"
+355 format="N6" type="decimal" name="AREA (yd2 ), log" description="Area, square yards"
+356 format="N6" type="decimal" name="NET WEIGHT (t oz)" description="Net weight, troy ounces (variable measure trade item)"
+357 format="N6" type="decimal" name="NET VOLUME (oz)" description="Net weight (or volume), ounces (variable measure trade item)"
+360 format="N6" type="decimal" name="NET VOLUME (qt)" description="Net volume, quarts (variable measure trade item)"
+361 format="N6" type="decimal" name="NET VOLUME (gal.)" description="Net volume, gallons U.S. (variable measure trade item)"
+362 format="N6" type="decimal" name="VOLUME (qt), log" description="Logistic volume, quarts"
+363 format="N6" type="decimal" name="VOLUME (gal.), log" description="Logistic volume, gallons U.S."
+364 format="N6" type="decimal" name="VOLUME (in3 )" description="Net volume, cubic inches (variable measure trade item)"
+365 format="N6" type="decimal" name="VOLUME (ft3 )" description="Net volume, cubic feet (variable measure trade item)"
+366 format="N6" type="decimal" name="VOLUME (yd3 )" description="Net volume, cubic yards (variable measure trade item)"
+367 format="N6" type="decimal" name="VOLUME (in3 ), log" description="Logistic volume, cubic inches"
+368 format="N6" type="decimal" name="VOLUME (ft3 ), log" description="Logistic volume, cubic feet"
+369 format="N6" type="decimal" name="VOLUME (yd3 ), log" description="Logistic volume, cubic yards"
+37 format="N..8" type="int" fnc1="1" name="COUNT" description="Count of trade items or trade item pieces contained in a logistic unit"
+390 format="N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable or Coupon value, local currency"
+391 format="N3+N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable with ISO currency code"
+392 format="N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable, single monetary area (variable measure trade item)"
+393 format="N3+N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable with ISO currency code (variable measure trade item)"
+394 format="N4" type="decimal" fnc1="1" name="PRCNT OFF" description="Percentage discount of a coupon"
+400 format="X..30" type="str" fnc1="1" name="ORDER NUMBER" description="Customers purchase order number"
+401 format="X..30" type="str" fnc1="1" name="GINC" description="Global Identification Number for Consignment (GINC)"
+402 format="N17" type="str" fnc1="1" name="GSIN" description="Global Shipment Identification Number (GSIN)"
+403 format="X..30" type="str" fnc1="1" name="ROUTE" description="Routing code"
+410 format="N13" type="str" name="SHIP TO LOC" description="Ship to - Deliver to Global Location Number"
+411 format="N13" type="str" name="BILL TO" description="Bill to - Invoice to Global Location Number"
+412 format="N13" type="str" name="PURCHASE FROM" description="Purchased from Global Location Number"
+413 format="N13" type="str" name="SHIP FOR LOC" description="Ship for - Deliver for - Forward to Global Location Number"
+414 format="N13" type="str" name="LOC No" description="Identification of a physical location - Global Location Number"
+415 format="N13" type="str" name="PAY TO" description="Global Location Number of the invoicing party"
+416 format="N13" type="str" name="PROD/SERV LOC" description="GLN of the production or service location"
+417 format="N13" type="str" name="PARTY" description="Party GLN"
+420 format="X..20" type="str" fnc1="1" name="SHIP TO POST" description="Ship to - Deliver to postal code within a single postal authority"
+421 format="N3+X..9" type="str" fnc1="1" name="SHIP TO POST" description="Ship to - Deliver to postal code with ISO country code"
+422 format="N3" type="int" fnc1="1" name="ORIGIN" description="Country of origin of a trade item"
+423 format="N3+N..12" type="str" fnc1="1" name="COUNTRY - INITIAL PROCESS." description="Country of initial processing"
+424 format="N3" type="int" fnc1="1" name="COUNTRY - PROCESS." description="Country of processing"
+425 format="N3+N..12" type="str" fnc1="1" name="COUNTRY - DISASSEMBLY" description="Country of disassembly"
+426 format="N3" type="int" fnc1="1" name="COUNTRY - FULL PROCESS" description="Country covering full process chain"
+427 format="X..3" type="str" fnc1="1" name="ORIGIN SUBDIVISION" description="Country subdivision Of origin"
+7001 format="N13" type="str" fnc1="1" name="NSN" description="NATO Stock Number (NSN)"
+7002 format="X..30" type="str" fnc1="1" name="MEAT CUT" description="UN/ECE meat carcasses and cuts classification"
+7003 format="N10" type="date" fnc1="1" name="EXPIRY TIME" description="Expiration date and time"
+7004 format="N..4" type="str" fnc1="1" name="ACTIVE POTENCY" description="Active potency"
+7005 format="X..12" type="str" fnc1="1" name="CATCH AREA" description="Catch area"
+7006 format="N6" type="date" fnc1="1" name="FIRST FREEZE DATE" description="First freeze date"
+7007 format="N6..12" type="date" fnc1="1" name="HARVEST DATE" description="Harvest date"
+7008 format="X..3" type="str" fnc1="1" name="AQUATIC SPECIES" description="Species for fishery purposes"
+7009 format="X..10" type="str" fnc1="1" name="FISHING GEAR TYPE" description="Fishing gear type"
+7010 format="X..2" type="str" fnc1="1" name="PROD METHOD" description="Production method"
+7020 format="X..20" type="str" fnc1="1" name="REFURB LOT" description="Refurbishment lot ID"
+7021 format="X..20" type="str" fnc1="1" name="FUNC STAT" description="Functional status"
+7022 format="X..20" type="str" fnc1="1" name="REV STAT" description="Revision status"
+7023 format="X..30" type="str" fnc1="1" name="GIAI - ASSEMBLY" description="Global Individual Asset Identifier (GIAI) of an assembly"
+7030 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 0" description="Number of processor with ISO Country Code"
+7031 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 1" description="Number of processor with ISO Country Code"
+7032 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 2" description="Number of processor with ISO Country Code"
+7033 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 3" description="Number of processor with ISO Country Code"
+7034 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 4" description="Number of processor with ISO Country Code"
+7035 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 5" description="Number of processor with ISO Country Code"
+7036 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 6" description="Number of processor with ISO Country Code"
+7037 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 7" description="Number of processor with ISO Country Code"
+7038 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 8" description="Number of processor with ISO Country Code"
+7039 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 9" description="Number of processor with ISO Country Code"
+7040 format="N1+X3" type="str" fnc1="1" name="UIC+EXT" description="GS1 UIC with Extension 1 and Importer index"
+710 format="X..20" type="str" fnc1="1" name="NHRN PZN" description="National Healthcare Reimbursement Number (NHRN) - Germany PZN"
+711 format="X..20" type="str" fnc1="1" name="NHRN CIP" description="National Healthcare Reimbursement Number (NHRN) - France CIP"
+712 format="X..20" type="str" fnc1="1" name="NHRN CN" description="National Healthcare Reimbursement Number (NHRN) - Spain CN"
+713 format="X..20" type="str" fnc1="1" name="NHRN DRN" description="National Healthcare Reimbursement Number (NHRN) - Brasil DRN"
+714 format="X..20" type="str" fnc1="1" name="NHRN AIM" description="National Healthcare Reimbursement Number (NHRN) - Portugal AIM"
+7230 format="X2+X..28" type="str" fnc1="1" name="CERT #1" description="Certification reference"
+7231 format="X2+X..28" type="str" fnc1="1" name="CERT #2" description="Certification reference"
+7232 format="X2+X..28" type="str" fnc1="1" name="CERT #3" description="Certification reference"
+7233 format="X2+X..28" type="str" fnc1="1" name="CERT #4" description="Certification reference"
+7234 format="X2+X..28" type="str" fnc1="1" name="CERT #5" description="Certification reference"
+7235 format="X2+X..28" type="str" fnc1="1" name="CERT #6" description="Certification reference"
+7236 format="X2+X..28" type="str" fnc1="1" name="CERT #7" description="Certification reference"
+7237 format="X2+X..28" type="str" fnc1="1" name="CERT #8" description="Certification reference"
+7238 format="X2+X..28" type="str" fnc1="1" name="CERT #9" description="Certification reference"
+7239 format="X2+X..28" type="str" fnc1="1" name="CERT #10" description="Certification reference"
+7240 format="X..20" type="str" fnc1="1" name="PROTOCOL" description="Protocol ID"
+8001 format="N14" type="str" fnc1="1" name="DIMENSIONS" description="Roll products (width, length, core diameter, direction, splices)"
+8002 format="X..20" type="str" fnc1="1" name="CMT No" description="Cellular mobile telephone identifier"
+8003 format="N14+X..16" type="str" fnc1="1" name="GRAI" description="Global Returnable Asset Identifier (GRAI)"
+8004 format="X..30" type="str" fnc1="1" name="GIAI" description="Global Individual Asset Identifier (GIAI)"
+8005 format="N6" type="str" fnc1="1" name="PRICE PER UNIT" description="Price per unit of measure"
+8006 format="N14+N2+N2" type="str" fnc1="1" name="ITIP" description="Identification of an individual trade item piece"
+8007 format="X..34" type="str" fnc1="1" name="IBAN" description="International Bank Account Number (IBAN)"
+8008 format="N8+N..4" type="date" fnc1="1" name="PROD TIME" description="Date and time of production"
+8009 format="X..50" type="str" fnc1="1" name="OPTSEN" description="Optically Readable Sensor Indicator"
+8010 format="Y..30" type="str" fnc1="1" name="CPID" description="Component/Part Identifier (CPID)"
+8011 format="N..12" type="str" fnc1="1" name="CPID SERIAL" description="Component/Part Identifier serial number (CPID SERIAL)"
+8012 format="X..20" type="str" fnc1="1" name="VERSION" description="Software version"
+8013 format="X..30" type="str" fnc1="1" name="GMN (for medical devices, the default, global data title is BUDI-DI)" description="Global Model Number (GMN)"
+8017 format="N18" type="str" fnc1="1" name="GSRN - PROVIDER" description="Global Service Relation Number to identify the relationship between an organisation offering services and the provider of services"
+8018 format="N18" type="str" fnc1="1" name="GSRN - RECIPIENT" description="Global Service Relation Number to identify the relationship between an organisation offering services and the recipient of services"
+8019 format="N..10" type="str" fnc1="1" name="SRIN" description="Service Relation Instance Number (SRIN)"
+8020 format="X..25" type="str" fnc1="1" name="REF No" description="Payment slip reference number"
+8026 format="N14+N2+N2" type="str" fnc1="1" name="ITIP CONTENT" description="Identification of pieces of a trade item (ITIP) contained in a logistic unit"
+8110 format="X..70" type="str" fnc1="1" name="" description="Coupon code identification for use in North America"
+8111 format="N4" type="str" fnc1="1" name="POINTS" description="Loyalty points of a coupon"
+8112 format="X..70" type="str" fnc1="1" name="" description="Paperless coupon code identification for use in North America"
+8200 format="X..70" type="str" fnc1="1" name="PRODUCT URL" description="Extended Packaging URL"
+90 format="X..30" type="str" fnc1="1" name="INTERNAL" description="Information mutually agreed between trading partners"
+91-99 format="X..90" type="str" fnc1="1" name="INTERNAL" description="Company internal information"
diff --git a/tests/test_gs1_128.doctest b/tests/test_gs1_128.doctest
new file mode 100644
index 00000000..8bfa9af9
--- /dev/null
+++ b/tests/test_gs1_128.doctest
@@ -0,0 +1,148 @@
+test_gs1_128.doctest - more detailed doctests for the stdnum.gs1_128 module
+
+Copyright (C) 2019 Sergi Almacellas Abellaan
+Copyright (C) 2020 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.gs1_128 module. It
+tries to test more corner cases and detailed functionality that is not
+really useful as module documentation.
+
+>>> from decimal import Decimal
+>>> import datetime
+>>> import pprint
+>>> from stdnum import gs1_128
+
+
+>>> gs1_128.compact('(01)38425876095074(17)181119(37)1 ')
+'013842587609507417181119371'
+
+
+We can create a GS1-128 code based on data we provide. Various data types
+will be converted to the correct representation.
+
+>>> gs1_128.encode({'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1}, parentheses=True)
+'(01)38425876095074(17)181119(37)1'
+>>> gs1_128.encode({'02': '98412345678908', '310': 17.23, '37': 32})
+'029841234567890831020017233732'
+>>> gs1_128.encode({'03': '1234'}) # unknown AI
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+
+If we have a separator we use it to separate variable-length values, otherwise
+we pad all variable-length values to the maximum length (except the last one).
+
+>>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '390': 42, '392': 12}, parentheses=True)
+'(01)58425876097843(10)123456 (37)00000018(390)0000000000000042(392)012'
+>>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '390': 42, '392': 12}, parentheses=True, separator='[FNC1]')
+'(01)58425876097843(10)123456[FNC1](37)18[FNC1](390)042[FNC1](392)012'
+
+Numeric values can be provided in several forms and precision is encoded
+properly.
+
+>>> gs1_128.encode({
+... '310': 17.23, # float
+... '311': 456, # int
+... '312': 1.0 / 3.0, # float with lots of digits
+... '313': '123.456', # str
+... '391': ('123', Decimal('123.456')), # currency number combo
+... }, parentheses=True)
+'(310)2001723(311)0000456(312)5033333(313)3123456(391)3123123456'
+
+We generate dates in various formats, depending on the AI.
+
+>>> gs1_128.encode({
+... '11': datetime.datetime(2018, 11, 19, 0, 0, 0),
+... '12': '181119', # if you provide a string value, it is expected to be correct
+... '7003': datetime.datetime(2018, 11, 19, 12, 45, 13),
+... '7007': (datetime.date(2018, 11, 19), datetime.date(2018, 11, 21)),
+... }, parentheses=True)
+'(11)181119(12)181119(7003)1811191245(7007)181119181121'
+>>> gs1_128.encode({'8008': datetime.datetime(2018, 11, 19, 12, 45, 13)}, parentheses=True)
+'(8008)181119124513'
+>>> gs1_128.encode({'8008': datetime.datetime(2018, 11, 19, 12, 45)}, parentheses=True)
+'(8008)1811191245'
+>>> gs1_128.encode({'8008': datetime.datetime(2018, 11, 19, 12, 0)}, parentheses=True)
+'(8008)18111912'
+>>> gs1_128.encode({'8008': datetime.datetime(2018, 11, 19, 0, 0)}, parentheses=True)
+'(8008)18111900'
+
+If we try to encode an invalid EAN we will get an error.
+
+>>> gs1_128.encode({'01': '38425876095079'}, parentheses=True)
+Traceback (most recent call last):
+ ...
+InvalidChecksum: ...
+
+
+We can decode (parse) the GS1-128 code to a dictionary with information about
+the structure of the number.
+
+pprint.pprint(gs1_128.info('(01)38425876095074(17)181119(37)1 '))
+{'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1}
+>>> pprint.pprint(gs1_128.info('013842587609507417181119371'))
+{'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1}
+>>> pprint.pprint(gs1_128.info('(02)98412345678908(310)3017230(37)32'))
+{'02': '98412345678908', '310': Decimal('17.230'), '37': 32}
+>>> pprint.pprint(gs1_128.info('(01)58425876097843(10)123456 (17)181119(37)18'))
+{'01': '58425876097843', '10': '123456', '17': datetime.date(2018, 11, 19), '37': 18}
+>>> pprint.pprint(gs1_128.info('|(01)58425876097843|(10)123456|(17)181119(37)18', separator='|'))
+{'01': '58425876097843', '10': '123456', '17': datetime.date(2018, 11, 19), '37': 18}
+>>> gs1_128.info('(03)38425876095074') # unknown AI
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+
+We can decode decimal values from various formats.
+
+>>> pprint.pprint(gs1_128.info('(310)5033333'))
+{'310': Decimal('0.33333')}
+>>> pprint.pprint(gs1_128.info('(310)0033333'))
+{'310': Decimal('33333')}
+>>> pprint.pprint(gs1_128.info('(391)3123123456'))
+{'391': ('123', Decimal('123.456'))}
+
+We an decode date files from various formats.
+
+>>> pprint.pprint(gs1_128.info('(11)181119'))
+{'11': datetime.date(2018, 11, 19)}
+>>> pprint.pprint(gs1_128.info('(7003)1811191245'))
+{'7003': datetime.datetime(2018, 11, 19, 12, 45)}
+>>> pprint.pprint(gs1_128.info('(7007)181119'))
+{'7007': datetime.date(2018, 11, 19)}
+>>> pprint.pprint(gs1_128.info('(7007)181119181121'))
+{'7007': (datetime.date(2018, 11, 19), datetime.date(2018, 11, 21))}
+>>> pprint.pprint(gs1_128.info('(8008)18111912'))
+{'8008': datetime.datetime(2018, 11, 19, 12, 0)}
+
+
+While the compact() function can clean up the number somewhat the validate()
+function calls info() and then encode() to ensure an even more compact and
+consistent format.
+
+>>> gs1_128.compact('(01)58425876097843(10)123456 (37)00000018')
+'015842587609784310123456 3700000018'
+>>> gs1_128.validate('(01)58425876097843(10)123456 (37)00000018')
+'015842587609784310123456 3718'
+>>> gs1_128.validate('(01)58425876097843(10)123456 (37)00000018', separator='|')
+'015842587609784310123456|3718'
+>>> gs1_128.validate('30aa')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
diff --git a/update/gs1_ai.py b/update/gs1_ai.py
new file mode 100755
index 00000000..527a1c59
--- /dev/null
+++ b/update/gs1_ai.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+
+# update/gs1_ai.py - script to get GS1 application identifiers
+#
+# Copyright (C) 2019 Arthur de Jong
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""This script downloads GS1 application identifiers from the GS1 web site."""
+
+import datetime
+import json
+import re
+
+import lxml.html
+import requests
+
+
+# the location of the GS1 application identifiers
+download_url = 'https://www.gs1.org/standards/barcodes/application-identifiers'
+
+
+def fetch_ais():
+ """Download application identifiers frm the GS1 website."""
+ response = requests.get(download_url)
+ document = lxml.html.document_fromstring(response.content)
+ element = document.findall('.//script[@type="application/ld+json"]')[1]
+ for entry in json.loads(element.text)['@graph']:
+ yield (
+ entry['skos:prefLabel'].strip(), # AI
+ entry['gs1meta:formatAIvalue'].strip()[3:], # format
+ entry['gs1meta:requiresFNC1'], # require FNC1
+ [x['@value'] for x in entry['schema:name'] if x['@language'] == 'en'][0].strip(),
+ [x['@value'] for x in entry['schema:description'] if x['@language'] == 'en'][0].strip())
+
+
+def group_ai_ranges():
+ """Combine downloaded application identifiers into ranges."""
+ first = None
+ prev = (None, ) * 5
+ for value in sorted(fetch_ais()):
+ if value[1:] != prev[1:]:
+ if first:
+ yield first, *prev
+ first = value[0]
+ prev = value
+ yield first, *prev
+
+
+if __name__ == '__main__':
+ print('# generated from %s' % download_url)
+ print('# on %s' % datetime.datetime.utcnow())
+ for ai1, ai2, format, require_fnc1, name, description in group_ai_ranges():
+ _type = 'str'
+ if re.match(r'^(N8\+)?N[0-9]*[.]*[0-9]+$', format) and 'date' in description.lower():
+ _type = 'date'
+ elif re.match(r'^N[.]*[0-9]+$', format) and 'count' in description.lower():
+ _type = 'int'
+ ai = ai1
+ if ai1 != ai2:
+ if len(ai1) == 4:
+ ai = ai1[:3]
+ _type = 'decimal'
+ else:
+ ai = '%s-%s' % (ai1, ai2)
+ print('%s format="%s" type="%s"%s name="%s" description="%s"' % (
+ ai, format, _type,
+ ' fnc1="1"' if require_fnc1 else '',
+ name, description))
From b6e43cdd6c137acf57193b749d5ed8950eaf2103 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sat, 8 Aug 2020 16:51:04 +0200
Subject: [PATCH 041/296] Fix Python 3.6 issue in update script
Fixes 180788a
---
update/gs1_ai.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/update/gs1_ai.py b/update/gs1_ai.py
index 527a1c59..06e351bf 100755
--- a/update/gs1_ai.py
+++ b/update/gs1_ai.py
@@ -54,10 +54,10 @@ def group_ai_ranges():
for value in sorted(fetch_ais()):
if value[1:] != prev[1:]:
if first:
- yield first, *prev
+ yield (first, *prev)
first = value[0]
prev = value
- yield first, *prev
+ yield (first, *prev)
if __name__ == '__main__':
From ff188bd5f100c3033b3fc53f186af6c52815a770 Mon Sep 17 00:00:00 2001
From: Leandro Regueiro
Date: Sun, 8 Mar 2020 17:06:25 +0100
Subject: [PATCH 042/296] Add module to check any VAT number
This effectively mimics vatnumber's `check_vat` function, so people can
easily replace the outdated vatnumber library with stdnum.
Closes https://github.com/arthurdejong/python-stdnum/pull/199
---
stdnum/vatin.py | 94 ++++++++++++++++++++++++++++++++++++++++
tests/test_vatin.doctest | 75 ++++++++++++++++++++++++++++++++
2 files changed, 169 insertions(+)
create mode 100644 stdnum/vatin.py
create mode 100644 tests/test_vatin.doctest
diff --git a/stdnum/vatin.py b/stdnum/vatin.py
new file mode 100644
index 00000000..50f587ce
--- /dev/null
+++ b/stdnum/vatin.py
@@ -0,0 +1,94 @@
+# vatin.py - function to validate any given VATIN.
+#
+# Copyright (C) 2020 Leandro Regueiro
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+"""VATIN (International value added tax identification number)
+
+The number VAT identification number (VATIN) is an identifier used in many
+countries. It starts with an ISO 3166-1 alpha-2 (2 letters) country code
+(except for Greece, which uses EL, instead of GR) and is followed by the
+country-specific the identifier.
+
+This module supports all VAT numbers that are supported in python-stdnum.
+
+More information:
+
+* https://en.wikipedia.org/wiki/VAT_identification_number
+
+>>> validate('FR 40 303 265 045')
+'FR40303265045'
+>>> validate('DE136,695 976')
+'DE136695976'
+>>> validate('BR16.727.230/0001-97')
+'BR16727230000197'
+>>> validate('FR 40 303')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> validate('XX')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+"""
+
+import re
+
+from stdnum.exceptions import *
+from stdnum.util import clean, get_cc_module
+
+
+# Cache of country code modules
+_country_modules = dict()
+
+
+def _get_cc_module(cc):
+ """Get the VAT number module based on the country code."""
+ # Greece uses a "wrong" country code
+ cc = cc.lower().replace('el', 'gr')
+ if not re.match(r'^[a-z]{2}$', cc):
+ raise InvalidFormat()
+ if cc not in _country_modules:
+ _country_modules[cc] = get_cc_module(cc, 'vat')
+ if not _country_modules[cc]:
+ raise InvalidComponent() # unknown/unsupported country code
+ return _country_modules[cc]
+
+
+def compact(number):
+ """Convert the number to the minimal representation."""
+ number = clean(number).strip()
+ module = _get_cc_module(number[:2])
+ return number[:2] + module.compact(number[2:])
+
+
+def validate(number):
+ """Check if the number is a valid VAT number.
+
+ This performs the country-specific check for the number.
+ """
+ number = clean(number, '').strip()
+ module = _get_cc_module(number[:2])
+ return number[:2].upper() + module.validate(number[2:])
+
+
+def is_valid(number):
+ """Check if the number is a valid VAT number."""
+ try:
+ return bool(validate(number))
+ except ValidationError:
+ return False
diff --git a/tests/test_vatin.doctest b/tests/test_vatin.doctest
new file mode 100644
index 00000000..f0c5f925
--- /dev/null
+++ b/tests/test_vatin.doctest
@@ -0,0 +1,75 @@
+test_vatin.doctest - more detailed doctests for stdnum.vatin module
+
+Copyright (C) 2020 Leandro Regueiro
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.vatin module. It
+tries to test more corner cases and detailed functionality that is not
+really useful as module documentation.
+
+>>> from stdnum import vatin
+
+
+Check valid VAT numbers for several countries with existing validation:
+
+>>> vatin.validate('FR 40 303 265 045')
+'FR40303265045'
+>>> vatin.validate('DE136,695 976')
+'DE136695976'
+>>> vatin.validate('BR16.727.230/0001-97')
+'BR16727230000197'
+>>> vatin.validate('el-082857563')
+'EL082857563'
+
+
+Try validating invalid VAT numbers for country with validation:
+
+>>> vatin.compact('FR 40 303')
+'FR40303'
+>>> vatin.validate('FR 40 303')
+Traceback (most recent call last):
+ ...
+InvalidLength: ...
+>>> vatin.validate('FR')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+
+
+Try validating not specifying a country:
+
+>>> vatin.validate('')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+>>> vatin.validate('00')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
+
+
+Try to validate for countries with no VAT validation:
+
+>>> vatin.validate('XX')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
+>>> vatin.validate('US')
+Traceback (most recent call last):
+ ...
+InvalidComponent: ...
From 40fcc2401c29f955ba0b61a1a30e860be948f160 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 9 Aug 2020 17:15:30 +0200
Subject: [PATCH 043/296] Update database files
---
stdnum/be/banks.dat | 11 +-
stdnum/cn/loc.dat | 2 +-
stdnum/eu/nace.dat | 2 +-
stdnum/gs1_ai.dat | 2 +-
stdnum/iban.dat | 2 +-
stdnum/imsi.dat | 672 +++++++++++++----------
stdnum/isbn.dat | 69 +--
stdnum/nz/banks.dat | 35 +-
stdnum/oui.dat | 1252 ++++++++++++++++++++++++++++++++++---------
update/imsi.py | 11 +-
update/nz_banks.py | 2 +-
11 files changed, 1467 insertions(+), 593 deletions(-)
diff --git a/stdnum/be/banks.dat b/stdnum/be/banks.dat
index c8e6a186..464f5f6b 100644
--- a/stdnum/be/banks.dat
+++ b/stdnum/be/banks.dat
@@ -1,6 +1,6 @@
# generated from current_codes.xls downloaded from
# https://www.nbb.be/doc/be/be/protocol/current_codes.xls
-# version 31/12/2019
+# version 24/07/2020
000-000 bic="BPOTBEB1" bank="bpost bank"
001-049 bic="GEBABEBB" bank="BNP Paribas Fortis"
050-099 bic="GKCCBEBB" bank="BELFIUS BANK"
@@ -42,7 +42,7 @@
509-509 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V."
510-510 bic="VAPEBE22" bank="VAN DE PUT & CO Privaatbankiers"
512-512 bic="DNIBBE21" bank="NIBC BANK"
-513-513 bic="SGPBBE99" bank="ABN AMRO Bank N.V."
+513-513 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V."
514-514 bic="PUILBEBB" bank="Puilaetco Dewaay Private Bankers"
515-515 bic="IRVTBEBB" bank="The Bank of New York Mellon NV/SA"
521-521 bic="FVLBBE22" bank="F. van Lanschot Bankiers"
@@ -76,7 +76,6 @@
630-631 bic="BBRUBEBB" bank="ING België"
634-636 bic="BNAGBEBB" bank="Bank Nagelmackers"
638-638 bic="GKCCBEBB" bank="BELFIUS BANK"
-639-639 bic="ABNABE2AMYO" bank="ABN AMRO Bank N.V."
640-640 bic="ADIABE22" bank="KBC Bank N.V. Business Center Diamant"
642-642 bic="BBVABEBB" bank="Banco Bilbao Vizcaya Argentaria"
643-643 bic="BMPBBEBB" bank="Aion"
@@ -87,6 +86,7 @@
649-649 bank="Caisse d'Epargne et de Prévoyance Hauts de France"
651-651 bic="KEYTBEBB" bank="Arkéa Direct Bank (nom commercial / commerciële naam: Keytrade Bank)"
652-652 bic="BBRUBEBB" bank="ING België"
+653-653 bank="Barclays Bank Ireland Plc Brussels Branch"
654-654 bank="Crédit foncier et communal d'Alsace et de Lorraine - Banque"
657-657 bic="GKCCBEBB" bank="BELFIUS BANK"
658-658 bic="HABBBEBB" bank="Habib Bank"
@@ -151,8 +151,8 @@
883-884 bic="BBRUBEBB" bank="ING België"
887-888 bic="BBRUBEBB" bank="ING België"
890-899 bic="VDSPBE91" bank="vdk bank"
-906-906 bic="CEKVBE81" bank="Centrale Kredietverlening (C.K.V.)"
-908-908 bic="CEKVBE81" bank="Centrale Kredietverlening (C.K.V.)"
+906-906 bic="CEKVBE88" bank="Centrale Kredietverlening (C.K.V.)"
+908-908 bic="CEKVBE88" bank="Centrale Kredietverlening (C.K.V.)"
910-910 bic="BBRUBEBB" bank="ING België"
911-911 bic="TUNZBEB1" bank="Ingenico Financial Solutions"
912-912 bank="Hi - Media Porte Monnaie Electronique"
@@ -183,6 +183,7 @@
960-960 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V."
961-961 bic="BBRUBEBB" bank="ING België"
963-963 bic="AXABBE22" bank="AXA Bank Belgium"
+966-966 bic="NEECBEB2" bank="NewB"
967-967 bic="TRWIBEB1" bank="TransferWise"
968-968 bic="ENIBBEBB" bank="Banque Eni"
969-969 bic="PUILBEBB" bank="Puilaetco Dewaay Private Bankers"
diff --git a/stdnum/cn/loc.dat b/stdnum/cn/loc.dat
index f69ccf77..8ae03e5d 100644
--- a/stdnum/cn/loc.dat
+++ b/stdnum/cn/loc.dat
@@ -1,6 +1,6 @@
# generated from National Bureau of Statistics of the People's
# Republic of China, downloaded from https://github.com/cn/GB2260
-# 2020-01-18 17:01:01.298881
+# 2020-08-09 15:08:26.469948
110101 county="东城区" prefecture="市辖区" province="北京市"
110102 county="西城区" prefecture="市辖区" province="北京市"
110103 county="崇文区" prefecture="市辖区" province="北京市"
diff --git a/stdnum/eu/nace.dat b/stdnum/eu/nace.dat
index d0c90b44..2c0ed855 100644
--- a/stdnum/eu/nace.dat
+++ b/stdnum/eu/nace.dat
@@ -1,4 +1,4 @@
-# generated from NACE_REV2_20200118_180104.xml, downloaded from
+# generated from NACE_REV2_20200809_170835.xml, downloaded from
# https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=ACT_OTH_CLS_DLD&StrNom=NACE_REV2&StrFormat=XML&StrLanguageCode=EN
# NACE_REV2: Statistical Classification of Economic Activities in the European Community, Rev. 2 (2008)
A label="AGRICULTURE, FORESTRY AND FISHING" isic="A"
diff --git a/stdnum/gs1_ai.dat b/stdnum/gs1_ai.dat
index 0b1ae6c2..9f47395b 100644
--- a/stdnum/gs1_ai.dat
+++ b/stdnum/gs1_ai.dat
@@ -1,5 +1,5 @@
# generated from https://www.gs1.org/standards/barcodes/application-identifiers
-# on 2020-07-12 19:36:00.576283
+# on 2020-08-09 15:09:08.187669
00 format="N18" type="str" name="SSCC" description="Serial Shipping Container Code (SSCC)"
01 format="N14" type="str" name="GTIN" description="Global Trade Item Number (GTIN)"
02 format="N14" type="str" name="CONTENT" description="GTIN of contained trade items"
diff --git a/stdnum/iban.dat b/stdnum/iban.dat
index 5096f691..ce656b7b 100644
--- a/stdnum/iban.dat
+++ b/stdnum/iban.dat
@@ -68,7 +68,7 @@ SE country="Sweden" bban="3!n16!n1!n"
SI country="Slovenia" bban="5!n8!n2!n"
SK country="Slovakia" bban="4!n6!n10!n"
SM country="San Marino" bban="1!a5!n5!n12!c"
-ST country="Sao Tome and Principe" bban="4!n4!n11!n2!n"
+ST country="Sao Tome and Principe" bban="8!n11!n2!n"
SV country="El Salvador" bban="4!a20!n"
TL country="Timor-Leste" bban="3!n14!n2!n"
TN country="Tunisia" bban="2!n3!n13!n2!n"
diff --git a/stdnum/imsi.dat b/stdnum/imsi.dat
index 5ebf4962..21aa96eb 100644
--- a/stdnum/imsi.dat
+++ b/stdnum/imsi.dat
@@ -1,8 +1,8 @@
# generated from various sources
# https://en.wikipedia.org/wiki/Mobile_country_code
001
- 001 bands="any" brand="TEST" country="Test networks" operator="Test Network" status="Operational"
- 01 bands="any" brand="TEST" country="Test networks" operator="Test Network" status="Operational"
+ 001 bands="any" brand="TEST" country="Test networks" operator="Test network" status="Operational"
+ 01 bands="any" brand="TEST" country="Test networks" operator="Test network" status="Operational"
202
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Cosmote" cc="gr" country="Greece" operator="COSMOTE - Mobile Telecommunications S.A." status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Cosmote" cc="gr" country="Greece" operator="COSMOTE - Mobile Telecommunications S.A." status="Operational"
@@ -24,7 +24,7 @@
01 cc="nl" country="Netherlands" operator="RadioAccess Network Services"
02 bands="LTE 800 / LTE 2600" brand="Tele2" cc="nl" country="Netherlands" operator="Tele2 Nederland B.V." status="Operational"
03 bands="MVNE / PrivateGSM 1800" brand="Voiceworks" cc="nl" country="Netherlands" operator="Voiceworks B.V." status="Operational"
- 04 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Vodafone" cc="nl" country="Netherlands" operator="Vodafone Libertel B.V." status="Operational"
+ 04 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 1800" brand="Vodafone" cc="nl" country="Netherlands" operator="Vodafone Libertel B.V." status="Operational"
05 cc="nl" country="Netherlands" operator="Elephant Talk Communications Premium Rate Services"
06 bands="MVNO" brand="Vectone Mobile" cc="nl" country="Netherlands" operator="Mundio Mobile (Netherlands) Ltd" status="Operational"
07 bands="MVNE" cc="nl" country="Netherlands" operator="Teleena (MVNE)" status="Operational"
@@ -32,7 +32,7 @@
09 bands="MVNO" brand="Lycamobile" cc="nl" country="Netherlands" operator="Lycamobile Netherlands Limited" status="Operational"
10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="KPN" cc="nl" country="Netherlands" operator="KPN B.V." status="Operational"
11 cc="nl" country="Netherlands" operator="VoipIT B.V."
- 12 brand="Telfort" cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." status="Operational"
+ 12 bands="MVNO" brand="Telfort" cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." status="Operational"
13 cc="nl" country="Netherlands" operator="Unica Installatietechniek B.V."
14 cc="nl" country="Netherlands" operator="6GMOBILE B.V." status="Reserved"
15 bands="LTE 2600" brand="Ziggo" cc="nl" country="Netherlands" operator="Ziggo B.V." status="Operational"
@@ -62,12 +62,13 @@
00-99
206
00 brand="Proximus" cc="be" country="Belgium" operator="Belgacom Mobile" status="Not operational"
- 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Proximus" cc="be" country="Belgium" operator="Belgacom Mobile" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Proximus" cc="be" country="Belgium" operator="Belgacom Mobile" status="Operational"
02 bands="GSM-R" cc="be" country="Belgium" operator="Infrabel" status="Operational"
+ 03 bands="LTE 3500" cc="be" country="Belgium" operator="Citymesh NV" status="Operational"
05 bands="MVNO" brand="Telenet" cc="be" country="Belgium" operator="Telenet" status="Operational"
06 bands="MVNO" brand="Lycamobile" cc="be" country="Belgium" operator="Lycamobile sprl" status="Operational"
07 bands="MVNO" brand="Vectone Mobile" cc="be" country="Belgium" operator="Mundio Mobile Belgium nv" status="Reserved"
- 08 cc="be" country="Belgium" status="Not operational"
+ 08 bands="MVNO" brand="VOO" cc="be" country="Belgium" status="Operational"
09 bands="MVNO" brand="Voxbone" cc="be" country="Belgium" operator="Voxbone mobile" status="Not operational"
10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Orange Belgium" cc="be" country="Belgium" operator="Orange S.A." status="Operational"
15 cc="be" country="Belgium" operator="Elephant Talk Communications Schweiz GmbH" status="Not operational"
@@ -76,9 +77,13 @@
25 bands="TD-LTE 2600" cc="be" country="Belgium" operator="Dense Air Belgium SPRL"
28 cc="be" country="Belgium" operator="BICS"
30 bands="MVNO" brand="Mobile Vikings" cc="be" country="Belgium" operator="Unleashed NV" status="Operational"
- 33 cc="be" country="Belgium" operator="Ericsson NV"
+ 33 cc="be" country="Belgium" operator="Ericsson NV" status="Not operational"
40 bands="MVNO" brand="JOIN" cc="be" country="Belgium" operator="JOIN Experience (Belgium)" status="Not operational"
50 bands="MVNO" cc="be" country="Belgium" operator="IP Nexia" status="Not operational"
+ 71 cc="be" country="Belgium" operator="test" status="Not operational"
+ 72 cc="be" country="Belgium" operator="test" status="Not operational"
+ 73 cc="be" country="Belgium" operator="test" status="Not operational"
+ 74 cc="be" country="Belgium" operator="test" status="Not operational"
00-99
208
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Operational"
@@ -95,8 +100,8 @@
12 bands="MVNO" brand="Truphone" cc="fr" country="France" operator="Truphone France" status="Operational"
13 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational"
14 bands="GSM-R" brand="SNCF Réseau" cc="fr" country="France" operator="SNCF Réseau" status="Operational"
- 15 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Free Mobile" cc="fr" country="France" operator="Iliad" status="Operational"
- 16 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Free Mobile" cc="fr" country="France" operator="Iliad" status="Operational"
+ 15 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational"
+ 16 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational"
17 brand="LEGOS" cc="fr" country="France" operator="Local Exchange Global Operation Services"
18 bands="MVNO" brand="Voxbone" cc="fr" country="France" operator="Voxbone mobile" status="Not operational"
19 bands="LTE" cc="fr" country="France" operator="Haute-Garonne numérique" status="Operational"
@@ -113,29 +118,32 @@
30 bands="MVNO" cc="fr" country="France" operator="Syma Mobile" status="Operational"
31 bands="MVNO" brand="Vectone Mobile" cc="fr" country="France" operator="Mundio Mobile" status="Operational"
32 brand="Orange" cc="fr" country="France" operator="Orange S.A."
- 33 bands="WiMAX" cc="fr" country="France" operator="Département des Pyrénées-Atlantiques"
+ 33 bands="WiMAX" brand="Fibre64" cc="fr" country="France" operator="Département des Pyrénées-Atlantiques"
34 bands="MVNO" cc="fr" country="France" operator="Cellhire France" status="Operational"
+ 35 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational"
+ 36 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational"
+ 37 cc="fr" country="France" operator="IP Directions"
50 cc="fr" country="France" operator="EDF"
70 cc="fr" country="France" operator="Weaccess group"
86 cc="fr" country="France" operator="SEM@FOR77"
87 brand="RATP" cc="fr" country="France" operator="Régie autonome des transports parisiens"
88 bands="GSM 900 / GSM 1800" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Operational"
- 89 cc="fr" country="France" operator="Fondation b-com" status="Not operational"
+ 89 cc="fr" country="France" operator="Hub One"
90 cc="fr" country="France" operator="Images & Réseaux" status="Not operational"
91 cc="fr" country="France" operator="Orange S.A."
92 bands="TD-LTE 2300 / LTE 2600" brand="Com4Innov" cc="fr" country="France" operator="Association Plate-forme Télécom" status="Not operational"
- 93 cc="fr" country="France" operator="Thales Communications & Security SAS"
+ 93 cc="fr" country="France" operator="Thales Communications & Security SAS" status="Not operational"
94 cc="fr" country="France" operator="Halys"
- 95 cc="fr" country="France" operator="Orange S.A."
+ 95 cc="fr" country="France" operator="Orange S.A." status="Not operational"
96 bands="LTE" cc="fr" country="France" operator="Région Bourgogne-Franche-Comté" status="Operational"
97 cc="fr" country="France" operator="Thales Communications & Security SAS"
- 98 cc="fr" country="France" operator="Société Air France"
+ 98 cc="fr" country="France" operator="Société Air France" status="Not operational"
00-99
212
10 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Office des Telephones" cc="mc" country="Monaco" operator="Monaco Telecom" status="Operational"
00-99
213
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Mobiland" cc="ad" country="Andorra" operator="Servei De Tele. DAndorra" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Som, Mobiland" cc="ad" country="Andorra" operator="Andorra Telecom" status="Operational"
00-99
214
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Vodafone" cc="es" country="Spain" operator="Vodafone Spain" status="Operational"
@@ -169,12 +177,12 @@
29 bands="TD-LTE 3500" cc="es" country="Spain" operator="Xfera Moviles S.A.U." status="Operational"
30 cc="es" country="Spain" operator="Compatel Limited"
31 cc="es" country="Spain" operator="Red Digital De Telecomunicaciones de las Islas Baleares, S.L."
- 32 bands="MVNO" brand="Tuenti" cc="es" country="Spain" operator="Telefónica Móviles España" status="Operational"
+ 32 bands="MVNO" brand="Tuenti" cc="es" country="Spain" operator="Telefónica Móviles España" status="Not operational"
33 bands="WiMAX" cc="es" country="Spain" operator="Xfera Móviles, S.A.U."
34 bands="LTE 2600" cc="es" country="Spain" operator="Aire Networks del Mediterráneo, S.L.U." status="Operational"
35 bands="MVNO" cc="es" country="Spain" operator="INGENIUM OUTSOURCING SERVICES, S.L."
36 bands="MVNO" cc="es" country="Spain" operator="ALAI OPERADOR DE TELECOMUNICACIONES, S.L"
- 37 cc="es" country="Spain" operator="Vodafone Spain" status="Not operational"
+ 37 cc="es" country="Spain" operator="Vodafone Spain"
38 cc="es" country="Spain" operator="Telefónica Móviles España, S.A.U."
51 bands="GSM-R" brand="ADIF" cc="es" country="Spain" operator="Administrador de Infraestructuras Ferroviarias" status="Operational"
00-99
@@ -183,10 +191,10 @@
02 bands="LTE 450" cc="hu" country="Hungary" operator="MVM Net Ltd." status="Operational"
03 bands="LTE 1800 / TD-LTE 3700" brand="DIGI" cc="hu" country="Hungary" operator="DIGI Telecommunication Ltd." status="Operational"
04 cc="hu" country="Hungary" operator="Invitech ICT Services Ltd." status="Not operational"
- 30 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="T-Mobile" cc="hu" country="Hungary" operator="Magyar Telekom Plc" status="Operational"
+ 30 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telekom" cc="hu" country="Hungary" operator="Magyar Telekom Plc" status="Operational"
70 bands="GSM 900 / GSM 1800 / UMTS 2100 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="hu" country="Hungary" operator="Vodafone Magyarország Zrt." status="Operational"
- 71 bands="MVNO" brand="upc" cc="hu" country="Hungary" operator="UPC Hungary Ltd." status="Operational"
- 99 bands="GSM-R 900" brand="MAV GSM-R" cc="hu" country="Hungary" operator="Magyar Államvasutak" status="Planned"
+ 71 bands="MVNO" brand="upc" cc="hu" country="Hungary" operator="Vodafone Magyarország Zrt." status="Operational"
+ 99 bands="GSM-R 900" brand="MAV GSM-R" cc="hu" country="Hungary" operator="Magyar Államvasutak" status="Operational"
00-99
218
03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="HT-ERONET" cc="ba" country="Bosnia and Herzegovina" operator="Public Enterprise Croatian Telecom Ltd." status="Operational"
@@ -232,7 +240,7 @@
37 brand="3 Italia" cc="it" country="Italy" operator="Wind Tre"
38 bands="TD-LTE 3500" brand="LINKEM" cc="it" country="Italy" operator="Linkem S.p.A." status="Operational"
39 brand="SMS Italia" cc="it" country="Italy" operator="SMS Italia S.r.l."
- 43 bands="5G 3500" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." status="Operational"
+ 43 bands="5G 3500 / 5G 26000" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." status="Operational"
47 bands="TD-LTE 3500" brand="Tiscali" cc="it" country="Italy" operator="Tiscali S.p.A." status="Operational"
48 brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A."
49 bands="MVNO" brand="Vianova" cc="it" country="Italy" operator="Welcome Italia S.p.A."
@@ -256,10 +264,11 @@
11 bands="MVNO" cc="ro" country="Romania" operator="Enigma-System"
15 bands="WiMAX / TD-LTE 2600" brand="Idilis" cc="ro" country="Romania" operator="Idilis" status="Operational"
16 bands="MVNO" brand="Lycamobile" cc="ro" country="Romania" operator="Lycamobile Romania" status="Operational"
+ 19 bands="GSM-R 900" brand="CFR" cc="ro" country="Romania" operator="Căile Ferate Române" status="Testing"
00-99
228
- 01 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Swisscom" cc="ch" country="Switzerland" operator="Swisscom AG" status="Operational"
- 02 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise Communications AG" status="Operational"
+ 01 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Swisscom" cc="ch" country="Switzerland" operator="Swisscom AG" status="Operational"
+ 02 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise Communications AG" status="Operational"
03 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Salt" cc="ch" country="Switzerland" operator="Salt Mobile SA" status="Operational"
05 cc="ch" country="Switzerland" operator="Comfone AG" status="Not operational"
06 bands="GSM-R 900" brand="SBB-CFF-FFS" cc="ch" country="Switzerland" operator="SBB AG" status="Operational"
@@ -280,7 +289,7 @@
58 bands="MVNO" brand="beeone" cc="ch" country="Switzerland" operator="Beeone Communications SA" status="Operational"
59 bands="MVNO" brand="Vectone" cc="ch" country="Switzerland" operator="Mundio Mobile Limited" status="Not operational"
60 brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise Communications AG"
- 61 cc="ch" country="Switzerland" operator="Compatel Ltd."
+ 61 cc="ch" country="Switzerland" operator="Compatel Ltd." status="Not operational"
62 bands="MVNO" cc="ch" country="Switzerland" operator="Telecom26 AG" status="Operational"
63 brand="FTS" cc="ch" country="Switzerland" operator="Fink Telecom Services" status="Operational"
64 bands="MVNO" cc="ch" country="Switzerland" operator="Nth AG" status="Operational"
@@ -306,20 +315,20 @@
04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" status="Operational"
06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 3500 / TD-LTE 3700" brand="O2 " cc="sk" country="Slovakia" operator="O2 Slovakia" status="Operational"
- 07 cc="sk" country="Slovakia" operator="Towercom, a. s."
- 08 cc="sk" country="Slovakia" operator="IPfon, s.r.o."
+ 07 cc="sk" country="Slovakia" operator="Towercom, a. s." status="Not operational"
+ 08 bands="MVNO" brand="Unimobile" cc="sk" country="Slovakia" operator="Uniphone, s.r.o." status="Testing"
09 cc="sk" country="Slovakia" operator="DSI DATA, a.s."
10 cc="sk" country="Slovakia" operator="HMZ RÁDIOKOMUNIKÁCIE, spol. s r.o."
99 bands="GSM-R" brand="ŽSR" cc="sk" country="Slovakia" operator="Železnice Slovenskej Republiky" status="Operational"
00-99
232
- 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="A1.net" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="A1.net" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational"
02 cc="at" country="Austria" operator="A1 Telekom Austria" status="Reserved"
03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Operational"
04 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH"
05 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational"
06 brand="Orange AT" cc="at" country="Austria" operator="Orange Austria GmbH" status="Not operational"
- 07 bands="MVNO" brand="tele.ring" cc="at" country="Austria" operator="T-Mobile Austria" status="Operational"
+ 07 bands="MVNO" brand="Magenta-T" cc="at" country="Austria" operator="T-Mobile Austria" status="Operational"
08 bands="MVNO" brand="Lycamobile" cc="at" country="Austria" operator="Lycamobile Austria" status="Operational"
09 bands="MVNO" brand="Tele2Mobil" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational"
10 bands="UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational"
@@ -335,8 +344,9 @@
20 bands="MVNO" brand="m:tel" cc="at" country="Austria" operator="MTEL Austrija GmbH" status="Operational"
21 cc="at" country="Austria" operator="Salzburg AG für Energie, Verkehr und Telekommunikation"
22 bands="MVNO" cc="at" country="Austria" operator="Plintron Austria Limited"
- 23 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH"
+ 23 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Not operational"
24 cc="at" country="Austria" operator="Smartel Services GmbH"
+ 25 cc="at" country="Austria" operator="Holding Graz Kommunale Dienstleistungen GmbH"
91 bands="GSM-R" brand="GSM-R A" cc="at" country="Austria" operator="ÖBB" status="Operational"
92 bands="CDMA450 / LTE450" brand="ArgoNET" cc="at" country="Austria" operator="ArgoNET GmbH" status="Operational"
00-99
@@ -355,7 +365,7 @@
11 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational"
12 bands="GSM-R" brand="Railtrack" cc="gb" country="United Kingdom" operator="Network Rail Infrastructure Ltd" status="Operational"
13 bands="GSM-R" brand="Railtrack" cc="gb" country="United Kingdom" operator="Network Rail Infrastructure Ltd" status="Operational"
- 14 bands="GSM 1800" brand="Hay Systems Ltd" cc="gb" country="United Kingdom" operator="Hay Systems Ltd" status="Operational"
+ 14 bands="GSM 1800" cc="gb" country="United Kingdom" operator="Link Mobility UK Ltd" status="Operational"
15 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500" brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone" status="Operational"
16 bands="MVNO" brand="Talk Talk" cc="gb" country="United Kingdom" operator="TalkTalk Communications Limited" status="Operational"
17 cc="gb" country="United Kingdom" operator="FleXtel Limited" status="Not operational"
@@ -395,6 +405,7 @@
71 cc="gb" country="United Kingdom" operator="Home Office"
72 bands="MVNO" brand="Hanhaa Mobile" cc="gb" country="United Kingdom" operator="Hanhaa Limited" status="Operational"
73 bands="TD-LTE 3500" cc="gb" country="United Kingdom" operator="Bluewave Communications Ltd" status="Operational"
+ 74 cc="gb" country="United Kingdom" operator="Pareteum Europe B.V."
76 bands="GSM 900 / GSM 1800" brand="BT" cc="gb" country="United Kingdom" operator="BT Group" status="Operational"
78 bands="TETRA" brand="Airwave" cc="gb" country="United Kingdom" operator="Airwave Solutions Ltd" status="Operational"
86 cc="gb" country="United Kingdom" operator="EE"
@@ -403,11 +414,11 @@
01 cc="gb" country="United Kingdom" operator="EE"
02 cc="gb" country="United Kingdom" operator="EE"
03 brand="Relish" cc="gb" country="United Kingdom" operator="UK Broadband Limited"
- 04 cc="gb" country="United Kingdom" operator="University of Strathclyde"
- 06 cc="gb" country="United Kingdom" operator="University of Strathclyde"
- 07 cc="gb" country="United Kingdom" operator="University of Strathclyde"
+ 04 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks"
+ 06 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks"
+ 07 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks"
77 brand="BT" cc="gb" country="United Kingdom" operator="BT Group"
- 88 bands="LTE" cc="gb" country="United Kingdom" operator="Telet Research (N.I.) Limited"
+ 88 bands="LTE" cc="gb" country="United Kingdom" operator="Telet Research (N.I.) Limited" status="Not operational"
91 brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone United Kingdom"
92 brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone United Kingdom" status="Not operational"
94 cc="gb" country="United Kingdom" operator="Hutchison 3G UK Ltd"
@@ -428,7 +439,7 @@
12 bands="MVNO" brand="Lycamobile" cc="dk" country="Denmark" operator="Lycamobile Denmark Ltd" status="Operational"
13 cc="dk" country="Denmark" operator="Compatel Limited"
14 cc="dk" country="Denmark" operator="Monty UK Global Limited"
- 15 bands="LTE 450" brand="Net 1" cc="dk" country="Denmark" operator="Ice Danmark ApS" status="Operational"
+ 15 bands="LTE 450" brand="Net 1" cc="dk" country="Denmark" operator="Cibicom" status="Operational"
16 cc="dk" country="Denmark" operator="Tismi B.V."
17 cc="dk" country="Denmark" operator="Gotanet AB"
18 cc="dk" country="Denmark" operator="Cubic Telecom"
@@ -446,26 +457,26 @@
96 brand="Telia" cc="dk" country="Denmark" operator="Telia Danmark"
00-99
240
- 01 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="se" country="Sweden" operator="Telia Sverige AB" status="Operational"
- 02 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 2600" brand="3" cc="se" country="Sweden" operator="HI3G Access AB" status="Operational"
- 03 bands="LTE 450" brand="Net 1" cc="se" country="Sweden" operator="Netett Sverige AB" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700" brand="Telia" cc="se" country="Sweden" operator="Telia Sverige AB" status="Operational"
+ 02 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 2600 / TD-5G 2600" brand="3" cc="se" country="Sweden" operator="HI3G Access AB" status="Operational"
+ 03 bands="LTE 450" brand="Net 1" cc="se" country="Sweden" operator="Teracom Mobil AB" status="Operational"
04 bands="UMTS 2100" brand="SWEDEN" cc="se" country="Sweden" operator="3G Infrastructure Services AB" status="Operational"
05 bands="UMTS 2100" brand="Sweden 3G" cc="se" country="Sweden" operator="Svenska UMTS-Nät AB" status="Operational"
06 bands="UMTS 2100" brand="Telenor" cc="se" country="Sweden" operator="Telenor Sverige AB" status="Operational"
- 07 bands="UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Tele2" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational"
+ 07 bands="UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G" brand="Tele2" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational"
08 bands="GSM 900 / GSM 1800" brand="Telenor" cc="se" country="Sweden" operator="Telenor Sverige AB" status="Not operational"
09 brand="Com4" cc="se" country="Sweden" operator="Communication for Devices in Sweden AB"
10 brand="Spring Mobil" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational"
11 cc="se" country="Sweden" operator="ComHem AB"
12 bands="MVNO" brand="Lycamobile" cc="se" country="Sweden" operator="Lycamobile Sweden Limited" status="Operational"
- 13 cc="se" country="Sweden" operator="Alltele Företag Sverige AB"
+ 13 cc="se" country="Sweden" operator="A3 Företag AB"
14 cc="se" country="Sweden" operator="Tele2 Business AB"
15 cc="se" country="Sweden" operator="Sierra Wireless Sweden AB"
16 bands="GSM" cc="se" country="Sweden" operator="42 Telecom AB" status="Operational"
17 bands="MVNO" brand="Gotanet" cc="se" country="Sweden" operator="Götalandsnätet AB" status="Operational"
18 cc="se" country="Sweden" operator="Generic Mobile Systems Sweden AB"
19 bands="MVNO" brand="Vectone Mobile" cc="se" country="Sweden" operator="Mundio Mobile (Sweden) Limited" status="Operational"
- 20 bands="GSM" cc="se" country="Sweden" operator="Wireless Maingate Messaging Services AB" status="Operational"
+ 20 bands="MVNO" cc="se" country="Sweden" operator="Sierra Wireless Messaging AB" status="Operational"
21 bands="GSM-R 900" brand="MobiSir" cc="se" country="Sweden" operator="Trafikverket ICT" status="Operational"
22 cc="se" country="Sweden" operator="EuTel AB"
23 cc="se" country="Sweden" operator="Infobip Limited (UK)" status="Not operational"
@@ -482,9 +493,9 @@
34 cc="se" country="Sweden" operator="Trafikverket centralfunktion IT"
35 cc="se" country="Sweden" operator="42 Telecom LTD"
36 cc="se" country="Sweden" operator="interactive digital media GmbH"
- 37 cc="se" country="Sweden" operator="CLX Networks AB" status="Operational"
+ 37 cc="se" country="Sweden" operator="Sinch Sweden AB"
38 bands="MVNO" brand="Voxbone" cc="se" country="Sweden" operator="Voxbone mobile" status="Operational"
- 39 cc="se" country="Sweden" operator="Borderlight AB"
+ 39 cc="se" country="Sweden" operator="Primlight AB"
40 cc="se" country="Sweden" operator="Netmore Group AB"
41 cc="se" country="Sweden" operator="Shyam Telecom UK Ltd." status="Not operational"
42 cc="se" country="Sweden" operator="Telenor Connexion AB"
@@ -494,13 +505,13 @@
46 bands="MVNO" brand="Viahub" cc="se" country="Sweden" operator="SMS Provider Corp."
47 cc="se" country="Sweden" operator="Viatel Sweden AB"
48 bands="MVNO" cc="se" country="Sweden" operator="Tismi BV"
- 60 cc="se" country="Sweden" operator="Telefonaktiebolaget LM Ericsson"
- 61 cc="se" country="Sweden" operator="MessageBird B.V."
+ 60 cc="se" country="Sweden" operator="Telefonaktiebolaget LM Ericsson" status="Not operational"
+ 61 cc="se" country="Sweden" operator="MessageBird B.V." status="Not operational"
63 brand="FTS" cc="se" country="Sweden" operator="Fink Telecom Services" status="Operational"
00-99
242
- 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational"
03 cc="no" country="Norway" operator="Televerket AS" status="Not operational"
04 bands="MVNO" brand="Tele2" cc="no" country="Norway" operator="Tele2 (Mobile Norway AS)" status="Not operational"
05 bands="GSM 900 / UMTS 900 / UMTS 2100" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Not operational"
@@ -509,13 +520,13 @@
08 bands="MVNO" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational"
09 bands="MVNO" brand="Com4" cc="no" country="Norway" operator="Com4 AS" status="Operational"
10 cc="no" country="Norway" operator="Norwegian Communications Authority"
- 11 bands="Test" brand="SystemNet" cc="no" country="Norway" operator="SystemNet AS"
+ 11 bands="Test" brand="SystemNet" cc="no" country="Norway" operator="SystemNet AS" status="Not operational"
12 brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS"
14 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="ice" cc="no" country="Norway" operator="ICE Communication Norge AS" status="Operational"
15 bands="MVNO" cc="no" country="Norway" operator="eRate Norway AS" status="Operational"
20 bands="GSM-R 900" cc="no" country="Norway" operator="Jernbaneverket AS" status="Operational"
21 bands="GSM-R 900" cc="no" country="Norway" operator="Jernbaneverket AS" status="Operational"
- 22 cc="no" country="Norway" operator="Altibox AS" status="Not operational"
+ 22 cc="no" country="Norway" operator="Altibox AS"
23 bands="MVNO" brand="Lycamobile" cc="no" country="Norway" operator="Lyca Mobile Ltd" status="Operational"
24 cc="no" country="Norway" operator="Mobile Norway AS" status="Not operational"
25 cc="no" country="Norway" operator="Forsvarets kompetansesenter KKIS"
@@ -525,20 +536,20 @@
244
03 bands="GSM 1800" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational"
04 brand="DNA" cc="fi" country="Finland" operator="DNA Oy"
- 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational"
+ 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500" brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational"
06 brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Not operational"
07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 2600" brand="Nokia" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" status="Operational"
08 bands="GSM 1800 / UMTS 2100" brand="Nokia" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy"
09 bands="GSM 900" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy"
10 cc="fi" country="Finland" operator="Traficom"
11 cc="fi" country="Finland" operator="Traficom"
- 12 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational"
+ 12 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational"
13 bands="GSM 900 / GSM 1800" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Not operational"
14 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Ålcom" cc="fi" country="Finland" operator="Ålands Telekommunikation Ab" status="Operational"
- 15 bands="GSM 1800" brand="SAMK" cc="fi" country="Finland" operator="Satakunnan ammattikorkeakoulu Oy" status="Not operational"
+ 15 cc="fi" country="Finland" operator="Telit Wireless Solutions GmbH"
16 bands="MVNO" brand="Tele2" cc="fi" country="Finland" operator="Oy Finland Tele2 AB" status="Not operational"
17 bands="GSM-R" cc="fi" country="Finland" operator="Liikennevirasto" status="Operational"
- 20 cc="fi" country="Finland" operator="Telia Finland Oyj"
+ 20 cc="fi" country="Finland" operator="Telia Finland Oyj" status="Not operational"
21 bands="MVNO" brand="Elisa- Saunalahti" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational"
22 cc="fi" country="Finland" operator="EXFO Oy" status="Not operational"
23 cc="fi" country="Finland" operator="EXFO Oy" status="Not operational"
@@ -547,14 +558,14 @@
26 bands="MVNO" brand="Compatel" cc="fi" country="Finland" operator="Compatel Ltd" status="Operational"
27 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy"
28 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy"
- 29 bands="MVNO" cc="fi" country="Finland" operator="SCNL Truphone" status="Not operational"
- 30 bands="MVNO" brand="Vectone Mobile" cc="fi" country="Finland" operator="Mundio Mobile Oy" status="Not operational"
- 31 bands="MVNO" brand="Kuiri" cc="fi" country="Finland" operator="Ukko Mobile Oy" status="Not operational"
+ 29 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy"
+ 30 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy"
+ 31 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy"
32 bands="MVNO" brand="Voxbone" cc="fi" country="Finland" operator="Voxbone SA" status="Operational"
33 bands="TETRA" brand="VIRVE" cc="fi" country="Finland" operator="Suomen Virveverkko Oy" status="Operational"
34 bands="MVNO" brand="Bittium Wireless" cc="fi" country="Finland" operator="Bittium Wireless Oy" status="Operational"
- 35 bands="LTE 450 / TD-LTE 2600" brand="Ukko Mobile" cc="fi" country="Finland" operator="Ukkoverkot Oy" status="Operational"
- 36 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia / DNA" cc="fi" country="Finland" operator="Telia Finland Oyj / Suomen Yhteisverkko Oy" status="Operational"
+ 35 bands="LTE 450 / TD-LTE 2600" cc="fi" country="Finland" operator="Edzcom Oy" status="Operational"
+ 36 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Telia / DNA" cc="fi" country="Finland" operator="Telia Finland Oyj / Suomen Yhteisverkko Oy" status="Operational"
37 bands="MVNO" brand="Tismi" cc="fi" country="Finland" operator="Tismi BV" status="Operational"
38 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy"
39 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy"
@@ -563,18 +574,22 @@
42 cc="fi" country="Finland" operator="SMS Provider Corp."
43 cc="fi" country="Finland" operator="Telavox AB / Telavox Oy"
44 cc="fi" country="Finland" operator="Turun ammattikorkeakoulu Oy"
- 50 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 51 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 52 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 53 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 54 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 55 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 56 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 57 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 58 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 59 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr"
- 91 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="fi" country="Finland" operator="Telia Finland Oyj" status="Operational"
+ 45 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy"
+ 46 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy"
+ 47 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy"
+ 50 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 51 bands="NB-IoT 700" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Operational"
+ 52 bands="5G 3500" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Operational"
+ 53 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 54 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 55 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 56 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 57 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 58 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 59 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing"
+ 91 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telia" cc="fi" country="Finland" operator="Telia Finland Oyj" status="Operational"
92 brand="Sonera" cc="fi" country="Finland" operator="TeliaSonera Finland Oyj" status="Not operational"
+ 99 cc="fi" country="Finland" operator="Oy L M Ericsson Ab"
00-99
246
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Telia" cc="lt" country="Lithuania" operator="Telia Lietuva" status="Operational"
@@ -587,10 +602,11 @@
08 bands="WiMAX 3500 / TD-LTE 2300" brand="MEZON" cc="lt" country="Lithuania" operator="Lietuvos radijo ir televizijos centras" status="Operational"
09 cc="lt" country="Lithuania" operator="Interactive Digital Media GmbH"
11 cc="lt" country="Lithuania" operator="DATASIM OU"
+ 12 cc="lt" country="Lithuania" operator="Nord connect OU"
00-99
247
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="LMT" cc="lv" country="Latvia" operator="Latvian Mobile Telephone" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Tele2" cc="lv" country="Latvia" operator="Tele2" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Tele2" cc="lv" country="Latvia" operator="Tele2" status="Operational"
03 bands="CDMA 450" brand="TRIATEL" cc="lv" country="Latvia" operator="Telekom Baltija" status="Operational"
04 cc="lv" country="Latvia" operator="Beta Telecom" status="Not operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Bite" cc="lv" country="Latvia" operator="Bite Latvija" status="Operational"
@@ -616,6 +632,8 @@
14 cc="ee" country="Estonia" operator="Estonian Crafts OÜ"
15 cc="ee" country="Estonia" operator="Premium Net International S.R.L. Eesti filiaal" status="Not operational"
16 bands="MVNO" brand="dzinga" cc="ee" country="Estonia" operator="SmartTel Plus OÜ" status="Operational"
+ 17 cc="ee" country="Estonia" operator="Baltergo OÜ"
+ 18 cc="ee" country="Estonia" operator="Cloud Communications OÜ"
71 cc="ee" country="Estonia" operator="Siseministeerium (Ministry of Interior)"
00-99
250
@@ -623,11 +641,11 @@
02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="MegaFon" cc="ru" country="Russian Federation" operator="MegaFon PJSC" status="Operational"
03 bands="GSM 900 / GSM 1800" brand="NCC" cc="ru" country="Russian Federation" operator="Nizhegorodskaya Cellular Communications" status="Not operational"
04 bands="GSM 900" brand="Sibchallenge" cc="ru" country="Russian Federation" operator="Sibchallenge" status="Not operational"
- 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / CDMA2000 450" brand="ETK" cc="ru" country="Russian Federation" operator="Yeniseytelecom" status="Not operational"
- 06 bands="CDMA2000 450" brand="Skylink" cc="ru" country="Russian Federation" operator="CJSC Saratov System of Cellular Communications" status="Operational"
+ 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / CDMA 450" brand="ETK" cc="ru" country="Russian Federation" operator="Yeniseytelecom" status="Not operational"
+ 06 bands="CDMA 450" brand="Skylink" cc="ru" country="Russian Federation" operator="CJSC Saratov System of Cellular Communications" status="Operational"
07 bands="GSM 900 / GSM 1800" brand="SMARTS" cc="ru" country="Russian Federation" operator="Zao SMARTS" status="Not operational"
- 08 bands="GSM 900 / GSM 1800 / LTE 2300" brand="Vainah Telecom" cc="ru" country="Russian Federation" operator="CS "VainahTelecom"" status="Operational"
- 09 bands="CDMA2000 450" brand="Skylink" cc="ru" country="Russian Federation" operator="Khabarovsky Cellular Phone" status="Operational"
+ 08 bands="GSM 900 / GSM 1800 / TD-LTE 2300" brand="Vainah Telecom" cc="ru" country="Russian Federation" operator="CS "VainahTelecom"" status="Operational"
+ 09 bands="CDMA 450" brand="Skylink" cc="ru" country="Russian Federation" operator="Khabarovsky Cellular Phone" status="Operational"
10 bands="GSM 900" brand="DTC" cc="ru" country="Russian Federation" operator="Dontelekom" status="Not operational"
11 bands="MVNO" brand="Yota" cc="ru" country="Russian Federation" operator="Scartel" status="Operational"
12 bands="GSM 1800" brand="Akos" cc="ru" country="Russian Federation" operator="Baykal Westcom / New Telephone Company / Far Eastern Cellular" status="Not operational"
@@ -638,23 +656,23 @@
17 bands="GSM 900 / GSM 1800" brand="Utel" cc="ru" country="Russian Federation" operator="JSC Uralsvyazinform" status="Not operational"
18 bands="TD-LTE 2300" brand="Osnova Telecom" cc="ru" country="Russian Federation" status="Not operational"
19 bands="GSM 1800" brand="INDIGO" cc="ru" country="Russian Federation" operator="INDIGO" status="Not operational"
- 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 1800 / LTE 2600" brand="Tele2" cc="ru" country="Russian Federation" operator="Tele2" status="Operational"
+ 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 800 / LTE 1800 / TD-LTE 2300 / LTE 2600" brand="Tele2" cc="ru" country="Russian Federation" operator="Tele2" status="Operational"
21 bands="Satellite" brand="GlobalTel" cc="ru" country="Russian Federation" operator="JSC "GlobalTel"" status="Operational"
22 bands="TD-LTE 2300" cc="ru" country="Russian Federation" operator="Vainakh Telecom" status="Operational"
23 bands="Satellite MVNO" brand="Thuraya" cc="ru" country="Russian Federation" operator="GTNT" status="Operational"
27 bands="GSM 1800 / LTE 1800" brand="Letai" cc="ru" country="Russian Federation" operator="Tattelecom" status="Operational"
28 bands="GSM 900" brand="Beeline" cc="ru" country="Russian Federation" operator="Beeline" status="Not operational"
29 bands="Satellite MVNO" brand="Iridium" cc="ru" country="Russian Federation" operator="Iridium Communications" status="Operational"
- 32 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Win Mobile" cc="ru" country="Russian Federation" operator="K-Telecom" status="Operational"
- 33 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Sevmobile" cc="ru" country="Russian Federation" operator="Sevtelekom" status="Operational"
+ 32 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Win Mobile" cc="ru" country="Russian Federation" operator="K-Telecom" status="Operational"
+ 33 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Sevmobile" cc="ru" country="Russian Federation" operator="Sevtelekom" status="Operational"
34 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Krymtelekom" cc="ru" country="Russian Federation" operator="Krymtelekom" status="Operational"
- 35 bands="GSM 1800 / LTE 1800" brand="MOTIV" cc="ru" country="Russian Federation" operator="EKATERINBURG-2000" status="Operational"
+ 35 bands="GSM 1800 / LTE 1800 / TD-LTE 2600" brand="MOTIV" cc="ru" country="Russian Federation" operator="EKATERINBURG-2000" status="Operational"
38 bands="GSM 900 / GSM 1800" brand="Tambov GSM" cc="ru" country="Russian Federation" operator="Central Telecommunication Company" status="Not operational"
39 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / TD-LTE 2300 / LTE 2600" brand="Rostelecom" cc="ru" country="Russian Federation" operator="ROSTELECOM" status="Not operational"
44 cc="ru" country="Russian Federation" operator="Stavtelesot / North Caucasian GSM" status="Not operational"
50 bands="MVNO" brand="MTS" cc="ru" country="Russian Federation" operator="Bezlimitno.ru" status="Operational"
54 bands="LTE 1800" brand="TTK" cc="ru" country="Russian Federation" operator="Tattelecom" status="Not operational"
- 60 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Volna mobile" cc="ru" country="Russian Federation" operator="KTK Telecom" status="Operational"
+ 60 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Volna mobile" cc="ru" country="Russian Federation" operator="KTK Telecom" status="Operational"
61 bands="CDMA 800" brand="Intertelecom" cc="ru" country="Russian Federation" operator="Intertelecom" status="Not operational"
62 bands="MVNO" brand="Tinkoff Mobile" cc="ru" country="Russian Federation" operator="Tinkoff Mobile" status="Operational"
811 bands="AMPS / DAMPS / GSM 1800" cc="ru" country="Russian Federation" operator="Votek Mobile" status="Not operational"
@@ -697,8 +715,8 @@
99 bands="UMTS 2100" brand="Unité" cc="md" country="Moldova" operator="Moldtelecom" status="Operational"
00-99
260
- 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2100" brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600 / 5G 2600" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2100 / 5G 2100" brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2100" brand="Orange" cc="pl" country="Poland" operator="Polska Telefonia Komórkowa Centertel Sp. z o.o." status="Operational"
04 brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Not operational"
05 bands="UMTS 2100" brand="Orange" cc="pl" country="Poland" operator="Polska Telefonia Komórkowa Centertel Sp. z o.o." status="Not operational"
@@ -707,7 +725,7 @@
08 cc="pl" country="Poland" operator="E-Telko Sp. z o.o." status="Not operational"
09 bands="MVNO" brand="Lycamobile" cc="pl" country="Poland" operator="Lycamobile Sp. z o.o." status="Operational"
10 brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A."
- 11 bands="CDMA2000 420" brand="Nordisk Polska" cc="pl" country="Poland" operator="Nordisk Polska Sp. z o.o." status="Operational"
+ 11 bands="CDMA2000 420" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational"
12 bands="MVNO" brand="Cyfrowy Polsat" cc="pl" country="Poland" operator="Cyfrowy Polsat S.A." status="Operational"
13 bands="MVNO" cc="pl" country="Poland" operator="Move Telecom S.A." status="Operational"
14 cc="pl" country="Poland" operator="Telco Leaders Ltd"
@@ -716,9 +734,9 @@
17 bands="UMTS 900 / TD-LTE 2600" brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Operational"
18 brand="AMD Telecom" cc="pl" country="Poland" operator="AMD Telecom S.A."
19 bands="MVNO" cc="pl" country="Poland" operator="SIA NetBalt"
- 20 cc="pl" country="Poland" operator="Wysyłaj SMS Polska Sp. z o.o."
- 21 brand="Exteri" cc="pl" country="Poland" operator="Exteri Sp. z o.o." status="Not operational"
- 22 brand="Arcomm" cc="pl" country="Poland" operator="Arcomm Sp. z o.o." status="Not operational"
+ 20 cc="pl" country="Poland" operator="Wysyłaj SMS Polska Sp. z o.o." status="Not operational"
+ 21 cc="pl" country="Poland" operator="private networks"
+ 22 cc="pl" country="Poland" operator="Twilio Ireland Limited"
23 cc="pl" country="Poland" operator="PGE Systemy S.A."
24 cc="pl" country="Poland" operator="IT Partners Telco Sp. z o.o."
25 cc="pl" country="Poland" operator="Polskie Sieci Radiowe Sp. z o.o. Sp. k.a." status="Not operational"
@@ -742,16 +760,17 @@
43 cc="pl" country="Poland" operator="Smart Idea International Sp. z o.o."
44 cc="pl" country="Poland" operator="Rebtel Poland Sp. z o.o." status="Not operational"
45 bands="MVNO" cc="pl" country="Poland" operator="Virgin Mobile Polska Sp. z o.o." status="Operational"
- 46 cc="pl" country="Poland" operator="Terra Telekom Sp. z o.o."
+ 46 cc="pl" country="Poland" operator="Terra Telekom Sp. z o.o." status="Not operational"
47 cc="pl" country="Poland" operator="SMShighway Limited"
48 cc="pl" country="Poland" operator="AGILE TELECOM S.P.A."
49 cc="pl" country="Poland" operator="Messagebird B.V."
+ 97 cc="pl" country="Poland" operator="Politechnika Łódzka Uczelniane Centrum Informatyczne"
98 bands="LTE 1800" brand="Play" cc="pl" country="Poland" operator="P4 Sp. z o.o." status="Not operational"
00-99
262
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="O2 " cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="O2 " cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Reserved"
05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="O2 " cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Reserved"
06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Reserved"
@@ -809,6 +828,7 @@
21 bands="CDMA2000 450" brand="Zapp" cc="pt" country="Portugal" operator="Zapp Portugal" status="Not operational"
80 brand="MEO" cc="pt" country="Portugal" operator="Telecomunicações Móveis Nacionais"
91 brand="Vodafone" cc="pt" country="Portugal" operator="Vodafone Portugal"
+ 93 brand="NOS" cc="pt" country="Portugal" operator="NOS Comunicações"
00-99
270
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="POST" cc="lu" country="Luxembourg" operator="POST Luxembourg" status="Operational"
@@ -838,11 +858,12 @@
16 bands="MVNO" brand="Carphone Warehouse" cc="ie" country="Ireland" operator="Carphone Warehouse" status="Operational"
17 brand="3" cc="ie" country="Ireland" operator="Hutchison 3G Ireland limited"
18 bands="MVNO" cc="ie" country="Ireland" operator="Cubic Telecom Limited" status="Operational"
+ 21 bands="MVNO" cc="ie" country="Ireland" operator="Net Feasa Limited" status="Operational"
00-99
274
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Síminn" cc="is" country="Iceland" operator="Iceland Telecom" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Vodafone" cc="is" country="Iceland" operator="Og fjarskipti hf" status="Operational"
- 03 brand="Vodafone" cc="is" country="Iceland" operator="Og fjarskipti hf" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Vodafone" cc="is" country="Iceland" operator="Sýn" status="Operational"
+ 03 brand="Vodafone" cc="is" country="Iceland" operator="Sýn" status="Operational"
04 bands="GSM 1800" brand="Viking" cc="is" country="Iceland" operator="IMC Island ehf" status="Operational"
05 bands="GSM 1800" cc="is" country="Iceland" operator="Halló Frjáls fjarskipti hf." status="Not operational"
06 cc="is" country="Iceland" operator="Núll níu ehf" status="Not operational"
@@ -853,12 +874,13 @@
16 cc="is" country="Iceland" operator="Tismi BV"
22 cc="is" country="Iceland" operator="Landhelgisgæslan (Icelandic Coast Guard)"
31 brand="Síminn" cc="is" country="Iceland" operator="Iceland Telecom"
+ 91 bands="Tetra" cc="is" country="Iceland" operator="Neyðarlínan" status="Operational"
00-99
276
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Telekom.al" cc="al" country="Albania" operator="Telekom Albania" status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Vodafone" cc="al" country="Albania" operator="Vodafone Albania" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Eagle Mobile" cc="al" country="Albania" operator="Albtelecom" status="Operational"
- 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Plus Communication" cc="al" country="Albania" operator="Plus Communication" status="Operational"
+ 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Plus Communication" cc="al" country="Albania" operator="Plus Communication" status="Not operational"
00-99
278
01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Vodafone" cc="mt" country="Malta" operator="Vodafone Malta" status="Operational"
@@ -876,10 +898,10 @@
23 bands="MVNO" brand="Vectone Mobile" cc="cy" country="Cyprus" operator="Mundio Mobile Cyprus Ltd." status="Not operational"
00-99
282
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2300" brand="Geocell" cc="ge" country="Georgia" operator="Silknet" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Magti" cc="ge" country="Georgia" operator="MagtiCom" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Geocell" cc="ge" country="Georgia" operator="Silknet" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Magti" cc="ge" country="Georgia" operator="MagtiCom" status="Operational"
03 bands="CDMA 450" brand="MagtiFix" cc="ge" country="Georgia" operator="MagtiCom" status="Operational"
- 04 bands="GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="ge" country="Georgia" operator="Mobitel" status="Operational"
+ 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="ge" country="Georgia" operator="Mobitel" status="Operational"
05 bands="CDMA 800" brand="S1" cc="ge" country="Georgia" operator="Silknet" status="Operational"
06 cc="ge" country="Georgia" operator="JSC Compatel"
07 bands="MVNO" brand="GlobalCell" cc="ge" country="Georgia" operator="GlobalCell" status="Operational"
@@ -887,14 +909,15 @@
09 cc="ge" country="Georgia" operator="Gmobile" status="Operational"
10 cc="ge" country="Georgia" operator="Premium Net International SRL"
11 cc="ge" country="Georgia" operator="Mobilive"
- 12 cc="ge" country="Georgia" operator="Datacomm Ltd"
+ 12 cc="ge" country="Georgia" operator="Telecom1 Ltd"
13 cc="ge" country="Georgia" operator="Asanet Ltd"
+ 14 bands="MVNO" brand="DataCell" cc="ge" country="Georgia" operator="DataHouse Global"
00-99
283
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 1800" brand="Beeline" cc="am" country="Armenia" operator="Veon Armenia CJSC" status="Operational"
04 bands="GSM 900 / UMTS 900" brand="Karabakh Telecom" cc="am" country="Armenia" operator="Karabakh Telecom" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="VivaCell-MTS" cc="am" country="Armenia" operator="K Telecom CJSC" status="Operational"
- 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Ucom" cc="am" country="Armenia" operator="Ucom LLC" status="Operational"
+ 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Ucom" cc="am" country="Armenia" operator="Ucom LLC" status="Operational"
00-99
284
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="A1" cc="bg" country="Bulgaria" operator="A1 Bulgaria" status="Operational"
@@ -906,14 +929,14 @@
13 bands="LTE 1800" brand="Ти.ком" cc="bg" country="Bulgaria" operator="Ti.com JSC" status="Operational"
00-99
286
- 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Turkcell" cc="tr" country="Turkey" operator="Turkcell Iletisim Hizmetleri A.S." status="Operational"
+ 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Turkcell" cc="tr" country="Turkey" operator="Turkcell Iletisim Hizmetleri A.S." status="Operational"
02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Vodafone" cc="tr" country="Turkey" operator="Vodafone Turkey" status="Operational"
- 03 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Türk Telekom" cc="tr" country="Turkey" operator="Türk Telekom" status="Operational"
+ 03 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Türk Telekom" cc="tr" country="Turkey" operator="Türk Telekom" status="Operational"
04 bands="GSM 1800" brand="Aycell" cc="tr" country="Turkey" operator="Aycell" status="Not operational"
00-99
288
- 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Faroese Telecom" cc="fo" country="Faroe Islands (Denmark)" operator="Faroese Telecom" status="Operational"
- 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Hey" cc="fo" country="Faroe Islands (Denmark)" operator="Vodafone Faroe Islands" status="Operational"
+ 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Føroya Tele" cc="fo" country="Faroe Islands (Denmark)" operator="Føroya Tele" status="Operational"
+ 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Hey" cc="fo" country="Faroe Islands (Denmark)" operator="Nema" status="Operational"
03 cc="fo" country="Faroe Islands (Denmark)" operator="Tosa Sp/F"
00-99
289
@@ -922,7 +945,7 @@
00-99
290
01 bands="GSM 900 / UMTS 900 / LTE 800" cc="gl" country="Greenland (Denmark)" operator="TELE Greenland A/S" status="Operational"
- 02 bands="TD-LTE 2500" brand="Nuuk TV" cc="gl" country="Greenland (Denmark)" operator="inu:it a/s" status="Operational"
+ 02 bands="TD-LTE 2500" brand="Nanoq Media" cc="gl" country="Greenland (Denmark)" operator="inu:it a/s" status="Operational"
00-99
292
01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="PRIMA" cc="sm" country="San Marino" operator="San Marino Telecom" status="Operational"
@@ -934,6 +957,7 @@
41 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Mobitel" cc="si" country="Slovenia" operator="Telekom Slovenije" status="Operational"
64 bands="UMTS 2100" brand="T-2" cc="si" country="Slovenia" operator="T-2 d.o.o." status="Operational"
70 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Telemach" cc="si" country="Slovenia" operator="Tušmobil d.o.o." status="Operational"
+ 86 cc="si" country="Slovenia" operator="ELEKTRO GORENJSKA, d.d"
00-99
294
01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Telekom.mk" cc="mk" country="North Macedonia" operator="Makedonski Telekom" status="Operational"
@@ -948,7 +972,7 @@
02 bands="GSM 1800 / UMTS 2100 / LTE 1800" brand="7acht" cc="li" country="Liechtenstein" operator="Salt Liechtenstein AG" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="FL1" cc="li" country="Liechtenstein" operator="Telecom Liechtenstein AG" status="Operational"
06 bands="MVNO" brand="Cubic Telecom" cc="li" country="Liechtenstein" operator="Cubic Telecom AG" status="Operational"
- 07 bands="MVNO" cc="li" country="Liechtenstein" operator="First Mobile AG"
+ 07 bands="MVNO" cc="li" country="Liechtenstein" operator="First Mobile AG" status="Not operational"
09 bands="MVNO" cc="li" country="Liechtenstein" operator="EMnify GmbH"
10 bands="MVNO" cc="li" country="Liechtenstein" operator="Soracom LI Ltd."
11 bands="MVNO" cc="li" country="Liechtenstein" operator="DIMOCO Messaging AG"
@@ -963,11 +987,12 @@
100 bands="MVNO" brand="dotmobile" cc="ca" country="Canada" operator="Data on Tap Inc."
130 bands="TD-LTE 3500 / WiMAX" brand="Xplornet" cc="ca" country="Canada" operator="Xplornet Communications" status="Operational"
131 bands="TD-LTE 3500 / WiMAX" brand="Xplornet" cc="ca" country="Canada" operator="Xplornet Communications" status="Operational"
- 220 bands="UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Telus Mobility, Koodo Mobile, Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational"
+ 150 cc="ca" country="Canada" operator="Cogeco Connexion Inc."
+ 220 bands="UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600 / 5G 1700" brand="Telus Mobility, Koodo Mobile, Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational"
221 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility"
222 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility"
250 brand="ALO" cc="ca" country="Canada" operator="ALO Mobile Inc."
- 270 bands="UMTS 1700 / LTE 1700" brand="EastLink" cc="ca" country="Canada" operator="Bragg Communications" status="Operational"
+ 270 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="EastLink" cc="ca" country="Canada" operator="Bragg Communications" status="Operational"
290 bands="iDEN 900" brand="Airtel Wireless" cc="ca" country="Canada" operator="Airtel Wireless" status="Operational"
300 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ambra Solutions"
310 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ambra Solutions"
@@ -984,17 +1009,17 @@
480 bands="GSM 1900 / LTE 2600" brand="Qiniq" cc="ca" country="Canada" operator="SSi Connexions" status="Operational"
490 bands="UMTS 1700 / LTE 700 / LTE 1700 / LTE 2600" brand="Freedom Mobile" cc="ca" country="Canada" operator="Shaw Communications" status="Operational"
491 brand="Freedom Mobile" cc="ca" country="Canada" operator="Shaw Communications"
- 500 bands="UMTS 1700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational"
- 510 bands="UMTS 1700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational"
+ 500 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational"
+ 510 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational"
520 brand="Videotron" cc="ca" country="Canada" operator="Videotron"
530 bands="GSM" brand="Keewaytinook Mobile" cc="ca" country="Canada" operator="Keewaytinook Okimakanak Mobile" status="Operational"
540 cc="ca" country="Canada" operator="Rovvr Communications Inc."
550 bands="LTE?" cc="ca" country="Canada" operator="Star Solutions International Inc."
- 560 bands="CDMA / GSM" brand="Lynx Mobility" cc="ca" country="Canada" operator="Lynx Mobility" status="Operational"
+ 560 bands="CDMA / GSM" brand="Lynx Mobility" cc="ca" country="Canada" operator="Lynx Mobility" status="Not operational"
570 brand="LightSquared" cc="ca" country="Canada" operator="LightSquared"
590 brand="Quadro Mobility" cc="ca" country="Canada" operator="Quadro Communications Co-op" status="Operational"
600 cc="ca" country="Canada" operator="Iristel"
- 610 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / LTE 2600" brand="Bell Mobility, Virgin Mobile Canada" cc="ca" country="Canada" operator="Bell Mobility" status="Operational"
+ 610 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 1700" brand="Bell Mobility" cc="ca" country="Canada" operator="Bell Mobility" status="Operational"
620 bands="UMTS 850 / GSM 1900 / LTE 850 / LTE 1900" brand="ICE Wireless" cc="ca" country="Canada" operator="ICE Wireless" status="Operational"
630 brand="Aliant Mobility" cc="ca" country="Canada" operator="Bell Aliant"
640 bands="CDMA 800 / CDMA 1900" brand="Bell" cc="ca" country="Canada" operator="Bell Mobility" status="Not operational"
@@ -1012,14 +1037,14 @@
702 bands="CDMA2000" cc="ca" country="Canada" operator="MT&T Mobility (Aliant)" status="Not operational"
703 bands="CDMA2000" cc="ca" country="Canada" operator="New Tel Mobility (Aliant)" status="Not operational"
710 bands="Satellite CDMA" brand="Globalstar" cc="ca" country="Canada" status="Operational"
- 720 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational"
+ 720 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600 / 5G 2500" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational"
721 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications"
730 brand="TerreStar Solutions" cc="ca" country="Canada" operator="TerreStar Networks"
740 brand="Shaw Telecom" cc="ca" country="Canada" operator="Shaw Communications" status="Not operational"
750 brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility"
760 bands="MVNO" brand="Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational"
770 bands="UMTS 850" brand="TNW Wireless" cc="ca" country="Canada" operator="TNW Wireless Inc." status="Operational"
- 780 bands="UMTS 850 / UMTS 1900 / LTE 1700" brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Operational"
+ 780 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700" brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Operational"
790 bands="WiMAX / TD-LTE 3500" cc="ca" country="Canada" operator="NetSet Communications" status="Operational"
820 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications"
860 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility"
@@ -1028,10 +1053,14 @@
940 bands="UMTS 850 / UMTS 1900" brand="Wightman Mobility" cc="ca" country="Canada" operator="Wightman Telecom" status="Operational"
990 cc="ca" country="Canada" operator="Ericsson Canada"
991 cc="ca" country="Canada" operator="Halton Regional Police Service"
+ 996 cc="ca" country="Canada" operator="Powertech Labs"
+ 997 cc="ca" country="Canada" operator="Powertech Labs"
+ 998 cc="ca" country="Canada" operator="Powertech Labs"
000-999
308
01 bands="GSM 900" brand="Ameris" cc="pm" country="Saint Pierre and Miquelon (France)" operator="St. Pierre-et-Miquelon Télécom" status="Operational"
02 bands="GSM 900 / LTE 800" brand="GLOBALTEL" cc="pm" country="Saint Pierre and Miquelon (France)" operator="GLOBALTEL" status="Operational"
+ 03 brand="Ameris" cc="pm" country="Saint Pierre and Miquelon (France)" operator="St. Pierre-et-Miquelon Télécom"
00-99
310
004 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational"
@@ -1046,7 +1075,7 @@
017 bands="iDEN" brand="ProxTel" cc="us" country="United States of America" operator="North Sight Communications Inc." status="Not operational"
020 bands="GSM 850 / GSM 1900 / UMTS" brand="Union Wireless" cc="us" country="United States of America" operator="Union Telephone Company" status="Operational"
030 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational"
- 032 bands="CDMA 1900 / GSM 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="IT&E Overseas, Inc" status="Operational"
+ 032 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="IT&E Overseas, Inc" status="Operational"
033 cc="us" country="United States of America" operator="Guam Telephone Authority"
034 bands="iDEN" brand="Airpeak" cc="us" country="United States of America" operator="Airpeak" status="Operational"
035 brand="ETEX Wireless" cc="us" country="United States of America" operator="ETEX Communications, LP"
@@ -1060,7 +1089,7 @@
080 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational"
090 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational"
100 bands="GSM 850 / UMTS 850 / UMTS 1700" brand="Plateau Wireless" cc="us" country="United States of America" operator="New Mexico RSA 4 East LP" status="Operational"
- 110 bands="CDMA / GSM 850 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational"
+ 110 bands="CDMA / GSM 850 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational"
120 bands="CDMA2000 1900 / LTE 850 / LTE 1900" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Operational"
130 bands="CDMA2000 1900" brand="Carolina West Wireless" cc="us" country="United States of America" operator="Carolina West Wireless" status="Operational"
140 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700" brand="GTA Wireless" cc="us" country="United States of America" operator="Teleguam Holdings, LLC" status="Operational"
@@ -1107,10 +1136,19 @@
540 bands="GSM 850 / GSM 1900" brand="Phoenix" cc="us" country="United States of America" operator="Hilliary Communications" status="Operational"
550 cc="us" country="United States of America" operator="Syniverse Technologies"
560 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational"
- 570 bands="GSM 850 / LTE 700" brand="Cellular One" cc="us" country="United States of America" operator="TX-10, LLC and Central Louisiana Cellular, LLC (MTPCS)" status="Operational"
+ 570 bands="GSM 850 / LTE 700" cc="us" country="United States of America" operator="Broadpoint, LLC" status="Operational"
580 bands="CDMA2000" cc="us" country="United States of America" operator="Inland Cellular Telephone Company" status="Operational"
59 bands="CDMA" brand="Cellular One" cc="bm" country="Bermuda" status="Operational"
590 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="Verizon Wireless"
+ 591 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 592 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 593 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 594 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 595 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 596 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 597 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 598 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
+ 599 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless"
600 bands="CDMA2000 850 / CDMA2000 1900" brand="Cellcom" cc="us" country="United States of America" operator="NewCell Inc." status="Operational"
610 bands="GSM 1900" brand="Epic PCS" cc="us" country="United States of America" operator="Elkhart Telephone Co." status="Not operational"
620 brand="Cellcom" cc="us" country="United States of America" operator="Nsighttel Wireless LLC"
@@ -1141,6 +1179,15 @@
870 bands="GSM 850" brand="PACE" cc="us" country="United States of America" operator="Kaplan Telephone Company" status="Not operational"
880 bands="LTE" brand="DTC Wireless" cc="us" country="United States of America" operator="Advantage Cellular Systems, Inc." status="Operational"
890 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="Verizon Wireless"
+ 891 cc="us" country="United States of America" operator="Verizon Wireless"
+ 892 cc="us" country="United States of America" operator="Verizon Wireless"
+ 893 cc="us" country="United States of America" operator="Verizon Wireless"
+ 894 cc="us" country="United States of America" operator="Verizon Wireless"
+ 895 cc="us" country="United States of America" operator="Verizon Wireless"
+ 896 cc="us" country="United States of America" operator="Verizon Wireless"
+ 897 cc="us" country="United States of America" operator="Verizon Wireless"
+ 898 cc="us" country="United States of America" operator="Verizon Wireless"
+ 899 cc="us" country="United States of America" operator="Verizon Wireless"
900 bands="CDMA2000 850 / CDMA2000 1900" brand="Mid-Rivers Wireless" cc="us" country="United States of America" operator="Cable & Communications Corporation" status="Operational"
910 bands="GSM 850" cc="us" country="United States of America" operator="Verizon Wireless"
920 bands="CDMA" cc="us" country="United States of America" operator="James Valley Wireless, LLC" status="Operational"
@@ -1276,7 +1323,7 @@
930 bands="LTE 700" cc="us" country="United States of America" operator="Syringa Wireless" status="Not operational"
940 bands="WiMAX" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Not operational"
950 bands="CDMA / LTE 700" brand="ETC" cc="us" country="United States of America" operator="Enhanced Telecommmunications Corp." status="Operational"
- 960 bands="MVNO" brand="Lycamobile" cc="us" country="United States of America" operator="Lycamobile USA Inc." status="Operational"
+ 960 bands="MVNO" brand="Lycamobile" cc="us" country="United States of America" operator="Lycamobile USA Inc." status="Not operational"
970 bands="LTE 1700" brand="Big River Broadband" cc="us" country="United States of America" operator="Big River Broadband, LLC" status="Operational"
980 cc="us" country="United States of America" operator="LigTel Communications"
990 bands="LTE 700 / LTE 1700" cc="us" country="United States of America" operator="VTel Wireless" status="Operational"
@@ -1287,7 +1334,7 @@
040 bands="LTE 700" cc="us" country="United States of America" operator="Custer Telephone Co-op (CTCI)" status="Operational"
050 bands="LTE 700" cc="us" country="United States of America" operator="Fuego Wireless" status="Not operational"
060 bands="CDMA / GSM" cc="us" country="United States of America" operator="CoverageCo"
- 070 bands="LTE 700" cc="us" country="United States of America" operator="Adams Networks Inc" status="Operational"
+ 070 bands="LTE 700" cc="us" country="United States of America" operator="Adams Networks Inc" status="Not operational"
080 bands="UMTS-TDD 700" brand="SyncSouth" cc="us" country="United States of America" operator="South Georgia Regional Information Technology Authority" status="Operational"
090 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility"
100 cc="us" country="United States of America" operator="ClearSky Technologies, Inc."
@@ -1345,7 +1392,7 @@
620 bands="MVNO" cc="us" country="United States of America" operator="GlobeTouch Inc." status="Operational"
630 cc="us" country="United States of America" operator="NetGenuity, Inc."
640 brand="Nemont" cc="us" country="United States of America" operator="Sagebrush Cellular, Inc." status="Not operational"
- 650 cc="us" country="United States of America" operator="365 Wireless LLC"
+ 650 cc="us" country="United States of America" operator="Brightlink"
660 bands="LTE 1900" brand="nTelos" cc="us" country="United States of America" operator="nTelos Wireless" status="Not operational"
670 brand="FirstNet" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational"
680 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility"
@@ -1388,11 +1435,20 @@
040 bands="CDMA" brand="NNTC Wireless" cc="us" country="United States of America" operator="Nucla-Naturita Telephone Company" status="Operational"
050 bands="CDMA" brand="Breakaway Wireless" cc="us" country="United States of America" operator="Manti Tele Communications Company, Inc." status="Not operational"
060 cc="us" country="United States of America" operator="Country Wireless" status="Operational"
+ 061 cc="us" country="United States of America" operator="Country Wireless"
070 cc="us" country="United States of America" operator="Midwest Network Solutions Hub LLC"
080 cc="us" country="United States of America" operator="Speedwavz LLP" status="Operational"
090 cc="us" country="United States of America" operator="Vivint Wireless, Inc." status="Operational"
- 100 bands="LTE 700" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband" status="Operational"
- 110 cc="us" country="United States of America"
+ 100 bands="LTE 700" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet" status="Operational"
+ 110 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet"
+ 120 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet"
+ 130 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet"
+ 140 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet"
+ 150 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband"
+ 160 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband"
+ 170 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband"
+ 180 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband"
+ 190 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband"
200 cc="us" country="United States of America" operator="Mercury Network Corporation" status="Operational"
210 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility"
220 cc="us" country="United States of America" operator="Custer Telephone Co-op (CTCI)"
@@ -1415,7 +1471,7 @@
390 bands="MVNO" cc="us" country="United States of America" operator="Altice USA Wireless, Inc."
400 cc="us" country="United States of America" operator="Texoma Communications, LLC"
410 cc="us" country="United States of America" operator="pdvWireless"
- 420 cc="us" country="United States of America" operator="Hudson Valley Wireless"
+ 420 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless"
440 cc="us" country="United States of America" operator="Arvig Enterprises, Inc."
450 cc="us" country="United States of America" operator="Spectrum Wireless Holdings, LLC"
460 bands="MVNO" cc="us" country="United States of America" operator="Mobi, Inc." status="Operational"
@@ -1428,6 +1484,32 @@
540 cc="us" country="United States of America" operator="Nokia Innovations US LLC"
550 cc="us" country="United States of America" operator="Mile High Networks LLC" status="Operational"
560 cc="us" country="United States of America" operator="Transit Wireless LLC" status="Operational"
+ 570 brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership"
+ 580 cc="us" country="United States of America" operator="Telecall Telecommunications Corp."
+ 590 brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications Services, Inc."
+ 600 cc="us" country="United States of America" operator="ST Engineering iDirect"
+ 610 cc="us" country="United States of America" operator="Crystal Automation Systems, Inc."
+ 620 bands="1700" cc="us" country="United States of America" operator="Screened Images, Inc."
+ 630 cc="us" country="United States of America" operator="LICT Corporation"
+ 640 bands="LTE 3500" cc="us" country="United States of America" operator="Geoverse LLC"
+ 650 cc="us" country="United States of America" operator="Chevron USA, Inc."
+ 660 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless"
+ 670 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless"
+ 680 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless"
+ 690 bands="LTE" cc="us" country="United States of America" operator="Shenandoah Cable Television, LLC" status="Operational"
+ 700 bands="800" cc="us" country="United States of America" operator="Ameren Services Company"
+ 710 cc="us" country="United States of America" operator="Extent Systems"
+ 720 cc="us" country="United States of America" operator="1st Point Communications, LLC"
+ 730 cc="us" country="United States of America" operator="TruAccess Networks"
+ 740 cc="us" country="United States of America" operator="RTO Wireless, LLC"
+ 750 brand="ZipLink" cc="us" country="United States of America" operator="313-CellTex Networks, LLC"
+ 760 bands="MVNO" cc="us" country="United States of America" operator="Hologram, Inc." status="Operational"
+ 770 bands="MVNO" cc="us" country="United States of America" operator="Tango Networks"
+ 000-999
+314
+ 020 cc="us" country="United States of America" operator="Spectrum Wireless Holdings, LLC"
+ 030 bands="LTE" cc="us" country="United States of America" operator="Baicells Technologies North America Inc."
+ 100 cc="us" country="United States of America"
000-999
316
011 bands="iDEN 800" brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications Services" status="Not operational"
@@ -1439,11 +1521,11 @@
000-999
334
001 cc="mx" country="Mexico" operator="Comunicaciones Digitales Del Norte, S.A. de C.V."
- 010 bands="iDEN 800" brand="AT&T" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational"
+ 010 bands="iDEN 800" brand="AT&T" cc="mx" country="Mexico" operator="AT&T Mexico" status="Not operational"
020 bands="GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Telcel" cc="mx" country="Mexico" operator="América Móvil" status="Operational"
- 030 bands="GSM 1900 / UMTS 850 / LTE 1900" brand="Movistar" cc="mx" country="Mexico" operator="Telefónica" status="Operational"
+ 030 bands="MVNO" brand="Movistar" cc="mx" country="Mexico" operator="Telefónica" status="Operational"
040 bands="CDMA2000 800 / CDMA2000 1900" brand="Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Not operational"
- 050 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 1700" brand="AT&T / Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational"
+ 050 bands="UMTS 850 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 1700" brand="AT&T / Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational"
060 cc="mx" country="Mexico" operator="Servicios de Acceso Inalambrico, S.A. de C.V."
066 cc="mx" country="Mexico" operator="Telefonos de México, S.A.B. de C.V."
070 brand="Unefon" cc="mx" country="Mexico" operator="AT&T Mexico"
@@ -1465,21 +1547,22 @@
180 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="FLOW" cc="jm" country="Jamaica" operator="Cable & Wireless Communications" status="Operational"
000-999
340
- 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="Orange" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Orange Caraïbe Mobiles" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Caraïbe" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Outremer Telecom" status="Operational"
+ 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Orange" country="'French Guiana (France) - GF'" operator="Orange Caraïbe Mobiles" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Caraïbe" country="'French Guiana (France) - GF'" operator="Outremer Telecom" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS / LTE 1800" brand="Chippie" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="UTS Caraïbe" status="Operational"
+ 04 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Caraïbe" status="Upcoming"
08 bands="GSM 900 / GSM 1800 / UMTS / LTE" brand="Dauphin" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Dauphin Telecom" status="Operational"
- 09 brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Mobile"
+ 09 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Caraïbe" status="Upcoming"
10 country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Guadeloupe Téléphone Mobile" status="Not operational"
- 11 country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Guyane Téléphone Mobile" status="Not operational"
+ 11 country="'French Guiana (France) - GF'" operator="Guyane Téléphone Mobile" status="Not operational"
12 country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Martinique Téléphone Mobile" status="Not operational"
- 20 bands="GSM 900 / UMTS 2100" brand="Digicel" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="DIGICEL Antilles Française Guyane" status="Operational"
+ 20 bands="GSM 900 / UMTS 2100 / LTE 800" brand="Digicel" country="'French Guiana (France) - GF'" operator="DIGICEL Antilles Française Guyane" status="Operational"
00-99
342
600 bands="GSM 1900 / UMTS 850 / LTE 850 / LTE 1900" brand="FLOW" cc="bb" country="Barbados" operator="LIME (formerly known as Cable & Wireless)" status="Operational"
750 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900" brand="Digicel" cc="bb" country="Barbados" operator="Digicel (Barbados) Limited" status="Operational"
- 800 bands="LTE 700" brand="Ozone" cc="bb" country="Barbados" operator="Ozone Wireless Inc." status="Operational"
- 820 cc="bb" country="Barbados" operator="Sunbeach Communications" status="Not operational"
+ 800 bands="LTE 700" brand="Ozone" cc="bb" country="Barbados" operator="Ozone Wireless Inc." status="Not operational"
+ 820 bands="CDMA" cc="bb" country="Barbados" operator="Sunbeach Communications" status="Not operational"
000-999
344
030 bands="GSM 1900" brand="APUA" cc="ag" country="Antigua and Barbuda" operator="Antigua Public Utilities Authority" status="Operational"
@@ -1489,25 +1572,26 @@
000-999
346
001 brand="Logic" cc="ky" country="Cayman Islands (United Kingdom)" operator="WestTel Ltd."
- 050 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Digicel" cc="ky" country="Cayman Islands (United Kingdom)" operator="Digicel Cayman Ltd." status="Operational"
+ 050 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Digicel" cc="ky" country="Cayman Islands (United Kingdom)" operator="Digicel Cayman Ltd." status="Operational"
140 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900" brand="FLOW" cc="ky" country="Cayman Islands (United Kingdom)" operator="Cable & Wireless (Cayman Islands) Limited" status="Operational"
000-999
348
- 170 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1900" brand="FLOW" cc="vg" country="British Virgin Islands" operator="Cable & Wireless" status="Operational"
+ 170 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900" brand="FLOW" cc="vg" country="British Virgin Islands" operator="Cable & Wireless" status="Operational"
370 cc="vg" country="British Virgin Islands" operator="BVI Cable TV Ltd"
570 bands="GSM 900 / GSM 1900 / UMTS 850 / LTE 900 / LTE 1900" brand="CCT Boatphone" cc="vg" country="British Virgin Islands" operator="Caribbean Cellular Telephone" status="Operational"
- 770 bands="GSM 1800 / GSM 1900 / UMTS 1900 / LTE 700" brand="Digicel" cc="vg" country="British Virgin Islands" operator="Digicel (BVI) Limited" status="Operational"
+ 770 bands="GSM 1800 / GSM 1900 / UMTS 1900 / LTE 700 / LTE 1700" brand="Digicel" cc="vg" country="British Virgin Islands" operator="Digicel (BVI) Limited" status="Operational"
000-999
350
- 000 bands="GSM 1900 / UMTS 850 / LTE 850" brand="CellOne" cc="bm" country="Bermuda" operator="Bermuda Digital Communications Ltd." status="Operational"
+ 00 bands="GSM 1900 / UMTS 850 / LTE 700" brand="One" cc="bm" country="Bermuda" operator="Bermuda Digital Communications Ltd." status="Operational"
01 bands="GSM 1900" brand="Digicel Bermuda" cc="bm" country="Bermuda" operator="Telecommunications (Bermuda & West Indies) Ltd" status="Reserved"
02 bands="GSM 1900 / UMTS" brand="Mobility" cc="bm" country="Bermuda" operator="M3 Wireless" status="Operational"
05 cc="bm" country="Bermuda" operator="Telecom Networks"
11 cc="bm" country="Bermuda" operator="Deltronics"
15 cc="bm" country="Bermuda" operator="FKB Net Ltd."
+ 00-99
352
- 030 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Digicel" cc="gd" country="Grenada" operator="Digicel Grenada Ltd." status="Operational"
- 110 bands="GSM 850 / LTE" brand="FLOW" cc="gd" country="Grenada" operator="Cable & Wireless Grenada Ltd." status="Operational"
+ 030 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700" brand="Digicel" cc="gd" country="Grenada" operator="Digicel Grenada Ltd." status="Operational"
+ 110 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="gd" country="Grenada" operator="Cable & Wireless Grenada Ltd." status="Operational"
000-999
354
860 bands="GSM 850" brand="FLOW" cc="ms" country="Montserrat (United Kingdom)" operator="Cable & Wireless" status="Operational"
@@ -1523,7 +1607,7 @@
360
050 bands="GSM 900 / GSM 1800 / GSM 1900 / LTE 700" brand="Digicel" cc="vc" country="Saint Vincent and the Grenadines" operator="Digicel (St. Vincent and the Grenadines) Limited" status="Operational"
100 bands="GSM 850" brand="Cingular Wireless" cc="vc" country="Saint Vincent and the Grenadines"
- 110 bands="GSM 850" brand="FLOW" cc="vc" country="Saint Vincent and the Grenadines" operator="Cable & Wireless (St. Vincent & the Grenadines) Ltd" status="Operational"
+ 110 bands="GSM 850 / LTE 700" brand="FLOW" cc="vc" country="Saint Vincent and the Grenadines" operator="Cable & Wireless (St. Vincent & the Grenadines) Ltd" status="Operational"
000-999
362
31 bands="GSM" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Eutel N.V."
@@ -1544,61 +1628,63 @@
00-99
363
01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 2100 / LTE 1800 / TDMA 800" brand="SETAR" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Servicio di Telecomunicacion di Aruba" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Digicel" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Digicel Aruba" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Digicel" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Digicel Aruba" status="Operational"
00-99
364
39 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700" brand="BTC" cc="bs" country="Bahamas" operator="The Bahamas Telecommunications Company Ltd (BaTelCo)" status="Operational"
- 49 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700" brand="Aliv" cc="bs" country="Bahamas" operator="Cable Bahamas Ltd" status="Operational"
+ 49 bands="UMTS 850 / LTE 700 / LTE 1700" brand="Aliv" cc="bs" country="Bahamas" operator="Cable Bahamas Ltd" status="Operational"
00-99
365
010 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" cc="ai" country="Anguilla" operator="Digicel" status="Operational"
840 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" brand="FLOW" cc="ai" country="Anguilla" operator="Cable & Wireless" status="Operational"
000-999
366
- 020 bands="GSM 900 / GSM 1900 / UMTS 900 / UMTS 1800 / UMTS 1900 / LTE 700" brand="Digicel" cc="dm" country="Dominica" operator="Digicel Group Limited" status="Operational"
+ 020 bands="GSM 900 / GSM 1900 / UMTS 900 / UMTS 1900 / LTE 700" brand="Digicel" cc="dm" country="Dominica" operator="Digicel Group Limited" status="Operational"
110 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="dm" country="Dominica" operator="Cable & Wireless" status="Operational"
000-999
368
- 01 bands="GSM 900 / GSM 850 / UMTS 900" brand="CUBACEL" cc="cu" country="Cuba" operator="Empresa de Telecomunicaciones de Cuba, SA" status="Operational"
+ 01 bands="GSM 900 / GSM 850 / UMTS 900 / UMTS 2100 / LTE 1800" brand="CUBACEL" cc="cu" country="Cuba" operator="Empresa de Telecomunicaciones de Cuba, SA" status="Operational"
00-99
370
- 01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 900 / LTE 1800" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational"
- 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700" brand="Claro" cc="do" country="Dominican Republic" operator="Compañía Dominicana de Teléfonos" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 900 / LTE 850 / LTE 1700 / LTE 1900" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational"
+ 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / LTE 1900 / LTE 2600" brand="Claro" cc="do" country="Dominican Republic" operator="Compañía Dominicana de Teléfonos" status="Operational"
03 bands="AMPS / CDMA 850" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational"
- 04 bands="CDMA 1900 / GSM 1900" brand="Viva" cc="do" country="Dominican Republic" operator="Trilogy Dominicana, S.A." status="Operational"
+ 04 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1700" brand="Viva" cc="do" country="Dominican Republic" operator="Trilogy Dominicana, S.A." status="Operational"
05 bands="TD-LTE 2600" brand="Wind" cc="do" country="Dominican Republic" operator="WIND Telecom, S.A" status="Operational"
00-99
372
01 bands="GSM 850" brand="Voila" cc="ht" country="Haiti" operator="Communication Cellulaire d'Haiti S.A." status="Not operational"
- 02 bands="GSM 1800" brand="Digicel" cc="ht" country="Haiti" operator="Unigestion Holding S.A." status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Digicel" cc="ht" country="Haiti" operator="Unigestion Holding S.A." status="Operational"
03 bands="GSM 900 / GSM 1800 / UTMS 2100 / LTE 800" brand="Natcom" cc="ht" country="Haiti" operator="NATCOM S.A." status="Operational"
00-99
374
12 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900 / TD-LTE 2500 / 5G 2500" brand="bmobile" cc="tt" country="Trinidad and Tobago" operator="TSTT" status="Operational"
+ 13 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Not Operational"
130 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Operational"
140 bands="CDMA" brand="Laqtel" cc="tt" country="Trinidad and Tobago" operator="LaqTel Ltd." status="Not operational"
376
- 350 bands="GSM 850 / LTE 700" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Operational"
- 352 bands="UMTS 850" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Operational"
- 360 brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)"
+ 350 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Operational"
+ 351 brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" status="Not operational"
+ 352 bands="UMTS 850" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Not operational"
+ 360 brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited"
000-999
400
- 01 bands="GSM 900 / GSM 1800/ UMTS 2100 / LTE 1800" brand="Azercell" cc="az" country="Azerbaijan" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Bakcell" cc="az" country="Azerbaijan" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Azercell" cc="az" country="Azerbaijan" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Bakcell" cc="az" country="Azerbaijan" status="Operational"
03 bands="CDMA 450" brand="FONEX" cc="az" country="Azerbaijan" operator="CATEL" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Nar Mobile" cc="az" country="Azerbaijan" operator="Azerfon" status="Operational"
05 bands="TETRA?" cc="az" country="Azerbaijan" operator="Special State Protection Service of the Republic of Azerbaijan"
06 bands="CDMA 800 / LTE 800 / LTE 900 / LTE 1800" brand="Naxtel" cc="az" country="Azerbaijan" operator="Nakhtel LLC" status="Operational"
00-99
401
- 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100" brand="Beeline" cc="kz" country="Kazakhstan" operator="KaR-Tel LLP" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800" brand="Kcell" cc="kz" country="Kazakhstan" operator="Kcell JSC" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="Beeline" cc="kz" country="Kazakhstan" operator="KaR-Tel LLP" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Kcell" cc="kz" country="Kazakhstan" operator="Kcell JSC" status="Operational"
07 bands="UMTS 850 / GSM 1800 / LTE 1800" brand="Altel" cc="kz" country="Kazakhstan" operator="Altel" status="Operational"
- 08 bands="CDMA2000 800 / CDMA2000 450" brand="Kazakhtelecom" cc="kz" country="Kazakhstan" status="Operational"
- 77 bands="GSM 900 / GSM 1800 / UMTS 900" brand="Tele2.kz" cc="kz" country="Kazakhstan" operator="MTS" status="Operational"
+ 08 bands="CDMA 450 / CDMA 800" brand="Kazakhtelecom" cc="kz" country="Kazakhstan" status="Operational"
+ 77 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="Tele2.kz" cc="kz" country="Kazakhstan" operator="MTS" status="Operational"
00-99
402
- 11 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 1800" brand="B-Mobile" cc="bt" country="Bhutan" operator="B-Mobile / Bhutan Telecom Ltd." status="Operational"
+ 11 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 1800" brand="B-Mobile" cc="bt" country="Bhutan" operator="Bhutan Telecom Limited" status="Operational"
77 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE 700" brand="TashiCell" cc="bt" country="Bhutan" operator="Tashi InfoComm Limited" status="Operational"
00-99
404
@@ -1821,28 +1907,28 @@
02 bands="CDMA2000 1900 / TD-LTE 1900" brand="3G EVO / CharJi 4G" cc="pk" country="Pakistan" operator="PTCL" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Ufone" cc="pk" country="Pakistan" operator="Pakistan Telecommunication Mobile Ltd" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Zong" cc="pk" country="Pakistan" operator="China Mobile" status="Operational"
- 05 bands="GSM 900 / GSM 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational"
+ 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational"
06 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 850 / LTE 1800" brand="Telenor" cc="pk" country="Pakistan" operator="Telenor Pakistan" status="Operational"
07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Jazz" cc="pk" country="Pakistan" operator="WaridTel" status="Operational"
- 08 bands="GSM 900 / GSM 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational"
+ 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational"
00-99
412
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="AWCC" cc="af" country="Afghanistan" operator="Afghan Wireless Communication Company" status="Operational"
20 bands="GSM 900 / UMTS 2100" brand="Roshan" cc="af" country="Afghanistan" operator="Telecom Development Company Afghanistan Ltd." status="Operational"
40 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTN" cc="af" country="Afghanistan" operator="MTN Group Afghanistan" status="Operational"
- 50 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Etisalat" cc="af" country="Afghanistan" operator="Etisalat Afghanistan" status="Operational"
+ 50 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Etisalat" cc="af" country="Afghanistan" operator="Etisalat Afghanistan" status="Operational"
55 bands="CDMA 800" brand="WASEL" cc="af" country="Afghanistan" operator="WASEL Afghanistan" status="Operational"
- 80 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational"
- 88 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational"
+ 80 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational"
+ 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational"
00-99
413
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100" brand="Mobitel" cc="lk" country="Sri Lanka" operator="Mobitel (Pvt) Ltd" status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Dialog" cc="lk" country="Sri Lanka" operator="Dialog Axiata PLC" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Etisalat" cc="lk" country="Sri Lanka" operator="Etisalat Lanka (Pvt) Ltd" status="Not operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Not operational"
04 bands="CDMA / WiMAX / TD-LTE 2300" brand="Lanka Bell" cc="lk" country="Sri Lanka" operator="Lanka Bell Ltd" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Airtel" cc="lk" country="Sri Lanka" operator="Bharti Airtel Lanka (Pvt) Ltd" status="Operational"
08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Not operational"
- 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Operational"
+ 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Operational"
11 bands="CDMA / WiMAX / TD-LTE 2300" brand="Dialog" cc="lk" country="Sri Lanka" operator="Dialog Broadband Networks (Pvt) Ltd" status="Operational"
12 bands="TD-LTE 2600" brand="SLT" cc="lk" country="Sri Lanka" operator="Sri Lanka Telecom PLC" status="Operational"
00-99
@@ -1861,15 +1947,15 @@
23 cc="mm" country="Myanmar" operator="Global Technology Co., Ltd"
00-99
415
- 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Alfa" cc="lb" country="Lebanon" operator="MIC 1" status="Operational"
+ 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Alfa" cc="lb" country="Lebanon" operator="MIC 1" status="Operational"
03 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Touch" cc="lb" country="Lebanon" operator="MIC 2" status="Operational"
05 bands="GSM 900" brand="Ogero Mobile" cc="lb" country="Lebanon" operator="Ogero Telecom" status="Not operational"
00-99
416
- 01 bands="GSM 900 / LTE 1800" brand="zain JO" cc="jo" country="Jordan" operator="Jordan Mobile Telephone Services" status="Operational"
+ 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="zain JO" cc="jo" country="Jordan" operator="Jordan Mobile Telephone Services" status="Operational"
02 bands="iDEN 800" brand="XPress Telecom" cc="jo" country="Jordan" operator="XPress Telecom" status="Not operational"
- 03 bands="GSM 1800 / LTE 1800 / LTE 3500" brand="Umniah" cc="jo" country="Jordan" operator="Umniah Mobile Company" status="Operational"
- 77 bands="GSM 900 / LTE 1800" brand="Orange" cc="jo" country="Jordan" operator="Petra Jordanian Mobile Telecommunications Company (MobileCom)" status="Operational"
+ 03 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 3500" brand="Umniah" cc="jo" country="Jordan" operator="Umniah Mobile Company" status="Operational"
+ 77 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Orange" cc="jo" country="Jordan" operator="Petra Jordanian Mobile Telecommunications Company (MobileCom)" status="Operational"
00-99
417
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Syriatel" cc="sy" country="Syria" operator="Syriatel Mobile Telecom" status="Operational"
@@ -1877,19 +1963,19 @@
09 cc="sy" country="Syria" operator="Syrian Telecom"
00-99
418
- 00 bands="GSM 900" brand="Asia Cell" cc="iq" country="Iraq" operator="Asia Cell Telecommunications Company" status="Operational"
- 05 bands="GSM 900" brand="Asia Cell" cc="iq" country="Iraq" operator="Asia Cell Telecommunications Company" status="Operational"
+ 00 bands="GSM 900 / UMTS 2100" brand="Asia Cell" cc="iq" country="Iraq" operator="Asia Cell Telecommunications Company" status="Operational"
+ 05 bands="GSM 900 / UMTS 2100" brand="Asia Cell" cc="iq" country="Iraq" operator="Asia Cell Telecommunications Company" status="Operational"
08 bands="GSM 900" brand="SanaTel" cc="iq" country="Iraq" status="Operational"
- 20 bands="GSM 900 / GSM 1800" brand="Zain" cc="iq" country="Iraq" operator="Zain Iraq" status="Operational"
- 30 bands="GSM 900" brand="Zain" cc="iq" country="Iraq" operator="Zain Iraq" status="Operational"
- 40 bands="GSM 900" brand="Korek" cc="iq" country="Iraq" operator="Telecom Ltd" status="Operational"
+ 20 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Zain" cc="iq" country="Iraq" operator="Zain Iraq" status="Operational"
+ 30 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Zain" cc="iq" country="Iraq" operator="Zain Iraq" status="Operational"
+ 40 bands="GSM 900 / UMTS 2100" brand="Korek" cc="iq" country="Iraq" operator="Telecom Ltd" status="Operational"
45 bands="UMTS" brand="Mobitel" cc="iq" country="Iraq" operator="Mobitel Co. Ltd." status="Operational"
62 bands="CDMA 800 / CDMA 1900" brand="Itisaluna" cc="iq" country="Iraq" operator="Itisaluna Wireless CO." status="Operational"
92 bands="CDMA" brand="Omnnea" cc="iq" country="Iraq" operator="Omnnea Wireless" status="Operational"
00-99
419
- 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / 5G 3500" brand="zain KW" cc="kw" country="Kuwait" operator="Zain Kuwait" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="K.S.C Ooredoo" cc="kw" country="Kuwait" operator="National Mobile Telecommunications" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="zain KW" cc="kw" country="Kuwait" operator="Zain Kuwait" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="K.S.C Ooredoo" cc="kw" country="Kuwait" operator="National Mobile Telecommunications" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="STC" cc="kw" country="Kuwait" operator="Saudi Telecom Company" status="Operational"
00-99
420
@@ -1897,18 +1983,18 @@
03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / TD-LTE 2500" brand="Mobily" cc="sa" country="Saudi Arabia" operator="Etihad Etisalat Company" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / 5G 2500 / 5G 3500" brand="Zain SA" cc="sa" country="Saudi Arabia" operator="Zain Saudi Arabia" status="Operational"
05 bands="MVNO" brand="Virgin Mobile" cc="sa" country="Saudi Arabia" operator="Virgin Mobile Saudi Arabia" status="Operational"
- 06 brand="Lebara Mobile" cc="sa" country="Saudi Arabia" operator="Lebara Mobile" status="Operational"
+ 06 bands="MVNO" brand="Lebara Mobile" cc="sa" country="Saudi Arabia" operator="Lebara Mobile" status="Operational"
21 bands="GSM-R 900" brand="RGSM" cc="sa" country="Saudi Arabia" operator="Saudi Railways GSM" status="Operational"
00-99
421
01 bands="GSM 900" brand="SabaFon" cc="ye" country="Yemen" status="Operational"
02 bands="GSM 900" brand="MTN" cc="ye" country="Yemen" operator="Spacetel Yemen" status="Operational"
03 bands="CDMA2000 800" brand="Yemen Mobile" cc="ye" country="Yemen" operator="Yemen Mobile" status="Operational"
- 04 bands="GSM 900" brand="HiTS-UNITEL" cc="ye" country="Yemen" operator="Y" status="Operational"
+ 04 bands="GSM 900" brand="Y" cc="ye" country="Yemen" operator="HiTS-UNITEL" status="Operational"
00-99
422
- 02 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / TD-LTE 2300" brand="Omantel" cc="om" country="Oman" operator="Oman Telecommunications Company" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / TD-LTE 2300" brand="ooredoo" cc="om" country="Oman" operator="Omani Qatari Telecommunications Company SAOC" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="Omantel" cc="om" country="Oman" operator="Oman Telecommunications Company" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="ooredoo" cc="om" country="Oman" operator="Omani Qatari Telecommunications Company SAOC" status="Operational"
04 brand="Omantel" cc="om" country="Oman" operator="Oman Telecommunications Company"
00-99
424
@@ -1922,7 +2008,7 @@
04 cc="il" country="Israel" operator="Globalsim Ltd"
05 bands="GSM 900" brand="Jawwal" cc="ps" country="Palestine" operator="Palestine Cellular Communications, Ltd." status="Operational"
06 bands="GSM 900 / GSM 1800" brand="Wataniya" cc="ps" country="Palestine" operator="Wataniya Palestine Mobile Telecommunications Company" status="Operational"
- 07 bands="iDEN 800 / UMTS 2100" brand="Hot Mobile" cc="il" country="Israel" operator="Hot Mobile Ltd." status="Operational"
+ 07 bands="iDEN 800 / UMTS 2100 / LTE 1800" brand="Hot Mobile" cc="il" country="Israel" operator="Hot Mobile Ltd." status="Operational"
08 bands="UMTS 2100 / LTE 1800" brand="Golan Telecom" cc="il" country="Israel" operator="Golan Telecom Ltd." status="Operational"
09 bands="LTE 1800" brand="We4G" cc="il" country="Israel" operator="Marathon 018 Xphone Ltd." status="Operational"
10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Partner" cc="il" country="Israel" operator="Partner Communications Company Ltd." status="Operational"
@@ -1946,43 +2032,43 @@
00-99
426
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="Batelco" cc="bh" country="Bahrain" operator="Bahrain Telecommunications Company" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="zain BH" cc="bh" country="Bahrain" operator="Zain Bahrain" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="zain BH" cc="bh" country="Bahrain" operator="Zain Bahrain" status="Operational"
03 cc="bh" country="Bahrain" operator="Civil Aviation Authority"
- 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="STC" cc="bh" country="Bahrain" operator="STC Bahrain" status="Operational"
+ 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="STC" cc="bh" country="Bahrain" operator="STC Bahrain" status="Operational"
05 bands="GSM 900 / GSM 1800" brand="Batelco" cc="bh" country="Bahrain" operator="Bahrain Telecommunications Company" status="Operational"
00-99
427
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="ooredoo" cc="qa" country="Qatar" operator="ooredoo" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="ooredoo" cc="qa" country="Qatar" operator="ooredoo" status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="qa" country="Qatar" operator="Vodafone Qatar" status="Operational"
05 bands="TETRA 380" brand="Ministry of Interior" cc="qa" country="Qatar" operator="Ministry of Interior" status="Operational"
06 bands="LTE" brand="Ministry of Interior" cc="qa" country="Qatar" operator="Ministry of Interior" status="Operational"
00-99
428
- 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Unitel" cc="mn" country="Mongolia" operator="Unitel LLC" status="Operational"
- 91 bands="CDMA2000 800 / UMTS 2100" brand="Skytel" cc="mn" country="Mongolia" operator="Skytel LLC" status="Operational"
- 98 bands="CDMA2000 450 / UMTS 2100" brand="G-Mobile" cc="mn" country="Mongolia" operator="G-Mobile LLC" status="Operational"
- 99 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Mobicom" cc="mn" country="Mongolia" operator="Mobicom Corporation" status="Operational"
+ 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300" brand="Unitel" cc="mn" country="Mongolia" operator="Unitel LLC" status="Operational"
+ 91 bands="CDMA 850 / UMTS 2100 / LTE 1800" brand="Skytel" cc="mn" country="Mongolia" operator="Skytel LLC" status="Operational"
+ 98 bands="CDMA 450 / UMTS 2100 / LTE 1800" brand="G-Mobile" cc="mn" country="Mongolia" operator="G-Mobile LLC" status="Operational"
+ 99 bands="GSM 900 / UMTS 2100 / LTE 700 / LTE 1800" brand="Mobicom" cc="mn" country="Mongolia" operator="Mobicom Corporation" status="Operational"
00-99
429
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / CDMA / WiMAX" brand="Namaste / NT Mobile / Sky Phone" cc="np" country="Nepal" operator="Nepal Telecom (NDCL)" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Ncell" cc="np" country="Nepal" operator="Ncell Pvt. Ltd." status="Operational"
+ 01 bands="GSM 900 / UMTS 2100 / LTE 1800 / CDMA 850 / WiMAX" brand="Namaste / NT Mobile / Sky Phone" cc="np" country="Nepal" operator="Nepal Telecom (NDCL)" status="Operational"
+ 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Ncell" cc="np" country="Nepal" operator="Ncell Pvt. Ltd." status="Operational"
03 bands="CDMA2000 800" brand="UTL" cc="np" country="Nepal" operator="United Telecom Limited" status="Operational"
- 04 bands="GSM 900 / LTE 1800" brand="SmartCell" cc="np" country="Nepal" operator="Smart Telecom Pvt. Ltd. (STPL)" status="Operational"
+ 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SmartCell" cc="np" country="Nepal" operator="Smart Telecom Pvt. Ltd. (STPL)" status="Operational"
00-99
432
01 bands="LTE" brand="Uname" cc="ir" country="Iran" operator="Ertebatat Iran" status="Operational"
- 02 bands="MVNO" brand="Azartel" cc="ir" country="Iran" operator="Azartel Mobile" status="Operational"
+ 02 bands="MVNO" brand="ApTel, AzarTel" cc="ir" country="Iran" operator="NeginTel" status="Operational"
08 bands="MVNO" brand="Shatel Mobile" cc="ir" country="Iran" operator="Shatel Mobile" status="Operational"
10 bands="MVNO" brand="Samantel" cc="ir" country="Iran" operator="Samantel Mobile" status="Operational"
11 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="IR-TCI (Hamrah-e-Avval)" cc="ir" country="Iran" operator="Mobile Communications Company of Iran (MCI)" status="Operational"
- 12 bands="LTE 800" brand="Avacell(HiWEB)" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin p.j.s. co & Information Technology Company of Iran" status="Operational"
+ 12 bands="LTE 800 / TD-LTE 1900" brand="Avacell(HiWEB)" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin p.j.s. co & Information Technology Company of Iran" status="Operational"
14 bands="GSM 900 / GSM 1800" brand="TKC/KFZO" cc="ir" country="Iran" operator="Telecommunication Kish Company" status="Operational"
19 bands="GSM 900" brand="Espadan (JV-PJS)" cc="ir" country="Iran" operator="Mobile Telecommunications Company of Esfahan" status="Operational"
- 20 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="Rightel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational"
- 21 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="Rightel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational"
+ 20 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="RighTel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational"
+ 21 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="RighTel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational"
32 bands="GSM 900 / GSM 1800" brand="Taliya" cc="ir" country="Iran" operator="TCI of Iran and Iran Mobin" status="Operational"
35 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 3500" brand="MTN Irancell" cc="ir" country="Iran" operator="MTN Irancell Telecommunications Services Company" status="Operational"
- 40 bands="LTE 3500" brand="Mobinnet" cc="ir" country="Iran" operator="Ertebatat Mobinnet" status="Operational"
+ 40 bands="WiMAX / LTE 3500" brand="Mobinnet" cc="ir" country="Iran" operator="Ertebatat Mobinnet" status="Operational"
50 bands="MVNO" brand="Shatel" cc="ir" country="Iran" operator="Arya Resaneh Tadbir" status="Operational"
70 bands="GSM 900" brand="MTCE" cc="ir" country="Iran" operator="Telephone Communications Company of Iran" status="Operational"
71 bands="GSM 900" brand="KOOHE NOOR" cc="ir" country="Iran" operator="Telephone Communications Company of Iran" status="Operational"
@@ -1993,13 +2079,13 @@
434
01 bands="GSM 900 / GSM 1800" cc="uz" country="Uzbekistan" operator="Buztel" status="Not operational"
02 bands="GSM 900 / GSM 1800" cc="uz" country="Uzbekistan" operator="Uzmacom" status="Not operational"
- 03 bands="CDMA2000 450" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational"
+ 03 bands="CDMA 450" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Beeline" cc="uz" country="Uzbekistan" operator="Unitel LLC" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Ucell" cc="uz" country="Uzbekistan" operator="Coscom" status="Operational"
- 06 bands="CDMA2000 800" brand="Perfectum Mobile" cc="uz" country="Uzbekistan" operator="RUBICON WIRELESS COMMUNICATION" status="Operational"
- 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="UMS" cc="uz" country="Uzbekistan" operator="Universal Mobile Systems" status="Operational"
+ 06 bands="CDMA 800" brand="Perfectum Mobile" cc="uz" country="Uzbekistan" operator="RUBICON WIRELESS COMMUNICATION" status="Operational"
+ 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Mobiuz" cc="uz" country="Uzbekistan" operator="Universal Mobile Systems (UMS)" status="Operational"
08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational"
- 09 bands="LTE 2300" brand="EVO" cc="uz" country="Uzbekistan" operator="OOO «Super iMAX»" status="Operational"
+ 09 bands="WiMAX / LTE 2300" brand="EVO" cc="uz" country="Uzbekistan" operator="OOO «Super iMAX»" status="Operational"
00-99
436
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Tcell" cc="tj" country="Tajikistan" operator="JV Somoncom" status="Operational"
@@ -2014,12 +2100,12 @@
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="kg" country="Kyrgyzstan" operator="Sky Mobile LLC" status="Operational"
03 cc="kg" country="Kyrgyzstan" operator="7 Mobile"
05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="MegaCom" cc="kg" country="Kyrgyzstan" operator="Alfa Telecom CJSC" status="Operational"
- 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600" brand="O!" cc="kg" country="Kyrgyzstan" operator="NurTelecom LLC" status="Operational"
+ 09 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="O!" cc="kg" country="Kyrgyzstan" operator="NurTelecom LLC" status="Operational"
10 bands="LTE 2600" cc="kg" country="Kyrgyzstan" operator="Saima Telecom" status="Operational"
11 cc="kg" country="Kyrgyzstan" operator="iTel"
00-99
438
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTS" cc="tm" country="Turkmenistan" operator="MTS Turkmenistan" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTS" cc="tm" country="Turkmenistan" operator="MTS Turkmenistan" status="Not operational"
02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="TM-Cell" cc="tm" country="Turkmenistan" operator="Altyn Asyr" status="Operational"
03 bands="CDMA 450" brand="AGTS CDMA" cc="tm" country="Turkmenistan" operator="AŞTU" status="Operational"
00-99
@@ -2034,66 +2120,67 @@
07 bands="MVNO" cc="jp" country="Japan" operator="LTE-X, Inc."
08 cc="jp" country="Japan" operator="Panasonic Systems Solutions Japan Co., Ltd."
09 bands="MVNO" cc="jp" country="Japan" operator="Marubeni Wireless Communications Inc." status="Operational"
- 10 bands="UMTS 850 / UMTS 1800 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500" brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." status="Operational"
- 11 bands="1700" cc="jp" country="Japan" operator="Rakuten Mobile Network, Inc." status="Not operational"
+ 10 bands="UMTS 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500 / 5G 3500" brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." status="Operational"
+ 11 bands="LTE 1800" brand="Rakuten Mobile" cc="jp" country="Japan" operator="Rakuten Mobile Network, Inc." status="Operational"
12 cc="jp" country="Japan" operator="Cable media waiwai Co., Ltd."
- 20 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
- 21 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
- 50 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 51 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 52 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 53 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 54 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 70 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 71 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 72 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 73 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 74 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 75 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
- 76 bands="CDMA2000 850 / CDMA2000 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 2100 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 20 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
+ 21 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
+ 50 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 51 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 52 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 53 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 54 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 70 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 71 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 72 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 73 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 74 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 75 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
+ 76 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational"
78 bands="CDMA2000 850 / CDMA2000 2100" brand="au" cc="jp" country="Japan" operator="Okinawa Cellular Telephone" status="Operational"
91 cc="jp" country="Japan" operator="Tokyo Organising Committee of the Olympic and Paralympic Games"
00-99
441
- 01 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
+ 01 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational"
10 bands="WiMAX 2500 / TD-LTE 2500" brand="UQ WiMAX" cc="jp" country="Japan" operator="UQ Communications Inc." status="Operational"
00-99
450
01 bands="Satellite" cc="kr" country="South Korea" operator="Globalstar Asia Pacific" status="Operational"
02 bands="5G 3500 / 5G 28000" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational"
- 03 bands="CDMA2000 800" brand="Power 017" cc="kr" country="South Korea" operator="Shinsegi Telecom, Inc." status="Not operational"
- 04 bands="NB-IoT" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational"
- 05 bands="CDMA2000 800 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational"
- 06 bands="CDMA2000 1800 / LTE 850 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="LG U+" cc="kr" country="South Korea" operator="LG Telecom" status="Operational"
+ 03 bands="CDMA 850" brand="Power 017" cc="kr" country="South Korea" operator="Shinsegi Telecom, Inc." status="Not operational"
+ 04 bands="LTE 1800" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational"
+ 05 bands="CDMA 850 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational"
+ 06 bands="CDMA 1800 / LTE 850 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="LG U+" cc="kr" country="South Korea" operator="LG Telecom" status="Operational"
07 brand="KT" cc="kr" country="South Korea" operator="KT"
08 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="olleh" cc="kr" country="South Korea" operator="KT" status="Operational"
11 bands="MVNO" brand="Tplus" cc="kr" country="South Korea" operator="Korea Cable Telecom" status="Operational"
- 12 brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom"
+ 12 bands="LTE 850 / LTE 1800" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational"
00-99
452
01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MobiFone" cc="vn" country="Vietnam" operator="Vietnam Mobile Telecom Services Company" status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Vinaphone" cc="vn" country="Vietnam" operator="Vietnam Telecom Services Company" status="Operational"
03 bands="CDMA2000 800" brand="S-Fone" cc="vn" country="Vietnam" operator="S-Telecom" status="Not operational"
- 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Viettel Mobile" cc="vn" country="Vietnam" operator="Viettel Telecom" status="Operational"
+ 04 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Viettel Mobile" cc="vn" country="Vietnam" operator="Viettel Telecom" status="Operational"
05 bands="GSM 900 / UMTS 2100" brand="Vietnamobile" cc="vn" country="Vietnam" operator="Hanoi Telecom" status="Operational"
06 bands="CDMA2000 450" brand="EVNTelecom" cc="vn" country="Vietnam" operator="EVN Telecom" status="Not operational"
07 bands="GSM 1800" brand="Gmobile" cc="vn" country="Vietnam" operator="GTEL Mobile JSC" status="Operational"
08 bands="WiMAX" brand="I-Telecom" cc="vn" country="Vietnam" operator="Indochina Telecom" status="Operational"
+ 09 cc="vn" country="Vietnam" operator="REDDI"
00-99
454
00 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="1O1O / One2Free / New World Mobility / SUNMobile" cc="hk" country="Hong Kong" operator="CSL Limited" status="Operational"
01 bands="MVNO" cc="hk" country="Hong Kong" operator="CITIC Telecom 1616" status="Operational"
02 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="CSL Limited" status="Operational"
- 03 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="3" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational"
+ 03 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500" brand="3" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational"
04 bands="GSM 900 / GSM 1800" brand="3 (2G)" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational"
05 bands="CDMA 800" brand="3 (CDMA)" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Not operational"
- 06 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational"
+ 06 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational"
07 bands="MVNO" brand="China Unicom" cc="hk" country="Hong Kong" operator="China Unicom (Hong Kong) Limited" status="Operational"
08 bands="MVNO" brand="Truphone" cc="hk" country="Hong Kong" operator="Truphone Limited" status="Operational"
09 bands="MVNO" cc="hk" country="Hong Kong" operator="China Motion Telecom" status="Operational"
10 bands="GSM 1800" brand="New World Mobility" cc="hk" country="Hong Kong" operator="CSL Limited" status="Not operational"
11 bands="MVNO" cc="hk" country="Hong Kong" operator="China-Hong Kong Telecom" status="Operational"
- 12 bands="GSM 1800 / LTE 1800 / TD-LTE 2300 / LTE 2600" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational"
+ 12 bands="GSM 1800 / TD-SCDMA 2000 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational"
13 bands="MVNO" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational"
14 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational"
15 bands="GSM 1800" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational"
@@ -2101,7 +2188,7 @@
17 bands="GSM 1800" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational"
18 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="CSL Limited" status="Not operational"
19 bands="UMTS 2100" brand="PCCW Mobile (3G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational"
- 20 bands="LTE 1800 / LTE 2600" brand="PCCW Mobile (4G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational"
+ 20 bands="LTE 1800 / LTE 2600 / 5G 3500" brand="PCCW Mobile (4G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational"
21 bands="MVNO" cc="hk" country="Hong Kong" operator="21Vianet Mobile Ltd." status="Not operational"
22 bands="MVNO" cc="hk" country="Hong Kong" operator="263 Mobile Communications (HongKong) Limited" status="Operational"
23 bands="MVNO" brand="Lycamobile" cc="hk" country="Hong Kong" operator="Lycamobile Hong Kong Ltd" status="Not operational"
@@ -2115,31 +2202,31 @@
35 bands="MVNO" cc="hk" country="Hong Kong" operator="Webbing Hong Kong Ltd" status="Operational"
00-99
455
- 00 bands="UMTS 2100 / LTE 1800" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone – Comunicações Móveis, S.A." status="Operational"
+ 00 bands="UMTS 2100 / LTE 1800" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone - Comunicações Móveis, S.A." status="Operational"
01 bands="LTE 1800" brand="CTM" cc="mo" country="Macau (China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." status="Operational"
02 bands="CDMA 800" brand="China Telecom" cc="mo" country="Macau (China)" operator="China Telecom (Macau) Company Limited" status="Not operational"
03 bands="GSM 900 / GSM 1800" brand="3" cc="mo" country="Macau (China)" operator="Hutchison Telephone (Macau), Limitada" status="Not operational"
04 bands="UMTS 2100" brand="CTM" cc="mo" country="Macau (China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." status="Operational"
05 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="3" cc="mo" country="Macau (China)" operator="Hutchison Telephone (Macau), Limitada" status="Operational"
- 06 bands="UMTS 2100" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone – Comunicações Móveis, S.A." status="Operational"
+ 06 bands="UMTS 2100" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone - Comunicações Móveis, S.A." status="Operational"
07 bands="LTE 1800" brand="China Telecom" cc="mo" country="Macau (China)" operator="China Telecom (Macau) Limitada" status="Operational"
00-99
456
01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Cellcard" cc="kh" country="Cambodia" operator="CamGSM / The Royal Group" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational"
03 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Operational"
04 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational"
06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational"
08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Metfone" cc="kh" country="Cambodia" operator="Viettel" status="Operational"
- 09 bands="GSM 900 / GSM 1800" brand="Metfone" cc="kh" country="Cambodia" operator="Viettel" status="Operational"
- 11 bands="LTE 850" brand="SEATEL" cc="kh" country="Cambodia" operator="SEATEL Cambodia" status="Operational"
- 18 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Cellcard" cc="kh" country="Cambodia" operator="The Royal Group" status="Operational"
+ 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Metfone" cc="kh" country="Cambodia" operator="Viettel" status="Operational"
+ 11 bands="LTE 850 / LTE 2600" brand="SEATEL" cc="kh" country="Cambodia" operator="SEATEL Cambodia" status="Operational"
+ 18 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Cellcard" cc="kh" country="Cambodia" operator="The Royal Group" status="Operational"
00-99
457
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="LaoTel" cc="la" country="Laos" operator="Lao Telecom" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="LaoTel" cc="la" country="Laos" operator="Lao Telecom" status="Operational"
02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="ETL" cc="la" country="Laos" operator="Enterprise of Telecommunications Lao" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Unitel" cc="la" country="Laos" operator="Star Telecom Co., Ltd" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Unitel" cc="la" country="Laos" operator="Star Telecom Co., Ltd" status="Operational"
08 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Beeline" cc="la" country="Laos" operator="VimpelCom Lao Ltd" status="Operational"
00-99
460
@@ -2157,9 +2244,9 @@
20 bands="GSM-R" brand="China Tietong" cc="cn" country="China" operator="China Tietong" status="Operational"
00-99
466
- 01 bands="UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Operational"
+ 01 bands="LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500 / 5G 28000" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Operational"
02 bands="GSM 900" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational"
- 03 bands="UMTS 2100" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd"
+ 03 bands="UMTS 2100" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational"
05 bands="LTE 700 / LTE 900 / TD-LTE 2600" brand="APTG" cc="tw" country="Taiwan" operator="Asia Pacific Telecom" status="Operational"
06 bands="GSM 1800" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational"
07 bands="WiMAX 2600" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational"
@@ -2170,11 +2257,11 @@
56 bands="WiMAX 2600 / PHS" brand="FITEL" cc="tw" country="Taiwan" operator="First International Telecom" status="Not operational"
68 bands="WiMAX 2600" cc="tw" country="Taiwan" operator="Tatung InfoComm" status="Not operational"
88 bands="GSM 1800" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational"
- 89 bands="UMTS 2100 / LTE 900 / LTE 2600" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" status="Operational"
+ 89 bands="LTE 900 / LTE 2600" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" status="Operational"
90 bands="LTE 900" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom"
- 92 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="Chunghwa" cc="tw" country="Taiwan" operator="Chunghwa Telecom" status="Operational"
+ 92 bands="LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500 / 5G 28000" brand="Chunghwa" cc="tw" country="Taiwan" operator="Chunghwa Telecom" status="Operational"
93 bands="GSM 900" brand="MobiTai" cc="tw" country="Taiwan" operator="Mobitai Communications" status="Not operational"
- 97 bands="UMTS 2100 / LTE 700 / LTE 1800" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Operational"
+ 97 bands="LTE 700 / LTE 1800 / LTE 2100 / 5G 3500 / 5G 28000" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Operational"
99 bands="GSM 900" brand="TransAsia" cc="tw" country="Taiwan" operator="TransAsia Telecoms" status="Not operational"
00-99
467
@@ -2193,7 +2280,7 @@
00-99
472
01 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500" brand="Dhiraagu" cc="mv" country="Maldives" operator="Dhivehi Raajjeyge Gulhun" status="Operational"
- 02 bands="GSM 900 / UMTS 2100 / LTE 2600" brand="Ooredoo" cc="mv" country="Maldives" operator="Wataniya Telecom Maldives" status="Operational"
+ 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Ooredoo" cc="mv" country="Maldives" operator="Ooredoo Maldives" status="Operational"
00-99
502
01 bands="CDMA2000 450" brand="ATUR 450" cc="my" country="Malaysia" operator="Telekom Malaysia Bhd" status="Not operational"
@@ -2205,19 +2292,19 @@
150 bands="MVNO" brand="Tune Talk" cc="my" country="Malaysia" operator="Tune Talk Sdn Bhd" status="Operational"
151 bands="MVNO" brand="SalamFone" cc="my" country="Malaysia" operator="Baraka Telecom Sdn Bhd" status="Not operational"
152 bands="WiMAX 2300 / TD-LTE 2300 / TD-LTE 2600" brand="Yes" cc="my" country="Malaysia" operator="YTL Communications Sdn Bhd" status="Operational"
- 153 bands="WiMAX 2300 / LTE 850" brand="unifi" cc="my" country="Malaysia" operator="Webe Digital Sdn Bhd" status="Operational"
+ 153 bands="WiMAX 2300 / LTE 850 / TD-LTE 2300" brand="unifi" cc="my" country="Malaysia" operator="Webe Digital Sdn Bhd" status="Operational"
154 bands="MVNO" brand="Tron" cc="my" country="Malaysia" operator="Talk Focus Sdn Bhd" status="Operational"
155 bands="MVNO" brand="Clixster" cc="my" country="Malaysia" operator="Clixster Mobile Sdn Bhd" status="Not operational"
156 bands="MVNO" brand="Altel" cc="my" country="Malaysia" operator="Altel Communications Sdn Bhd" status="Operational"
157 bands="MVNO" brand="Telin" cc="my" country="Malaysia" operator="Telekomunikasi Indonesia International (M) Sdn Bhd" status="Operational"
16 bands="GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="DiGi" cc="my" country="Malaysia" operator="DiGi Telecommunications" status="Operational"
17 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Maxis" cc="my" country="Malaysia" operator="Maxis Communications Berhad" status="Operational"
- 18 bands="UMTS 2100 / LTE 1800 / LTE 2600" brand="U Mobile" cc="my" country="Malaysia" operator="U Mobile Sdn Bhd" status="Operational"
+ 18 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="U Mobile" cc="my" country="Malaysia" operator="U Mobile Sdn Bhd" status="Operational"
19 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Celcom" cc="my" country="Malaysia" operator="Celcom Axiata Berhad" status="Operational"
20 bands="DMR" brand="Electcoms" cc="my" country="Malaysia" operator="Electcoms Berhad" status="Not operational"
505
01 bands="UMTS 850 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Limited" status="Operational"
- 02 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Optus" cc="au" country="Australia" operator="Singtel Optus Proprietary Limited" status="Operational"
+ 02 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 2300 / 5G 3500" brand="Optus" cc="au" country="Australia" operator="Singtel Optus Proprietary Limited" status="Operational"
03 bands="UMTS 900 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100" brand="Vodafone" cc="au" country="Australia" operator="Vodafone Hutchison Australia Proprietary Limited" status="Operational"
04 cc="au" country="Australia" operator="Department of Defence" status="Operational"
05 brand="Ozitel" cc="au" country="Australia" status="Not operational"
@@ -2225,7 +2312,7 @@
07 brand="Vodafone" cc="au" country="Australia" operator="Vodafone Network Pty. Ltd."
08 bands="GSM 900" brand="One.Tel" cc="au" country="Australia" operator="One.Tel Limited" status="Not operational"
09 brand="Airnet" cc="au" country="Australia" status="Not operational"
- 10 bands="GSM 900" brand="Norfolk Telecom" cc="nf" country="Norfolk Island" operator="Norfolk Telecom" status="Operational"
+ 10 bands="GSM 900 / LTE 1800" brand="Norfolk Telecom" cc="nf" country="Norfolk Island" operator="Norfolk Telecom" status="Operational"
11 brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Ltd."
12 bands="UMTS 2100" brand="3" cc="au" country="Australia" operator="Vodafone Hutchison Australia Proprietary Limited" status="Not operational"
13 bands="GSM-R 1800" brand="RailCorp" cc="au" country="Australia" operator="Railcorp, Transport for New South Wales" status="Operational"
@@ -2262,6 +2349,7 @@
45 cc="au" country="Australia" operator="Clermont Coal Operations Pty Ltd"
46 cc="au" country="Australia" operator="AngloGold Ashanti Australia Ltd"
47 cc="au" country="Australia" operator="Woodside Energy Limited"
+ 48 cc="au" country="Australia" operator="Titan ICT Pty Ltd"
50 bands="Satellite" cc="au" country="Australia" operator="Pivotel Group Pty Limited" status="Operational"
61 bands="LTE 1800 / LTE 2100" brand="CommTel NS" cc="au" country="Australia" operator="Commtel Network Solutions Pty Ltd" status="Implement / Design"
62 bands="TD-LTE 2300 / TD-LTE 3500" brand="NBN" cc="au" country="Australia" operator="National Broadband Network Co." status="Operational"
@@ -2297,7 +2385,7 @@
00-99
515
01 bands="GSM 900" brand="Islacom" cc="ph" country="Philippines" operator="Globe Telecom via Innove Communications" status="Not operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2500 / 5G 3500" brand="Globe" cc="ph" country="Philippines" operator="Globe Telecom" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="Globe" cc="ph" country="Philippines" operator="Globe Telecom" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="SMART" cc="ph" country="Philippines" operator="PLDT via Smart Communications" status="Operational"
05 bands="GSM 1800 / UMTS 2100" brand="Sun Cellular" cc="ph" country="Philippines" operator="Digital Telecommunications Philippines" status="Operational"
11 cc="ph" country="Philippines" operator="PLDT via ACeS Philippines"
@@ -2307,30 +2395,31 @@
00-99
520
00 bands="UMTS 850" brand="TrueMove H / my by CAT" cc="th" country="Thailand" operator="CAT Telecom" status="Operational"
- 01 bands="GSM 900 / UMTS 900" brand="AIS" cc="th" country="Thailand" operator="Advanced Info Service" status="Not operational"
+ 01 bands="GSM 900" brand="AIS" cc="th" country="Thailand" operator="Advanced Info Service" status="Operational"
02 bands="CDMA 800" brand="CAT CDMA" cc="th" country="Thailand" operator="CAT Telecom" status="Not operational"
- 03 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="AIS" cc="th" country="Thailand" operator="Advanced Wireless Network Company Ltd." status="Operational"
- 04 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="TrueMove H" cc="th" country="Thailand" operator="True Move H Universal Communication Company Ltd." status="Operational"
- 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="dtac TriNet / LINE" cc="th" country="Thailand" operator="DTAC TriNet Company Ltd." status="Operational"
+ 03 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2500" brand="AIS" cc="th" country="Thailand" operator="Advanced Wireless Network Company Ltd." status="Operational"
+ 04 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2500" brand="TrueMove H" cc="th" country="Thailand" operator="True Move H Universal Communication Company Ltd." status="Operational"
+ 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="dtac" cc="th" country="Thailand" operator="DTAC TriNet Company Ltd." status="Operational"
09 bands="LTE 850" cc="th" country="Thailand" operator="Royal Thai Police" status="Operational"
- 15 bands="UMTS 2100" brand="AIS-T / TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational"
+ 15 bands="UMTS 2100 / LTE 2100" brand="AIS-T / TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational"
+ 17 bands="TD-LTE 2300" brand="TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational"
18 bands="GSM 1800" brand="dtac" cc="th" country="Thailand" operator="Total Access Communications Public Company Ltd." status="Operational"
20 bands="Satellite" brand="ACeS" cc="th" country="Thailand" operator="ACeS"
23 bands="GSM 1800" brand="AIS GSM 1800" cc="th" country="Thailand" operator="Digital Phone Company Ltd." status="Not operational"
25 bands="PHS 1900" brand="WE PCT" cc="th" country="Thailand" operator="True Corporation" status="Not operational"
- 47 bands="TD-LTE 2300" brand="dtac-T / LINE / TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational"
- 99 bands="GSM 1800" brand="TrueMove" cc="th" country="Thailand" operator="True Corporation" status="Not operational"
+ 47 bands="TD-LTE 2300" brand="dtac-T" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational"
+ 99 bands="GSM 1800" brand="TrueMove" cc="th" country="Thailand" operator="True Corporation" status="Operational"
00-99
525
01 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="SingTel" cc="sg" country="Singapore" operator="Singapore Telecom" status="Operational"
02 bands="GSM 1800" brand="SingTel-G18" cc="sg" country="Singapore" operator="Singapore Telecom" status="Not operational"
03 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="M1" cc="sg" country="Singapore" operator="M1 Limited" status="Operational"
- 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 2600" brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" status="Operational"
+ 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2500" brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" status="Operational"
06 brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile"
07 brand="SingTel" cc="sg" country="Singapore" operator="Singapore Telecom"
08 brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile"
09 bands="MVNO" brand="Circles.Life" cc="sg" country="Singapore" operator="Liberty Wireless Pte Ltd" status="Operational"
- 10 bands="LTE 900 / TD-LTE 2300" cc="sg" country="Singapore" operator="TPG Telecom Pte Ltd" status="Operational"
+ 10 bands="LTE 900 / TD-LTE 2300 / TD-LTE 2500" cc="sg" country="Singapore" operator="TPG Telecom Pte Ltd" status="Operational"
11 brand="M1" cc="sg" country="Singapore" operator="M1 Limited"
12 bands="iDEN 800" brand="Grid" cc="sg" country="Singapore" operator="GRID Communications Pte Ltd." status="Operational"
00-99
@@ -2365,8 +2454,8 @@
88 bands="GSM 900 / LTE 1800" brand="Digicel" cc="to" country="Tonga" operator="Digicel (Tonga) Limited" status="Operational"
00-99
540
- 01 bands="GSM 900 / UMTS / LTE 700 / LTE 1800" brand="BREEZE" cc="sb" country="Solomon Islands" operator="Our Telekom" status="Operational"
- 02 bands="GSM 900 / GSM 1800" brand="BeMobile" cc="sb" country="Solomon Islands" operator="BMobile (SI) Ltd" status="Operational"
+ 01 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800" brand="BREEZE" cc="sb" country="Solomon Islands" operator="Our Telekom" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="BeMobile" cc="sb" country="Solomon Islands" operator="BMobile (SI) Ltd" status="Operational"
00-99
541
00 bands="GSM 900" brand="AIL" cc="vu" country="Vanuatu" operator="ACeS International (AIL)" status="Operational"
@@ -2383,12 +2472,12 @@
01 bands="UMTS 900 / LTE" brand="Manuia" cc="wf" country="Wallis and Futuna" operator="Service des Postes et Télécommunications des Îles Wallis et Futuna (SPT)" status="Operational"
00-99
544
- 11 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700" brand="Bluesky" cc="as" country="American Samoa (United States of America)" operator="Bluesky" status="Operational"
+ 11 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900" brand="Bluesky" cc="as" country="American Samoa (United States of America)" operator="Bluesky" status="Operational"
00-99
545
- 01 bands="UMTS 850 / LTE 700" brand="Kiribati - TSKL" cc="ki" country="Kiribati" operator="Telecom Services Kiribati Ltd" status="Operational"
+ 01 bands="UMTS 900 / LTE 1800" brand="Kiribati - ATH" cc="ki" country="Kiribati" operator="Amalgamated Telecom Holdings Kiribati Limited" status="Operational"
02 cc="ki" country="Kiribati" operator="OceanLink"
- 09 bands="GSM 900" brand="Kiribati - Frigate Net" cc="ki" country="Kiribati" operator="Telecom Services Kiribati Ltd" status="Operational"
+ 09 bands="GSM 900" brand="Kiribati - Frigate Net" cc="ki" country="Kiribati" operator="Amalgamated Telecom Holdings Kiribati Limited" status="Operational"
00-99
546
01 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600" brand="Mobilis" cc="nc" country="New Caledonia (France)" operator="OPT New Caledonia" status="Operational"
@@ -2396,7 +2485,7 @@
547
05 bands="WiMAX / LTE 800 / LTE 2600" brand="Ora" cc="pf" country="French Polynesia" operator="VITI" status="Operational"
10 bands="GSM 900" cc="pf" country="French Polynesia" operator="Mara Telecom" status="Not operational"
- 15 bands="GSM 900 / UMTS 900 / UMTS 2100" brand="Vodafone" cc="pf" country="French Polynesia" operator="Pacific Mobile Telecom" status="Operational"
+ 15 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2100" brand="Vodafone" cc="pf" country="French Polynesia" operator="Pacific Mobile Telecom" status="Operational"
20 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="Vini" cc="pf" country="French Polynesia" operator="Onati S.A.S." status="Operational"
00-99
548
@@ -2420,7 +2509,7 @@
99 bands="LTE" brand="PMCI" cc="pw" country="Palau" operator="Palau Mobile Communications Inc." status="Operational"
00-99
553
- 01 bands="GSM 900 / LTE 850" brand="TTC" cc="tv" country="Tuvalu" operator="Tuvalu Telecom" status="Operational"
+ 01 bands="UMTS 900 / LTE 850" brand="TTC" cc="tv" country="Tuvalu" operator="Tuvalu Telecom" status="Operational"
00-99
554
01 bands="LTE 700" cc="tk" country="Tokelau" operator="Teletok" status="Operational"
@@ -2472,9 +2561,9 @@
06 bands="TD-LTE 2300" cc="gm" country="Gambia" operator="NETPAGE" status="Operational"
00-99
608
- 01 bands="GSM 900 / UMTS 2100 / LTE" brand="Orange" cc="sn" country="Senegal" operator="Sonatel" status="Operational"
- 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Tigo" cc="sn" country="Senegal" operator="Millicom International Cellular S.A." status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Expresso" cc="sn" country="Senegal" operator="Sudatel" status="Operational"
+ 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Orange" cc="sn" country="Senegal" operator="Sonatel" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 1900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Free" cc="sn" country="Senegal" operator="Saga Africa Holdings Limited" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Expresso" cc="sn" country="Senegal" operator="Expresso Telecom" status="Operational"
04 cc="sn" country="Senegal" operator="CSU-SA"
00-99
609
@@ -2557,11 +2646,19 @@
02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Vodafone" cc="gh" country="Ghana" operator="Vodafone Group" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AirtelTigo" cc="gh" country="Ghana" operator="Millicom Ghana" status="Operational"
04 bands="CDMA2000 850" brand="Expresso" cc="gh" country="Ghana" operator="Kasapa / Hutchison Telecom" status="Operational"
+ 05 cc="gh" country="Ghana" operator="National Security"
06 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AirtelTigo" cc="gh" country="Ghana" operator="Airtel" status="Operational"
07 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Globacom" cc="gh" country="Ghana" operator="Globacom Group" status="Operational"
08 bands="LTE 2600" brand="Surfline" cc="gh" country="Ghana" operator="Surfline Communications Ltd" status="Not operational"
+ 09 brand="NITA" cc="gh" country="Ghana" operator="National Information Technology Agency"
10 bands="TD-LTE 2500" brand="Blu" cc="gh" country="Ghana" operator="Blu Telecommunications" status="Operational"
11 cc="gh" country="Ghana" operator="Netafrique Dot Com Ltd"
+ 12 cc="gh" country="Ghana" operator="BTL"
+ 13 cc="gh" country="Ghana" operator="Goldkey"
+ 14 bands="TD-LTE 2300" brand="busy" cc="gh" country="Ghana" operator="BusyInternet" status="Operational"
+ 15 bands="MVNO" cc="gh" country="Ghana" operator="Lebara" status="Operational"
+ 16 bands="LTE 1800" cc="gh" country="Ghana" operator="Telesol" status="Operational"
+ 17 cc="gh" country="Ghana" operator="iBurst Africa"
00-99
621
00 bands="LTE 1900" cc="ng" country="Nigeria" operator="Capcom" status="Not operational"
@@ -2611,7 +2708,7 @@
02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Moov" cc="ga" country="Gabon" operator="Gabon Telecom S.A." status="Operational"
03 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="Airtel" cc="ga" country="Gabon" operator="Airtel Gabon S.A." status="Operational"
04 bands="GSM 900 / GSM 1800" brand="Azur" cc="ga" country="Gabon" operator="USAN Gabon S.A." status="Not operational"
- 05 brand="RAG" cc="ga" country="Gabon" operator="Réseau de l’Administration Gabonaise"
+ 05 brand="RAG" cc="ga" country="Gabon" operator="Réseau de l'Administration Gabonaise"
00-99
629
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2600" brand="Airtel" cc="cg" country="Congo" operator="Celtel Congo" status="Operational"
@@ -2640,6 +2737,7 @@
633
01 bands="GSM 900 / UMTS" brand="Cable & Wireless" cc="sc" country="Seychelles" operator="Cable & Wireless Seychelles" status="Operational"
02 bands="GSM 1800" brand="Mediatech" cc="sc" country="Seychelles" operator="Mediatech International" status="Not operational"
+ 05 cc="sc" country="Seychelles" operator="Intelvision Ltd"
10 bands="GSM 900 / UMTS 2100 / LTE 800" brand="Airtel" cc="sc" country="Seychelles" operator="Telecom Seychelles Ltd" status="Operational"
00-99
634
@@ -2692,18 +2790,19 @@
11 cc="ke" country="Kenya" operator="WiAfrica Kenya Limited" status="Not operational"
00-99
640
- 01 bands="UMTS 900" cc="tz" country="Tanzania" operator="Rural NetCo Limited" status="Not operational"
+ 01 bands="UMTS 900" cc="tz" country="Tanzania" operator="Shared Network Tanzania Limited" status="Not operational"
02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="tiGO" cc="tz" country="Tanzania" operator="MIC Tanzania Limited" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Zantel" cc="tz" country="Tanzania" operator="Zanzibar Telecom Ltd" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Vodacom" cc="tz" country="Tanzania" operator="Vodacom Tanzania Limited" status="Operational"
05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700" brand="Airtel" cc="tz" country="Tanzania" operator="Bharti Airtel" status="Operational"
06 bands="CDMA 800" brand="Sasatel (Dovetel)" cc="tz" country="Tanzania" operator="Dovetel Limited" status="Not operational"
07 bands="CDMA 800 / UMTS 2100 / LTE 1800 / TD-LTE 2300" brand="TTCL Mobile" cc="tz" country="Tanzania" operator="Tanzania Telecommunication Company LTD (TTCL)" status="Operational"
- 08 bands="TD-LTE 2300" brand="Smart" cc="tz" country="Tanzania" operator="Benson Informatics Limited" status="Operational"
+ 08 bands="TD-LTE 2300" brand="Smart" cc="tz" country="Tanzania" operator="Benson Informatics Limited" status="Not operational"
09 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Halotel" cc="tz" country="Tanzania" operator="Viettel Tanzania Limited" status="Operational"
11 bands="LTE 800" brand="SmileCom" cc="tz" country="Tanzania" operator="Smile Telecoms Holdings Ltd." status="Operational"
12 cc="tz" country="Tanzania" operator="MyCell Limited" status="Not operational"
13 brand="Cootel" cc="tz" country="Tanzania" operator="Wiafrica Tanzania Limited"
+ 14 cc="tz" country="Tanzania" operator="MO Mobile Holding Limited"
00-99
641
01 bands="GSM 900 / UMTS 2100" brand="Airtel" cc="ug" country="Uganda" operator="Bharti Airtel" status="Operational"
@@ -2744,14 +2843,14 @@
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Airtel" cc="mg" country="Madagascar" operator="Bharti Airtel" status="Operational"
02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Orange" cc="mg" country="Madagascar" operator="Orange Madagascar S.A." status="Operational"
03 bands="GSM 900" brand="Sacel" cc="mg" country="Madagascar" operator="Sacel Madagascar S.A." status="Not operational"
- 04 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Telma" cc="mg" country="Madagascar" operator="Telma Mobile S.A." status="Operational"
+ 04 bands="GSM 900 / UMTS 2100 / LTE 1800 / 5G 3500" brand="Telma" cc="mg" country="Madagascar" operator="Telma Mobile S.A." status="Operational"
05 bands="LTE 2100 / TD-LTE 2600" brand="BIP / blueline" cc="mg" country="Madagascar" operator="Gulfsat Madagascar S.A." status="Operational"
00-99
647
00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Orange" country="French Indian Ocean Territories (France) - YT/RE" operator="Orange La Réunion" status="Operational"
01 bands="GSM 900 / GSM 1800 / LTE 1800" brand="Maoré Mobile" country="French Indian Ocean Territories (France) - YT/RE" operator="BJT Partners" status="Operational"
- 02 brand="Only" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational"
- 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Free" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational"
+ 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Only" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational"
+ 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational"
04 bands="LTE 1800 / LTE 2100 / LTE 2600" brand="Zeop" country="French Indian Ocean Territories (France) - YT/RE" operator="Zeop mobile"
10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Réunion" country="French Indian Ocean Territories (France) - YT/RE" operator="Société Réunionnaise du Radiotéléphone" status="Operational"
00-99
@@ -2767,6 +2866,7 @@
04 bands="WiMAX 2500 / TD-LTE" cc="na" country="Namibia" operator="Paratus Telecommunications (Pty)" status="Operational"
05 cc="na" country="Namibia" operator="Demshi Investments CC"
06 bands="LTE" cc="na" country="Namibia" operator="MTN Namibia" status="Operational"
+ 07 cc="na" country="Namibia" operator="Capricorn Connect"
00-99
650
01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / TD-LTE 2500" brand="TNM" cc="mw" country="Malawi" operator="Telecom Network Malawi" status="Operational"
@@ -2780,7 +2880,7 @@
00-99
652
01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Mascom" cc="bw" country="Botswana" operator="Mascom Wireless (Pty) Limited" status="Operational"
- 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Orange" cc="bw" country="Botswana" operator="Orange (Botswana) Pty Limited" status="Operational"
+ 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Orange" cc="bw" country="Botswana" operator="Orange (Botswana) Pty Limited" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="beMobile" cc="bw" country="Botswana" operator="Botswana Telecommunications Corporation" status="Operational"
00-99
653
@@ -2793,7 +2893,7 @@
02 bands="GSM 900 / UMTS 900 / LTE 800" brand="TELCO SA" cc="km" country="Comoros" operator="Telecom Malagasy (Telma)" status="Operational"
00-99
655
- 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="Vodacom" cc="za" country="South Africa" operator="Vodacom" status="Operational"
+ 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 5200 / LTE 5800" brand="Vodacom" cc="za" country="South Africa" operator="Vodacom" status="Operational"
02 bands="GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2300" brand="Telkom" cc="za" country="South Africa" operator="Telkom SA SOC Ltd" status="Operational"
04 cc="za" country="South Africa" operator="Sasol (Pty) Ltd." status="Not operational"
05 bands="3G" cc="za" country="South Africa" operator="Telkom SA Ltd"
@@ -2857,7 +2957,7 @@
706
01 bands="GSM 1900 / UMTS 1900" brand="Claro" cc="sv" country="El Salvador" operator="CTE Telecom Personal, S.A. de C.V." status="Operational"
02 bands="GSM 900 / UMTS 900" brand="Digicel" cc="sv" country="El Salvador" operator="Digicel, S.A. de C.V." status="Operational"
- 03 bands="GSM 850 / UMTS 850 / LTE 850" brand="Tigo" cc="sv" country="El Salvador" operator="Telemovil El Salvador S.A." status="Operational"
+ 03 bands="GSM 850 / UMTS 850 / LTE 850 / LTE 1700" brand="Tigo" cc="sv" country="El Salvador" operator="Telemovil El Salvador S.A." status="Operational"
04 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900" brand="movistar" cc="sv" country="El Salvador" operator="Telefónica Móviles El Salvador" status="Operational"
05 bands="iDEN" brand="RED" cc="sv" country="El Salvador" operator="INTELFON, S.A. de C.V." status="Operational"
00-99
@@ -2910,7 +3010,7 @@
02 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational"
03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational"
04 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational"
- 05 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Claro" cc="br" country="Brazil" operator="Claro" status="Operational"
+ 05 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 2600" brand="Claro" cc="br" country="Brazil" operator="Claro" status="Operational"
06 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational"
10 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational"
11 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational"
@@ -2968,11 +3068,11 @@
004 cc="co" country="Colombia" operator="COMPATEL COLOMBIA SAS"
020 bands="LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Une EPM Telecomunicaciones S.A. E.S.P." status="Operational"
099 bands="GSM 900" brand="EMCALI" cc="co" country="Colombia" operator="Empresas Municipales de Cali" status="Operational"
- 101 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Claro" cc="co" country="Colombia" operator="COMCEL S.A." status="Operational"
+ 101 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" status="Operational"
102 bands="GSM 850 / GSM 1900 / CDMA 850" cc="co" country="Colombia" operator="Bellsouth Colombia" status="Not operational"
- 103 bands="GSM 1900 / UMTS 2100 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational"
- 111 bands="GSM 1900 / UMTS 2100 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational"
- 123 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / LTE 1900 / CDMA 850" brand="movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational"
+ 103 bands="GSM 1900 / UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational"
+ 111 bands="GSM 1900 / UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational"
+ 123 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 1900" brand="movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational"
130 bands="iDEN / UMTS 1700 / LTE 1700" brand="AVANTEL" cc="co" country="Colombia" operator="Avantel S.A.S" status="Operational"
142 cc="co" country="Colombia" operator="Une EPM Telecomunicaciones S.A. E.S.P."
154 bands="MVNO" brand="Virgin Mobile" cc="co" country="Colombia" operator="Virgin Mobile Colombia S.A.S." status="Operational"
@@ -2985,6 +3085,7 @@
220 cc="co" country="Colombia" operator="Libre Tecnologias SAS"
230 cc="co" country="Colombia" operator="Setroc Mobile Group SAS"
240 cc="co" country="Colombia" operator="Logistica Flash Colombia SAS" status="Operational"
+ 666 brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)"
000-999
734
01 bands="GSM 900" brand="Digitel" cc="ve" country="Venezuela" operator="Corporacion Digitel C.A." status="Not operational"
@@ -3009,6 +3110,9 @@
02 bands="GSM 1900 / UMTS 1900 / LTE 1700" brand="CNT Mobile" cc="ec" country="Ecuador" operator="Corporación Nacional de Telecomunicaciones (CNT EP)" status="Operational"
03 bands="MVNO" brand="Tuenti" cc="ec" country="Ecuador" operator="Otecel S.A." status="Operational"
00-99
+742
+ 04 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" country="'French Guiana (France) - GF'" operator="Free Caraïbe" status="Upcoming"
+ 00-99
744
01 bands="GSM 1900 / UMTS 900 / UMTS 1900 / LTE 1700" brand="VOX" cc="py" country="Paraguay" operator="Hola Paraguay S.A." status="Operational"
02 bands="GSM 1900 / UMTS 1900 / LTE 1700" brand="Claro" cc="py" country="Paraguay" operator="AMX Paraguay S.A." status="Operational"
@@ -3025,7 +3129,7 @@
00-99
748
00 bands="TDMA" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Not operational"
- 01 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1700 / 5G 3500" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Operational"
+ 01 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1700 / 5G 28000" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Operational"
03 brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Not operational"
07 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900" brand="Movistar" cc="uy" country="Uruguay" operator="Telefónica Móviles Uruguay" status="Operational"
10 bands="GSM 1900 / UMTS 1900 / LTE 1700" brand="Claro" cc="uy" country="Uruguay" operator="AM Wireless Uruguay S.A." status="Operational"
@@ -3052,7 +3156,7 @@
16 brand="Cisco Jasper" country="International operators" operator="Cisco Systems, Inc." status="Operational"
17 bands="GSM 1800" brand="Navitas" country="International operators" operator="JT Group Limited" status="Not operational"
18 bands="GSM 900 / GSM 1900 / CDMA2000 1900 / UMTS 1900" brand="Cellular @Sea" country="International operators" operator="AT&T Mobility" status="Operational"
- 19 bands="GSM 900 / GSM 1800 / UMTS 2100" country="International operators" operator="Vodafone Malta Maritime" status="Operational"
+ 19 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Vodafone Malta Maritime" country="International operators" operator="Monaco Telecom" status="Operational"
20 country="International operators" operator="Intermatica"
21 bands="GSM 1800" country="International operators" operator="Wins Limited" status="Operational"
22 country="International operators" operator="MediaLincc Ltd"
@@ -3074,7 +3178,7 @@
38 bands="MVNO" country="International operators" operator="Multiregional TransitTelecom (MTT)" status="Operational"
39 bands="MVNO" country="International operators" operator="MTX Connect Ltd" status="Operational"
40 bands="MVNO" brand="1nce GmbH" country="International operators" operator="Deutsche Telekom AG" status="Operational"
- 41 bands="MVNO" country="International operators" operator="BodyTrace Netherlands B.V." status="Operational"
+ 41 bands="MVNO" country="International operators" operator="One Network B.V." status="Operational"
42 country="International operators" operator="DCN Hub ehf"
43 bands="MVNO" country="International operators" operator="EMnify GmbH" status="Operational"
44 country="International operators" operator="AT&T Inc."
@@ -3086,7 +3190,7 @@
50 bands="Satellite" country="International operators" operator="EchoStar Mobile"
51 country="International operators" operator="VisionNG"
52 country="International operators" operator="Manx Telecom Trading Ltd."
- 53 bands="Satellite" country="International operators" operator="Deutsche Telekom AG" status="Operational"
+ 53 bands="LTE 2100" brand="European Aviation Network" country="International operators" operator="Deutsche Telekom AG" status="Operational"
54 country="International operators" operator="Teleena Holding B.V."
55 country="International operators" operator="Beezz Communication Solutions Ltd."
56 brand="ETSI" country="International operators" operator="European Telecommunications Standards Institute"
@@ -3103,10 +3207,14 @@
67 bands="MVNO" country="International operators" operator="1NCE GmbH" status="Operational"
68 country="International operators" operator="Maersk Line A/S"
69 country="International operators" operator="Legos"
+ 70 bands="MVNO" country="International operators" operator="Clementvale Baltic OÜ"
+ 71 country="International operators" operator="Tampnet AS"
88 country="International operators" operator="UN Office for the Coordination of Humanitarian Affairs (OCHA)"
00-99
902
01 bands="LTE" country="International operators" operator="MulteFire Allicance" status="Operational"
+ 72 country="International operators" operator="Tele2 IoT"
+ 73 country="International operators" operator="Cubic Telecom Limited"
00-99
991
01 country="International operators" operator="World's Global Telecom"
diff --git a/stdnum/isbn.dat b/stdnum/isbn.dat
index cf9905bf..9a4eb2fc 100644
--- a/stdnum/isbn.dat
+++ b/stdnum/isbn.dat
@@ -1,19 +1,21 @@
# generated from RangeMessage.xml, downloaded from
# https://www.isbn-international.org/export_rangemessage.xml
-# file serial 8fd7c3b9-d154-48cb-9f68-90c2713e2eda
-# file date Fri, 17 Jan 2020 14:32:59 CET
+# file serial 788740c8-ebcc-43eb-8de8-f6a711889b42
+# file date Fri, 7 Aug 2020 13:02:30 CEST
978
0-5,600-649,65-65,7-7,80-94,950-989,9900-9989,99900-99999
0 agency="English language"
00-19,200-227,2280-2289,229-368,3690-3699,370-638,6390-6397
- 6398000-6399999,640-647,6480000-6489999,649-654,6550-6559,656-699
- 7000-8499,85000-89999,900000-949999,9500000-9999999
+ 6398000-6399999,640-644,6450000-6459999,646-647,6480000-6489999,649-654
+ 6550-6559,656-699,7000-8499,85000-89999,900000-949999,9500000-9999999
1 agency="English language"
- 000-009,01-06,0700-0999,100-397,3980-5499,55000-64999,6500-6799
- 68000-68599,6860-7139,714-716,7170-7319,7320000-7399999,74000-77499
- 7750000-7753999,77540-77639,7764000-7764999,77650-77699,7770000-7776999
- 77770-78999,7900-7999,80000-86719,8672-8675,86760-86979,869800-915999
- 9160000-9165059,916506-972999,9730-9877,987800-998999,9990000-9999999
+ 000-009,01-02,030-034,0350-0399,04-06,0700-0999,100-397,3980-5499
+ 55000-64999,6500-6799,68000-68599,6860-7139,714-716,7170-7319
+ 7320000-7399999,74000-77499,7750000-7753999,77540-77639,7764000-7764999
+ 77650-77699,7770000-7776999,77770-78999,7900-7999,80000-80049
+ 80050-80499,80500-83799,8380000-8384999,83850-86719,8672-8675
+ 86760-86979,869800-915999,9160000-9165059,916506-972999,9730-9877
+ 987800-991149,9911500-9911999,991200-998989,9989900-9999999
2 agency="French language"
00-19,200-349,35000-39999,400-489,490000-494999,495-495,4960-4966
49670-49699,497-699,7000-8399,84000-89999,900000-919799,91980-91980
@@ -46,13 +48,13 @@
000-089,09-49,500-799,8000-9099,910-919,92000-96499,9650-9749,975-999
607 agency="Mexico"
00-39,400-749,7500-9499,95000-99999
- 608 agency="Macedonia"
+ 608 agency="North Macedonia"
0-0,10-19,200-449,4500-6499,65000-69999,7-9
609 agency="Lithuania"
00-39,400-799,8000-9499,95000-99999
611 agency="Thailand"
612 agency="Peru"
- 00-29,300-399,4000-4499,45000-49999,50-99
+ 00-29,300-399,4000-4499,45000-49999,5000-5149
613 agency="Mauritius"
0-9
614 agency="Lebanon"
@@ -74,13 +76,14 @@
622 agency="Iran"
00-08,200-299,6000-7499,95000-99999
623 agency="Indonesia"
- 00-09,200-299,7000-7999,90000-99999
+ 00-09,200-299,6500-7999,90000-99999
624 agency="Sri Lanka"
00-04,200-249,5000-5999,95000-99999
625 agency="Turkey"
00-00,400-449,7000-7999
65 agency="Brazil"
- 300-302,5000-5129,80000-81699,900000-902249
+ 00-01,250-299,300-302,5000-5129,5500-5999,80000-81824,86000-89999
+ 900000-902449,990000-999999
7 agency="China, People's Republic"
00-09,100-499,5000-7999,80000-89999,900000-999999
80 agency="former Czechoslovakia"
@@ -142,15 +145,15 @@
00-02,0300-0499,05-19,2000-2099,21-27,28000-30999,31-43,440-819
8200-9699,97000-99999
958 agency="Colombia"
- 00-50,5100-5199,52000-53999,5400-5599,56000-59999,600-799,8000-9499
- 95000-99999
+ 00-48,490-509,5100-5199,52000-53999,5400-5599,56000-59999,600-799
+ 8000-9499,95000-99999
959 agency="Cuba"
00-19,200-699,7000-8499,85000-99999
960 agency="Greece"
00-19,200-659,6600-6899,690-699,7000-8499,85000-92999,93-93,9400-9799
98000-99999
961 agency="Slovenia"
- 00-19,200-599,6000-8999,90000-94999
+ 00-19,200-599,6000-8999,90000-95999
962 agency="Hong Kong, China"
00-19,200-699,7000-8499,85000-86999,8700-8999,900-999
963 agency="Hungary"
@@ -163,8 +166,8 @@
00-12,130-139,14-14,1500-1699,170-199,2000-2789,279-289,2900-2999
300-699,7000-8999,90000-90999,910-949,95000-97999,980-999
967 agency="Malaysia"
- 00-00,0100-0999,10000-19999,2000-2499,300-499,5000-5999,60-89,900-989
- 9900-9989,99900-99999
+ 00-00,0100-0999,10000-19999,2000-2499,250-254,2900-2999,300-499
+ 5000-5999,60-89,900-989,9900-9989,99900-99999
968 agency="Mexico"
01-39,400-499,5000-7999,800-899,9000-9999
969 agency="Pakistan"
@@ -214,6 +217,10 @@
00-11,12000-19999,200-739,74000-76999,77000-79999,8000-9699,97000-99999
989 agency="Portugal"
0-1,20-53,54000-54999,550-799,8000-9499,95000-99999
+ 9914 agency="Kenya"
+ 40-44,700-749,9850-9999
+ 9915 agency="Uruguay"
+ 40-59,650-799,9300-9999
9916 agency="Estonia"
0-0,10-39,4-4,600-749,9500-9999
9917 agency="Bolivia"
@@ -223,7 +230,7 @@
9919 agency="Mongolia"
20-27,500-599,9500-9999
9920 agency="Morocco"
- 35-39,600-799,9300-9999
+ 35-39,550-799,9000-9999
9921 agency="Kuwait"
0-0,30-39,700-899,9700-9999
9922 agency="Iraq"
@@ -263,7 +270,7 @@
9939 agency="Armenia"
0-4,50-79,800-899,9000-9799,98-99
9940 agency="Montenegro"
- 0-1,20-49,500-839,84-86,8700-8999,9000-9999
+ 0-1,20-49,500-839,84-86,8700-9999
9941 agency="Georgia"
0-0,10-39,400-799,8-8,9000-9999
9942 agency="Ecuador"
@@ -273,7 +280,7 @@
9944 agency="Turkey"
0000-0999,100-499,5000-5999,60-69,700-799,80-89,900-999
9945 agency="Dominican Republic"
- 00-00,010-079,08-39,400-569,57-57,580-849,8500-9999
+ 00-00,010-079,08-39,400-569,57-57,580-799,80-80,810-849,8500-9999
9946 agency="Korea, P.D.R."
0-1,20-39,400-899,9000-9999
9947 agency="Algeria"
@@ -335,7 +342,7 @@
9975 agency="Moldova"
0-0,100-299,3000-3999,4000-4499,45-89,900-949,9500-9999
9976 agency="Tanzania"
- 0-4,5000-5899,59-89,900-989,9900-9999
+ 0-4,5000-5799,580-589,59-89,900-989,9900-9999
9977 agency="Costa Rica"
00-89,900-989,9900-9999
9978 agency="Ecuador"
@@ -359,8 +366,8 @@
9987 agency="Tanzania"
00-39,400-879,8800-9999
9988 agency="Ghana"
- 0-2,30-54,550-749,7500-9999
- 9989 agency="Macedonia"
+ 0-3,40-54,550-749,7500-9999
+ 9989 agency="North Macedonia"
0-0,100-199,2000-2999,30-59,600-949,9500-9999
99901 agency="Bahrain"
00-49,500-799,80-99
@@ -392,7 +399,7 @@
99916 agency="Namibia"
0-2,30-69,700-999
99917 agency="Brunei Darussalam"
- 0-2,30-89,900-999
+ 0-2,30-88,890-999
99918 agency="Faroe Islands"
0-3,40-79,800-999
99919 agency="Benin"
@@ -477,7 +484,7 @@
99959 agency="Luxembourg"
0-2,30-59,600-999
99960 agency="Malawi"
- 0-0,10-94,950-999
+ 070-099,10-94,950-999
99961 agency="El Salvador"
0-2,300-369,37-89,900-999
99962 agency="Mongolia"
@@ -511,7 +518,7 @@
99976 agency="Srpska, Republic of"
0-1,20-59,600-799,900-999
99977 agency="Rwanda"
- 0-1,40-69,700-799
+ 0-1,40-69,700-799,995-999
99978 agency="Mongolia"
0-4,50-69,700-999
99979 agency="Honduras"
@@ -519,11 +526,13 @@
99980 agency="Bhutan"
0-0,30-59,800-999
99981 agency="Macau"
- 0-1,30-49,800-999
+ 0-1,30-59,800-999
99982 agency="Benin"
- 0-0,50-59,900-949
+ 0-0,50-62,900-969
99983 agency="El Salvador"
0-0,50-69,950-999
+ 99985 agency="Tajikistan"
+ 55-59,950-999
979
10-12,8-8
10 agency="France"
@@ -531,6 +540,6 @@
11 agency="Korea, Republic"
00-24,250-549,5500-8499,85000-94999,950000-999999
12 agency="Italy"
- 200-200,80000-84999
+ 200-299,5950-5999,80000-84999
8 agency="United States"
6000-6999,9850000-9850009
diff --git a/stdnum/nz/banks.dat b/stdnum/nz/banks.dat
index d7c1e64e..9c86f5b6 100644
--- a/stdnum/nz/banks.dat
+++ b/stdnum/nz/banks.dat
@@ -1,5 +1,5 @@
-# generated from BankBranchRegister-20Dec2019.xls downloaded from
-# https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xls/
+# generated from BankBranchRegister-10Aug2020.xlsx downloaded from
+# https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xlsx/
01 bank="ANZ Bank New Zealand"
0001 branch="ANZ Retail 1"
0004 branch="ANZ Retail 2"
@@ -537,16 +537,21 @@
1273 branch="Bank of Baroda"
1274 branch="BNZ Connect"
1275 branch="Sylvia Park Store"
+ 1276 branch="Commercial Bay"
1278 branch="Russley"
1283 branch="Access Prepaid Worldwide CPP"
1284 branch="Access Prepaid Worldwide - Qantas Cash NZ"
1285 branch="NorthWest"
- 1286,1290 branch="BNZ Institutional Banking"
+ 1286 branch="BNZ Institutional Banking"
+ 1290 branch="Transferwise Limited"
1291 branch="Transferwise Ltd"
1294 branch="Waddle Loans Ltd"
1295 branch="Toll Networks (NZ) Ltd"
1296 branch="Toll Carriers Ltd"
1298 branch="Whangaparaoa"
+ 2025-2053 branch="BNZ Account"
+ 2054 branch="BNZ Account Test Branch"
+ 2055 branch="BNZ Account Training Branch"
03 bank="Westpac"
0031-0032 branch="Auckland Clearings"
0043-0044 branch="Wellington Clearings"
@@ -578,7 +583,7 @@
0179,1513 branch="Mt Roskill"
0181 branch="Milford"
0189 branch="3073 Great North Road"
- 0195-0196,0239,0283 branch="Newmarket"
+ 0195-0196,0239,0283,1394 branch="Newmarket"
0198 branch="DPS Palmerston North"
0206,1390 branch="Botany at The Hub"
0207 branch="Manukau City"
@@ -586,11 +591,10 @@
0212 branch="Onehunga Mall"
0219-0220 branch="Otahuhu"
0227 branch="Panmure"
- 0228 branch="184 Dominion Road"
+ 0228,0255,1512 branch="Ponsonby"
0250 branch="C and I B Head Office"
0251 branch="Government Business"
0253,0292 branch="Westpac Tower Branch"
- 0255,1512 branch="Ponsonby"
0259 branch="Remuera"
0263 branch="St Heliers"
0268 branch="Southdown Dcbc"
@@ -613,19 +617,17 @@
0371,1573 branch="Morrinsville"
0374 branch="Mt Maunganui"
0385,0399,0423 branch="Papakura"
- 0389,1502 branch="Silverdale"
+ 0389,0419,1502 branch="Silverdale"
0394 branch="Paihia"
0406 branch="Pukekohe"
0407 branch="127 King Street Pukekohe"
0415,1545,1552 branch="Rotorua Central"
0417 branch="Amohia Street Rotorua"
- 0419 branch="Whangaparaoa"
0426 branch="Taumarunui"
0430 branch="Taupo"
0431 branch="Heu Heu Street Taupo"
- 0435 branch="Tauranga Centre"
+ 0435,0445,1548,1720 branch="Cameron Road"
0442-0443,1564 branch="Te Awamutu"
- 0445,1548,1720 branch="Cameron Road"
0446 branch="Grey Street Tauranga"
0449,1562 branch="Te Kuiti"
0458 branch="Thames"
@@ -633,7 +635,7 @@
0474 branch="Te Puke"
0481,0485 branch="Warkworth"
0490,1544 branch="Whakatane"
- 0502,0584 branch="318 Lambton Quay"
+ 0502,0584,1540 branch="318 Lambton Quay"
0503 branch="Wellington"
0510,0515,0558 branch="Courtenay Place"
0511,0559 branch="Ghuznee Street"
@@ -689,7 +691,7 @@
0799 branch="93 Armagh Street ChCh"
0802,0866,1592-1593 branch="Christchurch Central"
0803 branch="Christchurch"
- 0809,1746 branch="Windsor"
+ 0809,1745-1746 branch="Windsor"
0813 branch="Courier Banking CHCH"
0814,1595,1597,1700 branch="The Palms"
0818,0854,1702 branch="Papanui"
@@ -788,7 +790,6 @@
1388 branch="Westpac Direct Auckland"
1389 branch="Westpac Direct ChCh"
1393 branch="Huapai"
- 1394 branch="Epsom"
1395 branch="Digital Branch 2"
1396 branch="Mangere"
1397 branch="Takanini"
@@ -809,10 +810,9 @@
1530 branch="SBO Centre 2"
1538 branch="Ruakaka"
1539 branch="Westpac 4"
- 1540 branch="Karori Mall"
1546 branch="Opotiki"
1547,1551 branch="Bayfair"
- 1549 branch="Greerton"
+ 1549 branch="Tauranga Crossing"
1550 branch="Katikati"
1553,1587-1588 branch="Rolleston"
1556-1557,1559,1561 branch="Chartwell"
@@ -826,15 +826,14 @@
1585 branch="Kaiapoi"
1586 branch="Kaikoura"
1590,1596,1599 branch="Ferrymead"
- 1594,1703 branch="Barrington"
- 1598 branch="St Martins"
+ 1594,1598,1703 branch="Barrington"
1701 branch="Auckland Airport"
1710 branch="Picton"
1714-1715 branch="Northtown"
1725 branch="Mosgiel"
1734,1736 branch="Balclutha"
1739 branch="Wanaka"
- 1744-1745 branch="Invercargill South"
+ 1744 branch="Invercargill South"
1751 branch="Transaction Banking 51"
1752 branch="Transaction Banking 52"
1753 branch="Transaction Banking 53"
diff --git a/stdnum/oui.dat b/stdnum/oui.dat
index 9c2a8104..a14c8bb3 100644
--- a/stdnum/oui.dat
+++ b/stdnum/oui.dat
@@ -5,9 +5,9 @@
000000-000009,0000AA o="XEROX CORPORATION"
00000A o="OMRON TATEISI ELECTRONICS CO."
00000B o="MATRIX CORPORATION"
-00000C,000142-000143,000163-000164,000196-000197,0001C7,0001C9,000216-000217,00023D,00024A-00024B,00027D-00027E,0002B9-0002BA,0002FC-0002FD,000331-000332,00036B-00036C,00039F-0003A0,0003E3-0003E4,0003FD-0003FE,000427-000428,00044D-00044E,00046D-00046E,00049A-00049B,0004C0-0004C1,0004DD-0004DE,000500-000501,000531-000532,00055E-00055F,000573-000574,00059A-00059B,0005DC-0005DD,000628,00062A,000652-000653,00067C,0006C1,0006D6-0006D7,0006F6,00070D-00070E,00074F-000750,00077D,000784-000785,0007B3-0007B4,0007EB-0007EC,000820-000821,00082F-000832,00087C-00087D,0008A3-0008A4,0008C2,0008E2-0008E3,000911-000912,000943-000944,00097B-00097C,0009B6-0009B7,0009E8-0009E9,000A41-000A42,000A8A-000A8B,000AB7-000AB8,000AF3-000AF4,000B45-000B46,000B5F-000B60,000B85,000BBE-000BBF,000BFC-000BFD,000C30-000C31,000C85-000C86,000CCE-000CCF,000D28-000D29,000D65-000D66,000DBC-000DBD,000DEC-000DED,000E38-000E39,000E83-000E84,000ED6-000ED7,000F23-000F24,000F34-000F35,000F8F-000F90,000FF7-000FF8,001007,00100B,00100D,001011,001014,00101F,001029,00102F,001054,001079,00107B,0010A6,0010F6,0010FF,001120-001121,00115C-00115D,001192-001193,0011BB-0011BC,001200-001201,001243-001244,00127F-001280,0012D9-0012DA,001319-00131A,00135F-001360,00137F-001380,0013C3-0013C4,00141B-00141C,001469-00146A,0014A8-0014A9,0014F1-0014F2,00152B-00152C,001562-001563,0015C6-0015C7,0015F9-0015FA,001646-001647,00169C-00169D,0016C7-0016C8,00170E-00170F,00173B,001759-00175A,001794-001795,0017DF-0017E0,001818-001819,001873-001874,0018B9-0018BA,001906-001907,00192F-001930,001955-001956,0019A9-0019AA,0019E7-0019E8,001A2F-001A30,001A6C-001A6D,001AA1-001AA2,001AE2-001AE3,001B0C-001B0D,001B2A-001B2B,001B53-001B54,001B8F-001B90,001BD4-001BD5,001C0E-001C0F,001C57-001C58,001CB0-001CB1,001CF6,001CF9,001D45-001D46,001D70-001D71,001DA1-001DA2,001DE5-001DE6,001E13-001E14,001E49-001E4A,001E79-001E7A,001EBD-001EBE,001EF6-001EF7,001F26-001F27,001F6C-001F6D,001F9D-001F9E,001FC9-001FCA,00211B-00211C,002155-002156,0021A0-0021A1,0021D7-0021D8,00220C-00220D,002255-002256,002290-002291,0022BD-0022BE,002304-002305,002333-002334,00235D-00235E,0023AB-0023AC,0023EA-0023EB,002413-002414,002450-002451,002497-002498,0024C3-0024C4,0024F7,0024F9,002545-002546,002583-002584,0025B4-0025B5,00260A-00260B,002651-002652,002698-002699,0026CA-0026CB,00270C-00270D,002790,0027E3,0029C2,002A10,002A6A,002CC8,002F5C,003019,003024,003040,003071,003078,00307B,003080,003085,003094,003096,0030A3,0030B6,0030F2,003217,00351A,0038DF,003A7D,003A98-003A9C,003C10,00400B,004096,0041D2,00425A,004268,00451D,00500B,00500F,005014,00502A,00503E,005050,005053-005054,005073,005080,0050A2,0050A7,0050BD,0050D1,0050E2,0050F0,00562B,0057D2,0059DC,005D73,005F86,006009,00602F,00603E,006047,00605C,006070,006083,0062EC,006440,006BF1,006CBC,007278,007686,00778D,007888,007E95,0081C4,008731,008764,008A96,008E73,00900C,009021,00902B,00905F,00906D,00906F,009086,009092,0090A6,0090AB,0090B1,0090BF,0090D9,0090F2,009AD2,009E1E,00A289,00A2EE,00A38E,00A3D1,00A5BF,00A6CA,00A742,00AA6E,00AF1F,00B04A,00B064,00B08E,00B0C2,00B0E1,00B1E3,00B670,00B771,00B8B3,00BC60,00BE75,00BF77,00C164,00C1B1,00C88B,00CAE5,00CCFC,00D006,00D058,00D063,00D079,00D090,00D097,00D0BA-00D0BC,00D0C0,00D0D3,00D0E4,00D0FF,00D6FE,00D78F,00DA55,00DEFB,00E014,00E01E,00E034,00E04F,00E08F,00E0A3,00E0B0,00E0F7,00E0F9,00E0FE,00E16D,00EABD,00EBD5,00EEAB,00F28B,00F663,00F82C,00FCBA,00FD22,00FEC8,042AE2,046273,046C9D,04C5A4,04DAD2,04EB40,04FE7F,081735,081FF3,084FA9,084FF9,0896AD,08CC68,08CCA7,08D09F,08ECF5,0C1167,0C2724,0C6803,0C75BD,0C8525,0CD0F8,0CD996,0CF5A4,1005CA,108CCF,10B3C6,10B3D5-10B3D6,10BD18,10F311,14169D,14A2A0,18339D,188090,188B45,188B9D,189C5D,18E728,18EF63,1C17D3,1C1D86,1C6A7A,1CAA07,1CDEA7,1CDF0F,1CE6C7,1CE85D,203706,203A07,204C9E,20BBC0,2401C7,24169D,247E12,24B657,24E9B3,2834A2,285261,286F7F,2893FE,28940F,28AC9E,28C7CE,2C01B5,2C0BE9,2C3124,2C3311,2C36F8,2C3ECF,2C3F38,2C4F52,2C542D,2C5741,2C5A0F,2C73A0,2C86D2,2CABEB,2CD02D,2CF89B,3037A6,308BB2,30E4DB,30F70D,346288,346F90,34A84E,34BDC8,34DBFD,34ED1B,34F8E7,380E4D,381C1A,382056,3890A5,38ED18,3C08F6,3C0E23,3C410E,3C510E,3C5731,3C5EC3,3CCE73,3CDF1E,40017A,405539,40A6E8,40CE24,40F4EC,4403A7,442B03,44ADD9,44D3CA,44E4D9,4C0082,4C4E35,4C710C-4C710D,4C776D,4CA64D,4CBC48,4CE175-4CE176,500604,5006AB,500F80,5017FF,501CB0,501CBF,502FA8,503DE5,5057A8,5061BF,5067AE,508789,50F722,544A00,5475D0,54781A,547C69,547FEE,5486BC,54A274,580A20,5835D9,588D09,58971E,5897BD,58AC78,58BC27,58BFEA,58F39C,5C5015,5C5AC7,5C710D,5C838F,5CA48A,5CA62D,5CE176,5CFC66,60735C,6400F1,641225,64168D,649EF3,64A0E7,64AE0C,64D814,64D989,64E950,64F69D,682C7B,683B78,6886A7,6899CD,689CE2,68BC0C,68BDAB,68CAE4,68EFBD,6C2056,6C310E,6C410E,6C416A,6C504D,6C5E3B,6C6CD3,6C710D,6C8BD3,6C9989,6C9CED,6CAB05,6CB2AE,6CDD30,6CFA89,7001B5,700B4F,700F6A,70105C,7018A7,701F53,703509,70695A,706BB9,706D15,706E6D,70708B,7079B3,707DB9,708105,70B317,70C9C6,70CA9B,70D379,70DB98,70DF2F,70E422,70EA1A,70F35A,7426AC,74860B,7488BB,74A02F,74A2E6,7802B1,780CF0,78725D,78BAF9,78BC1A,78DA6E,7C0ECE,7C210D-7C210E,7C310E,7C69F6,7C95F3,7CAD74,80E01D,80E86F,843DC6,8478AC,84802D,848A8D,84B261,84B517,84B802,881DFC,8843E1,885A92,887556,88908D,88F031,88F077,8C604F,8CB64F,94D469,9C4E20,9C57AD,9CAFCA,9CE176,A0239F,A03D6F,A0554F,A09351,A0B439,A0CF5B,A0E0AF,A0ECF9,A0F849,A40CC3,A41875,A44C11,A4530E,A45630,A46C2A,A4934C,A4B239,A4B439,A80C0D,A89D21,A8B1D4,A8B456,AC3A67,AC7E8A,ACA016,ACF2C5,ACF5E6,B000B4,B02680,B07D47,B08BCF,B0907E,B0AA77,B0FAEB,B40216,B41489,B4A4E3,B4A8B9,B4DE31,B4E9B0,B83861,B8621F,B8BEBF,BC1665,BC16F5,BC26C7,BC671C,BCC493,BCF1F2,C0255C,C0626B,C064E4,C067AF,C07BBC,C08C60,C40ACB,C4143C,C444A0,C46413,C471FE,C47295,C47D4F,C4B239,C4B36A,C4B9CD,C4C603,C4F7D5,C80084,C84C75,C89C1D,C8F9F9,CC167E,CC46D6,CC5A53,CC70ED,CC7F75-CC7F76,CC8E71,CC9070,CC9891,CCD539,CCD8C1,CCEF48,D0574C,D072DC,D0A5A6,D0C282,D0C789,D0D0FD,D0EC35,D42C44,D46A35,D46D50,D4789B,D48CB5,D4A02A,D4AD71,D4ADBD,D4C93C,D4D748,D4E880,D824BD,D867D9,D8B190,DC3979,DC7B94,DC8C37,DCA5F4,DCCEC1,DCEB94,DCF719,E00EDA,E02F6D,E05FB9,E0899D,E0ACF1,E0D173,E4AA5D,E4C722,E4D3F1,E80462,E84040,E86549,E8B748,E8BA70,E8EDF3,EC1D8B,EC3091,EC4476,ECBD1D,ECC882,ECE1A9,F02572,F02929,F07816,F07F06,F09E63,F0B2E5,F0F755,F40F1B,F41FC2,F44E05,F47F35,F4ACC1,F4BD9E,F4CFE2,F4DBE6,F4EA67,F80BCB,F80F6F,F84F57,F866F2,F872EA,F87B20,F8A5C5,F8B7E2,F8C288,FC589A,FC5B39,FC9947,FCFBFB o="Cisco Systems, Inc"
+00000C,000142-000143,000163-000164,000196-000197,0001C7,0001C9,000216-000217,00023D,00024A-00024B,00027D-00027E,0002B9-0002BA,0002FC-0002FD,000331-000332,00036B-00036C,00039F-0003A0,0003E3-0003E4,0003FD-0003FE,000427-000428,00044D-00044E,00046D-00046E,00049A-00049B,0004C0-0004C1,0004DD-0004DE,000500-000501,000531-000532,00055E-00055F,000573-000574,00059A-00059B,0005DC-0005DD,000628,00062A,000652-000653,00067C,0006C1,0006D6-0006D7,0006F6,00070D-00070E,00074F-000750,00077D,000784-000785,0007B3-0007B4,0007EB-0007EC,000820-000821,00082F-000832,00087C-00087D,0008A3-0008A4,0008C2,0008E2-0008E3,000911-000912,000943-000944,00097B-00097C,0009B6-0009B7,0009E8-0009E9,000A41-000A42,000A8A-000A8B,000AB7-000AB8,000AF3-000AF4,000B45-000B46,000B5F-000B60,000B85,000BBE-000BBF,000BFC-000BFD,000C30-000C31,000C85-000C86,000CCE-000CCF,000D28-000D29,000D65-000D66,000DBC-000DBD,000DEC-000DED,000E38-000E39,000E83-000E84,000ED6-000ED7,000F23-000F24,000F34-000F35,000F8F-000F90,000FF7-000FF8,001007,00100B,00100D,001011,001014,00101F,001029,00102F,001054,001079,00107B,0010A6,0010F6,0010FF,001120-001121,00115C-00115D,001192-001193,0011BB-0011BC,001200-001201,001243-001244,00127F-001280,0012D9-0012DA,001319-00131A,00135F-001360,00137F-001380,0013C3-0013C4,00141B-00141C,001469-00146A,0014A8-0014A9,0014F1-0014F2,00152B-00152C,001562-001563,0015C6-0015C7,0015F9-0015FA,001646-001647,00169C-00169D,0016C7-0016C8,00170E-00170F,00173B,001759-00175A,001794-001795,0017DF-0017E0,001818-001819,001873-001874,0018B9-0018BA,001906-001907,00192F-001930,001955-001956,0019A9-0019AA,0019E7-0019E8,001A2F-001A30,001A6C-001A6D,001AA1-001AA2,001AE2-001AE3,001B0C-001B0D,001B2A-001B2B,001B53-001B54,001B8F-001B90,001BD4-001BD5,001C0E-001C0F,001C57-001C58,001CB0-001CB1,001CF6,001CF9,001D45-001D46,001D70-001D71,001DA1-001DA2,001DE5-001DE6,001E13-001E14,001E49-001E4A,001E79-001E7A,001EBD-001EBE,001EF6-001EF7,001F26-001F27,001F6C-001F6D,001F9D-001F9E,001FC9-001FCA,00211B-00211C,002155-002156,0021A0-0021A1,0021D7-0021D8,00220C-00220D,002255-002256,002290-002291,0022BD-0022BE,002304-002305,002333-002334,00235D-00235E,0023AB-0023AC,0023EA-0023EB,002413-002414,002450-002451,002497-002498,0024C3-0024C4,0024F7,0024F9,002545-002546,002583-002584,0025B4-0025B5,00260A-00260B,002651-002652,002698-002699,0026CA-0026CB,00270C-00270D,002790,0027E3,0029C2,002A10,002A6A,002CC8,002F5C,003019,003024,003040,003071,003078,00307B,003080,003085,003094,003096,0030A3,0030B6,0030F2,003217,00351A,0038DF,003A7D,003A98-003A9C,003C10,00400B,004096,0041D2,00425A,004268,00451D,00500B,00500F,005014,00502A,00503E,005050,005053-005054,005073,005080,0050A2,0050A7,0050BD,0050D1,0050E2,0050F0,00562B,0057D2,0059DC,005D73,005F86,006009,00602F,00603E,006047,00605C,006070,006083,0062EC,006440,006BF1,006CBC,007278,007686,00778D,007888,007E95,0081C4,008731,008764,008A96,008E73,00900C,009021,00902B,00905F,00906D,00906F,009086,009092,0090A6,0090AB,0090B1,0090BF,0090D9,0090F2,009AD2,009E1E,00A289,00A2EE,00A38E,00A3D1,00A5BF,00A6CA,00A742,00AA6E,00AF1F,00B04A,00B064,00B08E,00B0C2,00B0E1,00B1E3,00B670,00B771,00B8B3,00BC60,00BE75,00BF77,00C164,00C1B1,00C88B,00CAE5,00CCFC,00D006,00D058,00D063,00D079,00D090,00D097,00D0BA-00D0BC,00D0C0,00D0D3,00D0E4,00D0FF,00D6FE,00D78F,00DA55,00DEFB,00E014,00E01E,00E034,00E04F,00E08F,00E0A3,00E0B0,00E0F7,00E0F9,00E0FE,00E16D,00EABD,00EBD5,00EEAB,00F28B,00F663,00F82C,00FCBA,00FD22,00FEC8,042AE2,045FB9,046273,046C9D,0476B0,04C5A4,04DAD2,04EB40,04FE7F,081735,081FF3,084FA9,084FF9,0896AD,08CC68,08CCA7,08D09F,08ECF5,0C1167,0C2724,0C6803,0C75BD,0C8525,0CD0F8,0CD996,0CF5A4,1005CA,108CCF,10B3C6,10B3D5-10B3D6,10BD18,10F311,10F920,14169D,14A2A0,18339D,188090,188B45,188B9D,189C5D,18E728,18EF63,1C17D3,1C1D86,1C6A7A,1CAA07,1CDEA7,1CDF0F,1CE6C7,1CE85D,203706,203A07,204C9E,20BBC0,2401C7,24169D,247E12,24B657,24E9B3,2834A2,285261,286F7F,2893FE,28940F,28AC9E,28C7CE,2C01B5,2C0BE9,2C3124,2C3311,2C36F8,2C3ECF,2C3F38,2C4F52,2C542D,2C5741,2C5A0F,2C73A0,2C86D2,2CABEB,2CD02D,2CF89B,3037A6,308BB2,30E4DB,30F70D,346288,346F90,34A84E,34BDC8,34DBFD,34ED1B,34F8E7,380E4D,381C1A,382056,3890A5,38ED18,3C08F6,3C0E23,3C13CC,3C410E,3C510E,3C5731,3C5EC3,3CCE73,3CDF1E,40017A,405539,40A6E8,40CE24,40F078,40F4EC,4403A7,442B03,44ADD9,44D3CA,44E4D9,4C0082,4C4E35,4C710C-4C710D,4C776D,4CA64D,4CBC48,4CE175-4CE176,500604,5006AB,500F80,5017FF,501CB0,501CBF,502FA8,503DE5,5057A8,5061BF,5067AE,508789,50F722,544A00,5475D0,54781A,547C69,547FEE,5486BC,5488DE,548ABA,54A274,580A20,5835D9,588D09,58971E,5897BD,58AC78,58BC27,58BFEA,58F39C,5C5015,5C5AC7,5C710D,5C838F,5CA48A,5CA62D,5CE176,5CFC66,60735C,6400F1,641225,64168D,643AEA,649EF3,64A0E7,64AE0C,64D814,64D989,64E950,64F69D,682C7B,683B78,687DB4,6886A7,6899CD,689CE2,689E0B,68BC0C,68BDAB,68CAE4,68EFBD,6C2056,6C310E,6C410E,6C416A,6C504D,6C5E3B,6C6CD3,6C710D,6C8BD3,6C9989,6C9CED,6CAB05,6CB2AE,6CDD30,6CFA89,7001B5,700B4F,700F6A,70105C,7018A7,701F53,703509,70617B,70695A,706BB9,706D15,706E6D,70708B,7079B3,707DB9,708105,70B317,70C9C6,70CA9B,70D379,70DB98,70DF2F,70E422,70EA1A,70F096,70F35A,7426AC,74860B,7488BB,74A02F,74A2E6,7802B1,780CF0,78725D,78BAF9,78BC1A,78DA6E,7C0ECE,7C210D-7C210E,7C310E,7C69F6,7C95F3,7CAD4F,7CAD74,802DBF,80E01D,80E86F,843DC6,8478AC,84802D,848A8D,84B261,84B517,84B802,881DFC,8843E1,885A92,887556,88908D,88F031,88F077,8C604F,8C941F,8CB64F,9077EE,94AEF0,94D469,9C4E20,9C57AD,9CAFCA,9CE176,A0239F,A03D6F,A0554F,A09351,A0B439,A0CF5B,A0E0AF,A0ECF9,A0F849,A40CC3,A41875,A44C11,A4530E,A45630,A46C2A,A48873,A4934C,A4B239,A4B439,A80C0D,A89D21,A8B1D4,A8B456,AC3A67,AC4A56,AC4A67,AC7A56,AC7E8A,ACA016,ACF2C5,ACF5E6,B000B4,B02680,B07D47,B08BCF,B0907E,B0AA77,B0FAEB,B40216,B41489,B4A4E3,B4A8B9,B4DE31,B4E9B0,B83861,B8621F,B8BEBF,BC1665,BC16F5,BC26C7,BC4A56,BC5A56,BC671C,BCC493,BCF1F2,C014FE,C0255C,C0626B,C064E4,C067AF,C07BBC,C08C60,C40ACB,C4143C,C444A0,C46413,C471FE,C47295,C47D4F,C4B239,C4B36A,C4B9CD,C4C603,C4F7D5,C80084,C84C75,C884A1,C89C1D,C8F9F9,CC167E,CC46D6,CC5A53,CC70ED,CC7F75-CC7F76,CC8E71,CC9070,CC9891,CCD539,CCD8C1,CCDB93,CCEF48,D0574C,D072DC,D0A5A6,D0C282,D0C789,D0D0FD,D0EC35,D42C44,D46A35,D46D50,D4789B,D48CB5,D4A02A,D4AD71,D4ADBD,D4C93C,D4D748,D4E880,D824BD,D867D9,D8B190,DC3979,DC774C,DC7B94,DC8C37,DCA5F4,DCCEC1,DCEB94,DCF719,E00EDA,E02F6D,E05FB9,E0899D,E0ACF1,E0D173,E41F7B,E4AA5D,E4C722,E4D3F1,E80462,E84040,E86549,E8B748,E8BA70,E8EDF3,EC1D8B,EC3091,EC4476,ECBD1D,ECC882,ECE1A9,F02572,F02929,F07816,F07F06,F09E63,F0B2E5,F0F755,F40F1B,F41FC2,F44E05,F47F35,F4ACC1,F4BD9E,F4CFE2,F4DBE6,F4EA67,F80BCB,F80F6F,F84F57,F866F2,F86BD9,F872EA,F87B20,F8A5C5,F8B7E2,F8C288,FC589A,FC5B39,FC9947,FCFBFB o="Cisco Systems, Inc"
00000D o="FIBRONICS LTD."
-00000E,000B5D,001742,002326,00E000,2CD444,38AFD7,502690,5C9AD8,68847E,742B62,8C736E,A06610,A8B2DA,B09928,B0ACFA,C47D46,E01877,E47FB2,FC084A o="FUJITSU LIMITED"
+00000E,000B5D,001742,002326,00E000,2CD444,38AFD7,502690,5C9AD8,68847E,742B62,8C736E,A06610,A8B2DA,B09928,B0ACFA,C47D46,E01877,E47FB2,EC7949,FC084A o="FUJITSU LIMITED"
00000F o="NEXT, INC."
000010 o="SYTEK INC."
000011 o="NORMEREL SYSTEMES"
@@ -65,7 +65,7 @@
000045 o="FORD AEROSPACE & COMM. CORP."
000046 o="OLIVETTI NORTH AMERICA"
000047 o="NICOLET INSTRUMENTS CORP."
-000048,0026AB,381A52,389D92,44D244,50579C,64EB8C,9CAED3,A4EE57,AC1826,B0E892,E0BB9E,F8D027 o="Seiko Epson Corporation"
+000048,0026AB,381A52,389D92,44D244,50579C,64EB8C,9CAED3,A4EE57,AC1826,B0E892,DCCD2F,E0BB9E,F8D027 o="Seiko Epson Corporation"
000049 o="APRICOT COMPUTERS, LTD"
00004A,0080DF o="ADC CODENOLL TECHNOLOGY CORP."
00004B o="ICL DATA OY"
@@ -88,7 +88,7 @@
00005C o="TELEMATICS INTERNATIONAL INC."
00005D o="CS TELECOM"
00005E o="ICANN, IANA Department"
-00005F,0008F6,000BA2,001CFC,0025DC o="Sumitomo Electric Industries,Ltd"
+00005F,0008F6,000BA2,001CFC,0025DC,084EBF o="Sumitomo Electric Industries, Ltd"
000060 o="KONTRON ELEKTRONIK GMBH"
000061 o="GATEWAY COMMUNICATIONS"
000062 o="BULL HN INFORMATION SYSTEMS"
@@ -117,7 +117,7 @@
00007A o="DANA COMPUTER INC."
00007B o="RESEARCH MACHINES"
00007C o="AMPERE INCORPORATED"
-00007D,00015D,0003BA,000782,000F4B,00104F,0010E0,001397,00144F,0020F2,002128,0021F6,00A0A4,080020,2CC260 o="Oracle Corporation"
+00007D,00015D,0003BA,000782,000F4B,00104F,0010E0,001397,00144F,0020F2,002128,0021F6,00A0A4,080020,2CC260,A8698C o="Oracle Corporation"
00007E o="CLUSTRIX CORPORATION"
00007F o="LINOTYPE-HELL AG"
000080 o="CRAY COMMUNICATIONS A/S"
@@ -125,10 +125,10 @@
000082 o="LECTRA SYSTEMES SA"
000083 o="TADPOLE TECHNOLOGY PLC"
000084 o="SUPERNET"
-000085,001E8F,00BBC1,180CAC,2C9EFC,349F7B,60128B,7438B7,74BFC0,84BA3B,888717,9C32CE,D8492F,F48139,F4A997,F80D60 o="CANON INC."
+000085,001E8F,00BBC1,180CAC,2C9EFC,349F7B,60128B,7438B7,74BFC0,84BA3B,888717,9C32CE,D8492F,F48139,F4A997,F80D60,F8A26D o="CANON INC."
000086 o="MEGAHERTZ CORPORATION"
000087 o="HITACHI, LTD."
-000088,00010F,000480,00051E,000533,000CDB,0012F2,0014C9,001BED,002438,0027F8,006069,0060DF,00E052,080088,50EB1A,609C9F,748EF8,78A6E1,889471,8C7CFF,C4F57C,CC4E24,D81FCC o="Brocade Communications Systems, Inc."
+000088,00010F,000480,00051E,000533,000CDB,0012F2,0014C9,001BED,002438,0027F8,006069,0060DF,00E052,080088,50EB1A,609C9F,748EF8,78A6E1,889471,8C7CFF,C4F57C,CC4E24,D81FCC o="Brocade Communications Systems LLC"
000089 o="CAYMAN SYSTEMS INC."
00008A o="DATAHOUSE INFORMATION SYSTEMS"
00008B o="INFOTRON"
@@ -226,7 +226,7 @@
0000ED o="APRIL"
0000EE o="NETWORK DESIGNERS, LTD."
0000EF o="KTI"
-0000F0,0007AB,001247,0012FB,001377,001599,0015B9,001632,00166B-00166C,0016DB,0017C9,0017D5,0018AF,001A8A,001B98,001C43,001D25,001DF6,001E7D,001EE1-001EE2,001FCC-001FCD,00214C,0021D1-0021D2,002339-00233A,002399,0023D6-0023D7,002454,002490-002491,0024E9,002566-002567,00265D,00265F,006F64,0073E0,007C2D,008701,00B5D0,00BF61,00C3F4,00E3B2,00F46F,00FA21,04180F,041BBA,04B1A1,04B429,04BA8D,04BDBF,04FE31,0808C2,0821EF,08373D,083D88,087808,088C2C,08AED6,08BFA0,08D42B,08ECA9,08EE8B,08FC88,08FD0E,0C1420,0C2FB0,0C715D,0C8910,0CA8A7,0CB319,0CDFA4,0CE0DC,1007B6,101DC0,103047,103B59,1077B1,1089FB,108EE0,109266,10D38A,10D542,141F78,1432D1,14568E,1489FD,1496E5,149F3C,14A364,14B484,14BB6E,14F42A,1816C9,1819D6,181EB0,182195,18227E,182666,183A2D,183F47,184617,1854CF,1867B0,188331,18895B,18E2C2,1C232C,1C3ADE,1C5A3E,1C62B8,1C66AA,1CAF05,2013E0,202D07,20326C,205531,205EF7,206E9C,20D390,20D5BF,244B03,244B81,245AB5,24920E,24C696,24DBED,24F5AA,24FCE5,2802D8,2827BF,28395E,288335,28987B,28BAB5,28CC01,2C4053,2C4401,2CAE2B,2CBABA,301966,306A85,3096FB,30C7AE,30CBF8,30CDA7,30D587,30D6C9,34145F,342D0D,343111,348A7B,34AA8B,34BE00,34C3AC,380195,380A94,380B40,3816D1,382DD1,382DE8,386A77,389496,389AF6,38D40B,38ECE4,3C0518,3C20F6,3C576C,3C5A37,3C6200,3C8BFE,3CA10D,3CBBFD,3CDCBC,3CF7A4,40163B,40D3AE,444E1A,445CE9,446D6C,44783E,44F459,48137E,4827EA,4844F7,4849C7,485169,48794D,489DD1,48C796,4C3C16,4CA56D,4CBCA5,4CDD31,5001BB,503275,503DA1,5050A4,5056BF,507705,508569,5092B9,509EA7,50A4C8,50B7C3,50C8E5,50F0D3,50F520,50FC9F,5440AD,5492BE,549B12,54B802,54BD79,54F201,54FA3E,54FCF0,58B10F,58C38B,58C5CB,5C2E59,5C3C27,5C497D,5C5181,5C865C,5C9960,5CC1D7,5CCB99,5CE8EB,5CF6DC,60684E,606BBD,6077E2,608E08,608F5C,60A10A,60A4D0,60AF6D,60C5AD,60D0A9,641CAE,641CB0,646CB2,647791,647BCE,6489F1,64B310,64B853,680571,682737,684898,685ACF,687D6B,68BFC4,68E7C2,68EBAE,6C006B,6C2F2C,6C8336,6CB7F4,6CDDBC,6CF373,701F3C,70288B,702AD5,705AAC,70CE8C,70F927,70FD46,74458A,749EF5,74EB80,78009E,781FDB,782327,7825AD,7840E4,78471D,78521A,78595E,789ED0,78A873,78ABBB,78BDBC,78C3E9,78F7BE,7C0BC6,7C1C68,7C2302,7C2EDD,7C38AD,7C6456,7C787E,7C8956,7C8BB5,7C9122,7CF854,7CF90E,8018A7,8020FD,8031F0,804E70,804E81,805719,80656D,807B3E,8086D9,80CEB9,84119E,8425DB,842E27,845181,8455A5,849866,84A466,84B541,84C0EF,88299C,887598,888322,889B39,889F6F,88A303,88ADD2,88BD45,8C1ABF,8C71F8,8C7712,8C79F5,8C83E1,8CBFA6,8CC8CD,8CE5C0,9000DB,900628,90633B,9097F3,90B144,90F1AA,9401C2,942DDC,94350A,945103,9463D1,9476B7,947BE7,948BC1,94B10A,94D771,981DFA,98398E,9852B1,988389,9C0298,9C2A83,9C3AAF,9C65B0,9C8C6E,9CA513,9CD35B,9CE063,9CE6E7,A00798,A01081,A02195,A06090,A07591,A0821F,A0AC69,A0B4A5,A0CBFD,A407B6,A4307A,A46CF1,A48431,A49A58,A4D990,A4EBD3,A80600,A816D0,A82BB9,A8346A,A8515B,A87C01,A88195,A887B3,A89FBA,A8F274,AC3613,AC5A14,ACAFB9,ACC33A,ACEE9E,B047BF,B06FE0,B0C4E7,B0C559,B0D09C,B0DF3A,B0EC71,B41A1D,B43A28,B46293,B47443,B4BFF6,B4CE40,B4EF39,B857D8,B85A73,B85E7B,B86CE8,B8BBAF,B8BC5B,B8C68E,B8D9CE,BC1485,BC20A4,BC4486,BC4760,BC5451,BC72B1,BC765E,BC79AD,BC7ABF,BC851F,BCA58B,BCB1F3,BCD11F,BCE63F,C01173,C0174D,C048E6,C06599,C087EB,C08997,C0BDC8,C0D2DD,C0D3C0,C0DCDA,C44202,C45006,C4576E,C462EA,C4731E,C488E5,C493D9,C4AE12,C81479,C819F7,C83870,C87E75,C8A823,C8D7B0,CC051B,CC07AB,CC2119,CC464E,CC6EA4,CCB11A,CCF9E8,CCFE3C,D003DF,D0176A,D03169,D059E4,D0667B,D07FA0,D087E2,D0B128,D0C1B1,D0DFC7,D0FCCC,D411A3,D47AE2,D487D8,D48890,D48A39,D49DC0,D4AE05,D4E6B7,D4E8B2,D80831,D80B9A,D831CF,D85575,D857EF,D85B2A,D868C3,D890E8,D8C4E9,D8E0E1,DC44B6,DC6672,DC74A8,DC8983,DCCF96,DCDCE2,DCF756,E09971,E0AA96,E0CBEE,E0D083,E0DB10,E4121D,E432CB,E440E2,E458B8,E458E7,E45D75,E47CF9,E47DBD,E492FB,E4B021,E4E0C5,E4F3C4,E4F8EF,E4FAED,E8039A,E81132,E83A12,E84E84,E89309,E8B4C8,E8E5D6,EC107B,ECAA25,ECE09B,F008F1,F05A09,F05B7B,F06BCA,F0728C,F08A76,F0E77E,F0EE10,F40E22,F4428F,F47190,F47B5E,F47DEF,F49F54,F4C248,F4D9FB,F4FEFB,F83F51,F877B8,F884F2,F8D0BD,F8E61A,F8F1E6,FC039F,FC1910,FC4203,FC643A,FC8F90,FCA13E,FCA621,FCAAB6,FCC734,FCDE90,FCF136 o="Samsung Electronics Co.,Ltd"
+0000F0,0007AB,001247,0012FB,001377,001599,0015B9,001632,00166B-00166C,0016DB,0017C9,0017D5,0018AF,001A8A,001B98,001C43,001D25,001DF6,001E7D,001EE1-001EE2,001FCC-001FCD,00214C,0021D1-0021D2,002339-00233A,002399,0023D6-0023D7,002454,002490-002491,0024E9,002566-002567,00265D,00265F,006F64,0073E0,007C2D,008701,00B5D0,00BF61,00C3F4,00E3B2,00F46F,00FA21,04180F,041BBA,04B1A1,04B429,04BA8D,04BDBF,04FE31,0808C2,0821EF,08373D,083D88,087808,088C2C,08AED6,08BFA0,08D42B,08ECA9,08EE8B,08FC88,08FD0E,0C1420,0C2FB0,0C715D,0C8910,0CA8A7,0CB319,0CDFA4,0CE0DC,1007B6,101DC0,1029AB,103047,103917,103B59,1077B1,1089FB,108EE0,109266,10D38A,10D542,140152,141F78,1432D1,14568E,1489FD,1496E5,149F3C,14A364,14B484,14BB6E,14F42A,1816C9,1819D6,181EB0,182195,18227E,182666,183A2D,183F47,184617,184E16,184ECB,1854CF,1867B0,188331,18895B,18AB1D,18E2C2,1C232C,1C3ADE,1C5A3E,1C62B8,1C66AA,1CAF05,1CE61D,2013E0,202D07,20326C,205531,205EF7,206E9C,20D390,20D5BF,244B03,244B81,245AB5,2468B0,24920E,24C696,24DBED,24F5AA,24FCE5,2802D8,2827BF,28395E,288335,28987B,28BAB5,28CC01,2C4053,2C4401,2CAE2B,2CBABA,301966,306A85,3096FB,30C7AE,30CBF8,30CDA7,30D587,30D6C9,34145F,342D0D,343111,3482C5,348A7B,34AA8B,34BE00,34C3AC,380195,380A94,380B40,3816D1,382DD1,382DE8,386A77,389496,389AF6,38D40B,38ECE4,3C0518,3C20F6,3C576C,3C5A37,3C6200,3C8BFE,3CA10D,3CBBFD,3CDCBC,3CF7A4,40163B,40D3AE,444E1A,445CE9,446D6C,44783E,44F459,48137E,4827EA,4844F7,4849C7,485169,48794D,489DD1,48C796,4C3C16,4CA56D,4CBCA5,4CC95E,4CDD31,5001BB,503275,503DA1,5050A4,5056BF,507705,508569,5092B9,509EA7,50A4C8,50B7C3,50C8E5,50F0D3,50F520,50FC9F,54219D,5440AD,5492BE,549B12,54B802,54BD79,54F201,54FA3E,54FCF0,58B10F,58C38B,58C5CB,5C2E59,5C3C27,5C497D,5C5181,5C865C,5C9960,5CC1D7,5CCB99,5CE8EB,5CF6DC,60684E,606BBD,6077E2,608E08,608F5C,60A10A,60A4D0,60AF6D,60C5AD,60D0A9,641CAE,641CB0,646CB2,647791,647BCE,6489F1,64B310,64B853,64E7D8,680571,682737,684898,685ACF,687D6B,68BFC4,68E7C2,68EBAE,6C006B,6C2F2C,6C2F8A,6C8336,6CB7F4,6CDDBC,6CF373,701F3C,70288B,702AD5,705AAC,70CE8C,70F927,70FD46,74458A,749EF5,74EB80,78009E,781FDB,782327,7825AD,7840E4,7846D4,78471D,78521A,78595E,789ED0,78A873,78ABBB,78BDBC,78C3E9,78F7BE,7C0BC6,7C1C68,7C2302,7C2EDD,7C38AD,7C6456,7C787E,7C8956,7C8BB5,7C9122,7CF854,7CF90E,8018A7,8020FD,8031F0,804E70,804E81,805719,80656D,807B3E,8086D9,80CEB9,84119E,8425DB,842E27,8437D5,845181,8455A5,849866,84A466,84B541,84C0EF,88299C,887598,888322,889B39,889F6F,88A303,88ADD2,88BD45,8C1ABF,8C71F8,8C7712,8C79F5,8C83E1,8CBFA6,8CC8CD,8CE5C0,9000DB,900628,90633B,9097F3,90B144,90EEC7,90F1AA,9401C2,942DDC,94350A,945103,9463D1,9476B7,947BE7,948BC1,94B10A,94D771,98063C,981DFA,98398E,9852B1,9880EE,988389,98B8BC,9C0298,9C2A83,9C3AAF,9C65B0,9C8C6E,9CA513,9CD35B,9CE063,9CE6E7,A00798,A01081,A02195,A027B6,A06090,A07591,A0821F,A0AC69,A0B4A5,A0CBFD,A407B6,A4307A,A46CF1,A48431,A49A58,A4D990,A4EBD3,A80600,A816D0,A82BB9,A830BC,A8346A,A8515B,A87C01,A88195,A887B3,A89FBA,A8F274,AC3613,AC5A14,ACAFB9,ACC33A,ACEE9E,B047BF,B06FE0,B0C4E7,B0C559,B0D09C,B0DF3A,B0EC71,B41A1D,B43A28,B46293,B47443,B4BFF6,B4CE40,B4EF39,B857D8,B85A73,B85E7B,B86CE8,B8BBAF,B8BC5B,B8C68E,B8D9CE,BC1485,BC20A4,BC4486,BC4760,BC5451,BC72B1,BC765E,BC79AD,BC7ABF,BC7E8B,BC851F,BCA58B,BCB1F3,BCD11F,BCE63F,C01173,C0174D,C03D03,C048E6,C06599,C087EB,C08997,C0BDC8,C0D2DD,C0D3C0,C0DCDA,C44202,C45006,C4576E,C462EA,C4731E,C488E5,C493D9,C4AE12,C81479,C819F7,C83870,C87E75,C8A823,C8D7B0,CC051B,CC07AB,CC2119,CC464E,CC6EA4,CCB11A,CCF9E8,CCFE3C,D003DF,D0176A,D03169,D059E4,D0667B,D07FA0,D087E2,D0B128,D0C1B1,D0DFC7,D0FCCC,D411A3,D47AE2,D487D8,D48890,D48A39,D49DC0,D4AE05,D4E6B7,D4E8B2,D80831,D80B9A,D831CF,D85575,D857EF,D85B2A,D868C3,D890E8,D8C4E9,D8E0E1,DC44B6,DC6672,DC74A8,DC8983,DCCF96,DCDCE2,DCF756,E09971,E0AA96,E0CBEE,E0D083,E0DB10,E4121D,E432CB,E440E2,E458B8,E458E7,E45D75,E47CF9,E47DBD,E492FB,E4B021,E4E0C5,E4F3C4,E4F8EF,E4FAED,E8039A,E81132,E83A12,E84E84,E86DCB,E89309,E8B4C8,E8E5D6,EC107B,ECAA25,ECE09B,F008F1,F05A09,F05B7B,F06BCA,F0728C,F08A76,F0E77E,F0EE10,F40E22,F4428F,F47190,F47B5E,F47DEF,F49F54,F4C248,F4D9FB,F4FEFB,F83F51,F877B8,F884F2,F8D0BD,F8E61A,F8F1E6,FC039F,FC1910,FC4203,FC643A,FC8F90,FCA13E,FCA621,FCAAB6,FCC734,FCDE90,FCF136 o="Samsung Electronics Co.,Ltd"
0000F1 o="MAGNA COMPUTER CORPORATION"
0000F2 o="SPIDER COMMUNICATIONS"
0000F3 o="GANDALF DATA LIMITED"
@@ -287,7 +287,7 @@
00012D o="Komodo Technology"
00012E o="PC Partner Ltd."
00012F o="Twinhead International Corp"
-000130,000496,00E02B,209EF7,489BD5,5C0E8B,7467F7,887E25,949B2C,A4EA8E,B42D56,B4C799,B85001,D88466,DCB808,F46E95,FC0A81 o="Extreme Networks, Inc."
+000130,000496,001977,00E02B,08EA44,206C8A,209EF7,348584,4018B1,40882F,489BD5,5859C2,5C0E8B,7467F7,787D53,7C95B1,885BDD,887E25,90B832,949B2C,9C5D12,A4EA8E,B42D56,B4C799,B85001,B87CF2,BCF310,C413E2,C8665D,C8675E,D854A2,D88466,DCB808,E01C41,F09CE9,F46E95,F4EAB5,FC0A81 o="Extreme Networks, Inc."
000131 o="Bosch Security Systems, Inc."
000132 o="Dranetz - BMI"
000133 o="KYOWA Electronic Instruments C"
@@ -444,7 +444,7 @@
0001D4 o="Leisure Time, Inc."
0001D5 o="HAEDONG INFO & COMM CO., LTD"
0001D6 o="manroland AG"
-0001D7,000A49,0023E9,0094A1,F41563 o="F5 Networks, Inc."
+0001D7,000A49,0023E9,0094A1,14A9D0,F41563 o="F5 Networks, Inc."
0001D8 o="Teltronics, Inc."
0001D9 o="Sigma, Inc."
0001DA o="WINCOMM Corporation"
@@ -560,7 +560,7 @@
00024F o="IPM Datacom S.R.L."
000250 o="Geyser Networks, Inc."
000251 o="Soma Networks, Inc."
-000252 o="Carrier Corporation"
+000252,346D9C o="Carrier Corporation"
000253 o="Televideo, Inc."
000254 o="WorldGate"
000255,0004AC,000629,00096B,000D60,001125,00145E,0017EF,0018B1,001A64,002035,00215E,002200,002503,005076,006094,08005A,0817F4,10005A,5CF3FC,E41F13,FCCF62 o="IBM Corp"
@@ -650,7 +650,7 @@
0002B0 o="Hokubu Communication & Industrial Co., Ltd."
0002B1 o="Anritsu, Ltd."
0002B2 o="Cablevision"
-0002B3,000347,000423,0007E9,000CF1,000E0C,000E35,001111,001175,00207B,0050F1,009027,00A0C9,00AA00-00AA02,00D0B7 o="Intel Corporation"
+0002B3,000347,000423,0007E9,000CF1,000E0C,000E35,001111,001175,00207B,009027,00A0C9,00AA00-00AA02,00D0B7 o="Intel Corporation"
0002B4 o="DAPHNE"
0002B5 o="Avnet, Inc."
0002B6 o="Acrosser Technology Co., Ltd."
@@ -665,12 +665,12 @@
0002C1 o="Innovative Electronic Designs, Inc."
0002C2 o="Net Vision Telecom"
0002C3 o="Arelnet Ltd."
-0002C4 o="Vector International BVBA"
+0002C4 o="OPT Machine Vision Tech Co., Ltd"
0002C5 o="Evertz Microsystems Ltd."
0002C6 o="Data Track Technology PLC"
0002C7,0006F5,0006F7,000704,0016FE,0019C1,001BFB,001E3D,00214F,002306,002433,002643,04766E,0498F3,28A183,30C3D9,34C731,38C096,48F07B,5816D7,60380E,64D4BD,7495EC,9C8D7C,AC7A4D,B4EC02,BC428C,BC7536,E0750A,E0AE5E,FC62B9 o="ALPS ELECTRIC CO., LTD."
0002C8 o="Technocom Communications Technology (pte) Ltd"
-0002C9,00258B,043F72,08C0EB,0C42A1,1C34DA,248A07,506B4B,7CFE90,98039B,B8599F,B8CEF6,E41D2D,EC0D9A,F45214 o="Mellanox Technologies, Inc."
+0002C9,00258B,043F72,08C0EB,0C42A1,1070FD,1C34DA,248A07,506B4B,7CFE90,900A84,98039B,B8599F,B8CEF6,E41D2D,EC0D9A,F45214 o="Mellanox Technologies, Inc."
0002CA o="EndPoints, Inc."
0002CB o="TriState Ltd."
0002CC o="M.C.C.I"
@@ -836,7 +836,7 @@
000375 o="NetMedia, Inc."
000376 o="Graphtec Technology, Inc."
000377 o="Gigabit Wireless"
-000378,044F17,08EB74,0C08B4,2832C5,2C088C,3438B7,38F85E,403DEC,4CD08A,6CB56B,8C444F,90F305,940937,942CB3,A0722C,B0B3AD,C85D38,CC4EEC,DCD321,E820E2,E8B2FE o="HUMAX Co., Ltd."
+000378,044F17,08EB74,0C08B4,2832C5,2C088C,3438B7,38F85E,403DEC,4CD08A,6CB56B,840283,8C444F,90F305,940937,942CB3,A0722C,B0B3AD,C85D38,CC4EEC,CCAB2C,DCD321,E820E2,E8B2FE,ECC302 o="HUMAX Co., Ltd."
000379 o="Proscend Communications, Inc."
00037A,002258 o="Taiyo Yuden Co., Ltd."
00037B o="IDEC IZUMI Corporation"
@@ -863,7 +863,7 @@
000390 o="Digital Video Communications, Inc."
000391 o="Advanced Digital Broadcast, Ltd."
000392 o="Hyundai Teletek Co., Ltd."
-000393,000502,000A27,000A95,000D93,0010FA,001124,001451,0016CB,0017F2,0019E3,001B63,001CB3,001D4F,001E52,001EC2,001F5B,001FF3,0021E9,002241,002312,002332,00236C,0023DF,002436,002500,00254B,0025BC,002608,00264A,0026B0,0026BB,003065,003EE1,0050E4,0056CD,005B94,006171,006D52,008865,00A040,00B362,00C610,00CDFE,00DB70,00F4B9,00F76F,040CCE,041552,041E64,042665,04489A,044BED,0452F3,045453,0469F8,047295,04D3CF,04DB56,04E536,04F13E,04F7E4,080007,082CB6,086698,086D41,087045,087402,08E689,08F4AB,08F69C,08F8BC,0C1539,0C3021,0C3E9F,0C4DE9,0C5101,0C74C2,0C771A,0CBC9F,0CD746,101C0C,102959,103025,1040F3,10417F,1093E9,1094BB,109ADD,10DDB1,14109F,14205E,145A05,1460CB,14876A,148FC6,1495CE,1499E2,149D99,14BD61,14C213,14D00D,182032,183451,1855E3,186590,187EB9,18810E,189EFC,18AF61,18AF8F,18E7F4,18EE69,18F1D8,18F643,1C1AC0,1C36BB,1C5CF2,1C9148,1C9E46,1CABA7,1CE62B,203CAE,20768F,2078F0,207D74,209BCD,20A2E4,20AB37,20C9D0,20E874,20EE28,241B7A,241EEB,24240E,245BA7,24A074,24A2E1,24AB81,24D0DF,24E314,24F094,24F677,280B5C,283737,285AEB,286AB8,286ABA,2877F1,28A02B,28CFDA,28CFE9,28E02C,28E14C,28E7CF,28ED6A,28F033,28F076,28FF3C,2C1F23,2C200B,2C3361,2C61F6,2CB43A,2CBE08,2CF0A2,2CF0EE,3010E4,3035AD,305714,30636B,309048,3090AB,30D9D9,30F7C5,3408BC,341298,34159E,34363B,344262,3451C9,347C25,34A395,34A8EB,34AB37,34C059,34E2FD,380F4A,38484C,38539C,3866F0,3871DE,38892C,38B54D,38C986,38CADA,38EC0D,38F9D3,3C0754,3C15C2,3C22FB,3C2EF9,3C2EFF,3C7D0A,3CAB8E,3CBF60,3CCD36,3CD0F8,3CE072,402619,403004,40331A,403CFC,404D7F,406C8F,4070F5,40831D,4098AD,409C28,40A6D9,40B395,40BC60,40CBC0,40D32D,440010,4418FD,442A60,444ADB,444C0C,44C65D,44D884,44E66E,44FB42,483B38,48437C,484BAA,4860BC,48746E,48A195,48A91C,48B8A3,48BF6B,48D705,48E9F1,4C3275,4C569D,4C57CA,4C6BE8,4C74BF,4C7C5F,4C8D79,4CB199,503237,507A55,507AC5,5082D5,50A67F,50BC96,50DE06,50EAD6,542696,542B8D,5433CB,544E90,5462E2,54724F,549963,549F13,54AE27,54E43A,54EAA8,581FAA,58404E,5855CA,586B14,587F57,58B035,58E28F,58E6BA,5C0947,5C1DD9,5C5948,5C8D4E,5C95AE,5C969D,5C97F3,5CADCF,5CF5DA,5CF7E6,5CF938,600308,6030D4,60334B,606944,6070C0,608373,608B0E,608C4A,609217,609AC1,60A37D,60C547,60D9C7,60F445,60F81D,60FACD,60FB42,60FEC5,64200C,645AED,647033,6476BA,649ABE,64A3CB,64A5C3,64B0A6,64B9E8,64C753,64E682,680927,685B35,68644B,68967B,689C70,68A86D,68AB1E,68AE20,68D93C,68DBCA,68EF43,68FB7E,68FEF7,6C19C0,6C3E6D,6C4008,6C4A85,6C4D73,6C709F,6C72E7,6C8DC1,6C94F8,6C96CF,6CAB31,6CC26B,6CE85C,701124,7014A6,703C69,703EAC,70480F,705681,70700D,7073CB,7081EB,70A2B3,70CD60,70DEE2,70E72C,70EA5A,70ECE4,70EF00,70F087,741BB2,74428B,748114,748D08,749EAF,74B587,74E1B6,74E2F5,7831C1,783A84,784F43,7867D7,786C1C,787B8A,787E61,78886D,789F70,78A3E4,78CA39,78D162,78D75F,78FD94,7C0191,7C04D0,7C11BE,7C5049,7C6D62,7C6DF8,7C9A1D,7CA1AE,7CAB60,7CC3A1,7CC537,7CD1C3,7CF05F,7CFADF,80006E,800C67,804971,804A14,808223,80929F,80B03D,80BE05,80D605,80E650,80EA96,80ED2C,842999,843835,844167,846878,84788B,848506,8489AD,848E0C,84A134,84AB1A,84AD8D,84B153,84FCAC,84FCFE,881908,881FA1,885395,8863DF,886440,8866A5,886B6E,88A479,88A9B7,88AE07,88B291,88C663,88CB87,88E87F,88E9FE,8C006D,8C2937,8C2DAA,8C5877,8C7B9D,8C7C92,8C8590,8C861E,8C8EF2,8C8FE9,8CFABA,8CFE57,9027E4,903C92,9060F1,907240,90812A,90840D,908C43,908D6C,909C4A,90A25B,90B0ED,90B21F,90B931,90C1C6,90DD5D,90E17B,90FD61,940C98,941625,949426,94B01F,94BF2D,94E96A,94F6A3,94F6D6,9800C6,9801A7,9803D8,9810E8,98460A,985AEB,989E63,98B8E3,98CA33,98D6BB,98E0D9,98F0AB,98FE94,9C04EB,9C207B,9C293F,9C35EB,9C4FDA,9C648B,9C84BF,9C8BA0,9CE33F,9CE65E,9CF387,9CF48E,9CFC01,A01828,A03BE3,A04EA7,A056F3,A0999B,A0D795,A0EDCD,A43135,A45E60,A46706,A483E7,A4B197,A4B805,A4C361,A4D18C,A4D1D2,A4D931,A4E975,A4F1E8,A82066,A85B78,A85C2C,A860B6,A8667F,A886DD,A88808,A88E24,A8968A,A8BBCF,A8BE27,A8FAD8,AC15F4,AC1F74,AC293A,AC3C0B,AC61EA,AC7F3E,AC87A3,AC88FD,AC9085,ACBC32,ACCF5C,ACE4B5,ACFDEC,B019C6,B03495,B035B5,B0481A,B065BD,B0702D,B09FBA,B0CA68,B418D1,B440A4,B44BD2,B48B19,B49CDF,B4F0AB,B4F61C,B8098A,B817C2,B841A4,B844D9,B853AC,B85D0A,B8634D,B8782E,B87BC5,B88D12,B89047,B8B2F8,B8C111,B8C75D,B8E856,B8F12A,B8F6B1,B8FF61,BC0963,BC3BAF,BC4CC4,BC52B7,BC5436,BC6778,BC6C21,BC926B,BC9FEF,BCA920,BCB863,BCE143,BCEC5D,BCFED9,C01ADA,C06394,C0847A,C09AD0,C09F42,C0A53E,C0A600,C0B658,C0CCF8,C0CECD,C0D012,C0E862,C0F2FB,C42AD0,C42C03,C4618B,C48466,C49880,C4B301,C81EE7,C82A14,C8334B,C83C85,C869CD,C86F1D,C88550,C8B1CD,C8B5B7,C8BCC8,C8D083,C8E0EB,C8F650,CC088D,CC08E0,CC20E8,CC25EF,CC29F5,CC2DB7,CC4463,CC660A,CC785F,CCC760,CCD281,D0034B,D023DB,D02598,D02B20,D03311,D03FAA,D04F7E,D06544,D0817A,D0A637,D0C5F3,D0D2B0,D0E140,D446E1,D4619D,D461DA,D4909C,D49A20,D4A33D,D4DCCD,D4F46F,D8004D,D81C79,D81D72,D83062,D84C90,D88F76,D89695,D89E3F,D8A25E,D8BB2C,D8CF9C,D8D1CB,DC080F,DC0C5C,DC2B2A,DC2B61,DC3714,DC415F,DC56E7,DC86D8,DC9B9C,DCA4CA,DCA904,DCD3A2,E0338E,E05F45,E06678,E0897E,E0ACCB,E0B52D,E0B55F,E0B9BA,E0C767,E0C97A,E0EB40,E0F5C6,E0F847,E425E7,E42B34,E450EB,E47684,E48B7F,E490FD,E498D6,E49A79,E49ADC,E4B2FB,E4C63D,E4CE8F,E4E0A6,E4E4AB,E8040B,E80688,E83617,E8802E,E88D28,E8B2AC,E8FBE9,EC2CE2,EC3586,EC852F,ECADB8,ECCED7,F01898,F02475,F05CD5,F0766F,F07807,F07960,F0989D,F099B6,F099BF,F0A35A,F0B0E7,F0B479,F0C1F1,F0C371,F0CBA1,F0D1A9,F0DBE2,F0DBF8,F0DCE2,F0F61C,F40616,F40E01,F40F24,F41BA1,F431C3,F437B7,F45C89,F4AFE7,F4DBE3,F4F15A,F4F951,F80377,F81EDF,F82793,F82D7C,F83880,F84E73,F86214,F86FC1,F887F1,F895EA,F8E94E,F8FFC2,FC183C,FC1D43,FC253F,FC2A9C,FCB6D8,FCD848,FCE998,FCFC48 o="Apple, Inc."
+000393,000502,000A27,000A95,000D93,0010FA,001124,001451,0016CB,0017F2,0019E3,001B63,001CB3,001D4F,001E52,001EC2,001F5B,001FF3,0021E9,002241,002312,002332,00236C,0023DF,002436,002500,00254B,0025BC,002608,00264A,0026B0,0026BB,003065,003EE1,0050E4,0056CD,005B94,006171,006D52,007D60,008865,00A040,00B362,00C610,00CDFE,00DB70,00F4B9,00F76F,040CCE,041552,041E64,042665,04489A,044BED,0452F3,045453,0469F8,047295,04D3CF,04DB56,04E536,04F13E,04F7E4,080007,082CB6,086698,086D41,087045,087402,08E689,08F4AB,08F69C,08F8BC,0C1539,0C3021,0C3B50,0C3E9F,0C4DE9,0C5101,0C74C2,0C771A,0CBC9F,0CD746,101C0C,102959,103025,1040F3,10417F,1093E9,1094BB,109ADD,10DDB1,14109F,14205E,145A05,1460CB,147DDA,14876A,148FC6,1495CE,1499E2,149D99,14BD61,14C213,14C88B,14D00D,182032,183451,183EEF,1855E3,186590,187EB9,18810E,189EFC,18AF61,18AF8F,18E7F4,18EE69,18F1D8,18F643,1C1AC0,1C36BB,1C5CF2,1C9148,1C9E46,1CABA7,1CE62B,203CAE,206980,20768F,2078F0,207D74,209BCD,20A2E4,20AB37,20C9D0,20E2A8,20E874,20EE28,241B7A,241EEB,24240E,245BA7,24A074,24A2E1,24AB81,24D0DF,24E314,24F094,24F677,280B5C,283737,285AEB,286AB8,286ABA,2877F1,28A02B,28CFDA,28CFE9,28E02C,28E14C,28E7CF,28EC95,28ED6A,28F033,28F076,28FF3C,2C1F23,2C200B,2C3361,2C61F6,2CB43A,2CBE08,2CF0A2,2CF0EE,3010E4,3035AD,305714,30636B,309048,3090AB,30D9D9,30F7C5,3408BC,341298,34159E,34363B,344262,3451C9,347C25,34A395,34A8EB,34AB37,34C059,34E2FD,34FD6A,380F4A,38484C,38539C,3866F0,3871DE,38892C,38B54D,38C986,38CADA,38EC0D,38F9D3,3C0754,3C15C2,3C22FB,3C2EF9,3C2EFF,3C4DBE,3C7D0A,3CAB8E,3CBF60,3CCD36,3CD0F8,3CE072,402619,403004,40331A,403CFC,404D7F,406C8F,4070F5,40831D,4098AD,409C28,40A6D9,40B395,40BC60,40CBC0,40D32D,40F946,440010,4418FD,442A60,443583,444ADB,444C0C,4490BB,44A8FC,44C65D,44D884,44E66E,44FB42,48262C,483B38,48437C,484BAA,4860BC,48746E,48A195,48A91C,48B8A3,48BF6B,48D705,48E9F1,4C3275,4C569D,4C57CA,4C6BE8,4C74BF,4C7C5F,4C7CD9,4C8D79,4CB199,503237,507A55,507AC5,5082D5,50A67F,50BC96,50DE06,50EAD6,542696,542B8D,5433CB,544E90,5462E2,54724F,549963,549F13,54AE27,54E43A,54EAA8,581FAA,58404E,5855CA,586B14,587F57,58B035,58E28F,58E6BA,5C0947,5C1DD9,5C5948,5C8D4E,5C95AE,5C969D,5C97F3,5CADCF,5CF5DA,5CF7E6,5CF938,600308,6030D4,60334B,606944,6070C0,607EC9,608373,608B0E,608C4A,609217,609AC1,60A37D,60C547,60D9C7,60F445,60F81D,60FACD,60FB42,60FEC5,640BD7,64200C,645AED,647033,6476BA,649ABE,64A3CB,64A5C3,64B0A6,64B9E8,64C753,64D2C4,64E682,680927,685B35,68644B,68967B,689C70,68A86D,68AB1E,68AE20,68D93C,68DBCA,68EF43,68FB7E,68FEF7,6C19C0,6C3E6D,6C4008,6C4A85,6C4D73,6C709F,6C72E7,6C8DC1,6C94F8,6C96CF,6CAB31,6CC26B,6CE85C,701124,7014A6,703C69,703EAC,70480F,705681,70700D,7073CB,7081EB,70A2B3,70CD60,70DEE2,70E72C,70EA5A,70ECE4,70EF00,70F087,741BB2,74428B,748114,748D08,748F3C,749EAF,74B587,74E1B6,74E2F5,7831C1,783A84,784F43,7867D7,786C1C,787B8A,787E61,78886D,789F70,78A3E4,78CA39,78D162,78D75F,78E3DE,78FD94,7C0191,7C04D0,7C11BE,7C5049,7C6D62,7C6DF8,7C9A1D,7CA1AE,7CAB60,7CC3A1,7CC537,7CD1C3,7CF05F,7CFADF,80006E,800C67,804971,804A14,805FC5,808223,80929F,80B03D,80BE05,80D605,80E650,80EA96,80ED2C,842999,843835,844167,846878,84788B,848506,8489AD,848E0C,84A134,84AB1A,84AD8D,84B153,84FCAC,84FCFE,881908,881FA1,885395,8863DF,886440,8866A5,886B6E,88A479,88A9B7,88AE07,88B291,88C08B,88C663,88CB87,88E87F,88E9FE,8C006D,8C2937,8C2DAA,8C5877,8C7B9D,8C7C92,8C8590,8C861E,8C8EF2,8C8FE9,8CFABA,8CFE57,9027E4,903C92,9060F1,907240,90812A,908158,90840D,908C43,908D6C,909C4A,90A25B,90B0ED,90B21F,90B931,90C1C6,90DD5D,90E17B,90FD61,940C98,941625,949426,94B01F,94BF2D,94E96A,94F6A3,94F6D6,9800C6,9801A7,9803D8,9810E8,98460A,985AEB,9860CA,989E63,98B8E3,98CA33,98D6BB,98E0D9,98F0AB,98FE94,9C04EB,9C207B,9C293F,9C35EB,9C4FDA,9C648B,9C84BF,9C8BA0,9CE33F,9CE65E,9CF387,9CF48E,9CFC01,A01828,A03BE3,A04EA7,A056F3,A0999B,A0D795,A0EDCD,A0FBC5,A43135,A45E60,A46706,A483E7,A4B197,A4B805,A4C361,A4D18C,A4D1D2,A4D931,A4E975,A4F1E8,A82066,A85B78,A85C2C,A860B6,A8667F,A886DD,A88808,A88E24,A8913D,A8968A,A8BBCF,A8BE27,A8FAD8,AC15F4,AC1D06,AC1F74,AC293A,AC3C0B,AC61EA,AC7F3E,AC87A3,AC88FD,AC9085,ACBC32,ACCF5C,ACE4B5,ACFDEC,B019C6,B03495,B035B5,B0481A,B065BD,B0702D,B09FBA,B0CA68,B418D1,B440A4,B44BD2,B48B19,B49CDF,B4F0AB,B4F61C,B8098A,B817C2,B841A4,B844D9,B853AC,B85D0A,B8634D,B8782E,B87BC5,B88D12,B89047,B8B2F8,B8C111,B8C75D,B8E856,B8F12A,B8F6B1,B8FF61,BC0963,BC3BAF,BC4CC4,BC52B7,BC5436,BC6778,BC6C21,BC926B,BC9FEF,BCA5A9,BCA920,BCB863,BCE143,BCEC5D,BCFED9,C01ADA,C06394,C0847A,C09AD0,C09F42,C0A53E,C0A600,C0B658,C0CCF8,C0CECD,C0D012,C0E862,C0F2FB,C42AD0,C42C03,C4618B,C48466,C4910C,C49880,C4B301,C81EE7,C82A14,C8334B,C83C85,C869CD,C86F1D,C88550,C8B1CD,C8B5B7,C8BCC8,C8D083,C8E0EB,C8F650,CC088D,CC08E0,CC20E8,CC25EF,CC29F5,CC2DB7,CC4463,CC660A,CC785F,CCC760,CCD281,D0034B,D023DB,D02598,D02B20,D03311,D03FAA,D04F7E,D06544,D0817A,D0A637,D0C5F3,D0D23C,D0D2B0,D0E140,D446E1,D4619D,D461DA,D4909C,D49A20,D4A33D,D4DCCD,D4F46F,D8004D,D81C79,D81D72,D83062,D84C90,D88F76,D89695,D89E3F,D8A25E,D8BB2C,D8CF9C,D8D1CB,D8DC40,DC080F,DC0C5C,DC2B2A,DC2B61,DC3714,DC415F,DC5285,DC56E7,DC86D8,DC9B9C,DCA4CA,DCA904,DCD3A2,E02B96,E0338E,E05F45,E06678,E0897E,E0ACCB,E0B52D,E0B55F,E0B9BA,E0C767,E0C97A,E0EB40,E0F5C6,E0F847,E425E7,E42B34,E450EB,E47684,E48B7F,E490FD,E498D6,E49A79,E49ADC,E4B2FB,E4C63D,E4CE8F,E4E0A6,E4E4AB,E8040B,E80688,E83617,E87F95,E8802E,E88152,E8854B,E88D28,E8B2AC,E8FBE9,EC2651,EC2CE2,EC3586,EC852F,ECADB8,ECCED7,F01898,F02475,F05CD5,F0766F,F07807,F07960,F0989D,F099B6,F099BF,F0A35A,F0B0E7,F0B479,F0C1F1,F0C371,F0CBA1,F0D1A9,F0DBE2,F0DBF8,F0DCE2,F0F61C,F40616,F40E01,F40F24,F41BA1,F431C3,F437B7,F45C89,F4AFE7,F4DBE3,F4F15A,F4F951,F80377,F81093,F81EDF,F82793,F82D7C,F83880,F84E73,F86214,F86FC1,F887F1,F895EA,F8E94E,F8FFC2,FC183C,FC1D43,FC253F,FC2A9C,FC66CF,FCB6D8,FCD848,FCE998,FCFC48 o="Apple, Inc."
000394 o="Connect One"
000395 o="California Amplifier"
000396 o="EZ Cast Co., Ltd."
@@ -942,7 +942,7 @@
0003E5 o="Hermstedt SG"
0003E6 o="Entone, Inc."
0003E7 o="Logostek Co. Ltd."
-0003E8 o="Wavelength Digital Limited"
+0003E8 o="Wavesight Limited"
0003E9 o="Akara Canada, Inc."
0003EA o="Mega System Technologies, Inc."
0003EB o="Atrica"
@@ -963,7 +963,7 @@
0003FA o="TiMetra Networks"
0003FB o="ENEGATE Co.,Ltd."
0003FC o="Intertex Data AB"
-0003FF,00125A,00155D,0017FA,001DD8,002248,0025AE,0C413E,0CE725,102F6B,149A10,1C1ADF,206274,20A99B,2816A8,281878,2C2997,2C5491,3C8375,485073,4886E8,5CBA37,6C5D3A,70BC10,74E28C,80C5E6,845733,8463D6,949AA9,985FD3,987A14,9C6C15,9CAA1B,B831B5,B84FD5,BC8385,C49DED,C83F26,D0929E,D48F33,DC9840,EC59E7,EC8350,F01DBC,F06E0B o="Microsoft Corporation"
+0003FF,00125A,00155D,0017FA,001DD8,002248,0025AE,0C413E,0CE725,102F6B,149A10,1C1ADF,206274,20A99B,2816A8,281878,2C2997,2C5491,3C8375,441622,485073,4886E8,5CBA37,6C5D3A,70BC10,74E28C,80C5E6,845733,8463D6,949AA9,985FD3,987A14,9C6C15,9CAA1B,A085FC,B831B5,B84FD5,BC8385,C49DED,C83F26,D0929E,D48F33,DC9840,EC59E7,EC8350,F01DBC,F06E0B o="Microsoft Corporation"
000400,002000,0021B7,788C77 o="LEXMARK INTERNATIONAL, INC."
000401 o="Osaki Electric Co., Ltd."
000402 o="Nexsan Technologies, Ltd."
@@ -1044,7 +1044,7 @@
000453 o="YottaYotta, Inc."
000454 o="Quadriga UK"
000455 o="ANTARA.net"
-000456,58C17A,BCE67C o="Cambium Networks Limited"
+000456,58C17A,BCA993,BCE67C o="Cambium Networks Limited"
000457 o="Universal Access Technology, Inc."
000458 o="Fusion X Co., Ltd."
000459 o="Veristar Corporation"
@@ -1113,7 +1113,7 @@
0004A0 o="Verity Instruments, Inc."
0004A1 o="Pathway Connectivity"
0004A2 o="L.S.I. Japan Co., Ltd."
-0004A3,001EC0,049162,5410EC,682719,801F12,D88039 o="Microchip Technology Inc."
+0004A3,001EC0,049162,5410EC,682719,801F12,D88039,E8EB1B o="Microchip Technology Inc."
0004A4 o="NetEnabled, Inc."
0004A5,000D0A o="Barco Projection Systems NV"
0004A6 o="SAF Tehnika Ltd."
@@ -1266,7 +1266,7 @@
00054C o="RF Innovations Pty Ltd"
00054D o="Brans Technologies, Inc."
00054E,E8C1D7 o="Philips"
-00054F,104E89,10C6FC,148F21,F09919 o="Garmin International"
+00054F,104E89,10C6FC,148F21,B4C26A,F09919 o="Garmin International"
000550 o="Vcomms Connect Limited"
000551 o="F & S Elektronik Systeme GmbH"
000552 o="Xycotec Computer GmbH"
@@ -1314,7 +1314,7 @@
000582 o="ClearCube Technology"
000583 o="ImageCom Limited"
000584 o="AbsoluteValue Systems, Inc."
-000585,0010DB,00121E,0014F6,0017CB,0019E2,001BC0,001DB5,001F12,002159,002283,00239C,0024DC,002688,003146,009069,045C6C,0881F4,08B258,0C8126,0C8610,100E7E,1039E9,182AD3,1C9C8C,201BC9,204E71,20D80B,288A1C,28A24B,28C0DA,2C2131,2C2172,2C6BF5,307C5E,30B64F,384F49,3C6104,3C8AB0,3C8C93,3C94D5,407183,40A677,40B4F0,40DEAD,44AA50,44ECCE,44F477,4C16FC,4C9614,50C58D,541E56,544B8C,54E032,5800BB,5C4527,5C5EAB,64649B,648788,64C3D6,7819F7,784F9B,78507C,78FE3D,7C2586,7CE2CA,80711F,807FF8,80ACAC,841888,84B59C,84C1C1,88A25E,88D98F,88E0F3,88E64B,94F7AD,9C8ACB,9CCC83,A8D0E5,AC4BC8,B033A6,B0A86E,B0C69A,B8C253,C00380,C042D0,C0BFA7,C8E7F0,CCE17F,CCE194,D007CA,D0DD49,D404FF,D818D3,D8B122,DC38E1,E45D37,E4FC82,E8B6C2,EC13DB,EC3873,EC3EF7,F01C2D,F04B3A,F07CC7,F4A739,F4B52F,F4CC55,F8C001,FC3342 o="Juniper Networks"
+000585,0010DB,00121E,0014F6,0017CB,0019E2,001BC0,001DB5,001F12,002159,002283,00239C,0024DC,002688,003146,009069,045C6C,0881F4,08B258,0C599C,0C8126,0C8610,100E7E,1039E9,182AD3,1C9C8C,201BC9,204E71,20D80B,288A1C,28A24B,28C0DA,2C2131,2C2172,2C6BF5,307C5E,30B64F,384F49,3C6104,3C8AB0,3C8C93,3C94D5,407183,40A677,40B4F0,40DEAD,44AA50,44ECCE,44F477,4C16FC,4C9614,50C58D,50C709,541E56,544B8C,54E032,5800BB,5C4527,5C5EAB,64649B,648788,64C3D6,7819F7,784F9B,78507C,78FE3D,7C2586,7CE2CA,80711F,807FF8,80ACAC,840328,841888,84B59C,84C1C1,88A25E,88D98F,88E0F3,88E64B,94BF94,94F7AD,9C8ACB,9CCC83,A8D0E5,AC4BC8,B033A6,B0A86E,B0C69A,B8C253,C00380,C042D0,C0BFA7,C8E7F0,C8FE6A,CCE17F,CCE194,D007CA,D0DD49,D404FF,D818D3,D8B122,DC38E1,E45D37,E4FC82,E8A245,E8B6C2,EC13DB,EC3873,EC3EF7,F01C2D,F04B3A,F07CC7,F4A739,F4B52F,F4BFA8,F4CC55,F8C001,FC3342 o="Juniper Networks"
000586 o="Lucent Technologies"
000587 o="Locus, Incorporated"
000588 o="Sensoria Corp."
@@ -1380,7 +1380,7 @@
0005C6 o="Triz Communications"
0005C7 o="I/F-COM A/S"
0005C8 o="VERYTECH"
-0005C9 o="LG Innotek Co., Ltd."
+0005C9,001EB2,0051ED,044EAF,1C08C1,203DBD,2C2BF9,30A9DE,402F86,44CB8B,60AB14,7440BE,7C1C4E,944444,A06FAA,ACF108,B4E62A,C4366C,C80210,CC8826,E8F2E2 o="LG Innotek"
0005CA o="Hitron Technology, Inc."
0005CB o="ROIS Technologies, Inc."
0005CC o="Sumtel Communications, Inc."
@@ -1477,7 +1477,7 @@
00062E o="Aristos Logic Corp."
00062F o="Pivotech Systems Inc."
000630 o="Adtranz Sweden"
-000631,44657F,487746,CCBE59,EC4F82 o="Calix Inc."
+000631,44657F,487746,CCBE59,D0768F,EC4F82 o="Calix Inc."
000632 o="Mesco Engineering GmbH"
000633 o="Cross Match Technologies GmbH"
000634 o="GTE Airfone Inc."
@@ -1517,7 +1517,7 @@
000658 o="Helmut Fischer GmbH Institut für Elektronik und Messtechnik"
000659 o="EAL (Apeldoorn) B.V."
00065A o="Strix Systems"
-00065B,000874,000BDB,000D56,000F1F,001143,00123F,001372,001422,0015C5,00188B,0019B9,001AA0,001C23,001D09,001E4F,001EC9,002170,00219B,002219,0023AE,0024E8,002564,0026B9,004E01,00B0D0,00C04F,0C29EF,106530,107D1A,109836,141877,149ECF,14B31F,14FEB5,180373,185A58,1866DA,18A99B,18DBF2,18FB7B,1C4024,1C721D,20040F,204747,246E96,24B6FD,28F10E,2CEA7F,3417EB,3448ED,34E6D7,3C2C30,405CFD,44A842,484D7E,4C7625,4CD98F,509A4C,544810,549F35,54BF64,588A5A,5C260A,5CF9DD,64006A,684F64,6C2B59,74867A,74E6E2,782BCB,7845C4,78AC44,801844,842B2B,847BEB,848F69,886FD4,8C04BA,8CEC4B,90B11C,9840BB,989096,98E743,A41F72,A44CC8,A4BADB,A4BB6D,A89969,B083FE,B4E10F,B82A72,B88584,B8AC6F,B8CA3A,BC305B,C81F66,C8F750,CCC5E5,D0431E,D067E5,D09466,D481D7,D4AE52,D4BED9,D89EF3,D8D090,DCF401,E0D848,E0DB55,E4434B,E454E8,E4B97A,E4F004,ECF4BB,F01FAF,F04DA2,F0D4E2,F40270,F48E38,F8B156,F8BC12,F8CAB8,F8DB88 o="Dell Inc."
+00065B,000874,000BDB,000D56,000F1F,001143,00123F,001372,001422,0015C5,00188B,0019B9,001AA0,001C23,001D09,001E4F,001EC9,002170,00219B,002219,0023AE,0024E8,002564,0026B9,004E01,00B0D0,00C04F,0C29EF,106530,107D1A,109836,141877,149ECF,14B31F,14FEB5,180373,185A58,1866DA,18A99B,18DBF2,18FB7B,1C4024,1C721D,20040F,204747,246E96,247152,24B6FD,28F10E,2CEA7F,3417EB,3448ED,34E6D7,3C2C30,405CFD,44A842,484D7E,4C7625,4CD98F,509A4C,544810,549F35,54BF64,588A5A,5C260A,5CF9DD,64006A,684F64,6C2B59,70B5E8,74867A,74E6E2,782BCB,7845C4,78AC44,801844,842B2B,847BEB,848F69,886FD4,8C04BA,8C47BE,8CEC4B,90B11C,9840BB,989096,98E743,A41F72,A44CC8,A4BADB,A4BB6D,A89969,B083FE,B4E10F,B82A72,B88584,B8AC6F,B8CA3A,B8CB29,BC305B,C03EBA,C81F66,C8F750,CC483A,CCC5E5,D0431E,D067E5,D09466,D481D7,D4AE52,D4BED9,D89EF3,D8D090,DCF401,E0D848,E0DB55,E4434B,E454E8,E4B97A,E4F004,ECF4BB,F01FAF,F04DA2,F0D4E2,F40270,F48E38,F8B156,F8BC12,F8CAB8,F8DB88 o="Dell Inc."
00065C o="Malachite Technologies, Inc."
00065D o="Heidelberg Web Systems"
00065E o="Photuris, Inc."
@@ -1731,7 +1731,7 @@
00073D o="Nanjing Postel Telecommunications Co., Ltd."
00073E o="China Great-Wall Computer Shenzhen Co., Ltd."
00073F o="Woojyun Systec Co., Ltd."
-000740,000D0B,001601,001D73,0024A5,004026,106F3F,18C2BF,343DC4,4CE676,50C4DD,58278C,6084BD,7403BD,84AFEC,8857EE,B0C745,CCE1D5,DCFB02 o="BUFFALO.INC"
+000740,000D0B,001601,001D73,0024A5,004026,106F3F,18C2BF,18ECE7,343DC4,4CE676,50C4DD,58278C,6084BD,7403BD,84AFEC,8857EE,B0C745,CCE1D5,DCFB02 o="BUFFALO.INC"
000741 o="Sierra Automated Systems"
000742 o="Ormazabal"
000743 o="Chelsio Communications"
@@ -1803,7 +1803,7 @@
00078B o="Wegener Communications, Inc."
00078C o="Elektronikspecialisten i Borlange AB"
00078D o="NetEngines Ltd."
-00078E o="Garz & Friche GmbH"
+00078E o="Garz & Fricke GmbH"
00078F o="Emkay Innovative Products"
000790 o="Tri-M Technologies (s) Limited"
000791 o="International Data Communications, Inc."
@@ -1861,7 +1861,7 @@
0007C8 o="Brain21, Inc."
0007C9 o="Technol Seven Co., Ltd."
0007CA o="Creatix Polymedia Ges Fur Kommunikaitonssysteme"
-0007CB,0024D4,140C76,342792,68A378,70FC8F,8C97EA,E49E12,F4CAE5 o="FREEBOX SAS"
+0007CB,0024D4,140C76,342792,68A378,70FC8F,8C97EA,DC00B0,E49E12,F4CAE5 o="FREEBOX SAS"
0007CC o="Kaba Benzing GmbH"
0007CD o="Kumoh Electronic Co, Ltd"
0007CE o="Cabletime Limited"
@@ -1874,7 +1874,7 @@
0007D5 o="3e Technologies Int;., Inc."
0007D6 o="Commil Ltd."
0007D7 o="Caporis Networks AG"
-0007D8,00265B,00FC8D,0C473D,1CABC0,30B7D4,64777D,688F2E,68B6FC,749BE8,788DF7,840B7C,84948C,9050CA,A84E3F,AC202E,B0F530,BC1401,BC3E07,BC4DFB,F0F249,F81D0F,FC5A1D o="Hitron Technologies. Inc"
+0007D8,00265B,00FC8D,0C473D,1CABC0,30B7D4,64777D,688F2E,68B6FC,749BE8,788DF7,840B7C,84948C,9050CA,90AAC3,A84E3F,AC202E,B0F530,BC1401,BC3E07,BC4DFB,F0F249,F81D0F,FC5A1D o="Hitron Technologies. Inc"
0007D9 o="Splicecom"
0007DA o="Neuro Telecom Co., Ltd."
0007DB o="Kirana Networks, Inc."
@@ -2258,7 +2258,7 @@
00098E o="ipcas GmbH"
00098F o="Cetacean Networks"
000990 o="ACKSYS Communications & systems"
-000991 o="GE Fanuc Automation Manufacturing, Inc."
+000991 o="Intelligent Platforms, LLC."
000992 o="InterEpoch Technology,INC."
000993,000A30,0CD9C1,7CFC3C,F855CD o="Visteon Corporation"
000994 o="Cronyx Engineering"
@@ -2376,7 +2376,7 @@
000A0A o="SUNIX Co., Ltd."
000A0B o="Sealevel Systems, Inc."
000A0C o="Scientific Research Corporation"
-000A0D o="FCI Deutschland GmbH"
+000A0D,78A714 o="Amphenol"
000A0E o="Invivo Research Inc."
000A0F o="Ilryung Telesys, Inc"
000A10 o="FAST media integrations AG"
@@ -2584,7 +2584,7 @@
000AE8 o="Cathay Roxus Information Technology Co. LTD"
000AE9 o="AirVast Technology Inc."
000AEA o="ADAM ELEKTRONIK LTD. ŞTI"
-000AEB,001478,0019E0,001D0F,002127,0023CD,002586,002719,081F71,085700,0C4B54,0C722C,0C8063,0C8268,10FEED,147590,148692,14CC20,14CF92,14E6E4,18A6F7,18D6C7,1C3BF3,1C4419,1CFA68,206BE7,20DCE6,246968,282CB2,28EE52,30B49E,30B5C2,30FC68,349672,34E894,388345,3C46D8,40169F,403F8C,44B32D,480EEC,487D2E,503EAA,50BD5F,50C7BF,50D4F7,50FA84,547595,54A703,54C80F,54E6FC,5C63BF,5C899A,603A7C,60E327,645601,6466B3,646E97,647002,68FF7B,6CE873,704F57,7405A5,74DA88,74EA3A,7844FD,78A106,7C8BCA,7CB59B,808917,808F1D,8416F9,882593,8C210A,8CA6DF,90AE1B,90F652,940C6D,94D9B3,984827,98DAC4,98DED0,9C216A,9CA615,A0F3C1,A42BB0,A8154D,A8574E,AC84C6,B0487A,B04E26,B09575,B0958E,B0BE76,B8F883,BC4699,BCD177,C025E9,C04A00,C06118,C0E42D,C46E1F,C47154,C4E984,CC08FB,CC32E5,CC3429,D03745,D076E7,D0C7C0,D4016D,D46E0E,D807B6,D80D17,D8150D,D84732,D85D4C,DC0077,DCFE18,E005C5,E4D332,E894F6,E8DE27,EC086B,EC172F,EC26CA,EC888F,F0F336,F483CD,F4EC38,F4F26D,F81A67,F8D111,FCD733 o="TP-LINK TECHNOLOGIES CO.,LTD."
+000AEB,001478,0019E0,001D0F,002127,0023CD,002586,002719,081F71,085700,0C4B54,0C722C,0C8063,0C8268,10FEED,147590,148692,14CC20,14CF92,14E6E4,18A6F7,18D6C7,1C3BF3,1C4419,1CFA68,206BE7,20DCE6,246968,282CB2,28EE52,30B49E,30B5C2,30FC68,349672,34E894,388345,3C46D8,3C846A,40169F,403F8C,44B32D,480EEC,487D2E,503EAA,50BD5F,50C7BF,50D4F7,50FA84,547595,54A703,54C80F,54E6FC,5C63BF,5C899A,6032B1,603A7C,60E327,645601,6466B3,646E97,647002,68FF7B,6CE873,704F57,7405A5,74DA88,74EA3A,7844FD,78A106,7C8BCA,7CB59B,808917,808F1D,80EA07,8416F9,84D81B,882593,8C210A,8CA6DF,90AE1B,90F652,940C6D,94D9B3,984827,98DAC4,98DED0,9C216A,9CA615,A0F3C1,A42BB0,A8154D,A8574E,AC84C6,B0487A,B04E26,B09575,B0958E,B0BE76,B8F883,BC4699,BCD177,C025E9,C04A00,C06118,C0E42D,C46E1F,C47154,C4E984,CC08FB,CC32E5,CC3429,D03745,D076E7,D0C7C0,D4016D,D46E0E,D807B6,D80D17,D8150D,D84732,D85D4C,DC0077,DCFE18,E005C5,E4D332,E894F6,E8DE27,EC086B,EC172F,EC26CA,EC888F,F0F336,F483CD,F4EC38,F4F26D,F81A67,F8D111,FCD733 o="TP-LINK TECHNOLOGIES CO.,LTD."
000AEC o="Koatsu Gas Kogyo Co., Ltd."
000AED,0011FC,D47B75 o="HARTING Electronics GmbH"
000AEE o="GCD Hard- & Software GmbH"
@@ -2686,7 +2686,7 @@
000B54 o="BiTMICRO Networks, Inc."
000B55 o="ADInstruments"
000B56 o="Cybernetics"
-000B57,086BD7,14B457,588E81,680AE2,842E14,90FD9F,CCCCCC,EC1BBD o="Silicon Laboratories"
+000B57,086BD7,14B457,588E81,5C0272,60A423,680AE2,842E14,90FD9F,BC33AC,CCCCCC,EC1BBD o="Silicon Laboratories"
000B58 o="Astronautics C.A LTD"
000B59 o="ScriptPro, LLC"
000B5A o="HyperEdge"
@@ -2703,7 +2703,7 @@
000B68 o="Addvalue Communications Pte Ltd"
000B69 o="Franke Finland Oy"
000B6A,00138F,001966 o="Asiarock Technology Limited"
-000B6B,001BB1,2824FF,2CDCAD,30144A,44E4EE,48A9D2,6002B4,64FF0A,746FF7,80EA23,8C579B,90A4DE,984914,A854B2,B00073,B89F09,B8B7F1,BC307D-BC307E,D86162,E037BF o="Wistron Neweb Corporation"
+000B6B,001BB1,1CD6BE,2824FF,2C9FFB,2CDCAD,30144A,44E4EE,48A9D2,6002B4,64FF0A,746FF7,80EA23,8C579B,90A4DE,984914,A854B2,B00073,B89F09,B8B7F1,BC307D-BC307E,D86162,E037BF o="Wistron Neweb Corporation"
000B6C o="Sychip Inc."
000B6D o="SOLECTRON JAPAN NAKANIIDA"
000B6E o="Neff Instrument Corp."
@@ -2728,7 +2728,7 @@
000B82,C074AD o="Grandstream Networks, Inc."
000B83 o="DATAWATT B.V."
000B84 o="BODET"
-000B86,001A1E,00246C,04BD88,104F58,186472,204C03,24DEC6,3821C7,40E3D6,6CF37F,703A0E,7C573C,84D47E,883A30,9020C2,94B40F,9C1C12,ACA31E,B45D50,B83A5A,B8D4E7,BC9FE4,D015A6,D0D3E0,D8C7C8,E82689,F05C19,F42E7F,F860F0 o="Aruba, a Hewlett Packard Enterprise Company"
+000B86,001A1E,00246C,04BD88,104F58,186472,1C28AF,204C03,2462CE,24DEC6,3821C7,40E3D6,64E881,6CF37F,703A0E,7C573C,84D47E,883A30,8C85C1,9020C2,94B40F,9C1C12,ACA31E,B45D50,B83A5A,B8D4E7,BC9FE4,CCD083,D015A6,D0D3E0,D8C7C8,E82689,F05C19,F42E7F,F860F0 o="Aruba, a Hewlett Packard Enterprise Company"
000B87 o="American Reliance Inc."
000B88 o="Vidisco ltd."
000B89 o="Top Global Technology, Ltd."
@@ -2885,7 +2885,7 @@
000C2D o="FullWave Technology Co., Ltd."
000C2E o="Openet information technology(shenzhen) Co., Ltd."
000C2F o="SeorimTechnology Co.,Ltd."
-000C32 o="Avionic Design Development GmbH"
+000C32 o="Avionic Design GmbH"
000C33 o="Compucase Enterprise Co. Ltd."
000C34 o="Vixen Co., Ltd."
000C35 o="KaVo Dental GmbH & Co. KG"
@@ -2901,7 +2901,7 @@
000C3F o="Cogent Defence & Security Networks,"
000C40 o="Altech Controls"
000C41,000E08,000F66,001217,001310,0014BF,0016B6,001839,0018F8,001A70,001C10,001D7E,001EE5,002129,00226B,002369,00259C,20AA4B,48F8B3,586D8F,687F74,98FC11,C0C1C0,C8B373,C8D719 o="Cisco-Linksys, LLC"
-000C42,4C5E0C,64D154,6C3B6B,744D28,B869F4,C4AD34,CC2DE0,D4CA6D,E48D8C o="Routerboard.com"
+000C42,488F5A,4C5E0C,64D154,6C3B6B,744D28,B869F4,C4AD34,CC2DE0,D4CA6D,E48D8C o="Routerboard.com"
000C43 o="Ralink Technology, Corp."
000C44 o="Automated Interfaces, Inc."
000C45 o="Animation Technologies Inc."
@@ -2943,7 +2943,7 @@
000C6B o="Kurz Industrie-Elektronik GmbH"
000C6C o="Eve Systems GmbH"
000C6D o="Edwards Ltd."
-000C6E,000EA6,00112F,0011D8,0013D4,0015F2,001731,0018F3,001A92,001BFC,001D60,001E8C,001FC6,002215,002354,00248C,002618,00E018,049226,04D4C4,04D9F5,08606E,086266,0C9D92,107B44,10BF48,10C37B,14DAE9,14DDA9,1831BF,1C872C,1CB72C,20CF30,2C4D54,2C56DC,2CFDA1,305A3A,3085A9,3497F6,382C4A,38D547,40167E,40B076,485B39,4CEDFB,50465D,5404A6,54A050,6045CB,60A44C,704D7B,708BCD,74D02B,7824AF,88D7F6,90E6BA,9C5C8E,A85E45,AC220B,AC9E17,B06EBF,BCAEC5,BCEE7B,C86000,D017C2,D45D64,D850E6,E03F49,E0CB4E,F07959,F46D04,F832E4,FCC233 o="ASUSTek COMPUTER INC."
+000C6E,000EA6,00112F,0011D8,0013D4,0015F2,001731,0018F3,001A92,001BFC,001D60,001E8C,001FC6,002215,002354,00248C,002618,00E018,049226,04D4C4,04D9F5,08606E,086266,0C9D92,107B44,10BF48,10C37B,14DAE9,14DDA9,1831BF,1C872C,1CB72C,20CF30,244BFE,2C4D54,2C56DC,2CFDA1,305A3A,3085A9,3497F6,382C4A,38D547,3C7C3F,40167E,40B076,485B39,4CEDFB,50465D,5404A6,54A050,6045CB,60A44C,704D7B,708BCD,74D02B,7824AF,88D7F6,90E6BA,9C5C8E,A85E45,AC220B,AC9E17,B06EBF,BCAEC5,BCEE7B,C86000,D017C2,D45D64,D850E6,E03F49,E0CB4E,F07959,F46D04,F832E4,FCC233 o="ASUSTek COMPUTER INC."
000C6F o="Amtek system co.,LTD."
000C70 o="ACC GmbH"
000C71 o="Wybron, Inc"
@@ -2969,7 +2969,7 @@
000C87 o="AMD"
000C88 o="Apache Micro Peripherals, Inc."
000C89 o="AC Electric Vehicles, Ltd."
-000C8A,0452C7,08DF1F,2811A5,2C41A1,4C875D,60ABD2 o="Bose Corporation"
+000C8A,0452C7,08DF1F,2811A5,2C41A1,4C875D,60ABD2,782B64 o="Bose Corporation"
000C8B o="Connect Tech Inc"
000C8C o="KODICOM CO.,LTD."
000C8D o="MATRIX VISION GmbH"
@@ -3024,7 +3024,7 @@
000CBE o="Innominate Security Technologies AG"
000CBF o="Holy Stone Ent. Co., Ltd."
000CC0 o="Genera Oy"
-000CC1,001345,001864,001D05,002085 o="Eaton Corporation"
+000CC1,001345,001864,002085 o="Eaton Corporation"
000CC2 o="ControlNet (India) Private Limited"
000CC3 o="BeWAN systems"
000CC4 o="Tiptel AG"
@@ -3081,7 +3081,7 @@
000CFF o="MRO-TEK Realty Limited"
000D00 o="Seaway Networks Inc."
000D01 o="P&E Microcomputer Systems, Inc."
-000D02,001B8B,003A9D,106682,1CB17F,6CE4DA,98F199,A41242,C025A2,F8B797 o="NEC Platforms, Ltd."
+000D02,001B8B,003A9D,106682,1CB17F,6CE4DA,8022A7,98F199,A41242,C025A2,F8B797 o="NEC Platforms, Ltd."
000D03 o="Matrics, Inc."
000D04 o="Foxboro Eckardt Development GmbH"
000D05 o="cybernet manufacturing inc."
@@ -3389,7 +3389,7 @@
000E56 o="4G Systems GmbH & Co. KG"
000E57 o="Iworld Networking, Inc."
000E58,347E5C,48A6B8,542A1B,5CAAFD,7828CA,949F3E,B8E937,F0F6C1 o="Sonos, Inc."
-000E59,001556,00194B,001BBF,001E74,001F95,002348,002569,002691,0037B7,00604C,00789E,00CB51,083E5D,08D59D,181E78,18622C,1890D8,2420C7,247F20,289EFC,2C3996,2C79D7,2CE412,302478,3093BC,34495B,346B46,348AAE,34DB9C,3835FB,3C1710,3C81D8,4065A3,40C729,40F201,44E9DD,4883C7,48D24F,4C17EB,5464D9,589043,5CB13E,646624,681590,6C2E85,700B01,786559,7C034C,7C03D8,7C2664,8020DA,84A06E,84A1D1,84A423,88A6C6,8C10D4,90013B,904D4A,907282,94FEF4,981E19,988B5D,A01B29,A039EE,A08E78,A408F5,A89A93,AC3B77,AC84C9,B0982B,B0B28F,B86685,B8D94D,B8EE0E,C0AC54,C0D044,C891F9,C8CD72,CC33BB,D05794,D06EDE,D084B0,D86CE9,D87D7F,D8A756,D8D775,E8ADA6,E8BE81,E8F1B0,ECBEDD,F08175,F08261,F46BEF,F4EB38,F8084F,F8AB05 o="Sagemcom Broadband SAS"
+000E59,001556,00194B,001BBF,001E74,001F95,002348,002569,002691,0037B7,00604C,00789E,00CB51,083E5D,08D59D,100645,10D7B0,181E78,18622C,1890D8,209A7D,2420C7,247F20,289EFC,2C3996,2C79D7,2CE412,302478,3093BC,34495B,346B46,348AAE,34DB9C,3835FB,3C1710,3C81D8,4065A3,40C729,40F201,44ADB1,44E9DD,4883C7,48D24F,4C17EB,5464D9,589043,5CB13E,646624,681590,6C2E85,6C9961,6CBAB8,700B01,786559,7C034C,7C03D8,7C2664,8020DA,84A06E,84A1D1,84A423,88A6C6,8C10D4,8CC5B4,90013B,904D4A,907282,94FEF4,981E19,988B5D,A01B29,A039EE,A08E78,A408F5,A86ABB,A89A93,AC3B77,AC84C9,B0982B,B0B28F,B86685,B8D94D,B8EE0E,C0AC54,C0D044,C891F9,C8CD72,CC33BB,D05794,D06EDE,D084B0,D4F829,D86CE9,D87D7F,D8A756,D8D775,E8ADA6,E8BE81,E8F1B0,ECBEDD,F08175,F08261,F46BEF,F4EB38,F8084F,F8AB05 o="Sagemcom Broadband SAS"
000E5A o="TELEFIELD inc."
000E5B o="ParkerVision - Direct2Data"
000E5D o="Triple Play Technologies A/S"
@@ -3406,7 +3406,7 @@
000E69 o="China Electric Power Research Institute"
000E6B o="Janitza electronics GmbH"
000E6C o="Device Drivers Limited"
-000E6D,0013E0,0021E8,0026E8,00376D,006057,009D6B,00AEFA,044665,1098C3,10A5D0,147DC5,1C7022,1C994C,2002AF,2C4CC6,40F308,449160,44A7CF,48EB62,58D50A,5CDAD4,5CF8A1,6021C0,60F189,784B87,88308A,8C4500,90B686,98F170,A0C9A0,A0CC2B,A408EA,B072BF,B8D7AF,C4AC59,CCC079,D0E44A,D44DA4,D45383,D8C46A,DCEFCA,E8E8B7,F02765,FCC2DE,FCDBB3 o="Murata Manufacturing Co., Ltd."
+000E6D,0013E0,0021E8,0026E8,00376D,006057,009D6B,00AEFA,044665,1098C3,10A5D0,147DC5,1848CA,1C7022,1C994C,2002AF,2C4CC6,40F308,449160,44A7CF,48EB62,58D50A,5CDAD4,5CF8A1,6021C0,60F189,707414,747A90,784B87,88308A,8C4500,90B686,98F170,A0C9A0,A0CC2B,A408EA,B072BF,B8D7AF,C4AC59,CCC079,D0E44A,D44DA4,D45383,D8C46A,DCEFCA,E8E8B7,F02765,FCC2DE,FCDBB3 o="Murata Manufacturing Co., Ltd."
000E6E o="MAT S.A. (Mircrelec Advanced Technology)"
000E6F o="IRIS Corporation Berhad"
000E70 o="in2 Networks"
@@ -3435,7 +3435,7 @@
000E8B o="Astarte Technology Co, Ltd."
000E8D o="Systems in Progress Holding GmbH"
000E8E o="SparkLAN Communications, Inc."
-000E8F,00C002,142E5E,3C9872,60CE86,749D79,788102,7894B4,944A0C,B4A5EF,D42122,D460E3,E06066 o="Sercomm Corporation."
+000E8F,00C002,105072,142E5E,3C9872,60CE86,749D79,788102,7894B4,944A0C,B4A5EF,D42122,D460E3,E06066,E81B69 o="Sercomm Corporation."
000E90 o="PONICO CORP."
000E91 o="Navico Auckland Ltd"
000E92 o="Open Telecom"
@@ -3447,7 +3447,7 @@
000E98,00C068 o="HME Clear-Com LTD."
000E99 o="Spectrum Digital, Inc"
000E9A,000EE4 o="BOE TECHNOLOGY GROUP CO.,LTD"
-000E9C o="Benchmark Electronics"
+000E9C,98CBA4 o="Benchmark Electronics"
000E9D o="Tiscali UK Ltd"
000E9E o="Topfield Co., Ltd"
000E9F o="TEMIC SDS GmbH"
@@ -3877,7 +3877,7 @@
00107C o="P-COM, INC."
00107D o="AURORA COMMUNICATIONS, LTD."
00107E o="BACHMANN ELECTRONIC GmbH"
-00107F o="CRESTRON ELECTRONICS, INC."
+00107F,C44268 o="CRESTRON ELECTRONICS, INC."
001080 o="METAWAVE COMMUNICATIONS"
001081 o="DPS, INC."
001082 o="JNA TELECOMMUNICATIONS LIMITED"
@@ -3993,7 +3993,7 @@
001102 o="Aurora Multimedia Corp."
001103 o="kawamura electric inc."
001104 o="TELEXY"
-001105,FC4BBC o="Sunplus Technology Co., Ltd."
+001105,1C501E,FC4BBC o="Sunplus Technology Co., Ltd."
001106 o="Siemens NV (Belgium)"
001107 o="RGB Networks Inc."
001108 o="Orbital Data Corporation"
@@ -4205,7 +4205,7 @@
0011F2 o="Institute of Network Technologies"
0011F3 o="NeoMedia Europe AG"
0011F4 o="woori-net"
-0011F5,0016E3,001B9E,002163,0024D2,0026B6,009096,086A0A,1CB044,24EC99,4CEDDE,7829ED,7CB733,7CDB98,807871,94917F,A0648F,B0EABC,B4749F,B482FE,B4EEB4,C0D962,C8B422,D47BB0,D8FB5E,E0CA94,E0CEC3,E839DF,E8D11B,F85B3B,FCB4E6 o="ASKEY COMPUTER CORP"
+0011F5,0016E3,001B9E,002163,0024D2,0026B6,009096,086A0A,08B055,1CB044,24EC99,4CEDDE,7829ED,7CB733,7CDB98,807871,94917F,A0648F,B0EABC,B4749F,B482FE,B4EEB4,C0D962,C8B422,D47BB0,D8FB5E,E0CA94,E0CEC3,E839DF,E8D11B,F46942,F85B3B,FCB4E6 o="ASKEY COMPUTER CORP"
0011F6 o="Asia Pacific Microsystems , Inc."
0011F7 o="Shenzhen Forward Industry Co., Ltd"
0011F8 o="AIRAYA Corp"
@@ -4264,7 +4264,7 @@
001234 o="Camille Bauer"
001235 o="Andrew Corporation"
001236 o="ConSentry Networks"
-001237,00124B,0012D1-0012D2,001783,0017E3-0017EC,00182F-001834,001AB6,0021BA,0022A5,0023D4,0024BA,0035FF,0081F9,0479B7,04A316,04E451,04EE03,080028,0C1C57,0C61CF,0CAE7D,0CB2B7,10082C,102EAF,10CEA9,1442FC,1804ED,1862E4,1893D7,1C4593,1CBA8C,1CDF52,1CE2CC,209148,20C38F,20CD39,247189,247D4D,28EC9A,2C6B7D,2CAB33,304511,3403DE,3414B5,341513,342AF1,34B1F7,380B3C,3881D7,38D269,3C2DB7,3C7DB1,3CA308,4006A0,402E71,405FC2,40984E,40BD32,44C15C,44EAD8,4C2498,4C3FD3,50338B,5051A9,505663,506583,507224,508CB1,50F14A,544A16,546C0E,547DCD,587A62,5893D8,5C313E,5C6B32,5CF821,606405,607771,64694E,647BD4,649C8E,64CFD9,684749,689E19,68C90B,6CC374,6CECEB,7086C1,70E56E,70FF76,74D6EA,74DAEA,74E182,780473,78A504,78C5E5,78DB2F,78DEE4,7C010A,7C3866,7C669D,7C8EE4,7CEC79,8030DC,806FB0,847E40,84DD20,84EB18,883314,883F4A,884AEA,88C255,8C8B83,9059AF,907065,909A77,90D7EB,90E202,948854,94E36D,98072D,985945,985DAD,987BF3,9884E3,9C1D58,A0E6F8,A0F6FD,A434F1,A4D578,A4DA32,A81087,A81B6A,A863F2,A8E2C1,A8E77D,B07E11,B09122,B0B448,B0D5CC,B452A9,B4994C,B4BC7C,B4EED4,B8FFFE,BC0DA5,BC6A29,C0E422,C464E3,C4BE84,C4EDBA,C4F312,C83E99,C8A030,C8DF84,C8FD19,CC78AB,CC8CE3,D003EB,D00790,D03761,D03972,D05FB8,D08CB5,D0B5C2,D0FF50,D43639,D494A1,D4F513,D8543A,D8952F,D8A98B,D8DDFD,E07DEA,E0C79D,E0D7BA,E0E5CF,E415F6,E4E112,E8EB11,EC1127,EC24B8,F045DA,F0B5D1,F0C77F,F0F8F2,F45EAB,F4844C,F4B85E,F4E11E,F4FC32,F83002,F83331,F8369B,F88A5E,FC0F4B,FC6947 o="Texas Instruments"
+001237,00124B,0012D1-0012D2,001783,0017E3-0017EC,00182F-001834,001AB6,0021BA,0022A5,0023D4,0024BA,0035FF,0081F9,0479B7,04A316,04E451,04EE03,080028,0C1C57,0C61CF,0CAE7D,0CB2B7,0CEC80,10082C,102EAF,10CEA9,1442FC,1804ED,1862E4,1893D7,1C4593,1CBA8C,1CDF52,1CE2CC,209148,20C38F,20CD39,247189,247D4D,28EC9A,2C6B7D,2CAB33,304511,3403DE,3414B5,341513,342AF1,34B1F7,380B3C,3881D7,38D269,3C2DB7,3C7DB1,3CA308,4006A0,402E71,405FC2,40984E,40BD32,44C15C,44EAD8,4C2498,4C3FD3,50338B,5051A9,505663,506583,507224,508CB1,50F14A,544A16,546C0E,547DCD,587A62,5893D8,5C313E,5C6B32,5CF821,606405,607771,609866,6433DB,64694E,647BD4,649C8E,64CFD9,684749,689E19,68C90B,6CC374,6CECEB,7086C1,70E56E,70FF76,74D6EA,74DAEA,74E182,780473,78A504,78C5E5,78DB2F,78DEE4,7C010A,7C3866,7C669D,7C8EE4,7CEC79,8030DC,806FB0,847E40,84DD20,84EB18,883314,883F4A,884AEA,88C255,8C8B83,9059AF,907065,909A77,90D7EB,90E202,948854,94E36D,98072D,985945,985DAD,987BF3,9884E3,9C1D58,A0E6F8,A0F6FD,A406E9,A434F1,A4D578,A4DA32,A81087,A81B6A,A863F2,A8E2C1,A8E77D,B07E11,B09122,B0B113,B0B448,B0D5CC,B452A9,B4994C,B4BC7C,B4EED4,B8804F,B8FFFE,BC0DA5,BC6A29,C0E422,C464E3,C4BE84,C4EDBA,C4F312,C83E99,C8A030,C8DF84,C8FD19,CC78AB,CC8CE3,D003EB,D00790,D03761,D03972,D05FB8,D08CB5,D0B5C2,D0FF50,D43639,D494A1,D4F513,D8543A,D8714D,D8952F,D8A98B,D8DDFD,E06234,E07DEA,E0C79D,E0D7BA,E0E5CF,E415F6,E4E112,E8EB11,EC1127,EC24B8,F045DA,F0B5D1,F0C77F,F0F8F2,F45EAB,F4844C,F4B85E,F4E11E,F4FC32,F83002,F83331,F8369B,F88A5E,FC0F4B,FC6947 o="Texas Instruments"
001238 o="SetaBox Technology Co., Ltd."
001239 o="S Net Systems Inc."
00123A o="Posystech Inc., Co."
@@ -4415,7 +4415,7 @@
0012E0 o="Codan Limited"
0012E1 o="Alliant Networks, Inc"
0012E2 o="ALAXALA Networks Corporation"
-0012E3 o="Agat-RT, Ltd."
+0012E3 o="Agat Soft LLC"
0012E4 o="ZIEHL industrie-electronik GmbH + Co KG"
0012E5 o="Time America, Inc."
0012E6 o="SPECTEC COMPUTER CO., LTD."
@@ -4427,7 +4427,7 @@
0012EC o="Movacolor b.v."
0012ED o="AVG Advanced Technologies"
0012EF,70FC8C o="OneAccess SA"
-0012F0,001302,001320,0013CE,0013E8,001500,001517,00166F,001676,0016EA-0016EB,0018DE,0019D1-0019D2,001B21,001B77,001CBF-001CC0,001DE0-001DE1,001E64-001E65,001E67,001F3B-001F3C,00215C-00215D,00216A-00216B,0022FA-0022FB,002314-002315,0024D6-0024D7,0026C6-0026C7,00270E,002710,0028F8,00BB60,00C2C6,00DBDF,00E18C,0433C2,04D3B0,04EA56,04ED33,081196,087190,08D23E,08D40C,0C5415,0C7A15,0C8BFD,0CD292,0CDD24,1002B5,100BA9,104A7D,10F005,144F8A,14ABC5,14F6D8,181DEA,183DA2,185680,185E0F,18FF0F,1C1BB5,1C4D70,2016B9,207918,24418C,247703,24EE9A,2816AD,287FCF,28B2BD,28C63F,2C6E85,302432,303A64,30E37A,340286,3413E8,34415D,34CFF6,34DE1A,34E12D,34E6AD,34F39A,34F64B,380025,38BAF8,38DEAD,3C58C2,3C6AA7,3CA9F4,3CF011,3CF862,3CFDFE,4025C2,4074E0,40A3CC,40A6B7,40EC99,44032C,448500,484520,4851B7,4889E7,48A472,48F17F,4C1D96,4C3488,4C79BA,4C8093,4CEB42,502DA2,5076AF,50E085,50EB71,548D5A,5891CF,58946B,58961D,58A023,58A839,58FB84,5C514F,5C5F67,5C80B6,5C879C,5CC5D4,5CCD5B,5CD2E4,5CE0C5,6036DD,605718,606720,606C66,60F262,60F677,6432A8,644C36,645D86,648099,64BC58,64D4DA,6805CA,680715,681729,685D43,68ECC5,6C2995,6C6A77,6C8814,6CA100,701CE7,7470FD,74D83E,74E50B,74E5F9,780CB8,78929C,78FF57,7C2A31,7C5CF8,7C67A2,7C7635,7C7A91,7CB0C2,7CB27D,7CCCB8,80000B,801934,803253,8086F2,809B20,843A4B,84683E,84A6C8,84C5A6,84EF18,84FDD1,88532E,887873,88B111,8C705A,8CA982,8CC681,902E1C,9049FA,9061AE,907841,90E2BA,94659C,94B86D,94E6F7,982CBC,983B8F,984FEE,98541B,98AF65,9C4E36,9CDA3E,9CFCE8,A0369F,A0510B,A08869,A088B4,A0A4C5,A0A8CD,A0AFBD,A0C589,A0D37A,A402B9,A434D9,A44E31,A4BF01,A4C3F0,A4C494,A86DAA,A87EEA,AC1203,AC2B6E,AC7289,AC7BA1,ACED5C,ACFDCE,B0359F,B46921,B46BFC,B46D83,B49691,B4B676,B4D5BD,B80305,B808CF,B88198,B88A60,B89A2A,B8B81E,B8BF83,BC0F64,BC542F,BC7737,BCA8A6,C0B6F9,C0B883,C48508,C4D987,C809A8,C82158,C8348E,C858C0,C8F733,CC2F71,CC3D82,CCF9E4,D0577B,D07E35,D0ABD5,D0C637,D4258B,D43B04,D46D6D,D4D252,D83BBF,D8F2CA,D8FC93,DC5360,DC7196,DC8B28,DCA971,DCFB48,E09467,E09D31,E0D4E8,E4029B,E442A6,E45E37,E470B8,E4A471,E4A7A0,E4B318,E4F89C,E4FAFD,E82AEA,E8B1FC,F0421C,F0D5BF,F40669,F48C50,F49634,F4D108,F81654,F83441,F85971,F8633F,F894C2,F8E4E3,F8F21E,FC7774,FCF8AE o="Intel Corporate"
+0012F0,001302,001320,0013CE,0013E8,001500,001517,00166F,001676,0016EA-0016EB,0018DE,0019D1-0019D2,001B21,001B77,001CBF-001CC0,001DE0-001DE1,001E64-001E65,001E67,001F3B-001F3C,00215C-00215D,00216A-00216B,0022FA-0022FB,002314-002315,0024D6-0024D7,0026C6-0026C7,00270E,002710,0028F8,004238,00BB60,00C2C6,00DBDF,00E18C,0433C2,046C59,04D3B0,04EA56,04ED33,081196,085BD6,087190,08D23E,08D40C,0C5415,0C7A15,0C8BFD,0CD292,0CDD24,1002B5,100BA9,104A7D,10F005,144F8A,14ABC5,14F6D8,181DEA,182649,183DA2,185680,185E0F,18FF0F,1C1BB5,1C4D70,2016B9,207918,24418C,247703,24EE9A,2816AD,287FCF,28B2BD,28C63F,2C6E85,2CDB07,302432,303A64,30E37A,340286,3413E8,342EB7,34415D,347DF6,34CFF6,34DE1A,34E12D,34E6AD,34F39A,34F64B,380025,386893,38BAF8,38DEAD,3C58C2,3C6AA7,3C9C0F,3CA9F4,3CF011,3CF862,3CFDFE,4025C2,4074E0,40A3CC,40A6B7,40EC99,44032C,448500,44AF28,484520,4851B7,4889E7,48A472,48F17F,4C1D96,4C3488,4C79BA,4C8093,4CEB42,502DA2,5076AF,50E085,50EB71,548D5A,5891CF,58946B,58961D,58A023,58A839,58FB84,5C514F,5C5F67,5C80B6,5C879C,5CC5D4,5CCD5B,5CD2E4,5CE0C5,6036DD,605718,606720,606C66,60F262,60F677,6432A8,644C36,645D86,648099,64BC58,64D4DA,6805CA,680715,681729,68545A,685D43,68ECC5,6C2995,6C6A77,6C8814,6CA100,701CE7,709CD1,7470FD,74D83E,74E50B,74E5F9,780CB8,782B46,78929C,78FF57,7C2A31,7C5CF8,7C67A2,7C7635,7C7A91,7CB0C2,7CB27D,7CCCB8,80000B,801934,803253,8086F2,809B20,843A4B,84683E,84A6C8,84C5A6,84EF18,84FDD1,88532E,887873,88B111,8C705A,8C8D28,8CA982,8CC681,902E1C,9049FA,9061AE,907841,90CCDF,90E2BA,94659C,94B86D,94E6F7,94E70B,982CBC,983B8F,984FEE,98541B,988D46,98AF65,9C2976,9C4E36,9CDA3E,9CFCE8,A0369F,A0510B,A08869,A088B4,A0A4C5,A0A8CD,A0AFBD,A0C589,A0D37A,A402B9,A434D9,A44E31,A4B1C1,A4BF01,A4C3F0,A4C494,A86DAA,A87EEA,AC1203,AC2B6E,AC675D,AC7289,AC7BA1,ACED5C,ACFDCE,B0359F,B07D64,B0A460,B46921,B46BFC,B46D83,B49691,B4B676,B4D5BD,B80305,B808CF,B88198,B88A60,B89A2A,B8B81E,B8BF83,BC0F64,BC17B8,BC542F,BC7737,BCA8A6,C0B6F9,C0B883,C48508,C4D987,C809A8,C82158,C8348E,C858C0,C8B29B,C8F733,CC2F71,CC3D82,CCD9AC,CCF9E4,D0577B,D07E35,D0ABD5,D0C637,D4258B,D43B04,D46D6D,D4D252,D83BBF,D8F2CA,D8F883,D8FC93,DC1BA1,DC41A9,DC5360,DC7196,DC8B28,DCA971,DCFB48,E09467,E09D31,E0D464,E0D4E8,E4029B,E442A6,E45E37,E470B8,E4A471,E4A7A0,E4B318,E4F89C,E4FAFD,E82AEA,E8B1FC,F0421C,F0D5BF,F40669,F48C50,F49634,F4D108,F81654,F83441,F85971,F8633F,F894C2,F8AC65,F8E4E3,F8F21E,FC4482,FC7774,FCB3BC,FCF8AE o="Intel Corporate"
0012F1 o="IFOTEC"
0012F3 o="connectBlue AB"
0012F4 o="Belco International Co.,Ltd."
@@ -4502,7 +4502,7 @@
001343 o="Matsushita Electronic Components (Europe) GmbH"
001344 o="Fargo Electronics Inc."
001348 o="Artila Electronics Co., Ltd."
-001349,0019CB,0023F8,00A0C5,04BF6D,082697,107BEF,1C740D,28285D,404A03,4C9EFF,5067F0,54833A,588BF3,5C6A80,5CE28C,5CF4AB,603197,88ACC0,8C5973,90EF68,980D67,A0E4CB,B0B2DC,B8D526,B8ECA3,BC9911,BCCF4F,C8544B,C86C87,CC5D4E,D8912A,E4186B,E8377A,EC43F6,FCF528 o="Zyxel Communications Corporation"
+001349,0019CB,0023F8,00A0C5,04BF6D,082697,107BEF,1C740D,28285D,404A03,4C9EFF,4CC53E,5067F0,50E039,54833A,588BF3,5C6A80,5CE28C,5CF4AB,603197,88ACC0,8C5973,90EF68,980D67,A0E4CB,B0B2DC,B8D526,B8ECA3,BC9911,BCCF4F,C8544B,C86C87,CC5D4E,D8912A,E4186B,E8377A,EC3EB3,EC43F6,FCF528 o="Zyxel Communications Corporation"
00134A o="Engim, Inc."
00134B o="ToGoldenNet Technology Inc."
00134C o="YDT Technology International"
@@ -4564,7 +4564,7 @@
00138E o="FOAB Elektronik AB"
001390 o="Termtek Computer Co., Ltd"
001391 o="OUEN CO.,LTD."
-001392,001D2E,001F41,00227F,002482,0025C4,044FAA,0CF4D5,184B0D,187C0B,1C3A60,1CB9C4,205869,24792A,24C9A1,2C5D93,2CC5D3,2CE6CC,3087D9,348F27,34FA9F,38FF36,441E98,4CB1CD,50A733,543D37,54EC2F,589396,58B633,60D02C,689234,6CAAB3,743E2B,74911A,84183A,8C0C90,8CFE74,903A72,94BFC4,94F665,AC6706,B479C8,C08ADE,C0C520,C4017C,C4108A,C803F5,C80873,D4684D,D4C19E,D838FC,E0107F,E81DA8,EC58EA,EC8CA2,F03E90,F0B052,F8E71E o="Ruckus Wireless"
+001392,001D2E,001F41,00227F,002482,0025C4,044FAA,0CF4D5,184B0D,187C0B,1C3A60,1CB9C4,205869,24792A,24C9A1,28B371,2C5D93,2CC5D3,2CE6CC,3087D9,3420E3,348F27,34FA9F,38FF36,441E98,4CB1CD,50A733,543D37,54EC2F,589396,58B633,60D02C,689234,6CAAB3,70CA97,743E2B,74911A,800384,84183A,8C0C90,8CFE74,903A72,94BFC4,94F665,AC6706,B479C8,C08ADE,C0C520,C4017C,C4108A,C803F5,C80873,D4684D,D4C19E,D838FC,DCAEEB,E0107F,E81DA8,EC58EA,EC8CA2,F03E90,F0B052,F8E71E o="Ruckus Wireless"
001393 o="Panta Systems, Inc."
001394 o="Infohand Co.,Ltd"
001395 o="congatec AG"
@@ -4710,7 +4710,7 @@
001435 o="CityCom Corp."
001436 o="Qwerty Elektronik AB"
001437 o="GSTeletech Co.,Ltd."
-001438,004E35,00FD45,040973,089734,08F1EA,1402EC,1C98EC,20677C,20A6CD,24F27F,34FCB9,3817C3,40B93C,4448C1,484AE9,48DF37,4CAEA3,548028,5CBA2C,70106F,8030E0,808DB7,88E9A4,904C81,941882,943FC2,9440C9,94F128,98F2B3,9C8CD8,9CDC71,A8BD27,B0B867,B47AF1,B88303,C8B5AD,D06726,D4F5EF,D89403,DC680C,E0071B,E8F724,EC9B8B,ECEBB8,F40343 o="Hewlett Packard Enterprise"
+001438,004E35,00FD45,040973,089734,08F1EA,1402EC,1C98EC,20677C,20A6CD,24F27F,34FCB9,3817C3,40B93C,4448C1,484AE9,48DF37,4CAEA3,54778A,548028,5CBA2C,70106F,8030E0,808DB7,88E9A4,904C81,941882,943FC2,9440C9,94F128,98F2B3,9C8CD8,9CDC71,A8BD27,B0B867,B47AF1,B88303,C8B5AD,D06726,D4F5EF,D89403,DC680C,E0071B,E8F724,EC9B8B,ECEBB8,F40343 o="Hewlett Packard Enterprise"
001439 o="Blonder Tongue Laboratories, Inc"
00143A o="RAYTALK INTERNATIONAL SRL"
00143B o="Sensovation AG"
@@ -4727,7 +4727,7 @@
001446 o="SuperVision Solutions LLC"
001447 o="BOAZ Inc."
001448 o="Inventec Multimedia & Telecom Corporation"
-001449,006CFD,00E400,1899F5,6488FF,842C80,982F3C,B46077,C0132B,D84710 o="Sichuan Changhong Electric Ltd."
+001449,006CFD,00E400,1899F5,6488FF,842C80,982F3C,B46077,B49E80,C0132B,D84710 o="Sichuan Changhong Electric Ltd."
00144A o="Taiwan Thick-Film Ind. Corp."
00144B o="Hifn, Inc."
00144C o="General Meters Corp."
@@ -4976,7 +4976,7 @@
00156A o="DG2L Technologies Pvt. Ltd."
00156B o="Perfisans Networks Corp."
00156C o="SANE SYSTEM CO., LTD"
-00156D,002722,0418D6,18E829,24A43C,44D9E7,687251,68D79A,7483C2,74ACB9,788A20,802AA8,B4FBE4,DC9FDB,E063DA,F09FC2,F492BF,FCECDA o="Ubiquiti Networks Inc."
+00156D,002722,0418D6,18E829,245A4C,24A43C,44D9E7,687251,68D79A,7483C2,74ACB9,784558,788A20,802AA8,B4FBE4,D021F9,DC9FDB,E063DA,F09FC2,F492BF,FCECDA o="Ubiquiti Networks Inc."
00156E o="A. W. Communication Systems Ltd"
00156F o="Xiranet Communications GmbH"
001571 o="Nolan Systems"
@@ -5030,7 +5030,7 @@
0015AC o="Capelon AB"
0015AD o="Accedian Networks"
0015AE o="kyung il"
-0015AF,002243,0025D3,08A95A,1C4BD6,240A64,2866E3,28C2DD,2CDCD7,384FF0,409922,409F38,40E230,44D832,485D60,54271E,5C9656,605BB4,6C71D9,6CADF8,706655,742F68,74C63B,74F06D,781881,809133,80A589,80C5F2,80D21D,94DBC9,A81D16,AC8995,B0EE45,C0E434,D0C5D3,D0E782,DC85DE,DCF505,E0B9A5,E8D819,F0038C o="AzureWave Technology Inc."
+0015AF,002243,0025D3,08A95A,1C4BD6,204EF6,240A64,2866E3,28C2DD,2CDCD7,384FF0,409922,409F38,40E230,44D832,485D60,54271E,5C9656,605BB4,6C71D9,6CADF8,706655,742F68,74C63B,74F06D,781881,809133,80A589,80C5F2,80D21D,94DBC9,A81D16,AC8995,B0EE45,C0E434,D0C5D3,D0E782,D8C0A6,DC85DE,DCF505,E0B9A5,E8D819,F0038C o="AzureWave Technology Inc."
0015B0 o="AUTOTELENET CO.,LTD"
0015B1 o="Ambient Corporation"
0015B2 o="Advanced Industrial Computer, Inc."
@@ -5076,7 +5076,7 @@
0015E6 o="MOBILE TECHNIKA Inc."
0015E7 o="Quantec Tontechnik"
0015EA o="Tellumat (Pty) Ltd"
-0015EB,0019C6,001E73,002293,002512,0026ED,004A77,041DC7,049573,08181A,083FBC,086083,0C1262,0C3747,0C72D9,10D0AB,143EBF,146080,18132D,1844E6,18686A,1C2704,208986,20E882,24586E,247E51,24C44A,24D3F2,287B09,288CB8,28FF3E,2C26C5,2C957F,300C23,309935,30D386,30F31D,343759,344B50,344DEA,346987,347839,34DAB7,34DE34,34E0CF,384608,386E88,38D82F,38E1AA,38E2DD,3CDA2A,4413D0,44F436,44FB5A,44FFBA,48282F,4859A4,48A74E,4C09B4,4C16F1,4C494F,4CABFC,4CAC0A,4CCBF5,5078B3,50AF4D,540955,5422F8,54BE53,585FF6,5C3A3D,601466,601888,6073BC,64136C,681AB2,688AF0,689FF0,6C8B2F,6CA75F,6CD2BA,702E22,709F2D,744AA4,749781,74A78E,74B57E,781D4A,78312B,789682,78C1A7,78E8B6,7C3953,80B07B,84139F,841C70,84742A,847460,885DFB,88D274,8C14B4,8C68C8,8C7967,8CDC02,8CE081,8CE117,901D27,90869B,90C7D8,90D8F3,90FD73,94A7B7,94BF80,98006A,981333,986CF5,98F428,98F537,9C2F4E,9C63ED,9C6F52,9CA9E4,9CD24B,9CE91C,A091C8,A0EC80,A44027,A47E39,A8A668,AC00D0,AC6462,B00AD5,B075D5,B0ACD2,B0B194,B0C19E,B41C30,B49842,B4B362,B4DEDF,B805AB,BC1695,C09FE1,C0FD84,C4741E,C4A366,C85A9F,C864C7,C87B5B,C8EAF8,CC1AFA,CC7B35,D0154A,D058A8,D05BA8,D0608C,D071C4,D437D7,D47226,D476EA,D49E05,D4B709,D4C1C8,D855A3,D87495,D8A8C8,DC028E,DC7137,DCDFD6,DCF8B9,E01954,E0383F,E07C13,E0C3F3,E447B3,E47723,E47E9A,E4BD4B,E4CA12,E8ACAD,E8B541,EC1D7F,EC237B,EC8263,EC8A4C,ECF0FE,F084C9,F41F88,F46DE2,F4B5AA,F4B8A7,F4E4AD,F80DF0,F8A34F,F8DFA8,FC2D5E,FC94CE,FCC897 o="zte corporation"
+0015EB,0019C6,001E73,002293,002512,0026ED,004A77,041DC7,049573,08181A,083FBC,086083,0C1262,0C3747,0C72D9,10D0AB,14007D,143EBF,146080,18132D,1844E6,18686A,1C2704,208986,20E882,24586E,247E51,24C44A,24D3F2,287B09,288CB8,28FF3E,2C26C5,2C957F,300C23,304240,309935,30CC21,30D386,30F31D,343654,343759,344B50,344DEA,346987,347839,34DAB7,34DE34,34E0CF,384608,38549B,386E88,38D82F,38E1AA,38E2DD,3CDA2A,3CF652,4413D0,445943,44F436,44FB5A,44FFBA,48282F,4859A4,48A74E,4C09B4,4C16F1,4C494F,4CABFC,4CAC0A,4CCBF5,5078B3,50AF4D,540955,5422F8,5484DC,54BE53,585FF6,5C3A3D,601466,601888,6073BC,64136C,681AB2,688AF0,689FF0,6C8B2F,6CA75F,6CD2BA,702E22,709F2D,744AA4,749781,74A78E,74B57E,781D4A,78312B,789682,78C1A7,78E8B6,7C3953,80B07B,84139F,841C70,84742A,847460,885DFB,88D274,8C14B4,8C68C8,8C7967,8CDC02,8CE081,8CE117,901D27,90869B,90C7D8,90D8F3,90FD73,94A7B7,94BF80,94E3EE,98006A,981333,986CF5,98F428,98F537,9C2F4E,9C63ED,9C6F52,9CA9E4,9CD24B,9CE91C,A091C8,A0CFF5,A0EC80,A44027,A47E39,A802DB,A8A668,AC00D0,AC6462,B00AD5,B075D5,B0ACD2,B0B194,B0C19E,B41C30,B49842,B4B362,B4DEDF,B805AB,B8DD71,BC1695,C09FE1,C0B101,C0FD84,C4741E,C4A366,C85A9F,C864C7,C87B5B,C8EAF8,CC1AFA,CC7B35,D0154A,D058A8,D05BA8,D0608C,D071C4,D437D7,D47226,D476EA,D49E05,D4B709,D4C1C8,D4F756,D855A3,D87495,D8A8C8,DC028E,DC7137,DCDFD6,DCF8B9,E01954,E0383F,E07C13,E0C3F3,E447B3,E47723,E47E9A,E4BD4B,E4CA12,E8A1F8,E8ACAD,E8B541,EC1D7F,EC237B,EC6CB5,EC8263,EC8A4C,ECF0FE,F084C9,F41F88,F46DE2,F4B5AA,F4B8A7,F4E4AD,F80DF0,F864B8,F8A34F,F8DFA8,FC2D5E,FC449F,FC94CE,FCC897 o="zte corporation"
0015EC o="Boca Devices LLC"
0015ED o="Fulcrum Microsystems, Inc."
0015EE o="Omnex Control Systems"
@@ -5143,7 +5143,7 @@
001631 o="Xteam"
001633 o="Oxford Diagnostics Ltd."
001634 o="Mathtech, Inc."
-001636,001B24,001E68,00238B,00269E,00C09F,047D7B,089E01,2C600C,54AB3A,60EB69,A81E84,C45444,C80AA9,E89A8F o="QUANTA COMPUTER INC."
+001636,001B24,001E68,00238B,00269E,00C09F,047D7B,089E01,2C600C,54AB3A,60EB69,A81E84,B4A9FC,C01850,C45444,C80AA9,D8C497,E89A8F o="Quanta Computer Inc."
001637 o="CITEL SpA"
001639 o="Ubiquam Co., Ltd."
00163A o="YVES TECHNOLOGY CO., LTD."
@@ -5320,7 +5320,7 @@
00170C o="Twig Com Ltd."
00170D o="Dust Networks Inc."
001710 o="Casa Systems Inc."
-001711 o="GE Healthcare Bio-Sciences AB"
+001711 o="Cytiva Sweden AB"
001712 o="ISCO International"
001713 o="Tiger NetCom"
001714 o="BR Controls Nederland bv"
@@ -5353,7 +5353,7 @@
00172F o="NeuLion Incorporated"
001730 o="Automation Electronics"
001732 o="Science-Technical Center %RISSA%"
-001733,001D16,002515,249504,307ECB,44CE7D,6035C0,CC2D1B,E0A1D7,E45D51 o="SFR"
+001733,001D16,002515,249504,307ECB,44CE7D,6035C0,6C61F4,CC2D1B,E0A1D7,E45D51 o="SFR"
001734 o="ADC Telecommunications"
001735 o="Intel Wireless Network Group"
001736 o="iiTron Inc."
@@ -5364,7 +5364,7 @@
00173C o="Extreme Engineering Solutions"
00173D o="Neology"
00173E o="LeucotronEquipamentos Ltda."
-00173F,001CDF,002275,08863B,149182,24F5A2,302303,58EF68,6038E0,94103E,944452,B4750E,C05627,C4411E,EC1A59 o="Belkin International Inc."
+00173F,001CDF,002275,08863B,149182,24F5A2,302303,58EF68,6038E0,94103E,944452,B4750E,C05627,C4411E,E89F80,EC1A59 o="Belkin International Inc."
001740 o="Bluberi Gaming Technologies Inc"
001741 o="DEFIDEV"
001743 o="Deck Srl"
@@ -5527,7 +5527,7 @@
001807 o="Fanstel Corp."
001808 o="SightLogix, Inc."
001809,7445CE o="CRESYN"
-00180A,0C8DDB,2C3F0B,3456FE,4CC8A1,683A1E,881544,981888,AC17C8,B80756,CC03D9,E0553D,E0CBBC,F89E28 o="Cisco Meraki"
+00180A,0C8DDB,2C3F0B,3456FE,388479,4CC8A1,683A1E,6CDEA9,881544,981888,A8469D,AC17C8,B80756,CC03D9,E0553D,E0CBBC,F89E28 o="Cisco Meraki"
00180B o="Brilliant Telecommunications"
00180C o="Optelian Access Networks"
00180D o="Terabytes Server Storage Tech Corp"
@@ -5624,7 +5624,7 @@
00187F o="ZODIANET"
001880 o="Maxim Integrated Products"
001881 o="Buyang Electronics Industrial Co., Ltd"
-001882,001E10,002568,00259E,002EC7,0034FE,00464B,005A13,00664B,009ACD,00BE3B,00E0FC,00F81C,04021F,0425C5,042758,043389,044A6C,044F4C,047503,047970,04885F,048C16,049FCA,04B0E7,04BD70,04C06F,04F938,04FE8D,0819A6,08318B,084F0A,086361,087A4C,08C021,08E84F,0C2C54,0C37DC,0C41E9,0C45BA,0C704A,0C8FFF,0C96BF,0CB527,0CC6CC,0CD6BD,100177,101B54,104400,104780,105172,10B1F8,10C172,10C3AB,10C61F,1409DC,143004,143CC3,14579F,145F94,149D09,14A0F8,14A51A,14B968,14D11F,14D169,18022D,183D5E,185644,18C58A,18CF24,18D276,18DED7,1C151F,1C1D67,1C20DB,1C4363,1C599B,1C6758,1C7F2C,1C8E5C,1CAECB,1CB796,2008ED,200BC7,20283E,202BC1,203DB2,2054FA,20658E,20A680,20DA22,20F17C,20F3A3,2400BA,240995,24166D,241FA0,242E02,243154,244427,244C07,2469A5,247F3C,249EAB,24A52C,24BCF8,24DA33,24DBAC,24DF6A,24FB65,2811EC,283152,283CE4,2841C6,285FDB,286ED4,289E97,28A6DB,28B448,28DEE5,28E34E,2C1A01,2C55D3,2C58E8,2C97B1,2C9D1E,2CAB00,2CCF58,304596,307496,308730,30A1FA,30D17E,30E98E,30F335,30FBB8,30FD65,3400A3,340A98,3412F9,341E6B,342912,342EB6,346AC2,346BD3,347916,34A2A2,34B354,34CDBE,38378B,3847BC,384C4F,38BC01,38EB47,38F889,38FB14,3C15FB,3C4711,3C678C,3C7843,3C9D56,3CCD5D,3CDFBD,3CE824,3CF808,3CFA43,404D8E,407D0F,40CBA8,40EEDD,44004D,4455B1,4459E3,446747,446A2E,446EE5,447654,4482E5,44A191,44C346,44D791,480031,483C0C,483FE9,48435A,4846FB,485702,486276,487B6B,488EEF,48AD08,48D539,48DB50,48DC2D,48F8DB,48FD8E,4C1FCC,4C5499,4C8BEF,4CB16C,4CD0CB,4CD1A1,4CF55B,4CF95D,4CFB45,50016B,5001D9,5004B8,501D93,505DAC,50680A,506F77,509F27,50A72B,541310,5425EA,5434EF,5439DF,54511B,548998,549209,54A51B,54B121,54BAD6,581F28,582575,582AF7,58605F,587F66,58BAD4,58D759,58F987,5C0339,5C0979,5C4CA9,5C546D,5C7D5E,5CA86A,5CB395,5CB43E,5CC307,5CE883,5CF96A,600810,60123C,602E20,608334,60D755,60DE44,60DEF3,60E701,60F18A,60FA9D,6416F0,642CAC,643E8C,646D6C,64A651,684AAE,6889C1,688F84,68A03E,68A0F6,68A828,68CC6E,6C1632,6CB749,6CEBB6,70192F,702F35,7054F5,70723C,707990,707BE8,708A09,70A8E3,70C7F2,70D313,70FD45,745909,745AAA,7460FA,74882A,749D8F,74A063,74A528,74C14F,74D21D,7817BE,781DBA,785860,786256,786A89,78B46A,78D752,78F557,78F5FD,7C11CB,7C1CF1,7C6097,7C7668,7C7D3D,7C942A,7CA177,7CA23E,7CB15D,7CC385,7CD9A0,801382,8038BC,804126,806933,80717A,807D14,80B575,80B686,80D09B,80D4A5,80FB06,8421F1,8446FE,844765,845B12,847637,849FB5,84A8E4,84A9C4,84AD58,84BE52,84DBAC,88108F,881196,8828B3,883FD3,88403B,884477,8853D4,886639,888603,88A2D7,88BCC1,88BFE4,88CEFA,88CF98,88E3AB,88F56E,88F872,8C0D76,8C15C7,8C2505,8C34FD,8C426D,8C683A,8C6D77,8CE5EF,8CEBC6,8CFD18,900325,9017AC,9017C8,902BD2,904E2B,90671C,909497,94049C,940B19,940E6B,94772B,94D00D,94DBDA,94E7EA,94FE22,9835ED,989C57,98E7F5,9C1D36,9C28EF,9C37F4,9C52F8,9C69D1,9C713A,9C741A,9C7DA3,9CB2B2,9CC172,9CE374,A0086F,A01C8D,A057E3,A08CF8,A08D16,A0A33B,A0DF15,A0F479,A400E2,A416E7,A47174,A4933F,A49947,A49B4F,A4BA76,A4BE2B,A4C64F,A4CAA0,A4DCBE,A80C63,A82BCD,A8494D,A87D12,A8C83A,A8CA7B,A8E544,A8F5AC,AC075F,AC4E91,AC6175,AC751D,AC853D,AC8D34,AC9232,ACB3B5,ACCF85,ACE215,ACE342,ACE87B,ACF970,B00875,B05508,B05B67,B08900,B0E17E,B0E5ED,B0EB57,B40931,B41513,B43052,B44326,B46E08,B48655,B4B055,B4CD27,B4F58E,B4FBF9,B808D7,B89436,B8BC1B,B8C385,B8E3B1,BC25E0,BC3D85,BC3F8F,BC620E,BC7574,BC7670,BC9C31,BCB0E7,BCE265,C07009,C0BFC0,C0F4E6,C40528,C40683,C4072F,C4447D,C4473F,C467D1,C486E9,C49F4C,C4B8B4,C4F081,C4FF1F,C80CC8,C81451,C81FBE,C850CE,C85195,C88D83,C894BB,C8A776,C8C2FA,C8C465,C8D15E,CC0577,CC53B5,CC64A6,CC96A0,CCA223,CCBBFE,CCCC81,D016B4,D02DB3,D03E5C,D065CA,D06F82,D07AB5,D0C65B,D0D04B,D0D783,D0EFC1,D0FF98,D440F0,D4612E,D462EA,D46AA8,D46BA6,D46E5C,D494E8,D4A148,D4B110,D4F9A1,D82918,D8490B,D89B3B,D8C771,DC094C,DC16B2,DC21E2,DC729B,DC9088,DC9914,DCC64B,DCD2FC,DCD916,DCEE06,E00084,E0191D,E0247F,E02481,E02861,E03676,E09796,E0A3AC,E0CC7A,E40EEE,E419C1,E43493,E435C8,E468A3,E472E2,E47E66,E48326,E4A7C5,E4A8B6,E4C2D1,E4FB5D,E4FDA1,E8088B,E84DD0,E86819,E884C6,E8ABF3,E8BDD1,E8CD2D,EC233D,EC388F,EC4D47,EC5623,EC8914,EC8C9A,ECCB30,F00FEC,F02FA7,F033E5,F03F95,F04347,F063F9,F09838,F0C850,F0E4A2,F41D6B,F44C7F,F4559C,F4631F,F47960,F48E92,F49FF3,F4A4D6,F4B78D,F4BF80,F4C714,F4CB52,F4DCF9,F4DEAF,F4E3FB,F4E5F2,F80113,F823B2,F83DFF,F84ABF,F86EEE,F87588,F898B9,F898EF,F89A78,F8BF09,F8C39E,F8E811,FC1BD1,FC3F7C,FC48EF,FC8743,FC9435,FCAB90,FCBCD1,FCE33C o="HUAWEI TECHNOLOGIES CO.,LTD"
+001882,001E10,002568,00259E,002EC7,0034FE,00464B,005A13,006151,00664B,009ACD,00BE3B,00E0FC,00E406,00F81C,04021F,0425C5,042758,043389,044A6C,044F4C,047503,047970,04885F,048C16,049FCA,04B0E7,04BD70,04C06F,04E795,04F938,04FE8D,0819A6,08318B,084F0A,086361,087A4C,08C021,08E84F,0C2C54,0C31DC,0C37DC,0C41E9,0C45BA,0C704A,0C8FFF,0C96BF,0CB527,0CC6CC,0CD6BD,100177,101B54,104400,104780,105172,10B1F8,10C172,10C3AB,10C61F,1409DC,1413FB,143004,143CC3,14579F,145F94,149D09,14A0F8,14A51A,14B968,14D11F,14D169,18022D,183D5E,185644,18C58A,18CF24,18D276,18DED7,1C151F,1C1D67,1C20DB,1C3D2F,1C4363,1C599B,1C6758,1C7F2C,1C8E5C,1CAECB,1CB796,2008ED,200BC7,20283E,202BC1,203DB2,2054FA,20658E,20A680,20AB48,20DA22,20F17C,20F3A3,2400BA,240995,24166D,241FA0,242E02,243154,244427,244C07,2469A5,247F3C,2491BB,249EAB,24A52C,24BCF8,24DA33,24DBAC,24DF6A,24FB65,2811EC,283152,283CE4,2841C6,285FDB,2868D2,286ED4,289E97,28A6DB,28B448,28DEE5,28E34E,2C1A01,2C55D3,2C58E8,2C97B1,2C9D1E,2CAB00,2CCF58,304596,307496,308730,30A1FA,30C50F,30D17E,30E98E,30F335,30FBB8,30FD65,3400A3,340A98,3412F9,341E6B,342912,342EB6,345840,346AC2,346BD3,347916,34A2A2,34B354,34CDBE,38378B,3847BC,384C4F,38881E,38BC01,38EB47,38F889,38FB14,3C15FB,3C306F,3C4711,3C678C,3C7843,3C9D56,3CCD5D,3CDFBD,3CE824,3CF808,3CFA43,404D8E,407D0F,40CBA8,40EEDD,44004D,44227C,4455B1,4459E3,446747,446A2E,446EE5,447654,4482E5,44A191,44C346,44D791,480031,482CD0,483C0C,483FE9,48435A,4846FB,485702,486276,487B6B,488EEF,48AD08,48D539,48DB50,48DC2D,48F8DB,48FD8E,4C1FCC,4C5499,4C8BEF,4CAE13,4CB16C,4CD0CB,4CD1A1,4CF55B,4CF95D,4CFB45,50016B,5001D9,5004B8,501D93,50464A,505DAC,50680A,506F77,509F27,50A72B,541310,5425EA,5434EF,5439DF,54511B,548998,549209,54A51B,54B121,54BAD6,581F28,582575,582AF7,58605F,587F66,58BAD4,58D061,58D759,58F987,5C0339,5C0979,5C4CA9,5C546D,5C647A,5C7D5E,5C9157,5CA86A,5CB395,5CB43E,5CC307,5CE883,5CF96A,600810,60123C,602E20,607ECD,608334,60D755,60DE44,60DEF3,60E701,60F18A,60FA9D,6416F0,642CAC,643E8C,645E10,646D6C,64A651,684AAE,6889C1,688F84,68A03E,68A0F6,68A828,68CC6E,68E209,6C1632,6C442A,6CB749,6CEBB6,70192F,702F35,7054F5,70723C,707990,707BE8,708A09,708CB6,70A8E3,70C7F2,70D313,70FD45,745909,745AAA,7460FA,74882A,749D8F,74A063,74A528,74C14F,74D21D,7817BE,781DBA,785773,785860,786256,786A89,78B46A,78D752,78F557,78F5FD,7C11CB,7C1CF1,7C6097,7C7668,7C7D3D,7C942A,7CA177,7CA23E,7CB15D,7CC385,7CD9A0,801382,8038BC,804126,806933,80717A,807D14,80B575,80B686,80D09B,80D4A5,80E1BF,80FB06,8421F1,843E92,8446FE,844765,845B12,847637,849FB5,84A8E4,84A9C4,84AD58,84BE52,84DBAC,88108F,881196,8828B3,883FD3,884033,88403B,884477,8853D4,886639,888603,88A2D7,88BCC1,88BFE4,88CEFA,88CF98,88E3AB,88F56E,88F872,8C0D76,8C15C7,8C2505,8C34FD,8C426D,8C683A,8C6D77,8CE5EF,8CEBC6,8CFD18,900325,9016BA,90173F,9017AC,9017C8,902BD2,903FEA,904E2B,90671C,909497,90A5AF,9400B0,94049C,940B19,940E6B,942533,94772B,94D00D,94DBDA,94E7EA,94FE22,9835ED,9844CE,989C57,98E7F5,9C1D36,9C28EF,9C37F4,9C52F8,9C69D1,9C713A,9C741A,9C7DA3,9CB2B2,9CC172,9CE374,A0086F,A01C8D,A057E3,A08CF8,A08D16,A0A33B,A0DF15,A0F479,A400E2,A416E7,A47174,A47CC9,A4933F,A49947,A49B4F,A4BA76,A4BDC4,A4BE2B,A4C64F,A4CAA0,A4DCBE,A80C63,A82BCD,A8494D,A87D12,A8C83A,A8CA7B,A8E544,A8F5AC,AC075F,AC4E91,AC6089,AC6175,AC751D,AC853D,AC8D34,AC9232,ACB3B5,ACCF85,ACE215,ACE342,ACE87B,ACF970,B00875,B05508,B05B67,B0761B,B08900,B0E17E,B0E5ED,B0EB57,B40931,B41513,B43052,B44326,B46E08,B48655,B4B055,B4CD27,B4F58E,B4FBF9,B808D7,B89436,B8BC1B,B8C385,B8E3B1,BC25E0,BC3D85,BC3F8F,BC620E,BC7574,BC7670,BC76C5,BC9C31,BCB0E7,BCE265,C07009,C0BC9A,C0BFC0,C0F4E6,C0F6C2,C0FFA8,C40528,C40683,C4072F,C40D96,C4447D,C4473F,C467D1,C486E9,C49F4C,C4A402,C4B8B4,C4F081,C4FF1F,C80CC8,C81451,C81FBE,C850CE,C85195,C88D83,C894BB,C8A776,C8C2FA,C8C465,C8D15E,C8E600,CC0577,CC53B5,CC64A6,CC96A0,CCA223,CCB182,CCBBFE,CCCC81,CCD73C,D016B4,D02DB3,D03E5C,D065CA,D06F82,D07AB5,D0C65B,D0D04B,D0D783,D0EFC1,D0FF98,D440F0,D44649,D4612E,D462EA,D46AA8,D46BA6,D46E5C,D494E8,D4A148,D4B110,D4D51B,D4F9A1,D82918,D8490B,D89B3B,D8C771,DC094C,DC16B2,DC21E2,DC729B,DC9088,DC9914,DCC64B,DCD2FC,DCD916,DCEE06,DCEF80,E00084,E0191D,E0247F,E02481,E02861,E03676,E09796,E0A3AC,E0CC7A,E40EEE,E419C1,E43493,E435C8,E43EC6,E468A3,E472E2,E47E66,E48326,E4A7C5,E4A8B6,E4C2D1,E4D373,E4FB5D,E4FDA1,E8088B,E8136E,E84DD0,E86819,E884C6,E8ABF3,E8BDD1,E8CD2D,EC233D,EC388F,EC4D47,EC5623,EC753E,EC8914,EC8C9A,ECC01B,ECCB30,F00FEC,F02FA7,F033E5,F03F95,F04347,F063F9,F09838,F09BB8,F0C850,F0E4A2,F41D6B,F44C7F,F4559C,F4631F,F47960,F48E92,F49FF3,F4A4D6,F4B78D,F4BF80,F4C714,F4CB52,F4DCF9,F4DEAF,F4E3FB,F4E5F2,F80113,F823B2,F82E3F,F83DFF,F84ABF,F86EEE,F87588,F898B9,F898EF,F89A78,F8BF09,F8C39E,F8E811,FC1BD1,FC3F7C,FC48EF,FC73FB,FC8743,FC9435,FCAB90,FCBCD1,FCE33C o="HUAWEI TECHNOLOGIES CO.,LTD"
001883 o="FORMOSA21 INC."
001884,C47130 o="Fon Technology S.L."
001885,001F92 o="Avigilon Corporation"
@@ -5774,7 +5774,7 @@
00192B o="Aclara RF Systems Inc."
00192E o="Spectral Instruments, Inc."
001931 o="Balluff GmbH"
-001932 o="Gude Analog- und Digialsysteme GmbH"
+001932 o="Gude Systems GmbH"
001933 o="Strix Systems, Inc."
001934 o="TRENDON TOUCH TECHNOLOGY CORP."
001935 o="DUERR DENTAL AG"
@@ -5832,7 +5832,6 @@
001974 o="16063"
001975 o="Beijing Huisen networks technology Inc"
001976 o="Xipher Technologies, LLC"
-001977,08EA44,206C8A,348584,4018B1,5859C2,787D53,7C95B1,885BDD,90B832,9C5D12,B87CF2,BCF310,C413E2,C8665D,C8675E,D854A2,E01C41,F09CE9,F4EAB5 o="Aerohive Networks Inc."
001978 o="Datum Systems, Inc."
00197A o="MAZeT GmbH"
00197B o="Picotest Corp."
@@ -5865,7 +5864,7 @@
00199A o="EDO-EVI"
00199B o="Diversified Technical Systems, Inc."
00199C o="CTRING"
-00199D,006B9E,2C641F,3C9BD6,A06A44,A48D3B,C41CFF,CC95D7 o="Vizio, Inc"
+00199D,006B9E,0C8B7D,2C641F,3C9BD6,A06A44,A48D3B,C41CFF,CC95D7 o="Vizio, Inc"
00199E o="Nifty"
00199F o="DKT A/S"
0019A0 o="NIHON DATA SYSTENS, INC."
@@ -5936,7 +5935,7 @@
0019F8 o="Embedded Systems Design, Inc."
0019F9 o="TDK-Lambda"
0019FA o="Cable Vision Electronics CO., LTD."
-0019FB,04819B,0CF9C0,2047ED,24A7DC,38A6CE,3C8994,7050AF,783E53,7C4CA5,807215,80751F,900218,902106,9C31C3,A0BDCD,B03E51,C03E0F,D058FC,D452EE,D4DACD o="BSkyB Ltd"
+0019FB,04819B,0CF9C0,2047ED,24A7DC,38A6CE,3C8994,507043,7050AF,783E53,7C4CA5,807215,80751F,900218,902106,9C31C3,A0BDCD,B03E51,C03E0F,C0A36E,D058FC,D452EE,D4DACD o="BSkyB Ltd"
0019FC o="PT. Ufoakses Sukses Luarbiasa"
0019FE o="SHENZHEN SEECOMM TECHNOLOGY CO.,LTD."
0019FF o="Finnzymes"
@@ -5957,7 +5956,7 @@
001A0E o="Cheng Uei Precision Industry Co.,Ltd"
001A0F o="Sistemas Avanzados de Control, S.A."
001A10 o="LUCENT TRANS ELECTRONICS CO.,LTD"
-001A11,00F620,089E08,1CF29A,20DFB9,240588,28BD89,30FD38,388B59,3C286D,3C5AB4,3C8D20,44070B,48D6D5,546009,58CB52,703ACB,7C2EBD,7CD95C,883D24,88541F,900CC8,9495A0,94EB2C,98D293,A47733,B02A43,B0E4D5,CCA7C1,CCF411,D4F547,D86C63,E4F042,F05C77,F072EA,F0EF86,F40304,F4F5D8,F4F5E8,F80FF9,F88FCA o="Google, Inc."
+001A11,00F620,089E08,14C14E,1CF29A,20DFB9,240588,28BD89,30FD38,388B59,3C286D,3C5AB4,3C8D20,44070B,44BB3B,48D6D5,546009,58CB52,60B76E,703ACB,7C2EBD,7CD95C,883D24,88541F,900CC8,9495A0,94EB2C,98D293,A47733,B02A43,B0E4D5,CCA7C1,CCF411,D4F547,D86C63,D88C79,E4F042,F05C77,F072EA,F0EF86,F40304,F4F5D8,F4F5E8,F80FF9,F88FCA o="Google, Inc."
001A12 o="Essilor"
001A13 o="Wanlida Group Co., LTD"
001A14 o="Xin Hua Control Engineering Co.,Ltd."
@@ -5978,7 +5977,7 @@
001A26 o="Deltanode Solutions AB"
001A27 o="Ubistar"
001A28 o="ASWT Co., LTD. Taiwan Branch H.K."
-001A29,90B97D o="Johnson Outdoors Marine Electronics d/b/a Minnkota"
+001A29,90B97D,C87125 o="Johnson Outdoors Marine Electronics d/b/a Minnkota"
001A2B o="Ayecom Technology Co., Ltd."
001A2C o="SATEC Co.,LTD"
001A2D o="The Navvo Group"
@@ -5997,7 +5996,7 @@
001A3C o="Technowave Ltd."
001A3D o="Ajin Vision Co.,Ltd"
001A3E o="Faster Technology LLC"
-001A3F,180D2C,58108C o="Intelbras"
+001A3F,180D2C,24FD0D,58108C,D8778B o="Intelbras"
001A40 o="A-FOUR TECH CO., LTD."
001A41 o="INOCOVA Co.,Ltd"
001A42 o="Techcity Technology co., Ltd."
@@ -6082,7 +6081,7 @@
001AA6 o="Telefunken Radio Communication Systems GmbH &CO.KG"
001AA7 o="Torian Wireless"
001AA8 o="Mamiya Digital Imaging Co., Ltd."
-001AA9,20934D,2875D8,54F6C5,5CCBCA,C40938 o="FUJIAN STAR-NET COMMUNICATION CO.,LTD"
+001AA9,20934D,2875D8,345594,54F6C5,5CCBCA,C40938 o="FUJIAN STAR-NET COMMUNICATION CO.,LTD"
001AAA o="Analogic Corp."
001AAB o="eWings s.r.l."
001AAC o="Corelatus AB"
@@ -6177,7 +6176,7 @@
001B14 o="Carex Lighting Equipment Factory"
001B15 o="Voxtel, Inc."
001B16 o="Celtro Ltd."
-001B17,00869C,08306B,08661F,240B0A,34E5EC,58493B,786D94,7C89C1,84D412,B40C25,C42456,D41D71,D49CF4,D4F4BE,E4A749,E8986D,EC6881 o="Palo Alto Networks"
+001B17,00869C,080342,08306B,08661F,240B0A,34E5EC,58493B,786D94,7C89C1,84D412,B40C25,C42456,D41D71,D49CF4,D4F4BE,E4A749,E8986D,EC6881 o="Palo Alto Networks"
001B18 o="Tsuken Electric Ind. Co.,Ltd"
001B19 o="IEEE I&M Society TC9"
001B1A o="e-trees Japan, Inc."
@@ -6267,7 +6266,7 @@
001B82 o="Taiwan Semiconductor Co., Ltd."
001B83 o="Finsoft Ltd"
001B84 o="Scan Engineering Telecom"
-001B85 o="MAN Diesel SE"
+001B85 o="MAN Energy Solutions"
001B87 o="Deepsound Tech. Co., Ltd"
001B88 o="Divinet Access Technologies Ltd"
001B89 o="EMZA Visual Sense Ltd."
@@ -6449,7 +6448,7 @@
001C5F o="Winland Electronics, Inc."
001C60 o="CSP Frontier Technologies,Inc."
001C61 o="Galaxy Microsystems LImited"
-001C62,001E75,001F6B,001FE3,0021FB,0022A9,002483,0025E5,0026E2,0034DA,003DE8,0057C1,00AA70,041B6D,08D46A,0C4885,10683F,10F1F2,10F96F,2021A5,2C54CF,2C598A,30766F,344DF7,34FCEF,3830F9,40B0FA,485929,48605F,505527,583F54,58A2B5,5C70A3,5CAF06,60E3AC,64899A,64BC0C,64C2DE,6CD68A,700514,74A722,78F882,7CF31B,805A04,88074B,88365F,88C9D0,8C3AE3,98B8BA,98D6F7,A039F7,A04F85,A09169,A816B2,A8922C,A8B86E,AC0D1B,ACF6F7,B4F1DA,B4F7A1,B81DAA,BCF5AC,C4438F,C49A02,C8F319,CCFA00,D013FD,DC0B34,E892A4,F01C13,F80CF3,F895C7,F8A9D0 o="LG Electronics (Mobile Communications)"
+001C62,001E75,001F6B,001FE3,0021FB,0022A9,002483,0025E5,0026E2,0034DA,003DE8,0057C1,00AA70,041B6D,08D46A,0C4885,10683F,10F1F2,10F96F,2021A5,2C54CF,2C598A,30766F,30FCEB,344DF7,34FCEF,3830F9,40B0FA,485929,48605F,48902F,505527,583F54,58A2B5,5C70A3,5CAF06,60E3AC,64899A,64BC0C,64C2DE,6CD68A,700514,74A722,78F882,7CF31B,805A04,88074B,88365F,88C9D0,8C3AE3,98B8BA,98D6F7,A039F7,A04F85,A09169,A816B2,A8922C,A8B86E,AC0D1B,ACF6F7,B4F1DA,B4F7A1,B81DAA,BCF5AC,C4438F,C49A02,C8F319,CCFA00,D013FD,DC0B34,E892A4,F01C13,F80CF3,F895C7,F8A9D0 o="LG Electronics (Mobile Communications)"
001C63 o="TRUEN"
001C64 o="Landis+Gyr"
001C65 o="JoeScan, Inc."
@@ -6466,7 +6465,7 @@
001C70 o="NOVACOMM LTDA"
001C71 o="Emergent Electronics"
001C72 o="Mayer & Cie GmbH & Co KG"
-001C73,28993A,444CA8,7483EF,985D82,C0D682,FCBD67 o="Arista Networks"
+001C73,28993A,444CA8,7483EF,985D82,C0D682,D4AFF7,FCBD67 o="Arista Networks"
001C74 o="Syswan Technologies Inc."
001C75 o="Segnet Ltd."
001C76 o="The Wandsworth Group Ltd"
@@ -6474,7 +6473,7 @@
001C78 o="WYPLAY SAS"
001C79 o="Cohesive Financial Technologies LLC"
001C7A o="Perfectone Netware Company Ltd"
-001C7B,FC4AE9 o="Castlenet Technology Inc."
+001C7B,003054,FC4AE9 o="Castlenet Technology Inc."
001C7C,021C7C o="PERQ SYSTEMS CORPORATION"
001C7D o="Excelpoint Manufacturing Pte Ltd"
001C80 o="New Business Division/Rhea-Information CO., LTD."
@@ -6493,7 +6492,7 @@
001C8D o="Mesa Imaging"
001C8F o="Advanced Electronic Design, Inc."
001C90 o="Empacket Corporation"
-001C91 o="Gefen Inc."
+001C91 o="Gefen LLC"
001C92 o="Tervela"
001C93 o="ExaDigm Inc"
001C94 o="LI-COR Biosciences"
@@ -6546,7 +6545,7 @@
001CD2 o="King Champion (Hong Kong) Limited"
001CD3 o="ZP Engineering SEL"
001CD5 o="ZeeVee, Inc."
-001CD7,9CDF03,A056B2 o="Harman/Becker Automotive Systems GmbH"
+001CD7,2856C1,9CDF03,A056B2,F8E877 o="Harman/Becker Automotive Systems GmbH"
001CD8 o="BlueAnt Wireless"
001CD9 o="GlobalTop Technology Inc."
001CDA o="Exegin Technologies Limited"
@@ -6575,7 +6574,7 @@
001CF7 o="AudioScience"
001CF8 o="Parade Technologies, Ltd."
001CFA,B83A9D o="Alarm.com"
-001CFD,00CC3F,1C549E,48D0CF,7091F3,8C3A7E,9CAC6D,ACEB51,E80FC8,F0B31E o="Universal Electronics, Inc."
+001CFD,00CC3F,1C549E,209E79,40B31E,48D0CF,5061F6,6888A1,7091F3,8C3A7E,9CAC6D,ACEB51,B8E3EE,E80FC8,F0B31E o="Universal Electronics, Inc."
001CFE o="Quartics Inc"
001CFF o="Napera Networks Inc"
001D00 o="Brivo Systems, LLC"
@@ -6583,6 +6582,7 @@
001D02 o="Cybertech Telecom Development"
001D03 o="Design Solutions Inc."
001D04 o="Zipit Wireless, Inc."
+001D05 o="Cooper Lighting Solutions"
001D06 o="HM Electronics, Inc."
001D07 o="Shenzhen Sang Fei Consumer Communications Co.,Ltd"
001D08,CCD3E2 o="Jiangsu Yinhe Electronics Co.,Ltd."
@@ -6749,7 +6749,7 @@
001DDC o="HangZhou DeChangLong Tech&Info Co.,Ltd"
001DDD o="DAT H.K. LIMITED"
001DDE o="Zhejiang Broadcast&Television Technology Co.,Ltd."
-001DDF,004279,0CA694,98523D,B8D50B,F8DF15,FCA89A o="Sunitec Enterprise Co.,Ltd"
+001DDF,004279,042144,0CA694,98523D,B8D50B,F8DF15,FCA89A o="Sunitec Enterprise Co.,Ltd"
001DE2 o="Radionor Communications"
001DE3 o="Intuicom"
001DE4 o="Visioneered Image Systems"
@@ -6817,7 +6817,7 @@
001E2E o="SIRTI S.p.A."
001E2F o="DiMoto Pty Ltd"
001E30 o="Shireen Inc"
-001E31 o="INFOMARK CO.,LTD."
+001E31,5865E6,884067 o="infomark"
001E32 o="Zensys"
001E33,00266C,008CFA,00A0D1,3868DD,7CD30A o="INVENTEC CORPORATION"
001E34 o="CryptoMetrics"
@@ -6909,7 +6909,6 @@
001EAF o="Ophir Optronics Ltd"
001EB0 o="ImesD Electronica S.L."
001EB1 o="Cryptsoft Pty Ltd"
-001EB2 o="LG innotek"
001EB3,4CBC72 o="Primex Wireless"
001EB4 o="UNIFAT TECHNOLOGY LTD."
001EB5 o="Ever Sparkle Technologies Ltd"
@@ -6946,7 +6945,7 @@
001EDD o="WASKO S.A."
001EDE o="BYD COMPANY LIMITED"
001EDF o="Master Industrialization Center Kista"
-001EE0 o="Urmet Domus SpA"
+001EE0 o="Urmet SpA"
001EE3 o="T&W Electronics (ShenZhen) Co.,Ltd"
001EE4 o="ACS Solutions France"
001EE6 o="Shenzhen Advanced Video Info-Tech Co., Ltd."
@@ -7182,7 +7181,7 @@
002008 o="CABLE & COMPUTER TECHNOLOGY"
002009 o="PACKARD BELL ELEC., INC."
00200A o="SOURCE-COMM CORP."
-00200B o="OCTAGON SYSTEMS CORP."
+00200B,FC956A o="OCTAGON SYSTEMS CORP."
00200C o="ADASTRA SYSTEMS CORP."
00200D o="CARL ZEISS"
00200E o="NSSLGlobal Technologies AS"
@@ -7326,7 +7325,7 @@
0020A2 o="GALCOM NETWORKING LTD."
0020A4 o="MULTIPOINT NETWORKS"
0020A5 o="API ENGINEERING"
-0020A6 o="Proxim Wireless"
+0020A6,04F5F4 o="Proxim Wireless"
0020A7 o="PAIRGAIN TECHNOLOGIES, INC."
0020A8 o="SAST TECHNOLOGY CORP."
0020A9 o="WHITE HORSE INDUSTRIAL"
@@ -7682,7 +7681,7 @@
00225C o="Multimedia & Communication Technology"
00225D o="Digicable Network India Pvt. Ltd."
00225E o="Uwin Technologies Co.,LTD"
-00225F,00F48D,1063C8,18CF5E,1C659D,2016D8,20689D,24FD52,28E347,2CD05A,3010B3,3052CB,30D16B,3C9180,3C9509,3CA067,40F02F,446D57,48D224,505BC2,548CA0,5800E3,5C93A2,646E69,68A3C4,701A04,70C94E,70F1A1,74DE2B,74DFBF,74E543,803049,94E979,9822EF,9CB70D,A4DB30,ACB57D,ACE010,B00594,B88687,B8EE65,C8FF28,CCB0DA,D05349,D0DF9A,E4AAEA,E82A44,E8617E,E8C74F,E8D0FC,F82819,F8A2D6 o="Liteon Technology Corporation"
+00225F,00F48D,1063C8,18CF5E,1C659D,2016D8,20689D,24FD52,28E347,2CD05A,3010B3,3052CB,30D16B,3C9180,3C9509,3CA067,40F02F,446D57,48D224,505BC2,548CA0,5800E3,5C93A2,646E69,68A3C4,701A04,70C94E,70F1A1,74DE2B,74DFBF,74E543,803049,940853,94E979,9822EF,9CB70D,A4DB30,ACB57D,ACE010,B00594,B88687,B8EE65,C8FF28,CCB0DA,D05349,D0DF9A,D8F3BC,E4AAEA,E82A44,E8617E,E8C74F,E8D0FC,F82819,F8A2D6 o="Liteon Technology Corporation"
002260 o="AFREEY Inc."
002261,305890 o="Frontier Silicon Ltd"
002262 o="BEP Marine"
@@ -7906,7 +7905,7 @@
002386 o="Tour & Andersson AB"
002387 o="ThinkFlood, Inc."
002388 o="V.T. Telematica S.p.a."
-00238A,144E2A,1892A4,1C1161,208058,2C39C1,54C33E,7487BB,9C7A03,C4836F,D0196A,ECB0E1 o="Ciena Corporation"
+00238A,144E2A,1892A4,1C1161,208058,2C39C1,54C33E,7487BB,78D71A,94434D,9C7A03,C4836F,D0196A,ECB0E1 o="Ciena Corporation"
00238D o="Techno Design Co., Ltd."
00238F o="NIDEC COPAL CORPORATION"
002390 o="Algolware Corporation"
@@ -7926,7 +7925,7 @@
0023A4 o="New Concepts Development Corp."
0023A5 o="SageTV, LLC"
0023A6 o="E-Mon"
-0023A7,88DA1A o="Redpine Signals, Inc."
+0023A7,80C955,88DA1A o="Redpine Signals, Inc."
0023A8 o="Marshall Electronics"
0023A9 o="Beijing Detianquan Electromechanical Equipment Co., Ltd"
0023AA,0409A5 o="HFR, Inc."
@@ -8573,7 +8572,7 @@
0026FE o="MKD Technology Inc."
002700 o="Shenzhen Siglent Technology Co., Ltd."
002701 o="INCOstartec GmbH"
-002702 o="SolarEdge Technologies"
+002702,84D6C5 o="SolarEdge Technologies"
002703 o="Testech Electronics Pte Ltd"
002704 o="Accelerated Concepts, Inc"
002705 o="Sectronic"
@@ -8601,8 +8600,9 @@
00289F o="Semptian Co., Ltd."
002926 o="Applied Optoelectronics, Inc Taiwan Branch"
002AAF o="LARsys-Automation GmbH"
+002B67,507B9D,5405DB,54E1AD,68F728,8C1645,98FA9B,C85B76,E86A64,F875A4 o="LCFC(HeFei) Electronics Technology co., ltd"
002D76 o="TITECH GmbH"
-002FD9,006762,00BE9E,04C1B9,04ECBB,0C2A86,0C35FE,0C6ABC,0C8447,105887,1077B0,1088CE,10DC4A,142233,14E9B2,185282,18A3E8,18D225,1C398A,1C60D2,1CDE57,20896F,24CACB,28BF89,341A35,344B3D,34BF90,38144E,3CFB5C,444B7E,48555F,48A0F8,48F97C,50C6AD,543E64,54DF24,583BD9,5CE3B6,60B617,68FEDA,6C3845,6C9E7C,6CA858,70B921,7412BB,741E93,74C9A3,74CC39,74E19A,74EC42,803AF4,809FAB,80C7C5,88947E,8C5FAD,9055DE,94D505,9C88AD,9CFEA1,A013CB,A41908,A8E705,ACC25D,B0E2E5,B8C716,BC9889,BCC00F,C03656,C464B7,C4F0EC,C84029,C8F6C8,CC0677,CC500A,D00492,D041C9,D05995,D092FA,D45800,D467E7,D4AD2D,D4F786,D4FC13,E02AE6,E42F26,E8018D,E85AD1,E8910F,E8C417,E8D099,EC8AC7,F0407B,F08CFB,F4573E,F84D33,F8AFDB,F8C96C,FC61E9,FCA6CD,FCF647 o="Fiberhome Telecommunication Technologies Co.,LTD"
+002FD9,006762,00BE9E,04A2F3,04C1B9,04ECBB,0C2A86,0C35FE,0C6ABC,0C8447,105887,1077B0,1088CE,10DC4A,142233,14E9B2,185282,18A3E8,18D225,1C398A,1C60D2,1CDE57,20896F,24CACB,28BF89,341A35,344B3D,34BF90,38144E,387A3C,3CFB5C,444B7E,48555F,48A0F8,48F97C,50C6AD,543E64,54DF24,583BD9,5CE3B6,60B617,68FEDA,6C09BF,6C3845,6C9E7C,6CA4D1,6CA858,70B921,7412BB,741E93,74C9A3,74CC39,74E19A,74EC42,7CC77E,7CF9A0,803AF4,809FAB,80C7C5,88947E,8C5FAD,9055DE,94D505,9C88AD,9CFEA1,A013CB,A0D83D,A41908,A8E705,ACC25D,B0E2E5,B8C716,BC9889,BCC00F,C03656,C464B7,C4F0EC,C84029,C8F6C8,CC0677,CC500A,D00492,D041C9,D05995,D092FA,D45800,D467E7,D4AD2D,D4F786,D4FC13,D89ED4,E02AE6,E42F26,E8018D,E85AD1,E8910F,E8C417,E8D099,EC8AC7,F0407B,F08CFB,F4573E,F46FED,F84D33,F8AFDB,F8C96C,FC61E9,FCA6CD,FCF647 o="Fiberhome Telecommunication Technologies Co.,LTD"
003000 o="ALLWELL TECHNOLOGY CORP."
003001 o="SMP"
003002 o="Expand Networks"
@@ -8679,7 +8679,6 @@
003051 o="ORBIT AVIONIC & COMMUNICATION"
003052 o="ELASTIC NETWORKS"
003053 o="Basler AG"
-003054 o="CASTLENET TECHNOLOGY, INC."
003055 o="Renesas Technology America, Inc."
003057 o="QTelNet, Inc."
003058 o="API MOTION"
@@ -9092,7 +9091,7 @@
004252 o="RLX Technologies"
0043FF o="KETRON S.R.L."
004501 o="Midmark RTLS"
-004BF3,386B1C,44F971,503AA0,508965,640DCE,BC54FC,C0A5DD,E4F3F5 o="SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD."
+004BF3,386B1C,44F971,503AA0,508965,640DCE,90769F,BC54FC,C0A5DD,E4F3F5 o="SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD."
004D32 o="Andon Health Co.,Ltd."
005000 o="NEXO COMMUNICATIONS, INC."
005001 o="YAMASHITA SYSTEMS CORP."
@@ -9285,6 +9284,7 @@
0050ED o="ANDA NETWORKS"
0050EE o="TEK DIGITEL CORPORATION"
0050EF o="SPE Systemhaus GmbH"
+0050F1,AC9A96,F04CD5 o="Maxlinear, Inc"
0050F2 o="MICROSOFT CORP."
0050F3 o="GLOBAL NET INFORMATION CO., Ltd."
0050F4 o="SIGMATEK GMBH & CO. KG"
@@ -9297,7 +9297,6 @@
0050FD o="VISIONCOMM CO., LTD."
0050FE o="PCTVnet ASA"
0050FF o="HAKKO ELECTRONICS CO., LTD."
-0051ED,044EAF,203DBD,2C2BF9,30A9DE,44CB8B,60AB14,7440BE,7C1C4E,944444,A06FAA,B4E62A,C4366C,C80210,CC8826,E8F2E2 o="LG Innotek"
005218 o="Wuxi Keboda Electron Co.Ltd"
0054BD o="Swelaser AB"
00583F o="PC Aquarius"
@@ -9308,7 +9307,7 @@
005BA1 o="shanghai huayuan chuangxin software CO., LTD."
005CB1 o="Gospell DIGITAL TECHNOLOGY CO., LTD"
005D03 o="Xilinx, Inc"
-005E0C,04F128,203956,4C6AF6,60D89C,6CA928,6CC4D5,748A28,88517A,90A365,94EE9F,A028ED,A83E0E,AC5775,BC024A,C010B1,F8ADCB o="HMD Global Oy"
+005E0C,04F128,203956,44917C,4C6AF6,60D89C,6CA928,6CC4D5,748A28,88517A,90A365,94EE9F,A028ED,A83E0E,AC5775,BC024A,C010B1,CC9ECA,F8ADCB o="HMD Global Oy"
006000 o="XYCOM INC."
006001 o="InnoSys, Inc."
006002 o="SCREEN SUBTITLING SYSTEMS, LTD"
@@ -9395,7 +9394,7 @@
006061 o="WHISTLE COMMUNICATIONS CORP."
006062 o="TELESYNC, INC."
006063 o="PSION DACOM PLC."
-006065 o="BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH"
+006065 o="B&R Industrial Automation GmbH"
006066 o="LACROIX Trafic"
006067 o="ACER NETXUS INC."
006068 o="Dialogic Corporation"
@@ -9533,9 +9532,10 @@
0060FD o="NetICs, Inc."
0060FE o="LYNX SYSTEM DEVELOPERS, INC."
0060FF o="QuVis, Inc."
+0063DE o="CLOUDWALK TECHNOLOGY CO.,LTD"
0064A6 o="Maquet CardioVascular"
-006619,00ADD5,00BB1C,048C9A,04D3B5,04F169,08F458,0C839A,0CE4A0,10327E,10E953,147740,14A32F,18703B,189E2C,18D98F,1C1386,246F8C,283334,2864B0,2C780E,2CC546,30A2C2,30AAE4,3446EC,347146,347E00,34B20A,4455C4,44C7FC,484C86,4C5077,5021EC,540DF9,54F294,5C78F8,6C06D6,740AE1,7422BB,7885F4,78C5F8,8C5AC1,94E4BA,94E9EE,980D51,A04147,A0D807,A4B61E,A85AE0,A8C252,ACBD70,B0735D,B0CCFE,B4A898,B4F18C,B827C5,BC1AE4,BC2EF6,C0B47D,C0B5CD,D005E4,D88ADC,D89E61,E04007,E0E0FC,E0F442,E83F67,EC3CBB,F0C42F,F4A59D o="Huawei Device Co., Ltd."
-0068EB,040E3C,3822E2,E8D8D1 o="HP Inc."
+006619,0094EC,00ADD5,00BB1C,048C9A,04C1D8,04D3B5,04F169,0831A4,08F458,0C839A,0CE4A0,10327E,105DDC,10E953,145120,147740,14A32F,14DE39,183CB7,18703B,189E2C,18AA0F,18D98F,1C1386,1C1FF1,241AE6,245F9F,246F8C,2481C7,24E9CA,283334,2848E7,285471,2864B0,2C780E,2CA042,2CC546,3066D0,308AF7,309610,30A2C2,30A998,30AAE4,3446EC,347146,347E00,34B20A,3CB233,400634,40B6E7,40DCA5,4455C4,44C7FC,4805E2,484C86,4C5077,5021EC,502873,50F7ED,50F958,540DF9,5455D5,5471DD,54D9C6,54F294,58F2FC,5C78F8,5CD89E,60AAEF,642315,64B0E8,681324,6C06D6,740AE1,7422BB,74452D,7804E3,7885F4,78C5F8,80CC12,80CFA2,8836CF,8C5AC1,8C5EBD,909838,90F644,9408C7,9437F7,94E4BA,94E9EE,980D51,982FF8,98B3EF,A04147,A0D807,A0DE0F,A43B0E,A446B4,A4AC0F,A4B61E,A4C54E,A4C74B,A83512,A83759,A85AE0,A8C092,A8C252,A8E978,ACBD70,B04502,B0735D,B0CCFE,B0FEE5,B4A898,B4F18C,B827C5,B88E82,BC1AE4,BC2EF6,BC7F7B,C083C9,C0B47D,C0B5CD,C0D193,C41688,C42B44,C4D738,C868DE,C8BC9C,C8CA63,CCB0A8,CCFF90,D005E4,D00DF7,D0B45D,D0F3F5,D4BBE6,D88ADC,D89E61,D8A491,D8EF42,DC333D,DC7385,DCD444,E04007,E0D462,E0E0FC,E0F442,E4268B,E83F67,EC3CBB,F05501,F0C42F,F0FAC7,F487C5,F4A59D,F82F65,F8AF05,FC862A o="Huawei Device Co., Ltd."
+0068EB,040E3C,3822E2,842AFD,B05CDA,BCE92F,E8D8D1,F80DAC o="HP Inc."
00692D,08A5C8,54C57A,60313B,60D21C,886B44 o="Sunnovo International Limited"
006B8E,8CAB8E,D842AC,F0EBD0 o="Shanghai Feixun Communication Co.,Ltd."
006BA0 o="SHENZHEN UNIVERSAL INTELLISYS PTE LTD"
@@ -9544,21 +9544,21 @@
006FF2,00A096,78617C,BC825D,C449BB,F0AB54 o="MITSUMI ELECTRIC CO.,LTD."
0070B0,0270B0 o="M/A-COM INC. COMPANIES"
0070B3,0270B3 o="DATA RECALL LTD."
-007147,00BB3A,00FC8B,0812A5,08849D,08A6BC,0C47C9,0CEE99,140AC5,149138,18742E,1C12B0,1C4D66,244CE3,34D270,38F73D,3C5CC4,40A2DB,40B4CD,440049,44650D,4C1744,4CEFC0,50DCE7,50F5DA,6837E9,6854FD,689A87,68DBF5,6C5697,747548,74C246,74D637,78E103,7C6166,7CD566,84D6D0,8871E5,A002DC,A40801,AC63BE,B0FC0D,B47C9C,C49500,CC9EA2,CCF735,DC54D7,F0272D,F08173,F0D2F1,F0F0A4,F4032A,F854B8,FC492D,FC65DE,FCA183,FCA667 o="Amazon Technologies Inc."
+007147,00BB3A,00FC8B,0812A5,08849D,08A6BC,0C47C9,0CEE99,140AC5,149138,18742E,1C12B0,1C4D66,1CFE2B,20A171,244CE3,34D270,38F73D,3C5CC4,40A2DB,40B4CD,440049,44650D,4843DD,4C1744,4CEFC0,50DCE7,50F5DA,6837E9,6854FD,689A87,68DBF5,6C5697,7458F3,747548,74A7EA,74C246,74D637,78E103,7C6166,7CD566,84D6D0,8871E5,A002DC,A0D0DC,A40801,AC63BE,B0FC0D,B47C9C,B85F98,C49500,CC9EA2,CCF735,DC54D7,DC91BF,F0272D,F08173,F0D2F1,F0F0A4,F4032A,F854B8,FC492D,FC65DE,FCA183,FCA667 o="Amazon Technologies Inc."
0071C2,0C54A5,100501,202564,386077,48210B,4C72B9,54B203,54BEF7,600292,7054D2,7071BC,74852A,78F29E,7C0507,84002D,88AD43,8C0F6F,C07CD1,D45DDF,D897BA,DCFE07,E06995,E840F2,ECAAA0 o="PEGATRON CORPORATION"
007204,08152F,448F17 o="Samsung Electronics Co., Ltd. ARTIK"
007263,048D38,E4BEED o="Netcore Technology Inc."
-00738D,0CEC84,44D3AD,806AB0,A04C5B,A0F895,B0A2E7,B43939,B4C0F5,BC4101,BC4434,BCD1D3,C0C976,D0B33F,D83C69 o="Shenzhen TINNO Mobile Technology Corp."
-00749C,14144B,300D9E,58696C,800588 o="Ruijie Networks Co.,LTD"
+00738D,0CEC84,18D61C,44D3AD,806AB0,A04C5B,A0F895,B0A2E7,B43939,B4C0F5,BC4101,BC4434,BCD1D3,C0C976,D0B33F,D83C69 o="Shenzhen TINNO Mobile Technology Corp."
+00749C,14144B,300D9E,58696C,800588,C0B8E6 o="Ruijie Networks Co.,LTD"
007532 o="INID BV"
0075E1 o="Ampt, LLC"
00763D o="Veea"
0076B1 o="Somfy-Protect By Myfox SAS"
-0077E4,00D0F6,04C241,0C54B9,0C7C28,1005E1,10E878,140F42,143E60,147BAC,1CEA1B,207852,20E09C,242124,30FE31,34AA99,38521A,405582,407C7D,48EC5B,48F7F1,48F8E1,4CC94F,504061,50A0A4,50E0EF,54FA96,5CE7A0,60A8FE,68AB09,6C0D34,6CF712,702526,78F9B4,7C41A2,84262B,846991,84DBFC,8C0C87,8C83DF,8C90D3,8CF773,903AA0,94B819,94E98C,98B039,A47B2C,A492CB,A4E31B,A824B8,AC8FF8,B0700D,B0754D,BC52B4,BC6B4D,BC8D0E,C014B8,C04121,C4084A,CC66B2,D4E33F,D8EFCD,DCB082,E48184,E89363,F81308,F85C4D,FC1CA1,FC2FAA o="Nokia"
+0077E4,00D0F6,04C241,089BB9,0C54B9,0C7C28,1005E1,10E878,140F42,143E60,147BAC,1CEA1B,207852,20E09C,20F44F,242124,30FE31,34AA99,38521A,405582,407C7D,48EC5B,48F7F1,48F8E1,4CC94F,504061,50A0A4,50E0EF,54FA96,5CE7A0,60A8FE,68AB09,6C0D34,6CF712,702526,78F9B4,7C41A2,84262B,846991,84DBFC,8C0C87,8C83DF,8C90D3,8CF773,903AA0,94B819,94E98C,98B039,A47B2C,A492CB,A4E31B,A824B8,AC8FF8,B0700D,B0754D,BC52B4,BC6B4D,BC8D0E,C014B8,C04121,C4084A,CC66B2,CC874A,D4E33F,D8EFCD,DCB082,E48184,E89363,F81308,F85C4D,FC1CA1,FC2FAA o="Nokia"
0078CD o="Ignition Design Labs"
007B18 o="SENTRY Co., LTD."
007DFA o="Volkswagen Group of America"
-007E56,44EFBF,94E0D6,A09DC1 o="China Dragon Technology Limited"
+007E56,40AA56,44EFBF,94E0D6,A09DC1 o="China Dragon Technology Limited"
008001 o="PERIPHONICS CORPORATION"
008002 o="SATELCOM (UK) LTD"
008003 o="HYTEC ELECTRONICS LTD."
@@ -9988,7 +9988,7 @@
0090CE o="avateramedical Mechatronics GmbH"
0090CF o="NORTEL"
0090D1 o="LEICHU ENTERPRISE CO., LTD."
-0090D2 o="ARTEL VIDEO SYSTEMS"
+0090D2 o="Artel Video Systems"
0090D3 o="GIESECKE & DEVRIENT GmbH"
0090D4 o="BindView Development Corp."
0090D5 o="EUPHONIX, INC."
@@ -10031,12 +10031,14 @@
0090FE o="ELECOM CO., LTD. (LANEED DIV.)"
0090FF o="TELLUS TECHNOLOGY INC."
0091FA o="Synapse Product Development"
+00927D o="Ficosa Internationa(Taicang) C0.,Ltd."
0092FA o="SHENZHEN WISKY TECHNOLOGY CO.,LTD"
009363 o="Uni-Link Technology Co., Ltd."
009569 o="LSD Science and Technology Co.,Ltd."
0097FF o="Heimann Sensor GmbH"
009D8E,029D8E o="CARDIAC RECORDERS, INC."
-009EC8,00EC0A,04B167,04C807,04D13A,04E598,082525,0C1DAF,0C9838,0CF346,102AB3,14F65A,1801F1,185936,18F0E4,1CCCD6,2034FB,2047DA,2082C0,20A60C,20F478,28167F,28E31F,3480B3,38A4ED,38E60A,482CA0,48FDA3,4C49E3,4C6371,508F4C,50A009,582059,584498,60AB67,640980,64B473,64CC2E,68DFDD,703A51,70BBE9,742344,7451BA,7802F8,7C035E,7C03AB,7C1DD9,7CD661,8035C1,80AD16,8CBEBE,9078B2,9487E0,98FAE3,9C28F7,9C2EA1,9C99A0,A086C6,A44519,A44BD5,A45046,A89CED,ACC1EE,ACF7F3,B0E235,B4C4FC,BC7FA4,C40BCB,C46AB7,C83DDC,D09C7A,D4970B,D832E3,D86375,D8CE3A,E01F88,E06267,E0CCF8,E0DCFF,E446DA,E85A8B,ECD09F,F0B429,F460E2,F48B32,F4F5DB,F8A45F,FC64BA o="Xiaomi Communications Co Ltd"
+009EC8,00EC0A,04B167,04C807,04D13A,04E598,082525,0C1DAF,0C9838,0CF346,102AB3,14F65A,1801F1,185936,188740,18F0E4,1CCCD6,2034FB,2047DA,2082C0,20A60C,20F478,28167F,28E31F,2CD066,341CF0,3480B3,38A4ED,38E60A,482CA0,48FDA3,4C49E3,4C6371,508F4C,50A009,582059,584498,60AB67,640980,64B473,64CC2E,64DDE9,68DFDD,703A51,70BBE9,742344,7451BA,7802F8,7C035E,7C03AB,7C1DD9,7C2ADB,7CD661,7CFD6B,8035C1,80AD16,8CBEBE,9078B2,941700,9487E0,98F621,98FAE3,9C28F7,9C2EA1,9C99A0,A086C6,A44519,A44BD5,A45046,A89CED,ACC1EE,ACF7F3,B0E235,B4C4FC,BC7FA4,C40BCB,C46AB7,C83DDC,D09C7A,D4970B,D832E3,D86375,D8CE3A,E01F88,E06267,E0CCF8,E0DCFF,E446DA,E85A8B,ECD09F,F0B429,F4308B,F460E2,F48B32,F4F5DB,F8A45F,FC1999,FC64BA o="Xiaomi Communications Co Ltd"
+009EEE,DC35F1 o="Positivo Tecnologia S.A."
00A000 o="CENTILLION NETWORKS, INC."
00A001 o="DRS Signal Solutions"
00A002 o="LEEDS & NORTHRUP AUSTRALIA PTY LTD"
@@ -10274,8 +10276,8 @@
00A509 o="WigWag Inc."
00A784 o="ITX security"
00AA3C o="OLIVETTI TELECOM SPA (OLTECO)"
-00AB48,1422DB,189088,3C5CF1,48DD0C,4C0143,605F8D,684A76,6CAEF6,74B6B6,80DA13,F8BBBF o="eero inc."
-00AD24,0CB6D2,1062EB,10BEF5,14D64D,180F76,1C5F2B,1C7EE5,1CAFF7,1CBDB9,28107B,283B82,3C1E04,409BCD,48EE0C,54B80A,58D56E,60634C,6C198F,6C7220,7062B8,74DADA,78321B,78542E,802689,84C9B2,908D78,9094E4,9CD643,A0AB1B,ACF1DF,B0C554,B8A386,BCF685,C0A0BB,C412F5,C4A81D,C4E90A,C8BE19,C8D3A3,CCB255,D8FEE3,E46F13,E8CC18,EC2280,ECADE0,F0B4D2,F48CEB,F8E903,FC7516 o="D-Link International"
+00AB48,1422DB,189088,30578E,3C5CF1,48DD0C,4C0143,5CA5BC,605F8D,684A76,6CAEF6,74B6B6,80DA13,F8BBBF,F8BC0E o="eero inc."
+00AD24,0CB6D2,1062EB,10BEF5,14D64D,180F76,1C5F2B,1C7EE5,1CAFF7,1CBDB9,28107B,283B82,340A33,3C1E04,409BCD,48EE0C,54B80A,58D56E,60634C,6C198F,6C7220,7062B8,74DADA,78321B,78542E,802689,84C9B2,908D78,9094E4,9CD643,A0AB1B,ACF1DF,B0C554,B8A386,BC0F9A,BCF685,C0A0BB,C412F5,C4A81D,C4E90A,C8BE19,C8D3A3,CCB255,D8FEE3,E46F13,E8CC18,EC2280,ECADE0,F0B4D2,F48CEB,F8E903,FC7516 o="D-Link International"
00AD63 o="Dedicated Micros Malta LTD"
00AECD o="Pensando Systems"
00B017 o="InfoGear Technology Corp."
@@ -10316,6 +10318,7 @@
00B78D o="Nanjing Shining Electric Automation Co., Ltd"
00B7A8 o="Heinzinger electronic GmbH"
00B810,1CC1BC,9C8275 o="Yichip Microelectronics (Hangzhou) Co.,Ltd"
+00B8B6,04D395,08AA55,08CC27,0CCB85,141AA3,1430C6,1C56FE,2446C8,24DA9B,304B07,34BB26,3880DF,40786A,408805,441C7F,4480EB,58D9C3,5C5188,601D91,60BEB5,68C44D,8058F8,806C1B,84100D,88797E,88B4A6,8CF112,9068C3,90735A,9CD917,A470D6,A89675,B07994,BC98DF,BCFFEB,C08C71,C8C750,CC0DF2,CC61E5,CCC3EA,D00401,D07714,D463C6,D4C94B,DCBFE9,E0757D,E09861,E4907E,E89120,EC8892,F0D7AA,F4F1E1,F4F524,F81F32,F8CFC5,F8E079,F8F1B6 o="Motorola Mobility LLC, a Lenovo Company"
00B8C2 o="Heights Telecom T ltd"
00B9F6 o="Shenzhen Super Rich Electronics Co.,Ltd"
00BAC0 o="Biometric Access Company"
@@ -10323,7 +10326,8 @@
00BB8E o="HME Co., Ltd."
00BBF0,00DD00-00DD0F o="UNGERMANN-BASS INC."
00BD27 o="Exar Corp."
-00BD82,04E0B0,14B837,1CD5E2,28D1B7,2C431A,2C557C,34E71C,447BBB,4CB8B5,54666C,68A682,68D1BA,70ACD7,7C03C9,7C7630,901234,A42940,A8E2C3,B41D2B,C4047B,C4518D,C821DA,CC90E8,D45F25,D8325A,DC9C9F,DCA333 o="Shenzhen YOUHUA Technology Co., Ltd"
+00BD82,04E0B0,14B837,1CD5E2,28D1B7,2C431A,2C557C,34E71C,447BBB,4CB8B5,54666C,68A682,68D1BA,70ACD7,7C03C9,7C7630,901234,A42940,A8E2C3,B41D2B,BC13A8,C4047B,C4518D,C821DA,CC90E8,D45F25,D8325A,DC9C9F,DCA333 o="Shenzhen YOUHUA Technology Co., Ltd"
+00BED5,0440A9,04D7A5,08688D,101965,1CAB34,307BAC,30809B,346B5B,38AD8E,38ADBE,3CF5CC,4077A9,441AFA,48BD3D,4CE9E4,5098B8,542BDE,5CC999,689320,6CE5F7,703AA6,7057BF,743A20,7485C4,74EAC8,74EACB,782C29,78AA82,7C1E06,80E455,88DF9E,905D7C,90E710,94282E,94292F,943BB0,9CE895,A4FA76,B04414,DCDA80,F01090,F47488,FC609B o="New H3C Technologies Co., Ltd"
00BF15,0CBF15 o="Genetec Inc."
00C000 o="LANOPTICS, LTD."
00C001 o="DIATEK PATIENT MANAGMENT"
@@ -10565,11 +10569,12 @@
00C0FD o="PROSUM"
00C0FE o="APTEC COMPUTER SYSTEMS, INC."
00C14F o="DDL Co,.ltd."
+00C343 o="E-T-A Circuit Breakers Ltd"
00C5DB o="Datatech Sistemas Digitales Avanzados SL"
00CBB4 o="SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD"
-00CBBD o="Cambridge Broadband Networks Ltd."
+00CBBD o="Cambridge Broadband Networks Group"
00CD90 o="MAS Elektronik AG"
-00CFC0,103D3E,1479F3,1869DA,1C4176,24615A,3C574F,4062EA,44C874,508CF5,7089CC,74ADB7,78C313,8C53D2,90473C,AC5AEE,AC710C,B4D0A9,C01692,C43306,CC5CDE,E0456D,E4C0CC,F848FD o="China Mobile Group Device Co.,Ltd."
+00CFC0,00E22C,0C14D2,103D3E,1479F3,1869DA,1C4176,24615A,3C574F,3CE3E7,4062EA,44C874,508CF5,7089CC,74ADB7,78C313,8C53D2,90473C,94FF61,AC5AEE,AC710C,B4D0A9,C01692,C43306,CC5CDE,E0456D,E4C0CC,F848FD o="China Mobile Group Device Co.,Ltd."
00D000 o="FERRAN SCIENTIFIC, INC."
00D001 o="VST TECHNOLOGIES, INC."
00D002 o="DITECH CORPORATION"
@@ -10777,7 +10782,7 @@
00D0E9 o="Advantage Century Telecommunication Corp."
00D0EA o="NEXTONE COMMUNICATIONS, INC."
00D0EB o="LIGHTERA NETWORKS, INC."
-00D0EC,480C49,8C3C4A,F49651 o="NAKAYO Inc"
+00D0EC,480C49,8C3C4A,C80739,F49651 o="NAKAYO Inc"
00D0ED o="XIOX"
00D0EE o="DICTAPHONE CORPORATION"
00D0EF o="IGT"
@@ -10930,7 +10935,7 @@
00E08D o="PRESSURE SYSTEMS, INC."
00E08E o="UTSTARCOM"
00E090 o="BECKMAN LAB. AUTOMATION DIV."
-00E091,14C913,201742,30B4B8,388C50,64956C,6CD032,785DC8,A823FE,C808E9 o="LG Electronics"
+00E091,14C913,201742,30B4B8,388C50,58FDB1,64956C,6CD032,785DC8,A823FE,C808E9 o="LG Electronics"
00E092 o="ADMTEK INCORPORATED"
00E093 o="ACKFIN NETWORKS"
00E094 o="OSAI SRL"
@@ -10963,7 +10968,7 @@
00E0B4 o="TECHNO SCOPE CO., LTD."
00E0B5 o="ARDENT COMMUNICATIONS CORP."
00E0B6 o="Entrada Networks"
-00E0B7 o="PI GROUP, LTD."
+00E0B7 o="Cosworth Electronics Ltd"
00E0B8 o="GATEWAY 2000"
00E0B9 o="BYAS SYSTEMS"
00E0BA o="BERGHOF AUTOMATIONSTECHNIK GmbH"
@@ -11029,6 +11034,7 @@
00E0FD o="A-TREND TECHNOLOGY CO., LTD."
00E0FF o="SECURITY DYNAMICS TECHNOLOGIES, Inc."
00E175 o="AK-Systems Ltd"
+00E5E4,1CFF59,4456E2,C0CC42,C4A151 o="Sichuan Tianyi Comheart Telecom Co., Ltd."
00E6D3,02E6D3 o="NIXDORF COMPUTER CORP."
00E6E8 o="Netzin Technology Corporation,.Ltd."
00E8AB o="Meggitt Training Systems, Inc."
@@ -11045,8 +11051,9 @@
00FD4C o="NEVATEC"
02AA3C o="OLIVETTI TELECOMM SPA (OLTECO)"
0402CA o="Shenzhen Vtsonic Co.,ltd"
-0403D6,342FBD,48A5E7,582F40,5C521E,606BFF,64B5C6,7048F7,9458CB,98415C,98B6E9,98E8FA,A438CC,B87826,B88AEC,D4F057,DC68EB,ECC40D o="Nintendo Co.,Ltd"
+0403D6,342FBD,48A5E7,582F40,5C521E,606BFF,64B5C6,702C09,7048F7,74F9CA,9458CB,98415C,98B6E9,98E8FA,A438CC,B87826,B88AEC,D4F057,DC68EB,E0F6B5,E8DA20,ECC40D o="Nintendo Co.,Ltd"
0404EA o="Valens Semiconductor Ltd."
+0405DD,B0D568 o="Shenzhen Cultraview Digital Technology Co., Ltd"
04072E o="VTech Electronics Ltd."
040AE0 o="XMIT AG COMPUTER NETWORKS"
040EC2 o="ViewSonic Mobile China Limited"
@@ -11063,17 +11070,19 @@
042BBB o="PicoCELA, Inc."
042DB4 o="First Property (Beijing) Co., Ltd Modern MOMA Branch"
042F56 o="ATOCS (Shenzhen) LTD"
-043110 o="Inspur Group Co., Ltd."
+043110,C0A66D o="Inspur Group Co., Ltd."
0432F4 o="Partron"
043385 o="Nanchang BlackShark Co.,Ltd."
043604 o="Gyeyoung I&T"
043A0D o="SM Optics S.r.l."
043D98 o="ChongQing QingJia Electronics CO.,LTD"
-0440A9,04D7A5,08688D,1CAB34,307BAC,30809B,346B5B,38AD8E,38ADBE,3CF5CC,4077A9,441AFA,48BD3D,4CE9E4,5098B8,542BDE,5CC999,7057BF,7485C4,74EAC8,74EACB,782C29,7C1E06,80E455,88DF9E,905D7C,90E710,94282E,94292F,943BB0,9CE895,A4FA76,DCDA80,F01090,F47488 o="New H3C Technologies Co., Ltd"
044169,2474F7,D43260,D4D919,D89685,F4DD9E o="GoPro"
0444A1 o="TELECON GALICIA,S.A."
+044562 o="ANDRA Sp. z o. o."
0445A1 o="NIRIT- Xinwei Telecom Technology Co., Ltd."
+0446CF o="Beijing Venustech Cybervision Co.,Ltd."
044A50 o="Ramaxel Technology (Shenzhen) limited company"
+044AC6 o="Aipon Electronics Co., Ltd"
044BFF o="GuangZhou Hedy Digital Technology Co., Ltd"
044CEF o="Fujian Sanao Technology Co.,Ltd"
044E06,3407FB,346E9D,348446,3C197D,549B72,74C99A,74D0DC,78D347,903809,987A10,98A404,98C5DB,A4A1C2,AC60B6,F0B107 o="Ericsson AB"
@@ -11103,6 +11112,7 @@
0475F5 o="CSST"
047863,80A036,B0F893,D0BAE4 o="Shanghai MXCHIP Information Technology Co., Ltd."
047D50 o="Shenzhen Kang Ying Technology Co.Ltd."
+047E23,1C25E1,44E6B0,48216C,6458AD,64F88A,688B0F,A0950C,A09B12,AC5474,B03055,B05365,C098DA,C0D0FF,E42D7B o="China Mobile IOT Company Limited"
047E4A o="moobox CO., Ltd."
047F0E o="Barrot Technology Limited"
0481AE o="Clack Corporation"
@@ -11113,7 +11123,7 @@
048B42 o="Skspruce Technologies"
048C03 o="ThinPAD Technology (Shenzhen)CO.,LTD"
0492EE o="iway AG"
-04946B,088620,141114,202681,4CE19E,58DB15,64CB9F,709FA9,74E60F,783A6C,78FFCA,AC2DA9,C4C563,D01C3C,D47DFC,F03D03 o="TECNO MOBILE LIMITED"
+04946B,088620,08ED9D,141114,202681,4CE19E,58DB15,64CB9F,709FA9,74E60F,783A6C,78FFCA,9056FC,AC2DA9,C4C563,D01C3C,D47DFC,ECF22B,F03D03 o="TECNO MOBILE LIMITED"
0494A1 o="CATCH THE WIND INC"
0495E6,0840F3,500FF5,502B73,58D9D5,B0DFC1,B40F3B,B83A08,CC2D21,D83214,E865D4 o="Tenda Technology Co.,Ltd.Dongguan branch"
049645 o="WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD."
@@ -11123,10 +11133,10 @@
049C62 o="BMT Medical Technology s.r.o."
049DFE o="Hivesystem"
049F06 o="Smobile Co., Ltd."
-04A222,0C8E29,18828C,44FE3B,488D36,4C1B86,64CC22,78DD12,946AB0,A0B549,B8F853,BC30D9,CCD42E,D0052A,D463FE,E05163,E43ED7,ECF451,F08620 o="Arcadyan Corporation"
+04A222,0C8E29,18828C,44FE3B,488D36,4C1B86,64CC22,78DD12,946AB0,A0B549,B8F853,BC30D9,CCD42E,D0052A,D463FE,E05163,E43ED7,E475DC,EC6C9A,ECF451,F08620,FC3DA5 o="Arcadyan Corporation"
04A3F3 o="Emicon"
04AAE1 o="BEIJING MICROVISION TECHNOLOGY CO.,LTD"
-04AB18,BC5C4C o="ELECOM CO.,LTD."
+04AB18,3897A4,BC5C4C o="ELECOM CO.,LTD."
04AB6A o="Chun-il Co.,Ltd."
04AC44,B8CA04 o="Holtek Semiconductor Inc."
04B3B6 o="Seamap (UK) Ltd"
@@ -11142,14 +11152,14 @@
04C880 o="Samtec Inc"
04C991 o="Phistek INC."
04CB1D o="Traka plc"
+04CB88,30C01B,5CFB7C,8850F6,B8F653,D8373B,E8D03C,F4BCDA o="Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd"
04CE14 o="Wilocity LTD."
04CE7E o="NXP France Semiconductors France"
04CF25 o="MANYCOLORS, INC."
04CF8C,286C07,34CE00,40313C,50642B,7811DC,7C49EB,EC4118 o="XIAOMI Electronics,CO.,LTD"
-04D395,08CC27,0CCB85,141AA3,1430C6,1C56FE,2446C8,24DA9B,304B07,34BB26,3880DF,40786A,408805,4480EB,58D9C3,5C5188,601D91,60BEB5,68C44D,8058F8,806C1B,84100D,88797E,88B4A6,8CF112,9068C3,90735A,9CD917,A470D6,A89675,B07994,BC98DF,BCFFEB,C08C71,C8C750,CC61E5,CCC3EA,D00401,D07714,D463C6,D4C94B,DCBFE9,E0757D,E09861,E4907E,E89120,EC8892,F0D7AA,F4F1E1,F4F524,F81F32,F8CFC5,F8E079,F8F1B6 o="Motorola Mobility LLC, a Lenovo Company"
04D437 o="ZNV"
04D590,085B0E,704CA5,906CAC,E023FF,E81CBA o="Fortinet, Inc."
-04D6AA,08C5E1,1449E0,24181D,2C0E3D,30074D,30AB6A,3423BA,400E85,4C6641,54880E,6CC7EC,843838,88329B,8CB84A,8CF5A3,A8DB03,AC5F3E,B479A7,BC8CCD,C09727,C0BDD1,C8BA94,D022BE,D02544,E8508B,EC1F72,EC9BF3,F025B7,F409D8,F8042E o="SAMSUNG ELECTRO-MECHANICS(THAILAND)"
+04D6AA,08C5E1,1449E0,24181D,28C21F,2C0E3D,30074D,30AB6A,3423BA,400E85,4C6641,54880E,6CC7EC,843838,88329B,8CB84A,8CF5A3,A8DB03,AC5F3E,B479A7,BC8CCD,C09727,C0BDD1,C8BA94,D022BE,D02544,E8508B,EC1F72,EC9BF3,F025B7,F409D8,F8042E o="SAMSUNG ELECTRO-MECHANICS(THAILAND)"
04D783 o="Y&H E&C Co.,LTD."
04DB8A o="Suntech International Ltd."
04DD4C o="Velocytech"
@@ -11169,6 +11179,7 @@
04F17D o="Tarana Wireless"
04F4BC o="Xena Networks"
04F8C2 o="Flaircomm Microelectronics, Inc."
+04F8F8,1CEA0B,34EFB6,3C2C99,68215F,80A235,8CEA1B,A82BB5,B86A97,CC37AB o="Edgecore Networks Corporation"
04F9D9 o="Speaker Electronic(Jiashan) Co.,Ltd"
04FA3F o="Opticore Inc."
04FEA1,40EF4C,7C96D2 o="Fihonest communication co.,Ltd"
@@ -11316,7 +11327,7 @@
081DFB o="Shanghai Mexon Communication Technology Co.,Ltd"
081F3F o="WondaLink Inc."
081FEB o="BinCube"
-0823B2,087F98,08B3AF,0C20D3,10F681,1802AE,18E29F,18E777,1CDA27,20311C,205D47,207454,20F77C,283166,28FAA0,2CFFEE,309435,34E911,386EA2,3C86D1,3CA348,3CA581,3CA616,3CB6B7,449EF9,488764,4CC00A,5419C8,5C1CB9,6091F3,6C24A6,6CD94C,7047E9,70788B,70B7AA,70D923,808A8B,886AB1,88F7BF,90ADF7,90C54A,94147A,946372,98C8B8,9CA5C0,9CE82B,9CFBD5,B40FB3,B80716,BC2F3D,C46699,C4ABB2,D4BBC8,D8A315,DC1AC5,DC31D1,E013B5,E0DDC0,E45AA2,EC7D11,ECDF3A,F01B6C,F42981,F470AB,F4B7B3,F8E7A0,FC1A11,FCBE7B o="vivo Mobile Communication Co., Ltd."
+0823B2,087F98,08B3AF,08FA79,0C20D3,10BC97,10F681,1802AE,18E29F,18E777,1CDA27,20311C,205D47,207454,20F77C,283166,28FAA0,2CFFEE,309435,34E911,386EA2,3C86D1,3CA348,3CA581,3CA616,3CB6B7,449EF9,488764,4CC00A,540E2D,5419C8,5C1CB9,6091F3,642C0F,6C24A6,6CD94C,7047E9,70788B,708F47,70B7AA,70D923,808A8B,886AB1,88F7BF,90ADF7,90C54A,94147A,946372,98C8B8,9CA5C0,9CE82B,9CFBD5,A022DE,B40FB3,B80716,BC2F3D,C46699,C4ABB2,D4BBC8,D8A315,DC1AC5,DC31D1,E013B5,E0DDC0,E45AA2,EC7D11,ECDF3A,F01B6C,F42981,F470AB,F4B7B3,F8E7A0,FC1A11,FCBE7B o="vivo Mobile Communication Co., Ltd."
082522 o="ADVANSEE"
082719 o="APS systems/electronic AG"
0827CE o="NAGANO KEIKI CO., LTD."
@@ -11326,28 +11337,31 @@
083571 o="CASwell INC."
0835B2 o="CoreEdge Networks Co., Ltd"
08379C o="Topaz Co. LTD."
+083869 o="Hong Kong AMobile Intelligent Corp. Limited Taiwan Branch"
0838A5 o="Funkwerk plettac electronic GmbH"
083A2F o="Guangzhou Juan Intelligent Tech Joint Stock Co.,Ltd"
083A5C o="Junilab, Inc."
083AB8 o="Shinoda Plasma Co., Ltd."
+083AF2,0CDC7E,10521C,18FE34,240AC4,2462AB,246F28,24A160,24B2DE,2C3AE8,2CF432,30AEA4,3C71BF,40F520,483FDA,4C11AE,500291,545AA6,5CCF7F,600194,68C63A,70039F,7C9EBD,7CDFA1,807D3A,840D8E,84CCA8,84F3EB,8CAAB5,8CCE4E,9097D5,94B97E,98F4AB,A020A6,A0764E,A47B9D,A4CF12,A8032A,AC67B2,ACD074,B4E62D,B8F009,BCDDC2,C44F33,C4DD57,C82B96,CC50E3,D8A01D,D8BFC0,D8F15B,DC4F22,E09806,ECFABC,F008D1,F4CFA2,FCF5C4 o="Espressif Inc."
083F3E o="WSH GmbH"
083F76 o="Intellian Technologies, Inc."
084027 o="Gridstore Inc."
+084296 o="Mobile Technology Solutions LLC"
084656 o="VEO-LABS"
-0847D0,089C86,781735,88B362,98865D,B81904 o="Nokia Shanghai Bell Co., Ltd."
+0847D0,089C86,4C2113,781735,88B362,98865D,B81904,DCD9AE o="Nokia Shanghai Bell Co., Ltd."
08482C o="Raycore Taiwan Co., LTD."
-084ACF,14472D,14C697,18D0C5,18D717,1C427D,1C48CE,1C77F6,1CC3EB,1CDDEA,20826A,2479F3,2C5BB8,2C5D34,2CA9F0,308454,38295A,3CF591,440444,4466FC,44AEAB,4883B4,489507,4C189A,4C1A3D,4C6F9C,5029F5,503CEA,587A6A,58C6F0,5C666C,602101,6C5C14,6CD71F,70DDA8,7836CC,7C6B9C,846FCE,885A06,88D50C,8C0EE3,94D029,986F60,9C0CDF,9C5F5A,9CF531,A09347,A41232,A43D78,A4C939,A4F05E,A81B5A,B0AA36,B4A5AC,B4CB57,B83765,B8C74A,B8C9B5,BC3AEA,C02E25,C09F05,C4E1A1,C4E39F,C4FE5B,C8F230,CC2D83,D41A3F,D4503F,D467D3,D81EDD,DC5583,DC6DCD,E44790,E4C483,E8BBA8,EC01EE,EC51BC,ECF342,F06728,F06D78,F079E8,F4D620 o="GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD"
+084ACF,14472D,14C697,18D0C5,18D717,1C0219,1C427D,1C48CE,1C77F6,1CC3EB,1CDDEA,2064CB,20826A,2479F3,2C5BB8,2C5D34,2CA9F0,308454,38295A,388ABE,3CF591,440444,4466FC,44AEAB,4883B4,489507,4C189A,4C1A3D,4C6F9C,5029F5,503CEA,587A6A,58C6F0,5C666C,602101,60D4E9,6C5C14,6CD71F,70DDA8,7836CC,7C6B9C,846FCE,8803E9,885A06,88D50C,8C0EE3,9454CE,94D029,986F60,9C0CDF,9C5F5A,9CF531,A09347,A41232,A43D78,A4C939,A4F05E,A81B5A,B0AA36,B0B5C3,B4A5AC,B4CB57,B83765,B8C74A,B8C9B5,BC3AEA,C02E25,C09F05,C440F6,C4E1A1,C4E39F,C4FE5B,C8F230,CC2D83,D41A3F,D4503F,D467D3,D81EDD,DC5583,DC6DCD,E433AE,E44790,E4C483,E8BBA8,EC01EE,EC51BC,ECF342,F06728,F06D78,F079E8,F4D620,FCA5D0 o="GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD"
084E1C o="H2A Systems, LLC"
-084EBF o="Broad Net Mux Corporation"
085114 o="QINGDAO TOPSCOMM COMMUNICATION CO., LTD"
08512E o="Orion Diagnostica Oy"
085240 o="EbV Elektronikbau- und Vertriebs GmbH"
+0854BB,107717,1CA770,283545,60427F,949034,A4E615,B48107,BC83A7,BCEC23,FCA386 o="SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD"
085AE0 o="Recovision Technology Co., Ltd."
085BDA o="CliniCare LTD"
08674E,B84DEE o="Hisense broadband multimedia technology Co.,Ltd"
0868D0 o="Japan System Design"
0868EA o="EITO ELECTRONICS CO., LTD."
-086BD1,DC4BDD,E4F3E8 o="Shenzhen SuperElectron Technology Co.,Ltd."
+086BD1,8012DF,DC4BDD,E4F3E8 o="Shenzhen SuperElectron Technology Co.,Ltd."
086DF2 o="Shenzhen MIMOWAVE Technology Co.,Ltd"
0874F6 o="Winterhalter Gastronom GmbH"
087572 o="Obelux Oy"
@@ -11357,13 +11371,14 @@
087BAA o="SVYAZKOMPLEKTSERVICE, LLC"
087CBE o="Quintic Corp."
087D21 o="Altasec technology corporation"
-087E64,08952A,0C0227,1033BF,1062D0,10C25A,14987D,14B7F8,28BE9B,3817E1,383FB3,3C9A77,3CB74B,441C12,4432C8,480033,48F7C0,500959,54A65C,58238C,589630,5C7695,603D26,641236,6C55E8,70037E,705A9E,7C9A54,802994,80B234,80C6AB,80D04A,8417EF,889E68,88F7C7,8C04FF,905851,946A77,98524A,A456CC,B0C287,B42A0E,BC9B68,C42795,CC03FA,CC3540,D05A00,D08A91,D0B2C4,D4B92F,DCEB69,E03717,E0885D,FC528D,FC9114,FC94E3 o="Technicolor CH USA Inc."
+087E64,08952A,0C0227,1033BF,1062D0,10C25A,14987D,14B7F8,28BE9B,3817E1,383FB3,3C9A77,3CB74B,441C12,4432C8,480033,484BD4,48F7C0,500959,54A65C,58238C,589630,5C7695,5C7D7D,603D26,641236,6C55E8,70037E,705A9E,7C9A54,802994,80B234,80C6AB,80D04A,8417EF,889E68,88F7C7,8C04FF,905851,946A77,98524A,989D5D,A0FF70,A456CC,B0C287,B42A0E,BC9B68,C42795,CC03FA,CC3540,D05A00,D08A91,D0B2C4,D4B92F,DCEB69,E03717,E0885D,F4C114,FC528D,FC9114,FC94E3 o="Technicolor CH USA Inc."
0881BC o="HongKong Ipro Technology Co., Limited"
088466 o="Novartis Pharma AG"
+0887C6,44A61E o="INGRAM MICRO SERVICES"
088DC8 o="Ryowa Electronics Co.,Ltd"
088E4F o="SF Software Solutions"
-088F2C o="Hills Sound Vision & Lighting"
-0890BA o="Danlaw Inc"
+088F2C o="Amber Technology Ltd."
+0890BA,4CCE2D o="Danlaw Inc"
0894EF,206A8A,38B725,70E284,98EECB,F0DEF1,F80F41 o="Wistron Infocomm (Zhongshan) Corporation"
089758 o="Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary"
089B4B o="iKuai Networks"
@@ -11371,7 +11386,9 @@
08A12B o="ShenZhen EZL Technology Co., Ltd"
08A8A1 o="Cyclotronics Power Concepts, Inc"
08ACA5 o="Benu Video, Inc."
+08ACC4 o="FMTech"
08AF78 o="Totus Solutions, Inc."
+08B0A7 o="Truebeyond Co., Ltd"
08B2A3 o="Cynny Italia S.r.L."
08B4CF o="Abicom International"
08B738 o="Lite-On Technogy Corp."
@@ -11392,10 +11409,11 @@
08DFCB o="Systrome Networks"
08E5DA o="NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD."
08E672 o="JEBSEE ELECTRONICS CO.,LTD."
-08EA40,0C8C24,10A4BE,146B9C,203233,380146,74EE2A,7CA7B0,E0B94D,EC3DFD o="SHENZHEN BILIAN ELECTRONIC CO.,LTD"
+08E9F6,08FBEA,2050E7,704A0E,70F754,B82D28,D49CDD o="AMPAK Technology,Inc."
+08EA40,0C8C24,10A4BE,146B9C,203233,380146,4401BB,74EE2A,7CA7B0,E0B94D,EC3DFD o="SHENZHEN BILIAN ELECTRONIC CO.,LTD"
08EB29,18BF1C o="Jiangsu Huitong Group Co.,Ltd."
08EBED o="World Elite Technology Co.,LTD"
-08EDED,14A78B,24526A,38AF29,3CEF8C,4C11BF,6C1C71,74C929,9002A9,9C1463,A0BD1D,B44C3B,BC325F,E0508B o="Zhejiang Dahua Technology Co., Ltd."
+08EDED,14A78B,24526A,38AF29,3CEF8C,4C11BF,6C1C71,74C929,9002A9,9C1463,A0BD1D,B44C3B,BC325F,C0395A,E0508B,E4246C o="Zhejiang Dahua Technology Co., Ltd."
08EFAB o="SAYME WIRELESS SENSOR NETWORK"
08F1B7 o="Towerstream Corpration"
08F2F4 o="Net One Partners Co.,Ltd."
@@ -11404,7 +11422,7 @@
08F7E9 o="HRCP Research and Development Partnership"
08FAE0 o="Fohhn Audio AG"
08FC52 o="OpenXS BV"
-0C01DB,74C17D,80795D,9874DA,98DDEA,AC512C,BC91B5,DC6AEA o="Infinix mobility limited"
+0C01DB,74C17D,80795D,9874DA,98DDEA,AC2334,AC512C,BC91B5,DC6AEA o="Infinix mobility limited"
0C0400 o="Jantar d.o.o."
0C0535 o="Juniper Systems"
0C1105 o="AKUVOX (XIAMEN) NETWORKS CO., LTD"
@@ -11431,7 +11449,7 @@
0C4101 o="Ruichi Auto Technology (Guangzhou) Co., Ltd."
0C469D o="MS Sedco"
0C4933,7C5259 o="Sichuan Jiuzhou Electronic Technology Co., Ltd."
-0C4C39,345760,84AA9C,9897D1,A433D7,ACC662,B046FC,B8FFB3,C03DD9,CCD4A1,CCEDDC,E04136,E4AB89 o="MitraStar Technology Corp."
+0C4C39,345760,84AA9C,9897D1,A433D7,ACC662,B046FC,B8FFB3,C03DD9,CCD4A1,CCEDDC,D8C678,E04136,E4AB89 o="MitraStar Technology Corp."
0C4F5A o="ASA-RT s.r.l."
0C51F7 o="CHAUVIN ARNOUX"
0C5203 o="AGM GROUP LIMITED"
@@ -11445,7 +11463,7 @@
0C5CD8 o="DOLI Elektronik GmbH"
0C5F35 o="Niagara Video Corporation"
0C6111 o="Anda Technologies SAC"
-0C62A6,0C9160,103D0A,1C1EE3,20F543,2CD974,34F150,44D878,7CB232,C0D2F3,C4985C,D81399,F84FAD o="Hui Zhou Gaoshengda Technology Co.,LTD"
+0C62A6,0C9160,103D0A,1C1EE3,20F543,2CD974,34F150,44D878,7CB232,C0D2F3,C4985C,D4ABCD,D81399,DC7223,F84FAD o="Hui Zhou Gaoshengda Technology Co.,LTD"
0C63FC o="Nanjing Signway Technology Co., Ltd"
0C6AE6 o="Stanley Security Solutions"
0C6E4F o="PrimeVOLT Co., Ltd."
@@ -11455,21 +11473,22 @@
0C7523 o="BEIJING GEHUA CATV NETWORK CO.,LTD"
0C756C o="Anaren Microwave, Inc."
0C7D7C o="Kexiang Information Technology Co, Ltd."
+0C817D o="EEP Elektro-Elektronik Pranjic GmbH"
0C8230 o="SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD"
0C826A o="Wuhan Huagong Genuine Optics Technology Co., Ltd"
0C8411 o="A.O. Smith Water Products"
0C8484 o="Zenovia Electronics Inc."
0C8A87 o="AgLogica Holdings, Inc"
-0C8BD3,18AC9E,44DC4E,48DD9D,58C583,741C27,787D48,7CE97C,8050F6,88D5A8,8CD48E,988ED4,9CAF6F,A4F465,ACFE05,B8C8EB,D87E76,DC543D,F0B968,F82F6A,FC3964 o="ITEL MOBILE LIMITED"
+0C8BD3,18AC9E,40D25F,44DC4E,48DD9D,58C583,741C27,787D48,7CE97C,8050F6,881C95,88D5A8,8CD48E,988ED4,9CAF6F,A4F465,ACFE05,B8C8EB,C81739,D87E76,DC543D,F0B968,F82F6A,FC3964 o="ITEL MOBILE LIMITED"
0C8C8F o="Kamo Technology Limited"
0C8CDC o="Suunto Oy"
0C8D98 o="TOP EIGHT IND CORP"
0C924E o="Rice Lake Weighing Systems"
0C9301 o="PT. Prasimax Inovasi Teknologi"
0C93FB o="BNS Solutions"
-0C9541,5CCAD3,C8B21E o="CHIPSEA TECHNOLOGIES (SHENZHEN) CORP."
+0C9541,50FB19,5CCAD3,C8B21E o="CHIPSEA TECHNOLOGIES (SHENZHEN) CORP."
0C96E6,283A4D,485F99 o="Cloud Network Technology (Samoa) Limited"
-0C9A42,18BB26,34C3D2,381DD9,4846C1,54C9DF,54E4BD,586356,805E4F,88835D,A02C36,A0F459,AC35EE,AC5D5C,AC64CF,C43A35,E0B2F1 o="FN-LINK TECHNOLOGY LIMITED"
+0C9A42,18BB26,34C3D2,381DD9,4846C1,54C9DF,54E4BD,586356,7C25DA,805E4F,88835D,A02C36,A0F459,AC35EE,AC5D5C,AC64CF,C43A35,D4D2D6,E0B2F1 o="FN-LINK TECHNOLOGY LIMITED"
0C9B13 o="Shanghai Magic Mobile Telecommunication Co.Ltd."
0C9D56 o="Consort Controls Ltd"
0C9E91 o="Sankosha Corporation"
@@ -11485,7 +11504,7 @@
0CB4EF o="Digience Co.,Ltd."
0CB5DE,18422F,4CA74B,54055F,68597F,84A783,885C47,9067F3,94AE61,D4224E o="Alcatel Lucent"
0CB912 o="JM-DATA GmbH"
-0CB937,647C34,6C38A1,A4CFD2 o="Ubee Interactive Co., Limited"
+0CB937,647C34,6C38A1,A4CFD2,D8787F o="Ubee Interactive Co., Limited"
0CBD51,18E3BC,1CCB99,20A90E,240A11,240DC2,289AFA,28BE03,3CCB7C,44A42D,4C0B3A,4C4E03,5C7776,60512C,6409AC,745C9F,84D15A,889E33,8C99E6,905F2E,942790,9471AC,94D859,9C4FCF,A8A198,B04519,B0E03C,CCFD17,D09DAB,D428D5,D8E56D,E0E62E,E42D02,E4E130,F03404,F05136 o="TCT mobile ltd"
0CBF3F o="Shenzhen Lencotion Technology Co.,Ltd"
0CBF74 o="Morse Micro"
@@ -11496,6 +11515,7 @@
0CC6AC o="DAGS"
0CC731 o="Currant, Inc."
0CC81F o="Summer Infant, Inc."
+0CC844,4CB82C o="Cambridge Mobile Telematics, Inc."
0CC9C6 o="Samwin Hong Kong Limited"
0CCB8D o="ASCO Numatics GmbH"
0CCC26 o="Airenetworks"
@@ -11517,7 +11537,7 @@
0CF019 o="Malgn Technology Co., Ltd."
0CF0B4 o="Globalsat International Technology Ltd"
0CF361 o="Java Information"
-0CF3EE,901A4F,E0189F o="EM Microelectronic"
+0CF3EE,64F54E,8CD67F,901A4F,B848AA,E0189F o="EM Microelectronic"
0CF405 o="Beijing Signalway Technologies Co.,Ltd"
0CF475 o="Zliide Technologies ApS"
0CFC83 o="Airoha Technology Corp.,"
@@ -11534,12 +11554,14 @@
101212 o="Vivo International Corporation Pty Ltd"
101218 o="Korins Inc."
101248 o="ITG, Inc."
-101250,14E7C8,18C19D,1C9D3E,20163D,2405F5,2CB115,40B30E,40F04E,509744,58ECED,649829,689361,701BFB,782A79,7C6AF3,803A0A,80D160,847F3D,8817A3,907910,9C497F,A42618,A4B52E,A4F3E7,B8DB1C,C84F0E,CC51B4,CC9916,D055B2,D8452B,D8D6F3,DC3757,DCCC8D,E4CC9D,E80945,E8DE8E,F89910,FCEA50 o="Integrated Device Technology (Malaysia) Sdn. Bhd."
+101250,14E7C8,18C19D,1C9D3E,20163D,2405F5,2CB115,40B30E,40F04E,509744,58ECED,649829,689361,701BFB,782A79,7C6AF3,803A0A,80D160,847F3D,8817A3,907910,9C497F,9CF029,A42618,A4B52E,A4F3E7,B8DB1C,C84F0E,CC51B4,CC9916,D055B2,D8452B,D8D6F3,DC3757,DCCC8D,E4CC9D,E80945,E8DE8E,F89910,FCEA50 o="Integrated Device Technology (Malaysia) Sdn. Bhd."
+1012FB,1868CB,2857BE,4419B6,4447CC,4CBD8F,54C415,5803FB,5850ED,64DB8B,686DBC,849A40,94E1AC,988B0A,98DF82,A41437,ACCB51,B4A382,BCAD28,BCBAC2,C0517E,C056E3,C42F90,F84DFC o="Hangzhou Hikvision Digital Technology Co.,Ltd."
101331,20B001,30918F,589835,9C9726,A491B1,A4B1E9,C4EA1D,D4351D,E0B9E5 o="Technicolor"
1013EE o="Justec International Technology INC."
10189E o="Elmo Motion Control"
101D51 o="8Mesh Networks Limited"
102279 o="ZeroDesktop, Inc."
+102779 o="Sadel S.p.A."
1027BE o="TVIP"
102831 o="Morion Inc."
102C83 o="XIMEA"
@@ -11547,6 +11569,7 @@
102FA3 o="Shenzhen Uvision-tech Technology Co.Ltd"
103034 o="Cara Systems"
103378 o="FLECTRON Co., LTD"
+10341B o="Spacelink"
10364A o="Boston Dynamics"
103711 o="Simlink AS"
103DEA o="HFC Technology (Beijing) Ltd. Co."
@@ -11559,9 +11582,8 @@
104963 o="HARTING K.K."
104D77 o="Innovative Computer Engineering"
104E07 o="Shanghai Genvision Industries Co.,Ltd"
-10521C,18FE34,240AC4,2462AB,246F28,24B2DE,2C3AE8,2CF432,30AEA4,3C71BF,483FDA,4C11AE,500291,545AA6,5CCF7F,600194,68C63A,7CDFA1,807D3A,840D8E,84F3EB,8CAAB5,9097D5,98F4AB,A020A6,A47B9D,A4CF12,ACD074,B4E62D,BCDDC2,C44F33,C82B96,CC50E3,D8A01D,D8BFC0,D8F15B,DC4F22,E09806,ECFABC,F008D1,F4CFA2,FCF5C4 o="Espressif Inc."
105917 o="Tonal"
-105932,8C4962,ACAE19,B0EE7B,C83A6B,D83134 o="Roku, Inc"
+105932,84EAED,8C4962,ACAE19,B0EE7B,C83A6B,D83134 o="Roku, Inc"
105AF7,8C59C3 o="ADB Italia"
105BAD,A4FC77 o="Mega Well Limited"
105C3B o="Perma-Pipe, Inc."
@@ -11569,13 +11591,13 @@
105FD4 o="Tendyron Corporation"
1062C9 o="Adatis GmbH & Co. KG"
1064E2 o="ADFweb.com s.r.l."
-1065A3 o="Core Brands LLC"
+1065A3 o="Panamax LLC"
1065CF o="IQSIM"
106FEF o="Ad-Sol Nissin Corp"
1071F9 o="Cloud Telecomputers, LLC"
-107223,542F8A,94EAEA o="TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO"
+107223,542F8A,94EAEA,F45420 o="TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO"
+10746F o="MOTOROLA SOLUTIONS MALAYSIA SDN. BHD."
10768A o="EoCell"
-107717,1CA770,283545,60427F,949034,A4E615,B48107,BC83A7,BCEC23,FCA386 o="SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD"
107873 o="Shenzhen Jinkeyi Communication Co., Ltd."
1078CE o="Hanvit SI, Inc."
107A86 o="U&U ENGINEERING INC."
@@ -11585,6 +11607,7 @@
1083D2 o="Microseven Systems, LLC"
10880F o="Daruma Telecomunicações e Informática S.A."
108A1B o="RAONIX Inc."
+108B6A,F0A968 o="Antailiye Technology Co.,Ltd"
108EBA o="Molekule"
10954B o="Megabyte Ltd."
109AB9 o="Tosibox Oy"
@@ -11592,7 +11615,7 @@
109E3A,18BC5A,28FA7A,38D2CA,486E70,78DA07,D44BB6,D82FE6,F8A763 o="Zhejiang Tmall Technology Co., Ltd."
10A13B o="FUJIKURA RUBBER LTD."
10A24E o="GOLD3LINK ELECTRONICS CO., LTD"
-10A4B9,D46075 o="Baidu Online Network Technology (Beijing) Co., Ltd"
+10A4B9,CCE0DA,D46075 o="Baidu Online Network Technology (Beijing) Co., Ltd"
10A659 o="Mobile Create Co.,Ltd."
10A743 o="SK Mtek Limited"
10A932 o="Beijing Cyber Cloud Technology Co. ,Ltd."
@@ -11613,12 +11636,13 @@
10C65E o="Adapt-IP"
10C67E o="SHENZHEN JUCHIN TECHNOLOGY CO., LTD"
10C73F o="Midas Klark Teknik Ltd"
-10C753,7CB37B o="Qingdao Intelligent&Precise Electronics Co.,Ltd."
+10C753,7CB37B,A8301C o="Qingdao Intelligent&Precise Electronics Co.,Ltd."
10CA81 o="PRECIA"
10CC1B o="Liverock technologies,INC"
10CCDB o="AXIMUM PRODUITS ELECTRONIQUES"
10CD6E o="FISYS"
10CDB6 o="Essential Products, Inc."
+10CE45 o="Miromico AG"
10D1DC o="INSTAR Deutschland GmbH"
10DDF4 o="Maxway Electronics CO.,LTD"
10DEE4 o="automationNEXT GmbH"
@@ -11628,6 +11652,7 @@
10E4AF o="APR, LLC"
10E68F o="KWANGSUNG ELECTRONICS KOREA CO.,LTD."
10E6AE o="Source Technologies, LLC"
+10E77A o="STMicrolectronics International NV"
10E8EE o="PhaseSpace"
10F163 o="TNK CO.,LTD"
10F3DB o="Gridco Systems, Inc."
@@ -11642,11 +11667,12 @@
140C5B o="PLNetworks"
141330 o="Anakreon UK LLP"
141357 o="ATP Electronics, Inc."
-141459,74366D,BC15AC,E48F34 o="Vodafone Italia S.p.A."
+141459,74366D,801605,BC15AC,E48F34 o="Vodafone Italia S.p.A."
1414E6 o="Ningbo Sanhe Digital Co.,Ltd"
14157C o="TOKYO COSMOS ELECTRIC CO.,LTD."
14169E,2C5731,541473,A444D1,B02A1F o="Wingtech Group (HongKong)Limited"
141A51 o="Treetech Sistemas Digitais"
+141B30 o="Shenzhen Yipingfang Network Technology Co., Ltd."
141BBD o="Volex Inc."
141BF0 o="Intellimedia Systems Ltd"
1423D7 o="EUTRONIX CO., LTD."
@@ -11656,6 +11682,7 @@
142A14 o="ShenZhen Selenview Digital Technology Co.,Ltd"
142BD2 o="Armtel Ltd."
142BD6 o="Guangdong Appscomm Co.,Ltd"
+142C78,68D6ED o="GooWi Wireless Technology Co., Limited"
142D8B o="Incipio Technologies, Inc"
142DF5 o="Amphitech"
142FFD o="LT SECURITY INC"
@@ -11668,6 +11695,7 @@
143AEA o="Dynapower Company LLC"
143DF2 o="Beijing Shidai Hongyuan Network Communication Co.,Ltd"
143F27 o="Noccela Oy"
+143FC3,D46A91 o="SnapAV"
144146 o="Honeywell (China) Co., LTD"
1441E2 o="Monaco Enterprises, Inc."
144319 o="Creative&Link Technology Limited"
@@ -11677,14 +11705,14 @@
14488B o="Shenzhen Doov Technology Co.,Ltd"
144978 o="Digital Control Incorporated"
144C1A o="Max Communication GmbH"
-144E34,8C088B o="Remote Solution"
+144E34,204441,8C088B o="Remote Solution"
145290 o="KNS Group LLC (YADRO Company)"
145412 o="Entis Co., Ltd."
145645 o="Savitech Corp."
1459C3 o="Creative Chips GmbH"
145A83 o="Logi-D inc"
145BE1 o="nyantec GmbH"
-145E45 o="Kaleao Limited"
+145E45 o="Bamboo Systems Group"
146308,4C0DEE o="JABIL CIRCUIT (SHANGHAI) LTD."
146A0B o="Cypress Electronics Limited"
146B72 o="Shenzhen Fortune Ship Technology Co., Ltd."
@@ -11700,7 +11728,7 @@
14942F o="USYS CO.,LTD."
149448 o="BLU CASTLE S.A."
149B2F o="JiangSu ZhongXie Intelligent Technology co., LTD"
-149FB6,7CFD82,ECA9FA o="GUANGDONG GENIUS TECHNOLOGY CO., LTD."
+149FB6,7CFD82,B86392,ECA9FA o="GUANGDONG GENIUS TECHNOLOGY CO., LTD."
14A1BF o="ASSA ABLOY Korea Co., Ltd Unilock"
14A62C o="S.M. Dezac S.A."
14A72B o="currentoptronics Pvt.Ltd"
@@ -11717,6 +11745,7 @@
14C21D o="Sabtech Industries"
14C3C2 o="K.A. Schmersal GmbH & Co. KG"
14CAA0 o="Hu&Co"
+14CCB3 o="AO %GK NATEKS%"
14CF8D,749EA5,98EF9B,98F5A9 o="OHSUNG"
14D76E o="CONCH ELECTRONIC Co.,Ltd"
14DB85 o="S NET MEDIA"
@@ -11768,8 +11797,11 @@
183A48 o="VostroNet"
183BD2,98BB1E,BC2392 o="BYD Precision Manufacture Company Ltd."
1840A4 o="Shenzhen Trylong Smart Science and Technology Co., Ltd."
+1841FE o="Digital 14"
184462 o="Riava Networks, Inc."
+184593,2CDD95,38E3C5,4C8120,501B32,64D954,6CC63B,743C18,900A1A,A09B17,B4265D,D00ED9,E8D0B9,F06865,F49EEF,F844E3,F86CE1,FC10C6 o="Taicang T&W Electronics"
184644,D4B8FF o="Home Control Singapore Pte Ltd"
+18473D,1CBFC0,28CDC4,402343,405BD8,4CEBBD,5C3A45,5CBAEF,646C80,6CADAD,7412B3,8CC84B,A497B1,ACD564,B068E6,C0B5D7,D81265,E86F38,EC5C68 o="CHONGQING FUGUI ELECTRONICS CO.,LTD."
1848D8 o="Fastback Networks"
184BDF o="Caavo Inc"
184E94 o="MESSOA TECHNOLOGIES INC."
@@ -11785,8 +11817,7 @@
18673F o="Hanover Displays Limited"
186751 o="KOMEG Industrielle Messtechnik GmbH"
186882 o="Beward R&D Co., Ltd."
-1868CB,2857BE,4419B6,4447CC,4CBD8F,54C415,5803FB,64DB8B,686DBC,849A40,94E1AC,988B0A,98DF82,A41437,ACCB51,B4A382,BCAD28,BCBAC2,C056E3,C42F90,F84DFC o="Hangzhou Hikvision Digital Technology Co.,Ltd."
-1869D8,68572D o="HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD"
+1869D8,68572D,D4A651 o="HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD"
186D99 o="Adanis Inc."
186F2D,703A73,9C3A9A,A80CCA,D468BA o="Shenzhen Sundray Technologies Company Limited"
187117 o="eta plus electronic gmbh"
@@ -11809,6 +11840,7 @@
188EF9 o="G2C Co. Ltd."
18922C o="Virtual Instruments"
1894C6 o="ShenZhen Chenyee Technology Co., Ltd."
+189552,6CCE44,78A7EB,9C9789 o="1MORE"
1897FF o="TechFaith Wireless Technology Limited"
189A67 o="CSE-Servelec Limited"
18A28A o="Essel-T Co., Ltd"
@@ -11838,6 +11870,7 @@
18D949 o="Qvis Labs, LLC"
18D9EF,80EE73 o="Shuttle Inc."
18DFB4 o="BOSUNG POWERTEC CO.,LTD."
+18DFC1 o="Aetheros"
18E1CA o="wanze"
18E288 o="STT Condigi"
18E80F o="Viking Electronics Inc."
@@ -11853,14 +11886,15 @@
18FC9F o="Changhe Electronics Co., Ltd."
18FF2E o="Shenzhen Rui Ying Da Technology Co., Ltd"
1C0042 o="NARI Technology Co., Ltd."
+1C012D o="Ficer Technology"
1C05B7 o="Chongqing Trantor Technology Co., Ltd."
1C0656 o="IDY Corporation"
-1C08C1 o="Lg Innotek"
1C0B52 o="EPICOM S.A"
1C0FAF o="Lucid Vision Labs"
1C0FCF o="Sypro Optics GmbH"
1C11E1 o="Wartsila Finland Oy"
1C129D o="IEEE PES PSRC/SUB"
+1C1338 o="Kimball Electronics Group, LLC"
1C14B3 o="Airwire Technologies"
1C184A o="ShenZhen RicherLink Technologies Co.,LTD"
1C19DE o="eyevis GmbH"
@@ -11870,7 +11904,6 @@
1C234F,441102 o="EDMI Europe Ltd"
1C24CD,505FB5,88DE7C o="Askey Computer Corp."
1C24EB o="Burlywood"
-1C25E1,48216C,6458AD,64F88A,688B0F,A0950C,AC5474,B03055,B05365,C098DA,C0D0FF,E42D7B o="China Mobile IOT Company Limited"
1C27DD o="Datang Gohighsec(zhejiang)Information Technology Co.,Ltd."
1C2AA3 o="Shenzhen HongRui Optical Technology Co., Ltd."
1C2E1B o="Suzhou Tremenet Communication Technology Co., Ltd."
@@ -11898,11 +11931,12 @@
1C5A6B o="Philips Electronics Nederland BV"
1C5C55 o="PRIMA Cinema, Inc"
1C5C60 o="Shenzhen Belzon Technology Co.,LTD."
+1C5D80 o="Mitubishi Hitachi Power Systems Industries Co., Ltd."
1C5FFF o="Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch"
1C60DE,488AD2,6C5940,8CF228,BC5FF6,C8E7D8,D02516,F4EE14 o="MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD."
1C63B7 o="OpenProducts 237 AB"
1C63BF o="SHENZHEN BROADTEL TELECOM CO.,LTD"
-1C687E,5C27D4,B05947 o="Shenzhen Qihu Intelligent Technology Company Limited"
+1C687E,5C27D4,B05947,B88035,C85BA0 o="Shenzhen Qihu Intelligent Technology Company Limited"
1C697A,94C691 o="EliteGroup Computer Systems Co., LTD"
1C6BCA o="Mitsunami Co., Ltd."
1C6E4C o="Logistic Service & Engineering Co.,Ltd"
@@ -11923,16 +11957,17 @@
1C8E8E o="DB Communication & Systems Co., ltd."
1C8F8A o="Phase Motion Control SpA"
1C9179 o="Integrated System Technologies Ltd"
-1C919D o="Dongguan Liesheng Electronic Co., Ltd."
+1C919D,9C19C2 o="Dongguan Liesheng Electronic Co., Ltd."
1C9492 o="RUAG Schweiz AG"
1C955D o="I-LAX ELECTRONICS INC."
1C959F o="Veethree Electronics And Marine LLC"
-1C965A,2C4D79,401B5F,841766,90895F,A0AB51,A41566,A45385,A830AD,ACFD93,DC0C2D,DCAF68 o="WEIFANG GOERTEK ELECTRONICS CO.,LTD"
+1C965A,2C4D79,401B5F,4CB99B,841766,90895F,A0AB51,A41566,A45385,A830AD,ACFD93,DC0C2D,DCAF68 o="WEIFANG GOERTEK ELECTRONICS CO.,LTD"
1C973D o="PRICOM Design"
1C97C5 o="Ynomia Pty Ltd"
+1C98C1,30C9AB,8060B7,DCE994 o="CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD."
1C9C26 o="Zoovel Technologies"
1C9ECB o="Beijing Nari Smartchip Microelectronics Company Limited"
-1CA0B8,28C13C,702084,A4AE11,F4939F o="Hon Hai Precision Ind. Co., Ltd."
+1CA0B8,28C13C,702084,A4AE11-A4AE12,F4939F o="Hon Hai Precision Ind. Co., Ltd."
1CA2B1 o="ruwido austria gmbh"
1CAB01 o="Innovolt"
1CADD1 o="Bosung Electronics Co., Ltd."
@@ -11941,7 +11976,6 @@
1CB857 o="Becon Technologies Co,.Ltd."
1CBBA8 o="OJSC %Ufimskiy Zavod %Promsvyaz%"
1CBD0E o="Amplified Engineering Pty Ltd"
-1CBFC0,28CDC4,402343,405BD8,4CEBBD,5C3A45,5CBAEF,8CC84B,ACD564,B068E6,C0B5D7,D81265,E86F38,EC5C68 o="CHONGQING FUGUI ELECTRONICS CO.,LTD."
1CBFCE o="Shenzhen Century Xinyang Technology Co., Ltd"
1CC11A o="Wavetronix"
1CC316 o="MileSight Technology Co., Ltd."
@@ -11951,7 +11985,6 @@
1CD40C o="Kriwan Industrie-Elektronik GmbH"
1CD6BD o="LEEDARSON LIGHTING CO., LTD."
1CE165 o="Marshal Corporation"
-1CEA0B,3C2C99,68215F,80A235,8CEA1B,A82BB5,B86A97,CC37AB o="Edgecore Networks Corporation"
1CEEC9,78B3CE o="Elo touch solutions"
1CEEE8 o="Ilshin Elecom"
1CEFCE o="bebro electronic GmbH"
@@ -11991,7 +12024,6 @@
204AAA o="Hanscan Spain S.A."
204C6D o="Hugo Brennenstuhl Gmbh & Co. KG."
204E6B o="Axxana(israel) ltd"
-2050E7,70F754,D49CDD o="AMPAK Technology,Inc."
2053CA o="Risk Technology Ltd"
205532 o="Gotech International Technology Limited"
205721 o="Salix Technology CO., Ltd."
@@ -12018,6 +12050,7 @@
20918A o="PROFALUX"
2091D9 o="I'M SPA"
20968A,2823F5,58C876,8C1850,B45459,CCF0FD,F010AB o="China Mobile (Hangzhou) Information Technology Co., Ltd."
+2098D8 o="Shenzhen Yingdakang Technology CO., LTD"
209AE9 o="Volacomm Co., Ltd"
209BA5 o="JIAXING GLEAD Electronics Co.,Ltd"
20A2E7 o="Lee-Dickens Ltd"
@@ -12058,6 +12091,7 @@
20FABB o="Cambridge Executive Limited"
20FECD o="System In Frontier Inc."
20FEDB o="M2M Solution S.A.S."
+2400FA o="China Mobile (Hangzhou) Information Technology Co., Ltd"
24050F o="MTN Electronic Co. Ltd"
240917 o="Devlin Electronics Limited"
240B2A o="Viettel Group"
@@ -12068,6 +12102,7 @@
241125 o="Hutek Co., Ltd."
241148 o="Entropix, LLC"
2411D0 o="Chongqing Ehs Science and Technology Development Co.,Ltd."
+241407 o="Xiamen Sigmastar Technology Ltd."
241A8C o="Squarehead Technology AS"
241B13 o="Shanghai Nutshell Electronic Co., Ltd."
241B44 o="Hangzhou Tuners Electronics Co., Ltd"
@@ -12083,6 +12118,7 @@
243F30 o="Oxygen Broadband s.a."
2440AE o="NIIC Technology Co., Ltd."
2442BC o="Alinco,incorporated"
+2443E2,304F75,9C65EE,D096FB o="DASAN Network Solutions"
244597 o="GEMUE Gebr. Mueller Apparatebau"
24470E o="PentronicAB"
24497B o="Innovative Converged Devices Inc"
@@ -12104,6 +12140,7 @@
246C8A o="YUKAI Engineering"
247260 o="IOTTECH Corp"
247656 o="Shanghai Net Miles Fiber Optics Technology Co., LTD."
+2479EF o="Greenpacket Berhad, Taiwan"
2479F8 o="KUPSON spol. s r.o."
247C4C o="Herman Miller"
248000 o="Westcontrol AS"
@@ -12123,6 +12160,7 @@
24A937 o="PURE Storage"
24AF54 o="NEXGEN Mediatech Inc."
24B0A9 o="Shanghai Mobiletek Communication Ltd."
+24B105 o="Prama Hikvision India Private Limited"
24B6B8 o="FRIEM SPA"
24B88C o="Crenus Co.,Ltd."
24B8D2 o="Opzoon Technology Co.,Ltd."
@@ -12137,6 +12175,7 @@
24C42F o="Philips Lifeline"
24C848 o="mywerk Portal GmbH"
24C86E o="Chaney Instrument Co."
+24C8D3 o="McWane India Pvt Ltd"
24C9DE o="Genoray"
24CBE7 o="MYK, Inc."
24CF21 o="Shenzhen State Micro Technology Co., Ltd"
@@ -12148,7 +12187,7 @@
24DAB6 o="Sistemas de Gestión Energética S.A. de C.V"
24DBAD o="ShopperTrak RCT Corporation"
24DFA7,A043B0 o="Hangzhou BroadLink Technology Co.,Ltd"
-24E124 o="Xiamen Ursaconn Technology Co. , Ltd."
+24E124 o="Xiamen Ursalink Technology Co., Ltd."
24E43F o="Wenzhou Kunmei Communication Technology Co.,Ltd."
24E5AA o="Philips Oral Healthcare, Inc."
24E6BA o="JSC Zavod im. Kozitsky"
@@ -12159,10 +12198,10 @@
24EE3A o="Chengdu Yingji Electronic Hi-tech Co Ltd"
24F0FF o="GHT Co., Ltd."
24F128 o="Telstra"
+24F150 o="Guangzhou Qi'an Technology Co., Ltd."
24F2DD o="Radiant Zemax LLC"
24F57E o="HWH CO., LTD."
24FAF3 o="Shanghai Flexem Technology Co.,Ltd."
-24FD0D o="INDÚSTRIA DE TELECOMUNICAÇÃO ELETRÔNICA"
24FD5B o="SmartThings, Inc."
280245 o="Konze System Technology Co.,Ltd."
2804E0 o="FERMAX ELECTRONICA S.A.U."
@@ -12204,7 +12243,6 @@
285132 o="Shenzhen Prayfly Technology Co.,Ltd"
2852E0 o="Layon international Electronic & Telecom Co.,Ltd"
2852F9 o="Zhongxin Intelligent Times (Shenzhen) Co., Ltd."
-2856C1 o="Harman International"
285F2F o="RNware Co.,Ltd."
286046 o="Lantech Communications Global, Inc."
286094 o="CAPELEC"
@@ -12254,7 +12292,8 @@
28CD1C o="Espotel Oy"
28CD4C o="Individual Computers GmbH"
28CD9C o="Shenzhen Dynamax Software Development Co.,Ltd."
-28CF08,A8B9B3 o="ESSYS"
+28CF08,487AFF,A8B9B3 o="ESSYS"
+28D127,44237C,50D2F5,50EC50,5448E6,58B623,5CE50C,6490C1,88C397,8C53C3,9C9D7E,B460ED,EC4D3E o="Beijing Xiaomi Mobile Software Co., Ltd"
28D244 o="LCFC(HeFei) Electronics Technology Co., Ltd."
28D436 o="Jiangsu dewosi electric co., LTD"
28D576 o="Premier Wireless, Inc."
@@ -12312,7 +12351,7 @@
2C3796 o="CYBO CO.,LTD."
2C37C5 o="Qingdao Haier Intelligent Home Appliance Technology Co.,Ltd"
2C3A28 o="Fagor Electrónica"
-2C3AFD,2C91AB,3810D5,444E6D,5C4979,7CFF4D,989BCB,C80E14,CCCE1E,DC396F,E0286D,E8DF70,F0B014 o="AVM Audiovisuelles Marketing und Computersysteme GmbH"
+2C3AFD,2C91AB,3810D5,3CA62F,444E6D,5C4979,74427F,7CFF4D,989BCB,C80E14,CCCE1E,DC396F,E0286D,E8DF70,F0B014 o="AVM Audiovisuelles Marketing und Computersysteme GmbH"
2C3BFD o="Netstor Technology Co., Ltd."
2C3F3E o="Alge-Timing GmbH"
2C402B o="Smart iBlue Technology Limited"
@@ -12333,6 +12372,7 @@
2C6798 o="InTalTech Ltd."
2C67FB o="ShenZhen Zhengjili Electronics Co., LTD"
2C69BA o="RF Controls, LLC"
+2C6F51 o="Herospeed Digital Technology Limited"
2C7155 o="HiveMotion"
2C72C3 o="Soundmatters"
2C7360,4C0FC7,6CE8C6,B447F5,B8C6AA o="Earda Technologies co Ltd"
@@ -12358,7 +12398,7 @@
2CA539 o="Parallel Wireless, Inc"
2CA780 o="True Technologies Inc."
2CA89C o="Creatz inc."
-2CAA8E o="Wyze Labs Inc"
+2CAA8E,7C78B2 o="Wyze Labs Inc"
2CAC44 o="CONEXTOP"
2CAD13 o="SHENZHEN ZHILU TECHNOLOGY CO.,LTD"
2CB0DF o="Soliton Technologies Pvt Ltd"
@@ -12374,7 +12414,6 @@
2CD1DA o="Sanjole, Inc."
2CD2E3 o="Guangzhou Aoshi Electronic Co.,Ltd"
2CDD0C o="Discovergy GmbH"
-2CDD95,38E3C5,4C8120,501B32,64D954,6CC63B,743C18,900A1A,B4265D,D00ED9,E8D0B9,F06865,F49EEF,F844E3,F86CE1,FC10C6 o="Taicang T&W Electronics"
2CE2A8 o="DeviceDesign"
2CE310 o="Stratacache"
2CE871 o="Alert Metalguard ApS"
@@ -12414,10 +12453,9 @@
304449 o="PLATH GmbH"
3044A1 o="Shanghai Nanchao Information Technology"
30493B o="Nanjing Z-Com Wireless Co.,Ltd"
-304A26 o="Shenzhen Trolink Technology CO, LTD"
+304A26,68B9D3 o="Shenzhen Trolink Technology CO, LTD"
304C7E o="Panasonic Electric Works Automation Controls Techno Co.,Ltd."
304EC3 o="Tianjin Techua Technology Co., Ltd."
-304F75,9C65EE,D096FB o="DASAN Network Solutions"
305075,70BF92,745C4B o="GN Audio A/S"
3051F8 o="BYK-Gardner GmbH"
30525A o="NST Co., LTD"
@@ -12453,16 +12491,17 @@
309FFB o="Ardomus Networks Corporation"
30A220 o="ARG Telecom"
30A243 o="Shenzhen Prifox Innovation Technology Co., Ltd."
+30A452 o="Arrival Elements BV"
30A889 o="DECIMATOR DESIGN"
30AABD o="Shanghai Reallytek Information Technology Co.,Ltd"
30AE7B o="Deqing Dusun Electron CO., LTD"
30AEF6 o="Radio Mobile Access"
30B164 o="Power Electronics International Inc."
-30B216 o="ABB AG - Power Grids - Grid Automation"
+30B216 o="Hitachi ABB Power Grids – Grid Automation"
+30B237,345BBB,502DBB,847C9B,A0681C,F0C9D1 o="GD Midea Air-Conditioning Equipment Co.,Ltd."
30B3A2 o="Shenzhen Heguang Measurement & Control Technology Co.,Ltd"
30B5F1 o="Aitexin Technology Co., Ltd"
30B9B0 o="Intracom Asia Co., Ltd"
-30C01B,5CFB7C,8850F6,B8F653,E8D03C,F4BCDA o="Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd"
30C750 o="MIC Technology Group"
30C82A o="WI-BIZ srl"
30D357 o="Logosol, Inc."
@@ -12490,7 +12529,7 @@
340A22 o="TOP-ACCESS ELECTRONICS CO LTD"
340B40 o="MIOS ELETTRONICA SRL"
340CED o="Moduel AB"
-340F66 o="MicroArx Corporation"
+340F66 o="Web Sensing LLC"
341290 o="Treeview Co.,Ltd."
3413A8 o="Mediplan Limited"
341A4C o="SHENZHEN WEIBU ELECTRONICS CO.,LTD."
@@ -12507,6 +12546,7 @@
343794 o="Hamee Corp."
3438AF o="Inlab Software GmbH"
343D98,74B9EB o="JinQianMao Technology Co.,Ltd."
+343EA4,54E019 o="Ring LLC"
3440B5,40F2E9,98BE94,A897DC o="IBM"
3441A8 o="ER-Telecom"
34466F o="HiTEM Engineering"
@@ -12520,7 +12560,6 @@
34543C o="TAKAOKA TOKO CO.,LTD."
345ABA o="tcloud intelligence"
345B11 o="EVI HEAT AB"
-345BBB,502DBB,847C9B,F0C9D1 o="GD Midea Air-Conditioning Equipment Co.,Ltd."
345C40 o="Cargt Holdings LLC"
345D10 o="Wytek"
3463D4 o="BIONIX SUPPLYCHAIN TECHNOLOGIES SLU"
@@ -12539,9 +12578,10 @@
3482DE o="Kiio Inc"
348302 o="iFORCOM Co., Ltd"
34862A o="Heinz Lackmann GmbH & Co KG"
-34873D o="Quectel Wireless Solution Co.,Ltd."
+34873D,50804A,546503,80FBF0,90BDE6,A486AE,C44137 o="Quectel Wireless Solutions Co., Ltd."
34885D,F47335 o="Logitech Far East"
348B75,48FCB6,AC562C o="LAVA INTERNATIONAL(H.K) LIMITED"
+34916F o="UserGate Ltd."
349342 o="TTE Corporation"
3497FB o="ADVANCED RF TECHNOLOGIES INC"
34996F o="VPI Engineering"
@@ -12593,6 +12633,7 @@
34E42A o="Automatic Bar Controls Inc."
34E70B o="HAN Networks Co., Ltd"
34EA34,780F77,C8F742 o="HangZhou Gubei Electronics Technology Co.,Ltd"
+34EAE7 o="Shanghai High-Flying Electronics Technology Co., Ltd"
34ED0B o="Shanghai XZ-COM.CO.,Ltd."
34EF8B o="NTT Communications Corporation"
34F0CA o="Shenzhen Linghangyuan Digital Technology Co.,Ltd."
@@ -12660,7 +12701,7 @@
388E7A o="AUTOIT"
388EE7 o="Fanhattan LLC"
3891FB o="Xenox Holding BV"
-3894E0 o="Syrotech Networks. Ltd."
+3894E0,7CA96B o="Syrotech Networks. Ltd."
389592 o="Beijing Tendyron Corporation"
3898D8 o="MERITECH CO.,LTD"
389F5A o="C-Kur TV Inc."
@@ -12683,6 +12724,7 @@
38C70A o="WiFiSong"
38C7BA o="CS Services Co.,Ltd."
38C9A9 o="SMART High Reliability Solutions, Inc."
+38CA73,408C4C,50A132,B899AE o="Shenzhen MiaoMing Intelligent Technology Co.,Ltd"
38CA97 o="Contour Design LLC"
38CD07 o="Beijing FaceCam Technology Co., Ltd."
38D135 o="EasyIO Corporation Sdn. Bhd."
@@ -12699,14 +12741,14 @@
38EE9D o="Anedo Ltd."
38EFE3,B40016 o="INGENICO TERMINALS SAS"
38F098 o="Vapor Stone Rail Systems"
-38F0C8 o="Livestream"
+38F0C8 o="Mevo Inc."
38F135 o="SensorTec-Canada"
-38F32E,D08A55 o="Skullcandy"
+38F32E,5C443E,D08A55 o="Skullcandy"
38F33F o="TATSUNO CORPORATION"
38F554 o="HISENSE ELECTRIC CO.,LTD"
38F557 o="JOLATA, INC."
38F597 o="home2net GmbH"
-38F601 o="SOLID STATE STORAGE TECHNOLOGY CORPORATION"
+38F601 o="Solid State Storage Technology Corporation"
38F708 o="National Resource Management, Inc."
38F7B2 o="SEOJUN ELECTRIC"
38F8B7 o="V2COM PARTICIPACOES S.A."
@@ -12730,12 +12772,13 @@
3C1A0F o="ClearSky Data"
3C1A57 o="Cardiopulmonary Corp"
3C1A79 o="Huayuan Technology CO.,LTD"
+3C1A9E o="VitalThings AS"
3C1CBE o="JADAK LLC"
3C1E13 o="HANGZHOU SUNRISE TECHNOLOGY CO., LTD"
3C26D5 o="Sotera Wireless"
3C2763 o="SLE quality engineering GmbH & Co. KG"
3C28A6 o="Alcatel-Lucent Enterprise (China)"
-3C2AF4 o="Brother Industries, LTD."
+3C2AF4,B42200 o="Brother Industries, LTD."
3C2C94 o="杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd)"
3C2F3A o="SFORZATO Corp."
3C300C o="Dewar Electronics Pty Ltd"
@@ -12749,6 +12792,7 @@
3C4937 o="ASSMANN Electronic GmbH"
3C4C69 o="Infinity System S.L."
3C4E47 o="Etronic A/S"
+3C53D7 o="CEDES AG"
3C57BD o="Kessler Crane Inc."
3C57D5 o="FiveCo"
3C5CC3 o="Shenzhen First Blue Chip Technology Ltd"
@@ -12794,7 +12838,7 @@
3CB792 o="Hitachi Maxell, Ltd., Optronics Division"
3CB9A6 o="Belden Deutschland GmbH"
3CBB73,40C81F o="Shenzhen Xinguodu Technology Co., Ltd."
-3CBD3E,8C5AF8,C82832,D45EEC,E0B655,E4DB6D,ECFA5C o="Beijing Xiaomi Electronics Co., Ltd."
+3CBD3E,6C0DC4,8C5AF8,C82832,D45EEC,E0B655,E4DB6D,ECFA5C o="Beijing Xiaomi Electronics Co., Ltd."
3CBDD8,3CCD93,9893CC,C041F6,CC2D8C,E85B5B o="LG ELECTRONICS INC"
3CC079 o="Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd"
3CC0C6 o="d&b audiotechnik GmbH"
@@ -12824,6 +12868,7 @@
4000E0 o="Derek(Shaoguan)Limited"
400107 o="Arista Corp"
40040C o="A&T"
+400589 o="T-Mobile, USA"
4007C0 o="Railtec Systems GmbH"
400E67 o="Tremol Ltd."
4011DC o="Sonance"
@@ -12840,11 +12885,11 @@
403067 o="Conlog (Pty) Ltd"
40336C o="Godrej & Boyce Mfg. co. ltd"
4037AD o="Macro Image Technology, Inc."
-404022,A43111 o="ZIV"
+404022,404028,A43111 o="ZIV"
40406B o="Icomera"
404229 o="Layer3TV, Inc"
4045DA o="Spreadtrum Communications (Shanghai) Co., Ltd."
-40476A o="AG Acquisition Corp. d.b.a. ASTRO Gaming"
+40476A o="Astro Gaming"
40498A o="Synapticon GmbH"
404A18 o="Addrek Smart Solutions"
404AD4,84D4C8 o="Widex A/S"
@@ -12863,6 +12908,7 @@
406186 o="MICRO-STAR INT'L CO.,LTD"
40618E o="Stella-Green Co"
406231 o="GIFA"
+406234,C419D1,D80BCB,D85F77 o="Telink Semiconductor (Shanghai) Co., Ltd."
4062B6 o="Tele system communication"
40667A o="mediola - connected living AG"
406826 o="Thales UK Limited"
@@ -12879,6 +12925,7 @@
4088E0 o="Beijing Ereneben Information Technology Limited Shenzhen Branch"
408A9A o="TITENG CO., Ltd."
408BF6,5CAD76 o="Shenzhen TCL New Technology Co., Ltd"
+409505 o="ACOINFO TECHNOLOGY CO.,LTD"
409558,40987B o="Aisino Corporation"
4095BD o="NTmore.Co.,Ltd"
4097D1 o="BK Electronics cc"
@@ -12909,6 +12956,7 @@
40D559 o="MICRO S.E.R.I."
40D63C o="Equitech Industrial(DongGuan)Co.,Ltd"
40DC9D o="HAJEN"
+40DDD1 o="Beautiful Card Corporation"
40DF02 o="LINE BIZ Plus"
40E730 o="DEY Storage Systems, Inc."
40E793 o="Shenzhen Siviton Technology Co.,Ltd"
@@ -12930,9 +12978,9 @@
44184F o="Fitview"
441E91 o="ARVIDA Intelligent Electronics Technology Co.,Ltd."
4422F1 o="S.FAC, INC"
-44237C,50D2F5,50EC50,5CE50C,6490C1,88C397,8C53C3 o="Beijing Xiaomi Mobile Software Co., Ltd"
4423AA o="Farmage Co., Ltd."
4425BB o="Bamboo Entertainment Corporation"
+4427F3 o="70mai Co.,Ltd."
4428A3 o="Jiangsu fulian Communication Technology Co., Ltd."
442938 o="NietZsche enterprise Co.Ltd."
442AFF o="E3 Technology, Inc."
@@ -12970,6 +13018,7 @@
44656A o="Mega Video Electronic(HK) Industry Co., Ltd"
44666E o="IP-LINE"
446755 o="Orbit Irrigation"
+44680C,68A8E1,884A70 o="Wacom Co.,Ltd."
4468AB o="JUIN COMPANY, LIMITED"
446C24 o="Reallin Electronic Co.,Ltd"
44700B o="IFFU"
@@ -12983,9 +13032,11 @@
448312 o="Star-Net"
4486C1 o="Siemens Low Voltage & Products"
448723 o="HOYA SERVICE CORPORATION"
+4487DB o="Tymphany Acoustic Technology (Huizhou) Co., Ltd."
4488CB o="Camco Technologies NV"
448A5B o="Micro-Star INT'L CO., LTD."
448C52 o="KTIS CO., Ltd"
+448DBF o="Rhino Mobility LLC"
448E12 o="DT Research, Inc."
448E81 o="VIG"
4491DB,902181 o="Shanghai Huaqin Telecom Technology Co.,Ltd"
@@ -12995,7 +13046,7 @@
449CB5 o="Alcomp, Inc"
449F7F o="DataCore Software Corporation"
44A466 o="GROUPE LDLC"
-44A61E o="INGRAM MICRO SERVICES"
+44A54E,9C6937,C49886 o="Qorvo International Pte. Ltd."
44A689 o="PROMAX ELECTRONICA SA"
44A6E5 o="THINKING TECHNOLOGY CO.,LTD"
44A8C2 o="SEWOO TECH CO., LTD"
@@ -13029,20 +13080,23 @@
44EE02 o="MTI Ltd."
44EE30 o="Budelmann Elektronik GmbH"
44EFCF o="UGENE SOLUTION inc."
+44F4E7 o="Cohesity Inc"
44F849 o="Union Pacific Railroad"
44FDA3 o="Everysight LTD."
-4801C5,4C4FEE,5C17CF,64A2F9,94652D,9809CF o="OnePlus Technology (Shenzhen) Co., Ltd"
+4801C5,4C4FEE,5C17CF,64A2F9,94652D,9809CF,AC5FEA,E44122 o="OnePlus Technology (Shenzhen) Co., Ltd"
48022A o="B-Link Electronic Limited"
480362 o="DESAY ELECTRONICS(HUIZHOU)CO.,LTD"
48049F o="ELECOM CO., LTD"
48066A o="Tempered Networks, Inc."
481063 o="NTT Innovation Institute, Inc."
481249 o="Luxcom Technologies Inc."
+481693,48C58D o="Lear Corporation GmbH"
48174C o="MicroPower technologies"
481842 o="Shanghai Winaas Co. Equipment Co. Ltd."
4818FA o="Nocsys"
481A84 o="Pointer Telocation Ltd"
481BD2 o="Intron Scientific co., ltd."
+482335,80EACA o="Dialog Semiconductor Hellas SA"
4826E8 o="Tek-Air Systems, Inc."
482759 o="Levven Electronics Ltd."
482CEA o="Motorola Inc Business Light Radios"
@@ -13082,6 +13136,7 @@
489D18 o="Flashbay Limited"
48A22D o="Shenzhen Huaxuchang Telecom Technology Co.,Ltd"
48A2B7 o="Kodofon JSC"
+48A2B8 o="Chengdu Vision-Zenith Tech.Co,.Ltd"
48A493,AC3FA4 o="TAIYO YUDEN CO.,LTD"
48A6D2 o="GJsun Optical Science and Tech Co.,Ltd."
48AA5D o="Store Electronic Systems"
@@ -13098,7 +13153,6 @@
48C049 o="Broad Telecom SA"
48C093 o="Xirrus, Inc."
48C3B0 o="Pharos Co.Ltd"
-48C58D o="Lear Corporation GmbH"
48C663 o="GTO Access Systems LLC"
48C862 o="Simo Wireless,Inc."
48C8B6 o="SysTec GmbH"
@@ -13139,19 +13193,23 @@
4C1A3A o="PRIMA Research And Production Enterprise Ltd."
4C1A95 o="Novakon Co., Ltd."
4C218C o="Panasonic India Private limited"
+4C2219 o="YUANFUDAO HK LIMTED"
4C2258 o="cozybit, Inc."
4C26E7 o="Welgate Co., Ltd."
4C2C80 o="Beijing Skyway Technologies Co.,Ltd"
4C2C83 o="Zhejiang KaNong Network Technology Co.,Ltd."
+4C2EFE o="Shenzhen Comnect Technology Co.,LTD"
4C2F9D o="ICM Controls"
4C3089 o="Thales Transportation Systems GmbH"
4C322D o="TELEDATA NETWORKS"
4C32D9 o="M Rutty Holdings Pty. Ltd."
+4C3329 o="Sweroam"
4C334E o="HIGHTECH"
4C364E o="Panasonic Corporation Connected Solutions Company"
4C3909 o="HPL Electric & Power Private Limited"
4C3910 o="Newtek Electronics co., Ltd."
4C3B74 o="VOGTEC(H.K.) Co., Ltd"
+4C4088 o="SANSHIN ELECTRONICS CO.,LTD."
4C4576 o="China Mobile(Hangzhou) Information Technology Co.,Ltd."
4C48DA o="Beijing Autelan Technology Co.,Ltd"
4C4B68 o="Mobile Device, Inc."
@@ -13193,6 +13251,7 @@
4CADA8 o="PANOPTICS CORP."
4CAE1C o="SaiNXT Technologies LLP"
4CAE31 o="ShengHai Electronics (Shenzhen) Ltd"
+4CAEEC o="Guangzhou limee technology co.,LTD"
4CB008 o="Shenzhen Gwelltimes Technology Co.,Ltd"
4CB0E8 o="Beijing RongZhi xinghua technology co., LTD"
4CB21C o="Maxphotonics Co.,Ltd"
@@ -13200,7 +13259,7 @@
4CB4EA o="HRD (S) PTE., LTD."
4CB76D o="Novi Security"
4CB81C o="SAM Electronics GmbH"
-4CB82C o="Cambridge Mobile Telematics, Inc."
+4CB911 o="Raisecom Technology CO.,LTD"
4CB9C8 o="CONET CO., LTD."
4CBAA3 o="Bison Electronics Inc."
4CBB58,645A04,907F61,B0C090 o="Chicony Electronics Co., Ltd."
@@ -13230,6 +13289,7 @@
4CF5A0 o="Scalable Network Technologies Inc"
4CF737 o="SamJi Electronics Co., Ltd"
4CFBFE o="Sercomm Japan Corporation"
+4CFCAA,98ED5C o="Tesla,Inc."
4CFF12 o="Fuze Entertainment Co., ltd"
500084 o="Siemens Canada"
50008C o="Hong Kong Telecommunications (HKT) Limited"
@@ -13255,6 +13315,7 @@
502ECE o="Asahi Electronics Co.,Ltd"
5031AD o="ABB Global Industries and Services Private Limited"
5033F0 o="YICHEN (SHENZHEN) TECHNOLOGY CO.LTD"
+50382F o="ASE Group Chung-Li"
503A7D o="AlphaTech PLC Int’l Co., Ltd."
503E7C o="LeiShen Intelligent System Co.Ltd"
503F56 o="Syncmold Enterprise Corp"
@@ -13262,7 +13323,7 @@
5043B9 o="OktoInform RUS"
5045F7 o="Liuhe Intelligence Technology Ltd."
5048EB o="BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD."
-504A5E,8809AF,B810D4,C816A5,E0C2B7 o="Masimo Corporation"
+504A5E,8809AF,B810D4,C816A5,C88BE8,E0C2B7 o="Masimo Corporation"
504B5B o="CONTROLtronic GmbH"
504C7E o="THE 41ST INSTITUTE OF CETC"
504F94 o="Loxone Electronics GmbH"
@@ -13279,7 +13340,7 @@
5061D6 o="Indu-Sol GmbH"
506441 o="Greenlee"
506787 o="Planet Networks"
-506B8D o="Nutanix"
+506B8D,B47947,E01995 o="Nutanix"
506CBE o="InnosiliconTechnology Ltd"
506E92 o="Innocent Technology Co., Ltd."
506F98 o="Sehaj Synergy Technologies Private Limited"
@@ -13289,9 +13350,7 @@
507691 o="Tekpea, Inc."
5076A6 o="Ecil Informatica Ind. Com. Ltda"
50795B o="Interexport Telecomunicaciones S.A."
-507B9D,54E1AD,68F728,8C1645,98FA9B,C85B76,E86A64,F875A4 o="LCFC(HeFei) Electronics Technology co., ltd"
507D02 o="BIODIT"
-50804A,546503,80FBF0,90BDE6 o="Quectel Wireless Solutions Co., Ltd."
5087B8 o="Nuvyyo Inc"
508A0F o="SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD."
508A42 o="Uptmate Technology Co., LTD"
@@ -13304,7 +13363,6 @@
5098F3 o="Rheem Australia Pty Ltd"
50A054 o="Actineon"
50A0BF o="Alba Fiber Systems Inc."
-50A132,B899AE o="Shenzhen MiaoMing Intelligent Technology Co.,Ltd"
50A6E3 o="David Clark Company"
50A715 o="Aboundi, Inc."
50A9DE o="Smartcom - Bulgaria AD"
@@ -13320,6 +13378,7 @@
50B8A2 o="ImTech Technologies LLC,"
50C006 o="Carmanah Signs"
50C271 o="SECURETECH INC"
+50C68E o="Biwin Semiconductor (HK) Company Limted"
50C9A0 o="SKIPPER AS"
50CD32 o="NanJing Chaoran Science & Technology Co.,Ltd."
50CE75 o="Measy Electronics Co., Ltd."
@@ -13376,7 +13435,6 @@
544741 o="XCHENG HOLDING"
5447D3 o="TSAT AS"
54489C o="CDOUBLES ELECTRONICS CO. LTD."
-5448E6 o="Beijing Xiaomi Mobile Software Co.,Ltd"
544A05 o="wenglor sensoric gmbh"
545146 o="AMG Systems Ltd."
545414 o="Digital RF Corea, Inc"
@@ -13424,7 +13482,6 @@
54DED0 o="Sevio Srl"
54DF00 o="Ulterius Technologies, LLC"
54DF63 o="Intrakey technologies GmbH"
-54E019 o="Ring LLC"
54E2C8 o="Dongguan Aoyuan Electronics Technology Co., Ltd"
54E3B0 o="JVL Industri Elektronik"
54E4A9 o="BHR Tech GmbH"
@@ -13434,6 +13491,7 @@
54EF44 o="Lumi United Technology Co., Ltd"
54EF92 o="Shenzhen Elink Technology Co., LTD"
54EFFE o="Fullpower Technologies, Inc."
+54F15F,601D9D,A42985,B4C9B9,C0E7BF o="Sichuan AI-Link Technology Co., Ltd."
54F5B6 o="ORIENTAL PACIFIC INTERNATIONAL LIMITED"
54F666 o="Berthold Technologies GmbH and Co.KG"
54F876 o="ABB AG"
@@ -13477,7 +13535,6 @@
58570D o="Danfoss Solar Inverters"
586163 o="Quantum Networks (SG) Pte. Ltd."
58639A o="TPL SYSTEMES"
-5865E6 o="INFOMARK CO., LTD."
58671A,64C667 o="Barnes&Noble"
58677F o="Clare Controls Inc."
58685D o="Tempo Australia Pty Ltd"
@@ -13497,6 +13554,7 @@
5887E2,846223,94BA56,A4A80F o="Shenzhen Coship Electronics Co., Ltd."
588D64 o="Xi'an Clevbee Technology Co.,Ltd"
58920D o="Kinetic Avionics Limited"
+5894A2 o="KETEK GmbH"
5894B2 o="BrainCo"
5894CF o="Vertex Standard LMR, Inc."
58986F o="Revolution Display"
@@ -13505,6 +13563,7 @@
58A0CB o="TrackNet, Inc"
58A48E o="PixArt Imaging Inc."
58A76F o="iD corporation"
+58A87B,5C75AF,F051EA o="Fitbit, Inc."
58B0D4 o="ZuniData Systems Inc."
58B42D,7868F7,ACBB61 o="YSTen Technology Co.,Ltd"
58B568 o="SECURITAS DIRECT ESPAÑA, SAU"
@@ -13527,6 +13586,7 @@
58E636 o="EVRsafe Technologies"
58E747 o="Deltanet AG"
58E808 o="AUTONICS CORPORATION"
+58E873 o="HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd"
58EAFC o="ELL-IoT Inc"
58EB14 o="Proteus Digital Health"
58ECE1 o="Newport Corporation"
@@ -13546,6 +13606,7 @@
5C0BCA o="Tunstall Nordic AB"
5C0C0E o="Guizhou Huaxintong Semiconductor Technology Co Ltd"
5C0CBB o="CELIZION Inc."
+5C0FFB o="Amino Communications Ltd"
5C1193 o="Seal One AG"
5C1437 o="Thyssenkrupp Aufzugswerke GmbH"
5C1515 o="ADVAN"
@@ -13556,6 +13617,7 @@
5C18B5 o="Talon Communications"
5C20D0 o="Asoni Communication Co., Ltd."
5C22C4 o="DAE EUN ELETRONICS CO., LTD"
+5C2316 o="Squirrels Research Labs LLC"
5C2443 o="O-Sung Telecom Co., Ltd."
5C2479 o="Baltech AG"
5C254C o="Avire Global Pte Ltd"
@@ -13566,6 +13628,7 @@
5C32C5 o="Teracom Ltd."
5C3327 o="Spazio Italia srl"
5C335C o="Swissphone Telecom AG"
+5C3400 o="HISENSE VISUAL TECHNOLOGY CO.,LTD"
5C35DA o="There Corporation Oy"
5C38E0 o="Shanghai Super Electronics Technology Co.,LTD"
5C3B35 o="Gehirn Inc."
@@ -13585,8 +13648,8 @@
5C6984 o="NUVICO"
5C6A7D o="KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI."
5C6B4F o="Hello Inc."
+5C6BD7 o="Foshan VIOMI Electric Appliance Technology Co. Ltd."
5C6F4F o="S.A. SISTEL"
-5C75AF,F051EA o="Fitbit, Inc."
5C7757 o="Haivision Network Video"
5C81A7 o="Network Devices Pty Ltd"
5C8486 o="Brightsource Industries Israel LTD"
@@ -13596,6 +13659,8 @@
5C8778 o="Cybertelbridge co.,ltd"
5C89D4 o="Beijing Banner Electric Co.,Ltd"
5C8D2D o="Shanghai Wellpay Information Technology Co., Ltd"
+5C9012 o="Owl Cyber Defense Solutions, LLC"
+5C91FD o="Jaewoncnc"
5C966A o="RTNET"
5CA178 o="TableTop Media (dba Ziosk)"
5CA1E0 o="EmbedWay Technologies"
@@ -13610,7 +13675,7 @@
5CB8CB o="Allis Communications"
5CBD9E o="HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED"
5CC213 o="Fr. Sauter AG"
-5CC6E9 o="Edifier International"
+5CC6E9,60F43A o="Edifier International"
5CC7D7 o="AZROAD TECHNOLOGY COMPANY LIMITED"
5CC9D3 o="PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA"
5CCA32 o="Theben AG"
@@ -13622,6 +13687,7 @@
5CD20B o="Yytek Co., Ltd."
5CD41B o="UCZOON Technology Co., LTD"
5CD4AB o="Zektor"
+5CD5B5 o="Shenzhen WiSiYiLink Technology Co.,Ltd"
5CD61F o="Qardio, Inc"
5CE0CA o="FeiTian United (Beijing) System Technology Co., Ltd."
5CE0F6 o="NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR"
@@ -13637,10 +13703,12 @@
5CF7C3 o="SYNTECH (HK) TECHNOLOGY LIMITED"
5CF9F0 o="Atomos Engineering P/L"
5CFAFB o="Acubit"
+5CFE9E o="Wiwynn Corporation Tainan Branch"
5CFFFF o="Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd"
600347 o="Billion Electric Co. Ltd."
600417 o="POSBANK CO.,LTD"
60058A o="Hitachi Metals, Ltd."
+60077C o="Jala Group"
600837 o="ivvi Scientific(Nanchang)Co.Ltd"
6009C3,6C1DEB,CCF957,D4CA6E o="u-blox AG"
600F77 o="SilverPlus, Inc"
@@ -13654,7 +13722,6 @@
601929 o="VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP."
601970 o="HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD."
601D0F o="Midnite Solar"
-601D9D,A42985,B4C9B9 o="Sichuan AI-Link Technology Co., Ltd."
601E02 o="EltexAlatau"
602103 o="I4VINE, INC"
6024C1 o="Jiangsu Zhongxun Electronic Technology Co., Ltd"
@@ -13681,6 +13748,7 @@
6052D0 o="FACTS Engineering"
605317 o="Sandstone Technologies"
605464 o="Eyedro Green Solutions Inc."
+605661 o="IXECLOUD Tech"
6061DF o="Z-meta Research LLC"
6063F9 o="Ciholas, Inc."
6063FD o="Transcend Communication Beijing Co.,Ltd."
@@ -13746,6 +13814,7 @@
60E6BC o="Sino-Telecom Technology Co.,Ltd."
60E78A o="UNISEM"
60E956 o="Ayla Networks, Inc"
+60EB5A o="Asterfusion Data Technologies Co.,Ltd"
60EFC6 o="Shenzhen Chima Technologies Co Limited"
60F13D o="JABLOCOM s.r.o."
60F281 o="TRANWO TECHNOLOGY CO., LTD."
@@ -13783,7 +13852,7 @@
643F5F o="Exablaze"
644214 o="Swisscom Energy Solutions AG"
644346 o="GuangDong Quick Network Computer CO.,LTD"
-6447E0 o="Feitian Technologies Co., Ltd"
+6447E0,E092A7 o="Feitian Technologies Co., Ltd"
644BC3 o="Shanghai WOASiS Telecommunications Ltd., Co."
644BF0 o="CalDigit, Inc"
644D70 o="dSPACE GmbH"
@@ -13831,9 +13900,11 @@
64A341 o="Wonderlan (Beijing) Technology Co., Ltd."
64A68F o="Zhongshan Readboy Electronics Co.,Ltd"
64A837 o="Juni Korea Co., Ltd"
+64A965 o="Linkflow Co., Ltd."
64AE88 o="Polytec GmbH"
64B21D o="Chengdu Phycom Tech Co., Ltd."
64B370 o="PowerComm Solutions LLC"
+64B623 o="CCS Care Communication Solutions GmbH"
64B64A o="ViVOtech, Inc."
64BABD o="SDJ Technologies, Inc."
64BC11 o="CombiQ AB"
@@ -13854,6 +13925,7 @@
64DF10 o="JingLue Semiconductor(SH) Ltd."
64DFE9 o="ATEME"
64E161 o="DEP Corp."
+64E172 o="Shenzhen Qihoo Intelligent Technology Co.,Ltd"
64E625 o="Woxu Wireless Co., Ltd"
64E84F o="Serialway Communication Technology Co. Ltd"
64E892 o="Morio Denki Co., Ltd."
@@ -13867,6 +13939,7 @@
64F6BB,B436A9 o="Fibocom Wireless Inc."
64F6F7 o="Anhui Dynamic Power Co., Ltd."
64F81C o="Huawei Technologies Co., Ltd."
+64F947 o="Senscomm Semiconductor Co., Ltd."
64F970 o="Kenade Electronics Technology Co.,LTD."
64F987 o="Avvasi Inc."
64F9C0 o="ANALOG DEVICES"
@@ -13894,6 +13967,7 @@
6829DC o="Ficosa Electronics S.L.U."
682DDC o="Wuhan Changjiang Electro-Communication Equipment CO.,LTD"
6831FE o="Teladin Co.,Ltd."
+68332C o="KENSTEL NETWORKS LIMITED"
683489 o="LEA Professional"
683563 o="SHENZHEN LIOWN ELECTRONICS CO.,LTD."
6836B5 o="DriveScale, Inc."
@@ -13906,9 +13980,11 @@
684352 o="Bhuu Limited"
6843D7 o="Agilecom Photonics Solutions Guangdong Limited"
6845F1 o="TOSHIBA CLIENT SOLUTIONS CO., LTD."
+6849B2 o="CARLO GAVAZZI LTD"
684B88 o="Galtronics Telemetry Inc."
684CA8 o="Shenzhen Herotel Tech. Co., Ltd."
6851B7 o="PowerCloud Systems, Inc."
+6852D6 o="UGame Technology Co.,Ltd"
68536C o="SPnS Co.,Ltd"
685388 o="P&S Technology"
6854F5 o="enLighted Inc"
@@ -13944,7 +14020,6 @@
689AB7 o="Atelier Vision Corporation"
68A1B7 o="Honghao Mingchuan Technology (Beijing) CO.,Ltd."
68A40E o="BSH Hausgeräte GmbH"
-68A8E1,884A70 o="Wacom Co.,Ltd."
68AAD2 o="DATECS LTD.,"
68AB8A o="RF IDeas"
68AF13 o="Futura Mobility"
@@ -14024,6 +14099,7 @@
6C6126 o="Rinicom Holdings"
6C626D,8C89A5 o="Micro-Star INT'L CO., LTD"
6C641A o="Penguin Computing"
+6C6D09 o="Kyowa Electronics Co.,Ltd."
6C6EFE o="Core Logic Inc."
6C6F18 o="Stereotaxis, Inc."
6C7039 o="Novar GmbH"
@@ -14100,7 +14176,7 @@
702DD1 o="Newings Communication CO., LTD."
702E80 o="DIEHL Connectivity Solutions"
702ED9,7472B0,78DDD9 o="Guangzhou Shiyuan Electronics Co., Ltd."
-702F4B o="PolyVision Inc."
+702F4B o="Steelcase Inc."
702F97 o="Aava Mobile Oy"
70305E o="Nanjing Zhongke Menglian Information Technology Co.,LTD"
703187 o="ACX GmbH"
@@ -14128,6 +14204,7 @@
705EAA o="Action Target, Inc."
7060DE o="LaVision GmbH"
706173 o="Calantec GmbH"
+7061EE o="Sunwoda Electronic Co.,Ltd"
706417 o="ORBIS TECNOLOGIA ELECTRICA S.A."
706582,7CDD76 o="Suzhou Hanming Technologies Co., Ltd."
7065A3 o="Kandao lightforge Co., Ltd."
@@ -14149,6 +14226,7 @@
70879E,C8478C o="Beken Corporation"
70884D o="JAPAN RADIO CO., LTD."
708B78 o="citygrow technology co., ltd"
+708CBB o="MIMODISPLAYKOREA"
70918F o="Weber-Stephen Products LLC"
709383 o="Intelligent Optical Network High Tech CO.,LTD."
7093F8 o="Space Monkey, Inc."
@@ -14192,7 +14270,7 @@
70F11C o="Shenzhen Ogemray Technology Co.,Ltd"
70F176 o="Data Modul AG"
70F1E5 o="Xetawave LLC"
-70F82B,78B213,E42686 o="DWnet Technologies(Suzhou) Corporation"
+70F82B,78B213,E00EE4,E42686 o="DWnet Technologies(Suzhou) Corporation"
70FF5C o="Cheerzing Communication(Xiamen)Technology Co.,Ltd"
74042B,E02CB2 o="Lenovo Mobile Communication (Wuhan) Company Limited"
740ABC o="LightwaveRF Technology Ltd"
@@ -14258,6 +14336,7 @@
74A34A o="ZIMI CORPORATION"
74A4A7 o="QRS Music Technologies, Inc."
74A4B5 o="Powerleader Science and Technology Co. Ltd."
+74AB93 o="Blink by Amazon"
74AC5F o="Qiku Internet Network Scientific (Shenzhen) Co., Ltd."
74AE76 o="iNovo Broadband, Inc."
74B00C o="Network Video Technologies, Inc"
@@ -14269,6 +14348,7 @@
74BFB7 o="Nusoft Corporation"
74C621 o="Zhejiang Hite Renewable Energy Co.,LTD"
74CA25,FC2F40 o="Calxeda, Inc."
+74CBF3 o="Lava international limited"
74CD0C o="Smith Myers Communications Ltd."
74CE56 o="Packet Force Technology Limited Company"
74D654 o="GINT"
@@ -14287,6 +14367,7 @@
74F661 o="Schneider Electric Fire & Security Oy"
74F726 o="Neuron Robotics"
74F737 o="KCE"
+74F7F6 o="Shanghai Sunmi Technology Co.,Ltd."
74F85D o="Berkeley Nucleonics Corp"
74F91A o="Onface"
74FDA0 o="Compupal (Group) Corporation"
@@ -14298,6 +14379,7 @@
780738 o="Z.U.K. Elzab S.A."
780AC7 o="Baofeng TV Co., Ltd."
780ED1 o="TRUMPF Werkzeugmaschinen GmbH+Co.KG"
+781100 o="Quantumsolution"
781185 o="NBS Payment Solutions Inc."
7812B8 o="ORANTEK LIMITED"
78192E o="NASCENT Technology"
@@ -14321,9 +14403,9 @@
78510C o="LiveU Ltd."
78524A o="Ensenso GmbH"
785262 o="Shenzhen Hojy Software Co., Ltd."
-78530D o="Shenzhen Skyworth Digital Technology CO., Ltd"
+78530D,80EE25,C08F20 o="Shenzhen Skyworth Digital Technology CO., Ltd"
785364 o="SHIFT GmbH"
-7853F2 o="ROXTON Ltd."
+7853F2 o="Roxton Systems Ltd."
785517 o="SankyuElectronics"
785712 o="Mobile Integration Workgroup"
7858F3 o="Vachen Co.,Ltd"
@@ -14362,8 +14444,6 @@
78A5DD o="Shenzhen Smarteye Digital Electronics Co., Ltd"
78A683 o="Precidata"
78A6BD o="DAEYEON Control&Instrument Co,.Ltd"
-78A714 o="Amphenol"
-78A7EB,9C9789 o="1MORE"
78AB60 o="ABB Australia"
78ACBF o="Igneous Systems"
78AE0C o="Far South Networks"
@@ -14404,6 +14484,7 @@
78EF4C o="Unetconvergence Co., Ltd."
78F5E5 o="BEGA Gantenbrink-Leuchten KG"
78F7D0 o="Silverbrook Research"
+78F8B8 o="Rako Controls Ltd"
78FC14 o="Family Zone Cyber Safety Ltd"
78FE41 o="Socus networks"
78FEE2 o="Shanghai Diveo Technology Co., Ltd"
@@ -14512,6 +14593,7 @@
7CDD11 o="Chongqing MAS SCI&TECH.Co.,Ltd"
7CDD20 o="IOXOS Technologies S.A."
7CDD90 o="Shenzhen Ogemray Technology Co., Ltd."
+7CDDE9 o="ATOM tech Inc."
7CE044 o="NEON Inc"
7CE1FF o="Computer Performance, Inc. DBA Digital Loggers, Inc."
7CE524 o="Quirky, Inc."
@@ -14521,9 +14603,11 @@
7CEBEA o="ASCT"
7CEC9B o="Fuzhou Teraway Information Technology Co.,Ltd"
7CEF18 o="Creative Product Design Pty. Ltd."
+7CEF61 o="STR Elektronik Josef Schlechtinger GmbH"
7CEF8A o="Inhon International Ltd."
7CF098 o="Bee Beans Technologies, Inc."
7CF0BA o="Linkwell Telesystems Pvt Ltd"
+7CF2DD o="Vence Corp"
7CF429 o="NUUO Inc."
7CF95C o="U.I. Lapp GmbH"
7CFE28 o="Salutron Inc."
@@ -14608,6 +14692,7 @@
80C6CA o="Endian s.r.l."
80C755,B46C47,D8AFF1 o="Panasonic Appliances Company"
80C862 o="Openpeak, Inc"
+80CA4B o="SHENZHEN GONGJIN ELECTRONICS CO.,LTD"
80CEB1 o="Theissen Training Systems GmbH"
80D019 o="Embed, Inc"
80D065 o="CKS Corporation"
@@ -14615,7 +14700,7 @@
80D433 o="LzLabs GmbH"
80D733 o="QSR Automations, Inc."
80DB31 o="Power Quotient International Co., Ltd."
-80EACA o="Dialog Semiconductor Hellas SA"
+80F1F1 o="Tech4home, Lda"
80F25E o="Kyynel"
80F593 o="IRCO Sistemas de Telecomunicación S.A."
80F8EB o="RayTight"
@@ -14628,6 +14713,7 @@
841B38 o="Shenzhen Excelsecu Data Technology Co.,Ltd"
841E26 o="KERNEL-I Co.,LTD"
842141 o="Shenzhen Ginwave Technologies Ltd."
+84225E o="SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD."
842519 o="Samsung Electronics"
84253F o="silex technology, Inc."
8425A4 o="Tariox Limited"
@@ -14660,6 +14746,7 @@
8468C8 o="TOTOLINK TECHNOLOGY INT‘L LIMITED"
846A66 o="Sumitomo Kizai Co.,Ltd."
846AED o="Wireless Tsukamoto.,co.LTD"
+846B48 o="ShenZhen EepuLink Co., Ltd."
846EB1 o="Park Assist LLC"
847207 o="I&C Technology"
847303 o="Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd."
@@ -14683,6 +14770,7 @@
8497B8 o="Memjet Inc."
849DC5 o="Centera Photonics Inc."
84A24D o="Birds Eye Systems Private Limited"
+84A3B5 o="Propulsion systems"
84A788 o="Perples"
84A991 o="Cyber Trans Japan Co.,Ltd."
84A9EA o="Career Technologies USA"
@@ -14711,7 +14799,7 @@
84E5D8 o="Guangdong UNIPOE IoT Technology Co.,Ltd."
84E629 o="Bluwan SA"
84E714 o="Liang Herng Enterprise,Co.Ltd."
-84EA97 o="Shenzhen iComm Semiconductor Co., Ltd."
+84EA97,98C97C,A47D9F o="Shenzhen iComm Semiconductor CO.,LTD"
84EA99 o="Vieworks"
84EB3E o="Vivint Smart Home"
84ED33 o="BBMC Co.,Ltd"
@@ -14737,7 +14825,9 @@
8821E3 o="Nebusens, S.L."
882364 o="Watchnet DVR Inc"
8823FE o="TTTech Computertechnik AG"
+882949,9C6B37,B436D1,C0E3A0 o="Renesas Electronics (Penang) Sdn. Bhd."
882950 o="Netmoon Technology Co., Ltd"
+882B94 o="MADOKA SYSTEM Co.,Ltd."
882BD7 o="ADDÉNERGIE TECHNOLOGIES"
882D53 o="Baidu Online Network Technology (Beijing) Co., Ltd."
882E5A o="storONE"
@@ -14774,6 +14864,7 @@
888C19 o="Brady Corp Asia Pacific Ltd"
889166 o="Viewcooper Corp."
8891DD o="Racktivity"
+88948F o="Xi'an Zhisensor Technologies Co.,Ltd"
8894F9 o="Gemicom Technology, Inc."
8895B9 o="Unified Packet Systems Crop"
889655 o="Zitte corporation"
@@ -14831,6 +14922,7 @@
8C0551 o="Koubachi AG"
8C078C o="FLOW DATA INC"
8C0CA3 o="Amper"
+8C0E60 o="Nanjing Juplink Intelligent Technologies Co., Ltd."
8C0F83 o="Angie Hospitality LLC"
8C0FA0 o="di-soric GmbH & Co. KG"
8C0FFA o="Hutec co.,ltd"
@@ -14871,6 +14963,7 @@
8C6878 o="Nortek-AS"
8C6AE4 o="Viogem Limited"
8C6DC4 o="Megapixel VR"
+8C7086 o="Gesellschaft für Sonder-EDV-Anlagen mbH"
8C76C1 o="Goden Tech Limited"
8C7BF0 o="Xufeng Development Limited"
8C7EB3 o="Lytro, Inc."
@@ -14909,6 +15002,7 @@
8CC7AA o="Radinet Communications Inc."
8CC7D0 o="zhejiang ebang communication co.,ltd"
8CCDA2 o="ACTP, Inc."
+8CCEFD o="Shenzhen zhouhai technology co.,LTD"
8CCF5C o="BEFEGA GmbH"
8CCF8F o="ITC Systems"
8CD17B o="CG Mobile"
@@ -14921,6 +15015,7 @@
8CDE99 o="Comlab Inc."
8CE2DA o="Circle Media Inc"
8CE38E o="Kioxia Corporation"
+8CE468 o="Guangzhou Sageran Technology Co., Ltd."
8CE78C o="DK Networks"
8CE7B3 o="Sonardyne International Ltd"
8CEEC6 o="Precepscion Pty. Ltd."
@@ -14940,6 +15035,7 @@
900D66 o="Digimore Electronics Co., Ltd"
900E83 o="Monico Monitoring, Inc."
900EB3 o="Shenzhen Amediatech Technology Co., Ltd."
+9012A1,E00EE1 o="We Corporation Inc."
9013DA o="Athom B.V."
901711 o="Hagenuk Marinekommunikation GmbH"
90179B o="Nanomegas"
@@ -15000,6 +15096,7 @@
908FCF o="UNO System Co., Ltd"
90903C o="TRISON TECHNOLOGY CORPORATION"
909060 o="RSI VIDEO TECHNOLOGIES"
+909164 o="ChongQing Lavid Technology Co., Ltd."
9092B4 o="Diehl BGT Defence GmbH & Co. KG"
90940A o="Analog Devices, Inc"
909864 o="Impex-Sat GmbH&Co KG"
@@ -15013,6 +15110,7 @@
90A62F o="NAVER"
90A783 o="JSW PACIFIC CORPORATION"
90A7C1 o="Pakedge Device and Software Inc."
+90A935 o="JWEntertainment"
90AC3F o="BrightSign LLC"
90AFD1 o="netKTI Co., Ltd"
90B1E0 o="Beijing Nebula Link Technology Co., Ltd"
@@ -15044,6 +15142,7 @@
90FF79 o="Metro Ethernet Forum"
940006 o="jinyoung"
940149 o="AutoHotBox"
+94026B o="Optictimes Co.,Ltd"
9405B6 o="Liling FullRiver Electronics & Technology Ltd"
940B2D o="NetView Technologies(Shenzhen) Co., Ltd"
940BD5 o="Himax Technologies, Inc"
@@ -15064,6 +15163,7 @@
943DC9 o="Asahi Net, Inc."
9440A2 o="Anywave Communication Technologies, Inc."
9441C1 o="Mini-Cam Limited"
+9447B0 o="BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD"
944996 o="WiSilica Inc"
944A09 o="BitWise Controls"
944F4C o="Sound United LLC"
@@ -15092,6 +15192,7 @@
9486D4 o="Surveillance Pro Corporation"
948815 o="Infinique Worldwide Inc"
94885E o="Surfilter Network Technology Co., Ltd."
+948AC6,BC2DEF,C816DA o="Realme Chongqing Mobile Telecommunications Corp.,Ltd."
948B03 o="EAGET Innovation and Technology Co., Ltd."
948D50 o="Beamex Oy Ab"
948DEF o="Oetiker Schweiz AG"
@@ -15161,6 +15262,7 @@
9800C1 o="GuangZhou CREATOR Technology Co.,Ltd.(CHINA)"
980284 o="Theobroma Systems GmbH"
9803A0 o="ABB n.v. Power Quality Products"
+980E24 o="Phytium Technology Co.,Ltd."
981094 o="Shenzhen Vsun communication technology Co.,ltd"
9814D2 o="Avonic"
9816EC o="IC Intracom"
@@ -15192,6 +15294,7 @@
984E97 o="Starlight Marketing (H. K.) Ltd."
9857D3 o="HON HAI-CCPBG PRECISION IND.CO.,LTD."
98588A o="SYSGRATION Ltd."
+985949 o="LUXOTTICA GROUP S.P.A."
985BB0 o="KMDATA INC."
985C93 o="SBG Systems SAS"
985D46 o="PeopleNet Communication"
@@ -15206,6 +15309,7 @@
9876B6 o="Adafruit"
987770 o="Pep Digital Technology (Guangzhou) Co., Ltd"
987E46 o="Emizon Networks Limited"
+987ECA,A463A1 o="Inventus Power Eletronica do Brasil LTDA"
988217 o="Disruptive Ltd"
9886B1 o="Flyaudio corporation (China)"
988744 o="Wuxi Hongda Science and Technology Co.,LTD"
@@ -15213,11 +15317,13 @@
988BAD o="Corintech Ltd."
988E34 o="ZHEJIANG BOXSAM ELECTRONIC CO.,LTD"
988E4A o="NOXUS(BEIJING) TECHNOLOGY CO.,LTD"
+988E79 o="Qudelix, Inc."
988EDD o="TE Connectivity Limerick"
989080 o="Linkpower Network System Inc Ltd."
989449 o="Skyworth Wireless Technology Ltd."
98A40E o="Snap, Inc."
98A7B0 o="MCST ZAO"
+98A942 o="Guangzhou Tozed Kangwei Intelligent Technology Co., LTD"
98AA3C o="Will i-tech Co., Ltd."
98AAD7 o="BLUE WAVE NETWORKING CO LTD"
98AE71 o="VVDN Technologies Pvt Ltd"
@@ -15225,6 +15331,7 @@
98BC57 o="SVA TECHNOLOGIES CO.LTD"
98BC99 o="Edeltech Co.,Ltd."
98C0EB o="Global Regency Ltd"
+98C7A4 o="Shenzhen HS Fiber Communication Equipment CO., LTD"
98C845 o="PacketAccess"
98CB27 o="Galore Networks Pvt. Ltd."
98CC4D o="Shenzhen mantunsci co., LTD"
@@ -15242,7 +15349,6 @@
98E79A o="Foxconn(NanJing) Communication Co.,Ltd."
98E848 o="Axiim"
98EC65 o="Cosesy ApS"
-98ED5C o="Tesla Motors, Inc"
98F058 o="Lynxspring, Incl."
98F8DB o="Marini Impianti Industriali s.r.l."
98FAA7 o="INNONET"
@@ -15287,11 +15393,10 @@
9C5C8D o="FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA"
9C5D95 o="VTC Electronics Corp."
9C5E73 o="Calibre UK LTD"
-9C611D o="Omni-ID USA, Inc."
+9C611D o="Panasonic Corporation of North America"
9C645E o="Harman Consumer Group"
9C6650 o="Glodio Technolies Co.,Ltd Tianjin Branch"
9C685B o="Octonion SA"
-9C6937 o="Qorvo Utrecht B.V."
9C6ABE o="QEES ApS."
9C7514 o="Wildix srl"
9C77AA o="NADASNV"
@@ -15326,6 +15431,7 @@
9CB6D0 o="Rivet Networks"
9CB793 o="Creatcomm Technology Inc."
9CBB98 o="Shen Zhen RND Electronic Co.,LTD"
+9CBD6E o="DERA Co., Ltd"
9CBD9D o="SkyDisk, Inc."
9CBEE0 o="Biosoundlab Co., Ltd."
9CC077 o="PrintCounts, LLC"
@@ -15345,8 +15451,9 @@
9CE7BD o="Winduskorea co., Ltd"
9CE951 o="Shenzhen Sang Fei Consumer Communications Ltd., Co."
9CEBE8 o="BizLink (Kunshan) Co.,Ltd"
+9CEDFA o="EVUlution AG"
9CEFD5 o="Panda Wireless, Inc."
-9CF61A o="UTC Fire and Security"
+9CF61A o="Carrier Fire & Security"
9CF67D o="Ricardo Prague, s.r.o."
9CF8DB o="shenzhen eyunmei technology co,.ltd"
9CF938 o="AREVA NP GmbH"
@@ -15442,6 +15549,7 @@ A0C2DE o="Costar Video Systems"
A0C3DE o="Triton Electronic Systems Ltd."
A0C4A5 o="SYGN HOUSE CO.,LTD"
A0C6EC o="ShenZhen ANYK Technology Co.,LTD"
+A0CAA5 o="INTELLIGENCE TECHNOLOGY OF CEC CO., LTD"
A0CEC8 o="CE LINK LIMITED"
A0D12A o="AXPRO Technology Inc."
A0D385 o="AUMA Riester GmbH & Co. KG"
@@ -15495,14 +15603,15 @@ A4466B o="EOC Technology"
A446FA o="AmTRAN Video Corporation"
A44AD3 o="ST Electronics(Shanghai) Co.,Ltd"
A44E2D o="Adaptive Wireless Solutions, LLC"
+A45006 o="SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD"
A45055 o="BUSWARE.DE"
+A45129 o="XAG"
A45602 o="fenglian Technology Co.,Ltd."
A4561B o="MCOT Corporation"
A45A1C o="smart-electronic GmbH"
A45F9B o="Nexell"
A46191 o="NamJunSa"
A462DF o="DS Global. Co., LTD"
-A463A1 o="Inventus Power Eletronica do Brasil LTDA"
A46CC1 o="LTi REEnergy GmbH"
A46E79 o="DFT System Co.Ltd"
A47758 o="Ningbo Freewings Technologies Co.,Ltd"
@@ -15513,11 +15622,11 @@ A47C14 o="ChargeStorm AB"
A47C1F o="Cobham plc"
A48269 o="Datrium, Inc."
A4856B o="Q Electronics Ltd"
-A486AE o="Quectel Wireless Solutions"
A4895B o="ARK INFOSOLUTIONS PVT LTD"
A48CC0 o="JLG Industries, Inc."
A48E0A o="DeLaval International AB"
A49005 o="CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD"
+A49340 o="Beijing Supvan Information Technology Co.,Ltd."
A49426 o="Elgama-Elektronika Ltd."
A497BB o="Hitachi Industrial Equipment Systems Co.,Ltd"
A49981 o="FuJian Elite Power Tech CO.,LTD."
@@ -15574,6 +15683,7 @@ A4FB8D o="Hangzhou Dunchong Technology Co.Ltd"
A4FCCE o="Security Expert Ltd."
A8016D o="Aiwa Corporation"
A80180 o="IMAGO Technologies GmbH"
+A80577 o="Netlist, Inc."
A81559 o="Breathometer, Inc."
A815D6 o="Shenzhen Meione Technology CO., LTD"
A81758 o="Elektronik System i Umeå AB"
@@ -15586,6 +15696,7 @@ A82BD6 o="Shina System Co., Ltd"
A8329A o="Digicom Futuristic Technologies Ltd."
A8367A o="frogblue TECHNOLOGY GmbH"
A83CCB o="ROSSMA"
+A84025 o="Oxide Computer Company"
A84041 o="Dragino Technology Co., Limited"
A84122 o="China Mobile (Hangzhou) Information Technology Co.,Ltd."
A845CD o="Siselectron Technology LTD."
@@ -15657,7 +15768,7 @@ A8EEC6 o="Muuselabs NV/SA"
A8EF26 o="Tritonwave"
A8F038 o="SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD"
A8F470 o="Fujian Newland Communication Science Technologies Co.,Ltd."
-A8F94B,E0D9E3,E828C1 o="Eltex Enterprise Ltd."
+A8F94B,E0D9E3,E45AD4,E828C1 o="Eltex Enterprise Ltd."
A8FB70 o="WiseSec L.t.d"
A8FCB7 o="Consolidated Resource Imaging"
AC0142 o="Uriel Technologies SIA"
@@ -15677,6 +15788,7 @@ AC1585 o="silergy corp"
AC1702 o="Fibar Group sp. z o.o."
AC199F o="SUNGROW POWER SUPPLY CO.,LTD."
AC1ED0 o="Temic Automotive Philippines Inc."
+AC1F09 o="shenzhen RAKwireless technology Co.,Ltd"
AC1FD7 o="Real Vision Technology Co.,Ltd."
AC20AA o="DMATEK Co., Ltd."
AC233F o="Shenzhen Minew Technologies Co., Ltd."
@@ -15687,6 +15799,7 @@ AC319D,ECD9D1 o="Shenzhen TG-NET Botone Technology Co.,Ltd."
AC34CB o="Shanhai GBCOM Communication Technology Co. Ltd"
AC3651 o="Jiangsu Hengtong Terahertz Technology Co., Ltd."
AC37C9 o="RAID Incorporated"
+AC3C8E o="Flextronics Computing(Suzhou)Co.,Ltd."
AC3CB4 o="Nilan A/S"
AC3D05 o="Instorescreen Aisa"
AC3D75 o="HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD."
@@ -15697,6 +15810,7 @@ AC4330 o="Versa Networks"
AC4723 o="Genelec"
AC482D o="Ralinwi Nanjing Electronic Technology Co., Ltd."
AC4AFE o="Hisense Broadband Multimedia Technology Co.,Ltd."
+AC4B1E o="Integri-Sys.Com LLC"
AC4E2E,C048FB,DC64B8 o="Shenzhen JingHanDa Electronics Co.Ltd"
AC4FFC o="SVS-VISTEK GmbH"
AC5036 o="Pi-Coral Inc"
@@ -15729,7 +15843,7 @@ AC8ACD o="ROGER D.Wensker, G.Wensker sp.j."
AC8B9C o="Primera Technology, Inc."
AC8D14 o="Smartrove Inc"
AC9403 o="Envision Peripherals Inc"
-AC9A96 o="Lantiq Deutschland GmbH"
+AC9572 o="Jovision Technology Co., Ltd."
AC9B84 o="Smak Tecnologia e Automacao"
ACA22C o="Baycity Technologies Ltd"
ACA430 o="Peerless AV"
@@ -15789,7 +15903,8 @@ B01BD2,B8FC9A,C80E77,D4B169,E0A8B8 o="Le Shi Zhi Xin Electronic Technology (Tian
B01C91 o="Elim Co"
B01F29 o="Helvetia INC."
B024F3 o="Progeny Systems"
-B02628,BC97E1 o="Broadcom Limited"
+B02628,BC97E1,E43D1A o="Broadcom Limited"
+B030C8 o="Teal Drones, Inc."
B0350B,E048D3,E4FB8F o="MOBIWIRE MOBILES (NINGBO) CO.,LTD"
B03829 o="Siliconware Precision Industries Co., Ltd."
B03850 o="Nanjing CAS-ZDC IOT SYSTEM CO.,LTD"
@@ -15862,7 +15977,6 @@ B0C95B o="Beijing Symtech CO.,LTD"
B0CE18 o="Zhejiang shenghui lighting co.,Ltd"
B0CF4D o="MI-Zone Technology Ireland"
B0D2F5 o="Vello Systems, Inc."
-B0D568 o="Shenzhen Cultraview Digital Technology Co., Ltd"
B0D7C5 o="Logipix Ltd"
B0D7CC o="Tridonic GmbH & Co KG"
B0DA00 o="CERA ELECTRONIQUE"
@@ -15888,6 +16002,7 @@ B41780 o="DTI Group Ltd"
B41DEF o="Internet Laboratories, Inc."
B4211D o="Beijing GuangXin Technology Co., Ltd"
B4218A o="Dog Hunter LLC"
+B42330 o="Itron Inc"
B424E7 o="Codetek Technology Co.,Ltd"
B428F1 o="E-Prime Co., Ltd."
B4293D o="Shenzhen Urovo Technology Co.,Ltd."
@@ -15919,6 +16034,7 @@ B46238 o="Exablox"
B462AD o="Elysia Germany GmbH"
B46698 o="Zealabs srl"
B46D35 o="Dalian Seasky Automation Co;Ltd"
+B46F2D o="Wahoo Fitness"
B47356 o="Hangzhou Treebear Networking Co., Ltd."
B47447 o="CoreOS"
B47748 o="Shenzhen Neoway Technology Co.,Ltd."
@@ -15941,10 +16057,10 @@ B4A4B5 o="Zen Eye Co.,Ltd"
B4A5A9 o="MODI GmbH"
B4A828 o="Shenzhen Concox Information Technology Co., Ltd"
B4A82B o="Histar Digital Electronics Co., Ltd."
-B4A9FC,D8C497 o="Quanta Computer Inc."
B4A9FE o="GHIA Technology (Shenzhen) LTD"
B4AA4D o="Ensequence, Inc."
B4AB2C o="MtM Technology Corporation"
+B4ADA3,D49E3B,DCBD7A o="Guangzhou Shiyuan Electronic Technology Company Limited"
B4AE6F o="Circle Reliance, Inc DBA Cranberry Networks"
B4B15A o="Siemens AG Energy Management Division"
B4B265 o="DAEHO I&T"
@@ -15980,9 +16096,11 @@ B4ECF2 o="Shanghai Listent Medical Tech Co., Ltd."
B4ED19 o="Pie Digital, Inc."
B4ED54 o="Wohler Technologies"
B4EF04 o="DAIHAN Scientific Co., Ltd."
+B4EF1C o="360 AI Technology Co.Ltd"
B4F323 o="PETATEL INC."
B4F81E o="Kinova"
B4F949 o="optilink networks pvt ltd"
+B4FBE3 o="AltoBeam (China) Inc."
B4FC75 o="SEMA Electronics(HK) CO.,LTD"
B4FE8C o="Centro Sicurezza Italia SpA"
B80018 o="Htel"
@@ -16005,6 +16123,7 @@ B827EB o="Raspberry Pi Foundation"
B8288B o="Parker Hannifin Manufacturing (UK) Ltd"
B829F7 o="Blaster Tech"
B82ADC o="EFR Europäische Funk-Rundsteuerung GmbH"
+B82FCB o="CMS Electracom"
B830A8 o="Road-Track Telematics Development"
B836D8 o="Videoswitch"
B838CA o="Kyokko Tsushin System CO.,LTD"
@@ -16012,8 +16131,10 @@ B83A7B o="Worldplay (Canada) Inc."
B83D4E o="Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch"
B8415F o="ASP AG"
B843E4 o="Vlatacom"
+B8477A o="Dasan Electron Co., Ltd."
B847C6 o="SanJet Technology Corp."
B856BD o="ITT LLC"
+B85776 o="lignex1"
B85810 o="NUMERA, INC."
B85AF7 o="Ouya, Inc"
B85AFE o="Handaer Communication Technology (Beijing) Co., Ltd"
@@ -16072,6 +16193,7 @@ B8C855 o="Shanghai GBCOM Communication Technology Co.,Ltd."
B8CD93 o="Penetek, Inc"
B8CDA7 o="Maxeler Technologies Ltd."
B8D06F o="GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE"
+B8D309 o="Cox Communications, Inc"
B8D49D o="M Seven System Ltd."
B8DAF1 o="Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH"
B8DAF7 o="Advanced Photonics, Inc."
@@ -16092,6 +16214,7 @@ B8F828 o="Changshu Gaoshida Optoelectronic Technology Co. Ltd."
B8FD32 o="Zhejiang ROICX Microelectronics"
B8FF6F o="Shanghai Typrotech Technology Co.Ltd"
BC0200 o="Stewart Audio"
+BC03A7 o="MFP MICHELIN"
BC0F2B o="FORTUNE TECHGROUP CO.,LTD"
BC0FA7 o="Ouster"
BC125E o="Beijing WisVideo INC."
@@ -16104,6 +16227,7 @@ BC22FB o="RF Industries"
BC25F0 o="3D Display Technologies Co., Ltd."
BC261D o="HONG KONG TECON TECHNOLOGY"
BC2643 o="Elprotronic Inc."
+BC26A1 o="FACTORY FIVE Corporation"
BC282C o="e-Smart Systems Pvt. Ltd"
BC2846 o="NextBIT Computing Pvt. Ltd."
BC28D6 o="Rowley Associates Limited"
@@ -16111,7 +16235,6 @@ BC2B6B o="Beijing Haier IC Design Co.,Ltd"
BC2BD7 o="Revogi Innovation Co., Ltd."
BC2C55 o="Bear Flag Design, Inc."
BC2D98 o="ThinGlobal LLC"
-BC2DEF o="Realme Chongqing Mobile Telecommunications Corp.,Ltd."
BC35E5 o="Hydro Systems Company"
BC3865 o="JWCNETWORKS"
BC38D2 o="Pandachip Limited"
@@ -16190,6 +16313,7 @@ C0074A o="Brita GmbH"
C00D7E o="Additech, Inc."
C011A6 o="Fort-Telecom ltd."
C01242 o="Alpha Security Products"
+C01C30 o="Shenzhen WIFI-3L Technology Co.,Ltd"
C01E9B o="Pixavi AS"
C02250 o="Koss Corporation"
C02567 o="Nexxt Solutions"
@@ -16217,6 +16341,7 @@ C05336 o="Beijing National Railway Research & Design Institute of Signal & Commu
C058A7 o="Pico Systems Co., Ltd."
C05E6F o="V. Stonkaus firma %Kodinis Raktas%"
C05E79 o="SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD"
+C06369 o="BINXIN TECHNOLOGY(ZHEJIANG) LTD."
C06C0F o="Dobbs Stanford"
C06C6D o="MagneMotion, Inc."
C06D1A o="Tianjin Henxinhuifeng Technology Co.,Ltd."
@@ -16225,10 +16350,12 @@ C07E40 o="SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD"
C08135 o="Ningbo Forfan technology Co., LTD"
C08170 o="Effigis GeoSolutions"
C08488 o="Finis Inc"
+C086B3 o="Shenzhen Voxtech Co., Ltd."
C0885B o="SnD Tech Co., Ltd."
C08ACD o="Guangzhou Shiyuan Electronic Technology Company Limited"
C08B6F o="S I Sistemas Inteligentes Eletrônicos Ltda"
C09132 o="Patriot Memory"
+C095DA o="NXP India Private Limited"
C09879 o="Acer Inc."
C098E5 o="University of Michigan"
C09A71 o="XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD"
@@ -16278,7 +16405,6 @@ C40F09 o="Hermes electronic GmbH"
C411E0 o="Bull Group Co., Ltd"
C416FA o="Prysm Inc"
C4198B o="Dominion Voting Systems Corporation"
-C419D1,D80BCB,D85F77 o="Telink Semiconductor (Shanghai) Co., Ltd."
C419EC o="Qualisys AB"
C41ECE o="HMI Sources Ltd."
C4237A o="WhizNets Inc."
@@ -16330,6 +16456,7 @@ C47DFE o="A.N. Solutions GmbH"
C47F51 o="Inventek Systems"
C4823F o="Fujian Newland Auto-ID Tech. Co,.Ltd."
C4824E o="Changzhou Uchip Electronics Co., LTD."
+C489ED o="Solid Optics EU N.V."
C48A5A o="JFCONTROL"
C48F07 o="Shenzhen Yihao Hulian Science and Technology Co., Ltd."
C48FC1 o="DEEPTRACK S.L.U."
@@ -16403,7 +16530,7 @@ C83168 o="eZEX corporation"
C83232 o="Hunting Innova"
C83A35 o="Tenda Technology Co., Ltd."
C83B45 o="JRI"
-C83DFC o="Pioneer DJ Corporation"
+C83DFC o="AlphaTheta Corporation"
C83EA7 o="KUNBUS GmbH"
C84529 o="IMK Networks Co.,Ltd"
C84544 o="Asia Pacific CIS (Wuxi) Co, Ltd"
@@ -16421,6 +16548,8 @@ C87324 o="Sow Cheng Technology Co. Ltd."
C8755B o="Quantify Technology Pty. Ltd."
C87CBC o="Valink Co., Ltd."
C87D77 o="Shenzhen Kingtech Communication Equipment Co.,Ltd"
+C87EA1 o="TCL MOKA International Limited"
+C88314 o="Tempo Communications"
C88439 o="Sunrise Technologies"
C88447 o="Beautiful Enterprise Co., Ltd"
C88629 o="Shenzhen Duubee Intelligent Technologies Co.,LTD."
@@ -16448,6 +16577,7 @@ C8AF40 o="marco Systemanalyse und Entwicklung GmbH"
C8B1EE o="Qorvo"
C8BAE9 o="QDIS"
C8BBD3 o="Embrane"
+C8BCE5 o="Sense Things Japan INC."
C8C126 o="ZPM Industria e Comercio Ltda"
C8C13C o="RuggedTek Hangzhou Co., Ltd"
C8C2C6 o="Shanghai Airm2m Communication Technology Co., Ltd"
@@ -16507,6 +16637,7 @@ CC418E o="MSA Innovation"
CC43E3 o="Trump s.a."
CC4639 o="WAAV, Inc."
CC4703 o="Intercon Systems Co., Ltd."
+CC47BD o="Rhombus Systems"
CC4AE1 o="fourtec -Fourier Technologies"
CC4BFB o="Hellberg Safety AB"
CC4D38 o="Carnegie Technologies"
@@ -16590,7 +16721,7 @@ D01AA7 o="UniPrint"
D01CBB o="Beijing Ctimes Digital Technology Co., Ltd."
D02C45 o="littleBits Electronics, Inc."
D03110 o="Ingenic Semiconductor Co.,Ltd"
-D03D52 o="Vaion Limited"
+D03D52 o="Ava Security Limited"
D03DC3 o="AQ Corporation"
D046DC o="Southwest Research Institute"
D048F3 o="DATTUS Inc"
@@ -16673,8 +16804,10 @@ D411D6 o="ShotSpotter, Inc."
D41296 o="Anobit Technologies Ltd."
D412BB o="Quadrant Components Inc. Ltd"
D4136F o="Asia Pacific Brands"
+D41AC8 o="Nippon Printer Engineering"
D41C1C o="RCF S.P.A."
-D41E35 o="TOHO Electronics INC."
+D41E35,F0B022 o="TOHO Electronics INC."
+D422CD o="Xsens Technologies B.V."
D42493 o="GW Technologies Co.,Ltd"
D42751 o="Infopia Co., Ltd"
D428B2 o="ioBridge, Inc."
@@ -16690,8 +16823,10 @@ D43AE9 o="DONGGUAN ipt INDUSTRIAL CO., LTD"
D43D39 o="Dialog Semiconductor"
D43D67 o="Carma Industries Inc."
D43D7E o="Micro-Star Int'l Co, Ltd"
+D440D0 o="OCOSMOS Co., LTD"
D443A8 o="Changzhou Haojie Electric Co., Ltd."
D445E8 o="Jiangxi Hongpai Technology Co., Ltd."
+D4482D o="Shenzhen Deejoy Lighting Technology Co.,Ltd."
D44B5E o="TAIYO YUDEN CO., LTD."
D44C24 o="Vuppalamritha Magnetic Components LTD"
D44C9C o="Shenzhen YOOBAO Technology Co.Ltd"
@@ -16708,16 +16843,16 @@ D45AB2 o="Galleon Systems"
D46132 o="Pro Concept Manufacturer Co.,Ltd."
D464F7 o="CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD"
D466A8 o="Riedo Networks Ltd"
-D46761 o="United Gulf Gate Co."
+D46761 o="XonTel Technology Co."
D46867 o="Neoventus Design Group"
D469A5 o="Miura Systems Ltd."
-D46A91 o="Snap AV"
D46CBF o="Goodrich ISR"
D46CDA o="CSM GmbH"
D46F42 o="WAXESS USA Inc"
D47208 o="Bragi GmbH"
D4741B o="Beijing HuaDa ZhiBao Electronic System Co.,Ltd."
D4772B o="Nanjing Ztlink Network Technology Co.,Ltd"
+D477B2 o="Netix Global B.V."
D479C3 o="Cameronet GmbH & Co. KG"
D47B35 o="NEO Monitors AS"
D481CA o="iDevices, LLC"
@@ -16732,7 +16867,6 @@ D496DF o="SUNGJIN C&T CO.,LTD"
D49B5C o="Chongqing Miedu Technology Co., Ltd."
D49C28 o="JayBird LLC"
D49C8E o="University of FUKUI"
-D49E3B o="Guangzhou Shiyuan Electronic Technology Company Limited"
D49E6D o="Wuhan Zhongyuan Huadian Science & Technology Co.,"
D4A425 o="SMAX Technology Co., Ltd."
D4A499 o="InView Technology Corporation"
@@ -16764,6 +16898,7 @@ D4F027 o="Trust Power Ltd."
D4F0B4 o="Napco Security Technologies"
D4F143 o="IPROAD.,Inc"
D4F207 o="DIAODIAO(Beijing)Technology CO.,Ltd"
+D4F337 o="Xunison Ltd."
D4F63F o="IEA S.R.L."
D8052E o="Skyviia Corporation"
D806D1 o="Honeywell Fire System (Shanghai) Co,. Ltd."
@@ -16792,6 +16927,7 @@ D82A15 o="Leitner SpA"
D82D9B o="Shenzhen G.Credit Communication Technology Co., Ltd"
D82DE1 o="Tricascade Inc."
D8337F o="Office FA.com Co.,Ltd."
+D834EE o="Stem Audio"
D8380D o="SHENZHEN IP-COM Network Co.,Ltd"
D83AF5 o="Wideband Labs LLC"
D842E2 o="Canary Connect, Inc."
@@ -16800,6 +16936,7 @@ D8445C o="DEV Tecnologia Ind Com Man Eq LTDA"
D84606 o="Silicon Valley Global Marketing"
D848EE o="Hangzhou Xueji Technology Co., Ltd."
D84B2A o="Cognitas Technologies, Inc."
+D84F37 o="Proxis, spol. s r.o."
D84FB8 o="LG ELECTRONICS"
D858D7 o="CZ.NIC, z.s.p.o."
D85D84 o="CAx soft GmbH"
@@ -16824,6 +16961,7 @@ D888CE o="RF Technology Pty Ltd"
D88A3B o="UNIT-EM"
D88B4C o="KingTing Tech."
D88DC8 o="Atil Technology Co., LTD"
+D89136 o="Dover Fueling Solutions"
D89341 o="General Electric Global Research"
D89760 o="C2 Development, Inc."
D8977C o="Grey Innovation"
@@ -16877,6 +17015,7 @@ D8F0F2 o="Zeebo Inc"
D8F1F0 o="Pepxim International Limited"
D8F3DB o="Post CH AG"
D8F710 o="Libre Wireless Technologies Inc."
+D8F8AF o="DAONTEC"
D8FB11 o="AXACORE"
D8FB68 o="Cloud Corner Ltd."
D8FC38 o="Giantec Semiconductor Inc"
@@ -16910,7 +17049,6 @@ DC2E6A o="HCT. Co., Ltd."
DC2F03 o="Step forward Group Co., Ltd."
DC309C o="Heyrex Limited"
DC3350 o="TechSAT GmbH"
-DC35F1 o="Positivo Tecnologia S.A."
DC37D2 o="Hunan HKT Electronic Technology Co., Ltd"
DC3C2E o="Manufacturing System Insights, Inc."
DC3C84 o="Ticom Geomatics, Inc."
@@ -16922,6 +17060,7 @@ DC48B2 o="Baraja Pty. Ltd."
DC49C9 o="CASCO SIGNAL LTD"
DC4EDE o="SHINYEI TECHNOLOGY CO., LTD."
DC4EF4 o="Shenzhen MTN Electronics CO., Ltd"
+DC503A o="Nanjing Ticom Tech Co., Ltd."
DC56E6 o="Shenzhen Bococom Technology Co.,LTD"
DC5726 o="Power-One"
DC58BC o="Thomas-Krenn.AG"
@@ -16930,6 +17069,7 @@ DC60A1 o="Teledyne DALSA Professional Imaging"
DC647C o="C.R.S. iiMotion GmbH"
DC663A o="Apacer Technology Inc."
DC6723 o="barox Kommunikation GmbH"
+DC6B12 o="worldcns inc."
DC6F00 o="Livescribe, Inc."
DC6F08 o="Bay Storage Technology"
DC7834 o="LOGICOM SA"
@@ -16939,8 +17079,9 @@ DC962C o="NST Audio Ltd"
DC9A8E o="Nanjing Cocomm electronics co., LTD"
DC9B1E o="Intercom, Inc."
DC9C52 o="Sapphire Technology Limited."
+DCA3A2 o="Feng mi(Beijing)technology co., LTD"
DCA3AC o="RBcloudtech"
-DCA632 o="Raspberry Pi Trading Ltd"
+DCA632,E45F01 o="Raspberry Pi Trading Ltd"
DCA6BD o="Beijing Lanbo Technology Co., Ltd."
DCA7D9 o="Compressor Controls Corp"
DCA8CF o="New Spin Golf, LLC."
@@ -16992,7 +17133,6 @@ E00370 o="ShenZhen Continental Wireless Technology Co., Ltd."
E009BF o="SHENZHEN TONG BO WEI TECHNOLOGY Co.,LTD"
E00B28 o="Inovonics"
E00DB9 o="Cree, Inc."
-E00EE1 o="We Corporation Inc."
E01283 o="Shenzhen Fanzhuo Communication Technology Co., Lt"
E0143E o="Modoosis Inc."
E019D8 o="BH TECHNOLOGIES"
@@ -17029,9 +17169,12 @@ E06290 o="Jinan Jovision Science & Technology Co., Ltd."
E064BB o="DigiView S.r.l."
E067B3 o="Shenzhen C-Data Technology Co., Ltd"
E0686D o="Raybased AB"
+E0693A o="Innophase Inc."
+E06CA6 o="Creotech Instruments S.A."
E0735F o="NUCOM"
E078A3 o="Shanghai Winner Information Technology Co.,Inc"
E0795E o="Wuxi Xiaohu Technology Co.,Ltd."
+E079C4 o="iRay Technology Company Limited"
E07C62 o="Whistle Labs, Inc."
E07F53 o="TECHBOARD SRL"
E07F88 o="EVIDENCE Network SIA"
@@ -17054,8 +17197,10 @@ E0ABFE o="Orb Networks, Inc."
E0AEB2 o="Bender GmbH & Co.KG"
E0AEED o="LOENK"
E0AF4F o="Deutsche Telekom AG"
+E0B260 o="TENO NETWORK TECHNOLOGIES COMPANY LIMITED"
E0BAB4 o="Arrcus, Inc"
E0BC43 o="C2 Microsystems, Inc."
+E0BE03 o="Lite-On Network Communication (Dongguan) Limited"
E0C286 o="Aisai Communication Technology Co., Ltd."
E0C6B3 o="MilDef AB"
E0C86A o="SHENZHEN TW-SCIE Co., Ltd"
@@ -17105,6 +17250,7 @@ E435FB o="Sabre Technology (Hull) Ltd"
E437D7 o="HENRI DEPAEPE S.A.S."
E4388C o="Digital Products Limited"
E438F2 o="Advantage Controls"
+E43A65 o="MofiNetwork Inc"
E43A6E o="Shenzhen Zeroone Technology CO.,LTD"
E43C80 o="University of Oklahoma"
E43FA2 o="Wuxi DSP Technologies Inc."
@@ -17135,6 +17281,7 @@ E47D5A o="Beijing Hanbang Technology Corp."
E47DEB o="Shanghai Notion Information Technology CO.,LTD."
E481B3 o="Shenzhen ACT Industrial Co.,Ltd."
E482CC o="Jumptronic GmbH"
+E4842B o="HANGZHOU SOFTEL OPTIC CO., LTD"
E48501 o="Geberit International AG"
E48AD5 o="RF WINDOW CO., LTD."
E48C0F o="Discovery Insure"
@@ -17227,6 +17374,7 @@ E86D54 o="Digit Mobile Inc"
E86D65 o="AUDIO MOBIL Elektronik GmbH"
E86D6E o="voestalpine SIGNALING Fareham Ltd."
E8718D o="Elsys Equipamentos Eletronicos Ltda"
+E874C7 o="Sentinhealth"
E8757F o="FIRS Technologies(Shenzhen) Co., Ltd"
E878A1 o="BEOVIEW INTERCOM DOO"
E87AF3 o="S5 Tech S.r.l."
@@ -17237,6 +17385,7 @@ E88E60 o="NSD Corporation"
E89218 o="Arcontia International AB"
E8944C o="Cogent Healthcare Systems Ltd"
E89606 o="testo Instruments (Shenzhen) Co., Ltd."
+E898C2 o="ZETLAB Company"
E8995A o="PiiGAB, Processinformation i Goteborg AB"
E89FEC o="CHENGDU KT ELECTRONIC HI-TECH CO.,LTD"
E8A364 o="Signal Path International / Peachtree Audio"
@@ -17312,12 +17461,14 @@ EC4993 o="Qihan Technology Co., Ltd"
EC4C4D o="ZAO NPK RoTeK"
EC52DC o="WORLD MEDIA AND TECHNOLOGY Corp."
EC542E o="Shanghai XiMei Electronic Technology Co. Ltd"
+EC570D o="AFE Inc."
EC5B73 o="Advanced & Wise Technology Corp."
EC5C69 o="MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD."
EC5F23 o="Qinghai Kimascend Electronics Technology Co. Ltd."
EC60E0 o="AVI-ON LABS"
EC6264 o="Global411 Internet Services, LLC"
EC63E5 o="ePBoard Design LLC"
+EC63ED o="Hyundai Autoever Corp."
EC64E7 o="MOCACARE Corporation"
EC66D1 o="B&W Group LTD"
EC6C9F o="Chengdu Volans Technology CO.,LTD"
@@ -17359,6 +17510,7 @@ ECD19A o="Zhuhai Liming Industries Co., Ltd"
ECD68A o="Shenzhen JMicron Intelligent Technology Developmen"
ECD925 o="RAMI"
ECD950 o="IRT SA"
+ECDB86 o="API-K"
ECDE3D o="Lamprey Networks, Inc."
ECE154 o="Beijing Unisound Information Technology Co.,Ltd."
ECE2FD o="SKG Electric Group(Thailand) Co., Ltd."
@@ -17397,6 +17549,7 @@ F0264C o="Sigrist-Photometer AG"
F02745 o="F-Secure Corporation"
F02A23 o="Creative Next Design"
F02A61 o="Waldo Networks, Inc."
+F02E51 o="Casa Systems"
F02FD8 o="Bi2-Vision"
F037A1 o="Huike Electronics (SHENZHEN) CO., LTD."
F03A4B o="Bloombase, Inc."
@@ -17404,12 +17557,12 @@ F03A55 o="Omega Elektronik AS"
F03D29 o="Actility"
F03EBF o="GOGORO TAIWAN LIMITED"
F03FF8 o="R L Drake"
+F041C6 o="Heat Tech Company, Ltd."
F04335 o="DVN(Shanghai)Ltd."
F0463B o="Comcast Cable Corporation"
F04A2B o="PYRAMID Computer GmbH"
F04B6A o="Scientific Production Association Siberian Arsenal, Ltd."
F04BF2 o="JTECH Communications, Inc."
-F04CD5 o="Maxlinear, Inc"
F05494 o="Honeywell Connected Building"
F05849 o="CareView Communications"
F05D89 o="Dycon Limited"
@@ -17439,7 +17592,6 @@ F09CBB o="RaonThink Inc."
F09CD7 o="Guangzhou Blue Cheetah Intelligent Technology Co., Ltd."
F0A764 o="GST Co., Ltd."
F0A7B2 o="FUTABA CORPORATION"
-F0A968 o="Antailiye Technology Co.,Ltd"
F0ACA4 o="HBC-radiomatic"
F0AD4E o="Globalscale Technologies, Inc."
F0AE51 o="Xi3 Corp"
@@ -17572,8 +17724,10 @@ F4DCDA o="Zhuhai Jiahe Communication Technology Co., limited"
F4DE0C o="ESPOD Ltd."
F4E142 o="Delta Elektronika BV"
F4E204 o="Traqueur"
+F4E578 o="LLC Proizvodstvennaya Kompania %TransService%"
F4E6D7 o="Solar Power Technologies, Inc."
F4E926 o="Tianjin Zanpu Technology Inc."
+F4EB9F o="Ellu Company 2019 SL"
F4ED5F o="SHENZHEN KTC TECHNOLOGY GROUP"
F4EF9E o="SGSG SCIENCE & TECHNOLOGY CO. LTD"
F4F197 o="EMTAKE Inc"
@@ -17588,6 +17742,7 @@ F80DEA o="ZyCast Technology Inc."
F80DF1 o="Sontex SA"
F80F84 o="Natural Security SAS"
F81037 o="Atopia Systems, LP"
+F81B04 o="Zhong Shan City Richsound Electronic Industrial Ltd"
F81CE5 o="Telefonbau Behnke GmbH"
F81D90 o="Solidwintech"
F81D93 o="Longdhua(Beijing) Controls Technology Co.,Ltd"
@@ -17613,6 +17768,7 @@ F84A73 o="EUMTECH CO., LTD"
F84A7F o="Innometriks Inc"
F8501C o="Tianjin Geneuo Technology Co.,Ltd"
F85063 o="Verathon"
+F85128 o="SimpliSafe"
F8516D o="Denwa Technology Corp."
F852DF o="VNL Europe AB"
F8572E o="Core Brands, LLC"
@@ -17620,10 +17776,12 @@ F85A00 o="Sanford LP"
F85B9C o="SB SYSTEMS Co.,Ltd"
F85BC9 o="M-Cube Spa"
F85C45 o="IC Nexus Co. Ltd."
+F85C7D o="Shenzhen Honesty Electronics Co.,Ltd."
F862AA o="xn systems"
F86465 o="Anova Applied Electronics, Inc."
F86601 o="Suzhou Chi-tek information technology Co., Ltd"
F86971 o="Seibu Electric Co.,"
+F86C03 o="Shenzhen Teleone Technology Co., Ltd"
F86ECF o="Arcx Inc"
F86FDE o="Shenzhen Goodix Technology Co.,Ltd."
F871FE o="The Goldman Sachs Group, Inc."
@@ -17633,6 +17791,7 @@ F87B62 o="FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch"
F87B8C o="Amped Wireless"
F88096 o="Elsys Equipamentos Eletrônicos Ltda"
F8811A o="OVERKIZ"
+F88200 o="CaptionCall"
F88479 o="Yaojin Technology(Shenzhen)Co.,Ltd"
F8893C o="Inventec Appliances Corp."
F88C1C o="KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING"
@@ -17705,6 +17864,7 @@ FC09F6 o="GUANGDONG TONZE ELECTRIC CO.,LTD"
FC10BD o="Control Sistematizado S.A."
FC1186 o="Logic3 plc"
FC1349 o="Global Apps Corp."
+FC1499 o="Aimore Acoustics Incorporation"
FC1607 o="Taian Technology(Wuxi) Co.,Ltd."
FC1794 o="InterCreative Co., Ltd"
FC19D0 o="Cloud Vision Networks Technology Co.,Ltd."
@@ -17745,6 +17905,8 @@ FC683E o="Directed Perception, Inc"
FC6BF0 o="TOPWELL INTERNATIONAL HOLDINDS LIMITED"
FC6C31 o="LXinstruments GmbH"
FC6DC0 o="BME CORPORATION"
+FC6DD1 o="APRESIA Systems, Ltd."
+FC71FA o="Trane Technologies"
FC790B o="Hitachi High Technologies America, Inc."
FC7CE7 o="FCI USA LLC"
FC7D6C o="HYESUNG TECHWIN Co., Ltd"
@@ -17770,6 +17932,7 @@ FCB58A o="Wapice Ltd."
FCB662 o="IC Holdings LLC"
FCB7F0 o="Idaho National Laboratory"
FCBBA1 o="Shenzhen Minicreate Technology Co.,Ltd"
+FCBC0E o="Zhejiang Cainiao Supply Chain Management Co., Ltd"
FCBC9C o="Vimar Spa"
FCCAC4 o="LifeHealth, LLC"
FCCCE4 o="Ascon Ltd."
@@ -17950,7 +18113,7 @@ FCFEC2 o="Invensys Controls UK Limited"
09D o="Navitar Inc"
09E o="K+K Messtechnik GmbH"
09F o="ENTE Sp. z o.o."
- 0A0 o="HomerSoft sp. z o.o."
+ 0A0 o="Silvair"
0A1 o="Hangzhou Zhiping Technology Co., Ltd."
0A2 o="Hettich Benelux"
0A3 o="P A Network Laboratory Co.,Ltd"
@@ -18228,6 +18391,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Christ Electronic System GmbH"
D o="legendsky tech"
E o="Taiwan Name Plate Co.,LTD"
+18FDCB
+ 0 o="Shenzhen Rui jiali Electronic Technology Co. Ltd."
+ 1 o="SOTHIS CIC TEC (Shanghai) Co., Ltd"
+ 2 o="Cabtronix AG"
+ 3 o="Staclar, Inc."
+ 4 o="Gosuncn Technology Group Co.,LTD."
+ 5 o="Accel Robotics"
+ 6 o="SKA Organisation"
+ 7 o="ENERGIE IP"
+ 8 o="CISTECH Solutions"
+ 9 o="CreyNox GmbH"
+ A o="Sercomm Corporation."
+ B o="TRANSLITE GLOBAL LLC"
+ C o="Ark Vision Systems GmbH & Co. KG"
+ D o="StreamLocator"
+ E o="KWANG YANG MOTOR CO.,LTD"
1C21D1
0 o="Toyo System CO.,LTD."
1 o="Ognios GmbH"
@@ -18309,7 +18488,7 @@ FCFEC2 o="Invensys Controls UK Limited"
E o="ASSYSTEM France"
1C8879
0 o="Newps co.,ltd"
- 1 o="ANDRA Sp. z o.o."
+ 1 o="ANDRA Sp. z o. o."
2 o="Airsmart System Co.,Ltd"
3 o="Shenzhen Xiaoxi Technology Co., Ltd."
4 o="Ultraflux"
@@ -18425,6 +18604,7 @@ FCFEC2 o="Invensys Controls UK Limited"
5 o="GANZHOU DEHUIDA TECHNOLOGY CO., LTD"
6 o="SHANDONG KEHUI POWER AUTOMATION CO. LTD."
7 o="SuZhou A-rack Information Technology Co.,Ltd"
+ 8 o="Medicomp, Inc"
9 o="Topgolf Sweden AB"
A o="Unitronux(Shenzhen) Intelligence Technology Co.,Ltd"
B o="Teknic, Inc."
@@ -18479,6 +18659,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Swisson AG"
D o="APPEAK Technology System Co.Ltd."
E o="SCA Hygiene Products AB"
+28B77C
+ 0 o="SHENZHEN EVIEW GPS TECHNOLOGY"
+ 1 o="SolarEdge Technologies"
+ 2 o="Zhuhai RongBang Electronic Technology Co., Ltd."
+ 3 o="Beijing Kitten&Puppy Technology Co.,Ltd."
+ 4 o="Annapurna labs"
+ 5 o="GROTHE GmbH"
+ 6 o="Shanghai Taiji Software Co.,Limited"
+ 7 o="Convertertec Deutschland GmbH"
+ 8 o="Shenzhen PUAS Industrial Co.,LTD"
+ 9 o="Anser Coding Inc."
+ A o="Simaudio Ltd"
+ B o="Vehant Technologies Pvt Ltd."
+ C o="AnyLink LLC"
+ D o="Enedo Finland Oy"
+ E o="Ray Pte Ltd"
28F537
0 o="Valeo Siemens eAutomotive Norway"
1 o="Umojo"
@@ -18651,6 +18847,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Origami Group Limited"
D o="OLIMEX Ltd"
E o="Shenzhen Fengliyuan Energy Conservating Technology Co. Ltd"
+304950
+ 0 o="Guangzhou Lian-med Technology Co.,Ltd."
+ 1 o="ATLI WORLD LIMITED"
+ 2 o="Sercomm Corporation."
+ 3 o="Morgan Schaffer Inc."
+ 4 o="ADVANCED MICROWAVE ENGINEERING SRL"
+ 5 o="IK Elektronik GmbH"
+ 6 o="Curb, Inc."
+ 7 o="Shenzhen iTG robot Co.,Ltd."
+ 8 o="SHENZHEN LDROBOT CO., LTD."
+ 9 o="Shanghai gatang technology CO.,LTD"
+ A o="Ledworks SRL"
+ B o="HANGZHOU EV-TECH CO.,LTD"
+ C o="Anacove LLC"
+ D o="Xio Research, Inc"
+ E o="IoTmaxx GmbH"
34008A
0 o="Angee Technologies Ltd."
1 o="ZQAM Communications"
@@ -18792,6 +19004,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Ajax Systems Inc"
D o="Yellowbrick Data, Inc."
E o="Wyres SAS"
+38F7CD
+ 0 o="Polska Fabryka Wodomierzy i Ciep?omierzy FILA"
+ 1 o="NZIA Connect Inc"
+ 2 o="RIPower Co.,Ltd"
+ 3 o="VANGUARD"
+ 4 o="NORDI TELEKOMMUNIKATSIOONI OÜ"
+ 5 o="Shanghai qinzhuo Electronic Co., Ltd."
+ 6 o="Fast Cotton(Beijing) Limited"
+ 7 o="ARUNAS PTY LTD"
+ 8 o="BlastWave Inc."
+ 9 o="RFbeam Microwave GmbH"
+ A o="Distech Controls"
+ B o="Fibergate Inc."
+ C o="Shenzhen MADIGI Electronic Technology Co., Ltd"
+ D o="Macherey-Nagel GmbH & Co. KG"
+ E o="APT MOBILE SATCOM LIMITED"
38FDFE
0 o="Edge I&D Co., Ltd."
1 o="WAYTONE (BEIIJNG) COMMUNICATIONS CO.,LTD"
@@ -19093,6 +19321,21 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Alibaba (Beijing) Software Service Inc."
D o="Shenzhen bankledger Technology Co, Ltd"
E o="Annapurna labs"
+4C93A6
+ 0 o="Vestaboard, Inc."
+ 1 o="Atrie Technology Fzc"
+ 2 o="Diehl Controls Nanjing Co., Ltd."
+ 3 o="Commsignia, Ltd."
+ 4 o="4D Sistem Ticaret A.S."
+ 6 o="Shandong Senter Electronic Co., Ltd"
+ 7 o="5Voxel Co., Ltd."
+ 8 o="Sercomm Corporation."
+ 9 o="Advantics"
+ A o="Hanwang Technology Co.,Ltd"
+ B o="Felten Electronics"
+ C o="Wuhan Maiwe communication Co.,Ltd"
+ D o="Cantronic Systems (Canada) Inc"
+ E o="CELLTRON"
4CBC98
0 o="Charge-Amps AB"
1 o="JSC NIC"
@@ -19236,6 +19479,20 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="BJ COTYTECH TECHNOLOGY CO.,LTD"
D o="ASSEM TECHNOLOGY CO.,LTD."
E o="Nederman Holding AB"
+58208A
+ 0 o="Annapurna labs"
+ 2 o="MARS DIGI TECH CO .,LTD"
+ 3 o="Aggregate Co.,Ltd."
+ 4 o="TRING"
+ 5 o="JIA HUANG JHAN YE CO.,LTD"
+ 6 o="Shangyin Intelligence Technology Shandong Co.,Ltd"
+ 7 o="pureLiFi Ltd"
+ 8 o="SAMIL CTS Co., Ltd."
+ 9 o="Suzhou Ruilisi Technology Ltd."
+ A o="Conductix-Wampfler"
+ B o="Infodev Electronic Designers Intl."
+ D o="SAMBO HITECH"
+ E o="UPM Technology, Inc"
58E876
1 o="Beijing Perabytes IS Technology Co., Ltd"
2 o="Coala Life AB"
@@ -19267,6 +19524,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Excenon Mobile Technology Co., Ltd."
D o="XIAMEN LEELEN TECHNOLOGY CO.,LTD"
E o="Applied Device Technologies"
+5C857E
+ 0 o="28 Gorilla"
+ 1 o="Sichuan C.H Control Technology Co., Ltd."
+ 2 o="mobilogix HongKong"
+ 3 o="Cable Matters Inc."
+ 4 o="Shenzhen IP3 Century Intelligent Technology CO.,Ltd"
+ 5 o="Shanghai Yanhe automation technology co.,LTD"
+ 6 o="ProdataKey"
+ 7 o="Beijing HZFD Technology Co., Ltd"
+ 8 o="BeiJing Xinsheng Technology Co.,Ltd"
+ 9 o="Express LUCK Industrial Ltd."
+ A o="Zhejiang Jetron Ark Digital Technology Co., Ltd"
+ B o="HHCC Plant Technology Co., Ltd."
+ C o="Annapurna labs"
+ D o="Nautech Electronics Ltd"
+ E o="Guoyi Liangzi (Hefei) Technology Co., Ltd(CIQTEK)"
5CF286
0 o="Hangzhou Signwei Electronics Technology Co., Ltd"
1 o="iSon Tech"
@@ -19409,6 +19682,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Toucan Systems Ltd"
D o="Nanjing Buruike Electronics Technology Co., Ltd."
E o="Beijing Fimi Technology Co., Ltd."
+706979
+ 0 o="Full Solution Telecom"
+ 1 o="Linksys Telecom Shenzhen CO., LTD"
+ 2 o="Graphcore Ltd"
+ 3 o="Hebei Baina Xinda Technology Co., Ltd."
+ 4 o="SelectTech GeoSpatial, LLC"
+ 5 o="Ibyte"
+ 6 o="Beijing Security Union Information Technology Co.,Ltd"
+ 7 o="Intelitech SIA"
+ 8 o="An Phat Information Technology Co., Ltd"
+ 9 o="Faurecia Clarion Electronics (Dongguan) Co., Ltd"
+ A o="Foxconn Brasil Industria e Comercio Ltda"
+ B o="Liquid Instruments Pty Ltd"
+ C o="Rivian Automotive LLC"
+ D o="FREUND ELEKTRONIKA D.O.O., IP-INTEGRA TECHNOLOGIES"
+ E o="BAS-IP LP"
70886B
0 o="Veracity UK Ltd"
1 o="Bitfinder Inc"
@@ -19425,6 +19714,7 @@ FCFEC2 o="Invensys Controls UK Limited"
001 o="SOREDI touch systems GmbH"
002 o="Gogo BA"
003 o="ANYROAM"
+ 005 o="CT Company"
006 o="Piranha EMS Inc."
007 o="SENSONEO"
008 o="ESYSE GmbH Embedded Systems Engineering"
@@ -19434,6 +19724,7 @@ FCFEC2 o="Invensys Controls UK Limited"
00C o="EXARA Group"
00D o="Scrona AG"
00E o="Magosys Systems LTD"
+ 00F o="Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd"
010 o="Hanwa Electronic Ind.Co.,Ltd."
011 o="Sumer Data S.L"
012 o="KST technology"
@@ -19486,6 +19777,7 @@ FCFEC2 o="Invensys Controls UK Limited"
044 o="Don Electronics Ltd"
045 o="Navaero Avionics AB"
046 o="Shenzhen Rihuida Electronics Co,. Ltd"
+ 047 o="OOO %ORION-R%"
048 o="AvMap srlu"
049 o="APP Engineering, Inc."
04A o="Gecko Robotics Inc"
@@ -19494,9 +19786,11 @@ FCFEC2 o="Invensys Controls UK Limited"
04D o="Sicon srl"
04E o="HUGEL GmbH"
050 o="Compusign Systems Pty Ltd"
+ 051 o="JT"
052 o="Sudo Premium Engineering"
053 o="YAMAKATSU ELECTRONICS INDUSTRY CO., LTD."
054 o="Groupeer Technologies"
+ 055 o="BAE SYSTEMS"
056 o="MIRAE INFORMATION TECHNOLOGY CO., LTD."
057 o="RCH ITALIA SPA"
058 o="Telink Semiconductor CO, Limtied, Taiwan"
@@ -19519,6 +19813,7 @@ FCFEC2 o="Invensys Controls UK Limited"
06A o="Guangdong Centnet Technology Co.,Ltd"
06B o="U-Tech"
06C o="AppTek"
+ 06D o="Panoramic Power"
06E o="GLOBAL-KING INTERNATIONAL CO., LTD."
06F o="Beijing Daswell Science and Technology Co.LTD"
070 o="Lumiplan Duhamel"
@@ -19545,6 +19840,7 @@ FCFEC2 o="Invensys Controls UK Limited"
086 o="Husty M.Styczen J.Hupert Sp.J."
087 o="Tempus Fugit Consoles bvba"
088 o="OptiScan Biomedical Corp."
+ 089 o="Kazdream Technologies LLP"
08A o="MB connect line GmbH Fernwartungssysteme"
08B o="Peter Huber Kaeltemaschinenbau AG"
08C o="Airmar Technology Corp"
@@ -19556,13 +19852,14 @@ FCFEC2 o="Invensys Controls UK Limited"
092 o="inomed Medizintechnik GmbH"
093 o="Legrand Electric Ltd"
094 o="Circuitlink Pty Ltd"
+ 095 o="plc-tec AG"
096 o="HAVELSAN A.Ş."
097 o="Avant Technologies"
098 o="Alcodex Technologies Private Limited"
099 o="Schwer+Kopka GmbH"
09A o="Akse srl"
09B o="Jacarta Ltd"
- 09D o="P&S GmbH"
+ 09D o="PuS GmbH und Co. KG"
09E o="MobiPromo"
09F o="COMTECH Kft."
0A0 o="Cominfo, Inc."
@@ -19588,9 +19885,11 @@ FCFEC2 o="Invensys Controls UK Limited"
0B4 o="AVER"
0B5 o="Capgemini Netherlands"
0B6 o="Landis Gyr"
+ 0B7 o="HAI ROBOTICS Co., Ltd."
0B8 o="Lucas-Nülle GmbH"
0B9 o="Easy Digital Concept"
0BA o="Ayre Acoustics, Inc."
+ 0BB o="AnaPico AG"
0BC o="Practical Software Studio LLC"
0BD o="Andium"
0BE o="ChamSys Ltd"
@@ -19636,6 +19935,7 @@ FCFEC2 o="Invensys Controls UK Limited"
0E8 o="Grossenbacher Systeme AG"
0E9 o="VNT electronics s.r.o."
0EA o="AEV Broadcast Srl"
+ 0EB o="Tomahawk Robotics"
0EC o="ACS MOTION CONTROL"
0ED o="Lupa Tecnologia e Sistemas Ltda"
0EE o="Picture Elements, Inc."
@@ -19645,6 +19945,7 @@ FCFEC2 o="Invensys Controls UK Limited"
0F2 o="TrexEdge, Inc."
0F3 o="MonsoonRF, Inc."
0F4 o="Visual Robotics"
+ 0F5 o="Season Electronics Ltd"
0F6 o="KSE GmbH"
0F7 o="Bespoon"
0F8 o="Special Services Group, LLC"
@@ -19665,14 +19966,18 @@ FCFEC2 o="Invensys Controls UK Limited"
108 o="TEX COMPUTER SRL"
109 o="DiTEST Fahrzeugdiagnose GmbH"
10A o="SEASON DESIGN TECHNOLOGY"
+ 10B o="SECUREAN CO.,Ltd"
10C o="Vocality International Ltd"
+ 10D o="CoreEL Technologies Pvt Ltd"
10E o="Colorimetry Research, Inc"
10F o="neQis"
+ 110 o="Orion Power Systems, Inc."
111 o="Leonardo Sistemi Integrati S.r.l."
112 o="DiTEST Fahrzeugdiagnose GmbH"
113 o="iREA System Industry"
114 o="Project H Pty Ltd"
115 o="Welltec Corp."
+ 116 o="Momentum Data Systems"
117 o="SysCom Automationstechnik GmbH"
11B o="HoseoTelnet Inc..."
11C o="Samriddi Automations Pvt. Ltd."
@@ -19693,6 +19998,7 @@ FCFEC2 o="Invensys Controls UK Limited"
12D o="S.E.I. CO.,LTD."
12E o="GreenFlux"
12F o="DSP4YOU LTd"
+ 130 o="MG s.r.l."
131 o="Inova Design Solutions Ltd"
132 o="Hagenuk KMT Kabelmesstechnik GmbH"
133 o="Vidisys GmbH"
@@ -19729,8 +20035,10 @@ FCFEC2 o="Invensys Controls UK Limited"
153 o="Schneider Electric Motion USA"
154 o="Walk Horizon Technology (Beijing) Co., Ltd."
155 o="Sanwa New Tec Co.,Ltd"
+ 157 o="Shanghai Jupper Technology Co.Ltd"
158 o="EAX Labs s.r.o."
159 o="RCH Vietnam Limited Liability Company"
+ 15A o="ENABLER LTD."
15B o="Armstrong International, Inc."
15C o="Woods Hole Oceanographic Institution"
15D o="Vtron Pty Ltd"
@@ -19740,6 +20048,7 @@ FCFEC2 o="Invensys Controls UK Limited"
162 o="ESPAI DE PRODUCCIÓ I ELECTRÓNI"
163 o="BHARAT HEAVY ELECTRICALS LIMITED"
164 o="Tokyo Drawing Ltd."
+ 165 o="Wuhan Xingtuxinke ELectronic Co.,Ltd"
166 o="SERIAL IMAGE INC."
167 o="Eiden Co.,Ltd."
168 o="Biwave Technologies, Inc."
@@ -19755,10 +20064,12 @@ FCFEC2 o="Invensys Controls UK Limited"
173 o="National TeleConsultants LLC"
174 o="Carlson Wireless Technologies Inc."
175 o="Akribis Systems"
+ 177 o="Wired Broadcast Ltd"
178 o="Gamber Johnson-LLC"
179 o="ALTRAN UK"
17A o="Gencoa Ltd"
17B o="Vistec Electron Beam GmbH"
+ 17C o="Farmpro Ltd"
17D o="Entech Electronics"
17E o="OCULI VISION"
17F o="MB connect line GmbH Fernwartungssysteme"
@@ -19779,9 +20090,11 @@ FCFEC2 o="Invensys Controls UK Limited"
18E o="NIPPON SEIKI CO., LTD."
18F o="Newtec A/S"
190 o="Fantom Wireless, Inc."
+ 191 o="Algodue Elettronica Srl"
192 o="ASPT, INC."
193 o="ERA TOYS LIMITED"
194 o="Husty M.Styczen J.Hupert Sp.J."
+ 195 o="Ci4Rail"
197 o="Lattech Systems Pty Ltd"
199 o="Smart Controls LLC"
19A o="WiSuite USA"
@@ -19795,6 +20108,7 @@ FCFEC2 o="Invensys Controls UK Limited"
1A4 o="DAVEY BICKFORD"
1A5 o="METRONIC APARATURA KONTROLNO - POMIAROWA"
1A6 o="Robotelf Technologies (Chengdu) Co., Ltd."
+ 1A7 o="Elk Solutions, LLC"
1A8 o="STC %Rainbow% Ltd."
1A9 o="OCEANIX INC."
1AA o="Echo Ridge, LLC"
@@ -19803,6 +20117,7 @@ FCFEC2 o="Invensys Controls UK Limited"
1AD o="Techworld Industries Ltd"
1AF o="Teenage Engineering AB"
1B1 o="Shanghai Danyan Information Technology Co., Ltd."
+ 1B2 o="Cavagna Group Spa"
1B3 o="Graphcore Ltd"
1B4 o="5nines"
1B5 o="StarBridge, Inc."
@@ -19814,6 +20129,7 @@ FCFEC2 o="Invensys Controls UK Limited"
1BE o="Potter Electric Signal Co. LLC"
1BF o="DEUTA-WERKE GmbH"
1C0 o="W. H. Leary Co., Inc."
+ 1C1 o="Sphere of economical technologies Ltd"
1C2 o="CENSIS, Uiversity of Glasgow"
1C3 o="Shanghai Tiancheng Communication Technology Corporation"
1C4 o="Smeg S.p.A."
@@ -19821,6 +20137,7 @@ FCFEC2 o="Invensys Controls UK Limited"
1C7 o="Hoshin Electronics Co., Ltd."
1C8 o="LDA audio video profesional S.L."
1C9 o="MB connect line GmbH Fernwartungssysteme"
+ 1CA o="inomatic GmbH"
1CB o="MatchX GmbH"
1CC o="AooGee Controls Co., LTD."
1CD o="ELEUSI GmbH"
@@ -19927,6 +20244,7 @@ FCFEC2 o="Invensys Controls UK Limited"
23F o="ETA-USA"
240 o="Orlaco Products B.V."
241 o="Bolide Technology Group, Inc."
+ 242 o="Comeo Technology Co.,Ltd"
243 o="Rohde&Schwarz Topex SA"
244 o="DAT Informatics Pvt Ltd"
245 o="Newtec A/S"
@@ -19950,11 +20268,14 @@ FCFEC2 o="Invensys Controls UK Limited"
259 o="Zebra Elektronik A.S."
25A o="DEUTA-WERKE GmbH"
25B o="GID Industrial"
+ 25C o="ARCLAN'SYSTEM"
25D o="Mimo Networks"
+ 25E o="RFHIC"
25F o="COPPERNIC SAS"
260 o="ModuSystems, Inc"
261 o="Potter Electric Signal Co. LLC"
262 o="OOO Research and Production Center %Computer Technologies%"
+ 263 o="AXING AG"
264 o="ifak technology + service GmbH"
266 o="Spectra Displays Ltd"
267 o="Zehntner Testing Instruments"
@@ -19995,12 +20316,15 @@ FCFEC2 o="Invensys Controls UK Limited"
28D o="Technica Engineering GmbH"
28E o="TEX COMPUTER SRL"
28F o="Overline Systems"
+ 291 o="Sequent AG"
292 o="Boston Dynamics"
293 o="Solar RIg Technologies"
+ 294 o="RCH Vietnam Limited Liability Company"
295 o="Cello Electronics (UK) Ltd"
296 o="Rohde&Schwarz Topex SA"
297 o="Grossenbacher Systeme AG"
299 o="KMtronic ltd"
+ 29A o="Profusion Limited"
29B o="DermaLumics S.L."
29C o="Teko Telecom Srl"
29D o="XTech2 SIA"
@@ -20020,6 +20344,7 @@ FCFEC2 o="Invensys Controls UK Limited"
2AC o="New Imaging Technologies"
2AD o="Opgal Optronic Industries"
2AE o="Alere Technologies AS"
+ 2AF o="Enlaps"
2B0 o="Beijing Zhongyi Yue Tai Technology Co., Ltd"
2B1 o="WIXCON Co., Ltd"
2B2 o="Sun Creative (ZheJiang) Technology INC."
@@ -20036,25 +20361,32 @@ FCFEC2 o="Invensys Controls UK Limited"
2BE o="Coherent Logix, Inc."
2BF o="FOSHAN VOHOM"
2C0 o="Sensative AB"
+ 2C1 o="Avlinkpro"
2C2 o="Quantum Detectors"
2C3 o="Proterra"
2C4 o="Hodwa Co., Ltd"
2C7 o="Worldsensing"
+ 2C8 o="SLAT"
2C9 o="SEASON DESIGN TECHNOLOGY"
2CA o="TATTILE SRL"
+ 2CB o="Yongtong tech"
2CC o="WeWork Companies, Inc."
2CD o="Korea Airports Corporation"
2CE o="KDT"
2CF o="MB connect line GmbH Fernwartungssysteme"
2D0 o="ijin co.,ltd."
+ 2D1 o="Integer.pl S.A."
2D2 o="SHANGHAI IRISIAN OPTRONICS TECHNOLOGY CO.,LTD."
+ 2D3 o="Hensoldt Sensors GmbH"
2D4 o="CT Company"
2D5 o="Teuco Guzzini"
2D6 o="Kvazar LLC"
2D8 o="Unisight Digital Products"
+ 2D9 o="ZPAS S.A."
2DA o="Skywave Networks Private Limited"
2DB o="ProtoPixel SL"
2DC o="Bolide Technology Group, Inc."
+ 2DD o="Melissa Climate Jsc"
2DE o="YUYAMA MFG Co.,Ltd"
2E0 o="Peter Huber"
2E1 o="hiSky S.C.S LTD"
@@ -20078,14 +20410,17 @@ FCFEC2 o="Invensys Controls UK Limited"
2F4 o="Radixon s.r.o."
2F5 o="eze System, Inc."
2F6 o="TATTILE SRL"
+ 2F7 o="Military Research Institute"
2F8 o="Tunstall A/S"
2F9 o="CONSOSPY"
2FA o="Toray Medical Co.,Ltd"
+ 2FB o="IK MULTIMEDIA PRODUCTION SRL"
2FC o="Loanguard T/A SE Controls"
2FD o="Special Projects Group, Inc"
2FE o="Yaham Optoelectronics Co., Ltd"
2FF o="Sunstone Engineering"
300 o="Novo DR Ltd."
+ 301 o="WAYNE ANALYTICS LLC"
302 o="DogWatch Inc"
303 o="Fuchu Giken, Inc."
304 o="Wartsila Voyage Limited"
@@ -20093,6 +20428,7 @@ FCFEC2 o="Invensys Controls UK Limited"
306 o="LEMZ-T, LLC"
307 o="Energi innovation Aps"
308 o="DSD MICROTECHNOLOGY,INC."
+ 30A o="HongSeok Ltd."
30B o="Ash Technologies"
30C o="Sicon srl"
30D o="Fiberbase"
@@ -20108,6 +20444,7 @@ FCFEC2 o="Invensys Controls UK Limited"
31F o="Elcoma"
320 o="CYNIX Systems Inc"
321 o="Yite technology"
+ 322 o="PuS GmbH und Co. KG"
323 o="TATTILE SRL"
324 o="Thales Nederland BV"
325 o="BlueMark Innovations BV"
@@ -20116,11 +20453,13 @@ FCFEC2 o="Invensys Controls UK Limited"
328 o="HIPODROMO DE AGUA CALIENTE SA CV"
329 o="Primalucelab isrl"
32A o="Wuhan Xingtuxinke ELectronic Co.,Ltd"
+ 32B o="RTA srl"
32C o="ATION Corporation"
32D o="Hanwell Technology Co., Ltd."
32E o="A&T Corporation"
32F o="Movidius SRL"
330 o="iOne"
+ 331 o="Firecom, Inc."
332 o="InnoSenT"
334 o="Dokuen Co. Ltd."
335 o="Jonsa Australia Pty Ltd"
@@ -20130,6 +20469,7 @@ FCFEC2 o="Invensys Controls UK Limited"
339 o="Sierra Nevada Corporation"
33B o="Seal Shield, LLC"
33C o="Videri Inc."
+ 33D o="Schneider Electric Motion USA"
33E o="Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd."
33F o="XANTIA SA"
340 o="Renesas Electronics"
@@ -20147,6 +20487,7 @@ FCFEC2 o="Invensys Controls UK Limited"
34C o="GLT Exports Ltd"
34D o="Equos Research Co., Ltd"
34E o="Risk Expert sarl"
+ 34F o="Royal Engineering Consultancy Private Limited"
350 o="Tickster AB"
351 o="KST technology"
352 o="Globalcom Engineering SPA"
@@ -20171,6 +20512,7 @@ FCFEC2 o="Invensys Controls UK Limited"
366 o="Solarlytics, Inc."
367 o="Living Water"
368 o="White Matter LLC"
+ 369 o="ALVAT s.r.o."
36A o="Becton Dickinson"
36C o="Sicon srl"
36D o="Cyberteam Sp z o o"
@@ -20181,6 +20523,7 @@ FCFEC2 o="Invensys Controls UK Limited"
372 o="MATELEX"
374 o="OOO NPP Mars-Energo"
375 o="Adel System srl"
+ 376 o="Magenta Labs, Inc."
377 o="Monnit Corporation"
378 o="synchrotron SOLEIL"
379 o="Vensi, Inc."
@@ -20195,6 +20538,7 @@ FCFEC2 o="Invensys Controls UK Limited"
383 o="LPA Excil Electronics"
384 o="Sensohive Technologies"
385 o="Kamacho Scale Co., Ltd."
+ 386 o="GPSat Systems"
387 o="GWF MessSysteme AG"
388 o="Xitron"
38A o="KSE GmbH"
@@ -20204,6 +20548,7 @@ FCFEC2 o="Invensys Controls UK Limited"
38F o="Sorynorydotcom Inc"
391 o="Changshu Ruite Electric Co.,Ltd."
392 o="Contec Americas Inc."
+ 393 o="Monnit Corporation"
394 o="Romteck Australia"
396 o="CTG sp. z o. o."
397 o="Guangxi Hunter Information Industry Co.,Ltd"
@@ -20215,20 +20560,27 @@ FCFEC2 o="Invensys Controls UK Limited"
39E o="Lanmark Controls Inc."
3A0 o="chiconypower"
3A1 o="Reckeen HDP Media sp. z o.o. sp. k."
+ 3A2 o="Daifuku CO., Ltd."
+ 3A3 o="CDS Institute of Management Strategy, Inc."
3A4 o="Ascenix Corporation"
3A5 o="KMtronic ltd"
3A7 o="Varikorea"
3A8 o="JamHub Corp."
3A9 o="Vivalnk"
3AA o="RCATSONE"
+ 3AB o="Camozzi Automation SpA"
+ 3AC o="RF-Tuote Oy"
3AD o="CT Company"
3AE o="Exicom Technologies fze"
3AF o="Turbo Technologies Corporation"
3B0 o="Millennial Net, Inc."
+ 3B1 o="Global Power Products"
3B2 o="Sicon srl"
+ 3B4 o="YOUSUNG"
3B5 o="Preston Industries dba PolyScience"
3B7 o="Paul Scherrer Institut (PSI)"
3B8 o="nVideon, Inc."
+ 3B9 o="BirdDog Australia"
3BA o="Silex Inside"
3BB o="A-M Systems"
3BC o="SciTronix"
@@ -20236,6 +20588,7 @@ FCFEC2 o="Invensys Controls UK Limited"
3BE o="MyDefence Communication ApS"
3BF o="Star Electronics GmbH & Co. KG"
3C0 o="DK-Technologies A/S"
+ 3C1 o="thingdust AG"
3C2 o="Cellular Specialties, Inc."
3C3 o="AIMCO"
3C4 o="Hagiwara Solutions Co., Ltd."
@@ -20246,12 +20599,15 @@ FCFEC2 o="Invensys Controls UK Limited"
3CA o="TTI Ltd"
3CB o="GeoSpectrum Technologies Inc"
3CC o="TerOpta Ltd"
+ 3CD o="BRS Sistemas Eletrônicos"
3CE o="Aditec GmbH"
3CF o="Systems Engineering Arts Pty Ltd"
3D0 o="ORtek Technology, Inc."
3D2 o="Imagine Inc."
+ 3D3 o="GS Elektromedizinsiche Geräte G. Stemple GmbH"
3D4 o="Sanmina Israel"
3D5 o="oxynet Solutions"
+ 3D6 o="Ariston Thermo s.p.a."
3D7 o="Remote Sensing Solutions, Inc."
3D8 o="Abitsoftware, Ltd."
3D9 o="Aplex Technology Inc."
@@ -20260,6 +20616,7 @@ FCFEC2 o="Invensys Controls UK Limited"
3DD o="Kniggendorf + Kögler Security GmbH"
3DE o="ELOMAC Elektronik GmbH"
3DF o="MultiDyne"
+ 3E0 o="Gogo Business Aviation"
3E1 o="Barnstormer Softworks"
3E2 o="AVI Pty Ltd"
3E3 o="Head"
@@ -20273,6 +20630,7 @@ FCFEC2 o="Invensys Controls UK Limited"
3EB o="Grossenbacher Systeme AG"
3EC o="Outsight SA"
3ED o="Ultra Electronics Sonar System Division"
+ 3EE o="Laser Imagineering Vertriebs GmbH"
3EF o="Vtron Pty Ltd"
3F0 o="Intervala"
3F1 o="Olympus NDT Canada"
@@ -20286,6 +20644,8 @@ FCFEC2 o="Invensys Controls UK Limited"
3F9 o="Herrick Tech Labs"
3FA o="Zaklad Energoelektroniki Twerd"
3FB o="Liberty Reach"
+ 3FC o="TangRen C&S CO., Ltd"
+ 3FD o="NaraControls Inc"
3FE o="Mentor Graphics"
3FF o="Hydra Controls"
400 o="Vtron Pty Ltd"
@@ -20299,6 +20659,8 @@ FCFEC2 o="Invensys Controls UK Limited"
409 o="Beijing Yutian Technology Co., Ltd."
40A o="Monroe Electronics, Inc."
40B o="QUERCUS TECHNOLOGIES, S.L."
+ 40C o="Tornado Modular Systems"
+ 40D o="Grupo Epelsa S.L."
40E o="Liaoyun Information Technology Co., Ltd."
40F o="NEXELEC"
410 o="Avant Technologies, Inc"
@@ -20306,6 +20668,7 @@ FCFEC2 o="Invensys Controls UK Limited"
413 o="Axess AG"
414 o="Smith Meter, Inc."
415 o="IDEA SPA"
+ 416 o="Antlia Systems"
417 o="Figment Design Laboratories"
418 o="DEV Systemtechnik GmbH& Co KG"
41A o="HYOSUNG Power & Industrial Systems"
@@ -20316,6 +20679,7 @@ FCFEC2 o="Invensys Controls UK Limited"
420 o="ECOINET"
421 o="North Star Bestech Co.,"
422 o="SUS Corporation"
+ 424 o="Underground Systems, Inc."
425 o="SinterCast"
426 o="Zehnder Group Nederland"
427 o="Key Chemical & Equipment Company"
@@ -20337,6 +20701,7 @@ FCFEC2 o="Invensys Controls UK Limited"
437 o="Digital Way"
439 o="TriLED"
43B o="Kalycito Infotech Private Limited"
+ 43C o="Scenario Automation"
43D o="Veryx Technologies Private Limited"
43E o="Peloton Technology"
43F o="biosilver .co.,ltd"
@@ -20350,6 +20715,7 @@ FCFEC2 o="Invensys Controls UK Limited"
447 o="Avid Controls Inc"
448 o="B/E Aerospace, Inc."
449 o="Edgeware AB"
+ 44A o="CANON ELECTRON TUBES & DEVICES CO., LTD."
44B o="Open System Solutions Limited"
44D o="Vessel Technology Ltd"
44E o="Solace Systems Inc."
@@ -20372,7 +20738,9 @@ FCFEC2 o="Invensys Controls UK Limited"
465 o="ENERGISME"
466 o="SYLink Technologie"
467 o="GreenWake Technologies"
+ 468 o="Shanghai Junqian Sensing Technology Co., LTD"
469 o="Gentec Systems Co."
+ 46A o="Shenzhen Vikings Technology Co., Ltd."
46B o="Airborne Engineering Limited"
46C o="SHANGHAI CHENZHU INSTRUMENT CO., LTD."
46E o="Zamir Recognition Systems Ltd."
@@ -20380,6 +20748,7 @@ FCFEC2 o="Invensys Controls UK Limited"
470 o="KITRON UAB"
471 o="SYSCO Sicherheitssysteme GmbH"
472 o="Quadio Devices Private Limited"
+ 473 o="KeyProd"
475 o="EWATTCH"
476 o="FR-Team International SA"
477 o="digitrol limited"
@@ -20391,7 +20760,10 @@ FCFEC2 o="Invensys Controls UK Limited"
47E o="Fiber Optika Technologies Pvt. Ltd."
47F o="ASE GmbH"
480 o="Emergency Lighting Products Limited"
+ 481 o="STEP sarl"
482 o="Aeryon Labs Inc"
+ 484 o="Hermann Sewerin GmbH"
+ 485 o="CLARESYS LIMITED"
486 o="ChongQing JianTao Technology Co., Ltd."
487 o="ECS s.r.l."
488 o="Cardinal Scale Mfg Co"
@@ -20413,12 +20785,14 @@ FCFEC2 o="Invensys Controls UK Limited"
499 o="Pycom Ltd"
49A o="HAXE SYSTEME"
49B o="Algodue Elettronica Srl"
+ 49C o="AC Power Corp."
49D o="Shenzhen Chanslink Network Technology Co., Ltd"
49E o="CAPTEMP, Lda"
49F o="B.P.A. SRL"
4A0 o="FLUDIA"
4A1 o="Herholdt Controls srl"
4A2 o="DEVAU Lemppenau GmbH"
+ 4A3 o="TUALCOM ELEKTRONIK A.S."
4A4 o="DEUTA-WERKE GmbH"
4A5 o="Intermind Inc."
4A6 o="HZHY TECHNOLOGY"
@@ -20436,6 +20810,7 @@ FCFEC2 o="Invensys Controls UK Limited"
4B2 o="Certus Operations Ltd"
4B3 o="Bacsoft"
4B4 o="Hi Tech Systems Ltd"
+ 4B5 o="Toolplanet Co., Ltd."
4B6 o="VEILUX INC."
4B7 o="Aplex Technology Inc."
4B8 o="International Roll-Call Corporation"
@@ -20455,6 +20830,7 @@ FCFEC2 o="Invensys Controls UK Limited"
4C7 o="SOLVERIS sp. z o.o."
4C8 o="Hosokawa Micron Powder Systems"
4C9 o="Elsist Srl"
+ 4CA o="PCB Piezotronics"
4CC o="FRESENIUS MEDICAL CARE"
4CD o="Power Electronics Espana, S.L."
4CE o="Agilack"
@@ -20465,6 +20841,7 @@ FCFEC2 o="Invensys Controls UK Limited"
4D4 o="Nortek Global HVAC"
4D5 o="Moog Rekofa GmbH"
4D6 o="Operational Technology Solutions"
+ 4D7 o="Technological Ray GmbH"
4D8 o="Versilis Inc."
4DB o="Temperature@lert"
4DC o="JK DEVICE CORPORATION"
@@ -20473,6 +20850,7 @@ FCFEC2 o="Invensys Controls UK Limited"
4DF o="Nidec Avtron Automation Corp"
4E0 o="Microvideo"
4E1 o="Grupo Epelsa S.L."
+ 4E3 o="adnexo GmbH"
4E4 o="W.A. Benjamin Electric Co."
4E5 o="viZaar industrial imaging AG"
4E7 o="Digital Domain"
@@ -20486,7 +20864,9 @@ FCFEC2 o="Invensys Controls UK Limited"
4F0 o="Li Seng Technology Ltd.,"
4F1 o="LG Electronics"
4F2 o="COMPAL ELECTRONICS, INC."
+ 4F3 o="XPS ELETRONICA LTDA"
4F4 o="WiTagg, Inc"
+ 4F5 o="Orlaco Products B.V."
4F6 o="DORLET SAU"
4F7 o="Foxtel srl"
4F9 o="OptoPrecision GmbH"
@@ -20508,6 +20888,7 @@ FCFEC2 o="Invensys Controls UK Limited"
50C o="Hangzhou landesker digital technology co. LTD"
50D o="CT Company"
50E o="Micro Trend Automation Co., LTD"
+ 50F o="LLC Sarov Innovative Technologies (WIZOLUTION)"
510 o="PSL ELEKTRONİK SANAYİ VE TİCARET A.S."
511 o="Next Sight srl"
512 o="Techno Broad,Inc"
@@ -20530,6 +20911,7 @@ FCFEC2 o="Invensys Controls UK Limited"
525 o="Plantiga Technologies Inc"
526 o="FlowNet LLC"
528 o="Aplex Technology Inc."
+ 529 o="Inventeq B.V."
52A o="Dataflex International BV"
52B o="GE Aviation Cheltenham"
52C o="Centuryarks Ltd.,"
@@ -20540,14 +20922,19 @@ FCFEC2 o="Invensys Controls UK Limited"
531 o="ATEME"
532 o="Talleres de Escoriaza SA"
533 o="Nippon Marine Enterprises, Ltd."
+ 534 o="Weihai Weigao Medical Imaging Technology Co., Ltd"
535 o="SITA Messtechnik GmbH"
+ 536 o="LARIMART SPA"
537 o="Biennebi s.r.l."
538 o="sydetion UG (h.b.)"
539 o="Tempris GmbH"
- 53A o="Pano0ramic Power"
+ 53A o="Panoramic Power"
53B o="Mr.Loop"
53C o="Airthings"
53D o="ACCEL CORP"
+ 53E o="Asiga Pty Ltd"
+ 53F o="Abbott Diagnostics Technologies AS"
+ 541 o="Nanjing Pingguang Electronic Technology Co., Ltd"
542 o="RTDS Technologies Inc."
543 o="wallbe GmbH"
544 o="Silicon Safe Ltd"
@@ -20581,6 +20968,7 @@ FCFEC2 o="Invensys Controls UK Limited"
564 o="christmann informationstechnik + medien GmbH & Co. KG"
565 o="Clecell"
566 o="Data Informs LLC"
+ 567 o="DogWatch Inc"
568 o="Small Data Garden Oy"
569 o="Nuance Hearing Ltd."
56A o="Harvard Technology Ltd"
@@ -20630,6 +21018,7 @@ FCFEC2 o="Invensys Controls UK Limited"
59C o="DAVE SRL"
59D o="servicios de consultoria independiente S.L."
5A0 o="Ascon Tecnologic S.r.l."
+ 5A1 o="BOE Technology Group Co., Ltd."
5A2 o="Wallner Automation GmbH"
5A3 o="CT Company"
5A5 o="Rehwork GmbH"
@@ -20639,6 +21028,7 @@ FCFEC2 o="Invensys Controls UK Limited"
5A9 o="Bunka Shutter Co., Ltd."
5AA o="Chugoku Electric Manufacturing Co.,Inc"
5AB o="Sea Air and Land Communications Ltd"
+ 5AC o="LM-Instruments Oy"
5AD o="Profotech"
5AE o="TinTec Co., Ltd."
5AF o="JENG IoT BV"
@@ -20654,11 +21044,16 @@ FCFEC2 o="Invensys Controls UK Limited"
5BC o="LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG"
5BE o="CASWA"
5BF o="Aton srl"
+ 5C0 o="Shenzhen Lianfaxun Electronic Technology Co., Ltd"
5C1 o="Shanghai JaWay Information Technology Co., Ltd."
5C4 o="TATTILE SRL"
5C5 o="Haag-Streit AG"
+ 5C6 o="C4I Systems Ltd"
+ 5C7 o="QSnet Visual Technologies Ltd"
5C8 o="YUYAMA MFG Co.,Ltd"
+ 5C9 o="ICTK Holdings"
5CA o="ACD Elekronik GmbH"
+ 5CB o="ECoCoMS Ltd."
5CC o="Akse srl"
5CD o="MVT Video Technologies R + H Maedler GbR"
5CF o="PROEL TSI s.r.l."
@@ -20670,6 +21065,7 @@ FCFEC2 o="Invensys Controls UK Limited"
5D5 o="CT Company"
5D6 o="BMT Messtechnik Gmbh"
5D8 o="LYNX Technik AG"
+ 5D9 o="olympus-ossa"
5DA o="Valk Welding B.V."
5DB o="Movicom LLC"
5DC o="FactoryLab B.V."
@@ -20705,8 +21101,10 @@ FCFEC2 o="Invensys Controls UK Limited"
5FB o="TELEPLATFORMS"
5FC o="SURTEC"
5FD o="Windar Photonics"
+ 5FE o="Grossenbacher Systeme AG"
5FF o="Vaisala Oyj"
600 o="Stellwerk GmbH"
+ 601 o="Tricom Research Inc."
602 o="Quantum Opus, LLC"
603 o="EGISTECH CO.,LTD."
605 o="Aplex Technology Inc."
@@ -20722,6 +21120,7 @@ FCFEC2 o="Invensys Controls UK Limited"
60F o="Tanaka Information System, LLC."
610 o="POLVISION"
611 o="Avionica"
+ 612 o="Edge Power Solutions"
613 o="Suprock Technologies"
614 o="QUALITTEQ LLC"
615 o="JSC %OTZVUK%"
@@ -20735,27 +21134,33 @@ FCFEC2 o="Invensys Controls UK Limited"
61E o="PKE Electronics AG"
61F o="Labotect Labor-Technik-Göttingen GmbH"
620 o="Orlaco Products B.V."
+ 622 o="PCS Inc."
623 o="Beijing HuaLian Technology Co, Ltd."
625 o="VX Instruments GmbH"
+ 626 o="KRONOTECH SRL"
628 o="MECT SRL"
+ 629 o="OZRAY"
+ 62A o="DOGA"
62B o="Silicann Systems GmbH"
62C o="OOO %NTC Rotek%"
62D o="elements"
+ 62E o="LINEAGE POWER PVT LTD.,"
62F o="BARCO, s.r.o."
630 o="LGE"
631 o="SENSO2ME"
+ 632 o="Power Electronics Espana, S.L."
633 o="OBSERVER FOUNDATION"
634 o="idaqs Co.,Ltd."
635 o="Cosylab d.d."
636 o="Globalcom Engineering SPA"
637 o="INEO-SENSE"
638 o="Parkalot Denmark ApS"
+ 639 o="DORLET SAU"
63A o="DAVE SRL"
63B o="Lazer Safe Pty Ltd"
63C o="Pivothead"
- 63D o="Storbyte, Inc."
63E o="RIKEN OPTECH CORPORATION"
- 63F o="YG COMPANY CO., LTD"
+ 63F o="DARBS Inc."
640 o="Electronic Equipment Company Pvt. Ltd."
641 o="Burk Technology"
642 o="MB connect line GmbH Fernwartungssysteme"
@@ -20768,6 +21173,7 @@ FCFEC2 o="Invensys Controls UK Limited"
64A o="Netbric Technology Co.,Ltd."
64B o="Kalfire"
64C o="ACEMIS FRANCE"
+ 64D o="SANMINA ISRAEL MEDICAL SYSTEMS LTD"
64E o="BigStuff3, Inc."
650 o="GIFAS-ELECTRIC GmbH"
651 o="Roxford"
@@ -20776,6 +21182,7 @@ FCFEC2 o="Invensys Controls UK Limited"
654 o="EMAC, Inc."
655 o="AOT System GmbH"
656 o="SonoSound ApS"
+ 657 o="ID Quantique SA"
658 o="emperor brands"
659 o="E2G srl"
65A o="Aplex Technology Inc."
@@ -20783,6 +21190,7 @@ FCFEC2 o="Invensys Controls UK Limited"
65C o="Aplex Technology Inc."
65D o="GEGA ELECTRONIQUE"
65E o="Season Electronics Ltd"
+ 65F o="Axnes AS"
660 o="Smart Service Technologies CO., LTD"
661 o="DesignA Electronics Limited"
662 o="Icon Industrial Engineering"
@@ -20790,10 +21198,11 @@ FCFEC2 o="Invensys Controls UK Limited"
665 o="CertUsus GmbH"
666 o="Aplex Technology Inc."
667 o="CT Company"
- 669 o="Pano0ramic Power"
+ 669 o="Panoramic Power"
66B o="Innitive B.V."
66C o="KRISTECH Krzysztof Kajstura"
66D o="Sanmina Israel"
+ 66F o="Simplified MFG"
670 o="Particle sizing systems"
671 o="Sea Shell Corporation"
672 o="KLEIBER Infrared GmbH"
@@ -20806,15 +21215,19 @@ FCFEC2 o="Invensys Controls UK Limited"
679 o="EMAC, Inc."
67A o="Micatu"
67B o="Stesalit Systems Ltd"
+ 67C o="Benchmark Electronics - Secure Technology"
67D o="Acrodea, Inc."
67E o="Season Electronics Ltd"
67F o="IAAN Co., Ltd"
680 o="BASF Corporation"
682 o="Rosslare Enterprises Limited"
+ 683 o="DECYBEN"
684 o="LECO Corporation"
686 o="Access Protocol Pty Ltd"
+ 687 o="Volution Group UK"
688 o="MG s.r.l."
689 o="Prisma Telecom Testing Srl"
+ 68A o="Advanced Telecommunications Research Institute International"
68B o="Sadel S.p.A."
68C o="ND METER"
68D o="%Meta-chrom% Co. Ltd."
@@ -20831,6 +21244,7 @@ FCFEC2 o="Invensys Controls UK Limited"
69A o="Altaneos"
69B o="TAIYO SEIKI CO.,LTD."
69C o="Keepen"
+ 69D o="JPEmbedded Mazan Filipek Sp. J."
69E o="PTYPE Co., LTD."
69F o="T+A elektroakustik GmbH & Co.KG"
6A0 o="Active Research Limited"
@@ -20840,9 +21254,12 @@ FCFEC2 o="Invensys Controls UK Limited"
6A4 o="Acrodea, Inc."
6A5 o="Akenori PTE LTD"
6A6 o="WOW System"
+ 6A7 o="Partilink Inc."
6A8 o="Vitsch Electronics"
6A9 o="OHMORI ELECTRIC INDUSTRIES CO.LTD"
+ 6AA o="Intermobility"
6AB o="ARROW (CHINA) ELECTRONICS TRADING CO., LTD."
+ 6AC o="Ketronixs Sdn Bhd"
6AD o="CONNIT"
6AE o="Hangzhou Weimu Technology Co,.Ltd."
6AF o="Sensorberg GmbH"
@@ -20867,6 +21284,7 @@ FCFEC2 o="Invensys Controls UK Limited"
6C5 o="CJSC «Russian telecom equipment company» (CJSC RTEC)"
6C6 o="Abbott Diagnostics Technologies AS"
6C7 o="Becton Dickinson"
+ 6C9 o="Redstone Sunshine(Beijing)Technology Co.,Ltd."
6CA o="LINEAGE POWER PVT LTD.,"
6CB o="NAJIN automation"
6CD o="NORTHBOUND NETWORKS PTY. LTD."
@@ -20875,10 +21293,13 @@ FCFEC2 o="Invensys Controls UK Limited"
6D1 o="Visual Engineering Technologies Ltd"
6D2 o="Ahrens & Birner Company GmbH"
6D3 o="DEUTA-WERKE GmbH"
- 6D6 o="KMtronic Ltd."
+ 6D6 o="KMtronic ltd"
+ 6D7 o="MB connect line GmbH Fernwartungssysteme"
6D8 o="Shanghai YuanAn Environmental Protection Technology Co.,Ltd"
6D9 o="VECTARE Inc"
6DA o="Enovative Networks, Inc."
+ 6DB o="Techimp - Altanova group Srl"
+ 6DC o="DEUTA-WERKE GmbH"
6DD o="Abbott Diagnostics Technologies AS"
6DE o="Ametek Solidstate Controls"
6DF o="Mango DSP, Inc."
@@ -20900,6 +21321,7 @@ FCFEC2 o="Invensys Controls UK Limited"
6F1 o="Discover Battery"
6F2 o="P&C Micro's Pty Ltd"
6F3 o="iungo"
+ 6F5 o="Cominfo, Inc."
6F6 o="Acco Brands Europe"
6F7 o="EGICON SRL"
6F8 o="SENSEON Corporation"
@@ -20922,6 +21344,7 @@ FCFEC2 o="Invensys Controls UK Limited"
709 o="AML"
70A o="PULLNET TECHNOLOGY, SA DE CV SSC1012302S73"
70B o="Alere Technologies AS"
+ 70C o="Potter Electric Signal Co. LLC"
70E o="Wuhan Xingtuxinke ELectronic Co.,Ltd"
70F o="Alion Science & Technology"
710 o="Guardian Controls International Ltd"
@@ -20934,6 +21357,7 @@ FCFEC2 o="Invensys Controls UK Limited"
718 o="PEEK TRAFFIC"
719 o="2M Technology"
71B o="elsys"
+ 71C o="Konzept Informationssysteme GmbH"
71E o="Motec Pty Ltd"
721 o="Zoe Medical"
722 o="UMAN"
@@ -20954,16 +21378,20 @@ FCFEC2 o="Invensys Controls UK Limited"
733 o="SA Instrumentation Limited"
734 o="MANSION INDUSTRY CO., LTD."
735 o="Swiss Audio"
+ 736 o="Jabil, Inc."
737 o="SD Biosensor"
739 o="Zigencorp, Inc"
+ 73A o="DOLBY LABORATORIES, INC."
73B o="S-I-C"
73C o="Centro de Ingenieria y Desarrollo industrial"
73D o="NETWAYS GmbH"
73E o="Trident RFID Pty Ltd"
+ 73F o="LLC Open Converged Networks"
740 o="Prisma Telecom Testing Srl"
741 o="HOW-E"
742 o="YUYAMA MFG Co.,Ltd"
743 o="EA Elektroautomatik GmbH & Co. KG"
+ 744 o="PHYZHON Health Inc"
745 o="TMSI LLC"
747 o="Eva Automation"
748 o="KDT"
@@ -20980,6 +21408,7 @@ FCFEC2 o="Invensys Controls UK Limited"
753 o="HCH. Kündig & CIE. AG"
754 o="COSMOIT.CO.LTD"
755 o="LandmarkTech Systems Technology Co.,Ltd."
+ 756 o="TimeMachines Inc."
757 o="GABO"
758 o="Grossenbacher Systeme AG"
759 o="AML"
@@ -20991,6 +21420,7 @@ FCFEC2 o="Invensys Controls UK Limited"
75F o="Vocality international T/A Cubic"
760 o="QUALITTEQ LLC"
761 o="Critical Link LLC"
+ 762 o="Transformational Security, LLC"
763 o="A Trap, USA"
764 o="SCHMID electronic"
765 o="LG Electronics"
@@ -21018,6 +21448,7 @@ FCFEC2 o="Invensys Controls UK Limited"
77C o="HUSTY M.Styczen J.Hupert Sp.J."
77D o="APG Cash Drawer, LLC"
77E o="Blue Marble Communications, Inc."
+ 77F o="Microchip Technology Germany II GmbH&Co.KG"
780 o="NIDEC LEROY-SOMER"
781 o="Project Service S.a.s."
782 o="thou&tech"
@@ -21031,6 +21462,7 @@ FCFEC2 o="Invensys Controls UK Limited"
78A o="Hills Health Solutions"
78B o="Jingtu Printing Systems Co., Ltd"
78C o="Survalent Technology Corporation"
+ 78D o="AVL DiTEST GmbH"
78E o="effectas GmbH"
78F o="SoFiHa"
790 o="AVI Pty Ltd"
@@ -21043,6 +21475,7 @@ FCFEC2 o="Invensys Controls UK Limited"
799 o="Vitec System Engineering Inc."
79A o="Innerspec Technologies Inc."
79B o="Soniclean Pty Ltd"
+ 79C o="ADDE"
79D o="Editech Co., Ltd"
79E o="CW2. Gmbh & Co. KG"
79F o="Green Instruments A/S"
@@ -21080,6 +21513,7 @@ FCFEC2 o="Invensys Controls UK Limited"
7C2 o="Morgan Schaffer Inc."
7C3 o="Flexim Security Oy"
7C4 o="MECT SRL"
+ 7C5 o="Projects Unlimited Inc."
7C6 o="Utrend Technology (Shanghai) Co., Ltd"
7C7 o="Sicon srl"
7C8 o="CRDE"
@@ -21092,6 +21526,8 @@ FCFEC2 o="Invensys Controls UK Limited"
7D0 o="Cubitech"
7D1 o="Schneider Electric Motion USA"
7D2 o="SDK Kristall"
+ 7D3 o="OLEDCOMM"
+ 7D4 o="Computechnic AG"
7D5 o="SICS Swedish ICT"
7D6 o="Yukilab"
7D7 o="Gedomo GmbH"
@@ -21117,6 +21553,7 @@ FCFEC2 o="Invensys Controls UK Limited"
7ED o="The Things Network Foundation"
7EE o="ADVEEZ"
7EF o="CRAVIS CO., LIMITED"
+ 7F0 o="Yokogawa Denshikiki Co.,Ltd"
7F1 o="AeroVision Avionics, Inc."
7F2 o="TCI"
7F3 o="Shenzhen Virtual Clusters Information Technology Co.,Ltd."
@@ -21126,10 +21563,12 @@ FCFEC2 o="Invensys Controls UK Limited"
7F8 o="Solvera Lynx d.d."
7F9 o="Communication Systems Solutions"
7FB o="db Broadcast Products Ltd"
+ 7FC o="Surion (Pty) Ltd"
7FD o="SYS TEC electronic GmbH"
7FE o="RCH ITALIA SPA"
7FF o="eumig industrie-TV GmbH."
800 o="HeadsafeIP PTY LTD"
+ 801 o="Glory Technology Service Inc."
802 o="Qingdao CNR HITACH Railway Signal&communication co.,ltd"
803 o="Grossenbacher Systeme AG"
804 o="PMT Corporation"
@@ -21139,6 +21578,7 @@ FCFEC2 o="Invensys Controls UK Limited"
809 o="Tecnint HTE SRL"
80A o="SENSING LABS"
80B o="Fischer Block, Inc."
+ 80C o="Algra tec AG"
80D o="Data Physics Corporation"
80F o="Quickware Eng & Des LLC"
810 o="Advice"
@@ -21163,6 +21603,8 @@ FCFEC2 o="Invensys Controls UK Limited"
826 o="Elbit Systems of America"
827 o="Metromatics Pty Ltd"
828 o="Xacti Corporation"
+ 82A o="C W F Hamilton & Co Ltd"
+ 82B o="Shangnuo company"
82C o="NELS Ltd."
82D o="Elektronik Art S.C."
82E o="PlayAlive A/S"
@@ -21187,6 +21629,7 @@ FCFEC2 o="Invensys Controls UK Limited"
843 o="OOO Research and Production Center %Computer Technologies%"
844 o="SANSFIL Technologies"
845 o="Harborside Technology"
+ 846 o="National Time & Signal Corp."
847 o="Ai-Lynx"
848 o="Aldridge Electrical Industries"
849 o="RF-Tuote Oy"
@@ -21202,6 +21645,7 @@ FCFEC2 o="Invensys Controls UK Limited"
853 o="HGH SYSTEMES INFRAROUGES"
854 o="Adimec Advanced Image Systems"
855 o="CRDE"
+ 856 o="Shanghai Westwell Information and Technology Company Ltd"
857 o="RCH ITALIA SPA"
858 o="Hubbell Power Systems"
85A o="BRUSHIES"
@@ -21214,9 +21658,12 @@ FCFEC2 o="Invensys Controls UK Limited"
861 o="KST technology"
862 o="TripleOre"
863 o="Shenzhen Wesion Technology Co., Ltd"
+ 864 o="BORMANN EDV und Zubehoer"
865 o="Insitu, Inc."
866 o="MEPS Realtime"
+ 867 o="Specialized Communications Corp."
868 o="U-JIN Mesco Co., Ltd."
+ 869 o="chargeBIG"
86A o="Stealth Communications"
86B o="AVL DiTEST"
86C o="eeas gmbh"
@@ -21225,6 +21672,7 @@ FCFEC2 o="Invensys Controls UK Limited"
86F o="LLC %NTC ACTOR%"
870 o="bentrup Industriesteuerungen"
871 o="Oso Technologies"
+ 872 o="Nippon Safety co,ltd"
873 o="Vishay Nobel AB"
874 o="NORTHBOUND NETWORKS PTY. LTD."
875 o="Peek Traffic"
@@ -21232,6 +21680,7 @@ FCFEC2 o="Invensys Controls UK Limited"
877 o="Polynet Telecommunications Consulting and Contractor Ltd."
878 o="Package Guard, Inc"
879 o="ZIGPOS GmbH"
+ 87A o="Accolade Technology Inc"
87B o="Liquid Instruments Pty Ltd"
87C o="Nautel Limited"
87D o="INVIXIUM ACCESS INC."
@@ -21242,6 +21691,7 @@ FCFEC2 o="Invensys Controls UK Limited"
882 o="SIMON TECH, S.L."
884 o="LG Electronics"
885 o="QuirkLogic"
+ 886 o="MB connect line GmbH Fernwartungssysteme"
888 o="Zetechtics Ltd"
889 o="Innovative Circuit Technology"
88A o="Perceptics, LLC"
@@ -21257,14 +21707,18 @@ FCFEC2 o="Invensys Controls UK Limited"
895 o="Integrated Control Corp."
896 o="Shanghai Longpal Communication Equipment Co., Ltd."
897 o="EFG CZ spol. s r.o."
+ 898 o="Salupo Sas"
899 o="Viotec USA"
89A o="Algodue Elettronica Srl"
89B o="ControlWorks, Inc."
89C o="IHI Rotating Machinery Engineering Co.,Ltd."
89D o="e-Matix Corporation"
89E o="Innovative Control Systems, LP"
+ 89F o="Levelup Holding, Inc."
8A0 o="DM RADIOCOM"
+ 8A1 o="TIAMA"
8A2 o="WINNERS DIGITAL CORPORATION"
+ 8A3 o="Loehnert Elektronik GmbH"
8A4 o="Phyton, Inc. Microsystems and Development Tools"
8A5 o="KST technology"
8A6 o="CRDE"
@@ -21288,6 +21742,7 @@ FCFEC2 o="Invensys Controls UK Limited"
8BA o="TIAMA"
8BB o="KST technology"
8BC o="GSI GeoSolutions International Ltd"
+ 8BD o="MAHLE ELECTRONICS, SLU"
8BE o="Connoiseur Electronics Private Limited"
8BF o="Hangzhou Leaper Technology Co. Ltd."
8C0 o="SenseNL"
@@ -21307,12 +21762,15 @@ FCFEC2 o="Invensys Controls UK Limited"
8CF o="Dainichi Denshi Co.,LTD"
8D0 o="Raft Technologies"
8D3 o="PERFORMANCE CONTROLS, INC."
+ 8D5 o="Guangzhou Wanglu"
8D7 o="Schneider Electric Motion USA"
8D8 o="VNG Corporation"
8D9 o="MB connect line GmbH Fernwartungssysteme"
8DA o="MicroElectronics System Co.Ltd"
8DB o="Kratos Analytical Ltd"
8DC o="Niveo International BV"
+ 8DD o="Vertex Co.,Ltd."
+ 8DE o="Indutherm Giesstechnologie GmbH"
8DF o="DORLET SAU"
8E0 o="SOUDAX EQUIPEMENTS"
8E1 o="WoKa-Elektronik GmbH"
@@ -21320,6 +21778,7 @@ FCFEC2 o="Invensys Controls UK Limited"
8E3 o="DORLET SAU"
8E4 o="Aplex Technology Inc."
8E6 o="Mothonic AB"
+ 8E7 o="REO AG"
8EA o="JLCooper Electronics"
8EB o="Procon Electronics Pty Ltd"
8EC o="Rudy Tellert"
@@ -21327,6 +21786,7 @@ FCFEC2 o="Invensys Controls UK Limited"
8EE o="Network Additions"
8EF o="Beeper Communications Ltd."
8F0 o="ERAESEEDS co.,ltd."
+ 8F1 o="Paramount Bed Holdings Co., Ltd."
8F2 o="Rimota Limited"
8F3 o="TATTILE SRL"
8F4 o="ACQUA-SYSTEMS srls"
@@ -21335,11 +21795,14 @@ FCFEC2 o="Invensys Controls UK Limited"
8F7 o="I.E. Sevko A.V."
8F8 o="Wi6labs"
8FA o="DEA SYSTEM SPA"
+ 8FC o="Mianjie Technology"
+ 8FE o="Selmatec AS"
8FF o="IMST GmbH"
901 o="ATS-CONVERS"
902 o="Unlimiterhear co.,ltd. taiwan branch"
903 o="Cymtec Ltd"
904 o="PHB Eletronica Ltda."
+ 905 o="Wexiodisk AB"
906 o="Aplex Technology Inc."
907 o="NINGBO CRRC TIMES TRANSDUCER TECHNOLOGY CO., LTD"
908 o="Accusonic"
@@ -21363,7 +21826,7 @@ FCFEC2 o="Invensys Controls UK Limited"
91E o="Creotech Instruments S.A."
91F o="JSC %InformInvestGroup%"
920 o="SLAT"
- 922 o="Adcole Maryland Aerospace"
+ 922 o="Adcole Space"
923 o="eumig industrie-tv GmbH"
924 o="Meridian Technologies Inc"
925 o="Diamante Lighting Srl"
@@ -21388,11 +21851,14 @@ FCFEC2 o="Invensys Controls UK Limited"
939 o="Invertek Drives Ltd"
93A o="Braemar Manufacturing, LLC"
93B o="Changchun FAW Yanfeng Visteon Automotive Electronics.,Ltd."
+ 93D o="Elmeasure India Pvt Ltd"
93E o="Systems With Intelligence Inc."
+ 93F o="Vision Sensing Co., Ltd."
940 o="Paradigm Technology Services B.V."
941 o="Triax A/S"
942 o="TruTeq Devices (Pty) Ltd"
943 o="Abbott Medical Optics Inc."
+ 944 o="Chromateq"
945 o="Symboticware Incorporated"
946 o="GREATWALL Infotech Co., Ltd."
947 o="Checkbill Co,Ltd."
@@ -21400,6 +21866,7 @@ FCFEC2 o="Invensys Controls UK Limited"
949 o="National Radio & Telecommunication Corporation - NRTC"
94A o="SHENZHEN WISEWING INTERNET TECHNOLOGY CO.,LTD"
94B o="RF Code"
+ 94C o="Honeywell/Intelligrated"
94D o="SEASON DESIGN TECHNOLOGY"
94E o="BP Lubricants USA, Inc."
94F o="MART NETWORK SOLUTIONS LTD"
@@ -21416,6 +21883,7 @@ FCFEC2 o="Invensys Controls UK Limited"
95A o="Sigmann Elektronik GmbH"
95B o="SRS Group s.r.o."
95C o="Wilson Electronics"
+ 95D o="GIORDANO CONTROLS SPA"
95E o="BLOCKSI LLC"
95F o="WiFi Nation Ltd"
960 o="HORIZON TELECOM"
@@ -21462,6 +21930,7 @@ FCFEC2 o="Invensys Controls UK Limited"
98F o="Spaceflight Industries"
990 o="Energy Wall"
991 o="Javasparrow Inc."
+ 992 o="KAEONIT"
993 o="ioThings"
994 o="KeFF Networks"
995 o="LayTec AG"
@@ -21471,6 +21940,7 @@ FCFEC2 o="Invensys Controls UK Limited"
99A o="KEVIC. inc,"
99B o="RCH ITALIA SPA"
99C o="Enerwise Solutions Ltd."
+ 99D o="Opsys-Tech"
99E o="Trinity College Dublin"
99F o="Confed Holding B.V."
9A0 o="ELDES"
@@ -21479,6 +21949,7 @@ FCFEC2 o="Invensys Controls UK Limited"
9A4 o="Nordmann International GmbH"
9A5 o="Softel"
9A7 o="Honeywell"
+ 9A8 o="Egag, LLC"
9A9 o="PABLO AIR Co., LTD"
9AA o="Tecsys do Brasil Industrial Ltda"
9AB o="Groupe Paris-Turf"
@@ -21502,6 +21973,7 @@ FCFEC2 o="Invensys Controls UK Limited"
9BF o="Xiris Automation Inc."
9C0 o="Schneider Displaytechnik GmbH"
9C1 o="Zeroplus Technology Co.,Ltd."
+ 9C2 o="Sportsbeams Lighting, Inc."
9C3 o="Sevensense Robotics AG"
9C4 o="aelettronica group srl"
9C5 o="LINEAGE POWER PVT LTD.,"
@@ -21512,6 +21984,7 @@ FCFEC2 o="Invensys Controls UK Limited"
9CA o="KOMSIS ELEKTRONIK SISTEMLERI SAN. TIC. LTD.STI"
9CB o="Alligator Communications"
9CC o="Zaxcom Inc"
+ 9CD o="WEPTECH elektronik GmbH"
9CE o="Terragene S.A"
9CF o="IOTIZE"
9D0 o="RJ45 Technologies"
@@ -21533,9 +22006,12 @@ FCFEC2 o="Invensys Controls UK Limited"
9E1 o="Bolide Technology Group, Inc."
9E2 o="Ofil USA"
9E3 o="LG Electronics"
+ 9E4 o="K&A Electronics Inc."
+ 9E5 o="Antek Technology"
9E6 o="BLOCKSI LLC"
9E7 o="Xiamen Maxincom Technologies Co., Ltd."
9E8 o="Zerospace ICT Services B.V."
+ 9E9 o="LiveCopper Inc."
9EA o="Blue Storm Associates, Inc."
9EB o="Preston Industries dba PolyScience"
9EC o="eSoftThings"
@@ -21557,11 +22033,13 @@ FCFEC2 o="Invensys Controls UK Limited"
9FE o="SURUGA SEIKI CO., LTD."
A00 o="ATX NETWORKS LTD"
A01 o="FeldTech GmbH"
+ A03 o="Proemion GmbH"
A04 o="Galea Electric S.L."
A05 o="Wartsila Voyage Limited"
A06 o="Kopis Mobile LLC"
A07 o="IoTrek Technology Private Limited"
A08 o="BioBusiness"
+ A09 o="Smart Embedded Systems"
A0A o="CAPSYS"
A0B o="ambiHome GmbH"
A0D o="Globalcom Engineering SPA"
@@ -21574,6 +22052,7 @@ FCFEC2 o="Invensys Controls UK Limited"
A17 o="Tunstall A/S"
A18 o="Embedded Systems Lukasz Panasiuk"
A19 o="Qualitronix Madrass Pvt Ltd"
+ A1A o="Nueon - The COR"
A1B o="Potter Electric Signal Co. LLC"
A1C o="MECA SYSTEM"
A1D o="Fluid Components International"
@@ -21581,6 +22060,7 @@ FCFEC2 o="Invensys Controls UK Limited"
A20 o="Design For Life Systems"
A21 o="PPI Inc."
A22 o="eSys Solutions Sweden AB"
+ A23 o="LG Electronics"
A24 o="Booz Allen Hamilton"
A25 o="PulseTor LLC"
A26 o="Hear Gear, Inc."
@@ -21606,6 +22086,7 @@ FCFEC2 o="Invensys Controls UK Limited"
A3B o="Grace Design/Lunatec LLC"
A3C o="Wave Music Ltd"
A3D o="SMART IN OVATION GmbH"
+ A3E o="Vigorcloud Co., Ltd."
A3F o="PHPower Srl"
A40 o="STRACK LIFT AUTOMATION GmbH"
A41 o="THELIGHT Luminary for Cine and TV S.L."
@@ -21657,8 +22138,9 @@ FCFEC2 o="Invensys Controls UK Limited"
A72 o="Business Marketers Group, Inc."
A73 o="MobiPromo"
A74 o="Sadel S.p.A."
- A75 o="Taejin InforTech"
+ A75 o="Taejin InfoTech"
A76 o="Pietro Fiorentini"
+ A77 o="SPX Radiodetection"
A78 o="Bionics co.,ltd."
A7A o="Fluid Management Technology"
A7B o="SmartSafe"
@@ -21678,6 +22160,7 @@ FCFEC2 o="Invensys Controls UK Limited"
A89 o="GBS COMMUNICATIONS, LLC"
A8A o="JSC VIST Group"
A8B o="Giant Power Technology Biomedical Corporation"
+ A8C o="CYG CONTRON CO.LTD"
A8D o="Code Blue Corporation"
A8E o="OMESH CITY GROUP"
A90 o="ERA a.s."
@@ -21706,6 +22189,7 @@ FCFEC2 o="Invensys Controls UK Limited"
AA8 o="West-Com Nurse Call Systems, Inc."
AA9 o="Datamars SA"
AAA o="Xemex NV"
+ AAB o="QUISS GmbH"
AAC o="SensoTec GmbH"
AAD o="Bartec GmbH"
AAE o="Nuviz Oy"
@@ -21741,9 +22225,12 @@ FCFEC2 o="Invensys Controls UK Limited"
ACF o="APG Cash Drawer, LLC"
AD1 o="Sensile Technologies SA"
AD2 o="Wart-Elektronik"
+ AD3 o="WARECUBE,INC"
+ AD4 o="INVISSYS"
AD5 o="Birdland Audio"
AD6 o="Lemonade Lab Inc"
AD8 o="Euklis by GSG International"
+ AD9 o="aelettronica group srl"
ADB o="RF Code"
ADC o="SODAQ"
ADD o="GHL Systems Berhad"
@@ -21753,9 +22240,11 @@ FCFEC2 o="Invensys Controls UK Limited"
AE1 o="DimoCore Corporation"
AE2 o="Wartsila Voyage Limited"
AE3 o="Zhejiang Wellsun Electric Meter Co.,Ltd"
+ AE4 o="Nuance Hearing Ltd."
AE5 o="BeatCraft, Inc."
AE6 o="Ya Batho Trading (Pty) Ltd"
AE7 o="E-T-A Elektrotechnische Apparate GmbH"
+ AE8 o="Innoknight"
AE9 o="Cari Electronic"
AEA o="BBR Verkehrstechnik GmbH"
AEB o="Association Romandix"
@@ -21779,6 +22268,7 @@ FCFEC2 o="Invensys Controls UK Limited"
AFF o="digital-spice"
B00 o="HORIBA ABX SAS"
B02 o="Nordic Automation Systems AS"
+ B03 o="Sprintshield d.o.o."
B04 o="Herrmann Datensysteme GmbH"
B05 o="E-PLUS TECHNOLOGY CO., LTD"
B06 o="MULTIVOICE LLC"
@@ -21787,10 +22277,10 @@ FCFEC2 o="Invensys Controls UK Limited"
B09 o="FIRST LIGHT IMAGING"
B0B o="INTERNET PROTOCOLO LOGICA SL"
B0C o="Vigilate srl"
+ B0E o="Servotronix Motion Control"
B0F o="merkur Funksysteme AG"
B10 o="Zumbach Electronic AG"
B11 o="CAB S.R.L."
- B12 o="SFR"
B13 o="Omwave"
B15 o="Eta Beta Srl"
B16 o="XI'AN SHENMING ELECTRON TECHNOLOGY CO.,LTD"
@@ -21804,6 +22294,7 @@ FCFEC2 o="Invensys Controls UK Limited"
B1F o="TECNOWATT"
B20 o="ICT BUSINESS GROUP of Humanrights Center for disabled people"
B21 o="TATTILE SRL"
+ B22 o="YUYAMA MFG Co.,Ltd"
B23 o="Supervision Test et Pilotage"
B24 o="Datasat Digital Entertainment"
B25 o="Hifocus Electronics India Private Limited"
@@ -21845,8 +22336,10 @@ FCFEC2 o="Invensys Controls UK Limited"
B51 o="Critical Link LLC"
B52 o="AEye, Inc."
B53 o="Revolution Retail Systems, LLC"
+ B54 o="Packet Power"
B55 o="CTAG - ESG36871424"
B56 o="Power Electronics Espana, S.L."
+ B57 o="Shanghai Qinyue Communication Technology Co., Ltd."
B58 o="INTERNET PROTOCOLO LOGICA SL"
B59 o="FutureTechnologyLaboratories INC."
B5A o="GTI Technologies Inc"
@@ -21857,15 +22350,18 @@ FCFEC2 o="Invensys Controls UK Limited"
B5F o="CRDMDEVEOPPEMENTS"
B60 o="ZAO ZEO"
B62 o="Sakura Seiki Co.,Ltd."
+ B63 o="Ideas srl"
B64 o="OSUNG LST CO.,LTD."
B65 o="Rotem Industry LTD"
B66 o="Silent Gliss International Ltd"
B67 o="RedWave Labs Ltd"
+ B68 o="S-Rain Control A/S"
B6A o="YUYAMA MFG Co.,Ltd"
B6B o="Cambria Corporation"
B6C o="GHM-Messtechnik GmbH (Standort IMTRON)"
B6D o="Movis"
B6E o="Edgeware AB"
+ B6F o="Integra Metering SAS"
B72 o="UB330.net d.o.o."
B73 o="Cetto Industries"
B74 o="OnYield Inc Ltd"
@@ -21874,6 +22370,7 @@ FCFEC2 o="Invensys Controls UK Limited"
B77 o="Motec Pty Ltd"
B78 o="HOERMANN GmbH"
B7A o="MAHLE"
+ B7B o="Doosan Digital Innovation America"
B7C o="Electronic Navigation Ltd"
B7D o="LOGIX ITS Inc"
B7E o="Elbit Systems of America"
@@ -21883,6 +22380,7 @@ FCFEC2 o="Invensys Controls UK Limited"
B82 o="Lookout Portable Security"
B84 o="OOO Research and Production Center %Computer Technologies%"
B85 o="Fenotech Inc."
+ B86 o="Hilo"
B87 o="CAITRON GmbH"
B88 o="ARP Corporation"
B89 o="IDA"
@@ -21892,9 +22390,11 @@ FCFEC2 o="Invensys Controls UK Limited"
B8D o="JungwooEng Co., Ltd"
B8E o="UR FOG S.R.L."
B8F o="Assembly Contracts Ltd"
+ B90 o="Amico Corporation"
B91 o="Dynetics, Inc."
B93 o="INTERNET PROTOCOLO LOGICA SL"
B94 o="Cygnetic Technologies (Pty) Ltd"
+ B96 o="Oculii"
B97 o="Canam Technology, Inc."
B98 o="GSF Corporation Pte Ltd"
B99 o="DomoSafety S.A."
@@ -21941,6 +22441,7 @@ FCFEC2 o="Invensys Controls UK Limited"
BC4 o="Digital Media Professionals"
BC5 o="U&R GmbH Hardware- und Systemdesign"
BC6 o="Hatteland Display AS"
+ BC7 o="Autonomic Controls, Inc."
BC9 o="Yite technology"
BCA o="Deymed Diagnostic"
BCB o="Smart Vision Lights"
@@ -21959,9 +22460,11 @@ FCFEC2 o="Invensys Controls UK Limited"
BD9 o="SolwayTech"
BDA o="5-D Systems, Inc."
BDD o="CDR SRL"
+ BDE o="CAST Group of Companies Inc."
BDF o="H2O-YUG LLC"
BE0 o="Cognosos, Inc."
BE1 o="FeCon GmbH"
+ BE2 o="Nocix, LLC"
BE3 o="Saratov Electrounit Production Plant named after Sergo Ordzhonikidze, OJSC"
BE4 o="Kunshan excellent Intelligent Technology Co., Ltd."
BE5 o="Pantec Engineering AG"
@@ -21989,6 +22492,7 @@ FCFEC2 o="Invensys Controls UK Limited"
BFF o="Sunsa, Inc"
C00 o="BESO sp. z o.o."
C01 o="SmartGuard LLC"
+ C02 o="Garmo Instruments S.L."
C03 o="XAVi Technologies Corp."
C04 o="Prolan Zrt."
C05 o="KST technology"
@@ -21999,6 +22503,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C0A o="Infosocket Co., Ltd."
C0B o="FSTUDIO CO LTD"
C0C o="Tech4Race"
+ C0D o="Clarity Medical Pvt Ltd"
C0E o="SYSDEV Srl"
C0F o="Honeywell Safety Products USA, Inc"
C10 o="Scanvaegt Systems A/S"
@@ -22008,14 +22513,17 @@ FCFEC2 o="Invensys Controls UK Limited"
C15 o="Sensobox GmbH"
C16 o="Southern Innovation"
C17 o="Potter Electric Signal Co. LLC"
+ C18 o="Sanmina Israel"
C1A o="Xylon"
C1B o="Labinvent JSC"
C1C o="D.E.M. SPA"
C1D o="Kranze Technology Solutions"
+ C1E o="Kron Medidores"
C1F o="Behr Technologies Inc"
C20 o="Mipot S.p.a."
C21 o="Aplex Technology Inc."
C22 o="Skyriver Communications Inc."
+ C23 o="Sumitomo Heavy Industries, Ltd."
C24 o="Elbit Systems of America"
C25 o="speedsignal GmbH"
C26 o="Triple Play Communications"
@@ -22032,6 +22540,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C33 o="Dandong Dongfang Measurement & Control Technology Co., Ltd."
C34 o="Technical Panels Co. Ltd."
C35 o="Vibrationmaster"
+ C36 o="Knowledge Resources GmbH"
C37 o="Keycom Corp."
C38 o="CRESPRIT INC."
C39 o="MeshWorks Wireless Oy"
@@ -22047,6 +22556,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C43 o="Future Skies"
C44 o="Franz Kessler GmbH"
C45 o="Stiebel Eltron GmbH"
+ C48 o="Weltek Technologies Co. Ltd."
C49 o="BTG Instruments AB"
C4A o="TIAMA"
C4B o="ANKER-EAST"
@@ -22067,6 +22577,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C5B o="ACD Elektronik GmbH"
C5C o="Layer Logic Inc"
C5D o="FOSHAN SHILANTIAN NETWORK S.T. CO., LTD."
+ C5E o="Frog Cellsat Limited"
C5F o="Clean-Lasersysteme GmbH"
C60 o="Gogo BA"
C61 o="JC HUNTER TECHNOLOGIES"
@@ -22083,14 +22594,17 @@ FCFEC2 o="Invensys Controls UK Limited"
C6E o="Orion Technologies, LLC"
C6F o="nyantec GmbH"
C70 o="Magnetek"
+ C72 o="Scharco Elektronik GmbH"
C73 o="C.D.N.CORPORATION"
C74 o="Qtechnology A/S"
+ C75 o="BIT Group USA, Inc."
C76 o="ELA INNOVATION"
C77 o="Yönnet Akıllı Bina ve Otomasyon Sistemleri"
C78 o="NETA Elektronik AS"
C79 o="MB connect line GmbH Fernwartungssysteme"
C7A o="ENTEC Electric & Electronic Co., LTD."
C7B o="EM Clarity Pty Ltd"
+ C7C o="Beijing Aumiwalker technology CO.,LTD"
C7D o="Metatronics B.V."
C7E o="BirdDog Australia"
C7F o="TATTILE SRL"
@@ -22110,6 +22624,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C8D o="KST technology"
C8E o="Coral Telecom Limited"
C8F o="TRIDENT INFOSOL PVT LTD"
+ C90 o="Diretta"
C91 o="Grossenbacher Systeme AG"
C92 o="Unitro Fleischmann"
C93 o="GMI Ltd"
@@ -22118,6 +22633,7 @@ FCFEC2 o="Invensys Controls UK Limited"
C96 o="UNI DIMENXI SDN BHD"
C97 o="CSINFOTEL"
C98 o="Trust Automation"
+ C99 o="Remote Diagnostic Technologies Ltd"
C9A o="Todd Digital Limited"
C9B o="Tieto Sweden AB"
C9C o="Connected Response"
@@ -22147,6 +22663,7 @@ FCFEC2 o="Invensys Controls UK Limited"
CB8 o="Verti Tecnologia"
CB9 o="JSC «SATIS-TL-94»"
CBA o="YUYAMA MFG Co.,Ltd"
+ CBB o="Postmark Incorporated"
CBC o="Procon Electronics Pty Ltd"
CBD o="Preo Industries Far East Limited"
CBE o="Ensura Solutions BV"
@@ -22206,17 +22723,22 @@ FCFEC2 o="Invensys Controls UK Limited"
D01 o="Vision4ce Ltd"
D02 o="Arctos Showlasertechnik GmbH"
D05 o="Colmek"
+ D06 o="YUYAMA MFG Co.,Ltd"
D07 o="Waversa Systems"
D08 o="Veeco Instruments"
D09 o="Rishaad Brown"
D0C o="Connor Winfield LTD"
D0D o="Logiwaste AB"
D0E o="Beijing Aumiwalker technology CO.,LTD"
+ D0F o="Alto Aviation"
D10 o="Contec Americas Inc."
D11 o="EREE Electronique"
D12 o="FIDELTRONIK POLAND SP. Z O.O."
+ D14 o="LIGPT"
D15 o="3DGence sp. z o.o."
D16 o="Monnit Corporation"
+ D18 o="MetCom Solutions GmbH"
+ D19 o="Senior Group LLC"
D1A o="Monnit Corporation"
D1B o="Grupo Epelsa S.L."
D1C o="Specialised Imaging Limited"
@@ -22241,6 +22763,7 @@ FCFEC2 o="Invensys Controls UK Limited"
D32 o="Euklis by GSG International"
D33 o="VECTOR.CO.,LTD."
D34 o="G-PHILOS CO.,LTD"
+ D35 o="King-On Technology Ltd."
D36 o="Insitu Inc."
D37 o="Sicon srl"
D38 o="Vista Research, Inc."
@@ -22267,6 +22790,7 @@ FCFEC2 o="Invensys Controls UK Limited"
D4F o="C-COM Satellite Systems Inc."
D50 o="GRIDSMART Technologies"
D51 o="Azcom Technology S.r.l."
+ D53 o="BeiLi eTek (Zhangjiagang) Co., Ltd."
D54 o="JL World Corporation Limited"
D55 o="WM Design s.r.o"
D56 o="KRONOTECH SRL"
@@ -22285,6 +22809,7 @@ FCFEC2 o="Invensys Controls UK Limited"
D65 o="CRDE"
D66 o="Ascendent Technology Group"
D67 o="ALPHA Corporation"
+ D68 o="Tobi Tribe Inc"
D69 o="Thermo Fisher Scientific"
D6A o="KnowRoaming"
D6B o="Uwinloc"
@@ -22298,10 +22823,12 @@ FCFEC2 o="Invensys Controls UK Limited"
D74 o="Sandia National Laboratories"
D75 o="Hyundai MNSOFT"
D76 o="attocube systems AG"
+ D77 o="Portrait Displays, Inc."
D79 o="GOMA ELETTRONICA SpA"
D7A o="Speedifi Inc"
D7B o="Peter Huber Kaeltemaschinenbau AG"
D7C o="D.T.S Illuminazione Srl"
+ D7D o="BESO sp. z o.o."
D7E o="Triax A/S"
D7F o="ConectaIP Tecnologia S.L."
D80 o="AMMT GmbH"
@@ -22309,6 +22836,7 @@ FCFEC2 o="Invensys Controls UK Limited"
D84 o="Sentry360"
D86 o="WPGSYS Pte Ltd"
D87 o="Zigen Corp"
+ D88 o="Nidec asi spa"
D89 o="Resolution Systems"
D8A o="JIANGSU HORAINTEL CO.,LTD"
D8B o="Lenoxi Automation s.r.o."
@@ -22322,19 +22850,23 @@ FCFEC2 o="Invensys Controls UK Limited"
D93 o="PAMIR Inc"
D94 o="Dewetron GmbH"
D95 o="SANO SERVICE Co.,Ltd"
- D97 o="BRS Sistemas Eletronicos"
+ D96 o="Thermo Fisher Scientific Inc."
+ D97 o="BRS Sistemas Eletrônicos"
D98 o="ACD Elekronik GmbH"
+ D99 o="Nilar AB"
D9A o="Wuhan Xingtuxinke ELectronic Co.,Ltd"
D9B o="Russian Telecom Equipment Company"
D9C o="Subinitial LLC"
D9D o="Electroimpact, Inc."
D9E o="Grupo Epelsa S.L."
+ D9F o="%Digital Solutions% JSC"
DA1 o="Qprel srl"
DA2 o="ACD Elekronik GmbH"
DA3 o="Voleatech GmbH"
DA4 o="CRDE"
DA5 o="Roboteq"
DA6 o="Redfish Group Pty Ltd"
+ DA7 o="Network Innovations"
DA8 o="Tagarno AS"
DA9 o="RCH Vietnam Limited Liability Company"
DAA o="AmTote Australasia"
@@ -22346,11 +22878,14 @@ FCFEC2 o="Invensys Controls UK Limited"
DB0 o="Arnouse Digital Devices Corp"
DB1 o="Biovigil Hygiene Technologies"
DB2 o="Micro Electroninc Products"
+ DB3 o="Klaxoon"
DB4 o="YUYAMA MFG Co.,Ltd"
DB5 o="Xiamen Point Circle Technologh Co,ltd"
DB6 o="csintech"
DB7 o="Pengo Technology Co., Ltd"
DB8 o="SISTEM SA"
+ DBA o="KODENSHI CORP."
+ DBB o="Fuhr GmbH Filtertechnik"
DBC o="Gamber Johnson-LLC"
DBD o="TRANSLITE GLOBAL LLC"
DBE o="Hiber"
@@ -22359,8 +22894,10 @@ FCFEC2 o="Invensys Controls UK Limited"
DC1 o="Metralight, Inc."
DC2 o="SwineTech, Inc."
DC3 o="Fath Mechatronics"
+ DC4 o="Peter Huber Kaeltemaschinenbau AG"
DC5 o="Excel Medical Electronics LLC"
DC6 o="IDEM INC."
+ DC7 o="NUBURU Inc."
DC8 o="Enertex Bayern GmbH"
DC9 o="Sensoterra BV"
DCA o="DSan Corporation"
@@ -22380,8 +22917,10 @@ FCFEC2 o="Invensys Controls UK Limited"
DDB o="Intra Corporation"
DDC o="Syscom Instruments SA"
DDD o="BIO RAD LABORATORIES"
+ DDE o="Abbott Diagnostics Technologies AS"
DDF o="AeroVision Avionics, Inc."
DE0 o="eCozy GmbH"
+ DE1 o="Duplomatic MS spa"
DE2 o="ACD Elekronik GmbH"
DE3 o="ETL Elektrotechnik Lauter GmbH"
DE4 o="MAVILI ELEKTRONIK TIC. VE SAN. A.S."
@@ -22410,6 +22949,7 @@ FCFEC2 o="Invensys Controls UK Limited"
DFE o="microtec Sicherheitstechnik GmbH"
DFF o="Spanawave Corporation"
E00 o="Jeaway CCTV Security Ltd,."
+ E01 o="EarTex"
E02 o="YEHL & JORDAN LLC"
E04 o="Combilent"
E06 o="System West dba ICS Electronics"
@@ -22422,6 +22962,7 @@ FCFEC2 o="Invensys Controls UK Limited"
E0D o="Sigma Connectivity AB"
E0F o="Vtron Pty Ltd"
E10 o="Leidos"
+ E11 o="Engage Technologies"
E12 o="SNK, Inc."
E14 o="Automata Spa"
E15 o="Benetel"
@@ -22430,12 +22971,14 @@ FCFEC2 o="Invensys Controls UK Limited"
E18 o="Plasmapp Co.,Ltd."
E1A o="BIZERBA LUCEO"
E1B o="Neuron GmbH"
- E1C o="Xcenter AS"
+ E1C o="RoomMate AS"
E1E o="Umano Medical Inc."
E1F o="THETA432"
E20 o="Signature Control Systems, LLC."
E21 o="LLVISION TECHNOLOGY CO.,LTD"
+ E22 o="Federated Wireless, Inc."
E23 o="Smith Meter, Inc."
+ E24 o="Gogo Business Aviation"
E25 o="GJD Manufacturing"
E26 o="FEITIAN CO.,LTD."
E27 o="Woodside Electronics"
@@ -22445,12 +22988,15 @@ FCFEC2 o="Invensys Controls UK Limited"
E2B o="Guan Show Technologe Co., Ltd."
E2C o="Fourth Frontier Technologies Private Limited"
E2E o="Merz s.r.o."
+ E2F o="Flextronics International Kft."
E30 o="QUISS AG"
+ E31 o="NEUROPHET, Inc."
E32 o="HERUTU ELECTRONICS CORPORATION"
E33 o="DEUTA-WERKE GmbH"
E34 o="Gamber Johnson-LLC"
E35 o="Nanospeed Technologies Limited"
E36 o="Guidance Navigation Limited"
+ E37 o="Eurotempest AB"
E38 o="Cursor Systems NV"
E39 o="Thinnect, Inc,"
E3A o="Cyanview"
@@ -22462,6 +23008,7 @@ FCFEC2 o="Invensys Controls UK Limited"
E40 o="Siemens Mobility GmbH - MO TI SPA"
E43 o="SL Audio A/S"
E45 o="Momentum Data Systems"
+ E46 o="7thSense Design Limited"
E47 o="DEUTA-WERKE GmbH"
E48 o="TDI. Co., LTD"
E49 o="Kendrion Mechatronics Center GmbH"
@@ -22472,6 +23019,7 @@ FCFEC2 o="Invensys Controls UK Limited"
E4E o="Midfin Systems"
E4F o="RWS Automation GmbH"
E50 o="Advanced Vision Technology Ltd"
+ E51 o="NooliTIC"
E52 o="Guangzhou Moblin Technology Co., Ltd."
E53 o="MI INC."
E54 o="Beijing PanGu Company"
@@ -22480,12 +23028,14 @@ FCFEC2 o="Invensys Controls UK Limited"
E57 o="Iradimed"
E58 o="Thurlby Thandar Instruments LTD"
E59 o="Fracarro srl"
+ E5A o="Cardinal Scales Manufacturing Co"
E5B o="Argosy Labs Inc."
E5C o="Walton Hi-Tech Industries Ltd."
E5D o="Boffins Technologies AB"
E5E o="Critical Link LLC"
E61 o="Adeli"
E63 o="Potomac Electric Corporation"
+ E64 o="HONG JIANG ELECTRONICS CO., LTD."
E67 o="APPLIED PROCESSING"
E69 o="Fire4 Systems UK Ltd"
E6A o="MAC Solutions (UK) Ltd"
@@ -22496,6 +23046,7 @@ FCFEC2 o="Invensys Controls UK Limited"
E70 o="DISK Multimedia s.r.o."
E71 o="SiS Technology"
E72 o="KDT Corp."
+ E73 o="Zeus Control Systems Ltd"
E74 o="Exfrontier Co., Ltd."
E75 o="Nke"
E76 o="Dorsett Technologies, Inc."
@@ -22507,9 +23058,11 @@ FCFEC2 o="Invensys Controls UK Limited"
E7C o="Aplex Technology Inc."
E7D o="Nanjing Dandick Science&technology development co., LTD"
E7E o="Groupe Citypassenger Inc"
+ E7F o="Sankyo Intec Co,ltd"
E80 o="Changzhou Rapid Information Technology Co,Ltd"
E81 o="SLAT"
E82 o="RF Track"
+ E83 o="Talleres de Escoriaza SA"
E84 o="ENTEC Electric & Electronic Co., LTD."
E85 o="Explorer Inc."
E86 o="YUYAMA MFG Co.,Ltd"
@@ -22541,6 +23094,7 @@ FCFEC2 o="Invensys Controls UK Limited"
EA2 o="Transportal Solutions Ltd"
EA3 o="Gridless Power Corperation"
EA4 o="Grupo Epelsa S.L."
+ EA5 o="LOTES TM OOO"
EA6 o="Galios"
EA7 o="S.I.C.E.S. srl"
EA8 o="Dia-Stron Limited"
@@ -22549,12 +23103,14 @@ FCFEC2 o="Invensys Controls UK Limited"
EAC o="Kentech Instruments Limited"
EAD o="Cobo, Inc."
EAE o="Orlaco Products B.V."
+ EAF o="Sicon srl"
EB0 o="Nautel Limted"
EB1 o="CP contech electronic GmbH"
EB2 o="Shooter Detection Systems"
EB3 o="KWS-Electronic GmbH"
EB4 o="Robotic Research, LLC"
EB5 o="JUSTEK INC"
+ EB6 o="EnergizeEV"
EB7 o="Skreens"
EB8 o="Emporia Renewable Energy Corp"
EB9 o="Thiel Audio Products Company, LLC"
@@ -22579,9 +23135,12 @@ FCFEC2 o="Invensys Controls UK Limited"
ECF o="Ipitek"
ED0 o="shanghai qiaoqi zhinengkeji"
ED1 o="Przemyslowy Instytut Automatyki i Pomiarow"
+ ED2 o="PCTEL"
+ ED3 o="Beijing Lihong Create Co., Ltd."
ED5 o="hangzhou battle link technology Co.,Ltd"
ED7 o="WAVE"
ED8 o="Wartsila Voyage Limited"
+ EDA o="Breas Medical AB"
EDB o="Netfort Solutions"
EDC o="J.D. Koftinoff Software, Ltd."
EDD o="Solar Network & Partners"
@@ -22592,6 +23151,7 @@ FCFEC2 o="Invensys Controls UK Limited"
EE3 o="Lithe Technology, LLC"
EE4 o="O-Net Automation Technology (Shenzhen)Limited"
EE5 o="Beijing Hzhytech Technology Co.Ltd"
+ EE6 o="Vaunix Technology Corporation"
EE7 o="BLUE-SOLUTIONS CANADA INC."
EE8 o="robert juliat"
EE9 o="SC3 Automation"
@@ -22618,22 +23178,26 @@ FCFEC2 o="Invensys Controls UK Limited"
EFF o="Carlo Gavazzi Industri"
F00 o="Aplex Technology Inc."
F01 o="Software Systems Plus"
+ F02 o="ABECO Industrie Computer GmbH"
F03 o="GMI Ltd"
F04 o="Scame Sistemi srl"
F05 o="Motomuto Aps"
F06 o="WARECUBE,INC"
F07 o="DUVAL MESSIEN"
F08 o="Szabo Software & Engineering UK Ltd"
+ F09 o="Mictrotrac Retsch GmbH"
F0A o="Neuronal Innovation Control S.L."
F0B o="RF Industries"
F0C o="ModulaTeam GmbH"
F0D o="MeQ Inc."
+ F0E o="TextSpeak Corporation"
F0F o="Kyoto Denkiki"
F10 o="Riegl Laser Measurement Systems GmbH"
F11 o="BroadSoft Inc"
F12 o="Incoil Induktion AB"
F13 o="MEDIAM Sp. z o.o."
F14 o="SANYU SWITCH CO., LTD."
+ F15 o="ARECA EMBEDDED SYSTEMS PVT LTD"
F16 o="BRS Sistemas Eletrônicos"
F17 o="VITEC"
F18 o="HD Vision Systems GmbH"
@@ -22649,6 +23213,7 @@ FCFEC2 o="Invensys Controls UK Limited"
F24 o="Daavlin"
F25 o="JSC “Scientific Industrial Enterprise %Rubin%"
F27 o="NIRIT- Xinwei Telecom Technology Co., Ltd."
+ F28 o="Yi An Electronics Co., Ltd"
F29 o="SamabaNova Systems"
F2A o="WIBOND Informationssysteme GmbH"
F2B o="SENSYS GmbH"
@@ -22657,6 +23222,8 @@ FCFEC2 o="Invensys Controls UK Limited"
F2E o="Shanghai JCY Technology Company"
F2F o="TELEPLATFORMS"
F30 o="ADE Technology Inc."
+ F32 o="Elektronik Art"
+ F33 o="Beijing Vizum Technology Co.,Ltd."
F34 o="MacGray Services"
F35 o="carbonTRACK"
F36 o="dinosys"
@@ -22666,17 +23233,22 @@ FCFEC2 o="Invensys Controls UK Limited"
F3A o="OOO Research and Production Center %Computer Technologies%"
F3B o="Epdm Pty Ltd"
F3C o="Gigaray"
+ F3D o="KAYA Instruments"
F3E o="ООО %РОНЕКС%"
F3F o="comtac AG"
+ F41 o="DUEVI SRL"
F42 o="Matsuhisa Corporation"
F43 o="Divelbiss Corporation"
F44 o="Magneti Marelli S.p.A. Electronics"
F45 o="Norbit ODM AS"
+ F46 o="Season Electronics Ltd"
F47 o="TXMission Ltd."
F48 o="HEITEC AG"
+ F4A o="LACS SRL"
F4B o="Chengdu Lingya Technology Co., Ltd."
F4C o="PolyTech A/S"
F4D o="Honeywell"
+ F4E o="Hunan Lianzhong Technology Co.,Ltd."
F4F o="Power Electronics Espana, S.L."
F50 o="Vectology,Inc"
F51 o="IoT Routers Limited"
@@ -22687,20 +23259,25 @@ FCFEC2 o="Invensys Controls UK Limited"
F56 o="VirtualHere Pty. Ltd."
F57 o="Aplex Technology Inc."
F58 o="CDR SRL"
+ F59 o="KOREA SPECTRAL PRODUCTS"
F5A o="HAMEG GmbH"
F5B o="A.F.MENSAH, INC"
F5C o="Nable Communications, Inc."
F5D o="Potter Electric Signal Co. LLC"
F5E o="Selex ES Inc."
F5F o="RFRain LLC"
+ F60 o="MPM Micro Präzision Marx GmbH"
F61 o="Power Diagnostic Service"
F62 o="FRS GmbH & Co. KG"
F63 o="Ars Products"
F64 o="silicom"
F65 o="MARKUS LABS"
+ F66 o="Seznam.cz, a.s., CZ26168685"
F67 o="winsun AG"
F68 o="AL ZAJEL MODERN TELECOMM"
F69 o="Copper Labs, Inc."
+ F6A o="Guan Show Technologe Co., Ltd."
+ F6B o="DEUTA-WERKE GmbH"
F6C o="VisioGreen"
F6D o="Qowisio"
F6E o="Streambox Inc"
@@ -22716,7 +23293,9 @@ FCFEC2 o="Invensys Controls UK Limited"
F79 o="Firehose Labs, Inc."
F7A o="SENSO2ME"
F7B o="KST technology"
+ F7D o="2M Technology"
F7E o="Alpha Elettronica s.r.l."
+ F7F o="ABL Space Systems"
F80 o="Guan Show Technologe Co., Ltd."
F81 o="Littlemore Scientific"
F82 o="Preston Industries dba PolyScience"
@@ -22780,8 +23359,11 @@ FCFEC2 o="Invensys Controls UK Limited"
FC0 o="CODESYSTEM Co.,Ltd"
FC1 o="InDiCor"
FC2 o="HUNTER LIBERTY CORPORATION"
+ FC3 o="myUpTech AB"
+ FC4 o="AERIAL CAMERA SYSTEMS Ltd"
FC5 o="Eltwin A/S"
FC6 o="Tecnint HTE SRL"
+ FC7 o="Invert Robotics Ltd."
FC8 o="Moduware PTY LTD"
FC9 o="Shanghai EICT Global Service Co., Ltd"
FCA o="M2M Cybernetics Pvt Ltd"
@@ -22799,6 +23381,7 @@ FCFEC2 o="Invensys Controls UK Limited"
FD6 o="Visual Fan"
FD7 o="Centum Adetel Group"
FD8 o="MB connect line GmbH Fernwartungssysteme"
+ FD9 o="eSight"
FDA o="ACD Elektronik GmbH"
FDB o="Design SHIFT"
FDC o="Tapdn"
@@ -22808,6 +23391,7 @@ FCFEC2 o="Invensys Controls UK Limited"
FE2 o="Galileo Tıp Teknolojileri San. ve Tic. A.S."
FE3 o="CSM MACHINERY srl"
FE4 o="CARE PVT LTD"
+ FE5 o="Malin Space Science System"
FE6 o="SHIZUKI ELECTRIC CO.,INC"
FE7 o="VEILUX INC."
FE8 o="PCME Ltd."
@@ -23361,6 +23945,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="Shanxi Baixin Information Technology Co., Ltd."
D o="Hanzhuo Information Technology(Shanghai) Ltd."
E o="SynchronicIT BV"
+94FBA7
+ 0 o="Reichert Inc."
+ 1 o="Inaxsys Security Systems inc."
+ 2 o="Beijing Leja Tech co., Ltd."
+ 3 o="GUANG DONG TAKSTAR ELECTRONIC CO.,LTD."
+ 4 o="UOI TECHNOLOGY CORPORATION"
+ 5 o="CAVITY EYE"
+ 6 o="Sercomm Corporation."
+ 7 o="Anvil Systems Group, Inc."
+ 8 o="Silver-I Co.,LTD."
+ 9 o="Shanghai Hyco Genyong Technology Co., Ltd."
+ A o="ELKRON"
+ B o="Shenzhen Golden Star Technology Ltd"
+ C o="Solaborate Inc."
+ D o="Rosenberger Technologies Co.,Ltd."
+ E o="Skyring Smart Technologies(Shenzhen) Co., Ltd."
9802D8
0 o="Stoerk-Tronic, Stoerk GmbH & Co.KG"
1 o="SHENZHEN ATEKO PHOTOELECTRICITY CO LTD"
@@ -23439,6 +24039,22 @@ FCFEC2 o="Invensys Controls UK Limited"
C o="ShenZhen Chuangwei Electronic Appliance Co.,Ltd"
D o="hangzhou soar security technologies limited liability company"
E o="NC-LINK Technology Co., Ltd."
+98FC84
+ 0 o="Leia, Inc"
+ 1 o="go-e GmbH"
+ 2 o="Juketek Co., Ltd."
+ 3 o="Shanghai ZeXin Information Technologies Co. Ltd."
+ 4 o="Sferrum GmbH"
+ 5 o="Zymbit"
+ 6 o="ZERONE CO., LTD."
+ 7 o="Broadtech Technologies Co., Ltd."
+ 8 o="Guangdong DE at science and technology co., LTD"
+ 9 o="Fath Mechatronics"
+ A o="Shield Inc."
+ B o="chiconypower"
+ C o="Shenzhen Incar Technology Co., Ltd."
+ D o="Jazwares LLC"
+ E o="Dongguan Kingtron Electronics Tech Co., Ltd"
9C431E
0 o="Antailiye Technology Co.,Ltd"
1 o="Symfun Telecom Ltd"
@@ -23454,7 +24070,7 @@ FCFEC2 o="Invensys Controls UK Limited"
B o="JNL Technologies Inc"
C o="SuZhou Jinruiyang Information Technology CO.,LTD"
D o="HK ELEPHONE Communication Tech Co.,Limited"
- E o="Midas Technology DBA Phoenix Audio Technologies"
+ E o="Phoenix Audio Technologies"
9C69B4
0 o="Suzhou Fitcan Technology Co.,LTD"
1 o="EA Technology Ltd"
@@ -23658,7 +24274,7 @@ A4DA22
7 o="Hydro Electronic Devices, Inc."
8 o="SolidPro Technology Corporation"
9 o="Malldon Technology Limited"
- A o="Abetechs GmbH"
+ A o="Grundig"
B o="Klashwerks Inc."
C o="EHO.LINK"
D o="Shen Zhen City YaKun Electronics Co., Ltd"
@@ -23707,7 +24323,7 @@ AC1DDF
8 o="Sichuan Odot Automation System Co.,Ltd."
9 o="Solare Datensysteme GmbH"
A o="WESCO INTEGRATED SUPPLY"
- B o="Fine Inc."
+ B o="FINEpowerX INC"
C o="Beijing Chunhong Technology Co., Ltd."
D o="Elekon AG"
E o="Duravit AG"
@@ -23901,6 +24517,22 @@ BC9740
C o="LISTEC GmbH"
D o="Rollock Oy"
E o="B4ComTechnologies LLC"
+C0619A
+ 0 o="Paragon Robotics LLC"
+ 1 o="KidKraft"
+ 2 o="Grup Arge Enerji ve Kontrol Sistemleri"
+ 3 o="LYAND ACOUSTIC TECHNOLOGY CO.,LTD."
+ 4 o="Stello"
+ 5 o="Nanjing Balance Network Technology Co., Ltd"
+ 6 o="IPG Automotive GmbH"
+ 7 o="MAD PIECE LLC."
+ 8 o="Nanjing SinoVatio Technology Co., Ltd"
+ 9 o="Wingtech Mobile Communications Co.,Ltd."
+ A o="Gronn Kontakt AS"
+ B o="Victron Energy B.V."
+ C o="JAM-Labs Corp"
+ D o="Uhnder"
+ E o="Zhejiang Haikang Science And Technology Co.,Ltd"
C08359
0 o="CHONGQING JIUYU SMART TECHNOLOGY CO.LTD."
1 o="Gemvax Technology ,. Co.Ltd"
@@ -23916,6 +24548,22 @@ C08359
B o="Suzhou Siheng Science and Technology Ltd."
D o="Gardner Denver Thomas GmbH"
E o="Cyber Sciences, Inc."
+C09BF4
+ 0 o="Annapurna labs"
+ 1 o="Connected Space Management"
+ 2 o="Hitachi High-Tech Materials Corporation"
+ 3 o="Osprey Video, Inc"
+ 4 o="JSC NPK ATRONIK"
+ 5 o="Infiot Inc."
+ 6 o="LTD Delovoy Office"
+ 7 o="Big Dutchman International GmbH"
+ 8 o="SHENZHEN WINS ELECTRONIC TECHNOLOGY CO., LTD"
+ 9 o="Alcatraz AI Inc."
+ A o="Inveo"
+ B o="NUCTECH COMPANY LIMITED"
+ C o="Pinpark Inc."
+ D o="The Professional Monitor Company Ltd"
+ E o="Continental Automotive Component Malaysia Sdn.Bhd."
C0D391
0 o="Fuzhou Jinshi Technology Co.,Ltd."
1 o="B9Creations"
@@ -23998,7 +24646,7 @@ C82C2B
C86314
0 o="Western Reserve Controls, Inc."
1 o="Autonics Co., Ltd."
- 2 o="Tymphany Acoustic Technology (Huizhou) Co., Ltd."
+ 2 o="Tymphany Acoustic Technology (Huizhou) Co., Ltd."
3 o="TrackMan"
4 o="Shenzhen Zero Zero Infinity Technology Co.,Ltd."
5 o="Meyer Electronics Limited"
@@ -24059,6 +24707,29 @@ CC2237
C o="Hebei ZHSF Technology Co.,Ltd."
D o="SHENZHEN HOOENERGY TECHNOLOGY CO.,LTD"
E o="MANUFACTURAS Y TRANSFORMADOS AB, S.L."
+CC4F5C
+ 2 o="MatchX GmbH"
+ 5 o="Kymati GmbH"
+ 7 o="Smiths US Innovation LLC"
+ 8 o="Feelmore Labs"
+ A o="AZ-TECHNOLOGY SDN BHD"
+ B o="Ontex BV"
+ C o="Beijing Cotytech Technology Co.,LTD."
+CCC261
+ 0 o="Ebiologic Technology Co., Ltd."
+ 1 o="NWL Inc."
+ 2 o="Tecnoideal Srl"
+ 3 o="NETRADYNE, INC."
+ 4 o="EDAG Engineering GmbH"
+ 5 o="Viper Design, LLC"
+ 6 o="Guardiar USA"
+ 7 o="Ability Enterprise Co., Ltd"
+ 9 o="BYTERG LLC"
+ A o="Shenzhen Uyesee Technology Co.,Ltd"
+ B o="Winterthur Gas & Diesel Ltd."
+ C o="Nortek Security & Control"
+ D o="Dspread Technology (Beijing) Inc."
+ E o="Toong In Electronic Corp."
CCD31E
0 o="SAMIM Co"
1 o="Rondo Burgdorf AG"
@@ -24091,6 +24762,20 @@ CCD39D
C o="Hangzhou Scooper Technology Co.,Ltd."
D o="Ethernity Networks"
E o="Shanghai tongli information technology co. LTD"
+D01411
+ 0 o="EkkoSense Ltd"
+ 2 o="Evoco Labs CO., LTD"
+ 3 o="iLOQ Oy"
+ 4 o="powerall"
+ 6 o="Ahnnet"
+ 7 o="Realwave Inc."
+ 8 o="Video Security, Inc."
+ 9 o="Airthings"
+ A o="ABB EVI SPA"
+ B o="CYLTek Limited"
+ C o="Shen Zhen HaiHe Hi-Tech Co., Ltd"
+ D o="Guangdong Shiqi Manufacture Co., Ltd."
+ E o="Tecnosoft srl"
D02212
0 o="Spirit IT B.V."
1 o="AIM"
@@ -24161,6 +24846,7 @@ D0D94F
4 o="peiker CEE"
5 o="Optigo Networks"
6 o="Hyundai Autohow"
+ 7 o="Mitsubishi Electric US, Inc."
8 o="Apption Labs Limited"
9 o="Hangzhou xiaoben technology co.,Ltd"
A o="Shenzhen FDC Electuonic Co.,Ltd."
@@ -24218,7 +24904,7 @@ D8860B
E o="Shenzhen Yidong Technology Co.,Ltd"
DC4427
0 o="Suritel"
- 1 o="Tesla Motors, Inc"
+ 1 o="Tesla,Inc."
2 o="Skywave Technology Co,.Ltd."
3 o="General Microsystems Sdn Bhd"
4 o="Nex Technologies PTY LTD"
@@ -24342,6 +25028,22 @@ E81863
C o="Shenzhen Hipad Telecommunication Technology Co.,Ltd"
D o="DIGITAL DYNAMICS, INC."
E o="Acopian Technical Company"
+E8B470
+ 0 o="DongGuan Ramaxel Memory Technology"
+ 1 o="Autocom Diagnostic Partner AB"
+ 2 o="internet domain name system beijing engineering research center ltd"
+ 3 o="Webfleet Solutions B.V."
+ 4 o="YAWATA ELECTRIC INDUSTRIAL CO.,LTD."
+ 5 o="Alperia Fiber srl"
+ 6 o="Elcoma"
+ 7 o="Tibit Communications"
+ 8 o="DEHN SE + Co KG"
+ 9 o="Miltek Industries Pte Ltd"
+ A o="plc2 Design GmbH"
+ B o="Digifocus Technology Inc."
+ C o="Anduril Industries"
+ D o="Medica Corporation"
+ E o="UNICACCES GROUPE"
EC9F0D
0 o="Hesai Photonics Technology Co., Ltd"
1 o="Simula Technology Inc."
@@ -24405,6 +25107,22 @@ F0ACD7
C o="Simprints Technology Ltd"
D o="Smart Power Technology Co., Ltd."
E o="Fiziico Co., Ltd."
+F0D7AF
+ 0 o="ID Tech Japan Co.,Ltd."
+ 1 o="Beijing Serviatech lnformation Tech Co.,Ltd"
+ 2 o="Blacknight Internet Solutions Limited"
+ 3 o="720?bei jing?Health iTech Co.,Ltd"
+ 4 o="ADAM Audio GmbH"
+ 5 o="Dongguan Huili electroacoustic Industrial Co.,ltd"
+ 6 o="Anord Mardix (USA) Inc."
+ 7 o="Rievtech Electronic Co.,Ltd"
+ 8 o="SHEN ZHEN MICHIP TECHNOLOGIES CO.,LTD."
+ 9 o="New IT Project LLC"
+ A o="MSTAR TECHNOLOGIES,INC"
+ B o="EVCO SPA"
+ C o="Shenzhen Virtual Clusters Information Technology Co.,Ltd."
+ D o="Dongguan Gedi Electrons Techeology Co.,LTD"
+ E o="Wren Associates, LTD"
F40E11
0 o="realphone technology co.,ltd"
1 o="BEIJING DONGJIN AERO-TECH CO., LTD"
@@ -24421,6 +25139,36 @@ F40E11
C o="NIHON MEGA LOGIC CO.,LTD."
D o="DXG Technology Corp."
E o="Elektronika Naglic d.o.o."
+F469D5
+ 0 o="Mossman Limited"
+ 1 o="Junchuang (Xiamen) Automation Technology Co.,Ltd"
+ 2 o="Pulsar Engineering srl"
+ 3 o="ITS Co., Ltd."
+ 4 o="Stype CS d.o.o."
+ 5 o="Hefei STAROT Technology Co.,Ltd"
+ 6 o="TianJin KCHT Information Technology Co., Ltd."
+ 7 o="Rosco, Inc"
+ 9 o="Terminus (Shanghai) Technology Co.,Ltd."
+ A o="ShenZhenShi EVADA technology Co.,Ltd"
+ B o="Konntek Inc"
+ C o="Huaqin Telecom Technology Co.,Ltd."
+ D o="Nantong ZYDZ Electronic.,Co.Ltd"
+ E o="ORtek Technology, Inc."
+F490CB
+ 0 o="Epitel, Inc."
+ 1 o="DELEM BV"
+ 2 o="ICE Gateway GmbH"
+ 3 o="Ricker Lyman Robotic"
+ 4 o="OmniNet"
+ 5 o="Avilution"
+ 6 o="Airbeam Wireless Technologies Inc."
+ 7 o="TEQ SA"
+ 8 o="Beijing Penslink Co., Ltd."
+ 9 o="Fractyl Labs"
+ B o="A-dec Inc."
+ C o="Cheetah Medical"
+ D o="Simavita (Aust) Pty Ltd"
+ E o="RSAE Labs Inc"
F80278
0 o="Digatron Power Electronics GmbH"
1 o="Reason Tecnologia SA"
diff --git a/update/imsi.py b/update/imsi.py
index d2abb83c..fd20e260 100755
--- a/update/imsi.py
+++ b/update/imsi.py
@@ -21,12 +21,21 @@
"""This extracts a IMSI country and operator code from Wikipedia."""
+import os
import re
+import sys
from collections import defaultdict
import requests
+# Ensure that our local stdnum implementation is used
+sys.path.insert(0, os.path.normpath(
+ os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')))
+
+from stdnum import util # noqa, isort:skip
+
+
# The wikipedia pages to download
wikipedia_pages = (
'Mobile country code',
@@ -155,7 +164,7 @@ def get_mncs_from_wikipedia(data):
response.raise_for_status()
country = cc = ''
for line in response.iter_lines(decode_unicode=True):
- line = line.strip()
+ line = util.clean(line.strip())
match = _mnc_country_re.match(line)
if match:
country = match.group('country')
diff --git a/update/nz_banks.py b/update/nz_banks.py
index 04a5463a..bcf20daf 100755
--- a/update/nz_banks.py
+++ b/update/nz_banks.py
@@ -31,7 +31,7 @@
# The page that contains a link to the latest XLS version of the codes.
-download_url = 'https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xls/'
+download_url = 'https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xlsx/'
def get_values(sheet):
From 337393855c2691abaf2d115fbdc4492e554c3995 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Sun, 9 Aug 2020 18:20:30 +0200
Subject: [PATCH 044/296] Get files ready for 1.14 release
---
ChangeLog | 371 ++++++++++++++++++++++++++++++++++++++++
NEWS | 48 ++++++
README | 14 ++
docs/index.rst | 14 ++
docs/stdnum.by.unp.rst | 5 +
docs/stdnum.cn.uscc.rst | 5 +
docs/stdnum.gb.utr.rst | 5 +
docs/stdnum.gs1_128.rst | 5 +
docs/stdnum.id.npwp.rst | 5 +
docs/stdnum.il.hp.rst | 5 +
docs/stdnum.it.aic.rst | 5 +
docs/stdnum.kr.brn.rst | 5 +
docs/stdnum.ro.onrc.rst | 5 +
docs/stdnum.sg.uen.rst | 5 +
docs/stdnum.sv.nit.rst | 5 +
docs/stdnum.tw.ubn.rst | 5 +
docs/stdnum.vatin.rst | 5 +
docs/stdnum.vn.mst.rst | 5 +
docs/stdnum.za.idnr.rst | 5 +
stdnum/__init__.py | 2 +-
20 files changed, 523 insertions(+), 1 deletion(-)
create mode 100644 docs/stdnum.by.unp.rst
create mode 100644 docs/stdnum.cn.uscc.rst
create mode 100644 docs/stdnum.gb.utr.rst
create mode 100644 docs/stdnum.gs1_128.rst
create mode 100644 docs/stdnum.id.npwp.rst
create mode 100644 docs/stdnum.il.hp.rst
create mode 100644 docs/stdnum.it.aic.rst
create mode 100644 docs/stdnum.kr.brn.rst
create mode 100644 docs/stdnum.ro.onrc.rst
create mode 100644 docs/stdnum.sg.uen.rst
create mode 100644 docs/stdnum.sv.nit.rst
create mode 100644 docs/stdnum.tw.ubn.rst
create mode 100644 docs/stdnum.vatin.rst
create mode 100644 docs/stdnum.vn.mst.rst
create mode 100644 docs/stdnum.za.idnr.rst
diff --git a/ChangeLog b/ChangeLog
index 20d0c6d5..130c4586 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,374 @@
+2020-08-09 Arthur de Jong
+
+ * [40fcc24] stdnum/be/banks.dat, stdnum/cn/loc.dat,
+ stdnum/eu/nace.dat, stdnum/gs1_ai.dat, stdnum/iban.dat,
+ stdnum/imsi.dat, stdnum/isbn.dat, stdnum/nz/banks.dat,
+ stdnum/oui.dat, update/imsi.py, update/nz_banks.py: Update
+ database files
+
+2020-03-08 Leandro Regueiro
+
+ * [ff188bd] stdnum/vatin.py, tests/test_vatin.doctest: Add module
+ to check any VAT number
+
+ This effectively mimics vatnumber's `check_vat` function, so people
+ can easily replace the outdated vatnumber library with stdnum.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/199
+
+2020-08-08 Arthur de Jong
+
+ * [b6e43cd] update/gs1_ai.py: Fix Python 3.6 issue in update script
+
+ Fixes 180788a
+
+2020-08-08 Arthur de Jong
+
+ * [180788a] stdnum/gs1_128.py, stdnum/gs1_ai.dat,
+ tests/test_gs1_128.doctest, update/gs1_ai.py: Add GS1-128 format
+
+ This adds validation, parsing and encoding functions for
+ GS1-128. It is based on the lists of formats as published by
+ the GS1 organisation.
+
+ Based on the implementation provided by Sergi Almacellas Abellana
+ .
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/144
+
+2020-08-02 Arthur de Jong
+
+ * [c2284f3] stdnum/ro/onrc.py, tests/test_ro_onrc.doctest: Add
+ Romanian Trade Register identifier
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/229
+ Closes https://github.com/arthurdejong/python-stdnum/pull/234
+
+2020-06-02 Mohammed Salman
+
+ * [94e2c63] stdnum/gb/utr.py, tests/test_gb_utr.doctest: Add
+ English Unique Tax Reference
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/227
+
+2020-08-02 Arthur de Jong
+
+ * [505521e] stdnum/ro/cnp.py: Support foreign residents for
+ Romanian CNP
+
+ This supports 7 or 8 as first digits in the CNP which are
+ apparently used to identify foreign residents.
+
+ This also changes the exception for an incorrect first digit
+ from InvalidFormat to InvalidComponent which is a little clearer.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/230
+
+2020-08-02 Arthur de Jong
+
+ * [51a122d] stdnum/kr/GPKIRootCA1.crt, stdnum/kr/brn.py: Remove
+ custom CA certificate for www.ftc.go.kr
+
+ This certificate is not needed any more because the site now
+ uses a different certificate that is signed by a known CA.
+
+2020-07-31 evaldez89
+
+ * [feca1fe] stdnum/do/rnc.py, tests/test_do_rnc.py: Scape new
+ line character
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/233
+ Closes https://github.com/arthurdejong/python-stdnum/issues/232
+
+2020-04-05 Leandro Regueiro
+
+ * [dab926c] stdnum/tw/__init__.py, stdnum/tw/ubn.py,
+ tests/test_tw_ubn.doctest: Add support for Taiwan TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/214
+ Closes https://github.com/arthurdejong/python-stdnum/issues/209
+
+2020-07-05 Arthur de Jong
+
+ * [291b831] tox.ini: Avoid newer isort for flake8 tests
+
+ Do not install the latest isort because it currently breaks
+ flake8-isort. This pinning should be removed as soon as
+ https://github.com/gforcada/flake8-isort/issues/88 is resolved.
+
+2020-03-08 Leandro Regueiro
+
+ * [7112874] stdnum/id/__init__.py, stdnum/id/npwp.py,
+ tests/test_id_npwp.doctest: Add support for Indonesian NPWP
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/106
+ Closes https://github.com/arthurdejong/python-stdnum/pull/198
+
+2020-04-18 Leandro Regueiro
+
+ * [a34a76d] stdnum/vn/__init__.py, stdnum/vn/mst.py,
+ tests/test_vn_mst.doctest: Add support for Vietnam TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/217
+ Closes https://github.com/arthurdejong/python-stdnum/pull/218
+
+2020-05-16 Arthur de Jong
+
+ * [1b7e985] stdnum/kr/GPKIRootCA1.crt, stdnum/kr/brn.py,
+ tests/test_kr_brn.py: Add an online check for the South Korean BRN
+
+2020-03-07 Leandro Regueiro
+
+ * [b3891f1] stdnum/kr/__init__.py, stdnum/kr/brn.py,
+ tests/test_kr_brn.doctest: Add support for South Korea Business
+ Registration Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/197
+ Closes https://github.com/arthurdejong/python-stdnum/issues/101
+
+2020-06-06 Christopher Ormaza
+
+ * [127fff1] stdnum/ec/ci.py: Support 6 as third digit for foreign
+ people in Ecuador
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/228
+
+2020-03-18 Leandro Regueiro
+
+ * [0d5b8b1] stdnum/sg/__init__.py, stdnum/sg/uen.py,
+ tests/test_sg_uen.doctest: Add support for Singapore Unique
+ Entity Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/111
+ Closes https://github.com/arthurdejong/python-stdnum/pull/203
+
+2020-03-18 Leandro Regueiro
+
+ * [4eda3f3] stdnum/nz/__init__.py: Add missing vat alias for
+ New Zealand
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/202
+
+2020-04-04 Leandro Regueiro
+
+ * [f3ce70c] stdnum/cn/__init__.py, stdnum/cn/uscc.py,
+ tests/test_cn_uscc.doctest: Add support for Chinese TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/207
+ Closes https://github.com/arthurdejong/python-stdnum/pull/210
+
+2020-04-10 Leandro Regueiro
+
+ * [54e2e8f] stdnum/sv/__init__.py, stdnum/sv/nit.py,
+ tests/test_sv_nit.doctest: Add support for El Salvador TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/133
+ Closes https://github.com/arthurdejong/python-stdnum/pull/215
+
+2020-03-31 Leandro Regueiro
+
+ * [356a729] stdnum/il/__init__.py, stdnum/il/hp.py,
+ tests/test_il_hp.doctest: Add Israeli TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/208
+ Closes https://github.com/arthurdejong/python-stdnum/issues/107
+
+2020-04-25 Arthur de Jong
+
+ * [e49e0e9] docs/index.rst: Document function return behaviour
+
+2020-04-19 Arthur de Jong
+
+ * [417b500] setup.cfg, setup.py, tox.ini: Flake 8 fixes
+
+2020-04-18 Arthur de Jong
+
+ * [ff86618] .travis.yml: Resolve Travis configuration warnings
+
+2020-04-18 Arthur de Jong
+
+ * [982322a] tox.ini: Avoid newest Sphinx
+
+ Newer versions of Sphinx treat underscores differently when
+ used in arguments to automodule causing problems in generating
+ documentation for the stdnum.in_.aadhaar, stdnum.in_.pan,
+ stdnum.is_.kennitala and stdnum.is_.vsk modules.
+
+2020-03-20 Arthur de Jong
+
+ * [91ca4da] stdnum/cu/ni.py, stdnum/do/ncf.py, stdnum/do/rnc.py,
+ stdnum/es/ccc.py, stdnum/es/referenciacatastral.py,
+ stdnum/eu/eic.py, stdnum/eu/nace.py, stdnum/fi/hetu.py,
+ stdnum/fr/nir.py, stdnum/gb/nhs.py, stdnum/gr/amka.py,
+ stdnum/isil.py, stdnum/issn.py, stdnum/kr/rrn.py, stdnum/mu/nid.py,
+ stdnum/mx/curp.py, stdnum/mx/rfc.py, stdnum/pl/regon.py: Use
+ HTTPS in URLs where possible
+
+2020-03-19 grzekru
+
+ * [273dd54] stdnum/eu/vat.py: Use HTTPS instead of HTTP fox
+ VIES lookups
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/204
+ Closes https://github.com/arthurdejong/python-stdnum/pull/205
+
+2020-03-03 FabrizioMontanari
+
+ * [8433821] stdnum/it/aic.py, tests/test_it_aic.doctest: Add
+ Italian AIC codes
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/193
+
+2020-03-09 Arthur de Jong
+
+ * [f7b968c] stdnum/by/unp.py: Fix typo
+
+ Thanks @unho
+
+2020-03-08 Arthur de Jong
+
+ * [d09ed52] stdnum/lv/pvn.py, stdnum/ru/inn.py: Use zip() for
+ applying weights in check algorithms
+
+2020-03-07 Arthur de Jong
+
+ * [60139a8] stdnum/by/__init__.py, stdnum/by/portal.nalog.gov.by.crt,
+ stdnum/by/unp.py, tests/test_by_unp.doctest, tests/test_by_unp.py:
+ Add Bellarus УНП number
+
+ This also adds a function to do an online lookup of the number.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/196
+
+2020-03-07 Leandro Regueiro
+
+ * [ebe7e10] stdnum/jp/__init__.py: Add missing vat alias for Japan
+
+2020-03-07 Leandro Regueiro
+
+ * [6429080] stdnum/ca/__init__.py: Add missing vat alias for Canada
+
+2020-03-07 Leandro Regueiro
+
+ * [84ee720] stdnum/tr/__init__.py: Add missing vat alias for Turkey
+
+2020-03-07 Leandro Regueiro
+
+ * [fcbe159] stdnum/pe/__init__.py: Add missing vat alias for Peru
+
+2020-03-07 Leandro Regueiro
+
+ * [9be7dee] stdnum/cr/__init__.py: Add missing vat alias for
+ Costa Rica
+
+2020-03-07 Leandro Regueiro
+
+ * [69d22e9] stdnum/br/__init__.py: Add missing vat alias for Brazil
+
+2020-01-31 Leon Sandøy
+
+ * [df9f922] stdnum/no/fodselsnummer.py,
+ tests/test_no_fodselsnummer.doctest: Implement get_birth_date()
+ for no.fodselsnummer
+
+ This adds a function that allows you to determine a persons
+ birth date from a Norwegian fødselsnummer.
+
+ This also accounts for D-numbers, H-numbers, and FH-numbers,
+ which contain special exceptions and modifications to the
+ birthdate portion of the number.
+
+ Most of the information this is based on was found here:
+ https://no.wikipedia.org/wiki/F%C3%B8dselsnummer#H-nummer
+
+ It also updates the list of valid fødselsnummer in the tests,
+ since this list contained many numbers that are not valid by
+ this new validation that now accounts for dates.
+
+ Additionally, this updates all tests that were failing under the
+ new validation, and adds a few new tests to bring the coverage
+ to 100%.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/187
+
+2020-01-31 Leon Sandøy
+
+ * [4500881] stdnum/dk/cpr.py: Improve birth date validation
+ for dk.cpr
+
+ This adds a check to validate that the birth date information
+ in a personnummer is not set in the future, resolving a TODO
+ from this file.
+
+ It also improves exception messages for certain validation
+ fail conditions.
+
+2020-01-31 Leon Sandøy
+
+ * [f5e0456] stdnum/se/personnummer.py: Fix misleading docstring
+ in se.personnummer get_birth_date()
+
+ The docstring for get_birth_date() in the Swedish personnummer.py
+ warned that the datetime might be 100 years off because of the
+ lack of precision in the personnummer.
+
+ This was accurate when the docstring was written, but this is
+ no longer accurate after the - and + signs were correctly handled.
+
+ Fixes 5441ffa
+
+2020-03-01 Arthur de Jong
+
+ * [8437b8e] .travis.yml: Use bionic for pypy3 tests on Travis
+
+ This switches the pypy3 tests to bionic which has Python
+ 3.6.9. There were installation issues with 3.5.3 on trusty and
+ coverage issues with 3.6.1 of xenial (now the default on Travis).
+
+2020-02-24 Aleksi Hoffman
+
+ * [353db92] stdnum/fi/hetu.py, tests/test_fi_hetu.doctest: Support
+ validating temporary Finnish personal identity codes
+
+ This adds an optional allow_temporary parameter, which defaults
+ to False, to the validate() function.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/191
+
+2020-02-18 Gustavo Valverde
+
+ * [efa70f1] stdnum/do/ncf.py: Change DGII endpoint to new one
+
+ The old endpoint has been deprecated.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/190
+
+2020-02-12 Arthur de Jong
+
+ * [e513888] stdnum/se/personnummer.py,
+ tests/test_se_personnummer.doctest: Fix issue with extra plus
+ or minus in se.personnummer
+
+ Fixes 5441ffa Closes
+ https://github.com/arthurdejong/python-stdnum/issues/188
+
+2020-01-22 Gustavo Valverde
+
+ * [77a77ba] stdnum/do/ncf.py: Add missing NCF document types
+ for validation
+
+ These document types are in the official
+ documentation, but were not being validated:
+ https://dgii.gov.do/cicloContribuyente/facturacion/comprobantesFiscales/Paginas/tiposComprobantes.aspx
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/186
+
+2020-01-19 Arthur de Jong
+
+ * [d5666b8] ChangeLog, NEWS, README, docs/index.rst,
+ docs/stdnum.ch.esr.rst, setup.py, stdnum/__init__.py: Get files
+ ready for 1.13 release
+
2020-01-19 Arthur de Jong
* [334e907] online_check/stdnum.wsgi: Fix online check to be Python
diff --git a/NEWS b/NEWS
index 8d2183f5..ccd5d8a6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,51 @@
+changes from 1.13 to 1.14
+-------------------------
+
+* Add modules for the following number formats:
+
+ - УНП, UNP (Учетный номер плательщика, the Belarus VAT number)
+ - AIC (Italian code for identification of drugs) (thanks Fabrizio Montanari)
+ - Company Number (מספר חברה, or short ח.פ. Israeli company number)
+ (thanks Leandro Regueiro)
+ - NIT (Número de Identificación Tributaria, El Salvador tax number)
+ (thanks Leandro Regueiro)
+ - USCC (Unified Social Credit Code, 统一社会信用代码, China tax number)
+ (thanks Leandro Regueiro)
+ - UEN (Singapore's Unique Entity Number) (thanks Leandro Regueiro)
+ - BRN (사업자 등록 번호, South Korea Business Registration Number)
+ (thanks Leandro Regueiro)
+ - MST (Mã số thuế, Vietnam tax number) (thanks Leandro Regueiro)
+ - NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number)
+ (thanks Leandro Regueiro)
+ - UBN (Unified Business Number, 統一編號, Taiwanese tax number)
+ (thanks Leandro Regueiro)
+ - UTR (United Kingdom Unique Taxpayer Reference) (thanks Mohammed Salman)
+ - ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier)
+ (thanks dotbit1)
+ - GS1-128 (Standard to encode product information in Code 128 barcodes)
+ (thanks Sergi Almacellas Abellana)
+ - VATIN (International value added tax identification number)
+ (thanks Leandro Regueiro)
+
+* Fix missing Dominican Republic NCF document types (thanks Gustavo Valverde)
+* Fix issue with extra plus or minus in Swedish Personnummer
+ (thanks balderman)
+* Update Dominican Republic DGII endpoint (thanks Gustavo Valverde)
+* Support validating temporary Finnish personal identity codes
+ (thanks Aleksi Hoffman)
+* Fix misleading docstring in se.personnummer.get_birth_date()
+ (thanks Leon Sandøy)
+* Improve birth date validation in Danish CPR (thanks Leon Sandøy)
+* Add birth date validating in Norwegian Fødselsnummer (thanks Leon Sandøy)
+* Add missing vat aliases for a number of countries (thanks Leandro Regueiro)
+* Use HTTPS instead of HTTP fox VIES lookups (thanks grzekru)
+* Switch to HTTPS URLs where possible
+* Support 6 as third digit in Ecuadorian CI (thanks Christopher Ormaza)
+* Add an online check for South Korean BRN
+* Fix unescaping in Dominican Republic RNC online check (thanks evaldez89)
+* Support foreign residents for Romanian CNP (thanks dotbit1)
+
+
changes from 1.12 to 1.13
-------------------------
diff --git a/README b/README
index 607c2126..b472833f 100644
--- a/README
+++ b/README
@@ -37,6 +37,7 @@ Currently this package supports the following formats:
* Bitcoin address
* CNPJ (Cadastro Nacional da Pessoa Jurídica, Brazilian company identifier)
* CPF (Cadastro de Pessoas Físicas, Brazilian national identifier)
+ * УНП, UNP (Учетный номер плательщика, the Belarus VAT number)
* BN (Canadian Business Number)
* SIN (Canadian Social Insurance Number)
* CAS RN (Chemical Abstracts Service Registry Number)
@@ -46,6 +47,7 @@ Currently this package supports the following formats:
* VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number)
* RUT (Rol Único Tributario, Chilean national tax number)
* RIC No. (Chinese Resident Identity Card Number)
+ * USCC (Unified Social Credit Code, 统一社会信用代码, China tax number)
* NIT (Número De Identificación Tributaria, Colombian identity code)
* CPF (Cédula de Persona Física, Costa Rica physical person ID number)
* CPJ (Cédula de Persona Jurídica, Costa Rica tax number)
@@ -98,16 +100,20 @@ Currently this package supports the following formats:
* NHS (United Kingdom National Health Service patient identifier)
* SEDOL number (Stock Exchange Daily Official List number)
* UPN (English Unique Pupil Number)
+ * UTR (United Kingdom Unique Taxpayer Reference)
* VAT (United Kingdom (and Isle of Man) VAT registration number)
* AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number)
* FPA, ΦΠΑ, ΑΦΜ (Αριθμός Φορολογικού Μητρώου, the Greek VAT number)
* GRid (Global Release Identifier)
+ * GS1-128 (Standard to encode product information in Code 128 barcodes)
* NIT (Número de Identificación Tributaria, Guatemala tax number)
* OIB (Osobni identifikacijski broj, Croatian identification number)
* ANUM (Közösségi adószám, Hungarian VAT number)
* IBAN (International Bank Account Number)
+ * NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number)
* PPS No (Personal Public Service Number, Irish personal number)
* VAT (Irish tax reference number)
+ * Company Number (מספר חברה, or short ח.פ. Israeli company number)
* Identity Number (Mispar Zehut, מספר זהות, Israeli identity number)
* IMEI (International Mobile Equipment Identity)
* IMO number (International Maritime Organization number)
@@ -124,9 +130,11 @@ Currently this package supports the following formats:
* ISO 11649 (Structured Creditor Reference)
* ISO 6346 (International standard for container identification)
* ISSN (International Standard Serial Number)
+ * AIC (Italian code for identification of drugs)
* Codice Fiscale (Italian tax code for individuals)
* Partita IVA (Italian VAT number)
* CN (法人番号, hōjin bangō, Japanese Corporate Number)
+ * BRN (사업자 등록 번호, South Korea Business Registration Number)
* RRN (South Korean resident registration number)
* LEI (Legal Entity Identifier)
* Asmens kodas (Lithuanian, personal numbers)
@@ -164,17 +172,21 @@ Currently this package supports the following formats:
* RUC number (Registro Único de Contribuyentes, Paraguay tax number)
* CF (Cod de înregistrare în scopuri de TVA, Romanian VAT number)
* CNP (Cod Numeric Personal, Romanian Numerical Personal Code)
+ * ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier)
* PIB (Poreski Identifikacioni Broj, Serbian tax identification number)
* ИНН (Идентификационный номер налогоплательщика, Russian tax identifier)
* Orgnr (Organisationsnummer, Swedish company number)
* Personnummer (Swedish personal identity number)
* VAT (Moms, Mervärdesskatt, Swedish VAT number)
+ * UEN (Singapore's Unique Entity Number)
* ID za DDV (Davčna številka, Slovenian VAT number)
* IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number)
* RČ (Rodné číslo, the Slovak birth number)
* COE (Codice operatore economico, San Marino national tax number)
+ * NIT (Número de Identificación Tributaria, El Salvador tax number)
* T.C. Kimlik No. (Turkish personal identification number)
* VKN (Vergi Kimlik Numarası, Turkish tax identification number)
+ * UBN (Unified Business Number, 統一編號, Taiwanese tax number)
* ATIN (U.S. Adoption Taxpayer Identification Number)
* EIN (U.S. Employer Identification Number)
* ITIN (U.S. Individual Taxpayer Identification Number)
@@ -183,7 +195,9 @@ Currently this package supports the following formats:
* SSN (U.S. Social Security Number)
* TIN (U.S. Taxpayer Identification Number)
* RUT (Registro Único Tributario, Uruguay tax number)
+ * VATIN (International value added tax identification number)
* RIF (Registro de Identificación Fiscal, Venezuelan VAT number)
+ * MST (Mã số thuế, Vietnam tax number)
* ID number (South African Identity Document number)
* TIN (South African Tax Identification Number)
diff --git a/docs/index.rst b/docs/index.rst
index 8eb0ea96..959e7817 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -135,6 +135,7 @@ Available formats
bitcoin
br.cnpj
br.cpf
+ by.unp
ca.bn
ca.sin
casrn
@@ -144,6 +145,7 @@ Available formats
ch.vat
cl.rut
cn.ric
+ cn.uscc
co.nit
cr.cpf
cr.cpj
@@ -196,16 +198,20 @@ Available formats
gb.nhs
gb.sedol
gb.upn
+ gb.utr
gb.vat
gr.amka
gr.vat
grid
+ gs1_128
gt.nit
hr.oib
hu.anum
iban
+ id.npwp
ie.pps
ie.vat
+ il.hp
il.idnr
imei
imo
@@ -222,9 +228,11 @@ Available formats
iso11649
iso6346
issn
+ it.aic
it.codicefiscale
it.iva
jp.cn
+ kr.brn
kr.rrn
lei
lt.asmens
@@ -262,17 +270,21 @@ Available formats
py.ruc
ro.cf
ro.cnp
+ ro.onrc
rs.pib
ru.inn
se.orgnr
se.personnummer
se.vat
+ sg.uen
si.ddv
sk.dph
sk.rc
sm.coe
+ sv.nit
tr.tckimlik
tr.vkn
+ tw.ubn
us.atin
us.ein
us.itin
@@ -281,7 +293,9 @@ Available formats
us.ssn
us.tin
uy.rut
+ vatin
ve.rif
+ vn.mst
za.idnr
za.tin
diff --git a/docs/stdnum.by.unp.rst b/docs/stdnum.by.unp.rst
new file mode 100644
index 00000000..571babe7
--- /dev/null
+++ b/docs/stdnum.by.unp.rst
@@ -0,0 +1,5 @@
+stdnum.by.unp
+=============
+
+.. automodule:: stdnum.by.unp
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.cn.uscc.rst b/docs/stdnum.cn.uscc.rst
new file mode 100644
index 00000000..c76956c2
--- /dev/null
+++ b/docs/stdnum.cn.uscc.rst
@@ -0,0 +1,5 @@
+stdnum.cn.uscc
+==============
+
+.. automodule:: stdnum.cn.uscc
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.gb.utr.rst b/docs/stdnum.gb.utr.rst
new file mode 100644
index 00000000..abfd4cdf
--- /dev/null
+++ b/docs/stdnum.gb.utr.rst
@@ -0,0 +1,5 @@
+stdnum.gb.utr
+=============
+
+.. automodule:: stdnum.gb.utr
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.gs1_128.rst b/docs/stdnum.gs1_128.rst
new file mode 100644
index 00000000..ef40122c
--- /dev/null
+++ b/docs/stdnum.gs1_128.rst
@@ -0,0 +1,5 @@
+stdnum.gs1_128
+==============
+
+.. automodule:: stdnum.gs1_128
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.id.npwp.rst b/docs/stdnum.id.npwp.rst
new file mode 100644
index 00000000..1a064638
--- /dev/null
+++ b/docs/stdnum.id.npwp.rst
@@ -0,0 +1,5 @@
+stdnum.id.npwp
+==============
+
+.. automodule:: stdnum.id.npwp
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.il.hp.rst b/docs/stdnum.il.hp.rst
new file mode 100644
index 00000000..8b4a6e80
--- /dev/null
+++ b/docs/stdnum.il.hp.rst
@@ -0,0 +1,5 @@
+stdnum.il.hp
+============
+
+.. automodule:: stdnum.il.hp
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.it.aic.rst b/docs/stdnum.it.aic.rst
new file mode 100644
index 00000000..ef2661f3
--- /dev/null
+++ b/docs/stdnum.it.aic.rst
@@ -0,0 +1,5 @@
+stdnum.it.aic
+=============
+
+.. automodule:: stdnum.it.aic
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.kr.brn.rst b/docs/stdnum.kr.brn.rst
new file mode 100644
index 00000000..77331aed
--- /dev/null
+++ b/docs/stdnum.kr.brn.rst
@@ -0,0 +1,5 @@
+stdnum.kr.brn
+=============
+
+.. automodule:: stdnum.kr.brn
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.ro.onrc.rst b/docs/stdnum.ro.onrc.rst
new file mode 100644
index 00000000..6cdb3aca
--- /dev/null
+++ b/docs/stdnum.ro.onrc.rst
@@ -0,0 +1,5 @@
+stdnum.ro.onrc
+==============
+
+.. automodule:: stdnum.ro.onrc
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.sg.uen.rst b/docs/stdnum.sg.uen.rst
new file mode 100644
index 00000000..611216c3
--- /dev/null
+++ b/docs/stdnum.sg.uen.rst
@@ -0,0 +1,5 @@
+stdnum.sg.uen
+=============
+
+.. automodule:: stdnum.sg.uen
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.sv.nit.rst b/docs/stdnum.sv.nit.rst
new file mode 100644
index 00000000..c5747a5f
--- /dev/null
+++ b/docs/stdnum.sv.nit.rst
@@ -0,0 +1,5 @@
+stdnum.sv.nit
+=============
+
+.. automodule:: stdnum.sv.nit
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.tw.ubn.rst b/docs/stdnum.tw.ubn.rst
new file mode 100644
index 00000000..33d3575f
--- /dev/null
+++ b/docs/stdnum.tw.ubn.rst
@@ -0,0 +1,5 @@
+stdnum.tw.ubn
+=============
+
+.. automodule:: stdnum.tw.ubn
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.vatin.rst b/docs/stdnum.vatin.rst
new file mode 100644
index 00000000..f2b520d7
--- /dev/null
+++ b/docs/stdnum.vatin.rst
@@ -0,0 +1,5 @@
+stdnum.vatin
+============
+
+.. automodule:: stdnum.vatin
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.vn.mst.rst b/docs/stdnum.vn.mst.rst
new file mode 100644
index 00000000..43a8755e
--- /dev/null
+++ b/docs/stdnum.vn.mst.rst
@@ -0,0 +1,5 @@
+stdnum.vn.mst
+=============
+
+.. automodule:: stdnum.vn.mst
+ :members:
\ No newline at end of file
diff --git a/docs/stdnum.za.idnr.rst b/docs/stdnum.za.idnr.rst
new file mode 100644
index 00000000..e96da5f4
--- /dev/null
+++ b/docs/stdnum.za.idnr.rst
@@ -0,0 +1,5 @@
+stdnum.za.idnr
+==============
+
+.. automodule:: stdnum.za.idnr
+ :members:
\ No newline at end of file
diff --git a/stdnum/__init__.py b/stdnum/__init__.py
index 07f4a968..73646fb1 100644
--- a/stdnum/__init__.py
+++ b/stdnum/__init__.py
@@ -43,4 +43,4 @@
__all__ = ('get_cc_module', '__version__')
# the version number of the library
-__version__ = '1.13'
+__version__ = '1.14'
From 992dc2087f54274049a166ac87472e0b66450813 Mon Sep 17 00:00:00 2001
From: Arthur de Jong
Date: Fri, 4 Sep 2020 14:58:50 +0200
Subject: [PATCH 045/296] Upgrade jQuery to 3.5.1
This also runs eslint over check.js and fixes an issue from the upgrade.
---
online_check/check.js | 139 +-
online_check/jquery-1.7.1.js | 9266 ------------------------
online_check/jquery-1.7.1.min.js | 4 -
online_check/jquery-3.5.1.js | 10872 ++++++++++++++++++++++++++++
online_check/jquery-3.5.1.min.js | 2 +
online_check/jquery-3.5.1.min.map | 1 +
online_check/template.html | 2 +-
7 files changed, 10944 insertions(+), 9342 deletions(-)
delete mode 100644 online_check/jquery-1.7.1.js
delete mode 100644 online_check/jquery-1.7.1.min.js
create mode 100644 online_check/jquery-3.5.1.js
create mode 100644 online_check/jquery-3.5.1.min.js
create mode 100644 online_check/jquery-3.5.1.min.map
diff --git a/online_check/check.js b/online_check/check.js
index 8a503729..69019564 100644
--- a/online_check/check.js
+++ b/online_check/check.js
@@ -1,7 +1,7 @@
/*
# check.js - simple application to check numbers
#
- # Copyright (C) 2017-2018 Arthur de Jong.
+ # Copyright (C) 2017-2020 Arthur de Jong.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -19,13 +19,12 @@
# 02110-1301 USA
*/
-$( document ).ready(function() {
-
+$(document).ready(function () {
function format(value) {
- return $("
").text(value).html().replace(
- /\n\n/g, " \n"
+ return $('
').text(value).html().replace(
+ /\n\n/g, ' \n'
).replace(
- /^[*] (.*)$/gm, ""
+ /^[*] (.*)$/gm, ''
).replace(
/(\b(https?|ftp):\/\/[^\s<]*[-\w+&@#/%=~_|])/ig,
"$1 "
@@ -34,98 +33,96 @@ $( document ).ready(function() {
function updateresults(field, results) {
// build HTML to present
- var h = [""];
- $.each(results, function(index, result) {
+ var h = ['']
+ $.each(results, function (index, result) {
h.push(
- "",
- $("
").text(result["number"]).html(),
- ": ",
- $("
").text(result["name"]).html(),
- "",
- "",
- format(result["description"]),
- $.map(result["conversions"], function(value, key){
+ '
',
+ $('
').text(result.number).html(),
+ ': ',
+ $('
').text(result.name).html(),
+ '',
+ '',
+ format(result.description),
+ $.map(result.conversions, function (value, key) {
return [
- "",
- $("
").text(key).html(),
- ": ",
- $("
").text(value).html()].join('')
+ '',
+ $('
').text(key).html(),
+ ': ',
+ $('
').text(value).html()].join('')
}).join(''),
- "")
- });
- h.push("");
+ '')
+ })
+ h.push('')
// replace the results div
- $("#" + $(field).attr("id") + "_results").html(h.join(""));
+ $('#' + $(field).attr('id') + '_results').html(h.join(''))
}
function checkfield(field) {
- var value = field.val();
+ var value = field.val()
// only trigger update if value changed from previous validation
- if (value != field.data("oldvalue")) {
- field.data("oldvalue", value);
- $("#" + $(field).attr("id") + "_results").slideUp(200, function() {
- $.get('', {"number": value}, function(data) {
- window.history.pushState({"value": value, "data": data}, $(document).find("title").text(), "?number=" + encodeURIComponent(value));
- updateresults(field, data);
- });
- $(this).slideDown(300);
- });
+ if (value !== field.data('oldvalue')) {
+ field.data('oldvalue', value)
+ $('#' + $(field).attr('id') + '_results').slideUp(200, function () {
+ $.get('.', {number: value}, function (data) {
+ window.history.pushState({value: value, data: data}, $(document).find('title').text(), '?number=' + encodeURIComponent(value))
+ updateresults(field, data)
+ })
+ $(this).slideDown(300)
+ })
}
}
// update results based on history navigation
- window.onpopstate = function(e) {
- var field = $(".stdnum_check");
+ window.onpopstate = function (e) {
+ var field = $('.stdnum_check')
if (e.state) {
- var value = e.state.value;
- var data = e.state.data;
+ var value = e.state.value
+ var data = e.state.data
field.val(value)
- field.data("oldvalue", value);
- updateresults(field, data);
+ field.data('oldvalue', value)
+ updateresults(field, data)
} else {
- field.val("")
- field.data("oldvalue", "");
- updateresults(field, []);
+ field.val('')
+ field.data('oldvalue', '')
+ updateresults(field, [])
}
- };
+ }
// trigger a check when user stopped typing
- $(".stdnum_check").on("input propertychange", function (event) {
- if (window.event && event.type == "propertychange" && event.propertyName != "value")
- return;
- var field = $(this);
- window.clearTimeout($(this).data("timeout"));
- $(this).data("timeout", setTimeout(function () {
- checkfield(field);
- }, 2000));
- });
+ $('.stdnum_check').on('input propertychange', function (event) {
+ if (window.event && event.type === 'propertychange' && event.propertyName !== 'value') { return }
+ var field = $(this)
+ window.clearTimeout($(this).data('timeout'))
+ $(this).data('timeout', setTimeout(function () {
+ checkfield(field)
+ }, 2000))
+ })
// trigger a check when losing focus
- $(".stdnum_check").on("blur", function() {
- window.clearTimeout($(this).data("timeout"));
- checkfield($(this));
- });
+ $('.stdnum_check').on('blur', function () {
+ window.clearTimeout($(this).data('timeout'))
+ checkfield($(this))
+ })
// prevent enter from submitting the form
- $(".stdnum_check").keydown(function(event) {
- if(event.keyCode == 13) {
- event.preventDefault();
- checkfield($(this));
- return false;
+ $('.stdnum_check').keydown(function (event) {
+ if (event.keyCode === 13) {
+ event.preventDefault()
+ checkfield($(this))
+ return false
}
- });
+ })
// hide the submit button
- $(".stdnum_hide").hide();
+ $('.stdnum_hide').hide()
// focus the text field
- $(".stdnum_check").focus();
+ $('.stdnum_check').focus()
// save current state
- var value = $(".stdnum_check").val();
- $(".stdnum_check").data("oldvalue", value);
- $.get('', {number: value}, function(data) {
- window.history.replaceState({"value": value, "data": data}, $(document).find("title").text(), "?number=" + encodeURIComponent(value));
+ var value = $('.stdnum_check').val()
+ $('.stdnum_check').data('oldvalue', value)
+ $.get('', {number: value}, function (data) {
+ window.history.replaceState({value: value, data: data}, $(document).find('title').text(), '?number=' + encodeURIComponent(value))
})
-
-});
+})
diff --git a/online_check/jquery-1.7.1.js b/online_check/jquery-1.7.1.js
deleted file mode 100644
index 8ccd0ea7..00000000
--- a/online_check/jquery-1.7.1.js
+++ /dev/null
@@ -1,9266 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
- navigator = window.navigator,
- location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // A simple way to check for HTML strings or ID strings
- // Prioritize #id over to avoid XSS via location.hash (#9521)
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
-
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
- // Matches dashed string for camelizing
- rdashAlpha = /-([a-z]|[0-9])/ig,
- rmsPrefix = /^-ms-/,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return ( letter + "" ).toUpperCase();
- },
-
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // The deferred used on DOM ready
- readyList,
-
- // The ready event handler
- DOMContentLoaded,
-
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
-
- // [[Class]] -> type pairs
- class2type = {};
-
-jQuery.fn = jQuery.prototype = {
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = selector;
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = quickExpr.exec( selector );
- }
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
- doc = ( context ? context.ownerDocument || context : document );
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
-
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
-
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || rootjQuery ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.7.1",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return slice.call( this, 0 );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
-
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
- // Add the callback
- readyList.add( fn );
-
- return this;
- },
-
- eq: function( i ) {
- i = +i;
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
- // Either a released hold or an DOMready/load event and not yet ready
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.fireWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger( "ready" ).off( "ready" );
- }
- }
- },
-
- bindReady: function() {
- if ( readyList ) {
- return;
- }
-
- readyList = jQuery.Callbacks( "once memory" );
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
-
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
-
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- // A crude way of determining if an object is a window
- isWindow: function( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
- },
-
- isNumeric: function( obj ) {
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
- },
-
- type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- try {
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
- } catch ( e ) {
- // IE8,9 Will throw exceptions on certain host objects #9897
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return ( new Function( "return " + data ) )();
-
- }
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- parseXML: function( data ) {
- var xml, tmp;
- try {
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
- } catch( e ) {
- xml = undefined;
- }
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && rnotwhite.test( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction( object );
-
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
- break;
- }
- }
- }
- }
-
- return object;
- },
-
- // Use native String.trim function wherever possible
- trim: trim ?
- function( text ) {
- return text == null ?
- "" :
- trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
- },
-
- // results is for internal usage only
- makeArray: function( array, results ) {
- var ret = results || [];
-
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type( array );
-
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, array, i ) {
- var len;
-
- if ( array ) {
- if ( indexOf ) {
- return indexOf.call( array, elem, i );
- }
-
- len = array.length;
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
- for ( ; i < len; i++ ) {
- // Skip accessing in sparse arrays
- if ( i in array && array[ i ] === elem ) {
- return i;
- }
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var i = first.length,
- j = 0;
-
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [], retVal;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value, key, ret = [],
- i = 0,
- length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- if ( typeof context === "string" ) {
- var tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- var args = slice.call( arguments, 2 ),
- proxy = function() {
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Mutifunctional method to get and set values to a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
- },
-
- now: function() {
- return ( new Date() ).getTime();
- },
-
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
-
- return { browser: match[1] || "", version: match[2] || "0" };
- },
-
- sub: function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
- },
-
- browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
- var object = flagsCache[ flags ] = {},
- i, length;
- flags = flags.split( /\s+/ );
- for ( i = 0, length = flags.length; i < length; i++ ) {
- object[ flags[i] ] = true;
- }
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * flags: an optional list of space-separated flags that will change how
- * the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
- // Convert flags from String-formatted to Object-formatted
- // (we check in cache first)
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
- var // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = [],
- // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list is currently firing
- firing,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // Add one or several callbacks to the list
- add = function( args ) {
- var i,
- length,
- elem,
- type,
- actual;
- for ( i = 0, length = args.length; i < length; i++ ) {
- elem = args[ i ];
- type = jQuery.type( elem );
- if ( type === "array" ) {
- // Inspect recursively
- add( elem );
- } else if ( type === "function" ) {
- // Add if not in unique mode and callback is not in
- if ( !flags.unique || !self.has( elem ) ) {
- list.push( elem );
- }
- }
- }
- },
- // Fire callbacks
- fire = function( context, args ) {
- args = args || [];
- memory = !flags.memory || [ context, args ];
- firing = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
- memory = true; // Mark as halted
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( !flags.once ) {
- if ( stack && stack.length ) {
- memory = stack.shift();
- self.fireWith( memory[ 0 ], memory[ 1 ] );
- }
- } else if ( memory === true ) {
- self.disable();
- } else {
- list = [];
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- var length = list.length;
- add( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away, unless previous
- // firing was halted (stopOnFalse)
- } else if ( memory && memory !== true ) {
- firingStart = length;
- fire( memory[ 0 ], memory[ 1 ] );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- var args = arguments,
- argIndex = 0,
- argLength = args.length;
- for ( ; argIndex < argLength ; argIndex++ ) {
- for ( var i = 0; i < list.length; i++ ) {
- if ( args[ argIndex ] === list[ i ] ) {
- // Handle firingIndex and firingLength
- if ( firing ) {
- if ( i <= firingLength ) {
- firingLength--;
- if ( i <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- // Remove the element
- list.splice( i--, 1 );
- // If we have some unicity property then
- // we only need to do this once
- if ( flags.unique ) {
- break;
- }
- }
- }
- }
- }
- return this;
- },
- // Control if a given callback is in the list
- has: function( fn ) {
- if ( list ) {
- var i = 0,
- length = list.length;
- for ( ; i < length; i++ ) {
- if ( fn === list[ i ] ) {
- return true;
- }
- }
- }
- return false;
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory || memory === true ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( stack ) {
- if ( firing ) {
- if ( !flags.once ) {
- stack.push( [ context, args ] );
- }
- } else if ( !( flags.once && memory ) ) {
- fire( context, args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!memory;
- }
- };
-
- return self;
-};
-
-
-
-
-var // Static reference to slice
- sliceDeferred = [].slice;
-
-jQuery.extend({
-
- Deferred: function( func ) {
- var doneList = jQuery.Callbacks( "once memory" ),
- failList = jQuery.Callbacks( "once memory" ),
- progressList = jQuery.Callbacks( "memory" ),
- state = "pending",
- lists = {
- resolve: doneList,
- reject: failList,
- notify: progressList
- },
- promise = {
- done: doneList.add,
- fail: failList.add,
- progress: progressList.add,
-
- state: function() {
- return state;
- },
-
- // Deprecated
- isResolved: doneList.fired,
- isRejected: failList.fired,
-
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
- return this;
- },
- always: function() {
- deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
- return this;
- },
- pipe: function( fnDone, fnFail, fnProgress ) {
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( {
- done: [ fnDone, "resolve" ],
- fail: [ fnFail, "reject" ],
- progress: [ fnProgress, "notify" ]
- }, function( handler, data ) {
- var fn = data[ 0 ],
- action = data[ 1 ],
- returned;
- if ( jQuery.isFunction( fn ) ) {
- deferred[ handler ](function() {
- returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
- }
- });
- } else {
- deferred[ handler ]( newDefer[ action ] );
- }
- });
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- if ( obj == null ) {
- obj = promise;
- } else {
- for ( var key in promise ) {
- obj[ key ] = promise[ key ];
- }
- }
- return obj;
- }
- },
- deferred = promise.promise({}),
- key;
-
- for ( key in lists ) {
- deferred[ key ] = lists[ key ].fire;
- deferred[ key + "With" ] = lists[ key ].fireWith;
- }
-
- // Handle state
- deferred.done( function() {
- state = "resolved";
- }, failList.disable, progressList.lock ).fail( function() {
- state = "rejected";
- }, doneList.disable, progressList.lock );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( firstParam ) {
- var args = sliceDeferred.call( arguments, 0 ),
- i = 0,
- length = args.length,
- pValues = new Array( length ),
- count = length,
- pCount = length,
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
- firstParam :
- jQuery.Deferred(),
- promise = deferred.promise();
- function resolveFunc( i ) {
- return function( value ) {
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- if ( !( --count ) ) {
- deferred.resolveWith( deferred, args );
- }
- };
- }
- function progressFunc( i ) {
- return function( value ) {
- pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- deferred.notifyWith( promise, pValues );
- };
- }
- if ( length > 1 ) {
- for ( ; i < length; i++ ) {
- if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
- } else {
- --count;
- }
- }
- if ( !count ) {
- deferred.resolveWith( deferred, args );
- }
- } else if ( deferred !== firstParam ) {
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
- }
- return promise;
- }
-});
-
-
-
-
-jQuery.support = (function() {
-
- var support,
- all,
- a,
- select,
- opt,
- input,
- marginDiv,
- fragment,
- tds,
- events,
- eventName,
- i,
- isSupported,
- div = document.createElement( "div" ),
- documentElement = document.documentElement;
-
- // Preliminary tests
- div.setAttribute("className", "t");
- div.innerHTML = " a ";
-
- all = div.getElementsByTagName( "*" );
- a = div.getElementsByTagName( "a" )[ 0 ];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return {};
- }
-
- // First batch of supports tests
- select = document.createElement( "select" );
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName( "input" )[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Tests for enctype support on a form(#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>",
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
- });
- div.cloneNode( true ).fireEvent( "onclick" );
- }
-
- // Check if a radio maintains its value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute("type", "radio");
- support.radioValue = input.value === "t";
-
- input.setAttribute("checked", "checked");
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.lastChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- fragment.removeChild( input );
- fragment.appendChild( div );
-
- div.innerHTML = "";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( window.getComputedStyle ) {
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.style.width = "2px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
-
- // Technique from Juriy Zaytsev
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for( i in {
- submit: 1,
- change: 1,
- focusin: 1
- }) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
- }
- support[ i + "Bubbles" ] = isSupported;
- }
- }
-
- fragment.removeChild( div );
-
- // Null elements to avoid leaks in IE
- fragment = select = opt = marginDiv = div = input = null;
-
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, outer, inner, table, td, offsetSupport,
- conMarginTop, ptlm, vb, style, html,
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- conMarginTop = 1;
- ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
- vb = "visibility:hidden;border:0;";
- style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
- html = "" +
- "";
-
- container = document.createElement("div");
- container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
- body.insertBefore( container, body.firstChild );
-
- // Construct the test element
- div = document.createElement("div");
- container.appendChild( div );
-
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- div.innerHTML = "";
- tds = div.getElementsByTagName( "td" );
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Check if empty table cells still have offsetWidth/Height
- // (IE <= 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- // Figure out if the W3C box model works as expected
- div.innerHTML = "";
- div.style.width = div.style.paddingLeft = "1px";
- jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
-
- if ( typeof div.style.zoom !== "undefined" ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.style.display = "inline";
- div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
-
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "
";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
- }
-
- div.style.cssText = ptlm + vb;
- div.innerHTML = html;
-
- outer = div.firstChild;
- inner = outer.firstChild;
- td = outer.nextSibling.firstChild.firstChild;
-
- offsetSupport = {
- doesNotAddBorder: ( inner.offsetTop !== 5 ),
- doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
- };
-
- inner.style.position = "fixed";
- inner.style.top = "20px";
-
- // safari subtracts parent border width here which is 5px
- offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
- inner.style.position = inner.style.top = "";
-
- outer.style.overflow = "hidden";
- outer.style.position = "relative";
-
- offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
- offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
- body.removeChild( container );
- div = container = null;
-
- jQuery.extend( support, offsetSupport );
- });
-
- return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
- rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
- cache: {},
-
- // Please use with caution
- uuid: 0,
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var privateCache, thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
- isEvents = name === "events";
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = ++jQuery.uuid;
- } else {
- id = internalKey;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
- }
- }
-
- privateCache = thisCache = cache[ id ];
-
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
-
- thisCache = thisCache.data;
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // Users should not attempt to inspect the internal events object using jQuery.data,
- // it is undocumented and subject to change. But does anyone listen? No.
- if ( isEvents && !thisCache[ name ] ) {
- return privateCache.events;
- }
-
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
-
- // First Try to find as-is property data
- ret = thisCache[ name ];
-
- // Test for null|undefined property data
- if ( ret == null ) {
-
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
- }
- } else {
- ret = thisCache;
- }
-
- return ret;
- },
-
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, i, l,
-
- // Reference to internal data cache key
- internalKey = jQuery.expando,
-
- isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
-
- // See jQuery.data for more information
- id = isNode ? elem[ internalKey ] : internalKey;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
-
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
- if ( thisCache ) {
-
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
-
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
-
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split( " " );
- }
- }
- }
-
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
- }
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject(cache[ id ]) ) {
- return;
- }
- }
-
- // Browsers that fail expando deletion also refuse to delete expandos on
- // the window, but it will allow it on all other JS objects; other browsers
- // don't care
- // Ensure that `cache` is not a window object #10080
- if ( jQuery.support.deleteExpando || !cache.setInterval ) {
- delete cache[ id ];
- } else {
- cache[ id ] = null;
- }
-
- // We destroyed the cache and need to eliminate the expando on the node to avoid
- // false lookups in the cache for entries that no longer exist
- if ( isNode ) {
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( jQuery.support.deleteExpando ) {
- delete elem[ internalKey ];
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( internalKey );
- } else {
- elem[ internalKey ] = null;
- }
- }
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- if ( elem.nodeName ) {
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- if ( match ) {
- return !(match === true || elem.getAttribute("classid") !== match);
- }
- }
-
- return true;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var parts, attr, name,
- data = null;
-
- if ( typeof key === "undefined" ) {
- if ( this.length ) {
- data = jQuery.data( this[0] );
-
- if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
- attr = this[0].attributes;
- for ( var i = 0, l = attr.length; i < l; i++ ) {
- name = attr[i].name;
-
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
-
- dataAttr( this[0], name, data[ name ] );
- }
- }
- jQuery._data( this[0], "parsedAttrs", true );
- }
- }
-
- return data;
-
- } else if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- // Try to fetch any internally stored data first
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- data = dataAttr( this[0], key, data );
- }
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
-
- } else {
- return this.each(function() {
- var self = jQuery( this ),
- args = [ parts[0], value ];
-
- self.triggerHandler( "setData" + parts[1] + "!", args );
- jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + parts[1] + "!", args );
- });
- }
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
-
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- jQuery.isNumeric( data ) ? parseFloat( data ) :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- for ( var name in obj ) {
-
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
- }
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
- var deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- defer = jQuery._data( elem, deferDataKey );
- if ( defer &&
- ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
- ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
- // Give room for hard-coded callbacks to fire first
- // and eventually mark/queue something else on the element
- setTimeout( function() {
- if ( !jQuery._data( elem, queueDataKey ) &&
- !jQuery._data( elem, markDataKey ) ) {
- jQuery.removeData( elem, deferDataKey, true );
- defer.fire();
- }
- }, 0 );
- }
-}
-
-jQuery.extend({
-
- _mark: function( elem, type ) {
- if ( elem ) {
- type = ( type || "fx" ) + "mark";
- jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
- }
- },
-
- _unmark: function( force, elem, type ) {
- if ( force !== true ) {
- type = elem;
- elem = force;
- force = false;
- }
- if ( elem ) {
- type = type || "fx";
- var key = type + "mark",
- count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
- if ( count ) {
- jQuery._data( elem, key, count );
- } else {
- jQuery.removeData( elem, key, true );
- handleQueueMarkDefer( elem, type, "mark" );
- }
- }
- },
-
- queue: function( elem, type, data ) {
- var q;
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- q = jQuery._data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- q.push( data );
- }
- }
- return q || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift(),
- hooks = {};
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
-
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- jQuery._data( elem, type + ".run", hooks );
- fn.call( elem, function() {
- jQuery.dequeue( elem, type );
- }, hooks );
- }
-
- if ( !queue.length ) {
- jQuery.removeData( elem, type + "queue " + type + ".run", true );
- handleQueueMarkDefer( elem, type, "queue" );
- }
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined ) {
- return jQuery.queue( this[0], type );
- }
- return this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, object ) {
- if ( typeof type !== "string" ) {
- object = type;
- type = undefined;
- }
- type = type || "fx";
- var defer = jQuery.Deferred(),
- elements = this,
- i = elements.length,
- count = 1,
- deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- tmp;
- function resolve() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- }
- while( i-- ) {
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
- jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
- count++;
- tmp.add( resolve );
- }
- }
- resolve();
- return defer.promise();
- }
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute,
- nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.attr );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.prop );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- classNames = value.split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
-
- } else {
- setClass = " " + elem.className + " ";
-
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classNames, i, l, elem, className, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
-
- if ( (value && typeof value === "string") || value === undefined ) {
- classNames = ( value || "" ).split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- className = (" " + elem.className + " ").replace( rclass, " " );
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[ c ] + " ", " ");
- }
- elem.className = jQuery.trim( className );
-
- } else {
- elem.className = "";
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var self = jQuery(this), val;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
- },
-
- attr: function( elem, name, value, pass ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- if ( pass && name in jQuery.attrFn ) {
- return jQuery( elem )[ name ]( value );
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
-
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, "" + value );
- return value;
- }
-
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- ret = elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, value ) {
- var propName, attrNames, name, l,
- i = 0;
-
- if ( value && elem.nodeType === 1 ) {
- attrNames = value.toLowerCase().split( rspace );
- l = attrNames.length;
-
- for ( ; i < l; i++ ) {
- name = attrNames[ i ];
-
- if ( name ) {
- propName = jQuery.propFix[ name ] || name;
-
- // See #9699 for explanation of this approach (setting first, then removal)
- jQuery.attr( elem, name, "" );
- elem.removeAttribute( getSetAttribute ? name : propName );
-
- // Set corresponding property to false for boolean attributes
- if ( rboolean.test( name ) && propName in elem ) {
- elem[ propName ] = false;
- }
- }
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- // Use the value property for back compat
- // Use the nodeHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return ( elem[ name ] = value );
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
- fixSpecified = {
- name: true,
- id: true
- };
-
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
- ret.nodeValue :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- ret = document.createAttribute( name );
- elem.setAttributeNode( ret );
- }
- return ( ret.nodeValue = value + "" );
- }
- };
-
- // Apply the nodeHook to tabindex
- jQuery.attrHooks.tabindex.set = nodeHook.set;
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- if ( value === "" ) {
- value = "false";
- }
- nodeHook.set( elem, value, name );
- }
- };
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
- });
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = "" + value );
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- return null;
- }
- });
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
- });
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
- rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
- rhoverHack = /\bhover(\.\S+)?\b/,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
- quickParse = function( selector ) {
- var quick = rquickIs.exec( selector );
- if ( quick ) {
- // 0 1 2 3
- // [ _, tag, id, class ]
- quick[1] = ( quick[1] || "" ).toLowerCase();
- quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
- }
- return quick;
- },
- quickIs = function( elem, m ) {
- var attrs = elem.attributes || {};
- return (
- (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
- (!m[2] || (attrs.id || {}).value === m[2]) &&
- (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
- );
- },
- hoverHack = function( events ) {
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- add: function( elem, types, handler, data, selector ) {
-
- var elemData, eventHandle, events,
- t, tns, type, namespaces, handleObj,
- handleObjIn, quick, handlers, special;
-
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- events = elemData.events;
- if ( !events ) {
- elemData.events = events = {};
- }
- eventHandle = elemData.handle;
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = jQuery.trim( hoverHack(types) ).split( " " );
- for ( t = 0; t < types.length; t++ ) {
-
- tns = rtypenamespace.exec( types[t] ) || [];
- type = tns[1];
- namespaces = ( tns[2] || "" ).split( "." ).sort();
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: tns[1],
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- quick: quickParse( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- handlers = events[ type ];
- if ( !handlers ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
- t, tns, type, origType, namespaces, origCount,
- j, events, special, handle, eventType, handleObj;
-
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
- for ( t = 0; t < types.length; t++ ) {
- tns = rtypenamespace.exec( types[t] ) || [];
- type = origType = tns[1];
- namespaces = tns[2];
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector? special.delegateType : special.bindType ) || type;
- eventType = events[ type ] || [];
- origCount = eventType.length;
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
- // Remove matching events
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- eventType.splice( j--, 1 );
-
- if ( handleObj.selector ) {
- eventType.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( eventType.length === 0 && origCount !== eventType.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
-
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery.removeData( elem, [ "events", "handle" ], true );
- }
- },
-
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- // Don't do events on text and comment nodes
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
- return;
- }
-
- // Event object or event type
- var type = event.type || event,
- namespaces = [],
- cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf( "!" ) >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
-
- if ( type.indexOf( "." ) >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
-
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
-
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
-
- event.type = type;
- event.isTrigger = true;
- event.exclusive = exclusive;
- event.namespace = namespaces.join( "." );
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
- // Handle a global trigger
- if ( !elem ) {
-
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- cache = jQuery.cache;
- for ( i in cache ) {
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
- }
- }
- return;
- }
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- eventPath = [[ elem, special.bindType || type ]];
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
- old = null;
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push([ cur, bubbleType ]);
- old = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( old && old === elem.ownerDocument ) {
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
- }
- }
-
- // Fire handlers on the event path
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
-
- cur = eventPath[i][0];
- event.type = eventPath[i][1];
-
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
- // Note that this is a bare JS function and not a jQuery handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- // IE<9 dies on focus/blur to hidden element (#1486)
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
-
- if ( old ) {
- elem[ ontype ] = old;
- }
- }
- }
- }
-
- return event.result;
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event || window.event );
-
- var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
- delegateCount = handlers.delegateCount,
- args = [].slice.call( arguments, 0 ),
- run_all = !event.exclusive && !event.namespace,
- handlerQueue = [],
- i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
-
- // Determine handlers that should run if there are delegated events
- // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
-
- // Pregenerate a single jQuery object for reuse with .is()
- jqcur = jQuery(this);
- jqcur.context = this.ownerDocument || this;
-
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
- selMatch = {};
- matches = [];
- jqcur[0] = cur;
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
-
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = (
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
- );
- }
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( handlers.length > delegateCount ) {
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
- }
-
- // Run delegates first; they may want to stop propagation beneath us
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
- matched = handlerQueue[ i ];
- event.currentTarget = matched.elem;
-
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
- handleObj = matched.matches[ j ];
-
- // Triggered event must either 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
-
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- return event.result;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button,
- fromElement = original.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop,
- originalEvent = event,
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = jQuery.Event( originalEvent );
-
- for ( i = copy.length; i; ) {
- prop = copy[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
- }
-
- // Target should not be a text node (#504, Safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
- if ( event.metaKey === undefined ) {
- event.metaKey = event.ctrlKey;
- }
-
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
- },
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady
- },
-
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
-
- focus: {
- delegateType: "focusin"
- },
- blur: {
- delegateType: "focusout"
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
- }
- },
-
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- },
-
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
- }
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-};
-
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
-// The 1.7 special event interface should provide all the hooks needed now.
-jQuery.event.handle = jQuery.event.dispatch;
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- if ( elem.detachEvent ) {
- elem.detachEvent( "on" + type, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj,
- selector = handleObj.selector,
- ret;
-
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !form._submit_attached ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- });
- form._submit_attached = true;
- }
- });
- // return undefined since we don't need an event listener
- },
-
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
- }
- };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
- jQuery.event.special.change = {
-
- setup: function() {
-
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- jQuery.event.simulate( "change", this, event, true );
- }
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- elem._change_attached = true;
- }
- });
- },
-
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
- }
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return rformElems.test( this.nodeName );
- }
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
- });
-}
-
-jQuery.fn.extend({
-
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
- // ( types-Object, data )
- data = selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
- }
-
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on.call( this, types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- var handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( var type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- live: function( types, data, fn ) {
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
- },
- die: function( types, fn ) {
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
- }
-
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-
- if ( rkeyEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
- }
-
- if ( rmouseEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
- }
-});
-
-
-
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache" + (Math.random() + '').replace('.', ''),
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set, seed );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
-
- if ( !expr ) {
- return [];
- }
-
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Utility function for retreiving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
- }
- }
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- first = match[2];
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- doneName = match[0];
- parent = elem.parentNode;
-
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent[ expando ] = doneName;
- }
-
- diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = " ";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = " ";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "
";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "
";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-Sizzle.selectors.attrMap = {};
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})();
-
-
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- isSimple = /^.[^:#\[\.,]*$/,
- slice = Array.prototype.slice,
- POS = jQuery.expr.match.POS,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var self = this,
- i, l;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- var ret = this.pushStack( "", "find", selector ),
- length, n, r;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- POS.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var ret = [], i, l, cur = this[0];
-
- // Array (deprecated as of jQuery 1.7)
- if ( jQuery.isArray( selectors ) ) {
- var level = 1;
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( i = 0; i < selectors.length; i++ ) {
-
- if ( jQuery( cur ).is( selectors[ i ] ) ) {
- ret.push({ selector: selectors[ i ], elem: cur, level: level });
- }
- }
-
- cur = cur.parentNode;
- level++;
- }
-
- return ret;
- }
-
- // String
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- cur = this[i];
-
- while ( cur ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
-
- } else {
- cur = cur.parentNode;
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
- break;
- }
- }
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
- }
-
- // index in selector
- if ( typeof elem === "string" ) {
- return jQuery.inArray( this[0], jQuery( elem ) );
- }
-
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- }
-});
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
- },
- prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, slice.call( arguments ).join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return ( elem === qualifier ) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
- });
-}
-
-
-
-
-function createSafeFragment( document ) {
- var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( list.length ) {
- safeFrag.createElement(
- list.pop()
- );
- }
- }
- return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
- rtagName = /<([\w:]+)/,
- rtbody = /", "" ],
- legend: [ 1, "", " " ],
- thead: [ 1, "" ],
- tr: [ 2, "" ],
- td: [ 3, "" ],
- col: [ 2, "" ],
- area: [ 1, "", " " ],
- _default: [ 0, "", "" ]
- },
- safeFragment = createSafeFragment( document );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE can't serialize and